Saltar al contenido principal

Introducción al protocolo ERC-3643

Contenido

  1. Visión general
  2. Cinco conceptos fundamentales
  3. Arquitectura general de contratos
  4. Responsabilidades de los contratos y estado en cadena
  5. Interacciones entre contratos
  6. Permisos y multifirma
  7. Conclusiones de la investigación y la demostración
  8. Límites de seguridad
  9. Glosario

1. Visión general

ERC-3643 es un marco de emisión ERC-20 con verificación de identidad y controles de cumplimiento. Define quién puede mantener un token, si una transferencia puede ejecutarse, cómo las partes autorizadas congelan, transfieren de forma forzosa o recuperan activos, y cómo se actualizan las implementaciones de manera coherente.

DimensiónERC-20 convencionalERC-3643
Quién puede recibirCualquier direcciónSolo identidades verificadas
TransferenciasNo admiten rechazo por reglas de negocioLos módulos de cumplimiento pueden rechazarlas
Congelación, transferencia forzosa y recuperación de carteraNo disponiblesDisponibles
Cambios de reglasSuelen requerir otro contratoSe modifica la configuración o los módulos

2. Cinco conceptos fundamentales

ConceptoSignificado
ONCHAINIDIdentidad de usuario en cadena separada de la cartera; una identidad puede vincular varias carteras
ClaimAfirmación de cualificación firmada y asociada a una identidad
Claim EmisorContrato institucional autorizado para emitir o revocar Claims
Identity RegistryDetermina si una dirección pertenece a un inversor apto: la comprobación de la persona
Compliance moduleDetermina si una transacción cumple las reglas: la comprobación de la transacción

Ambas puertas deben superarse. Un inversor aprobado por KYC aún puede ser rechazado por un límite de tenencia u otra regla de cumplimiento.


3. Arquitectura general de contratos

3.1 Cuatro capas

CapaNúmero de instanciasPropósito
PlataformaNormalmente una por redAcceso de emisión, creación de identidades y actualizaciones compartidas
SuiteSeis contratos por activoSaldos, identidad, cumplimiento y gobernanza
ONCHAINIDUno por usuarioClaves y Claims
Módulo de cumplimientoSe despliega por regla y se reutilizaReglas de transacción ejecutables

Los contratos se separan para que cada responsabilidad evolucione de forma independiente: Token gestiona el libro mayor; IR, IRS, CTR y TIR gestionan las cualificaciones de identidad; MC gestiona las reglas de transacción. Las direcciones de los proxies permanecen estables: el proxy almacena el estado y la implementación aporta la lógica.

3.2 Tres mecanismos de actualización

ObjetoMecanismoPunto de actualizaciónAlcance
Seis contratos TREXProxy con puntero a IATREX IAActivos que aún referencian esa IA
ONCHAINIDIA de ONCHAINIDupdateImplementationIdentidades que referencian esa IA
Módulo de cumplimientoERC1967 + UUPSPropietario del módulo, upgradeToActivos vinculados a ese módulo

4. Responsabilidades de los contratos y estado en cadena

La cadena almacena el estado de negocio y la configuración de reglas. Los nombres, números de identidad, imágenes de documentos y demás datos sensibles permanecen en el sistema KYC fuera de cadena. La cadena registra conclusiones como tipos de cualificación, tenencias y aptitud para transferir.

4.1 Contratos de plataforma de toda la red

ContratoPropósitoEstado principal en cadenaLímite importante
TREXImplementationAuthoritySelecciona la versión de implementación usada por los activos RWAVersión actual y seis direcciones de implementación por versiónLas seis implementaciones deben registrarse juntas
IAFactoryCrea una autoridad de actualización independiente para un activoActivos que recibieron una autoridad independienteSolo el administrador de la autoridad global puede crearla
TREXFactoryDespliega e inicializa una Suite RWA completaSalts usados, autoridad, fábrica de identidades y desplegadores autorizadosConfiguración inicial: máximo 5 Topics, emisores y agentes; 30 operaciones de módulos
TREXGatewayControla emisores, emisión pública, comisiones y descuentosConfiguración pública, token/importe/destinatario de comisión, lista de emisores, descuentos y administradoresMáximo 5 Suites por lote
IdFactoryCrea perfiles de identidad en cadena y asociaciones de carterasAsociaciones cartera-identidad e identidad-carteraMáximo 101 carteras por identidad
ONCHAINID ImplementationAuthoritySelecciona la versión de implementación de identidadImplementación actual y autoridad de actualizaciónUn cambio afecta a todas las identidades que la referencian
ONCHAINID GatewayPermite crear identidades con firmas autorizadas por la plataformaFirmantes autorizados y firmas revocadasNormalmente queda fuera del flujo principal de la demostración

4.2 Seis contratos fundamentales por activo RWA

ContratoPropósitoEstado principal en cadenaLímite importante
TokenLibro mayor, transferencias, acuñación, quema, pausa, congelación, transferencia forzosa y recuperación de carteraSaldos, autorizaciones, suministro, metadatos, pausa, congelaciones totales y parciales, IR/MC asociados, propietarios y agentesdecimals de 0 a 18
IdentityRegistryComprueba la aptitud del destinatario antes de transferir o acuñarReferencias a CTR, TIR, IRS y administradores del registroMás requisitos y emisores aumentan el coste de gas
IdentityRegistryStorageAlmacena la identidad y el país de la cartera; puede compartirseCartera → identidad + país y registros que usan el almacenamientoMáximo 300 IdentityRegistries; un registro por cartera
ClaimTopicsRegistryDefine las cualificaciones exigidas para mantener el activoTopics requeridos y administradoresMáximo 15 Topics únicos
TrustedIssuersRegistryDefine los emisores aceptados y sus Topics permitidosEmisores y tipos de cualificaciónMáximo 50 emisores y 15 Topics por emisor
ModularComplianceAplica reglas de importe, país, bloqueo temporal y otras reglas de transacciónToken vinculado, módulos asociados y administradoresUn Token y un máximo de 25 módulos

4.3 Identidades de usuario y módulos de reglas

ContratoPropósitoEstado principal en cadena
ONCHAINID / IdentityUna identidad en cadena reutilizable por persona; las carteras son herramientas reemplazablesClaves de gestión, acción y Claim; Claims recibidos
ClaimIssuerContrato de la institución KYC/AML que emite y revoca certificacionesClaves de identidad y firmas revocadas
ModuleProxyPunto de entrada estable para una regla de negocioImplementación actual y parámetros por activo

Ubicaciones del código fuente: los contratos de plataforma están en contracts/factory/ y proxy/authority/; los contratos de activos están en token/, registry/ y compliance/modular/; las capacidades de identidad proceden de @onchain-id/solidity.


5. Interacciones entre contratos

5.1 Dependencias

5.3 Emisión

El salt de Gateway suele ser la dirección hexadecimal del propietario más el nombre del Token. Cuando las comisiones están activadas, autorice primero el token de comisión.

5.4 Incorporación del inversor: identidad, firma KYC y Claim en cadena

La incorporación consta de cuatro etapas: creación del contrato de identidad, firma de la cualificación, envío del Claim y registro en el activo. Mantenga claras estas diferencias:

  1. Crear un ONCHAINID es una transacción en cadena que despliega el contrato de identidad del inversor.
  2. La firma KYC de ClaimSigner se genera fuera de cadena y no crea una transacción ni un coste de gas.
  3. addClaim es una transacción en cadena que guarda la firma de ClaimSigner y la conclusión KYC en el ONCHAINID del inversor.

5.4.1 Flujo de producción: creación autoservicio de identidad mediante ONCHAINID Gateway

IdFactory.createIdentity es onlyOwner, por lo que los inversores carecen de acceso directo a la fábrica. En producción, despliegue el Gateway.sol oficial, transfiera a este la propiedad de IdFactory y permita que los inversores llamen a Gateway.deployIdentityForWallet(investor). Gateway llama a IdFactory.createIdentity como propietario, mientras el inversor envía la transacción y paga el gas.

5.4.2 Invocador y pagador de gas por etapa

EtapaAcciónIniciadorEn cadenaPagador de gasNotas
1Revisión KYCInversor y sistema de revisiónNoNingunoLa información personal en claro permanece fuera de cadena
2Crear ONCHAINIDEl inversor llama a Gateway.deployIdentityForWalletInversorGateway llama a IdFactory.createIdentity
3Firmar KYCClaimSigner firma hash(identity, topic, data)NoNingunoFirma EOA/HSM/MPC fuera de transacción
4Enviar Claim KYCEl inversor llama a Identity.addClaimInversorEl contrato llama a ClaimIssuer.isClaimValid
5Registrar en el activoEl agente de IR llama a IdentityRegistry.registerIdentityAgente de IRRegistra cartera, identidad y país en una Suite
6Verificar resultadoCualquiera llama a IdentityRegistry.isVerifiedNo, viewNingunoDebe devolver true antes de recibir una acuñación o transferencia

5.4.3 ¿La firma KYC de ClaimSigner está en cadena?

La firma se genera fuera de cadena:

digest = keccak256(abi.encode(identity, topic, data))
signature = ClaimSigner.signMessage(digest)

La siguiente transacción addClaim almacena estos argumentos:

Identity.addClaim(
topic,
1,
claimEmisor,
signature,
data,
uri
)

El inversor envía addClaim, mientras el contrato de identidad llama a ClaimIssuer.isClaimValid(...) para comprobar que el emisor es de confianza, que la firma procede de una clave Claim registrada, que sigue vigente y que el Topic es obligatorio. La confianza procede de la firma de ClaimSigner, con independencia del remitente de addClaim.

5.5 Matriz de transferencia, acuñación y quema

OperationInvocadorPaused checkFreeze checkIdentity checkCompliance checkAuto-unfreeze
Transferencia / transferencia delegadaTitular / autorizadoAmbas partesDestinatarioNo
AcuñaciónAgenteNoNoDestinatarioNo
QuemaAgenteNoNoNoNo
Transferencia forzosaAgenteNoNoDestinatarioNo, aun llama a transferred
Recuperación de carteraAgenteNoNoUsa transferencia forzosaNo

La puerta 1 valida solo al destinatario. La pausa permite que continúen las operaciones administrativas. La transferencia forzosa omite canTransfer y las congelaciones parciales permiten actuar al agente.

5.7 Interacciones de actualización

ObjetoCadena de llamadasImpacto
TREX contractsIA owner → addTREXVersionuseTREXVersionProxies que referencian la IA de referencia
Detach one assetLa misma dirección posee los seis → changeImplementationAuthoritySolo el activo objetivo
ONCHAINIDOID IA owner → updateImplementationTodas las identidades que la referencian
Compliance moduleModule owner → upgradeToMC vinculados a ese módulo

6. Permisos y multifirma

6.1 Cuatro modelos de permisos

ModeloAutorizaciónPropósitoCompatibilidad con Safe
Ownermsg.sender == ownerGobernanza, sustitución de componentes, actualizaciones y reglasCompatible, sin restricción EOA
AgentAgent listOperaciones frecuentes de acuñación, congelación y registroCompatible técnicamente; la multifirma resulta ineficiente para cada acción frecuente
onlyToken / onlyComplianceCallDirección del contrato vinculadoCallbacks automáticos y reenvío de parámetrosNo es una cuenta humana
ONCHAINID Keykeccak256(address) basado en propósitoGestión de claves, llamadas externas y ClaimsSafe puede gestionar claves de acción; no firma Claims de forma nativa

El protocolo carece de Timelock nativo. transferOwnership puede asignar la propiedad a un Safe. renounceOwnership elimina permanentemente al propietario y debe protegerse en producción.

6.2 Matriz de permisos

ContratoRolCapacidad críticaRecomendación para Safe
TREX IA / ONCHAINID IAOwnerActualizaciones globalesSafe de máxima seguridad + Timelock
TREXFactoryOwnerDesplegar Suites y recuperar contratos que aún pertenecen a FactorySuele pertenecer a Gateway
TREXGatewayOwner / AgentAcceso, comisiones, propiedad de Factory y desplegadoresOwner → Safe; Agent → cuenta de servicio
TokenOwner / AgentSustituir IR/MC, gestionar agentes, acuñar, quemar, congelar, transferir de forma forzosa y recuperarOwner → Safe; separar las funciones de Agent
IROwner / AgentSustituir CTR/TIR/IRS y gestionar registros de inversoresOwner → Safe; Agent → cuenta KYC
IRSOwner / AgentVincular IR y escribir datos maestros de identidadDefinir primero el modelo de propiedad
CTR / TIR / MCOwnerTopics, emisores, módulos y parámetrosSafe de cumplimiento + Timelock
Upgradeable ModuleModule ownerActualización UUPSSafe + Timelock
IdFactoryOwnerCrear identidadesSafe de plataforma
IdentityManagement/action/Claim keysGestionar claves, ejecutar llamadas y gestionar ClaimsSafe puede mantener claves de gestión/acción
ClaimIssuerManagement + Claim keysRevocar y emitirGestión → Safe; emisión → EOA/HSM/MPC

6.3 Conclusiones sobre Safe

Safe funciona directamente para: propietarios de Suite y plataforma, propietarios de actualización de módulos, claves de gestión/acción de ONCHAINID y sustitución de IA por activo cuando el mismo Safe posee los seis contratos.

Safe no firma Claims de forma nativa: la validación usa ecrecover, que recupera una EOA. Use Safe para administrar el emisor y un firmante independiente para Purpose 3.

Las acciones frecuentes deben usar cuentas de servicio restringidas: registro de inversores, acuñación/quema rutinaria, mantenimiento de desplegadores, pausa/congelación rápida, transferencia forzosa y recuperación. Aplique aprobación y alertas fuera de cadena, con doble aprobación o multifirma dedicada para riesgos excepcionales.

6.4 Capas recomendadas y tres riesgos

  1. La propiedad de IRS se transfiere por separado de los otros cinco contratos. Permanece en Factory, normalmente propiedad de Gateway, hasta llamar a recoverContractOwnership.
  2. Cambiar la IA de un activo exige que los seis valores owner() coincidan con el mismo msg.sender. Los Safes separados carecen de aprobación independiente para esta operación.
  3. Safe y Timelock proporcionan controles distintos. Las actualizaciones globales, la sustitución de IR/MC y los cambios de Topic, emisor o módulo requieren un retraso de ejecución externo.

7. Conclusiones de la investigación y la demostración

ConclusiónHecho del código
Los Topics carecen de números fijosNo existe 1=KYC codificado; la demostración usa keccak256("KYC_APPROVED"), por lo que debe mantenerse un registro de Topics de red
Identity no es un BeaconONCHAINID usa ImplementationAuthority de npm 2.2.1
Faltan módulos de cumplimiento para producciónSolo existen DemoCountryAllowlistModule y TestModule sin auditar; las funciones heredadas no son módulos desplegables
Punto de entrada de transferenciasLos inversores llaman directamente a Token; IdentityProxy.execute resulta innecesario
Código de paísuint16, ISO 3166-1 numérico, como 156 y 702; el módulo de demostración solo comprueba al destinatario
Parámetros de módulosAislados por dirección de MC, por lo que un módulo puede servir a varios activos
Reutilización de identidadLos emisores compartidos evitan repetir KYC; un IRS compartido añade reutilización con una superficie de gobernanza mayor
Versión de dependenciapackage.json usa ^2.0.0 y la versión instalada es 2.2.1; fije la versión de producción

Prioridad recomendada de módulos personalizados tras la demostración: acceso por país, límite por titular, límite de suministro total, número de titulares → bloqueo temporal, clase de inversor, límites de importe → transferencias condicionales y restricciones por centro de negociación.

Los emisores KYC/AML y los parámetros de módulos determinan directamente la configuración en cadena. La custodia, la auditoría y los canales fiduciarios afectan principalmente a las aprobaciones. Nunca incluya PII en texto claro en data de un Claim.


8. Límites de seguridad

  • La vulneración de Owner, Agent, IA o ClaimIssuer puede modificar directamente los activos o la elegibilidad. Separe los firmantes de larga duración de Owner y Agent.
  • La transferencia forzosa y la quema pueden descongelar unidades automáticamente; la pausa permite las operaciones administrativas.
  • Eliminar un emisor de confianza o vaciar Topics cambia la aptitud de muchos usuarios a la vez.
  • Una actualización global de IA tiene un impacto amplio y exige multifirma, Timelock, validación del layout de almacenamiento y ensayo de reversión.
  • Los contratos carecen de medios para establecer la autenticidad del activo subyacente, la titularidad legal, el reembolso o la legalidad entre jurisdicciones; defina estos aspectos en una matriz de reglas separada.

9. Glosario

TérminoSignificado
T-REX / SuiteImplementación de referencia ERC-3643 / seis contratos de negocio para un activo
ONCHAINID / Claim / Topic / EmisorContrato de identidad / afirmación de cualificación / tipo de afirmación / institución emisora
IR / IRS / CTR / TIR / MCRegistro de identidad / almacenamiento de identidad / registro de Topics / registro de emisores / coordinador de cumplimiento
Owner / AgentAutoridad de gobernanza de configuración / autoridad operativa
Implementation AuthorityAutoridad de versiones que selecciona la implementación activa del proxy
TREXFactory / Gateway / IdFactoryFábrica de activos / gateway de acceso de emisión / fábrica de identidades