From 6b67ba70d834cb2df504f61f15c3f94f119f2e53 Mon Sep 17 00:00:00 2001 From: Austin Abell Date: Wed, 21 Aug 2024 13:41:45 -0700 Subject: [PATCH] update framed read to avoid r0 deserialization --- contracts/artifacts/Blobstream0.json | 12 ++++++------ contracts/src/ImageID.sol | 2 +- core/src/lib.rs | 2 +- light-client-guest/guest/src/main.rs | 3 ++- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/contracts/artifacts/Blobstream0.json b/contracts/artifacts/Blobstream0.json index 73ae2e7..7534568 100644 --- a/contracts/artifacts/Blobstream0.json +++ b/contracts/artifacts/Blobstream0.json @@ -409,12 +409,12 @@ ], "bytecode": { "linkReferences": {}, - "object": "0x60806040527f55889a72c3b7bb69f3e1c5aef4668e945b5b83b9e09fc736745d90587b4a164b6003553480156200003557600080fd5b506040516200131138038062001311833981016040819052620000589162000167565b836001600160a01b0381166200008857604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200009381620000e3565b50600280546001600160a01b0319166001600160a01b039490941693909317909255600655600580546001600160401b0319166001600160401b03909216919091179055506001600455620001ce565b600180546001600160a01b0319169055620000fe8162000101565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000fe57600080fd5b600080600080608085870312156200017e57600080fd5b84516200018b8162000151565b60208601519094506200019e8162000151565b6040860151606087015191945092506001600160401b0381168114620001c357600080fd5b939692955090935050565b61113380620001de6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063e405bbc311610066578063e405bbc3146101da578063e6679c2614610205578063ef3f7dd514610218578063f2fde38b1461022157600080fd5b80638da5cb5b1461019c578063a7e47629146101ad578063ce0bb7e4146101c0578063e30c3978146101c957600080fd5b80636c4f6ba9116100d35780636c4f6ba914610162578063715018a61461017957806379ba5097146101815780638a9fbdec1461018957600080fd5b80631f3302a9146100fa57806323a4608b146101225780632b7ac3f314610137575b600080fd5b61010d610108366004610d53565b610234565b60405190151581526020015b60405180910390f35b610135610130366004610e90565b6102a1565b005b60025461014a906001600160a01b031681565b6040516001600160a01b039091168152602001610119565b61016b60065481565b604051908152602001610119565b6101356102d1565b6101356102e5565b610135610197366004610ebc565b61032e565b6000546001600160a01b031661014a565b6101356101bb366004610f78565b610537565b61016b60045481565b6001546001600160a01b031661014a565b6005546101ed906001600160401b031681565b6040516001600160401b039091168152602001610119565b610135610213366004610fa6565b610544565b61016b60035481565b61013561022f366004610fa6565b61056e565b600083158061024557506004548410155b156102525750600061029a565b600084815260076020908152604080832054815187518185015292870151838301528151808403830181526060909301909152919061029490839086906105df565b50925050505b9392505050565b6102a96106e0565b6006919091556005805467ffffffffffffffff19166001600160401b03909216919091179055565b6102d96106e0565b6102e3600061070d565b565b60015433906001600160a01b031681146103225760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b61032b8161070d565b50565b60055460208401516001600160401b039182169116116103615760405163145ce5ff60e11b815260040160405180910390fd5b600654835114610384576040516352c6046360e01b815260040160405180910390fd5b6040805184516020808301919091528501516001600160401b03168183015290840151606080830191909152840151608082015260009060a00160408051601f1981840301815290829052600280546003549294506001600160a01b03169263ab750e7592879287926103f8908890610ff3565b602060405180830381855afa158015610415573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906104389190610fff565b6040518563ffffffff1660e01b81526004016104579493929190611018565b60006040518083038186803b15801561046f57600080fd5b505afa158015610483573d6000803e3d6000fd5b50505060608501516020808701516005546004546040519081529394506001600160401b03918216939116917f34dd3689f5bd77a60a3ff2e09483dcab032fa2f1fd7227af3e24bed21beab1cb910160405180910390a46020848101516005805467ffffffffffffffff19166001600160401b03909216919091179055604080860151600655606086015160048054600090815260079094529183205580549161052c8361106e565b919050555050505050565b61053f6106e0565b600355565b61054c6106e0565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6105766106e0565b600180546001600160a01b0383166001600160a01b031990911681179091556105a76000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000806001846040015111610607578351511561060257506000905060016106d8565b61062d565b61061984602001518560400151610726565b8451511461062d57506000905060016106d8565b836040015184602001511061064857506000905060026106d8565b6000610653846107be565b8551519091506000036106865784604001516001036106795785149150600090506106d8565b60008092509250506106d8565b6000806106a187602001518860400151858a60000151610833565b909250905060008160058111156106ba576106ba611087565b146106cd576000945092506106d8915050565b508614925060009150505b935093915050565b6000546001600160a01b031633146102e35760405163118cdaa760e01b8152336004820152602401610319565b600180546001600160a01b031916905561032b816109bd565b600060018211610738575060006107b8565b61074182610a0d565b61074d9061010061109d565b9050600061075c60018361109d565b6001901b905060018161076f919061109d565b841161077b57506107b8565b8060010361078d5760019150506107b8565b6107a961079a828661109d565b6107a4838661109d565b610726565b6107b49060016110b0565b9150505b92915050565b60006002600060f81b836040516020016107d99291906110c3565b60408051601f19818403018152908290526107f391610ff3565b602060405180830381855afa158015610810573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906107b89190610fff565b60008084600003610849575082905060036109b4565b8460010361086e57825115610863575082905060046109b4565b5082905060006109b4565b8251600003610882575082905060056109b4565b600061088d86610a3a565b905060006108aa856000600188516108a5919061109d565b610a7b565b905060008289101561092e5760006108c48a858a86610833565b9250905060008260058111156108dc576108dc611087565b146108ef575086945092506109b4915050565b61091f818860018a51610902919061109d565b81518110610912576109126110e7565b6020026020010151610c00565b600095509550505050506109b4565b600061094e61093d858c61109d565b610947868c61109d565b8a86610833565b92509050600082600581111561096657610966611087565b14610979575086945092506109b4915050565b6109a9876001895161098b919061109d565b8151811061099b5761099b6110e7565b602002602001015182610c00565b600095509550505050505b94509492505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b81816001901b1015610a2e57610a276001826110b0565b9050610a10565b6107b88161010061109d565b60006001821015610a4a57600080fd5b6000610a5583610c7e565b90506000610a6460018361109d565b6001901b905083810361029a5760011c9392505050565b606081831115610ae05760405162461bcd60e51b815260206004820152602a60248201527f496e76616c69642072616e67653a205f626567696e2069732067726561746572604482015269081d1a185b8817d95b9960b21b6064820152608401610319565b8351831180610aef5750835182115b15610b545760405162461bcd60e51b815260206004820152602f60248201527f496e76616c69642072616e67653a205f626567696e206f72205f656e6420617260448201526e65206f7574206f6620626f756e647360881b6064820152608401610319565b6000610b60848461109d565b6001600160401b03811115610b7757610b77610ca1565b604051908082528060200260200182016040528015610ba0578160200160208202803683370190505b509050835b83811015610bf757858181518110610bbf57610bbf6110e7565b6020026020010151828683610bd4919061109d565b81518110610be457610be46110e7565b6020908102919091010152600101610ba5565b50949350505050565b604051600160f81b6020820152602181018390526041810182905260009060029060610160408051601f1981840301815290829052610c3e91610ff3565b602060405180830381855afa158015610c5b573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061029a9190610fff565b6000805b82156107b85780610c928161106e565b915050600183901c9250610c82565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715610cd957610cd9610ca1565b60405290565b604051606081016001600160401b0381118282101715610cd957610cd9610ca1565b604051608081016001600160401b0381118282101715610cd957610cd9610ca1565b604051601f8201601f191681016001600160401b0381118282101715610d4b57610d4b610ca1565b604052919050565b60008060008385036080811215610d6957600080fd5b8435935060206040601f1983011215610d8157600080fd5b610d89610cb7565b8682013581526040870135828201529350606086013591506001600160401b0380831115610db657600080fd5b9186019160608389031215610dca57600080fd5b610dd2610cdf565b833582811115610de157600080fd5b8401601f81018a13610df257600080fd5b803583811115610e0457610e04610ca1565b8060051b9350610e15858501610d23565b818152938201850193858101908c861115610e2f57600080fd5b928601925b85841015610e4d57833582529286019290860190610e34565b80855250505050828401358382015260408401356040820152809450505050509250925092565b80356001600160401b0381168114610e8b57600080fd5b919050565b60008060408385031215610ea357600080fd5b82359150610eb360208401610e74565b90509250929050565b600080600083850360a0811215610ed257600080fd5b6080811215610ee057600080fd5b50610ee9610d01565b84358152610ef960208601610e74565b602082015260408501356040820152606085013560608201528093505060808401356001600160401b0380821115610f3057600080fd5b818601915086601f830112610f4457600080fd5b813581811115610f5357600080fd5b876020828501011115610f6557600080fd5b6020830194508093505050509250925092565b600060208284031215610f8a57600080fd5b5035919050565b6001600160a01b038116811461032b57600080fd5b600060208284031215610fb857600080fd5b813561029a81610f91565b6000815160005b81811015610fe45760208185018101518683015201610fca565b50600093019283525090919050565b600061029a8284610fc3565b60006020828403121561101157600080fd5b5051919050565b606081528360608201528385608083013760006080858301015260006080601f19601f870116830101905083602083015282604083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b60006001820161108057611080611058565b5060010190565b634e487b7160e01b600052602160045260246000fd5b818103818111156107b8576107b8611058565b808201808211156107b8576107b8611058565b6001600160f81b03198316815260006110df6001830184610fc3565b949350505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220c466705d206f3fa89133211ff6df1f8de937a77fb9aa419d4b8654308e3e461864736f6c63430008170033", + "object": "0x60806040527fa661b22447ae53f63d551fbdb0932d9dcaeb226e83e3bb45422e6ec40d3888a46003553480156200003557600080fd5b506040516200131138038062001311833981016040819052620000589162000167565b836001600160a01b0381166200008857604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200009381620000e3565b50600280546001600160a01b0319166001600160a01b039490941693909317909255600655600580546001600160401b0319166001600160401b03909216919091179055506001600455620001ce565b600180546001600160a01b0319169055620000fe8162000101565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000fe57600080fd5b600080600080608085870312156200017e57600080fd5b84516200018b8162000151565b60208601519094506200019e8162000151565b6040860151606087015191945092506001600160401b0381168114620001c357600080fd5b939692955090935050565b61113380620001de6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063e405bbc311610066578063e405bbc3146101da578063e6679c2614610205578063ef3f7dd514610218578063f2fde38b1461022157600080fd5b80638da5cb5b1461019c578063a7e47629146101ad578063ce0bb7e4146101c0578063e30c3978146101c957600080fd5b80636c4f6ba9116100d35780636c4f6ba914610162578063715018a61461017957806379ba5097146101815780638a9fbdec1461018957600080fd5b80631f3302a9146100fa57806323a4608b146101225780632b7ac3f314610137575b600080fd5b61010d610108366004610d53565b610234565b60405190151581526020015b60405180910390f35b610135610130366004610e90565b6102a1565b005b60025461014a906001600160a01b031681565b6040516001600160a01b039091168152602001610119565b61016b60065481565b604051908152602001610119565b6101356102d1565b6101356102e5565b610135610197366004610ebc565b61032e565b6000546001600160a01b031661014a565b6101356101bb366004610f78565b610537565b61016b60045481565b6001546001600160a01b031661014a565b6005546101ed906001600160401b031681565b6040516001600160401b039091168152602001610119565b610135610213366004610fa6565b610544565b61016b60035481565b61013561022f366004610fa6565b61056e565b600083158061024557506004548410155b156102525750600061029a565b600084815260076020908152604080832054815187518185015292870151838301528151808403830181526060909301909152919061029490839086906105df565b50925050505b9392505050565b6102a96106e0565b6006919091556005805467ffffffffffffffff19166001600160401b03909216919091179055565b6102d96106e0565b6102e3600061070d565b565b60015433906001600160a01b031681146103225760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b61032b8161070d565b50565b60055460208401516001600160401b039182169116116103615760405163145ce5ff60e11b815260040160405180910390fd5b600654835114610384576040516352c6046360e01b815260040160405180910390fd5b6040805184516020808301919091528501516001600160401b03168183015290840151606080830191909152840151608082015260009060a00160408051601f1981840301815290829052600280546003549294506001600160a01b03169263ab750e7592879287926103f8908890610ff3565b602060405180830381855afa158015610415573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906104389190610fff565b6040518563ffffffff1660e01b81526004016104579493929190611018565b60006040518083038186803b15801561046f57600080fd5b505afa158015610483573d6000803e3d6000fd5b50505060608501516020808701516005546004546040519081529394506001600160401b03918216939116917f34dd3689f5bd77a60a3ff2e09483dcab032fa2f1fd7227af3e24bed21beab1cb910160405180910390a46020848101516005805467ffffffffffffffff19166001600160401b03909216919091179055604080860151600655606086015160048054600090815260079094529183205580549161052c8361106e565b919050555050505050565b61053f6106e0565b600355565b61054c6106e0565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6105766106e0565b600180546001600160a01b0383166001600160a01b031990911681179091556105a76000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000806001846040015111610607578351511561060257506000905060016106d8565b61062d565b61061984602001518560400151610726565b8451511461062d57506000905060016106d8565b836040015184602001511061064857506000905060026106d8565b6000610653846107be565b8551519091506000036106865784604001516001036106795785149150600090506106d8565b60008092509250506106d8565b6000806106a187602001518860400151858a60000151610833565b909250905060008160058111156106ba576106ba611087565b146106cd576000945092506106d8915050565b508614925060009150505b935093915050565b6000546001600160a01b031633146102e35760405163118cdaa760e01b8152336004820152602401610319565b600180546001600160a01b031916905561032b816109bd565b600060018211610738575060006107b8565b61074182610a0d565b61074d9061010061109d565b9050600061075c60018361109d565b6001901b905060018161076f919061109d565b841161077b57506107b8565b8060010361078d5760019150506107b8565b6107a961079a828661109d565b6107a4838661109d565b610726565b6107b49060016110b0565b9150505b92915050565b60006002600060f81b836040516020016107d99291906110c3565b60408051601f19818403018152908290526107f391610ff3565b602060405180830381855afa158015610810573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906107b89190610fff565b60008084600003610849575082905060036109b4565b8460010361086e57825115610863575082905060046109b4565b5082905060006109b4565b8251600003610882575082905060056109b4565b600061088d86610a3a565b905060006108aa856000600188516108a5919061109d565b610a7b565b905060008289101561092e5760006108c48a858a86610833565b9250905060008260058111156108dc576108dc611087565b146108ef575086945092506109b4915050565b61091f818860018a51610902919061109d565b81518110610912576109126110e7565b6020026020010151610c00565b600095509550505050506109b4565b600061094e61093d858c61109d565b610947868c61109d565b8a86610833565b92509050600082600581111561096657610966611087565b14610979575086945092506109b4915050565b6109a9876001895161098b919061109d565b8151811061099b5761099b6110e7565b602002602001015182610c00565b600095509550505050505b94509492505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b81816001901b1015610a2e57610a276001826110b0565b9050610a10565b6107b88161010061109d565b60006001821015610a4a57600080fd5b6000610a5583610c7e565b90506000610a6460018361109d565b6001901b905083810361029a5760011c9392505050565b606081831115610ae05760405162461bcd60e51b815260206004820152602a60248201527f496e76616c69642072616e67653a205f626567696e2069732067726561746572604482015269081d1a185b8817d95b9960b21b6064820152608401610319565b8351831180610aef5750835182115b15610b545760405162461bcd60e51b815260206004820152602f60248201527f496e76616c69642072616e67653a205f626567696e206f72205f656e6420617260448201526e65206f7574206f6620626f756e647360881b6064820152608401610319565b6000610b60848461109d565b6001600160401b03811115610b7757610b77610ca1565b604051908082528060200260200182016040528015610ba0578160200160208202803683370190505b509050835b83811015610bf757858181518110610bbf57610bbf6110e7565b6020026020010151828683610bd4919061109d565b81518110610be457610be46110e7565b6020908102919091010152600101610ba5565b50949350505050565b604051600160f81b6020820152602181018390526041810182905260009060029060610160408051601f1981840301815290829052610c3e91610ff3565b602060405180830381855afa158015610c5b573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061029a9190610fff565b6000805b82156107b85780610c928161106e565b915050600183901c9250610c82565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715610cd957610cd9610ca1565b60405290565b604051606081016001600160401b0381118282101715610cd957610cd9610ca1565b604051608081016001600160401b0381118282101715610cd957610cd9610ca1565b604051601f8201601f191681016001600160401b0381118282101715610d4b57610d4b610ca1565b604052919050565b60008060008385036080811215610d6957600080fd5b8435935060206040601f1983011215610d8157600080fd5b610d89610cb7565b8682013581526040870135828201529350606086013591506001600160401b0380831115610db657600080fd5b9186019160608389031215610dca57600080fd5b610dd2610cdf565b833582811115610de157600080fd5b8401601f81018a13610df257600080fd5b803583811115610e0457610e04610ca1565b8060051b9350610e15858501610d23565b818152938201850193858101908c861115610e2f57600080fd5b928601925b85841015610e4d57833582529286019290860190610e34565b80855250505050828401358382015260408401356040820152809450505050509250925092565b80356001600160401b0381168114610e8b57600080fd5b919050565b60008060408385031215610ea357600080fd5b82359150610eb360208401610e74565b90509250929050565b600080600083850360a0811215610ed257600080fd5b6080811215610ee057600080fd5b50610ee9610d01565b84358152610ef960208601610e74565b602082015260408501356040820152606085013560608201528093505060808401356001600160401b0380821115610f3057600080fd5b818601915086601f830112610f4457600080fd5b813581811115610f5357600080fd5b876020828501011115610f6557600080fd5b6020830194508093505050509250925092565b600060208284031215610f8a57600080fd5b5035919050565b6001600160a01b038116811461032b57600080fd5b600060208284031215610fb857600080fd5b813561029a81610f91565b6000815160005b81811015610fe45760208185018101518683015201610fca565b50600093019283525090919050565b600061029a8284610fc3565b60006020828403121561101157600080fd5b5051919050565b606081528360608201528385608083013760006080858301015260006080601f19601f870116830101905083602083015282604083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b60006001820161108057611080611058565b5060010190565b634e487b7160e01b600052602160045260246000fd5b818103818111156107b8576107b8611058565b808201808211156107b8576107b8611058565b6001600160f81b03198316815260006110df6001830184610fc3565b949350505050565b634e487b7160e01b600052603260045260246000fdfea264697066735822122024e94a00aac26511696de5c3322f7be3f462c239edbcaec4218b0e1ab2bca26d64736f6c63430008170033", "sourceMap": "1137:5187:13:-:0;;;773:66:14;2796:47:13;;3513:271;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3631:6;-1:-1:-1;;;;;1273:26:8;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:8;;1350:1;1322:31;;;947:51:17;920:18;;1322:31:8;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;3653:8:13::1;:20:::0;;-1:-1:-1;;;;;;3653:20:13::1;-1:-1:-1::0;;;;;3653:20:13;;;::::1;::::0;;;::::1;::::0;;;3683:15:::1;:30:::0;3723:12:::1;:29:::0;;-1:-1:-1;;;;;;3723:29:13::1;-1:-1:-1::0;;;;;3723:29:13;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;3763:10:13::1;:14:::0;1137:5187;;1886:153:9;1975:13;1968:20;;-1:-1:-1;;;;;;1968:20:9;;;1998:34;2023:8;1998:24;:34::i;:::-;1886:153;:::o;2912:187:8:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:8;;;-1:-1:-1;;;;;;3020:17:8;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:131:17:-;-1:-1:-1;;;;;89:31:17;;79:42;;69:70;;135:1;132;125:12;150:646;272:6;280;288;296;349:3;337:9;328:7;324:23;320:33;317:53;;;366:1;363;356:12;317:53;398:9;392:16;417:31;442:5;417:31;:::i;:::-;517:2;502:18;;496:25;467:5;;-1:-1:-1;530:33:17;496:25;530:33;:::i;:::-;629:2;614:18;;608:25;678:2;663:18;;657:25;582:7;;-1:-1:-1;608:25:17;-1:-1:-1;;;;;;713:32:17;;701:45;;691:73;;760:1;757;750:12;691:73;150:646;;;;-1:-1:-1;150:646:17;;-1:-1:-1;;150:646:17:o;801:203::-;1137:5187:13;;;;;;" }, "deployedBytecode": { "linkReferences": {}, - "object": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063e405bbc311610066578063e405bbc3146101da578063e6679c2614610205578063ef3f7dd514610218578063f2fde38b1461022157600080fd5b80638da5cb5b1461019c578063a7e47629146101ad578063ce0bb7e4146101c0578063e30c3978146101c957600080fd5b80636c4f6ba9116100d35780636c4f6ba914610162578063715018a61461017957806379ba5097146101815780638a9fbdec1461018957600080fd5b80631f3302a9146100fa57806323a4608b146101225780632b7ac3f314610137575b600080fd5b61010d610108366004610d53565b610234565b60405190151581526020015b60405180910390f35b610135610130366004610e90565b6102a1565b005b60025461014a906001600160a01b031681565b6040516001600160a01b039091168152602001610119565b61016b60065481565b604051908152602001610119565b6101356102d1565b6101356102e5565b610135610197366004610ebc565b61032e565b6000546001600160a01b031661014a565b6101356101bb366004610f78565b610537565b61016b60045481565b6001546001600160a01b031661014a565b6005546101ed906001600160401b031681565b6040516001600160401b039091168152602001610119565b610135610213366004610fa6565b610544565b61016b60035481565b61013561022f366004610fa6565b61056e565b600083158061024557506004548410155b156102525750600061029a565b600084815260076020908152604080832054815187518185015292870151838301528151808403830181526060909301909152919061029490839086906105df565b50925050505b9392505050565b6102a96106e0565b6006919091556005805467ffffffffffffffff19166001600160401b03909216919091179055565b6102d96106e0565b6102e3600061070d565b565b60015433906001600160a01b031681146103225760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b61032b8161070d565b50565b60055460208401516001600160401b039182169116116103615760405163145ce5ff60e11b815260040160405180910390fd5b600654835114610384576040516352c6046360e01b815260040160405180910390fd5b6040805184516020808301919091528501516001600160401b03168183015290840151606080830191909152840151608082015260009060a00160408051601f1981840301815290829052600280546003549294506001600160a01b03169263ab750e7592879287926103f8908890610ff3565b602060405180830381855afa158015610415573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906104389190610fff565b6040518563ffffffff1660e01b81526004016104579493929190611018565b60006040518083038186803b15801561046f57600080fd5b505afa158015610483573d6000803e3d6000fd5b50505060608501516020808701516005546004546040519081529394506001600160401b03918216939116917f34dd3689f5bd77a60a3ff2e09483dcab032fa2f1fd7227af3e24bed21beab1cb910160405180910390a46020848101516005805467ffffffffffffffff19166001600160401b03909216919091179055604080860151600655606086015160048054600090815260079094529183205580549161052c8361106e565b919050555050505050565b61053f6106e0565b600355565b61054c6106e0565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6105766106e0565b600180546001600160a01b0383166001600160a01b031990911681179091556105a76000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000806001846040015111610607578351511561060257506000905060016106d8565b61062d565b61061984602001518560400151610726565b8451511461062d57506000905060016106d8565b836040015184602001511061064857506000905060026106d8565b6000610653846107be565b8551519091506000036106865784604001516001036106795785149150600090506106d8565b60008092509250506106d8565b6000806106a187602001518860400151858a60000151610833565b909250905060008160058111156106ba576106ba611087565b146106cd576000945092506106d8915050565b508614925060009150505b935093915050565b6000546001600160a01b031633146102e35760405163118cdaa760e01b8152336004820152602401610319565b600180546001600160a01b031916905561032b816109bd565b600060018211610738575060006107b8565b61074182610a0d565b61074d9061010061109d565b9050600061075c60018361109d565b6001901b905060018161076f919061109d565b841161077b57506107b8565b8060010361078d5760019150506107b8565b6107a961079a828661109d565b6107a4838661109d565b610726565b6107b49060016110b0565b9150505b92915050565b60006002600060f81b836040516020016107d99291906110c3565b60408051601f19818403018152908290526107f391610ff3565b602060405180830381855afa158015610810573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906107b89190610fff565b60008084600003610849575082905060036109b4565b8460010361086e57825115610863575082905060046109b4565b5082905060006109b4565b8251600003610882575082905060056109b4565b600061088d86610a3a565b905060006108aa856000600188516108a5919061109d565b610a7b565b905060008289101561092e5760006108c48a858a86610833565b9250905060008260058111156108dc576108dc611087565b146108ef575086945092506109b4915050565b61091f818860018a51610902919061109d565b81518110610912576109126110e7565b6020026020010151610c00565b600095509550505050506109b4565b600061094e61093d858c61109d565b610947868c61109d565b8a86610833565b92509050600082600581111561096657610966611087565b14610979575086945092506109b4915050565b6109a9876001895161098b919061109d565b8151811061099b5761099b6110e7565b602002602001015182610c00565b600095509550505050505b94509492505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b81816001901b1015610a2e57610a276001826110b0565b9050610a10565b6107b88161010061109d565b60006001821015610a4a57600080fd5b6000610a5583610c7e565b90506000610a6460018361109d565b6001901b905083810361029a5760011c9392505050565b606081831115610ae05760405162461bcd60e51b815260206004820152602a60248201527f496e76616c69642072616e67653a205f626567696e2069732067726561746572604482015269081d1a185b8817d95b9960b21b6064820152608401610319565b8351831180610aef5750835182115b15610b545760405162461bcd60e51b815260206004820152602f60248201527f496e76616c69642072616e67653a205f626567696e206f72205f656e6420617260448201526e65206f7574206f6620626f756e647360881b6064820152608401610319565b6000610b60848461109d565b6001600160401b03811115610b7757610b77610ca1565b604051908082528060200260200182016040528015610ba0578160200160208202803683370190505b509050835b83811015610bf757858181518110610bbf57610bbf6110e7565b6020026020010151828683610bd4919061109d565b81518110610be457610be46110e7565b6020908102919091010152600101610ba5565b50949350505050565b604051600160f81b6020820152602181018390526041810182905260009060029060610160408051601f1981840301815290829052610c3e91610ff3565b602060405180830381855afa158015610c5b573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061029a9190610fff565b6000805b82156107b85780610c928161106e565b915050600183901c9250610c82565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715610cd957610cd9610ca1565b60405290565b604051606081016001600160401b0381118282101715610cd957610cd9610ca1565b604051608081016001600160401b0381118282101715610cd957610cd9610ca1565b604051601f8201601f191681016001600160401b0381118282101715610d4b57610d4b610ca1565b604052919050565b60008060008385036080811215610d6957600080fd5b8435935060206040601f1983011215610d8157600080fd5b610d89610cb7565b8682013581526040870135828201529350606086013591506001600160401b0380831115610db657600080fd5b9186019160608389031215610dca57600080fd5b610dd2610cdf565b833582811115610de157600080fd5b8401601f81018a13610df257600080fd5b803583811115610e0457610e04610ca1565b8060051b9350610e15858501610d23565b818152938201850193858101908c861115610e2f57600080fd5b928601925b85841015610e4d57833582529286019290860190610e34565b80855250505050828401358382015260408401356040820152809450505050509250925092565b80356001600160401b0381168114610e8b57600080fd5b919050565b60008060408385031215610ea357600080fd5b82359150610eb360208401610e74565b90509250929050565b600080600083850360a0811215610ed257600080fd5b6080811215610ee057600080fd5b50610ee9610d01565b84358152610ef960208601610e74565b602082015260408501356040820152606085013560608201528093505060808401356001600160401b0380821115610f3057600080fd5b818601915086601f830112610f4457600080fd5b813581811115610f5357600080fd5b876020828501011115610f6557600080fd5b6020830194508093505050509250925092565b600060208284031215610f8a57600080fd5b5035919050565b6001600160a01b038116811461032b57600080fd5b600060208284031215610fb857600080fd5b813561029a81610f91565b6000815160005b81811015610fe45760208185018101518683015201610fca565b50600093019283525090919050565b600061029a8284610fc3565b60006020828403121561101157600080fd5b5051919050565b606081528360608201528385608083013760006080858301015260006080601f19601f870116830101905083602083015282604083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b60006001820161108057611080611058565b5060010190565b634e487b7160e01b600052602160045260246000fd5b818103818111156107b8576107b8611058565b808201808211156107b8576107b8611058565b6001600160f81b03198316815260006110df6001830184610fc3565b949350505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220c466705d206f3fa89133211ff6df1f8de937a77fb9aa419d4b8654308e3e461864736f6c63430008170033", + "object": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063e405bbc311610066578063e405bbc3146101da578063e6679c2614610205578063ef3f7dd514610218578063f2fde38b1461022157600080fd5b80638da5cb5b1461019c578063a7e47629146101ad578063ce0bb7e4146101c0578063e30c3978146101c957600080fd5b80636c4f6ba9116100d35780636c4f6ba914610162578063715018a61461017957806379ba5097146101815780638a9fbdec1461018957600080fd5b80631f3302a9146100fa57806323a4608b146101225780632b7ac3f314610137575b600080fd5b61010d610108366004610d53565b610234565b60405190151581526020015b60405180910390f35b610135610130366004610e90565b6102a1565b005b60025461014a906001600160a01b031681565b6040516001600160a01b039091168152602001610119565b61016b60065481565b604051908152602001610119565b6101356102d1565b6101356102e5565b610135610197366004610ebc565b61032e565b6000546001600160a01b031661014a565b6101356101bb366004610f78565b610537565b61016b60045481565b6001546001600160a01b031661014a565b6005546101ed906001600160401b031681565b6040516001600160401b039091168152602001610119565b610135610213366004610fa6565b610544565b61016b60035481565b61013561022f366004610fa6565b61056e565b600083158061024557506004548410155b156102525750600061029a565b600084815260076020908152604080832054815187518185015292870151838301528151808403830181526060909301909152919061029490839086906105df565b50925050505b9392505050565b6102a96106e0565b6006919091556005805467ffffffffffffffff19166001600160401b03909216919091179055565b6102d96106e0565b6102e3600061070d565b565b60015433906001600160a01b031681146103225760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b61032b8161070d565b50565b60055460208401516001600160401b039182169116116103615760405163145ce5ff60e11b815260040160405180910390fd5b600654835114610384576040516352c6046360e01b815260040160405180910390fd5b6040805184516020808301919091528501516001600160401b03168183015290840151606080830191909152840151608082015260009060a00160408051601f1981840301815290829052600280546003549294506001600160a01b03169263ab750e7592879287926103f8908890610ff3565b602060405180830381855afa158015610415573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906104389190610fff565b6040518563ffffffff1660e01b81526004016104579493929190611018565b60006040518083038186803b15801561046f57600080fd5b505afa158015610483573d6000803e3d6000fd5b50505060608501516020808701516005546004546040519081529394506001600160401b03918216939116917f34dd3689f5bd77a60a3ff2e09483dcab032fa2f1fd7227af3e24bed21beab1cb910160405180910390a46020848101516005805467ffffffffffffffff19166001600160401b03909216919091179055604080860151600655606086015160048054600090815260079094529183205580549161052c8361106e565b919050555050505050565b61053f6106e0565b600355565b61054c6106e0565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6105766106e0565b600180546001600160a01b0383166001600160a01b031990911681179091556105a76000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000806001846040015111610607578351511561060257506000905060016106d8565b61062d565b61061984602001518560400151610726565b8451511461062d57506000905060016106d8565b836040015184602001511061064857506000905060026106d8565b6000610653846107be565b8551519091506000036106865784604001516001036106795785149150600090506106d8565b60008092509250506106d8565b6000806106a187602001518860400151858a60000151610833565b909250905060008160058111156106ba576106ba611087565b146106cd576000945092506106d8915050565b508614925060009150505b935093915050565b6000546001600160a01b031633146102e35760405163118cdaa760e01b8152336004820152602401610319565b600180546001600160a01b031916905561032b816109bd565b600060018211610738575060006107b8565b61074182610a0d565b61074d9061010061109d565b9050600061075c60018361109d565b6001901b905060018161076f919061109d565b841161077b57506107b8565b8060010361078d5760019150506107b8565b6107a961079a828661109d565b6107a4838661109d565b610726565b6107b49060016110b0565b9150505b92915050565b60006002600060f81b836040516020016107d99291906110c3565b60408051601f19818403018152908290526107f391610ff3565b602060405180830381855afa158015610810573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906107b89190610fff565b60008084600003610849575082905060036109b4565b8460010361086e57825115610863575082905060046109b4565b5082905060006109b4565b8251600003610882575082905060056109b4565b600061088d86610a3a565b905060006108aa856000600188516108a5919061109d565b610a7b565b905060008289101561092e5760006108c48a858a86610833565b9250905060008260058111156108dc576108dc611087565b146108ef575086945092506109b4915050565b61091f818860018a51610902919061109d565b81518110610912576109126110e7565b6020026020010151610c00565b600095509550505050506109b4565b600061094e61093d858c61109d565b610947868c61109d565b8a86610833565b92509050600082600581111561096657610966611087565b14610979575086945092506109b4915050565b6109a9876001895161098b919061109d565b8151811061099b5761099b6110e7565b602002602001015182610c00565b600095509550505050505b94509492505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b81816001901b1015610a2e57610a276001826110b0565b9050610a10565b6107b88161010061109d565b60006001821015610a4a57600080fd5b6000610a5583610c7e565b90506000610a6460018361109d565b6001901b905083810361029a5760011c9392505050565b606081831115610ae05760405162461bcd60e51b815260206004820152602a60248201527f496e76616c69642072616e67653a205f626567696e2069732067726561746572604482015269081d1a185b8817d95b9960b21b6064820152608401610319565b8351831180610aef5750835182115b15610b545760405162461bcd60e51b815260206004820152602f60248201527f496e76616c69642072616e67653a205f626567696e206f72205f656e6420617260448201526e65206f7574206f6620626f756e647360881b6064820152608401610319565b6000610b60848461109d565b6001600160401b03811115610b7757610b77610ca1565b604051908082528060200260200182016040528015610ba0578160200160208202803683370190505b509050835b83811015610bf757858181518110610bbf57610bbf6110e7565b6020026020010151828683610bd4919061109d565b81518110610be457610be46110e7565b6020908102919091010152600101610ba5565b50949350505050565b604051600160f81b6020820152602181018390526041810182905260009060029060610160408051601f1981840301815290829052610c3e91610ff3565b602060405180830381855afa158015610c5b573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061029a9190610fff565b6000805b82156107b85780610c928161106e565b915050600183901c9250610c82565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715610cd957610cd9610ca1565b60405290565b604051606081016001600160401b0381118282101715610cd957610cd9610ca1565b604051608081016001600160401b0381118282101715610cd957610cd9610ca1565b604051601f8201601f191681016001600160401b0381118282101715610d4b57610d4b610ca1565b604052919050565b60008060008385036080811215610d6957600080fd5b8435935060206040601f1983011215610d8157600080fd5b610d89610cb7565b8682013581526040870135828201529350606086013591506001600160401b0380831115610db657600080fd5b9186019160608389031215610dca57600080fd5b610dd2610cdf565b833582811115610de157600080fd5b8401601f81018a13610df257600080fd5b803583811115610e0457610e04610ca1565b8060051b9350610e15858501610d23565b818152938201850193858101908c861115610e2f57600080fd5b928601925b85841015610e4d57833582529286019290860190610e34565b80855250505050828401358382015260408401356040820152809450505050509250925092565b80356001600160401b0381168114610e8b57600080fd5b919050565b60008060408385031215610ea357600080fd5b82359150610eb360208401610e74565b90509250929050565b600080600083850360a0811215610ed257600080fd5b6080811215610ee057600080fd5b50610ee9610d01565b84358152610ef960208601610e74565b602082015260408501356040820152606085013560608201528093505060808401356001600160401b0380821115610f3057600080fd5b818601915086601f830112610f4457600080fd5b813581811115610f5357600080fd5b876020828501011115610f6557600080fd5b6020830194508093505050509250925092565b600060208284031215610f8a57600080fd5b5035919050565b6001600160a01b038116811461032b57600080fd5b600060208284031215610fb857600080fd5b813561029a81610f91565b6000815160005b81811015610fe45760208185018101518683015201610fca565b50600093019283525090919050565b600061029a8284610fc3565b60006020828403121561101157600080fd5b5051919050565b606081528360608201528385608083013760006080858301015260006080601f19601f870116830101905083602083015282604083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b60006001820161108057611080611058565b5060010190565b634e487b7160e01b600052602160045260246000fd5b818103818111156107b8576107b8611058565b808201808211156107b8576107b8611058565b6001600160f81b03198316815260006110df6001830184610fc3565b949350505050565b634e487b7160e01b600052603260045260246000fdfea264697066735822122024e94a00aac26511696de5c3322f7be3f462c239edbcaec4218b0e1ab2bca26d64736f6c63430008170033", "sourceMap": "1137:5187:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5880:442;;;;;;:::i;:::-;;:::i;:::-;;;3088:14:17;;3081:22;3063:41;;3051:2;3036:18;5880:442:13;;;;;;;;3889:180;;;;;;:::i;:::-;;:::i;:::-;;2362:33;;;;;-1:-1:-1;;;;;2362:33:13;;;;;;-1:-1:-1;;;;;3738:32:17;;;3720:51;;3708:2;3693:18;2362:33:13;3548:229:17;3259:30:13;;;;;;;;;3928:25:17;;;3916:2;3901:18;3259:30:13;3782:177:17;2293:101:8;;;:::i;2119:229:9:-;;;:::i;4537:939:13:-;;;;;;:::i;:::-;;:::i;1638:85:8:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:8;1638:85;;4165:97:13;;;;;;:::i;:::-;;:::i;2850:25::-;;;;;;1232:99:9;1311:13;;-1:-1:-1;;;;;1311:13:9;1232:99;;3034:26:13;;;;;-1:-1:-1;;;;;3034:26:13;;;;;;-1:-1:-1;;;;;5737:31:17;;;5719:50;;5707:2;5692:18;3034:26:13;5575:200:17;4350:111:13;;;;;;:::i;:::-;;:::i;2796:47::-;;;;;;1524:178:9;;;;;;:::i;:::-;;:::i;5880:442:13:-;6037:4;6061:16;;;:45;;;6096:10;;6081:11;:25;;6061:45;6057:88;;;-1:-1:-1;6129:5:13;6122:12;;6057:88;6155:12;6170:24;;;:11;:24;;;;;;;;;6266:18;;6723:13:17;;6266:18:13;;;6705:32:17;6781:17;;;6775:24;6753:20;;;6746:54;6266:18:13;;;;;;;;;6678::17;;;;6266::13;;;6170:24;6155:12;6228:57;;6170:24;;6258:6;;6228:23;:57::i;:::-;-1:-1:-1;6205:80:13;-1:-1:-1;;;5880:442:13;;;;;;:::o;3889:180::-;1531:13:8;:11;:13::i;:::-;3993:15:13::1;:30:::0;;;;4033:12:::1;:29:::0;;-1:-1:-1;;4033:29:13::1;-1:-1:-1::0;;;;;4033:29:13;;::::1;::::0;;;::::1;::::0;;3889:180::o;2293:101:8:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2119:229:9:-;1311:13;;735:10:10;;-1:-1:-1;;;;;1311:13:9;2214:24;;2210:96;;2261:34;;-1:-1:-1;;;2261:34:9;;-1:-1:-1;;;;;3738:32:17;;2261:34:9;;;3720:51:17;3693:18;;2261:34:9;;;;;;;;2210:96;2315:26;2334:6;2315:18;:26::i;:::-;2161:187;2119:229::o;4537:939:13:-;4656:12;;4635:17;;;;-1:-1:-1;;;;;4656:12:13;;;4635:33;;;4631:92;;4691:21;;-1:-1:-1;;;4691:21:13;;;;;;;;;;;4631:92;4765:15;;4736:25;;:44;4732:108;;4803:26;;-1:-1:-1;;;4803:26:13;;;;;;;;;;;4732:108;4873:19;;;7042:13:17;;4873:19:13;;;;7024:32:17;;;;7104:17;;7098:24;-1:-1:-1;;;;;7094:49:17;7072:20;;;7065:79;7188:17;;;7182:24;7160:20;;;;7153:54;;;;7251:17;;7245:24;7223:20;;;7216:54;4850:20:13;;6996:19:17;;4873::13;;;-1:-1:-1;;4873:19:13;;;;;;;;;;4902:8;;;4925:7;;4873:19;;-1:-1:-1;;;;;;4902:8:13;;:15;;4918:5;;;;4934:15;;4873:19;;4934:15;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4902:48;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5032:18:13;;;;5013:17;;;;;4999:12;;4987:10;;4966:85;;3928:25:17;;;5032:18:13;;-1:-1:-1;;;;;;4966:85:13;;;;4999:12;;;4966:85;;3901:18:17;4966:85:13;;;;;;;5191:17;;;;;5176:12;:32;;-1:-1:-1;;5176:32:13;-1:-1:-1;;;;;5176:32:13;;;;;;;;;5236:21;;;;;5218:15;:39;5429:18;;;;5415:10;;;-1:-1:-1;5403:23:13;;;:11;:23;;;;;;:44;5457:12;;;;;;:::i;:::-;;;;;;4621:855;4537:939;;;:::o;4165:97::-;1531:13:8;:11;:13::i;:::-;4237:7:13::1;:18:::0;4165:97::o;4350:111::-;1531:13:8;:11;:13::i;:::-;4434:8:13::1;:20:::0;;-1:-1:-1;;;;;;4434:20:13::1;-1:-1:-1::0;;;;;4434:20:13;;;::::1;::::0;;;::::1;::::0;;4350:111::o;1524:178:9:-;1531:13:8;:11;:13::i;:::-;1613::9::1;:24:::0;;-1:-1:-1;;;;;1613:24:9;::::1;-1:-1:-1::0;;;;;;1613:24:9;;::::1;::::0;::::1;::::0;;;1677:7:::1;1684::8::0;1710:6;-1:-1:-1;;;;;1710:6:8;;1638:85;1677:7:9::1;-1:-1:-1::0;;;;;1652:43:9::1;;;;;;;;;;;1524:178:::0;:::o;1342:1444:6:-;1470:4;1476:10;1592:1;1573:5;:15;;;:20;1569:326;;1613:15;;:22;:27;1609:117;;-1:-1:-1;1668:5:6;;-1:-1:-1;1675:35:6;1660:51;;1609:117;1569:326;;;1772:45;1790:5;:9;;;1801:5;:15;;;1772:17;:45::i;:::-;1746:15;;:22;:71;1742:153;;-1:-1:-1;1841:5:6;;-1:-1:-1;1848:35:6;1833:51;;1742:153;1954:5;:15;;;1941:5;:9;;;:28;1937:98;;-1:-1:-1;1993:5:6;;-1:-1:-1;2000:23:6;1985:39;;1937:98;2131:14;2148:16;2159:4;2148:10;:16::i;:::-;2281:15;;:22;2131:33;;-1:-1:-1;2281:15:6;:27;2277:232;;2328:5;:15;;;2347:1;2328:20;2324:175;;2376:14;;;-1:-1:-1;2392:18:6;;-1:-1:-1;2368:43:6;;2324:175;2458:5;2465:18;2450:34;;;;;;;2324:175;2520:20;2542:16;2562:68;2578:5;:9;;;2589:5;:15;;;2606:6;2614:5;:15;;;2562;:68::i;:::-;2519:111;;-1:-1:-1;2519:111:6;-1:-1:-1;2654:18:6;2645:5;:27;;;;;;;;:::i;:::-;;2641:79;;2696:5;;-1:-1:-1;2703:5:6;-1:-1:-1;2688:21:6;;-1:-1:-1;;2688:21:6;2641:79;-1:-1:-1;2738:20:6;;;-1:-1:-1;2760:18:6;;-1:-1:-1;;1342:1444:6;;;;;;;:::o;1796:162:8:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:8;735:10:10;1855:23:8;1851:101;;1901:40;;-1:-1:-1;;;1901:40:8;;735:10:10;1901:40:8;;;3720:51:17;3693:18;;1901:40:8;3548:229:17;1886:153:9;1975:13;1968:20;;-1:-1:-1;;;;;;1968:20:9;;;1998:34;2023:8;1998:24;:34::i;936:1011:4:-;1009:18;1052:1;1039:9;:14;1035:125;;-1:-1:-1;1152:1:4;1145:8;;1035:125;1304:25;1319:9;1304:14;:25::i;:::-;1281:48;;245:3:2;1281:48:4;:::i;:::-;1268:61;-1:-1:-1;1394:28:4;1432:14;1445:1;1268:61;1432:14;:::i;:::-;1426:1;:21;;1394:54;;1567:1;1544:20;:24;;;;:::i;:::-;1537:3;:31;1533:412;;1580:17;;;1533:412;1711:20;1735:1;1711:25;1707:238;;1755:1;1748:8;;;;;1707:238;1859:79;1877:26;1883:20;1877:3;:26;:::i;:::-;1905:32;1917:20;1905:9;:32;:::i;:::-;1859:17;:79::i;:::-;1855:83;;:1;:83;:::i;:::-;1848:90;;;936:1011;;;;;:::o;868:140:7:-;921:14;952:53;340:4:2;976:21:7;;999:4;959:45;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;959:45:7;;;;;;;;;;952:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2983:1463:6:-;3132:7;3141:10;3171:9;3184:1;3171:14;3167:103;;-1:-1:-1;3209:8:6;;-1:-1:-1;3219:39:6;3201:58;;3167:103;3283:9;3296:1;3283:14;3279:206;;3317:16;;:21;3313:111;;-1:-1:-1;3366:8:6;;-1:-1:-1;3376:32:6;3358:51;;3313:111;-1:-1:-1;3445:8:6;;-1:-1:-1;3455:18:6;3437:37;;3279:206;3498:9;:16;3518:1;3498:21;3494:109;;-1:-1:-1;3543:8:6;;-1:-1:-1;3553:38:6;3535:57;;3494:109;3612:15;3630:25;3645:9;3630:14;:25::i;:::-;3612:43;;3665:30;3698:41;3704:9;3715:1;3737;3718:9;:16;:20;;;;:::i;:::-;3698:5;:41::i;:::-;3665:74;;3749:16;3785:7;3779:3;:13;3775:347;;;3808:16;3858:54;3874:3;3879:7;3888:8;3898:13;3858:15;:54::i;:::-;3838:74;-1:-1:-1;3838:74:6;-1:-1:-1;3939:18:6;3930:5;:27;;;;;;;;:::i;:::-;;3926:90;;-1:-1:-1;3985:8:6;;-1:-1:-1;3995:5:6;-1:-1:-1;3977:24:6;;-1:-1:-1;;3977:24:6;3926:90;4037:53;4048:8;4058:9;4087:1;4068:9;:16;:20;;;;:::i;:::-;4058:31;;;;;;;;:::i;:::-;;;;;;;4037:10;:53::i;:::-;4092:18;4029:82;;;;;;;;;;3775:347;4131:17;4179:76;4195:13;4201:7;4195:3;:13;:::i;:::-;4210:19;4222:7;4210:9;:19;:::i;:::-;4231:8;4241:13;4179:15;:76::i;:::-;4158:97;-1:-1:-1;4158:97:6;-1:-1:-1;4278:18:6;4269:5;:27;;;;;;;;:::i;:::-;;4265:82;;-1:-1:-1;4320:8:6;;-1:-1:-1;4330:5:6;-1:-1:-1;4312:24:6;;-1:-1:-1;;4312:24:6;4265:82;4364:54;4375:9;4404:1;4385:9;:16;:20;;;;:::i;:::-;4375:31;;;;;;;;:::i;:::-;;;;;;;4408:9;4364:10;:54::i;:::-;4420:18;4356:83;;;;;;;;2983:1463;;;;;;;;:::o;2912:187:8:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:8;;;-1:-1:-1;;;;;;3020:17:8;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;315:362:4:-;372:19;556:72;584:9;569:11;564:1;:16;;563:30;556:72;;;605:16;620:1;605:16;;:::i;:::-;;;556:72;;;640:34;663:11;245:3:2;640:34:4;:::i;2318:492::-;2367:7;2680:1;2675;:6;;2667:15;;;;;;2689:14;2706:11;2715:1;2706:8;:11::i;:::-;2689:28;-1:-1:-1;2723:9:4;2741:10;2750:1;2689:28;2741:10;:::i;:::-;2735:1;:17;;2723:29;;2767:1;2762;:6;2758:36;;2786:1;2780:7;2806:1;2318:492;-1:-1:-1;;;2318:492:4:o;4913:544:6:-;5005:16;5046:4;5037:6;:13;5033:96;;;5066:52;;-1:-1:-1;;;5066:52:6;;9808:2:17;5066:52:6;;;9790:21:17;9847:2;9827:18;;;9820:30;9886:34;9866:18;;;9859:62;-1:-1:-1;;;9937:18:17;;;9930:40;9987:19;;5066:52:6;9606:406:17;5033:96:6;5151:5;:12;5142:6;:21;:44;;;;5174:5;:12;5167:4;:19;5142:44;5138:132;;;5202:57;;-1:-1:-1;;;5202:57:6;;10219:2:17;5202:57:6;;;10201:21:17;10258:2;10238:18;;;10231:30;10297:34;10277:18;;;10270:62;-1:-1:-1;;;10348:18:17;;;10341:45;10403:19;;5202:57:6;10017:411:17;5138:132:6;5279:20;5316:13;5323:6;5316:4;:13;:::i;:::-;-1:-1:-1;;;;;5302:28:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5302:28:6;-1:-1:-1;5279:51:6;-1:-1:-1;5357:6:6;5340:91;5369:4;5365:1;:8;5340:91;;;5412:5;5418:1;5412:8;;;;;;;;:::i;:::-;;;;;;;5394:3;5402:6;5398:1;:10;;;;:::i;:::-;5394:15;;;;;;;;:::i;:::-;;;;;;;;;;:26;5375:3;;5340:91;;;-1:-1:-1;5447:3:6;4913:544;-1:-1:-1;;;;4913:544:6:o;415:157:7:-;516:52;;-1:-1:-1;;;516:52:7;;;10616:39:17;10671:11;;;10664:27;;;10707:12;;;10700:28;;;478:14:7;;509:60;;10744:12:17;;516:52:7;;;-1:-1:-1;;516:52:7;;;;;;;;;;509:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2078:159:4:-;2121:7;;2160:56;2167:6;;2160:56;;2185:7;;;;:::i;:::-;;;;2208:1;2202:7;;;;;2160:56;;14:127:17;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:257;218:4;212:11;;;250:17;;-1:-1:-1;;;;;282:34:17;;318:22;;;279:62;276:88;;;344:18;;:::i;:::-;380:4;373:24;146:257;:::o;408:251::-;480:2;474:9;522:2;510:15;;-1:-1:-1;;;;;540:34:17;;576:22;;;537:62;534:88;;;602:18;;:::i;664:253::-;736:2;730:9;778:4;766:17;;-1:-1:-1;;;;;798:34:17;;834:22;;;795:62;792:88;;;860:18;;:::i;922:275::-;993:2;987:9;1058:2;1039:13;;-1:-1:-1;;1035:27:17;1023:40;;-1:-1:-1;;;;;1078:34:17;;1114:22;;;1075:62;1072:88;;;1140:18;;:::i;:::-;1176:2;1169:22;922:275;;-1:-1:-1;922:275:17:o;1202:1716::-;1341:6;1349;1357;1401:9;1392:7;1388:23;1431:3;1427:2;1423:12;1420:32;;;1448:1;1445;1438:12;1420:32;1471:23;;;-1:-1:-1;1513:2:17;1549:4;-1:-1:-1;;1531:16:17;;1527:27;1524:47;;;1567:1;1564;1557:12;1524:47;1593:22;;:::i;:::-;1651:18;;;1638:32;1624:47;;1731:4;1716:20;;1703:34;1687:14;;;1680:58;1580:35;-1:-1:-1;1813:2:17;1798:18;;1785:32;;-1:-1:-1;;;;;;1866:14:17;;;1863:34;;;1893:1;1890;1883:12;1863:34;1916:22;;;;1972:2;1954:16;;;1950:25;1947:45;;;1988:1;1985;1978:12;1947:45;2016:22;;:::i;:::-;2076:2;2063:16;2104:2;2094:8;2091:16;2088:36;;;2120:1;2117;2110:12;2088:36;2143:17;;2191:4;2183:13;;2179:27;-1:-1:-1;2169:55:17;;2220:1;2217;2210:12;2169:55;2256:2;2243:16;2278:2;2274;2271:10;2268:36;;;2284:18;;:::i;:::-;2330:2;2327:1;2323:10;2313:20;;2353:28;2377:2;2373;2369:11;2353:28;:::i;:::-;2415:15;;;2485:11;;;2481:20;;;2446:12;;;;2513:19;;;2510:39;;;2545:1;2542;2535:12;2510:39;2569:11;;;;2589:142;2605:6;2600:3;2597:15;2589:142;;;2671:17;;2659:30;;2622:12;;;;2709;;;;2589:142;;;2756:5;2747:7;2740:22;;;;;2817:2;2813;2809:11;2796:25;2791:2;2782:7;2778:16;2771:51;2879:4;2875:2;2871:13;2858:27;2851:4;2842:7;2838:18;2831:55;2905:7;2895:17;;;;;;1202:1716;;;;;:::o;3115:171::-;3182:20;;-1:-1:-1;;;;;3231:30:17;;3221:41;;3211:69;;3276:1;3273;3266:12;3211:69;3115:171;;;:::o;3291:252::-;3358:6;3366;3419:2;3407:9;3398:7;3394:23;3390:32;3387:52;;;3435:1;3432;3425:12;3387:52;3471:9;3458:23;3448:33;;3500:37;3533:2;3522:9;3518:18;3500:37;:::i;:::-;3490:47;;3291:252;;;;;:::o;3964:1031::-;4076:6;4084;4092;4136:9;4127:7;4123:23;4166:3;4162:2;4158:12;4155:32;;;4183:1;4180;4173:12;4155:32;4207:4;4203:2;4199:13;4196:33;;;4225:1;4222;4215:12;4196:33;;4251:22;;:::i;:::-;4309:9;4296:23;4289:5;4282:38;4352:37;4385:2;4374:9;4370:18;4352:37;:::i;:::-;4347:2;4340:5;4336:14;4329:61;4450:2;4439:9;4435:18;4422:32;4417:2;4410:5;4406:14;4399:56;4515:2;4504:9;4500:18;4487:32;4482:2;4475:5;4471:14;4464:56;4539:5;4529:15;;;4595:4;4584:9;4580:20;4567:34;-1:-1:-1;;;;;4661:2:17;4653:6;4650:14;4647:34;;;4677:1;4674;4667:12;4647:34;4715:6;4704:9;4700:22;4690:32;;4760:7;4753:4;4749:2;4745:13;4741:27;4731:55;;4782:1;4779;4772:12;4731:55;4822:2;4809:16;4848:2;4840:6;4837:14;4834:34;;;4864:1;4861;4854:12;4834:34;4909:7;4904:2;4895:6;4891:2;4887:15;4883:24;4880:37;4877:57;;;4930:1;4927;4920:12;4877:57;4961:2;4957;4953:11;4943:21;;4983:6;4973:16;;;;;3964:1031;;;;;:::o;5208:180::-;5267:6;5320:2;5308:9;5299:7;5295:23;5291:32;5288:52;;;5336:1;5333;5326:12;5288:52;-1:-1:-1;5359:23:17;;5208:180;-1:-1:-1;5208:180:17:o;5780:150::-;-1:-1:-1;;;;;5874:31:17;;5864:42;;5854:70;;5920:1;5917;5910:12;5935:292;6020:6;6073:2;6061:9;6052:7;6048:23;6044:32;6041:52;;;6089:1;6086;6079:12;6041:52;6128:9;6115:23;6147:50;6191:5;6147:50;:::i;7281:322::-;7322:3;7360:5;7354:12;7384:1;7394:128;7408:6;7405:1;7402:13;7394:128;;;7505:4;7490:13;;;7486:24;;7480:31;7467:11;;;7460:52;7423:12;7394:128;;;-1:-1:-1;7577:1:17;7541:16;;7566:13;;;-1:-1:-1;7541:16:17;;7281:322;-1:-1:-1;7281:322:17:o;7608:189::-;7737:3;7762:29;7787:3;7779:6;7762:29;:::i;7802:184::-;7872:6;7925:2;7913:9;7904:7;7900:23;7896:32;7893:52;;;7941:1;7938;7931:12;7893:52;-1:-1:-1;7964:16:17;;7802:184;-1:-1:-1;7802:184:17:o;7991:535::-;8204:2;8193:9;8186:21;8243:6;8238:2;8227:9;8223:18;8216:34;8301:6;8293;8287:3;8276:9;8272:19;8259:49;8358:1;8352:3;8343:6;8332:9;8328:22;8324:32;8317:43;8167:4;8428:3;8421:2;8417:7;8412:2;8404:6;8400:15;8396:29;8385:9;8381:45;8377:55;8369:63;;8470:6;8463:4;8452:9;8448:20;8441:36;8513:6;8508:2;8497:9;8493:18;8486:34;7991:535;;;;;;;:::o;8531:127::-;8592:10;8587:3;8583:20;8580:1;8573:31;8623:4;8620:1;8613:15;8647:4;8644:1;8637:15;8663:135;8702:3;8723:17;;;8720:43;;8743:18;;:::i;:::-;-1:-1:-1;8790:1:17;8779:13;;8663:135::o;8803:127::-;8864:10;8859:3;8855:20;8852:1;8845:31;8895:4;8892:1;8885:15;8919:4;8916:1;8909:15;8935:128;9002:9;;;9023:11;;;9020:37;;;9037:18;;:::i;9068:125::-;9133:9;;;9154:10;;;9151:36;;;9167:18;;:::i;9198:271::-;-1:-1:-1;;;;;;9383:26:17;;9371:39;;9353:3;9426:37;9460:1;9451:11;;9443:6;9426:37;:::i;:::-;9419:44;9198:271;-1:-1:-1;;;;9198:271:17:o;9474:127::-;9535:10;9530:3;9526:20;9523:1;9516:31;9566:4;9563:1;9556:15;9590:4;9587:1;9580:15" }, "id": 13, @@ -1036,11 +1036,11 @@ ] }, "src/ImageID.sol": { - "keccak256": "0xc8e32ba56f8455a56f2be97ca62a6d1d5a9505f6ad2336787c5b0c3d1cdfc835", + "keccak256": "0x8417991bae246fe8d91d09fcf3b11ad55051658ac76371c7e4832ebcea35ef08", "license": "Apache-2.0", "urls": [ - "bzz-raw://03ec0e63a90d70403d0ef0a85b364534e630fde98e5390af289281ea579eae28", - "dweb:/ipfs/QmPhVWAGoamYRm3Uzv5vu92PXuMDU5YHCiKeqAmEzY19mo" + "bzz-raw://80db8bc48a8f0923411f2223000d416aa052e5af386b0997032ffdce65ea4aff", + "dweb:/ipfs/QmWYydD4V912Jf1epuh6NFg5EFkA3agABAXFUFqHme8rDE" ] }, "src/RangeCommitment.sol": { @@ -1071,5 +1071,5 @@ "verifier()": "2b7ac3f3", "verifyAttestation(uint256,(uint256,bytes32),(bytes32[],uint256,uint256))": "1f3302a9" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"},{\"internalType\":\"contract IRiscZeroVerifier\",\"name\":\"_verifier\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_trustedHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_trustedHeight\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidTargetHeight\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTrustedHeaderHash\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proofNonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"startBlock\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"endBlock\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"dataCommitment\",\"type\":\"bytes32\"}],\"name\":\"DataCommitmentStored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"headerHash\",\"type\":\"bytes32\"}],\"name\":\"HeadUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"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\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_imageId\",\"type\":\"bytes32\"}],\"name\":\"adminSetImageId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_trustedHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_trustedHeight\",\"type\":\"uint64\"}],\"name\":\"adminSetTrustedState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRiscZeroVerifier\",\"name\":\"_verifier\",\"type\":\"address\"}],\"name\":\"adminSetVerifier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"imageId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestHeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proofNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"trustedHeaderHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"newHeight\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newHeaderHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"merkleRoot\",\"type\":\"bytes32\"}],\"internalType\":\"struct RangeCommitment\",\"name\":\"_commit\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_seal\",\"type\":\"bytes\"}],\"name\":\"updateRange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"verifier\",\"outputs\":[{\"internalType\":\"contract IRiscZeroVerifier\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proofNonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"dataRoot\",\"type\":\"bytes32\"}],\"internalType\":\"struct DataRootTuple\",\"name\":\"_tuple\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"sideNodes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numLeaves\",\"type\":\"uint256\"}],\"internalType\":\"struct BinaryMerkleProof\",\"name\":\"_proof\",\"type\":\"tuple\"}],\"name\":\"verifyAttestation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"DataCommitmentStored(uint256,uint64,uint64,bytes32)\":{\"params\":{\"dataCommitment\":\"The data commitment for the block range.\",\"endBlock\":\"The end block of the block range.\",\"proofNonce\":\"The nonce of the proof.\",\"startBlock\":\"The start block of the block range.\"}}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"},\"verifyAttestation(uint256,(uint256,bytes32),(bytes32[],uint256,uint256))\":{\"params\":{\"_proof\":\"Binary Merkle tree proof that `tuple` is in the root at `_tupleRootNonce`.\",\"_proofNonce\":\"Nonce of the tuple root to prove against.\",\"_tuple\":\"Data root tuple to prove inclusion of.\"},\"returns\":{\"_0\":\"`true` is proof is valid, `false` otherwise.\"}}},\"stateVariables\":{\"latestBlockHash\":{\"details\":\"always update this in tandem with\"}},\"title\":\"A starter application using RISC Zero.\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidTargetHeight()\":[{\"notice\":\"Target height for next batch was below the current height.\"}],\"InvalidTrustedHeaderHash()\":[{\"notice\":\"Trusted block hash does not equal the commitment from the new batch.\"}]},\"events\":{\"DataCommitmentStored(uint256,uint64,uint64,bytes32)\":{\"notice\":\"Data commitment stored for the block range [startBlock, endBlock) with proof nonce. NOTE: This event matches existing Blobstream contracts, for ease of integration.\"},\"HeadUpdate(uint64,bytes32)\":{\"notice\":\"Emits event with the new head update. NOTE: Matches existing Blobstream contract, for ease of integration.\"}},\"kind\":\"user\",\"methods\":{\"adminSetImageId(bytes32)\":{\"notice\":\"Only the admin can update. Updates the image ID to verify proofs against.\"},\"adminSetTrustedState(bytes32,uint64)\":{\"notice\":\"Only the admin can update. Updates the trusted height and block hash to sync from.\"},\"adminSetVerifier(address)\":{\"notice\":\"Only the admin can update. Updates the verifier contract address.\"},\"constructor\":{\"notice\":\"Initialize the contract, binding it to a specified RISC Zero verifier.\"},\"imageId()\":{\"notice\":\"Image ID of the only zkVM binary to accept verification from. The image ID is similar to the address of a smart contract. It uniquely represents the logic of that guest program, ensuring that only proofs generated from a pre-defined guest program (in this case, checking if a number is even) are considered valid.\"},\"latestBlockHash()\":{\"notice\":\"The latest block hash validated.\"},\"latestHeight()\":{\"notice\":\"The latest height validated.\"},\"updateRange((bytes32,uint64,bytes32,bytes32),bytes)\":{\"notice\":\"Validate a proof of a new header range, update state.\"},\"verifier()\":{\"notice\":\"RISC Zero verifier contract address.\"},\"verifyAttestation(uint256,(uint256,bytes32),(bytes32[],uint256,uint256))\":{\"notice\":\"Verify a Data Availability attestation. Method of IDAOracle from Blobstream contract.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Blobstream0.sol\":\"Blobstream0\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":blobstream-contracts/=lib/blobstream-contracts/src/\",\":blobstream/=lib/blobstream-contracts/src/\",\":ds-test/=lib/blobstream-contracts/lib/ds-test/src/\",\":erc4626-tests/=lib/blobstream-contracts/lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/blobstream-contracts/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/\",\":risc0-ethereum/=lib/risc0-ethereum/\",\":risc0/=lib/risc0-ethereum/contracts/src/\",\":tree/=lib/blobstream-contracts/src/lib/tree/\",\":verifier/=lib/blobstream-contracts/src/lib/verifier/\"]},\"sources\":{\"lib/blobstream-contracts/src/DataRootTuple.sol\":{\"keccak256\":\"0x0526597d14a6d7f258ec48e434a9b60c9a8781764a8f23c878d49926daeb5d1c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://06ee253f8d0f58dbe66c64cb5d2945182ba3bced088167472d8f953cec421916\",\"dweb:/ipfs/QmUF9jjr6bH3pPgjGAZqYhsUn7EevqU7kZn8RBqQ4EoU2w\"]},\"lib/blobstream-contracts/src/IDAOracle.sol\":{\"keccak256\":\"0xc35648b17d3587bc3a627f67a328874db536ee24c11b970c3c57226d69a32eec\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://362610301e6057d10777c84111d4bb43af53af75a488fb8ab8666a775302a3fc\",\"dweb:/ipfs/QmURgSTYhiguV1oCUARaTTWrpFHg5nMEtxhPVcpUDuEKq6\"]},\"lib/blobstream-contracts/src/lib/tree/Constants.sol\":{\"keccak256\":\"0x2050b2be8a739ce250cc5cea1556936c7937915b5d7fde269dd70e8e7eb660c4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://946ea30d1001048a800f60bb24d2ab7ecf5f92ae2abd212f3f855e37a6840ce7\",\"dweb:/ipfs/QmW2PnhAB5h2eCCM6Vafg8ZUpBttjLTbBhtXjJh3SSrYEN\"]},\"lib/blobstream-contracts/src/lib/tree/Types.sol\":{\"keccak256\":\"0xa47e9e20fef88264acdf1fc6bc0b3bb9f23c7022f5de8d203a1014895a606958\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d480249b6adf8730bffcf26eed5902eb9fd1d56d11f931b35a9e19c6415b3f47\",\"dweb:/ipfs/QmPCrcMmQdNMYG232WxEg2zZRFvXQqdEZgwQNMaDJ2oNab\"]},\"lib/blobstream-contracts/src/lib/tree/Utils.sol\":{\"keccak256\":\"0x9760cb3ab3d4f412949b9be1bbdf5d9e7954cad44a94a4f7fe90fcffb86fe7fa\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://06edf92a63d5b2c3459800acc6945071ee069be6df03b70f28440c5c732465aa\",\"dweb:/ipfs/QmU4LnS5ckxXpEBE82y5gfsNxn5gUQPh273nLrmfPP9pjD\"]},\"lib/blobstream-contracts/src/lib/tree/binary/BinaryMerkleProof.sol\":{\"keccak256\":\"0x9fb953284b455b544091f058fdb11ac73928093517333909c0744d9319410688\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://938230a60210345fe7cc661708c4fe0db663a5f5b5306f05fe4023b44f104b6e\",\"dweb:/ipfs/QmUvcJuDmwnbRzXX5qgV4Mckg6ujvMeo46SrTPvgpPhFSF\"]},\"lib/blobstream-contracts/src/lib/tree/binary/BinaryMerkleTree.sol\":{\"keccak256\":\"0x90dc9ac613014c2d3fcebbd23f2b5af67188b7de80b2ef853f20c91a14ce68fd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4dffcfb8911d174787b05d814c423ea368c6526e32d762576fb5109e517a185f\",\"dweb:/ipfs/QmRxYnjwkEANhqXkoNifG2kbGtEymyLRU5h2NyPTZ5wbSE\"]},\"lib/blobstream-contracts/src/lib/tree/binary/TreeHasher.sol\":{\"keccak256\":\"0x2f16501eac14f6e2a61de29d3aa10e3aaf8e0a594fc9cf8dc2d955bb2f6d54e0\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://984a2e5d52cfdd38f2c597bddc4a2de8ad1e4dd9c81008376569a29c74fa963e\",\"dweb:/ipfs/QmaXhfHD58Jv4nSw3qw2hGwbDSPKDjFzPNYWm9Y4KWiigm\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/risc0-ethereum/contracts/src/IRiscZeroVerifier.sol\":{\"keccak256\":\"0x19341f62c8fe3c0945ebffa4f25d49706ded741af98eaacb7ade824c947f61a4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5d443c7187fd565e25acdfd3df63f14421d06dda0839470cb475546f7c9908c0\",\"dweb:/ipfs/QmeaHPjKmGZBC15iiYKsDCY1k2UY3iYZiNB6Pdc8ow6aVX\"]},\"lib/risc0-ethereum/contracts/src/Util.sol\":{\"keccak256\":\"0x230a9a58bb2b0c68d4921ecc3672783f941890a2fa3a238dbe5188cfb7658b82\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://586cb5296c564761609ca8aaae5b1fbbdb19ab1e174f7197f602572d9e82b70c\",\"dweb:/ipfs/QmWxDmucSfg3Wgdk1rVcheDHwkziTsXWvKpKSCnxtpQBqg\"]},\"src/Blobstream0.sol\":{\"keccak256\":\"0xe2ee89a2ddc41c49cc5736ad39972e07e62b0dd12f7e86eb4690ab504b03b21f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1e0dad581c361baaeb18f1373c5a62cdd3bfe13796b3362b6c372ae6631d6120\",\"dweb:/ipfs/Qme9x28hy6sqxBer8fAtkfwS3nXW8JRfN2ZFdaBobf1kV3\"]},\"src/ImageID.sol\":{\"keccak256\":\"0xc8e32ba56f8455a56f2be97ca62a6d1d5a9505f6ad2336787c5b0c3d1cdfc835\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://03ec0e63a90d70403d0ef0a85b364534e630fde98e5390af289281ea579eae28\",\"dweb:/ipfs/QmPhVWAGoamYRm3Uzv5vu92PXuMDU5YHCiKeqAmEzY19mo\"]},\"src/RangeCommitment.sol\":{\"keccak256\":\"0x5e348841d50935293df2072b720b55b4efa76bb66afd34d64c7c77c1d8a209d8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4ef3085d6c2cf5badf284827eaa3cdc469663fe32f6f3356a4381f14923b36df\",\"dweb:/ipfs/QmcPw35WFcVvDJPDhgd67R3mhtRe6GJUGTJ5dwBz5fVBHf\"]}},\"version\":1}" + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"},{\"internalType\":\"contract IRiscZeroVerifier\",\"name\":\"_verifier\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_trustedHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_trustedHeight\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidTargetHeight\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTrustedHeaderHash\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proofNonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"startBlock\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"endBlock\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"dataCommitment\",\"type\":\"bytes32\"}],\"name\":\"DataCommitmentStored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"headerHash\",\"type\":\"bytes32\"}],\"name\":\"HeadUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"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\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_imageId\",\"type\":\"bytes32\"}],\"name\":\"adminSetImageId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_trustedHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_trustedHeight\",\"type\":\"uint64\"}],\"name\":\"adminSetTrustedState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRiscZeroVerifier\",\"name\":\"_verifier\",\"type\":\"address\"}],\"name\":\"adminSetVerifier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"imageId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestHeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proofNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"trustedHeaderHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"newHeight\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newHeaderHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"merkleRoot\",\"type\":\"bytes32\"}],\"internalType\":\"struct RangeCommitment\",\"name\":\"_commit\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_seal\",\"type\":\"bytes\"}],\"name\":\"updateRange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"verifier\",\"outputs\":[{\"internalType\":\"contract IRiscZeroVerifier\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proofNonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"dataRoot\",\"type\":\"bytes32\"}],\"internalType\":\"struct DataRootTuple\",\"name\":\"_tuple\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"sideNodes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numLeaves\",\"type\":\"uint256\"}],\"internalType\":\"struct BinaryMerkleProof\",\"name\":\"_proof\",\"type\":\"tuple\"}],\"name\":\"verifyAttestation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"DataCommitmentStored(uint256,uint64,uint64,bytes32)\":{\"params\":{\"dataCommitment\":\"The data commitment for the block range.\",\"endBlock\":\"The end block of the block range.\",\"proofNonce\":\"The nonce of the proof.\",\"startBlock\":\"The start block of the block range.\"}}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"},\"verifyAttestation(uint256,(uint256,bytes32),(bytes32[],uint256,uint256))\":{\"params\":{\"_proof\":\"Binary Merkle tree proof that `tuple` is in the root at `_tupleRootNonce`.\",\"_proofNonce\":\"Nonce of the tuple root to prove against.\",\"_tuple\":\"Data root tuple to prove inclusion of.\"},\"returns\":{\"_0\":\"`true` is proof is valid, `false` otherwise.\"}}},\"stateVariables\":{\"latestBlockHash\":{\"details\":\"always update this in tandem with\"}},\"title\":\"A starter application using RISC Zero.\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidTargetHeight()\":[{\"notice\":\"Target height for next batch was below the current height.\"}],\"InvalidTrustedHeaderHash()\":[{\"notice\":\"Trusted block hash does not equal the commitment from the new batch.\"}]},\"events\":{\"DataCommitmentStored(uint256,uint64,uint64,bytes32)\":{\"notice\":\"Data commitment stored for the block range [startBlock, endBlock) with proof nonce. NOTE: This event matches existing Blobstream contracts, for ease of integration.\"},\"HeadUpdate(uint64,bytes32)\":{\"notice\":\"Emits event with the new head update. NOTE: Matches existing Blobstream contract, for ease of integration.\"}},\"kind\":\"user\",\"methods\":{\"adminSetImageId(bytes32)\":{\"notice\":\"Only the admin can update. Updates the image ID to verify proofs against.\"},\"adminSetTrustedState(bytes32,uint64)\":{\"notice\":\"Only the admin can update. Updates the trusted height and block hash to sync from.\"},\"adminSetVerifier(address)\":{\"notice\":\"Only the admin can update. Updates the verifier contract address.\"},\"constructor\":{\"notice\":\"Initialize the contract, binding it to a specified RISC Zero verifier.\"},\"imageId()\":{\"notice\":\"Image ID of the only zkVM binary to accept verification from. The image ID is similar to the address of a smart contract. It uniquely represents the logic of that guest program, ensuring that only proofs generated from a pre-defined guest program (in this case, checking if a number is even) are considered valid.\"},\"latestBlockHash()\":{\"notice\":\"The latest block hash validated.\"},\"latestHeight()\":{\"notice\":\"The latest height validated.\"},\"updateRange((bytes32,uint64,bytes32,bytes32),bytes)\":{\"notice\":\"Validate a proof of a new header range, update state.\"},\"verifier()\":{\"notice\":\"RISC Zero verifier contract address.\"},\"verifyAttestation(uint256,(uint256,bytes32),(bytes32[],uint256,uint256))\":{\"notice\":\"Verify a Data Availability attestation. Method of IDAOracle from Blobstream contract.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Blobstream0.sol\":\"Blobstream0\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":blobstream-contracts/=lib/blobstream-contracts/src/\",\":blobstream/=lib/blobstream-contracts/src/\",\":ds-test/=lib/blobstream-contracts/lib/ds-test/src/\",\":erc4626-tests/=lib/blobstream-contracts/lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/blobstream-contracts/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/\",\":risc0-ethereum/=lib/risc0-ethereum/\",\":risc0/=lib/risc0-ethereum/contracts/src/\",\":tree/=lib/blobstream-contracts/src/lib/tree/\",\":verifier/=lib/blobstream-contracts/src/lib/verifier/\"]},\"sources\":{\"lib/blobstream-contracts/src/DataRootTuple.sol\":{\"keccak256\":\"0x0526597d14a6d7f258ec48e434a9b60c9a8781764a8f23c878d49926daeb5d1c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://06ee253f8d0f58dbe66c64cb5d2945182ba3bced088167472d8f953cec421916\",\"dweb:/ipfs/QmUF9jjr6bH3pPgjGAZqYhsUn7EevqU7kZn8RBqQ4EoU2w\"]},\"lib/blobstream-contracts/src/IDAOracle.sol\":{\"keccak256\":\"0xc35648b17d3587bc3a627f67a328874db536ee24c11b970c3c57226d69a32eec\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://362610301e6057d10777c84111d4bb43af53af75a488fb8ab8666a775302a3fc\",\"dweb:/ipfs/QmURgSTYhiguV1oCUARaTTWrpFHg5nMEtxhPVcpUDuEKq6\"]},\"lib/blobstream-contracts/src/lib/tree/Constants.sol\":{\"keccak256\":\"0x2050b2be8a739ce250cc5cea1556936c7937915b5d7fde269dd70e8e7eb660c4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://946ea30d1001048a800f60bb24d2ab7ecf5f92ae2abd212f3f855e37a6840ce7\",\"dweb:/ipfs/QmW2PnhAB5h2eCCM6Vafg8ZUpBttjLTbBhtXjJh3SSrYEN\"]},\"lib/blobstream-contracts/src/lib/tree/Types.sol\":{\"keccak256\":\"0xa47e9e20fef88264acdf1fc6bc0b3bb9f23c7022f5de8d203a1014895a606958\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d480249b6adf8730bffcf26eed5902eb9fd1d56d11f931b35a9e19c6415b3f47\",\"dweb:/ipfs/QmPCrcMmQdNMYG232WxEg2zZRFvXQqdEZgwQNMaDJ2oNab\"]},\"lib/blobstream-contracts/src/lib/tree/Utils.sol\":{\"keccak256\":\"0x9760cb3ab3d4f412949b9be1bbdf5d9e7954cad44a94a4f7fe90fcffb86fe7fa\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://06edf92a63d5b2c3459800acc6945071ee069be6df03b70f28440c5c732465aa\",\"dweb:/ipfs/QmU4LnS5ckxXpEBE82y5gfsNxn5gUQPh273nLrmfPP9pjD\"]},\"lib/blobstream-contracts/src/lib/tree/binary/BinaryMerkleProof.sol\":{\"keccak256\":\"0x9fb953284b455b544091f058fdb11ac73928093517333909c0744d9319410688\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://938230a60210345fe7cc661708c4fe0db663a5f5b5306f05fe4023b44f104b6e\",\"dweb:/ipfs/QmUvcJuDmwnbRzXX5qgV4Mckg6ujvMeo46SrTPvgpPhFSF\"]},\"lib/blobstream-contracts/src/lib/tree/binary/BinaryMerkleTree.sol\":{\"keccak256\":\"0x90dc9ac613014c2d3fcebbd23f2b5af67188b7de80b2ef853f20c91a14ce68fd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4dffcfb8911d174787b05d814c423ea368c6526e32d762576fb5109e517a185f\",\"dweb:/ipfs/QmRxYnjwkEANhqXkoNifG2kbGtEymyLRU5h2NyPTZ5wbSE\"]},\"lib/blobstream-contracts/src/lib/tree/binary/TreeHasher.sol\":{\"keccak256\":\"0x2f16501eac14f6e2a61de29d3aa10e3aaf8e0a594fc9cf8dc2d955bb2f6d54e0\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://984a2e5d52cfdd38f2c597bddc4a2de8ad1e4dd9c81008376569a29c74fa963e\",\"dweb:/ipfs/QmaXhfHD58Jv4nSw3qw2hGwbDSPKDjFzPNYWm9Y4KWiigm\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/risc0-ethereum/contracts/src/IRiscZeroVerifier.sol\":{\"keccak256\":\"0x19341f62c8fe3c0945ebffa4f25d49706ded741af98eaacb7ade824c947f61a4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5d443c7187fd565e25acdfd3df63f14421d06dda0839470cb475546f7c9908c0\",\"dweb:/ipfs/QmeaHPjKmGZBC15iiYKsDCY1k2UY3iYZiNB6Pdc8ow6aVX\"]},\"lib/risc0-ethereum/contracts/src/Util.sol\":{\"keccak256\":\"0x230a9a58bb2b0c68d4921ecc3672783f941890a2fa3a238dbe5188cfb7658b82\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://586cb5296c564761609ca8aaae5b1fbbdb19ab1e174f7197f602572d9e82b70c\",\"dweb:/ipfs/QmWxDmucSfg3Wgdk1rVcheDHwkziTsXWvKpKSCnxtpQBqg\"]},\"src/Blobstream0.sol\":{\"keccak256\":\"0xe2ee89a2ddc41c49cc5736ad39972e07e62b0dd12f7e86eb4690ab504b03b21f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1e0dad581c361baaeb18f1373c5a62cdd3bfe13796b3362b6c372ae6631d6120\",\"dweb:/ipfs/Qme9x28hy6sqxBer8fAtkfwS3nXW8JRfN2ZFdaBobf1kV3\"]},\"src/ImageID.sol\":{\"keccak256\":\"0x8417991bae246fe8d91d09fcf3b11ad55051658ac76371c7e4832ebcea35ef08\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://80db8bc48a8f0923411f2223000d416aa052e5af386b0997032ffdce65ea4aff\",\"dweb:/ipfs/QmWYydD4V912Jf1epuh6NFg5EFkA3agABAXFUFqHme8rDE\"]},\"src/RangeCommitment.sol\":{\"keccak256\":\"0x5e348841d50935293df2072b720b55b4efa76bb66afd34d64c7c77c1d8a209d8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4ef3085d6c2cf5badf284827eaa3cdc469663fe32f6f3356a4381f14923b36df\",\"dweb:/ipfs/QmcPw35WFcVvDJPDhgd67R3mhtRe6GJUGTJ5dwBz5fVBHf\"]}},\"version\":1}" } \ No newline at end of file diff --git a/contracts/src/ImageID.sol b/contracts/src/ImageID.sol index 7bb87b6..d60acca 100644 --- a/contracts/src/ImageID.sol +++ b/contracts/src/ImageID.sol @@ -19,5 +19,5 @@ pragma solidity ^0.8.20; library ImageID { - bytes32 public constant BATCH_GUEST_ID = bytes32(0x55889a72c3b7bb69f3e1c5aef4668e945b5b83b9e09fc736745d90587b4a164b); + bytes32 public constant BATCH_GUEST_ID = bytes32(0xa661b22447ae53f63d551fbdb0932d9dcaeb226e83e3bb45422e6ec40d3888a4); } diff --git a/core/src/lib.rs b/core/src/lib.rs index a052088..42485a5 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -170,7 +170,7 @@ pub async fn prove_block(input: LightBlockProveData) -> anyhow::Result // Note: must be in blocking context to not have issues with Bonsai blocking client when selected let prove_info = tokio::task::spawn_blocking(move || { let env = ExecutorEnv::builder() - .write(&buffer_len)? + .write_slice(&[buffer_len]) .write_slice(&buffer) .build()?; diff --git a/light-client-guest/guest/src/main.rs b/light-client-guest/guest/src/main.rs index 4e201cf..de0e63f 100644 --- a/light-client-guest/guest/src/main.rs +++ b/light-client-guest/guest/src/main.rs @@ -78,7 +78,8 @@ fn light_client_verify(trusted_block: &TrustedLightBlock, untrusted_block: &Untr } fn main() { - let len: u32 = env::read(); + let mut len: u32 = 0; + env::read_slice(core::slice::from_mut(&mut len)); let mut buf = vec![0; len as usize]; env::read_slice(&mut buf);