Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
11398934 | 3 days ago | Contract Creation | 0 S |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
PoolBoosterSwapxDouble
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import { IBribe } from "../interfaces/poolBooster/ISwapXAlgebraBribe.sol"; import { IPoolBooster } from "../interfaces/poolBooster/IPoolBooster.sol"; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import { StableMath } from "../utils/StableMath.sol"; /** * @title Pool booster for SwapX concentrated liquidity where 2 gauges are created for * every pool. Ichi vaults currently have such setup. * @author Origin Protocol Inc */ contract PoolBoosterSwapxDouble is IPoolBooster { using StableMath for uint256; // @notice address of the Bribes.sol(Bribe) contract for the OS token side IBribe public immutable bribeContractOS; // @notice address of the Bribes.sol(Bribe) contract for the other token in the pool IBribe public immutable bribeContractOther; // @notice address of the OS token IERC20 public immutable osToken; // @notice 1e18 denominated split between OS and Other bribe. E.g. 0.4e17 means 40% to OS // bribe contract and 60% to other bribe contract uint256 public immutable split; // @notice if balance under this amount the bribe action is skipped uint256 public constant MIN_BRIBE_AMOUNT = 1e10; constructor( address _bribeContractOS, address _bribeContractOther, address _osToken, uint256 _split ) { require( _bribeContractOS != address(0), "Invalid bribeContractOS address" ); require( _bribeContractOther != address(0), "Invalid bribeContractOther address" ); // expect it to be between 1% & 99% require(_split > 1e16 && _split < 99e16, "Unexpected split amount"); bribeContractOS = IBribe(_bribeContractOS); bribeContractOther = IBribe(_bribeContractOther); // Abstract factory already validates this is not a zero address osToken = IERC20(_osToken); split = _split; } function bribe() external override { uint256 balance = osToken.balanceOf(address(this)); // balance too small, do no bribes if (balance < MIN_BRIBE_AMOUNT) { return; } uint256 osBribeAmount = balance.mulTruncate(split); uint256 otherBribeAmount = balance - osBribeAmount; osToken.approve(address(bribeContractOS), osBribeAmount); osToken.approve(address(bribeContractOther), otherBribeAmount); bribeContractOS.notifyRewardAmount(address(osToken), osBribeAmount); bribeContractOther.notifyRewardAmount( address(osToken), otherBribeAmount ); emit BribeExecuted(balance); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IPoolBooster { event BribeExecuted(uint256 amount); /// @notice Execute the bribe action function bribe() external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IBribe { /// @notice Notify a bribe amount /// @dev Rewards are saved into NEXT EPOCH mapping. function notifyRewardAmount(address _rewardsToken, uint256 reward) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import { SafeMath } from "@openzeppelin/contracts/utils/math/SafeMath.sol"; // Based on StableMath from Stability Labs Pty. Ltd. // https://github.com/mstable/mStable-contracts/blob/master/contracts/shared/StableMath.sol library StableMath { using SafeMath for uint256; /** * @dev Scaling unit for use in specific calculations, * where 1 * 10**18, or 1e18 represents a unit '1' */ uint256 private constant FULL_SCALE = 1e18; /*************************************** Helpers ****************************************/ /** * @dev Adjust the scale of an integer * @param to Decimals to scale to * @param from Decimals to scale from */ function scaleBy( uint256 x, uint256 to, uint256 from ) internal pure returns (uint256) { if (to > from) { x = x.mul(10**(to - from)); } else if (to < from) { // slither-disable-next-line divide-before-multiply x = x.div(10**(from - to)); } return x; } /*************************************** Precise Arithmetic ****************************************/ /** * @dev Multiplies two precise units, and then truncates by the full scale * @param x Left hand input to multiplication * @param y Right hand input to multiplication * @return Result after multiplying the two inputs and then dividing by the shared * scale unit */ function mulTruncate(uint256 x, uint256 y) internal pure returns (uint256) { return mulTruncateScale(x, y, FULL_SCALE); } /** * @dev Multiplies two precise units, and then truncates by the given scale. For example, * when calculating 90% of 10e18, (10e18 * 9e17) / 1e18 = (9e36) / 1e18 = 9e18 * @param x Left hand input to multiplication * @param y Right hand input to multiplication * @param scale Scale unit * @return Result after multiplying the two inputs and then dividing by the shared * scale unit */ function mulTruncateScale( uint256 x, uint256 y, uint256 scale ) internal pure returns (uint256) { // e.g. assume scale = fullScale // z = 10e18 * 9e17 = 9e36 uint256 z = x.mul(y); // return 9e36 / 1e18 = 9e18 return z.div(scale); } /** * @dev Multiplies two precise units, and then truncates by the full scale, rounding up the result * @param x Left hand input to multiplication * @param y Right hand input to multiplication * @return Result after multiplying the two inputs and then dividing by the shared * scale unit, rounded up to the closest base unit. */ function mulTruncateCeil(uint256 x, uint256 y) internal pure returns (uint256) { // e.g. 8e17 * 17268172638 = 138145381104e17 uint256 scaled = x.mul(y); // e.g. 138145381104e17 + 9.99...e17 = 138145381113.99...e17 uint256 ceil = scaled.add(FULL_SCALE.sub(1)); // e.g. 13814538111.399...e18 / 1e18 = 13814538111 return ceil.div(FULL_SCALE); } /** * @dev Precisely divides two units, by first scaling the left hand operand. Useful * for finding percentage weightings, i.e. 8e18/10e18 = 80% (or 8e17) * @param x Left hand input to division * @param y Right hand input to division * @return Result after multiplying the left operand by the scale, and * executing the division on the right hand input. */ function divPrecisely(uint256 x, uint256 y) internal pure returns (uint256) { // e.g. 8e18 * 1e18 = 8e36 uint256 z = x.mul(FULL_SCALE); // e.g. 8e36 / 10e18 = 8e17 return z.div(y); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_bribeContractOS","type":"address"},{"internalType":"address","name":"_bribeContractOther","type":"address"},{"internalType":"address","name":"_osToken","type":"address"},{"internalType":"uint256","name":"_split","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BribeExecuted","type":"event"},{"inputs":[],"name":"MIN_BRIBE_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bribe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bribeContractOS","outputs":[{"internalType":"contract IBribe","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bribeContractOther","outputs":[{"internalType":"contract IBribe","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"osToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"split","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
61010060405234801561001157600080fd5b5060405161089638038061089683398101604081905261003091610193565b6001600160a01b03841661008b5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c6964206272696265436f6e74726163744f5320616464726573730060448201526064015b60405180910390fd5b6001600160a01b0383166100ec5760405162461bcd60e51b815260206004820152602260248201527f496e76616c6964206272696265436f6e74726163744f74686572206164647265604482015261737360f01b6064820152608401610082565b662386f26fc10000811180156101095750670dbd2fc137a3000081105b6101555760405162461bcd60e51b815260206004820152601760248201527f556e65787065637465642073706c697420616d6f756e740000000000000000006044820152606401610082565b6001600160a01b0393841660805291831660a05290911660c05260e0526101de565b80516001600160a01b038116811461018e57600080fd5b919050565b600080600080608085870312156101a957600080fd5b6101b285610177565b93506101c060208601610177565b92506101ce60408601610177565b6060959095015193969295505050565b60805160a05160c05160e05161063c61025a6000396000818161012201526101e9015260008181606c0152818161015c015281816102640152818161031a0152818161039f015261043f01526000818160d4015281816102eb015261046e01526000818160fb0152818161023201526103ce015261063c6000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806312c587c51461006757806337d0208c146100ab5780633978033f146100b5578063840841d4146100cf578063ecdb9ea1146100f6578063f76541761461011d575b600080fd5b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b3610144565b005b6100c16402540be40081565b6040519081526020016100a2565b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6100c17f000000000000000000000000000000000000000000000000000000000000000081565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156101ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101cf9190610562565b90506402540be4008110156101e15750565b600061020d827f000000000000000000000000000000000000000000000000000000000000000061050a565b9050600061021b8284610591565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303816000875af11580156102af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d391906105a4565b5060405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038791906105a4565b5060405163b66503cf60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063b66503cf90604401600060405180830381600087803b15801561041257600080fd5b505af1158015610426573d6000803e3d6000fd5b505060405163b66503cf60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016925063b66503cf9150604401600060405180830381600087803b1580156104b457600080fd5b505af11580156104c8573d6000803e3d6000fd5b505050507f1424c3a24f9b1f30558ab0a7b48e07ce9f7d85b293a69a90356e1478504232eb836040516104fd91815260200190565b60405180910390a1505050565b600061051f8383670de0b6b3a7640000610528565b90505b92915050565b600080610535858561054a565b90506105418184610556565b95945050505050565b600061051f82846105cd565b600061051f82846105e4565b60006020828403121561057457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105225761052261057b565b6000602082840312156105b657600080fd5b815180151581146105c657600080fd5b9392505050565b80820281158282048414176105225761052261057b565b60008261060157634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206eefe34c590c18a5dcc0b5061823b4ffe2e78139379aedb27e105441fa9f043664736f6c634300081c003300000000000000000000000041688c9bb59ce191f6bb57c5829ac9d50a03e410000000000000000000000000bcf88f38865b7712da4de0a8efc286c601cae5e7000000000000000000000000b1e25689d55734fd3fffc939c4c3eb52dff8a79400000000000000000000000000000000000000000000000009b6e64a8ec60000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100625760003560e01c806312c587c51461006757806337d0208c146100ab5780633978033f146100b5578063840841d4146100cf578063ecdb9ea1146100f6578063f76541761461011d575b600080fd5b61008e7f000000000000000000000000b1e25689d55734fd3fffc939c4c3eb52dff8a79481565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b3610144565b005b6100c16402540be40081565b6040519081526020016100a2565b61008e7f000000000000000000000000bcf88f38865b7712da4de0a8efc286c601cae5e781565b61008e7f00000000000000000000000041688c9bb59ce191f6bb57c5829ac9d50a03e41081565b6100c17f00000000000000000000000000000000000000000000000009b6e64a8ec6000081565b6040516370a0823160e01b81523060048201526000907f000000000000000000000000b1e25689d55734fd3fffc939c4c3eb52dff8a7946001600160a01b0316906370a0823190602401602060405180830381865afa1580156101ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101cf9190610562565b90506402540be4008110156101e15750565b600061020d827f00000000000000000000000000000000000000000000000009b6e64a8ec6000061050a565b9050600061021b8284610591565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000041688c9bb59ce191f6bb57c5829ac9d50a03e41081166004830152602482018590529192507f000000000000000000000000b1e25689d55734fd3fffc939c4c3eb52dff8a7949091169063095ea7b3906044016020604051808303816000875af11580156102af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d391906105a4565b5060405163095ea7b360e01b81526001600160a01b037f000000000000000000000000bcf88f38865b7712da4de0a8efc286c601cae5e781166004830152602482018390527f000000000000000000000000b1e25689d55734fd3fffc939c4c3eb52dff8a794169063095ea7b3906044016020604051808303816000875af1158015610363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038791906105a4565b5060405163b66503cf60e01b81526001600160a01b037f000000000000000000000000b1e25689d55734fd3fffc939c4c3eb52dff8a79481166004830152602482018490527f00000000000000000000000041688c9bb59ce191f6bb57c5829ac9d50a03e410169063b66503cf90604401600060405180830381600087803b15801561041257600080fd5b505af1158015610426573d6000803e3d6000fd5b505060405163b66503cf60e01b81526001600160a01b037f000000000000000000000000b1e25689d55734fd3fffc939c4c3eb52dff8a79481166004830152602482018590527f000000000000000000000000bcf88f38865b7712da4de0a8efc286c601cae5e716925063b66503cf9150604401600060405180830381600087803b1580156104b457600080fd5b505af11580156104c8573d6000803e3d6000fd5b505050507f1424c3a24f9b1f30558ab0a7b48e07ce9f7d85b293a69a90356e1478504232eb836040516104fd91815260200190565b60405180910390a1505050565b600061051f8383670de0b6b3a7640000610528565b90505b92915050565b600080610535858561054a565b90506105418184610556565b95945050505050565b600061051f82846105cd565b600061051f82846105e4565b60006020828403121561057457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105225761052261057b565b6000602082840312156105b657600080fd5b815180151581146105c657600080fd5b9392505050565b80820281158282048414176105225761052261057b565b60008261060157634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206eefe34c590c18a5dcc0b5061823b4ffe2e78139379aedb27e105441fa9f043664736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000041688c9bb59ce191f6bb57c5829ac9d50a03e410000000000000000000000000bcf88f38865b7712da4de0a8efc286c601cae5e7000000000000000000000000b1e25689d55734fd3fffc939c4c3eb52dff8a79400000000000000000000000000000000000000000000000009b6e64a8ec60000
-----Decoded View---------------
Arg [0] : _bribeContractOS (address): 0x41688C9bb59ce191F6BB57c5829ac9D50A03E410
Arg [1] : _bribeContractOther (address): 0xBCF88f38865B7712da4DE0a8eFC286C601CAE5e7
Arg [2] : _osToken (address): 0xb1e25689D55734FD3ffFc939c4C3Eb52DFf8A794
Arg [3] : _split (uint256): 700000000000000000
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000041688c9bb59ce191f6bb57c5829ac9d50a03e410
Arg [1] : 000000000000000000000000bcf88f38865b7712da4de0a8efc286c601cae5e7
Arg [2] : 000000000000000000000000b1e25689d55734fd3fffc939c4c3eb52dff8a794
Arg [3] : 00000000000000000000000000000000000000000000000009b6e64a8ec60000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.