xdapp-book/projects/messenger/chains/evm/out/Messenger.sol/Messenger.json

2156 lines
101 KiB
JSON

{
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_core_bridge_address",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "getCurrentMsg",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "encodedMsg",
"type": "bytes"
}
],
"name": "receiveEncodedMsg",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "chainId",
"type": "uint16"
},
{
"internalType": "bytes32",
"name": "applicationAddr",
"type": "bytes32"
}
],
"name": "registerApplicationContracts",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "str",
"type": "bytes"
}
],
"name": "sendMsg",
"outputs": [
{
"internalType": "uint64",
"name": "sequence",
"type": "uint64"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": {
"object": "0x60806040526001805463ffffffff60a01b1916905534801561002057600080fd5b50604051610b44380380610b4483398101604081905261003f91610072565b60038054336001600160a01b031991821617909155600180549091166001600160a01b03929092169190911790556100a2565b60006020828403121561008457600080fd5b81516001600160a01b038116811461009b57600080fd5b9392505050565b610a93806100b16000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063496d76ff146100515780635f327e1c14610066578063737a3ca414610079578063ff206cf8146100aa575b600080fd5b61006461005f3660046105a2565b6100bf565b005b610064610074366004610635565b610276565b61008c6100873660046105a2565b6102f3565b60405167ffffffffffffffff90911681526020015b60405180910390f35b6100b26103bb565b6040516100a191906106bd565b60015460405163607ec5ef60e11b8152600091829182916001600160a01b03169063c0fd8bde906100f49087906004016106bd565b600060405180830381865afa158015610111573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101399190810190610847565b9250925092508181906101685760405162461bcd60e51b815260040161015f91906106bd565b60405180910390fd5b506080830151606084015161ffff16600090815260026020526040902054146101d35760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420456d69747465722041646472657373210000000000000000604482015260640161015f565b61014083015160009081526004602052604090205460ff16156102385760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792070726f63657373656400000000000000604482015260640161015f565b61014083015160009081526004602090815260408220805460ff1916600117905560e0850151805161026f9392919091019061044d565b5050505050565b6003546001600160a01b031633146102dc5760405162461bcd60e51b815260206004820152602360248201527f4f6e6c79206f776e65722063616e207265676973746572206e657720636861696044820152626e732160e81b606482015260840161015f565b61ffff909116600090815260026020526040902055565b600180546040516358cd21bf60e11b81526000926001600160a01b0383169263b19a437e9261033592600160a01b90920463ffffffff1691879160040161099f565b6020604051808303816000875af1158015610354573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037891906109d1565b6001805491925061039691600160a01b900463ffffffff16906109ec565b600160146101000a81548163ffffffff021916908363ffffffff160217905550919050565b6060600080546103ca90610a22565b80601f01602080910402602001604051908101604052809291908181526020018280546103f690610a22565b80156104435780601f1061041857610100808354040283529160200191610443565b820191906000526020600020905b81548152906001019060200180831161042657829003601f168201915b5050505050905090565b82805461045990610a22565b90600052602060002090601f01602090048101928261047b57600085556104c1565b82601f1061049457805160ff19168380011785556104c1565b828001600101855582156104c1579182015b828111156104c15782518255916020019190600101906104a6565b506104cd9291506104d1565b5090565b5b808211156104cd57600081556001016104d2565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561051f5761051f6104e6565b60405290565b604051610160810167ffffffffffffffff8111828210171561051f5761051f6104e6565b604051601f8201601f1916810167ffffffffffffffff81118282101715610572576105726104e6565b604052919050565b600067ffffffffffffffff821115610594576105946104e6565b50601f01601f191660200190565b6000602082840312156105b457600080fd5b813567ffffffffffffffff8111156105cb57600080fd5b8201601f810184136105dc57600080fd5b80356105ef6105ea8261057a565b610549565b81815285602083850101111561060457600080fd5b81602084016020830137600091810160200191909152949350505050565b61ffff8116811461063257600080fd5b50565b6000806040838503121561064857600080fd5b823561065381610622565b946020939093013593505050565b60005b8381101561067c578181015183820152602001610664565b8381111561068b576000848401525b50505050565b600081518084526106a9816020860160208601610661565b601f01601f19169290920160200192915050565b6020815260006106d06020830184610691565b9392505050565b805160ff811681146106e857600080fd5b919050565b805163ffffffff811681146106e857600080fd5b80516106e881610622565b805167ffffffffffffffff811681146106e857600080fd5b600082601f83011261073557600080fd5b81516107436105ea8261057a565b81815284602083860101111561075857600080fd5b610769826020830160208701610661565b949350505050565b600082601f83011261078257600080fd5b8151602067ffffffffffffffff82111561079e5761079e6104e6565b6107ac818360051b01610549565b82815260079290921b840181019181810190868411156107cb57600080fd5b8286015b8481101561082c57608081890312156107e85760008081fd5b6107f06104fc565b81518152848201518582015260406108098184016106d7565b90820152606061081a8382016106d7565b908201528352918301916080016107cf565b509695505050505050565b805180151581146106e857600080fd5b60008060006060848603121561085c57600080fd5b835167ffffffffffffffff8082111561087457600080fd5b90850190610160828803121561088957600080fd5b610891610525565b61089a836106d7565b81526108a8602084016106ed565b60208201526108b9604084016106ed565b60408201526108ca60608401610701565b6060820152608083015160808201526108e560a0840161070c565b60a08201526108f660c084016106d7565b60c082015260e08301518281111561090d57600080fd5b61091989828601610724565b60e08301525061010061092d8185016106ed565b90820152610120838101518381111561094557600080fd5b6109518a828701610771565b91830191909152506101408381015190820152945061097260208701610837565b9350604086015191508082111561098857600080fd5b5061099586828701610724565b9150509250925092565b63ffffffff841681526060602082015260006109be6060830185610691565b905060ff83166040830152949350505050565b6000602082840312156109e357600080fd5b6106d08261070c565b600063ffffffff808316818516808303821115610a1957634e487b7160e01b600052601160045260246000fd5b01949350505050565b600181811c90821680610a3657607f821691505b60208210811415610a5757634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220dca09b4cfafc25b78e152282ddbe06bb71431d32743ce15106254fd727ad285b64736f6c634300080a0033",
"sourceMap": "98:1823:0:-:0;;;182:16;;;-1:-1:-1;;;;182:16:0;;;327:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;378:5;:18;;386:10;-1:-1:-1;;;;;;378:18:0;;;;;;;-1:-1:-1;406:45:0;;;;;-1:-1:-1;;;;;406:45:0;;;;;;;;;;98:1823;;14:290:3;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:3;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:3:o;:::-;98:1823:0;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c8063496d76ff146100515780635f327e1c14610066578063737a3ca414610079578063ff206cf8146100aa575b600080fd5b61006461005f3660046105a2565b6100bf565b005b610064610074366004610635565b610276565b61008c6100873660046105a2565b6102f3565b60405167ffffffffffffffff90911681526020015b60405180910390f35b6100b26103bb565b6040516100a191906106bd565b60015460405163607ec5ef60e11b8152600091829182916001600160a01b03169063c0fd8bde906100f49087906004016106bd565b600060405180830381865afa158015610111573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101399190810190610847565b9250925092508181906101685760405162461bcd60e51b815260040161015f91906106bd565b60405180910390fd5b506080830151606084015161ffff16600090815260026020526040902054146101d35760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420456d69747465722041646472657373210000000000000000604482015260640161015f565b61014083015160009081526004602052604090205460ff16156102385760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c72656164792070726f63657373656400000000000000604482015260640161015f565b61014083015160009081526004602090815260408220805460ff1916600117905560e0850151805161026f9392919091019061044d565b5050505050565b6003546001600160a01b031633146102dc5760405162461bcd60e51b815260206004820152602360248201527f4f6e6c79206f776e65722063616e207265676973746572206e657720636861696044820152626e732160e81b606482015260840161015f565b61ffff909116600090815260026020526040902055565b600180546040516358cd21bf60e11b81526000926001600160a01b0383169263b19a437e9261033592600160a01b90920463ffffffff1691879160040161099f565b6020604051808303816000875af1158015610354573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037891906109d1565b6001805491925061039691600160a01b900463ffffffff16906109ec565b600160146101000a81548163ffffffff021916908363ffffffff160217905550919050565b6060600080546103ca90610a22565b80601f01602080910402602001604051908101604052809291908181526020018280546103f690610a22565b80156104435780601f1061041857610100808354040283529160200191610443565b820191906000526020600020905b81548152906001019060200180831161042657829003601f168201915b5050505050905090565b82805461045990610a22565b90600052602060002090601f01602090048101928261047b57600085556104c1565b82601f1061049457805160ff19168380011785556104c1565b828001600101855582156104c1579182015b828111156104c15782518255916020019190600101906104a6565b506104cd9291506104d1565b5090565b5b808211156104cd57600081556001016104d2565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561051f5761051f6104e6565b60405290565b604051610160810167ffffffffffffffff8111828210171561051f5761051f6104e6565b604051601f8201601f1916810167ffffffffffffffff81118282101715610572576105726104e6565b604052919050565b600067ffffffffffffffff821115610594576105946104e6565b50601f01601f191660200190565b6000602082840312156105b457600080fd5b813567ffffffffffffffff8111156105cb57600080fd5b8201601f810184136105dc57600080fd5b80356105ef6105ea8261057a565b610549565b81815285602083850101111561060457600080fd5b81602084016020830137600091810160200191909152949350505050565b61ffff8116811461063257600080fd5b50565b6000806040838503121561064857600080fd5b823561065381610622565b946020939093013593505050565b60005b8381101561067c578181015183820152602001610664565b8381111561068b576000848401525b50505050565b600081518084526106a9816020860160208601610661565b601f01601f19169290920160200192915050565b6020815260006106d06020830184610691565b9392505050565b805160ff811681146106e857600080fd5b919050565b805163ffffffff811681146106e857600080fd5b80516106e881610622565b805167ffffffffffffffff811681146106e857600080fd5b600082601f83011261073557600080fd5b81516107436105ea8261057a565b81815284602083860101111561075857600080fd5b610769826020830160208701610661565b949350505050565b600082601f83011261078257600080fd5b8151602067ffffffffffffffff82111561079e5761079e6104e6565b6107ac818360051b01610549565b82815260079290921b840181019181810190868411156107cb57600080fd5b8286015b8481101561082c57608081890312156107e85760008081fd5b6107f06104fc565b81518152848201518582015260406108098184016106d7565b90820152606061081a8382016106d7565b908201528352918301916080016107cf565b509695505050505050565b805180151581146106e857600080fd5b60008060006060848603121561085c57600080fd5b835167ffffffffffffffff8082111561087457600080fd5b90850190610160828803121561088957600080fd5b610891610525565b61089a836106d7565b81526108a8602084016106ed565b60208201526108b9604084016106ed565b60408201526108ca60608401610701565b6060820152608083015160808201526108e560a0840161070c565b60a08201526108f660c084016106d7565b60c082015260e08301518281111561090d57600080fd5b61091989828601610724565b60e08301525061010061092d8185016106ed565b90820152610120838101518381111561094557600080fd5b6109518a828701610771565b91830191909152506101408381015190820152945061097260208701610837565b9350604086015191508082111561098857600080fd5b5061099586828701610724565b9150509250925092565b63ffffffff841681526060602082015260006109be6060830185610691565b905060ff83166040830152949350505050565b6000602082840312156109e357600080fd5b6106d08261070c565b600063ffffffff808316818516808303821115610a1957634e487b7160e01b600052601160045260246000fd5b01949350505050565b600181811c90821680610a3657607f821691505b60208210811415610a5757634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220dca09b4cfafc25b78e152282ddbe06bb71431d32743ce15106254fd727ad285b64736f6c634300080a0033",
"sourceMap": "98:1823:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;633:822;;;;;;:::i;:::-;;:::i;:::-;;1691:228;;;;;;:::i;:::-;;:::i;465:162::-;;;;;;:::i;:::-;;:::i;:::-;;;2425:18:3;2413:31;;;2395:50;;2383:2;2368:18;465:162:0;;;;;;;;1461:95;;;:::i;:::-;;;;;;;:::i;633:822::-;763:11;;:40;;-1:-1:-1;;;763:40:0;;703:22;;;;;;-1:-1:-1;;;;;763:11:0;;:28;;:40;;792:10;;763:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;763:40:0;;;;;;;;;;;;:::i;:::-;702:101;;;;;;1005:5;1012:6;997:22;;;;;-1:-1:-1;;;997:22:0;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;1145:17:0;;;;1123;;;;1101:40;;;;;;:21;:40;;;;;;:61;1093:98;;;;-1:-1:-1;;;1093:98:0;;7862:2:3;1093:98:0;;;7844:21:3;7901:2;7881:18;;;7874:30;7940:26;7920:18;;;7913:54;7984:18;;1093:98:0;7660:348:3;1093:98:0;1300:7;;;;1281:27;;;;:18;:27;;;;;;;;1280:28;1272:66;;;;-1:-1:-1;;;1272:66:0;;8215:2:3;1272:66:0;;;8197:21:3;8254:2;8234:18;;;8227:30;8293:27;8273:18;;;8266:55;8338:18;;1272:66:0;8013:349:3;1272:66:0;1367:7;;;;1348:27;;;;:18;:27;;;;;;;:34;;-1:-1:-1;;1348:34:0;1378:4;1348:34;;;1437:10;;;;1416:32;;;;1348:27;1416:32;;;;;;:::i;:::-;;692:763;;;633:822;:::o;1691:228::-;1809:5;;-1:-1:-1;;;;;1809:5:0;1795:10;:19;1787:67;;;;-1:-1:-1;;;1787:67:0;;8569:2:3;1787:67:0;;;8551:21:3;8608:2;8588:18;;;8581:30;8647:34;8627:18;;;8620:62;-1:-1:-1;;;8698:18:3;;;8691:33;8741:19;;1787:67:0;8367:399:3;1787:67:0;1864:30;;;;;;;;:21;:30;;;;;:48;1691:228::o;465:162::-;554:11;;;:41;;-1:-1:-1;;;554:41:0;;516:15;;-1:-1:-1;;;;;554:11:0;;;:26;;:41;;-1:-1:-1;;;581:5:0;;;;;;588:3;;554:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;613:5;;;543:52;;-1:-1:-1;613:7:0;;-1:-1:-1;;;613:5:0;;;;;:7;:::i;:::-;605:5;;:15;;;;;;;;;;;;;;;;;;465:162;;;:::o;1461:95::-;1507:13;1538:11;1531:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1461:95;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:3;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:253;218:2;212:9;260:4;248:17;;295:18;280:34;;316:22;;;277:62;274:88;;;342:18;;:::i;:::-;378:2;371:22;146:253;:::o;404:255::-;476:2;470:9;518:6;506:19;;555:18;540:34;;576:22;;;537:62;534:88;;;602:18;;:::i;664:275::-;735:2;729:9;800:2;781:13;;-1:-1:-1;;777:27:3;765:40;;835:18;820:34;;856:22;;;817:62;814:88;;;882:18;;:::i;:::-;918:2;911:22;664:275;;-1:-1:-1;664:275:3:o;944:186::-;992:4;1025:18;1017:6;1014:30;1011:56;;;1047:18;;:::i;:::-;-1:-1:-1;1113:2:3;1092:15;-1:-1:-1;;1088:29:3;1119:4;1084:40;;944:186::o;1135:671::-;1203:6;1256:2;1244:9;1235:7;1231:23;1227:32;1224:52;;;1272:1;1269;1262:12;1224:52;1312:9;1299:23;1345:18;1337:6;1334:30;1331:50;;;1377:1;1374;1367:12;1331:50;1400:22;;1453:4;1445:13;;1441:27;-1:-1:-1;1431:55:3;;1482:1;1479;1472:12;1431:55;1518:2;1505:16;1543:48;1559:31;1587:2;1559:31;:::i;:::-;1543:48;:::i;:::-;1614:2;1607:5;1600:17;1654:7;1649:2;1644;1640;1636:11;1632:20;1629:33;1626:53;;;1675:1;1672;1665:12;1626:53;1730:2;1725;1721;1717:11;1712:2;1705:5;1701:14;1688:45;1774:1;1753:14;;;1769:2;1749:23;1742:34;;;;1757:5;1135:671;-1:-1:-1;;;;1135:671:3:o;1811:117::-;1896:6;1889:5;1885:18;1878:5;1875:29;1865:57;;1918:1;1915;1908:12;1865:57;1811:117;:::o;1933:313::-;2000:6;2008;2061:2;2049:9;2040:7;2036:23;2032:32;2029:52;;;2077:1;2074;2067:12;2029:52;2116:9;2103:23;2135:30;2159:5;2135:30;:::i;:::-;2184:5;2236:2;2221:18;;;;2208:32;;-1:-1:-1;;;1933:313:3:o;2456:258::-;2528:1;2538:113;2552:6;2549:1;2546:13;2538:113;;;2628:11;;;2622:18;2609:11;;;2602:39;2574:2;2567:10;2538:113;;;2669:6;2666:1;2663:13;2660:48;;;2704:1;2695:6;2690:3;2686:16;2679:27;2660:48;;2456:258;;;:::o;2719:::-;2761:3;2799:5;2793:12;2826:6;2821:3;2814:19;2842:63;2898:6;2891:4;2886:3;2882:14;2875:4;2868:5;2864:16;2842:63;:::i;:::-;2959:2;2938:15;-1:-1:-1;;2934:29:3;2925:39;;;;2966:4;2921:50;;2719:258;-1:-1:-1;;2719:258:3:o;2982:220::-;3131:2;3120:9;3113:21;3094:4;3151:45;3192:2;3181:9;3177:18;3169:6;3151:45;:::i;:::-;3143:53;2982:220;-1:-1:-1;;;2982:220:3:o;3430:160::-;3507:13;;3560:4;3549:16;;3539:27;;3529:55;;3580:1;3577;3570:12;3529:55;3430:160;;;:::o;3595:167::-;3673:13;;3726:10;3715:22;;3705:33;;3695:61;;3752:1;3749;3742:12;3767:136;3845:13;;3867:30;3845:13;3867:30;:::i;3908:175::-;3986:13;;4039:18;4028:30;;4018:41;;4008:69;;4073:1;4070;4063:12;4088:428;4141:5;4194:3;4187:4;4179:6;4175:17;4171:27;4161:55;;4212:1;4209;4202:12;4161:55;4241:6;4235:13;4272:48;4288:31;4316:2;4288:31;:::i;4272:48::-;4345:2;4336:7;4329:19;4391:3;4384:4;4379:2;4371:6;4367:15;4363:26;4360:35;4357:55;;;4408:1;4405;4398:12;4357:55;4421:64;4482:2;4475:4;4466:7;4462:18;4455:4;4447:6;4443:17;4421:64;:::i;:::-;4503:7;4088:428;-1:-1:-1;;;;4088:428:3:o;4521:1177::-;4595:5;4648:3;4641:4;4633:6;4629:17;4625:27;4615:55;;4666:1;4663;4656:12;4615:55;4695:6;4689:13;4721:4;4744:18;4740:2;4737:26;4734:52;;;4766:18;;:::i;:::-;4806:36;4838:2;4833;4830:1;4826:10;4822:19;4806:36;:::i;:::-;4876:15;;;4962:1;4958:10;;;;4946:23;;4942:32;;;4907:12;;;;4986:15;;;4983:35;;;5014:1;5011;5004:12;4983:35;5050:2;5042:6;5038:15;5062:607;5078:6;5073:3;5070:15;5062:607;;;5156:4;5150:3;5145;5141:13;5137:24;5134:114;;;5202:1;5231:2;5227;5220:14;5134:114;5274:22;;:::i;:::-;5329:3;5323:10;5316:5;5309:25;5385:2;5380:3;5376:12;5370:19;5365:2;5358:5;5354:14;5347:43;5413:2;5451:41;5488:2;5483:3;5479:12;5451:41;:::i;:::-;5435:14;;;5428:65;5516:2;5554:41;5582:12;;;5554:41;:::i;:::-;5538:14;;;5531:65;5609:18;;5647:12;;;;5104:4;5095:14;5062:607;;;-1:-1:-1;5687:5:3;4521:1177;-1:-1:-1;;;;;;4521:1177:3:o;5703:164::-;5779:13;;5828;;5821:21;5811:32;;5801:60;;5857:1;5854;5847:12;5872:1783;5986:6;5994;6002;6055:2;6043:9;6034:7;6030:23;6026:32;6023:52;;;6071:1;6068;6061:12;6023:52;6104:9;6098:16;6133:18;6174:2;6166:6;6163:14;6160:34;;;6190:1;6187;6180:12;6160:34;6213:22;;;;6269:6;6251:16;;;6247:29;6244:49;;;6289:1;6286;6279:12;6244:49;6315:22;;:::i;:::-;6360:31;6388:2;6360:31;:::i;:::-;6353:5;6346:46;6424:41;6461:2;6457;6453:11;6424:41;:::i;:::-;6419:2;6412:5;6408:14;6401:65;6498:41;6535:2;6531;6527:11;6498:41;:::i;:::-;6493:2;6486:5;6482:14;6475:65;6572:41;6609:2;6605;6601:11;6572:41;:::i;:::-;6567:2;6560:5;6556:14;6549:65;6661:3;6657:2;6653:12;6647:19;6641:3;6634:5;6630:15;6623:44;6700:42;6737:3;6733:2;6729:12;6700:42;:::i;:::-;6694:3;6687:5;6683:15;6676:67;6776:41;6812:3;6808:2;6804:12;6776:41;:::i;:::-;6770:3;6763:5;6759:15;6752:66;6857:3;6853:2;6849:12;6843:19;6887:2;6877:8;6874:16;6871:36;;;6903:1;6900;6893:12;6871:36;6940:55;6987:7;6976:8;6972:2;6968:17;6940:55;:::i;:::-;6934:3;6927:5;6923:15;6916:80;;7015:3;7050:41;7087:2;7083;7079:11;7050:41;:::i;:::-;7034:14;;;7027:65;7111:3;7145:11;;;7139:18;7169:16;;;7166:36;;;7198:1;7195;7188:12;7166:36;7234:76;7302:7;7291:8;7287:2;7283:17;7234:76;:::i;:::-;7218:14;;;7211:100;;;;-1:-1:-1;7330:3:3;7371:11;;;7365:18;7349:14;;;7342:42;7222:5;-1:-1:-1;7427:46:3;7469:2;7454:18;;7427:46;:::i;:::-;7417:56;;7519:2;7508:9;7504:18;7498:25;7482:41;;7548:2;7538:8;7535:16;7532:36;;;7564:1;7561;7554:12;7532:36;;7587:62;7641:7;7630:8;7619:9;7615:24;7587:62;:::i;:::-;7577:72;;;5872:1783;;;;;:::o;8771:392::-;8990:10;8982:6;8978:23;8967:9;8960:42;9038:2;9033;9022:9;9018:18;9011:30;8941:4;9058:45;9099:2;9088:9;9084:18;9076:6;9058:45;:::i;:::-;9050:53;;9151:4;9143:6;9139:17;9134:2;9123:9;9119:18;9112:45;8771:392;;;;;;:::o;9168:206::-;9237:6;9290:2;9278:9;9269:7;9265:23;9261:32;9258:52;;;9306:1;9303;9296:12;9258:52;9329:39;9358:9;9329:39;:::i;9379:325::-;9418:3;9446:10;9483:2;9480:1;9476:10;9513:2;9510:1;9506:10;9544:3;9540:2;9536:12;9531:3;9528:21;9525:144;;;9591:10;9586:3;9582:20;9579:1;9572:31;9626:4;9623:1;9616:15;9654:4;9651:1;9644:15;9525:144;9685:13;;9379:325;-1:-1:-1;;;;9379:325:3:o;9709:380::-;9788:1;9784:12;;;;9831;;;9852:61;;9906:4;9898:6;9894:17;9884:27;;9852:61;9959:2;9951:6;9948:14;9928:18;9925:38;9922:161;;;10005:10;10000:3;9996:20;9993:1;9986:31;10040:4;10037:1;10030:15;10068:4;10065:1;10058:15;9922:161;;9709:380;;;:::o",
"linkReferences": {}
},
"methodIdentifiers": {
"getCurrentMsg()": "ff206cf8",
"receiveEncodedMsg(bytes)": "496d76ff",
"registerApplicationContracts(uint16,bytes32)": "5f327e1c",
"sendMsg(bytes)": "737a3ca4"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_core_bridge_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"getCurrentMsg\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedMsg\",\"type\":\"bytes\"}],\"name\":\"receiveEncodedMsg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"applicationAddr\",\"type\":\"bytes32\"}],\"name\":\"registerApplicationContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"str\",\"type\":\"bytes\"}],\"name\":\"sendMsg\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"registerApplicationContracts(uint16,bytes32)\":{\"notice\":\"Registers it's sibling applications on other chains as the only ones that can send this instance messages\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Messenger.sol\":\"Messenger\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"src/Messenger.sol\":{\"keccak256\":\"0xc1612910472d31c40c466dd0607e3252d9d3ed8fc61cc21cd691d0777f0ea603\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://6aa09e11177d17a247c62d1edfbfdd9a39ecd6adf1916de6699e1a4b8db161a9\",\"dweb:/ipfs/QmeJKe52xxRgTPYAzYGfWxd6etp4FMQf64DDFEjN1kJuaB\"]},\"src/Wormhole/IWormhole.sol\":{\"keccak256\":\"0xa83711083ba6529aeedafc74593865aecece3904dc0ca18b624a3212e038c8f5\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://88e7ef004e8802e44517ddb91ab00669a79ab6814b8bbcb3dc4bbb3d13b3ebd6\",\"dweb:/ipfs/QmXcGqQpUPV9so9RzdYhD2konP679fLCiXEZr44bgGVVJe\"]},\"src/Wormhole/Structs.sol\":{\"keccak256\":\"0xf6067f3a7ac8ccd239a50aa2ef5620ffe31bc86a3757571e13e57a3a0f476b37\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://813db91e92feacdf21da3986e1a59d38befc34103cd09e61d30471c228e3a6f2\",\"dweb:/ipfs/QmWeRrqvbite8YCHu97Lsta1Y3TR9WzQ9k2spaF6S3VQZZ\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.10+commit.fc410830"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_core_bridge_address",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "getCurrentMsg",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
]
},
{
"inputs": [
{
"internalType": "bytes",
"name": "encodedMsg",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "receiveEncodedMsg"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "chainId",
"type": "uint16"
},
{
"internalType": "bytes32",
"name": "applicationAddr",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "registerApplicationContracts"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "str",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "sendMsg",
"outputs": [
{
"internalType": "uint64",
"name": "sequence",
"type": "uint64"
}
]
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {
"registerApplicationContracts(uint16,bytes32)": {
"notice": "Registers it's sibling applications on other chains as the only ones that can send this instance messages"
}
},
"version": 1
}
},
"settings": {
"remappings": [],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"bytecodeHash": "ipfs"
},
"compilationTarget": {
"src/Messenger.sol": "Messenger"
},
"libraries": {}
},
"sources": {
"src/Messenger.sol": {
"keccak256": "0xc1612910472d31c40c466dd0607e3252d9d3ed8fc61cc21cd691d0777f0ea603",
"urls": [
"bzz-raw://6aa09e11177d17a247c62d1edfbfdd9a39ecd6adf1916de6699e1a4b8db161a9",
"dweb:/ipfs/QmeJKe52xxRgTPYAzYGfWxd6etp4FMQf64DDFEjN1kJuaB"
],
"license": "Unlicense"
},
"src/Wormhole/IWormhole.sol": {
"keccak256": "0xa83711083ba6529aeedafc74593865aecece3904dc0ca18b624a3212e038c8f5",
"urls": [
"bzz-raw://88e7ef004e8802e44517ddb91ab00669a79ab6814b8bbcb3dc4bbb3d13b3ebd6",
"dweb:/ipfs/QmXcGqQpUPV9so9RzdYhD2konP679fLCiXEZr44bgGVVJe"
],
"license": "Apache 2"
},
"src/Wormhole/Structs.sol": {
"keccak256": "0xf6067f3a7ac8ccd239a50aa2ef5620ffe31bc86a3757571e13e57a3a0f476b37",
"urls": [
"bzz-raw://813db91e92feacdf21da3986e1a59d38befc34103cd09e61d30471c228e3a6f2",
"dweb:/ipfs/QmWeRrqvbite8YCHu97Lsta1Y3TR9WzQ9k2spaF6S3VQZZ"
],
"license": "Apache 2"
}
},
"version": 1
},
"ast": {
"absolutePath": "src/Messenger.sol",
"id": 153,
"exportedSymbols": {
"IWormhole": [
279
],
"Messenger": [
152
],
"Structs": [
329
]
},
"nodeType": "SourceUnit",
"src": "37:1885:0",
"nodes": [
{
"id": 1,
"nodeType": "PragmaDirective",
"src": "37:23:0",
"literals": [
"solidity",
"^",
"0.8",
".0"
]
},
{
"id": 2,
"nodeType": "ImportDirective",
"src": "62:34:0",
"absolutePath": "src/Wormhole/IWormhole.sol",
"file": "./Wormhole/IWormhole.sol",
"nameLocation": "-1:-1:-1",
"scope": 153,
"sourceUnit": 280,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 152,
"nodeType": "ContractDefinition",
"src": "98:1823:0",
"nodes": [
{
"id": 4,
"nodeType": "VariableDeclaration",
"src": "123:26:0",
"constant": false,
"mutability": "mutable",
"name": "current_msg",
"nameLocation": "138:11:0",
"scope": 152,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string"
},
"typeName": {
"id": 3,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "123:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "private"
},
{
"id": 7,
"nodeType": "VariableDeclaration",
"src": "155:21:0",
"constant": false,
"mutability": "mutable",
"name": "core_bridge",
"nameLocation": "165:11:0",
"scope": 152,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IWormhole_$279",
"typeString": "contract IWormhole"
},
"typeName": {
"id": 6,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 5,
"name": "IWormhole",
"nodeType": "IdentifierPath",
"referencedDeclaration": 279,
"src": "155:9:0"
},
"referencedDeclaration": 279,
"src": "155:9:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IWormhole_$279",
"typeString": "contract IWormhole"
}
},
"visibility": "internal"
},
{
"id": 10,
"nodeType": "VariableDeclaration",
"src": "182:16:0",
"constant": false,
"mutability": "mutable",
"name": "nonce",
"nameLocation": "189:5:0",
"scope": 152,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 8,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "182:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": {
"hexValue": "30",
"id": 9,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "197:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"visibility": "internal"
},
{
"id": 14,
"nodeType": "VariableDeclaration",
"src": "204:48:0",
"constant": false,
"mutability": "mutable",
"name": "_applicationContracts",
"nameLocation": "231:21:0",
"scope": 152,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint16_$_t_bytes32_$",
"typeString": "mapping(uint16 => bytes32)"
},
"typeName": {
"id": 13,
"keyType": {
"id": 11,
"name": "uint16",
"nodeType": "ElementaryTypeName",
"src": "212:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"nodeType": "Mapping",
"src": "204:26:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint16_$_t_bytes32_$",
"typeString": "mapping(uint16 => bytes32)"
},
"valueType": {
"id": 12,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "222:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
},
"visibility": "internal"
},
{
"id": 16,
"nodeType": "VariableDeclaration",
"src": "258:13:0",
"constant": false,
"mutability": "mutable",
"name": "owner",
"nameLocation": "266:5:0",
"scope": 152,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 15,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "258:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"id": 20,
"nodeType": "VariableDeclaration",
"src": "277:43:0",
"constant": false,
"mutability": "mutable",
"name": "_completedMessages",
"nameLocation": "302:18:0",
"scope": 152,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"typeName": {
"id": 19,
"keyType": {
"id": 17,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "285:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "277:24:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"valueType": {
"id": 18,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "296:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"visibility": "internal"
},
{
"id": 37,
"nodeType": "FunctionDefinition",
"src": "327:131:0",
"body": {
"id": 36,
"nodeType": "Block",
"src": "368:90:0",
"statements": [
{
"expression": {
"id": 28,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 25,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 16,
"src": "378:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"expression": {
"id": 26,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "386:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 27,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "386:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "378:18:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 29,
"nodeType": "ExpressionStatement",
"src": "378:18:0"
},
{
"expression": {
"id": 34,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 30,
"name": "core_bridge",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 7,
"src": "406:11:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IWormhole_$279",
"typeString": "contract IWormhole"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 32,
"name": "_core_bridge_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22,
"src": "430:20:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 31,
"name": "IWormhole",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 279,
"src": "420:9:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IWormhole_$279_$",
"typeString": "type(contract IWormhole)"
}
},
"id": 33,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "420:31:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IWormhole_$279",
"typeString": "contract IWormhole"
}
},
"src": "406:45:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IWormhole_$279",
"typeString": "contract IWormhole"
}
},
"id": 35,
"nodeType": "ExpressionStatement",
"src": "406:45:0"
}
]
},
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"parameters": {
"id": 23,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 22,
"mutability": "mutable",
"name": "_core_bridge_address",
"nameLocation": "347:20:0",
"nodeType": "VariableDeclaration",
"scope": 37,
"src": "339:28:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "339:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "338:30:0"
},
"returnParameters": {
"id": 24,
"nodeType": "ParameterList",
"parameters": [],
"src": "368:0:0"
},
"scope": 152,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"id": 60,
"nodeType": "FunctionDefinition",
"src": "465:162:0",
"body": {
"id": 59,
"nodeType": "Block",
"src": "533:94:0",
"statements": [
{
"expression": {
"id": 51,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 44,
"name": "sequence",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42,
"src": "543:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 47,
"name": "nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10,
"src": "581:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
{
"id": 48,
"name": "str",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 39,
"src": "588:3:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"hexValue": "31",
"id": 49,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "593:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
}
],
"expression": {
"id": 45,
"name": "core_bridge",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 7,
"src": "554:11:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IWormhole_$279",
"typeString": "contract IWormhole"
}
},
"id": 46,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "publishMessage",
"nodeType": "MemberAccess",
"referencedDeclaration": 180,
"src": "554:26:0",
"typeDescriptions": {
"typeIdentifier": "t_function_external_payable$_t_uint32_$_t_bytes_memory_ptr_$_t_uint8_$returns$_t_uint64_$",
"typeString": "function (uint32,bytes memory,uint8) payable external returns (uint64)"
}
},
"id": 50,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "554:41:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
},
"src": "543:52:0",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
},
"id": 52,
"nodeType": "ExpressionStatement",
"src": "543:52:0"
},
{
"expression": {
"id": 57,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 53,
"name": "nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10,
"src": "605:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 56,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 54,
"name": "nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10,
"src": "613:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"hexValue": "31",
"id": 55,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "619:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "613:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "605:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 58,
"nodeType": "ExpressionStatement",
"src": "605:15:0"
}
]
},
"functionSelector": "737a3ca4",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "sendMsg",
"nameLocation": "474:7:0",
"parameters": {
"id": 40,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 39,
"mutability": "mutable",
"name": "str",
"nameLocation": "495:3:0",
"nodeType": "VariableDeclaration",
"scope": 60,
"src": "482:16:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 38,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "482:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "481:18:0"
},
"returnParameters": {
"id": 43,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 42,
"mutability": "mutable",
"name": "sequence",
"nameLocation": "523:8:0",
"nodeType": "VariableDeclaration",
"scope": 60,
"src": "516:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
},
"typeName": {
"id": 41,
"name": "uint64",
"nodeType": "ElementaryTypeName",
"src": "516:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
},
"visibility": "internal"
}
],
"src": "515:17:0"
},
"scope": 152,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"id": 120,
"nodeType": "FunctionDefinition",
"src": "633:822:0",
"body": {
"id": 119,
"nodeType": "Block",
"src": "692:763:0",
"statements": [
{
"assignments": [
69,
71,
73
],
"declarations": [
{
"constant": false,
"id": 69,
"mutability": "mutable",
"name": "vm",
"nameLocation": "723:2:0",
"nodeType": "VariableDeclaration",
"scope": 119,
"src": "703:22:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_VM_$328_memory_ptr",
"typeString": "struct Structs.VM"
},
"typeName": {
"id": 68,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 67,
"name": "IWormhole.VM",
"nodeType": "IdentifierPath",
"referencedDeclaration": 328,
"src": "703:12:0"
},
"referencedDeclaration": 328,
"src": "703:12:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_VM_$328_storage_ptr",
"typeString": "struct Structs.VM"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71,
"mutability": "mutable",
"name": "valid",
"nameLocation": "732:5:0",
"nodeType": "VariableDeclaration",
"scope": 119,
"src": "727:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 70,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "727:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 73,
"mutability": "mutable",
"name": "reason",
"nameLocation": "753:6:0",
"nodeType": "VariableDeclaration",
"scope": 119,
"src": "739:20:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 72,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "739:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"id": 78,
"initialValue": {
"arguments": [
{
"id": 76,
"name": "encodedMsg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 62,
"src": "792:10:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"id": 74,
"name": "core_bridge",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 7,
"src": "763:11:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IWormhole_$279",
"typeString": "contract IWormhole"
}
},
"id": 75,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "parseAndVerifyVM",
"nodeType": "MemberAccess",
"referencedDeclaration": 192,
"src": "763:28:0",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_bytes_memory_ptr_$returns$_t_struct$_VM_$328_memory_ptr_$_t_bool_$_t_string_memory_ptr_$",
"typeString": "function (bytes memory) view external returns (struct Structs.VM memory,bool,string memory)"
}
},
"id": 77,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "763:40:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_struct$_VM_$328_memory_ptr_$_t_bool_$_t_string_memory_ptr_$",
"typeString": "tuple(struct Structs.VM memory,bool,string memory)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "702:101:0"
},
{
"expression": {
"arguments": [
{
"id": 80,
"name": "valid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71,
"src": "1005:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"id": 81,
"name": "reason",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 73,
"src": "1012:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 79,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "997:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 82,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "997:22:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 83,
"nodeType": "ExpressionStatement",
"src": "997:22:0"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"id": 91,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"baseExpression": {
"id": 85,
"name": "_applicationContracts",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14,
"src": "1101:21:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint16_$_t_bytes32_$",
"typeString": "mapping(uint16 => bytes32)"
}
},
"id": 88,
"indexExpression": {
"expression": {
"id": 86,
"name": "vm",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69,
"src": "1123:2:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_VM_$328_memory_ptr",
"typeString": "struct Structs.VM memory"
}
},
"id": 87,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "emitterChainId",
"nodeType": "MemberAccess",
"referencedDeclaration": 311,
"src": "1123:17:0",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1101:40:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"expression": {
"id": 89,
"name": "vm",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69,
"src": "1145:2:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_VM_$328_memory_ptr",
"typeString": "struct Structs.VM memory"
}
},
"id": 90,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "emitterAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 313,
"src": "1145:17:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"src": "1101:61:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "496e76616c696420456d6974746572204164647265737321",
"id": 92,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1164:26:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f496f877e2734cc33859d6eebf6eb783eb0c07a93151b05d0dc70cb8571cfab1",
"typeString": "literal_string \"Invalid Emitter Address!\""
},
"value": "Invalid Emitter Address!"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_f496f877e2734cc33859d6eebf6eb783eb0c07a93151b05d0dc70cb8571cfab1",
"typeString": "literal_string \"Invalid Emitter Address!\""
}
],
"id": 84,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1093:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 93,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1093:98:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 94,
"nodeType": "ExpressionStatement",
"src": "1093:98:0"
},
{
"expression": {
"arguments": [
{
"id": 100,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "1280:28:0",
"subExpression": {
"baseExpression": {
"id": 96,
"name": "_completedMessages",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20,
"src": "1281:18:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 99,
"indexExpression": {
"expression": {
"id": 97,
"name": "vm",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69,
"src": "1300:2:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_VM_$328_memory_ptr",
"typeString": "struct Structs.VM memory"
}
},
"id": 98,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "hash",
"nodeType": "MemberAccess",
"referencedDeclaration": 327,
"src": "1300:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1281:27:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4d65737361676520616c72656164792070726f636573736564",
"id": 101,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1310:27:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_ce52e83d839057c6eded6c3ade48bb15cfa535fddf47c137ba979ab4aea203cc",
"typeString": "literal_string \"Message already processed\""
},
"value": "Message already processed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_ce52e83d839057c6eded6c3ade48bb15cfa535fddf47c137ba979ab4aea203cc",
"typeString": "literal_string \"Message already processed\""
}
],
"id": 95,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1272:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 102,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1272:66:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 103,
"nodeType": "ExpressionStatement",
"src": "1272:66:0"
},
{
"expression": {
"id": 109,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 104,
"name": "_completedMessages",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20,
"src": "1348:18:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 107,
"indexExpression": {
"expression": {
"id": 105,
"name": "vm",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69,
"src": "1367:2:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_VM_$328_memory_ptr",
"typeString": "struct Structs.VM memory"
}
},
"id": 106,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "hash",
"nodeType": "MemberAccess",
"referencedDeclaration": 327,
"src": "1367:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "1348:27:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"hexValue": "74727565",
"id": 108,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1378:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "1348:34:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 110,
"nodeType": "ExpressionStatement",
"src": "1348:34:0"
},
{
"expression": {
"id": 117,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 111,
"name": "current_msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4,
"src": "1416:11:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"expression": {
"id": 114,
"name": "vm",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69,
"src": "1437:2:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_VM_$328_memory_ptr",
"typeString": "struct Structs.VM memory"
}
},
"id": 115,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "payload",
"nodeType": "MemberAccess",
"referencedDeclaration": 319,
"src": "1437:10:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 113,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1430:6:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_string_storage_ptr_$",
"typeString": "type(string storage pointer)"
},
"typeName": {
"id": 112,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1430:6:0",
"typeDescriptions": {}
}
},
"id": 116,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1430:18:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"src": "1416:32:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"id": 118,
"nodeType": "ExpressionStatement",
"src": "1416:32:0"
}
]
},
"functionSelector": "496d76ff",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "receiveEncodedMsg",
"nameLocation": "642:17:0",
"parameters": {
"id": 63,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 62,
"mutability": "mutable",
"name": "encodedMsg",
"nameLocation": "673:10:0",
"nodeType": "VariableDeclaration",
"scope": 120,
"src": "660:23:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 61,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "660:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "659:25:0"
},
"returnParameters": {
"id": 64,
"nodeType": "ParameterList",
"parameters": [],
"src": "692:0:0"
},
"scope": 152,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"id": 128,
"nodeType": "FunctionDefinition",
"src": "1461:95:0",
"body": {
"id": 127,
"nodeType": "Block",
"src": "1521:35:0",
"statements": [
{
"expression": {
"id": 125,
"name": "current_msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4,
"src": "1538:11:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"functionReturnParameters": 124,
"id": 126,
"nodeType": "Return",
"src": "1531:18:0"
}
]
},
"functionSelector": "ff206cf8",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getCurrentMsg",
"nameLocation": "1470:13:0",
"parameters": {
"id": 121,
"nodeType": "ParameterList",
"parameters": [],
"src": "1483:2:0"
},
"returnParameters": {
"id": 124,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 123,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 128,
"src": "1507:13:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 122,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1507:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "1506:15:0"
},
"scope": 152,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 151,
"nodeType": "FunctionDefinition",
"src": "1691:228:0",
"body": {
"id": 150,
"nodeType": "Block",
"src": "1777:142:0",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 140,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 137,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "1795:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 138,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "1795:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 139,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 16,
"src": "1809:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1795:19:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4f6e6c79206f776e65722063616e207265676973746572206e657720636861696e7321",
"id": 141,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1816:37:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_698f093739048e0d0d04d257a772e914828254033190db3d927fdda8176c85a9",
"typeString": "literal_string \"Only owner can register new chains!\""
},
"value": "Only owner can register new chains!"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_698f093739048e0d0d04d257a772e914828254033190db3d927fdda8176c85a9",
"typeString": "literal_string \"Only owner can register new chains!\""
}
],
"id": 136,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1787:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 142,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1787:67:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 143,
"nodeType": "ExpressionStatement",
"src": "1787:67:0"
},
{
"expression": {
"id": 148,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 144,
"name": "_applicationContracts",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14,
"src": "1864:21:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint16_$_t_bytes32_$",
"typeString": "mapping(uint16 => bytes32)"
}
},
"id": 146,
"indexExpression": {
"id": 145,
"name": "chainId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 131,
"src": "1886:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "1864:30:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 147,
"name": "applicationAddr",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 133,
"src": "1897:15:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"src": "1864:48:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 149,
"nodeType": "ExpressionStatement",
"src": "1864:48:0"
}
]
},
"documentation": {
"id": 129,
"nodeType": "StructuredDocumentation",
"src": "1561:125:0",
"text": "Registers it's sibling applications on other chains as the only ones that can send this instance messages"
},
"functionSelector": "5f327e1c",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "registerApplicationContracts",
"nameLocation": "1700:28:0",
"parameters": {
"id": 134,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 131,
"mutability": "mutable",
"name": "chainId",
"nameLocation": "1736:7:0",
"nodeType": "VariableDeclaration",
"scope": 151,
"src": "1729:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
"typeName": {
"id": 130,
"name": "uint16",
"nodeType": "ElementaryTypeName",
"src": "1729:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 133,
"mutability": "mutable",
"name": "applicationAddr",
"nameLocation": "1753:15:0",
"nodeType": "VariableDeclaration",
"scope": 151,
"src": "1745:23:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 132,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1745:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"src": "1728:41:0"
},
"returnParameters": {
"id": 135,
"nodeType": "ParameterList",
"parameters": [],
"src": "1777:0:0"
},
"scope": 152,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
}
],
"abstract": false,
"baseContracts": [],
"canonicalName": "Messenger",
"contractDependencies": [],
"contractKind": "contract",
"fullyImplemented": true,
"linearizedBaseContracts": [
152
],
"name": "Messenger",
"nameLocation": "107:9:0",
"scope": 153,
"usedErrors": []
}
],
"license": "Unlicense"
},
"id": 0
}