@keep-network/tbtc-v2 0.1.1-dev.40 → 0.1.1-dev.43
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.
- package/artifacts/TBTC.json +3 -3
- package/artifacts/TBTCToken.json +3 -3
- package/artifacts/VendingMachine.json +10 -10
- package/artifacts/solcInputs/{f1a50b67569d88ee54efa3e22c6b484e.json → f2c15d3cf1bd9566483f595c5ed30ccc.json} +25 -25
- package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
- package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
- package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
- package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.json +2 -2
- package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
- package/build/contracts/bridge/Bridge.sol/Bridge.json +191 -331
- package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
- package/build/contracts/bridge/BridgeState.sol/BridgeState.json +35 -3
- package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +1 -1
- package/build/contracts/bridge/Deposit.sol/Deposit.json +2 -2
- package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +1 -1
- package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.json +2 -2
- package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +4 -0
- package/build/contracts/bridge/Fraud.sol/Fraud.json +86 -0
- package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +1 -1
- package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +1 -1
- package/build/contracts/bridge/MovingFunds.sol/MovingFunds.json +4 -22
- package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +4 -0
- package/build/contracts/bridge/{Redeem.sol → Redemption.sol}/OutboundTx.json +3 -3
- package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +4 -0
- package/build/contracts/bridge/Redemption.sol/Redemption.json +92 -0
- package/build/contracts/bridge/Sweep.sol/Sweep.dbg.json +1 -1
- package/build/contracts/bridge/Sweep.sol/Sweep.json +2 -2
- package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
- package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +1 -1
- package/build/contracts/bridge/Wallets.sol/Wallets.json +2 -47
- package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
- package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
- package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
- package/contracts/bridge/BitcoinTx.sol +19 -26
- package/contracts/bridge/Bridge.sol +476 -534
- package/contracts/bridge/BridgeState.sol +190 -129
- package/contracts/bridge/Deposit.sol +23 -4
- package/contracts/bridge/EcdsaLib.sol +15 -0
- package/contracts/bridge/{Frauds.sol → Fraud.sol} +75 -146
- package/contracts/bridge/MovingFunds.sol +15 -9
- package/contracts/bridge/{Redeem.sol → Redemption.sol} +19 -17
- package/contracts/bridge/Sweep.sol +16 -9
- package/contracts/bridge/Wallets.sol +40 -121
- package/package.json +1 -1
- package/build/contracts/bridge/Frauds.sol/Frauds.dbg.json +0 -4
- package/build/contracts/bridge/Frauds.sol/Frauds.json +0 -138
- package/build/contracts/bridge/Redeem.sol/OutboundTx.dbg.json +0 -4
- package/build/contracts/bridge/Redeem.sol/Redeem.dbg.json +0 -4
- package/build/contracts/bridge/Redeem.sol/Redeem.json +0 -110
|
@@ -28,25 +28,6 @@
|
|
|
28
28
|
"name": "NewWalletRequested",
|
|
29
29
|
"type": "event"
|
|
30
30
|
},
|
|
31
|
-
{
|
|
32
|
-
"anonymous": false,
|
|
33
|
-
"inputs": [
|
|
34
|
-
{
|
|
35
|
-
"indexed": false,
|
|
36
|
-
"internalType": "uint64",
|
|
37
|
-
"name": "newMinBtcBalance",
|
|
38
|
-
"type": "uint64"
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"indexed": false,
|
|
42
|
-
"internalType": "uint64",
|
|
43
|
-
"name": "newMaxBtcBalance",
|
|
44
|
-
"type": "uint64"
|
|
45
|
-
}
|
|
46
|
-
],
|
|
47
|
-
"name": "WalletBtcBalanceRangeUpdated",
|
|
48
|
-
"type": "event"
|
|
49
|
-
},
|
|
50
31
|
{
|
|
51
32
|
"anonymous": false,
|
|
52
33
|
"inputs": [
|
|
@@ -66,32 +47,6 @@
|
|
|
66
47
|
"name": "WalletClosed",
|
|
67
48
|
"type": "event"
|
|
68
49
|
},
|
|
69
|
-
{
|
|
70
|
-
"anonymous": false,
|
|
71
|
-
"inputs": [
|
|
72
|
-
{
|
|
73
|
-
"indexed": false,
|
|
74
|
-
"internalType": "uint32",
|
|
75
|
-
"name": "newCreationPeriod",
|
|
76
|
-
"type": "uint32"
|
|
77
|
-
}
|
|
78
|
-
],
|
|
79
|
-
"name": "WalletCreationPeriodUpdated",
|
|
80
|
-
"type": "event"
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
"anonymous": false,
|
|
84
|
-
"inputs": [
|
|
85
|
-
{
|
|
86
|
-
"indexed": false,
|
|
87
|
-
"internalType": "uint32",
|
|
88
|
-
"name": "newMaxAge",
|
|
89
|
-
"type": "uint32"
|
|
90
|
-
}
|
|
91
|
-
],
|
|
92
|
-
"name": "WalletMaxAgeUpdated",
|
|
93
|
-
"type": "event"
|
|
94
|
-
},
|
|
95
50
|
{
|
|
96
51
|
"anonymous": false,
|
|
97
52
|
"inputs": [
|
|
@@ -131,8 +86,8 @@
|
|
|
131
86
|
"type": "event"
|
|
132
87
|
}
|
|
133
88
|
],
|
|
134
|
-
"bytecode": "0x61190761003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100d35760003560e01c806365951fcf1161008b578063b4e671f411610065578063b4e671f4146101da578063ea2a3dcc146101fa578063f832341d1461021a57600080fd5b806365951fcf1461017a5780639655f02b1461019a578063998b564c146101ba57600080fd5b806335e741c9116100bc57806335e741c91461011a57806345d9969c1461013a5780634fd7d4861461015a57600080fd5b8063041aee99146100d85780631803c09e146100fa575b600080fd5b8180156100e457600080fd5b506100f86100f336600461160b565b61023a565b005b81801561010657600080fd5b506100f8610115366004611637565b6102ab565b81801561012657600080fd5b506100f861013536600461167b565b6103d3565b81801561014657600080fd5b506100f861015536600461160b565b610589565b81801561016657600080fd5b506100f86101753660046116b0565b6105e9565b81801561018657600080fd5b506100f86101953660046116e2565b6107bb565b8180156101a657600080fd5b506100f86101b536600461171d565b6108b0565b8180156101c657600080fd5b506100f86101d5366004611772565b610abe565b8180156101e657600080fd5b506100f86101f53660046117a5565b610c55565b81801561020657600080fd5b506100f86102153660046116e2565b610f4a565b81801561022657600080fd5b506100f86102353660046117c9565b611020565b81547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b63ffffffff83169081029190911783556040519081527f0c96a98792be84d818dd96f4167766ce3fbb8fdbfece805d7c2ec87873797b62906020015b60405180910390a15050565b82546001600160a01b031633146103195760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b60648201526084015b60405180910390fd5b600061032d610328848461114f565b6111f9565b905060016001600160601b031982166000908152600286810160205260409091200154600160801b900460ff16600481111561036b5761036b611805565b146103c35760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610310565b6103cd8482611220565b50505050565b6001600160601b03198216600090815260028085016020526040909120906002820154600160801b900460ff16600481111561041157610411611805565b146104845760405162461bcd60e51b815260206004820152602960248201527f45434453412077616c6c6574206d75737420626520696e204d6f76696e67467560448201527f6e647320737461746500000000000000000000000000000000000000000000006064820152608401610310565b6003810154806104fc5760405162461bcd60e51b815260206004820152602b60248201527f5461726765742077616c6c65747320636f6d6d69746d656e74206e6f7420737560448201527f626d6974746564207965740000000000000000000000000000000000000000006064820152608401610310565b8281146105715760405162461bcd60e51b815260206004820152603160248201527f5461726765742077616c6c65747320646f6e277420636f72726573706f6e642060448201527f746f2074686520636f6d6d69746d656e740000000000000000000000000000006064820152608401610310565b600060018301556105828585611315565b5050505050565b6001820180546bffffffff000000000000000019166801000000000000000063ffffffff8416908102919091179091556040519081527fb9680823827cf58b566fd60a2a37e51011531b53fa90ff8f109d6d94921dde009060200161029f565b83546001600160a01b031633146106525760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610310565b6000610661610328848461114f565b6001600160601b03198116600090815260028701602052604081209192506002820154600160801b900460ff16600481111561069f5761069f611805565b146107125760405162461bcd60e51b815260206004820152602860248201527f45434453412077616c6c657420686173206265656e20616c726561647920726560448201527f67697374657265640000000000000000000000000000000000000000000000006064820152608401610310565b848155600281018054600160801b7fffffffffffffffffffffffffffffff00ffffffff00000000ffffffffffffffff909116680100000000000000004263ffffffff1602171790556001860180546bffffffffffffffffffffffff16600160601b606085901c021790556040516001600160601b031983169086907f2dbb47dce81d6b11cca1f1e3b10143d6f7e1e7e92d2dd9aacbb1f875379d308e90600090a3505050505050565b6001600160601b031981166000908152600283810160205260409091200154600160801b900460ff1660018160048111156107f8576107f8611805565b14806108155750600281600481111561081357610813611805565b145b6108875760405162461bcd60e51b815260206004820152603160248201527f45434453412077616c6c6574206d75737420626520696e204c697665206f722060448201527f4d6f76696e6746756e64732073746174650000000000000000000000000000006064820152608401610310565b600181600481111561089b5761089b611805565b14156108ab576108ab8383611220565b505050565b60018301546001600160601b0319838116600160601b90920460601b1614156109415760405162461bcd60e51b815260206004820152602c60248201527f4163746976652077616c6c65742063616e6e6f7420626520636f6e736964657260448201527f656420636c6f736561626c6500000000000000000000000000000000000000006064820152608401610310565b6001600160601b031982166000908152600284016020526040902060016002820154600160801b900460ff16600481111561097e5761097e611805565b146109d65760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610310565b60018401546002820154600091610a069163ffffffff68010000000000000000928390048116929091041661181b565b63ffffffff1642101590508080610a4257508454600160c01b900467ffffffffffffffff16610a368686866113da565b67ffffffffffffffff16105b610ab45760405162461bcd60e51b815260206004820152603660248201527f57616c6c6574206e6565647320746f206265206f6c6420656e6f756768206f7260448201527f206861766520746f6f20666577207361746f73686973000000000000000000006064820152608401610310565b6105828585611220565b60008267ffffffffffffffff1611610b3e5760405162461bcd60e51b815260206004820152602160248201527f4d696e696d756d206d7573742062652067726561746572207468616e207a657260448201527f6f000000000000000000000000000000000000000000000000000000000000006064820152608401610310565b8167ffffffffffffffff168167ffffffffffffffff1611610bc75760405162461bcd60e51b815260206004820152602860248201527f4d6178696d756d206d7573742062652067726561746572207468616e2074686560448201527f206d696e696d756d0000000000000000000000000000000000000000000000006064820152608401610310565b825477ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b67ffffffffffffffff84811691820292909217855560018501805467ffffffffffffffff191692841692831790556040805191825260208201929092527f93f75d2a1ad31d60f2381eb935c4b4d8743c9607d7bfaeabeffc62fbf4e21182910160405180910390a1505050565b8154604080517fcc56238800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cc562388916004808301926020929190829003018186803b158015610cb257600080fd5b505afa158015610cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cea9190611851565b6003811115610cfb57610cfb611805565b14610d6e5760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574206372656174696f6e20616c726561647920696e2070726f677260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610310565b6001820154600160601b900460601b6001600160601b0319811615610ea6576000610d9a8483856113da565b6001600160601b0319831660009081526002808701602052604082200154865492935063ffffffff68010000000000000000909104811692610de591600160a01b909104168361181b565b63ffffffff164210159050808015610e135750855467ffffffffffffffff600160c01b909104811690841610155b80610e305750600186015467ffffffffffffffff90811690841610155b610ea25760405162461bcd60e51b815260206004820152602660248201527f57616c6c6574206372656174696f6e20636f6e646974696f6e7320617265206e60448201527f6f74206d657400000000000000000000000000000000000000000000000000006064820152608401610310565b5050505b6040517f31fecb80caf1e1128496dd5a6f1083ba29fd5fe64c3fe04e2d1b6f9cfc27d5a390600090a18254604080517f72cc8c6d00000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216916372cc8c6d9160048082019260009290919082900301818387803b158015610f2d57600080fd5b505af1158015610f41573d6000803e3d6000fd5b50505050505050565b6001600160601b031981166000908152600283810160205260409091200154600160801b900460ff166001816004811115610f8757610f87611805565b1480610fa457506002816004811115610fa257610fa2611805565b145b6110165760405162461bcd60e51b815260206004820152603160248201527f45434453412077616c6c6574206d75737420626520696e204c697665206f722060448201527f4d6f76696e6746756e64732073746174650000000000000000000000000000006064820152608401610310565b6108ab838361150d565b6001600160a01b03811661109c5760405162461bcd60e51b815260206004820152602c60248201527f45434453412057616c6c6574205265676973747279206164647265737320636160448201527f6e6e6f74206265207a65726f00000000000000000000000000000000000000006064820152608401610310565b81546001600160a01b03161561111a5760405162461bcd60e51b815260206004820152602960248201527f45434453412057616c6c6574205265676973747279206164647265737320616c60448201527f72656164792073657400000000000000000000000000000000000000000000006064820152608401610310565b81547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0391909116179055565b6060600061115e600284611879565b61118957507f02000000000000000000000000000000000000000000000000000000000000006111ac565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6001600160601b031981166000908152600283016020526040902060018101546112535761124e8383611315565b6112d9565b60028101805463ffffffff4216600160601b027fffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff9091161770020000000000000000000000000000000017905580546040516001600160601b0319841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b60018301546001600160601b0319838116600160601b90920460601b1614156108ab57505060010180546bffffffffffffffffffffffff169055565b6001600160601b03198116600081815260028481016020526040808320918201805470ff0000000000000000000000000000000019167003000000000000000000000000000000001790558154905191939290917f47b159947c3066cb253f60e8f046cfd747411788a545cb189679e3fa1467b28d9190a38254815460405163343bb92760e01b81526001600160a01b039092169163343bb927916113c09160040190815260200190565b600060405180830381600087803b158015610f2d57600080fd5b6001600160601b031982166000908152600284016020526040812060010154801561150557808335611412604086016020870161189b565b61142260608701604088016118b6565b60405160200161148f9392919092835260e09190911b7fffffffff0000000000000000000000000000000000000000000000000000000016602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b60405160208183030381529060405280519060200120146114f25760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077616c6c6574206d61696e205554584f20646174610000006044820152606401610310565b61150260608401604085016118b6565b91505b509392505050565b6001600160601b03198116600081815260028481016020526040808320918201805470ff0000000000000000000000000000000019167004000000000000000000000000000000001790558154905191939290917f9272a280b0f32f70b00ad0b546499c68e3ecc6f7bb7ef43491ec5d7b99bf69ef9190a360018301546001600160601b0319838116600160601b90920460601b1614156115bf576001830180546bffffffffffffffffffffffff1690555b8254815460405163343bb92760e01b81526001600160a01b039092169163343bb927916113c09160040190815260200190565b803563ffffffff8116811461160657600080fd5b919050565b6000806040838503121561161e57600080fd5b8235915061162e602084016115f2565b90509250929050565b60008060006060848603121561164c57600080fd5b505081359360208301359350604090920135919050565b80356001600160601b03198116811461160657600080fd5b60008060006060848603121561169057600080fd5b833592506116a060208501611663565b9150604084013590509250925092565b600080600080608085870312156116c657600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156116f557600080fd5b8235915061162e60208401611663565b60006060828403121561171757600080fd5b50919050565b600080600060a0848603121561173257600080fd5b8335925061174260208501611663565b91506117518560408601611705565b90509250925092565b803567ffffffffffffffff8116811461160657600080fd5b60008060006060848603121561178757600080fd5b833592506117976020850161175a565b91506117516040850161175a565b600080608083850312156117b857600080fd5b8235915061162e8460208501611705565b600080604083850312156117dc57600080fd5b8235915060208301356001600160a01b03811681146117fa57600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b600063ffffffff80831681851680830382111561184857634e487b7160e01b600052601160045260246000fd5b01949350505050565b60006020828403121561186357600080fd5b81516004811061187257600080fd5b9392505050565b60008261189657634e487b7160e01b600052601260045260246000fd5b500690565b6000602082840312156118ad57600080fd5b611872826115f2565b6000602082840312156118c857600080fd5b6118728261175a56fea26469706673582212207e53aad72fb4c3298c73e60f03e3909617a4d5db8da1841ba7b9dc8a3b8884af64736f6c63430008090033",
|
|
135
|
-
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100d35760003560e01c806365951fcf1161008b578063b4e671f411610065578063b4e671f4146101da578063ea2a3dcc146101fa578063f832341d1461021a57600080fd5b806365951fcf1461017a5780639655f02b1461019a578063998b564c146101ba57600080fd5b806335e741c9116100bc57806335e741c91461011a57806345d9969c1461013a5780634fd7d4861461015a57600080fd5b8063041aee99146100d85780631803c09e146100fa575b600080fd5b8180156100e457600080fd5b506100f86100f336600461160b565b61023a565b005b81801561010657600080fd5b506100f8610115366004611637565b6102ab565b81801561012657600080fd5b506100f861013536600461167b565b6103d3565b81801561014657600080fd5b506100f861015536600461160b565b610589565b81801561016657600080fd5b506100f86101753660046116b0565b6105e9565b81801561018657600080fd5b506100f86101953660046116e2565b6107bb565b8180156101a657600080fd5b506100f86101b536600461171d565b6108b0565b8180156101c657600080fd5b506100f86101d5366004611772565b610abe565b8180156101e657600080fd5b506100f86101f53660046117a5565b610c55565b81801561020657600080fd5b506100f86102153660046116e2565b610f4a565b81801561022657600080fd5b506100f86102353660046117c9565b611020565b81547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b63ffffffff83169081029190911783556040519081527f0c96a98792be84d818dd96f4167766ce3fbb8fdbfece805d7c2ec87873797b62906020015b60405180910390a15050565b82546001600160a01b031633146103195760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b60648201526084015b60405180910390fd5b600061032d610328848461114f565b6111f9565b905060016001600160601b031982166000908152600286810160205260409091200154600160801b900460ff16600481111561036b5761036b611805565b146103c35760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610310565b6103cd8482611220565b50505050565b6001600160601b03198216600090815260028085016020526040909120906002820154600160801b900460ff16600481111561041157610411611805565b146104845760405162461bcd60e51b815260206004820152602960248201527f45434453412077616c6c6574206d75737420626520696e204d6f76696e67467560448201527f6e647320737461746500000000000000000000000000000000000000000000006064820152608401610310565b6003810154806104fc5760405162461bcd60e51b815260206004820152602b60248201527f5461726765742077616c6c65747320636f6d6d69746d656e74206e6f7420737560448201527f626d6974746564207965740000000000000000000000000000000000000000006064820152608401610310565b8281146105715760405162461bcd60e51b815260206004820152603160248201527f5461726765742077616c6c65747320646f6e277420636f72726573706f6e642060448201527f746f2074686520636f6d6d69746d656e740000000000000000000000000000006064820152608401610310565b600060018301556105828585611315565b5050505050565b6001820180546bffffffff000000000000000019166801000000000000000063ffffffff8416908102919091179091556040519081527fb9680823827cf58b566fd60a2a37e51011531b53fa90ff8f109d6d94921dde009060200161029f565b83546001600160a01b031633146106525760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610310565b6000610661610328848461114f565b6001600160601b03198116600090815260028701602052604081209192506002820154600160801b900460ff16600481111561069f5761069f611805565b146107125760405162461bcd60e51b815260206004820152602860248201527f45434453412077616c6c657420686173206265656e20616c726561647920726560448201527f67697374657265640000000000000000000000000000000000000000000000006064820152608401610310565b848155600281018054600160801b7fffffffffffffffffffffffffffffff00ffffffff00000000ffffffffffffffff909116680100000000000000004263ffffffff1602171790556001860180546bffffffffffffffffffffffff16600160601b606085901c021790556040516001600160601b031983169086907f2dbb47dce81d6b11cca1f1e3b10143d6f7e1e7e92d2dd9aacbb1f875379d308e90600090a3505050505050565b6001600160601b031981166000908152600283810160205260409091200154600160801b900460ff1660018160048111156107f8576107f8611805565b14806108155750600281600481111561081357610813611805565b145b6108875760405162461bcd60e51b815260206004820152603160248201527f45434453412077616c6c6574206d75737420626520696e204c697665206f722060448201527f4d6f76696e6746756e64732073746174650000000000000000000000000000006064820152608401610310565b600181600481111561089b5761089b611805565b14156108ab576108ab8383611220565b505050565b60018301546001600160601b0319838116600160601b90920460601b1614156109415760405162461bcd60e51b815260206004820152602c60248201527f4163746976652077616c6c65742063616e6e6f7420626520636f6e736964657260448201527f656420636c6f736561626c6500000000000000000000000000000000000000006064820152608401610310565b6001600160601b031982166000908152600284016020526040902060016002820154600160801b900460ff16600481111561097e5761097e611805565b146109d65760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610310565b60018401546002820154600091610a069163ffffffff68010000000000000000928390048116929091041661181b565b63ffffffff1642101590508080610a4257508454600160c01b900467ffffffffffffffff16610a368686866113da565b67ffffffffffffffff16105b610ab45760405162461bcd60e51b815260206004820152603660248201527f57616c6c6574206e6565647320746f206265206f6c6420656e6f756768206f7260448201527f206861766520746f6f20666577207361746f73686973000000000000000000006064820152608401610310565b6105828585611220565b60008267ffffffffffffffff1611610b3e5760405162461bcd60e51b815260206004820152602160248201527f4d696e696d756d206d7573742062652067726561746572207468616e207a657260448201527f6f000000000000000000000000000000000000000000000000000000000000006064820152608401610310565b8167ffffffffffffffff168167ffffffffffffffff1611610bc75760405162461bcd60e51b815260206004820152602860248201527f4d6178696d756d206d7573742062652067726561746572207468616e2074686560448201527f206d696e696d756d0000000000000000000000000000000000000000000000006064820152608401610310565b825477ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b67ffffffffffffffff84811691820292909217855560018501805467ffffffffffffffff191692841692831790556040805191825260208201929092527f93f75d2a1ad31d60f2381eb935c4b4d8743c9607d7bfaeabeffc62fbf4e21182910160405180910390a1505050565b8154604080517fcc56238800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cc562388916004808301926020929190829003018186803b158015610cb257600080fd5b505afa158015610cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cea9190611851565b6003811115610cfb57610cfb611805565b14610d6e5760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574206372656174696f6e20616c726561647920696e2070726f677260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610310565b6001820154600160601b900460601b6001600160601b0319811615610ea6576000610d9a8483856113da565b6001600160601b0319831660009081526002808701602052604082200154865492935063ffffffff68010000000000000000909104811692610de591600160a01b909104168361181b565b63ffffffff164210159050808015610e135750855467ffffffffffffffff600160c01b909104811690841610155b80610e305750600186015467ffffffffffffffff90811690841610155b610ea25760405162461bcd60e51b815260206004820152602660248201527f57616c6c6574206372656174696f6e20636f6e646974696f6e7320617265206e60448201527f6f74206d657400000000000000000000000000000000000000000000000000006064820152608401610310565b5050505b6040517f31fecb80caf1e1128496dd5a6f1083ba29fd5fe64c3fe04e2d1b6f9cfc27d5a390600090a18254604080517f72cc8c6d00000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216916372cc8c6d9160048082019260009290919082900301818387803b158015610f2d57600080fd5b505af1158015610f41573d6000803e3d6000fd5b50505050505050565b6001600160601b031981166000908152600283810160205260409091200154600160801b900460ff166001816004811115610f8757610f87611805565b1480610fa457506002816004811115610fa257610fa2611805565b145b6110165760405162461bcd60e51b815260206004820152603160248201527f45434453412077616c6c6574206d75737420626520696e204c697665206f722060448201527f4d6f76696e6746756e64732073746174650000000000000000000000000000006064820152608401610310565b6108ab838361150d565b6001600160a01b03811661109c5760405162461bcd60e51b815260206004820152602c60248201527f45434453412057616c6c6574205265676973747279206164647265737320636160448201527f6e6e6f74206265207a65726f00000000000000000000000000000000000000006064820152608401610310565b81546001600160a01b03161561111a5760405162461bcd60e51b815260206004820152602960248201527f45434453412057616c6c6574205265676973747279206164647265737320616c60448201527f72656164792073657400000000000000000000000000000000000000000000006064820152608401610310565b81547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0391909116179055565b6060600061115e600284611879565b61118957507f02000000000000000000000000000000000000000000000000000000000000006111ac565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6001600160601b031981166000908152600283016020526040902060018101546112535761124e8383611315565b6112d9565b60028101805463ffffffff4216600160601b027fffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff9091161770020000000000000000000000000000000017905580546040516001600160601b0319841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b60018301546001600160601b0319838116600160601b90920460601b1614156108ab57505060010180546bffffffffffffffffffffffff169055565b6001600160601b03198116600081815260028481016020526040808320918201805470ff0000000000000000000000000000000019167003000000000000000000000000000000001790558154905191939290917f47b159947c3066cb253f60e8f046cfd747411788a545cb189679e3fa1467b28d9190a38254815460405163343bb92760e01b81526001600160a01b039092169163343bb927916113c09160040190815260200190565b600060405180830381600087803b158015610f2d57600080fd5b6001600160601b031982166000908152600284016020526040812060010154801561150557808335611412604086016020870161189b565b61142260608701604088016118b6565b60405160200161148f9392919092835260e09190911b7fffffffff0000000000000000000000000000000000000000000000000000000016602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b60405160208183030381529060405280519060200120146114f25760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077616c6c6574206d61696e205554584f20646174610000006044820152606401610310565b61150260608401604085016118b6565b91505b509392505050565b6001600160601b03198116600081815260028481016020526040808320918201805470ff0000000000000000000000000000000019167004000000000000000000000000000000001790558154905191939290917f9272a280b0f32f70b00ad0b546499c68e3ecc6f7bb7ef43491ec5d7b99bf69ef9190a360018301546001600160601b0319838116600160601b90920460601b1614156115bf576001830180546bffffffffffffffffffffffff1690555b8254815460405163343bb92760e01b81526001600160a01b039092169163343bb927916113c09160040190815260200190565b803563ffffffff8116811461160657600080fd5b919050565b6000806040838503121561161e57600080fd5b8235915061162e602084016115f2565b90509250929050565b60008060006060848603121561164c57600080fd5b505081359360208301359350604090920135919050565b80356001600160601b03198116811461160657600080fd5b60008060006060848603121561169057600080fd5b833592506116a060208501611663565b9150604084013590509250925092565b600080600080608085870312156116c657600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156116f557600080fd5b8235915061162e60208401611663565b60006060828403121561171757600080fd5b50919050565b600080600060a0848603121561173257600080fd5b8335925061174260208501611663565b91506117518560408601611705565b90509250925092565b803567ffffffffffffffff8116811461160657600080fd5b60008060006060848603121561178757600080fd5b833592506117976020850161175a565b91506117516040850161175a565b600080608083850312156117b857600080fd5b8235915061162e8460208501611705565b600080604083850312156117dc57600080fd5b8235915060208301356001600160a01b03811681146117fa57600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b600063ffffffff80831681851680830382111561184857634e487b7160e01b600052601160045260246000fd5b01949350505050565b60006020828403121561186357600080fd5b81516004811061187257600080fd5b9392505050565b60008261189657634e487b7160e01b600052601260045260246000fd5b500690565b6000602082840312156118ad57600080fd5b611872826115f2565b6000602082840312156118c857600080fd5b6118728261175a56fea26469706673582212207e53aad72fb4c3298c73e60f03e3909617a4d5db8da1841ba7b9dc8a3b8884af64736f6c63430008090033",
|
|
89
|
+
"bytecode": "0x610efc61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80634afbe4c91461005b57806399b0b8471461007d578063c87de7f41461009d578063d079fbb1146100bd575b600080fd5b81801561006757600080fd5b5061007b610076366004610cf1565b6100dd565b005b81801561008957600080fd5b5061007b610098366004610d3b565b6102bf565b8180156100a957600080fd5b5061007b6100b8366004610d87565b6104e7565b8180156100c957600080fd5b5061007b6100d8366004610db3565b610608565b60028401546001600160a01b0316331461014e5760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b60648201526084015b60405180910390fd5b600061016261015d84846108fd565b6109a7565b6001600160601b03198116600090815260148701602052604081209192506002820154600160801b900460ff1660048111156101a0576101a0610de0565b146102135760405162461bcd60e51b815260206004820152602860248201527f45434453412077616c6c657420686173206265656e20616c726561647920726560448201527f67697374657265640000000000000000000000000000000000000000000000006064820152608401610145565b848155600281018054600160801b7fffffffffffffffffffffffffffffff00ffffffff00000000ffffffffffffffff909116680100000000000000004263ffffffff16021717905560138601805473ffffffffffffffffffffffffffffffffffffffff1916606084901c1790556040516001600160601b031983169086907f2dbb47dce81d6b11cca1f1e3b10143d6f7e1e7e92d2dd9aacbb1f875379d308e90600090a3505050505050565b601383015460601b6001600160601b0319908116908316141561034a5760405162461bcd60e51b815260206004820152602c60248201527f4163746976652077616c6c65742063616e6e6f7420626520636f6e736964657260448201527f656420636c6f736561626c6500000000000000000000000000000000000000006064820152608401610145565b6001600160601b031982166000908152601484016020526040902060016002820154600160801b900460ff16600481111561038757610387610de0565b146103df5760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610145565b601284015460028201546000916104249163ffffffff740100000000000000000000000000000000000000009092048216916801000000000000000090910416610df6565b63ffffffff164210159050808061046457506012850154640100000000900467ffffffffffffffff166104588686866109ce565b67ffffffffffffffff16105b6104d65760405162461bcd60e51b815260206004820152603660248201527f57616c6c6574206e6565647320746f206265206f6c6420656e6f756768206f7260448201527f206861766520746f6f20666577207361746f73686973000000000000000000006064820152608401610145565b6104e08585610b01565b5050505050565b60028301546001600160a01b031633146105535760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610145565b600061056261015d84846108fd565b905060016001600160601b031982166000908152601486016020526040902060020154600160801b900460ff1660048111156105a0576105a0610de0565b146105f85760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610145565b6106028482610b01565b50505050565b6002820154604080517fcc56238800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cc562388916004808301926020929190829003018186803b15801561066857600080fd5b505afa15801561067c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a09190610e2c565b60038111156106b1576106b1610de0565b146107245760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574206372656174696f6e20616c726561647920696e2070726f677260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610145565b601382015460601b6001600160601b03198116156108655760006107498483856109ce565b6001600160601b031983166000908152601486016020526040812060020154601287015492935063ffffffff68010000000000000000909104811692610790911683610df6565b63ffffffff1642101590508080156107c25750601286015467ffffffffffffffff640100000000909104811690841610155b806107ef5750601286015467ffffffffffffffff6c01000000000000000000000000909104811690841610155b6108615760405162461bcd60e51b815260206004820152602660248201527f57616c6c6574206372656174696f6e20636f6e646974696f6e7320617265206e60448201527f6f74206d657400000000000000000000000000000000000000000000000000006064820152608401610145565b5050505b6040517f31fecb80caf1e1128496dd5a6f1083ba29fd5fe64c3fe04e2d1b6f9cfc27d5a390600090a18260020160009054906101000a90046001600160a01b03166001600160a01b03166372cc8c6d6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108e057600080fd5b505af11580156108f4573d6000803e3d6000fd5b50505050505050565b6060600061090c600284610e54565b61093757507f020000000000000000000000000000000000000000000000000000000000000061095a565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6001600160601b0319821660009081526014840160205260408120600101548015610af957808335610a066040860160208701610e76565b610a166060870160408801610e9c565b604051602001610a839392919092835260e09190911b7fffffffff0000000000000000000000000000000000000000000000000000000016602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b6040516020818303038152906040528051906020012014610ae65760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077616c6c6574206d61696e205554584f20646174610000006044820152606401610145565b610af66060840160408501610e9c565b91505b509392505050565b6001600160601b03198116600090815260148301602052604090206001810154610b3457610b2f8383610c05565b610bc3565b60028101805463ffffffff42166c01000000000000000000000000027fffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff9091161770020000000000000000000000000000000017905580546040516001600160601b0319841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b601383015460601b6001600160601b03199081169083161415610c005760138301805473ffffffffffffffffffffffffffffffffffffffff191690555b505050565b6001600160601b0319811660008181526014840160205260408082206002810180547fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff16700300000000000000000000000000000000179055805491519093927f47b159947c3066cb253f60e8f046cfd747411788a545cb189679e3fa1467b28d91a3600283015481546040517f343bb9270000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163343bb92791610cd79160040190815260200190565b600060405180830381600087803b1580156108e057600080fd5b60008060008060808587031215610d0757600080fd5b5050823594602084013594506040840135936060013592509050565b600060608284031215610d3557600080fd5b50919050565b600080600060a08486031215610d5057600080fd5b8335925060208401356001600160601b031981168114610d6f57600080fd5b9150610d7e8560408601610d23565b90509250925092565b600080600060608486031215610d9c57600080fd5b505081359360208301359350604090920135919050565b60008060808385031215610dc657600080fd5b82359150610dd78460208501610d23565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b600063ffffffff808316818516808303821115610e2357634e487b7160e01b600052601160045260246000fd5b01949350505050565b600060208284031215610e3e57600080fd5b815160048110610e4d57600080fd5b9392505050565b600082610e7157634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215610e8857600080fd5b813563ffffffff81168114610e4d57600080fd5b600060208284031215610eae57600080fd5b813567ffffffffffffffff81168114610e4d57600080fdfea2646970667358221220d3368030477927ac3c96dea28ee42cccf082c91ca59187570a14f167a29a4ad164736f6c63430008090033",
|
|
90
|
+
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80634afbe4c91461005b57806399b0b8471461007d578063c87de7f41461009d578063d079fbb1146100bd575b600080fd5b81801561006757600080fd5b5061007b610076366004610cf1565b6100dd565b005b81801561008957600080fd5b5061007b610098366004610d3b565b6102bf565b8180156100a957600080fd5b5061007b6100b8366004610d87565b6104e7565b8180156100c957600080fd5b5061007b6100d8366004610db3565b610608565b60028401546001600160a01b0316331461014e5760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b60648201526084015b60405180910390fd5b600061016261015d84846108fd565b6109a7565b6001600160601b03198116600090815260148701602052604081209192506002820154600160801b900460ff1660048111156101a0576101a0610de0565b146102135760405162461bcd60e51b815260206004820152602860248201527f45434453412077616c6c657420686173206265656e20616c726561647920726560448201527f67697374657265640000000000000000000000000000000000000000000000006064820152608401610145565b848155600281018054600160801b7fffffffffffffffffffffffffffffff00ffffffff00000000ffffffffffffffff909116680100000000000000004263ffffffff16021717905560138601805473ffffffffffffffffffffffffffffffffffffffff1916606084901c1790556040516001600160601b031983169086907f2dbb47dce81d6b11cca1f1e3b10143d6f7e1e7e92d2dd9aacbb1f875379d308e90600090a3505050505050565b601383015460601b6001600160601b0319908116908316141561034a5760405162461bcd60e51b815260206004820152602c60248201527f4163746976652077616c6c65742063616e6e6f7420626520636f6e736964657260448201527f656420636c6f736561626c6500000000000000000000000000000000000000006064820152608401610145565b6001600160601b031982166000908152601484016020526040902060016002820154600160801b900460ff16600481111561038757610387610de0565b146103df5760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610145565b601284015460028201546000916104249163ffffffff740100000000000000000000000000000000000000009092048216916801000000000000000090910416610df6565b63ffffffff164210159050808061046457506012850154640100000000900467ffffffffffffffff166104588686866109ce565b67ffffffffffffffff16105b6104d65760405162461bcd60e51b815260206004820152603660248201527f57616c6c6574206e6565647320746f206265206f6c6420656e6f756768206f7260448201527f206861766520746f6f20666577207361746f73686973000000000000000000006064820152608401610145565b6104e08585610b01565b5050505050565b60028301546001600160a01b031633146105535760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610145565b600061056261015d84846108fd565b905060016001600160601b031982166000908152601486016020526040902060020154600160801b900460ff1660048111156105a0576105a0610de0565b146105f85760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610145565b6106028482610b01565b50505050565b6002820154604080517fcc56238800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cc562388916004808301926020929190829003018186803b15801561066857600080fd5b505afa15801561067c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a09190610e2c565b60038111156106b1576106b1610de0565b146107245760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574206372656174696f6e20616c726561647920696e2070726f677260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610145565b601382015460601b6001600160601b03198116156108655760006107498483856109ce565b6001600160601b031983166000908152601486016020526040812060020154601287015492935063ffffffff68010000000000000000909104811692610790911683610df6565b63ffffffff1642101590508080156107c25750601286015467ffffffffffffffff640100000000909104811690841610155b806107ef5750601286015467ffffffffffffffff6c01000000000000000000000000909104811690841610155b6108615760405162461bcd60e51b815260206004820152602660248201527f57616c6c6574206372656174696f6e20636f6e646974696f6e7320617265206e60448201527f6f74206d657400000000000000000000000000000000000000000000000000006064820152608401610145565b5050505b6040517f31fecb80caf1e1128496dd5a6f1083ba29fd5fe64c3fe04e2d1b6f9cfc27d5a390600090a18260020160009054906101000a90046001600160a01b03166001600160a01b03166372cc8c6d6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108e057600080fd5b505af11580156108f4573d6000803e3d6000fd5b50505050505050565b6060600061090c600284610e54565b61093757507f020000000000000000000000000000000000000000000000000000000000000061095a565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6001600160601b0319821660009081526014840160205260408120600101548015610af957808335610a066040860160208701610e76565b610a166060870160408801610e9c565b604051602001610a839392919092835260e09190911b7fffffffff0000000000000000000000000000000000000000000000000000000016602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b6040516020818303038152906040528051906020012014610ae65760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077616c6c6574206d61696e205554584f20646174610000006044820152606401610145565b610af66060840160408501610e9c565b91505b509392505050565b6001600160601b03198116600090815260148301602052604090206001810154610b3457610b2f8383610c05565b610bc3565b60028101805463ffffffff42166c01000000000000000000000000027fffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff9091161770020000000000000000000000000000000017905580546040516001600160601b0319841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b601383015460601b6001600160601b03199081169083161415610c005760138301805473ffffffffffffffffffffffffffffffffffffffff191690555b505050565b6001600160601b0319811660008181526014840160205260408082206002810180547fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff16700300000000000000000000000000000000179055805491519093927f47b159947c3066cb253f60e8f046cfd747411788a545cb189679e3fa1467b28d91a3600283015481546040517f343bb9270000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163343bb92791610cd79160040190815260200190565b600060405180830381600087803b1580156108e057600080fd5b60008060008060808587031215610d0757600080fd5b5050823594602084013594506040840135936060013592509050565b600060608284031215610d3557600080fd5b50919050565b600080600060a08486031215610d5057600080fd5b8335925060208401356001600160601b031981168114610d6f57600080fd5b9150610d7e8560408601610d23565b90509250925092565b600080600060608486031215610d9c57600080fd5b505081359360208301359350604090920135919050565b60008060808385031215610dc657600080fd5b82359150610dd78460208501610d23565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b600063ffffffff808316818516808303821115610e2357634e487b7160e01b600052601160045260246000fd5b01949350505050565b600060208284031215610e3e57600080fd5b815160048110610e4d57600080fd5b9392505050565b600082610e7157634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215610e8857600080fd5b813563ffffffff81168114610e4d57600080fd5b600060208284031215610eae57600080fd5b813567ffffffffffffffff81168114610e4d57600080fdfea2646970667358221220d3368030477927ac3c96dea28ee42cccf082c91ca59187570a14f167a29a4ad164736f6c63430008090033",
|
|
136
91
|
"linkReferences": {},
|
|
137
92
|
"deployedLinkReferences": {}
|
|
138
93
|
}
|
|
@@ -18,11 +18,13 @@ pragma solidity ^0.8.9;
|
|
|
18
18
|
import {BTCUtils} from "@keep-network/bitcoin-spv-sol/contracts/BTCUtils.sol";
|
|
19
19
|
import {ValidateSPV} from "@keep-network/bitcoin-spv-sol/contracts/ValidateSPV.sol";
|
|
20
20
|
|
|
21
|
+
import "./BridgeState.sol";
|
|
22
|
+
|
|
21
23
|
/// @title Bitcoin transaction
|
|
22
24
|
/// @notice Allows to reference Bitcoin raw transaction in Solidity.
|
|
23
25
|
/// @dev See https://developer.bitcoin.org/reference/transactions.html#raw-transaction-format
|
|
24
26
|
///
|
|
25
|
-
/// Raw
|
|
27
|
+
/// Raw Bitcoin transaction data:
|
|
26
28
|
///
|
|
27
29
|
/// | Bytes | Name | BTC type | Description |
|
|
28
30
|
/// |--------|--------------|------------------------|---------------------------|
|
|
@@ -80,12 +82,12 @@ library BitcoinTx {
|
|
|
80
82
|
/// @notice Represents Bitcoin transaction data.
|
|
81
83
|
struct Info {
|
|
82
84
|
/// @notice Bitcoin transaction version
|
|
83
|
-
/// @dev `version` from raw
|
|
85
|
+
/// @dev `version` from raw Bitcoin transaction data.
|
|
84
86
|
/// Encoded as 4-bytes signed integer, little endian.
|
|
85
87
|
bytes4 version;
|
|
86
88
|
/// @notice All Bitcoin transaction inputs, prepended by the number of
|
|
87
89
|
/// transaction inputs.
|
|
88
|
-
/// @dev `tx_in_count | tx_in` from raw
|
|
90
|
+
/// @dev `tx_in_count | tx_in` from raw Bitcoin transaction data.
|
|
89
91
|
///
|
|
90
92
|
/// The number of transaction inputs encoded as compactSize
|
|
91
93
|
/// unsigned integer, little-endian.
|
|
@@ -120,17 +122,6 @@ library BitcoinTx {
|
|
|
120
122
|
bytes bitcoinHeaders;
|
|
121
123
|
}
|
|
122
124
|
|
|
123
|
-
/// @notice Determines the difficulty context for a Bitcoin SPV proof.
|
|
124
|
-
struct ProofDifficulty {
|
|
125
|
-
/// @notice Difficulty of the current epoch.
|
|
126
|
-
uint256 currentEpochDifficulty;
|
|
127
|
-
/// @notice Difficulty of the previous epoch.
|
|
128
|
-
uint256 previousEpochDifficulty;
|
|
129
|
-
/// @notice The number of confirmations on the Bitcoin chain required
|
|
130
|
-
/// to successfully evaluate an SPV proof.
|
|
131
|
-
uint256 difficultyFactor;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
125
|
/// @notice Represents info about an unspent transaction output.
|
|
135
126
|
struct UTXO {
|
|
136
127
|
/// @notice Hash of the transaction the output belongs to.
|
|
@@ -156,12 +147,11 @@ library BitcoinTx {
|
|
|
156
147
|
/// Reverts in case the validation or proof verification fail.
|
|
157
148
|
/// @param txInfo Bitcoin transaction data
|
|
158
149
|
/// @param proof Bitcoin proof data
|
|
159
|
-
/// @param proofDifficulty Bitcoin proof difficulty context.
|
|
160
150
|
/// @return txHash Proven 32-byte transaction hash.
|
|
161
151
|
function validateProof(
|
|
152
|
+
BridgeState.Storage storage self,
|
|
162
153
|
Info calldata txInfo,
|
|
163
|
-
Proof calldata proof
|
|
164
|
-
ProofDifficulty memory proofDifficulty
|
|
154
|
+
Proof calldata proof
|
|
165
155
|
) internal view returns (bytes32 txHash) {
|
|
166
156
|
require(
|
|
167
157
|
txInfo.inputVector.validateVin(),
|
|
@@ -190,7 +180,7 @@ library BitcoinTx {
|
|
|
190
180
|
"Tx merkle proof is not valid for provided header and tx hash"
|
|
191
181
|
);
|
|
192
182
|
|
|
193
|
-
evaluateProofDifficulty(proof.bitcoinHeaders
|
|
183
|
+
evaluateProofDifficulty(self, proof.bitcoinHeaders);
|
|
194
184
|
|
|
195
185
|
return txHash;
|
|
196
186
|
}
|
|
@@ -200,20 +190,23 @@ library BitcoinTx {
|
|
|
200
190
|
/// Reverts in case the evaluation fails.
|
|
201
191
|
/// @param bitcoinHeaders Bitcoin headers chain being part of the SPV
|
|
202
192
|
/// proof. Used to extract the observed proof difficulty
|
|
203
|
-
/// @param proofDifficulty Bitcoin proof difficulty context.
|
|
204
193
|
function evaluateProofDifficulty(
|
|
205
|
-
|
|
206
|
-
|
|
194
|
+
BridgeState.Storage storage self,
|
|
195
|
+
bytes memory bitcoinHeaders
|
|
207
196
|
) internal view {
|
|
197
|
+
IRelay relay = self.relay;
|
|
198
|
+
uint256 currentEpochDifficulty = relay.getCurrentEpochDifficulty();
|
|
199
|
+
uint256 previousEpochDifficulty = relay.getPrevEpochDifficulty();
|
|
200
|
+
|
|
208
201
|
uint256 requestedDiff = 0;
|
|
209
202
|
uint256 firstHeaderDiff = bitcoinHeaders
|
|
210
203
|
.extractTarget()
|
|
211
204
|
.calculateDifficulty();
|
|
212
205
|
|
|
213
|
-
if (firstHeaderDiff ==
|
|
214
|
-
requestedDiff =
|
|
215
|
-
} else if (firstHeaderDiff ==
|
|
216
|
-
requestedDiff =
|
|
206
|
+
if (firstHeaderDiff == currentEpochDifficulty) {
|
|
207
|
+
requestedDiff = currentEpochDifficulty;
|
|
208
|
+
} else if (firstHeaderDiff == previousEpochDifficulty) {
|
|
209
|
+
requestedDiff = previousEpochDifficulty;
|
|
217
210
|
} else {
|
|
218
211
|
revert("Not at current or previous difficulty");
|
|
219
212
|
}
|
|
@@ -234,7 +227,7 @@ library BitcoinTx {
|
|
|
234
227
|
);
|
|
235
228
|
|
|
236
229
|
require(
|
|
237
|
-
observedDiff >= requestedDiff *
|
|
230
|
+
observedDiff >= requestedDiff * self.txProofDifficultyFactor,
|
|
238
231
|
"Insufficient accumulated difficulty in header chain"
|
|
239
232
|
);
|
|
240
233
|
}
|