@keep-network/tbtc-v2 0.1.1-dev.33 → 0.1.1-dev.34
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/{7e4974a220c8c12bc2c31c8235131416.json → a67a2c11233ce411fb55a9f369ced323.json} +1 -1
- 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/Bridge.sol/Bridge.dbg.json +1 -1
- package/build/contracts/bridge/Bridge.sol/Bridge.json +44 -44
- package/build/contracts/bridge/Bridge.sol/IRelay.dbg.json +1 -1
- package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
- package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +1 -1
- package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +1 -1
- package/build/contracts/bridge/Frauds.sol/Frauds.dbg.json +1 -1
- package/build/contracts/bridge/Frauds.sol/Frauds.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/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/Bridge.sol +59 -37
- package/package.json +1 -1
|
@@ -131,8 +131,8 @@
|
|
|
131
131
|
"type": "event"
|
|
132
132
|
}
|
|
133
133
|
],
|
|
134
|
-
"bytecode": "0x611aad61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c8063545227871161006557806354522787146101195780639a08b74014610139578063c945968614610159578063e6d20d451461018b57600080fd5b80632123f1c41461009757806321e76ee8146100b95780633f31f49f146100d957806340399403146100f9575b600080fd5b8180156100a357600080fd5b506100b76100b23660046116bd565b6101ab565b005b8180156100c557600080fd5b506100b76100d4366004611721565b6101e6565b8180156100e557600080fd5b506100b76100f4366004611774565b6104f3565b81801561010557600080fd5b506100b76101143660046116bd565b6106e4565b81801561012557600080fd5b506100b76101343660046116bd565b61077e565b81801561014557600080fd5b506100b7610154366004611819565b61082c565b81801561016557600080fd5b506101796101743660046118ae565b610a9c565b60405190815260200160405180910390f35b81801561019757600080fd5b506100b76101a63660046116bd565b610c72565b8082556040518181527fdf25ccd778c4ac0298894525a8bd99ba018936d0c6ea0b6fc212507531c0adb7906020015b60405180910390a15050565b60008383836040516020016101fd93929190611931565b60408051601f198184030181529181528151602092830120600081815260048901909352912060028101549192509063ffffffff166102835760405162461bcd60e51b815260206004820152601e60248201527f4672617564206368616c6c656e676520646f6573206e6f74206578697374000060448201526064015b60405180910390fd5b6002810154640100000000900460ff16156102f25760405162461bcd60e51b815260206004820152602960248201527f4672617564206368616c6c656e67652068617320616c7265616479206265656e604482015268081c995cdbdb1d995960ba1b606482015260840161027a565b6002808701549082015461030c919063ffffffff16611959565b4210156103815760405162461bcd60e51b815260206004820152603260248201527f4672617564206368616c6c656e67652064656665617420706572696f6420646960448201527f64206e6f742074696d65206f7574207965740000000000000000000000000000606482015260840161027a565b60028101805464ff0000000019166401000000001790558054600182015460405173ffffffffffffffffffffffffffffffffffffffff90921691620186a091906000818181858888f193505050503d80600081146103fb576040519150601f19603f3d011682016040523d82523d6000602084013e610400565b606091505b505050600061049061044c600088888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610d0c9050565b604080516020601f8a0181900481028201810190925288815261048b91908a8a808385018382808284376000920191909152509293925050610d0c9050565b610d14565b9050600061049d82610dbf565b604080516bffffffffffffffffffffffff1983168152602081018890529192507f635230b60143449f10a365568e2bd95e3e8aaed03855631722941c2bad634b7791015b60405180910390a15050505050505050565b600061053484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610de692505050565b9050600086868360405160200161054d93929190611931565b60408051601f198184030181528282528051602091820120600081815260048d0190925291902060028101805464ff00000000191664010000000017905560018101549193509173ffffffffffffffffffffffffffffffffffffffff861691620186a091600060405180830381858888f193505050503d80600081146105ef576040519150601f19603f3d011682016040523d82523d6000602084013e6105f4565b606091505b505050600061067f61064060008b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610d0c9050565b604080516020601f8d018190048102820181019092528b815261048b91908d8d808385018382808284376000920191909152509293925050610d0c9050565b9050600061068c82610dbf565b604080516bffffffffffffffffffffffff1983168152602081018890529192507f6ff720470ffad78f316655e2c7fc77a76763c13de0e19ee52149916ba7e44d3b910160405180910390a15050505050505050505050565b600081116107475760405162461bcd60e51b815260206004820152602a60248201527f4672617564206368616c6c656e6765206465666561742074696d656f7574206d6044820152690757374206265203e20360b41b606482015260840161027a565b600282018190556040518181527f1e833ee8be2754de7dae1749a8438b691fda5b0695db2b2b8311b23270406d5a906020016101da565b60648111156107f55760405162461bcd60e51b815260206004820152602f60248201527f4672617564206e6f74696669657220726577617264206d756c7469706c69657260448201527f206d757374206265203c3d203130300000000000000000000000000000000000606482015260840161027a565b600182018190556040518181527feddb2abfc2e3aa166fbafa0dbaa077f0ec7663ddc8a535253bb35ed4ab70c877906020016101da565b85600301543410156108a65760405162461bcd60e51b815260206004820152602660248201527f54686520616d6f756e74206f6620455448206465706f7369746564206973207460448201527f6f6f206c6f770000000000000000000000000000000000000000000000000000606482015260840161027a565b6108fe85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508692506108f29150506060850160408601611971565b84356020860135610ea5565b61094a5760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726520766572696669636174696f6e206661696c7572650000604482015260640161027a565b600085858460405160200161096193929190611931565b60408051601f198184030181529181528151602092830120600081815260048b01909352912060028101549192509063ffffffff16156109e35760405162461bcd60e51b815260206004820152601e60248201527f4672617564206368616c6c656e676520616c7265616479206578697374730000604482015260640161027a565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317815534600182015560028101805464ffffffffff191663ffffffff42161790557ff4aa58d09ba5de017eac597806dfcfc2cad287816cb1eb7729a032c82680c94d8585610a5c6060870160408801611971565b604080516bffffffffffffffffffffffff19909416845260208085019390935260ff9091169083015285356060830152850135608082015260a0016104e1565b600080610ade85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610de692505050565b90506000878783604051602001610af793929190611931565b60408051601f198184030181529181528151602092830120600081815260048d01909352912060028101549192509063ffffffff16610b785760405162461bcd60e51b815260206004820152601e60248201527f4672617564206368616c6c656e676520646f6573206e6f742065786973740000604482015260640161027a565b6002810154640100000000900460ff1615610be75760405162461bcd60e51b815260206004820152602960248201527f4672617564206368616c6c656e67652068617320616c7265616479206265656e604482015268081c995cdbdb1d995960ba1b606482015260840161027a565b610bf18787610fb5565b63ffffffff16600114610c465760405162461bcd60e51b815260206004820152601260248201527f57726f6e67207369676861736820747970650000000000000000000000000000604482015260640161027a565b84610c5a57610c558787611035565b610c64565b610c648787611279565b9a9950505050505050505050565b60008111610cd55760405162461bcd60e51b815260206004820152602a60248201527f4672617564206368616c6c656e6765206465706f73697420616d6f756e74206d6044820152690757374206265203e20360b41b606482015260840161027a565b600382018190556040518181527fac6cc6a5e862456c7f1a3827f078d9a355cb82eef2353c4167e872673b48570c906020016101da565b016020015190565b60606000610d23600284611994565b610d4e57507f0200000000000000000000000000000000000000000000000000000000000000610d71565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff0000000000000000000000000000000000000000000000000000000000000082166020820152602181018590526041016040516020818303038152906040529150505b92915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b600060028083604051610df991906119b6565b602060405180830381855afa158015610e16573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3991906119f1565b604051602001610e4b91815260200190565b60408051601f1981840301815290829052610e65916119b6565b602060405180830381855afa158015610e82573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610db991906119f1565b60008551604014610f1e5760405162461bcd60e51b815260206004820152602760248201527f526571756972657320756e636f6d7072657373656420756e707265666978656460448201527f207075626b657900000000000000000000000000000000000000000000000000606482015260840161027a565b6000610f298761136f565b604080516000808252602082018084528a905260ff89169282019290925260608101879052608081018690529192509060019060a0016020604051602081039080840390855afa158015610f81573d6000803e3d6000fd5b5050604051601f19015173ffffffffffffffffffffffffffffffffffffffff90811693169290921498975050505050505050565b600080611005610fc6600485611a0a565b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506113f49050565b905060e081901c60d882901c63ff00ff001662ff00ff60e884901c1617601081811b91901c175b95945050505050565b600080600061107e600486868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061140a9050565b90925090506000611090836005611959565b905060005b8281101561126f5760006110e28389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115889050565b90506000611129848a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115d39050565b915050801561124e576000611177858b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506113f49050565b905060006111e76111c1878d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061161a9050565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b9050818160405160200161122a92919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6040516020818303038152906040528051906020012060001c98505050505061126f565b6112588285611959565b93505050808061126790611a21565b915050611095565b5050505092915050565b6000806112c0604485858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506113f49050565b9050600061130b6111c1604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061161a9050565b9050818160405160200161134e92919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b60408051601f19818403018152919052805160209091012095945050505050565b600081516040146113e85760405162461bcd60e51b815260206004820152602d60248201527f5075626b6579206d7573742062652036342d62797465207261772c20756e636f60448201527f6d70726573736564206b65792e00000000000000000000000000000000000000606482015260840161027a565b50805160209091012090565b60006114038383016020015190565b9392505050565b60008060006114198585611631565b905060ff811661144b57600085858151811061143757611437611a3c565b016020015190935060f81c91506115819050565b83611457826001611a52565b60ff166114649190611959565b8551101561147b5760001960009250925050611581565b60008160ff16600214156114c0576114b56114a161149a876001611959565b88906113f4565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611577565b8160ff16600414156114ea576114dd6111c161149a876001611959565b63ffffffff169050611577565b8160ff16600814156115775761156a61150761149a876001611959565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b600080600061159785856115d3565b90925090506000198214156115b25760001992505050610db9565b806115be836025611959565b6115c89190611959565b61102c906004611959565b6000806115e1836025611959565b845110156115f6575060001990506000611581565b60008061160d86611608876024611959565b61140a565b9097909650945050505050565b600061140361162a836020611959565b84906113f4565b600082828151811061164557611645611a3c565b60209101015160f81c60ff141561165e57506008610db9565b82828151811061167057611670611a3c565b60209101015160f81c60fe141561168957506004610db9565b82828151811061169b5761169b611a3c565b60209101015160f81c60fd14156116b457506002610db9565b50600092915050565b600080604083850312156116d057600080fd5b50508035926020909101359150565b60008083601f8401126116f157600080fd5b50813567ffffffffffffffff81111561170957600080fd5b60208301915083602082850101111561158157600080fd5b6000806000806060858703121561173757600080fd5b84359350602085013567ffffffffffffffff81111561175557600080fd5b611761878288016116df565b9598909750949560400135949350505050565b6000806000806000806080878903121561178d57600080fd5b86359550602087013567ffffffffffffffff808211156117ac57600080fd5b6117b88a838b016116df565b909750955060408901359150808211156117d157600080fd5b506117de89828a016116df565b909450925050606087013573ffffffffffffffffffffffffffffffffffffffff8116811461180b57600080fd5b809150509295509295509295565b60008060008060008086880360e081121561183357600080fd5b87359650602088013567ffffffffffffffff81111561185157600080fd5b61185d8a828b016116df565b90975095505060408801356bffffffffffffffffffffffff198116811461188357600080fd5b93506060888101359350607f198201121561189d57600080fd5b506080870190509295509295509295565b600080600080600080608087890312156118c757600080fd5b86359550602087013567ffffffffffffffff808211156118e657600080fd5b6118f28a838b016116df565b9097509550604089013591508082111561190b57600080fd5b5061191889828a016116df565b9094509250506060870135801515811461180b57600080fd5b82848237909101908152602001919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561196c5761196c611943565b500190565b60006020828403121561198357600080fd5b813560ff8116811461140357600080fd5b6000826119b157634e487b7160e01b600052601260045260246000fd5b500690565b6000825160005b818110156119d757602081860181015185830152016119bd565b818111156119e6576000828501525b509190910192915050565b600060208284031215611a0357600080fd5b5051919050565b600082821015611a1c57611a1c611943565b500390565b6000600019821415611a3557611a35611943565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff84168060ff03821115611a6f57611a6f611943565b01939250505056fea2646970667358221220577abb9735fe52daaf0e4b7bb845275ac48416ebcc16d376bca94f26678b2e3064736f6c63430008090033",
|
|
135
|
-
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c8063545227871161006557806354522787146101195780639a08b74014610139578063c945968614610159578063e6d20d451461018b57600080fd5b80632123f1c41461009757806321e76ee8146100b95780633f31f49f146100d957806340399403146100f9575b600080fd5b8180156100a357600080fd5b506100b76100b23660046116bd565b6101ab565b005b8180156100c557600080fd5b506100b76100d4366004611721565b6101e6565b8180156100e557600080fd5b506100b76100f4366004611774565b6104f3565b81801561010557600080fd5b506100b76101143660046116bd565b6106e4565b81801561012557600080fd5b506100b76101343660046116bd565b61077e565b81801561014557600080fd5b506100b7610154366004611819565b61082c565b81801561016557600080fd5b506101796101743660046118ae565b610a9c565b60405190815260200160405180910390f35b81801561019757600080fd5b506100b76101a63660046116bd565b610c72565b8082556040518181527fdf25ccd778c4ac0298894525a8bd99ba018936d0c6ea0b6fc212507531c0adb7906020015b60405180910390a15050565b60008383836040516020016101fd93929190611931565b60408051601f198184030181529181528151602092830120600081815260048901909352912060028101549192509063ffffffff166102835760405162461bcd60e51b815260206004820152601e60248201527f4672617564206368616c6c656e676520646f6573206e6f74206578697374000060448201526064015b60405180910390fd5b6002810154640100000000900460ff16156102f25760405162461bcd60e51b815260206004820152602960248201527f4672617564206368616c6c656e67652068617320616c7265616479206265656e604482015268081c995cdbdb1d995960ba1b606482015260840161027a565b6002808701549082015461030c919063ffffffff16611959565b4210156103815760405162461bcd60e51b815260206004820152603260248201527f4672617564206368616c6c656e67652064656665617420706572696f6420646960448201527f64206e6f742074696d65206f7574207965740000000000000000000000000000606482015260840161027a565b60028101805464ff0000000019166401000000001790558054600182015460405173ffffffffffffffffffffffffffffffffffffffff90921691620186a091906000818181858888f193505050503d80600081146103fb576040519150601f19603f3d011682016040523d82523d6000602084013e610400565b606091505b505050600061049061044c600088888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610d0c9050565b604080516020601f8a0181900481028201810190925288815261048b91908a8a808385018382808284376000920191909152509293925050610d0c9050565b610d14565b9050600061049d82610dbf565b604080516bffffffffffffffffffffffff1983168152602081018890529192507f635230b60143449f10a365568e2bd95e3e8aaed03855631722941c2bad634b7791015b60405180910390a15050505050505050565b600061053484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610de692505050565b9050600086868360405160200161054d93929190611931565b60408051601f198184030181528282528051602091820120600081815260048d0190925291902060028101805464ff00000000191664010000000017905560018101549193509173ffffffffffffffffffffffffffffffffffffffff861691620186a091600060405180830381858888f193505050503d80600081146105ef576040519150601f19603f3d011682016040523d82523d6000602084013e6105f4565b606091505b505050600061067f61064060008b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610d0c9050565b604080516020601f8d018190048102820181019092528b815261048b91908d8d808385018382808284376000920191909152509293925050610d0c9050565b9050600061068c82610dbf565b604080516bffffffffffffffffffffffff1983168152602081018890529192507f6ff720470ffad78f316655e2c7fc77a76763c13de0e19ee52149916ba7e44d3b910160405180910390a15050505050505050505050565b600081116107475760405162461bcd60e51b815260206004820152602a60248201527f4672617564206368616c6c656e6765206465666561742074696d656f7574206d6044820152690757374206265203e20360b41b606482015260840161027a565b600282018190556040518181527f1e833ee8be2754de7dae1749a8438b691fda5b0695db2b2b8311b23270406d5a906020016101da565b60648111156107f55760405162461bcd60e51b815260206004820152602f60248201527f4672617564206e6f74696669657220726577617264206d756c7469706c69657260448201527f206d757374206265203c3d203130300000000000000000000000000000000000606482015260840161027a565b600182018190556040518181527feddb2abfc2e3aa166fbafa0dbaa077f0ec7663ddc8a535253bb35ed4ab70c877906020016101da565b85600301543410156108a65760405162461bcd60e51b815260206004820152602660248201527f54686520616d6f756e74206f6620455448206465706f7369746564206973207460448201527f6f6f206c6f770000000000000000000000000000000000000000000000000000606482015260840161027a565b6108fe85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508692506108f29150506060850160408601611971565b84356020860135610ea5565b61094a5760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726520766572696669636174696f6e206661696c7572650000604482015260640161027a565b600085858460405160200161096193929190611931565b60408051601f198184030181529181528151602092830120600081815260048b01909352912060028101549192509063ffffffff16156109e35760405162461bcd60e51b815260206004820152601e60248201527f4672617564206368616c6c656e676520616c7265616479206578697374730000604482015260640161027a565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317815534600182015560028101805464ffffffffff191663ffffffff42161790557ff4aa58d09ba5de017eac597806dfcfc2cad287816cb1eb7729a032c82680c94d8585610a5c6060870160408801611971565b604080516bffffffffffffffffffffffff19909416845260208085019390935260ff9091169083015285356060830152850135608082015260a0016104e1565b600080610ade85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610de692505050565b90506000878783604051602001610af793929190611931565b60408051601f198184030181529181528151602092830120600081815260048d01909352912060028101549192509063ffffffff16610b785760405162461bcd60e51b815260206004820152601e60248201527f4672617564206368616c6c656e676520646f6573206e6f742065786973740000604482015260640161027a565b6002810154640100000000900460ff1615610be75760405162461bcd60e51b815260206004820152602960248201527f4672617564206368616c6c656e67652068617320616c7265616479206265656e604482015268081c995cdbdb1d995960ba1b606482015260840161027a565b610bf18787610fb5565b63ffffffff16600114610c465760405162461bcd60e51b815260206004820152601260248201527f57726f6e67207369676861736820747970650000000000000000000000000000604482015260640161027a565b84610c5a57610c558787611035565b610c64565b610c648787611279565b9a9950505050505050505050565b60008111610cd55760405162461bcd60e51b815260206004820152602a60248201527f4672617564206368616c6c656e6765206465706f73697420616d6f756e74206d6044820152690757374206265203e20360b41b606482015260840161027a565b600382018190556040518181527fac6cc6a5e862456c7f1a3827f078d9a355cb82eef2353c4167e872673b48570c906020016101da565b016020015190565b60606000610d23600284611994565b610d4e57507f0200000000000000000000000000000000000000000000000000000000000000610d71565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff0000000000000000000000000000000000000000000000000000000000000082166020820152602181018590526041016040516020818303038152906040529150505b92915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b600060028083604051610df991906119b6565b602060405180830381855afa158015610e16573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3991906119f1565b604051602001610e4b91815260200190565b60408051601f1981840301815290829052610e65916119b6565b602060405180830381855afa158015610e82573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610db991906119f1565b60008551604014610f1e5760405162461bcd60e51b815260206004820152602760248201527f526571756972657320756e636f6d7072657373656420756e707265666978656460448201527f207075626b657900000000000000000000000000000000000000000000000000606482015260840161027a565b6000610f298761136f565b604080516000808252602082018084528a905260ff89169282019290925260608101879052608081018690529192509060019060a0016020604051602081039080840390855afa158015610f81573d6000803e3d6000fd5b5050604051601f19015173ffffffffffffffffffffffffffffffffffffffff90811693169290921498975050505050505050565b600080611005610fc6600485611a0a565b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506113f49050565b905060e081901c60d882901c63ff00ff001662ff00ff60e884901c1617601081811b91901c175b95945050505050565b600080600061107e600486868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061140a9050565b90925090506000611090836005611959565b905060005b8281101561126f5760006110e28389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115889050565b90506000611129848a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115d39050565b915050801561124e576000611177858b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506113f49050565b905060006111e76111c1878d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061161a9050565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b9050818160405160200161122a92919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6040516020818303038152906040528051906020012060001c98505050505061126f565b6112588285611959565b93505050808061126790611a21565b915050611095565b5050505092915050565b6000806112c0604485858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506113f49050565b9050600061130b6111c1604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061161a9050565b9050818160405160200161134e92919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b60408051601f19818403018152919052805160209091012095945050505050565b600081516040146113e85760405162461bcd60e51b815260206004820152602d60248201527f5075626b6579206d7573742062652036342d62797465207261772c20756e636f60448201527f6d70726573736564206b65792e00000000000000000000000000000000000000606482015260840161027a565b50805160209091012090565b60006114038383016020015190565b9392505050565b60008060006114198585611631565b905060ff811661144b57600085858151811061143757611437611a3c565b016020015190935060f81c91506115819050565b83611457826001611a52565b60ff166114649190611959565b8551101561147b5760001960009250925050611581565b60008160ff16600214156114c0576114b56114a161149a876001611959565b88906113f4565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611577565b8160ff16600414156114ea576114dd6111c161149a876001611959565b63ffffffff169050611577565b8160ff16600814156115775761156a61150761149a876001611959565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b600080600061159785856115d3565b90925090506000198214156115b25760001992505050610db9565b806115be836025611959565b6115c89190611959565b61102c906004611959565b6000806115e1836025611959565b845110156115f6575060001990506000611581565b60008061160d86611608876024611959565b61140a565b9097909650945050505050565b600061140361162a836020611959565b84906113f4565b600082828151811061164557611645611a3c565b60209101015160f81c60ff141561165e57506008610db9565b82828151811061167057611670611a3c565b60209101015160f81c60fe141561168957506004610db9565b82828151811061169b5761169b611a3c565b60209101015160f81c60fd14156116b457506002610db9565b50600092915050565b600080604083850312156116d057600080fd5b50508035926020909101359150565b60008083601f8401126116f157600080fd5b50813567ffffffffffffffff81111561170957600080fd5b60208301915083602082850101111561158157600080fd5b6000806000806060858703121561173757600080fd5b84359350602085013567ffffffffffffffff81111561175557600080fd5b611761878288016116df565b9598909750949560400135949350505050565b6000806000806000806080878903121561178d57600080fd5b86359550602087013567ffffffffffffffff808211156117ac57600080fd5b6117b88a838b016116df565b909750955060408901359150808211156117d157600080fd5b506117de89828a016116df565b909450925050606087013573ffffffffffffffffffffffffffffffffffffffff8116811461180b57600080fd5b809150509295509295509295565b60008060008060008086880360e081121561183357600080fd5b87359650602088013567ffffffffffffffff81111561185157600080fd5b61185d8a828b016116df565b90975095505060408801356bffffffffffffffffffffffff198116811461188357600080fd5b93506060888101359350607f198201121561189d57600080fd5b506080870190509295509295509295565b600080600080600080608087890312156118c757600080fd5b86359550602087013567ffffffffffffffff808211156118e657600080fd5b6118f28a838b016116df565b9097509550604089013591508082111561190b57600080fd5b5061191889828a016116df565b9094509250506060870135801515811461180b57600080fd5b82848237909101908152602001919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561196c5761196c611943565b500190565b60006020828403121561198357600080fd5b813560ff8116811461140357600080fd5b6000826119b157634e487b7160e01b600052601260045260246000fd5b500690565b6000825160005b818110156119d757602081860181015185830152016119bd565b818111156119e6576000828501525b509190910192915050565b600060208284031215611a0357600080fd5b5051919050565b600082821015611a1c57611a1c611943565b500390565b6000600019821415611a3557611a35611943565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff84168060ff03821115611a6f57611a6f611943565b01939250505056fea2646970667358221220577abb9735fe52daaf0e4b7bb845275ac48416ebcc16d376bca94f26678b2e3064736f6c63430008090033",
|
|
134
|
+
"bytecode": "0x611aad61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c8063545227871161006557806354522787146101195780639a08b74014610139578063c945968614610159578063e6d20d451461018b57600080fd5b80632123f1c41461009757806321e76ee8146100b95780633f31f49f146100d957806340399403146100f9575b600080fd5b8180156100a357600080fd5b506100b76100b23660046116bd565b6101ab565b005b8180156100c557600080fd5b506100b76100d4366004611721565b6101e6565b8180156100e557600080fd5b506100b76100f4366004611774565b6104f3565b81801561010557600080fd5b506100b76101143660046116bd565b6106e4565b81801561012557600080fd5b506100b76101343660046116bd565b61077e565b81801561014557600080fd5b506100b7610154366004611819565b61082c565b81801561016557600080fd5b506101796101743660046118ae565b610a9c565b60405190815260200160405180910390f35b81801561019757600080fd5b506100b76101a63660046116bd565b610c72565b8082556040518181527fdf25ccd778c4ac0298894525a8bd99ba018936d0c6ea0b6fc212507531c0adb7906020015b60405180910390a15050565b60008383836040516020016101fd93929190611931565b60408051601f198184030181529181528151602092830120600081815260048901909352912060028101549192509063ffffffff166102835760405162461bcd60e51b815260206004820152601e60248201527f4672617564206368616c6c656e676520646f6573206e6f74206578697374000060448201526064015b60405180910390fd5b6002810154640100000000900460ff16156102f25760405162461bcd60e51b815260206004820152602960248201527f4672617564206368616c6c656e67652068617320616c7265616479206265656e604482015268081c995cdbdb1d995960ba1b606482015260840161027a565b6002808701549082015461030c919063ffffffff16611959565b4210156103815760405162461bcd60e51b815260206004820152603260248201527f4672617564206368616c6c656e67652064656665617420706572696f6420646960448201527f64206e6f742074696d65206f7574207965740000000000000000000000000000606482015260840161027a565b60028101805464ff0000000019166401000000001790558054600182015460405173ffffffffffffffffffffffffffffffffffffffff90921691620186a091906000818181858888f193505050503d80600081146103fb576040519150601f19603f3d011682016040523d82523d6000602084013e610400565b606091505b505050600061049061044c600088888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610d0c9050565b604080516020601f8a0181900481028201810190925288815261048b91908a8a808385018382808284376000920191909152509293925050610d0c9050565b610d14565b9050600061049d82610dbf565b604080516bffffffffffffffffffffffff1983168152602081018890529192507f635230b60143449f10a365568e2bd95e3e8aaed03855631722941c2bad634b7791015b60405180910390a15050505050505050565b600061053484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610de692505050565b9050600086868360405160200161054d93929190611931565b60408051601f198184030181528282528051602091820120600081815260048d0190925291902060028101805464ff00000000191664010000000017905560018101549193509173ffffffffffffffffffffffffffffffffffffffff861691620186a091600060405180830381858888f193505050503d80600081146105ef576040519150601f19603f3d011682016040523d82523d6000602084013e6105f4565b606091505b505050600061067f61064060008b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610d0c9050565b604080516020601f8d018190048102820181019092528b815261048b91908d8d808385018382808284376000920191909152509293925050610d0c9050565b9050600061068c82610dbf565b604080516bffffffffffffffffffffffff1983168152602081018890529192507f6ff720470ffad78f316655e2c7fc77a76763c13de0e19ee52149916ba7e44d3b910160405180910390a15050505050505050505050565b600081116107475760405162461bcd60e51b815260206004820152602a60248201527f4672617564206368616c6c656e6765206465666561742074696d656f7574206d6044820152690757374206265203e20360b41b606482015260840161027a565b600282018190556040518181527f1e833ee8be2754de7dae1749a8438b691fda5b0695db2b2b8311b23270406d5a906020016101da565b60648111156107f55760405162461bcd60e51b815260206004820152602f60248201527f4672617564206e6f74696669657220726577617264206d756c7469706c69657260448201527f206d757374206265203c3d203130300000000000000000000000000000000000606482015260840161027a565b600182018190556040518181527feddb2abfc2e3aa166fbafa0dbaa077f0ec7663ddc8a535253bb35ed4ab70c877906020016101da565b85600301543410156108a65760405162461bcd60e51b815260206004820152602660248201527f54686520616d6f756e74206f6620455448206465706f7369746564206973207460448201527f6f6f206c6f770000000000000000000000000000000000000000000000000000606482015260840161027a565b6108fe85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508692506108f29150506060850160408601611971565b84356020860135610ea5565b61094a5760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726520766572696669636174696f6e206661696c7572650000604482015260640161027a565b600085858460405160200161096193929190611931565b60408051601f198184030181529181528151602092830120600081815260048b01909352912060028101549192509063ffffffff16156109e35760405162461bcd60e51b815260206004820152601e60248201527f4672617564206368616c6c656e676520616c7265616479206578697374730000604482015260640161027a565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317815534600182015560028101805464ffffffffff191663ffffffff42161790557ff4aa58d09ba5de017eac597806dfcfc2cad287816cb1eb7729a032c82680c94d8585610a5c6060870160408801611971565b604080516bffffffffffffffffffffffff19909416845260208085019390935260ff9091169083015285356060830152850135608082015260a0016104e1565b600080610ade85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610de692505050565b90506000878783604051602001610af793929190611931565b60408051601f198184030181529181528151602092830120600081815260048d01909352912060028101549192509063ffffffff16610b785760405162461bcd60e51b815260206004820152601e60248201527f4672617564206368616c6c656e676520646f6573206e6f742065786973740000604482015260640161027a565b6002810154640100000000900460ff1615610be75760405162461bcd60e51b815260206004820152602960248201527f4672617564206368616c6c656e67652068617320616c7265616479206265656e604482015268081c995cdbdb1d995960ba1b606482015260840161027a565b610bf18787610fb5565b63ffffffff16600114610c465760405162461bcd60e51b815260206004820152601260248201527f57726f6e67207369676861736820747970650000000000000000000000000000604482015260640161027a565b84610c5a57610c558787611035565b610c64565b610c648787611279565b9a9950505050505050505050565b60008111610cd55760405162461bcd60e51b815260206004820152602a60248201527f4672617564206368616c6c656e6765206465706f73697420616d6f756e74206d6044820152690757374206265203e20360b41b606482015260840161027a565b600382018190556040518181527fac6cc6a5e862456c7f1a3827f078d9a355cb82eef2353c4167e872673b48570c906020016101da565b016020015190565b60606000610d23600284611994565b610d4e57507f0200000000000000000000000000000000000000000000000000000000000000610d71565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff0000000000000000000000000000000000000000000000000000000000000082166020820152602181018590526041016040516020818303038152906040529150505b92915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b600060028083604051610df991906119b6565b602060405180830381855afa158015610e16573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3991906119f1565b604051602001610e4b91815260200190565b60408051601f1981840301815290829052610e65916119b6565b602060405180830381855afa158015610e82573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610db991906119f1565b60008551604014610f1e5760405162461bcd60e51b815260206004820152602760248201527f526571756972657320756e636f6d7072657373656420756e707265666978656460448201527f207075626b657900000000000000000000000000000000000000000000000000606482015260840161027a565b6000610f298761136f565b604080516000808252602082018084528a905260ff89169282019290925260608101879052608081018690529192509060019060a0016020604051602081039080840390855afa158015610f81573d6000803e3d6000fd5b5050604051601f19015173ffffffffffffffffffffffffffffffffffffffff90811693169290921498975050505050505050565b600080611005610fc6600485611a0a565b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506113f49050565b905060e081901c60d882901c63ff00ff001662ff00ff60e884901c1617601081811b91901c175b95945050505050565b600080600061107e600486868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061140a9050565b90925090506000611090836005611959565b905060005b8281101561126f5760006110e28389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115889050565b90506000611129848a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115d39050565b915050801561124e576000611177858b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506113f49050565b905060006111e76111c1878d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061161a9050565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b9050818160405160200161122a92919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6040516020818303038152906040528051906020012060001c98505050505061126f565b6112588285611959565b93505050808061126790611a21565b915050611095565b5050505092915050565b6000806112c0604485858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506113f49050565b9050600061130b6111c1604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061161a9050565b9050818160405160200161134e92919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b60408051601f19818403018152919052805160209091012095945050505050565b600081516040146113e85760405162461bcd60e51b815260206004820152602d60248201527f5075626b6579206d7573742062652036342d62797465207261772c20756e636f60448201527f6d70726573736564206b65792e00000000000000000000000000000000000000606482015260840161027a565b50805160209091012090565b60006114038383016020015190565b9392505050565b60008060006114198585611631565b905060ff811661144b57600085858151811061143757611437611a3c565b016020015190935060f81c91506115819050565b83611457826001611a52565b60ff166114649190611959565b8551101561147b5760001960009250925050611581565b60008160ff16600214156114c0576114b56114a161149a876001611959565b88906113f4565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611577565b8160ff16600414156114ea576114dd6111c161149a876001611959565b63ffffffff169050611577565b8160ff16600814156115775761156a61150761149a876001611959565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b600080600061159785856115d3565b90925090506000198214156115b25760001992505050610db9565b806115be836025611959565b6115c89190611959565b61102c906004611959565b6000806115e1836025611959565b845110156115f6575060001990506000611581565b60008061160d86611608876024611959565b61140a565b9097909650945050505050565b600061140361162a836020611959565b84906113f4565b600082828151811061164557611645611a3c565b60209101015160f81c60ff141561165e57506008610db9565b82828151811061167057611670611a3c565b60209101015160f81c60fe141561168957506004610db9565b82828151811061169b5761169b611a3c565b60209101015160f81c60fd14156116b457506002610db9565b50600092915050565b600080604083850312156116d057600080fd5b50508035926020909101359150565b60008083601f8401126116f157600080fd5b50813567ffffffffffffffff81111561170957600080fd5b60208301915083602082850101111561158157600080fd5b6000806000806060858703121561173757600080fd5b84359350602085013567ffffffffffffffff81111561175557600080fd5b611761878288016116df565b9598909750949560400135949350505050565b6000806000806000806080878903121561178d57600080fd5b86359550602087013567ffffffffffffffff808211156117ac57600080fd5b6117b88a838b016116df565b909750955060408901359150808211156117d157600080fd5b506117de89828a016116df565b909450925050606087013573ffffffffffffffffffffffffffffffffffffffff8116811461180b57600080fd5b809150509295509295509295565b60008060008060008086880360e081121561183357600080fd5b87359650602088013567ffffffffffffffff81111561185157600080fd5b61185d8a828b016116df565b90975095505060408801356bffffffffffffffffffffffff198116811461188357600080fd5b93506060888101359350607f198201121561189d57600080fd5b506080870190509295509295509295565b600080600080600080608087890312156118c757600080fd5b86359550602087013567ffffffffffffffff808211156118e657600080fd5b6118f28a838b016116df565b9097509550604089013591508082111561190b57600080fd5b5061191889828a016116df565b9094509250506060870135801515811461180b57600080fd5b82848237909101908152602001919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561196c5761196c611943565b500190565b60006020828403121561198357600080fd5b813560ff8116811461140357600080fd5b6000826119b157634e487b7160e01b600052601260045260246000fd5b500690565b6000825160005b818110156119d757602081860181015185830152016119bd565b818111156119e6576000828501525b509190910192915050565b600060208284031215611a0357600080fd5b5051919050565b600082821015611a1c57611a1c611943565b500390565b6000600019821415611a3557611a35611943565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff84168060ff03821115611a6f57611a6f611943565b01939250505056fea2646970667358221220dc65694d78f18dec82f0cca2b7927ab225599751191e93a20806d93b99d9428564736f6c63430008090033",
|
|
135
|
+
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c8063545227871161006557806354522787146101195780639a08b74014610139578063c945968614610159578063e6d20d451461018b57600080fd5b80632123f1c41461009757806321e76ee8146100b95780633f31f49f146100d957806340399403146100f9575b600080fd5b8180156100a357600080fd5b506100b76100b23660046116bd565b6101ab565b005b8180156100c557600080fd5b506100b76100d4366004611721565b6101e6565b8180156100e557600080fd5b506100b76100f4366004611774565b6104f3565b81801561010557600080fd5b506100b76101143660046116bd565b6106e4565b81801561012557600080fd5b506100b76101343660046116bd565b61077e565b81801561014557600080fd5b506100b7610154366004611819565b61082c565b81801561016557600080fd5b506101796101743660046118ae565b610a9c565b60405190815260200160405180910390f35b81801561019757600080fd5b506100b76101a63660046116bd565b610c72565b8082556040518181527fdf25ccd778c4ac0298894525a8bd99ba018936d0c6ea0b6fc212507531c0adb7906020015b60405180910390a15050565b60008383836040516020016101fd93929190611931565b60408051601f198184030181529181528151602092830120600081815260048901909352912060028101549192509063ffffffff166102835760405162461bcd60e51b815260206004820152601e60248201527f4672617564206368616c6c656e676520646f6573206e6f74206578697374000060448201526064015b60405180910390fd5b6002810154640100000000900460ff16156102f25760405162461bcd60e51b815260206004820152602960248201527f4672617564206368616c6c656e67652068617320616c7265616479206265656e604482015268081c995cdbdb1d995960ba1b606482015260840161027a565b6002808701549082015461030c919063ffffffff16611959565b4210156103815760405162461bcd60e51b815260206004820152603260248201527f4672617564206368616c6c656e67652064656665617420706572696f6420646960448201527f64206e6f742074696d65206f7574207965740000000000000000000000000000606482015260840161027a565b60028101805464ff0000000019166401000000001790558054600182015460405173ffffffffffffffffffffffffffffffffffffffff90921691620186a091906000818181858888f193505050503d80600081146103fb576040519150601f19603f3d011682016040523d82523d6000602084013e610400565b606091505b505050600061049061044c600088888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610d0c9050565b604080516020601f8a0181900481028201810190925288815261048b91908a8a808385018382808284376000920191909152509293925050610d0c9050565b610d14565b9050600061049d82610dbf565b604080516bffffffffffffffffffffffff1983168152602081018890529192507f635230b60143449f10a365568e2bd95e3e8aaed03855631722941c2bad634b7791015b60405180910390a15050505050505050565b600061053484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610de692505050565b9050600086868360405160200161054d93929190611931565b60408051601f198184030181528282528051602091820120600081815260048d0190925291902060028101805464ff00000000191664010000000017905560018101549193509173ffffffffffffffffffffffffffffffffffffffff861691620186a091600060405180830381858888f193505050503d80600081146105ef576040519150601f19603f3d011682016040523d82523d6000602084013e6105f4565b606091505b505050600061067f61064060008b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610d0c9050565b604080516020601f8d018190048102820181019092528b815261048b91908d8d808385018382808284376000920191909152509293925050610d0c9050565b9050600061068c82610dbf565b604080516bffffffffffffffffffffffff1983168152602081018890529192507f6ff720470ffad78f316655e2c7fc77a76763c13de0e19ee52149916ba7e44d3b910160405180910390a15050505050505050505050565b600081116107475760405162461bcd60e51b815260206004820152602a60248201527f4672617564206368616c6c656e6765206465666561742074696d656f7574206d6044820152690757374206265203e20360b41b606482015260840161027a565b600282018190556040518181527f1e833ee8be2754de7dae1749a8438b691fda5b0695db2b2b8311b23270406d5a906020016101da565b60648111156107f55760405162461bcd60e51b815260206004820152602f60248201527f4672617564206e6f74696669657220726577617264206d756c7469706c69657260448201527f206d757374206265203c3d203130300000000000000000000000000000000000606482015260840161027a565b600182018190556040518181527feddb2abfc2e3aa166fbafa0dbaa077f0ec7663ddc8a535253bb35ed4ab70c877906020016101da565b85600301543410156108a65760405162461bcd60e51b815260206004820152602660248201527f54686520616d6f756e74206f6620455448206465706f7369746564206973207460448201527f6f6f206c6f770000000000000000000000000000000000000000000000000000606482015260840161027a565b6108fe85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508692506108f29150506060850160408601611971565b84356020860135610ea5565b61094a5760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726520766572696669636174696f6e206661696c7572650000604482015260640161027a565b600085858460405160200161096193929190611931565b60408051601f198184030181529181528151602092830120600081815260048b01909352912060028101549192509063ffffffff16156109e35760405162461bcd60e51b815260206004820152601e60248201527f4672617564206368616c6c656e676520616c7265616479206578697374730000604482015260640161027a565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317815534600182015560028101805464ffffffffff191663ffffffff42161790557ff4aa58d09ba5de017eac597806dfcfc2cad287816cb1eb7729a032c82680c94d8585610a5c6060870160408801611971565b604080516bffffffffffffffffffffffff19909416845260208085019390935260ff9091169083015285356060830152850135608082015260a0016104e1565b600080610ade85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610de692505050565b90506000878783604051602001610af793929190611931565b60408051601f198184030181529181528151602092830120600081815260048d01909352912060028101549192509063ffffffff16610b785760405162461bcd60e51b815260206004820152601e60248201527f4672617564206368616c6c656e676520646f6573206e6f742065786973740000604482015260640161027a565b6002810154640100000000900460ff1615610be75760405162461bcd60e51b815260206004820152602960248201527f4672617564206368616c6c656e67652068617320616c7265616479206265656e604482015268081c995cdbdb1d995960ba1b606482015260840161027a565b610bf18787610fb5565b63ffffffff16600114610c465760405162461bcd60e51b815260206004820152601260248201527f57726f6e67207369676861736820747970650000000000000000000000000000604482015260640161027a565b84610c5a57610c558787611035565b610c64565b610c648787611279565b9a9950505050505050505050565b60008111610cd55760405162461bcd60e51b815260206004820152602a60248201527f4672617564206368616c6c656e6765206465706f73697420616d6f756e74206d6044820152690757374206265203e20360b41b606482015260840161027a565b600382018190556040518181527fac6cc6a5e862456c7f1a3827f078d9a355cb82eef2353c4167e872673b48570c906020016101da565b016020015190565b60606000610d23600284611994565b610d4e57507f0200000000000000000000000000000000000000000000000000000000000000610d71565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff0000000000000000000000000000000000000000000000000000000000000082166020820152602181018590526041016040516020818303038152906040529150505b92915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b600060028083604051610df991906119b6565b602060405180830381855afa158015610e16573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3991906119f1565b604051602001610e4b91815260200190565b60408051601f1981840301815290829052610e65916119b6565b602060405180830381855afa158015610e82573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610db991906119f1565b60008551604014610f1e5760405162461bcd60e51b815260206004820152602760248201527f526571756972657320756e636f6d7072657373656420756e707265666978656460448201527f207075626b657900000000000000000000000000000000000000000000000000606482015260840161027a565b6000610f298761136f565b604080516000808252602082018084528a905260ff89169282019290925260608101879052608081018690529192509060019060a0016020604051602081039080840390855afa158015610f81573d6000803e3d6000fd5b5050604051601f19015173ffffffffffffffffffffffffffffffffffffffff90811693169290921498975050505050505050565b600080611005610fc6600485611a0a565b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506113f49050565b905060e081901c60d882901c63ff00ff001662ff00ff60e884901c1617601081811b91901c175b95945050505050565b600080600061107e600486868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061140a9050565b90925090506000611090836005611959565b905060005b8281101561126f5760006110e28389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115889050565b90506000611129848a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115d39050565b915050801561124e576000611177858b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506113f49050565b905060006111e76111c1878d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061161a9050565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b9050818160405160200161122a92919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6040516020818303038152906040528051906020012060001c98505050505061126f565b6112588285611959565b93505050808061126790611a21565b915050611095565b5050505092915050565b6000806112c0604485858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506113f49050565b9050600061130b6111c1604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061161a9050565b9050818160405160200161134e92919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b60408051601f19818403018152919052805160209091012095945050505050565b600081516040146113e85760405162461bcd60e51b815260206004820152602d60248201527f5075626b6579206d7573742062652036342d62797465207261772c20756e636f60448201527f6d70726573736564206b65792e00000000000000000000000000000000000000606482015260840161027a565b50805160209091012090565b60006114038383016020015190565b9392505050565b60008060006114198585611631565b905060ff811661144b57600085858151811061143757611437611a3c565b016020015190935060f81c91506115819050565b83611457826001611a52565b60ff166114649190611959565b8551101561147b5760001960009250925050611581565b60008160ff16600214156114c0576114b56114a161149a876001611959565b88906113f4565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611577565b8160ff16600414156114ea576114dd6111c161149a876001611959565b63ffffffff169050611577565b8160ff16600814156115775761156a61150761149a876001611959565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b600080600061159785856115d3565b90925090506000198214156115b25760001992505050610db9565b806115be836025611959565b6115c89190611959565b61102c906004611959565b6000806115e1836025611959565b845110156115f6575060001990506000611581565b60008061160d86611608876024611959565b61140a565b9097909650945050505050565b600061140361162a836020611959565b84906113f4565b600082828151811061164557611645611a3c565b60209101015160f81c60ff141561165e57506008610db9565b82828151811061167057611670611a3c565b60209101015160f81c60fe141561168957506004610db9565b82828151811061169b5761169b611a3c565b60209101015160f81c60fd14156116b457506002610db9565b50600092915050565b600080604083850312156116d057600080fd5b50508035926020909101359150565b60008083601f8401126116f157600080fd5b50813567ffffffffffffffff81111561170957600080fd5b60208301915083602082850101111561158157600080fd5b6000806000806060858703121561173757600080fd5b84359350602085013567ffffffffffffffff81111561175557600080fd5b611761878288016116df565b9598909750949560400135949350505050565b6000806000806000806080878903121561178d57600080fd5b86359550602087013567ffffffffffffffff808211156117ac57600080fd5b6117b88a838b016116df565b909750955060408901359150808211156117d157600080fd5b506117de89828a016116df565b909450925050606087013573ffffffffffffffffffffffffffffffffffffffff8116811461180b57600080fd5b809150509295509295509295565b60008060008060008086880360e081121561183357600080fd5b87359650602088013567ffffffffffffffff81111561185157600080fd5b61185d8a828b016116df565b90975095505060408801356bffffffffffffffffffffffff198116811461188357600080fd5b93506060888101359350607f198201121561189d57600080fd5b506080870190509295509295509295565b600080600080600080608087890312156118c757600080fd5b86359550602087013567ffffffffffffffff808211156118e657600080fd5b6118f28a838b016116df565b9097509550604089013591508082111561190b57600080fd5b5061191889828a016116df565b9094509250506060870135801515811461180b57600080fd5b82848237909101908152602001919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561196c5761196c611943565b500190565b60006020828403121561198357600080fd5b813560ff8116811461140357600080fd5b6000826119b157634e487b7160e01b600052601260045260246000fd5b500690565b6000825160005b818110156119d757602081860181015185830152016119bd565b818111156119e6576000828501525b509190910192915050565b600060208284031215611a0357600080fd5b5051919050565b600082821015611a1c57611a1c611943565b500390565b6000600019821415611a3557611a35611943565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff84168060ff03821115611a6f57611a6f611943565b01939250505056fea2646970667358221220dc65694d78f18dec82f0cca2b7927ab225599751191e93a20806d93b99d9428564736f6c63430008090033",
|
|
136
136
|
"linkReferences": {},
|
|
137
137
|
"deployedLinkReferences": {}
|
|
138
138
|
}
|
|
@@ -135,20 +135,20 @@ contract Bridge is Ownable, EcdsaWalletOwner {
|
|
|
135
135
|
|
|
136
136
|
/// @notice The number of confirmations on the Bitcoin chain required to
|
|
137
137
|
/// successfully evaluate an SPV proof.
|
|
138
|
-
uint256 public
|
|
138
|
+
uint256 public txProofDifficultyFactor;
|
|
139
139
|
|
|
140
140
|
/// TODO: Revisit whether it should be governable or not.
|
|
141
141
|
/// @notice Address of the Bank this Bridge belongs to.
|
|
142
|
-
Bank public
|
|
142
|
+
Bank public bank;
|
|
143
143
|
|
|
144
144
|
/// TODO: Make it governable.
|
|
145
145
|
/// @notice Handle to the Bitcoin relay.
|
|
146
|
-
IRelay public
|
|
146
|
+
IRelay public relay;
|
|
147
147
|
|
|
148
148
|
/// TODO: Revisit whether it should be governable or not.
|
|
149
149
|
/// @notice Address where the redemptions treasury fees will be sent to.
|
|
150
150
|
/// Treasury takes part in the operators rewarding process.
|
|
151
|
-
address public
|
|
151
|
+
address public treasury;
|
|
152
152
|
|
|
153
153
|
BridgeState.Storage internal self;
|
|
154
154
|
|
|
@@ -667,39 +667,10 @@ contract Bridge is Ownable, EcdsaWalletOwner {
|
|
|
667
667
|
uint64 sweepTxOutputValue
|
|
668
668
|
) = processSweepTxOutput(sweepTx.outputVector);
|
|
669
669
|
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
Wallets.WalletState walletState = wallet.state;
|
|
675
|
-
require(
|
|
676
|
-
walletState == Wallets.WalletState.Live ||
|
|
677
|
-
walletState == Wallets.WalletState.MovingFunds,
|
|
678
|
-
"Wallet must be in Live or MovingFunds state"
|
|
679
|
-
);
|
|
680
|
-
|
|
681
|
-
// Check if the main UTXO for given wallet exists. If so, validate
|
|
682
|
-
// passed main UTXO data against the stored hash and use them for
|
|
683
|
-
// further processing. If no main UTXO exists, use empty data.
|
|
684
|
-
BitcoinTx.UTXO memory resolvedMainUtxo = BitcoinTx.UTXO(
|
|
685
|
-
bytes32(0),
|
|
686
|
-
0,
|
|
687
|
-
0
|
|
688
|
-
);
|
|
689
|
-
bytes32 mainUtxoHash = wallet.mainUtxoHash;
|
|
690
|
-
if (mainUtxoHash != bytes32(0)) {
|
|
691
|
-
require(
|
|
692
|
-
keccak256(
|
|
693
|
-
abi.encodePacked(
|
|
694
|
-
mainUtxo.txHash,
|
|
695
|
-
mainUtxo.txOutputIndex,
|
|
696
|
-
mainUtxo.txOutputValue
|
|
697
|
-
)
|
|
698
|
-
) == mainUtxoHash,
|
|
699
|
-
"Invalid main UTXO data"
|
|
700
|
-
);
|
|
701
|
-
resolvedMainUtxo = mainUtxo;
|
|
702
|
-
}
|
|
670
|
+
(
|
|
671
|
+
Wallets.Wallet storage wallet,
|
|
672
|
+
BitcoinTx.UTXO memory resolvedMainUtxo
|
|
673
|
+
) = resolveSweepingWallet(walletPubKeyHash, mainUtxo);
|
|
703
674
|
|
|
704
675
|
// Process sweep transaction inputs and extract all information needed
|
|
705
676
|
// to perform deposit bookkeeping.
|
|
@@ -771,6 +742,57 @@ contract Bridge is Ownable, EcdsaWalletOwner {
|
|
|
771
742
|
// TODO: Handle deposits having `vault` set.
|
|
772
743
|
}
|
|
773
744
|
|
|
745
|
+
/// @notice Resolves sweeping wallet based on the provided wallet public key
|
|
746
|
+
/// hash. Validates the wallet state and current main UTXO, as
|
|
747
|
+
/// currently known on the Ethereum chain.
|
|
748
|
+
/// @param walletPubKeyHash public key hash of the wallet proving the sweep
|
|
749
|
+
/// Bitcoin transaction.
|
|
750
|
+
/// @param mainUtxo Data of the wallet's main UTXO, as currently known on
|
|
751
|
+
/// the Ethereum chain. If no main UTXO exists for the given wallet,
|
|
752
|
+
/// this parameter is ignored
|
|
753
|
+
/// @dev Requirements:
|
|
754
|
+
/// - Sweeping wallet must be either in Live or MovingFunds state.
|
|
755
|
+
/// - If the main UTXO of the sweeping wallet exists in the storage,
|
|
756
|
+
/// the passed `mainUTXO` parameter must be equal to the stored one.
|
|
757
|
+
function resolveSweepingWallet(
|
|
758
|
+
bytes20 walletPubKeyHash,
|
|
759
|
+
BitcoinTx.UTXO calldata mainUtxo
|
|
760
|
+
)
|
|
761
|
+
internal
|
|
762
|
+
returns (
|
|
763
|
+
Wallets.Wallet storage wallet,
|
|
764
|
+
BitcoinTx.UTXO memory resolvedMainUtxo
|
|
765
|
+
)
|
|
766
|
+
{
|
|
767
|
+
wallet = wallets.registeredWallets[walletPubKeyHash];
|
|
768
|
+
|
|
769
|
+
Wallets.WalletState walletState = wallet.state;
|
|
770
|
+
require(
|
|
771
|
+
walletState == Wallets.WalletState.Live ||
|
|
772
|
+
walletState == Wallets.WalletState.MovingFunds,
|
|
773
|
+
"Wallet must be in Live or MovingFunds state"
|
|
774
|
+
);
|
|
775
|
+
|
|
776
|
+
// Check if the main UTXO for given wallet exists. If so, validate
|
|
777
|
+
// passed main UTXO data against the stored hash and use them for
|
|
778
|
+
// further processing. If no main UTXO exists, use empty data.
|
|
779
|
+
resolvedMainUtxo = BitcoinTx.UTXO(bytes32(0), 0, 0);
|
|
780
|
+
bytes32 mainUtxoHash = wallet.mainUtxoHash;
|
|
781
|
+
if (mainUtxoHash != bytes32(0)) {
|
|
782
|
+
require(
|
|
783
|
+
keccak256(
|
|
784
|
+
abi.encodePacked(
|
|
785
|
+
mainUtxo.txHash,
|
|
786
|
+
mainUtxo.txOutputIndex,
|
|
787
|
+
mainUtxo.txOutputValue
|
|
788
|
+
)
|
|
789
|
+
) == mainUtxoHash,
|
|
790
|
+
"Invalid main UTXO data"
|
|
791
|
+
);
|
|
792
|
+
resolvedMainUtxo = mainUtxo;
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
|
|
774
796
|
/// @notice Processes the Bitcoin sweep transaction output vector by
|
|
775
797
|
/// extracting the single output and using it to gain additional
|
|
776
798
|
/// information required for further processing (e.g. value and
|