diff --git a/client/cmd/abi/IPTokenStaking.abi.json b/client/cmd/abi/IPTokenStaking.abi.json index 2768b295..7a5af7ec 100644 --- a/client/cmd/abi/IPTokenStaking.abi.json +++ b/client/cmd/abi/IPTokenStaking.abi.json @@ -1,831 +1,1133 @@ [ { - "type": "function", - "name": "addOperator", - "inputs": [ - { - "name": "uncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "operator", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "createValidator", - "inputs": [ - { - "name": "validatorUncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "moniker", - "type": "string", - "internalType": "string" - }, - { - "name": "commissionRate", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "maxCommissionRate", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "maxCommissionChangeRate", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "supportsUnlocked", - "type": "bool", - "internalType": "bool" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "createValidatorOnBehalf", - "inputs": [ - { - "name": "validatorUncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "moniker", - "type": "string", - "internalType": "string" - }, - { - "name": "commissionRate", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "maxCommissionRate", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "maxCommissionChangeRate", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "supportsUnlocked", - "type": "bool", - "internalType": "bool" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "redelegate", - "inputs": [ - { - "name": "delegatorUncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "validatorUncmpSrcPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "validatorUncmpDstPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "delegationId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "redelegateOnBehalf", - "inputs": [ - { - "name": "delegatorUncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "validatorUncmpSrcPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "validatorUncmpDstPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "delegationId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "removeOperator", - "inputs": [ - { - "name": "uncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "operator", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "roundedStakeAmount", - "inputs": [ - { - "name": "rawAmount", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [ - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "remainder", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "setRewardsAddress", - "inputs": [ - { - "name": "delegatorUncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "newRewardsAddress", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "setWithdrawalAddress", - "inputs": [ - { - "name": "delegatorUncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "newWithdrawalAddress", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "stake", - "inputs": [ - { - "name": "delegatorUncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "validatorUncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "stakingPeriod", - "type": "uint8", - "internalType": "enum IIPTokenStaking.StakingPeriod" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [ - { - "name": "delegationId", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "stakeOnBehalf", - "inputs": [ - { - "name": "delegatorUncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "validatorUncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "stakingPeriod", - "type": "uint8", - "internalType": "enum IIPTokenStaking.StakingPeriod" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [ - { - "name": "delegationId", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "unjail", - "inputs": [ - { - "name": "validatorUncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "unjailOnBehalf", - "inputs": [ - { - "name": "validatorUncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "unstake", - "inputs": [ - { - "name": "delegatorUncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "validatorUncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "delegationId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "unstakeOnBehalf", - "inputs": [ - { - "name": "delegatorUncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "validatorUncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "delegationId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "updateValidatorCommission", - "inputs": [ - { - "name": "validatorUncmpPubkey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "commissionRate", - "type": "uint32", - "internalType": "uint32" - } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "event", - "name": "AddOperator", - "inputs": [ - { - "name": "uncmpPubkey", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, - { - "name": "operator", - "type": "address", - "indexed": false, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "CreateValidator", - "inputs": [ - { - "name": "validatorUncmpPubkey", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, - { - "name": "moniker", - "type": "string", - "indexed": false, - "internalType": "string" - }, - { - "name": "stakeAmount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "commissionRate", - "type": "uint32", - "indexed": false, - "internalType": "uint32" - }, - { - "name": "maxCommissionRate", - "type": "uint32", - "indexed": false, - "internalType": "uint32" - }, - { - "name": "maxCommissionChangeRate", - "type": "uint32", - "indexed": false, - "internalType": "uint32" - }, - { - "name": "supportsUnlocked", - "type": "uint8", - "indexed": false, - "internalType": "uint8" - }, - { - "name": "operatorAddress", - "type": "address", - "indexed": false, - "internalType": "address" - }, - { - "name": "data", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Deposit", - "inputs": [ - { - "name": "delegatorUncmpPubkey", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, - { - "name": "validatorUnCmpPubkey", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, - { - "name": "stakeAmount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "stakingPeriod", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "delegationId", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "operatorAddress", - "type": "address", - "indexed": false, - "internalType": "address" - }, - { - "name": "data", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "FeeSet", - "inputs": [ - { - "name": "newFee", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "MinCommissionRateChanged", - "inputs": [ - { - "name": "minCommissionRate", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "MinStakeAmountSet", - "inputs": [ - { - "name": "minStakeAmount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "MinUnstakeAmountSet", - "inputs": [ - { - "name": "minUnstakeAmount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Redelegate", - "inputs": [ - { - "name": "delegatorUncmpPubkey", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, - { - "name": "validatorUncmpSrcPubkey", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, - { - "name": "validatorUncmpDstPubkey", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, - { - "name": "delegationId", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "operatorAddress", - "type": "address", - "indexed": false, - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "RemoveOperator", - "inputs": [ - { - "name": "uncmpPubkey", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, - { - "name": "operator", - "type": "address", - "indexed": false, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "SetRewardAddress", - "inputs": [ - { - "name": "delegatorUncmpPubkey", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, - { - "name": "executionAddress", - "type": "bytes32", - "indexed": false, - "internalType": "bytes32" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "SetWithdrawalAddress", - "inputs": [ - { - "name": "delegatorUncmpPubkey", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, - { - "name": "executionAddress", - "type": "bytes32", - "indexed": false, - "internalType": "bytes32" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "StakingPeriodsChanged", - "inputs": [ - { - "name": "short", - "type": "uint32", - "indexed": false, - "internalType": "uint32" - }, - { - "name": "medium", - "type": "uint32", - "indexed": false, - "internalType": "uint32" - }, - { - "name": "long", - "type": "uint32", - "indexed": false, - "internalType": "uint32" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Unjail", - "inputs": [ - { - "name": "unjailer", - "type": "address", - "indexed": false, - "internalType": "address" - }, - { - "name": "validatorUncmpPubkey", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, - { - "name": "data", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "UpdateValidatorCommssion", - "inputs": [ - { - "name": "validatorUncmpPubkey", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, - { - "name": "commissionRate", - "type": "uint32", - "indexed": false, - "internalType": "uint32" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Withdraw", - "inputs": [ - { - "name": "delegatorUncmpPubkey", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, - { - "name": "validatorUnCmpPubkey", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, - { - "name": "stakeAmount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "delegationId", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "operatorAddress", - "type": "address", - "indexed": false, - "internalType": "address" - }, - { - "name": "data", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - } - ], - "anonymous": false + "type": "constructor", + "inputs": [ + { + "name": "stakingRounding", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "defaultMinFee", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "DEFAULT_MIN_FEE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "STAKE_ROUNDING", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "acceptOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "addOperator", + "inputs": [ + { + "name": "uncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "createValidator", + "inputs": [ + { + "name": "validatorUncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "moniker", + "type": "string", + "internalType": "string" + }, + { + "name": "commissionRate", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "maxCommissionRate", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "maxCommissionChangeRate", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "supportsUnlocked", + "type": "bool", + "internalType": "bool" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "createValidatorOnBehalf", + "inputs": [ + { + "name": "validatorUncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "moniker", + "type": "string", + "internalType": "string" + }, + { + "name": "commissionRate", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "maxCommissionRate", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "maxCommissionChangeRate", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "supportsUnlocked", + "type": "bool", + "internalType": "bool" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "fee", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "args", + "type": "tuple", + "internalType": "struct IIPTokenStaking.InitializerArgs", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "minStakeAmount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "minUnstakeAmount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "minCommissionRate", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "fee", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "minCommissionRate", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "minStakeAmount", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "minUnstakeAmount", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pendingOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "redelegate", + "inputs": [ + { + "name": "delegatorUncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "validatorUncmpSrcPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "validatorUncmpDstPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "delegationId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "redelegateOnBehalf", + "inputs": [ + { + "name": "delegatorUncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "validatorUncmpSrcPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "validatorUncmpDstPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "delegationId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "removeOperator", + "inputs": [ + { + "name": "uncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "roundedStakeAmount", + "inputs": [ + { + "name": "rawAmount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "remainder", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setFee", + "inputs": [ + { + "name": "newFee", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setMinCommissionRate", + "inputs": [ + { + "name": "newValue", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setMinStakeAmount", + "inputs": [ + { + "name": "newMinStakeAmount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setMinUnstakeAmount", + "inputs": [ + { + "name": "newMinUnstakeAmount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setRewardsAddress", + "inputs": [ + { + "name": "delegatorUncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "newRewardsAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "setWithdrawalAddress", + "inputs": [ + { + "name": "delegatorUncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "newWithdrawalAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "stake", + "inputs": [ + { + "name": "delegatorUncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "validatorUncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "stakingPeriod", + "type": "uint8", + "internalType": "enum IIPTokenStaking.StakingPeriod" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "delegationId", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "stakeOnBehalf", + "inputs": [ + { + "name": "delegatorUncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "validatorUncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "stakingPeriod", + "type": "uint8", + "internalType": "enum IIPTokenStaking.StakingPeriod" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "delegationId", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unjail", + "inputs": [ + { + "name": "validatorUncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "unjailOnBehalf", + "inputs": [ + { + "name": "validatorUncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "unstake", + "inputs": [ + { + "name": "delegatorUncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "validatorUncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "delegationId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unstakeOnBehalf", + "inputs": [ + { + "name": "delegatorUncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "validatorUncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "delegationId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateValidatorCommission", + "inputs": [ + { + "name": "validatorUncmpPubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "commissionRate", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "event", + "name": "AddOperator", + "inputs": [ + { + "name": "uncmpPubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "operator", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "CreateValidator", + "inputs": [ + { + "name": "validatorUncmpPubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "moniker", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "stakeAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "commissionRate", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + }, + { + "name": "maxCommissionRate", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + }, + { + "name": "maxCommissionChangeRate", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + }, + { + "name": "supportsUnlocked", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + }, + { + "name": "operatorAddress", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Deposit", + "inputs": [ + { + "name": "delegatorUncmpPubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "validatorUncmpPubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "stakeAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "stakingPeriod", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "delegationId", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "operatorAddress", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "FeeSet", + "inputs": [ + { + "name": "newFee", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MinCommissionRateChanged", + "inputs": [ + { + "name": "minCommissionRate", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MinStakeAmountSet", + "inputs": [ + { + "name": "minStakeAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MinUnstakeAmountSet", + "inputs": [ + { + "name": "minUnstakeAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferStarted", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Redelegate", + "inputs": [ + { + "name": "delegatorUncmpPubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "validatorUncmpSrcPubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "validatorUncmpDstPubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "delegationId", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "operatorAddress", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RemoveOperator", + "inputs": [ + { + "name": "uncmpPubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "operator", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SetRewardAddress", + "inputs": [ + { + "name": "delegatorUncmpPubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "executionAddress", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SetWithdrawalAddress", + "inputs": [ + { + "name": "delegatorUncmpPubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "executionAddress", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unjail", + "inputs": [ + { + "name": "unjailer", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "validatorUncmpPubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "data", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "UpdateValidatorCommssion", + "inputs": [ + { + "name": "validatorUncmpPubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "commissionRate", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Withdraw", + "inputs": [ + { + "name": "delegatorUncmpPubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "validatorUncmpPubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "stakeAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "delegationId", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "operatorAddress", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "InvalidInitialization", + "inputs": [] + }, + { + "type": "error", + "name": "NotInitializing", + "inputs": [] + }, + { + "type": "error", + "name": "OwnableInvalidOwner", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "OwnableUnauthorizedAccount", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ReentrancyGuardReentrantCall", + "inputs": [] } ] diff --git a/client/cmd/validator.go b/client/cmd/validator.go index 9c572228..c16abbf2 100644 --- a/client/cmd/validator.go +++ b/client/cmd/validator.go @@ -775,7 +775,7 @@ func extractDelegationIDFromStake(cfg *stakeConfig, receipt *types.Receipt) (*bi if vLog.Topics[0] == eventSignature { eventData := struct { DelegatorUncmpPubkey []byte - ValidatorUnCmpPubkey []byte + ValidatorUncmpPubkey []byte StakeAmount *big.Int StakingPeriod *big.Int DelegationId *big.Int //nolint:revive,stylecheck // Definition comes from ABI diff --git a/client/x/evmstaking/keeper/deposit.go b/client/x/evmstaking/keeper/deposit.go index 55523544..28d18596 100644 --- a/client/x/evmstaking/keeper/deposit.go +++ b/client/x/evmstaking/keeper/deposit.go @@ -26,7 +26,7 @@ func (k Keeper) ProcessDeposit(ctx context.Context, ev *bindings.IPTokenStakingD types.EventTypeDelegateFailure, sdk.NewAttribute(types.AttributeKeyBlockHeight, strconv.FormatInt(sdkCtx.BlockHeight(), 10)), sdk.NewAttribute(types.AttributeKeyDelegatorUncmpPubKey, hex.EncodeToString(ev.DelegatorUncmpPubkey)), - sdk.NewAttribute(types.AttributeKeyValidatorUncmpPubKey, hex.EncodeToString(ev.ValidatorUnCmpPubkey)), + sdk.NewAttribute(types.AttributeKeyValidatorUncmpPubKey, hex.EncodeToString(ev.ValidatorUncmpPubkey)), sdk.NewAttribute(types.AttributeKeyDelegateID, ev.DelegationId.String()), sdk.NewAttribute(types.AttributeKeyPeriodType, strconv.FormatInt(ev.StakingPeriod.Int64(), 10)), sdk.NewAttribute(types.AttributeKeyAmount, ev.StakeAmount.String()), @@ -46,7 +46,7 @@ func (k Keeper) ProcessDeposit(ctx context.Context, ev *bindings.IPTokenStakingD return errors.Wrap(err, "depositor pubkey to cosmos") } - valCmpPubkey, err := UncmpPubKeyToCmpPubKey(ev.ValidatorUnCmpPubkey) + valCmpPubkey, err := UncmpPubKeyToCmpPubKey(ev.ValidatorUncmpPubkey) if err != nil { return types.WrapErrWithCode(types.InvalidUncmpPubKey, errors.Wrap(err, "compress validator pubkey")) } diff --git a/client/x/evmstaking/keeper/deposit_test.go b/client/x/evmstaking/keeper/deposit_test.go index e261be3d..3cba9cb6 100644 --- a/client/x/evmstaking/keeper/deposit_test.go +++ b/client/x/evmstaking/keeper/deposit_test.go @@ -59,7 +59,7 @@ func (s *TestSuite) TestProcessDeposit() { createDeposit := func(delPubKey, valPubKey []byte, amount *big.Int) *bindings.IPTokenStakingDeposit { return &bindings.IPTokenStakingDeposit{ DelegatorUncmpPubkey: cmpToUncmp(delPubKey), - ValidatorUnCmpPubkey: cmpToUncmp(valPubKey), + ValidatorUncmpPubkey: cmpToUncmp(valPubKey), StakeAmount: amount, StakingPeriod: big.NewInt(0), DelegationId: big.NewInt(0), @@ -87,7 +87,7 @@ func (s *TestSuite) TestProcessDeposit() { name: "fail: invalid delegator pubkey", deposit: &bindings.IPTokenStakingDeposit{ DelegatorUncmpPubkey: cmpToUncmp(delPubKey.Bytes())[:16], - ValidatorUnCmpPubkey: cmpToUncmp(valPubKey.Bytes()), + ValidatorUncmpPubkey: cmpToUncmp(valPubKey.Bytes()), StakeAmount: new(big.Int).SetUint64(1), StakingPeriod: big.NewInt(0), DelegationId: big.NewInt(0), @@ -99,7 +99,7 @@ func (s *TestSuite) TestProcessDeposit() { name: "fail: invalid validator pubkey", deposit: &bindings.IPTokenStakingDeposit{ DelegatorUncmpPubkey: cmpToUncmp(delPubKey.Bytes()), - ValidatorUnCmpPubkey: cmpToUncmp(valPubKey.Bytes())[:16], + ValidatorUncmpPubkey: cmpToUncmp(valPubKey.Bytes())[:16], StakeAmount: new(big.Int).SetUint64(1), StakingPeriod: big.NewInt(0), DelegationId: big.NewInt(0), @@ -111,7 +111,7 @@ func (s *TestSuite) TestProcessDeposit() { name: "fail: corrupted delegator pubkey", deposit: &bindings.IPTokenStakingDeposit{ DelegatorUncmpPubkey: createCorruptedPubKey(cmpToUncmp(delPubKey.Bytes())), - ValidatorUnCmpPubkey: cmpToUncmp(valPubKey.Bytes()), + ValidatorUncmpPubkey: cmpToUncmp(valPubKey.Bytes()), StakeAmount: new(big.Int).SetUint64(1), StakingPeriod: big.NewInt(0), DelegationId: big.NewInt(0), diff --git a/client/x/evmstaking/keeper/withdraw.go b/client/x/evmstaking/keeper/withdraw.go index 2f195ee5..266ac142 100644 --- a/client/x/evmstaking/keeper/withdraw.go +++ b/client/x/evmstaking/keeper/withdraw.go @@ -323,7 +323,7 @@ func (k Keeper) ProcessWithdraw(ctx context.Context, ev *bindings.IPTokenStaking types.EventTypeUndelegateFailure, sdk.NewAttribute(types.AttributeKeyBlockHeight, strconv.FormatInt(sdkCtx.BlockHeight(), 10)), sdk.NewAttribute(types.AttributeKeyDelegatorUncmpPubKey, hex.EncodeToString(ev.DelegatorUncmpPubkey)), - sdk.NewAttribute(types.AttributeKeyValidatorUncmpPubKey, hex.EncodeToString(ev.ValidatorUnCmpPubkey)), + sdk.NewAttribute(types.AttributeKeyValidatorUncmpPubKey, hex.EncodeToString(ev.ValidatorUncmpPubkey)), sdk.NewAttribute(types.AttributeKeyDelegateID, ev.DelegationId.String()), sdk.NewAttribute(types.AttributeKeyAmount, ev.StakeAmount.String()), sdk.NewAttribute(types.AttributeKeySenderAddress, ev.OperatorAddress.Hex()), @@ -352,7 +352,7 @@ func (k Keeper) ProcessWithdraw(ctx context.Context, ev *bindings.IPTokenStaking return errors.Wrap(err, "depositor pubkey to cosmos") } - valCmpPubkey, err := UncmpPubKeyToCmpPubKey(ev.ValidatorUnCmpPubkey) + valCmpPubkey, err := UncmpPubKeyToCmpPubKey(ev.ValidatorUncmpPubkey) if err != nil { return types.WrapErrWithCode(types.InvalidUncmpPubKey, errors.Wrap(err, "compress validator pubkey")) } diff --git a/client/x/evmstaking/keeper/withdraw_test.go b/client/x/evmstaking/keeper/withdraw_test.go index 32352576..c12621e7 100644 --- a/client/x/evmstaking/keeper/withdraw_test.go +++ b/client/x/evmstaking/keeper/withdraw_test.go @@ -287,7 +287,7 @@ func (s *TestSuite) TestProcessWithdraw() { }, withdraw: &bindings.IPTokenStakingWithdraw{ DelegatorUncmpPubkey: cmpToUncmp(delPubKey1.Bytes()), - ValidatorUnCmpPubkey: cmpToUncmp(valPubKey.Bytes()), + ValidatorUncmpPubkey: cmpToUncmp(valPubKey.Bytes()), StakeAmount: new(big.Int).SetUint64(1), DelegationId: big.NewInt(0), OperatorAddress: cmpToEVM(delPubKey1.Bytes()), @@ -296,7 +296,7 @@ func (s *TestSuite) TestProcessWithdraw() { name: "fail: invalid delegator pubkey", withdraw: &bindings.IPTokenStakingWithdraw{ DelegatorUncmpPubkey: cmpToUncmp(delPubKey1.Bytes())[:16], - ValidatorUnCmpPubkey: cmpToUncmp(valPubKey.Bytes()), + ValidatorUncmpPubkey: cmpToUncmp(valPubKey.Bytes()), StakeAmount: new(big.Int).SetUint64(1), DelegationId: big.NewInt(0), OperatorAddress: cmpToEVM(delPubKey1.Bytes()), @@ -307,7 +307,7 @@ func (s *TestSuite) TestProcessWithdraw() { name: "fail: invalid validator pubkey", withdraw: &bindings.IPTokenStakingWithdraw{ DelegatorUncmpPubkey: cmpToUncmp(delPubKey1.Bytes()), - ValidatorUnCmpPubkey: cmpToUncmp(valPubKey.Bytes())[:16], + ValidatorUncmpPubkey: cmpToUncmp(valPubKey.Bytes())[:16], StakeAmount: new(big.Int).SetUint64(1), DelegationId: big.NewInt(0), OperatorAddress: cmpToEVM(delPubKey1.Bytes()), @@ -318,7 +318,7 @@ func (s *TestSuite) TestProcessWithdraw() { name: "fail: corrupted delegator pubkey", withdraw: &bindings.IPTokenStakingWithdraw{ DelegatorUncmpPubkey: createCorruptedPubKey(cmpToUncmp(delPubKey1.Bytes())), - ValidatorUnCmpPubkey: cmpToUncmp(valPubKey.Bytes()), + ValidatorUncmpPubkey: cmpToUncmp(valPubKey.Bytes()), StakeAmount: new(big.Int).SetUint64(1), DelegationId: big.NewInt(0), OperatorAddress: cmpToEVM(delPubKey1.Bytes()), @@ -329,7 +329,7 @@ func (s *TestSuite) TestProcessWithdraw() { name: "fail: corrupted validator pubkey", withdraw: &bindings.IPTokenStakingWithdraw{ DelegatorUncmpPubkey: cmpToUncmp(delPubKey1.Bytes()), - ValidatorUnCmpPubkey: createCorruptedPubKey(cmpToUncmp(valPubKey.Bytes())), + ValidatorUncmpPubkey: createCorruptedPubKey(cmpToUncmp(valPubKey.Bytes())), StakeAmount: new(big.Int).SetUint64(1), DelegationId: big.NewInt(0), OperatorAddress: cmpToEVM(delPubKey1.Bytes()), @@ -343,7 +343,7 @@ func (s *TestSuite) TestProcessWithdraw() { }, withdraw: &bindings.IPTokenStakingWithdraw{ DelegatorUncmpPubkey: cmpToUncmp(unknownPubKey.Bytes()), - ValidatorUnCmpPubkey: cmpToUncmp(valPubKey.Bytes()), + ValidatorUncmpPubkey: cmpToUncmp(valPubKey.Bytes()), StakeAmount: new(big.Int).SetUint64(1), DelegationId: big.NewInt(0), OperatorAddress: cmpToEVM(unknownPubKey.Bytes()), @@ -357,7 +357,7 @@ func (s *TestSuite) TestProcessWithdraw() { }, withdraw: &bindings.IPTokenStakingWithdraw{ DelegatorUncmpPubkey: cmpToUncmp(delPubKey1.Bytes()), - ValidatorUnCmpPubkey: cmpToUncmp(valPubKey.Bytes()), + ValidatorUncmpPubkey: cmpToUncmp(valPubKey.Bytes()), StakeAmount: new(big.Int).SetUint64(math.MaxUint64), DelegationId: big.NewInt(0), OperatorAddress: cmpToEVM(delPubKey1.Bytes()), diff --git a/contracts/bindings/iptokenstaking.go b/contracts/bindings/iptokenstaking.go index 997e4d22..70a5d5ac 100644 --- a/contracts/bindings/iptokenstaking.go +++ b/contracts/bindings/iptokenstaking.go @@ -40,8 +40,8 @@ type IIPTokenStakingInitializerArgs struct { // IPTokenStakingMetaData contains all meta data concerning the IPTokenStaking contract. var IPTokenStakingMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"stakingRounding\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"defaultMinFee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_MIN_FEE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"STAKE_ROUNDING\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addOperator\",\"inputs\":[{\"name\":\"uncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"createValidator\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"moniker\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"commissionRate\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"maxCommissionRate\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"maxCommissionChangeRate\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"supportsUnlocked\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"createValidatorOnBehalf\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"moniker\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"commissionRate\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"maxCommissionRate\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"maxCommissionChangeRate\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"supportsUnlocked\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"fee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"args\",\"type\":\"tuple\",\"internalType\":\"structIIPTokenStaking.InitializerArgs\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"minStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minUnstakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minCommissionRate\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"fee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"minCommissionRate\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minStakeAmount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minUnstakeAmount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"redelegate\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpSrcPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpDstPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"redelegateOnBehalf\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpSrcPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpDstPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeOperator\",\"inputs\":[{\"name\":\"uncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"roundedStakeAmount\",\"inputs\":[{\"name\":\"rawAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"remainder\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setFee\",\"inputs\":[{\"name\":\"newFee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMinCommissionRate\",\"inputs\":[{\"name\":\"newValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMinStakeAmount\",\"inputs\":[{\"name\":\"newMinStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMinUnstakeAmount\",\"inputs\":[{\"name\":\"newMinUnstakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsAddress\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"newRewardsAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"setWithdrawalAddress\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"newWithdrawalAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"stakingPeriod\",\"type\":\"uint8\",\"internalType\":\"enumIIPTokenStaking.StakingPeriod\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"delegationId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"stakeOnBehalf\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"stakingPeriod\",\"type\":\"uint8\",\"internalType\":\"enumIIPTokenStaking.StakingPeriod\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"delegationId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unjail\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"unjailOnBehalf\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"unstake\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unstakeOnBehalf\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateValidatorCommission\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"commissionRate\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AddOperator\",\"inputs\":[{\"name\":\"uncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CreateValidator\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"moniker\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"commissionRate\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"maxCommissionRate\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"maxCommissionChangeRate\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"supportsUnlocked\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"operatorAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"validatorUnCmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"stakingPeriod\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FeeSet\",\"inputs\":[{\"name\":\"newFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinCommissionRateChanged\",\"inputs\":[{\"name\":\"minCommissionRate\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinStakeAmountSet\",\"inputs\":[{\"name\":\"minStakeAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinUnstakeAmountSet\",\"inputs\":[{\"name\":\"minUnstakeAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Redelegate\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpSrcPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpDstPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RemoveOperator\",\"inputs\":[{\"name\":\"uncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetRewardAddress\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"executionAddress\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetWithdrawalAddress\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"executionAddress\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unjail\",\"inputs\":[{\"name\":\"unjailer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdateValidatorCommssion\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"commissionRate\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"validatorUnCmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]}]", - Bin: "0x60c034620001f057620026d1906001600160401b0390601f38849003908101601f191682019083821183831017620001f55780839160409687948552833981010312620001f057602081519101519080156200019e57608052633b9aca0081106200014a5760a0527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82851c1662000139578080831603620000f4575b83516124c590816200020c82396080518181816105fe0152818161074e01528181611536015281816117b201528181611d300152818161207101526122c8015260a0518181816109490152611f8b0152f35b6001600160401b0319909116811790915581519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080620000a2565b835163f92ee8a960e01b8152600490fd5b825162461bcd60e51b815260206004820152602760248201527f4950546f6b656e5374616b696e673a20496e76616c69642064656661756c74206044820152666d696e2066656560c81b6064820152608490fd5b835162461bcd60e51b815260206004820152602560248201527f4950546f6b656e5374616b696e673a205a65726f207374616b696e6720726f756044820152646e64696e6760d81b6064820152608490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c8063014e817814610e2c578063057b929614610d925780631487153e14610d7557806317e42e1214610cff57806339ec4df914610ce05780633dd9fb9a14610c9d57806369fe0e2d14610c785780636ea3a22814610c53578063715018a614610b8c578063787f82c814610af757806379ba509714610a6d57806386eb5e4814610a4a5780638740597a14610a035780638da5cb5b146109af5780638ed65fbc1461096c57806394fd0fe0146109315780639d04b121146108855780639d9d293f1461083c578063a0284f16146107e4578063ab8870f6146107bf578063b2bc29ef14610771578063bda16b1514610736578063c582db4414610637578063d2e1f5b8146105e1578063ddca3f43146105c4578063e30c397814610570578063eb4af0451461054b578063ec21dac214610510578063f1887684146104f1578063f2fde38b1461041f578063f9550a8d146103c75763fce5dc8c1461018157600080fd5b346103c35760a06003193601126103c3577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82851c16159167ffffffffffffffff8116801590816103bb575b60011490816103b1575b1590816103a8575b50610380578260017fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000831617855561034b575b50610221612436565b610229612436565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005580359073ffffffffffffffffffffffffffffffffffffffff821680830361034757610276612436565b61027e612436565b15610318575061028d90612127565b610298602435612296565b6102a360443561203f565b6102ae6064356121db565b6102b9608435611f89565b6102c1578280f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291817fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff602093541690555160018152a138808280f35b602490868651917f1e4fbdf7000000000000000000000000000000000000000000000000000000008352820152fd5b8680fd5b7fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000166801000000000000000117835538610218565b5083517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b905015386101e5565b303b1591506101dd565b8491506101d3565b8280fd5b836103f86103d436610ff9565b986103eb89829a939a9994999895989796976119b9565b6103f3611c2f565b611516565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005580f35b8382346104ed5760206003193601126104ed573573ffffffffffffffffffffffffffffffffffffffff8082168092036103c35761045a611f19565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b5080fd5b5050346104ed57816003193601126104ed576020906001549051908152f35b83346105485761054561052236611096565b9661053687829893989794979695966119b9565b61054084846119b9565b61174a565b80f35b80fd5b8382346104ed5760206003193601126104ed576105459061056a611f19565b35612296565b5050346104ed57816003193601126104ed5760209073ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0054169051908152f35b50346103c357826003193601126103c35760209250549051908152f35b50823461054857602060031936011261054857503561062a6106237f000000000000000000000000000000000000000000000000000000000000000083611944565b809261197d565b9082519182526020820152f35b5090806003193601126103c357813567ffffffffffffffff8111610732576106629036908401610e52565b9190926024359063ffffffff821680920361072e576106b79061068585876119b9565b6106af3373ffffffffffffffffffffffffffffffffffffffff6106a8888a611bd5565b1614611221565b5434146112ac565b84803415610725575b81808092813491f11561071b5761070f7f202c9aad6965f28c0ce1cd00460c1adfa2c90277f4f0a7abb813e2f04cecd70b946106ff87548410156118b9565b8351948486958652850191611337565b9060208301520390a180f35b81513d86823e3d90fd5b506108fc6106c0565b8580fd5b8380fd5b5050346104ed57816003193601126104ed57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b83346105485761054561078336610e85565b9661079787829893989794979695966119b9565b6107ba3373ffffffffffffffffffffffffffffffffffffffff6106a88585611bd5565b611104565b8382346104ed5760206003193601126104ed57610545906107de611f19565b356121db565b6020836108116107f336610f43565b9561080486829793979694966119b9565b61080c611c2f565b611d14565b9060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005551908152f35b83346105485761054561084e36611096565b9661086287829893989794979695966119b9565b6105363373ffffffffffffffffffffffffffffffffffffffff6106a88585611bd5565b509061089036610ef3565b9092919361089e84866119b9565b6108c673ffffffffffffffffffffffffffffffffffffffff916106af33846106a8898b611bd5565b85803415610928575b81808092813491f11561091e576109117f28c0529db8cf660d5b4c1e4b9313683fa7241c3fc49452e7d0ebae215a5f84b2958451958587968752860191611337565b911660208301520390a180f35b82513d87823e3d90fd5b506108fc6108cf565b5050346104ed57816003193601126104ed57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b8361054561097936610fb2565b9261098783829493946119b9565b6109aa3373ffffffffffffffffffffffffffffffffffffffff6106a88585611bd5565b6113ab565b5050346104ed57816003193601126104ed5760209073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054169051908152f35b836103f8610a1036610ff9565b98610a2789829a939a9994999895989796976119b9565b6103eb3373ffffffffffffffffffffffffffffffffffffffff6106a88585611bd5565b836103f8610a5736610fb2565b92610a63929192611c2f565b6109aa82826119b9565b5090346103c357826003193601126103c3573373ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00541603610ac7578261054533612127565b6024925051907f118cdaa70000000000000000000000000000000000000000000000000000000082523390820152fd5b5090610b0236610ef3565b90929193610b1084866119b9565b610b3873ffffffffffffffffffffffffffffffffffffffff916106af33846106a8898b611bd5565b85803415610b83575b81808092813491f11561091e576109117f9f7f04f688298f474ed4c786abb29e0ca0173d70516d55d9eac515609b45fbca958451958587968752860191611337565b506108fc610b41565b8334610548578060031936011261054857610ba5611f19565b8073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff00000000000000000000000000000000000000007f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008181541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549182169055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b8382346104ed5760206003193601126104ed5761054590610c72611f19565b3561203f565b8382346104ed5760206003193601126104ed5761054590610c97611f19565b35611f89565b602083610811610cac36610f43565b95610cbd86829793979694966119b9565b6108043373ffffffffffffffffffffffffffffffffffffffff6106a88585611bd5565b5050346104ed57816003193601126104ed576020906002549051908152f35b5050346104ed57610d6f7f65729f64aec4981a7e5cedc9abbed98ce4ee8a5c6ecefc35e32d646d5171804291610d3436610ef3565b90939192610d4285856119b9565b610d653373ffffffffffffffffffffffffffffffffffffffff6106a88888611bd5565b5193849384611376565b0390a180f35b5050346104ed57816003193601126104ed57602091549051908152f35b50610dd0610d9f36610ef3565b91929093610dad85856119b9565b6106af3373ffffffffffffffffffffffffffffffffffffffff6106a88888611bd5565b84803415610e23575b81808092813491f115610e1657610d6f907f6ac365cf05479bb8a295fbf9637875411d6d6f2a0ac7c4b1f560cedcf1a33081945193849384611376565b50505051903d90823e3d90fd5b506108fc610dd9565b833461054857610545610e3e36610e85565b966107ba87829893989794979695966119b9565b9181601f84011215610e805782359167ffffffffffffffff8311610e805760208381860195010111610e8057565b600080fd5b60a0600319820112610e805767ffffffffffffffff90600435828111610e805781610eb291600401610e52565b93909392602435818111610e805783610ecd91600401610e52565b939093926044359260643592608435918211610e8057610eef91600401610e52565b9091565b6040600319820112610e80576004359067ffffffffffffffff8211610e8057610f1e91600401610e52565b909160243573ffffffffffffffffffffffffffffffffffffffff81168103610e805790565b6080600319820112610e805767ffffffffffffffff91600435838111610e805782610f7091600401610e52565b93909392602435828111610e805781610f8b91600401610e52565b939093926044356004811015610e805792606435918211610e8057610eef91600401610e52565b6040600319820112610e805767ffffffffffffffff91600435838111610e805782610fdf91600401610e52565b93909392602435918211610e8057610eef91600401610e52565b9060e0600319830112610e805767ffffffffffffffff91600435838111610e80578161102791600401610e52565b93909392602435828111610e80578361104291600401610e52565b9093909263ffffffff916044358381168103610e8057936064358481168103610e8057936084359081168103610e80579260a4358015158103610e80579260c435918211610e8057610eef91600401610e52565b9060a0600319830112610e805767ffffffffffffffff600435818111610e8057836110c391600401610e52565b93909392602435838111610e8057826110de91600401610e52565b93909392604435918211610e80576110f891600401610e52565b90916064359060843590565b9590949296919361111588866119b9565b611123600354821115611b4a565b600254841061119d5761117a611198957fac41e6ee15d2d0047feb1ea8aba74b92c0334cd3e78024a5ad679d7d08b8fbc59961116c6040519a8b9a60c08c5260c08c0191611337565b9189830360208b0152611337565b936040870152606086015233608086015284830360a0860152611337565b0390a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4950546f6b656e5374616b696e673a20556e7374616b6520616d6f756e74207560448201527f6e646572206d696e0000000000000000000000000000000000000000000000006064820152fd5b1561122857565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579206460448201527f65726976656420616464726573730000000000000000000000000000000000006064820152fd5b156112b357565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4950546f6b656e5374616b696e673a20496e76616c69642066656520616d6f7560448201527f6e740000000000000000000000000000000000000000000000000000000000006064820152fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b916113a460209273ffffffffffffffffffffffffffffffffffffffff92969596604086526040860191611337565b9416910152565b91926113ba60045434146112ac565b6000341561142f575b600080808093813491f115611423577f026c2e156478ec2a25ccebac97a338d301f69b6d5aeec39c578b28a95e1182019361119891611415604051958695338752606060208801526060870191611337565b918483036040860152611337565b6040513d6000823e3d90fd5b506108fc6113c3565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761147c57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff811161147c57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926114f96114f4836114ab565b611438565b9382855282820111610e8057816000926020928387013784010152565b9261158e92611530919b9a9b9997929895969936916114e5565b9361155b7f000000000000000000000000000000000000000000000000000000000000000034611944565b986115668a3461197d565b95611575600154881015611c89565b60009788549263ffffffff9687809316948510156118b9565b16928383116116c65788808980156116bc575b82809291818093f1156116b157156116a7576115cd6001965b6040519b8c6101208091528d0191611337565b906020988b83038a8d0152815191828452815b838110611694575050937f65bfc2fa1cd4c6f50f60983ad1cf1cb4bff5ee6570428254dfce41b085ef6d149c9d9e9793837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8f9e9c999560ff9961167e9f82819e9a0101520116019660408d015260608c015260808b01521660a08901521660c08701523360e087015281868203016101008701520191611337565b0390a1806116895750565b6116929061237e565b565b8181018c01518582018d01528b016115e0565b6115cd88966115ba565b6040513d8a823e3d90fd5b6108fc91506115a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4950546f6b656e5374616b696e673a20436f6d6d697373696f6e20726174652060448201527f6f766572206d61780000000000000000000000000000000000000000000000006064820152fd5b9593909461175881836119b9565b6117633685856114e5565b602081519101206117753683856114e5565b60208151910120146118355761181161181f936117dd7f210091050fbe3add6ade45436b6c7aed210ef28fc37e1a1775970fc391272fe89a6117d77f000000000000000000000000000000000000000000000000000000000000000082611944565b9061197d565b956117ec600154881015611c89565b6117fa600354891115611b4a565b61116c6040519a8b9a60c08c5260c08c0191611337565b918683036040880152611337565b91606084015233608084015260a08301520390a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4950546f6b656e5374616b696e673a20526564656c65676174696e6720746f2060448201527f73616d652076616c696461746f720000000000000000000000000000000000006064820152fd5b156118c057565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4950546f6b656e5374616b696e673a20436f6d6d697373696f6e20726174652060448201527f756e646572206d696e00000000000000000000000000000000000000000000006064820152fd5b811561194e570690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b9190820391821161198a57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9060418103611ac65715611a97577fff000000000000000000000000000000000000000000000000000000000000007f040000000000000000000000000000000000000000000000000000000000000091351603611a1357565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579207060448201527f72656669780000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579206c60448201527f656e6774680000000000000000000000000000000000000000000000000000006064820152fd5b15611b5157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4950546f6b656e5374616b696e673a20496e76616c69642064656c656761746960448201527f6f6e2069640000000000000000000000000000000000000000000000000000006064820152fd5b81600111610e805773ffffffffffffffffffffffffffffffffffffffff91611c249160017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff36930191016114e5565b602081519101201690565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f006002815414611c5f5760029055565b60046040517f3ee5aeb5000000000000000000000000000000000000000000000000000000008152fd5b15611c9057565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4950546f6b656e5374616b696e673a205374616b6520616d6f756e7420756e6460448201527f6572206d696e00000000000000000000000000000000000000000000000000006064820152fd5b9295939091936004821015611eea5760038211611e6657611d557f000000000000000000000000000000000000000000000000000000000000000034611944565b95611d60873461197d565b95611d6f600154881015611c89565b60009884611e1f575b94611dee6000989495899893967f269a32ff589c9b701f49ab6aa532ee8f55901df71a7fca2d70dc9f45314f1be39560ff611dc88c9b9a8c9b61116c6040519a8b9a60e08c5260e08c0191611337565b938960408801521660608601528d60808601523360a086015284830360c0860152611337565b0390a1818115611e16575b8290f1156114235780611e0a575090565b611e139061237e565b90565b506108fc611df9565b91949850929591946003547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461198a5760010180600355989491969390959296611d78565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4950546f6b656e5374616b696e673a20496e76616c6964207374616b696e672060448201527f706572696f6400000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054163303611f5957565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b7f00000000000000000000000000000000000000000000000000000000000000008110611fe1576020817f20461e09b8e557b77e107939f9ce6544698123aad0fc964ac5cc59b7df2e608f92600455604051908152a1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4950546f6b656e5374616b696e673a20496e76616c6964206d696e20666565006044820152fd5b80156120a35760206120967ff93d77980ae5a1ddd008d6a7f02cbee5af2a4fcea850c4b55828de4f644e589f926117d77f000000000000000000000000000000000000000000000000000000000000000082611944565b80600255604051908152a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4950546f6b656e5374616b696e673a205a65726f206d696e20756e7374616b6560448201527f20616d6f756e74000000000000000000000000000000000000000000000000006064820152fd5b7fffffffffffffffffffffffff0000000000000000000000000000000000000000907f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008281541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549073ffffffffffffffffffffffffffffffffffffffff80931680948316179055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b8015612212576020817f4167b1de65292a9ff628c9136823791a1de701e1fbdda4863ce22a1cfaf4d0f792600055604051908152a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4950546f6b656e5374616b696e673a205a65726f206d696e20636f6d6d69737360448201527f696f6e20726174650000000000000000000000000000000000000000000000006064820152fd5b80156122fa5760206122ed7fea095c2fea861b87f0fd54d0d4453358692a527e120df22b62c71696247dfb9f926117d77f000000000000000000000000000000000000000000000000000000000000000082611944565b80600155604051908152a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4950546f6b656e5374616b696e673a205a65726f206d696e207374616b65206160448201527f6d6f756e740000000000000000000000000000000000000000000000000000006064820152fd5b600080808093335af13d15612431573d61239a6114f4826114ab565b908152600060203d92013e5b156123ad57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4950546f6b656e5374616b696e673a204661696c656420746f20726566756e6460448201527f2072656d61696e646572000000000000000000000000000000000000000000006064820152fd5b6123a6565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561246557565b60046040517fd7e6bcf8000000000000000000000000000000000000000000000000000000008152fdfea2646970667358221220d07eaba9b654f515a19117e05ff66d4ae6777c29d98db6dea8183f0f384a612964736f6c63430008170033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"stakingRounding\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"defaultMinFee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_MIN_FEE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"STAKE_ROUNDING\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addOperator\",\"inputs\":[{\"name\":\"uncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"createValidator\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"moniker\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"commissionRate\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"maxCommissionRate\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"maxCommissionChangeRate\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"supportsUnlocked\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"createValidatorOnBehalf\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"moniker\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"commissionRate\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"maxCommissionRate\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"maxCommissionChangeRate\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"supportsUnlocked\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"fee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"args\",\"type\":\"tuple\",\"internalType\":\"structIIPTokenStaking.InitializerArgs\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"minStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minUnstakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minCommissionRate\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"fee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"minCommissionRate\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minStakeAmount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minUnstakeAmount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"redelegate\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpSrcPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpDstPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"redelegateOnBehalf\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpSrcPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpDstPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeOperator\",\"inputs\":[{\"name\":\"uncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"roundedStakeAmount\",\"inputs\":[{\"name\":\"rawAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"remainder\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setFee\",\"inputs\":[{\"name\":\"newFee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMinCommissionRate\",\"inputs\":[{\"name\":\"newValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMinStakeAmount\",\"inputs\":[{\"name\":\"newMinStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMinUnstakeAmount\",\"inputs\":[{\"name\":\"newMinUnstakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsAddress\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"newRewardsAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"setWithdrawalAddress\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"newWithdrawalAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"stakingPeriod\",\"type\":\"uint8\",\"internalType\":\"enumIIPTokenStaking.StakingPeriod\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"delegationId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"stakeOnBehalf\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"stakingPeriod\",\"type\":\"uint8\",\"internalType\":\"enumIIPTokenStaking.StakingPeriod\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"delegationId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unjail\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"unjailOnBehalf\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"unstake\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unstakeOnBehalf\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateValidatorCommission\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"commissionRate\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AddOperator\",\"inputs\":[{\"name\":\"uncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CreateValidator\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"moniker\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"commissionRate\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"maxCommissionRate\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"maxCommissionChangeRate\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"supportsUnlocked\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"operatorAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"stakingPeriod\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FeeSet\",\"inputs\":[{\"name\":\"newFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinCommissionRateChanged\",\"inputs\":[{\"name\":\"minCommissionRate\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinStakeAmountSet\",\"inputs\":[{\"name\":\"minStakeAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinUnstakeAmountSet\",\"inputs\":[{\"name\":\"minUnstakeAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Redelegate\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpSrcPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpDstPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RemoveOperator\",\"inputs\":[{\"name\":\"uncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetRewardAddress\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"executionAddress\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetWithdrawalAddress\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"executionAddress\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unjail\",\"inputs\":[{\"name\":\"unjailer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdateValidatorCommssion\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"commissionRate\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]}]", + Bin: "0x60c034620001f057620026d1906001600160401b0390601f38849003908101601f191682019083821183831017620001f55780839160409687948552833981010312620001f057602081519101519080156200019e57608052633b9aca0081106200014a5760a0527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82851c1662000139578080831603620000f4575b83516124c590816200020c82396080518181816105fe0152818161074e01528181611536015281816117b201528181611d300152818161207101526122c8015260a0518181816109490152611f8b0152f35b6001600160401b0319909116811790915581519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080620000a2565b835163f92ee8a960e01b8152600490fd5b825162461bcd60e51b815260206004820152602760248201527f4950546f6b656e5374616b696e673a20496e76616c69642064656661756c74206044820152666d696e2066656560c81b6064820152608490fd5b835162461bcd60e51b815260206004820152602560248201527f4950546f6b656e5374616b696e673a205a65726f207374616b696e6720726f756044820152646e64696e6760d81b6064820152608490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c8063014e817814610e2c578063057b929614610d925780631487153e14610d7557806317e42e1214610cff57806339ec4df914610ce05780633dd9fb9a14610c9d57806369fe0e2d14610c785780636ea3a22814610c53578063715018a614610b8c578063787f82c814610af757806379ba509714610a6d57806386eb5e4814610a4a5780638740597a14610a035780638da5cb5b146109af5780638ed65fbc1461096c57806394fd0fe0146109315780639d04b121146108855780639d9d293f1461083c578063a0284f16146107e4578063ab8870f6146107bf578063b2bc29ef14610771578063bda16b1514610736578063c582db4414610637578063d2e1f5b8146105e1578063ddca3f43146105c4578063e30c397814610570578063eb4af0451461054b578063ec21dac214610510578063f1887684146104f1578063f2fde38b1461041f578063f9550a8d146103c75763fce5dc8c1461018157600080fd5b346103c35760a06003193601126103c3577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82851c16159167ffffffffffffffff8116801590816103bb575b60011490816103b1575b1590816103a8575b50610380578260017fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000831617855561034b575b50610221612436565b610229612436565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005580359073ffffffffffffffffffffffffffffffffffffffff821680830361034757610276612436565b61027e612436565b15610318575061028d90612127565b610298602435612296565b6102a360443561203f565b6102ae6064356121db565b6102b9608435611f89565b6102c1578280f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291817fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff602093541690555160018152a138808280f35b602490868651917f1e4fbdf7000000000000000000000000000000000000000000000000000000008352820152fd5b8680fd5b7fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000166801000000000000000117835538610218565b5083517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b905015386101e5565b303b1591506101dd565b8491506101d3565b8280fd5b836103f86103d436610ff9565b986103eb89829a939a9994999895989796976119b9565b6103f3611c2f565b611516565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005580f35b8382346104ed5760206003193601126104ed573573ffffffffffffffffffffffffffffffffffffffff8082168092036103c35761045a611f19565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b5080fd5b5050346104ed57816003193601126104ed576020906001549051908152f35b83346105485761054561052236611096565b9661053687829893989794979695966119b9565b61054084846119b9565b61174a565b80f35b80fd5b8382346104ed5760206003193601126104ed576105459061056a611f19565b35612296565b5050346104ed57816003193601126104ed5760209073ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0054169051908152f35b50346103c357826003193601126103c35760209250549051908152f35b50823461054857602060031936011261054857503561062a6106237f000000000000000000000000000000000000000000000000000000000000000083611944565b809261197d565b9082519182526020820152f35b5090806003193601126103c357813567ffffffffffffffff8111610732576106629036908401610e52565b9190926024359063ffffffff821680920361072e576106b79061068585876119b9565b6106af3373ffffffffffffffffffffffffffffffffffffffff6106a8888a611bd5565b1614611221565b5434146112ac565b84803415610725575b81808092813491f11561071b5761070f7f202c9aad6965f28c0ce1cd00460c1adfa2c90277f4f0a7abb813e2f04cecd70b946106ff87548410156118b9565b8351948486958652850191611337565b9060208301520390a180f35b81513d86823e3d90fd5b506108fc6106c0565b8580fd5b8380fd5b5050346104ed57816003193601126104ed57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b83346105485761054561078336610e85565b9661079787829893989794979695966119b9565b6107ba3373ffffffffffffffffffffffffffffffffffffffff6106a88585611bd5565b611104565b8382346104ed5760206003193601126104ed57610545906107de611f19565b356121db565b6020836108116107f336610f43565b9561080486829793979694966119b9565b61080c611c2f565b611d14565b9060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005551908152f35b83346105485761054561084e36611096565b9661086287829893989794979695966119b9565b6105363373ffffffffffffffffffffffffffffffffffffffff6106a88585611bd5565b509061089036610ef3565b9092919361089e84866119b9565b6108c673ffffffffffffffffffffffffffffffffffffffff916106af33846106a8898b611bd5565b85803415610928575b81808092813491f11561091e576109117f28c0529db8cf660d5b4c1e4b9313683fa7241c3fc49452e7d0ebae215a5f84b2958451958587968752860191611337565b911660208301520390a180f35b82513d87823e3d90fd5b506108fc6108cf565b5050346104ed57816003193601126104ed57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b8361054561097936610fb2565b9261098783829493946119b9565b6109aa3373ffffffffffffffffffffffffffffffffffffffff6106a88585611bd5565b6113ab565b5050346104ed57816003193601126104ed5760209073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054169051908152f35b836103f8610a1036610ff9565b98610a2789829a939a9994999895989796976119b9565b6103eb3373ffffffffffffffffffffffffffffffffffffffff6106a88585611bd5565b836103f8610a5736610fb2565b92610a63929192611c2f565b6109aa82826119b9565b5090346103c357826003193601126103c3573373ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00541603610ac7578261054533612127565b6024925051907f118cdaa70000000000000000000000000000000000000000000000000000000082523390820152fd5b5090610b0236610ef3565b90929193610b1084866119b9565b610b3873ffffffffffffffffffffffffffffffffffffffff916106af33846106a8898b611bd5565b85803415610b83575b81808092813491f11561091e576109117f9f7f04f688298f474ed4c786abb29e0ca0173d70516d55d9eac515609b45fbca958451958587968752860191611337565b506108fc610b41565b8334610548578060031936011261054857610ba5611f19565b8073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff00000000000000000000000000000000000000007f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008181541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549182169055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b8382346104ed5760206003193601126104ed5761054590610c72611f19565b3561203f565b8382346104ed5760206003193601126104ed5761054590610c97611f19565b35611f89565b602083610811610cac36610f43565b95610cbd86829793979694966119b9565b6108043373ffffffffffffffffffffffffffffffffffffffff6106a88585611bd5565b5050346104ed57816003193601126104ed576020906002549051908152f35b5050346104ed57610d6f7f65729f64aec4981a7e5cedc9abbed98ce4ee8a5c6ecefc35e32d646d5171804291610d3436610ef3565b90939192610d4285856119b9565b610d653373ffffffffffffffffffffffffffffffffffffffff6106a88888611bd5565b5193849384611376565b0390a180f35b5050346104ed57816003193601126104ed57602091549051908152f35b50610dd0610d9f36610ef3565b91929093610dad85856119b9565b6106af3373ffffffffffffffffffffffffffffffffffffffff6106a88888611bd5565b84803415610e23575b81808092813491f115610e1657610d6f907f6ac365cf05479bb8a295fbf9637875411d6d6f2a0ac7c4b1f560cedcf1a33081945193849384611376565b50505051903d90823e3d90fd5b506108fc610dd9565b833461054857610545610e3e36610e85565b966107ba87829893989794979695966119b9565b9181601f84011215610e805782359167ffffffffffffffff8311610e805760208381860195010111610e8057565b600080fd5b60a0600319820112610e805767ffffffffffffffff90600435828111610e805781610eb291600401610e52565b93909392602435818111610e805783610ecd91600401610e52565b939093926044359260643592608435918211610e8057610eef91600401610e52565b9091565b6040600319820112610e80576004359067ffffffffffffffff8211610e8057610f1e91600401610e52565b909160243573ffffffffffffffffffffffffffffffffffffffff81168103610e805790565b6080600319820112610e805767ffffffffffffffff91600435838111610e805782610f7091600401610e52565b93909392602435828111610e805781610f8b91600401610e52565b939093926044356004811015610e805792606435918211610e8057610eef91600401610e52565b6040600319820112610e805767ffffffffffffffff91600435838111610e805782610fdf91600401610e52565b93909392602435918211610e8057610eef91600401610e52565b9060e0600319830112610e805767ffffffffffffffff91600435838111610e80578161102791600401610e52565b93909392602435828111610e80578361104291600401610e52565b9093909263ffffffff916044358381168103610e8057936064358481168103610e8057936084359081168103610e80579260a4358015158103610e80579260c435918211610e8057610eef91600401610e52565b9060a0600319830112610e805767ffffffffffffffff600435818111610e8057836110c391600401610e52565b93909392602435838111610e8057826110de91600401610e52565b93909392604435918211610e80576110f891600401610e52565b90916064359060843590565b9590949296919361111588866119b9565b611123600354821115611b4a565b600254841061119d5761117a611198957fac41e6ee15d2d0047feb1ea8aba74b92c0334cd3e78024a5ad679d7d08b8fbc59961116c6040519a8b9a60c08c5260c08c0191611337565b9189830360208b0152611337565b936040870152606086015233608086015284830360a0860152611337565b0390a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4950546f6b656e5374616b696e673a20556e7374616b6520616d6f756e74207560448201527f6e646572206d696e0000000000000000000000000000000000000000000000006064820152fd5b1561122857565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579206460448201527f65726976656420616464726573730000000000000000000000000000000000006064820152fd5b156112b357565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4950546f6b656e5374616b696e673a20496e76616c69642066656520616d6f7560448201527f6e740000000000000000000000000000000000000000000000000000000000006064820152fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b916113a460209273ffffffffffffffffffffffffffffffffffffffff92969596604086526040860191611337565b9416910152565b91926113ba60045434146112ac565b6000341561142f575b600080808093813491f115611423577f026c2e156478ec2a25ccebac97a338d301f69b6d5aeec39c578b28a95e1182019361119891611415604051958695338752606060208801526060870191611337565b918483036040860152611337565b6040513d6000823e3d90fd5b506108fc6113c3565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761147c57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff811161147c57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926114f96114f4836114ab565b611438565b9382855282820111610e8057816000926020928387013784010152565b9261158e92611530919b9a9b9997929895969936916114e5565b9361155b7f000000000000000000000000000000000000000000000000000000000000000034611944565b986115668a3461197d565b95611575600154881015611c89565b60009788549263ffffffff9687809316948510156118b9565b16928383116116c65788808980156116bc575b82809291818093f1156116b157156116a7576115cd6001965b6040519b8c6101208091528d0191611337565b906020988b83038a8d0152815191828452815b838110611694575050937f65bfc2fa1cd4c6f50f60983ad1cf1cb4bff5ee6570428254dfce41b085ef6d149c9d9e9793837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8f9e9c999560ff9961167e9f82819e9a0101520116019660408d015260608c015260808b01521660a08901521660c08701523360e087015281868203016101008701520191611337565b0390a1806116895750565b6116929061237e565b565b8181018c01518582018d01528b016115e0565b6115cd88966115ba565b6040513d8a823e3d90fd5b6108fc91506115a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4950546f6b656e5374616b696e673a20436f6d6d697373696f6e20726174652060448201527f6f766572206d61780000000000000000000000000000000000000000000000006064820152fd5b9593909461175881836119b9565b6117633685856114e5565b602081519101206117753683856114e5565b60208151910120146118355761181161181f936117dd7f210091050fbe3add6ade45436b6c7aed210ef28fc37e1a1775970fc391272fe89a6117d77f000000000000000000000000000000000000000000000000000000000000000082611944565b9061197d565b956117ec600154881015611c89565b6117fa600354891115611b4a565b61116c6040519a8b9a60c08c5260c08c0191611337565b918683036040880152611337565b91606084015233608084015260a08301520390a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4950546f6b656e5374616b696e673a20526564656c65676174696e6720746f2060448201527f73616d652076616c696461746f720000000000000000000000000000000000006064820152fd5b156118c057565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4950546f6b656e5374616b696e673a20436f6d6d697373696f6e20726174652060448201527f756e646572206d696e00000000000000000000000000000000000000000000006064820152fd5b811561194e570690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b9190820391821161198a57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9060418103611ac65715611a97577fff000000000000000000000000000000000000000000000000000000000000007f040000000000000000000000000000000000000000000000000000000000000091351603611a1357565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579207060448201527f72656669780000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579206c60448201527f656e6774680000000000000000000000000000000000000000000000000000006064820152fd5b15611b5157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4950546f6b656e5374616b696e673a20496e76616c69642064656c656761746960448201527f6f6e2069640000000000000000000000000000000000000000000000000000006064820152fd5b81600111610e805773ffffffffffffffffffffffffffffffffffffffff91611c249160017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff36930191016114e5565b602081519101201690565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f006002815414611c5f5760029055565b60046040517f3ee5aeb5000000000000000000000000000000000000000000000000000000008152fd5b15611c9057565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4950546f6b656e5374616b696e673a205374616b6520616d6f756e7420756e6460448201527f6572206d696e00000000000000000000000000000000000000000000000000006064820152fd5b9295939091936004821015611eea5760038211611e6657611d557f000000000000000000000000000000000000000000000000000000000000000034611944565b95611d60873461197d565b95611d6f600154881015611c89565b60009884611e1f575b94611dee6000989495899893967f269a32ff589c9b701f49ab6aa532ee8f55901df71a7fca2d70dc9f45314f1be39560ff611dc88c9b9a8c9b61116c6040519a8b9a60e08c5260e08c0191611337565b938960408801521660608601528d60808601523360a086015284830360c0860152611337565b0390a1818115611e16575b8290f1156114235780611e0a575090565b611e139061237e565b90565b506108fc611df9565b91949850929591946003547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461198a5760010180600355989491969390959296611d78565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4950546f6b656e5374616b696e673a20496e76616c6964207374616b696e672060448201527f706572696f6400000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054163303611f5957565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b7f00000000000000000000000000000000000000000000000000000000000000008110611fe1576020817f20461e09b8e557b77e107939f9ce6544698123aad0fc964ac5cc59b7df2e608f92600455604051908152a1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4950546f6b656e5374616b696e673a20496e76616c6964206d696e20666565006044820152fd5b80156120a35760206120967ff93d77980ae5a1ddd008d6a7f02cbee5af2a4fcea850c4b55828de4f644e589f926117d77f000000000000000000000000000000000000000000000000000000000000000082611944565b80600255604051908152a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4950546f6b656e5374616b696e673a205a65726f206d696e20756e7374616b6560448201527f20616d6f756e74000000000000000000000000000000000000000000000000006064820152fd5b7fffffffffffffffffffffffff0000000000000000000000000000000000000000907f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008281541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549073ffffffffffffffffffffffffffffffffffffffff80931680948316179055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b8015612212576020817f4167b1de65292a9ff628c9136823791a1de701e1fbdda4863ce22a1cfaf4d0f792600055604051908152a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4950546f6b656e5374616b696e673a205a65726f206d696e20636f6d6d69737360448201527f696f6e20726174650000000000000000000000000000000000000000000000006064820152fd5b80156122fa5760206122ed7fea095c2fea861b87f0fd54d0d4453358692a527e120df22b62c71696247dfb9f926117d77f000000000000000000000000000000000000000000000000000000000000000082611944565b80600155604051908152a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4950546f6b656e5374616b696e673a205a65726f206d696e207374616b65206160448201527f6d6f756e740000000000000000000000000000000000000000000000000000006064820152fd5b600080808093335af13d15612431573d61239a6114f4826114ab565b908152600060203d92013e5b156123ad57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4950546f6b656e5374616b696e673a204661696c656420746f20726566756e6460448201527f2072656d61696e646572000000000000000000000000000000000000000000006064820152fd5b6123a6565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561246557565b60046040517fd7e6bcf8000000000000000000000000000000000000000000000000000000008152fdfea2646970667358221220577374297567501f9ed67630e81e883cfebd4c860d3e407a1277c3bdaca7106664736f6c63430008170033", } // IPTokenStakingABI is the input ABI used to generate the binding from. @@ -1334,7 +1334,7 @@ func (it *IPTokenStakingDepositIterator) Close() error { // IPTokenStakingDeposit represents a Deposit event raised by the IPTokenStaking contract. type IPTokenStakingDeposit struct { DelegatorUncmpPubkey []byte - ValidatorUnCmpPubkey []byte + ValidatorUncmpPubkey []byte StakeAmount *big.Int StakingPeriod *big.Int DelegationId *big.Int @@ -1345,7 +1345,7 @@ type IPTokenStakingDeposit struct { // FilterDeposit is a free log retrieval operation binding the contract event 0x269a32ff589c9b701f49ab6aa532ee8f55901df71a7fca2d70dc9f45314f1be3. // -// Solidity: event Deposit(bytes delegatorUncmpPubkey, bytes validatorUnCmpPubkey, uint256 stakeAmount, uint256 stakingPeriod, uint256 delegationId, address operatorAddress, bytes data) +// Solidity: event Deposit(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint256 stakeAmount, uint256 stakingPeriod, uint256 delegationId, address operatorAddress, bytes data) func (_IPTokenStaking *IPTokenStakingFilterer) FilterDeposit(opts *bind.FilterOpts) (*IPTokenStakingDepositIterator, error) { logs, sub, err := _IPTokenStaking.contract.FilterLogs(opts, "Deposit") @@ -1357,7 +1357,7 @@ func (_IPTokenStaking *IPTokenStakingFilterer) FilterDeposit(opts *bind.FilterOp // WatchDeposit is a free log subscription operation binding the contract event 0x269a32ff589c9b701f49ab6aa532ee8f55901df71a7fca2d70dc9f45314f1be3. // -// Solidity: event Deposit(bytes delegatorUncmpPubkey, bytes validatorUnCmpPubkey, uint256 stakeAmount, uint256 stakingPeriod, uint256 delegationId, address operatorAddress, bytes data) +// Solidity: event Deposit(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint256 stakeAmount, uint256 stakingPeriod, uint256 delegationId, address operatorAddress, bytes data) func (_IPTokenStaking *IPTokenStakingFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *IPTokenStakingDeposit) (event.Subscription, error) { logs, sub, err := _IPTokenStaking.contract.WatchLogs(opts, "Deposit") @@ -1394,7 +1394,7 @@ func (_IPTokenStaking *IPTokenStakingFilterer) WatchDeposit(opts *bind.WatchOpts // ParseDeposit is a log parse operation binding the contract event 0x269a32ff589c9b701f49ab6aa532ee8f55901df71a7fca2d70dc9f45314f1be3. // -// Solidity: event Deposit(bytes delegatorUncmpPubkey, bytes validatorUnCmpPubkey, uint256 stakeAmount, uint256 stakingPeriod, uint256 delegationId, address operatorAddress, bytes data) +// Solidity: event Deposit(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint256 stakeAmount, uint256 stakingPeriod, uint256 delegationId, address operatorAddress, bytes data) func (_IPTokenStaking *IPTokenStakingFilterer) ParseDeposit(log types.Log) (*IPTokenStakingDeposit, error) { event := new(IPTokenStakingDeposit) if err := _IPTokenStaking.contract.UnpackLog(event, "Deposit", log); err != nil { @@ -3265,7 +3265,7 @@ func (it *IPTokenStakingWithdrawIterator) Close() error { // IPTokenStakingWithdraw represents a Withdraw event raised by the IPTokenStaking contract. type IPTokenStakingWithdraw struct { DelegatorUncmpPubkey []byte - ValidatorUnCmpPubkey []byte + ValidatorUncmpPubkey []byte StakeAmount *big.Int DelegationId *big.Int OperatorAddress common.Address @@ -3275,7 +3275,7 @@ type IPTokenStakingWithdraw struct { // FilterWithdraw is a free log retrieval operation binding the contract event 0xac41e6ee15d2d0047feb1ea8aba74b92c0334cd3e78024a5ad679d7d08b8fbc5. // -// Solidity: event Withdraw(bytes delegatorUncmpPubkey, bytes validatorUnCmpPubkey, uint256 stakeAmount, uint256 delegationId, address operatorAddress, bytes data) +// Solidity: event Withdraw(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint256 stakeAmount, uint256 delegationId, address operatorAddress, bytes data) func (_IPTokenStaking *IPTokenStakingFilterer) FilterWithdraw(opts *bind.FilterOpts) (*IPTokenStakingWithdrawIterator, error) { logs, sub, err := _IPTokenStaking.contract.FilterLogs(opts, "Withdraw") @@ -3287,7 +3287,7 @@ func (_IPTokenStaking *IPTokenStakingFilterer) FilterWithdraw(opts *bind.FilterO // WatchWithdraw is a free log subscription operation binding the contract event 0xac41e6ee15d2d0047feb1ea8aba74b92c0334cd3e78024a5ad679d7d08b8fbc5. // -// Solidity: event Withdraw(bytes delegatorUncmpPubkey, bytes validatorUnCmpPubkey, uint256 stakeAmount, uint256 delegationId, address operatorAddress, bytes data) +// Solidity: event Withdraw(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint256 stakeAmount, uint256 delegationId, address operatorAddress, bytes data) func (_IPTokenStaking *IPTokenStakingFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *IPTokenStakingWithdraw) (event.Subscription, error) { logs, sub, err := _IPTokenStaking.contract.WatchLogs(opts, "Withdraw") @@ -3324,7 +3324,7 @@ func (_IPTokenStaking *IPTokenStakingFilterer) WatchWithdraw(opts *bind.WatchOpt // ParseWithdraw is a log parse operation binding the contract event 0xac41e6ee15d2d0047feb1ea8aba74b92c0334cd3e78024a5ad679d7d08b8fbc5. // -// Solidity: event Withdraw(bytes delegatorUncmpPubkey, bytes validatorUnCmpPubkey, uint256 stakeAmount, uint256 delegationId, address operatorAddress, bytes data) +// Solidity: event Withdraw(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint256 stakeAmount, uint256 delegationId, address operatorAddress, bytes data) func (_IPTokenStaking *IPTokenStakingFilterer) ParseWithdraw(log types.Log) (*IPTokenStakingWithdraw, error) { event := new(IPTokenStakingWithdraw) if err := _IPTokenStaking.contract.UnpackLog(event, "Withdraw", log); err != nil { diff --git a/contracts/src/interfaces/IIPTokenStaking.sol b/contracts/src/interfaces/IIPTokenStaking.sol index 6fe56e9b..b87076d0 100644 --- a/contracts/src/interfaces/IIPTokenStaking.sol +++ b/contracts/src/interfaces/IIPTokenStaking.sol @@ -72,7 +72,7 @@ interface IIPTokenStaking { /// @notice Emitted when a user deposits token into the contract. /// @param delegatorUncmpPubkey Delegator's 65 bytes uncompressed secp256k1 public key. - /// @param validatorUnCmpPubkey Validator's 65 bytes uncompressed secp256k1 public key. + /// @param validatorUncmpPubkey Validator's 65 bytes uncompressed secp256k1 public key. /// @param stakeAmount Token deposited. /// @param stakingPeriod of the deposit /// @param delegationId The ID of the delegation @@ -80,7 +80,7 @@ interface IIPTokenStaking { /// @param data Additional data for the deposit event Deposit( bytes delegatorUncmpPubkey, - bytes validatorUnCmpPubkey, + bytes validatorUncmpPubkey, uint256 stakeAmount, uint256 stakingPeriod, uint256 delegationId, @@ -90,14 +90,14 @@ interface IIPTokenStaking { /// @notice Emitted when a user withdraws her stake and starts the unbonding period. /// @param delegatorUncmpPubkey Delegator's 65 bytes uncompressed secp256k1 public key. - /// @param validatorUnCmpPubkey Validator's 65 bytes uncompressed secp256k1 public key. + /// @param validatorUncmpPubkey Validator's 65 bytes uncompressed secp256k1 public key. /// @param stakeAmount Token deposited. /// @param delegationId The ID of the delegation, 0 if flexible /// @param operatorAddress The caller's address /// @param data Additional data for the deposit event Withdraw( bytes delegatorUncmpPubkey, - bytes validatorUnCmpPubkey, + bytes validatorUncmpPubkey, uint256 stakeAmount, uint256 delegationId, address operatorAddress, diff --git a/contracts/src/protocol/UBIPool.sol b/contracts/src/protocol/UBIPool.sol index 17f0ea4f..cb2d0a21 100644 --- a/contracts/src/protocol/UBIPool.sol +++ b/contracts/src/protocol/UBIPool.sol @@ -45,7 +45,7 @@ contract UBIPool is /// @notice Sets the UBI percentage distribution in CL /// @param percentage The percentage of the UBI function setUBIPercentage(uint32 percentage) external onlyOwner { - require(percentage < MAX_UBI_PERCENTAGE, "UBIPool: percentage too high"); + require(percentage <= MAX_UBI_PERCENTAGE, "UBIPool: percentage too high"); emit UBIPercentageSet(percentage); }