Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 4,261 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Vest | 16823388 | 638 days ago | IN | 0 ETH | 0.00439059 | ||||
Vest | 16823249 | 638 days ago | IN | 0 ETH | 0.00230694 | ||||
Vest | 12346680 | 1320 days ago | IN | 0 ETH | 0.0032675 | ||||
Vest | 11656312 | 1426 days ago | IN | 0 ETH | 0.01144431 | ||||
Vest | 11656173 | 1426 days ago | IN | 0 ETH | 0.00475047 | ||||
Vest | 11656155 | 1426 days ago | IN | 0 ETH | 0.00598736 | ||||
Vest | 11656037 | 1426 days ago | IN | 0 ETH | 0.00788436 | ||||
Vest | 11655971 | 1426 days ago | IN | 0 ETH | 0.00344816 | ||||
Vest | 11655971 | 1426 days ago | IN | 0 ETH | 0.00353278 | ||||
Vest | 11655911 | 1426 days ago | IN | 0 ETH | 0.0044052 | ||||
Vest | 11655860 | 1426 days ago | IN | 0 ETH | 0.0043812 | ||||
Vest | 11655623 | 1426 days ago | IN | 0 ETH | 0.00891417 | ||||
Vest | 11655460 | 1426 days ago | IN | 0 ETH | 0.00577118 | ||||
Vest | 11655363 | 1426 days ago | IN | 0 ETH | 0.00705145 | ||||
Vest | 11655081 | 1427 days ago | IN | 0 ETH | 0.00991701 | ||||
Vest | 11654784 | 1427 days ago | IN | 0 ETH | 0.00778262 | ||||
Vest | 11654784 | 1427 days ago | IN | 0 ETH | 0.01071631 | ||||
Vest | 11654547 | 1427 days ago | IN | 0 ETH | 0.01622214 | ||||
Vest | 11654378 | 1427 days ago | IN | 0 ETH | 0.00887456 | ||||
Vest | 11654198 | 1427 days ago | IN | 0 ETH | 0.03015537 | ||||
Vest | 11654016 | 1427 days ago | IN | 0 ETH | 0.02553005 | ||||
Vest | 11653616 | 1427 days ago | IN | 0 ETH | 0.0095189 | ||||
Vest | 11653422 | 1427 days ago | IN | 0 ETH | 0.02139722 | ||||
Vest | 11653349 | 1427 days ago | IN | 0 ETH | 0.0109667 | ||||
Vest | 11652947 | 1427 days ago | IN | 0 ETH | 0.00496825 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
RewardEscrow
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-05-02 */ /* =============================================== * Flattened with Solidifier by Coinage * * https://solidifier.coina.ge * =============================================== */ pragma solidity ^0.4.24; /** * @title SafeMath * @dev Math operations with safety checks that revert on error */ library SafeMath { /** * @dev Multiplies two numbers, reverts on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // 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-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } /** * @dev Integer division of two numbers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0); // Solidity only automatically asserts when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } /** * @dev Adds two numbers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } /** * @dev Divides two numbers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } } /* ----------------------------------------------------------------- FILE INFORMATION ----------------------------------------------------------------- file: SafeDecimalMath.sol version: 2.0 author: Kevin Brown Gavin Conway date: 2018-10-18 ----------------------------------------------------------------- MODULE DESCRIPTION ----------------------------------------------------------------- A library providing safe mathematical operations for division and multiplication with the capability to round or truncate the results to the nearest increment. Operations can return a standard precision or high precision decimal. High precision decimals are useful for example when attempting to calculate percentages or fractions accurately. ----------------------------------------------------------------- */ /** * @title Safely manipulate unsigned fixed-point decimals at a given precision level. * @dev Functions accepting uints in this contract and derived contracts * are taken to be such fixed point decimals of a specified precision (either standard * or high). */ library SafeDecimalMath { using SafeMath for uint; /* Number of decimal places in the representations. */ uint8 public constant decimals = 18; uint8 public constant highPrecisionDecimals = 27; /* The number representing 1.0. */ uint public constant UNIT = 10 ** uint(decimals); /* The number representing 1.0 for higher fidelity numbers. */ uint public constant PRECISE_UNIT = 10 ** uint(highPrecisionDecimals); uint private constant UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR = 10 ** uint(highPrecisionDecimals - decimals); /** * @return Provides an interface to UNIT. */ function unit() external pure returns (uint) { return UNIT; } /** * @return Provides an interface to PRECISE_UNIT. */ function preciseUnit() external pure returns (uint) { return PRECISE_UNIT; } /** * @return The result of multiplying x and y, interpreting the operands as fixed-point * decimals. * * @dev A unit factor is divided out after the product of x and y is evaluated, * so that product must be less than 2**256. As this is an integer division, * the internal division always rounds down. This helps save on gas. Rounding * is more expensive on gas. */ function multiplyDecimal(uint x, uint y) internal pure returns (uint) { /* Divide by UNIT to remove the extra factor introduced by the product. */ return x.mul(y) / UNIT; } /** * @return The result of safely multiplying x and y, interpreting the operands * as fixed-point decimals of the specified precision unit. * * @dev The operands should be in the form of a the specified unit factor which will be * divided out after the product of x and y is evaluated, so that product must be * less than 2**256. * * Unlike multiplyDecimal, this function rounds the result to the nearest increment. * Rounding is useful when you need to retain fidelity for small decimal numbers * (eg. small fractions or percentages). */ function _multiplyDecimalRound(uint x, uint y, uint precisionUnit) private pure returns (uint) { /* Divide by UNIT to remove the extra factor introduced by the product. */ uint quotientTimesTen = x.mul(y) / (precisionUnit / 10); if (quotientTimesTen % 10 >= 5) { quotientTimesTen += 10; } return quotientTimesTen / 10; } /** * @return The result of safely multiplying x and y, interpreting the operands * as fixed-point decimals of a precise unit. * * @dev The operands should be in the precise unit factor which will be * divided out after the product of x and y is evaluated, so that product must be * less than 2**256. * * Unlike multiplyDecimal, this function rounds the result to the nearest increment. * Rounding is useful when you need to retain fidelity for small decimal numbers * (eg. small fractions or percentages). */ function multiplyDecimalRoundPrecise(uint x, uint y) internal pure returns (uint) { return _multiplyDecimalRound(x, y, PRECISE_UNIT); } /** * @return The result of safely multiplying x and y, interpreting the operands * as fixed-point decimals of a standard unit. * * @dev The operands should be in the standard unit factor which will be * divided out after the product of x and y is evaluated, so that product must be * less than 2**256. * * Unlike multiplyDecimal, this function rounds the result to the nearest increment. * Rounding is useful when you need to retain fidelity for small decimal numbers * (eg. small fractions or percentages). */ function multiplyDecimalRound(uint x, uint y) internal pure returns (uint) { return _multiplyDecimalRound(x, y, UNIT); } /** * @return The result of safely dividing x and y. The return value is a high * precision decimal. * * @dev y is divided after the product of x and the standard precision unit * is evaluated, so the product of x and UNIT must be less than 2**256. As * this is an integer division, the result is always rounded down. * This helps save on gas. Rounding is more expensive on gas. */ function divideDecimal(uint x, uint y) internal pure returns (uint) { /* Reintroduce the UNIT factor that will be divided out by y. */ return x.mul(UNIT).div(y); } /** * @return The result of safely dividing x and y. The return value is as a rounded * decimal in the precision unit specified in the parameter. * * @dev y is divided after the product of x and the specified precision unit * is evaluated, so the product of x and the specified precision unit must * be less than 2**256. The result is rounded to the nearest increment. */ function _divideDecimalRound(uint x, uint y, uint precisionUnit) private pure returns (uint) { uint resultTimesTen = x.mul(precisionUnit * 10).div(y); if (resultTimesTen % 10 >= 5) { resultTimesTen += 10; } return resultTimesTen / 10; } /** * @return The result of safely dividing x and y. The return value is as a rounded * standard precision decimal. * * @dev y is divided after the product of x and the standard precision unit * is evaluated, so the product of x and the standard precision unit must * be less than 2**256. The result is rounded to the nearest increment. */ function divideDecimalRound(uint x, uint y) internal pure returns (uint) { return _divideDecimalRound(x, y, UNIT); } /** * @return The result of safely dividing x and y. The return value is as a rounded * high precision decimal. * * @dev y is divided after the product of x and the high precision unit * is evaluated, so the product of x and the high precision unit must * be less than 2**256. The result is rounded to the nearest increment. */ function divideDecimalRoundPrecise(uint x, uint y) internal pure returns (uint) { return _divideDecimalRound(x, y, PRECISE_UNIT); } /** * @dev Convert a standard decimal representation to a high precision one. */ function decimalToPreciseDecimal(uint i) internal pure returns (uint) { return i.mul(UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR); } /** * @dev Convert a high precision decimal to a standard decimal representation. */ function preciseDecimalToDecimal(uint i) internal pure returns (uint) { uint quotientTimesTen = i / (UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR / 10); if (quotientTimesTen % 10 >= 5) { quotientTimesTen += 10; } return quotientTimesTen / 10; } } /* ----------------------------------------------------------------- FILE INFORMATION ----------------------------------------------------------------- file: Owned.sol version: 1.1 author: Anton Jurisevic Dominic Romanowski date: 2018-2-26 ----------------------------------------------------------------- MODULE DESCRIPTION ----------------------------------------------------------------- An Owned contract, to be inherited by other contracts. Requires its owner to be explicitly set in the constructor. Provides an onlyOwner access modifier. To change owner, the current owner must nominate the next owner, who then has to accept the nomination. The nomination can be cancelled before it is accepted by the new owner by having the previous owner change the nomination (setting it to 0). ----------------------------------------------------------------- */ /** * @title A contract with an owner. * @notice Contract ownership can be transferred by first nominating the new owner, * who must then accept the ownership, which prevents accidental incorrect ownership transfers. */ contract Owned { address public owner; address public nominatedOwner; /** * @dev Owned Constructor */ constructor(address _owner) public { require(_owner != address(0), "Owner address cannot be 0"); owner = _owner; emit OwnerChanged(address(0), _owner); } /** * @notice Nominate a new owner of this contract. * @dev Only the current owner may nominate a new owner. */ function nominateNewOwner(address _owner) external onlyOwner { nominatedOwner = _owner; emit OwnerNominated(_owner); } /** * @notice Accept the nomination to be owner. */ function acceptOwnership() external { require(msg.sender == nominatedOwner, "You must be nominated before you can accept ownership"); emit OwnerChanged(owner, nominatedOwner); owner = nominatedOwner; nominatedOwner = address(0); } modifier onlyOwner { require(msg.sender == owner, "Only the contract owner may perform this action"); _; } event OwnerNominated(address newOwner); event OwnerChanged(address oldOwner, address newOwner); } contract IFeePool { address public FEE_ADDRESS; function amountReceivedFromExchange(uint value) external view returns (uint); function amountReceivedFromTransfer(uint value) external view returns (uint); function feePaid(bytes4 currencyKey, uint amount) external; function appendAccountIssuanceRecord(address account, uint lockedAmount, uint debtEntryIndex) external; function rewardsMinted(uint amount) external; function transferFeeIncurred(uint value) public view returns (uint); } contract ISynthetixState { // A struct for handing values associated with an individual user's debt position struct IssuanceData { // Percentage of the total debt owned at the time // of issuance. This number is modified by the global debt // delta array. You can figure out a user's exit price and // collateralisation ratio using a combination of their initial // debt and the slice of global debt delta which applies to them. uint initialDebtOwnership; // This lets us know when (in relative terms) the user entered // the debt pool so we can calculate their exit price and // collateralistion ratio uint debtEntryIndex; } uint[] public debtLedger; uint public issuanceRatio; mapping(address => IssuanceData) public issuanceData; function debtLedgerLength() external view returns (uint); function hasIssued(address account) external view returns (bool); function incrementTotalIssuerCount() external; function decrementTotalIssuerCount() external; function setCurrentIssuanceData(address account, uint initialDebtOwnership) external; function lastDebtLedgerEntry() external view returns (uint); function appendDebtLedgerValue(uint value) external; function clearIssuanceData(address account) external; } interface ISynth { function burn(address account, uint amount) external; function issue(address account, uint amount) external; function transfer(address to, uint value) public returns (bool); function triggerTokenFallbackIfNeeded(address sender, address recipient, uint amount) external; function transferFrom(address from, address to, uint value) public returns (bool); } /** * @title SynthetixEscrow interface */ interface ISynthetixEscrow { function balanceOf(address account) public view returns (uint); function appendVestingEntry(address account, uint quantity) public; } /** * @title ExchangeRates interface */ interface IExchangeRates { function effectiveValue(bytes4 sourceCurrencyKey, uint sourceAmount, bytes4 destinationCurrencyKey) public view returns (uint); function rateForCurrency(bytes4 currencyKey) public view returns (uint); function anyRateIsStale(bytes4[] currencyKeys) external view returns (bool); function rateIsStale(bytes4 currencyKey) external view returns (bool); } /** * @title Synthetix interface contract * @dev pseudo interface, actually declared as contract to hold the public getters */ contract ISynthetix { // ========== PUBLIC STATE VARIABLES ========== IFeePool public feePool; ISynthetixEscrow public escrow; ISynthetixEscrow public rewardEscrow; ISynthetixState public synthetixState; IExchangeRates public exchangeRates; // ========== PUBLIC FUNCTIONS ========== function balanceOf(address account) public view returns (uint); function transfer(address to, uint value) public returns (bool); function effectiveValue(bytes4 sourceCurrencyKey, uint sourceAmount, bytes4 destinationCurrencyKey) public view returns (uint); function synthInitiatedFeePayment(address from, bytes4 sourceCurrencyKey, uint sourceAmount) external returns (bool); function synthInitiatedExchange( address from, bytes4 sourceCurrencyKey, uint sourceAmount, bytes4 destinationCurrencyKey, address destinationAddress) external returns (bool); function collateralisationRatio(address issuer) public view returns (uint); function totalIssuedSynths(bytes4 currencyKey) public view returns (uint); function getSynth(bytes4 currencyKey) public view returns (ISynth); function debtBalanceOf(address issuer, bytes4 currencyKey) public view returns (uint); } /* ----------------------------------------------------------------- FILE INFORMATION ----------------------------------------------------------------- file: RewardEscrow.sol version: 1.0 author: Jackson Chan Clinton Ennis date: 2019-03-01 ----------------------------------------------------------------- MODULE DESCRIPTION ----------------------------------------------------------------- Escrows the SNX rewards from the inflationary supply awarded to users for staking their SNX and maintaining the c-rationn target. SNW rewards are escrowed for 1 year from the claim date and users can call vest in 12 months time. ----------------------------------------------------------------- */ /** * @title A contract to hold escrowed SNX and free them at given schedules. */ contract RewardEscrow is Owned { using SafeMath for uint; /* The corresponding Synthetix contract. */ ISynthetix public synthetix; IFeePool public feePool; /* Lists of (timestamp, quantity) pairs per account, sorted in ascending time order. * These are the times at which each given quantity of SNX vests. */ mapping(address => uint[2][]) public vestingSchedules; /* An account's total escrowed synthetix balance to save recomputing this for fee extraction purposes. */ mapping(address => uint) public totalEscrowedAccountBalance; /* An account's total vested reward synthetix. */ mapping(address => uint) public totalVestedAccountBalance; /* The total remaining escrowed balance, for verifying the actual synthetix balance of this contract against. */ uint public totalEscrowedBalance; uint constant TIME_INDEX = 0; uint constant QUANTITY_INDEX = 1; /* Limit vesting entries to disallow unbounded iteration over vesting schedules. * There are 5 years of the supply scedule */ uint constant public MAX_VESTING_ENTRIES = 52*5; /* ========== CONSTRUCTOR ========== */ constructor(address _owner, ISynthetix _synthetix, IFeePool _feePool) Owned(_owner) public { synthetix = _synthetix; feePool = _feePool; } /* ========== SETTERS ========== */ /** * @notice set the synthetix contract address as we need to transfer SNX when the user vests */ function setSynthetix(ISynthetix _synthetix) external onlyOwner { synthetix = _synthetix; emit SynthetixUpdated(_synthetix); } /** * @notice set the FeePool contract as it is the only authority to be able to call * appendVestingEntry with the onlyFeePool modifer */ function setFeePool(IFeePool _feePool) external onlyOwner { feePool = _feePool; emit FeePoolUpdated(_feePool); } /* ========== VIEW FUNCTIONS ========== */ /** * @notice A simple alias to totalEscrowedAccountBalance: provides ERC20 balance integration. */ function balanceOf(address account) public view returns (uint) { return totalEscrowedAccountBalance[account]; } /** * @notice The number of vesting dates in an account's schedule. */ function numVestingEntries(address account) public view returns (uint) { return vestingSchedules[account].length; } /** * @notice Get a particular schedule entry for an account. * @return A pair of uints: (timestamp, synthetix quantity). */ function getVestingScheduleEntry(address account, uint index) public view returns (uint[2]) { return vestingSchedules[account][index]; } /** * @notice Get the time at which a given schedule entry will vest. */ function getVestingTime(address account, uint index) public view returns (uint) { return getVestingScheduleEntry(account,index)[TIME_INDEX]; } /** * @notice Get the quantity of SNX associated with a given schedule entry. */ function getVestingQuantity(address account, uint index) public view returns (uint) { return getVestingScheduleEntry(account,index)[QUANTITY_INDEX]; } /** * @notice Obtain the index of the next schedule entry that will vest for a given user. */ function getNextVestingIndex(address account) public view returns (uint) { uint len = numVestingEntries(account); for (uint i = 0; i < len; i++) { if (getVestingTime(account, i) != 0) { return i; } } return len; } /** * @notice Obtain the next schedule entry that will vest for a given user. * @return A pair of uints: (timestamp, synthetix quantity). */ function getNextVestingEntry(address account) public view returns (uint[2]) { uint index = getNextVestingIndex(account); if (index == numVestingEntries(account)) { return [uint(0), 0]; } return getVestingScheduleEntry(account, index); } /** * @notice Obtain the time at which the next schedule entry will vest for a given user. */ function getNextVestingTime(address account) external view returns (uint) { return getNextVestingEntry(account)[TIME_INDEX]; } /** * @notice Obtain the quantity which the next schedule entry will vest for a given user. */ function getNextVestingQuantity(address account) external view returns (uint) { return getNextVestingEntry(account)[QUANTITY_INDEX]; } /** * @notice return the full vesting schedule entries vest for a given user. */ function checkAccountSchedule(address account) public view returns (uint[520]) { uint[520] memory _result; uint schedules = numVestingEntries(account); for (uint i = 0; i < schedules; i++) { uint[2] memory pair = getVestingScheduleEntry(account, i); _result[i*2] = pair[0]; _result[i*2 + 1] = pair[1]; } return _result; } /* ========== MUTATIVE FUNCTIONS ========== */ /** * @notice Add a new vesting entry at a given time and quantity to an account's schedule. * @dev A call to this should accompany a previous successfull call to synthetix.transfer(tewardEscrow, amount), * to ensure that when the funds are withdrawn, there is enough balance. * Note; although this function could technically be used to produce unbounded * arrays, it's only withinn the 4 year period of the weekly inflation schedule. * @param account The account to append a new vesting entry to. * @param quantity The quantity of SNX that will be escrowed. */ function appendVestingEntry(address account, uint quantity) public onlyFeePool { /* No empty or already-passed vesting entries allowed. */ require(quantity != 0, "Quantity cannot be zero"); /* There must be enough balance in the contract to provide for the vesting entry. */ totalEscrowedBalance = totalEscrowedBalance.add(quantity); require(totalEscrowedBalance <= synthetix.balanceOf(this), "Must be enough balance in the contract to provide for the vesting entry"); /* Disallow arbitrarily long vesting schedules in light of the gas limit. */ uint scheduleLength = vestingSchedules[account].length; require(scheduleLength <= MAX_VESTING_ENTRIES, "Vesting schedule is too long"); /* Escrow the tokens for 1 year. */ uint time = now + 52 weeks; if (scheduleLength == 0) { totalEscrowedAccountBalance[account] = quantity; } else { /* Disallow adding new vested SNX earlier than the last one. * Since entries are only appended, this means that no vesting date can be repeated. */ require(getVestingTime(account, numVestingEntries(account) - 1) < time, "Cannot add new vested entries earlier than the last one"); totalEscrowedAccountBalance[account] = totalEscrowedAccountBalance[account].add(quantity); } vestingSchedules[account].push([time, quantity]); emit VestingEntryCreated(account, now, quantity); } /** * @notice Allow a user to withdraw any SNX in their schedule that have vested. */ function vest() external { uint numEntries = numVestingEntries(msg.sender); uint total; for (uint i = 0; i < numEntries; i++) { uint time = getVestingTime(msg.sender, i); /* The list is sorted; when we reach the first future time, bail out. */ if (time > now) { break; } uint qty = getVestingQuantity(msg.sender, i); if (qty == 0) { continue; } vestingSchedules[msg.sender][i] = [0, 0]; total = total.add(qty); } if (total != 0) { totalEscrowedBalance = totalEscrowedBalance.sub(total); totalEscrowedAccountBalance[msg.sender] = totalEscrowedAccountBalance[msg.sender].sub(total); totalVestedAccountBalance[msg.sender] = totalVestedAccountBalance[msg.sender].add(total); synthetix.transfer(msg.sender, total); emit Vested(msg.sender, now, total); } } /* ========== MODIFIERS ========== */ modifier onlyFeePool() { bool isFeePool = msg.sender == address(feePool); require(isFeePool, "Only the FeePool contracts can perform this action"); _; } /* ========== EVENTS ========== */ event SynthetixUpdated(address newSynthetix); event FeePoolUpdated(address newFeePool); event Vested(address indexed beneficiary, uint time, uint value); event VestingEntryCreated(address indexed beneficiary, uint time, uint value); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_feePool","type":"address"}],"name":"setFeePool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"getNextVestingIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"numVestingEntries","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"totalVestedAccountBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"getNextVestingEntry","outputs":[{"name":"","type":"uint256[2]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"totalEscrowedAccountBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"checkAccountSchedule","outputs":[{"name":"","type":"uint256[520]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"vest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"vestingSchedules","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nominatedOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"getNextVestingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEscrowedBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"synthetix","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"getNextVestingQuantity","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"},{"name":"index","type":"uint256"}],"name":"getVestingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feePool","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"quantity","type":"uint256"}],"name":"appendVestingEntry","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MAX_VESTING_ENTRIES","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"},{"name":"index","type":"uint256"}],"name":"getVestingScheduleEntry","outputs":[{"name":"","type":"uint256[2]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"},{"name":"index","type":"uint256"}],"name":"getVestingQuantity","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_synthetix","type":"address"}],"name":"setSynthetix","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_owner","type":"address"},{"name":"_synthetix","type":"address"},{"name":"_feePool","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newSynthetix","type":"address"}],"name":"SynthetixUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newFeePool","type":"address"}],"name":"FeePoolUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"time","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Vested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"time","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"VestingEntryCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405160608061140183398101604090815281516020830151919092015182600160a060020a03811615156100a757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015290519081900360640190fd5b60008054600160a060020a031916600160a060020a038316908117825560408051928352602083019190915280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a15060028054600160a060020a03938416600160a060020a03199182161790915560038054929093169116179055506112c58061013c6000396000f3006080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631627540c811461014d57806319db22281461017057806319e740c014610191578063204b676a146101c4578063227d517a146101e55780632f5bb66114610206578063326a3cfb14610262578063449d0eb114610283578063458efde3146102ba57806345e5441f146102cf57806353a47bb7146102f65780636b3905c41461032757806370a082311461034857806371e780f314610369578063759b52251461037e57806379ba5097146103935780638da5cb5b146103a857806397f46527146103bd5780639b217f90146103de578063ae2e933b14610402578063b5ddb9c714610417578063d0cc82e31461043b578063da7bd3e914610450578063ee1d036c14610474578063fec9f9da14610498575b600080fd5b34801561015957600080fd5b5061016e600160a060020a03600435166104b9565b005b34801561017c57600080fd5b5061016e600160a060020a03600435166105a2565b34801561019d57600080fd5b506101b2600160a060020a036004351661068b565b60408051918252519081900360200190f35b3480156101d057600080fd5b506101b2600160a060020a03600435166106d2565b3480156101f157600080fd5b506101b2600160a060020a03600435166106ed565b34801561021257600080fd5b50610227600160a060020a03600435166106ff565b6040518082600260200280838360005b8381101561024f578181015183820152602001610237565b5050505090500191505060405180910390f35b34801561026e57600080fd5b506101b2600160a060020a0360043516610752565b34801561028f57600080fd5b506102a4600160a060020a0360043516610764565b6040518151815280826141008083836020610237565b3480156102c657600080fd5b5061016e6107f0565b3480156102db57600080fd5b506101b2600160a060020a03600435166024356044356109fd565b34801561030257600080fd5b5061030b610a3d565b60408051600160a060020a039092168252519081900360200190f35b34801561033357600080fd5b506101b2600160a060020a0360043516610a4c565b34801561035457600080fd5b506101b2600160a060020a0360043516610a65565b34801561037557600080fd5b506101b2610a80565b34801561038a57600080fd5b5061030b610a86565b34801561039f57600080fd5b5061016e610a95565b3480156103b457600080fd5b5061030b610b9d565b3480156103c957600080fd5b506101b2600160a060020a0360043516610bac565b3480156103ea57600080fd5b506101b2600160a060020a0360043516602435610bbe565b34801561040e57600080fd5b5061030b610bd9565b34801561042357600080fd5b5061016e600160a060020a0360043516602435610be8565b34801561044757600080fd5b506101b261102e565b34801561045c57600080fd5b50610227600160a060020a0360043516602435611034565b34801561048057600080fd5b506101b2600160a060020a03600435166024356110a3565b3480156104a457600080fd5b5061016e600160a060020a03600435166110b6565b600054600160a060020a03163314610541576040805160e560020a62461bcd02815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201527f6f726d207468697320616374696f6e0000000000000000000000000000000000606482015290519081900360840190fd5b60018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b600054600160a060020a0316331461062a576040805160e560020a62461bcd02815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201527f6f726d207468697320616374696f6e0000000000000000000000000000000000606482015290519081900360840190fd5b60038054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f6d1d088acfe4f30d6014f6f693c61c16258f9784a6ed8439b2c59213eecb62959181900360200190a150565b6000806000610699846106d2565b9150600090505b818110156106c7576106b28482610bbe565b156106bf578092506106cb565b6001016106a0565b8192505b5050919050565b600160a060020a031660009081526004602052604090205490565b60066020526000908152604090205481565b6107076111cf565b60006107128361068b565b905061071d836106d2565b81141561073f576040805180820190915260008082526020820152915061074c565b6107498382611034565b91505b50919050565b60056020526000908152604090205481565b61076c6111ea565b6107746111ea565b60008061077f6111cf565b610788866106d2565b9250600091505b828210156107e6576107a18683611034565b8051909150846002840261020881106107b657fe5b60200201528060016020020151846001600285020161020881106107d657fe5b602002015260019091019061078f565b5091949350505050565b6000806000806000610801336106d2565b9450600092505b848310156108a95761081a3384610bbe565b915042821115610829576108a9565b61083333846110a3565b90508015156108415761089e565b60408051808201825260008082526020808301829052338252600490529190912080548590811061086e57fe5b906000526020600020906002020190600261088a92919061120b565b5061089b848263ffffffff61119f16565b93505b600190920191610808565b83156109f6576007546108c2908563ffffffff6111b816565b600755336000908152600560205260409020546108e5908563ffffffff6111b816565b33600090815260056020908152604080832093909355600690522054610911908563ffffffff61119f16565b3360008181526006602090815260408083209490945560025484517fa9059cbb0000000000000000000000000000000000000000000000000000000081526004810194909452602484018990529351600160a060020a039094169363a9059cbb93604480820194918390030190829087803b15801561098f57600080fd5b505af11580156109a3573d6000803e3d6000fd5b505050506040513d60208110156109b957600080fd5b50506040805142815260208101869052815133927ffbeff59d2bfda0d79ea8a29f8c57c66d48c7a13eabbdb90908d9115ec41c9dc6928290030190a25b5050505050565b600460205282600052604060002082815481101515610a1857fe5b906000526020600020906002020181600281101515610a3357fe5b0154925083915050565b600154600160a060020a031681565b6000610a57826106ff565b60005b602002015192915050565b600160a060020a031660009081526005602052604090205490565b60075481565b600254600160a060020a031681565b600154600160a060020a03163314610b1d576040805160e560020a62461bcd02815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527f2063616e20616363657074206f776e6572736869700000000000000000000000606482015290519081900360840190fd5b60005460015460408051600160a060020a03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a1600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b600054600160a060020a031681565b6000610bb7826106ff565b6001610a5a565b6000610bca8383611034565b60005b60200201519392505050565b600354600160a060020a031681565b6003546000908190600160a060020a0316331480610c76576040805160e560020a62461bcd02815260206004820152603260248201527f4f6e6c792074686520466565506f6f6c20636f6e7472616374732063616e207060448201527f6572666f726d207468697320616374696f6e0000000000000000000000000000606482015290519081900360840190fd5b831515610ccd576040805160e560020a62461bcd02815260206004820152601760248201527f5175616e746974792063616e6e6f74206265207a65726f000000000000000000604482015290519081900360640190fd5b600754610ce0908563ffffffff61119f16565b600755600254604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610d4957600080fd5b505af1158015610d5d573d6000803e3d6000fd5b505050506040513d6020811015610d7357600080fd5b50516007541115610e1a576040805160e560020a62461bcd02815260206004820152604760248201527f4d75737420626520656e6f7567682062616c616e636520696e2074686520636f60448201527f6e747261637420746f2070726f7669646520666f72207468652076657374696e60648201527f6720656e74727900000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600160a060020a0385166000908152600460205260409020549250610104831115610e8f576040805160e560020a62461bcd02815260206004820152601c60248201527f56657374696e67207363686564756c6520697320746f6f206c6f6e6700000000604482015290519081900360640190fd5b6301dfe20042019150821515610ebf57600160a060020a0385166000908152600560205260409020849055610f93565b81610ed5866001610ecf896106d2565b03610bbe565b10610f50576040805160e560020a62461bcd02815260206004820152603760248201527f43616e6e6f7420616464206e65772076657374656420656e747269657320656160448201527f726c696572207468616e20746865206c617374206f6e65000000000000000000606482015290519081900360840190fd5b600160a060020a038516600090815260056020526040902054610f79908563ffffffff61119f16565b600160a060020a0386166000908152600560205260409020555b600160a060020a0385166000908152600460209081526040808320815180830190925285825281830188905280546001810180835591855292909320610fe2926002908102909101919061124e565b505060408051428152602081018690528151600160a060020a038816927fedd34dc5a5ea12bd847909801d0660781b50e26c7f4cec3c7b308f1ea410635c928290030190a25050505050565b61010481565b61103c6111cf565b600160a060020a038316600090815260046020526040902080548390811061106057fe5b600091825260209091206040805180820191829052926002908102909201919082845b815481526020019060010190808311611083575050505050905092915050565b60006110af8383611034565b6001610bcd565b600054600160a060020a0316331461113e576040805160e560020a62461bcd02815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201527f6f726d207468697320616374696f6e0000000000000000000000000000000000606482015290519081900360840190fd5b60028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f46e9c68bd7831071bdd478f1ae4c4a52463961a9d620383a0a121dbfc0e0f06d9181900360200190a150565b6000828201838110156111b157600080fd5b9392505050565b600080838311156111c857600080fd5b5050900390565b60408051808201825290600290829080388339509192915050565b61410060405190810160405280610208906020820280388339509192915050565b826002810192821561123e579160200282015b8281111561123e578251829060ff1690559160200191906001019061121e565b5061124a92915061127c565b5090565b826002810192821561123e579160200282015b8281111561123e578251825591602001919060010190611261565b61129691905b8082111561124a5760008155600101611282565b905600a165627a7a7230582015458fadb7d7d41b8bdffe105531a59f8ff6e82f316fc9edb3c0b0e1ae77ab4b0029000000000000000000000000b64ff7a4a33acdf48d97dab0d764afd0f617688200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631627540c811461014d57806319db22281461017057806319e740c014610191578063204b676a146101c4578063227d517a146101e55780632f5bb66114610206578063326a3cfb14610262578063449d0eb114610283578063458efde3146102ba57806345e5441f146102cf57806353a47bb7146102f65780636b3905c41461032757806370a082311461034857806371e780f314610369578063759b52251461037e57806379ba5097146103935780638da5cb5b146103a857806397f46527146103bd5780639b217f90146103de578063ae2e933b14610402578063b5ddb9c714610417578063d0cc82e31461043b578063da7bd3e914610450578063ee1d036c14610474578063fec9f9da14610498575b600080fd5b34801561015957600080fd5b5061016e600160a060020a03600435166104b9565b005b34801561017c57600080fd5b5061016e600160a060020a03600435166105a2565b34801561019d57600080fd5b506101b2600160a060020a036004351661068b565b60408051918252519081900360200190f35b3480156101d057600080fd5b506101b2600160a060020a03600435166106d2565b3480156101f157600080fd5b506101b2600160a060020a03600435166106ed565b34801561021257600080fd5b50610227600160a060020a03600435166106ff565b6040518082600260200280838360005b8381101561024f578181015183820152602001610237565b5050505090500191505060405180910390f35b34801561026e57600080fd5b506101b2600160a060020a0360043516610752565b34801561028f57600080fd5b506102a4600160a060020a0360043516610764565b6040518151815280826141008083836020610237565b3480156102c657600080fd5b5061016e6107f0565b3480156102db57600080fd5b506101b2600160a060020a03600435166024356044356109fd565b34801561030257600080fd5b5061030b610a3d565b60408051600160a060020a039092168252519081900360200190f35b34801561033357600080fd5b506101b2600160a060020a0360043516610a4c565b34801561035457600080fd5b506101b2600160a060020a0360043516610a65565b34801561037557600080fd5b506101b2610a80565b34801561038a57600080fd5b5061030b610a86565b34801561039f57600080fd5b5061016e610a95565b3480156103b457600080fd5b5061030b610b9d565b3480156103c957600080fd5b506101b2600160a060020a0360043516610bac565b3480156103ea57600080fd5b506101b2600160a060020a0360043516602435610bbe565b34801561040e57600080fd5b5061030b610bd9565b34801561042357600080fd5b5061016e600160a060020a0360043516602435610be8565b34801561044757600080fd5b506101b261102e565b34801561045c57600080fd5b50610227600160a060020a0360043516602435611034565b34801561048057600080fd5b506101b2600160a060020a03600435166024356110a3565b3480156104a457600080fd5b5061016e600160a060020a03600435166110b6565b600054600160a060020a03163314610541576040805160e560020a62461bcd02815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201527f6f726d207468697320616374696f6e0000000000000000000000000000000000606482015290519081900360840190fd5b60018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b600054600160a060020a0316331461062a576040805160e560020a62461bcd02815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201527f6f726d207468697320616374696f6e0000000000000000000000000000000000606482015290519081900360840190fd5b60038054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f6d1d088acfe4f30d6014f6f693c61c16258f9784a6ed8439b2c59213eecb62959181900360200190a150565b6000806000610699846106d2565b9150600090505b818110156106c7576106b28482610bbe565b156106bf578092506106cb565b6001016106a0565b8192505b5050919050565b600160a060020a031660009081526004602052604090205490565b60066020526000908152604090205481565b6107076111cf565b60006107128361068b565b905061071d836106d2565b81141561073f576040805180820190915260008082526020820152915061074c565b6107498382611034565b91505b50919050565b60056020526000908152604090205481565b61076c6111ea565b6107746111ea565b60008061077f6111cf565b610788866106d2565b9250600091505b828210156107e6576107a18683611034565b8051909150846002840261020881106107b657fe5b60200201528060016020020151846001600285020161020881106107d657fe5b602002015260019091019061078f565b5091949350505050565b6000806000806000610801336106d2565b9450600092505b848310156108a95761081a3384610bbe565b915042821115610829576108a9565b61083333846110a3565b90508015156108415761089e565b60408051808201825260008082526020808301829052338252600490529190912080548590811061086e57fe5b906000526020600020906002020190600261088a92919061120b565b5061089b848263ffffffff61119f16565b93505b600190920191610808565b83156109f6576007546108c2908563ffffffff6111b816565b600755336000908152600560205260409020546108e5908563ffffffff6111b816565b33600090815260056020908152604080832093909355600690522054610911908563ffffffff61119f16565b3360008181526006602090815260408083209490945560025484517fa9059cbb0000000000000000000000000000000000000000000000000000000081526004810194909452602484018990529351600160a060020a039094169363a9059cbb93604480820194918390030190829087803b15801561098f57600080fd5b505af11580156109a3573d6000803e3d6000fd5b505050506040513d60208110156109b957600080fd5b50506040805142815260208101869052815133927ffbeff59d2bfda0d79ea8a29f8c57c66d48c7a13eabbdb90908d9115ec41c9dc6928290030190a25b5050505050565b600460205282600052604060002082815481101515610a1857fe5b906000526020600020906002020181600281101515610a3357fe5b0154925083915050565b600154600160a060020a031681565b6000610a57826106ff565b60005b602002015192915050565b600160a060020a031660009081526005602052604090205490565b60075481565b600254600160a060020a031681565b600154600160a060020a03163314610b1d576040805160e560020a62461bcd02815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527f2063616e20616363657074206f776e6572736869700000000000000000000000606482015290519081900360840190fd5b60005460015460408051600160a060020a03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a1600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b600054600160a060020a031681565b6000610bb7826106ff565b6001610a5a565b6000610bca8383611034565b60005b60200201519392505050565b600354600160a060020a031681565b6003546000908190600160a060020a0316331480610c76576040805160e560020a62461bcd02815260206004820152603260248201527f4f6e6c792074686520466565506f6f6c20636f6e7472616374732063616e207060448201527f6572666f726d207468697320616374696f6e0000000000000000000000000000606482015290519081900360840190fd5b831515610ccd576040805160e560020a62461bcd02815260206004820152601760248201527f5175616e746974792063616e6e6f74206265207a65726f000000000000000000604482015290519081900360640190fd5b600754610ce0908563ffffffff61119f16565b600755600254604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610d4957600080fd5b505af1158015610d5d573d6000803e3d6000fd5b505050506040513d6020811015610d7357600080fd5b50516007541115610e1a576040805160e560020a62461bcd02815260206004820152604760248201527f4d75737420626520656e6f7567682062616c616e636520696e2074686520636f60448201527f6e747261637420746f2070726f7669646520666f72207468652076657374696e60648201527f6720656e74727900000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600160a060020a0385166000908152600460205260409020549250610104831115610e8f576040805160e560020a62461bcd02815260206004820152601c60248201527f56657374696e67207363686564756c6520697320746f6f206c6f6e6700000000604482015290519081900360640190fd5b6301dfe20042019150821515610ebf57600160a060020a0385166000908152600560205260409020849055610f93565b81610ed5866001610ecf896106d2565b03610bbe565b10610f50576040805160e560020a62461bcd02815260206004820152603760248201527f43616e6e6f7420616464206e65772076657374656420656e747269657320656160448201527f726c696572207468616e20746865206c617374206f6e65000000000000000000606482015290519081900360840190fd5b600160a060020a038516600090815260056020526040902054610f79908563ffffffff61119f16565b600160a060020a0386166000908152600560205260409020555b600160a060020a0385166000908152600460209081526040808320815180830190925285825281830188905280546001810180835591855292909320610fe2926002908102909101919061124e565b505060408051428152602081018690528151600160a060020a038816927fedd34dc5a5ea12bd847909801d0660781b50e26c7f4cec3c7b308f1ea410635c928290030190a25050505050565b61010481565b61103c6111cf565b600160a060020a038316600090815260046020526040902080548390811061106057fe5b600091825260209091206040805180820191829052926002908102909201919082845b815481526020019060010190808311611083575050505050905092915050565b60006110af8383611034565b6001610bcd565b600054600160a060020a0316331461113e576040805160e560020a62461bcd02815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201527f6f726d207468697320616374696f6e0000000000000000000000000000000000606482015290519081900360840190fd5b60028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f46e9c68bd7831071bdd478f1ae4c4a52463961a9d620383a0a121dbfc0e0f06d9181900360200190a150565b6000828201838110156111b157600080fd5b9392505050565b600080838311156111c857600080fd5b5050900390565b60408051808201825290600290829080388339509192915050565b61410060405190810160405280610208906020820280388339509192915050565b826002810192821561123e579160200282015b8281111561123e578251829060ff1690559160200191906001019061121e565b5061124a92915061127c565b5090565b826002810192821561123e579160200282015b8281111561123e578251825591602001919060010190611261565b61129691905b8082111561124a5760008155600101611282565b905600a165627a7a7230582015458fadb7d7d41b8bdffe105531a59f8ff6e82f316fc9edb3c0b0e1ae77ab4b0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b64ff7a4a33acdf48d97dab0d764afd0f617688200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _owner (address): 0xB64fF7a4a33Acdf48d97dab0D764afD0F6176882
Arg [1] : _synthetix (address): 0x0000000000000000000000000000000000000000
Arg [2] : _feePool (address): 0x0000000000000000000000000000000000000000
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000b64ff7a4a33acdf48d97dab0d764afd0f6176882
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Swarm Source
bzzr://15458fadb7d7d41b8bdffe105531a59f8ff6e82f316fc9edb3c0b0e1ae77ab4b
Loading...
Loading
Loading...
Loading
OVERVIEW
Escrows the SNX rewards from the inflationary supply awarded to users for staking their SNX and maintaining the c-ratio target.SNX rewards are escrowed for 1 year from the claim date and users can call vest in 12 months time.
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.