Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 8 from a total of 8 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| End | 17072630 | 1053 days ago | IN | 0 ETH | 0.0049126 | ||||
| Launch Challenge | 17072627 | 1053 days ago | IN | 0 ETH | 0.00769456 | ||||
| Open Position | 17072623 | 1053 days ago | IN | 0 ETH | 0.06602591 | ||||
| Open Position | 16810950 | 1090 days ago | IN | 0 ETH | 0.03507616 | ||||
| Open Position | 16803559 | 1091 days ago | IN | 0 ETH | 0.05511655 | ||||
| Open Position | 16796392 | 1092 days ago | IN | 0 ETH | 0.03813942 | ||||
| Open Position | 16748348 | 1099 days ago | IN | 0 ETH | 0.04064876 | ||||
| Open Position | 16722344 | 1102 days ago | IN | 0 ETH | 0.05539674 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
MintingHub
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./IERC20.sol";
import "./IReserve.sol";
import "./IFrankencoin.sol";
import "./Ownable.sol";
import "./IPosition.sol";
/**
* A hub for creating collateralized minting positions for a given collateral.
*/
contract MintingHub {
uint256 public constant OPENING_FEE = 1000 * 10**18;
uint32 public constant BASE = 1000_000;
uint32 public constant CHALLENGER_REWARD = 20000; // 2%
IPositionFactory private immutable POSITION_FACTORY; // position contract to clone
IFrankencoin public immutable zchf; // currency
Challenge[] public challenges;
mapping (address => mapping (address => uint256)) public pendingReturns;
struct Challenge {
address challenger;
IPosition position;
uint256 size;
uint256 end;
address bidder;
uint256 bid;
}
event ChallengeStarted(address indexed challenger, address indexed position, uint256 size, uint256 number);
event ChallengeAverted(address indexed position, uint256 number);
event ChallengeSucceeded(address indexed position, uint256 bid, uint256 number);
event NewBid(uint256 challengedId, uint256 bidAmount, address bidder);
constructor(address _zchf, address factory) {
zchf = IFrankencoin(_zchf);
POSITION_FACTORY = IPositionFactory(factory);
}
/**
* @notice open a collateralized loan position
* @param _collateralAddress address of collateral token
* @param _minCollateral minimum collateral required to prevent dust amounts
* @param _initialCollateral amount of initial collateral to be deposited
* @param _mintingMaximum maximal amount of ZCHF that can be minted by the position owner
* @param _expirationSeconds position tenor in unit of timestamp (seconds) from 'now'
* @param _challengeSeconds challenge period. Longer for less liquid collateral.
* @param _mintingFeePPM percentage minting fee that will be added to reserve,
* basis 1000_000
* @param _liqPrice Liquidation price with (36 - token decimals) decimals,
* e.g. 18 decimals for an 18 decimal token, 36 decimals for a 0 decimal token.
* @param _reservePPM percentage reserve amount that is added as the
* borrower's stake into reserve, basis 1000_000
* @return address of resulting position
*/
function openPosition(
address _collateralAddress, uint256 _minCollateral, uint256 _initialCollateral,
uint256 _mintingMaximum, uint256 _expirationSeconds, uint256 _challengeSeconds,
uint32 _mintingFeePPM, uint256 _liqPrice, uint32 _reservePPM) public returns (address) {
IPosition pos = IPosition(
POSITION_FACTORY.createNewPosition(
msg.sender,
address(zchf),
_collateralAddress,
_minCollateral,
_initialCollateral,
_mintingMaximum,
_expirationSeconds,
_challengeSeconds,
_mintingFeePPM,
_liqPrice,
_reservePPM
)
);
zchf.registerPosition(address(pos));
zchf.transferFrom(msg.sender, address(zchf.reserve()), OPENING_FEE);
IERC20(_collateralAddress).transferFrom(msg.sender, address(pos), _initialCollateral);
return address(pos);
}
modifier validPos(address position) {
require(zchf.isPosition(position) == address(this), "not our pos");
_;
}
function clonePosition(address position, uint256 _initialCollateral, uint256 _initialMint) public validPos(position) returns (address) {
IPosition existing = IPosition(position);
uint256 limit = existing.reduceLimitForClone(_initialMint);
address pos = POSITION_FACTORY.clonePosition(position);
zchf.registerPosition(pos);
existing.collateral().transferFrom(msg.sender, address(pos), _initialCollateral);
IPosition(pos).initializeClone(msg.sender, existing.price(), limit, _initialCollateral, _initialMint);
return address(pos);
}
function reserve() external view returns (IReserve) {
return IReserve(zchf.reserve());
}
/**
* @notice Launch a challenge on a position
* @param _positionAddr address of the position we want to challenge
* @param _collateralAmount size of the collateral we want to challenge (dec 18)
* @return index of the challenge in challenge-array
*/
function launchChallenge(address _positionAddr, uint256 _collateralAmount) external validPos(_positionAddr) returns (uint256) {
IPosition position = IPosition(_positionAddr);
IERC20(position.collateral()).transferFrom(msg.sender, address(this), _collateralAmount);
uint256 pos = challenges.length;
/*
struct Challenge {address challenger;IPosition position;uint256 size;uint256 end;address bidder;uint256 bid;
*/
challenges.push(Challenge(msg.sender, position, _collateralAmount, block.timestamp + position.challengePeriod(), address(0x0), 0));
position.notifyChallengeStarted(_collateralAmount);
emit ChallengeStarted(msg.sender, address(position), _collateralAmount, pos);
return pos;
}
function splitChallenge(uint256 _challengeNumber, uint256 splitOffAmount) external returns (uint256) {
Challenge storage challenge = challenges[_challengeNumber];
require(challenge.challenger != address(0x0));
Challenge memory copy = Challenge(
challenge.challenger,
challenge.position,
splitOffAmount,
challenge.end,
challenge.bidder,
(challenge.bid * splitOffAmount) / challenge.size
);
challenge.bid -= copy.bid;
challenge.size -= copy.size;
uint256 min = IPosition(challenge.position).minimumCollateral();
require(challenge.size >= min);
require(copy.size >= min);
uint256 pos = challenges.length;
challenges.push(copy);
emit ChallengeStarted(challenge.challenger, address(challenge.position), challenge.size, _challengeNumber);
emit ChallengeStarted(copy.challenger, address(copy.position), copy.size, pos);
return pos;
}
function minBid(uint256 challenge) public view returns (uint256) {
return minBid(challenges[challenge]);
}
function minBid(Challenge storage challenge) internal view returns (uint256) {
return (challenge.bid * 1005) / 1000; // should be at least 0.5% higher
}
/**
* @notice Post a bid (ZCHF amount) for an existing challenge (given collateral amount)
* @param _challengeNumber index of the challenge in the challenges array
* @param _bidAmountZCHF how much to bid for the collateral of this challenge (dec 18)
*/
function bid(uint256 _challengeNumber, uint256 _bidAmountZCHF, uint256 expectedSize) external {
Challenge storage challenge = challenges[_challengeNumber];
if (block.timestamp >= challenge.end) {
// if bid is too late, the transaction ends the challenge
end(_challengeNumber, false);
} else {
require(expectedSize == challenge.size, "s");
if (challenge.bid > 0) {
zchf.transfer(challenge.bidder, challenge.bid); // return old bid
}
emit NewBid(_challengeNumber, _bidAmountZCHF, msg.sender);
if (challenge.position.tryAvertChallenge(challenge.size, _bidAmountZCHF)) {
// bid above Z_B/C_C >= (1+h)Z_M/C_M, challenge averted, end immediately by selling challenger collateral to bidder
zchf.transferFrom(msg.sender, challenge.challenger, _bidAmountZCHF);
challenge.position.collateral().transfer(msg.sender, challenge.size);
emit ChallengeAverted(address(challenge.position), _challengeNumber);
delete challenges[_challengeNumber];
} else {
require(_bidAmountZCHF >= minBid(challenge), "below min bid");
uint256 earliestEnd = block.timestamp + 30 minutes;
if (earliestEnd >= challenge.end) {
// bump remaining time to 10 minutes if we are near the end of the challenge
challenge.end = earliestEnd;
}
require(challenge.size * challenge.position.price() > _bidAmountZCHF * 10**18, "whot");
zchf.transferFrom(msg.sender, address(this), _bidAmountZCHF);
challenge.bid = _bidAmountZCHF;
challenge.bidder = msg.sender;
}
}
}
/**
* @notice
* Ends a challenge successfully after the auction period ended.
*
* Example: A challenged position had 1000 ABC tokens as collateral with a minting limit of 200,000 ZCHF, out
* of which 60,000 have been minted and thereof 15,000 used to buy reserve tokens. The challenger auctioned off
* 400 ABC tokens, challenging 40% of the position. The highest bid was 75,000 ZCHF, below the
* 40% * 200,000 = 80,000 ZCHF needed to avert the challenge. The reserve ratio of the position is 25%.
*
* Now, the following happens when calling this method:
* - 400 ABC from the position owner are transferred to the bidder
* - The challenger's 400 ABC are returned to the challenger
* - 40% of the reserve bought with the 15,000 ZCHF is sold off (approximately), yielding e.g. 5,600 ZCHF
* - 40% * 60,000 = 24,000 ZCHF are burned
* - 80,000 * 2% = 1600 ZCHF are given to the challenger as a reward
* - 40% * (100%-25%) * (200,000 - 60,000) = 42,000 are given to the position owner for selling off unused collateral
* - The remaining 75,000 + 5,600 - 1,600 - 24,000 - 42,000 = 13,000 ZCHF are sent to the reserve pool
*
* If the highest bid was only 60,000 ZCHF, then we would have had a shortfall of 2,000 ZCHF that would in the
* first priority be covered by the reserve and in the second priority by minting unbacked ZCHF, triggering a
* balance alert.
* @param _challengeNumber number of the challenge in challenge-array
*/
function end(uint256 _challengeNumber) external {
end(_challengeNumber, false);
}
function isChallengeOpen(uint256 _challengeNumber) external view returns (bool) {
return challenges[_challengeNumber].end > block.timestamp;
}
/**
* @dev internal end function
* @param _challengeNumber number of the challenge in challenge-array
*/
function end(uint256 _challengeNumber, bool postponeCollateralReturn) public {
Challenge storage challenge = challenges[_challengeNumber];
require(block.timestamp >= challenge.end, "period has not ended");
// challenge must have been successful, because otherwise it would have immediately ended on placing the winning bid
returnCollateral(challenge, postponeCollateralReturn);
// notify the position that will send the collateral to the bidder. If there is no bid, send the collateral to msg.sender
address recipient = challenge.bidder == address(0x0) ? msg.sender : challenge.bidder;
(address owner, uint256 effectiveBid, uint256 volume, uint256 repayment, uint32 reservePPM) = challenge.position.notifyChallengeSucceeded(recipient, challenge.bid, challenge.size);
if (effectiveBid < challenge.bid) {
// overbid, return excess amount
IERC20(zchf).transfer(challenge.bidder, challenge.bid - effectiveBid);
}
uint256 reward = (volume * CHALLENGER_REWARD) / BASE;
uint256 fundsNeeded = reward + repayment;
if (effectiveBid > fundsNeeded){
zchf.transfer(owner, effectiveBid - fundsNeeded);
} else if (effectiveBid < fundsNeeded){
zchf.notifyLoss(fundsNeeded - effectiveBid); // ensure we have enough to pay everything
}
zchf.transfer(challenge.challenger, reward); // pay out the challenger reward
zchf.burn(repayment, reservePPM); // Repay the challenged part
emit ChallengeSucceeded(address(challenge.position), challenge.bid, _challengeNumber);
delete challenges[_challengeNumber];
}
function returnPostponedCollateral(address collateral, address target) external {
uint256 amount = pendingReturns[collateral][msg.sender];
delete pendingReturns[collateral][msg.sender];
IERC20(collateral).transfer(target, amount);
}
function returnCollateral(Challenge storage challenge, bool postpone) internal {
if (postpone){
// Postponing helps in case the challenger was blacklisted on the collateral token or otherwise cannot receive it at the moment.
pendingReturns[address(challenge.position.collateral())][challenge.challenger] += challenge.size;
} else {
challenge.position.collateral().transfer(challenge.challenger, challenge.size); // return the challenger's collateral
}
}
}
interface IPositionFactory {
function createNewPosition(
address _owner,
address _zchf,
address _collateral,
uint256 _minCollateral,
uint256 _initialCollateral,
uint256 _initialLimit,
uint256 _duration,
uint256 _challengePeriod,
uint32 _mintingFeePPM,
uint256 _liqPrice,
uint32 _reserve
) external returns (address);
function clonePosition(address _existing) external returns (address);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./IERC20.sol";
import "./IReserve.sol";
import "./IFrankencoin.sol";
interface IPosition {
function collateral() external returns (IERC20);
function minimumCollateral() external returns (uint256);
function challengePeriod() external returns (uint256);
function price() external returns (uint256);
function reduceLimitForClone(uint256 amount) external returns (uint256);
function initializeClone(address owner, uint256 _price, uint256 _limit, uint256 _coll, uint256 _mint) external;
function deny(address[] calldata helpers, string calldata message) external;
function notifyChallengeStarted(uint256 size) external;
function tryAvertChallenge(uint256 size, uint256 bid) external returns (bool);
function notifyChallengeSucceeded(address bidder, uint256 bid, uint256 size) external returns (address, uint256, uint256, uint256, uint32);
}// SPDX-License-Identifier: MIT
//
// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol
//
// Modifications:
// - Replaced Context._msgSender() with msg.sender
// - Made leaner
// - Extracted interface
pragma solidity ^0.8.0;
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor (address initialOwner) {
require(initialOwner != address(0), "0x0");
owner = initialOwner;
emit OwnershipTransferred(address(0), owner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) virtual public onlyOwner {
require(newOwner != address(0), "0x0");
owner = newOwner;
emit OwnershipTransferred(owner, newOwner);
}
modifier onlyOwner() {
require(owner == msg.sender || owner == address(0x0), "not owner");
_;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./IERC20.sol";
import "./IReserve.sol";
interface IFrankencoin is IERC20 {
function suggestMinter(address _minter, uint256 _applicationPeriod,
uint256 _applicationFee, string calldata _message) external;
function registerPosition(address position) external;
function denyMinter(address minter, address[] calldata helpers, string calldata message) external;
function reserve() external view returns (IReserve);
function isMinter(address minter) external view returns (bool);
function isPosition(address position) external view returns (address);
function mint(address target, uint256 amount) external;
function mint(address target, uint256 amount, uint32 reservePPM, uint32 feePPM) external;
function burn(uint256 amountIncludingReserve, uint32 reservePPM) external;
function burnFrom(address payer, uint256 targetTotalBurnAmount, uint32 _reservePPM) external returns (uint256);
function burnWithReserve(uint256 amountExcludingReserve, uint32 reservePPM) external returns (uint256);
function burn(address target, uint256 amount) external;
function notifyLoss(uint256 amount) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface IReserve {
function isQualified(address sender, address[] calldata helpers) external view returns (bool);
}/**
* SPDX-License-Identifier: MIT
*
* Copyright (c) 2016-2019 zOS Global Limited
*
*/
pragma solidity ^0.8.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 {
// Optional functions
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
/**
* @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);
function transferAndCall(address recipient, uint256 amount, bytes calldata data) 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.
*
* > 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);
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_zchf","type":"address"},{"internalType":"address","name":"factory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"position","type":"address"},{"indexed":false,"internalType":"uint256","name":"number","type":"uint256"}],"name":"ChallengeAverted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"challenger","type":"address"},{"indexed":true,"internalType":"address","name":"position","type":"address"},{"indexed":false,"internalType":"uint256","name":"size","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"number","type":"uint256"}],"name":"ChallengeStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"position","type":"address"},{"indexed":false,"internalType":"uint256","name":"bid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"number","type":"uint256"}],"name":"ChallengeSucceeded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"challengedId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bidAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"bidder","type":"address"}],"name":"NewBid","type":"event"},{"inputs":[],"name":"BASE","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CHALLENGER_REWARD","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OPENING_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_challengeNumber","type":"uint256"},{"internalType":"uint256","name":"_bidAmountZCHF","type":"uint256"},{"internalType":"uint256","name":"expectedSize","type":"uint256"}],"name":"bid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"challenges","outputs":[{"internalType":"address","name":"challenger","type":"address"},{"internalType":"contract IPosition","name":"position","type":"address"},{"internalType":"uint256","name":"size","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"bidder","type":"address"},{"internalType":"uint256","name":"bid","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"position","type":"address"},{"internalType":"uint256","name":"_initialCollateral","type":"uint256"},{"internalType":"uint256","name":"_initialMint","type":"uint256"}],"name":"clonePosition","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_challengeNumber","type":"uint256"}],"name":"end","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_challengeNumber","type":"uint256"},{"internalType":"bool","name":"postponeCollateralReturn","type":"bool"}],"name":"end","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_challengeNumber","type":"uint256"}],"name":"isChallengeOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_positionAddr","type":"address"},{"internalType":"uint256","name":"_collateralAmount","type":"uint256"}],"name":"launchChallenge","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challenge","type":"uint256"}],"name":"minBid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_collateralAddress","type":"address"},{"internalType":"uint256","name":"_minCollateral","type":"uint256"},{"internalType":"uint256","name":"_initialCollateral","type":"uint256"},{"internalType":"uint256","name":"_mintingMaximum","type":"uint256"},{"internalType":"uint256","name":"_expirationSeconds","type":"uint256"},{"internalType":"uint256","name":"_challengeSeconds","type":"uint256"},{"internalType":"uint32","name":"_mintingFeePPM","type":"uint32"},{"internalType":"uint256","name":"_liqPrice","type":"uint256"},{"internalType":"uint32","name":"_reservePPM","type":"uint32"}],"name":"openPosition","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"pendingReturns","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserve","outputs":[{"internalType":"contract IReserve","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"collateral","type":"address"},{"internalType":"address","name":"target","type":"address"}],"name":"returnPostponedCollateral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_challengeNumber","type":"uint256"},{"internalType":"uint256","name":"splitOffAmount","type":"uint256"}],"name":"splitChallenge","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zchf","outputs":[{"internalType":"contract IFrankencoin","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60c06040523480156200001157600080fd5b506040516200250f3803806200250f833981016040819052620000349162000069565b6001600160a01b0391821660a05216608052620000a1565b80516001600160a01b03811681146200006457600080fd5b919050565b600080604083850312156200007d57600080fd5b62000088836200004c565b915062000098602084016200004c565b90509250929050565b60805160a0516123d16200013e60003960008181610295015281816103b3015281816105020152818161086b01528181610a7401528181610b5901528181610c1001528181610cb801528181610d4a01528181610e8001528181610f8601528181610fe601528181611016015281816111aa0152818161137f015281816115cd0152611d63015260008181610ef601526112f001526123d16000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80638f1d3776116100a2578063c4d4803a11610071578063c4d4803a14610290578063c5360227146102b7578063cd3293de146102ca578063e85cde6f146102d2578063ec342ad0146102e557600080fd5b80638f1d3776146101ea578063af5806b61461023c578063be747fd51461025a578063c0dba9441461026d57600080fd5b80633611a3b7116100de5780633611a3b71461016e578063643745fb1461019957806374362a25146101c45780637b7da10e146101d757600080fd5b80630ad24528146101105780632ac9bf09146101255780632bf78dd814610138578063314142f21461015b575b600080fd5b61012361011e366004612059565b6102ef565b005b610123610133366004612072565b6102fd565b610148683635c9adc5dea0000081565b6040519081526020015b60405180910390f35b6101236101693660046120ac565b61090b565b61018161017c366004612103565b610e63565b6040516001600160a01b039091168152602001610152565b6101486101a7366004612189565b600160209081526000928352604080842090915290825290205481565b6101816101d23660046121b7565b611184565b6101486101e53660046121ec565b6115a7565b6101fd6101f8366004612059565b611939565b604080516001600160a01b03978816815295871660208701528501939093526060840191909152909216608082015260a081019190915260c001610152565b610245614e2081565b60405163ffffffff9091168152602001610152565b610148610268366004612218565b611990565b61028061027b366004612059565b611d04565b6040519015158152602001610152565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b6101486102c5366004612059565b611d34565b610181611d5f565b6101236102e0366004612189565b611de8565b610245620f424081565b6102fa81600061090b565b50565b60008084815481106103115761031161223a565b906000526020600020906006020190508060030154421061033c5761033784600061090b565b610905565b806002015482146103785760405162461bcd60e51b81526020600482015260016024820152607360f81b60448201526064015b60405180910390fd5b60058101541561042257600481810154600583015460405163a9059cbb60e01b81526001600160a01b039283169381019390935260248301527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156103fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104209190612250565b505b6040805185815260208101859052338183015290517f0b946a7d9cbd47da0dd592970ef1259349c40f44b231f11da4babeb56c07dd2d9181900360600190a160018101546002820154604051631f4a712160e11b81526001600160a01b0390921691633e94e242916104a1918790600401918252602082015260400190565b6020604051808303816000875af11580156104c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e49190612250565b156107175780546040516323b872dd60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116926323b872dd9261053c92339216908890600401612274565b6020604051808303816000875af115801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f9190612250565b508060010160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b81526004016020604051808303816000875af11580156105d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fb9190612298565b600282015460405163a9059cbb60e01b815233600482015260248101919091526001600160a01b03919091169063a9059cbb906044016020604051808303816000875af1158015610650573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106749190612250565b5060018101546040518581526001600160a01b03909116907f77f5c683926510b182ace6fbf98ddedb0d8f79ddbcbd37b76472bd0428d328ca9060200160405180910390a2600084815481106106cc576106cc61223a565b60009182526020822060069091020180546001600160a01b03199081168255600182018054821690556002820183905560038201839055600482018054909116905560050155610905565b61072081611e79565b83101561075f5760405162461bcd60e51b815260206004820152600d60248201526c18995b1bddc81b5a5b88189a59609a1b604482015260640161036f565b600061076d426107086122cb565b90508160030154811061078257600382018190555b61079484670de0b6b3a76400006122de565b8260010160009054906101000a90046001600160a01b03166001600160a01b031663a035b1fe6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f91906122f5565b836002015461081e91906122de565b116108545760405162461bcd60e51b815260040161036f906020808252600490820152631dda1bdd60e21b604082015260600190565b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906108a490339030908990600401612274565b6020604051808303816000875af11580156108c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e79190612250565b5050600581018390556004810180546001600160a01b031916331790555b50505050565b600080838154811061091f5761091f61223a565b90600052602060002090600602019050806003015442101561097a5760405162461bcd60e51b81526020600482015260146024820152731c195c9a5bd9081a185cc81b9bdd08195b99195960621b604482015260640161036f565b6109848183611e9a565b60048101546000906001600160a01b0316156109ad5760048201546001600160a01b03166109af565b335b60018301546005840154600285015460405163707271b160e01b81526001600160a01b038086166004830152602482019390935260448101919091529293506000928392839283928392919091169063707271b19060640160a0604051808303816000875af1158015610a26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4a919061230e565b945094509450945094508660050154841015610b1b57600487015460058801546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263a9059cbb92911690610aaa908890612366565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610af5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b199190612250565b505b6000620f4240610b2d614e20866122de565b610b379190612379565b90506000610b4584836122cb565b905080861115610bfe576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a9059cbb88610b89848a612366565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610bd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf89190612250565b50610c90565b80861015610c90576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166361f3d110610c3f8884612366565b6040518263ffffffff1660e01b8152600401610c5d91815260200190565b600060405180830381600087803b158015610c7757600080fd5b505af1158015610c8b573d6000803e3d6000fd5b505050505b885460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015610d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d279190612250565b506040516313980c6b60e31b81526004810185905263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639cc0635890604401600060405180830381600087803b158015610d9657600080fd5b505af1158015610daa573d6000803e3d6000fd5b50505050600189015460058a015460408051918252602082018e90526001600160a01b03909216917ff7bf51234e6ca827a69443267d342998768b8e753f1ec6e1fd72d70714443b16910160405180910390a260008b81548110610e1057610e1061223a565b60009182526020822060069091020180546001600160a01b031990811682556001820180548216905560028201839055600382018390556004820180549091169055600501555050505050505050505050565b6040516353af180760e01b81523360048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301528a81166044830152606482018a90526084820189905260a4820188905260c4820187905260e4820186905263ffffffff8581166101048401526101248301859052831661014483015260009182917f000000000000000000000000000000000000000000000000000000000000000016906353af180790610164016020604051808303816000875af1158015610f40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f649190612298565b60405163b52c696d60e01b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063b52c696d90602401600060405180830381600087803b158015610fcc57600080fd5b505af1158015610fe0573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323b872dd337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd3293de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611072573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110969190612298565b683635c9adc5dea000006040518463ffffffff1660e01b81526004016110be93929190612274565b6020604051808303816000875af11580156110dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111019190612250565b506040516323b872dd60e01b81526001600160a01b038c16906323b872dd9061113290339085908e90600401612274565b6020604051808303816000875af1158015611151573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111759190612250565b509a9950505050505050505050565b604051632748913b60e01b81526001600160a01b038481166004830152600091859130917f000000000000000000000000000000000000000000000000000000000000000090911690632748913b90602401602060405180830381865afa1580156111f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112179190612298565b6001600160a01b03161461125b5760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206f757220706f7360a81b604482015260640161036f565b604051635861764160e11b81526004810184905285906000906001600160a01b0383169063b0c2ec82906024016020604051808303816000875af11580156112a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cb91906122f5565b604051630167d12360e71b81526001600160a01b0389811660048301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063b3e89180906024016020604051808303816000875af1158015611339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135d9190612298565b60405163b52c696d60e01b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063b52c696d90602401600060405180830381600087803b1580156113c557600080fd5b505af11580156113d9573d6000803e3d6000fd5b50505050826001600160a01b031663d8dfeb456040518163ffffffff1660e01b81526004016020604051808303816000875af115801561141d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114419190612298565b6001600160a01b03166323b872dd33838a6040518463ffffffff1660e01b815260040161147093929190612274565b6020604051808303816000875af115801561148f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b39190612250565b50806001600160a01b031663aee1a95933856001600160a01b031663a035b1fe6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611504573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152891906122f5565b6040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101859052606481018a90526084810189905260a401600060405180830381600087803b15801561158357600080fd5b505af1158015611597573d6000803e3d6000fd5b50929a9950505050505050505050565b604051632748913b60e01b81526001600160a01b038381166004830152600091849130917f000000000000000000000000000000000000000000000000000000000000000090911690632748913b90602401602060405180830381865afa158015611616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163a9190612298565b6001600160a01b03161461167e5760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206f757220706f7360a81b604482015260640161036f565b6000849050806001600160a01b031663d8dfeb456040518163ffffffff1660e01b81526004016020604051808303816000875af11580156116c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e79190612298565b6001600160a01b03166323b872dd3330876040518463ffffffff1660e01b815260040161171693929190612274565b6020604051808303816000875af1158015611735573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117599190612250565b5060008080549050905060006040518060c00160405280336001600160a01b03168152602001846001600160a01b03168152602001878152602001846001600160a01b031663f3f480d96040518163ffffffff1660e01b81526004016020604051808303816000875af11580156117d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f891906122f5565b61180290426122cb565b815260006020808301829052604092830182905284546001808201875595835291819020845160069093020180546001600160a01b03199081166001600160a01b03948516178255918501519581018054831696841696909617909555838301516002860155606084015160038601556080840151600480870180549093169184169190911790915560a090930151600590940193909355516342d0204160e01b8152908101879052908316906342d0204190602401600060405180830381600087803b1580156118d257600080fd5b505af11580156118e6573d6000803e3d6000fd5b505060408051888152602081018590526001600160a01b03861693503392507fc4b384b2c5ca32c8e77081f4083be594a1ea9ba34f208a9f9a458f70608585f5910160405180910390a395945050505050565b6000818154811061194957600080fd5b60009182526020909120600690910201805460018201546002830154600384015460048501546005909501546001600160a01b039485169650928416949193909291169086565b600080600084815481106119a6576119a661223a565b6000918252602090912060069091020180549091506001600160a01b03166119cd57600080fd5b6040805160c08101825282546001600160a01b0390811682526001840154811660208301529181018590526003830154606082015260048301549091166080820152600282015460058301546000929160a0830191611a2d9088906122de565b611a379190612379565b81525090508060a00151826005016000828254611a549190612366565b90915550506040810151600283018054600090611a72908490612366565b9091555050600182015460408051632eaf9f1d60e21b815290516000926001600160a01b03169163babe7c74916004808301926020929190829003018187875af1158015611ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae891906122f5565b90508083600201541015611afb57600080fd5b8082604001511015611b0c57600080fd5b600080546001808201835591805283517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5636006830290810180546001600160a01b03199081166001600160a01b03948516179091556020808801517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5648401805484169186169190911790556040808901517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56585015560608901517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56685015560808901517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e567850180549094169086161790925560a08801517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56890930192909255938701548754600289015486519081529283018c9052939490831693909216917fc4b384b2c5ca32c8e77081f4083be594a1ea9ba34f208a9f9a458f70608585f5910160405180910390a382602001516001600160a01b031683600001516001600160a01b03167fc4b384b2c5ca32c8e77081f4083be594a1ea9ba34f208a9f9a458f70608585f5856040015184604051611cf0929190918252602082015260400190565b60405180910390a393505050505b92915050565b60004260008381548110611d1a57611d1a61223a565b906000526020600020906006020160030154119050919050565b6000611cfe60008381548110611d4c57611d4c61223a565b9060005260206000209060060201611e79565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd3293de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de39190612298565b905090565b6001600160a01b03828116600081815260016020908152604080832033845290915280822080549290555163a9059cbb60e01b81529284166004840152602483018190529163a9059cbb906044016020604051808303816000875af1158015611e55573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109059190612250565b60006103e882600501546103ed611e9091906122de565b611cfe9190612379565b8015611f5d5760028201546001808401546040805163d8dfeb4560e01b815290516000926001600160a01b03169163d8dfeb45916004808301926020929190829003018187875af1158015611ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f179190612298565b6001600160a01b0390811682526020808301939093526040918201600090812087549092168152925281208054909190611f529084906122cb565b909155506120559050565b8160010160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611fb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd89190612298565b8254600284015460405163a9059cbb60e01b81526001600160a01b039283166004820152602481019190915291169063a9059cbb906044016020604051808303816000875af115801561202f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120539190612250565b505b5050565b60006020828403121561206b57600080fd5b5035919050565b60008060006060848603121561208757600080fd5b505081359360208301359350604090920135919050565b80151581146102fa57600080fd5b600080604083850312156120bf57600080fd5b8235915060208301356120d18161209e565b809150509250929050565b6001600160a01b03811681146102fa57600080fd5b63ffffffff811681146102fa57600080fd5b60008060008060008060008060006101208a8c03121561212257600080fd5b893561212d816120dc565b985060208a0135975060408a0135965060608a0135955060808a0135945060a08a0135935060c08a0135612160816120f1565b925060e08a013591506101008a0135612178816120f1565b809150509295985092959850929598565b6000806040838503121561219c57600080fd5b82356121a7816120dc565b915060208301356120d1816120dc565b6000806000606084860312156121cc57600080fd5b83356121d7816120dc565b95602085013595506040909401359392505050565b600080604083850312156121ff57600080fd5b823561220a816120dc565b946020939093013593505050565b6000806040838503121561222b57600080fd5b50508035926020909101359150565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561226257600080fd5b815161226d8161209e565b9392505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602082840312156122aa57600080fd5b815161226d816120dc565b634e487b7160e01b600052601160045260246000fd5b80820180821115611cfe57611cfe6122b5565b8082028115828204841417611cfe57611cfe6122b5565b60006020828403121561230757600080fd5b5051919050565b600080600080600060a0868803121561232657600080fd5b8551612331816120dc565b809550506020860151935060408601519250606086015191506080860151612358816120f1565b809150509295509295909350565b81810381811115611cfe57611cfe6122b5565b60008261239657634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220871523be5da513dfa785367f9b964352cd177f987f7d4e570616b8cbdea15c0764736f6c63430008130033000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e000000000000000000000000cfa9b55ed2b0d97ac4f04f168b6670dd1bbe2080
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80638f1d3776116100a2578063c4d4803a11610071578063c4d4803a14610290578063c5360227146102b7578063cd3293de146102ca578063e85cde6f146102d2578063ec342ad0146102e557600080fd5b80638f1d3776146101ea578063af5806b61461023c578063be747fd51461025a578063c0dba9441461026d57600080fd5b80633611a3b7116100de5780633611a3b71461016e578063643745fb1461019957806374362a25146101c45780637b7da10e146101d757600080fd5b80630ad24528146101105780632ac9bf09146101255780632bf78dd814610138578063314142f21461015b575b600080fd5b61012361011e366004612059565b6102ef565b005b610123610133366004612072565b6102fd565b610148683635c9adc5dea0000081565b6040519081526020015b60405180910390f35b6101236101693660046120ac565b61090b565b61018161017c366004612103565b610e63565b6040516001600160a01b039091168152602001610152565b6101486101a7366004612189565b600160209081526000928352604080842090915290825290205481565b6101816101d23660046121b7565b611184565b6101486101e53660046121ec565b6115a7565b6101fd6101f8366004612059565b611939565b604080516001600160a01b03978816815295871660208701528501939093526060840191909152909216608082015260a081019190915260c001610152565b610245614e2081565b60405163ffffffff9091168152602001610152565b610148610268366004612218565b611990565b61028061027b366004612059565b611d04565b6040519015158152602001610152565b6101817f000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e81565b6101486102c5366004612059565b611d34565b610181611d5f565b6101236102e0366004612189565b611de8565b610245620f424081565b6102fa81600061090b565b50565b60008084815481106103115761031161223a565b906000526020600020906006020190508060030154421061033c5761033784600061090b565b610905565b806002015482146103785760405162461bcd60e51b81526020600482015260016024820152607360f81b60448201526064015b60405180910390fd5b60058101541561042257600481810154600583015460405163a9059cbb60e01b81526001600160a01b039283169381019390935260248301527f000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e169063a9059cbb906044016020604051808303816000875af11580156103fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104209190612250565b505b6040805185815260208101859052338183015290517f0b946a7d9cbd47da0dd592970ef1259349c40f44b231f11da4babeb56c07dd2d9181900360600190a160018101546002820154604051631f4a712160e11b81526001600160a01b0390921691633e94e242916104a1918790600401918252602082015260400190565b6020604051808303816000875af11580156104c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e49190612250565b156107175780546040516323b872dd60e01b81526001600160a01b037f000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e8116926323b872dd9261053c92339216908890600401612274565b6020604051808303816000875af115801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f9190612250565b508060010160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b81526004016020604051808303816000875af11580156105d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fb9190612298565b600282015460405163a9059cbb60e01b815233600482015260248101919091526001600160a01b03919091169063a9059cbb906044016020604051808303816000875af1158015610650573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106749190612250565b5060018101546040518581526001600160a01b03909116907f77f5c683926510b182ace6fbf98ddedb0d8f79ddbcbd37b76472bd0428d328ca9060200160405180910390a2600084815481106106cc576106cc61223a565b60009182526020822060069091020180546001600160a01b03199081168255600182018054821690556002820183905560038201839055600482018054909116905560050155610905565b61072081611e79565b83101561075f5760405162461bcd60e51b815260206004820152600d60248201526c18995b1bddc81b5a5b88189a59609a1b604482015260640161036f565b600061076d426107086122cb565b90508160030154811061078257600382018190555b61079484670de0b6b3a76400006122de565b8260010160009054906101000a90046001600160a01b03166001600160a01b031663a035b1fe6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f91906122f5565b836002015461081e91906122de565b116108545760405162461bcd60e51b815260040161036f906020808252600490820152631dda1bdd60e21b604082015260600190565b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e16906323b872dd906108a490339030908990600401612274565b6020604051808303816000875af11580156108c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e79190612250565b5050600581018390556004810180546001600160a01b031916331790555b50505050565b600080838154811061091f5761091f61223a565b90600052602060002090600602019050806003015442101561097a5760405162461bcd60e51b81526020600482015260146024820152731c195c9a5bd9081a185cc81b9bdd08195b99195960621b604482015260640161036f565b6109848183611e9a565b60048101546000906001600160a01b0316156109ad5760048201546001600160a01b03166109af565b335b60018301546005840154600285015460405163707271b160e01b81526001600160a01b038086166004830152602482019390935260448101919091529293506000928392839283928392919091169063707271b19060640160a0604051808303816000875af1158015610a26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4a919061230e565b945094509450945094508660050154841015610b1b57600487015460058801546001600160a01b037f000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e81169263a9059cbb92911690610aaa908890612366565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610af5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b199190612250565b505b6000620f4240610b2d614e20866122de565b610b379190612379565b90506000610b4584836122cb565b905080861115610bfe576001600160a01b037f000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e1663a9059cbb88610b89848a612366565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610bd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf89190612250565b50610c90565b80861015610c90576001600160a01b037f000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e166361f3d110610c3f8884612366565b6040518263ffffffff1660e01b8152600401610c5d91815260200190565b600060405180830381600087803b158015610c7757600080fd5b505af1158015610c8b573d6000803e3d6000fd5b505050505b885460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490527f000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e9091169063a9059cbb906044016020604051808303816000875af1158015610d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d279190612250565b506040516313980c6b60e31b81526004810185905263ffffffff841660248201527f000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e6001600160a01b031690639cc0635890604401600060405180830381600087803b158015610d9657600080fd5b505af1158015610daa573d6000803e3d6000fd5b50505050600189015460058a015460408051918252602082018e90526001600160a01b03909216917ff7bf51234e6ca827a69443267d342998768b8e753f1ec6e1fd72d70714443b16910160405180910390a260008b81548110610e1057610e1061223a565b60009182526020822060069091020180546001600160a01b031990811682556001820180548216905560028201839055600382018390556004820180549091169055600501555050505050505050505050565b6040516353af180760e01b81523360048201526001600160a01b037f000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e811660248301528a81166044830152606482018a90526084820189905260a4820188905260c4820187905260e4820186905263ffffffff8581166101048401526101248301859052831661014483015260009182917f000000000000000000000000cfa9b55ed2b0d97ac4f04f168b6670dd1bbe208016906353af180790610164016020604051808303816000875af1158015610f40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f649190612298565b60405163b52c696d60e01b81526001600160a01b0380831660048301529192507f000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e9091169063b52c696d90602401600060405180830381600087803b158015610fcc57600080fd5b505af1158015610fe0573d6000803e3d6000fd5b505050507f000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e6001600160a01b03166323b872dd337f000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e6001600160a01b031663cd3293de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611072573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110969190612298565b683635c9adc5dea000006040518463ffffffff1660e01b81526004016110be93929190612274565b6020604051808303816000875af11580156110dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111019190612250565b506040516323b872dd60e01b81526001600160a01b038c16906323b872dd9061113290339085908e90600401612274565b6020604051808303816000875af1158015611151573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111759190612250565b509a9950505050505050505050565b604051632748913b60e01b81526001600160a01b038481166004830152600091859130917f000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e90911690632748913b90602401602060405180830381865afa1580156111f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112179190612298565b6001600160a01b03161461125b5760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206f757220706f7360a81b604482015260640161036f565b604051635861764160e11b81526004810184905285906000906001600160a01b0383169063b0c2ec82906024016020604051808303816000875af11580156112a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cb91906122f5565b604051630167d12360e71b81526001600160a01b0389811660048301529192506000917f000000000000000000000000cfa9b55ed2b0d97ac4f04f168b6670dd1bbe2080169063b3e89180906024016020604051808303816000875af1158015611339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135d9190612298565b60405163b52c696d60e01b81526001600160a01b0380831660048301529192507f000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e9091169063b52c696d90602401600060405180830381600087803b1580156113c557600080fd5b505af11580156113d9573d6000803e3d6000fd5b50505050826001600160a01b031663d8dfeb456040518163ffffffff1660e01b81526004016020604051808303816000875af115801561141d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114419190612298565b6001600160a01b03166323b872dd33838a6040518463ffffffff1660e01b815260040161147093929190612274565b6020604051808303816000875af115801561148f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b39190612250565b50806001600160a01b031663aee1a95933856001600160a01b031663a035b1fe6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611504573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152891906122f5565b6040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101859052606481018a90526084810189905260a401600060405180830381600087803b15801561158357600080fd5b505af1158015611597573d6000803e3d6000fd5b50929a9950505050505050505050565b604051632748913b60e01b81526001600160a01b038381166004830152600091849130917f000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e90911690632748913b90602401602060405180830381865afa158015611616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163a9190612298565b6001600160a01b03161461167e5760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206f757220706f7360a81b604482015260640161036f565b6000849050806001600160a01b031663d8dfeb456040518163ffffffff1660e01b81526004016020604051808303816000875af11580156116c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e79190612298565b6001600160a01b03166323b872dd3330876040518463ffffffff1660e01b815260040161171693929190612274565b6020604051808303816000875af1158015611735573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117599190612250565b5060008080549050905060006040518060c00160405280336001600160a01b03168152602001846001600160a01b03168152602001878152602001846001600160a01b031663f3f480d96040518163ffffffff1660e01b81526004016020604051808303816000875af11580156117d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f891906122f5565b61180290426122cb565b815260006020808301829052604092830182905284546001808201875595835291819020845160069093020180546001600160a01b03199081166001600160a01b03948516178255918501519581018054831696841696909617909555838301516002860155606084015160038601556080840151600480870180549093169184169190911790915560a090930151600590940193909355516342d0204160e01b8152908101879052908316906342d0204190602401600060405180830381600087803b1580156118d257600080fd5b505af11580156118e6573d6000803e3d6000fd5b505060408051888152602081018590526001600160a01b03861693503392507fc4b384b2c5ca32c8e77081f4083be594a1ea9ba34f208a9f9a458f70608585f5910160405180910390a395945050505050565b6000818154811061194957600080fd5b60009182526020909120600690910201805460018201546002830154600384015460048501546005909501546001600160a01b039485169650928416949193909291169086565b600080600084815481106119a6576119a661223a565b6000918252602090912060069091020180549091506001600160a01b03166119cd57600080fd5b6040805160c08101825282546001600160a01b0390811682526001840154811660208301529181018590526003830154606082015260048301549091166080820152600282015460058301546000929160a0830191611a2d9088906122de565b611a379190612379565b81525090508060a00151826005016000828254611a549190612366565b90915550506040810151600283018054600090611a72908490612366565b9091555050600182015460408051632eaf9f1d60e21b815290516000926001600160a01b03169163babe7c74916004808301926020929190829003018187875af1158015611ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae891906122f5565b90508083600201541015611afb57600080fd5b8082604001511015611b0c57600080fd5b600080546001808201835591805283517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5636006830290810180546001600160a01b03199081166001600160a01b03948516179091556020808801517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5648401805484169186169190911790556040808901517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56585015560608901517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56685015560808901517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e567850180549094169086161790925560a08801517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56890930192909255938701548754600289015486519081529283018c9052939490831693909216917fc4b384b2c5ca32c8e77081f4083be594a1ea9ba34f208a9f9a458f70608585f5910160405180910390a382602001516001600160a01b031683600001516001600160a01b03167fc4b384b2c5ca32c8e77081f4083be594a1ea9ba34f208a9f9a458f70608585f5856040015184604051611cf0929190918252602082015260400190565b60405180910390a393505050505b92915050565b60004260008381548110611d1a57611d1a61223a565b906000526020600020906006020160030154119050919050565b6000611cfe60008381548110611d4c57611d4c61223a565b9060005260206000209060060201611e79565b60007f000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e6001600160a01b031663cd3293de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de39190612298565b905090565b6001600160a01b03828116600081815260016020908152604080832033845290915280822080549290555163a9059cbb60e01b81529284166004840152602483018190529163a9059cbb906044016020604051808303816000875af1158015611e55573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109059190612250565b60006103e882600501546103ed611e9091906122de565b611cfe9190612379565b8015611f5d5760028201546001808401546040805163d8dfeb4560e01b815290516000926001600160a01b03169163d8dfeb45916004808301926020929190829003018187875af1158015611ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f179190612298565b6001600160a01b0390811682526020808301939093526040918201600090812087549092168152925281208054909190611f529084906122cb565b909155506120559050565b8160010160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611fb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd89190612298565b8254600284015460405163a9059cbb60e01b81526001600160a01b039283166004820152602481019190915291169063a9059cbb906044016020604051808303816000875af115801561202f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120539190612250565b505b5050565b60006020828403121561206b57600080fd5b5035919050565b60008060006060848603121561208757600080fd5b505081359360208301359350604090920135919050565b80151581146102fa57600080fd5b600080604083850312156120bf57600080fd5b8235915060208301356120d18161209e565b809150509250929050565b6001600160a01b03811681146102fa57600080fd5b63ffffffff811681146102fa57600080fd5b60008060008060008060008060006101208a8c03121561212257600080fd5b893561212d816120dc565b985060208a0135975060408a0135965060608a0135955060808a0135945060a08a0135935060c08a0135612160816120f1565b925060e08a013591506101008a0135612178816120f1565b809150509295985092959850929598565b6000806040838503121561219c57600080fd5b82356121a7816120dc565b915060208301356120d1816120dc565b6000806000606084860312156121cc57600080fd5b83356121d7816120dc565b95602085013595506040909401359392505050565b600080604083850312156121ff57600080fd5b823561220a816120dc565b946020939093013593505050565b6000806040838503121561222b57600080fd5b50508035926020909101359150565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561226257600080fd5b815161226d8161209e565b9392505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602082840312156122aa57600080fd5b815161226d816120dc565b634e487b7160e01b600052601160045260246000fd5b80820180821115611cfe57611cfe6122b5565b8082028115828204841417611cfe57611cfe6122b5565b60006020828403121561230757600080fd5b5051919050565b600080600080600060a0868803121561232657600080fd5b8551612331816120dc565b809550506020860151935060408601519250606086015191506080860151612358816120f1565b809150509295509295909350565b81810381811115611cfe57611cfe6122b5565b60008261239657634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220871523be5da513dfa785367f9b964352cd177f987f7d4e570616b8cbdea15c0764736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e000000000000000000000000cfa9b55ed2b0d97ac4f04f168b6670dd1bbe2080
-----Decoded View---------------
Arg [0] : _zchf (address): 0x422d17ccC1442501D039595ffcaAa71b4686Bf4E
Arg [1] : factory (address): 0xCFa9b55ed2B0d97AC4F04f168B6670dD1BBe2080
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000422d17ccc1442501d039595ffcaaa71b4686bf4e
Arg [1] : 000000000000000000000000cfa9b55ed2b0d97ac4f04f168b6670dd1bbe2080
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.