Source Code
Latest 13 from a total of 13 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Collect Authoriz... | 8631116 | 2351 days ago | IN | 0 ETH | 0.00080224 | ||||
| Collect Authoriz... | 8618099 | 2353 days ago | IN | 0 ETH | 0.0010028 | ||||
| Authorize Paymen... | 8614254 | 2354 days ago | IN | 0 ETH | 0.00396444 | ||||
| Collect Authoriz... | 8614218 | 2354 days ago | IN | 0 ETH | 0.00084235 | ||||
| Authorize Paymen... | 8614214 | 2354 days ago | IN | 0 ETH | 0.00417207 | ||||
| Authorize Paymen... | 8610225 | 2355 days ago | IN | 0 ETH | 0.0018303 | ||||
| Authorize Paymen... | 8610225 | 2355 days ago | IN | 0 ETH | 0.00182966 | ||||
| Authorize Paymen... | 8609938 | 2355 days ago | IN | 0 ETH | 0.00307938 | ||||
| Set Timelock | 8609933 | 2355 days ago | IN | 0 ETH | 0.00057353 | ||||
| Authorize Spende... | 8609933 | 2355 days ago | IN | 0 ETH | 0.00095436 | ||||
| Escape Hatch | 3538656 | 3247 days ago | IN | 0 ETH | 0.0006508 | ||||
| Change Owner | 3534943 | 3247 days ago | IN | 0 ETH | 0.00060958 | ||||
| Authorize Spende... | 3534929 | 3247 days ago | IN | 0 ETH | 0.00090892 |
Latest 8 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 8631116 | 2351 days ago | 24.99999999 ETH | ||||
| - | 8618099 | 2353 days ago | 65 ETH | ||||
| - | 8614218 | 2354 days ago | 1 wei | ||||
| Transfer | 4260261 | 3098 days ago | 80 ETH | ||||
| Transfer | 4260254 | 3098 days ago | 30 ETH | ||||
| Transfer | 3602122 | 3236 days ago | 200 ETH | ||||
| Transfer | 3538656 | 3247 days ago | 0.1 ETH | ||||
| Transfer | 3538641 | 3247 days ago | 0.1 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Vault
Compiler Version
v0.4.10+commit.f0d539ae
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2017-04-18
*/
pragma solidity ^0.4.6;
/*
Copyright 2016, Jordi Baylina
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/// @title Vault Contract
/// @author Jordi Baylina
/// @notice This contract holds funds for Campaigns and automates payments. For
/// this iteration the funds will come straight from the Giveth Multisig as a
/// safety precaution, but once fully tested and optimized this contract will
/// be a safe place to store funds equipped with optional variable time delays
/// to allow for an optional escape hatch
/// @dev `Owned` is a base level contract that assigns an `owner` that can be
/// later changed
contract Owned {
/// @dev `owner` is the only address that can call a function with this
/// modifier
modifier onlyOwner { if (msg.sender != owner) throw; _; }
address public owner;
/// @notice The Constructor assigns the message sender to be `owner`
function Owned() { owner = msg.sender;}
/// @notice `owner` can step down and assign some other address to this role
/// @param _newOwner The address of the new owner. 0x0 can be used to create
/// an unowned neutral vault, however that cannot be undone
function changeOwner(address _newOwner) onlyOwner {
owner = _newOwner;
NewOwner(msg.sender, _newOwner);
}
event NewOwner(address indexed oldOwner, address indexed newOwner);
}
/// @dev `Escapable` is a base level contract built off of the `Owned`
/// contract that creates an escape hatch function to send its ether to
/// `escapeHatchDestination` when called by the `escapeHatchCaller` in the case that
/// something unexpected happens
contract Escapable is Owned {
address public escapeHatchCaller;
address public escapeHatchDestination;
/// @notice The Constructor assigns the `escapeHatchDestination` and the
/// `escapeHatchCaller`
/// @param _escapeHatchDestination The address of a safe location (usu a
/// Multisig) to send the ether held in this contract
/// @param _escapeHatchCaller The address of a trusted account or contract to
/// call `escapeHatch()` to send the ether in this contract to the
/// `escapeHatchDestination` it would be ideal that `escapeHatchCaller` cannot move
/// funds out of `escapeHatchDestination`
function Escapable(address _escapeHatchCaller, address _escapeHatchDestination) {
escapeHatchCaller = _escapeHatchCaller;
escapeHatchDestination = _escapeHatchDestination;
}
/// @dev The addresses preassigned the `escapeHatchCaller` role
/// is the only addresses that can call a function with this modifier
modifier onlyEscapeHatchCallerOrOwner {
if ((msg.sender != escapeHatchCaller)&&(msg.sender != owner))
throw;
_;
}
/// @notice The `escapeHatch()` should only be called as a last resort if a
/// security issue is uncovered or something unexpected happened
function escapeHatch() onlyEscapeHatchCallerOrOwner {
uint total = this.balance;
// Send the total balance of this contract to the `escapeHatchDestination`
if (!escapeHatchDestination.send(total)) {
throw;
}
EscapeHatchCalled(total);
}
/// @notice Changes the address assigned to call `escapeHatch()`
/// @param _newEscapeHatchCaller The address of a trusted account or contract to
/// call `escapeHatch()` to send the ether in this contract to the
/// `escapeHatchDestination` it would be ideal that `escapeHatchCaller` cannot
/// move funds out of `escapeHatchDestination`
function changeEscapeCaller(address _newEscapeHatchCaller) onlyEscapeHatchCallerOrOwner {
escapeHatchCaller = _newEscapeHatchCaller;
}
event EscapeHatchCalled(uint amount);
}
/// @dev `Vault` is a higher level contract built off of the `Escapable`
/// contract that holds funds for Campaigns and automates payments.
contract Vault is Escapable {
/// @dev `Payment` is a public structure that describes the details of
/// each payment making it easy to track the movement of funds
/// transparently
struct Payment {
string name; // What is the purpose of this payment
bytes32 reference; // Reference of the payment.
address spender; // Who is sending the funds
uint earliestPayTime; // The earliest a payment can be made (Unix Time)
bool canceled; // If True then the payment has been canceled
bool paid; // If True then the payment has been paid
address recipient; // Who is receiving the funds
uint amount; // The amount of wei sent in the payment
uint securityGuardDelay;// The seconds `securityGuard` can delay payment
}
Payment[] public authorizedPayments;
address public securityGuard;
uint public absoluteMinTimeLock;
uint public timeLock;
uint public maxSecurityGuardDelay;
/// @dev The white list of approved addresses allowed to set up && receive
/// payments from this vault
mapping (address => bool) public allowedSpenders;
/// @dev The address assigned the role of `securityGuard` is the only
/// addresses that can call a function with this modifier
modifier onlySecurityGuard { if (msg.sender != securityGuard) throw; _; }
// @dev Events to make the payment movements easy to find on the blockchain
event PaymentAuthorized(uint indexed idPayment, address indexed recipient, uint amount);
event PaymentExecuted(uint indexed idPayment, address indexed recipient, uint amount);
event PaymentCanceled(uint indexed idPayment);
event EtherReceived(address indexed from, uint amount);
event SpenderAuthorization(address indexed spender, bool authorized);
/////////
// Constructor
/////////
/// @notice The Constructor creates the Vault on the blockchain
/// @param _escapeHatchCaller The address of a trusted account or contract to
/// call `escapeHatch()` to send the ether in this contract to the
/// `escapeHatchDestination` it would be ideal if `escapeHatchCaller` cannot move
/// funds out of `escapeHatchDestination`
/// @param _escapeHatchDestination The address of a safe location (usu a
/// Multisig) to send the ether held in this contract in an emergency
/// @param _absoluteMinTimeLock The minimum number of seconds `timelock` can
/// be set to, if set to 0 the `owner` can remove the `timeLock` completely
/// @param _timeLock Initial number of seconds that payments are delayed
/// after they are authorized (a security precaution)
/// @param _securityGuard Address that will be able to delay the payments
/// beyond the initial timelock requirements; can be set to 0x0 to remove
/// the `securityGuard` functionality
/// @param _maxSecurityGuardDelay The maximum number of seconds in total
/// that `securityGuard` can delay a payment so that the owner can cancel
/// the payment if needed
function Vault(
address _escapeHatchCaller,
address _escapeHatchDestination,
uint _absoluteMinTimeLock,
uint _timeLock,
address _securityGuard,
uint _maxSecurityGuardDelay) Escapable(_escapeHatchCaller, _escapeHatchDestination)
{
absoluteMinTimeLock = _absoluteMinTimeLock;
timeLock = _timeLock;
securityGuard = _securityGuard;
maxSecurityGuardDelay = _maxSecurityGuardDelay;
}
/////////
// Helper functions
/////////
/// @notice States the total number of authorized payments in this contract
/// @return The number of payments ever authorized even if they were canceled
function numberOfAuthorizedPayments() constant returns (uint) {
return authorizedPayments.length;
}
//////
// Receive Ether
//////
/// @notice Called anytime ether is sent to the contract && creates an event
/// to more easily track the incoming transactions
function receiveEther() payable {
EtherReceived(msg.sender, msg.value);
}
/// @notice The fall back function is called whenever ether is sent to this
/// contract
function () payable {
receiveEther();
}
////////
// Spender Interface
////////
/// @notice only `allowedSpenders[]` Creates a new `Payment`
/// @param _name Brief description of the payment that is authorized
/// @param _reference External reference of the payment
/// @param _recipient Destination of the payment
/// @param _amount Amount to be paid in wei
/// @param _paymentDelay Number of seconds the payment is to be delayed, if
/// this value is below `timeLock` then the `timeLock` determines the delay
/// @return The Payment ID number for the new authorized payment
function authorizePayment(
string _name,
bytes32 _reference,
address _recipient,
uint _amount,
uint _paymentDelay
) returns(uint) {
// Fail if you arent on the `allowedSpenders` white list
if (!allowedSpenders[msg.sender] ) throw;
uint idPayment = authorizedPayments.length; // Unique Payment ID
authorizedPayments.length++;
// The following lines fill out the payment struct
Payment p = authorizedPayments[idPayment];
p.spender = msg.sender;
// Overflow protection
if (_paymentDelay > 10**18) throw;
// Determines the earliest the recipient can receive payment (Unix time)
p.earliestPayTime = _paymentDelay >= timeLock ?
now + _paymentDelay :
now + timeLock;
p.recipient = _recipient;
p.amount = _amount;
p.name = _name;
p.reference = _reference;
PaymentAuthorized(idPayment, p.recipient, p.amount);
return idPayment;
}
/// @notice only `allowedSpenders[]` The recipient of a payment calls this
/// function to send themselves the ether after the `earliestPayTime` has
/// expired
/// @param _idPayment The payment ID to be executed
function collectAuthorizedPayment(uint _idPayment) {
// Check that the `_idPayment` has been added to the payments struct
if (_idPayment >= authorizedPayments.length) throw;
Payment p = authorizedPayments[_idPayment];
// Checking for reasons not to execute the payment
if (msg.sender != p.recipient) throw;
if (!allowedSpenders[p.spender]) throw;
if (now < p.earliestPayTime) throw;
if (p.canceled) throw;
if (p.paid) throw;
if (this.balance < p.amount) throw;
p.paid = true; // Set the payment to being paid
if (!p.recipient.send(p.amount)) { // Make the payment
throw;
}
PaymentExecuted(_idPayment, p.recipient, p.amount);
}
/////////
// SecurityGuard Interface
/////////
/// @notice `onlySecurityGuard` Delays a payment for a set number of seconds
/// @param _idPayment ID of the payment to be delayed
/// @param _delay The number of seconds to delay the payment
function delayPayment(uint _idPayment, uint _delay) onlySecurityGuard {
if (_idPayment >= authorizedPayments.length) throw;
// Overflow test
if (_delay > 10**18) throw;
Payment p = authorizedPayments[_idPayment];
if ((p.securityGuardDelay + _delay > maxSecurityGuardDelay) ||
(p.paid) ||
(p.canceled))
throw;
p.securityGuardDelay += _delay;
p.earliestPayTime += _delay;
}
////////
// Owner Interface
///////
/// @notice `onlyOwner` Cancel a payment all together
/// @param _idPayment ID of the payment to be canceled.
function cancelPayment(uint _idPayment) onlyOwner {
if (_idPayment >= authorizedPayments.length) throw;
Payment p = authorizedPayments[_idPayment];
if (p.canceled) throw;
if (p.paid) throw;
p.canceled = true;
PaymentCanceled(_idPayment);
}
/// @notice `onlyOwner` Adds a spender to the `allowedSpenders[]` white list
/// @param _spender The address of the contract being authorized/unauthorized
/// @param _authorize `true` if authorizing and `false` if unauthorizing
function authorizeSpender(address _spender, bool _authorize) onlyOwner {
allowedSpenders[_spender] = _authorize;
SpenderAuthorization(_spender, _authorize);
}
/// @notice `onlyOwner` Sets the address of `securityGuard`
/// @param _newSecurityGuard Address of the new security guard
function setSecurityGuard(address _newSecurityGuard) onlyOwner {
securityGuard = _newSecurityGuard;
}
/// @notice `onlyOwner` Changes `timeLock`; the new `timeLock` cannot be
/// lower than `absoluteMinTimeLock`
/// @param _newTimeLock Sets the new minimum default `timeLock` in seconds;
/// pending payments maintain their `earliestPayTime`
function setTimelock(uint _newTimeLock) onlyOwner {
if (_newTimeLock < absoluteMinTimeLock) throw;
timeLock = _newTimeLock;
}
/// @notice `onlyOwner` Changes the maximum number of seconds
/// `securityGuard` can delay a payment
/// @param _maxSecurityGuardDelay The new maximum delay in seconds that
/// `securityGuard` can delay the payment's execution in total
function setMaxSecurityGuardDelay(uint _maxSecurityGuardDelay) onlyOwner {
maxSecurityGuardDelay = _maxSecurityGuardDelay;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"maxSecurityGuardDelay","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"escapeHatch","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newTimeLock","type":"uint256"}],"name":"setTimelock","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"escapeHatchCaller","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_reference","type":"bytes32"},{"name":"_recipient","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_paymentDelay","type":"uint256"}],"name":"authorizePayment","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newEscapeHatchCaller","type":"address"}],"name":"changeEscapeCaller","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfAuthorizedPayments","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_authorize","type":"bool"}],"name":"authorizeSpender","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_idPayment","type":"uint256"}],"name":"cancelPayment","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_idPayment","type":"uint256"},{"name":"_delay","type":"uint256"}],"name":"delayPayment","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_idPayment","type":"uint256"}],"name":"collectAuthorizedPayment","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"authorizedPayments","outputs":[{"name":"name","type":"string"},{"name":"reference","type":"bytes32"},{"name":"spender","type":"address"},{"name":"earliestPayTime","type":"uint256"},{"name":"canceled","type":"bool"},{"name":"paid","type":"bool"},{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"},{"name":"securityGuardDelay","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"receiveEther","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"securityGuard","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newSecurityGuard","type":"address"}],"name":"setSecurityGuard","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"timeLock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"allowedSpenders","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_maxSecurityGuardDelay","type":"uint256"}],"name":"setMaxSecurityGuardDelay","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"absoluteMinTimeLock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"escapeHatchDestination","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_escapeHatchCaller","type":"address"},{"name":"_escapeHatchDestination","type":"address"},{"name":"_absoluteMinTimeLock","type":"uint256"},{"name":"_timeLock","type":"uint256"},{"name":"_securityGuard","type":"address"},{"name":"_maxSecurityGuardDelay","type":"uint256"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idPayment","type":"uint256"},{"indexed":true,"name":"recipient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"PaymentAuthorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idPayment","type":"uint256"},{"indexed":true,"name":"recipient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"PaymentExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idPayment","type":"uint256"}],"name":"PaymentCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"EtherReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"authorized","type":"bool"}],"name":"SpenderAuthorization","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"EscapeHatchCalled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"oldOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"NewOwner","type":"event"}]Contract Creation Code
6060604052341561000c57fe5b60405160c080610f9483398101604090815281516020830151918301516060840151608085015160a090950151929491929091905b85855b5b60008054600160a060020a03191633600160a060020a03161790555b60018054600160a060020a03808516600160a060020a03199283161790925560028054928416929091169190911790555b50506005849055600683905560048054600160a060020a031916600160a060020a03841617905560078190555b5050505050505b610ebf806100d56000396000f3006060604052361561010c5763ffffffff60e060020a6000350416630b2e7423811461011d5780631554611f1461013f5780631e891c0a146101515780631f6eb6e71461016657806320ea253314610192578063681617c71461021657806368b8c5a114610234578063793c0fd4146102565780638422927d14610279578063846a5dde1461028e5780638da5cb5b146102a657806392e4b8a4146102d2578063a0927a6a146102e7578063a3912ec8146103d5578063a6f9dae1146103df578063b2ca3ec4146103fd578063bb2a51d114610429578063d085835a14610447578063d8528af014610469578063da4793ac14610499578063ea8a66c7146104ae578063f5b61230146104d0575b61011b5b6101186104fc565b5b565b005b341561012557fe5b61012d61053e565b60408051918252519081900360200190f35b341561014757fe5b61011b610544565b005b341561015957fe5b61011b6004356105f1565b005b341561016e57fe5b610176610627565b60408051600160a060020a039092168252519081900360200190f35b341561019a57fe5b61012d600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965050843594600160a060020a036020820135169450604081013593506060013591506106369050565b60408051918252519081900360200190f35b341561021e57fe5b61011b600160a060020a036004351661079e565b005b341561023c57fe5b61012d6107f7565b60408051918252519081900360200190f35b341561025e57fe5b61011b600160a060020a036004351660243515156107fe565b005b341561028157fe5b61011b60043561087c565b005b341561029657fe5b61011b600435602435610936565b005b34156102ae57fe5b6101766109f0565b60408051600160a060020a039092168252519081900360200190f35b34156102da57fe5b61011b6004356109ff565b005b34156102ef57fe5b6102fa600435610b85565b60408051602081018a9052600160a060020a03808a169282019290925260608101889052861515608082015285151560a082015290841660c082015260e081018390526101008082018390526101208083528b546002600182161590930260001901169190910490820181905281906101408201908c9080156103be5780601f10610393576101008083540402835291602001916103be565b820191906000526020600020905b8154815290600101906020018083116103a157829003601f168201915b50509a505050505050505050505060405180910390f35b61011b6104fc565b005b34156103e757fe5b61011b600160a060020a0360043516610bf2565b005b341561040557fe5b610176610c5f565b60408051600160a060020a039092168252519081900360200190f35b341561043157fe5b61011b600160a060020a0360043516610c6e565b005b341561044f57fe5b61012d610caa565b60408051918252519081900360200190f35b341561047157fe5b610485600160a060020a0360043516610cb0565b604080519115158252519081900360200190f35b34156104a157fe5b61011b600435610cc5565b005b34156104b657fe5b61012d610ceb565b60408051918252519081900360200190f35b34156104d857fe5b610176610cf1565b60408051600160a060020a039092168252519081900360200190f35b604080513481529051600160a060020a033316917f1e57e3bb474320be3d2c77138f75b7c3941292d647f5f9634e33a8e94e0e069b919081900360200190a25b565b60075481565b60015460009033600160a060020a03908116911614801590610575575060005433600160a060020a03908116911614155b156105805760006000fd5b50600254604051600160a060020a033081163192169082156108fc029083906000818181858888f1935050505015156105b95760006000fd5b6040805182815290517f3a7a1ba90aaa86fa9f6b921c3d600a5c870f8ebd05e7fbd30f93930f3caa5db59181900360200190a15b5b50565b60005433600160a060020a0390811691161461060d5760006000fd5b60055481101561061d5760006000fd5b60068190555b5b50565b600154600160a060020a031681565b600160a060020a0333166000908152600860205260408120548190819060ff1615156106625760006000fd5b60038054925082906106779060018301610d00565b50600380548390811061068657fe5b906000526020600020906007020160005b50600281018054600160a060020a03191633600160a060020a03161790559050670de0b6b3a76400008411156106cd5760006000fd5b6006548410156106e15760065442016106e5565b8342015b600382015560048101805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a0389160217905560058101859055875161073490829060208b0190610d32565b5060018101879055600481015460058201546040805191825251600160a060020a0362010000909304929092169184917f47e9633c99dd05fabd1b937e7c85f9e00d6866bfd2e5885e0091f40a173be3d3919081900360200190a38192505b505095945050505050565b60015433600160a060020a039081169116148015906107cc575060005433600160a060020a03908116911614155b156107d75760006000fd5b60018054600160a060020a031916600160a060020a0383161790555b5b50565b6003545b90565b60005433600160a060020a0390811691161461081a5760006000fd5b600160a060020a038216600081815260086020908152604091829020805460ff1916851515908117909155825190815291517f801f568efbc3346a6ae3d0c3eb335a30d64e0d3cf08f1c39626d62cd5c8272819281900390910190a25b5b5050565b6000805433600160a060020a039081169116146108995760006000fd5b60035482106108a85760006000fd5b60038054839081106108b657fe5b906000526020600020906007020160005b50600481015490915060ff16156108de5760006000fd5b6004810154610100900460ff16156108f65760006000fd5b60048101805460ff1916600117905560405182907ffdf197ed54809861dafe0b4d391843652730ac67274c1e9e46db7687dccaa30190600090a25b5b5050565b60045460009033600160a060020a039081169116146109555760006000fd5b60035483106109645760006000fd5b670de0b6b3a764000082111561097a5760006000fd5b600380548490811061098857fe5b906000526020600020906007020160005b5090506007548282600601540111806109bb57506004810154610100900460ff165b806109ca5750600481015460ff165b156109d55760006000fd5b60068101805483019055600381018054830190555b5b505050565b600054600160a060020a031681565b6003546000908210610a115760006000fd5b6003805483908110610a1f57fe5b906000526020600020906007020160005b50600481015490915033600160a060020a03908116620100009092041614610a585760006000fd5b6002810154600160a060020a031660009081526008602052604090205460ff161515610a845760006000fd5b8060030154421015610a965760006000fd5b600481015460ff1615610aa95760006000fd5b6004810154610100900460ff1615610ac15760006000fd5b806005015430600160a060020a0316311015610add5760006000fd5b60048101805461010061ff00199091161790819055600582015460405162010000909204600160a060020a0316916108fc82150291906000818181858888f193505050501515610b2d5760006000fd5b600481015460058201546040805191825251600160a060020a0362010000909304929092169184917f7f5bfe3018715b26a7067888a5c42912fbb3485170b8154ea9a448661f2f0de2919081900360200190a35b5050565b6003805482908110610b9357fe5b906000526020600020906007020160005b506001810154600282015460038301546004840154600585015460068601549596509394600160a060020a0393841694929360ff808416946101008504909116936201000090049091169189565b60005433600160a060020a03908116911614610c0e5760006000fd5b60008054600160a060020a031916600160a060020a038381169182178355604051919233909116917f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b23649190a35b5b50565b600454600160a060020a031681565b60005433600160a060020a03908116911614610c8a5760006000fd5b60048054600160a060020a031916600160a060020a0383161790555b5b50565b60065481565b60086020526000908152604090205460ff1681565b60005433600160a060020a03908116911614610ce15760006000fd5b60078190555b5b50565b60055481565b600254600160a060020a031681565b8154818355818115116109ea576007028160070283600052602060002091820191016109ea9190610db1565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610d7357805160ff1916838001178555610da0565b82800160010185558215610da0579182015b82811115610da0578251825591602001919060010190610d85565b5b50610dad929150610e2a565b5090565b6107fb91905b80821115610dad576000610dcb8282610e4b565b50600060018201819055600282018054600160a060020a03191690556003820181905560048201805475ffffffffffffffffffffffffffffffffffffffffffff19169055600582018190556006820155600701610db7565b5090565b90565b6107fb91905b80821115610dad5760008155600101610e30565b5090565b90565b50805460018160011615610100020316600290046000825580601f10610e7157506105ed565b601f0160209004906000526020600020908101906105ed9190610e2a565b5b505600a165627a7a72305820dd8149b751b405b692f95feb08ecb20f6a9994da768ce4427a7aa1d30c3ea2f30029000000000000000000000000839395e20bbb182fa440d08f850e6c7a8f6f078000000000000000000000000032bacc8b241fb172fee18bda32527126c6f3c5f70000000000000000000000000000000000000000000000000000000000000e100000000000000000000000000000000000000000000000000000000000015180000000000000000000000000839395e20bbb182fa440d08f850e6c7a8f6f07800000000000000000000000000000000000000000000000000000000000127500
Deployed Bytecode
0x6060604052361561010c5763ffffffff60e060020a6000350416630b2e7423811461011d5780631554611f1461013f5780631e891c0a146101515780631f6eb6e71461016657806320ea253314610192578063681617c71461021657806368b8c5a114610234578063793c0fd4146102565780638422927d14610279578063846a5dde1461028e5780638da5cb5b146102a657806392e4b8a4146102d2578063a0927a6a146102e7578063a3912ec8146103d5578063a6f9dae1146103df578063b2ca3ec4146103fd578063bb2a51d114610429578063d085835a14610447578063d8528af014610469578063da4793ac14610499578063ea8a66c7146104ae578063f5b61230146104d0575b61011b5b6101186104fc565b5b565b005b341561012557fe5b61012d61053e565b60408051918252519081900360200190f35b341561014757fe5b61011b610544565b005b341561015957fe5b61011b6004356105f1565b005b341561016e57fe5b610176610627565b60408051600160a060020a039092168252519081900360200190f35b341561019a57fe5b61012d600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965050843594600160a060020a036020820135169450604081013593506060013591506106369050565b60408051918252519081900360200190f35b341561021e57fe5b61011b600160a060020a036004351661079e565b005b341561023c57fe5b61012d6107f7565b60408051918252519081900360200190f35b341561025e57fe5b61011b600160a060020a036004351660243515156107fe565b005b341561028157fe5b61011b60043561087c565b005b341561029657fe5b61011b600435602435610936565b005b34156102ae57fe5b6101766109f0565b60408051600160a060020a039092168252519081900360200190f35b34156102da57fe5b61011b6004356109ff565b005b34156102ef57fe5b6102fa600435610b85565b60408051602081018a9052600160a060020a03808a169282019290925260608101889052861515608082015285151560a082015290841660c082015260e081018390526101008082018390526101208083528b546002600182161590930260001901169190910490820181905281906101408201908c9080156103be5780601f10610393576101008083540402835291602001916103be565b820191906000526020600020905b8154815290600101906020018083116103a157829003601f168201915b50509a505050505050505050505060405180910390f35b61011b6104fc565b005b34156103e757fe5b61011b600160a060020a0360043516610bf2565b005b341561040557fe5b610176610c5f565b60408051600160a060020a039092168252519081900360200190f35b341561043157fe5b61011b600160a060020a0360043516610c6e565b005b341561044f57fe5b61012d610caa565b60408051918252519081900360200190f35b341561047157fe5b610485600160a060020a0360043516610cb0565b604080519115158252519081900360200190f35b34156104a157fe5b61011b600435610cc5565b005b34156104b657fe5b61012d610ceb565b60408051918252519081900360200190f35b34156104d857fe5b610176610cf1565b60408051600160a060020a039092168252519081900360200190f35b604080513481529051600160a060020a033316917f1e57e3bb474320be3d2c77138f75b7c3941292d647f5f9634e33a8e94e0e069b919081900360200190a25b565b60075481565b60015460009033600160a060020a03908116911614801590610575575060005433600160a060020a03908116911614155b156105805760006000fd5b50600254604051600160a060020a033081163192169082156108fc029083906000818181858888f1935050505015156105b95760006000fd5b6040805182815290517f3a7a1ba90aaa86fa9f6b921c3d600a5c870f8ebd05e7fbd30f93930f3caa5db59181900360200190a15b5b50565b60005433600160a060020a0390811691161461060d5760006000fd5b60055481101561061d5760006000fd5b60068190555b5b50565b600154600160a060020a031681565b600160a060020a0333166000908152600860205260408120548190819060ff1615156106625760006000fd5b60038054925082906106779060018301610d00565b50600380548390811061068657fe5b906000526020600020906007020160005b50600281018054600160a060020a03191633600160a060020a03161790559050670de0b6b3a76400008411156106cd5760006000fd5b6006548410156106e15760065442016106e5565b8342015b600382015560048101805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a0389160217905560058101859055875161073490829060208b0190610d32565b5060018101879055600481015460058201546040805191825251600160a060020a0362010000909304929092169184917f47e9633c99dd05fabd1b937e7c85f9e00d6866bfd2e5885e0091f40a173be3d3919081900360200190a38192505b505095945050505050565b60015433600160a060020a039081169116148015906107cc575060005433600160a060020a03908116911614155b156107d75760006000fd5b60018054600160a060020a031916600160a060020a0383161790555b5b50565b6003545b90565b60005433600160a060020a0390811691161461081a5760006000fd5b600160a060020a038216600081815260086020908152604091829020805460ff1916851515908117909155825190815291517f801f568efbc3346a6ae3d0c3eb335a30d64e0d3cf08f1c39626d62cd5c8272819281900390910190a25b5b5050565b6000805433600160a060020a039081169116146108995760006000fd5b60035482106108a85760006000fd5b60038054839081106108b657fe5b906000526020600020906007020160005b50600481015490915060ff16156108de5760006000fd5b6004810154610100900460ff16156108f65760006000fd5b60048101805460ff1916600117905560405182907ffdf197ed54809861dafe0b4d391843652730ac67274c1e9e46db7687dccaa30190600090a25b5b5050565b60045460009033600160a060020a039081169116146109555760006000fd5b60035483106109645760006000fd5b670de0b6b3a764000082111561097a5760006000fd5b600380548490811061098857fe5b906000526020600020906007020160005b5090506007548282600601540111806109bb57506004810154610100900460ff165b806109ca5750600481015460ff165b156109d55760006000fd5b60068101805483019055600381018054830190555b5b505050565b600054600160a060020a031681565b6003546000908210610a115760006000fd5b6003805483908110610a1f57fe5b906000526020600020906007020160005b50600481015490915033600160a060020a03908116620100009092041614610a585760006000fd5b6002810154600160a060020a031660009081526008602052604090205460ff161515610a845760006000fd5b8060030154421015610a965760006000fd5b600481015460ff1615610aa95760006000fd5b6004810154610100900460ff1615610ac15760006000fd5b806005015430600160a060020a0316311015610add5760006000fd5b60048101805461010061ff00199091161790819055600582015460405162010000909204600160a060020a0316916108fc82150291906000818181858888f193505050501515610b2d5760006000fd5b600481015460058201546040805191825251600160a060020a0362010000909304929092169184917f7f5bfe3018715b26a7067888a5c42912fbb3485170b8154ea9a448661f2f0de2919081900360200190a35b5050565b6003805482908110610b9357fe5b906000526020600020906007020160005b506001810154600282015460038301546004840154600585015460068601549596509394600160a060020a0393841694929360ff808416946101008504909116936201000090049091169189565b60005433600160a060020a03908116911614610c0e5760006000fd5b60008054600160a060020a031916600160a060020a038381169182178355604051919233909116917f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b23649190a35b5b50565b600454600160a060020a031681565b60005433600160a060020a03908116911614610c8a5760006000fd5b60048054600160a060020a031916600160a060020a0383161790555b5b50565b60065481565b60086020526000908152604090205460ff1681565b60005433600160a060020a03908116911614610ce15760006000fd5b60078190555b5b50565b60055481565b600254600160a060020a031681565b8154818355818115116109ea576007028160070283600052602060002091820191016109ea9190610db1565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610d7357805160ff1916838001178555610da0565b82800160010185558215610da0579182015b82811115610da0578251825591602001919060010190610d85565b5b50610dad929150610e2a565b5090565b6107fb91905b80821115610dad576000610dcb8282610e4b565b50600060018201819055600282018054600160a060020a03191690556003820181905560048201805475ffffffffffffffffffffffffffffffffffffffffffff19169055600582018190556006820155600701610db7565b5090565b90565b6107fb91905b80821115610dad5760008155600101610e30565b5090565b90565b50805460018160011615610100020316600290046000825580601f10610e7157506105ed565b601f0160209004906000526020600020908101906105ed9190610e2a565b5b505600a165627a7a72305820dd8149b751b405b692f95feb08ecb20f6a9994da768ce4427a7aa1d30c3ea2f30029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000839395e20bbb182fa440d08f850e6c7a8f6f078000000000000000000000000032bacc8b241fb172fee18bda32527126c6f3c5f70000000000000000000000000000000000000000000000000000000000000e100000000000000000000000000000000000000000000000000000000000015180000000000000000000000000839395e20bbb182fa440d08f850e6c7a8f6f07800000000000000000000000000000000000000000000000000000000000127500
-----Decoded View---------------
Arg [0] : _escapeHatchCaller (address): 0x839395e20bbB182fa440d08F850E6c7A8f6F0780
Arg [1] : _escapeHatchDestination (address): 0x32bacc8B241FB172fEE18bDa32527126c6f3c5f7
Arg [2] : _absoluteMinTimeLock (uint256): 3600
Arg [3] : _timeLock (uint256): 86400
Arg [4] : _securityGuard (address): 0x839395e20bbB182fa440d08F850E6c7A8f6F0780
Arg [5] : _maxSecurityGuardDelay (uint256): 1209600
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000839395e20bbb182fa440d08f850e6c7a8f6f0780
Arg [1] : 00000000000000000000000032bacc8b241fb172fee18bda32527126c6f3c5f7
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000e10
Arg [3] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [4] : 000000000000000000000000839395e20bbb182fa440d08f850e6c7a8f6f0780
Arg [5] : 0000000000000000000000000000000000000000000000000000000000127500
Swarm Source
bzzr://dd8149b751b405b692f95feb08ecb20f6a9994da768ce4427a7aa1d30c3ea2f3
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.89
Net Worth in ETH
0.00043
Token Allocations
OMG
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $0.058877 | 15.0653 | $0.8869 |
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.