05 · Interfaces y eventos de contratos
Referencia de métodos y eventos para los procesos anteriores.
5.1 Encontrar el contrato correcto
- Lea el proxy Token de la tabla pública;
- obtenga
identityRegistry(); - obtenga
compliance(); - consulte
IdFactory.getIdentity(wallet); - compare con la configuración y no use implementaciones como entrada.
5.2 Permisos
| Llamante | Escrituras | Descripción |
|---|---|---|
| Cualquiera | view | Lectura sin transacción |
| Titular | transfer, approve, transferFrom | Sujeto a todos los controles |
| Gestor de identidad | deployIdentityForWallet, addClaim | Mantiene su ONCHAINID |
| IR Agent | registrar/actualizar/eliminar | Registro por activo |
| Token Agent | mint, burn, pausa, congelación, forzada, recuperación | Gestión del activo |
| Owner | Registros, módulos, gobernanza | Fuera de integración común |
Identifique el rol; ocultar botones no sustituye permisos en cadena.
5.3 Token
Lectura
| Método | Uso |
|---|---|
name() / symbol() | Nombre y símbolo |
decimals() | Conversión |
totalSupply() | Oferta |
balanceOf(wallet) | Saldo |
identityRegistry() | Registro |
compliance() | Cumplimiento |
paused() | Pausa |
isFrozen(wallet) | Congelación total |
getFrozenTokens(wallet) | Congelación parcial |
availableBalance = balanceOf(wallet) - getFrozenTokens(wallet)
Titular
transfer, approve, transferFrom requieren firma, autorización, saldo, elegibilidad y reglas según corresponda.
Token Agent
| Método | Resultado |
|---|---|
mint | Transfer(0x0, to, amount) |
burn | Transfer(wallet, 0x0, amount) |
pause / unpause | Paused / Unpaused |
setAddressFrozen | AddressFrozen |
freezePartialTokens / unfreezePartialTokens | TokensFrozen / TokensUnfrozen |
forcedTransfer | Transfer |
recoveryAddress | RecoverySuccess y Transfer |
Los importes son enteros mínimos; divida lotes por gas.
| Operación | Pausa bloquea | Receptor | canTransfer | Congelado |
|---|---|---|---|---|
| transfer / transferFrom | Sí | Comprueba | Comprueba | No transferible |
| mint | No | Comprueba | Comprueba | N/A |
| burn | No | No | No | Agent puede descongelar |
| forcedTransfer | No | Comprueba | No | Agent puede descongelar |
| recoveryAddress | No | Flujo de recuperación | No | Puede migrar |
La pausa limita transferencias comunes, no operaciones Agent.
5.4 IdentityRegistry
Obtenga la dirección mediante Token.
| Lectura | Significado |
|---|---|
contains | Existe registro |
isVerified | Cumple requisitos |
identity | ONCHAINID |
investorCountry | País |
topicsRegistry | Topics |
issuersRegistry | ClaimIssuers |
contains no sustituye isVerified.
| Método Agent | Evento |
|---|---|
registerIdentity | IdentityRegistered |
updateIdentity | IdentityUpdated |
updateCountry | CountryUpdated |
deleteIdentity | IdentityRemoved |
5.5 ONCHAINID Gateway, IdFactory e Identity
| Contrato | Método | Llamante |
|---|---|---|
| Gateway | deployIdentityForWallet | Inversor |
| IdFactory | getIdentity | Cualquiera |
Tras Deployed y WalletLinked, vuelva a consultar el mapeo.
addClaim(
uint256 topic,
uint256 scheme,
address issuer,
bytes signature,
bytes data,
string uri
) returns (bytes32 claimId)
Lecturas: getClaim, getClaimIdsByTopic, isClaimValid. Eventos: ClaimAdded, ClaimChanged, ClaimRemoved. ClaimSigner firma fuera de cadena; ClaimIssuer es el contrato institucional.
5.6 ModularCompliance
canTransfer(address from, address to, uint256 amount) view returns (bool)
Lecturas: canTransfer, getModules, getTokenBound, isModuleBound. true solo refleja el instante de consulta. transferred, created, destroyed son callbacks del Token y no se llaman desde aplicaciones comunes.
5.7 Índice de eventos
| Evento | Fuente | Uso |
|---|---|---|
Transfer, Approval | Token | Movimientos y autorizaciones |
Paused, Unpaused | Token | Estado |
AddressFrozen, TokensFrozen, TokensUnfrozen | Token | Congelación |
RecoverySuccess | Token | Recuperación |
| Eventos Identity* | IdentityRegistry | Registro |
| Eventos Claim* | ONCHAINID | Claims |
ModuleAdded, ModuleRemoved | ModularCompliance | Reglas |
Los eventos detectan cambios; relea estado tras reorganización o recuperación.
5.8 ABI mínimo
const tokenAbi = [
'function name() view returns (string)',
'function symbol() view returns (string)',
'function decimals() view returns (uint8)',
'function totalSupply() view returns (uint256)',
'function balanceOf(address) view returns (uint256)',
'function identityRegistry() view returns (address)',
'function compliance() view returns (address)',
'function paused() view returns (bool)',
'function isFrozen(address) view returns (bool)',
'function getFrozenTokens(address) view returns (uint256)',
'function transfer(address,uint256) returns (bool)',
'event Transfer(address indexed from,address indexed to,uint256 value)',
];
const identityRegistryAbi = [
'function contains(address) view returns (bool)',
'function isVerified(address) view returns (bool)',
'function identity(address) view returns (address)',
'function investorCountry(address) view returns (uint16)',
'event IdentityRegistered(address indexed investorAddress,address indexed identity)',
];
const complianceAbi = [
'function canTransfer(address,address,uint256) view returns (bool)',
'function getModules() view returns (address[])',
];
Use el ABI oficial del despliegue; no adivine argumentos.
5.9 Orden recomendado
Validar Chain ID
→ decimals
→ paused / isFrozen / getFrozenTokens
→ identityRegistry
→ contains / isVerified
→ compliance
→ canTransfer
→ estimateGas o simulación
→ enviar y esperar recibo
→ actualizar desde eventos y estado