Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 151 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Fusion | 22000990 | 360 days ago | IN | 0.04 ETH | 0.00018096 | ||||
| Fusion | 9732540 | 2170 days ago | IN | 0.04 ETH | 0.00492599 | ||||
| Fusion | 9727414 | 2171 days ago | IN | 0.04 ETH | 0.00378923 | ||||
| Fusion | 9420958 | 2218 days ago | IN | 0.04 ETH | 0.00303138 | ||||
| Fusion | 9420114 | 2218 days ago | IN | 0.04 ETH | 0.00303138 | ||||
| Fusion | 9402210 | 2221 days ago | IN | 0.04 ETH | 0.00492599 | ||||
| Fusion | 9375479 | 2225 days ago | IN | 0.04 ETH | 0.00454707 | ||||
| Fusion | 9375418 | 2225 days ago | IN | 0.04 ETH | 0.01894615 | ||||
| Fusion | 9345516 | 2230 days ago | IN | 0.04 ETH | 0.00073148 | ||||
| Fusion | 9345471 | 2230 days ago | IN | 0.04 ETH | 0.00076445 | ||||
| Fusion | 9240636 | 2246 days ago | IN | 0.04 ETH | 0.00040031 | ||||
| Fusion | 9198736 | 2253 days ago | IN | 0.04 ETH | 0.00378923 | ||||
| Fusion | 9134107 | 2265 days ago | IN | 0.04 ETH | 0.00379026 | ||||
| Fusion | 9103508 | 2271 days ago | IN | 0.04 ETH | 0.00050963 | ||||
| Fusion | 9103484 | 2271 days ago | IN | 0.04 ETH | 0.00054603 | ||||
| Fusion | 9103481 | 2271 days ago | IN | 0.04 ETH | 0.00054588 | ||||
| Fusion | 9103414 | 2271 days ago | IN | 0.04 ETH | 0.00050949 | ||||
| Fusion | 9103409 | 2271 days ago | IN | 0.04 ETH | 0.00056853 | ||||
| Fusion | 9102624 | 2272 days ago | IN | 0.04 ETH | 0.00378923 | ||||
| Set Fusion Fee | 9102606 | 2272 days ago | IN | 0 ETH | 0.00030449 | ||||
| Fusion | 9078067 | 2276 days ago | IN | 0.02 ETH | 0.00054603 | ||||
| Fusion | 9078058 | 2276 days ago | IN | 0.02 ETH | 0.00060644 | ||||
| Fusion | 9078004 | 2276 days ago | IN | 0.02 ETH | 0.00056853 | ||||
| Fusion | 9077993 | 2276 days ago | IN | 0.02 ETH | 0.00069784 | ||||
| Fusion | 9077976 | 2276 days ago | IN | 0.02 ETH | 0.00072805 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 22000990 | 360 days ago | 0.04 ETH | ||||
| - | 9732540 | 2170 days ago | 0.04 ETH | ||||
| - | 9727414 | 2171 days ago | 0.04 ETH | ||||
| - | 9420958 | 2218 days ago | 0.04 ETH | ||||
| - | 9420114 | 2218 days ago | 0.04 ETH | ||||
| - | 9402210 | 2221 days ago | 0.04 ETH | ||||
| - | 9375479 | 2225 days ago | 0.04 ETH | ||||
| - | 9375418 | 2225 days ago | 0.04 ETH | ||||
| - | 9345516 | 2230 days ago | 0.04 ETH | ||||
| - | 9345471 | 2230 days ago | 0.04 ETH | ||||
| - | 9240636 | 2246 days ago | 0.04 ETH | ||||
| - | 9198736 | 2253 days ago | 0.04 ETH | ||||
| - | 9134107 | 2265 days ago | 0.04 ETH | ||||
| - | 9103508 | 2271 days ago | 0.04 ETH | ||||
| - | 9103484 | 2271 days ago | 0.04 ETH | ||||
| - | 9103481 | 2271 days ago | 0.04 ETH | ||||
| - | 9103414 | 2271 days ago | 0.04 ETH | ||||
| - | 9103409 | 2271 days ago | 0.04 ETH | ||||
| - | 9102624 | 2272 days ago | 0.04 ETH | ||||
| - | 9078067 | 2276 days ago | 0.02 ETH | ||||
| - | 9078058 | 2276 days ago | 0.02 ETH | ||||
| - | 9078004 | 2276 days ago | 0.02 ETH | ||||
| - | 9077993 | 2276 days ago | 0.02 ETH | ||||
| - | 9077976 | 2276 days ago | 0.02 ETH | ||||
| - | 9077963 | 2276 days ago | 0.02 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xA2B09A7b...4c807A529 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Fusion
Compiler Version
v0.5.2+commit.1df8f40c
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2019-11-08
*/
pragma solidity ^0.5.2;
interface ERC165Interface {
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
contract ERC721Interface is ERC165Interface {
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
function balanceOf(address owner) public view returns (uint256 balance);
function ownerOf(uint256 tokenId) public view returns (address owner);
function approve(address to, uint256 tokenId) public;
function getApproved(uint256 tokenId) public view returns (address operator);
function setApprovalForAll(address operator, bool _approved) public;
function isApprovedForAll(address owner, address operator) public view returns (bool);
function transferFrom(address from, address to, uint256 tokenId) public;
function safeTransferFrom(address from, address to, uint256 tokenId) public;
function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public;
}
contract GenerateRandomEntityInterface {
address public tokenAddr;
address public entityDataAddr;
uint256 public priceWei;
uint256 public cntDrawnByEth;
uint256 public capDrawByEth;
address payable public adminWalletAddr;
uint256 public idCounter;
uint256 public modelId;
uint256 public constant modelIdDigit = 1000000;
uint256 public constant typeIdDigit = 100000;
uint256 public constant gen0TypeId = 1;
event TokenAdded(address tokenAddr, uint256 priceInToken);
event Generate (
uint256 tokenId,
address owner,
uint256 createdAt
);
function setPriceWei(uint256 _priceWei) external;
function setPriceToken(address _payableTokenAddr, uint256 _priceInToken) public;
function removePayableToken(address _payableTokenAddr) external;
function setAdminWallet(address payable newWalletAddr) public;
function setCapDrawByEth(uint256 _cap) external;
function setCapDrawByToken(address _tokenAddr, uint256 _cap) external;
function setModelId(uint256 _modelId) external;
function () external payable;
function tokenFallback(address _from, uint _value, bytes memory _data) public;
function isReady() external view returns(bool);
function getPriceInToken(address _payableTokenAddr)
external
view
returns(bool isPayable, uint256 price);
function isEthAvailable() public view returns (bool);
function isTokenAvailable(address _tokenAddr) public view returns (bool);
function getCapDrawByToken(address _tokenAddr) external view returns (uint256);
function getCntDrawnByToken(address _tokenAddr) external view returns (uint256);
function calculateTokenId(uint256 _modelId, uint256 _typeId, uint256 _idCount)
public
pure
returns(uint256 tokenId);
}
contract EntityDataInterface {
address public tokenAddr;
mapping(uint256 => Entity) public entityData;
mapping(uint256 => address) public siringApprovedTo;
event UpdateRootHash (
uint256 tokenId,
bytes rootHash
);
event Birth (
uint256 tokenId,
address owner,
uint256 matronId,
uint256 sireId
);
struct Entity {
bytes rootHash;
uint256 birthTime;
uint256 cooldownEndTime;
uint256 matronId;
uint256 sireId;
uint256 generation;
}
function updateRootHash(uint256 tokenId, bytes calldata rootHash) external;
function createEntity(address owner, uint256 tokenId, uint256 _generation, uint256 _matronId, uint256 _sireId, uint256 _birthTime) public;
function getEntity(uint256 tokenId)
external
view
returns(
uint256 birthTime,
uint256 cooldownEndTime,
uint256 matronId,
uint256 sireId,
uint256 generation
);
function setCooldownEndTime(uint256 tokenId, uint256 _cooldownEndTime) external;
function approveSiring(uint256 sireId, address approveTo) external;
function clearSiringApproval(uint256 sireId) external;
function isSiringApprovedTo(uint256 tokenId, address borrower)
external
view
returns(bool);
function isReadyForFusion(uint256 tokenId)
external
view
returns (bool ready);
}
contract RoleManager {
mapping(address => bool) private admins;
mapping(address => bool) private controllers;
modifier onlyAdmins {
require(admins[msg.sender], 'only admins');
_;
}
modifier onlyControllers {
require(controllers[msg.sender], 'only controllers');
_;
}
constructor() public {
admins[msg.sender] = true;
controllers[msg.sender] = true;
}
function addController(address _newController) external onlyAdmins{
controllers[_newController] = true;
}
function addAdmin(address _newAdmin) external onlyAdmins{
admins[_newAdmin] = true;
}
function removeController(address _controller) external onlyAdmins{
controllers[_controller] = false;
}
function removeAdmin(address _admin) external onlyAdmins{
require(_admin != msg.sender, 'unexecutable operation');
admins[_admin] = false;
}
function isAdmin(address addr) external view returns (bool) {
return (admins[addr]);
}
function isController(address addr) external view returns (bool) {
return (controllers[addr]);
}
}
contract AccessController {
address roleManagerAddr;
modifier onlyAdmins {
require(RoleManager(roleManagerAddr).isAdmin(msg.sender), 'only admins');
_;
}
modifier onlyControllers {
require(RoleManager(roleManagerAddr).isController(msg.sender), 'only controllers');
_;
}
constructor (address _roleManagerAddr) public {
require(_roleManagerAddr != address(0), '_roleManagerAddr: Invalid address (zero address)');
roleManagerAddr = _roleManagerAddr;
}
}
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0);
uint256 c = a / b;
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a);
uint256 c = a - b;
return c;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a);
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b != 0);
return a % b;
}
}
contract FusionInterface {
using SafeMath for uint256;
uint256 public fusionFeeWei;
address public tokenAddr;
address public entityDataAddr;
address payable generateRandomEntityAddr;
uint256 public cooldownPeriod;
uint256 public incubationTime;
address payable public adminWalletAddr;
bool public isFusionDisabled;
uint256 public idCounter;
uint256 public constant fusionTypeId = 2;
uint256 public capDrawByEth;
uint256 public cntDrawnByEth;
event Fuse(uint256 matronId, uint256 sireId, uint256 fusionTime);
function setFusionFee(uint256 newFeeWei) public;
function setAdminWallet(address payable newWalletAddr) public;
function fusion(uint256 matronId, uint256 sireId) external payable returns(uint256 childId);
function isValidFusionPair(uint256 matronId, uint256 sireId)
public
view
returns(bool isValid);
function setCapDrawByEth(uint256 _cap) external {
capDrawByEth = _cap;
}
function disableFusion() public {
isFusionDisabled = true;
}
}
contract ERC721MetadataInterface is ERC721Interface {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function tokenURI(uint256 tokenId) external view returns (string memory);
}
contract ERC721EnumerableInterface is ERC721Interface {
function totalSupply() public view returns (uint256);
function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256 tokenId);
function tokenByIndex(uint256 index) public view returns (uint256);
}
contract ERC165 is ERC165Interface {
bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;
mapping(bytes4 => bool) private _supportedInterfaces;
constructor () internal {
_registerInterface(_INTERFACE_ID_ERC165);
}
function supportsInterface(bytes4 interfaceId) external view returns (bool) {
return _supportedInterfaces[interfaceId];
}
function _registerInterface(bytes4 interfaceId) internal {
require(interfaceId != 0xffffffff);
_supportedInterfaces[interfaceId] = true;
}
}
contract Ownable {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () internal {
_owner = msg.sender;
emit OwnershipTransferred(address(0), _owner);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(isOwner());
_;
}
function isOwner() public view returns (bool) {
return msg.sender == _owner;
}
function renounceOwnership() public onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public onlyOwner {
_transferOwnership(newOwner);
}
function _transferOwnership(address newOwner) internal {
require(newOwner != address(0));
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
contract ERC721ReceiverInterface {
function onERC721Received(address operator, address from, uint256 tokenId, bytes memory data)
public returns (bytes4);
}
contract ERC721Extended is ERC721Interface, ERC721MetadataInterface, ERC721EnumerableInterface, ERC165, Ownable {
using SafeMath for uint256;
mapping(uint256 => address) private _tokenOwner;
mapping(uint256 => address) private _tokenApprovals;
mapping(address => uint256) private _ownedTokensCount;
mapping(address => mapping (address => bool)) private _operatorApprovals;
string private _name;
string private _symbol;
mapping(uint256 => string) private _tokenURIs;
mapping(address => uint256[]) private _ownedTokens;
mapping(uint256 => uint256) private _ownedTokensIndex;
uint256[] private _allTokens;
mapping(uint256 => uint256) private _allTokensIndex;
bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd;
bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b5e139f;
bytes4 private constant _INTERFACE_ID_ERC721_ENUMERABLE = 0x780e9d63;
bytes4 private constant _ERC721_RECEIVED = 0x150b7a02;
constructor(string memory name, string memory symbol) public {
_name = name;
_symbol = symbol;
_registerInterface(_INTERFACE_ID_ERC721);
_registerInterface(_INTERFACE_ID_ERC721_METADATA);
_registerInterface(_INTERFACE_ID_ERC721_ENUMERABLE);
}
function balanceOf(address owner) public view returns (uint256) {
require(owner != address(0));
return _current(owner);
}
function ownerOf(uint256 tokenId) public view returns (address) {
address owner = _tokenOwner[tokenId];
require(owner != address(0));
return owner;
}
function approve(address to, uint256 tokenId) public {
address owner = ownerOf(tokenId);
require(to != owner);
require(msg.sender == owner || isApprovedForAll(owner, msg.sender));
_tokenApprovals[tokenId] = to;
emit Approval(owner, to, tokenId);
}
function getApproved(uint256 tokenId) public view returns (address) {
require(_exists(tokenId));
return _tokenApprovals[tokenId];
}
function setApprovalForAll(address to, bool approved) public {
require(to != msg.sender);
_operatorApprovals[msg.sender][to] = approved;
emit ApprovalForAll(msg.sender, to, approved);
}
function isApprovedForAll(address owner, address operator) public view returns (bool) {
return _operatorApprovals[owner][operator];
}
function transferFrom(address from, address to, uint256 tokenId) public {
require(_isApprovedOrOwner(msg.sender, tokenId));
_transferFrom(from, to, tokenId);
}
function safeTransferFrom(address from, address to, uint256 tokenId) public {
safeTransferFrom(from, to, tokenId, "");
}
function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public {
transferFrom(from, to, tokenId);
require(_checkOnERC721Received(from, to, tokenId, _data));
}
function _exists(uint256 tokenId) internal view returns (bool) {
address owner = _tokenOwner[tokenId];
return owner != address(0);
}
function _isApprovedOrOwner(address spender, uint256 tokenId) internal view returns (bool) {
require(_exists(tokenId));
address owner = ownerOf(tokenId);
return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
}
function _mint(address to, uint256 tokenId) internal {
require(to != address(0));
require(!_exists(tokenId));
_tokenOwner[tokenId] = to;
_increment(to);
_addTokenToOwnerEnumeration(to, tokenId);
_addTokenToAllTokensEnumeration(tokenId);
emit Transfer(address(0), to, tokenId);
}
function _burn(address owner, uint256 tokenId) internal {
require(ownerOf(tokenId) == owner);
_clearApproval(tokenId);
_decrement(owner);
_tokenOwner[tokenId] = address(0);
if (bytes(_tokenURIs[tokenId]).length != 0) {
delete _tokenURIs[tokenId];
}
_removeTokenFromOwnerEnumeration(owner, tokenId);
_ownedTokensIndex[tokenId] = 0;
_removeTokenFromAllTokensEnumeration(tokenId);
emit Transfer(owner, address(0), tokenId);
}
function _burn(uint256 tokenId) internal {
_burn(ownerOf(tokenId), tokenId);
}
function _transferFrom(address from, address to, uint256 tokenId) internal {
require(ownerOf(tokenId) == from);
require(to != address(0));
_clearApproval(tokenId);
_decrement(from);
_increment(to);
_tokenOwner[tokenId] = to;
_removeTokenFromOwnerEnumeration(from, tokenId);
_addTokenToOwnerEnumeration(to, tokenId);
emit Transfer(from, to, tokenId);
}
function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data)
internal returns (bool)
{
if (!_isContract(to)) {
return true;
}
bytes4 retval = ERC721ReceiverInterface(to).onERC721Received(msg.sender, from, tokenId, _data);
return (retval == _ERC721_RECEIVED);
}
function name() external view returns (string memory) {
return _name;
}
function symbol() external view returns (string memory) {
return _symbol;
}
function tokenURI(uint256 tokenId) external view returns (string memory) {
require(_exists(tokenId));
return _tokenURIs[tokenId];
}
function setTokenURI(uint256 tokenId, string calldata uri) external onlyOwner {
_setTokenURI(tokenId, uri);
}
function _setTokenURI(uint256 tokenId, string memory uri) internal {
require(_exists(tokenId));
_tokenURIs[tokenId] = uri;
}
function totalSupply() public view returns (uint256) {
return _allTokens.length;
}
function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256) {
require(index < balanceOf(owner));
return _ownedTokens[owner][index];
}
function tokenByIndex(uint256 index) public view returns (uint256) {
require(index < totalSupply());
return _allTokens[index];
}
function _tokensOfOwner(address owner) internal view returns (uint256[] storage) {
return _ownedTokens[owner];
}
function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
_ownedTokensIndex[tokenId] = _ownedTokens[to].length;
_ownedTokens[to].push(tokenId);
}
function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
_allTokensIndex[tokenId] = _allTokens.length;
_allTokens.push(tokenId);
}
function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
uint256 lastTokenIndex = _ownedTokens[from].length.sub(1);
uint256 tokenIndex = _ownedTokensIndex[tokenId];
if (tokenIndex != lastTokenIndex) {
uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];
_ownedTokens[from][tokenIndex] = lastTokenId;
_ownedTokensIndex[lastTokenId] = tokenIndex;
}
_ownedTokens[from].length--;
}
function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
uint256 lastTokenIndex = _allTokens.length.sub(1);
uint256 tokenIndex = _allTokensIndex[tokenId];
uint256 lastTokenId = _allTokens[lastTokenIndex];
_allTokens[tokenIndex] = lastTokenId;
_allTokensIndex[lastTokenId] = tokenIndex;
_allTokens.length--;
_allTokensIndex[tokenId] = 0;
}
function _isContract(address account) private view returns (bool) {
uint256 size;
assembly { size := extcodesize(account) }
return size > 0;
}
function _current(address tokenAddress) private view returns (uint256) {
return _ownedTokensCount[tokenAddress];
}
function _increment(address tokenAddress) private {
_ownedTokensCount[tokenAddress] = _ownedTokensCount[tokenAddress].add(1);
}
function _decrement(address tokenAddress) private {
_ownedTokensCount[tokenAddress] = _ownedTokensCount[tokenAddress].sub(1);
}
function _clearApproval(uint256 tokenId) private {
if (_tokenApprovals[tokenId] != address(0)) {
_tokenApprovals[tokenId] = address(0);
}
}
}
contract GeneAidolsToken is ERC721Extended, AccessController {
constructor(address _roleManagerAddr)
public
ERC721Extended("GeneA.I.dols", "GAI")
AccessController(_roleManagerAddr)
{
}
function generateToken(uint256 tokenId, address to) external onlyControllers {
_mint(to, tokenId);
}
function setTokenURI(uint256 tokenId, string calldata uri) external onlyAdmins {
_setTokenURI(tokenId, uri);
}
function tokenExists(uint256 tokenId) external view returns (bool exists) {
return _exists(tokenId);
}
}
contract Fusion is FusionInterface, AccessController{
using SafeMath for uint256;
event Fuse(uint256 matronId, uint256 sireId, uint256 childId, uint256 fusionTime);
bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd;
uint256 private constant modelId = 101;
constructor(
address _entityDataAddr,
address _roleManagerAddr,
address payable _generateRandomEntityAddr
)
public
AccessController(_roleManagerAddr)
{
require(_entityDataAddr != address(0), '_entityDataAddr: Invalid address (zero address)');
entityDataAddr = _entityDataAddr;
tokenAddr = EntityDataInterface(entityDataAddr).tokenAddr();
require(ERC721Interface(tokenAddr).supportsInterface(_INTERFACE_ID_ERC721));
generateRandomEntityAddr = _generateRandomEntityAddr;
fusionFeeWei = 100 finney;
cooldownPeriod = 1 days;
idCounter = 1;
isFusionDisabled = false;
capDrawByEth = 10**9;
cntDrawnByEth = 0;
incubationTime = 5 minutes;
setAdminWallet(msg.sender);
}
function setFusionFee(uint256 newFeeWei) public onlyAdmins {
fusionFeeWei = newFeeWei;
}
function setAdminWallet(address payable newWalletAddr) public onlyAdmins {
require(newWalletAddr != address(0), 'newWalletAddr: Invalid address (zero address)');
adminWalletAddr = newWalletAddr;
}
function setCapDrawByEth(uint256 _cap) external onlyAdmins {
capDrawByEth = _cap;
}
function fusion(uint256 matronId, uint256 sireId) external payable returns(uint256 childId) {
require(!isFusionDisabled, 'Fusion is disabled');
cntDrawnByEth++;
require(isFusionAvailable(), 'Reached cap');
require(fusionFeeWei <= msg.value, 'Insufficient amount of ether');
require(matronId != sireId, 'matron and sire should be different from each other');
EntityDataInterface ed = EntityDataInterface(entityDataAddr);
require(ed.isReadyForFusion(matronId), 'matron is not ready for fusion');
require(ed.isReadyForFusion(sireId), 'sire is not ready for fusion');
address ownerOfMatron = ERC721Interface(tokenAddr).ownerOf(matronId);
require(ownerOfMatron == msg.sender || RoleManager(roleManagerAddr).isController(msg.sender) );
require(ERC721Interface(tokenAddr).ownerOf(sireId) == ownerOfMatron ||
ed.isSiringApprovedTo(sireId, ownerOfMatron) ||
RoleManager(roleManagerAddr).isController(msg.sender));
uint256 cooldownEndTime = uint256(block.timestamp).add(cooldownPeriod);
ed.setCooldownEndTime(matronId, cooldownEndTime);
ed.setCooldownEndTime(sireId, cooldownEndTime);
EntityDataInterface.Entity memory matron;
(
matron.birthTime,
matron.cooldownEndTime,
matron.matronId,
matron.sireId,
matron.generation
) = ed.getEntity(matronId);
EntityDataInterface.Entity memory sire;
(
sire.birthTime,
sire.cooldownEndTime,
sire.matronId,
sire.sireId,
sire.generation
) = ed.getEntity(sireId);
uint256 childGeneration = matron.generation.add(1);
if(sire.generation > matron.generation){
childGeneration = sire.generation.add(1);
}
address childOwner = ownerOfMatron;
uint256 childId = GenerateRandomEntityInterface(generateRandomEntityAddr).calculateTokenId(modelId, fusionTypeId, idCounter);
idCounter++;
ed.createEntity(
childOwner,
childId,
childGeneration,
matronId,
sireId,
uint256(block.timestamp).add(incubationTime)
);
emit Fuse(matronId, sireId, childId, uint256(block.timestamp));
msg.sender.transfer(msg.value - fusionFeeWei);
adminWalletAddr.transfer(fusionFeeWei);
return childId;
}
function isValidFusionPair(uint256 matronId, uint256 sireId)
public
view
returns(bool isValid)
{
return true;
}
function disableFusion() public onlyAdmins {
isFusionDisabled = true;
}
function isFusionAvailable()
public
view
returns(bool isAvailable)
{
if( cntDrawnByEth >= capDrawByEth ){
return false;
}
return true;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"cooldownPeriod","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"matronId","type":"uint256"},{"name":"sireId","type":"uint256"}],"name":"isValidFusionPair","outputs":[{"name":"isValid","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminWalletAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"capDrawByEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newWalletAddr","type":"address"}],"name":"setAdminWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cntDrawnByEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"matronId","type":"uint256"},{"name":"sireId","type":"uint256"}],"name":"fusion","outputs":[{"name":"childId","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"fusionTypeId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"incubationTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fusionFeeWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isFusionDisabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"disableFusion","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"entityDataAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isFusionAvailable","outputs":[{"name":"isAvailable","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"idCounter","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newFeeWei","type":"uint256"}],"name":"setFusionFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cap","type":"uint256"}],"name":"setCapDrawByEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_entityDataAddr","type":"address"},{"name":"_roleManagerAddr","type":"address"},{"name":"_generateRandomEntityAddr","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"matronId","type":"uint256"},{"indexed":false,"name":"sireId","type":"uint256"},{"indexed":false,"name":"childId","type":"uint256"},{"indexed":false,"name":"fusionTime","type":"uint256"}],"name":"Fuse","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"matronId","type":"uint256"},{"indexed":false,"name":"sireId","type":"uint256"},{"indexed":false,"name":"fusionTime","type":"uint256"}],"name":"Fuse","type":"event"}]Contract Creation Code
0x60806040523480156200001157600080fd5b50604051606080620018c3833981018060405260608110156200003357600080fd5b508051602082015160409092015190919081600160a060020a0381161515620000a8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180620018646030913960400191505060405180910390fd5b600a8054600160a060020a031916600160a060020a03928316179055831615156200011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018062001894602f913960400191505060405180910390fd5b60028054600160a060020a031916600160a060020a038581169190911791829055604080517f5fbe4d1d00000000000000000000000000000000000000000000000000000000815290519290911691635fbe4d1d91600480820192602092909190829003018186803b1580156200019557600080fd5b505afa158015620001aa573d6000803e3d6000fd5b505050506040513d6020811015620001c157600080fd5b505160018054600160a060020a031916600160a060020a039283161790819055604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152905191909216916301ffc9a7916024808301926020929190829003018186803b1580156200025b57600080fd5b505afa15801562000270573d6000803e3d6000fd5b505050506040513d60208110156200028757600080fd5b505115156200029557600080fd5b60038054600160a060020a031916600160a060020a03831617905567016345785d8a000060009081556201518060045560016007556006805460a060020a60ff0219169055633b9aca0060085560095561012c600555620002ff3364010000000062000308810204565b5050506200048e565b600a54604080517f24d7806c0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a03909216916324d7806c91602480820192602092909190829003018186803b1580156200036d57600080fd5b505afa15801562000382573d6000803e3d6000fd5b505050506040513d60208110156200039957600080fd5b505115156200040957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6f6e6c792061646d696e73000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03811615156200046c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018062001837602d913960400191505060405180910390fd5b60068054600160a060020a031916600160a060020a0392909216919091179055565b611399806200049e6000396000f3fe60806040526004361061010d5760003560e060020a90048063759ed53511610099578063d893e96a11610068578063d893e96a146102ae578063e59f9ead146102c3578063eb08ab28146102d8578063f92ffecd146102ed578063fbb82cde146103175761010d565b8063759ed5351461025a578063aeebbe841461026f578063b7f256d714610284578063d6135a11146102995761010d565b806335082933116100e057806335082933146101c35780634677c73f146101f85780635fbe4d1d1461020d57806365a8a03714610222578063729763ad146102455761010d565b806304646a49146101125780631c59fc1a14610139578063316c56741461017d578063321e29d7146101ae575b600080fd5b34801561011e57600080fd5b50610127610341565b60408051918252519081900360200190f35b34801561014557600080fd5b506101696004803603604081101561015c57600080fd5b5080359060200135610347565b604080519115158252519081900360200190f35b34801561018957600080fd5b5061019261034f565b60408051600160a060020a039092168252519081900360200190f35b3480156101ba57600080fd5b5061012761035e565b3480156101cf57600080fd5b506101f6600480360360208110156101e657600080fd5b5035600160a060020a0316610364565b005b34801561020457600080fd5b5061012761049b565b34801561021957600080fd5b506101926104a1565b6101276004803603604081101561023857600080fd5b50803590602001356104b0565b34801561025157600080fd5b50610127610fbd565b34801561026657600080fd5b50610127610fc2565b34801561027b57600080fd5b50610127610fc8565b34801561029057600080fd5b50610169610fce565b3480156102a557600080fd5b506101f6610fef565b3480156102ba57600080fd5b506101926110e4565b3480156102cf57600080fd5b506101696110f3565b3480156102e457600080fd5b50610127611111565b3480156102f957600080fd5b506101f66004803603602081101561031057600080fd5b5035611117565b34801561032357600080fd5b506101f66004803603602081101561033a57600080fd5b50356111da565b60045481565b600192915050565b600654600160a060020a031681565b60085481565b600a546040805160e260020a630935e01b0281523360048201529051600160a060020a03909216916324d7806c91602480820192602092909190829003018186803b1580156103b257600080fd5b505afa1580156103c6573d6000803e3d6000fd5b505050506040513d60208110156103dc57600080fd5b50511515610422576040805160e560020a62461bcd02815260206004820152600b602482015260008051602061134e833981519152604482015290519081900360640190fd5b600160a060020a038116151561046c5760405160e560020a62461bcd02815260040180806020018281038252602d8152602001806112ee602d913960400191505060405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60095481565b600154600160a060020a031681565b60065460009074010000000000000000000000000000000000000000900460ff1615610526576040805160e560020a62461bcd02815260206004820152601260248201527f467573696f6e2069732064697361626c65640000000000000000000000000000604482015290519081900360640190fd5b6009805460010190556105376110f3565b151561058d576040805160e560020a62461bcd02815260206004820152600b60248201527f5265616368656420636170000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000543410156105e7576040805160e560020a62461bcd02815260206004820152601c60248201527f496e73756666696369656e7420616d6f756e74206f6620657468657200000000604482015290519081900360640190fd5b828214156106295760405160e560020a62461bcd02815260040180806020018281038252603381526020018061131b6033913960400191505060405180910390fd5b600254604080517fa2c529e3000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a0390921691829163a2c529e3916024808301926020929190829003018186803b15801561068f57600080fd5b505afa1580156106a3573d6000803e3d6000fd5b505050506040513d60208110156106b957600080fd5b50511515610711576040805160e560020a62461bcd02815260206004820152601e60248201527f6d6174726f6e206973206e6f7420726561647920666f7220667573696f6e0000604482015290519081900360640190fd5b80600160a060020a031663a2c529e3846040518263ffffffff1660e060020a0281526004018082815260200191505060206040518083038186803b15801561075857600080fd5b505afa15801561076c573d6000803e3d6000fd5b505050506040513d602081101561078257600080fd5b505115156107da576040805160e560020a62461bcd02815260206004820152601c60248201527f73697265206973206e6f7420726561647920666f7220667573696f6e00000000604482015290519081900360640190fd5b600154604080517f6352211e000000000000000000000000000000000000000000000000000000008152600481018790529051600092600160a060020a031691636352211e916024808301926020929190829003018186803b15801561083f57600080fd5b505afa158015610853573d6000803e3d6000fd5b505050506040513d602081101561086957600080fd5b50519050600160a060020a0381163314806109105750600a54604080517fb429afeb0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163b429afeb91602480820192602092909190829003018186803b1580156108e357600080fd5b505afa1580156108f7573d6000803e3d6000fd5b505050506040513d602081101561090d57600080fd5b50515b151561091b57600080fd5b600154604080517f6352211e000000000000000000000000000000000000000000000000000000008152600481018790529051600160a060020a03808516931691636352211e916024808301926020929190829003018186803b15801561098157600080fd5b505afa158015610995573d6000803e3d6000fd5b505050506040513d60208110156109ab57600080fd5b5051600160a060020a03161480610a4b575081600160a060020a031663156d4d4a85836040518363ffffffff1660e060020a0281526004018083815260200182600160a060020a0316600160a060020a031681526020019250505060206040518083038186803b158015610a1e57600080fd5b505afa158015610a32573d6000803e3d6000fd5b505050506040513d6020811015610a4857600080fd5b50515b80610ae25750600a54604080517fb429afeb0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163b429afeb91602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b50515b1515610aed57600080fd5b6000610b046004544261129d90919063ffffffff16565b905082600160a060020a031663b5d77b2087836040518363ffffffff1660e060020a0281526004018083815260200182815260200192505050600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b5050505082600160a060020a031663b5d77b2086836040518363ffffffff1660e060020a0281526004018083815260200182815260200192505050600060405180830381600087803b158015610bc057600080fd5b505af1158015610bd4573d6000803e3d6000fd5b50505050610be06112b6565b83600160a060020a031663b3a27842886040518263ffffffff1660e060020a0281526004018082815260200191505060a06040518083038186803b158015610c2757600080fd5b505afa158015610c3b573d6000803e3d6000fd5b505050506040513d60a0811015610c5157600080fd5b50805160208083015160408085015160608087015160809788015160a08a015296880196909652948601949094529284019290925290820152610c926112b6565b84600160a060020a031663b3a27842886040518263ffffffff1660e060020a0281526004018082815260200191505060a06040518083038186803b158015610cd957600080fd5b505afa158015610ced573d6000803e3d6000fd5b505050506040513d60a0811015610d0357600080fd5b50805160208083015160408085015160608087015160809788015160a08a81019190915297890152870152850152830152820151600090610d4b90600163ffffffff61129d16565b90508260a001518260a001511115610d765760a0820151610d7390600163ffffffff61129d16565b90505b600354600754604080517f357fdb6900000000000000000000000000000000000000000000000000000000815260656004820152600260248201526044810192909252518792600092600160a060020a039091169163357fdb6991606480820192602092909190829003018186803b158015610df157600080fd5b505afa158015610e05573d6000803e3d6000fd5b505050506040513d6020811015610e1b57600080fd5b8101908080519060200190929190505050905060076000815480929190600101919050555087600160a060020a0316632493046a8383868f8f610e696005544261129d90919063ffffffff16565b6040518763ffffffff1660e060020a0281526004018087600160a060020a0316600160a060020a031681526020018681526020018581526020018481526020018381526020018281526020019650505050505050600060405180830381600087803b158015610ed757600080fd5b505af1158015610eeb573d6000803e3d6000fd5b5050604080518e8152602081018e905280820185905242606082015290517fd044c3664e29a1391ed9e88f9184d0cac33c3dfbe9389b455a0f6f3ef85c0d199350908190036080019150a133600160a060020a03166108fc60005434039081150290604051600060405180830381858888f19350505050158015610f73573d6000803e3d6000fd5b5060065460008054604051600160a060020a039093169281156108fc0292818181858888f19350505050158015610fae573d6000803e3d6000fd5b509a9950505050505050505050565b600281565b60055481565b60005481565b60065474010000000000000000000000000000000000000000900460ff1681565b600a546040805160e260020a630935e01b0281523360048201529051600160a060020a03909216916324d7806c91602480820192602092909190829003018186803b15801561103d57600080fd5b505afa158015611051573d6000803e3d6000fd5b505050506040513d602081101561106757600080fd5b505115156110ad576040805160e560020a62461bcd02815260206004820152600b602482015260008051602061134e833981519152604482015290519081900360640190fd5b6006805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600254600160a060020a031681565b600060085460095410151561110a5750600061110e565b5060015b90565b60075481565b600a546040805160e260020a630935e01b0281523360048201529051600160a060020a03909216916324d7806c91602480820192602092909190829003018186803b15801561116557600080fd5b505afa158015611179573d6000803e3d6000fd5b505050506040513d602081101561118f57600080fd5b505115156111d5576040805160e560020a62461bcd02815260206004820152600b602482015260008051602061134e833981519152604482015290519081900360640190fd5b600055565b600a546040805160e260020a630935e01b0281523360048201529051600160a060020a03909216916324d7806c91602480820192602092909190829003018186803b15801561122857600080fd5b505afa15801561123c573d6000803e3d6000fd5b505050506040513d602081101561125257600080fd5b50511515611298576040805160e560020a62461bcd02815260206004820152600b602482015260008051602061134e833981519152604482015290519081900360640190fd5b600855565b6000828201838110156112af57600080fd5b9392505050565b60c060405190810160405280606081526020016000815260200160008152602001600081526020016000815260200160008152509056fe6e657757616c6c6574416464723a20496e76616c6964206164647265737320287a65726f2061646472657373296d6174726f6e20616e6420736972652073686f756c6420626520646966666572656e742066726f6d2065616368206f746865726f6e6c792061646d696e73000000000000000000000000000000000000000000a165627a7a72305820a5baf7cea1e7f3153f9b8d4a4ce386786dd7fa6db7374ccaf75a1cda0530bb8500296e657757616c6c6574416464723a20496e76616c6964206164647265737320287a65726f2061646472657373295f726f6c654d616e61676572416464723a20496e76616c6964206164647265737320287a65726f2061646472657373295f656e7469747944617461416464723a20496e76616c6964206164647265737320287a65726f206164647265737329000000000000000000000000ae958e030626a27290c478cac9b2afd4728990870000000000000000000000005c8f39f9906d185e21da40e8ee4eec97f40813bb000000000000000000000000e248af563df309a7c61809acb491ec10b44a53f2
Deployed Bytecode
0x60806040526004361061010d5760003560e060020a90048063759ed53511610099578063d893e96a11610068578063d893e96a146102ae578063e59f9ead146102c3578063eb08ab28146102d8578063f92ffecd146102ed578063fbb82cde146103175761010d565b8063759ed5351461025a578063aeebbe841461026f578063b7f256d714610284578063d6135a11146102995761010d565b806335082933116100e057806335082933146101c35780634677c73f146101f85780635fbe4d1d1461020d57806365a8a03714610222578063729763ad146102455761010d565b806304646a49146101125780631c59fc1a14610139578063316c56741461017d578063321e29d7146101ae575b600080fd5b34801561011e57600080fd5b50610127610341565b60408051918252519081900360200190f35b34801561014557600080fd5b506101696004803603604081101561015c57600080fd5b5080359060200135610347565b604080519115158252519081900360200190f35b34801561018957600080fd5b5061019261034f565b60408051600160a060020a039092168252519081900360200190f35b3480156101ba57600080fd5b5061012761035e565b3480156101cf57600080fd5b506101f6600480360360208110156101e657600080fd5b5035600160a060020a0316610364565b005b34801561020457600080fd5b5061012761049b565b34801561021957600080fd5b506101926104a1565b6101276004803603604081101561023857600080fd5b50803590602001356104b0565b34801561025157600080fd5b50610127610fbd565b34801561026657600080fd5b50610127610fc2565b34801561027b57600080fd5b50610127610fc8565b34801561029057600080fd5b50610169610fce565b3480156102a557600080fd5b506101f6610fef565b3480156102ba57600080fd5b506101926110e4565b3480156102cf57600080fd5b506101696110f3565b3480156102e457600080fd5b50610127611111565b3480156102f957600080fd5b506101f66004803603602081101561031057600080fd5b5035611117565b34801561032357600080fd5b506101f66004803603602081101561033a57600080fd5b50356111da565b60045481565b600192915050565b600654600160a060020a031681565b60085481565b600a546040805160e260020a630935e01b0281523360048201529051600160a060020a03909216916324d7806c91602480820192602092909190829003018186803b1580156103b257600080fd5b505afa1580156103c6573d6000803e3d6000fd5b505050506040513d60208110156103dc57600080fd5b50511515610422576040805160e560020a62461bcd02815260206004820152600b602482015260008051602061134e833981519152604482015290519081900360640190fd5b600160a060020a038116151561046c5760405160e560020a62461bcd02815260040180806020018281038252602d8152602001806112ee602d913960400191505060405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60095481565b600154600160a060020a031681565b60065460009074010000000000000000000000000000000000000000900460ff1615610526576040805160e560020a62461bcd02815260206004820152601260248201527f467573696f6e2069732064697361626c65640000000000000000000000000000604482015290519081900360640190fd5b6009805460010190556105376110f3565b151561058d576040805160e560020a62461bcd02815260206004820152600b60248201527f5265616368656420636170000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000543410156105e7576040805160e560020a62461bcd02815260206004820152601c60248201527f496e73756666696369656e7420616d6f756e74206f6620657468657200000000604482015290519081900360640190fd5b828214156106295760405160e560020a62461bcd02815260040180806020018281038252603381526020018061131b6033913960400191505060405180910390fd5b600254604080517fa2c529e3000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a0390921691829163a2c529e3916024808301926020929190829003018186803b15801561068f57600080fd5b505afa1580156106a3573d6000803e3d6000fd5b505050506040513d60208110156106b957600080fd5b50511515610711576040805160e560020a62461bcd02815260206004820152601e60248201527f6d6174726f6e206973206e6f7420726561647920666f7220667573696f6e0000604482015290519081900360640190fd5b80600160a060020a031663a2c529e3846040518263ffffffff1660e060020a0281526004018082815260200191505060206040518083038186803b15801561075857600080fd5b505afa15801561076c573d6000803e3d6000fd5b505050506040513d602081101561078257600080fd5b505115156107da576040805160e560020a62461bcd02815260206004820152601c60248201527f73697265206973206e6f7420726561647920666f7220667573696f6e00000000604482015290519081900360640190fd5b600154604080517f6352211e000000000000000000000000000000000000000000000000000000008152600481018790529051600092600160a060020a031691636352211e916024808301926020929190829003018186803b15801561083f57600080fd5b505afa158015610853573d6000803e3d6000fd5b505050506040513d602081101561086957600080fd5b50519050600160a060020a0381163314806109105750600a54604080517fb429afeb0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163b429afeb91602480820192602092909190829003018186803b1580156108e357600080fd5b505afa1580156108f7573d6000803e3d6000fd5b505050506040513d602081101561090d57600080fd5b50515b151561091b57600080fd5b600154604080517f6352211e000000000000000000000000000000000000000000000000000000008152600481018790529051600160a060020a03808516931691636352211e916024808301926020929190829003018186803b15801561098157600080fd5b505afa158015610995573d6000803e3d6000fd5b505050506040513d60208110156109ab57600080fd5b5051600160a060020a03161480610a4b575081600160a060020a031663156d4d4a85836040518363ffffffff1660e060020a0281526004018083815260200182600160a060020a0316600160a060020a031681526020019250505060206040518083038186803b158015610a1e57600080fd5b505afa158015610a32573d6000803e3d6000fd5b505050506040513d6020811015610a4857600080fd5b50515b80610ae25750600a54604080517fb429afeb0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163b429afeb91602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b50515b1515610aed57600080fd5b6000610b046004544261129d90919063ffffffff16565b905082600160a060020a031663b5d77b2087836040518363ffffffff1660e060020a0281526004018083815260200182815260200192505050600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b5050505082600160a060020a031663b5d77b2086836040518363ffffffff1660e060020a0281526004018083815260200182815260200192505050600060405180830381600087803b158015610bc057600080fd5b505af1158015610bd4573d6000803e3d6000fd5b50505050610be06112b6565b83600160a060020a031663b3a27842886040518263ffffffff1660e060020a0281526004018082815260200191505060a06040518083038186803b158015610c2757600080fd5b505afa158015610c3b573d6000803e3d6000fd5b505050506040513d60a0811015610c5157600080fd5b50805160208083015160408085015160608087015160809788015160a08a015296880196909652948601949094529284019290925290820152610c926112b6565b84600160a060020a031663b3a27842886040518263ffffffff1660e060020a0281526004018082815260200191505060a06040518083038186803b158015610cd957600080fd5b505afa158015610ced573d6000803e3d6000fd5b505050506040513d60a0811015610d0357600080fd5b50805160208083015160408085015160608087015160809788015160a08a81019190915297890152870152850152830152820151600090610d4b90600163ffffffff61129d16565b90508260a001518260a001511115610d765760a0820151610d7390600163ffffffff61129d16565b90505b600354600754604080517f357fdb6900000000000000000000000000000000000000000000000000000000815260656004820152600260248201526044810192909252518792600092600160a060020a039091169163357fdb6991606480820192602092909190829003018186803b158015610df157600080fd5b505afa158015610e05573d6000803e3d6000fd5b505050506040513d6020811015610e1b57600080fd5b8101908080519060200190929190505050905060076000815480929190600101919050555087600160a060020a0316632493046a8383868f8f610e696005544261129d90919063ffffffff16565b6040518763ffffffff1660e060020a0281526004018087600160a060020a0316600160a060020a031681526020018681526020018581526020018481526020018381526020018281526020019650505050505050600060405180830381600087803b158015610ed757600080fd5b505af1158015610eeb573d6000803e3d6000fd5b5050604080518e8152602081018e905280820185905242606082015290517fd044c3664e29a1391ed9e88f9184d0cac33c3dfbe9389b455a0f6f3ef85c0d199350908190036080019150a133600160a060020a03166108fc60005434039081150290604051600060405180830381858888f19350505050158015610f73573d6000803e3d6000fd5b5060065460008054604051600160a060020a039093169281156108fc0292818181858888f19350505050158015610fae573d6000803e3d6000fd5b509a9950505050505050505050565b600281565b60055481565b60005481565b60065474010000000000000000000000000000000000000000900460ff1681565b600a546040805160e260020a630935e01b0281523360048201529051600160a060020a03909216916324d7806c91602480820192602092909190829003018186803b15801561103d57600080fd5b505afa158015611051573d6000803e3d6000fd5b505050506040513d602081101561106757600080fd5b505115156110ad576040805160e560020a62461bcd02815260206004820152600b602482015260008051602061134e833981519152604482015290519081900360640190fd5b6006805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600254600160a060020a031681565b600060085460095410151561110a5750600061110e565b5060015b90565b60075481565b600a546040805160e260020a630935e01b0281523360048201529051600160a060020a03909216916324d7806c91602480820192602092909190829003018186803b15801561116557600080fd5b505afa158015611179573d6000803e3d6000fd5b505050506040513d602081101561118f57600080fd5b505115156111d5576040805160e560020a62461bcd02815260206004820152600b602482015260008051602061134e833981519152604482015290519081900360640190fd5b600055565b600a546040805160e260020a630935e01b0281523360048201529051600160a060020a03909216916324d7806c91602480820192602092909190829003018186803b15801561122857600080fd5b505afa15801561123c573d6000803e3d6000fd5b505050506040513d602081101561125257600080fd5b50511515611298576040805160e560020a62461bcd02815260206004820152600b602482015260008051602061134e833981519152604482015290519081900360640190fd5b600855565b6000828201838110156112af57600080fd5b9392505050565b60c060405190810160405280606081526020016000815260200160008152602001600081526020016000815260200160008152509056fe6e657757616c6c6574416464723a20496e76616c6964206164647265737320287a65726f2061646472657373296d6174726f6e20616e6420736972652073686f756c6420626520646966666572656e742066726f6d2065616368206f746865726f6e6c792061646d696e73000000000000000000000000000000000000000000a165627a7a72305820a5baf7cea1e7f3153f9b8d4a4ce386786dd7fa6db7374ccaf75a1cda0530bb850029
Swarm Source
bzzr://a5baf7cea1e7f3153f9b8d4a4ce386786dd7fa6db7374ccaf75a1cda0530bb85
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 ]
[ 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.