El Scroll Messenger

Los contratos Scroll Messenger permiten enviar mensajes arbitrarios de L1 a L2 o viceversa. Esto permite ejecutar funciones en otra cadena de forma segura y sin tener que pedirle permisos a un intermediario. Para enviar un mensaje de L1 a L2, utiliza el smart contract desplegado en L1, L1ScrollMessenger. Para enviar un mensaje de L2 a L1, utiliza el contrato desplegado en L2, L2ScrollMessenger.

Finalización de transacciones en L1

Cualquier transacción procedente de L2 necesita ser finalizada usando la función relayMessageWithProof en el contrato Scroll Messenger. Llamamos a este proceso “ejecución de una transacción de tipo Retiro”, y es necesario tanto para enviar mensajes arbitrarios como para transferir activos a través de una gateway o del router. Cuando utilices relayMessageWithProof, tendrás que proporcionar una prueba de inclusión del Merkle Tree que demuestre que tu transacción está incluida en el trie de mensajes de “retiro”, junto con otros parámetros. La producción de esta prueba y estos valores se puede hacer localmente y sin permisos, pero por el momento, la forma más fácil de recuperar estos parámetros es a través de nuestras APIs:

Proporciona la dirección de la EOA o del contrato responsable de iniciar la transacción original en L2 al endpoint /claimable. La API te proporcionará toda la información necesaria para concluir con éxito la transacción en L1. Echa un vistazo al siguiente ejemplo:

https://sepolia-api-bridge.scroll.io/api/claimable?address=0x031407eaaffFB4f1EC2c999bE4477E52C81de3c5&page_size=10&page=1

La API debería devolverte los datos de su transacción en el siguiente formato:

{
"errcode": 0,
"errmsg": "",
"data": {
"result": [
{
"hash": "0xa476850306d6ee52b127628ded34dcf2343570873cce9c5383bd497db48d4f9b",
"amount": "",
"to": "",
"isL1": false,
"l1Token": "",
"l2Token": "",
"blockNumber": 748,
"blockTimestamp": null,
"finalizeTx": {
"hash": "",
"amount": "",
"to": "",
"isL1": false,
"blockNumber": 0,
"blockTimestamp": null
},
"claimInfo": {
"from": "0x031407eaaffFB4f1EC2c999bE4477E52C81de3c5",
"to": "0x1039057185CFe192d16c03F5656225821A193FD5",
"value": "0",
"nonce": "9",
"batch_hash": "0x49a18d72dbceeb957f918947b532db452c031f528e7e6bf329007066638c5e50",
"message": "0xa413686200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000005686f6c6973000000000000000000000000000000000000000000000000000000",
"proof": "0x69b4ee6cf9a38bed79668ddd347fef2bdff44c3760c9309fa41decfd60202d22ad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5b4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d3079f53171df5c0661d2afe86c4d97b6f34278daf6a0ea9baff5b4fc979d5629a5",
"batch_index": "93"
},
"createdTime": null
}
],
"total": 1
}
}

El objeto claimInfo bajo el json result devuelto tiene toda la información necesaria para ejecutar su transacción en L1. Los parámetros que necesita relayMessageWithProof son: from, to, value, nonce, message y proof. Introduzca estos datos en la función relayMessageWithProof en L1 para ejecutar y finalizar tu transacción en L1.

API del Messenger

Visita la librería de npm para consultar la documentación completa de la API de los contratos de Scroll.

sendMessage

function sendMessage(
address target,
uint256 value,
bytes calldata message,
uint256 gasLimit,
address refundAddress
) external payable;

Envía datos arbitrarios de una cadena a otra. Nos permite ejecutar funciones entre cadenas.

ParámetrosDescripción
targetDirección de la cuenta que recibe el mensaje. El receptor puede ser un smart contract o una EOA.
valueCantidad de ETH pasado al llamar al contrato destino.
messageContenido del mensaje. Este es el calldata arbitrario a ejecutar.
gasLimitLímite de gas necesario para completar la retransmisión del mensaje en la cadena correspondiente.
refundAddressDirección de la cuenta que recibirá la comisión reembolsada.

relayMessageWithProof

function relayMessageWithProof(
address from,
address to,
uint256 value,
uint256 nonce,
bytes memory message,
L2MessageProof memory proof
) external;

Retransmite un mensaje L2 => L1 con prueba de mensaje.

ParámetrosDescripción
fromDirección del remitente del mensaje.
toDirección del destinatario del mensaje.
valueEl msg.value pasado a la llamada del mensaje.
nonceNonce del mensaje para evitar ataques de tipo replay.
messageContenido del mensaje.
proofPrueba utilizada para verificar la corrección de la transacción.

¿Qué sigue?

Mantente actualizado con las más recientes noticias sobre el Desarrollo de Scroll
Roadmap, actualizaciones, eventos virtuales y presenciales, oportunidades en el ecosistema y más
¡Gracias por suscribirte!

Recursos

Síguenos