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 579 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Tokens | 20217001 | 153 days ago | IN | 0 ETH | 0.0004544 | ||||
Claim Tokens | 20178592 | 158 days ago | IN | 0 ETH | 0.00076935 | ||||
Claim Tokens | 20175387 | 159 days ago | IN | 0 ETH | 0.00052822 | ||||
Claim Tokens | 19610189 | 238 days ago | IN | 0 ETH | 0.00180026 | ||||
Claim Tokens | 19590649 | 241 days ago | IN | 0 ETH | 0.00300835 | ||||
Claim Tokens | 19197764 | 296 days ago | IN | 0 ETH | 0.00630187 | ||||
Claim Tokens | 19092388 | 310 days ago | IN | 0 ETH | 0.00373264 | ||||
Claim Tokens | 18888168 | 339 days ago | IN | 0 ETH | 0.00186941 | ||||
Claim Tokens | 18446694 | 401 days ago | IN | 0 ETH | 0.00119263 | ||||
Claim Tokens | 18228293 | 432 days ago | IN | 0 ETH | 0.00111788 | ||||
Claim Tokens | 18099091 | 450 days ago | IN | 0 ETH | 0.00124661 | ||||
Claim Tokens | 18091511 | 451 days ago | IN | 0 ETH | 0.00082726 | ||||
Claim Tokens | 18062476 | 455 days ago | IN | 0 ETH | 0.00139265 | ||||
Claim Tokens | 17824684 | 488 days ago | IN | 0 ETH | 0.00125785 | ||||
Claim Tokens | 17572689 | 523 days ago | IN | 0 ETH | 0.00522066 | ||||
Claim Tokens | 17492667 | 535 days ago | IN | 0 ETH | 0.00195582 | ||||
Claim Tokens | 17460621 | 539 days ago | IN | 0 ETH | 0.002755 | ||||
Claim Tokens | 17427940 | 544 days ago | IN | 0 ETH | 0.00354962 | ||||
Claim Tokens | 17335894 | 557 days ago | IN | 0 ETH | 0.00592775 | ||||
Claim Tokens | 17317852 | 559 days ago | IN | 0 ETH | 0.00451122 | ||||
Claim Tokens | 17289891 | 563 days ago | IN | 0 ETH | 0.00280868 | ||||
Claim Tokens | 17276539 | 565 days ago | IN | 0 ETH | 0.00296464 | ||||
Claim Tokens | 17264503 | 567 days ago | IN | 0 ETH | 0.00440462 | ||||
Claim Tokens | 17248657 | 569 days ago | IN | 0 ETH | 0.00379145 | ||||
Claim Tokens | 17219396 | 573 days ago | IN | 0 ETH | 0.00581148 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
StakingRewardsEscrow
Compiler Version
v0.6.7+commit.b8d736ae
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-08-15 */ /// StakingRewardsEscrow.sol // Copyright (C) 2021 Reflexer Labs, INC // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <https://www.gnu.org/licenses/>. pragma solidity 0.6.7; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor () internal { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } abstract contract TokenLike { function balanceOf(address) virtual public view returns (uint256); function transfer(address, uint256) virtual external returns (bool); } contract StakingRewardsEscrow is ReentrancyGuard { // --- Auth --- mapping (address => uint) public authorizedAccounts; /** * @notice Add auth to an account * @param account Account to add auth to */ function addAuthorization(address account) virtual external isAuthorized { authorizedAccounts[account] = 1; emit AddAuthorization(account); } /** * @notice Remove auth from an account * @param account Account to remove auth from */ function removeAuthorization(address account) virtual external isAuthorized { authorizedAccounts[account] = 0; emit RemoveAuthorization(account); } /** * @notice Checks whether msg.sender can call an authed function **/ modifier isAuthorized { require(authorizedAccounts[msg.sender] == 1, "StakingRewardsEscrow/account-not-authorized"); _; } // --- Structs --- struct EscrowSlot { uint256 total; uint256 startDate; uint256 duration; uint256 claimedUntil; uint256 amountClaimed; } // --- Variables --- // The address allowed to request escrows address public escrowRequestor; // The time during which a chunk is escrowed uint256 public escrowDuration; // Time in a slot during which rewards to escrow can be added without creating a new escrow slot uint256 public durationToStartEscrow; // Current amount of slots to claim in one shot uint256 public slotsToClaim; // The token to escrow TokenLike public token; uint256 public constant MAX_ESCROW_DURATION = 365 days; uint256 public constant MAX_DURATION_TO_START_ESCROW = 30 days; uint256 public constant MAX_SLOTS_TO_CLAIM = 25; // Oldest slot from which to start claiming unlocked rewards mapping (address => uint256) public oldestEscrowSlot; // Next slot to fill for every user mapping (address => uint256) public currentEscrowSlot; // All escrows for all accounts mapping (address => mapping(uint256 => EscrowSlot)) public escrows; // --- Events --- event AddAuthorization(address account); event RemoveAuthorization(address account); event ModifyParameters(bytes32 indexed parameter, uint256 data); event ModifyParameters(bytes32 indexed parameter, address data); event EscrowRewards(address indexed who, uint256 amount, uint256 currentEscrowSlot); event ClaimRewards(address indexed who, uint256 amount); constructor( address escrowRequestor_, address token_, uint256 escrowDuration_, uint256 durationToStartEscrow_ ) public { require(escrowRequestor_ != address(0), "StakingRewardsEscrow/null-requestor"); require(token_ != address(0), "StakingRewardsEscrow/null-token"); require(both(escrowDuration_ > 0, escrowDuration_ <= MAX_ESCROW_DURATION), "StakingRewardsEscrow/invalid-escrow-duration"); require(both(durationToStartEscrow_ > 0, durationToStartEscrow_ < escrowDuration_), "StakingRewardsEscrow/invalid-duration-start-escrow"); require(escrowDuration_ > durationToStartEscrow_, "StakingRewardsEscrow/"); authorizedAccounts[msg.sender] = 1; escrowRequestor = escrowRequestor_; token = TokenLike(token_); escrowDuration = escrowDuration_; durationToStartEscrow = durationToStartEscrow_; slotsToClaim = MAX_SLOTS_TO_CLAIM; emit AddAuthorization(msg.sender); } // --- Boolean Logic --- function both(bool x, bool y) internal pure returns (bool z) { assembly{ z := and(x, y)} } function either(bool x, bool y) internal pure returns (bool z) { assembly{ z := or(x, y)} } // --- Math --- function addition(uint256 x, uint256 y) internal pure returns (uint256 z) { require((z = x + y) >= x, "StakingRewardsEscrow/add-overflow"); } function subtract(uint256 x, uint256 y) internal pure returns (uint256 z) { require((z = x - y) <= x, "StakingRewardsEscrow/sub-underflow"); } function multiply(uint x, uint y) internal pure returns (uint z) { require(y == 0 || (z = x * y) / y == x, "StakingRewardsEscrow/mul-overflow"); } function minimum(uint256 x, uint256 y) internal pure returns (uint256 z) { return x <= y ? x : y; } // --- Administration --- /* * @notify Modify an uint256 parameter * @param parameter The name of the parameter to modify * @param data New value for the parameter */ function modifyParameters(bytes32 parameter, uint256 data) external isAuthorized { if (parameter == "escrowDuration") { require(both(data > 0, data <= MAX_ESCROW_DURATION), "StakingRewardsEscrow/invalid-escrow-duration"); require(data > durationToStartEscrow, "StakingRewardsEscrow/smaller-than-start-escrow-duration"); escrowDuration = data; } else if (parameter == "durationToStartEscrow") { require(both(data > 1, data <= MAX_DURATION_TO_START_ESCROW), "StakingRewardsEscrow/duration-to-start-escrow"); require(data < escrowDuration, "StakingRewardsEscrow/not-lower-than-escrow-duration"); durationToStartEscrow = data; } else if (parameter == "slotsToClaim") { require(both(data >= 1, data <= MAX_SLOTS_TO_CLAIM), "StakingRewardsEscrow/invalid-slots-to-claim"); slotsToClaim = data; } else revert("StakingRewardsEscrow/modify-unrecognized-param"); emit ModifyParameters(parameter, data); } /* * @notify Modify an address parameter * @param parameter The name of the parameter to modify * @param data New value for the parameter */ function modifyParameters(bytes32 parameter, address data) external isAuthorized { require(data != address(0), "StakingRewardsEscrow/null-data"); if (parameter == "escrowRequestor") { escrowRequestor = data; } else revert("StakingRewardsEscrow/modify-unrecognized-param"); emit ModifyParameters(parameter, data); } // --- Core Logic --- /* * @notice Put more rewards under escrow for a specific address * @param who The address that will get escrowed tokens * @param amount Amount of tokens to escrow */ function escrowRewards(address who, uint256 amount) external nonReentrant { require(escrowRequestor == msg.sender, "StakingRewardsEscrow/not-requestor"); require(who != address(0), "StakingRewardsEscrow/null-who"); require(amount > 0, "StakingRewardsEscrow/null-amount"); if ( either(currentEscrowSlot[who] == 0, now > addition(escrows[who][currentEscrowSlot[who] - 1].startDate, durationToStartEscrow)) ) { escrows[who][currentEscrowSlot[who]] = EscrowSlot(amount, now, escrowDuration, now, 0); currentEscrowSlot[who] = addition(currentEscrowSlot[who], 1); } else { escrows[who][currentEscrowSlot[who] - 1].total = addition(escrows[who][currentEscrowSlot[who] - 1].total, amount); } emit EscrowRewards(who, amount, currentEscrowSlot[who] - 1); } /** * @notice Return the total amount of tokens that are being escrowed for a specific account * @param who The address for which we calculate the amount of tokens that are still waiting to be unlocked */ function getTokensBeingEscrowed(address who) public view returns (uint256) { if (oldestEscrowSlot[who] >= currentEscrowSlot[who]) return 0; EscrowSlot memory escrowReward; uint256 totalEscrowed; uint256 endDate; for (uint i = oldestEscrowSlot[who]; i <= currentEscrowSlot[who]; i++) { escrowReward = escrows[who][i]; endDate = addition(escrowReward.startDate, escrowReward.duration); if (escrowReward.amountClaimed >= escrowReward.total) { continue; } if (both(escrowReward.claimedUntil < endDate, now >= endDate)) { continue; } totalEscrowed = addition(totalEscrowed, subtract(escrowReward.total, escrowReward.amountClaimed)); } return totalEscrowed; } /* * @notice Return the total amount of tokens that can be claimed right now for an address * @param who The address to claim on behalf of */ function getClaimableTokens(address who) public view returns (uint256) { if (currentEscrowSlot[who] == 0) return 0; if (oldestEscrowSlot[who] >= currentEscrowSlot[who]) return 0; uint256 lastSlotToClaim = (subtract(currentEscrowSlot[who], oldestEscrowSlot[who]) > slotsToClaim) ? addition(oldestEscrowSlot[who], subtract(slotsToClaim, 1)) : subtract(currentEscrowSlot[who], 1); EscrowSlot memory escrowReward; uint256 totalToTransfer; uint256 endDate; uint256 reward; for (uint i = oldestEscrowSlot[who]; i <= lastSlotToClaim; i++) { escrowReward = escrows[who][i]; endDate = addition(escrowReward.startDate, escrowReward.duration); if (escrowReward.amountClaimed >= escrowReward.total) { continue; } if (both(escrowReward.claimedUntil < endDate, now >= endDate)) { totalToTransfer = addition(totalToTransfer, subtract(escrowReward.total, escrowReward.amountClaimed)); continue; } if (escrowReward.claimedUntil == now) continue; reward = subtract(escrowReward.total, escrowReward.amountClaimed) / subtract(endDate, escrowReward.claimedUntil); reward = multiply(reward, subtract(now, escrowReward.claimedUntil)); if (addition(escrowReward.amountClaimed, reward) > escrowReward.total) { reward = subtract(escrowReward.total, escrowReward.amountClaimed); } totalToTransfer = addition(totalToTransfer, reward); } return totalToTransfer; } /* * @notice Claim vested tokens * @param who The address to claim on behalf of */ function claimTokens(address who) public nonReentrant { require(currentEscrowSlot[who] > 0, "StakingRewardsEscrow/invalid-address"); require(oldestEscrowSlot[who] < currentEscrowSlot[who], "StakingRewardsEscrow/no-slot-to-claim"); uint256 lastSlotToClaim = (subtract(currentEscrowSlot[who], oldestEscrowSlot[who]) > slotsToClaim) ? addition(oldestEscrowSlot[who], subtract(slotsToClaim, 1)) : subtract(currentEscrowSlot[who], 1); EscrowSlot storage escrowReward; uint256 totalToTransfer; uint256 endDate; uint256 reward; for (uint i = oldestEscrowSlot[who]; i <= lastSlotToClaim; i++) { escrowReward = escrows[who][i]; endDate = addition(escrowReward.startDate, escrowReward.duration); if (escrowReward.amountClaimed >= escrowReward.total) { oldestEscrowSlot[who] = addition(oldestEscrowSlot[who], 1); continue; } if (both(escrowReward.claimedUntil < endDate, now >= endDate)) { totalToTransfer = addition(totalToTransfer, subtract(escrowReward.total, escrowReward.amountClaimed)); escrowReward.amountClaimed = escrowReward.total; escrowReward.claimedUntil = now; oldestEscrowSlot[who] = addition(oldestEscrowSlot[who], 1); continue; } if (escrowReward.claimedUntil == now) continue; reward = subtract(escrowReward.total, escrowReward.amountClaimed) / subtract(endDate, escrowReward.claimedUntil); reward = multiply(reward, subtract(now, escrowReward.claimedUntil)); if (addition(escrowReward.amountClaimed, reward) > escrowReward.total) { reward = subtract(escrowReward.total, escrowReward.amountClaimed); } totalToTransfer = addition(totalToTransfer, reward); escrowReward.amountClaimed = addition(escrowReward.amountClaimed, reward); escrowReward.claimedUntil = now; } if (totalToTransfer > 0) { require(token.transfer(who, totalToTransfer), "StakingRewardsEscrow/cannot-transfer-rewards"); } emit ClaimRewards(who, totalToTransfer); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"escrowRequestor_","type":"address"},{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"escrowDuration_","type":"uint256"},{"internalType":"uint256","name":"durationToStartEscrow_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"AddAuthorization","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"who","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"who","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"currentEscrowSlot","type":"uint256"}],"name":"EscrowRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"parameter","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"data","type":"uint256"}],"name":"ModifyParameters","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"parameter","type":"bytes32"},{"indexed":false,"internalType":"address","name":"data","type":"address"}],"name":"ModifyParameters","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"RemoveAuthorization","type":"event"},{"inputs":[],"name":"MAX_DURATION_TO_START_ESCROW","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_ESCROW_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SLOTS_TO_CLAIM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorizedAccounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"currentEscrowSlot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"durationToStartEscrow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"escrowDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"escrowRequestor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"escrowRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"escrows","outputs":[{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"startDate","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"claimedUntil","type":"uint256"},{"internalType":"uint256","name":"amountClaimed","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"getClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"getTokensBeingEscrowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"parameter","type":"bytes32"},{"internalType":"address","name":"data","type":"address"}],"name":"modifyParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"parameter","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"modifyParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"oldestEscrowSlot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"slotsToClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract TokenLike","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162001b4938038062001b49833981810160405260808110156200003757600080fd5b508051602082015160408301516060909301516001600055919290916001600160a01b0384166200009a5760405162461bcd60e51b815260040180806020018281038252602381526020018062001b266023913960400191505060405180910390fd5b6001600160a01b038316620000f6576040805162461bcd60e51b815260206004820152601f60248201527f5374616b696e6752657761726473457363726f772f6e756c6c2d746f6b656e00604482015290519081900360640190fd5b620001148215156301e133808411156001600160e01b036200028d16565b620001515760405162461bcd60e51b815260040180806020018281038252602c81526020018062001ac8602c913960400191505060405180910390fd5b6200016a8115158383106001600160e01b036200028d16565b620001a75760405162461bcd60e51b815260040180806020018281038252603281526020018062001af46032913960400191505060405180910390fd5b808211620001fc576040805162461bcd60e51b815260206004820152601560248201527f5374616b696e6752657761726473457363726f772f0000000000000000000000604482015290519081900360640190fd5b3360008181526001602081815260409283902091909155600280546001600160a01b038981166001600160a01b0319928316179092556006805492891692909116919091179055600385905560048490556019600555815192835290517f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f70001029281900390910190a15050505062000291565b1690565b61182780620002a16000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806376b655ba116100ad578063b4a6dc5511610071578063b4a6dc5514610324578063c310b19b1461034a578063df8de3e714610352578063fc0c546a14610378578063fe4f5890146103805761012c565b806376b655ba1461028657806380e1e5441461028e57806394f3f81d146102b257806397684988146102d85780639eed8896146102fe5761012c565b806335b28153116100f457806335b281531461021c57806341ab72fc1461024257806357c2c2ba1461024a578063628e2382146102525780636614f0101461025a5761012c565b806304a54aa7146101315780630794305e146101885780631b831ead146101a257806324ba5884146101c85780632877f04c146101ee575b600080fd5b61015d6004803603604081101561014757600080fd5b506001600160a01b0381351690602001356103a3565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6101906103dd565b60408051918252519081900360200190f35b610190600480360360208110156101b857600080fd5b50356001600160a01b03166103e5565b610190600480360360208110156101de57600080fd5b50356001600160a01b0316610654565b61021a6004803603604081101561020457600080fd5b506001600160a01b038135169060200135610666565b005b61021a6004803603602081101561023257600080fd5b50356001600160a01b031661098d565b610190610a30565b610190610a36565b610190610a3c565b61021a6004803603604081101561027057600080fd5b50803590602001356001600160a01b0316610a42565b610190610ba0565b610296610ba5565b604080516001600160a01b039092168252519081900360200190f35b61021a600480360360208110156102c857600080fd5b50356001600160a01b0316610bb4565b610190600480360360208110156102ee57600080fd5b50356001600160a01b0316610c56565b6101906004803603602081101561031457600080fd5b50356001600160a01b0316610c68565b6101906004803603602081101561033a57600080fd5b50356001600160a01b0316610da0565b610190610db2565b61021a6004803603602081101561036857600080fd5b50356001600160a01b0316610db9565b61029661122c565b61021a6004803603604081101561039657600080fd5b508035906020013561123b565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b6301e1338081565b6001600160a01b03811660009081526008602052604081205461040a5750600061064f565b6001600160a01b0382166000908152600860209081526040808320546007909252909120541061043c5750600061064f565b6005546001600160a01b03831660009081526008602090815260408083205460079092528220549192916104709190611498565b1161049e576001600160a01b038316600090815260086020526040902054610499906001611498565b6104cf565b6001600160a01b0383166000908152600760205260409020546005546104cf91906104ca906001611498565b6114e0565b90506104d9611580565b6001600160a01b038416600090815260076020526040812054819081905b858111610646576001600160a01b0388166000908152600960209081526040808320848452825291829020825160a08101845281548152600182015492810183905260028201549381018490526003820154606082015260049091015460808201529650610564916114e0565b9250846000015185608001511061057a5761063e565b61058d8386606001511084421015611522565b156105af576105a8846104ca87600001518860800151611498565b935061063e565b42856060015114156105c05761063e565b6105ce838660600151611498565b6105e086600001518760800151611498565b816105e757fe5b049150610601826105fc428860600151611498565b611526565b915084600001516106168660800151846114e0565b11156106315761062e85600001518660800151611498565b91505b61063b84836114e0565b93505b6001016104f7565b50919450505050505b919050565b60016020526000908152604090205481565b600260005414156106be576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000819055546001600160a01b0316331461070c5760405162461bcd60e51b815260040180806020018281038252602281526020018061172b6022913960400191505060405180910390fd5b6001600160a01b038216610767576040805162461bcd60e51b815260206004820152601d60248201527f5374616b696e6752657761726473457363726f772f6e756c6c2d77686f000000604482015290519081900360640190fd5b600081116107bc576040805162461bcd60e51b815260206004820181905260248201527f5374616b696e6752657761726473457363726f772f6e756c6c2d616d6f756e74604482015290519081900360640190fd5b6001600160a01b038216600090815260086020908152604080832054600983528184206000198201855290925290912060010154600454610809921591610802916114e0565b421161157c565b156108bf576040805160a08101825282815242602080830182815260038054858701908152606086019485526000608087018181526001600160a01b038b168083526009875289832060088089528b8520805486529189529a842099518a5595516001808b0191909155935160028a01559651938801939093559151600490960195909555929092529290925290546108a1916114e0565b6001600160a01b038316600090815260086020526040902055610928565b6001600160a01b038216600090815260096020908152604080832060088352818420546000190184529091529020546108f890826114e0565b6001600160a01b038316600090815260096020908152604080832060088352818420546000190184529091529020555b6001600160a01b0382166000818152600860209081526040918290205482518581526000199091019181019190915281517f7b3eac1327ee14abf53fb3cdb1695e373bfa5501eff88bfe977a27109acacc3d929181900390910190a250506001600055565b33600090815260016020819052604090912054146109dc5760405162461bcd60e51b815260040180806020018281038252602b8152602001806117c7602b913960400191505060405180910390fd5b6001600160a01b03811660008181526001602081815260409283902091909155815192835290517f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f70001029281900390910190a150565b60055481565b60035481565b60045481565b3360009081526001602081905260409091205414610a915760405162461bcd60e51b815260040180806020018281038252602b8152602001806117c7602b913960400191505060405180910390fd5b6001600160a01b038116610aec576040805162461bcd60e51b815260206004820152601e60248201527f5374616b696e6752657761726473457363726f772f6e756c6c2d646174610000604482015290519081900360640190fd5b816e32b9b1b937bba932b8bab2b9ba37b960891b1415610b2657600280546001600160a01b0319166001600160a01b038316179055610b5d565b60405162461bcd60e51b815260040180806020018281038252602e815260200180611600602e913960400191505060405180910390fd5b604080516001600160a01b0383168152905183917fd91f38cf03346b5dc15fb60f9076f866295231ad3c3841a1051f8443f25170d1919081900360200190a25050565b601981565b6002546001600160a01b031681565b3360009081526001602081905260409091205414610c035760405162461bcd60e51b815260040180806020018281038252602b8152602001806117c7602b913960400191505060405180910390fd5b6001600160a01b038116600081815260016020908152604080832092909255815192835290517f8834a87e641e9716be4f34527af5d23e11624f1ddeefede6ad75a9acfc31b9039281900390910190a150565b60086020526000908152604090205481565b6001600160a01b038116600090815260086020908152604080832054600790925282205410610c995750600061064f565b610ca1611580565b6001600160a01b03831660009081526007602052604081205481905b6001600160a01b0386166000908152600860205260409020548111610d96576001600160a01b0386166000908152600960209081526040808320848452825291829020825160a08101845281548152600182015492810183905260028201549381018490526003820154606082015260049091015460808201529550610d42916114e0565b91508360000151846080015110610d5857610d8e565b610d6b8285606001511083421015611522565b15610d7557610d8e565b610d8b836104ca86600001518760800151611498565b92505b600101610cbd565b5090949350505050565b60076020526000908152604090205481565b62278d0081565b60026000541415610e11576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260009081556001600160a01b038216815260086020526040902054610e695760405162461bcd60e51b81526004018080602001828103825260248152602001806116b26024913960400191505060405180910390fd5b6001600160a01b03811660009081526008602090815260408083205460079092529091205410610eca5760405162461bcd60e51b81526004018080602001828103825260258152602001806115db6025913960400191505060405180910390fd5b6005546001600160a01b0382166000908152600860209081526040808320546007909252822054919291610efe9190611498565b11610f2c576001600160a01b038216600090815260086020526040902054610f27906001611498565b610f58565b6001600160a01b038216600090815260076020526040902054600554610f5891906104ca906001611498565b6001600160a01b038316600090815260076020526040812054919250908190819081905b85811161111c576001600160a01b0387166000908152600960209081526040808320848452909152902060018101546002820154919650610fbc916114e0565b9250846000015485600401541061100f576001600160a01b038716600090815260076020526040902054610ff19060016114e0565b6001600160a01b038816600090815260076020526040902055611114565b6110228386600301541084421015611522565b156110715761103d846104ca87600001548860040154611498565b855460048701554260038701556001600160a01b038816600090815260076020526040902054909450610ff19060016114e0565b428560030154141561108257611114565b611090838660030154611498565b6110a286600001548760040154611498565b816110a957fe5b0491506110be826105fc428860030154611498565b915084600001546110d38660040154846114e0565b11156110ee576110eb85600001548660040154611498565b91505b6110f884836114e0565b93506111088560040154836114e0565b60048601554260038601555b600101610f7c565b5082156111e0576006546040805163a9059cbb60e01b81526001600160a01b038981166004830152602482018790529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561117957600080fd5b505af115801561118d573d6000803e3d6000fd5b505050506040513d60208110156111a357600080fd5b50516111e05760405162461bcd60e51b815260040180806020018281038252602c81526020018061179b602c913960400191505060405180910390fd5b6040805184815290516001600160a01b038816917f1f89f96333d3133000ee447473151fa9606543368f02271c9d95ae14f13bcc67919081900360200190a25050600160005550505050565b6006546001600160a01b031681565b336000908152600160208190526040909120541461128a5760405162461bcd60e51b815260040180806020018281038252602b8152602001806117c7602b913960400191505060405180910390fd5b816d32b9b1b937bba23ab930ba34b7b760911b141561133c576112b7600082116301e13380831115611522565b6112f25760405162461bcd60e51b815260040180806020018281038252602c815260200180611686602c913960400191505060405180910390fd5b60045481116113325760405162461bcd60e51b815260040180806020018281038252603781526020018061164f6037913960400191505060405180910390fd5b600381905561145e565b81746475726174696f6e546f5374617274457363726f7760581b14156113f45761136f6001821162278d00831115611522565b6113aa5760405162461bcd60e51b815260040180806020018281038252602d81526020018061176e602d913960400191505060405180910390fd5b60035481106113ea5760405162461bcd60e51b81526004018080602001828103825260338152602001806116f86033913960400191505060405180910390fd5b600481905561145e565b816b736c6f7473546f436c61696d60a01b1415610b265761141d60018210156019831115611522565b6114585760405162461bcd60e51b815260040180806020018281038252602b8152602001806115b0602b913960400191505060405180910390fd5b60058190555b60408051828152905183917fac7c5c1afaef770ec56ac6268cd3f2fbb1035858ead2601d6553157c33036c3a919081900360200190a25050565b808203828111156114da5760405162461bcd60e51b81526004018080602001828103825260228152602001806116d66022913960400191505060405180910390fd5b92915050565b808201828110156114da5760405162461bcd60e51b815260040180806020018281038252602181526020018061174d6021913960400191505060405180910390fd5b1690565b60008115806115415750508082028282828161153e57fe5b04145b6114da5760405162461bcd60e51b815260040180806020018281038252602181526020018061162e6021913960400191505060405180910390fd5b1790565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fe5374616b696e6752657761726473457363726f772f696e76616c69642d736c6f74732d746f2d636c61696d5374616b696e6752657761726473457363726f772f6e6f2d736c6f742d746f2d636c61696d5374616b696e6752657761726473457363726f772f6d6f646966792d756e7265636f676e697a65642d706172616d5374616b696e6752657761726473457363726f772f6d756c2d6f766572666c6f775374616b696e6752657761726473457363726f772f736d616c6c65722d7468616e2d73746172742d657363726f772d6475726174696f6e5374616b696e6752657761726473457363726f772f696e76616c69642d657363726f772d6475726174696f6e5374616b696e6752657761726473457363726f772f696e76616c69642d616464726573735374616b696e6752657761726473457363726f772f7375622d756e646572666c6f775374616b696e6752657761726473457363726f772f6e6f742d6c6f7765722d7468616e2d657363726f772d6475726174696f6e5374616b696e6752657761726473457363726f772f6e6f742d726571756573746f725374616b696e6752657761726473457363726f772f6164642d6f766572666c6f775374616b696e6752657761726473457363726f772f6475726174696f6e2d746f2d73746172742d657363726f775374616b696e6752657761726473457363726f772f63616e6e6f742d7472616e736665722d726577617264735374616b696e6752657761726473457363726f772f6163636f756e742d6e6f742d617574686f72697a6564a26469706673582212204bc7c338a69b84c48351cb2207f960ee034b8cf7230bee53d0e511031ec5f77964736f6c634300060700335374616b696e6752657761726473457363726f772f696e76616c69642d657363726f772d6475726174696f6e5374616b696e6752657761726473457363726f772f696e76616c69642d6475726174696f6e2d73746172742d657363726f775374616b696e6752657761726473457363726f772f6e756c6c2d726571756573746f72000000000000000000000000fa5e4955a11902f849ecaddef355db69c2036de60000000000000000000000006243d8cea23066d098a15582d81a598b4e8391f40000000000000000000000000000000000000000000000000000000000f0c8a00000000000000000000000000000000000000000000000000000000000127500
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061012c5760003560e01c806376b655ba116100ad578063b4a6dc5511610071578063b4a6dc5514610324578063c310b19b1461034a578063df8de3e714610352578063fc0c546a14610378578063fe4f5890146103805761012c565b806376b655ba1461028657806380e1e5441461028e57806394f3f81d146102b257806397684988146102d85780639eed8896146102fe5761012c565b806335b28153116100f457806335b281531461021c57806341ab72fc1461024257806357c2c2ba1461024a578063628e2382146102525780636614f0101461025a5761012c565b806304a54aa7146101315780630794305e146101885780631b831ead146101a257806324ba5884146101c85780632877f04c146101ee575b600080fd5b61015d6004803603604081101561014757600080fd5b506001600160a01b0381351690602001356103a3565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6101906103dd565b60408051918252519081900360200190f35b610190600480360360208110156101b857600080fd5b50356001600160a01b03166103e5565b610190600480360360208110156101de57600080fd5b50356001600160a01b0316610654565b61021a6004803603604081101561020457600080fd5b506001600160a01b038135169060200135610666565b005b61021a6004803603602081101561023257600080fd5b50356001600160a01b031661098d565b610190610a30565b610190610a36565b610190610a3c565b61021a6004803603604081101561027057600080fd5b50803590602001356001600160a01b0316610a42565b610190610ba0565b610296610ba5565b604080516001600160a01b039092168252519081900360200190f35b61021a600480360360208110156102c857600080fd5b50356001600160a01b0316610bb4565b610190600480360360208110156102ee57600080fd5b50356001600160a01b0316610c56565b6101906004803603602081101561031457600080fd5b50356001600160a01b0316610c68565b6101906004803603602081101561033a57600080fd5b50356001600160a01b0316610da0565b610190610db2565b61021a6004803603602081101561036857600080fd5b50356001600160a01b0316610db9565b61029661122c565b61021a6004803603604081101561039657600080fd5b508035906020013561123b565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b6301e1338081565b6001600160a01b03811660009081526008602052604081205461040a5750600061064f565b6001600160a01b0382166000908152600860209081526040808320546007909252909120541061043c5750600061064f565b6005546001600160a01b03831660009081526008602090815260408083205460079092528220549192916104709190611498565b1161049e576001600160a01b038316600090815260086020526040902054610499906001611498565b6104cf565b6001600160a01b0383166000908152600760205260409020546005546104cf91906104ca906001611498565b6114e0565b90506104d9611580565b6001600160a01b038416600090815260076020526040812054819081905b858111610646576001600160a01b0388166000908152600960209081526040808320848452825291829020825160a08101845281548152600182015492810183905260028201549381018490526003820154606082015260049091015460808201529650610564916114e0565b9250846000015185608001511061057a5761063e565b61058d8386606001511084421015611522565b156105af576105a8846104ca87600001518860800151611498565b935061063e565b42856060015114156105c05761063e565b6105ce838660600151611498565b6105e086600001518760800151611498565b816105e757fe5b049150610601826105fc428860600151611498565b611526565b915084600001516106168660800151846114e0565b11156106315761062e85600001518660800151611498565b91505b61063b84836114e0565b93505b6001016104f7565b50919450505050505b919050565b60016020526000908152604090205481565b600260005414156106be576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000819055546001600160a01b0316331461070c5760405162461bcd60e51b815260040180806020018281038252602281526020018061172b6022913960400191505060405180910390fd5b6001600160a01b038216610767576040805162461bcd60e51b815260206004820152601d60248201527f5374616b696e6752657761726473457363726f772f6e756c6c2d77686f000000604482015290519081900360640190fd5b600081116107bc576040805162461bcd60e51b815260206004820181905260248201527f5374616b696e6752657761726473457363726f772f6e756c6c2d616d6f756e74604482015290519081900360640190fd5b6001600160a01b038216600090815260086020908152604080832054600983528184206000198201855290925290912060010154600454610809921591610802916114e0565b421161157c565b156108bf576040805160a08101825282815242602080830182815260038054858701908152606086019485526000608087018181526001600160a01b038b168083526009875289832060088089528b8520805486529189529a842099518a5595516001808b0191909155935160028a01559651938801939093559151600490960195909555929092529290925290546108a1916114e0565b6001600160a01b038316600090815260086020526040902055610928565b6001600160a01b038216600090815260096020908152604080832060088352818420546000190184529091529020546108f890826114e0565b6001600160a01b038316600090815260096020908152604080832060088352818420546000190184529091529020555b6001600160a01b0382166000818152600860209081526040918290205482518581526000199091019181019190915281517f7b3eac1327ee14abf53fb3cdb1695e373bfa5501eff88bfe977a27109acacc3d929181900390910190a250506001600055565b33600090815260016020819052604090912054146109dc5760405162461bcd60e51b815260040180806020018281038252602b8152602001806117c7602b913960400191505060405180910390fd5b6001600160a01b03811660008181526001602081815260409283902091909155815192835290517f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f70001029281900390910190a150565b60055481565b60035481565b60045481565b3360009081526001602081905260409091205414610a915760405162461bcd60e51b815260040180806020018281038252602b8152602001806117c7602b913960400191505060405180910390fd5b6001600160a01b038116610aec576040805162461bcd60e51b815260206004820152601e60248201527f5374616b696e6752657761726473457363726f772f6e756c6c2d646174610000604482015290519081900360640190fd5b816e32b9b1b937bba932b8bab2b9ba37b960891b1415610b2657600280546001600160a01b0319166001600160a01b038316179055610b5d565b60405162461bcd60e51b815260040180806020018281038252602e815260200180611600602e913960400191505060405180910390fd5b604080516001600160a01b0383168152905183917fd91f38cf03346b5dc15fb60f9076f866295231ad3c3841a1051f8443f25170d1919081900360200190a25050565b601981565b6002546001600160a01b031681565b3360009081526001602081905260409091205414610c035760405162461bcd60e51b815260040180806020018281038252602b8152602001806117c7602b913960400191505060405180910390fd5b6001600160a01b038116600081815260016020908152604080832092909255815192835290517f8834a87e641e9716be4f34527af5d23e11624f1ddeefede6ad75a9acfc31b9039281900390910190a150565b60086020526000908152604090205481565b6001600160a01b038116600090815260086020908152604080832054600790925282205410610c995750600061064f565b610ca1611580565b6001600160a01b03831660009081526007602052604081205481905b6001600160a01b0386166000908152600860205260409020548111610d96576001600160a01b0386166000908152600960209081526040808320848452825291829020825160a08101845281548152600182015492810183905260028201549381018490526003820154606082015260049091015460808201529550610d42916114e0565b91508360000151846080015110610d5857610d8e565b610d6b8285606001511083421015611522565b15610d7557610d8e565b610d8b836104ca86600001518760800151611498565b92505b600101610cbd565b5090949350505050565b60076020526000908152604090205481565b62278d0081565b60026000541415610e11576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260009081556001600160a01b038216815260086020526040902054610e695760405162461bcd60e51b81526004018080602001828103825260248152602001806116b26024913960400191505060405180910390fd5b6001600160a01b03811660009081526008602090815260408083205460079092529091205410610eca5760405162461bcd60e51b81526004018080602001828103825260258152602001806115db6025913960400191505060405180910390fd5b6005546001600160a01b0382166000908152600860209081526040808320546007909252822054919291610efe9190611498565b11610f2c576001600160a01b038216600090815260086020526040902054610f27906001611498565b610f58565b6001600160a01b038216600090815260076020526040902054600554610f5891906104ca906001611498565b6001600160a01b038316600090815260076020526040812054919250908190819081905b85811161111c576001600160a01b0387166000908152600960209081526040808320848452909152902060018101546002820154919650610fbc916114e0565b9250846000015485600401541061100f576001600160a01b038716600090815260076020526040902054610ff19060016114e0565b6001600160a01b038816600090815260076020526040902055611114565b6110228386600301541084421015611522565b156110715761103d846104ca87600001548860040154611498565b855460048701554260038701556001600160a01b038816600090815260076020526040902054909450610ff19060016114e0565b428560030154141561108257611114565b611090838660030154611498565b6110a286600001548760040154611498565b816110a957fe5b0491506110be826105fc428860030154611498565b915084600001546110d38660040154846114e0565b11156110ee576110eb85600001548660040154611498565b91505b6110f884836114e0565b93506111088560040154836114e0565b60048601554260038601555b600101610f7c565b5082156111e0576006546040805163a9059cbb60e01b81526001600160a01b038981166004830152602482018790529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561117957600080fd5b505af115801561118d573d6000803e3d6000fd5b505050506040513d60208110156111a357600080fd5b50516111e05760405162461bcd60e51b815260040180806020018281038252602c81526020018061179b602c913960400191505060405180910390fd5b6040805184815290516001600160a01b038816917f1f89f96333d3133000ee447473151fa9606543368f02271c9d95ae14f13bcc67919081900360200190a25050600160005550505050565b6006546001600160a01b031681565b336000908152600160208190526040909120541461128a5760405162461bcd60e51b815260040180806020018281038252602b8152602001806117c7602b913960400191505060405180910390fd5b816d32b9b1b937bba23ab930ba34b7b760911b141561133c576112b7600082116301e13380831115611522565b6112f25760405162461bcd60e51b815260040180806020018281038252602c815260200180611686602c913960400191505060405180910390fd5b60045481116113325760405162461bcd60e51b815260040180806020018281038252603781526020018061164f6037913960400191505060405180910390fd5b600381905561145e565b81746475726174696f6e546f5374617274457363726f7760581b14156113f45761136f6001821162278d00831115611522565b6113aa5760405162461bcd60e51b815260040180806020018281038252602d81526020018061176e602d913960400191505060405180910390fd5b60035481106113ea5760405162461bcd60e51b81526004018080602001828103825260338152602001806116f86033913960400191505060405180910390fd5b600481905561145e565b816b736c6f7473546f436c61696d60a01b1415610b265761141d60018210156019831115611522565b6114585760405162461bcd60e51b815260040180806020018281038252602b8152602001806115b0602b913960400191505060405180910390fd5b60058190555b60408051828152905183917fac7c5c1afaef770ec56ac6268cd3f2fbb1035858ead2601d6553157c33036c3a919081900360200190a25050565b808203828111156114da5760405162461bcd60e51b81526004018080602001828103825260228152602001806116d66022913960400191505060405180910390fd5b92915050565b808201828110156114da5760405162461bcd60e51b815260040180806020018281038252602181526020018061174d6021913960400191505060405180910390fd5b1690565b60008115806115415750508082028282828161153e57fe5b04145b6114da5760405162461bcd60e51b815260040180806020018281038252602181526020018061162e6021913960400191505060405180910390fd5b1790565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fe5374616b696e6752657761726473457363726f772f696e76616c69642d736c6f74732d746f2d636c61696d5374616b696e6752657761726473457363726f772f6e6f2d736c6f742d746f2d636c61696d5374616b696e6752657761726473457363726f772f6d6f646966792d756e7265636f676e697a65642d706172616d5374616b696e6752657761726473457363726f772f6d756c2d6f766572666c6f775374616b696e6752657761726473457363726f772f736d616c6c65722d7468616e2d73746172742d657363726f772d6475726174696f6e5374616b696e6752657761726473457363726f772f696e76616c69642d657363726f772d6475726174696f6e5374616b696e6752657761726473457363726f772f696e76616c69642d616464726573735374616b696e6752657761726473457363726f772f7375622d756e646572666c6f775374616b696e6752657761726473457363726f772f6e6f742d6c6f7765722d7468616e2d657363726f772d6475726174696f6e5374616b696e6752657761726473457363726f772f6e6f742d726571756573746f725374616b696e6752657761726473457363726f772f6164642d6f766572666c6f775374616b696e6752657761726473457363726f772f6475726174696f6e2d746f2d73746172742d657363726f775374616b696e6752657761726473457363726f772f63616e6e6f742d7472616e736665722d726577617264735374616b696e6752657761726473457363726f772f6163636f756e742d6e6f742d617574686f72697a6564a26469706673582212204bc7c338a69b84c48351cb2207f960ee034b8cf7230bee53d0e511031ec5f77964736f6c63430006070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000fa5e4955a11902f849ecaddef355db69c2036de60000000000000000000000006243d8cea23066d098a15582d81a598b4e8391f40000000000000000000000000000000000000000000000000000000000f0c8a00000000000000000000000000000000000000000000000000000000000127500
-----Decoded View---------------
Arg [0] : escrowRequestor_ (address): 0xfA5e4955a11902f849ECaddEf355Db69C2036de6
Arg [1] : token_ (address): 0x6243d8CEA23066d098a15582d81a598b4e8391F4
Arg [2] : escrowDuration_ (uint256): 15780000
Arg [3] : durationToStartEscrow_ (uint256): 1209600
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000fa5e4955a11902f849ecaddef355db69c2036de6
Arg [1] : 0000000000000000000000006243d8cea23066d098a15582d81a598b4e8391f4
Arg [2] : 0000000000000000000000000000000000000000000000000000000000f0c8a0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000127500
Deployed Bytecode Sourcemap
3574:12861:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3574:12861:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;5725:66:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;5725:66:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5205:65;;;:::i;:::-;;;;;;;;;;;;;;;;12309:1681;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12309:1681:0;-1:-1:-1;;;;;12309:1681:0;;:::i;3651:51::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3651:51:0;-1:-1:-1;;;;;3651:51:0;;:::i;10167:882::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;10167:882:0;;;;;;;;:::i;:::-;;3812:164;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3812:164:0;-1:-1:-1;;;;;3812:164:0;;:::i;5110:29::-;;;:::i;4872:31::-;;;:::i;5012:38::-;;;:::i;9561:379::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9561:379:0;;;;;;-1:-1:-1;;;;;9561:379:0;;:::i;5348:59::-;;;:::i;4783:32::-;;;:::i;:::-;;;;-1:-1:-1;;;;;4783:32:0;;;;;;;;;;;;;;4095:170;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4095:170:0;-1:-1:-1;;;;;4095:170:0;;:::i;5605:76::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5605:76:0;-1:-1:-1;;;;;5605:76:0;;:::i;11280:861::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;11280:861:0;-1:-1:-1;;;;;11280:861:0;;:::i;5482:75::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5482:75:0;-1:-1:-1;;;;;5482:75:0;;:::i;5277:64::-;;;:::i;14099:2333::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14099:2333:0;-1:-1:-1;;;;;14099:2333:0;;:::i;5174:22::-;;;:::i;8331:1058::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8331:1058:0;;;;;;;:::i;5725:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5205:65::-;5262:8;5205:65;:::o;12309:1681::-;-1:-1:-1;;;;;12395:22:0;;12371:7;12395:22;;;:17;:22;;;;;;12391:41;;-1:-1:-1;12431:1:0;12424:8;;12391:41;-1:-1:-1;;;;;12472:22:0;;;;;;:17;:22;;;;;;;;;12447:16;:21;;;;;;;:47;12443:61;;-1:-1:-1;12503:1:0;12496:8;;12443:61;12602:12;;-1:-1:-1;;;;;12553:22:0;;12517:23;12553:22;;;:17;:22;;;;;;;;;12577:16;:21;;;;;;12517:23;;12602:12;12544:55;;12553:22;12544:8;:55::i;:::-;:70;12543:182;;-1:-1:-1;;;;;12699:22:0;;;;;;:17;:22;;;;;;12690:35;;12723:1;12690:8;:35::i;:::-;12543:182;;;-1:-1:-1;;;;;12638:21:0;;;;;;:16;:21;;;;;;12670:12;;12629:58;;12638:21;12661:25;;12684:1;12661:8;:25::i;:::-;12629:8;:58::i;:::-;12517:208;;12738:30;;:::i;:::-;-1:-1:-1;;;;;12882:21:0;;12781:23;12882:21;;;:16;:21;;;;;;12781:23;;;;12868:1080;12910:15;12905:1;:20;12868:1080;;-1:-1:-1;;;;;12962:12:0;;;;;;:7;:12;;;;;;;;:15;;;;;;;;;12947:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13007:55:0;;:8;:55::i;:::-;12992:70;;13113:12;:18;;;13083:12;:26;;;:48;13079:95;;13150:8;;13079:95;13194:57;13227:7;13199:12;:25;;;:35;13243:7;13236:3;:14;;13194:4;:57::i;:::-;13190:222;;;13288:83;13297:15;13314:56;13323:12;:18;;;13343:12;:26;;;13314:8;:56::i;13288:83::-;13270:101;;13388:8;;13190:222;13461:3;13432:12;:25;;;:32;13428:46;;;13466:8;;13428:46;13559:44;13568:7;13577:12;:25;;;13559:8;:44::i;:::-;13500:56;13509:12;:18;;;13529:12;:26;;;13500:8;:56::i;:::-;:103;;;;;;13491:112;;13627:58;13636:6;13644:40;13653:3;13658:12;:25;;;13644:8;:40::i;:::-;13627:8;:58::i;:::-;13618:67;;13751:12;:18;;;13704:44;13713:12;:26;;;13741:6;13704:8;:44::i;:::-;:65;13700:169;;;13797:56;13806:12;:18;;;13826:12;:26;;;13797:8;:56::i;:::-;13788:65;;13700:169;13903:33;13912:15;13929:6;13903:8;:33::i;:::-;13885:51;;12868:1080;12927:3;;12868:1080;;;-1:-1:-1;13967:15:0;;-1:-1:-1;;;;;12309:1681:0;;;;:::o;3651:51::-;;;;;;;;;;;;;:::o;10167:882::-;2437:1;3043:7;;:19;;3035:63;;;;;-1:-1:-1;;;3035:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2437:1;3176:7;:18;;;10260:15;-1:-1:-1;;;;;10260:15:0::1;10279:10;10260:29;10252:76;;;;-1:-1:-1::0;;;10252:76:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;10347:17:0;::::1;10339:59;;;::::0;;-1:-1:-1;;;10339:59:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;10426:1;10417:6;:10;10409:55;;;::::0;;-1:-1:-1;;;10409:55:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;10500:22:0;::::1;;::::0;;;:17:::1;:22;::::0;;;;;;;;10555:7:::1;:12:::0;;;;;-1:-1:-1;;10568:26:0;;10555:40;;;;;;;;10593:1:::1;10555:50;::::0;10607:21:::1;::::0;10493:137:::1;::::0;10500:27;;10546:83:::1;::::0;:8:::1;:83::i;:::-;10540:3;:89;10493:6;:137::i;:::-;10477:493;;;10694:47;::::0;;::::1;::::0;::::1;::::0;;;;;10713:3:::1;10694:47;::::0;;::::1;::::0;;;10718:14:::1;::::0;;10694:47;;;;;;;;;;;;-1:-1:-1;10694:47:0;;;;;;-1:-1:-1;;;;;10655:12:0;::::1;::::0;;;:7:::1;:12:::0;;;;;10668:17:::1;:22:::0;;;;;;;;10655:36;;;;;;;;:86;;;;;;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;;;10788:22;;;;;;;;;;10779:35:::1;::::0;:8:::1;:35::i;:::-;-1:-1:-1::0;;;;;10754:22:0;::::1;;::::0;;;:17:::1;:22;::::0;;;;:60;10477:493:::1;;;-1:-1:-1::0;;;;;10903:12:0;::::1;;::::0;;;:7:::1;:12;::::0;;;;;;;10916:17:::1;:22:::0;;;;;;-1:-1:-1;;10916:26:0;10903:40;;;;;;;:46;10894:64:::1;::::0;10951:6;10894:8:::1;:64::i;:::-;-1:-1:-1::0;;;;;10845:12:0;::::1;;::::0;;;:7:::1;:12;::::0;;;;;;;10858:17:::1;:22:::0;;;;;;-1:-1:-1;;10858:26:0;10845:40;;;;;;;:113;10477:493:::1;-1:-1:-1::0;;;;;10987:54:0;::::1;11014:22;::::0;;;:17:::1;:22;::::0;;;;;;;;;10987:54;;;;;-1:-1:-1;;11014:26:0;;;10987:54;;::::1;::::0;;;;;;::::1;::::0;;;;;;;;;::::1;-1:-1:-1::0;;2393:1:0;3355:7;:22;10167:882::o;3812:164::-;4418:10;4399:30;;;;:18;:30;;;;;;;;;:35;4391:91;;;;-1:-1:-1;;;4391:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3896:27:0;::::1;;::::0;;;3926:1:::1;3896:27;::::0;;;;;;;;:31;;;;3943:25;;;;;;;::::1;::::0;;;;;;;;::::1;3812:164:::0;:::o;5110:29::-;;;;:::o;4872:31::-;;;;:::o;5012:38::-;;;;:::o;9561:379::-;4418:10;4399:30;;;;:18;:30;;;;;;;;;:35;4391:91;;;;-1:-1:-1;;;4391:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9661:18:0;::::1;9653:61;;;::::0;;-1:-1:-1;;;9653:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;9731:9;-1:-1:-1::0;;;9731:30:0::1;9727:156;;;9778:15;:22:::0;;-1:-1:-1;;;;;;9778:22:0::1;-1:-1:-1::0;;;;;9778:22:0;::::1;;::::0;;9727:156:::1;;;9827:56;;-1:-1:-1::0;;;9827:56:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9727:156;9899:33;::::0;;-1:-1:-1;;;;;9899:33:0;::::1;::::0;;;;9916:9;;9899:33:::1;::::0;;;;;::::1;::::0;;::::1;9561:379:::0;;:::o;5348:59::-;5405:2;5348:59;:::o;4783:32::-;;;-1:-1:-1;;;;;4783:32:0;;:::o;4095:170::-;4418:10;4399:30;;;;:18;:30;;;;;;;;;:35;4391:91;;;;-1:-1:-1;;;4391:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4182:27:0;::::1;4212:1;4182:27:::0;;;:18:::1;:27;::::0;;;;;;;:31;;;;4229:28;;;;;;;::::1;::::0;;;;;;;;::::1;4095:170:::0;:::o;5605:76::-;;;;;;;;;;;;;:::o;11280:861::-;-1:-1:-1;;;;;11395:22:0;;11346:7;11395:22;;;:17;:22;;;;;;;;;11370:16;:21;;;;;;:47;11366:61;;-1:-1:-1;11426:1:0;11419:8;;11366:61;11440:30;;:::i;:::-;-1:-1:-1;;;;;11557:21:0;;11483;11557;;;:16;:21;;;;;;11483;;11543:558;-1:-1:-1;;;;;11585:22:0;;;;;;:17;:22;;;;;;11580:27;;11543:558;;-1:-1:-1;;;;;11644:12:0;;;;;;:7;:12;;;;;;;;:15;;;;;;;;;11629:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11689:55:0;;:8;:55::i;:::-;11674:70;;11795:12;:18;;;11765:12;:26;;;:48;11761:95;;11832:8;;11761:95;11876:57;11909:7;11881:12;:25;;;:35;11925:7;11918:3;:14;;11876:4;:57::i;:::-;11872:104;;;11952:8;;11872:104;12008:81;12017:13;12032:56;12041:12;:18;;;12061:12;:26;;;12032:8;:56::i;12008:81::-;11992:97;;11543:558;11609:3;;11543:558;;;-1:-1:-1;12120:13:0;;11280:861;-1:-1:-1;;;;11280:861:0:o;5482:75::-;;;;;;;;;;;;;:::o;5277:64::-;5334:7;5277:64;:::o;14099:2333::-;2437:1;3043:7;;:19;;3035:63;;;;;-1:-1:-1;;;3035:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2437:1;3176:7;:18;;;-1:-1:-1;;;;;14172:22:0;::::1;::::0;;:17:::1;:22;::::0;;;;;14164:75:::1;;;;-1:-1:-1::0;;;14164:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;14282:22:0;::::1;;::::0;;;:17:::1;:22;::::0;;;;;;;;14258:16:::1;:21:::0;;;;;;;:46:::1;14250:96;;;;-1:-1:-1::0;;;14250:96:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14444:12;::::0;-1:-1:-1;;;;;14395:22:0;::::1;14359:23;14395:22:::0;;;:17:::1;:22;::::0;;;;;;;;14419:16:::1;:21:::0;;;;;;14359:23;;14444:12;14386:55:::1;::::0;14395:22;14386:8:::1;:55::i;:::-;:70;14385:182;;-1:-1:-1::0;;;;;14541:22:0;::::1;;::::0;;;:17:::1;:22;::::0;;;;;14532:35:::1;::::0;14565:1:::1;14532:8;:35::i;:::-;14385:182;;;-1:-1:-1::0;;;;;14480:21:0;::::1;;::::0;;;:16:::1;:21;::::0;;;;;14512:12:::1;::::0;14471:58:::1;::::0;14480:21;14503:25:::1;::::0;14526:1:::1;14503:8;:25::i;14471:58::-;-1:-1:-1::0;;;;;14725:21:0;::::1;14580:31;14725:21:::0;;;:16:::1;:21;::::0;;;;;14359:208;;-1:-1:-1;14580:31:0;;;;;;;14711:1505:::1;14753:15;14748:1;:20;14711:1505;;-1:-1:-1::0;;;;;14805:12:0;::::1;;::::0;;;:7:::1;:12;::::0;;;;;;;:15;;;;;;;;14859:22:::1;::::0;::::1;::::0;14883:21:::1;::::0;::::1;::::0;14805:15;;-1:-1:-1;14850:55:0::1;::::0;:8:::1;:55::i;:::-;14835:70;;14956:12;:18;;;14926:12;:26;;;:48;14922:170;;-1:-1:-1::0;;;;;15026:21:0;::::1;;::::0;;;:16:::1;:21;::::0;;;;;15017:34:::1;::::0;15049:1:::1;15017:8;:34::i;:::-;-1:-1:-1::0;;;;;14993:21:0;::::1;;::::0;;;:16:::1;:21;::::0;;;;:58;15068:8:::1;;14922:170;15112:57;15145:7;15117:12;:25;;;:35;15161:7;15154:3;:14;;15112:4;:57::i;:::-;15108:426;;;15217:83;15226:15;15243:56;15252:12;:18;;;15272:12;:26;;;15243:8;:56::i;15217:83::-;15346:18:::0;;15317:26:::1;::::0;::::1;:47:::0;15410:3:::1;15381:25;::::0;::::1;:32:::0;-1:-1:-1;;;;;15468:21:0;::::1;15346:18;15468:21:::0;;;:16:::1;:21;::::0;;;;;15188:112;;-1:-1:-1;15459:34:0::1;::::0;-1:-1:-1;15459:8:0::1;:34::i;15108:426::-;15583:3;15554:12;:25;;;:32;15550:46;;;15588:8;;15550:46;15681:44;15690:7;15699:12;:25;;;15681:8;:44::i;:::-;15622:56;15631:12;:18;;;15651:12;:26;;;15622:8;:56::i;:::-;:103;;;;;;15613:112;;15749:58;15758:6;15766:40;15775:3;15780:12;:25;;;15766:8;:40::i;15749:58::-;15740:67;;15873:12;:18;;;15826:44;15835:12;:26;;;15863:6;15826:8;:44::i;:::-;:65;15822:169;;;15919:56;15928:12;:18;;;15948:12;:26;;;15919:8;:56::i;:::-;15910:65;;15822:169;16036:33;16045:15;16062:6;16036:8;:33::i;:::-;16007:62;;16113:44;16122:12;:26;;;16150:6;16113:8;:44::i;:::-;16084:26;::::0;::::1;:73:::0;16201:3:::1;16172:25;::::0;::::1;:32:::0;14711:1505:::1;14770:3;;14711:1505;;;-1:-1:-1::0;16232:19:0;;16228:145:::1;;16276:5;::::0;:36:::1;::::0;;-1:-1:-1;;;16276:36:0;;-1:-1:-1;;;;;16276:36:0;;::::1;;::::0;::::1;::::0;;;;;;;;;:5;;;::::1;::::0;:14:::1;::::0;:36;;;;;::::1;::::0;;;;;;;;:5:::1;::::0;:36;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;16276:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;16276:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;16276:36:0;16268:93:::1;;;;-1:-1:-1::0;;;16268:93:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16390:34;::::0;;;;;;;-1:-1:-1;;;;;16390:34:0;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;;2393:1:0;3355:7;:22;-1:-1:-1;;;;14099:2333:0:o;5174:22::-;;;-1:-1:-1;;;;;5174:22:0;;:::o;8331:1058::-;4418:10;4399:30;;;;:18;:30;;;;;;;;;:35;4391:91;;;;-1:-1:-1;;;4391:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8427:9:::1;-1:-1:-1::0;;;8427:29:0::1;8423:909;;;8479:43;8491:1;8484:4;:8;5262;8494:4;:27;;8479:4;:43::i;:::-;8471:100;;;;-1:-1:-1::0;;;8471:100:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8599:21;;8592:4;:28;8584:96;;;;-1:-1:-1::0;;;8584:96:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8693:14;:21:::0;;;8423:909:::1;;;8745:9;-1:-1:-1::0;;;8745:36:0::1;8741:591;;;8804:52;8816:1;8809:4;:8;5334:7;8819:4;:36;;8804:4;:52::i;:::-;8796:110;;;;-1:-1:-1::0;;;8796:110:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8934:14;;8927:4;:21;8919:85;;;;-1:-1:-1::0;;;8919:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9017:21;:28:::0;;;8741:591:::1;;;9076:9;-1:-1:-1::0;;;9076:27:0::1;9072:260;;;9126:43;9139:1;9131:4;:9;;5405:2;9142:4;:26;;9126:4;:43::i;:::-;9118:99;;;;-1:-1:-1::0;;;9118:99:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9230:12;:19:::0;;;9072:260:::1;9348:33;::::0;;;;;;;9365:9;;9348:33:::1;::::0;;;;;::::1;::::0;;::::1;8331:1058:::0;;:::o;7685:156::-;7783:5;;;7778:16;;;;7770:63;;;;-1:-1:-1;;;7770:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7685:156;;;;:::o;7524:155::-;7622:5;;;7617:16;;;;7609:62;;;;-1:-1:-1;;;7609:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7280:104;7367:9;;7360:17::o;7847:160::-;7904:6;7931;;;:30;;-1:-1:-1;;7946:5:0;;;7960:1;7955;7946:5;7955:1;7941:15;;;;;:20;7931:30;7923:76;;;;-1:-1:-1;;;7923:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7390:105;7479:8;;7472:16::o;3574:12861::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://4bc7c338a69b84c48351cb2207f960ee034b8cf7230bee53d0e511031ec5f779
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 29 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $3.62 | 2,796.1022 | $10,117.78 |
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.