Overview
ETH Balance
0.322308250505231126 ETH
Eth Value
$844.98 (@ $2,621.66/ETH)More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 453 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit | 20613327 | 34 days ago | IN | 0.001 ETH | 0.00017865 | ||||
Schedule Withdra... | 20613318 | 34 days ago | IN | 0 ETH | 0.000193 | ||||
Deposit | 20491760 | 51 days ago | IN | 0.005 ETH | 0.00055719 | ||||
Schedule Withdra... | 20491756 | 51 days ago | IN | 0 ETH | 0.0005834 | ||||
Deposit | 19934869 | 129 days ago | IN | 0.008 ETH | 0.00130946 | ||||
Cancel Redirect | 19859985 | 139 days ago | IN | 0 ETH | 0.0001141 | ||||
Refund | 19859984 | 139 days ago | IN | 0 ETH | 0.00015437 | ||||
Cancel Withdraw | 19859983 | 139 days ago | IN | 0 ETH | 0.00014642 | ||||
Deposit | 19859952 | 139 days ago | IN | 0.001 ETH | 0.00025193 | ||||
Schedule Withdra... | 19859947 | 139 days ago | IN | 0 ETH | 0.0002869 | ||||
Set Redirect | 19859946 | 139 days ago | IN | 0 ETH | 0.00027109 | ||||
Refund | 19810824 | 146 days ago | IN | 0 ETH | 0.00014521 | ||||
Schedule Withdra... | 19793990 | 148 days ago | IN | 0 ETH | 0.00028743 | ||||
Set Redirect | 19789608 | 149 days ago | IN | 0 ETH | 0.00019453 | ||||
Deposit | 19786097 | 150 days ago | IN | 0.2 ETH | 0.00019615 | ||||
Schedule Withdra... | 19786086 | 150 days ago | IN | 0 ETH | 0.00025614 | ||||
Set Redirect | 19786085 | 150 days ago | IN | 0 ETH | 0.00022407 | ||||
Schedule Withdra... | 19587700 | 177 days ago | IN | 0 ETH | 0.00081136 | ||||
Batch Execute | 19522023 | 187 days ago | IN | 0 ETH | 0.03483668 | ||||
Schedule Withdra... | 19461140 | 195 days ago | IN | 0 ETH | 0.00125232 | ||||
Batch Execute | 19350938 | 211 days ago | IN | 0 ETH | 0.04702674 | ||||
Batch Execute | 19300901 | 218 days ago | IN | 0 ETH | 0.02459952 | ||||
Schedule Withdra... | 19178770 | 235 days ago | IN | 0 ETH | 0.00299148 | ||||
Batch Execute | 19108480 | 245 days ago | IN | 0 ETH | 0.01007142 | ||||
Batch Execute | 19051533 | 253 days ago | IN | 0 ETH | 0.01526917 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
19859984 | 139 days ago | 0.001 ETH | ||||
19810824 | 146 days ago | 0.2 ETH | ||||
19522023 | 187 days ago | 0.00279454 ETH | ||||
19522023 | 187 days ago | 0.00353234 ETH | ||||
19350938 | 211 days ago | 0.00479836 ETH | ||||
19300901 | 218 days ago | 0.00193846 ETH | ||||
19300901 | 218 days ago | 0.00245024 ETH | ||||
19108480 | 245 days ago | 0.00104658 ETH | ||||
19051533 | 253 days ago | 0.00115617 ETH | ||||
19051533 | 253 days ago | 0.00146142 ETH | ||||
18951556 | 267 days ago | 0.00235596 ETH | ||||
18951556 | 267 days ago | 0.00160627 ETH | ||||
18916018 | 272 days ago | 0.0020783 ETH | ||||
18916018 | 272 days ago | 0.00138756 ETH | ||||
18916018 | 272 days ago | 0.00268602 ETH | ||||
18859067 | 280 days ago | 0.00189032 ETH | ||||
18844827 | 282 days ago | 0.00259203 ETH | ||||
18837696 | 283 days ago | 0.0025003 ETH | ||||
18837696 | 283 days ago | 0.00316041 ETH | ||||
18709305 | 301 days ago | 0.00383886 ETH | ||||
18673573 | 306 days ago | 0.00472234 ETH | ||||
18666420 | 307 days ago | 0.00371933 ETH | ||||
18637880 | 311 days ago | 0.00238984 ETH | ||||
18637879 | 311 days ago | 0.00253262 ETH | ||||
18630721 | 312 days ago | 0.03 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
LlamaPayBot
Compiler Version
v0.8.16+commit.07a7930e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: AGPL-3.0-only pragma solidity ^0.8.0; import {ERC20} from "solmate/tokens/ERC20.sol"; import {SafeTransferLib} from "solmate/utils/SafeTransferLib.sol"; interface LlamaPay { function withdraw( address from, address to, uint216 amountPerSec ) external; function withdrawable( address from, address to, uint216 amountPerSec ) external view returns ( uint256 withdrawableAmount, uint256 lastUpdate, uint256 owed ); } interface LlamaPayFactory { function getLlamaPayContractByToken(address _token) external view returns (address predictedAddress, bool isDeployed); } contract LlamaPayBot { using SafeTransferLib for ERC20; address public immutable factory; address public bot; address public llama; address public newLlama = address(0); uint256 public fee = 50000; // Covers bot gas cost for calling function event WithdrawScheduled( address owner, address token, address from, address to, uint216 amountPerSec, uint40 starts, uint40 frequency, bytes32 id ); event WithdrawCancelled( address owner, address token, address from, address to, uint216 amountPerSec, uint40 starts, uint40 frequency, bytes32 id ); event WithdrawExecuted( address owner, address token, address from, address to, uint216 amountPerSec, uint40 starts, uint40 frequency, bytes32 id ); mapping(address => uint256) public balances; mapping(bytes32 => address) public owners; mapping(address => address) public redirects; constructor( address _factory, address _bot, address _llama ) { factory = _factory; bot = _bot; llama = _llama; } function deposit() external payable { require(msg.sender != bot, "bot cannot deposit"); balances[msg.sender] += msg.value; } function refund() external { uint256 toSend = balances[msg.sender]; balances[msg.sender] = 0; (bool sent, ) = msg.sender.call{value: toSend}(""); require(sent, "failed to send ether"); } function scheduleWithdraw( address _token, address _from, address _to, uint216 _amountPerSec, uint40 _starts, uint40 _frequency ) external returns (bytes32 id) { id = calcWithdrawId( _token, _from, _to, _amountPerSec, _starts, _frequency ); require(owners[id] == address(0), "already exists"); owners[id] = msg.sender; emit WithdrawScheduled( msg.sender, _token, _from, _to, _amountPerSec, _starts, _frequency, id ); } function cancelWithdraw( address _token, address _from, address _to, uint216 _amountPerSec, uint40 _starts, uint40 _frequency ) external returns (bytes32 id) { id = calcWithdrawId( _token, _from, _to, _amountPerSec, _starts, _frequency ); require(msg.sender == owners[id], "not owner"); owners[id] = address(0); emit WithdrawCancelled( msg.sender, _token, _from, _to, _amountPerSec, _starts, _frequency, id ); } function setRedirect(address _to) external { redirects[msg.sender] = _to; } function cancelRedirect() external { redirects[msg.sender] = address(0); } function executeWithdraw( address _owner, address _token, address _from, address _to, uint216 _amountPerSec, uint40 _starts, uint40 _frequency, bytes32 _id, bool _execute, bool _emitEvent ) external { require(msg.sender == bot, "not bot"); if (_execute) { (address llamapay, bool isDeployed) = LlamaPayFactory(factory) .getLlamaPayContractByToken(_token); require(isDeployed, "invalid llamapay contract"); if (redirects[_to] != address(0)) { (uint256 withdrawableAmount, , ) = LlamaPay(llamapay) .withdrawable(_from, _to, _amountPerSec); LlamaPay(llamapay).withdraw(_from, _to, _amountPerSec); ERC20(_token).safeTransferFrom( _to, redirects[_to], withdrawableAmount ); } else { LlamaPay(llamapay).withdraw(_from, _to, _amountPerSec); } } if (_emitEvent) { emit WithdrawExecuted( _owner, _token, _from, _to, _amountPerSec, _starts, _frequency, _id ); } } function execute(bytes[] calldata _calls, address _from) external { require(msg.sender == bot, "not bot"); uint256 i; uint256 len = _calls.length; uint256 startGas = gasleft(); for (i = 0; i < len; ++i) { address(this).delegatecall(_calls[i]); } uint256 gasUsed = ((startGas - gasleft()) + 21000) + fee; uint256 totalSpent = gasUsed * tx.gasprice; balances[_from] -= totalSpent; (bool sent, ) = bot.call{value: totalSpent}(""); require(sent, "failed to send ether to bot"); } function batchExecute(bytes[] calldata _calls) external { require(msg.sender == bot, "not bot"); uint256 i; uint256 len = _calls.length; for (i = 0; i < len; ++i) { address(this).delegatecall(_calls[i]); } } function changeBot(address _newBot) external { require(msg.sender == llama, "not llama"); bot = _newBot; } function changeLlama(address _newLlama) external { require(msg.sender == llama, "not llama"); newLlama = _newLlama; } function confirmNewLlama() external { require(msg.sender == newLlama, "not new llama"); llama = newLlama; } function changeFee(uint256 _newFee) external { require(msg.sender == llama, "not llama"); fee = _newFee; } function calcWithdrawId( address _token, address _from, address _to, uint216 _amountPerSec, uint40 _starts, uint40 _frequency ) public pure returns (bytes32) { return keccak256( abi.encodePacked( _token, _from, _to, _amountPerSec, _starts, _frequency ) ); } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Modern and gas efficient ERC20 + EIP-2612 implementation. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol) /// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol) /// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it. abstract contract ERC20 { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event Transfer(address indexed from, address indexed to, uint256 amount); event Approval(address indexed owner, address indexed spender, uint256 amount); /*////////////////////////////////////////////////////////////// METADATA STORAGE //////////////////////////////////////////////////////////////*/ string public name; string public symbol; uint8 public immutable decimals; /*////////////////////////////////////////////////////////////// ERC20 STORAGE //////////////////////////////////////////////////////////////*/ uint256 public totalSupply; mapping(address => uint256) public balanceOf; mapping(address => mapping(address => uint256)) public allowance; /*////////////////////////////////////////////////////////////// EIP-2612 STORAGE //////////////////////////////////////////////////////////////*/ uint256 internal immutable INITIAL_CHAIN_ID; bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR; mapping(address => uint256) public nonces; /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor( string memory _name, string memory _symbol, uint8 _decimals ) { name = _name; symbol = _symbol; decimals = _decimals; INITIAL_CHAIN_ID = block.chainid; INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator(); } /*////////////////////////////////////////////////////////////// ERC20 LOGIC //////////////////////////////////////////////////////////////*/ function approve(address spender, uint256 amount) public virtual returns (bool) { allowance[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transfer(address to, uint256 amount) public virtual returns (bool) { balanceOf[msg.sender] -= amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[to] += amount; } emit Transfer(msg.sender, to, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual returns (bool) { uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals. if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount; balanceOf[from] -= amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[to] += amount; } emit Transfer(from, to, amount); return true; } /*////////////////////////////////////////////////////////////// EIP-2612 LOGIC //////////////////////////////////////////////////////////////*/ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) public virtual { require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED"); // Unchecked because the only math done is incrementing // the owner's nonce which cannot realistically overflow. unchecked { address recoveredAddress = ecrecover( keccak256( abi.encodePacked( "\x19\x01", DOMAIN_SEPARATOR(), keccak256( abi.encode( keccak256( "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)" ), owner, spender, value, nonces[owner]++, deadline ) ) ) ), v, r, s ); require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER"); allowance[recoveredAddress][spender] = value; } emit Approval(owner, spender, value); } function DOMAIN_SEPARATOR() public view virtual returns (bytes32) { return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator(); } function computeDomainSeparator() internal view virtual returns (bytes32) { return keccak256( abi.encode( keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), keccak256(bytes(name)), keccak256("1"), block.chainid, address(this) ) ); } /*////////////////////////////////////////////////////////////// INTERNAL MINT/BURN LOGIC //////////////////////////////////////////////////////////////*/ function _mint(address to, uint256 amount) internal virtual { totalSupply += amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[to] += amount; } emit Transfer(address(0), to, amount); } function _burn(address from, uint256 amount) internal virtual { balanceOf[from] -= amount; // Cannot underflow because a user's balance // will never be larger than the total supply. unchecked { totalSupply -= amount; } emit Transfer(from, address(0), amount); } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; import {ERC20} from "../tokens/ERC20.sol"; /// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol) /// @dev Use with caution! Some functions in this library knowingly create dirty bits at the destination of the free memory pointer. /// @dev Note that none of the functions in this library check that a token has code at all! That responsibility is delegated to the caller. library SafeTransferLib { /*////////////////////////////////////////////////////////////// ETH OPERATIONS //////////////////////////////////////////////////////////////*/ function safeTransferETH(address to, uint256 amount) internal { bool success; assembly { // Transfer the ETH and store if it succeeded or not. success := call(gas(), to, amount, 0, 0, 0, 0) } require(success, "ETH_TRANSFER_FAILED"); } /*////////////////////////////////////////////////////////////// ERC20 OPERATIONS //////////////////////////////////////////////////////////////*/ function safeTransferFrom( ERC20 token, address from, address to, uint256 amount ) internal { bool success; assembly { // Get a pointer to some free memory. let freeMemoryPointer := mload(0x40) // Write the abi-encoded calldata into memory, beginning with the function selector. mstore(freeMemoryPointer, 0x23b872dd00000000000000000000000000000000000000000000000000000000) mstore(add(freeMemoryPointer, 4), from) // Append the "from" argument. mstore(add(freeMemoryPointer, 36), to) // Append the "to" argument. mstore(add(freeMemoryPointer, 68), amount) // Append the "amount" argument. success := and( // Set success to whether the call reverted, if not we check it either // returned exactly 1 (can't just be non-zero data), or had no return data. or(and(eq(mload(0), 1), gt(returndatasize(), 31)), iszero(returndatasize())), // We use 100 because the length of our calldata totals up like so: 4 + 32 * 3. // We use 0 and 32 to copy up to 32 bytes of return data into the scratch space. // Counterintuitively, this call must be positioned second to the or() call in the // surrounding and() call or else returndatasize() will be zero during the computation. call(gas(), token, 0, freeMemoryPointer, 100, 0, 32) ) } require(success, "TRANSFER_FROM_FAILED"); } function safeTransfer( ERC20 token, address to, uint256 amount ) internal { bool success; assembly { // Get a pointer to some free memory. let freeMemoryPointer := mload(0x40) // Write the abi-encoded calldata into memory, beginning with the function selector. mstore(freeMemoryPointer, 0xa9059cbb00000000000000000000000000000000000000000000000000000000) mstore(add(freeMemoryPointer, 4), to) // Append the "to" argument. mstore(add(freeMemoryPointer, 36), amount) // Append the "amount" argument. success := and( // Set success to whether the call reverted, if not we check it either // returned exactly 1 (can't just be non-zero data), or had no return data. or(and(eq(mload(0), 1), gt(returndatasize(), 31)), iszero(returndatasize())), // We use 68 because the length of our calldata totals up like so: 4 + 32 * 2. // We use 0 and 32 to copy up to 32 bytes of return data into the scratch space. // Counterintuitively, this call must be positioned second to the or() call in the // surrounding and() call or else returndatasize() will be zero during the computation. call(gas(), token, 0, freeMemoryPointer, 68, 0, 32) ) } require(success, "TRANSFER_FAILED"); } function safeApprove( ERC20 token, address to, uint256 amount ) internal { bool success; assembly { // Get a pointer to some free memory. let freeMemoryPointer := mload(0x40) // Write the abi-encoded calldata into memory, beginning with the function selector. mstore(freeMemoryPointer, 0x095ea7b300000000000000000000000000000000000000000000000000000000) mstore(add(freeMemoryPointer, 4), to) // Append the "to" argument. mstore(add(freeMemoryPointer, 36), amount) // Append the "amount" argument. success := and( // Set success to whether the call reverted, if not we check it either // returned exactly 1 (can't just be non-zero data), or had no return data. or(and(eq(mload(0), 1), gt(returndatasize(), 31)), iszero(returndatasize())), // We use 68 because the length of our calldata totals up like so: 4 + 32 * 2. // We use 0 and 32 to copy up to 32 bytes of return data into the scratch space. // Counterintuitively, this call must be positioned second to the or() call in the // surrounding and() call or else returndatasize() will be zero during the computation. call(gas(), token, 0, freeMemoryPointer, 68, 0, 32) ) } require(success, "APPROVE_FAILED"); } }
{ "remappings": [ "ds-test/=lib/solmate/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "solmate/=lib/solmate/src/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_bot","type":"address"},{"internalType":"address","name":"_llama","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint216","name":"amountPerSec","type":"uint216"},{"indexed":false,"internalType":"uint40","name":"starts","type":"uint40"},{"indexed":false,"internalType":"uint40","name":"frequency","type":"uint40"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"WithdrawCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint216","name":"amountPerSec","type":"uint216"},{"indexed":false,"internalType":"uint40","name":"starts","type":"uint40"},{"indexed":false,"internalType":"uint40","name":"frequency","type":"uint40"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"WithdrawExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint216","name":"amountPerSec","type":"uint216"},{"indexed":false,"internalType":"uint40","name":"starts","type":"uint40"},{"indexed":false,"internalType":"uint40","name":"frequency","type":"uint40"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"WithdrawScheduled","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"_calls","type":"bytes[]"}],"name":"batchExecute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bot","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint216","name":"_amountPerSec","type":"uint216"},{"internalType":"uint40","name":"_starts","type":"uint40"},{"internalType":"uint40","name":"_frequency","type":"uint40"}],"name":"calcWithdrawId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"cancelRedirect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint216","name":"_amountPerSec","type":"uint216"},{"internalType":"uint40","name":"_starts","type":"uint40"},{"internalType":"uint40","name":"_frequency","type":"uint40"}],"name":"cancelWithdraw","outputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newBot","type":"address"}],"name":"changeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newLlama","type":"address"}],"name":"changeLlama","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"confirmNewLlama","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"_calls","type":"bytes[]"},{"internalType":"address","name":"_from","type":"address"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint216","name":"_amountPerSec","type":"uint216"},{"internalType":"uint40","name":"_starts","type":"uint40"},{"internalType":"uint40","name":"_frequency","type":"uint40"},{"internalType":"bytes32","name":"_id","type":"bytes32"},{"internalType":"bool","name":"_execute","type":"bool"},{"internalType":"bool","name":"_emitEvent","type":"bool"}],"name":"executeWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"llama","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newLlama","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"owners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"redirects","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint216","name":"_amountPerSec","type":"uint216"},{"internalType":"uint40","name":"_starts","type":"uint40"},{"internalType":"uint40","name":"_frequency","type":"uint40"}],"name":"scheduleWithdraw","outputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"setRedirect","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a0604052600280546001600160a01b031916905561c3506003553480156200002757600080fd5b506040516200151a3803806200151a8339810160408190526200004a916200009e565b6001600160a01b03928316608052600080549284166001600160a01b031993841617905560018054919093169116179055620000e8565b80516001600160a01b03811681146200009957600080fd5b919050565b600080600060608486031215620000b457600080fd5b620000bf8462000081565b9250620000cf6020850162000081565b9150620000df6040850162000081565b90509250925092565b60805161140f6200010b600039600081816103460152610908015261140f6000f3fe6080604052600436106101355760003560e01c80639d97224a116100ab578063ddaea2fe1161006f578063ddaea2fe14610370578063ddc93f371461039f578063ddca3f43146103bf578063e6d8b7dc146103d5578063ea456e7c1461041f578063fb8ad6ff1461043f57600080fd5b80639d97224a146102be578063a01b5271146102de578063bc0d00f014610314578063c45a015514610334578063d0e30db01461036857600080fd5b80633e58e0a0116100fd5780633e58e0a014610214578063590e1ae314610229578063599360de1461023e5780636a1db1bf1461025e5780636e0462b11461027e578063856a65eb1461029e57600080fd5b806310814c371461013a5780631f25cfaf1461017757806327e235e314610199578063316ad930146101d4578063374d26d6146101f4575b600080fd5b34801561014657600080fd5b5060005461015a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561018357600080fd5b50610197610192366004610f25565b610475565b005b3480156101a557600080fd5b506101c66101b4366004610f25565b60046020526000908152604090205481565b60405190815260200161016e565b3480156101e057600080fd5b506101c66101ef366004610f7a565b6104ca565b34801561020057600080fd5b5061019761020f366004610f25565b6105a3565b34801561022057600080fd5b506101976105ef565b34801561023557600080fd5b5061019761065d565b34801561024a57600080fd5b506101c6610259366004610f7a565b610703565b34801561026a57600080fd5b50610197610279366004610ff4565b6107c2565b34801561028a57600080fd5b5060015461015a906001600160a01b031681565b3480156102aa57600080fd5b506101976102b9366004611059565b6107f1565b3480156102ca57600080fd5b5060025461015a906001600160a01b031681565b3480156102ea57600080fd5b5061015a6102f9366004610f25565b6006602052600090815260409020546001600160a01b031681565b34801561032057600080fd5b5061019761032f3660046110a9565b6108b4565b34801561034057600080fd5b5061015a7f000000000000000000000000000000000000000000000000000000000000000081565b610197610bad565b34801561037c57600080fd5b5061019733600090815260066020526040902080546001600160a01b0319169055565b3480156103ab57600080fd5b506101c66103ba366004610f7a565b610c22565b3480156103cb57600080fd5b506101c660035481565b3480156103e157600080fd5b506101976103f0366004610f25565b33600090815260066020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b34801561042b57600080fd5b5061019761043a36600461116a565b610caa565b34801561044b57600080fd5b5061015a61045a366004610ff4565b6005602052600090815260409020546001600160a01b031681565b6001546001600160a01b031633146104a85760405162461bcd60e51b815260040161049f906111c1565b60405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006104da878787878787610c22565b6000818152600560205260409020549091506001600160a01b0316156105335760405162461bcd60e51b815260206004820152600e60248201526d616c72656164792065786973747360901b604482015260640161049f565b6000818152600560205260409081902080546001600160a01b0319163390811790915590517f2964df00d05d867fb39d81ec5ed1d5ab5125691de320bbc5cfc5faf7a550536991610591918a908a908a908a908a908a908a906111e4565b60405180910390a19695505050505050565b6001546001600160a01b031633146105cd5760405162461bcd60e51b815260040161049f906111c1565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031633146106395760405162461bcd60e51b815260206004820152600d60248201526c6e6f74206e6577206c6c616d6160981b604482015260640161049f565b600254600180546001600160a01b0319166001600160a01b03909216919091179055565b33600081815260046020526040808220805490839055905190929083908381818185875af1925050503d80600081146106b2576040519150601f19603f3d011682016040523d82523d6000602084013e6106b7565b606091505b50509050806106ff5760405162461bcd60e51b81526020600482015260146024820152733330b4b632b2103a379039b2b7321032ba3432b960611b604482015260640161049f565b5050565b6000610713878787878787610c22565b6000818152600560205260409020549091506001600160a01b031633146107685760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b604482015260640161049f565b6000818152600560205260409081902080546001600160a01b0319169055517f2d7e851ad23abc91818637874db4164af53ae6d837db0c7d96f847a556ab2f69906105919033908a908a908a908a908a908a908a906111e4565b6001546001600160a01b031633146107ec5760405162461bcd60e51b815260040161049f906111c1565b600355565b6000546001600160a01b0316331461081b5760405162461bcd60e51b815260040161049f9061123d565b6000815b808210156108ae573084848481811061083a5761083a61125e565b905060200281019061084c9190611274565b60405161085a9291906112bb565b600060405180830381855af49150503d8060008114610895576040519150601f19603f3d011682016040523d82523d6000602084013e61089a565b606091505b505050816108a7906112e1565b915061081f565b50505050565b6000546001600160a01b031633146108de5760405162461bcd60e51b815260040161049f9061123d565b8115610b55576040516367420bf360e11b81526001600160a01b038a8116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063ce8417e6906024016040805180830381865afa15801561094e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097291906112fa565b91509150806109c35760405162461bcd60e51b815260206004820152601960248201527f696e76616c6964206c6c616d6170617920636f6e747261637400000000000000604482015260640161049f565b6001600160a01b038981166000908152600660205260409020541615610aef57604051633f053acd60e01b81526000906001600160a01b03841690633f053acd90610a16908e908e908e90600401611334565b606060405180830381865afa158015610a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a579190611360565b50506040516305e959b960e21b81529091506001600160a01b038416906317a566e490610a8c908e908e908e90600401611334565b600060405180830381600087803b158015610aa657600080fd5b505af1158015610aba573d6000803e3d6000fd5b5050506001600160a01b03808c16600090815260066020526040902054610ae992508e8216918d911684610e83565b50610b52565b6040516305e959b960e21b81526001600160a01b038316906317a566e490610b1f908d908d908d90600401611334565b600060405180830381600087803b158015610b3957600080fd5b505af1158015610b4d573d6000803e3d6000fd5b505050505b50505b8015610ba1577ff02b6913a0661fd5a19a298c7bac40f63b16c538b8799cf36812e1224e2e9c608a8a8a8a8a8a8a8a604051610b989897969594939291906111e4565b60405180910390a15b50505050505050505050565b6000546001600160a01b03163303610bfc5760405162461bcd60e51b8152602060048201526012602482015271189bdd0818d85b9b9bdd0819195c1bdcda5d60721b604482015260640161049f565b3360009081526004602052604081208054349290610c1b90849061138e565b9091555050565b6040516bffffffffffffffffffffffff19606088811b8216602084015287811b8216603484015286901b16604882015264ffffffffff19602885901b16605c8201526001600160d81b031960d884811b8216607784015283901b16607c8201526000906081016040516020818303038152906040528051906020012090509695505050505050565b6000546001600160a01b03163314610cd45760405162461bcd60e51b815260040161049f9061123d565b600082815a9050600092505b81831015610d6f5730868685818110610cfb57610cfb61125e565b9050602002810190610d0d9190611274565b604051610d1b9291906112bb565b600060405180830381855af49150503d8060008114610d56576040519150601f19603f3d011682016040523d82523d6000602084013e610d5b565b606091505b50505082610d68906112e1565b9250610ce0565b60006003545a610d7f90846113a7565b610d8b9061520861138e565b610d95919061138e565b90506000610da33a836113ba565b6001600160a01b038716600090815260046020526040812080549293508392909190610dd09084906113a7565b9091555050600080546040516001600160a01b039091169083908381818185875af1925050503d8060008114610e22576040519150601f19603f3d011682016040523d82523d6000602084013e610e27565b606091505b5050905080610e785760405162461bcd60e51b815260206004820152601b60248201527f6661696c656420746f2073656e6420657468657220746f20626f740000000000604482015260640161049f565b505050505050505050565b60006040516323b872dd60e01b81528460048201528360248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080610f065760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b604482015260640161049f565b5050505050565b6001600160a01b0381168114610f2257600080fd5b50565b600060208284031215610f3757600080fd5b8135610f4281610f0d565b9392505050565b80356001600160d81b0381168114610f6057600080fd5b919050565b803564ffffffffff81168114610f6057600080fd5b60008060008060008060c08789031215610f9357600080fd5b8635610f9e81610f0d565b95506020870135610fae81610f0d565b94506040870135610fbe81610f0d565b9350610fcc60608801610f49565b9250610fda60808801610f65565b9150610fe860a08801610f65565b90509295509295509295565b60006020828403121561100657600080fd5b5035919050565b60008083601f84011261101f57600080fd5b50813567ffffffffffffffff81111561103757600080fd5b6020830191508360208260051b850101111561105257600080fd5b9250929050565b6000806020838503121561106c57600080fd5b823567ffffffffffffffff81111561108357600080fd5b61108f8582860161100d565b90969095509350505050565b8015158114610f2257600080fd5b6000806000806000806000806000806101408b8d0312156110c957600080fd5b8a356110d481610f0d565b995060208b01356110e481610f0d565b985060408b01356110f481610f0d565b975060608b013561110481610f0d565b965061111260808c01610f49565b955061112060a08c01610f65565b945061112e60c08c01610f65565b935060e08b013592506101008b01356111468161109b565b91506101208b01356111578161109b565b809150509295989b9194979a5092959850565b60008060006040848603121561117f57600080fd5b833567ffffffffffffffff81111561119657600080fd5b6111a28682870161100d565b90945092505060208401356111b681610f0d565b809150509250925092565b6020808252600990820152686e6f74206c6c616d6160b81b604082015260600190565b6001600160a01b039889168152968816602088015294871660408701529290951660608501526001600160d81b0316608084015264ffffffffff93841660a084015290921660c082015260e08101919091526101000190565b6020808252600790820152661b9bdd08189bdd60ca1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261128b57600080fd5b83018035915067ffffffffffffffff8211156112a657600080fd5b60200191503681900382131561105257600080fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b6000600182016112f3576112f36112cb565b5060010190565b6000806040838503121561130d57600080fd5b825161131881610f0d565b60208401519092506113298161109b565b809150509250929050565b6001600160a01b0393841681529190921660208201526001600160d81b03909116604082015260600190565b60008060006060848603121561137557600080fd5b8351925060208401519150604084015190509250925092565b808201808211156113a1576113a16112cb565b92915050565b818103818111156113a1576113a16112cb565b60008160001904831182151516156113d4576113d46112cb565b50029056fea26469706673582212209425bbcfd43ee23f3629d3270c2faa4a5f9b0987bfaef7ed18c6c50e79895c5a64736f6c63430008100033000000000000000000000000de1c04855c2828431ba637675b6929a684f84c7f000000000000000000000000a43bc77e5362a81b3ab7accd8b7812a981bda478000000000000000000000000ad730d8e730c99e205a371436ce2e5acfc38d7f9
Deployed Bytecode
0x6080604052600436106101355760003560e01c80639d97224a116100ab578063ddaea2fe1161006f578063ddaea2fe14610370578063ddc93f371461039f578063ddca3f43146103bf578063e6d8b7dc146103d5578063ea456e7c1461041f578063fb8ad6ff1461043f57600080fd5b80639d97224a146102be578063a01b5271146102de578063bc0d00f014610314578063c45a015514610334578063d0e30db01461036857600080fd5b80633e58e0a0116100fd5780633e58e0a014610214578063590e1ae314610229578063599360de1461023e5780636a1db1bf1461025e5780636e0462b11461027e578063856a65eb1461029e57600080fd5b806310814c371461013a5780631f25cfaf1461017757806327e235e314610199578063316ad930146101d4578063374d26d6146101f4575b600080fd5b34801561014657600080fd5b5060005461015a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561018357600080fd5b50610197610192366004610f25565b610475565b005b3480156101a557600080fd5b506101c66101b4366004610f25565b60046020526000908152604090205481565b60405190815260200161016e565b3480156101e057600080fd5b506101c66101ef366004610f7a565b6104ca565b34801561020057600080fd5b5061019761020f366004610f25565b6105a3565b34801561022057600080fd5b506101976105ef565b34801561023557600080fd5b5061019761065d565b34801561024a57600080fd5b506101c6610259366004610f7a565b610703565b34801561026a57600080fd5b50610197610279366004610ff4565b6107c2565b34801561028a57600080fd5b5060015461015a906001600160a01b031681565b3480156102aa57600080fd5b506101976102b9366004611059565b6107f1565b3480156102ca57600080fd5b5060025461015a906001600160a01b031681565b3480156102ea57600080fd5b5061015a6102f9366004610f25565b6006602052600090815260409020546001600160a01b031681565b34801561032057600080fd5b5061019761032f3660046110a9565b6108b4565b34801561034057600080fd5b5061015a7f000000000000000000000000de1c04855c2828431ba637675b6929a684f84c7f81565b610197610bad565b34801561037c57600080fd5b5061019733600090815260066020526040902080546001600160a01b0319169055565b3480156103ab57600080fd5b506101c66103ba366004610f7a565b610c22565b3480156103cb57600080fd5b506101c660035481565b3480156103e157600080fd5b506101976103f0366004610f25565b33600090815260066020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b34801561042b57600080fd5b5061019761043a36600461116a565b610caa565b34801561044b57600080fd5b5061015a61045a366004610ff4565b6005602052600090815260409020546001600160a01b031681565b6001546001600160a01b031633146104a85760405162461bcd60e51b815260040161049f906111c1565b60405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006104da878787878787610c22565b6000818152600560205260409020549091506001600160a01b0316156105335760405162461bcd60e51b815260206004820152600e60248201526d616c72656164792065786973747360901b604482015260640161049f565b6000818152600560205260409081902080546001600160a01b0319163390811790915590517f2964df00d05d867fb39d81ec5ed1d5ab5125691de320bbc5cfc5faf7a550536991610591918a908a908a908a908a908a908a906111e4565b60405180910390a19695505050505050565b6001546001600160a01b031633146105cd5760405162461bcd60e51b815260040161049f906111c1565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031633146106395760405162461bcd60e51b815260206004820152600d60248201526c6e6f74206e6577206c6c616d6160981b604482015260640161049f565b600254600180546001600160a01b0319166001600160a01b03909216919091179055565b33600081815260046020526040808220805490839055905190929083908381818185875af1925050503d80600081146106b2576040519150601f19603f3d011682016040523d82523d6000602084013e6106b7565b606091505b50509050806106ff5760405162461bcd60e51b81526020600482015260146024820152733330b4b632b2103a379039b2b7321032ba3432b960611b604482015260640161049f565b5050565b6000610713878787878787610c22565b6000818152600560205260409020549091506001600160a01b031633146107685760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b604482015260640161049f565b6000818152600560205260409081902080546001600160a01b0319169055517f2d7e851ad23abc91818637874db4164af53ae6d837db0c7d96f847a556ab2f69906105919033908a908a908a908a908a908a908a906111e4565b6001546001600160a01b031633146107ec5760405162461bcd60e51b815260040161049f906111c1565b600355565b6000546001600160a01b0316331461081b5760405162461bcd60e51b815260040161049f9061123d565b6000815b808210156108ae573084848481811061083a5761083a61125e565b905060200281019061084c9190611274565b60405161085a9291906112bb565b600060405180830381855af49150503d8060008114610895576040519150601f19603f3d011682016040523d82523d6000602084013e61089a565b606091505b505050816108a7906112e1565b915061081f565b50505050565b6000546001600160a01b031633146108de5760405162461bcd60e51b815260040161049f9061123d565b8115610b55576040516367420bf360e11b81526001600160a01b038a8116600483015260009182917f000000000000000000000000de1c04855c2828431ba637675b6929a684f84c7f169063ce8417e6906024016040805180830381865afa15801561094e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097291906112fa565b91509150806109c35760405162461bcd60e51b815260206004820152601960248201527f696e76616c6964206c6c616d6170617920636f6e747261637400000000000000604482015260640161049f565b6001600160a01b038981166000908152600660205260409020541615610aef57604051633f053acd60e01b81526000906001600160a01b03841690633f053acd90610a16908e908e908e90600401611334565b606060405180830381865afa158015610a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a579190611360565b50506040516305e959b960e21b81529091506001600160a01b038416906317a566e490610a8c908e908e908e90600401611334565b600060405180830381600087803b158015610aa657600080fd5b505af1158015610aba573d6000803e3d6000fd5b5050506001600160a01b03808c16600090815260066020526040902054610ae992508e8216918d911684610e83565b50610b52565b6040516305e959b960e21b81526001600160a01b038316906317a566e490610b1f908d908d908d90600401611334565b600060405180830381600087803b158015610b3957600080fd5b505af1158015610b4d573d6000803e3d6000fd5b505050505b50505b8015610ba1577ff02b6913a0661fd5a19a298c7bac40f63b16c538b8799cf36812e1224e2e9c608a8a8a8a8a8a8a8a604051610b989897969594939291906111e4565b60405180910390a15b50505050505050505050565b6000546001600160a01b03163303610bfc5760405162461bcd60e51b8152602060048201526012602482015271189bdd0818d85b9b9bdd0819195c1bdcda5d60721b604482015260640161049f565b3360009081526004602052604081208054349290610c1b90849061138e565b9091555050565b6040516bffffffffffffffffffffffff19606088811b8216602084015287811b8216603484015286901b16604882015264ffffffffff19602885901b16605c8201526001600160d81b031960d884811b8216607784015283901b16607c8201526000906081016040516020818303038152906040528051906020012090509695505050505050565b6000546001600160a01b03163314610cd45760405162461bcd60e51b815260040161049f9061123d565b600082815a9050600092505b81831015610d6f5730868685818110610cfb57610cfb61125e565b9050602002810190610d0d9190611274565b604051610d1b9291906112bb565b600060405180830381855af49150503d8060008114610d56576040519150601f19603f3d011682016040523d82523d6000602084013e610d5b565b606091505b50505082610d68906112e1565b9250610ce0565b60006003545a610d7f90846113a7565b610d8b9061520861138e565b610d95919061138e565b90506000610da33a836113ba565b6001600160a01b038716600090815260046020526040812080549293508392909190610dd09084906113a7565b9091555050600080546040516001600160a01b039091169083908381818185875af1925050503d8060008114610e22576040519150601f19603f3d011682016040523d82523d6000602084013e610e27565b606091505b5050905080610e785760405162461bcd60e51b815260206004820152601b60248201527f6661696c656420746f2073656e6420657468657220746f20626f740000000000604482015260640161049f565b505050505050505050565b60006040516323b872dd60e01b81528460048201528360248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080610f065760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b604482015260640161049f565b5050505050565b6001600160a01b0381168114610f2257600080fd5b50565b600060208284031215610f3757600080fd5b8135610f4281610f0d565b9392505050565b80356001600160d81b0381168114610f6057600080fd5b919050565b803564ffffffffff81168114610f6057600080fd5b60008060008060008060c08789031215610f9357600080fd5b8635610f9e81610f0d565b95506020870135610fae81610f0d565b94506040870135610fbe81610f0d565b9350610fcc60608801610f49565b9250610fda60808801610f65565b9150610fe860a08801610f65565b90509295509295509295565b60006020828403121561100657600080fd5b5035919050565b60008083601f84011261101f57600080fd5b50813567ffffffffffffffff81111561103757600080fd5b6020830191508360208260051b850101111561105257600080fd5b9250929050565b6000806020838503121561106c57600080fd5b823567ffffffffffffffff81111561108357600080fd5b61108f8582860161100d565b90969095509350505050565b8015158114610f2257600080fd5b6000806000806000806000806000806101408b8d0312156110c957600080fd5b8a356110d481610f0d565b995060208b01356110e481610f0d565b985060408b01356110f481610f0d565b975060608b013561110481610f0d565b965061111260808c01610f49565b955061112060a08c01610f65565b945061112e60c08c01610f65565b935060e08b013592506101008b01356111468161109b565b91506101208b01356111578161109b565b809150509295989b9194979a5092959850565b60008060006040848603121561117f57600080fd5b833567ffffffffffffffff81111561119657600080fd5b6111a28682870161100d565b90945092505060208401356111b681610f0d565b809150509250925092565b6020808252600990820152686e6f74206c6c616d6160b81b604082015260600190565b6001600160a01b039889168152968816602088015294871660408701529290951660608501526001600160d81b0316608084015264ffffffffff93841660a084015290921660c082015260e08101919091526101000190565b6020808252600790820152661b9bdd08189bdd60ca1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261128b57600080fd5b83018035915067ffffffffffffffff8211156112a657600080fd5b60200191503681900382131561105257600080fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b6000600182016112f3576112f36112cb565b5060010190565b6000806040838503121561130d57600080fd5b825161131881610f0d565b60208401519092506113298161109b565b809150509250929050565b6001600160a01b0393841681529190921660208201526001600160d81b03909116604082015260600190565b60008060006060848603121561137557600080fd5b8351925060208401519150604084015190509250925092565b808201808211156113a1576113a16112cb565b92915050565b818103818111156113a1576113a16112cb565b60008160001904831182151516156113d4576113d46112cb565b50029056fea26469706673582212209425bbcfd43ee23f3629d3270c2faa4a5f9b0987bfaef7ed18c6c50e79895c5a64736f6c63430008100033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000de1c04855c2828431ba637675b6929a684f84c7f000000000000000000000000a43bc77e5362a81b3ab7accd8b7812a981bda478000000000000000000000000ad730d8e730c99e205a371436ce2e5acfc38d7f9
-----Decoded View---------------
Arg [0] : _factory (address): 0xde1C04855c2828431ba637675B6929A684f84C7F
Arg [1] : _bot (address): 0xA43bC77e5362a81b3AB7acCD8B7812a981bdA478
Arg [2] : _llama (address): 0xad730D8e730c99E205A371436cE2e5aCFC38D7F9
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000de1c04855c2828431ba637675b6929a684f84c7f
Arg [1] : 000000000000000000000000a43bc77e5362a81b3ab7accd8b7812a981bda478
Arg [2] : 000000000000000000000000ad730d8e730c99e205a371436ce2e5acfc38d7f9
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.