레이어 1과 레이어 2의 상호 운용성

Poco a poco vemos como diferentes soluciones de escalabilidad de blockchain se hacen realidad. Estas soluciones cada vez ahorran mas gas sin sacrificar seguridad. 이더리움 메인넷(레이어 1) 및 중재(이더리움 레이어 2의 낙관적 롤업)에 대한 상호 운용성 테스트 비디오입니다. 메인넷의 로스 브리지와 로스 롤업은 블록체인의 새로운 메카니카와 블록체인의 세구라와 전위와 운영 스마트 계약의 일반적인 크로스 체인을 연결합니다. La buena noticia es que ya están disponibles hoy para nosotros los programadores y los usuarios del blockchain.

https://youtu.be/_RFs2TfsKI

Antes de iniciar



Segurate de instalar Metamask y agregar fondos de Rinkeby Testnet que puedes conseguir desde el Faucet . También necesitarás agregar Rinkeby Arbitrum Testnet a tu metamask mover fondos desde Rinkeby a Rinkeby Arbitrum Testnet mediante el Bridge .

콘트라토 엔 L2



Primero lanzamos el siguiente contrato en Arbitrum Rinkeby Testnet.

// SPDX-License-Identifier: Apache-2.0
pragma solidity  0.8.13;

contract HelloWorld {
    string public hello = "Hola Mundo!";

    function setHello(string memory _hello) public {
        hello = _hello;
    }
}


Contrato operator en L1



Luego lanzamos el siguiente contrato y ejecutamos la función setHelloInL2 pasando como value 20000000000000000 wei o 0.01 ether y los siguientes parametros sugeridos:
  • l2ContractAddress: ADDRESS DE CONTRATO EN L2
  • _안녕하세요: ¡Hemos ejecutado esto desde L1!
  • 최대 제출 비용: 80000000000
  • 맥스가스: 90000000
  • gasPriceBid: 90000000

  • // SPDX-License-Identifier: Apache-2.0
    pragma solidity  0.8.13;
    
    
    interface IInbox {
        function createRetryableTicket(
            address destAddr,
            uint256 l2CallValue,
            uint256 maxSubmissionCost,
            address excessFeeRefundAddress,
            address callValueRefundAddress,
            uint256 maxGas,
            uint256 gasPriceBid,
            bytes calldata data
        ) external payable returns (uint256);
    }
    
    interface IHelloWorld {
        function setHello(string memory _hello) external;
    }
    
    contract L2Operator {
        IInbox public inbox = IInbox(0x578BAde599406A8fE3d24Fd7f7211c0911F5B29e);
    
        function setHelloInL2(
            address l2ContractAddress,
            string memory _hello,
            uint256 maxSubmissionCost,
            uint256 maxGas,
            uint256 gasPriceBid
        ) public payable returns (uint256) {
            bytes memory data =
                abi.encodeWithSelector(IHelloWorld.setHello.selector, _hello);
            uint256 ticketID = inbox.createRetryableTicket{value: msg.value}(
                l2ContractAddress,
                0,
                maxSubmissionCost,
                msg.sender,
                msg.sender,
                maxGas,
                gasPriceBid,
                data
            );
            return ticketID;
        }
    }
    


    공식 문서:
  • Documentación general
  • Addresses importantes
  • Utilería para debuggear
  • Inbox.sol
  • Ejemplo de interoperabilidad

  • ¡ Gracias por ver este 튜토리얼!

    Sígueme en dev.to y en para todo lo relacionado al desarrollo en Blockchain en Español.

    좋은 웹페이지 즐겨찾기