@cartesi/devnet 1.8.0 → 2.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/build/anvil_state.json +1 -1
  2. package/deployments/localhost/ApplicationFactory.json +227 -0
  3. package/deployments/localhost/AuthorityFactory.json +55 -44
  4. package/deployments/localhost/ERC1155BatchPortal.json +26 -26
  5. package/deployments/localhost/ERC1155SinglePortal.json +25 -25
  6. package/deployments/localhost/ERC20Portal.json +35 -23
  7. package/deployments/localhost/ERC721Portal.json +23 -23
  8. package/deployments/localhost/EtherPortal.json +21 -21
  9. package/deployments/localhost/InputBox.json +64 -58
  10. package/deployments/localhost/QuorumFactory.json +188 -0
  11. package/deployments/localhost/SafeERC20Transfer.json +118 -0
  12. package/deployments/localhost/SelfHostedApplicationFactory.json +71 -70
  13. package/deployments/localhost/TestMultiToken.json +18 -18
  14. package/deployments/localhost/TestNFT.json +24 -24
  15. package/deployments/localhost/TestToken.json +28 -28
  16. package/export/abi/localhost.json +234 -602
  17. package/export/artifacts/@openzeppelin/contracts/access/manager/IAccessManager.sol/IAccessManager.json +11 -22
  18. package/export/artifacts/@openzeppelin/contracts/interfaces/IERC4906.sol/IERC4906.json +4 -4
  19. package/export/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.json +1 -1
  20. package/export/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.json +1 -1
  21. package/export/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.json +2 -2
  22. package/export/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.json +1 -1
  23. package/export/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.json +4 -4
  24. package/export/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.json +3 -3
  25. package/export/artifacts/@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol/IERC1155MetadataURI.json +4 -4
  26. package/export/artifacts/@openzeppelin/contracts/token/ERC1155/utils/ERC1155Utils.sol/ERC1155Utils.json +34 -0
  27. package/export/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +2 -2
  28. package/export/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +1 -1
  29. package/export/artifacts/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol/ERC20Burnable.json +1 -1
  30. package/export/artifacts/@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol/ERC20Pausable.json +2 -2
  31. package/export/artifacts/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol/ERC20Permit.json +3 -3
  32. package/export/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +1 -1
  33. package/export/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol/IERC20Permit.json +1 -1
  34. package/export/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json +2 -2
  35. package/export/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.json +4 -4
  36. package/export/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.json +2 -2
  37. package/export/artifacts/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol/ERC721URIStorage.json +2 -2
  38. package/export/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.json +3 -3
  39. package/export/artifacts/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol/ERC721Utils.json +33 -0
  40. package/export/artifacts/@openzeppelin/contracts/utils/Arrays.sol/Arrays.json +26 -3
  41. package/export/artifacts/@openzeppelin/contracts/utils/Comparators.sol/Comparators.json +34 -0
  42. package/export/artifacts/@openzeppelin/contracts/utils/Panic.sol/Panic.json +65 -0
  43. package/export/artifacts/@openzeppelin/contracts/utils/ShortStrings.sol/ShortStrings.json +2 -2
  44. package/export/artifacts/@openzeppelin/contracts/utils/SlotDerivation.sol/SlotDerivation.json +42 -0
  45. package/export/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +4 -3
  46. package/export/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +3 -2
  47. package/export/artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.json +2 -2
  48. package/export/artifacts/@openzeppelin/contracts/utils/cryptography/EIP712.sol/EIP712.json +2 -2
  49. package/export/artifacts/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol/MessageHashUtils.json +3 -3
  50. package/export/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +1 -1
  51. package/export/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +2 -2
  52. package/export/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json +11 -16
  53. package/export/artifacts/@openzeppelin/contracts/utils/math/SafeCast.sol/SafeCast.json +4 -3
  54. package/export/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json +4 -3
  55. package/export/artifacts/@openzeppelin/contracts/utils/types/Time.sol/Time.json +2 -2
  56. package/export/artifacts/contracts/TestMultiToken.sol/TestMultiToken.json +3 -3
  57. package/export/artifacts/contracts/TestNFT.sol/TestNFT.json +4 -4
  58. package/export/artifacts/contracts/TestToken.sol/TestToken.json +3 -3
  59. package/package.json +11 -11
  60. package/deployments/localhost/AuthorityHistoryPairFactory.json +0 -276
  61. package/deployments/localhost/Bitmask.json +0 -44
  62. package/deployments/localhost/CartesiDAppFactory.json +0 -231
  63. package/deployments/localhost/CartesiMathV2.json +0 -213
  64. package/deployments/localhost/DAppAddressRelay.json +0 -102
  65. package/deployments/localhost/HistoryFactory.json +0 -177
  66. package/deployments/localhost/MerkleV2.json +0 -217
  67. package/deployments/localhost/UnrolledCordic.json +0 -54
@@ -1,11 +1,11 @@
1
1
  {
2
- "address": "0xFfdbe43d4c855BF7e0f105c400A50857f53AB044",
2
+ "address": "0xfa2292f6D85ea4e629B156A4f99219e30D12EE17",
3
3
  "abi": [
4
4
  {
5
5
  "inputs": [
6
6
  {
7
7
  "internalType": "contract IInputBox",
8
- "name": "_inputBox",
8
+ "name": "inputBox",
9
9
  "type": "address"
10
10
  }
11
11
  ],
@@ -21,12 +21,12 @@
21
21
  "inputs": [
22
22
  {
23
23
  "internalType": "address",
24
- "name": "_dapp",
24
+ "name": "appContract",
25
25
  "type": "address"
26
26
  },
27
27
  {
28
28
  "internalType": "bytes",
29
- "name": "_execLayerData",
29
+ "name": "execLayerData",
30
30
  "type": "bytes"
31
31
  }
32
32
  ],
@@ -49,41 +49,41 @@
49
49
  "type": "function"
50
50
  }
51
51
  ],
52
- "transactionHash": "0x8f0218a6f2e1bb3ee7bb9755f4295aff6718b16cc9645cd0e8535d605e015afe",
52
+ "transactionHash": "0x76369988f5c375e7b73285be6c033c5c6e8c9e6f3dd614a4747d77642675d260",
53
53
  "receipt": {
54
54
  "to": "0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7",
55
55
  "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
56
56
  "contractAddress": null,
57
57
  "transactionIndex": 0,
58
- "gasUsed": "237926",
58
+ "gasUsed": "238142",
59
59
  "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
60
- "blockHash": "0xf08ff233b7f2e8a256de38541e9cb933be97909573b9c49e9c2b50e9551e31a3",
61
- "transactionHash": "0x8f0218a6f2e1bb3ee7bb9755f4295aff6718b16cc9645cd0e8535d605e015afe",
60
+ "blockHash": "0xcd66917043763dfe432bb953f89c42b6874fb217cd2942b09b36cb1342fa466c",
61
+ "transactionHash": "0x76369988f5c375e7b73285be6c033c5c6e8c9e6f3dd614a4747d77642675d260",
62
62
  "logs": [],
63
- "blockNumber": 8,
64
- "cumulativeGasUsed": "237926",
63
+ "blockNumber": 4,
64
+ "cumulativeGasUsed": "238142",
65
65
  "status": 1,
66
66
  "byzantium": true
67
67
  },
68
68
  "args": [
69
- "0x59b22D57D4f067708AB0c00552767405926dc768"
69
+ "0x593E5BCf894D6829Dd26D0810DA7F064406aebB6"
70
70
  ],
71
71
  "numDeployments": 1,
72
- "bytecode": "0x60a060405234801561001057600080fd5b506040516103de3803806103de83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161034d61009160003960008181603c0152610128015261034d6000f3fe6080604052600436106100285760003560e01c8062aace9a1461002d578063938c054f14610077575b600080fd5b34801561003957600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006040516001600160a01b03909116815260200160405180910390f35b61008a6100853660046101dc565b61008c565b005b6000836001600160a01b03163460405160006040518083038185875af1925050503d80600081146100d9576040519150601f19603f3d011682016040523d82523d6000602084013e6100de565b606091505b505090508061010057604051630ce8f45160e31b815260040160405180910390fd5b600061010e333486866101aa565b604051631789cd6360e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631789cd639061015f908890859060040161026d565b6020604051808303816000875af115801561017e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a291906102cb565b505050505050565b6060848484846040516020016101c394939291906102e4565b6040516020818303038152906040529050949350505050565b6000806000604084860312156101f157600080fd5b83356001600160a01b038116811461020857600080fd5b9250602084013567ffffffffffffffff8082111561022557600080fd5b818601915086601f83011261023957600080fd5b81358181111561024857600080fd5b87602082850101111561025a57600080fd5b6020830194508093505050509250925092565b60018060a01b038316815260006020604081840152835180604085015260005b818110156102a95785810183015185820160600152820161028d565b506000606082860101526060601f19601f830116850101925050509392505050565b6000602082840312156102dd57600080fd5b5051919050565b6bffffffffffffffffffffffff198560601b1681528360148201528183603483013760009101603401908152939250505056fea26469706673582212203555bb6cf9b2020729bb19c561673a225f367cd3219906075930d8b9f3fb219864736f6c63430008130033",
73
- "deployedBytecode": "0x6080604052600436106100285760003560e01c8062aace9a1461002d578063938c054f14610077575b600080fd5b34801561003957600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006040516001600160a01b03909116815260200160405180910390f35b61008a6100853660046101dc565b61008c565b005b6000836001600160a01b03163460405160006040518083038185875af1925050503d80600081146100d9576040519150601f19603f3d011682016040523d82523d6000602084013e6100de565b606091505b505090508061010057604051630ce8f45160e31b815260040160405180910390fd5b600061010e333486866101aa565b604051631789cd6360e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631789cd639061015f908890859060040161026d565b6020604051808303816000875af115801561017e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a291906102cb565b505050505050565b6060848484846040516020016101c394939291906102e4565b6040516020818303038152906040529050949350505050565b6000806000604084860312156101f157600080fd5b83356001600160a01b038116811461020857600080fd5b9250602084013567ffffffffffffffff8082111561022557600080fd5b818601915086601f83011261023957600080fd5b81358181111561024857600080fd5b87602082850101111561025a57600080fd5b6020830194508093505050509250925092565b60018060a01b038316815260006020604081840152835180604085015260005b818110156102a95785810183015185820160600152820161028d565b506000606082860101526060601f19601f830116850101925050509392505050565b6000602082840312156102dd57600080fd5b5051919050565b6bffffffffffffffffffffffff198560601b1681528360148201528183603483013760009101603401908152939250505056fea26469706673582212203555bb6cf9b2020729bb19c561673a225f367cd3219906075930d8b9f3fb219864736f6c63430008130033",
72
+ "bytecode": "0x60a060405234801561001057600080fd5b506040516103df3803806103df83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161034e61009160003960008181603c0152610128015261034e6000f3fe6080604052600436106100285760003560e01c8062aace9a1461002d578063938c054f14610077575b600080fd5b34801561003957600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006040516001600160a01b03909116815260200160405180910390f35b61008a6100853660046101dc565b61008c565b005b6000836001600160a01b03163460405160006040518083038185875af1925050503d80600081146100d9576040519150601f19603f3d011682016040523d82523d6000602084013e6100de565b606091505b505090508061010057604051630ce8f45160e31b815260040160405180910390fd5b600061010e333486866101aa565b604051631789cd6360e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631789cd639061015f908890859060040161026d565b6020604051808303816000875af115801561017e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a291906102cc565b505050505050565b6060848484846040516020016101c394939291906102e5565b6040516020818303038152906040529050949350505050565b6000806000604084860312156101f157600080fd5b83356001600160a01b038116811461020857600080fd5b9250602084013567ffffffffffffffff8082111561022557600080fd5b818601915086601f83011261023957600080fd5b81358181111561024857600080fd5b87602082850101111561025a57600080fd5b6020830194508093505050509250925092565b60018060a01b03831681526000602060406020840152835180604085015260005b818110156102aa5785810183015185820160600152820161028e565b506000606082860101526060601f19601f830116850101925050509392505050565b6000602082840312156102de57600080fd5b5051919050565b6bffffffffffffffffffffffff198560601b1681528360148201528183603483013760009101603401908152939250505056fea2646970667358221220e52bd9bc274e5c6b8dd2815a9a07e76c86edd92be566abb0729d8f7b78e6ca4664736f6c63430008170033",
73
+ "deployedBytecode": "0x6080604052600436106100285760003560e01c8062aace9a1461002d578063938c054f14610077575b600080fd5b34801561003957600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006040516001600160a01b03909116815260200160405180910390f35b61008a6100853660046101dc565b61008c565b005b6000836001600160a01b03163460405160006040518083038185875af1925050503d80600081146100d9576040519150601f19603f3d011682016040523d82523d6000602084013e6100de565b606091505b505090508061010057604051630ce8f45160e31b815260040160405180910390fd5b600061010e333486866101aa565b604051631789cd6360e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631789cd639061015f908890859060040161026d565b6020604051808303816000875af115801561017e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a291906102cc565b505050505050565b6060848484846040516020016101c394939291906102e5565b6040516020818303038152906040529050949350505050565b6000806000604084860312156101f157600080fd5b83356001600160a01b038116811461020857600080fd5b9250602084013567ffffffffffffffff8082111561022557600080fd5b818601915086601f83011261023957600080fd5b81358181111561024857600080fd5b87602082850101111561025a57600080fd5b6020830194508093505050509250925092565b60018060a01b03831681526000602060406020840152835180604085015260005b818110156102aa5785810183015185820160600152820161028e565b506000606082860101526060601f19601f830116850101925050509392505050565b6000602082840312156102de57600080fd5b5051919050565b6bffffffffffffffffffffffff198560601b1681528360148201528183603483013760009101603401908152939250505056fea2646970667358221220e52bd9bc274e5c6b8dd2815a9a07e76c86edd92be566abb0729d8f7b78e6ca4664736f6c63430008170033",
74
74
  "devdoc": {
75
75
  "kind": "dev",
76
76
  "methods": {
77
77
  "constructor": {
78
78
  "params": {
79
- "_inputBox": "The input box used by the portal"
79
+ "inputBox": "The input box used by the portal"
80
80
  }
81
81
  },
82
82
  "depositEther(address,bytes)": {
83
- "details": "All the value sent through this function is forwarded to the DApp. If the transfer fails, `EtherTransferFailed` error is raised.",
83
+ "details": "Any Ether sent through this function will be forwarded to the application contract. If the transfer fails, an `EtherTransferFailed` error will be raised.",
84
84
  "params": {
85
- "_dapp": "The address of the DApp",
86
- "_execLayerData": "Additional data to be interpreted by the execution layer"
85
+ "appContract": "The application contract address",
86
+ "execLayerData": "Additional data to be interpreted by the execution layer"
87
87
  }
88
88
  },
89
89
  "getInputBox()": {
@@ -99,7 +99,7 @@
99
99
  "errors": {
100
100
  "EtherTransferFailed()": [
101
101
  {
102
- "notice": "Raised when the Ether transfer fails."
102
+ "notice": "Failed to transfer Ether to application"
103
103
  }
104
104
  ]
105
105
  },
@@ -109,13 +109,13 @@
109
109
  "notice": "Constructs the portal."
110
110
  },
111
111
  "depositEther(address,bytes)": {
112
- "notice": "Transfer Ether to a DApp and add an input to the DApp's input box to signal such operation. All the value sent through this function is forwarded to the DApp."
112
+ "notice": "Transfer Ether to an application contract and add an input to the application's input box to signal such operation."
113
113
  },
114
114
  "getInputBox()": {
115
- "notice": "Get the input box used by this input relay."
115
+ "notice": "Get the input box used by this portal."
116
116
  }
117
117
  },
118
- "notice": "This contract allows anyone to perform transfers of Ether to a DApp while informing the off-chain machine.",
118
+ "notice": "This contract allows anyone to perform transfers of Ether to an application contract while informing the off-chain machine.",
119
119
  "version": 1
120
120
  }
121
121
  }
@@ -1,9 +1,25 @@
1
1
  {
2
- "address": "0x59b22D57D4f067708AB0c00552767405926dc768",
2
+ "address": "0x593E5BCf894D6829Dd26D0810DA7F064406aebB6",
3
3
  "abi": [
4
4
  {
5
- "inputs": [],
6
- "name": "InputSizeExceedsLimit",
5
+ "inputs": [
6
+ {
7
+ "internalType": "address",
8
+ "name": "appContract",
9
+ "type": "address"
10
+ },
11
+ {
12
+ "internalType": "uint256",
13
+ "name": "inputLength",
14
+ "type": "uint256"
15
+ },
16
+ {
17
+ "internalType": "uint256",
18
+ "name": "maxInputLength",
19
+ "type": "uint256"
20
+ }
21
+ ],
22
+ "name": "InputTooLarge",
7
23
  "type": "error"
8
24
  },
9
25
  {
@@ -12,21 +28,15 @@
12
28
  {
13
29
  "indexed": true,
14
30
  "internalType": "address",
15
- "name": "dapp",
31
+ "name": "appContract",
16
32
  "type": "address"
17
33
  },
18
34
  {
19
35
  "indexed": true,
20
36
  "internalType": "uint256",
21
- "name": "inputIndex",
37
+ "name": "index",
22
38
  "type": "uint256"
23
39
  },
24
- {
25
- "indexed": false,
26
- "internalType": "address",
27
- "name": "sender",
28
- "type": "address"
29
- },
30
40
  {
31
41
  "indexed": false,
32
42
  "internalType": "bytes",
@@ -41,12 +51,12 @@
41
51
  "inputs": [
42
52
  {
43
53
  "internalType": "address",
44
- "name": "_dapp",
54
+ "name": "appContract",
45
55
  "type": "address"
46
56
  },
47
57
  {
48
58
  "internalType": "bytes",
49
- "name": "_input",
59
+ "name": "payload",
50
60
  "type": "bytes"
51
61
  }
52
62
  ],
@@ -65,12 +75,12 @@
65
75
  "inputs": [
66
76
  {
67
77
  "internalType": "address",
68
- "name": "_dapp",
78
+ "name": "appContract",
69
79
  "type": "address"
70
80
  },
71
81
  {
72
82
  "internalType": "uint256",
73
- "name": "_index",
83
+ "name": "index",
74
84
  "type": "uint256"
75
85
  }
76
86
  ],
@@ -89,7 +99,7 @@
89
99
  "inputs": [
90
100
  {
91
101
  "internalType": "address",
92
- "name": "_dapp",
102
+ "name": "appContract",
93
103
  "type": "address"
94
104
  }
95
105
  ],
@@ -105,103 +115,99 @@
105
115
  "type": "function"
106
116
  }
107
117
  ],
108
- "transactionHash": "0x94edc9cacd15325b27b3a49336216ccd59d0e1486cad856d3a4d7c765a6b99d5",
118
+ "transactionHash": "0xd6c10625dafee35aa184694a72f0065fbf7b94116b6bb75da9add82b91436b1c",
109
119
  "receipt": {
110
120
  "to": "0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7",
111
121
  "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
112
122
  "contractAddress": null,
113
123
  "transactionIndex": 0,
114
- "gasUsed": "260728",
124
+ "gasUsed": "275862",
115
125
  "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
116
- "blockHash": "0x5ada618c12f968afae6f83566d14e9bf6183d4f826f76655d4d3906d7c8a44fb",
117
- "transactionHash": "0x94edc9cacd15325b27b3a49336216ccd59d0e1486cad856d3a4d7c765a6b99d5",
126
+ "blockHash": "0x11a091612943380faf55d778caea8f694992f419320436ae5c566dd04bcb94a6",
127
+ "transactionHash": "0xd6c10625dafee35aa184694a72f0065fbf7b94116b6bb75da9add82b91436b1c",
118
128
  "logs": [],
119
- "blockNumber": 7,
120
- "cumulativeGasUsed": "260728",
129
+ "blockNumber": 3,
130
+ "cumulativeGasUsed": "275862",
121
131
  "status": 1,
122
132
  "byzantium": true
123
133
  },
124
134
  "args": [],
125
135
  "numDeployments": 1,
126
- "bytecode": "0x608060405234801561001057600080fd5b506103be806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80631789cd631461004657806361a93c871461006b578063677087c914610094575b600080fd5b610059610054366004610253565b6100a7565b60405190815260200160405180910390f35b6100596100793660046102d6565b6001600160a01b031660009081526020819052604090205490565b6100596100a23660046102f8565b61013b565b6001600160a01b03831660009081526020819052604081208054826100d0334342898987610178565b83546001810185556000858152602090200181905560405190915082906001600160a01b038916907f6aaa400068bf4ca337265e2a1e1e841f66b8597fd5b452fdc52a44bed28a0784906101299033908b908b90610322565b60405180910390a39695505050505050565b6001600160a01b038216600090815260208190526040812080548390811061016557610165610362565b9060005260206000200154905092915050565b6000621fffc083111561019e57604051634273a49560e11b815260040160405180910390fd5b604080516001600160a01b03891660208201529081018790526060810186905260006080820181905260a082018490529060c001604051602081830303815290604052805190602001209050600085856040516101fc929190610378565b604080519182900382206020808401959095528282015280518083038201815260609092019052805192019190912098975050505050505050565b80356001600160a01b038116811461024e57600080fd5b919050565b60008060006040848603121561026857600080fd5b61027184610237565b9250602084013567ffffffffffffffff8082111561028e57600080fd5b818601915086601f8301126102a257600080fd5b8135818111156102b157600080fd5b8760208285010111156102c357600080fd5b6020830194508093505050509250925092565b6000602082840312156102e857600080fd5b6102f182610237565b9392505050565b6000806040838503121561030b57600080fd5b61031483610237565b946020939093013593505050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b634e487b7160e01b600052603260045260246000fd5b818382376000910190815291905056fea264697066735822122043b0a58952371efb5f75573ec65e82305da7154e6338f4e9c00f5cc07f92c4af64736f6c63430008130033",
127
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80631789cd631461004657806361a93c871461006b578063677087c914610094575b600080fd5b610059610054366004610253565b6100a7565b60405190815260200160405180910390f35b6100596100793660046102d6565b6001600160a01b031660009081526020819052604090205490565b6100596100a23660046102f8565b61013b565b6001600160a01b03831660009081526020819052604081208054826100d0334342898987610178565b83546001810185556000858152602090200181905560405190915082906001600160a01b038916907f6aaa400068bf4ca337265e2a1e1e841f66b8597fd5b452fdc52a44bed28a0784906101299033908b908b90610322565b60405180910390a39695505050505050565b6001600160a01b038216600090815260208190526040812080548390811061016557610165610362565b9060005260206000200154905092915050565b6000621fffc083111561019e57604051634273a49560e11b815260040160405180910390fd5b604080516001600160a01b03891660208201529081018790526060810186905260006080820181905260a082018490529060c001604051602081830303815290604052805190602001209050600085856040516101fc929190610378565b604080519182900382206020808401959095528282015280518083038201815260609092019052805192019190912098975050505050505050565b80356001600160a01b038116811461024e57600080fd5b919050565b60008060006040848603121561026857600080fd5b61027184610237565b9250602084013567ffffffffffffffff8082111561028e57600080fd5b818601915086601f8301126102a257600080fd5b8135818111156102b157600080fd5b8760208285010111156102c357600080fd5b6020830194508093505050509250925092565b6000602082840312156102e857600080fd5b6102f182610237565b9392505050565b6000806040838503121561030b57600080fd5b61031483610237565b946020939093013593505050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b634e487b7160e01b600052603260045260246000fd5b818382376000910190815291905056fea264697066735822122043b0a58952371efb5f75573ec65e82305da7154e6338f4e9c00f5cc07f92c4af64736f6c63430008130033",
136
+ "bytecode": "0x608060405234801561001057600080fd5b50610404806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80631789cd631461004657806361a93c871461006b578063677087c914610094575b600080fd5b610059610054366004610226565b6100a7565b60405190815260200160405180910390f35b6100596100793660046102a9565b6001600160a01b031660009081526020819052604090205490565b6100596100a23660046102cb565b6101cd565b6001600160a01b0383166000908152602081905260408082208054915190919083906100e79046908990339043904290449089908e908e906024016102f5565b60408051601f198184030181529190526020810180516001600160e01b031663415bf36360e01b179052805190915062200000101561015b5780516040516304f90dc560e51b81526001600160a01b0389166004820152602481019190915262200000604482015260640160405180910390fd5b8051602080830191909120845460018101865560008681529290922090910181905560405183906001600160a01b038a16907fc05d337121a6e8605c6ec0b72aa29c4210ffe6e5b9cefdd6a7058188a8f66f98906101ba908690610369565b60405180910390a3979650505050505050565b6001600160a01b03821660009081526020819052604081208054839081106101f7576101f76103b8565b9060005260206000200154905092915050565b80356001600160a01b038116811461022157600080fd5b919050565b60008060006040848603121561023b57600080fd5b6102448461020a565b9250602084013567ffffffffffffffff8082111561026157600080fd5b818601915086601f83011261027557600080fd5b81358181111561028457600080fd5b87602082850101111561029657600080fd5b6020830194508093505050509250925092565b6000602082840312156102bb57600080fd5b6102c48261020a565b9392505050565b600080604083850312156102de57600080fd5b6102e78361020a565b946020939093013593505050565b8981526001600160a01b03898116602083015288166040820152606081018790526080810186905260a0810185905260c0810184905261010060e08201819052810182905260006101208385828501376000838501820152601f909301601f19169091019091019998505050505050505050565b60006020808352835180602085015260005b818110156103975785810183015185820160400152820161037b565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212203788fdfb8b6a2c0572bcd866dab8de747866dc2030920f38cce6fb32a7b57abc64736f6c63430008170033",
137
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80631789cd631461004657806361a93c871461006b578063677087c914610094575b600080fd5b610059610054366004610226565b6100a7565b60405190815260200160405180910390f35b6100596100793660046102a9565b6001600160a01b031660009081526020819052604090205490565b6100596100a23660046102cb565b6101cd565b6001600160a01b0383166000908152602081905260408082208054915190919083906100e79046908990339043904290449089908e908e906024016102f5565b60408051601f198184030181529190526020810180516001600160e01b031663415bf36360e01b179052805190915062200000101561015b5780516040516304f90dc560e51b81526001600160a01b0389166004820152602481019190915262200000604482015260640160405180910390fd5b8051602080830191909120845460018101865560008681529290922090910181905560405183906001600160a01b038a16907fc05d337121a6e8605c6ec0b72aa29c4210ffe6e5b9cefdd6a7058188a8f66f98906101ba908690610369565b60405180910390a3979650505050505050565b6001600160a01b03821660009081526020819052604081208054839081106101f7576101f76103b8565b9060005260206000200154905092915050565b80356001600160a01b038116811461022157600080fd5b919050565b60008060006040848603121561023b57600080fd5b6102448461020a565b9250602084013567ffffffffffffffff8082111561026157600080fd5b818601915086601f83011261027557600080fd5b81358181111561028457600080fd5b87602082850101111561029657600080fd5b6020830194508093505050509250925092565b6000602082840312156102bb57600080fd5b6102c48261020a565b9392505050565b600080604083850312156102de57600080fd5b6102e78361020a565b946020939093013593505050565b8981526001600160a01b03898116602083015288166040820152606081018790526080810186905260a0810185905260c0810184905261010060e08201819052810182905260006101208385828501376000838501820152601f909301601f19169091019091019998505050505050505050565b60006020808352835180602085015260005b818110156103975785810183015185820160400152820161037b565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212203788fdfb8b6a2c0572bcd866dab8de747866dc2030920f38cce6fb32a7b57abc64736f6c63430008170033",
128
138
  "devdoc": {
139
+ "errors": {
140
+ "InputTooLarge(address,uint256,uint256)": [
141
+ {
142
+ "params": {
143
+ "appContract": "The application contract address",
144
+ "inputLength": "The input length",
145
+ "maxInputLength": "The maximum input length"
146
+ }
147
+ }
148
+ ]
149
+ },
129
150
  "events": {
130
- "InputAdded(address,uint256,address,bytes)": {
131
- "details": "MUST be triggered on a successful call to `addInput`.",
151
+ "InputAdded(address,uint256,bytes)": {
132
152
  "params": {
133
- "dapp": "The address of the DApp",
134
- "input": "The contents of the input",
135
- "inputIndex": "The index of the input in the input box",
136
- "sender": "The address that sent the input"
153
+ "appContract": "The application contract address",
154
+ "index": "The input index",
155
+ "input": "The input blob"
137
156
  }
138
157
  }
139
158
  },
140
159
  "kind": "dev",
141
160
  "methods": {
142
161
  "addInput(address,bytes)": {
143
- "details": "MUST fire an `InputAdded` event accordingly. Input larger than machine limit will raise `InputSizeExceedsLimit` error.",
162
+ "details": "MUST fire an `InputAdded` event.",
144
163
  "params": {
145
- "_dapp": "The address of the DApp",
146
- "_input": "The contents of the input"
164
+ "appContract": "The application contract address",
165
+ "payload": "The input payload"
147
166
  },
148
167
  "returns": {
149
- "_0": "The hash of the input plus some extra metadata"
168
+ "_0": "The hash of the input blob"
150
169
  }
151
170
  },
152
171
  "getInputHash(address,uint256)": {
153
- "details": "`_index` MUST be in the interval `[0,n)` where `n` is the number of inputs in the DApp's input box. See the `getNumberOfInputs` function.",
172
+ "details": "The provided index must be valid.",
154
173
  "params": {
155
- "_dapp": "The address of the DApp",
156
- "_index": "The index of the input in the DApp's input box"
157
- },
158
- "returns": {
159
- "_0": "The hash of the input at the provided index in the DApp's input box"
174
+ "appContract": "The application contract address",
175
+ "index": "The input index"
160
176
  }
161
177
  },
162
178
  "getNumberOfInputs(address)": {
163
179
  "params": {
164
- "_dapp": "The address of the DApp"
165
- },
166
- "returns": {
167
- "_0": "Number of inputs in the DApp's input box"
180
+ "appContract": "The application contract address"
168
181
  }
169
182
  }
170
183
  },
171
- "stateVariables": {
172
- "inputBoxes": {
173
- "details": "See the `getNumberOfInputs`, `getInputHash` and `addInput` functions."
174
- }
175
- },
176
- "title": "Input Box",
177
184
  "version": 1
178
185
  },
179
186
  "userdoc": {
180
187
  "errors": {
181
- "InputSizeExceedsLimit()": [
188
+ "InputTooLarge(address,uint256,uint256)": [
182
189
  {
183
- "notice": "Raised when input is larger than the machine limit."
190
+ "notice": "Input is too large."
184
191
  }
185
192
  ]
186
193
  },
187
194
  "events": {
188
- "InputAdded(address,uint256,address,bytes)": {
189
- "notice": "Emitted when an input is added to a DApp's input box."
195
+ "InputAdded(address,uint256,bytes)": {
196
+ "notice": "MUST trigger when an input is added."
190
197
  }
191
198
  },
192
199
  "kind": "user",
193
200
  "methods": {
194
201
  "addInput(address,bytes)": {
195
- "notice": "Add an input to a DApp's input box."
202
+ "notice": "Send an input to an application."
196
203
  },
197
204
  "getInputHash(address,uint256)": {
198
- "notice": "Get the hash of an input in a DApp's input box."
205
+ "notice": "Get the hash of an input in an application's input box."
199
206
  },
200
207
  "getNumberOfInputs(address)": {
201
- "notice": "Get the number of inputs in a DApp's input box."
208
+ "notice": "Get the number of inputs sent to an application."
202
209
  }
203
210
  },
204
- "notice": "Trustless and permissionless contract that receives arbitrary blobs (called \"inputs\") from anyone and adds a compound hash to an append-only list (called \"input box\"). Each DApp has its own input box. The hash that is stored on-chain is composed by the hash of the input blob, the block number and timestamp, the input sender address, and the input index. Data availability is guaranteed by the emission of `InputAdded` events on every successful call to `addInput`. This ensures that inputs can be retrieved by anyone at any time, without having to rely on centralized data providers. From the perspective of this contract, inputs are encoding-agnostic byte arrays. It is up to the DApp to interpret, validate and act upon inputs.",
205
211
  "version": 1
206
212
  }
207
213
  }
@@ -0,0 +1,188 @@
1
+ {
2
+ "address": "0x22AFD9162079c7Ac0aF874054298Bf46F29157F1",
3
+ "abi": [
4
+ {
5
+ "anonymous": false,
6
+ "inputs": [
7
+ {
8
+ "indexed": false,
9
+ "internalType": "contract IQuorum",
10
+ "name": "quorum",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "name": "QuorumCreated",
15
+ "type": "event"
16
+ },
17
+ {
18
+ "inputs": [
19
+ {
20
+ "internalType": "address[]",
21
+ "name": "validators",
22
+ "type": "address[]"
23
+ },
24
+ {
25
+ "internalType": "uint256",
26
+ "name": "epochLength",
27
+ "type": "uint256"
28
+ },
29
+ {
30
+ "internalType": "bytes32",
31
+ "name": "salt",
32
+ "type": "bytes32"
33
+ }
34
+ ],
35
+ "name": "calculateQuorumAddress",
36
+ "outputs": [
37
+ {
38
+ "internalType": "address",
39
+ "name": "",
40
+ "type": "address"
41
+ }
42
+ ],
43
+ "stateMutability": "view",
44
+ "type": "function"
45
+ },
46
+ {
47
+ "inputs": [
48
+ {
49
+ "internalType": "address[]",
50
+ "name": "validators",
51
+ "type": "address[]"
52
+ },
53
+ {
54
+ "internalType": "uint256",
55
+ "name": "epochLength",
56
+ "type": "uint256"
57
+ },
58
+ {
59
+ "internalType": "bytes32",
60
+ "name": "salt",
61
+ "type": "bytes32"
62
+ }
63
+ ],
64
+ "name": "newQuorum",
65
+ "outputs": [
66
+ {
67
+ "internalType": "contract IQuorum",
68
+ "name": "",
69
+ "type": "address"
70
+ }
71
+ ],
72
+ "stateMutability": "nonpayable",
73
+ "type": "function"
74
+ },
75
+ {
76
+ "inputs": [
77
+ {
78
+ "internalType": "address[]",
79
+ "name": "validators",
80
+ "type": "address[]"
81
+ },
82
+ {
83
+ "internalType": "uint256",
84
+ "name": "epochLength",
85
+ "type": "uint256"
86
+ }
87
+ ],
88
+ "name": "newQuorum",
89
+ "outputs": [
90
+ {
91
+ "internalType": "contract IQuorum",
92
+ "name": "",
93
+ "type": "address"
94
+ }
95
+ ],
96
+ "stateMutability": "nonpayable",
97
+ "type": "function"
98
+ }
99
+ ],
100
+ "transactionHash": "0x56758cf1788b692818455c9a848e7f79931b1f6b94c5dd3935cf3b991be4aa0d",
101
+ "receipt": {
102
+ "to": "0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7",
103
+ "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
104
+ "contractAddress": null,
105
+ "transactionIndex": 0,
106
+ "gasUsed": "747585",
107
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
108
+ "blockHash": "0x4d37289ea06ad10e057de863fd30461637a901e0318820a851613afa42caa198",
109
+ "transactionHash": "0x56758cf1788b692818455c9a848e7f79931b1f6b94c5dd3935cf3b991be4aa0d",
110
+ "logs": [],
111
+ "blockNumber": 10,
112
+ "cumulativeGasUsed": "747585",
113
+ "status": 1,
114
+ "byzantium": true
115
+ },
116
+ "args": [],
117
+ "numDeployments": 1,
118
+ "bytecode": "0x608060405234801561001057600080fd5b50610c90806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632f74f86214610046578063ca8f271c14610075578063d4af3bc814610088575b600080fd5b6100596100543660046102bb565b61009b565b6040516001600160a01b03909116815260200160405180910390f35b6100596100833660046102bb565b610123565b61005961009636600461030c565b6101a2565b600080828686866040516100ae90610262565b6100ba93929190610358565b8190604051809103906000f59050801580156100da573d6000803e3d6000fd5b506040516001600160a01b03821681529091507f446698b70271bce331e53210572bd37ac8c590b6cdca2e6763e6448243cba8029060200160405180910390a195945050505050565b6000610199826040518060200161013990610262565b601f1982820381018352601f90910116604081905261016090899089908990602001610358565b60408051601f198184030181529082905261017e92916020016103e4565b60405160208183030381529060405280519060200120610224565b95945050505050565b6000808484846040516101b490610262565b6101c093929190610358565b604051809103906000f0801580156101dc573d6000803e3d6000fd5b506040516001600160a01b03821681529091507f446698b70271bce331e53210572bd37ac8c590b6cdca2e6763e6448243cba8029060200160405180910390a1949350505050565b6000610231838330610238565b9392505050565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6108598061040283390190565b60008083601f84011261028157600080fd5b50813567ffffffffffffffff81111561029957600080fd5b6020830191508360208260051b85010111156102b457600080fd5b9250929050565b600080600080606085870312156102d157600080fd5b843567ffffffffffffffff8111156102e857600080fd5b6102f48782880161026f565b90989097506020870135966040013595509350505050565b60008060006040848603121561032157600080fd5b833567ffffffffffffffff81111561033857600080fd5b6103448682870161026f565b909790965060209590950135949350505050565b604080825281018390526000846060830182805b878110156103a05783356001600160a01b03811680821461038b578384fd5b8452506020938401939092019160010161036c565b505060209390930193909352509392505050565b6000815160005b818110156103d557602081850181015186830152016103bb565b50600093019283525090919050565b60006103f96103f383866103b4565b846103b4565b94935050505056fe60c060405234801561001057600080fd5b5060405161085938038061085983398101604081905261002f9161016e565b80600081116100845760405162461bcd60e51b815260206004820152601d60248201527f65706f6368206c656e677468206d757374206e6f74206265207a65726f000000604482015260640160405180910390fd5b6080526000805b83518110156101305760008482815181106100a8576100a861023a565b6020026020010151905060016000826001600160a01b03166001600160a01b03168152602001908152602001600020546000036101275760006100ea84610250565b6001600160a01b03831660008181526001602090815260408083208590558483526002909152902080546001600160a01b03191690911790559350505b5060010161008b565b5060a052506102779050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461016957600080fd5b919050565b6000806040838503121561018157600080fd5b82516001600160401b038082111561019857600080fd5b818501915085601f8301126101ac57600080fd5b81516020828211156101c0576101c061013c565b8160051b604051601f19603f830116810181811086821117156101e5576101e561013c565b60405292835281830193508481018201928984111561020357600080fd5b948201945b838610156102285761021986610152565b85529482019493820193610208565b97909101519698969750505050505050565b634e487b7160e01b600052603260045260246000fd5b60006001820161027057634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a0516105b66102a36000396000818161010c01526102f70152600061019001526105b66000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636470af001161005b5780636470af00146101535780637051bfd5146101685780639618f35b1461017b578063cfe8a73b1461018e57600080fd5b80630a6f1fe81461008d5780631c45396a146100c95780631e526e451461010a5780634b84231c14610130575b600080fd5b6100b661009b36600461044b565b6001600160a01b031660009081526001602052604090205490565b6040519081526020015b60405180910390f35b6100f26100d736600461046d565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b0390911681526020016100c0565b7f00000000000000000000000000000000000000000000000000000000000000006100b6565b61014361013e366004610486565b6101b4565b60405190151581526020016100c0565b6101666101613660046104bf565b6101f1565b005b6100b66101763660046104bf565b610353565b6101436101893660046104f2565b610369565b7f00000000000000000000000000000000000000000000000000000000000000006100b6565b60006101e8826101c5878787610395565b600882901c60009081526001918201602052604090205460ff9092161b16151590565b95945050505050565b33600090815260016020526040902054806102525760405162461bcd60e51b815260206004820152601f60248201527f51756f72756d3a2063616c6c6572206973206e6f742076616c696461746f7200604482015260640160405180910390fd5b60408051848152602081018490526001600160a01b0386169133917ff5a28e07a1b89d1ca3f9a2a7ef16bd650503a4791baf2e70dc401c21ee505f0a910160405180910390a360006102a5858585610395565b600883901c6000908152600180830160205260409091205491925060ff84161b1661034c57600882901c600090815260018281016020526040909120805460ff85169290921b909117905561031b60027f0000000000000000000000000000000000000000000000000000000000000000610532565b610326906001610554565b816000016000815461033790610567565b91829055500361034c5761034c8585856103c7565b5050505050565b6000610360848484610395565b54949350505050565b6001600160a01b03821660009081526020818152604080832084845290915290205460ff165b92915050565b6001600160a01b0383166000908152600360209081526040808320858452825280832084845290915290209392505050565b6001600160a01b038316600081815260208181526040808320858452825291829020805460ff1916600117905581518581529081018490527fd3e4892959c6ddb27e02bcaaebc0c1898d0f677b7360bf80339f10a8717957d3910160405180910390a2505050565b80356001600160a01b038116811461044657600080fd5b919050565b60006020828403121561045d57600080fd5b6104668261042f565b9392505050565b60006020828403121561047f57600080fd5b5035919050565b6000806000806080858703121561049c57600080fd5b6104a58561042f565b966020860135965060408601359560600135945092505050565b6000806000606084860312156104d457600080fd5b6104dd8461042f565b95602085013595506040909401359392505050565b6000806040838503121561050557600080fd5b61050e8361042f565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b60008261054f57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561038f5761038f61051c565b6000600182016105795761057961051c565b506001019056fea2646970667358221220642bb94e1d4dd60f0c8a41a3a000c90390997995461f65183db6e55f56e5032864736f6c63430008170033a264697066735822122056fc82af8dbf74e096ba755e657baedd2a8684ccc11e63a53a44d8ceb691249e64736f6c63430008170033",
119
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632f74f86214610046578063ca8f271c14610075578063d4af3bc814610088575b600080fd5b6100596100543660046102bb565b61009b565b6040516001600160a01b03909116815260200160405180910390f35b6100596100833660046102bb565b610123565b61005961009636600461030c565b6101a2565b600080828686866040516100ae90610262565b6100ba93929190610358565b8190604051809103906000f59050801580156100da573d6000803e3d6000fd5b506040516001600160a01b03821681529091507f446698b70271bce331e53210572bd37ac8c590b6cdca2e6763e6448243cba8029060200160405180910390a195945050505050565b6000610199826040518060200161013990610262565b601f1982820381018352601f90910116604081905261016090899089908990602001610358565b60408051601f198184030181529082905261017e92916020016103e4565b60405160208183030381529060405280519060200120610224565b95945050505050565b6000808484846040516101b490610262565b6101c093929190610358565b604051809103906000f0801580156101dc573d6000803e3d6000fd5b506040516001600160a01b03821681529091507f446698b70271bce331e53210572bd37ac8c590b6cdca2e6763e6448243cba8029060200160405180910390a1949350505050565b6000610231838330610238565b9392505050565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6108598061040283390190565b60008083601f84011261028157600080fd5b50813567ffffffffffffffff81111561029957600080fd5b6020830191508360208260051b85010111156102b457600080fd5b9250929050565b600080600080606085870312156102d157600080fd5b843567ffffffffffffffff8111156102e857600080fd5b6102f48782880161026f565b90989097506020870135966040013595509350505050565b60008060006040848603121561032157600080fd5b833567ffffffffffffffff81111561033857600080fd5b6103448682870161026f565b909790965060209590950135949350505050565b604080825281018390526000846060830182805b878110156103a05783356001600160a01b03811680821461038b578384fd5b8452506020938401939092019160010161036c565b505060209390930193909352509392505050565b6000815160005b818110156103d557602081850181015186830152016103bb565b50600093019283525090919050565b60006103f96103f383866103b4565b846103b4565b94935050505056fe60c060405234801561001057600080fd5b5060405161085938038061085983398101604081905261002f9161016e565b80600081116100845760405162461bcd60e51b815260206004820152601d60248201527f65706f6368206c656e677468206d757374206e6f74206265207a65726f000000604482015260640160405180910390fd5b6080526000805b83518110156101305760008482815181106100a8576100a861023a565b6020026020010151905060016000826001600160a01b03166001600160a01b03168152602001908152602001600020546000036101275760006100ea84610250565b6001600160a01b03831660008181526001602090815260408083208590558483526002909152902080546001600160a01b03191690911790559350505b5060010161008b565b5060a052506102779050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461016957600080fd5b919050565b6000806040838503121561018157600080fd5b82516001600160401b038082111561019857600080fd5b818501915085601f8301126101ac57600080fd5b81516020828211156101c0576101c061013c565b8160051b604051601f19603f830116810181811086821117156101e5576101e561013c565b60405292835281830193508481018201928984111561020357600080fd5b948201945b838610156102285761021986610152565b85529482019493820193610208565b97909101519698969750505050505050565b634e487b7160e01b600052603260045260246000fd5b60006001820161027057634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a0516105b66102a36000396000818161010c01526102f70152600061019001526105b66000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636470af001161005b5780636470af00146101535780637051bfd5146101685780639618f35b1461017b578063cfe8a73b1461018e57600080fd5b80630a6f1fe81461008d5780631c45396a146100c95780631e526e451461010a5780634b84231c14610130575b600080fd5b6100b661009b36600461044b565b6001600160a01b031660009081526001602052604090205490565b6040519081526020015b60405180910390f35b6100f26100d736600461046d565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b0390911681526020016100c0565b7f00000000000000000000000000000000000000000000000000000000000000006100b6565b61014361013e366004610486565b6101b4565b60405190151581526020016100c0565b6101666101613660046104bf565b6101f1565b005b6100b66101763660046104bf565b610353565b6101436101893660046104f2565b610369565b7f00000000000000000000000000000000000000000000000000000000000000006100b6565b60006101e8826101c5878787610395565b600882901c60009081526001918201602052604090205460ff9092161b16151590565b95945050505050565b33600090815260016020526040902054806102525760405162461bcd60e51b815260206004820152601f60248201527f51756f72756d3a2063616c6c6572206973206e6f742076616c696461746f7200604482015260640160405180910390fd5b60408051848152602081018490526001600160a01b0386169133917ff5a28e07a1b89d1ca3f9a2a7ef16bd650503a4791baf2e70dc401c21ee505f0a910160405180910390a360006102a5858585610395565b600883901c6000908152600180830160205260409091205491925060ff84161b1661034c57600882901c600090815260018281016020526040909120805460ff85169290921b909117905561031b60027f0000000000000000000000000000000000000000000000000000000000000000610532565b610326906001610554565b816000016000815461033790610567565b91829055500361034c5761034c8585856103c7565b5050505050565b6000610360848484610395565b54949350505050565b6001600160a01b03821660009081526020818152604080832084845290915290205460ff165b92915050565b6001600160a01b0383166000908152600360209081526040808320858452825280832084845290915290209392505050565b6001600160a01b038316600081815260208181526040808320858452825291829020805460ff1916600117905581518581529081018490527fd3e4892959c6ddb27e02bcaaebc0c1898d0f677b7360bf80339f10a8717957d3910160405180910390a2505050565b80356001600160a01b038116811461044657600080fd5b919050565b60006020828403121561045d57600080fd5b6104668261042f565b9392505050565b60006020828403121561047f57600080fd5b5035919050565b6000806000806080858703121561049c57600080fd5b6104a58561042f565b966020860135965060408601359560600135945092505050565b6000806000606084860312156104d457600080fd5b6104dd8461042f565b95602085013595506040909401359392505050565b6000806040838503121561050557600080fd5b61050e8361042f565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b60008261054f57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561038f5761038f61051c565b6000600182016105795761057961051c565b506001019056fea2646970667358221220642bb94e1d4dd60f0c8a41a3a000c90390997995461f65183db6e55f56e5032864736f6c63430008170033a264697066735822122056fc82af8dbf74e096ba755e657baedd2a8684ccc11e63a53a44d8ceb691249e64736f6c63430008170033",
120
+ "devdoc": {
121
+ "events": {
122
+ "QuorumCreated(address)": {
123
+ "details": "MUST be triggered on a successful call to `newQuorum`.",
124
+ "params": {
125
+ "quorum": "The quorum"
126
+ }
127
+ }
128
+ },
129
+ "kind": "dev",
130
+ "methods": {
131
+ "calculateQuorumAddress(address[],uint256,bytes32)": {
132
+ "details": "Beware that only the `newQuorum` function with the `salt` parameter is able to deterministically deploy a quorum.",
133
+ "params": {
134
+ "epochLength": "The epoch length",
135
+ "salt": "The salt used to deterministically generate the quorum address",
136
+ "validators": "the list of validators"
137
+ },
138
+ "returns": {
139
+ "_0": "The deterministic quorum address"
140
+ }
141
+ },
142
+ "newQuorum(address[],uint256)": {
143
+ "details": "On success, MUST emit a `QuorumCreated` event.Duplicates in the `validators` array are ignored.Reverts if the epoch length is zero.",
144
+ "params": {
145
+ "epochLength": "The epoch length",
146
+ "validators": "the list of validators"
147
+ },
148
+ "returns": {
149
+ "_0": "The quorum"
150
+ }
151
+ },
152
+ "newQuorum(address[],uint256,bytes32)": {
153
+ "details": "On success, MUST emit a `QuorumCreated` event.Duplicates in the `validators` array are ignored.Reverts if the epoch length is zero.",
154
+ "params": {
155
+ "epochLength": "The epoch length",
156
+ "salt": "The salt used to deterministically generate the quorum address",
157
+ "validators": "the list of validators"
158
+ },
159
+ "returns": {
160
+ "_0": "The quorum"
161
+ }
162
+ }
163
+ },
164
+ "title": "Quorum Factory",
165
+ "version": 1
166
+ },
167
+ "userdoc": {
168
+ "events": {
169
+ "QuorumCreated(address)": {
170
+ "notice": "A new quorum was deployed."
171
+ }
172
+ },
173
+ "kind": "user",
174
+ "methods": {
175
+ "calculateQuorumAddress(address[],uint256,bytes32)": {
176
+ "notice": "Calculate the address of a quorum to be deployed deterministically."
177
+ },
178
+ "newQuorum(address[],uint256)": {
179
+ "notice": "Deploy a new quorum."
180
+ },
181
+ "newQuorum(address[],uint256,bytes32)": {
182
+ "notice": "Deploy a new quorum deterministically."
183
+ }
184
+ },
185
+ "notice": "Allows anyone to reliably deploy a new `IQuorum` contract.",
186
+ "version": 1
187
+ }
188
+ }