Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 6 from a total of 6 transactions
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Poker
Compiler Version
v0.8.2+commit.661d1103
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-05-17 */ pragma solidity 0.8.2; interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IBoostedVaultWithLockup { /** * @dev Stakes a given amount of the StakingToken for the sender * @param _amount Units of StakingToken */ function stake(uint256 _amount) external; /** * @dev Stakes a given amount of the StakingToken for a given beneficiary * @param _beneficiary Staked tokens are credited to this address * @param _amount Units of StakingToken */ function stake(address _beneficiary, uint256 _amount) external; /** * @dev Withdraws stake from pool and claims any unlocked rewards. * Note, this function is costly - the args for _claimRewards * should be determined off chain and then passed to other fn */ function exit() external; /** * @dev Withdraws stake from pool and claims any unlocked rewards. * @param _first Index of the first array element to claim * @param _last Index of the last array element to claim */ function exit(uint256 _first, uint256 _last) external; /** * @dev Withdraws given stake amount from the pool * @param _amount Units of the staked token to withdraw */ function withdraw(uint256 _amount) external; /** * @dev Claims only the tokens that have been immediately unlocked, not including * those that are in the lockers. */ function claimReward() external; /** * @dev Claims all unlocked rewards for sender. * Note, this function is costly - the args for _claimRewards * should be determined off chain and then passed to other fn */ function claimRewards() external; /** * @dev Claims all unlocked rewards for sender. Both immediately unlocked * rewards and also locked rewards past their time lock. * @param _first Index of the first array element to claim * @param _last Index of the last array element to claim */ function claimRewards(uint256 _first, uint256 _last) external; /** * @dev Pokes a given account to reset the boost */ function pokeBoost(address _account) external; /** * @dev Gets the last applicable timestamp for this reward period */ function lastTimeRewardApplicable() external view returns (uint256); /** * @dev Calculates the amount of unclaimed rewards per token since last update, * and sums with stored to give the new cumulative reward per token * @return 'Reward' per staked token */ function rewardPerToken() external view returns (uint256); /** * @dev Returned the units of IMMEDIATELY claimable rewards a user has to receive. Note - this * does NOT include the majority of rewards which will be locked up. * @param _account User address * @return Total reward amount earned */ function earned(address _account) external view returns (uint256); /** * @dev Calculates all unclaimed reward data, finding both immediately unlocked rewards * and those that have passed their time lock. * @param _account User address * @return amount Total units of unclaimed rewards * @return first Index of the first userReward that has unlocked * @return last Index of the last userReward that has unlocked */ function unclaimedRewards(address _account) external view returns ( uint256 amount, uint256 first, uint256 last ); } // SPDX-License-Identifier: AGPL-3.0-or-later struct PokeVaultAccounts { // Address of the Boosted Vault address boostVault; // List of accounts to be poked address[] accounts; } /** * @title Poker * @author mStable * @notice Pokes accounts on boosted vaults so their vault balances can be recalculated. * @dev VERSION: 1.0 * DATE: 2021-04-17 */ contract Poker { /** * @dev For each boosted vault, poke all the over boosted accounts. * @param _vaultAccounts An array of PokeVaultAccounts structs */ function poke(PokeVaultAccounts[] memory _vaultAccounts) external { uint vaultCount = _vaultAccounts.length; for(uint i = 0; i < vaultCount; i++) { PokeVaultAccounts memory vaultAccounts = _vaultAccounts[i]; address boostVaultAddress = vaultAccounts.boostVault; require(boostVaultAddress != address(0), "blank vault address"); IBoostedVaultWithLockup boostVault = IBoostedVaultWithLockup(boostVaultAddress); uint accountsLength = vaultAccounts.accounts.length; for(uint j = 0; j < accountsLength; j++) { address accountAddress = vaultAccounts.accounts[j]; require(accountAddress != address(0), "blank address"); boostVault.pokeBoost(accountAddress); } } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"components":[{"internalType":"address","name":"boostVault","type":"address"},{"internalType":"address[]","name":"accounts","type":"address[]"}],"internalType":"struct PokeVaultAccounts[]","name":"_vaultAccounts","type":"tuple[]"}],"name":"poke","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50610411806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e05c2cee14610030575b600080fd5b61004361003e366004610213565b610045565b005b805160005b818110156101f257600083828151811061007457634e487b7160e01b600052603260045260246000fd5b602090810291909101015180519091506001600160a01b0381166100d55760405162461bcd60e51b8152602060048201526013602482015272626c616e6b207661756c74206164647265737360681b60448201526064015b60405180910390fd5b602082015151819060005b818110156101da5760008560200151828151811061010e57634e487b7160e01b600052603260045260246000fd5b6020026020010151905060006001600160a01b0316816001600160a01b0316141561016b5760405162461bcd60e51b815260206004820152600d60248201526c626c616e6b206164647265737360981b60448201526064016100cc565b60405163cf7bf6b760e01b81526001600160a01b03828116600483015285169063cf7bf6b790602401600060405180830381600087803b1580156101ae57600080fd5b505af11580156101c2573d6000803e3d6000fd5b505050505080806101d29061039e565b9150506100e0565b505050505080806101ea9061039e565b91505061004a565b505050565b80356001600160a01b038116811461020e57600080fd5b919050565b60006020808385031215610225578182fd5b67ffffffffffffffff808435111561023b578283fd5b8335840185601f82011261024d578384fd5b61025f61025a823561037a565b610349565b8135815283810190848301865b843581101561033b57813585016040818c03601f1901121561028c578889fd5b6102966040610349565b6102a18983016101f7565b81526040820135888111156102b4578a8bfd5b8083019250508b603f8301126102c857898afd5b888201356102d861025a8261037a565b808282528b82019150604085018f60408e860288010111156102f8578d8efd5b8d95505b838610156103215761030d816101f7565b835260019590950194918c01918c016102fc565b50838c01525050855250928601929086019060010161026c565b509098975050505050505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715610372576103726103c5565b604052919050565b600067ffffffffffffffff821115610394576103946103c5565b5060209081020190565b60006000198214156103be57634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fdfea26469706673582212201429e1fcfcf05c33c73f22341e7312447162274e94d9fa3c0869a71d0605d23564736f6c63430008020033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e05c2cee14610030575b600080fd5b61004361003e366004610213565b610045565b005b805160005b818110156101f257600083828151811061007457634e487b7160e01b600052603260045260246000fd5b602090810291909101015180519091506001600160a01b0381166100d55760405162461bcd60e51b8152602060048201526013602482015272626c616e6b207661756c74206164647265737360681b60448201526064015b60405180910390fd5b602082015151819060005b818110156101da5760008560200151828151811061010e57634e487b7160e01b600052603260045260246000fd5b6020026020010151905060006001600160a01b0316816001600160a01b0316141561016b5760405162461bcd60e51b815260206004820152600d60248201526c626c616e6b206164647265737360981b60448201526064016100cc565b60405163cf7bf6b760e01b81526001600160a01b03828116600483015285169063cf7bf6b790602401600060405180830381600087803b1580156101ae57600080fd5b505af11580156101c2573d6000803e3d6000fd5b505050505080806101d29061039e565b9150506100e0565b505050505080806101ea9061039e565b91505061004a565b505050565b80356001600160a01b038116811461020e57600080fd5b919050565b60006020808385031215610225578182fd5b67ffffffffffffffff808435111561023b578283fd5b8335840185601f82011261024d578384fd5b61025f61025a823561037a565b610349565b8135815283810190848301865b843581101561033b57813585016040818c03601f1901121561028c578889fd5b6102966040610349565b6102a18983016101f7565b81526040820135888111156102b4578a8bfd5b8083019250508b603f8301126102c857898afd5b888201356102d861025a8261037a565b808282528b82019150604085018f60408e860288010111156102f8578d8efd5b8d95505b838610156103215761030d816101f7565b835260019590950194918c01918c016102fc565b50838c01525050855250928601929086019060010161026c565b509098975050505050505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715610372576103726103c5565b604052919050565b600067ffffffffffffffff821115610394576103946103c5565b5060209081020190565b60006000198214156103be57634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fdfea26469706673582212201429e1fcfcf05c33c73f22341e7312447162274e94d9fa3c0869a71d0605d23564736f6c63430008020033
Deployed Bytecode Sourcemap
6615:1021:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6802:831;;;;;;:::i;:::-;;:::i;:::-;;;6897:21;;6879:15;6929:697;6949:10;6945:1;:14;6929:697;;;6981:38;7022:14;7037:1;7022:17;;;;;;-1:-1:-1;;;7022:17:0;;;;;;;;;;;;;;;;;;;7082:24;;7022:17;;-1:-1:-1;;;;;;7129:31:0;;7121:63;;;;-1:-1:-1;;;7121:63:0;;2625:2:1;7121:63:0;;;2607:21:1;2664:2;2644:18;;;2637:30;-1:-1:-1;;;2683:18:1;;;2676:49;2742:18;;7121:63:0;;;;;;;;;7317:22;;;;:29;7260:17;;7199:34;7361:254;7381:14;7377:1;:18;7361:254;;;7421:22;7446:13;:22;;;7469:1;7446:25;;;;;;-1:-1:-1;;;7446:25:0;;;;;;;;;;;;;;;7421:50;;7524:1;-1:-1:-1;;;;;7498:28:0;:14;-1:-1:-1;;;;;7498:28:0;;;7490:54;;;;-1:-1:-1;;;7490:54:0;;2973:2:1;7490:54:0;;;2955:21:1;3012:2;2992:18;;;2985:30;-1:-1:-1;;;3031:18:1;;;3024:43;3084:18;;7490:54:0;2945:163:1;7490:54:0;7563:36;;-1:-1:-1;;;7563:36:0;;-1:-1:-1;;;;;2379:32:1;;;7563:36:0;;;2361:51:1;7563:20:0;;;;;2334:18:1;;7563:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7361:254;7397:3;;;;;:::i;:::-;;;;7361:254;;;;6929:697;;;;6961:3;;;;;:::i;:::-;;;;6929:697;;;;6802:831;;:::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:2018::-;;341:2;384;372:9;363:7;359:23;355:32;352:2;;;405:6;397;390:22;352:2;433:18;491:2;479:9;466:23;463:31;460:2;;;512:6;504;497:22;460:2;568:9;555:23;544:9;540:39;617:7;610:4;606:2;602:13;598:27;588:2;;644:6;636;629:22;588:2;673:74;689:57;742:2;729:16;689:57;:::i;:::-;673:74;:::i;:::-;793:16;;781:29;;826:12;;;;858:11;;;887:6;902:1278;929:2;916:16;913:1;910:23;902:1278;;;993:17;;985:26;;1063:4;1035:16;;;-1:-1:-1;;1031:30:1;1027:41;1024:2;;;1086:6;1078;1071:22;1024:2;1121:21;1137:4;1121:21;:::i;:::-;1169:31;1196:2;1192;1188:11;1169:31;:::i;:::-;1162:5;1155:46;1249:4;1245:2;1241:13;1228:27;1282:2;1274:6;1271:14;1268:2;;;1303:6;1295;1288:22;1268:2;1343:6;1339:2;1335:15;1325:25;;;1390:7;1385:2;1381;1377:11;1373:25;1363:2;;1417:6;1409;1402:22;1363:2;1470;1466;1462:11;1449:25;1500:60;1516:43;1556:2;1516:43;:::i;1500:60::-;1586:5;1618:2;1611:5;1604:17;1654:2;1647:5;1643:14;1634:23;;1691:4;1687:2;1683:13;1748:7;1741:4;1735:2;1731;1727:11;1723:2;1719:20;1715:31;1712:44;1709:2;;;1774:6;1766;1759:22;1709:2;1807:6;1796:17;;1826:207;1842:2;1837:3;1834:11;1826:207;;;1913:25;1932:5;1913:25;:::i;:::-;1899:40;;1864:1;1855:11;;;;;1965:14;;;;2005;;1826:207;;;-1:-1:-1;2053:14:1;;;2046:29;-1:-1:-1;;2088:18:1;;-1:-1:-1;2126:12:1;;;;2158;;;;948:1;941:9;902:1278;;;-1:-1:-1;2199:5:1;;321:1889;-1:-1:-1;;;;;;;;321:1889:1:o;3113:275::-;3184:2;3178:9;3249:2;3230:13;;-1:-1:-1;;3226:27:1;3214:40;;3284:18;3269:34;;3305:22;;;3266:62;3263:2;;;3331:18;;:::i;:::-;3367:2;3360:22;3158:230;;-1:-1:-1;3158:230:1:o;3393:186::-;;3486:18;3478:6;3475:30;3472:2;;;3508:18;;:::i;:::-;-1:-1:-1;3568:4:1;3549:17;;;3545:28;;3462:117::o;3584:236::-;;-1:-1:-1;;3644:17:1;;3641:2;;;-1:-1:-1;;;3684:33:1;;3740:4;3737:1;3730:15;3770:4;3691:3;3758:17;3641:2;-1:-1:-1;3812:1:1;3801:13;;3631:189::o;3825:127::-;3886:10;3881:3;3877:20;3874:1;3867:31;3917:4;3914:1;3907:15;3941:4;3938:1;3931:15
Swarm Source
ipfs://1429e1fcfcf05c33c73f22341e7312447162274e94d9fa3c0869a71d0605d235
Loading...
Loading
Loading...
Loading
OVERVIEW
Pokes boosted saving vault accounts to recalculate their balance based on the account's current vMTA balance. For example, the feeder pool vaults or the imBTC savings vault.Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
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.