Overview
ETH Balance
0.0399361 ETH
Eth Value
$125.17 (@ $3,134.23/ETH)Token Holdings
More Info
Private Name Tags
Latest 25 from a total of 1,367 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 20657060 | 77 days ago | IN | 0 ETH | 0.00008623 | ||||
Claim | 20657032 | 77 days ago | IN | 0 ETH | 0.00003415 | ||||
Transfer | 20656953 | 77 days ago | IN | 0.028655 ETH | 0.00004835 | ||||
Transfer | 20656890 | 77 days ago | IN | 0.0112811 ETH | 0.00005233 | ||||
Claim | 20509774 | 98 days ago | IN | 0 ETH | 0.00008789 | ||||
Claim | 20222978 | 138 days ago | IN | 0 ETH | 0.00033293 | ||||
Claim | 20222971 | 138 days ago | IN | 0 ETH | 0.00032823 | ||||
Claim | 20219801 | 138 days ago | IN | 0 ETH | 0.0003028 | ||||
Claim | 20219766 | 138 days ago | IN | 0 ETH | 0.00077433 | ||||
Claim | 20219763 | 138 days ago | IN | 0 ETH | 0.00074981 | ||||
Claim | 20219751 | 138 days ago | IN | 0 ETH | 0.00029094 | ||||
Claim | 20219751 | 138 days ago | IN | 0 ETH | 0.00066608 | ||||
Claim | 20219744 | 138 days ago | IN | 0 ETH | 0.00066712 | ||||
Claim | 20219731 | 138 days ago | IN | 0 ETH | 0.00067895 | ||||
Claim | 20219723 | 138 days ago | IN | 0 ETH | 0.00067895 | ||||
Claim | 20216846 | 139 days ago | IN | 0 ETH | 0.00030064 | ||||
Claim | 20200642 | 141 days ago | IN | 0 ETH | 0.0001323 | ||||
Claim | 20143200 | 149 days ago | IN | 0 ETH | 0.0002768 | ||||
Claim | 20140280 | 149 days ago | IN | 0 ETH | 0.00065201 | ||||
Claim | 19785027 | 199 days ago | IN | 0 ETH | 0.00072371 | ||||
Claim | 19764799 | 202 days ago | IN | 0 ETH | 0.00060391 | ||||
Claim | 19717706 | 208 days ago | IN | 0 ETH | 0.00106581 | ||||
Claim | 19148814 | 288 days ago | IN | 0 ETH | 0.0019623 | ||||
Claim | 19148807 | 288 days ago | IN | 0 ETH | 0.00068059 | ||||
Claim | 19002588 | 309 days ago | IN | 0 ETH | 0.00160129 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
KineExchangeTreasury
Compiler Version
v0.5.16+commit.9c3226ce
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.5.16; import "./Ownable.sol"; import "./KineSafeMath.sol"; import "./IERC20.sol"; import "./SafeERC20.sol"; pragma experimental ABIEncoderV2; contract KineExchangeTreasury is Ownable { using KineSafeMath for uint; using SafeERC20 for IERC20; event ReceiveEther(uint amount); event Claimed(uint256 indexed id, address indexed to, bool isETH, address currency, uint256 amount, uint256 deadline); event TransferToCounterParty(bool isETH, address currency, uint256 amount); event Paused(); event Unpaused(); event NewTruthHolder(address oldTruthHolder, address newTruthHolder); event NewOperator(address oldOperator, address newOperator); event NewCounterParty(address oldCounterParty, address newCounterParty); event AddCurrency(address indexed currency); event RemoveCurrency(address indexed currency); bool public paused; address public truthHolder; address public operator; address payable public counterParty; mapping(address => bool) public supportCurrency; mapping(uint => uint) public claimHistory; modifier notPaused() { require(!paused, "paused"); _; } modifier onlyOperator() { require(msg.sender == operator, "only operator can call"); _; } constructor (address truthHolder_, address operator_, address payable counterParty_) public { paused = false; truthHolder = truthHolder_; operator = operator_; counterParty = counterParty_; } function() external payable { if (msg.value > 0) { emit ReceiveEther(msg.value); } } function _transfer(address payable to, bool isETH, address currency, uint amount) internal { if(isETH) { require(address(this).balance >= amount, "not enough ether balance"); require(to.send(amount), "ether transfer failed"); } else { IERC20 token = IERC20(currency); uint balance = token.balanceOf(address(this)); require(balance >= amount, "not enough currency balance"); token.safeTransfer(to, amount); } } function transferToCounterParty(bool isETH, address currency, uint amount) external onlyOperator { _transfer(counterParty, isETH, currency, amount); emit TransferToCounterParty(isETH, currency, amount); } function claim(bytes calldata message, bytes calldata signature) external notPaused { address source = source(message, signature); require(source == truthHolder, "only accept truthHolder signed message"); (uint256 id, address payable to, bool isETH, address currency, uint256 amount, uint256 deadline) = abi.decode(message, (uint256, address, bool, address, uint256, uint256)); require(claimHistory[id] == 0, "already claimed"); require(isETH || supportCurrency[currency], "currency not support"); require(block.timestamp < deadline, "already passed deadline"); claimHistory[id] = block.number; _transfer(to, isETH, currency, amount); emit Claimed(id, to, isETH, currency, amount, deadline); } function source(bytes memory message, bytes memory signature) public pure returns (address) { (bytes32 r, bytes32 s, uint8 v) = abi.decode(signature, (bytes32, bytes32, uint8)); bytes32 hash = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", keccak256(message))); return ecrecover(hash, v, r, s); } function _pause() external onlyOwner { paused = true; emit Paused(); } function _unpause() external onlyOwner { paused = false; emit Unpaused(); } function _changeTruthHolder(address newTruthHolder) external onlyOwner { address oldHolder = truthHolder; truthHolder = newTruthHolder; emit NewTruthHolder(oldHolder, newTruthHolder); } function _setOperator(address newOperator) external onlyOwner { address oldOperator = operator; operator = newOperator; emit NewOperator(oldOperator, newOperator); } function _setCounterParty(address payable newCounterParty) external onlyOwner { address payable oldCounterParty = counterParty; counterParty = newCounterParty; emit NewCounterParty(oldCounterParty, newCounterParty); } function _addCurrency(address currency) external onlyOwner { supportCurrency[currency] = true; emit AddCurrency(currency); } function _removeCurrency(address currency) external onlyOwner { delete supportCurrency[currency]; emit RemoveCurrency(currency); } }
pragma solidity ^0.5.5; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. * * _Available since v2.4.0._ */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call.value(amount)(""); require(success, "Address: unable to send value, recipient may have reverted"); } }
pragma solidity ^0.5.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 GSN 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. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
pragma solidity ^0.5.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ interface IERC20 { /** * @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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount) external returns (bool); /** * @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); }
pragma solidity ^0.5.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ /** * Original work from OpenZeppelin: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.5.0/contracts/math/SafeMath.sol * changes we made: * 1. add two methods that take errorMessage as input parameter */ library KineSafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. * added by Kine */ function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, errorMessage); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. * added by Kine */ function mul(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, errorMessage); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
pragma solidity ^0.5.0; import "./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. * * 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. */ 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 () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _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 onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = 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 onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
pragma solidity ^0.5.0; import "./IERC20.sol"; import "./KineSafeMath.sol"; import "./Address.sol"; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using KineSafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "istanbul", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"truthHolder_","type":"address"},{"internalType":"address","name":"operator_","type":"address"},{"internalType":"address payable","name":"counterParty_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"currency","type":"address"}],"name":"AddCurrency","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bool","name":"isETH","type":"bool"},{"indexed":false,"internalType":"address","name":"currency","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldCounterParty","type":"address"},{"indexed":false,"internalType":"address","name":"newCounterParty","type":"address"}],"name":"NewCounterParty","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOperator","type":"address"},{"indexed":false,"internalType":"address","name":"newOperator","type":"address"}],"name":"NewOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldTruthHolder","type":"address"},{"indexed":false,"internalType":"address","name":"newTruthHolder","type":"address"}],"name":"NewTruthHolder","type":"event"},{"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":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReceiveEther","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"currency","type":"address"}],"name":"RemoveCurrency","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isETH","type":"bool"},{"indexed":false,"internalType":"address","name":"currency","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferToCounterParty","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[{"internalType":"address","name":"currency","type":"address"}],"name":"_addCurrency","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newTruthHolder","type":"address"}],"name":"_changeTruthHolder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"_pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"currency","type":"address"}],"name":"_removeCurrency","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"newCounterParty","type":"address"}],"name":"_setCounterParty","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOperator","type":"address"}],"name":"_setOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"_unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"claimHistory","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"counterParty","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"source","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"supportCurrency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"isETH","type":"bool"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferToCounterParty","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"truthHolder","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162001a3338038062001a338339810160408190526200003491620000fa565b6000620000496001600160e01b03620000e316565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000805460ff60a01b19169055600180546001600160a01b039485166001600160a01b0319918216179091556002805493851693821693909317909255600380549190931691161790556200017a565b3390565b8051620000f48162000160565b92915050565b6000806000606084860312156200011057600080fd5b60006200011e8686620000e7565b93505060206200013186828701620000e7565b92505060406200014486828701620000e7565b9150509250925092565b60006001600160a01b038216620000f4565b6200016b816200014e565b81146200017757600080fd5b50565b6118a9806200018a6000396000f3fe60806040526004361061011f5760003560e01c80638f32d59b116100a0578063dc6a677011610064578063dc6a67701461030a578063f2fde38b1461032a578063f3da6cbd1461034a578063f6dd235314610377578063fc8234cb146103975761011f565b80638f32d59b14610280578063a720969f14610295578063b0ff3542146102aa578063b19a1a9a146102ca578063be27b22c146102ea5761011f565b8063570ca735116100e7578063570ca735146101ff5780635c975abb14610214578063715018a61461023657806389c9e1ac1461024b5780638da5cb5b1461026b5761011f565b80632c453bdf1461015f5780632f7f5d571461018a578063320b2ad9146101aa5780634694f573146101bf578063482a6193146101df575b341561015d577fceeedae0890c8b65dd388797879b0ea414f47e1bb170734056b4004c4a7e181434604051610154919061175a565b60405180910390a15b005b34801561016b57600080fd5b506101746103ac565b604051610181919061157e565b60405180910390f35b34801561019657600080fd5b5061015d6101a5366004610f25565b6103bb565b3480156101b657600080fd5b5061015d610434565b3480156101cb57600080fd5b5061015d6101da366004610f25565b610494565b3480156101eb57600080fd5b506101746101fa366004611061565b610501565b34801561020b57600080fd5b506101746105af565b34801561022057600080fd5b506102296105be565b60405161018191906115eb565b34801561024257600080fd5b5061015d6105ce565b34801561025757600080fd5b5061015d610266366004610f61565b61063c565b34801561027757600080fd5b506101746106be565b34801561028c57600080fd5b506102296106cd565b3480156102a157600080fd5b506101746106f1565b3480156102b657600080fd5b5061015d6102c5366004610f25565b610700565b3480156102d657600080fd5b5061015d6102e5366004610f25565b610783565b3480156102f657600080fd5b5061015d610305366004610ff1565b6107fa565b34801561031657600080fd5b50610229610325366004610f25565b6109e8565b34801561033657600080fd5b5061015d610345366004610f25565b6109fd565b34801561035657600080fd5b5061036a6103653660046110ca565b610a2d565b604051610181919061175a565b34801561038357600080fd5b5061015d610392366004610f25565b610a3f565b3480156103a357600080fd5b5061015d610ab6565b6003546001600160a01b031681565b6103c36106cd565b6103e85760405162461bcd60e51b81526004016103df9061170a565b60405180910390fd5b6001600160a01b038116600081815260046020526040808220805460ff19166001179055517ff88c7d248b10f4863d05e905ad1600e215e7325bf269bbf15543144b398f98029190a250565b61043c6106cd565b6104585760405162461bcd60e51b81526004016103df9061170a565b6000805460ff60a01b1916600160a01b1781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b61049c6106cd565b6104b85760405162461bcd60e51b81526004016103df9061170a565b6001600160a01b038116600081815260046020526040808220805460ff19169055517f4f9b3b949c96fbaab8b8e7139142528afae2f88b4774065e609ca06a2e4f4aab9190a250565b6000806000808480602001905161051b9190810190610fae565b9250925092506000868051906020012060405160200161053b919061155e565b60405160208183030381529060405280519060200120905060018183868660405160008152602001604052604051610576949392919061165f565b6020604051602081039080840390855afa158015610598573d6000803e3d6000fd5b505050602060405103519450505050505b92915050565b6002546001600160a01b031681565b600054600160a01b900460ff1681565b6105d66106cd565b6105f25760405162461bcd60e51b81526004016103df9061170a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6002546001600160a01b031633146106665760405162461bcd60e51b81526004016103df906116da565b60035461067e906001600160a01b0316848484610b10565b7f33278ebf7b841e996e09580bfa7a0279c875902fe042c3d102a8d051c30dc7338383836040516106b1939291906115f9565b60405180910390a1505050565b6000546001600160a01b031690565b600080546001600160a01b03166106e2610c42565b6001600160a01b031614905090565b6001546001600160a01b031681565b6107086106cd565b6107245760405162461bcd60e51b81526004016103df9061170a565b600280546001600160a01b038381166001600160a01b03198316179092556040519116907ff1e04d73c4304b5ff164f9d10c7473e2a1593b740674a6107975e2a7001c1e5c9061077790839085906115b5565b60405180910390a15050565b61078b6106cd565b6107a75760405162461bcd60e51b81526004016103df9061170a565b600380546001600160a01b038381166001600160a01b03198316179092556040519116907f100ee7bc9f90ed0d187ec16b9532449ca9eee13c1d00463b5759a771c1b49fb490610777908390859061159a565b600054600160a01b900460ff16156108245760405162461bcd60e51b81526004016103df9061173a565b600061089985858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525061050192505050565b6001549091506001600160a01b038083169116146108c95760405162461bcd60e51b81526004016103df9061169a565b600080808080806108dc8a8c018c611106565b600086815260056020526040902054959b50939950919750955093509150156109175760405162461bcd60e51b81526004016103df906116ba565b838061093b57506001600160a01b03831660009081526004602052604090205460ff165b6109575760405162461bcd60e51b81526004016103df906116fa565b8042106109765760405162461bcd60e51b81526004016103df906116ea565b600086815260056020526040902043905561099385858585610b10565b846001600160a01b0316867fbdf2c3f6edfac9e3d933ce8519d4cafffb974eb01531df50efe58090b4b1fd90868686866040516109d39493929190611621565b60405180910390a35050505050505050505050565b60046020526000908152604090205460ff1681565b610a056106cd565b610a215760405162461bcd60e51b81526004016103df9061170a565b610a2a81610c46565b50565b60056020526000908152604090205481565b610a476106cd565b610a635760405162461bcd60e51b81526004016103df9061170a565b600180546001600160a01b038381166001600160a01b03198316179092556040519116907f81b88ce749f5ea02a8cec52c72adf48d4bae4bb5c855faaae1a248b327ff00ca9061077790839085906115b5565b610abe6106cd565b610ada5760405162461bcd60e51b81526004016103df9061170a565b6000805460ff60a01b191681556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d169339190a1565b8215610b7c5780471015610b365760405162461bcd60e51b81526004016103df9061168a565b6040516001600160a01b0385169082156108fc029083906000818181858888f19350505050610b775760405162461bcd60e51b81526004016103df906116aa565b610c3c565b6040516370a0823160e01b815282906000906001600160a01b038316906370a0823190610bad90309060040161158c565b60206040518083038186803b158015610bc557600080fd5b505afa158015610bd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bfd91908101906110e8565b905082811015610c1f5760405162461bcd60e51b81526004016103df9061171a565b610c396001600160a01b038316878563ffffffff610cc716565b50505b50505050565b3390565b6001600160a01b038116610c6c5760405162461bcd60e51b81526004016103df9061167a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b604051610d2090849063a9059cbb60e01b90610ce990869086906024016115d0565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610d25565b505050565b610d37826001600160a01b0316610e0a565b610d535760405162461bcd60e51b81526004016103df9061174a565b60006060836001600160a01b031683604051610d6f919061154b565b6000604051808303816000865af19150503d8060008114610dac576040519150601f19603f3d011682016040523d82523d6000602084013e610db1565b606091505b509150915081610dd35760405162461bcd60e51b81526004016103df906116ca565b805115610c3c5780806020019051610dee9190810190610f43565b610c3c5760405162461bcd60e51b81526004016103df9061172a565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610e3e57508115155b949350505050565b80356105a981611837565b80356105a98161184b565b80516105a98161184b565b80516105a981611854565b60008083601f840112610e8457600080fd5b50813567ffffffffffffffff811115610e9c57600080fd5b602083019150836001820283011115610eb457600080fd5b9250929050565b600082601f830112610ecc57600080fd5b8135610edf610eda8261178f565b611768565b91508082526020830160208301858383011115610efb57600080fd5b610f068382846117ff565b50505092915050565b80356105a981611854565b80516105a98161185d565b600060208284031215610f3757600080fd5b6000610e3e8484610e46565b600060208284031215610f5557600080fd5b6000610e3e8484610e5c565b600080600060608486031215610f7657600080fd5b6000610f828686610e51565b9350506020610f9386828701610e46565b9250506040610fa486828701610f0f565b9150509250925092565b600080600060608486031215610fc357600080fd5b6000610fcf8686610e67565b9350506020610fe086828701610e67565b9250506040610fa486828701610f1a565b6000806000806040858703121561100757600080fd5b843567ffffffffffffffff81111561101e57600080fd5b61102a87828801610e72565b9450945050602085013567ffffffffffffffff81111561104957600080fd5b61105587828801610e72565b95989497509550505050565b6000806040838503121561107457600080fd5b823567ffffffffffffffff81111561108b57600080fd5b61109785828601610ebb565b925050602083013567ffffffffffffffff8111156110b457600080fd5b6110c085828601610ebb565b9150509250929050565b6000602082840312156110dc57600080fd5b6000610e3e8484610f0f565b6000602082840312156110fa57600080fd5b6000610e3e8484610e67565b60008060008060008060c0878903121561111f57600080fd5b600061112b8989610f0f565b965050602061113c89828a01610e46565b955050604061114d89828a01610e51565b945050606061115e89828a01610e46565b935050608061116f89828a01610f0f565b92505060a061118089828a01610f0f565b9150509295509295509295565b611196816117ee565b82525050565b611196816117c9565b611196816117d4565b611196816117d9565b6111966111c3826117d9565b6117d9565b60006111d3826117b7565b6111dd81856117bb565b93506111ed81856020860161180b565b9290920192915050565b6000611204601c836117bb565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b600061123d6026836117c0565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006112856018836117c0565b7f6e6f7420656e6f7567682065746865722062616c616e63650000000000000000815260200192915050565b60006112be6026836117c0565b7f6f6e6c7920616363657074207472757468486f6c646572207369676e6564206d81526565737361676560d01b602082015260400192915050565b60006113066015836117c0565b74195d1a195c881d1c985b9cd9995c8819985a5b1959605a1b815260200192915050565b6000611337600f836117c0565b6e185b1c9958591e4818db185a5b5959608a1b815260200192915050565b60006113626020836117c0565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b600061139b6016836117c0565b751bdb9b1e481bdc195c985d1bdc8818d85b8818d85b1b60521b815260200192915050565b60006113cd6017836117c0565b7f616c72656164792070617373656420646561646c696e65000000000000000000815260200192915050565b60006114066014836117c0565b7318dd5c9c995b98de481b9bdd081cdd5c1c1bdc9d60621b815260200192915050565b60006114366020836117c0565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b600061146f601b836117c0565b7f6e6f7420656e6f7567682063757272656e63792062616c616e63650000000000815260200192915050565b60006114a8602a836117c0565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b60006114f46006836117c0565b651c185d5cd95960d21b815260200192915050565b6000611516601f836117c0565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b611196816117e8565b600061155782846111c8565b9392505050565b6000611569826111f7565b915061157582846111b7565b50602001919050565b602081016105a9828461119c565b602081016105a9828461118d565b604081016115a8828561118d565b611557602083018461118d565b604081016115c3828561119c565b611557602083018461119c565b604081016115de828561119c565b61155760208301846111ae565b602081016105a982846111a5565b6060810161160782866111a5565b611614602083018561119c565b610e3e60408301846111ae565b6080810161162f82876111a5565b61163c602083018661119c565b61164960408301856111ae565b61165660608301846111ae565b95945050505050565b6080810161166d82876111ae565b61163c6020830186611542565b602080825281016105a981611230565b602080825281016105a981611278565b602080825281016105a9816112b1565b602080825281016105a9816112f9565b602080825281016105a98161132a565b602080825281016105a981611355565b602080825281016105a98161138e565b602080825281016105a9816113c0565b602080825281016105a9816113f9565b602080825281016105a981611429565b602080825281016105a981611462565b602080825281016105a98161149b565b602080825281016105a9816114e7565b602080825281016105a981611509565b602081016105a982846111ae565b60405181810167ffffffffffffffff8111828210171561178757600080fd5b604052919050565b600067ffffffffffffffff8211156117a657600080fd5b506020601f91909101601f19160190565b5190565b919050565b90815260200190565b60006105a9826117dc565b151590565b90565b6001600160a01b031690565b60ff1690565b60006105a98260006105a9826117c9565b82818337506000910152565b60005b8381101561182657818101518382015260200161180e565b83811115610c3c5750506000910152565b611840816117c9565b8114610a2a57600080fd5b611840816117d4565b611840816117d9565b611840816117e856fea365627a7a72315820bc1d947fdaf0f7702dd7e5aa02af8a2d24430ff4243e3e69e77a1e5eef5da23b6c6578706572696d656e74616cf564736f6c6343000510004000000000000000000000000017d04113a3651e79e7d40a40e47aae23046f776100000000000000000000000017d04113a3651e79e7d40a40e47aae23046f776100000000000000000000000017d04113a3651e79e7d40a40e47aae23046f7761
Deployed Bytecode
0x60806040526004361061011f5760003560e01c80638f32d59b116100a0578063dc6a677011610064578063dc6a67701461030a578063f2fde38b1461032a578063f3da6cbd1461034a578063f6dd235314610377578063fc8234cb146103975761011f565b80638f32d59b14610280578063a720969f14610295578063b0ff3542146102aa578063b19a1a9a146102ca578063be27b22c146102ea5761011f565b8063570ca735116100e7578063570ca735146101ff5780635c975abb14610214578063715018a61461023657806389c9e1ac1461024b5780638da5cb5b1461026b5761011f565b80632c453bdf1461015f5780632f7f5d571461018a578063320b2ad9146101aa5780634694f573146101bf578063482a6193146101df575b341561015d577fceeedae0890c8b65dd388797879b0ea414f47e1bb170734056b4004c4a7e181434604051610154919061175a565b60405180910390a15b005b34801561016b57600080fd5b506101746103ac565b604051610181919061157e565b60405180910390f35b34801561019657600080fd5b5061015d6101a5366004610f25565b6103bb565b3480156101b657600080fd5b5061015d610434565b3480156101cb57600080fd5b5061015d6101da366004610f25565b610494565b3480156101eb57600080fd5b506101746101fa366004611061565b610501565b34801561020b57600080fd5b506101746105af565b34801561022057600080fd5b506102296105be565b60405161018191906115eb565b34801561024257600080fd5b5061015d6105ce565b34801561025757600080fd5b5061015d610266366004610f61565b61063c565b34801561027757600080fd5b506101746106be565b34801561028c57600080fd5b506102296106cd565b3480156102a157600080fd5b506101746106f1565b3480156102b657600080fd5b5061015d6102c5366004610f25565b610700565b3480156102d657600080fd5b5061015d6102e5366004610f25565b610783565b3480156102f657600080fd5b5061015d610305366004610ff1565b6107fa565b34801561031657600080fd5b50610229610325366004610f25565b6109e8565b34801561033657600080fd5b5061015d610345366004610f25565b6109fd565b34801561035657600080fd5b5061036a6103653660046110ca565b610a2d565b604051610181919061175a565b34801561038357600080fd5b5061015d610392366004610f25565b610a3f565b3480156103a357600080fd5b5061015d610ab6565b6003546001600160a01b031681565b6103c36106cd565b6103e85760405162461bcd60e51b81526004016103df9061170a565b60405180910390fd5b6001600160a01b038116600081815260046020526040808220805460ff19166001179055517ff88c7d248b10f4863d05e905ad1600e215e7325bf269bbf15543144b398f98029190a250565b61043c6106cd565b6104585760405162461bcd60e51b81526004016103df9061170a565b6000805460ff60a01b1916600160a01b1781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b61049c6106cd565b6104b85760405162461bcd60e51b81526004016103df9061170a565b6001600160a01b038116600081815260046020526040808220805460ff19169055517f4f9b3b949c96fbaab8b8e7139142528afae2f88b4774065e609ca06a2e4f4aab9190a250565b6000806000808480602001905161051b9190810190610fae565b9250925092506000868051906020012060405160200161053b919061155e565b60405160208183030381529060405280519060200120905060018183868660405160008152602001604052604051610576949392919061165f565b6020604051602081039080840390855afa158015610598573d6000803e3d6000fd5b505050602060405103519450505050505b92915050565b6002546001600160a01b031681565b600054600160a01b900460ff1681565b6105d66106cd565b6105f25760405162461bcd60e51b81526004016103df9061170a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6002546001600160a01b031633146106665760405162461bcd60e51b81526004016103df906116da565b60035461067e906001600160a01b0316848484610b10565b7f33278ebf7b841e996e09580bfa7a0279c875902fe042c3d102a8d051c30dc7338383836040516106b1939291906115f9565b60405180910390a1505050565b6000546001600160a01b031690565b600080546001600160a01b03166106e2610c42565b6001600160a01b031614905090565b6001546001600160a01b031681565b6107086106cd565b6107245760405162461bcd60e51b81526004016103df9061170a565b600280546001600160a01b038381166001600160a01b03198316179092556040519116907ff1e04d73c4304b5ff164f9d10c7473e2a1593b740674a6107975e2a7001c1e5c9061077790839085906115b5565b60405180910390a15050565b61078b6106cd565b6107a75760405162461bcd60e51b81526004016103df9061170a565b600380546001600160a01b038381166001600160a01b03198316179092556040519116907f100ee7bc9f90ed0d187ec16b9532449ca9eee13c1d00463b5759a771c1b49fb490610777908390859061159a565b600054600160a01b900460ff16156108245760405162461bcd60e51b81526004016103df9061173a565b600061089985858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525061050192505050565b6001549091506001600160a01b038083169116146108c95760405162461bcd60e51b81526004016103df9061169a565b600080808080806108dc8a8c018c611106565b600086815260056020526040902054959b50939950919750955093509150156109175760405162461bcd60e51b81526004016103df906116ba565b838061093b57506001600160a01b03831660009081526004602052604090205460ff165b6109575760405162461bcd60e51b81526004016103df906116fa565b8042106109765760405162461bcd60e51b81526004016103df906116ea565b600086815260056020526040902043905561099385858585610b10565b846001600160a01b0316867fbdf2c3f6edfac9e3d933ce8519d4cafffb974eb01531df50efe58090b4b1fd90868686866040516109d39493929190611621565b60405180910390a35050505050505050505050565b60046020526000908152604090205460ff1681565b610a056106cd565b610a215760405162461bcd60e51b81526004016103df9061170a565b610a2a81610c46565b50565b60056020526000908152604090205481565b610a476106cd565b610a635760405162461bcd60e51b81526004016103df9061170a565b600180546001600160a01b038381166001600160a01b03198316179092556040519116907f81b88ce749f5ea02a8cec52c72adf48d4bae4bb5c855faaae1a248b327ff00ca9061077790839085906115b5565b610abe6106cd565b610ada5760405162461bcd60e51b81526004016103df9061170a565b6000805460ff60a01b191681556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d169339190a1565b8215610b7c5780471015610b365760405162461bcd60e51b81526004016103df9061168a565b6040516001600160a01b0385169082156108fc029083906000818181858888f19350505050610b775760405162461bcd60e51b81526004016103df906116aa565b610c3c565b6040516370a0823160e01b815282906000906001600160a01b038316906370a0823190610bad90309060040161158c565b60206040518083038186803b158015610bc557600080fd5b505afa158015610bd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bfd91908101906110e8565b905082811015610c1f5760405162461bcd60e51b81526004016103df9061171a565b610c396001600160a01b038316878563ffffffff610cc716565b50505b50505050565b3390565b6001600160a01b038116610c6c5760405162461bcd60e51b81526004016103df9061167a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b604051610d2090849063a9059cbb60e01b90610ce990869086906024016115d0565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610d25565b505050565b610d37826001600160a01b0316610e0a565b610d535760405162461bcd60e51b81526004016103df9061174a565b60006060836001600160a01b031683604051610d6f919061154b565b6000604051808303816000865af19150503d8060008114610dac576040519150601f19603f3d011682016040523d82523d6000602084013e610db1565b606091505b509150915081610dd35760405162461bcd60e51b81526004016103df906116ca565b805115610c3c5780806020019051610dee9190810190610f43565b610c3c5760405162461bcd60e51b81526004016103df9061172a565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610e3e57508115155b949350505050565b80356105a981611837565b80356105a98161184b565b80516105a98161184b565b80516105a981611854565b60008083601f840112610e8457600080fd5b50813567ffffffffffffffff811115610e9c57600080fd5b602083019150836001820283011115610eb457600080fd5b9250929050565b600082601f830112610ecc57600080fd5b8135610edf610eda8261178f565b611768565b91508082526020830160208301858383011115610efb57600080fd5b610f068382846117ff565b50505092915050565b80356105a981611854565b80516105a98161185d565b600060208284031215610f3757600080fd5b6000610e3e8484610e46565b600060208284031215610f5557600080fd5b6000610e3e8484610e5c565b600080600060608486031215610f7657600080fd5b6000610f828686610e51565b9350506020610f9386828701610e46565b9250506040610fa486828701610f0f565b9150509250925092565b600080600060608486031215610fc357600080fd5b6000610fcf8686610e67565b9350506020610fe086828701610e67565b9250506040610fa486828701610f1a565b6000806000806040858703121561100757600080fd5b843567ffffffffffffffff81111561101e57600080fd5b61102a87828801610e72565b9450945050602085013567ffffffffffffffff81111561104957600080fd5b61105587828801610e72565b95989497509550505050565b6000806040838503121561107457600080fd5b823567ffffffffffffffff81111561108b57600080fd5b61109785828601610ebb565b925050602083013567ffffffffffffffff8111156110b457600080fd5b6110c085828601610ebb565b9150509250929050565b6000602082840312156110dc57600080fd5b6000610e3e8484610f0f565b6000602082840312156110fa57600080fd5b6000610e3e8484610e67565b60008060008060008060c0878903121561111f57600080fd5b600061112b8989610f0f565b965050602061113c89828a01610e46565b955050604061114d89828a01610e51565b945050606061115e89828a01610e46565b935050608061116f89828a01610f0f565b92505060a061118089828a01610f0f565b9150509295509295509295565b611196816117ee565b82525050565b611196816117c9565b611196816117d4565b611196816117d9565b6111966111c3826117d9565b6117d9565b60006111d3826117b7565b6111dd81856117bb565b93506111ed81856020860161180b565b9290920192915050565b6000611204601c836117bb565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b600061123d6026836117c0565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006112856018836117c0565b7f6e6f7420656e6f7567682065746865722062616c616e63650000000000000000815260200192915050565b60006112be6026836117c0565b7f6f6e6c7920616363657074207472757468486f6c646572207369676e6564206d81526565737361676560d01b602082015260400192915050565b60006113066015836117c0565b74195d1a195c881d1c985b9cd9995c8819985a5b1959605a1b815260200192915050565b6000611337600f836117c0565b6e185b1c9958591e4818db185a5b5959608a1b815260200192915050565b60006113626020836117c0565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b600061139b6016836117c0565b751bdb9b1e481bdc195c985d1bdc8818d85b8818d85b1b60521b815260200192915050565b60006113cd6017836117c0565b7f616c72656164792070617373656420646561646c696e65000000000000000000815260200192915050565b60006114066014836117c0565b7318dd5c9c995b98de481b9bdd081cdd5c1c1bdc9d60621b815260200192915050565b60006114366020836117c0565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b600061146f601b836117c0565b7f6e6f7420656e6f7567682063757272656e63792062616c616e63650000000000815260200192915050565b60006114a8602a836117c0565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b60006114f46006836117c0565b651c185d5cd95960d21b815260200192915050565b6000611516601f836117c0565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b611196816117e8565b600061155782846111c8565b9392505050565b6000611569826111f7565b915061157582846111b7565b50602001919050565b602081016105a9828461119c565b602081016105a9828461118d565b604081016115a8828561118d565b611557602083018461118d565b604081016115c3828561119c565b611557602083018461119c565b604081016115de828561119c565b61155760208301846111ae565b602081016105a982846111a5565b6060810161160782866111a5565b611614602083018561119c565b610e3e60408301846111ae565b6080810161162f82876111a5565b61163c602083018661119c565b61164960408301856111ae565b61165660608301846111ae565b95945050505050565b6080810161166d82876111ae565b61163c6020830186611542565b602080825281016105a981611230565b602080825281016105a981611278565b602080825281016105a9816112b1565b602080825281016105a9816112f9565b602080825281016105a98161132a565b602080825281016105a981611355565b602080825281016105a98161138e565b602080825281016105a9816113c0565b602080825281016105a9816113f9565b602080825281016105a981611429565b602080825281016105a981611462565b602080825281016105a98161149b565b602080825281016105a9816114e7565b602080825281016105a981611509565b602081016105a982846111ae565b60405181810167ffffffffffffffff8111828210171561178757600080fd5b604052919050565b600067ffffffffffffffff8211156117a657600080fd5b506020601f91909101601f19160190565b5190565b919050565b90815260200190565b60006105a9826117dc565b151590565b90565b6001600160a01b031690565b60ff1690565b60006105a98260006105a9826117c9565b82818337506000910152565b60005b8381101561182657818101518382015260200161180e565b83811115610c3c5750506000910152565b611840816117c9565b8114610a2a57600080fd5b611840816117d4565b611840816117d9565b611840816117e856fea365627a7a72315820bc1d947fdaf0f7702dd7e5aa02af8a2d24430ff4243e3e69e77a1e5eef5da23b6c6578706572696d656e74616cf564736f6c63430005100040
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000017d04113a3651e79e7d40a40e47aae23046f776100000000000000000000000017d04113a3651e79e7d40a40e47aae23046f776100000000000000000000000017d04113a3651e79e7d40a40e47aae23046f7761
-----Decoded View---------------
Arg [0] : truthHolder_ (address): 0x17D04113a3651e79e7d40a40E47aaE23046f7761
Arg [1] : operator_ (address): 0x17D04113a3651e79e7d40a40E47aaE23046f7761
Arg [2] : counterParty_ (address): 0x17D04113a3651e79e7d40a40E47aaE23046f7761
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000017d04113a3651e79e7d40a40e47aae23046f7761
Arg [1] : 00000000000000000000000017d04113a3651e79e7d40a40e47aae23046f7761
Arg [2] : 00000000000000000000000017d04113a3651e79e7d40a40e47aae23046f7761
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.