From 9eb4dd0e68d6f551a209ba1654d7e52b878ee244 Mon Sep 17 00:00:00 2001 From: Matt <98158711+BedrockSquirrel@users.noreply.github.com> Date: Wed, 25 Oct 2023 16:03:17 +0100 Subject: [PATCH] Contract changes for storing addresses (#1622) --- .../ManagementContract/ManagementContract.go | 253 +++++++++++++++++- .../src/management/ManagementContract.sol | 21 ++ 2 files changed, 272 insertions(+), 2 deletions(-) diff --git a/contracts/generated/ManagementContract/ManagementContract.go b/contracts/generated/ManagementContract/ManagementContract.go index 1e9a2c1fcb..ff0a490231 100644 --- a/contracts/generated/ManagementContract/ManagementContract.go +++ b/contracts/generated/ManagementContract/ManagementContract.go @@ -53,8 +53,8 @@ type StructsMetaRollup struct { // ManagementContractMetaData contains all meta data concerning the ManagementContract contract. var ManagementContractMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"messageBusAddress\",\"type\":\"address\"}],\"name\":\"LogManagementContractCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"AggregatorID\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"r\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"_rollupData\",\"type\":\"string\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"structStructs.HeaderCrossChainData\",\"name\":\"crossChainData\",\"type\":\"tuple\"}],\"name\":\"AddRollup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"Attested\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GetHostAddresses\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"rollupHash\",\"type\":\"bytes32\"}],\"name\":\"GetRollupByHash\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"AggregatorID\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_aggregatorID\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initSecret\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"_hostAddress\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_genesisAttestation\",\"type\":\"string\"}],\"name\":\"InitializeNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IsWithdrawalAvailable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"requestReport\",\"type\":\"string\"}],\"name\":\"RequestNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attesterID\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requesterID\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"attesterSig\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"responseSecret\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"hostAddress\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"verifyAttester\",\"type\":\"bool\"}],\"name\":\"RespondNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RetrieveAllBridgeFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastBatchSeqNo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageBus\",\"outputs\":[{\"internalType\":\"contractIMessageBus\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052600060055534801561001557600080fd5b5061001f3361009f565b60405161002b906100ef565b604051809103906000f080158015610047573d6000803e3d6000fd5b50600780546001600160a01b0319166001600160a01b039290921691821790556040519081527fbd726cf82ac9c3260b1495107182e336e0654b25c10915648c0cc15b2bb72cbf9060200160405180910390a16100fc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61121d806118bb83390190565b6117b08061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638da5cb5b1161008c578063a52f433c11610066578063a52f433c1461026b578063bbd79e151461027b578063e34fbfc81461028e578063f2fde38b146102a157600080fd5b80638da5cb5b146102205780638fa0d05314610245578063a1a227fa1461025857600080fd5b806359a90071116100c857806359a9007114610160578063715018a614610175578063728109961461017d5780638236a7ba1461018557600080fd5b8063324ff866146100ef57806343348b2f1461010d578063440c953b14610149575b600080fd5b6100f76102b4565b6040516101049190610fd1565b60405180910390f35b61013961011b366004611060565b6001600160a01b031660009081526002602052604090205460ff1690565b6040519015158152602001610104565b61015260055481565b604051908152602001610104565b61017361016e366004611169565b61038d565b005b610173610417565b610173610482565b6101ed610193366004611210565b6040805160608082018352600080835260208084018290529284018190528481526006835283902083519182018452805480835260018201546001600160a01b031693830193909352600201549281019290925290911491565b60408051921515835281516020808501919091528201516001600160a01b03168382015201516060820152608001610104565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610104565b610173610253366004611229565b610554565b60075461022d906001600160a01b031681565b600454610100900460ff16610139565b6101736102893660046112b0565b6105e3565b61017361029c366004611376565b610748565b6101736102af366004611060565b610767565b60606003805480602002602001604051908101604052809291908181526020016000905b828210156103845783829060005260206000200180546102f7906113b8565b80601f0160208091040260200160405190810160405280929190818152602001828054610323906113b8565b80156103705780601f1061034557610100808354040283529160200191610370565b820191906000526020600020905b81548152906001019060200180831161035357829003601f168201915b5050505050815260200190600101906102d8565b50505050905090565b60045460ff161561039d57600080fd5b60048054600160ff1991821681179092556001600160a01b03881660009081526002602090815260408220805490931684179092556003805493840181559052845161040e927fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0191860190610e98565b50505050505050565b6000546001600160a01b031633146104765760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6104806000610849565b565b6000546001600160a01b031633146104dc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161046d565b6007546040517f36d2da900000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906336d2da9090602401600060405180830381600087803b15801561053a57600080fd5b505af115801561054e573d6000803e3d6000fd5b50505050565b600260006105686040870160208801611060565b6001600160a01b0316815260208101919091526040016000205460ff166105d15760405162461bcd60e51b815260206004820152601760248201527f61676772656761746f72206e6f74206174746573746564000000000000000000604482015260640161046d565b6105da846108a6565b61054e816108db565b6001600160a01b03861660009081526002602052604090205460ff168061060957600080fd5b81156106d957600061063f8888868860405160200161062b94939291906113f3565b604051602081830303815290604052610995565b9050600061064d82886109d0565b9050886001600160a01b0316816001600160a01b0316146106d65760405162461bcd60e51b815260206004820152602c60248201527f63616c63756c61746564206164647265737320616e642061747465737465724960448201527f4420646f6e74206d617463680000000000000000000000000000000000000000606482015260840161046d565b50505b6001600160a01b03861660009081526002602090815260408220805460ff19166001908117909155600380549182018155909252845161073e927fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0191860190610e98565b5050505050505050565b336000908152600160205260409020610762908383610f1c565b505050565b6000546001600160a01b031633146107c15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161046d565b6001600160a01b03811661083d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161046d565b61084681610849565b50565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8035600090815260066020526040902081906108c2828261144f565b5050600554604082013511156108465760400135600555565b60006108e7828061149b565b9050905060005b81811015610762576007546001600160a01b0316639730886d610911858061149b565b84818110610921576109216114e5565b905060200281019061093391906114fb565b60016040518363ffffffff1660e01b81526004016109529291906115b4565b600060405180830381600087803b15801561096c57600080fd5b505af1158015610980573d6000803e3d6000fd5b505050508061098e90611681565b90506108ee565b60006109a182516109f4565b826040516020016109b392919061169c565b604051602081830303815290604052805190602001209050919050565b60008060006109df8585610b2e565b915091506109ec81610b9e565b509392505050565b606081610a3457505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610a5e5780610a4881611681565b9150610a579050600a8361170d565b9150610a38565b60008167ffffffffffffffff811115610a7957610a796110c6565b6040519080825280601f01601f191660200182016040528015610aa3576020820181803683370190505b5090505b8415610b2657610ab8600183611721565b9150610ac5600a86611738565b610ad090603061174c565b60f81b818381518110610ae557610ae56114e5565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610b1f600a8661170d565b9450610aa7565b949350505050565b600080825160411415610b655760208301516040840151606085015160001a610b5987828585610d59565b94509450505050610b97565b825160401415610b8f5760208301516040840151610b84868383610e46565b935093505050610b97565b506000905060025b9250929050565b6000816004811115610bb257610bb2611764565b1415610bbb5750565b6001816004811115610bcf57610bcf611764565b1415610c1d5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161046d565b6002816004811115610c3157610c31611764565b1415610c7f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161046d565b6003816004811115610c9357610c93611764565b1415610cec5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161046d565b6004816004811115610d0057610d00611764565b14156108465760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161046d565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610d905750600090506003610e3d565b8460ff16601b14158015610da857508460ff16601c14155b15610db95750600090506004610e3d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610e0d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610e3657600060019250925050610e3d565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831681610e7c60ff86901c601b61174c565b9050610e8a87828885610d59565b935093505050935093915050565b828054610ea4906113b8565b90600052602060002090601f016020900481019282610ec65760008555610f0c565b82601f10610edf57805160ff1916838001178555610f0c565b82800160010185558215610f0c579182015b82811115610f0c578251825591602001919060010190610ef1565b50610f18929150610f90565b5090565b828054610f28906113b8565b90600052602060002090601f016020900481019282610f4a5760008555610f0c565b82601f10610f635782800160ff19823516178555610f0c565b82800160010185558215610f0c579182015b82811115610f0c578235825591602001919060010190610f75565b5b80821115610f185760008155600101610f91565b60005b83811015610fc0578181015183820152602001610fa8565b8381111561054e5750506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561103e57878503603f190184528151805180875261101f818989018a8501610fa5565b601f01601f191695909501860194509285019290850190600101610ff8565b5092979650505050505050565b6001600160a01b038116811461084657600080fd5b60006020828403121561107257600080fd5b813561107d8161104b565b9392505050565b60008083601f84011261109657600080fd5b50813567ffffffffffffffff8111156110ae57600080fd5b602083019150836020828501011115610b9757600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f8301126110ed57600080fd5b813567ffffffffffffffff80821115611108576111086110c6565b604051601f8301601f19908116603f01168101908282118183101715611130576111306110c6565b8160405283815286602085880101111561114957600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806000806080878903121561118257600080fd5b863561118d8161104b565b9550602087013567ffffffffffffffff808211156111aa57600080fd5b6111b68a838b01611084565b909750955060408901359150808211156111cf57600080fd5b6111db8a838b016110dc565b945060608901359150808211156111f157600080fd5b506111fe89828a01611084565b979a9699509497509295939492505050565b60006020828403121561122257600080fd5b5035919050565b60008060008084860360a081121561124057600080fd5b606081121561124e57600080fd5b50849350606085013567ffffffffffffffff8082111561126d57600080fd5b61127988838901611084565b9095509350608087013591508082111561129257600080fd5b508501602081880312156112a557600080fd5b939692955090935050565b60008060008060008060c087890312156112c957600080fd5b86356112d48161104b565b955060208701356112e48161104b565b9450604087013567ffffffffffffffff8082111561130157600080fd5b61130d8a838b016110dc565b9550606089013591508082111561132357600080fd5b61132f8a838b016110dc565b9450608089013591508082111561134557600080fd5b5061135289828a016110dc565b92505060a0870135801515811461136857600080fd5b809150509295509295509295565b6000806020838503121561138957600080fd5b823567ffffffffffffffff8111156113a057600080fd5b6113ac85828601611084565b90969095509350505050565b600181811c908216806113cc57607f821691505b602082108114156113ed57634e487b7160e01b600052602260045260246000fd5b50919050565b60006bffffffffffffffffffffffff19808760601b168352808660601b16601484015250835161142a816028850160208801610fa5565b835190830190611441816028840160208801610fa5565b016028019695505050505050565b813581556001810160208301356114658161104b565b6001600160a01b03811673ffffffffffffffffffffffffffffffffffffffff198354161782555050604082013560028201555050565b6000808335601e198436030181126114b257600080fd5b83018035915067ffffffffffffffff8211156114cd57600080fd5b6020019150600581901b3603821315610b9757600080fd5b634e487b7160e01b600052603260045260246000fd5b6000823560be1983360301811261151157600080fd5b9190910192915050565b803563ffffffff8116811461152f57600080fd5b919050565b6000808335601e1984360301811261154b57600080fd5b830160208101925035905067ffffffffffffffff81111561156b57600080fd5b803603831315610b9757600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803560ff8116811461152f57600080fd5b60408152600083356115c58161104b565b6001600160a01b03166040830152602084013567ffffffffffffffff81168082146115ef57600080fd5b6060840152506116016040850161151b565b63ffffffff1660808301526116186060850161151b565b63ffffffff1660a08301526116306080850185611534565b60c0808501526116456101008501828461157a565b91505061165460a086016115a3565b60ff1660e084015260209092019290925292915050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156116955761169561166b565b5060010190565b7f19457468657265756d205369676e6564204d6573736167653a0a0000000000008152600083516116d481601a850160208801610fa5565b8351908301906116eb81601a840160208801610fa5565b01601a01949350505050565b634e487b7160e01b600052601260045260246000fd5b60008261171c5761171c6116f7565b500490565b6000828210156117335761173361166b565b500390565b600082611747576117476116f7565b500690565b6000821982111561175f5761175f61166b565b500190565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220765a7ef4618209e73eb05a59f3e255a5f44cbbae8b2bc601c9dbeb0bbe6df36464736f6c63430008090033608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61119f8061007e6000396000f3fe6080604052600436106100b55760003560e01c80638da5cb5b1161006957806399a3ad211161004e57806399a3ad2114610270578063b1454caa14610290578063f2fde38b146102c95761012e565b80638da5cb5b146102285780639730886d146102505761012e565b8063346633fb1161009a578063346633fb146101de57806336d2da90146101f3578063715018a6146102135761012e565b80630fcfbd111461017b57806333a88c72146101ae5761012e565b3661012e576040517f346633fb0000000000000000000000000000000000000000000000000000000081523360048201523460248201819052309163346633fb91906044016000604051808303818588803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b5050505050005b60405162461bcd60e51b815260206004820152600b60248201527f756e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b34801561018757600080fd5b5061019b610196366004610ad9565b6102e9565b6040519081526020015b60405180910390f35b3480156101ba57600080fd5b506101ce6101c9366004610ad9565b61039f565b60405190151581526020016101a5565b6101f16101ec366004610b23565b6103f2565b005b3480156101ff57600080fd5b506101f161020e366004610b4f565b6104be565b34801561021f57600080fd5b506101f16105bf565b34801561023457600080fd5b506000546040516001600160a01b0390911681526020016101a5565b34801561025c57600080fd5b506101f161026b366004610b6c565b610625565b34801561027c57600080fd5b506101f161028b366004610b23565b6107c9565b34801561029c57600080fd5b506102b06102ab366004610be2565b6108cb565b60405167ffffffffffffffff90911681526020016101a5565b3480156102d557600080fd5b506101f16102e4366004610b4f565b610924565b600080826040516020016102fd9190610cce565b60408051601f19818403018152918152815160209283012060008181526001909352912054909150806103985760405162461bcd60e51b815260206004820152602160248201527f54686973206d65737361676520776173206e65766572207375626d697474656460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610172565b9392505050565b600080826040516020016103b39190610cce565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915080158015906103ea5750428111155b949350505050565b60003411801561040157508034145b6104735760405162461bcd60e51b815260206004820152603060248201527f417474656d7074696e6720746f2073656e642076616c756520776974686f757460448201527f2070726f766964696e67204574686572000000000000000000000000000000006064820152608401610172565b604080513381526001600160a01b0384166020820152348183015290517ff1365f826a788d6c1a955db0eed5ba8642674219c4771f8c65918617511a15609181900360600190a15050565b6000546001600160a01b031633146105185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610565576040519150601f19603f3d011682016040523d82523d6000602084013e61056a565b606091505b50509050806105bb5760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610172565b5050565b6000546001600160a01b031633146106195760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b6106236000610a06565b565b6000546001600160a01b0316331461067f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b600061068b8242610dce565b90506000836040516020016106a09190610cce565b60408051601f198184030181529181528151602092830120600081815260019093529120549091501561073b5760405162461bcd60e51b815260206004820152602160248201527f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636560448201527f21000000000000000000000000000000000000000000000000000000000000006064820152608401610172565b600081815260016020908152604082208490556002919061075e90870187610b4f565b6001600160a01b03168152602081019190915260400160009081209061078a6080870160608801610de6565b63ffffffff168152602080820192909252604001600090812080546001810182559082529190208591600402016107c18282610fc3565b505050505050565b6000546001600160a01b031633146108235760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610870576040519150601f19603f3d011682016040523d82523d6000602084013e610875565b606091505b50509050806108c65760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610172565b505050565b60006108d633610a63565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef7759373382888888888860405161091397969594939291906110dd565b60405180910390a195945050505050565b6000546001600160a01b0316331461097e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b6001600160a01b0381166109fa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610172565b610a0381610a06565b50565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166000908152600360205260408120805467ffffffffffffffff169160019190610a96838561113d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b600060c08284031215610ad357600080fd5b50919050565b600060208284031215610aeb57600080fd5b813567ffffffffffffffff811115610b0257600080fd5b6103ea84828501610ac1565b6001600160a01b0381168114610a0357600080fd5b60008060408385031215610b3657600080fd5b8235610b4181610b0e565b946020939093013593505050565b600060208284031215610b6157600080fd5b813561039881610b0e565b60008060408385031215610b7f57600080fd5b823567ffffffffffffffff811115610b9657600080fd5b610ba285828601610ac1565b95602094909401359450505050565b63ffffffff81168114610a0357600080fd5b60ff81168114610a0357600080fd5b8035610bdd81610bc3565b919050565b600080600080600060808688031215610bfa57600080fd5b8535610c0581610bb1565b94506020860135610c1581610bb1565b9350604086013567ffffffffffffffff80821115610c3257600080fd5b818801915088601f830112610c4657600080fd5b813581811115610c5557600080fd5b896020828501011115610c6757600080fd5b6020830195508094505050506060860135610c8181610bc3565b809150509295509295909350565b67ffffffffffffffff81168114610a0357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260008235610cdf81610b0e565b6001600160a01b0381166020840152506020830135610cfd81610c8f565b67ffffffffffffffff808216604085015260408501359150610d1e82610bb1565b63ffffffff808316606086015260608601359250610d3b83610bb1565b80831660808601525060808501359150601e19853603018212610d5d57600080fd5b90840190813581811115610d7057600080fd5b803603861315610d7f57600080fd5b60c060a0860152610d9760e086018260208601610ca5565b92505050610da760a08501610bd2565b60ff811660c0850152509392505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610de157610de1610db8565b500190565b600060208284031215610df857600080fd5b813561039881610bb1565b60008135610e1081610bb1565b92915050565b6000808335601e19843603018112610e2d57600080fd5b83018035915067ffffffffffffffff821115610e4857600080fd5b602001915036819003821315610e5d57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610e8e57607f821691505b60208210811415610ad357634e487b7160e01b600052602260045260246000fd5b601f8211156108c657600081815260208120601f850160051c81016020861015610ed65750805b601f850160051c820191505b818110156107c157828155600101610ee2565b67ffffffffffffffff831115610f0d57610f0d610e64565b610f2183610f1b8354610e7a565b83610eaf565b6000601f841160018114610f555760008515610f3d5750838201355b600019600387901b1c1916600186901b178355610faf565b600083815260209020601f19861690835b82811015610f865786850135825560209485019460019092019101610f66565b5086821015610fa35760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60008135610e1081610bc3565b8135610fce81610b0e565b6001600160a01b038116905081548173ffffffffffffffffffffffffffffffffffffffff198216178355602084013561100681610c8f565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b1690507fffffffff000000000000000000000000000000000000000000000000000000008184828516171785556040860135925061106483610bb1565b921760e09190911b90911617815561109c61108160608401610e03565b6001830163ffffffff821663ffffffff198254161781555050565b6110a96080830183610e16565b6110b7818360028601610ef5565b50506105bb6110c860a08401610fb6565b6003830160ff821660ff198254161781555050565b6001600160a01b038816815267ffffffffffffffff87166020820152600063ffffffff808816604084015280871660608401525060c0608083015261112660c083018587610ca5565b905060ff831660a083015298975050505050505050565b600067ffffffffffffffff80831681851680830382111561116057611160610db8565b0194935050505056fea2646970667358221220a54aad59b2972196a793838aab3ac603764d8f10f53f8b069358ac232fba77fe64736f6c63430008090033", + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"ImportantContractAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"messageBusAddress\",\"type\":\"address\"}],\"name\":\"LogManagementContractCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"AggregatorID\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"r\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"_rollupData\",\"type\":\"string\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"structStructs.HeaderCrossChainData\",\"name\":\"crossChainData\",\"type\":\"tuple\"}],\"name\":\"AddRollup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"Attested\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GetHostAddresses\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GetImportantContractKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"rollupHash\",\"type\":\"bytes32\"}],\"name\":\"GetRollupByHash\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"AggregatorID\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_aggregatorID\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initSecret\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"_hostAddress\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_genesisAttestation\",\"type\":\"string\"}],\"name\":\"InitializeNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IsWithdrawalAvailable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"requestReport\",\"type\":\"string\"}],\"name\":\"RequestNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attesterID\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requesterID\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"attesterSig\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"responseSecret\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"hostAddress\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"verifyAttester\",\"type\":\"bool\"}],\"name\":\"RespondNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RetrieveAllBridgeFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"SetImportantContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"importantContractAddresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"importantContractKeys\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastBatchSeqNo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageBus\",\"outputs\":[{\"internalType\":\"contractIMessageBus\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x6080604052600060075534801561001557600080fd5b5061001f3361009f565b60405161002b906100ef565b604051809103906000f080158015610047573d6000803e3d6000fd5b50600980546001600160a01b0319166001600160a01b039290921691821790556040519081527fbd726cf82ac9c3260b1495107182e336e0654b25c10915648c0cc15b2bb72cbf9060200160405180910390a16100fd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61121d8062001d4583390190565b611c38806200010d6000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80638236a7ba116100b2578063a1a227fa11610081578063bbd79e1511610066578063bbd79e151461033a578063e34fbfc81461034d578063f2fde38b1461036057600080fd5b8063a1a227fa14610317578063a52f433c1461032a57600080fd5b80638236a7ba146102385780638da5cb5b146102d35780638fa0d053146102e457806398077e86146102f757600080fd5b8063440c953b116101095780636a30d26c116100ee5780636a30d26c14610220578063715018a614610228578063728109961461023057600080fd5b8063440c953b146101f657806359a900711461020d57600080fd5b806303e72e481461013b578063324ff866146101505780633e60a22f1461016e57806343348b2f146101ba575b600080fd5b61014e6101493660046113fa565b610373565b005b6101586104da565b60405161016591906114a4565b60405180910390f35b6101a261017c366004611506565b80516020818301810180516005825292820191909301209152546001600160a01b031681565b6040516001600160a01b039091168152602001610165565b6101e66101c836600461153b565b6001600160a01b031660009081526002602052604090205460ff1690565b6040519015158152602001610165565b6101ff60075481565b604051908152602001610165565b61014e61021b3660046115a1565b6105b3565b61015861063d565b61014e61070d565b61014e610773565b6102a0610246366004611648565b6040805160608082018352600080835260208084018290529284018190528481526008835283902083519182018452805480835260018201546001600160a01b031693830193909352600201549281019290925290911491565b60408051921515835281516020808501919091528201516001600160a01b03168382015201516060820152608001610165565b6000546001600160a01b03166101a2565b61014e6102f2366004611661565b610845565b61030a610305366004611648565b6108d4565b60405161016591906116e8565b6009546101a2906001600160a01b031681565b600654610100900460ff166101e6565b61014e6103483660046116fb565b610980565b61014e61035b3660046117c1565b610ae5565b61014e61036e36600461153b565b610b04565b6000546001600160a01b031633146103d25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60006001600160a01b03166005836040516103ed9190611803565b908152604051908190036020019020546001600160a01b031614156104515760048054600181018255600091909152825161044f917f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01906020850190611235565b505b806005836040516104629190611803565b90815260405190819003602001812080546001600160a01b039390931673ffffffffffffffffffffffffffffffffffffffff19909316929092179091557f17b2f9f5748931099ffee882b5b64f4a560b5c55da9b4f4e396dae3bb9f98cb5906104ce908490849061181f565b60405180910390a15050565b60606003805480602002602001604051908101604052809291908181526020016000905b828210156105aa57838290600052602060002001805461051d9061184a565b80601f01602080910402602001604051908101604052809291908181526020018280546105499061184a565b80156105965780601f1061056b57610100808354040283529160200191610596565b820191906000526020600020905b81548152906001019060200180831161057957829003601f168201915b5050505050815260200190600101906104fe565b50505050905090565b60065460ff16156105c357600080fd5b60068054600160ff1991821681179092556001600160a01b038816600090815260026020908152604082208054909316841790925560038054938401815590528451610634927fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0191860190611235565b50505050505050565b60606004805480602002602001604051908101604052809291908181526020016000905b828210156105aa5783829060005260206000200180546106809061184a565b80601f01602080910402602001604051908101604052809291908181526020018280546106ac9061184a565b80156106f95780601f106106ce576101008083540402835291602001916106f9565b820191906000526020600020905b8154815290600101906020018083116106dc57829003601f168201915b505050505081526020019060010190610661565b6000546001600160a01b031633146107675760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c9565b6107716000610be6565b565b6000546001600160a01b031633146107cd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c9565b6009546040517f36d2da900000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906336d2da9090602401600060405180830381600087803b15801561082b57600080fd5b505af115801561083f573d6000803e3d6000fd5b50505050565b60026000610859604087016020880161153b565b6001600160a01b0316815260208101919091526040016000205460ff166108c25760405162461bcd60e51b815260206004820152601760248201527f61676772656761746f72206e6f7420617474657374656400000000000000000060448201526064016103c9565b6108cb84610c43565b61083f81610c78565b600481815481106108e457600080fd5b9060005260206000200160009150905080546108ff9061184a565b80601f016020809104026020016040519081016040528092919081815260200182805461092b9061184a565b80156109785780601f1061094d57610100808354040283529160200191610978565b820191906000526020600020905b81548152906001019060200180831161095b57829003601f168201915b505050505081565b6001600160a01b03861660009081526002602052604090205460ff16806109a657600080fd5b8115610a765760006109dc888886886040516020016109c89493929190611885565b604051602081830303815290604052610d32565b905060006109ea8288610d6d565b9050886001600160a01b0316816001600160a01b031614610a735760405162461bcd60e51b815260206004820152602c60248201527f63616c63756c61746564206164647265737320616e642061747465737465724960448201527f4420646f6e74206d61746368000000000000000000000000000000000000000060648201526084016103c9565b50505b6001600160a01b03861660009081526002602090815260408220805460ff191660019081179091556003805491820181559092528451610adb927fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0191860190611235565b5050505050505050565b336000908152600160205260409020610aff9083836112b9565b505050565b6000546001600160a01b03163314610b5e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c9565b6001600160a01b038116610bda5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103c9565b610be381610be6565b50565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803560009081526008602052604090208190610c5f82826118e1565b505060075460408201351115610be35760400135600755565b6000610c84828061192d565b9050905060005b81811015610aff576009546001600160a01b0316639730886d610cae858061192d565b84818110610cbe57610cbe611977565b9050602002810190610cd0919061198d565b60016040518363ffffffff1660e01b8152600401610cef929190611a3c565b600060405180830381600087803b158015610d0957600080fd5b505af1158015610d1d573d6000803e3d6000fd5b5050505080610d2b90611b09565b9050610c8b565b6000610d3e8251610d91565b82604051602001610d50929190611b24565b604051602081830303815290604052805190602001209050919050565b6000806000610d7c8585610ecb565b91509150610d8981610f3b565b509392505050565b606081610dd157505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610dfb5780610de581611b09565b9150610df49050600a83611b95565b9150610dd5565b60008167ffffffffffffffff811115610e1657610e16611342565b6040519080825280601f01601f191660200182016040528015610e40576020820181803683370190505b5090505b8415610ec357610e55600183611ba9565b9150610e62600a86611bc0565b610e6d906030611bd4565b60f81b818381518110610e8257610e82611977565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610ebc600a86611b95565b9450610e44565b949350505050565b600080825160411415610f025760208301516040840151606085015160001a610ef6878285856110f6565b94509450505050610f34565b825160401415610f2c5760208301516040840151610f218683836111e3565b935093505050610f34565b506000905060025b9250929050565b6000816004811115610f4f57610f4f611bec565b1415610f585750565b6001816004811115610f6c57610f6c611bec565b1415610fba5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016103c9565b6002816004811115610fce57610fce611bec565b141561101c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016103c9565b600381600481111561103057611030611bec565b14156110895760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016103c9565b600481600481111561109d5761109d611bec565b1415610be35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016103c9565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561112d57506000905060036111da565b8460ff16601b1415801561114557508460ff16601c14155b1561115657506000905060046111da565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156111aa573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111d3576000600192509250506111da565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83168161121960ff86901c601b611bd4565b9050611227878288856110f6565b935093505050935093915050565b8280546112419061184a565b90600052602060002090601f01602090048101928261126357600085556112a9565b82601f1061127c57805160ff19168380011785556112a9565b828001600101855582156112a9579182015b828111156112a957825182559160200191906001019061128e565b506112b592915061132d565b5090565b8280546112c59061184a565b90600052602060002090601f0160209004810192826112e757600085556112a9565b82601f106113005782800160ff198235161785556112a9565b828001600101855582156112a9579182015b828111156112a9578235825591602001919060010190611312565b5b808211156112b5576000815560010161132e565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261136957600080fd5b813567ffffffffffffffff8082111561138457611384611342565b604051601f8301601f19908116603f011681019082821181831017156113ac576113ac611342565b816040528381528660208588010111156113c557600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b0381168114610be357600080fd5b6000806040838503121561140d57600080fd5b823567ffffffffffffffff81111561142457600080fd5b61143085828601611358565b9250506020830135611441816113e5565b809150509250929050565b60005b8381101561146757818101518382015260200161144f565b8381111561083f5750506000910152565b6000815180845261149081602086016020860161144c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156114f957603f198886030184526114e7858351611478565b945092850192908501906001016114cb565b5092979650505050505050565b60006020828403121561151857600080fd5b813567ffffffffffffffff81111561152f57600080fd5b610ec384828501611358565b60006020828403121561154d57600080fd5b8135611558816113e5565b9392505050565b60008083601f84011261157157600080fd5b50813567ffffffffffffffff81111561158957600080fd5b602083019150836020828501011115610f3457600080fd5b600080600080600080608087890312156115ba57600080fd5b86356115c5816113e5565b9550602087013567ffffffffffffffff808211156115e257600080fd5b6115ee8a838b0161155f565b9097509550604089013591508082111561160757600080fd5b6116138a838b01611358565b9450606089013591508082111561162957600080fd5b5061163689828a0161155f565b979a9699509497509295939492505050565b60006020828403121561165a57600080fd5b5035919050565b60008060008084860360a081121561167857600080fd5b606081121561168657600080fd5b50849350606085013567ffffffffffffffff808211156116a557600080fd5b6116b18883890161155f565b909550935060808701359150808211156116ca57600080fd5b508501602081880312156116dd57600080fd5b939692955090935050565b6020815260006115586020830184611478565b60008060008060008060c0878903121561171457600080fd5b863561171f816113e5565b9550602087013561172f816113e5565b9450604087013567ffffffffffffffff8082111561174c57600080fd5b6117588a838b01611358565b9550606089013591508082111561176e57600080fd5b61177a8a838b01611358565b9450608089013591508082111561179057600080fd5b5061179d89828a01611358565b92505060a087013580151581146117b357600080fd5b809150509295509295509295565b600080602083850312156117d457600080fd5b823567ffffffffffffffff8111156117eb57600080fd5b6117f78582860161155f565b90969095509350505050565b6000825161181581846020870161144c565b9190910192915050565b6040815260006118326040830185611478565b90506001600160a01b03831660208301529392505050565b600181811c9082168061185e57607f821691505b6020821081141561187f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006bffffffffffffffffffffffff19808760601b168352808660601b1660148401525083516118bc81602885016020880161144c565b8351908301906118d381602884016020880161144c565b016028019695505050505050565b813581556001810160208301356118f7816113e5565b6001600160a01b03811673ffffffffffffffffffffffffffffffffffffffff198354161782555050604082013560028201555050565b6000808335601e1984360301811261194457600080fd5b83018035915067ffffffffffffffff82111561195f57600080fd5b6020019150600581901b3603821315610f3457600080fd5b634e487b7160e01b600052603260045260246000fd5b6000823560be1983360301811261181557600080fd5b803563ffffffff811681146119b757600080fd5b919050565b6000808335601e198436030181126119d357600080fd5b830160208101925035905067ffffffffffffffff8111156119f357600080fd5b803603831315610f3457600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803560ff811681146119b757600080fd5b6040815260008335611a4d816113e5565b6001600160a01b03166040830152602084013567ffffffffffffffff8116808214611a7757600080fd5b606084015250611a89604085016119a3565b63ffffffff166080830152611aa0606085016119a3565b63ffffffff1660a0830152611ab860808501856119bc565b60c080850152611acd61010085018284611a02565b915050611adc60a08601611a2b565b60ff1660e084015260209092019290925292915050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415611b1d57611b1d611af3565b5060010190565b7f19457468657265756d205369676e6564204d6573736167653a0a000000000000815260008351611b5c81601a85016020880161144c565b835190830190611b7381601a84016020880161144c565b01601a01949350505050565b634e487b7160e01b600052601260045260246000fd5b600082611ba457611ba4611b7f565b500490565b600082821015611bbb57611bbb611af3565b500390565b600082611bcf57611bcf611b7f565b500690565b60008219821115611be757611be7611af3565b500190565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220941db3413f38d3a6628646ec43968a2fe657e553082ef52e5e2986c8c7c4ce1c64736f6c63430008090033608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61119f8061007e6000396000f3fe6080604052600436106100b55760003560e01c80638da5cb5b1161006957806399a3ad211161004e57806399a3ad2114610270578063b1454caa14610290578063f2fde38b146102c95761012e565b80638da5cb5b146102285780639730886d146102505761012e565b8063346633fb1161009a578063346633fb146101de57806336d2da90146101f3578063715018a6146102135761012e565b80630fcfbd111461017b57806333a88c72146101ae5761012e565b3661012e576040517f346633fb0000000000000000000000000000000000000000000000000000000081523360048201523460248201819052309163346633fb91906044016000604051808303818588803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b5050505050005b60405162461bcd60e51b815260206004820152600b60248201527f756e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b34801561018757600080fd5b5061019b610196366004610ad9565b6102e9565b6040519081526020015b60405180910390f35b3480156101ba57600080fd5b506101ce6101c9366004610ad9565b61039f565b60405190151581526020016101a5565b6101f16101ec366004610b23565b6103f2565b005b3480156101ff57600080fd5b506101f161020e366004610b4f565b6104be565b34801561021f57600080fd5b506101f16105bf565b34801561023457600080fd5b506000546040516001600160a01b0390911681526020016101a5565b34801561025c57600080fd5b506101f161026b366004610b6c565b610625565b34801561027c57600080fd5b506101f161028b366004610b23565b6107c9565b34801561029c57600080fd5b506102b06102ab366004610be2565b6108cb565b60405167ffffffffffffffff90911681526020016101a5565b3480156102d557600080fd5b506101f16102e4366004610b4f565b610924565b600080826040516020016102fd9190610cce565b60408051601f19818403018152918152815160209283012060008181526001909352912054909150806103985760405162461bcd60e51b815260206004820152602160248201527f54686973206d65737361676520776173206e65766572207375626d697474656460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610172565b9392505050565b600080826040516020016103b39190610cce565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915080158015906103ea5750428111155b949350505050565b60003411801561040157508034145b6104735760405162461bcd60e51b815260206004820152603060248201527f417474656d7074696e6720746f2073656e642076616c756520776974686f757460448201527f2070726f766964696e67204574686572000000000000000000000000000000006064820152608401610172565b604080513381526001600160a01b0384166020820152348183015290517ff1365f826a788d6c1a955db0eed5ba8642674219c4771f8c65918617511a15609181900360600190a15050565b6000546001600160a01b031633146105185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610565576040519150601f19603f3d011682016040523d82523d6000602084013e61056a565b606091505b50509050806105bb5760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610172565b5050565b6000546001600160a01b031633146106195760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b6106236000610a06565b565b6000546001600160a01b0316331461067f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b600061068b8242610dce565b90506000836040516020016106a09190610cce565b60408051601f198184030181529181528151602092830120600081815260019093529120549091501561073b5760405162461bcd60e51b815260206004820152602160248201527f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636560448201527f21000000000000000000000000000000000000000000000000000000000000006064820152608401610172565b600081815260016020908152604082208490556002919061075e90870187610b4f565b6001600160a01b03168152602081019190915260400160009081209061078a6080870160608801610de6565b63ffffffff168152602080820192909252604001600090812080546001810182559082529190208591600402016107c18282610fc3565b505050505050565b6000546001600160a01b031633146108235760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610870576040519150601f19603f3d011682016040523d82523d6000602084013e610875565b606091505b50509050806108c65760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610172565b505050565b60006108d633610a63565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef7759373382888888888860405161091397969594939291906110dd565b60405180910390a195945050505050565b6000546001600160a01b0316331461097e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b6001600160a01b0381166109fa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610172565b610a0381610a06565b50565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166000908152600360205260408120805467ffffffffffffffff169160019190610a96838561113d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b600060c08284031215610ad357600080fd5b50919050565b600060208284031215610aeb57600080fd5b813567ffffffffffffffff811115610b0257600080fd5b6103ea84828501610ac1565b6001600160a01b0381168114610a0357600080fd5b60008060408385031215610b3657600080fd5b8235610b4181610b0e565b946020939093013593505050565b600060208284031215610b6157600080fd5b813561039881610b0e565b60008060408385031215610b7f57600080fd5b823567ffffffffffffffff811115610b9657600080fd5b610ba285828601610ac1565b95602094909401359450505050565b63ffffffff81168114610a0357600080fd5b60ff81168114610a0357600080fd5b8035610bdd81610bc3565b919050565b600080600080600060808688031215610bfa57600080fd5b8535610c0581610bb1565b94506020860135610c1581610bb1565b9350604086013567ffffffffffffffff80821115610c3257600080fd5b818801915088601f830112610c4657600080fd5b813581811115610c5557600080fd5b896020828501011115610c6757600080fd5b6020830195508094505050506060860135610c8181610bc3565b809150509295509295909350565b67ffffffffffffffff81168114610a0357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260008235610cdf81610b0e565b6001600160a01b0381166020840152506020830135610cfd81610c8f565b67ffffffffffffffff808216604085015260408501359150610d1e82610bb1565b63ffffffff808316606086015260608601359250610d3b83610bb1565b80831660808601525060808501359150601e19853603018212610d5d57600080fd5b90840190813581811115610d7057600080fd5b803603861315610d7f57600080fd5b60c060a0860152610d9760e086018260208601610ca5565b92505050610da760a08501610bd2565b60ff811660c0850152509392505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610de157610de1610db8565b500190565b600060208284031215610df857600080fd5b813561039881610bb1565b60008135610e1081610bb1565b92915050565b6000808335601e19843603018112610e2d57600080fd5b83018035915067ffffffffffffffff821115610e4857600080fd5b602001915036819003821315610e5d57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610e8e57607f821691505b60208210811415610ad357634e487b7160e01b600052602260045260246000fd5b601f8211156108c657600081815260208120601f850160051c81016020861015610ed65750805b601f850160051c820191505b818110156107c157828155600101610ee2565b67ffffffffffffffff831115610f0d57610f0d610e64565b610f2183610f1b8354610e7a565b83610eaf565b6000601f841160018114610f555760008515610f3d5750838201355b600019600387901b1c1916600186901b178355610faf565b600083815260209020601f19861690835b82811015610f865786850135825560209485019460019092019101610f66565b5086821015610fa35760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60008135610e1081610bc3565b8135610fce81610b0e565b6001600160a01b038116905081548173ffffffffffffffffffffffffffffffffffffffff198216178355602084013561100681610c8f565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b1690507fffffffff000000000000000000000000000000000000000000000000000000008184828516171785556040860135925061106483610bb1565b921760e09190911b90911617815561109c61108160608401610e03565b6001830163ffffffff821663ffffffff198254161781555050565b6110a96080830183610e16565b6110b7818360028601610ef5565b50506105bb6110c860a08401610fb6565b6003830160ff821660ff198254161781555050565b6001600160a01b038816815267ffffffffffffffff87166020820152600063ffffffff808816604084015280871660608401525060c0608083015261112660c083018587610ca5565b905060ff831660a083015298975050505050505050565b600067ffffffffffffffff80831681851680830382111561116057611160610db8565b0194935050505056fea2646970667358221220a54aad59b2972196a793838aab3ac603764d8f10f53f8b069358ac232fba77fe64736f6c63430008090033", } // ManagementContractABI is the input ABI used to generate the binding from. @@ -286,6 +286,37 @@ func (_ManagementContract *ManagementContractCallerSession) GetHostAddresses() ( return _ManagementContract.Contract.GetHostAddresses(&_ManagementContract.CallOpts) } +// GetImportantContractKeys is a free data retrieval call binding the contract method 0x6a30d26c. +// +// Solidity: function GetImportantContractKeys() view returns(string[]) +func (_ManagementContract *ManagementContractCaller) GetImportantContractKeys(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _ManagementContract.contract.Call(opts, &out, "GetImportantContractKeys") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// GetImportantContractKeys is a free data retrieval call binding the contract method 0x6a30d26c. +// +// Solidity: function GetImportantContractKeys() view returns(string[]) +func (_ManagementContract *ManagementContractSession) GetImportantContractKeys() ([]string, error) { + return _ManagementContract.Contract.GetImportantContractKeys(&_ManagementContract.CallOpts) +} + +// GetImportantContractKeys is a free data retrieval call binding the contract method 0x6a30d26c. +// +// Solidity: function GetImportantContractKeys() view returns(string[]) +func (_ManagementContract *ManagementContractCallerSession) GetImportantContractKeys() ([]string, error) { + return _ManagementContract.Contract.GetImportantContractKeys(&_ManagementContract.CallOpts) +} + // GetRollupByHash is a free data retrieval call binding the contract method 0x8236a7ba. // // Solidity: function GetRollupByHash(bytes32 rollupHash) view returns(bool, (bytes32,address,uint256)) @@ -349,6 +380,68 @@ func (_ManagementContract *ManagementContractCallerSession) IsWithdrawalAvailabl return _ManagementContract.Contract.IsWithdrawalAvailable(&_ManagementContract.CallOpts) } +// ImportantContractAddresses is a free data retrieval call binding the contract method 0x3e60a22f. +// +// Solidity: function importantContractAddresses(string ) view returns(address) +func (_ManagementContract *ManagementContractCaller) ImportantContractAddresses(opts *bind.CallOpts, arg0 string) (common.Address, error) { + var out []interface{} + err := _ManagementContract.contract.Call(opts, &out, "importantContractAddresses", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ImportantContractAddresses is a free data retrieval call binding the contract method 0x3e60a22f. +// +// Solidity: function importantContractAddresses(string ) view returns(address) +func (_ManagementContract *ManagementContractSession) ImportantContractAddresses(arg0 string) (common.Address, error) { + return _ManagementContract.Contract.ImportantContractAddresses(&_ManagementContract.CallOpts, arg0) +} + +// ImportantContractAddresses is a free data retrieval call binding the contract method 0x3e60a22f. +// +// Solidity: function importantContractAddresses(string ) view returns(address) +func (_ManagementContract *ManagementContractCallerSession) ImportantContractAddresses(arg0 string) (common.Address, error) { + return _ManagementContract.Contract.ImportantContractAddresses(&_ManagementContract.CallOpts, arg0) +} + +// ImportantContractKeys is a free data retrieval call binding the contract method 0x98077e86. +// +// Solidity: function importantContractKeys(uint256 ) view returns(string) +func (_ManagementContract *ManagementContractCaller) ImportantContractKeys(opts *bind.CallOpts, arg0 *big.Int) (string, error) { + var out []interface{} + err := _ManagementContract.contract.Call(opts, &out, "importantContractKeys", arg0) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ImportantContractKeys is a free data retrieval call binding the contract method 0x98077e86. +// +// Solidity: function importantContractKeys(uint256 ) view returns(string) +func (_ManagementContract *ManagementContractSession) ImportantContractKeys(arg0 *big.Int) (string, error) { + return _ManagementContract.Contract.ImportantContractKeys(&_ManagementContract.CallOpts, arg0) +} + +// ImportantContractKeys is a free data retrieval call binding the contract method 0x98077e86. +// +// Solidity: function importantContractKeys(uint256 ) view returns(string) +func (_ManagementContract *ManagementContractCallerSession) ImportantContractKeys(arg0 *big.Int) (string, error) { + return _ManagementContract.Contract.ImportantContractKeys(&_ManagementContract.CallOpts, arg0) +} + // LastBatchSeqNo is a free data retrieval call binding the contract method 0x440c953b. // // Solidity: function lastBatchSeqNo() view returns(uint256) @@ -547,6 +640,27 @@ func (_ManagementContract *ManagementContractTransactorSession) RetrieveAllBridg return _ManagementContract.Contract.RetrieveAllBridgeFunds(&_ManagementContract.TransactOpts) } +// SetImportantContractAddress is a paid mutator transaction binding the contract method 0x03e72e48. +// +// Solidity: function SetImportantContractAddress(string key, address newAddress) returns() +func (_ManagementContract *ManagementContractTransactor) SetImportantContractAddress(opts *bind.TransactOpts, key string, newAddress common.Address) (*types.Transaction, error) { + return _ManagementContract.contract.Transact(opts, "SetImportantContractAddress", key, newAddress) +} + +// SetImportantContractAddress is a paid mutator transaction binding the contract method 0x03e72e48. +// +// Solidity: function SetImportantContractAddress(string key, address newAddress) returns() +func (_ManagementContract *ManagementContractSession) SetImportantContractAddress(key string, newAddress common.Address) (*types.Transaction, error) { + return _ManagementContract.Contract.SetImportantContractAddress(&_ManagementContract.TransactOpts, key, newAddress) +} + +// SetImportantContractAddress is a paid mutator transaction binding the contract method 0x03e72e48. +// +// Solidity: function SetImportantContractAddress(string key, address newAddress) returns() +func (_ManagementContract *ManagementContractTransactorSession) SetImportantContractAddress(key string, newAddress common.Address) (*types.Transaction, error) { + return _ManagementContract.Contract.SetImportantContractAddress(&_ManagementContract.TransactOpts, key, newAddress) +} + // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // // Solidity: function renounceOwnership() returns() @@ -589,6 +703,141 @@ func (_ManagementContract *ManagementContractTransactorSession) TransferOwnershi return _ManagementContract.Contract.TransferOwnership(&_ManagementContract.TransactOpts, newOwner) } +// ManagementContractImportantContractAddressUpdatedIterator is returned from FilterImportantContractAddressUpdated and is used to iterate over the raw logs and unpacked data for ImportantContractAddressUpdated events raised by the ManagementContract contract. +type ManagementContractImportantContractAddressUpdatedIterator struct { + Event *ManagementContractImportantContractAddressUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ManagementContractImportantContractAddressUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ManagementContractImportantContractAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ManagementContractImportantContractAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ManagementContractImportantContractAddressUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ManagementContractImportantContractAddressUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ManagementContractImportantContractAddressUpdated represents a ImportantContractAddressUpdated event raised by the ManagementContract contract. +type ManagementContractImportantContractAddressUpdated struct { + Key string + NewAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterImportantContractAddressUpdated is a free log retrieval operation binding the contract event 0x17b2f9f5748931099ffee882b5b64f4a560b5c55da9b4f4e396dae3bb9f98cb5. +// +// Solidity: event ImportantContractAddressUpdated(string key, address newAddress) +func (_ManagementContract *ManagementContractFilterer) FilterImportantContractAddressUpdated(opts *bind.FilterOpts) (*ManagementContractImportantContractAddressUpdatedIterator, error) { + + logs, sub, err := _ManagementContract.contract.FilterLogs(opts, "ImportantContractAddressUpdated") + if err != nil { + return nil, err + } + return &ManagementContractImportantContractAddressUpdatedIterator{contract: _ManagementContract.contract, event: "ImportantContractAddressUpdated", logs: logs, sub: sub}, nil +} + +// WatchImportantContractAddressUpdated is a free log subscription operation binding the contract event 0x17b2f9f5748931099ffee882b5b64f4a560b5c55da9b4f4e396dae3bb9f98cb5. +// +// Solidity: event ImportantContractAddressUpdated(string key, address newAddress) +func (_ManagementContract *ManagementContractFilterer) WatchImportantContractAddressUpdated(opts *bind.WatchOpts, sink chan<- *ManagementContractImportantContractAddressUpdated) (event.Subscription, error) { + + logs, sub, err := _ManagementContract.contract.WatchLogs(opts, "ImportantContractAddressUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ManagementContractImportantContractAddressUpdated) + if err := _ManagementContract.contract.UnpackLog(event, "ImportantContractAddressUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseImportantContractAddressUpdated is a log parse operation binding the contract event 0x17b2f9f5748931099ffee882b5b64f4a560b5c55da9b4f4e396dae3bb9f98cb5. +// +// Solidity: event ImportantContractAddressUpdated(string key, address newAddress) +func (_ManagementContract *ManagementContractFilterer) ParseImportantContractAddressUpdated(log types.Log) (*ManagementContractImportantContractAddressUpdated, error) { + event := new(ManagementContractImportantContractAddressUpdated) + if err := _ManagementContract.contract.UnpackLog(event, "ImportantContractAddressUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ManagementContractLogManagementContractCreatedIterator is returned from FilterLogManagementContractCreated and is used to iterate over the raw logs and unpacked data for LogManagementContractCreated events raised by the ManagementContract contract. type ManagementContractLogManagementContractCreatedIterator struct { Event *ManagementContractLogManagementContractCreated // Event containing the contract specifics and raw log diff --git a/contracts/src/management/ManagementContract.sol b/contracts/src/management/ManagementContract.sol index d6991263ea..c8d5ebdc6b 100644 --- a/contracts/src/management/ManagementContract.sol +++ b/contracts/src/management/ManagementContract.sol @@ -10,12 +10,20 @@ import * as MessageBus from "../messaging/MessageBus.sol"; contract ManagementContract is Ownable { event LogManagementContractCreated(address messageBusAddress); + // Event to log changes to important contract addresses + event ImportantContractAddressUpdated(string key, address newAddress); mapping(address => string) private attestationRequests; mapping(address => bool) private attested; // TODO - Revisit the decision to store the host addresses in the smart contract. string[] private hostAddresses; // The addresses of all the Obscuro hosts on the network. + // In the near-term it is convenient to have an accessible source of truth for important contract addresses + // TODO - this is probably not appropriate long term but currently useful for testnets. Look to remove. + // We store the keys as well as the mapping for the key-value store for important contract addresses for convenience + string[] public importantContractKeys; + mapping (string => address) public importantContractAddresses; + // networkSecretNotInitialized marks if the network secret has been initialized bool private networkSecretInitialized ; @@ -133,4 +141,17 @@ contract ManagementContract is Ownable { function RetrieveAllBridgeFunds() public onlyOwner { messageBus.retrieveAllFunds(msg.sender); } + + // Function to set an important contract's address, only callable by owner + function SetImportantContractAddress(string memory key, address newAddress) public onlyOwner { + if (importantContractAddresses[key] == address(0)) { + importantContractKeys.push(key); + } + importantContractAddresses[key] = newAddress; + emit ImportantContractAddressUpdated(key, newAddress); + } + + function GetImportantContractKeys() public view returns(string[] memory) { + return importantContractKeys; + } }