Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Splitter
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 <http://www.gnu.org/licenses/>.
pragma solidity ^0.8.21;
interface VatLike {
function move(address, address, uint256) external;
function hope(address) external;
}
interface UsdsJoinLike {
function vat() external view returns (address);
function exit(address, uint256) external;
}
interface FlapLike {
function exec(uint256) external;
function cage() external;
}
interface FarmLike {
function notifyRewardAmount(uint256 reward) external;
}
contract Splitter {
mapping (address => uint256) public wards;
uint256 public live; // Active Flag
FlapLike public flapper; // Underlying burner strategy
FarmLike public farm; // StakingRewards contract receiving the rewards
uint256 public burn; // [WAD] Burn percentage. 1 WAD = funneling 100% to the burn engine
uint256 public hop; // [Seconds] Time between kicks
uint256 public zzz; // [Timestamp] Last kick
VatLike public immutable vat;
UsdsJoinLike public immutable usdsJoin;
event Rely(address indexed usr);
event Deny(address indexed usr);
event File(bytes32 indexed what, uint256 data);
event File(bytes32 indexed what, address data);
event Kick(uint256 tot, uint256 lot, uint256 pay);
event Cage(uint256 rad);
constructor(
address _usdsJoin
) {
usdsJoin = UsdsJoinLike(_usdsJoin);
vat = VatLike(usdsJoin.vat());
vat.hope(_usdsJoin);
hop = 1 hours; // Initial value for safety
wards[msg.sender] = 1;
emit Rely(msg.sender);
live = 1;
}
modifier auth {
require(wards[msg.sender] == 1, "Splitter/not-authorized");
_;
}
uint256 internal constant RAY = 10 ** 27;
uint256 internal constant RAD = 10 ** 45;
function rely(address usr) external auth { wards[usr] = 1; emit Rely(usr); }
function deny(address usr) external auth { wards[usr] = 0; emit Deny(usr); }
function file(bytes32 what, uint256 data) external auth {
if (what == "burn") burn = data;
else if (what == "hop") hop = data;
else revert("Splitter/file-unrecognized-param");
emit File(what, data);
}
function file(bytes32 what, address data) external auth {
if (what == "flapper") flapper = FlapLike(data);
else if (what == "farm") farm = FarmLike(data);
else revert("Splitter/file-unrecognized-param");
emit File(what, data);
}
function kick(uint256 tot, uint256) external auth returns (uint256) {
require(live == 1, "Splitter/not-live");
require(block.timestamp >= zzz + hop, "Splitter/kicked-too-soon");
zzz = block.timestamp;
vat.move(msg.sender, address(this), tot);
uint256 lot = tot * burn / RAD;
if (lot > 0) {
UsdsJoinLike(usdsJoin).exit(address(flapper), lot);
flapper.exec(lot);
}
uint256 pay = (tot / RAY - lot);
if (pay > 0) {
UsdsJoinLike(usdsJoin).exit(address(farm), pay);
farm.notifyRewardAmount(pay);
}
emit Kick(tot, lot, pay);
return 0;
}
function cage(uint256) external auth {
live = 0;
emit Cage(0);
}
}{
"remappings": [
"dss-interfaces/=lib/dss-test/lib/dss-interfaces/src/",
"dss-test/=lib/dss-test/src/",
"forge-std/=lib/dss-test/lib/forge-std/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":"_usdsJoin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rad","type":"uint256"}],"name":"Cage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"data","type":"uint256"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"address","name":"data","type":"address"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tot","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lot","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"pay","type":"uint256"}],"name":"Kick","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Rely","type":"event"},{"inputs":[],"name":"burn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"cage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"farm","outputs":[{"internalType":"contract FarmLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"data","type":"address"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flapper","outputs":[{"internalType":"contract FlapLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tot","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"kick","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"live","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdsJoin","outputs":[{"internalType":"contract UsdsJoinLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zzz","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60c060405234801561001057600080fd5b50604051610c67380380610c6783398101604081905261002f91610147565b6001600160a01b03811660a0819052604080516336569e7760e01b815290516336569e77916004808201926020929091908290030181865afa158015610079573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061009d9190610147565b6001600160a01b0390811660808190526040516328ec8bf160e21b815291831660048301529063a3b22fc490602401600060405180830381600087803b1580156100e657600080fd5b505af11580156100fa573d6000803e3d6000fd5b5050610e1060055550503360008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a25060018055610177565b60006020828403121561015957600080fd5b81516001600160a01b038116811461017057600080fd5b9392505050565b60805160a051610ab66101b16000396000818161022f0152818161064e015261075f015260008181610114015261058b0152610ab66000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80639c52a7f111610097578063bf353dbb11610066578063bf353dbb146101e4578063ca40c41914610204578063d4e8be8314610217578063fa1e2e861461022a57600080fd5b80639c52a7f1146101ac578063a2f91af2146101bf578063a4dff0a2146101d2578063b0b8579b146101db57600080fd5b806344df8e70116100d357806344df8e70146101665780635ca0d7231461017d57806365fae35e14610190578063957aa58c146101a357600080fd5b806329ae8114146100fa57806336569e771461010f57806336e9332d14610153575b600080fd5b61010d61010836600461092f565b610251565b005b6101367f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b600354610136906001600160a01b031681565b61016f60045481565b60405190815260200161014a565b600254610136906001600160a01b031681565b61010d61019e36600461096d565b61033e565b61016f60015481565b61010d6101ba36600461096d565b6103b2565b61010d6101cd36600461098f565b610425565b61016f60065481565b61016f60055481565b61016f6101f236600461096d565b60006020819052908152604090205481565b61016f61021236600461092f565b610491565b61010d6102253660046109a8565b61086a565b6101367f000000000000000000000000000000000000000000000000000000000000000081565b336000908152602081905260409020546001146102895760405162461bcd60e51b8152600401610280906109d4565b60405180910390fd5b8163313ab93760e11b036102a1576004819055610300565b81620686f760ec1b036102b8576005819055610300565b60405162461bcd60e51b815260206004820181905260248201527f53706c69747465722f66696c652d756e7265636f676e697a65642d706172616d6044820152606401610280565b817fe986e40cc8c151830d4f61050f4fb2e4add8567caad2d5f5496f9158e91fe4c78260405161033291815260200190565b60405180910390a25050565b3360009081526020819052604090205460011461036d5760405162461bcd60e51b8152600401610280906109d4565b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b336000908152602081905260409020546001146103e15760405162461bcd60e51b8152600401610280906109d4565b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b336000908152602081905260409020546001146104545760405162461bcd60e51b8152600401610280906109d4565b600060018190556040519081527f8b2f35c645f75532175a00d9b4565154e45c8eb57ee0155e03d0958f3a4d4b899060200160405180910390a150565b336000908152602081905260408120546001146104c05760405162461bcd60e51b8152600401610280906109d4565b6001546001146105065760405162461bcd60e51b815260206004820152601160248201527053706c69747465722f6e6f742d6c69766560781b6044820152606401610280565b6005546006546105169190610a21565b4210156105655760405162461bcd60e51b815260206004820152601860248201527f53706c69747465722f6b69636b65642d746f6f2d736f6f6e00000000000000006044820152606401610280565b4260065560405163bb35783b60e01b8152336004820152306024820152604481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bb35783b90606401600060405180830381600087803b1580156105d757600080fd5b505af11580156105eb573d6000803e3d6000fd5b505050506000722cd76fe086b93ce2f768a00b22a00000000000600454856106139190610a34565b61061d9190610a4b565b9050801561070b5760025460405163ef693bed60e01b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063ef693bed90604401600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b505060025460405163f873cb9160e01b8152600481018590526001600160a01b03909116925063f873cb919150602401600060405180830381600087803b1580156106f257600080fd5b505af1158015610706573d6000803e3d6000fd5b505050505b6000816107246b033b2e3c9fd0803ce800000087610a4b565b61072e9190610a6d565b9050801561081c5760035460405163ef693bed60e01b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063ef693bed90604401600060405180830381600087803b1580156107a557600080fd5b505af11580156107b9573d6000803e3d6000fd5b5050600354604051633c6b16ab60e01b8152600481018590526001600160a01b039091169250633c6b16ab9150602401600060405180830381600087803b15801561080357600080fd5b505af1158015610817573d6000803e3d6000fd5b505050505b60408051868152602081018490529081018290527fe6dde59cbc017becba89714a037778d234a84ce7f0a137487142a007e580d6099060600160405180910390a16000925050505b92915050565b336000908152602081905260409020546001146108995760405162461bcd60e51b8152600401610280906109d4565b8166333630b83832b960c91b036108ca57600280546001600160a01b0319166001600160a01b0383161790556108f4565b81636661726d60e01b036102b857600380546001600160a01b0319166001600160a01b0383161790555b6040516001600160a01b038216815282907f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba90602001610332565b6000806040838503121561094257600080fd5b50508035926020909101359150565b80356001600160a01b038116811461096857600080fd5b919050565b60006020828403121561097f57600080fd5b61098882610951565b9392505050565b6000602082840312156109a157600080fd5b5035919050565b600080604083850312156109bb57600080fd5b823591506109cb60208401610951565b90509250929050565b60208082526017908201527f53706c69747465722f6e6f742d617574686f72697a6564000000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561086457610864610a0b565b808202811582820484141761086457610864610a0b565b600082610a6857634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561086457610864610a0b56fea2646970667358221220a1b5b278ec17148af316b5b4c7b1fc61c018a873fa279c36faaa6e0a6a69e96a64736f6c634300081500330000000000000000000000003c0f895007ca717aa01c8693e59df1e8c3777feb
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80639c52a7f111610097578063bf353dbb11610066578063bf353dbb146101e4578063ca40c41914610204578063d4e8be8314610217578063fa1e2e861461022a57600080fd5b80639c52a7f1146101ac578063a2f91af2146101bf578063a4dff0a2146101d2578063b0b8579b146101db57600080fd5b806344df8e70116100d357806344df8e70146101665780635ca0d7231461017d57806365fae35e14610190578063957aa58c146101a357600080fd5b806329ae8114146100fa57806336569e771461010f57806336e9332d14610153575b600080fd5b61010d61010836600461092f565b610251565b005b6101367f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b81565b6040516001600160a01b0390911681526020015b60405180910390f35b600354610136906001600160a01b031681565b61016f60045481565b60405190815260200161014a565b600254610136906001600160a01b031681565b61010d61019e36600461096d565b61033e565b61016f60015481565b61010d6101ba36600461096d565b6103b2565b61010d6101cd36600461098f565b610425565b61016f60065481565b61016f60055481565b61016f6101f236600461096d565b60006020819052908152604090205481565b61016f61021236600461092f565b610491565b61010d6102253660046109a8565b61086a565b6101367f0000000000000000000000003c0f895007ca717aa01c8693e59df1e8c3777feb81565b336000908152602081905260409020546001146102895760405162461bcd60e51b8152600401610280906109d4565b60405180910390fd5b8163313ab93760e11b036102a1576004819055610300565b81620686f760ec1b036102b8576005819055610300565b60405162461bcd60e51b815260206004820181905260248201527f53706c69747465722f66696c652d756e7265636f676e697a65642d706172616d6044820152606401610280565b817fe986e40cc8c151830d4f61050f4fb2e4add8567caad2d5f5496f9158e91fe4c78260405161033291815260200190565b60405180910390a25050565b3360009081526020819052604090205460011461036d5760405162461bcd60e51b8152600401610280906109d4565b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b336000908152602081905260409020546001146103e15760405162461bcd60e51b8152600401610280906109d4565b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b336000908152602081905260409020546001146104545760405162461bcd60e51b8152600401610280906109d4565b600060018190556040519081527f8b2f35c645f75532175a00d9b4565154e45c8eb57ee0155e03d0958f3a4d4b899060200160405180910390a150565b336000908152602081905260408120546001146104c05760405162461bcd60e51b8152600401610280906109d4565b6001546001146105065760405162461bcd60e51b815260206004820152601160248201527053706c69747465722f6e6f742d6c69766560781b6044820152606401610280565b6005546006546105169190610a21565b4210156105655760405162461bcd60e51b815260206004820152601860248201527f53706c69747465722f6b69636b65642d746f6f2d736f6f6e00000000000000006044820152606401610280565b4260065560405163bb35783b60e01b8152336004820152306024820152604481018490527f00000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b6001600160a01b03169063bb35783b90606401600060405180830381600087803b1580156105d757600080fd5b505af11580156105eb573d6000803e3d6000fd5b505050506000722cd76fe086b93ce2f768a00b22a00000000000600454856106139190610a34565b61061d9190610a4b565b9050801561070b5760025460405163ef693bed60e01b81526001600160a01b039182166004820152602481018390527f0000000000000000000000003c0f895007ca717aa01c8693e59df1e8c3777feb9091169063ef693bed90604401600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b505060025460405163f873cb9160e01b8152600481018590526001600160a01b03909116925063f873cb919150602401600060405180830381600087803b1580156106f257600080fd5b505af1158015610706573d6000803e3d6000fd5b505050505b6000816107246b033b2e3c9fd0803ce800000087610a4b565b61072e9190610a6d565b9050801561081c5760035460405163ef693bed60e01b81526001600160a01b039182166004820152602481018390527f0000000000000000000000003c0f895007ca717aa01c8693e59df1e8c3777feb9091169063ef693bed90604401600060405180830381600087803b1580156107a557600080fd5b505af11580156107b9573d6000803e3d6000fd5b5050600354604051633c6b16ab60e01b8152600481018590526001600160a01b039091169250633c6b16ab9150602401600060405180830381600087803b15801561080357600080fd5b505af1158015610817573d6000803e3d6000fd5b505050505b60408051868152602081018490529081018290527fe6dde59cbc017becba89714a037778d234a84ce7f0a137487142a007e580d6099060600160405180910390a16000925050505b92915050565b336000908152602081905260409020546001146108995760405162461bcd60e51b8152600401610280906109d4565b8166333630b83832b960c91b036108ca57600280546001600160a01b0319166001600160a01b0383161790556108f4565b81636661726d60e01b036102b857600380546001600160a01b0319166001600160a01b0383161790555b6040516001600160a01b038216815282907f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba90602001610332565b6000806040838503121561094257600080fd5b50508035926020909101359150565b80356001600160a01b038116811461096857600080fd5b919050565b60006020828403121561097f57600080fd5b61098882610951565b9392505050565b6000602082840312156109a157600080fd5b5035919050565b600080604083850312156109bb57600080fd5b823591506109cb60208401610951565b90509250929050565b60208082526017908201527f53706c69747465722f6e6f742d617574686f72697a6564000000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561086457610864610a0b565b808202811582820484141761086457610864610a0b565b600082610a6857634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561086457610864610a0b56fea2646970667358221220a1b5b278ec17148af316b5b4c7b1fc61c018a873fa279c36faaa6e0a6a69e96a64736f6c63430008150033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003c0f895007ca717aa01c8693e59df1e8c3777feb
-----Decoded View---------------
Arg [0] : _usdsJoin (address): 0x3C0f895007CA717Aa01c8693e59DF1e8C3777FEB
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000003c0f895007ca717aa01c8693e59df1e8c3777feb
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 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.