{
    "contractName": "SayMessageContract",
    "abi": [
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "messageHash",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "string",
                    "name": "message",
                    "type": "string"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "nonce",
                    "type": "uint256"
                }
            ],
            "name": "SayMessageEvent",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "getNonce",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "message",
                    "type": "string"
                }
            ],
            "name": "sayMessage",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"SayMessageEvent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"sayMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/andre/Documents/GitHub/cacti/packages/cactus-plugin-ledger-connector-ethereum/src/test/solidity/hello-world-contract-with-event-emission/HelloWorldWithEvent.sol\":\"SayMessageContract\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"/Users/andre/Documents/GitHub/cacti/packages/cactus-plugin-ledger-connector-ethereum/src/test/solidity/hello-world-contract-with-event-emission/HelloWorldWithEvent.sol\":{\"keccak256\":\"0xb4bd0a882f27afac7bb61d91a7775b484132ebeb2935f344987167a76a9a3da0\",\"urls\":[\"bzz-raw://77b056dd5d8ab4a36393243dee4e16ebb2bc4f95393d6a9ee9c113e7f9987c23\",\"dweb:/ipfs/QmTX3YdLqGGbwjYTmCbDYmquoLwHUzVmA5hUrTKea82sx1\"]}},\"version\":1}",
    "bytecode": "608060405234156100105760006000fd5b60c0604052600d6080527f4361707461696e4361637475730000000000000000000000000000000000000060a0526000805460027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60018316156101000201821604905081601f8211801561008b57610088846100cd565b91505b80156100a4576100a36020601f8501048301836100de565b5b5050506100b4600d60a0516100fc565b8155806001556101eb8061013783398082f35050610135565b60008181526020812090505b919050565b5b818110156100f757600081555b6001810190506100df565b5b5050565b6000826002027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff846008021c1983161790505b92915050565bfe60806040526004361015156100ea576000803560e01c63312d729681146100305763d087d28881146100b5576100e7565b341561003a578182fd5b60206003193601121561004b578182fd5b60043567ffffffffffffffff80821115610063578384fd5b3660238301121515610073578384fd5b816004013581811115610084578485fd5b366024828501011115610095578485fd5b6100a28160248501610147565b505050816100af8361011c565bf36100e7565b34156100bf578182fd5b6100ca3660046100f4565b6001546100d68361011c565b806100e1838361010a565b0381f350505b50505b60006000fd6101ea565b600081830312156101055760006000fd5b5b5050565b60006020820190508282525b92915050565b6000604051905081810181811067ffffffffffffffff8211171561013c57fe5b80604052505b919050565b60015460011981111561015657fe5b600181019050806001556040516020810184848237848201600060208201528281038352601f1980603f8301169150816040528351832093506040825286604083015286866060840137600060608884010152846020830152837ff5c26b1cc9a84739dbd60b161a529323ec36874573a84b9ffbcadb0ad9e20c8860608484601f8c01168601030184a250505050505b5050565b",
    "deployedBytecode": "",
    "sourceMap": "",
    "deployedSourceMap": "",
    "sourcePath": "/Users/andre/Documents/GitHub/cacti/packages/cactus-plugin-ledger-connector-ethereum/src/test/solidity/hello-world-contract-with-event-emission/HelloWorldWithEvent.sol",
    "compiler": {
        "name": "solc",
        "version": "0.7.6+commit.7338295f"
    },
    "ast": {
        "absolutePath": "/Users/andre/Documents/GitHub/cacti/packages/cactus-plugin-ledger-connector-ethereum/src/test/solidity/hello-world-contract-with-event-emission/HelloWorldWithEvent.sol",
        "exportedSymbols": {
            "SayMessageContract": [
                52
            ]
        },
        "id": 53,
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 1,
                "literals": [
                    "solidity",
                    ">=",
                    "0.7",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "413:24:0"
            },
            {
                "abstract": false,
                "baseContracts": [],
                "contractDependencies": [],
                "contractKind": "contract",
                "fullyImplemented": true,
                "id": 52,
                "linearizedBaseContracts": [
                    52
                ],
                "name": "SayMessageContract",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "constant": false,
                        "id": 4,
                        "mutability": "mutable",
                        "name": "name",
                        "nodeType": "VariableDeclaration",
                        "scope": 52,
                        "src": "471:37:0",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string"
                        },
                        "typeName": {
                            "id": 2,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "471:6:0",
                            "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                            }
                        },
                        "value": {
                            "hexValue": "4361707461696e436163747573",
                            "id": 3,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "493:15:0",
                            "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_bdd2f21877c99489ddcc32737686677f40d460368c7982ce22ce4f72b41b0312",
                                "typeString": "literal_string \"CaptainCactus\""
                            },
                            "value": "CaptainCactus"
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 7,
                        "mutability": "mutable",
                        "name": "nonce",
                        "nodeType": "VariableDeclaration",
                        "scope": 52,
                        "src": "513:25:0",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 5,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "513:7:0",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "value": {
                            "hexValue": "30",
                            "id": 6,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "537:1:0",
                            "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                            },
                            "value": "0"
                        },
                        "visibility": "private"
                    },
                    {
                        "anonymous": false,
                        "id": 15,
                        "name": "SayMessageEvent",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 14,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "messageHash",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 15,
                                    "src": "570:27:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "570:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 11,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "message",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 15,
                                    "src": "603:14:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 10,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "603:6:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 13,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "nonce",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 15,
                                    "src": "623:13:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "623:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "564:76:0"
                        },
                        "src": "543:98:0"
                    },
                    {
                        "body": {
                            "id": 22,
                            "nodeType": "Block",
                            "src": "695:23:0",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 20,
                                        "name": "nonce",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7,
                                        "src": "708:5:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 19,
                                    "id": 21,
                                    "nodeType": "Return",
                                    "src": "701:12:0"
                                }
                            ]
                        },
                        "functionSelector": "d087d288",
                        "id": 23,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getNonce",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 16,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "662:2:0"
                        },
                        "returnParameters": {
                            "id": 19,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 18,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 23,
                                    "src": "686:7:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 17,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "686:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "685:9:0"
                        },
                        "scope": 52,
                        "src": "645:73:0",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 30,
                            "nodeType": "Block",
                            "src": "757:21:0",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 28,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 26,
                                            "name": "nonce",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7,
                                            "src": "763:5:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "+=",
                                        "rightHandSide": {
                                            "hexValue": "31",
                                            "id": 27,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "772:1:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                        },
                                        "src": "763:10:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 29,
                                    "nodeType": "ExpressionStatement",
                                    "src": "763:10:0"
                                }
                            ]
                        },
                        "id": 31,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "incrementNonce",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 24,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "745:2:0"
                        },
                        "returnParameters": {
                            "id": 25,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "757:0:0"
                        },
                        "scope": 52,
                        "src": "722:56:0",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 50,
                            "nodeType": "Block",
                            "src": "834:107:0",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "id": 36,
                                            "name": "incrementNonce",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31,
                                            "src": "840:14:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                "typeString": "function ()"
                                            }
                                        },
                                        "id": 37,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "840:16:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 38,
                                    "nodeType": "ExpressionStatement",
                                    "src": "840:16:0"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 43,
                                                                "name": "message",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 33,
                                                                "src": "910:7:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_string_calldata_ptr",
                                                                    "typeString": "string calldata"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_string_calldata_ptr",
                                                                    "typeString": "string calldata"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 41,
                                                                "name": "abi",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4294967295,
                                                                "src": "893:3:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_abi",
                                                                    "typeString": "abi"
                                                                }
                                                            },
                                                            "id": 42,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "memberName": "encodePacked",
                                                            "nodeType": "MemberAccess",
                                                            "src": "893:16:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                "typeString": "function () pure returns (bytes memory)"
                                                            }
                                                        },
                                                        "id": 44,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "893:25:0",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes memory"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes memory"
                                                        }
                                                    ],
                                                    "id": 40,
                                                    "name": "keccak256",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967288,
                                                    "src": "883:9:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                                    }
                                                },
                                                "id": 45,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "883:36:0",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            {
                                                "id": 46,
                                                "name": "message",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 33,
                                                "src": "921:7:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_calldata_ptr",
                                                    "typeString": "string calldata"
                                                }
                                            },
                                            {
                                                "id": 47,
                                                "name": "nonce",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7,
                                                "src": "930:5:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                {
                                                    "typeIdentifier": "t_string_calldata_ptr",
                                                    "typeString": "string calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 39,
                                            "name": "SayMessageEvent",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15,
                                            "src": "867:15:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                                                "typeString": "function (bytes32,string memory,uint256)"
                                            }
                                        },
                                        "id": 48,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "867:69:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 49,
                                    "nodeType": "EmitStatement",
                                    "src": "862:74:0"
                                }
                            ]
                        },
                        "functionSelector": "312d7296",
                        "id": 51,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "sayMessage",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 34,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 33,
                                    "mutability": "mutable",
                                    "name": "message",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 51,
                                    "src": "802:23:0",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_calldata_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 32,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "802:6:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "801:25:0"
                        },
                        "returnParameters": {
                            "id": 35,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "834:0:0"
                        },
                        "scope": 52,
                        "src": "782:159:0",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    }
                ],
                "scope": 53,
                "src": "439:504:0"
            }
        ],
        "src": "413:531:0"
    },
    "functionHashes": {
        "getNonce()": "d087d288",
        "sayMessage(string)": "312d7296"
    }
}
