Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
More Info
Private Name Tags
ContractCreator
Latest 8 from a total of 8 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Cancel | 23274194 | 70 days ago | IN | 0 ETH | 0.00003915 | ||||
| Create Withdrawa... | 23246968 | 74 days ago | IN | 0 ETH | 0.0000387 | ||||
| Withdraw | 23183281 | 83 days ago | IN | 0.00076695 ETH | 0.00024449 | ||||
| Confirm | 23183192 | 83 days ago | IN | 0 ETH | 0.00050982 | ||||
| Confirm | 23183071 | 83 days ago | IN | 0 ETH | 0.00037343 | ||||
| Set Signer3 | 23176177 | 84 days ago | IN | 0 ETH | 0.00014091 | ||||
| Set Signer2 | 23176174 | 84 days ago | IN | 0 ETH | 0.00013734 | ||||
| Create Withdrawa... | 23138311 | 89 days ago | IN | 0 ETH | 0.00013092 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
EfixiiMultisig
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.20;
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
/**
* @author Abbey Technology GmbH on behalf of https://efixii.io/
*
* @notice (i) This is the Upstream USDC hot-wallet cryptocurrency-bridge contract that accepts Efixii users'
* USDC transfers-in and mints 1-for-1 the corresponding amount of US Dollars on Efixii.
*
* (ii) This contract also allows an Efixii user to withdraw their funds back to USDC.
*
* The fees parameter associated with each multisig withdrawal approval-step is the gas-cost in Eth
* of the confirmation transactions which the user pays at the end when completing their withdrawal.
* That is, Efixii multisig-wallets used for withdrawals pay the gas up-front and the user reimburses
* that amount at the end, making the entire process a net zero cost for Efixii, with no USDC
* withdrawal fees for the user.
*/
contract EfixiiMultisig is Ownable {
/**
* @notice The type used to track withdrawal requests.
*/
struct Withdrawal {
uint256 amount;
uint256 fee; // in wei (ETH)
// 2 of the 4 potential signers is enough
address signer1;
address signer2;
}
/**
* @notice The well-known public crypto contract. Cannot change.
*/
IERC20Metadata public crypto;
/**
* @notice The wallet that is used to create Withdrawal objects and to move
* Eth back to signer wallets so they can keep signing transactions.
*/
address public adminWallet;
// The full set of all signers, only 2 are needed to complete a withdrawal.
address public signer1;
address public signer2;
address public signer3;
address public signer4;
function decimals() external view returns (uint256) {
return crypto.decimals();
}
function symbol() external view returns (string memory) {
return crypto.symbol();
}
/**
* The current limit for each approval account. For larger withdrawals
* the limits will be temporarily increased before being reduced back to
* a smaller/safer limit. This process requires back office coordination.
*/
mapping (address => uint256) public limits;
/**
* @notice The collection of all pending withdrawals, only one can be active
* per wallet at a time.
*/
mapping (address => Withdrawal) public withdrawals;
modifier onlyAdmin {
require(_msgSender() == adminWallet, "You are not Admin.");
_;
}
// The three events to cover the lifecycle of a withdrawal. Approved happens for
// each approver, in this contract that will be at least twice.
event WithdrawalCreated(address indexed who, uint256 quantity, uint256 fee);
event WithdrawalApproved(address indexed who, address indexed approver, uint256 fee);
event WithdrawalComplete(address indexed who, uint256 quantity, uint256 fee);
event WithdrawalCancelled(address indexed who);
/**
* @notice Create an instance of this contract.
*
* @param cryptoAddress The address of the well-known Crypto Currency contract, cannot be changed after contract creation.
* @param admin Initial admin wallet used to initiate the withdrawal.
* @param addr1 The first address that can approve a withdrawal.
* @param addr2 The second address that can approve a withdrawal.
* @param addr3 The third address that can approve a withdrawal.
* @param addr4 The fourth address that can approve a withdrawal.
* @param limit The approval limit of each signer, in wei. e.g. 10 USDC (6 digits precision) = 10000000.
*/
constructor(address cryptoAddress, address admin, address addr1, address addr2, address addr3, address addr4, uint256 limit) {
require(cryptoAddress != address(0), "Crypto contract cannot be null");
require(admin != address(0), "Admin address cannot be null");
require(addr1 != address(0), "Signer 1 cannot be null");
require(addr2 != address(0), "Signer 2 cannot be null");
require(addr3 != address(0), "Signer 3 cannot be null");
require(addr4 != address(0), "Signer 4 cannot be null");
require(limit != 0, "Approve limit cannot be zero");
crypto = IERC20Metadata(cryptoAddress);
adminWallet = admin;
signer1 = addr1;
limits[signer1] = limit;
signer2 = addr2;
limits[signer2] = limit;
signer3 = addr3;
limits[signer3] = limit;
signer4 = addr4;
limits[signer4] = limit;
}
/**
* @param addr The new address to give the admin wallet.
*/
function setAdminWallet(address addr) external onlyOwner
{
require(addr != address(0), "Admin address cannot be null");
adminWallet = addr;
}
/**
* @param addr The new address to give the first approval wallet.
* @param limit The approval limit for this account.
*
* @dev No need to protect against duplicate addresses, the logic of the other functions
* prevents a single wallet fully approving a withdrawal.
*/
function setSigner1(address addr, uint256 limit) external onlyOwner
{
require(addr != address(0), "Signer 1 cannot be null");
signer1 = addr;
limits[signer1] = limit;
}
/**
* @param addr The new address to give the second approval wallet.
* @param limit The approval limit for this account.
*/
function setSigner2(address addr, uint256 limit) external onlyOwner
{
require(addr != address(0), "Signer 2 cannot be null");
signer2 = addr;
limits[signer2] = limit;
}
/**
* @param addr The new address to give the third approval wallet.
* @param limit The approval limit for this account.
*/
function setSigner3(address addr, uint256 limit) external onlyOwner
{
require(addr != address(0), "Signer 3 cannot be null");
signer3 = addr;
limits[signer3] = limit;
}
/**
* @param addr The new address to give the fourth approval wallet.
* @param limit The approval limit for this account.
*/
function setSigner4(address addr, uint256 limit) external onlyOwner
{
require(addr != address(0), "Signer 4 cannot be null");
signer4 = addr;
limits[signer4] = limit;
}
/**
* @notice Get the withdrawal amount pending for the caller.
*/
function getAmount() external view returns (uint256) {
return getAmountFor(_msgSender());
}
/**
* @notice Get the withdrawal amount pending for the specified address.
*/
function getAmountFor(address payee) public view returns (uint256) {
require(withdrawals[payee].amount != 0, "No withdrawal pending.");
Withdrawal memory withdrawal = withdrawals[payee];
return withdrawal.amount;
}
/**
* @notice Get the withdrawal fee pending for the caller.
*/
function getFee() external view returns (uint256) {
return getFeeFor(_msgSender());
}
/**
* @notice Get the withdrawal fee pending for the specified address.
*/
function getFeeFor(address payee) public view returns (uint256) {
require(withdrawals[payee].amount != 0, "No withdrawal pending.");
Withdrawal memory withdrawal = withdrawals[payee];
return withdrawal.fee;
}
/**
* @notice Get the number of approvals remaining before the withdrawal can complete
* for the current wallet.
*/
function getRemainingConfirmations() external view returns (uint256) {
return getRemainingConfirmationsFor(_msgSender());
}
/**
* @notice Get the number of approvals remaining before the withdrawal can complete
* for the specified wallet.
*/
function getRemainingConfirmationsFor(address payee) public view returns (uint256) {
require(withdrawals[payee].amount != 0, "No withdrawal pending.");
Withdrawal memory withdrawal = withdrawals[payee];
if (withdrawal.signer1 == address(0)) return 2;
if (withdrawal.signer2 == address(0)) return 1;
return 0;
}
/**
* @notice Create a new withdrawal for the payee. One must not already exist (no overwrite
* and no multiple withdrawals in parallel).
*
* @param payee The recipient of the withdrawal.
* @param amount The amount to withdraw, in wei.
* @param fee The Eth transaction cost (gas Gwei * gas used) to create this withdrawal.
*/
function createWithdrawal(address payee, uint256 amount, uint256 fee) external onlyAdmin {
require(withdrawals[payee].amount == 0, "One payment to a payee at a time.");
require(amount > 0, "Invalid amount.");
require(fee > 0, "Invalid fee.");
withdrawals[payee] = Withdrawal(amount, fee, address(0), address(0));
emit WithdrawalCreated(payee, amount, fee);
}
/**
* @notice One of the four multisig wallets confirms that this is a valid withdrawal.
* Only after two separate multisig wallets confirm will user be able to complete the
* withdrawal process.
*
* @param payee The address performing the withdrawal.
* @param fee The Eth transaction cost (gas Gwei * gas used) to confirm this withdrawal.
*/
function confirm(address payee, uint256 fee) external {
require(_msgSender() == signer1 || _msgSender() == signer2 ||
_msgSender() == signer3 || _msgSender() == signer4, "Invalid approver.");
require(withdrawals[payee].amount != 0, "No withdrawal pending.");
Withdrawal memory withdrawal = withdrawals[payee];
require(limits[_msgSender()] >= withdrawal.amount, "Amount above approval limit.");
require(withdrawal.signer1 == address(0) || withdrawal.signer2 == address(0), "Withdrawal already confirmed.");
require(fee > 0, "Invalid fee.");
if (withdrawal.signer1 == address(0)) {
withdrawals[payee].signer1 = _msgSender();
} else if (withdrawal.signer1 == _msgSender()) {
revert("Address already approved this withdrawal.");
} else if (withdrawal.signer2 == address(0)) {
withdrawals[payee].signer2 = _msgSender();
}
withdrawals[payee].fee = withdrawals[payee].fee + fee;
emit WithdrawalApproved(payee, _msgSender(), fee);
}
/**
* @notice The user completes the withdrawal after 2 multisigs.
*
* @dev Note the fee is paid directly by the caller, not subtracted from the amount to protect
* the user from excessive fees.
*/
function withdraw() external payable {
require(withdrawals[_msgSender()].amount != 0, "No withdrawal pending.");
Withdrawal memory withdrawal = withdrawals[_msgSender()];
require(withdrawal.signer1 != address(0) && withdrawal.signer2 != address(0), "Pending confirmation.");
require(msg.value >= withdrawal.fee, "Insufficient fee.");
require(crypto.balanceOf(address(this)) >= withdrawal.amount, "Insufficient balance in this contract, please try later.");
uint256 amount = withdrawal.amount;
withdrawals[_msgSender()] = Withdrawal(0, 0, address(0), address(0));
if(!crypto.transfer(_msgSender(), amount))
revert("Crypto transfer failed");
emit WithdrawalComplete(_msgSender(), amount, withdrawal.fee);
}
/**
* @notice Cancel a pending withdrawal. Back-office admin function.
*
* @param payee The address of the payee having the withdrawal cancelled.
*/
function cancel(address payee) external onlyAdmin {
require(withdrawals[payee].amount != 0, "No withdrawal pending.");
withdrawals[payee] = Withdrawal(0, 0, address(0), address(0));
emit WithdrawalCancelled(payee);
}
/**
* @notice Transfer the paid-in Eth fees back out to signers wallets.
*
* @param to The address to send the Ether from this contract to.
* @param amount The amount of Eth to transfer.
*/
function transfer(address payable to, uint256 amount) external onlyAdmin returns (bool) {
require(to != address(0), "Cannot transfer to null");
require(amount != 0, "Cannot transfer zero");
to.transfer(amount);
return true;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.0;
import "../IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @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);
/**
* @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 `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, 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 `from` to `to` 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 from,
address to,
uint256 amount
) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"cryptoAddress","type":"address"},{"internalType":"address","name":"admin","type":"address"},{"internalType":"address","name":"addr1","type":"address"},{"internalType":"address","name":"addr2","type":"address"},{"internalType":"address","name":"addr3","type":"address"},{"internalType":"address","name":"addr4","type":"address"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"who","type":"address"},{"indexed":true,"internalType":"address","name":"approver","type":"address"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"WithdrawalApproved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"who","type":"address"}],"name":"WithdrawalCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"who","type":"address"},{"indexed":false,"internalType":"uint256","name":"quantity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"WithdrawalComplete","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"who","type":"address"},{"indexed":false,"internalType":"uint256","name":"quantity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"WithdrawalCreated","type":"event"},{"inputs":[],"name":"adminWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"confirm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"createWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"crypto","outputs":[{"internalType":"contract IERC20Metadata","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"getAmountFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"getFeeFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRemainingConfirmations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"getRemainingConfirmationsFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"limits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setAdminWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"setSigner1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"setSigner2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"setSigner3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"setSigner4","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"signer1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"signer2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"signer3","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"signer4","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"withdrawals","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"address","name":"signer1","type":"address"},{"internalType":"address","name":"signer2","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
608060405234801562000010575f80fd5b5060405162001e5938038062001e598339810160408190526200003391620003a5565b6200003e336200033a565b6001600160a01b0387166200009a5760405162461bcd60e51b815260206004820152601e60248201527f43727970746f20636f6e74726163742063616e6e6f74206265206e756c6c000060448201526064015b60405180910390fd5b6001600160a01b038616620000f25760405162461bcd60e51b815260206004820152601c60248201527f41646d696e20616464726573732063616e6e6f74206265206e756c6c00000000604482015260640162000091565b6001600160a01b0385166200014a5760405162461bcd60e51b815260206004820152601760248201527f5369676e657220312063616e6e6f74206265206e756c6c000000000000000000604482015260640162000091565b6001600160a01b038416620001a25760405162461bcd60e51b815260206004820152601760248201527f5369676e657220322063616e6e6f74206265206e756c6c000000000000000000604482015260640162000091565b6001600160a01b038316620001fa5760405162461bcd60e51b815260206004820152601760248201527f5369676e657220332063616e6e6f74206265206e756c6c000000000000000000604482015260640162000091565b6001600160a01b038216620002525760405162461bcd60e51b815260206004820152601760248201527f5369676e657220342063616e6e6f74206265206e756c6c000000000000000000604482015260640162000091565b805f03620002a35760405162461bcd60e51b815260206004820152601c60248201527f417070726f7665206c696d69742063616e6e6f74206265207a65726f00000000604482015260640162000091565b600180546001600160a01b039889166001600160a01b031991821617909155600280549789169782169790971790965560038054958816958716861790555f948552600760205260408086208290556004805495891695881686179055938552838520819055600580549388169387168417905591845282842082905560068054919096169416841790945591815220556200042c565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620003a0575f80fd5b919050565b5f805f805f805f60e0888a031215620003bc575f80fd5b620003c78862000389565b9650620003d76020890162000389565b9550620003e76040890162000389565b9450620003f76060890162000389565b9350620004076080890162000389565b92506200041760a0890162000389565b915060c0880151905092959891949750929550565b611a1f806200043a5f395ff3fe6080604052600436106101ba575f3560e01c80634aba7ea4116100f2578063a5fe5d1811610092578063ced72f8711610062578063ced72f8714610532578063d321fe2914610546578063d7ca01b51461055a578063f2fde38b14610579575f80fd5b8063a5fe5d18146104a6578063a9059cbb146104c5578063b7a6e4db146104f4578063c9e48c2f14610513575f80fd5b8063715018a6116100cd578063715018a6146103d95780637a9262a2146103ed5780638da5cb5b1461046957806395d89b4114610485575f80fd5b80634aba7ea41461037c5780634c33fe941461039b578063650fa7c8146103ba575f80fd5b8063357d999f1161015d5780633ccfd60b116101385780633ccfd60b146103175780633eeb92f61461031f578063465775d71461033e5780634822c37c1461035d575f80fd5b8063357d999f146102ba57806336b19cd7146102d957806338c0ac5f146102f8575f80fd5b806325c9b3eb1161019857806325c9b3eb14610254578063313ce56714610268578063341072821461027c578063350829331461029b575f80fd5b8063204d52eb146101be57806320d7bec1146101df578063258878cd1461021d575b5f80fd5b3480156101c9575f80fd5b506101dd6101d836600461178a565b610598565b005b3480156101ea575f80fd5b5061020a6101f93660046117b4565b60076020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610228575f80fd5b5060065461023c906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b34801561025f575f80fd5b5061020a61062b565b348015610273575f80fd5b5061020a61063a565b348015610287575f80fd5b5060035461023c906001600160a01b031681565b3480156102a6575f80fd5b506101dd6102b53660046117b4565b6106ad565b3480156102c5575f80fd5b5061020a6102d43660046117b4565b61072d565b3480156102e4575f80fd5b5060025461023c906001600160a01b031681565b348015610303575f80fd5b5060045461023c906001600160a01b031681565b6101dd6107e0565b34801561032a575f80fd5b5060055461023c906001600160a01b031681565b348015610349575f80fd5b506101dd61035836600461178a565b610b5a565b348015610368575f80fd5b506101dd61037736600461178a565b610be8565b348015610387575f80fd5b506101dd6103963660046117d6565b610c76565b3480156103a6575f80fd5b506101dd6103b53660046117b4565b610e47565b3480156103c5575f80fd5b5060015461023c906001600160a01b031681565b3480156103e4575f80fd5b506101dd610f4e565b3480156103f8575f80fd5b5061043a6104073660046117b4565b60086020525f90815260409020805460018201546002830154600390930154919290916001600160a01b03918216911684565b6040805194855260208501939093526001600160a01b0391821692840192909252166060820152608001610214565b348015610474575f80fd5b505f546001600160a01b031661023c565b348015610490575f80fd5b50610499610f61565b604051610214919061182a565b3480156104b1575f80fd5b5061020a6104c03660046117b4565b610fcf565b3480156104d0575f80fd5b506104e46104df36600461178a565b611059565b6040519015158152602001610214565b3480156104ff575f80fd5b5061020a61050e3660046117b4565b611169565b34801561051e575f80fd5b506101dd61052d36600461178a565b6111f1565b34801561053d575f80fd5b5061020a61127f565b348015610551575f80fd5b5061020a611289565b348015610565575f80fd5b506101dd61057436600461178a565b611293565b348015610584575f80fd5b506101dd6105933660046117b4565b611655565b6105a06116ce565b6001600160a01b0382166105fb5760405162461bcd60e51b815260206004820152601760248201527f5369676e657220312063616e6e6f74206265206e756c6c00000000000000000060448201526064015b60405180910390fd5b600380546001600160a01b039093166001600160a01b0319909316831790555f9182526007602052604090912055565b5f6106353361072d565b905090565b6001546040805163313ce56760e01b815290515f926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610681573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a5919061185c565b60ff16905090565b6106b56116ce565b6001600160a01b03811661070b5760405162461bcd60e51b815260206004820152601c60248201527f41646d696e20616464726573732063616e6e6f74206265206e756c6c0000000060448201526064016105f2565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381165f9081526008602052604081205481036107635760405162461bcd60e51b81526004016105f29061187c565b6001600160a01b038083165f90815260086020908152604091829020825160808101845281548152600182015492810192909252600281015484169282018390526003015490921660608301526107bd5750600292915050565b60608101516001600160a01b03166107d85750600192915050565b505f92915050565b335f90815260086020526040812054900361080d5760405162461bcd60e51b81526004016105f29061187c565b335f9081526008602090815260409182902082516080810184528154815260018201549281019290925260028101546001600160a01b039081169383018490526003909101541660608201529015801590610874575060608101516001600160a01b031615155b6108b85760405162461bcd60e51b81526020600482015260156024820152742832b73234b7339031b7b73334b936b0ba34b7b71760591b60448201526064016105f2565b80602001513410156109005760405162461bcd60e51b815260206004820152601160248201527024b739bab33334b1b4b2b73a103332b29760791b60448201526064016105f2565b80516001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610948573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061096c91906118ac565b10156109e05760405162461bcd60e51b815260206004820152603860248201527f496e73756666696369656e742062616c616e636520696e207468697320636f6e60448201527f74726163742c20706c6561736520747279206c617465722e000000000000000060648201526084016105f2565b8051604080516080810182525f80825260208083018281528385018381526060850184815233808652600890945295909320935184555160018085019190915591516002840180546001600160a01b03199081166001600160a01b03938416179091559451600390940180549095169381169390931790935554169063a9059cbb906040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610aac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad091906118c3565b610b155760405162461bcd60e51b815260206004820152601660248201527510dc9e5c1d1bc81d1c985b9cd9995c8819985a5b195960521b60448201526064016105f2565b602080830151604080518481529283019190915233917fcbc30e520b47f25934e3caa0d827b8cb3e61863b7762ea111ec852fd5c81d8f6910160405180910390a25050565b610b626116ce565b6001600160a01b038216610bb85760405162461bcd60e51b815260206004820152601760248201527f5369676e657220342063616e6e6f74206265206e756c6c00000000000000000060448201526064016105f2565b600680546001600160a01b039093166001600160a01b0319909316831790555f9182526007602052604090912055565b610bf06116ce565b6001600160a01b038216610c465760405162461bcd60e51b815260206004820152601760248201527f5369676e657220332063616e6e6f74206265206e756c6c00000000000000000060448201526064016105f2565b600580546001600160a01b039093166001600160a01b0319909316831790555f9182526007602052604090912055565b6002546001600160a01b0316336001600160a01b031614610ca95760405162461bcd60e51b81526004016105f2906118e2565b6001600160a01b0383165f9081526008602052604090205415610d185760405162461bcd60e51b815260206004820152602160248201527f4f6e65207061796d656e7420746f206120706179656520617420612074696d656044820152601760f91b60648201526084016105f2565b5f8211610d595760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b21030b6b7bab73a1760891b60448201526064016105f2565b5f8111610d975760405162461bcd60e51b815260206004820152600c60248201526b24b73b30b634b2103332b29760a11b60448201526064016105f2565b6040805160808101825283815260208082018481525f838501818152606085018281526001600160a01b038a81168085526008875293889020965187559351600187015590516002860180549185166001600160a01b0319928316179055905160039095018054959093169416939093179055825185815290810184905290917fec43a61e18a9ddee91c6f8b5b15768a560139e4ee717e86e492c40b84be058d2910160405180910390a2505050565b6002546001600160a01b0316336001600160a01b031614610e7a5760405162461bcd60e51b81526004016105f2906118e2565b6001600160a01b0381165f908152600860205260408120549003610eb05760405162461bcd60e51b81526004016105f29061187c565b604080516080810182525f8082526020808301828152838501838152606085018481526001600160a01b038881168087526008909552878620965187559251600187015590516002860180549184166001600160a01b031992831617905590516003909501805495909216941693909317909255915190917fc51fdb96728de385ec7859819e3997bc618362ef0dbca0ad051d856866cda3db91a250565b610f566116ce565b610f5f5f611727565b565b600154604080516395d89b4160e01b815290516060926001600160a01b0316916395d89b41916004808301925f9291908290030181865afa158015610fa8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526106359190810190611922565b6001600160a01b0381165f9081526008602052604081205481036110055760405162461bcd60e51b81526004016105f29061187c565b506001600160a01b039081165f908152600860209081526040918290208251608081018452815480825260018301549382019390935260028201548516938101939093526003015490921660609091015290565b6002545f906001600160a01b0316336001600160a01b03161461108e5760405162461bcd60e51b81526004016105f2906118e2565b6001600160a01b0383166110e45760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f206e756c6c00000000000000000060448201526064016105f2565b815f0361112a5760405162461bcd60e51b815260206004820152601460248201527343616e6e6f74207472616e73666572207a65726f60601b60448201526064016105f2565b6040516001600160a01b0384169083156108fc029084905f818181858888f1935050505015801561115d573d5f803e3d5ffd5b50600190505b92915050565b6001600160a01b0381165f90815260086020526040812054810361119f5760405162461bcd60e51b81526004016105f29061187c565b506001600160a01b039081165f90815260086020908152604091829020825160808101845281548152600182015492810183905260028201548516938101939093526003015490921660609091015290565b6111f96116ce565b6001600160a01b03821661124f5760405162461bcd60e51b815260206004820152601760248201527f5369676e657220322063616e6e6f74206265206e756c6c00000000000000000060448201526064016105f2565b600480546001600160a01b039093166001600160a01b0319909316831790555f9182526007602052604090912055565b5f61063533611169565b5f61063533610fcf565b6003546001600160a01b0316336001600160a01b031614806112c857506004546001600160a01b0316336001600160a01b0316145b806112e657506005546001600160a01b0316336001600160a01b0316145b8061130457506006546001600160a01b0316336001600160a01b0316145b6113445760405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21030b8383937bb32b91760791b60448201526064016105f2565b6001600160a01b0382165f90815260086020526040812054900361137a5760405162461bcd60e51b81526004016105f29061187c565b6001600160a01b038281165f9081526008602090815260408083208151608081018352815480825260018301548286015260028301548716828501526003909201549095166060860152338452600790925290912054101561141e5760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e742061626f766520617070726f76616c206c696d69742e0000000060448201526064016105f2565b60408101516001600160a01b03161580611443575060608101516001600160a01b0316155b61148f5760405162461bcd60e51b815260206004820152601d60248201527f5769746864726177616c20616c726561647920636f6e6669726d65642e00000060448201526064016105f2565b5f82116114cd5760405162461bcd60e51b815260206004820152600c60248201526b24b73b30b634b2103332b29760a11b60448201526064016105f2565b60408101516001600160a01b031661150e576001600160a01b0383165f90815260086020526040902060020180546001600160a01b031916331790556115c2565b336001600160a01b031681604001516001600160a01b0316036115855760405162461bcd60e51b815260206004820152602960248201527f4164647265737320616c726561647920617070726f76656420746869732077696044820152683a34323930bbb0b61760b91b60648201526084016105f2565b60608101516001600160a01b03166115c2576001600160a01b0383165f90815260086020526040902060030180546001600160a01b031916331790555b6001600160a01b0383165f908152600860205260409020600101546115e89083906119ca565b6001600160a01b0384165f90815260086020526040902060010155336001600160a01b0316836001600160a01b03167f86130f96d2921566cc4268594a5d6c1e69c17fea5daa5bbfb8aae59710d238a28460405161164891815260200190565b60405180910390a3505050565b61165d6116ce565b6001600160a01b0381166116c25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105f2565b6116cb81611727565b50565b5f546001600160a01b03163314610f5f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f2565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146116cb575f80fd5b5f806040838503121561179b575f80fd5b82356117a681611776565b946020939093013593505050565b5f602082840312156117c4575f80fd5b81356117cf81611776565b9392505050565b5f805f606084860312156117e8575f80fd5b83356117f381611776565b95602085013595506040909401359392505050565b5f5b8381101561182257818101518382015260200161180a565b50505f910152565b602081525f8251806020840152611848816040850160208701611808565b601f01601f19169190910160400192915050565b5f6020828403121561186c575f80fd5b815160ff811681146117cf575f80fd5b6020808252601690820152752737903bb4ba34323930bbb0b6103832b73234b7339760511b604082015260600190565b5f602082840312156118bc575f80fd5b5051919050565b5f602082840312156118d3575f80fd5b815180151581146117cf575f80fd5b6020808252601290820152712cb7ba9030b932903737ba1020b236b4b71760711b604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215611932575f80fd5b815167ffffffffffffffff80821115611949575f80fd5b818401915084601f83011261195c575f80fd5b81518181111561196e5761196e61190e565b604051601f8201601f19908116603f011681019083821181831017156119965761199661190e565b816040528281528760208487010111156119ae575f80fd5b6119bf836020830160208801611808565b979650505050505050565b8082018082111561116357634e487b7160e01b5f52601160045260245ffdfea2646970667358221220f28bfc7f5eeefbd927ae3a1250175bdb62f0b88bc51e3516655132a73b55666164736f6c63430008140033000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000008eb888dc004ccdb7c795a9ae7320d3059458b67900000000000000000000000017295a2a8f7dd4951230c216d23de29f157fc56d00000000000000000000000063236e8d567134f2b012b2b4db20d0b24e6341710000000000000000000000001b6b24b555e12bfa331753a31378cd24f3bfe0bf000000000000000000000000d72309bdfac74272b6bb66ceb19235ac828ad7c3000000000000000000000000000000000000000000000000000000001dcd6500
Deployed Bytecode
0x6080604052600436106101ba575f3560e01c80634aba7ea4116100f2578063a5fe5d1811610092578063ced72f8711610062578063ced72f8714610532578063d321fe2914610546578063d7ca01b51461055a578063f2fde38b14610579575f80fd5b8063a5fe5d18146104a6578063a9059cbb146104c5578063b7a6e4db146104f4578063c9e48c2f14610513575f80fd5b8063715018a6116100cd578063715018a6146103d95780637a9262a2146103ed5780638da5cb5b1461046957806395d89b4114610485575f80fd5b80634aba7ea41461037c5780634c33fe941461039b578063650fa7c8146103ba575f80fd5b8063357d999f1161015d5780633ccfd60b116101385780633ccfd60b146103175780633eeb92f61461031f578063465775d71461033e5780634822c37c1461035d575f80fd5b8063357d999f146102ba57806336b19cd7146102d957806338c0ac5f146102f8575f80fd5b806325c9b3eb1161019857806325c9b3eb14610254578063313ce56714610268578063341072821461027c578063350829331461029b575f80fd5b8063204d52eb146101be57806320d7bec1146101df578063258878cd1461021d575b5f80fd5b3480156101c9575f80fd5b506101dd6101d836600461178a565b610598565b005b3480156101ea575f80fd5b5061020a6101f93660046117b4565b60076020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610228575f80fd5b5060065461023c906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b34801561025f575f80fd5b5061020a61062b565b348015610273575f80fd5b5061020a61063a565b348015610287575f80fd5b5060035461023c906001600160a01b031681565b3480156102a6575f80fd5b506101dd6102b53660046117b4565b6106ad565b3480156102c5575f80fd5b5061020a6102d43660046117b4565b61072d565b3480156102e4575f80fd5b5060025461023c906001600160a01b031681565b348015610303575f80fd5b5060045461023c906001600160a01b031681565b6101dd6107e0565b34801561032a575f80fd5b5060055461023c906001600160a01b031681565b348015610349575f80fd5b506101dd61035836600461178a565b610b5a565b348015610368575f80fd5b506101dd61037736600461178a565b610be8565b348015610387575f80fd5b506101dd6103963660046117d6565b610c76565b3480156103a6575f80fd5b506101dd6103b53660046117b4565b610e47565b3480156103c5575f80fd5b5060015461023c906001600160a01b031681565b3480156103e4575f80fd5b506101dd610f4e565b3480156103f8575f80fd5b5061043a6104073660046117b4565b60086020525f90815260409020805460018201546002830154600390930154919290916001600160a01b03918216911684565b6040805194855260208501939093526001600160a01b0391821692840192909252166060820152608001610214565b348015610474575f80fd5b505f546001600160a01b031661023c565b348015610490575f80fd5b50610499610f61565b604051610214919061182a565b3480156104b1575f80fd5b5061020a6104c03660046117b4565b610fcf565b3480156104d0575f80fd5b506104e46104df36600461178a565b611059565b6040519015158152602001610214565b3480156104ff575f80fd5b5061020a61050e3660046117b4565b611169565b34801561051e575f80fd5b506101dd61052d36600461178a565b6111f1565b34801561053d575f80fd5b5061020a61127f565b348015610551575f80fd5b5061020a611289565b348015610565575f80fd5b506101dd61057436600461178a565b611293565b348015610584575f80fd5b506101dd6105933660046117b4565b611655565b6105a06116ce565b6001600160a01b0382166105fb5760405162461bcd60e51b815260206004820152601760248201527f5369676e657220312063616e6e6f74206265206e756c6c00000000000000000060448201526064015b60405180910390fd5b600380546001600160a01b039093166001600160a01b0319909316831790555f9182526007602052604090912055565b5f6106353361072d565b905090565b6001546040805163313ce56760e01b815290515f926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610681573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a5919061185c565b60ff16905090565b6106b56116ce565b6001600160a01b03811661070b5760405162461bcd60e51b815260206004820152601c60248201527f41646d696e20616464726573732063616e6e6f74206265206e756c6c0000000060448201526064016105f2565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381165f9081526008602052604081205481036107635760405162461bcd60e51b81526004016105f29061187c565b6001600160a01b038083165f90815260086020908152604091829020825160808101845281548152600182015492810192909252600281015484169282018390526003015490921660608301526107bd5750600292915050565b60608101516001600160a01b03166107d85750600192915050565b505f92915050565b335f90815260086020526040812054900361080d5760405162461bcd60e51b81526004016105f29061187c565b335f9081526008602090815260409182902082516080810184528154815260018201549281019290925260028101546001600160a01b039081169383018490526003909101541660608201529015801590610874575060608101516001600160a01b031615155b6108b85760405162461bcd60e51b81526020600482015260156024820152742832b73234b7339031b7b73334b936b0ba34b7b71760591b60448201526064016105f2565b80602001513410156109005760405162461bcd60e51b815260206004820152601160248201527024b739bab33334b1b4b2b73a103332b29760791b60448201526064016105f2565b80516001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610948573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061096c91906118ac565b10156109e05760405162461bcd60e51b815260206004820152603860248201527f496e73756666696369656e742062616c616e636520696e207468697320636f6e60448201527f74726163742c20706c6561736520747279206c617465722e000000000000000060648201526084016105f2565b8051604080516080810182525f80825260208083018281528385018381526060850184815233808652600890945295909320935184555160018085019190915591516002840180546001600160a01b03199081166001600160a01b03938416179091559451600390940180549095169381169390931790935554169063a9059cbb906040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610aac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad091906118c3565b610b155760405162461bcd60e51b815260206004820152601660248201527510dc9e5c1d1bc81d1c985b9cd9995c8819985a5b195960521b60448201526064016105f2565b602080830151604080518481529283019190915233917fcbc30e520b47f25934e3caa0d827b8cb3e61863b7762ea111ec852fd5c81d8f6910160405180910390a25050565b610b626116ce565b6001600160a01b038216610bb85760405162461bcd60e51b815260206004820152601760248201527f5369676e657220342063616e6e6f74206265206e756c6c00000000000000000060448201526064016105f2565b600680546001600160a01b039093166001600160a01b0319909316831790555f9182526007602052604090912055565b610bf06116ce565b6001600160a01b038216610c465760405162461bcd60e51b815260206004820152601760248201527f5369676e657220332063616e6e6f74206265206e756c6c00000000000000000060448201526064016105f2565b600580546001600160a01b039093166001600160a01b0319909316831790555f9182526007602052604090912055565b6002546001600160a01b0316336001600160a01b031614610ca95760405162461bcd60e51b81526004016105f2906118e2565b6001600160a01b0383165f9081526008602052604090205415610d185760405162461bcd60e51b815260206004820152602160248201527f4f6e65207061796d656e7420746f206120706179656520617420612074696d656044820152601760f91b60648201526084016105f2565b5f8211610d595760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b21030b6b7bab73a1760891b60448201526064016105f2565b5f8111610d975760405162461bcd60e51b815260206004820152600c60248201526b24b73b30b634b2103332b29760a11b60448201526064016105f2565b6040805160808101825283815260208082018481525f838501818152606085018281526001600160a01b038a81168085526008875293889020965187559351600187015590516002860180549185166001600160a01b0319928316179055905160039095018054959093169416939093179055825185815290810184905290917fec43a61e18a9ddee91c6f8b5b15768a560139e4ee717e86e492c40b84be058d2910160405180910390a2505050565b6002546001600160a01b0316336001600160a01b031614610e7a5760405162461bcd60e51b81526004016105f2906118e2565b6001600160a01b0381165f908152600860205260408120549003610eb05760405162461bcd60e51b81526004016105f29061187c565b604080516080810182525f8082526020808301828152838501838152606085018481526001600160a01b038881168087526008909552878620965187559251600187015590516002860180549184166001600160a01b031992831617905590516003909501805495909216941693909317909255915190917fc51fdb96728de385ec7859819e3997bc618362ef0dbca0ad051d856866cda3db91a250565b610f566116ce565b610f5f5f611727565b565b600154604080516395d89b4160e01b815290516060926001600160a01b0316916395d89b41916004808301925f9291908290030181865afa158015610fa8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526106359190810190611922565b6001600160a01b0381165f9081526008602052604081205481036110055760405162461bcd60e51b81526004016105f29061187c565b506001600160a01b039081165f908152600860209081526040918290208251608081018452815480825260018301549382019390935260028201548516938101939093526003015490921660609091015290565b6002545f906001600160a01b0316336001600160a01b03161461108e5760405162461bcd60e51b81526004016105f2906118e2565b6001600160a01b0383166110e45760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f206e756c6c00000000000000000060448201526064016105f2565b815f0361112a5760405162461bcd60e51b815260206004820152601460248201527343616e6e6f74207472616e73666572207a65726f60601b60448201526064016105f2565b6040516001600160a01b0384169083156108fc029084905f818181858888f1935050505015801561115d573d5f803e3d5ffd5b50600190505b92915050565b6001600160a01b0381165f90815260086020526040812054810361119f5760405162461bcd60e51b81526004016105f29061187c565b506001600160a01b039081165f90815260086020908152604091829020825160808101845281548152600182015492810183905260028201548516938101939093526003015490921660609091015290565b6111f96116ce565b6001600160a01b03821661124f5760405162461bcd60e51b815260206004820152601760248201527f5369676e657220322063616e6e6f74206265206e756c6c00000000000000000060448201526064016105f2565b600480546001600160a01b039093166001600160a01b0319909316831790555f9182526007602052604090912055565b5f61063533611169565b5f61063533610fcf565b6003546001600160a01b0316336001600160a01b031614806112c857506004546001600160a01b0316336001600160a01b0316145b806112e657506005546001600160a01b0316336001600160a01b0316145b8061130457506006546001600160a01b0316336001600160a01b0316145b6113445760405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21030b8383937bb32b91760791b60448201526064016105f2565b6001600160a01b0382165f90815260086020526040812054900361137a5760405162461bcd60e51b81526004016105f29061187c565b6001600160a01b038281165f9081526008602090815260408083208151608081018352815480825260018301548286015260028301548716828501526003909201549095166060860152338452600790925290912054101561141e5760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e742061626f766520617070726f76616c206c696d69742e0000000060448201526064016105f2565b60408101516001600160a01b03161580611443575060608101516001600160a01b0316155b61148f5760405162461bcd60e51b815260206004820152601d60248201527f5769746864726177616c20616c726561647920636f6e6669726d65642e00000060448201526064016105f2565b5f82116114cd5760405162461bcd60e51b815260206004820152600c60248201526b24b73b30b634b2103332b29760a11b60448201526064016105f2565b60408101516001600160a01b031661150e576001600160a01b0383165f90815260086020526040902060020180546001600160a01b031916331790556115c2565b336001600160a01b031681604001516001600160a01b0316036115855760405162461bcd60e51b815260206004820152602960248201527f4164647265737320616c726561647920617070726f76656420746869732077696044820152683a34323930bbb0b61760b91b60648201526084016105f2565b60608101516001600160a01b03166115c2576001600160a01b0383165f90815260086020526040902060030180546001600160a01b031916331790555b6001600160a01b0383165f908152600860205260409020600101546115e89083906119ca565b6001600160a01b0384165f90815260086020526040902060010155336001600160a01b0316836001600160a01b03167f86130f96d2921566cc4268594a5d6c1e69c17fea5daa5bbfb8aae59710d238a28460405161164891815260200190565b60405180910390a3505050565b61165d6116ce565b6001600160a01b0381166116c25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105f2565b6116cb81611727565b50565b5f546001600160a01b03163314610f5f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f2565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146116cb575f80fd5b5f806040838503121561179b575f80fd5b82356117a681611776565b946020939093013593505050565b5f602082840312156117c4575f80fd5b81356117cf81611776565b9392505050565b5f805f606084860312156117e8575f80fd5b83356117f381611776565b95602085013595506040909401359392505050565b5f5b8381101561182257818101518382015260200161180a565b50505f910152565b602081525f8251806020840152611848816040850160208701611808565b601f01601f19169190910160400192915050565b5f6020828403121561186c575f80fd5b815160ff811681146117cf575f80fd5b6020808252601690820152752737903bb4ba34323930bbb0b6103832b73234b7339760511b604082015260600190565b5f602082840312156118bc575f80fd5b5051919050565b5f602082840312156118d3575f80fd5b815180151581146117cf575f80fd5b6020808252601290820152712cb7ba9030b932903737ba1020b236b4b71760711b604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215611932575f80fd5b815167ffffffffffffffff80821115611949575f80fd5b818401915084601f83011261195c575f80fd5b81518181111561196e5761196e61190e565b604051601f8201601f19908116603f011681019083821181831017156119965761199661190e565b816040528281528760208487010111156119ae575f80fd5b6119bf836020830160208801611808565b979650505050505050565b8082018082111561116357634e487b7160e01b5f52601160045260245ffdfea2646970667358221220f28bfc7f5eeefbd927ae3a1250175bdb62f0b88bc51e3516655132a73b55666164736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000008eb888dc004ccdb7c795a9ae7320d3059458b67900000000000000000000000017295a2a8f7dd4951230c216d23de29f157fc56d00000000000000000000000063236e8d567134f2b012b2b4db20d0b24e6341710000000000000000000000001b6b24b555e12bfa331753a31378cd24f3bfe0bf000000000000000000000000d72309bdfac74272b6bb66ceb19235ac828ad7c3000000000000000000000000000000000000000000000000000000001dcd6500
-----Decoded View---------------
Arg [0] : cryptoAddress (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Arg [1] : admin (address): 0x8Eb888DC004Ccdb7c795A9Ae7320D3059458B679
Arg [2] : addr1 (address): 0x17295A2A8F7Dd4951230c216D23dE29F157Fc56d
Arg [3] : addr2 (address): 0x63236e8D567134F2b012B2B4db20d0b24e634171
Arg [4] : addr3 (address): 0x1B6b24b555E12BFA331753a31378Cd24f3BFE0bF
Arg [5] : addr4 (address): 0xD72309BDFAC74272B6bb66CeB19235ac828AD7c3
Arg [6] : limit (uint256): 500000000
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [1] : 0000000000000000000000008eb888dc004ccdb7c795a9ae7320d3059458b679
Arg [2] : 00000000000000000000000017295a2a8f7dd4951230c216d23de29f157fc56d
Arg [3] : 00000000000000000000000063236e8d567134f2b012b2b4db20d0b24e634171
Arg [4] : 0000000000000000000000001b6b24b555e12bfa331753a31378cd24f3bfe0bf
Arg [5] : 000000000000000000000000d72309bdfac74272b6bb66ceb19235ac828ad7c3
Arg [6] : 000000000000000000000000000000000000000000000000000000001dcd6500
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.