@keep-network/tbtc-v2 0.1.1-dev.50 → 0.1.1-dev.51
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/Bank.json +6 -6
- package/artifacts/Bridge.json +114 -103
- package/artifacts/Deposit.json +9 -9
- package/artifacts/EcdsaDkgValidator.json +1 -1
- package/artifacts/EcdsaInactivity.json +1 -1
- package/artifacts/Fraud.json +13 -12
- package/artifacts/KeepRegistry.json +1 -1
- package/artifacts/KeepStake.json +2 -2
- package/artifacts/KeepToken.json +2 -2
- package/artifacts/KeepTokenStaking.json +1 -1
- package/artifacts/MovingFunds.json +7 -7
- package/artifacts/NuCypherStakingEscrow.json +1 -1
- package/artifacts/NuCypherToken.json +2 -2
- package/artifacts/RandomBeaconStub.json +1 -1
- package/artifacts/Redemption.json +7 -7
- package/artifacts/ReimbursementPool.json +2 -2
- package/artifacts/Relay.json +11 -11
- package/artifacts/SortitionPool.json +2 -2
- package/artifacts/Sweep.json +9 -9
- package/artifacts/T.json +2 -2
- package/artifacts/TBTC.json +6 -6
- package/artifacts/TBTCToken.json +6 -6
- package/artifacts/TokenStaking.json +1 -1
- package/artifacts/TokenholderGovernor.json +9 -9
- package/artifacts/TokenholderTimelock.json +8 -8
- package/artifacts/VendingMachine.json +13 -13
- package/artifacts/VendingMachineKeep.json +1 -1
- package/artifacts/VendingMachineNuCypher.json +1 -1
- package/artifacts/WalletRegistry.json +2 -2
- package/artifacts/WalletRegistryGovernance.json +2 -2
- package/artifacts/Wallets.json +7 -7
- package/artifacts/solcInputs/{b0c3ed0992bd570aaaee717425c37538.json → c0a2aa3c07bd118332a0dc765c7f6da0.json} +3 -3
- 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 +45 -40
- package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
- package/build/contracts/bridge/BridgeState.sol/BridgeState.json +4 -4
- 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/Fraud.sol/Fraud.dbg.json +1 -1
- package/build/contracts/bridge/Fraud.sol/Fraud.json +2 -2
- 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 +2 -2
- package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +1 -1
- package/build/contracts/bridge/Redemption.sol/OutboundTx.json +2 -2
- package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +1 -1
- package/build/contracts/bridge/Redemption.sol/Redemption.json +2 -2
- 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 -2
- 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 +21 -7
- package/contracts/bridge/BridgeState.sol +3 -3
- package/contracts/bridge/Fraud.sol +21 -5
- package/export.json +11 -6
- package/package.json +1 -1
|
@@ -105,8 +105,8 @@
|
|
|
105
105
|
"type": "event"
|
|
106
106
|
}
|
|
107
107
|
],
|
|
108
|
-
"bytecode": "
|
|
109
|
-
"deployedBytecode": "
|
|
108
|
+
"bytecode": "0x610fb261003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80634afbe4c91461005b57806399b0b8471461007d578063c87de7f41461009d578063d079fbb1146100bd575b600080fd5b81801561006757600080fd5b5061007b610076366004610d56565b6100dd565b005b81801561008957600080fd5b5061007b610098366004610da0565b610305565b8180156100a957600080fd5b5061007b6100b8366004610df1565b610526565b8180156100c957600080fd5b5061007b6100d8366004610e1d565b61064c565b60028401546001600160a01b0316331461014e5760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b60648201526084015b60405180910390fd5b600061016261015d848461094b565b6109f5565b6bffffffffffffffffffffffff198116600090815260168701602052604081209192506002820154600160a01b900460ff1660058111156101a5576101a5610e4a565b146102185760405162461bcd60e51b815260206004820152602860248201527f45434453412077616c6c657420686173206265656e20616c726561647920726560448201527f67697374657265640000000000000000000000000000000000000000000000006064820152608401610145565b848155600281018054600160a01b63ffffffff42811668010000000000000000027fffffffffffffffffffffff00ffffffffffffffff00000000ffffffffffffffff90931692909217811790925560148881018054606087901c73ffffffffffffffffffffffffffffffffffffffff19909116178082559390930490911691906102a183610e76565b91906101000a81548163ffffffff021916908363ffffffff16021790555050816bffffffffffffffffffffffff1916857f2dbb47dce81d6b11cca1f1e3b10143d6f7e1e7e92d2dd9aacbb1f875379d308e60405160405180910390a3505050505050565b601483015460601b6bffffffffffffffffffffffff1990811690831614156103955760405162461bcd60e51b815260206004820152602c60248201527f4163746976652077616c6c65742063616e6e6f7420626520636f6e736964657260448201527f656420636c6f736561626c6500000000000000000000000000000000000000006064820152608401610145565b6bffffffffffffffffffffffff1982166000908152601684016020526040902060016002820154600160a01b900460ff1660058111156103d7576103d7610e4a565b1461042f5760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610145565b601384015460028201546000916104639163ffffffff600160a01b9092048216916801000000000000000090910416610e9a565b63ffffffff16421015905080806104a357506013850154640100000000900467ffffffffffffffff16610497868686610a1c565b67ffffffffffffffff16105b6105155760405162461bcd60e51b815260206004820152603660248201527f57616c6c6574206e6565647320746f206265206f6c6420656e6f756768206f7260448201527f206861766520746f6f20666577207361746f73686973000000000000000000006064820152608401610145565b61051f8585610b54565b5050505050565b60028301546001600160a01b031633146105925760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610145565b60006105a161015d848461094b565b905060016bffffffffffffffffffffffff1982166000908152601686016020526040902060020154600160a01b900460ff1660058111156105e4576105e4610e4a565b1461063c5760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610145565b6106468482610b54565b50505050565b6002820154604080517fcc56238800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cc562388916004808301926020929190829003018186803b1580156106ac57600080fd5b505afa1580156106c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e49190610ec2565b60038111156106f5576106f5610e4a565b146107685760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574206372656174696f6e20616c726561647920696e2070726f677260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610145565b601482015460601b6bffffffffffffffffffffffff198116156108b3576000610792848385610a1c565b6bffffffffffffffffffffffff1983166000908152601686016020526040812060020154601387015492935063ffffffff680100000000000000009091048116926107de911683610e9a565b63ffffffff1642101590508080156108105750601386015467ffffffffffffffff640100000000909104811690841610155b8061083d5750601386015467ffffffffffffffff6c01000000000000000000000000909104811690841610155b6108af5760405162461bcd60e51b815260206004820152602660248201527f57616c6c6574206372656174696f6e20636f6e646974696f6e7320617265206e60448201527f6f74206d657400000000000000000000000000000000000000000000000000006064820152608401610145565b5050505b6040517f31fecb80caf1e1128496dd5a6f1083ba29fd5fe64c3fe04e2d1b6f9cfc27d5a390600090a18260020160009054906101000a90046001600160a01b03166001600160a01b03166372cc8c6d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561092e57600080fd5b505af1158015610942573d6000803e3d6000fd5b50505050505050565b6060600061095a600284610eea565b61098557507f02000000000000000000000000000000000000000000000000000000000000006109a8565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6bffffffffffffffffffffffff19821660009081526016840160205260408120600101548015610b4c57808335610a596040860160208701610f0c565b610a696060870160408801610f32565b604051602001610ad69392919092835260e09190911b7fffffffff0000000000000000000000000000000000000000000000000000000016602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b6040516020818303038152906040528051906020012014610b395760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077616c6c6574206d61696e205554584f20646174610000006044820152606401610145565b610b496060840160408501610f32565b91505b509392505050565b6bffffffffffffffffffffffff198116600090815260168301602052604090206001810154610b8c57610b878383610ca8565b610c24565b60028101805463ffffffff42166c01000000000000000000000000027fffffffffffffffffffffff00ffffffff00000000ffffffffffffffffffffffff909116177402000000000000000000000000000000000000000017905580546040516bffffffffffffffffffffffff19841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b601483015460601b6bffffffffffffffffffffffff199081169083161415610c665760148301805473ffffffffffffffffffffffffffffffffffffffff191690555b60148381018054600160a01b900463ffffffff1691610c8483610f5c565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b6bffffffffffffffffffffffff198116600081815260168401602052604080822060028101805463ffffffff4216700100000000000000000000000000000000027fffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff9091161774030000000000000000000000000000000000000000179055805491519093927f68cb496f5e64383745876664ef119840f154a729c03ba866b8aecb5c9f53d51691a3505050565b60008060008060808587031215610d6c57600080fd5b5050823594602084013594506040840135936060013592509050565b600060608284031215610d9a57600080fd5b50919050565b600080600060a08486031215610db557600080fd5b8335925060208401356bffffffffffffffffffffffff1981168114610dd957600080fd5b9150610de88560408601610d88565b90509250925092565b600080600060608486031215610e0657600080fd5b505081359360208301359350604090920135919050565b60008060808385031215610e3057600080fd5b82359150610e418460208501610d88565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff80831681811415610e9057610e90610e60565b6001019392505050565b600063ffffffff808316818516808303821115610eb957610eb9610e60565b01949350505050565b600060208284031215610ed457600080fd5b815160048110610ee357600080fd5b9392505050565b600082610f0757634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215610f1e57600080fd5b813563ffffffff81168114610ee357600080fd5b600060208284031215610f4457600080fd5b813567ffffffffffffffff81168114610ee357600080fd5b600063ffffffff821680610f7257610f72610e60565b600019019291505056fea26469706673582212207d3cf61a34f642871967ccd0ce3162434bad7bd4b1b8afb529e618601779e75a64736f6c63430008090033",
|
|
109
|
+
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80634afbe4c91461005b57806399b0b8471461007d578063c87de7f41461009d578063d079fbb1146100bd575b600080fd5b81801561006757600080fd5b5061007b610076366004610d56565b6100dd565b005b81801561008957600080fd5b5061007b610098366004610da0565b610305565b8180156100a957600080fd5b5061007b6100b8366004610df1565b610526565b8180156100c957600080fd5b5061007b6100d8366004610e1d565b61064c565b60028401546001600160a01b0316331461014e5760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b60648201526084015b60405180910390fd5b600061016261015d848461094b565b6109f5565b6bffffffffffffffffffffffff198116600090815260168701602052604081209192506002820154600160a01b900460ff1660058111156101a5576101a5610e4a565b146102185760405162461bcd60e51b815260206004820152602860248201527f45434453412077616c6c657420686173206265656e20616c726561647920726560448201527f67697374657265640000000000000000000000000000000000000000000000006064820152608401610145565b848155600281018054600160a01b63ffffffff42811668010000000000000000027fffffffffffffffffffffff00ffffffffffffffff00000000ffffffffffffffff90931692909217811790925560148881018054606087901c73ffffffffffffffffffffffffffffffffffffffff19909116178082559390930490911691906102a183610e76565b91906101000a81548163ffffffff021916908363ffffffff16021790555050816bffffffffffffffffffffffff1916857f2dbb47dce81d6b11cca1f1e3b10143d6f7e1e7e92d2dd9aacbb1f875379d308e60405160405180910390a3505050505050565b601483015460601b6bffffffffffffffffffffffff1990811690831614156103955760405162461bcd60e51b815260206004820152602c60248201527f4163746976652077616c6c65742063616e6e6f7420626520636f6e736964657260448201527f656420636c6f736561626c6500000000000000000000000000000000000000006064820152608401610145565b6bffffffffffffffffffffffff1982166000908152601684016020526040902060016002820154600160a01b900460ff1660058111156103d7576103d7610e4a565b1461042f5760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610145565b601384015460028201546000916104639163ffffffff600160a01b9092048216916801000000000000000090910416610e9a565b63ffffffff16421015905080806104a357506013850154640100000000900467ffffffffffffffff16610497868686610a1c565b67ffffffffffffffff16105b6105155760405162461bcd60e51b815260206004820152603660248201527f57616c6c6574206e6565647320746f206265206f6c6420656e6f756768206f7260448201527f206861766520746f6f20666577207361746f73686973000000000000000000006064820152608401610145565b61051f8585610b54565b5050505050565b60028301546001600160a01b031633146105925760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610145565b60006105a161015d848461094b565b905060016bffffffffffffffffffffffff1982166000908152601686016020526040902060020154600160a01b900460ff1660058111156105e4576105e4610e4a565b1461063c5760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610145565b6106468482610b54565b50505050565b6002820154604080517fcc56238800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cc562388916004808301926020929190829003018186803b1580156106ac57600080fd5b505afa1580156106c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e49190610ec2565b60038111156106f5576106f5610e4a565b146107685760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574206372656174696f6e20616c726561647920696e2070726f677260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610145565b601482015460601b6bffffffffffffffffffffffff198116156108b3576000610792848385610a1c565b6bffffffffffffffffffffffff1983166000908152601686016020526040812060020154601387015492935063ffffffff680100000000000000009091048116926107de911683610e9a565b63ffffffff1642101590508080156108105750601386015467ffffffffffffffff640100000000909104811690841610155b8061083d5750601386015467ffffffffffffffff6c01000000000000000000000000909104811690841610155b6108af5760405162461bcd60e51b815260206004820152602660248201527f57616c6c6574206372656174696f6e20636f6e646974696f6e7320617265206e60448201527f6f74206d657400000000000000000000000000000000000000000000000000006064820152608401610145565b5050505b6040517f31fecb80caf1e1128496dd5a6f1083ba29fd5fe64c3fe04e2d1b6f9cfc27d5a390600090a18260020160009054906101000a90046001600160a01b03166001600160a01b03166372cc8c6d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561092e57600080fd5b505af1158015610942573d6000803e3d6000fd5b50505050505050565b6060600061095a600284610eea565b61098557507f02000000000000000000000000000000000000000000000000000000000000006109a8565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6bffffffffffffffffffffffff19821660009081526016840160205260408120600101548015610b4c57808335610a596040860160208701610f0c565b610a696060870160408801610f32565b604051602001610ad69392919092835260e09190911b7fffffffff0000000000000000000000000000000000000000000000000000000016602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b6040516020818303038152906040528051906020012014610b395760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077616c6c6574206d61696e205554584f20646174610000006044820152606401610145565b610b496060840160408501610f32565b91505b509392505050565b6bffffffffffffffffffffffff198116600090815260168301602052604090206001810154610b8c57610b878383610ca8565b610c24565b60028101805463ffffffff42166c01000000000000000000000000027fffffffffffffffffffffff00ffffffff00000000ffffffffffffffffffffffff909116177402000000000000000000000000000000000000000017905580546040516bffffffffffffffffffffffff19841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b601483015460601b6bffffffffffffffffffffffff199081169083161415610c665760148301805473ffffffffffffffffffffffffffffffffffffffff191690555b60148381018054600160a01b900463ffffffff1691610c8483610f5c565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b6bffffffffffffffffffffffff198116600081815260168401602052604080822060028101805463ffffffff4216700100000000000000000000000000000000027fffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff9091161774030000000000000000000000000000000000000000179055805491519093927f68cb496f5e64383745876664ef119840f154a729c03ba866b8aecb5c9f53d51691a3505050565b60008060008060808587031215610d6c57600080fd5b5050823594602084013594506040840135936060013592509050565b600060608284031215610d9a57600080fd5b50919050565b600080600060a08486031215610db557600080fd5b8335925060208401356bffffffffffffffffffffffff1981168114610dd957600080fd5b9150610de88560408601610d88565b90509250925092565b600080600060608486031215610e0657600080fd5b505081359360208301359350604090920135919050565b60008060808385031215610e3057600080fd5b82359150610e418460208501610d88565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff80831681811415610e9057610e90610e60565b6001019392505050565b600063ffffffff808316818516808303821115610eb957610eb9610e60565b01949350505050565b600060208284031215610ed457600080fd5b815160048110610ee357600080fd5b9392505050565b600082610f0757634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215610f1e57600080fd5b813563ffffffff81168114610ee357600080fd5b600060208284031215610f4457600080fd5b813567ffffffffffffffff81168114610ee357600080fd5b600063ffffffff821680610f7257610f72610e60565b600019019291505056fea26469706673582212207d3cf61a34f642871967ccd0ce3162434bad7bd4b1b8afb529e618601779e75a64736f6c63430008090033",
|
|
110
110
|
"linkReferences": {},
|
|
111
111
|
"deployedLinkReferences": {}
|
|
112
112
|
}
|
|
@@ -189,7 +189,7 @@ contract Bridge is Governable, EcdsaWalletOwner {
|
|
|
189
189
|
);
|
|
190
190
|
|
|
191
191
|
event FraudParametersUpdated(
|
|
192
|
-
|
|
192
|
+
uint96 fraudSlashingAmount,
|
|
193
193
|
uint256 fraudNotifierRewardMultiplier,
|
|
194
194
|
uint256 fraudChallengeDefeatTimeout,
|
|
195
195
|
uint256 fraudChallengeDepositAmount
|
|
@@ -785,6 +785,7 @@ contract Bridge is Governable, EcdsaWalletOwner {
|
|
|
785
785
|
/// rewarded.
|
|
786
786
|
/// @param walletPublicKey The public key of the wallet in the uncompressed
|
|
787
787
|
/// and unprefixed format (64 bytes)
|
|
788
|
+
/// @param walletMembersIDs Identifiers of the wallet signing group members
|
|
788
789
|
/// @param sighash The hash that was used to produce the ECDSA signature
|
|
789
790
|
/// that is the subject of the fraud claim. This hash is constructed
|
|
790
791
|
/// by applying double SHA-256 over a serialized subset of the
|
|
@@ -792,15 +793,28 @@ contract Bridge is Governable, EcdsaWalletOwner {
|
|
|
792
793
|
/// the transaction input the signature is produced for. See BIP-143
|
|
793
794
|
/// for reference
|
|
794
795
|
/// @dev Requirements:
|
|
795
|
-
/// -
|
|
796
|
+
/// - The wallet must be in the Live or MovingFunds or Closing or
|
|
797
|
+
/// Terminated state
|
|
798
|
+
/// - The `walletPublicKey` and `sighash` must identify an open fraud
|
|
796
799
|
/// challenge
|
|
797
|
-
/// -
|
|
798
|
-
///
|
|
800
|
+
/// - The expression `keccak256(abi.encode(walletMembersIDs))` must
|
|
801
|
+
/// be exactly the same as the hash stored under `membersIdsHash`
|
|
802
|
+
/// for the given `walletID`. Those IDs are not directly stored
|
|
803
|
+
/// in the contract for gas efficiency purposes but they can be
|
|
804
|
+
/// read from appropriate `DkgResultSubmitted` and `DkgResultApproved`
|
|
805
|
+
/// events.
|
|
806
|
+
/// - The amount of time indicated by `challengeDefeatTimeout` must pass
|
|
807
|
+
/// after the challenge was reported
|
|
799
808
|
function notifyFraudChallengeDefeatTimeout(
|
|
800
809
|
bytes calldata walletPublicKey,
|
|
810
|
+
uint32[] calldata walletMembersIDs,
|
|
801
811
|
bytes32 sighash
|
|
802
812
|
) external {
|
|
803
|
-
self.notifyFraudChallengeDefeatTimeout(
|
|
813
|
+
self.notifyFraudChallengeDefeatTimeout(
|
|
814
|
+
walletPublicKey,
|
|
815
|
+
walletMembersIDs,
|
|
816
|
+
sighash
|
|
817
|
+
);
|
|
804
818
|
}
|
|
805
819
|
|
|
806
820
|
/// @notice Allows the Governance to mark the given vault address as trusted
|
|
@@ -1002,7 +1016,7 @@ contract Bridge is Governable, EcdsaWalletOwner {
|
|
|
1002
1016
|
/// - Fraud notifier reward multiplier must be in the range [0, 100]
|
|
1003
1017
|
/// - Fraud challenge defeat timeout must be greater than 0
|
|
1004
1018
|
function updateFraudParameters(
|
|
1005
|
-
|
|
1019
|
+
uint96 fraudSlashingAmount,
|
|
1006
1020
|
uint256 fraudNotifierRewardMultiplier,
|
|
1007
1021
|
uint256 fraudChallengeDefeatTimeout,
|
|
1008
1022
|
uint256 fraudChallengeDepositAmount
|
|
@@ -1279,7 +1293,7 @@ contract Bridge is Governable, EcdsaWalletOwner {
|
|
|
1279
1293
|
external
|
|
1280
1294
|
view
|
|
1281
1295
|
returns (
|
|
1282
|
-
|
|
1296
|
+
uint96 fraudSlashingAmount,
|
|
1283
1297
|
uint256 fraudNotifierRewardMultiplier,
|
|
1284
1298
|
uint256 fraudChallengeDefeatTimeout,
|
|
1285
1299
|
uint256 fraudChallengeDepositAmount
|
|
@@ -152,7 +152,7 @@ library BridgeState {
|
|
|
152
152
|
// `pendingRedemptions` mapping.
|
|
153
153
|
mapping(uint256 => Redemption.RedemptionRequest) timedOutRedemptions;
|
|
154
154
|
// The amount of stake slashed from each member of a wallet for a fraud.
|
|
155
|
-
|
|
155
|
+
uint96 fraudSlashingAmount;
|
|
156
156
|
// The percentage of the notifier reward from the staking contract
|
|
157
157
|
// the notifier of a fraud receives. The value is in the range [0, 100].
|
|
158
158
|
uint256 fraudNotifierRewardMultiplier;
|
|
@@ -232,7 +232,7 @@ library BridgeState {
|
|
|
232
232
|
);
|
|
233
233
|
|
|
234
234
|
event FraudParametersUpdated(
|
|
235
|
-
|
|
235
|
+
uint96 fraudSlashingAmount,
|
|
236
236
|
uint256 fraudNotifierRewardMultiplier,
|
|
237
237
|
uint256 fraudChallengeDefeatTimeout,
|
|
238
238
|
uint256 fraudChallengeDepositAmount
|
|
@@ -508,7 +508,7 @@ library BridgeState {
|
|
|
508
508
|
/// - Fraud challenge defeat timeout must be greater than 0
|
|
509
509
|
function updateFraudParameters(
|
|
510
510
|
Storage storage self,
|
|
511
|
-
|
|
511
|
+
uint96 _fraudSlashingAmount,
|
|
512
512
|
uint256 _fraudNotifierRewardMultiplier,
|
|
513
513
|
uint256 _fraudChallengeDefeatTimeout,
|
|
514
514
|
uint256 _fraudChallengeDepositAmount
|
|
@@ -260,6 +260,7 @@ library Fraud {
|
|
|
260
260
|
/// rewarded.
|
|
261
261
|
/// @param walletPublicKey The public key of the wallet in the uncompressed
|
|
262
262
|
/// and unprefixed format (64 bytes)
|
|
263
|
+
/// @param walletMembersIDs Identifiers of the wallet signing group members
|
|
263
264
|
/// @param sighash The hash that was used to produce the ECDSA signature
|
|
264
265
|
/// that is the subject of the fraud claim. This hash is constructed
|
|
265
266
|
/// by applying double SHA-256 over a serialized subset of the
|
|
@@ -271,11 +272,18 @@ library Fraud {
|
|
|
271
272
|
/// Terminated state
|
|
272
273
|
/// - The `walletPublicKey` and `sighash` must identify an open fraud
|
|
273
274
|
/// challenge
|
|
275
|
+
/// - The expression `keccak256(abi.encode(walletMembersIDs))` must
|
|
276
|
+
/// be exactly the same as the hash stored under `membersIdsHash`
|
|
277
|
+
/// for the given `walletID`. Those IDs are not directly stored
|
|
278
|
+
/// in the contract for gas efficiency purposes but they can be
|
|
279
|
+
/// read from appropriate `DkgResultSubmitted` and `DkgResultApproved`
|
|
280
|
+
/// events.
|
|
274
281
|
/// - The amount of time indicated by `challengeDefeatTimeout` must pass
|
|
275
282
|
/// after the challenge was reported
|
|
276
283
|
function notifyFraudChallengeDefeatTimeout(
|
|
277
284
|
BridgeState.Storage storage self,
|
|
278
285
|
bytes calldata walletPublicKey,
|
|
286
|
+
uint32[] calldata walletMembersIDs,
|
|
279
287
|
bytes32 sighash
|
|
280
288
|
) external {
|
|
281
289
|
uint256 challengeKey = uint256(
|
|
@@ -312,9 +320,12 @@ library Fraud {
|
|
|
312
320
|
walletPublicKey.slice32(32)
|
|
313
321
|
);
|
|
314
322
|
bytes20 walletPubKeyHash = compressedWalletPublicKey.hash160View();
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
323
|
+
|
|
324
|
+
Wallets.Wallet storage wallet = self.registeredWallets[
|
|
325
|
+
walletPubKeyHash
|
|
326
|
+
];
|
|
327
|
+
|
|
328
|
+
Wallets.WalletState walletState = wallet.state;
|
|
318
329
|
|
|
319
330
|
if (
|
|
320
331
|
walletState == Wallets.WalletState.Live ||
|
|
@@ -323,8 +334,13 @@ library Fraud {
|
|
|
323
334
|
) {
|
|
324
335
|
self.terminateWallet(walletPubKeyHash);
|
|
325
336
|
|
|
326
|
-
|
|
327
|
-
|
|
337
|
+
self.ecdsaWalletRegistry.seize(
|
|
338
|
+
self.fraudSlashingAmount,
|
|
339
|
+
self.fraudNotifierRewardMultiplier,
|
|
340
|
+
challenge.challenger,
|
|
341
|
+
wallet.ecdsaWalletID,
|
|
342
|
+
walletMembersIDs
|
|
343
|
+
);
|
|
328
344
|
} else if (walletState == Wallets.WalletState.Terminated) {
|
|
329
345
|
// This is a special case when the wallet was already terminated
|
|
330
346
|
// due to a previous deliberate protocol violation. In that
|
package/export.json
CHANGED
|
@@ -14209,9 +14209,9 @@
|
|
|
14209
14209
|
"inputs": [
|
|
14210
14210
|
{
|
|
14211
14211
|
"indexed": false,
|
|
14212
|
-
"internalType": "
|
|
14212
|
+
"internalType": "uint96",
|
|
14213
14213
|
"name": "fraudSlashingAmount",
|
|
14214
|
-
"type": "
|
|
14214
|
+
"type": "uint96"
|
|
14215
14215
|
},
|
|
14216
14216
|
{
|
|
14217
14217
|
"indexed": false,
|
|
@@ -14849,9 +14849,9 @@
|
|
|
14849
14849
|
"name": "fraudParameters",
|
|
14850
14850
|
"outputs": [
|
|
14851
14851
|
{
|
|
14852
|
-
"internalType": "
|
|
14852
|
+
"internalType": "uint96",
|
|
14853
14853
|
"name": "fraudSlashingAmount",
|
|
14854
|
-
"type": "
|
|
14854
|
+
"type": "uint96"
|
|
14855
14855
|
},
|
|
14856
14856
|
{
|
|
14857
14857
|
"internalType": "uint256",
|
|
@@ -14982,6 +14982,11 @@
|
|
|
14982
14982
|
"name": "walletPublicKey",
|
|
14983
14983
|
"type": "bytes"
|
|
14984
14984
|
},
|
|
14985
|
+
{
|
|
14986
|
+
"internalType": "uint32[]",
|
|
14987
|
+
"name": "walletMembersIDs",
|
|
14988
|
+
"type": "uint32[]"
|
|
14989
|
+
},
|
|
14985
14990
|
{
|
|
14986
14991
|
"internalType": "bytes32",
|
|
14987
14992
|
"name": "sighash",
|
|
@@ -16029,9 +16034,9 @@
|
|
|
16029
16034
|
{
|
|
16030
16035
|
"inputs": [
|
|
16031
16036
|
{
|
|
16032
|
-
"internalType": "
|
|
16037
|
+
"internalType": "uint96",
|
|
16033
16038
|
"name": "fraudSlashingAmount",
|
|
16034
|
-
"type": "
|
|
16039
|
+
"type": "uint96"
|
|
16035
16040
|
},
|
|
16036
16041
|
{
|
|
16037
16042
|
"internalType": "uint256",
|