Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
20871262 | 149 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
LockstakeUrn
Compiler Version
v0.8.21+commit.d9974bed
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-FileCopyrightText: © 2023 Dai Foundation <www.daifoundation.org> // SPDX-License-Identifier: AGPL-3.0-or-later // // 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.8.21; interface VatLike { function hope(address) external; } interface GemLike { function balanceOf(address) external view returns (uint256); function approve(address, uint256) external; function transfer(address, uint256) external; } interface StakingRewardsLike { function rewardsToken() external view returns (GemLike); function stake(uint256, uint16) external; function withdraw(uint256) external; function getReward() external; } contract LockstakeUrn { // --- immutables --- address immutable public engine; GemLike immutable public lsmkr; VatLike immutable public vat; // --- modifiers --- modifier isEngine { require(msg.sender == engine, "LockstakeUrn/not-engine"); _; } // --- constructor & init --- constructor(address vat_, address lsmkr_) { engine = msg.sender; vat = VatLike(vat_); lsmkr = GemLike(lsmkr_); } function init() external isEngine { vat.hope(msg.sender); lsmkr.approve(msg.sender, type(uint256).max); } // --- staking functions --- function stake(address farm, uint256 wad, uint16 ref) external isEngine { lsmkr.approve(farm, wad); StakingRewardsLike(farm).stake(wad, ref); } function withdraw(address farm, uint256 wad) external isEngine { StakingRewardsLike(farm).withdraw(wad); } function getReward(address farm, address to) external isEngine returns (uint256 amt) { StakingRewardsLike(farm).getReward(); GemLike rewardsToken = StakingRewardsLike(farm).rewardsToken(); amt = rewardsToken.balanceOf(address(this)); rewardsToken.transfer(to, amt); } }
{ "remappings": [ "dss-interfaces/=lib/token-tests/lib/dss-test/lib/dss-interfaces/src/", "dss-test/=lib/token-tests/lib/dss-test/src/", "forge-std/=lib/token-tests/lib/dss-test/lib/forge-std/src/", "token-tests/=lib/token-tests/src/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "paris", "viaIR": false, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"vat_","type":"address"},{"internalType":"address","name":"lsmkr_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"engine","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"farm","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"getReward","outputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lsmkr","outputs":[{"internalType":"contract GemLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"farm","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"},{"internalType":"uint16","name":"ref","type":"uint16"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"farm","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60e060405234801561001057600080fd5b506040516108cb3803806108cb83398101604081905261002f91610066565b336080526001600160a01b0391821660c0521660a052610099565b80516001600160a01b038116811461006157600080fd5b919050565b6000806040838503121561007957600080fd5b6100828361004a565b91506100906020840161004a565b90509250929050565b60805160a05160c0516107d46100f760003960008181608701526103a401526000818160ec0152818161042301526104f901526000818161011301528181610172015281816103520152818161049601526105c901526107d46000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063c9d4623f1161005b578063c9d4623f1461010e578063e1c7392a14610135578063e62d29df1461013f578063f3fef3a31461015257600080fd5b806336569e77146100825780636b091695146100c65780639da25677146100e7575b600080fd5b6100a97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100d96100d436600461067c565b610165565b6040519081526020016100bd565b6100a97f000000000000000000000000000000000000000000000000000000000000000081565b6100a97f000000000000000000000000000000000000000000000000000000000000000081565b61013d610347565b005b61013d61014d3660046106b5565b61048b565b61013d6101603660046106fe565b6105be565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101b85760405162461bcd60e51b81526004016101af9061072a565b60405180910390fd5b826001600160a01b0316633d18b9126040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156101f357600080fd5b505af1158015610207573d6000803e3d6000fd5b505050506000836001600160a01b031663d1af0c7d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561024b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061026f9190610761565b6040516370a0823160e01b81523060048201529091506001600160a01b038216906370a0823190602401602060405180830381865afa1580156102b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102da9190610785565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529193509082169063a9059cbb90604401600060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b505050505092915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461038f5760405162461bcd60e51b81526004016101af9061072a565b6040516328ec8bf160e21b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a3b22fc490602401600060405180830381600087803b1580156103f057600080fd5b505af1158015610404573d6000803e3d6000fd5b505060405163095ea7b360e01b815233600482015260001960248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316925063095ea7b39150604401600060405180830381600087803b15801561047157600080fd5b505af1158015610485573d6000803e3d6000fd5b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104d35760405162461bcd60e51b81526004016101af9061072a565b60405163095ea7b360e01b81526001600160a01b038481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390604401600060405180830381600087803b15801561053d57600080fd5b505af1158015610551573d6000803e3d6000fd5b50506040516342ea02c160e01b81526004810185905261ffff841660248201526001600160a01b03861692506342ea02c19150604401600060405180830381600087803b1580156105a157600080fd5b505af11580156105b5573d6000803e3d6000fd5b50505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106065760405162461bcd60e51b81526004016101af9061072a565b604051632e1a7d4d60e01b8152600481018290526001600160a01b03831690632e1a7d4d90602401600060405180830381600087803b15801561064857600080fd5b505af115801561065c573d6000803e3d6000fd5b505050505050565b6001600160a01b038116811461067957600080fd5b50565b6000806040838503121561068f57600080fd5b823561069a81610664565b915060208301356106aa81610664565b809150509250929050565b6000806000606084860312156106ca57600080fd5b83356106d581610664565b925060208401359150604084013561ffff811681146106f357600080fd5b809150509250925092565b6000806040838503121561071157600080fd5b823561071c81610664565b946020939093013593505050565b60208082526017908201527f4c6f636b7374616b6555726e2f6e6f742d656e67696e65000000000000000000604082015260600190565b60006020828403121561077357600080fd5b815161077e81610664565b9392505050565b60006020828403121561079757600080fd5b505191905056fea2646970667358221220282dc506696be9a4732f729b9bfe9063cf130b3f6d43f2b15f0fce4ae8da196f64736f6c6343000815003300000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b000000000000000000000000b4e0e45e142101dc3ed768bac219fc35edbed295
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063c9d4623f1161005b578063c9d4623f1461010e578063e1c7392a14610135578063e62d29df1461013f578063f3fef3a31461015257600080fd5b806336569e77146100825780636b091695146100c65780639da25677146100e7575b600080fd5b6100a97f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100d96100d436600461067c565b610165565b6040519081526020016100bd565b6100a97f000000000000000000000000b4e0e45e142101dc3ed768bac219fc35edbed29581565b6100a97f0000000000000000000000002b16c07d5fd5cc701a0a871eae2aad6da5fc8f1281565b61013d610347565b005b61013d61014d3660046106b5565b61048b565b61013d6101603660046106fe565b6105be565b6000336001600160a01b037f0000000000000000000000002b16c07d5fd5cc701a0a871eae2aad6da5fc8f1216146101b85760405162461bcd60e51b81526004016101af9061072a565b60405180910390fd5b826001600160a01b0316633d18b9126040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156101f357600080fd5b505af1158015610207573d6000803e3d6000fd5b505050506000836001600160a01b031663d1af0c7d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561024b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061026f9190610761565b6040516370a0823160e01b81523060048201529091506001600160a01b038216906370a0823190602401602060405180830381865afa1580156102b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102da9190610785565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529193509082169063a9059cbb90604401600060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b505050505092915050565b336001600160a01b037f0000000000000000000000002b16c07d5fd5cc701a0a871eae2aad6da5fc8f12161461038f5760405162461bcd60e51b81526004016101af9061072a565b6040516328ec8bf160e21b81523360048201527f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b6001600160a01b03169063a3b22fc490602401600060405180830381600087803b1580156103f057600080fd5b505af1158015610404573d6000803e3d6000fd5b505060405163095ea7b360e01b815233600482015260001960248201527f000000000000000000000000b4e0e45e142101dc3ed768bac219fc35edbed2956001600160a01b0316925063095ea7b39150604401600060405180830381600087803b15801561047157600080fd5b505af1158015610485573d6000803e3d6000fd5b50505050565b336001600160a01b037f0000000000000000000000002b16c07d5fd5cc701a0a871eae2aad6da5fc8f1216146104d35760405162461bcd60e51b81526004016101af9061072a565b60405163095ea7b360e01b81526001600160a01b038481166004830152602482018490527f000000000000000000000000b4e0e45e142101dc3ed768bac219fc35edbed295169063095ea7b390604401600060405180830381600087803b15801561053d57600080fd5b505af1158015610551573d6000803e3d6000fd5b50506040516342ea02c160e01b81526004810185905261ffff841660248201526001600160a01b03861692506342ea02c19150604401600060405180830381600087803b1580156105a157600080fd5b505af11580156105b5573d6000803e3d6000fd5b50505050505050565b336001600160a01b037f0000000000000000000000002b16c07d5fd5cc701a0a871eae2aad6da5fc8f1216146106065760405162461bcd60e51b81526004016101af9061072a565b604051632e1a7d4d60e01b8152600481018290526001600160a01b03831690632e1a7d4d90602401600060405180830381600087803b15801561064857600080fd5b505af115801561065c573d6000803e3d6000fd5b505050505050565b6001600160a01b038116811461067957600080fd5b50565b6000806040838503121561068f57600080fd5b823561069a81610664565b915060208301356106aa81610664565b809150509250929050565b6000806000606084860312156106ca57600080fd5b83356106d581610664565b925060208401359150604084013561ffff811681146106f357600080fd5b809150509250925092565b6000806040838503121561071157600080fd5b823561071c81610664565b946020939093013593505050565b60208082526017908201527f4c6f636b7374616b6555726e2f6e6f742d656e67696e65000000000000000000604082015260600190565b60006020828403121561077357600080fd5b815161077e81610664565b9392505050565b60006020828403121561079757600080fd5b505191905056fea2646970667358221220282dc506696be9a4732f729b9bfe9063cf130b3f6d43f2b15f0fce4ae8da196f64736f6c63430008150033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b000000000000000000000000b4e0e45e142101dc3ed768bac219fc35edbed295
-----Decoded View---------------
Arg [0] : vat_ (address): 0x35D1b3F3D7966A1DFe207aa4514C12a259A0492B
Arg [1] : lsmkr_ (address): 0xb4e0e45e142101dC3Ed768bac219fC35EDBED295
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b
Arg [1] : 000000000000000000000000b4e0e45e142101dc3ed768bac219fc35edbed295
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 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.