Skip to content

Commit 0804c02

Browse files
author
David Adamyan
committed
feat: add scroll network messaging between l1 to l2
1 parent 6cbe969 commit 0804c02

File tree

13 files changed

+447
-22
lines changed

13 files changed

+447
-22
lines changed

contracts/contracts/L1Contract.sol

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
//SPDX-License-Identifier: Unlicense
2+
pragma solidity ^0.8.18;
3+
4+
import "./L2Contract.sol";
5+
6+
contract L1Contract {
7+
address l2Messenger = 0xeC48b843169a07E9D1076f7785920D661bA684C2;
8+
9+
event SendMessage(
10+
uint256 tokenId,
11+
address _to
12+
);
13+
14+
constructor() {}
15+
16+
function sendMessage(uint256 _tokenId) public{
17+
emit SendMessage(_tokenId, l2Messenger);
18+
L2Contract(l2Messenger).receiveMessage(_tokenId, l2Messenger);
19+
}
20+
}

contracts/contracts/L2Contract.sol

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//SPDX-License-Identifier: Unlicense
2+
pragma solidity ^0.8.18;
3+
4+
contract L2Contract {
5+
6+
event ReceivedMessage(
7+
uint256 _tokentId,
8+
address _to
9+
);
10+
11+
constructor() {}
12+
13+
14+
function receiveMessage( uint256 _tokenId,address _to) public {
15+
emit ReceivedMessage(_tokenId,_to);
16+
}
17+
}

contracts/deploy/L1Contract.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module.exports = async ({ getNamedAccounts, deployments }) => {
2+
const { deploy } = deployments;
3+
const { deployer } = await getNamedAccounts();
4+
await deploy('L2Contract', {
5+
from: deployer,
6+
args: [],
7+
log: true,
8+
});
9+
};
10+
module.exports.tags = ['L2Contract'];

contracts/deploy/L2Contract.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module.exports = async ({ getNamedAccounts, deployments }) => {
2+
const { deploy } = deployments;
3+
const { deployer } = await getNamedAccounts();
4+
await deploy('L1Contract', {
5+
from: deployer,
6+
args: [],
7+
log: true,
8+
});
9+
};
10+
module.exports.tags = ['L1Contract'];
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
{
2+
"address": "0xD4C43133b0bcb1d146a03D8Ba2F70413eB0a995b",
3+
"abi": [
4+
{
5+
"inputs": [],
6+
"stateMutability": "nonpayable",
7+
"type": "constructor"
8+
},
9+
{
10+
"anonymous": false,
11+
"inputs": [
12+
{
13+
"indexed": false,
14+
"internalType": "uint256",
15+
"name": "tokenId",
16+
"type": "uint256"
17+
},
18+
{
19+
"indexed": false,
20+
"internalType": "address",
21+
"name": "_to",
22+
"type": "address"
23+
}
24+
],
25+
"name": "SendMessage",
26+
"type": "event"
27+
},
28+
{
29+
"inputs": [
30+
{
31+
"internalType": "uint256",
32+
"name": "_tokenId",
33+
"type": "uint256"
34+
}
35+
],
36+
"name": "sendMessage",
37+
"outputs": [],
38+
"stateMutability": "nonpayable",
39+
"type": "function"
40+
}
41+
],
42+
"transactionHash": "0x49dbaa44ae6ffecc53898e5b68d12e32e289b2ce59b347170c5b9b4b09276a8c",
43+
"receipt": {
44+
"to": null,
45+
"from": "0x03f4e5405730477629319B6A059325403f801E90",
46+
"contractAddress": "0xD4C43133b0bcb1d146a03D8Ba2F70413eB0a995b",
47+
"transactionIndex": 104,
48+
"gasUsed": "210668",
49+
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
50+
"blockHash": "0x9aad607a39cf3b2b974785fc8c9612641eb7551aceefe479169d2a8cf14cb908",
51+
"transactionHash": "0x49dbaa44ae6ffecc53898e5b68d12e32e289b2ce59b347170c5b9b4b09276a8c",
52+
"logs": [],
53+
"blockNumber": 8747830,
54+
"cumulativeGasUsed": "11762285",
55+
"status": 1,
56+
"byzantium": true
57+
},
58+
"args": [],
59+
"numDeployments": 3,
60+
"solcInputHash": "28ed2c16e8417b54f22bccf63ed01c99",
61+
"metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"SendMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"sendMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/L1Contract.sol\":\"L1Contract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/L1Contract.sol\":{\"content\":\"//SPDX-License-Identifier: Unlicense\\npragma solidity ^0.8.18;\\n\\nimport \\\"./L2Contract.sol\\\";\\n\\ncontract L1Contract {\\n address l2Messenger = 0xeC48b843169a07E9D1076f7785920D661bA684C2;\\n\\n event SendMessage(\\n uint256 tokenId, \\n address _to\\n );\\n\\n constructor() {}\\n\\n function sendMessage(uint256 _tokenId) public{\\n emit SendMessage(_tokenId, l2Messenger);\\n L2Contract(l2Messenger).receiveMessage(_tokenId, l2Messenger);\\n }\\n}\",\"keccak256\":\"0x151cc53f1da9e6f75d481bcf7fcf5e846b321280bc0560a7ce3dc7784e8da044\",\"license\":\"Unlicense\"},\"contracts/L2Contract.sol\":{\"content\":\"//SPDX-License-Identifier: Unlicense\\npragma solidity ^0.8.18;\\n\\ncontract L2Contract {\\n \\n event ReceivedMessage(\\n uint256 _tokentId,\\n address _to\\n );\\n\\n constructor() {}\\n \\n\\n function receiveMessage( uint256 _tokenId,address _to) public {\\n emit ReceivedMessage(_tokenId,_to);\\n }\\n}\",\"keccak256\":\"0xa6ba089f42d1207c0d4c41ea7df90739d9edb36fea0219cd05e217cb18129e0f\",\"license\":\"Unlicense\"}},\"version\":1}",
62+
"bytecode": "0x608060405273ec48b843169a07e9d1076f7785920d661ba684c26000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006457600080fd5b5061026c806100746000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80630387a7a014610030575b600080fd5b61004a60048036038101906100459190610190565b61004c565b005b7f2c809fbe44736d7051f128c54565f5bb19f73188b2546cf7103f29e62c3a5fe28160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161009d92919061020d565b60405180910390a160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663af30d3a18260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b815260040161012092919061020d565b600060405180830381600087803b15801561013a57600080fd5b505af115801561014e573d6000803e3d6000fd5b5050505050565b600080fd5b6000819050919050565b61016d8161015a565b811461017857600080fd5b50565b60008135905061018a81610164565b92915050565b6000602082840312156101a6576101a5610155565b5b60006101b48482850161017b565b91505092915050565b6101c68161015a565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101f7826101cc565b9050919050565b610207816101ec565b82525050565b600060408201905061022260008301856101bd565b61022f60208301846101fe565b939250505056fea2646970667358221220cf6eaa7b6730ec5a905bb181187c88f195acc86e68326d19e7f81cdc29ff0bb564736f6c63430008120033",
63+
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80630387a7a014610030575b600080fd5b61004a60048036038101906100459190610190565b61004c565b005b7f2c809fbe44736d7051f128c54565f5bb19f73188b2546cf7103f29e62c3a5fe28160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161009d92919061020d565b60405180910390a160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663af30d3a18260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b815260040161012092919061020d565b600060405180830381600087803b15801561013a57600080fd5b505af115801561014e573d6000803e3d6000fd5b5050505050565b600080fd5b6000819050919050565b61016d8161015a565b811461017857600080fd5b50565b60008135905061018a81610164565b92915050565b6000602082840312156101a6576101a5610155565b5b60006101b48482850161017b565b91505092915050565b6101c68161015a565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101f7826101cc565b9050919050565b610207816101ec565b82525050565b600060408201905061022260008301856101bd565b61022f60208301846101fe565b939250505056fea2646970667358221220cf6eaa7b6730ec5a905bb181187c88f195acc86e68326d19e7f81cdc29ff0bb564736f6c63430008120033",
64+
"devdoc": {
65+
"kind": "dev",
66+
"methods": {},
67+
"version": 1
68+
},
69+
"userdoc": {
70+
"kind": "user",
71+
"methods": {},
72+
"version": 1
73+
},
74+
"storageLayout": {
75+
"storage": [
76+
{
77+
"astId": 5,
78+
"contract": "contracts/L1Contract.sol:L1Contract",
79+
"label": "l2Messenger",
80+
"offset": 0,
81+
"slot": "0",
82+
"type": "t_address"
83+
}
84+
],
85+
"types": {
86+
"t_address": {
87+
"encoding": "inplace",
88+
"label": "address",
89+
"numberOfBytes": "20"
90+
}
91+
}
92+
}
93+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{
2+
"language": "Solidity",
3+
"sources": {
4+
"contracts/L1Contract.sol": {
5+
"content": "//SPDX-License-Identifier: Unlicense\npragma solidity ^0.8.18;\n\nimport \"./L2Contract.sol\";\n\ncontract L1Contract {\n address l2Messenger = 0xeC48b843169a07E9D1076f7785920D661bA684C2;\n\n event SendMessage(\n uint256 tokenId, \n address _to\n );\n\n constructor() {}\n\n function sendMessage(uint256 _tokenId) public{\n emit SendMessage(_tokenId, l2Messenger);\n L2Contract(l2Messenger).receiveMessage(_tokenId, l2Messenger);\n }\n}"
6+
},
7+
"contracts/L2Contract.sol": {
8+
"content": "//SPDX-License-Identifier: Unlicense\npragma solidity ^0.8.18;\n\ncontract L2Contract {\n \n event ReceivedMessage(\n uint256 _tokentId,\n address _to\n );\n\n constructor() {}\n \n\n function receiveMessage( uint256 _tokenId,address _to) public {\n emit ReceivedMessage(_tokenId,_to);\n }\n}"
9+
}
10+
},
11+
"settings": {
12+
"optimizer": {
13+
"enabled": false,
14+
"runs": 200
15+
},
16+
"outputSelection": {
17+
"*": {
18+
"*": [
19+
"abi",
20+
"evm.bytecode",
21+
"evm.deployedBytecode",
22+
"evm.methodIdentifiers",
23+
"metadata",
24+
"devdoc",
25+
"userdoc",
26+
"storageLayout",
27+
"evm.gasEstimates"
28+
],
29+
"": [
30+
"ast"
31+
]
32+
}
33+
},
34+
"metadata": {
35+
"useLiteralContent": true
36+
}
37+
}
38+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{
2+
"language": "Solidity",
3+
"sources": {
4+
"contracts/L1Contract.sol": {
5+
"content": "//SPDX-License-Identifier: Unlicense\npragma solidity ^0.8.18;\n\nimport \"./L2Contract.sol\";\n\ncontract L1Contract {\n address l2Messenger = 0xeC48b843169a07E9D1076f7785920D661bA684C2;\n\n event SendMessage(\n uint256 tokenId, \n address _to\n );\n\n constructor() {}\n\n function sendMessage(uint256 _tokenId) external payable{\n emit SendMessage(_tokenId, l2Messenger);\n L2Contract(l2Messenger).receiveMessage(_tokenId, l2Messenger);\n }\n}"
6+
},
7+
"contracts/L2Contract.sol": {
8+
"content": "//SPDX-License-Identifier: Unlicense\npragma solidity ^0.8.18;\n\ncontract L2Contract {\n \n event ReceivedMessage(\n uint256 _tokentId,\n address _to\n );\n\n constructor() {}\n \n\n function receiveMessage( uint256 _tokenId,address _to) public {\n emit ReceivedMessage(_tokenId,_to);\n }\n}"
9+
}
10+
},
11+
"settings": {
12+
"optimizer": {
13+
"enabled": false,
14+
"runs": 200
15+
},
16+
"outputSelection": {
17+
"*": {
18+
"*": [
19+
"abi",
20+
"evm.bytecode",
21+
"evm.deployedBytecode",
22+
"evm.methodIdentifiers",
23+
"metadata",
24+
"devdoc",
25+
"userdoc",
26+
"storageLayout",
27+
"evm.gasEstimates"
28+
],
29+
"": [
30+
"ast"
31+
]
32+
}
33+
},
34+
"metadata": {
35+
"useLiteralContent": true
36+
}
37+
}
38+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{
2+
"language": "Solidity",
3+
"sources": {
4+
"contracts/L1Contract.sol": {
5+
"content": "//SPDX-License-Identifier: Unlicense\npragma solidity ^0.8.18;\n\ncontract L1Contract {\n address l2Messenger = 0xb75d7e84517e1504C151B270255B087Fd746D34C;\n\n event SendMessage(\n uint256 tokenId, \n address _to\n );\n\n constructor() {}\n\n function sendMessage(uint256 _tokenId) public {\n emit SendMessage(_tokenId, l2Messenger);\n }\n}"
6+
},
7+
"contracts/L2Contract.sol": {
8+
"content": "//SPDX-License-Identifier: Unlicense\npragma solidity ^0.8.18;\n\ncontract L2Contract {\n \n event ReceivedMessage(\n uint256 _tokentId,\n address _to\n );\n\n constructor() {}\n \n\n function receiveMessage( uint256 _tokenId,address _to) public {\n emit ReceivedMessage(_tokenId,_to);\n }\n}"
9+
}
10+
},
11+
"settings": {
12+
"optimizer": {
13+
"enabled": false,
14+
"runs": 200
15+
},
16+
"outputSelection": {
17+
"*": {
18+
"*": [
19+
"abi",
20+
"evm.bytecode",
21+
"evm.deployedBytecode",
22+
"evm.methodIdentifiers",
23+
"metadata",
24+
"devdoc",
25+
"userdoc",
26+
"storageLayout",
27+
"evm.gasEstimates"
28+
],
29+
"": [
30+
"ast"
31+
]
32+
}
33+
},
34+
"metadata": {
35+
"useLiteralContent": true
36+
}
37+
}
38+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
534353
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
{
2+
"address": "0xeC48b843169a07E9D1076f7785920D661bA684C2",
3+
"abi": [
4+
{
5+
"inputs": [],
6+
"stateMutability": "nonpayable",
7+
"type": "constructor"
8+
},
9+
{
10+
"anonymous": false,
11+
"inputs": [
12+
{
13+
"indexed": false,
14+
"internalType": "uint256",
15+
"name": "_tokentId",
16+
"type": "uint256"
17+
},
18+
{
19+
"indexed": false,
20+
"internalType": "address",
21+
"name": "_to",
22+
"type": "address"
23+
}
24+
],
25+
"name": "ReceivedMessage",
26+
"type": "event"
27+
},
28+
{
29+
"inputs": [
30+
{
31+
"internalType": "uint256",
32+
"name": "_tokenId",
33+
"type": "uint256"
34+
},
35+
{
36+
"internalType": "address",
37+
"name": "_to",
38+
"type": "address"
39+
}
40+
],
41+
"name": "receiveMessage",
42+
"outputs": [],
43+
"stateMutability": "nonpayable",
44+
"type": "function"
45+
}
46+
],
47+
"transactionHash": "0x1fa07c31af11d1d1ea6650dd984e76b2eda743ed09dc4902cd4a46b9f15975a0",
48+
"receipt": {
49+
"to": null,
50+
"from": "0x03f4e5405730477629319B6A059325403f801E90",
51+
"contractAddress": "0xeC48b843169a07E9D1076f7785920D661bA684C2",
52+
"transactionIndex": 6,
53+
"gasUsed": "156589",
54+
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
55+
"blockHash": "0x875e9fa69fe0b42d0e84c3fd376574d7dc39b0eff93929b5db6093e74154fdb9",
56+
"transactionHash": "0x1fa07c31af11d1d1ea6650dd984e76b2eda743ed09dc4902cd4a46b9f15975a0",
57+
"logs": [],
58+
"blockNumber": 869079,
59+
"cumulativeGasUsed": "1355603",
60+
"status": 1,
61+
"byzantium": true
62+
},
63+
"args": [],
64+
"numDeployments": 1,
65+
"solcInputHash": "e4e0e23f5e0439f09b9b380153fd78e2",
66+
"metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"ReceivedMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"receiveMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/L2Contract.sol\":\"L2Contract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/L2Contract.sol\":{\"content\":\"//SPDX-License-Identifier: Unlicense\\npragma solidity ^0.8.18;\\n\\ncontract L2Contract {\\n \\n event ReceivedMessage(\\n uint256 _tokentId,\\n address _to\\n );\\n\\n constructor() {}\\n \\n\\n function receiveMessage( uint256 _tokenId,address _to) public {\\n emit ReceivedMessage(_tokenId,_to);\\n }\\n}\",\"keccak256\":\"0xa6ba089f42d1207c0d4c41ea7df90739d9edb36fea0219cd05e217cb18129e0f\",\"license\":\"Unlicense\"}},\"version\":1}",
67+
"bytecode": "0x608060405234801561001057600080fd5b506101df806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063af30d3a114610030575b600080fd5b61004a60048036038101906100459190610122565b61004c565b005b7f755c9f2d3bbede79cec141aeb43157bed12fba1ab92fea5c5c6167d422c78460828260405161007d929190610180565b60405180910390a15050565b600080fd5b6000819050919050565b6100a18161008e565b81146100ac57600080fd5b50565b6000813590506100be81610098565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100ef826100c4565b9050919050565b6100ff816100e4565b811461010a57600080fd5b50565b60008135905061011c816100f6565b92915050565b6000806040838503121561013957610138610089565b5b6000610147858286016100af565b92505060206101588582860161010d565b9150509250929050565b61016b8161008e565b82525050565b61017a816100e4565b82525050565b60006040820190506101956000830185610162565b6101a26020830184610171565b939250505056fea2646970667358221220ff2e8681d6c3dcb4f6bb1dc878fde66ad355fa0b90b07039dd7f5a68976eba7264736f6c63430008120033",
68+
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063af30d3a114610030575b600080fd5b61004a60048036038101906100459190610122565b61004c565b005b7f755c9f2d3bbede79cec141aeb43157bed12fba1ab92fea5c5c6167d422c78460828260405161007d929190610180565b60405180910390a15050565b600080fd5b6000819050919050565b6100a18161008e565b81146100ac57600080fd5b50565b6000813590506100be81610098565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100ef826100c4565b9050919050565b6100ff816100e4565b811461010a57600080fd5b50565b60008135905061011c816100f6565b92915050565b6000806040838503121561013957610138610089565b5b6000610147858286016100af565b92505060206101588582860161010d565b9150509250929050565b61016b8161008e565b82525050565b61017a816100e4565b82525050565b60006040820190506101956000830185610162565b6101a26020830184610171565b939250505056fea2646970667358221220ff2e8681d6c3dcb4f6bb1dc878fde66ad355fa0b90b07039dd7f5a68976eba7264736f6c63430008120033",
69+
"devdoc": {
70+
"kind": "dev",
71+
"methods": {},
72+
"version": 1
73+
},
74+
"userdoc": {
75+
"kind": "user",
76+
"methods": {},
77+
"version": 1
78+
},
79+
"storageLayout": {
80+
"storage": [],
81+
"types": null
82+
}
83+
}

0 commit comments

Comments
 (0)