Address Contract Partially Verified
Address
0x3Ffe568Bc93aB78Deb2De4B6Cd449F56cE16EE00
Balance
0 ETH
Nonce
1
Code Size
4333 bytes
Creator
0x04981bF5...4E6C at tx 0x21c56f2b...a2cfd7
Indexed Transactions
Index loading...
Contract Bytecode
4333 bytes
0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063378aa1c414610046578063805af4bf146100625780638ce9b5e514610093575b600080fd5b610060600480360381019061005b9190610b90565b6100af565b005b61007c60048036038101906100779190610ca5565b610651565b60405161008a929190610d03565b60405180910390f35b6100ad60048036038101906100a89190610b90565b6106a2565b005b8181905084849050146100f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ee90610daf565b60405180910390fd5b6000848490509050600080600090505b828160ff1610156106485784848260ff1681811061012857610127610dcf565b5b905060200281019061013a9190610e0d565b9050915060008211156106355786868260ff1681811061015d5761015c610dcf565b5b90506020020160208101906101729190610e70565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8b013481a55a771c875448b57d127c841d2b9f48913629cce585bc93ce16280987878560ff168181106101d6576101d5610dcf565b5b90506020028101906101e89190610e0d565b6040516101f6929190610f1e565b60405180910390a360005b828160ff1610156106335760008089898560ff1681811061022557610224610dcf565b5b905060200201602081019061023a9190610e70565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087878560ff1681811061028c5761028b610dcf565b5b905060200281019061029e9190610e0d565b8460ff168181106102b2576102b1610dcf565b5b90506020020135815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034f90610f8e565b60405180910390fd5b60008089898560ff1681811061037157610370610dcf565b5b90506020020160208101906103869190610e70565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087878560ff168181106103d8576103d7610dcf565b5b90506020028101906103ea9190610e0d565b8460ff168181106103fe576103fd610dcf565b5b905060200201358152602001908152602001600020600101544311610458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044f90610ffa565b60405180910390fd5b60008089898560ff1681811061047157610470610dcf565b5b90506020020160208101906104869190610e70565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087878560ff168181106104d8576104d7610dcf565b5b90506020028101906104ea9190610e0d565b8460ff168181106104fe576104fd610dcf565b5b905060200201358152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160009055505087878360ff1681811061055b5761055a610dcf565b5b90506020020160208101906105709190610e70565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd303389898760ff168181106105a3576105a2610dcf565b5b90506020028101906105b59190610e0d565b8660ff168181106105c9576105c8610dcf565b5b905060200201356040518463ffffffff1660e01b81526004016105ee9392919061101a565b600060405180830381600087803b15801561060857600080fd5b505af115801561061c573d6000803e3d6000fd5b50505050808061062b9061108d565b915050610201565b505b80806106409061108d565b915050610107565b50505050505050565b6000602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b8181905084849050146106ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e190610daf565b60405180910390fd5b6000848490509050600080600090505b828160ff161015610ac25784848260ff1681811061071b5761071a610dcf565b5b905060200281019061072d9190610e0d565b905091506000821115610aaf5786868260ff168181106107505761074f610dcf565b5b90506020020160208101906107659190610e70565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc1999105dc4ba8e2ccf69e416c5f97a04264a141efb320b52800530150b9dcd887878560ff168181106107c9576107c8610dcf565b5b90506020028101906107db9190610e0d565b6040516107e9929190610f1e565b60405180910390a360005b828160ff161015610aad57336000808a8a8660ff1681811061081957610818610dcf565b5b905060200201602081019061082e9190610e70565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088888660ff168181106108805761087f610dcf565b5b90506020028101906108929190610e0d565b8560ff168181106108a6576108a5610dcf565b5b90506020020135815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550436000808a8a8660ff1681811061091657610915610dcf565b5b905060200201602081019061092b9190610e70565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088888660ff1681811061097d5761097c610dcf565b5b905060200281019061098f9190610e0d565b8560ff168181106109a3576109a2610dcf565b5b9050602002013581526020019081526020016000206001018190555087878360ff168181106109d5576109d4610dcf565b5b90506020020160208101906109ea9190610e70565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd333089898760ff16818110610a1d57610a1c610dcf565b5b9050602002810190610a2f9190610e0d565b8660ff16818110610a4357610a42610dcf565b5b905060200201356040518463ffffffff1660e01b8152600401610a689392919061101a565b600060405180830381600087803b158015610a8257600080fd5b505af1158015610a96573d6000803e3d6000fd5b505050508080610aa59061108d565b9150506107f4565b505b8080610aba9061108d565b9150506106fa565b50505050505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112610afa57610af9610ad5565b5b8235905067ffffffffffffffff811115610b1757610b16610ada565b5b602083019150836020820283011115610b3357610b32610adf565b5b9250929050565b60008083601f840112610b5057610b4f610ad5565b5b8235905067ffffffffffffffff811115610b6d57610b6c610ada565b5b602083019150836020820283011115610b8957610b88610adf565b5b9250929050565b60008060008060408587031215610baa57610ba9610acb565b5b600085013567ffffffffffffffff811115610bc857610bc7610ad0565b5b610bd487828801610ae4565b9450945050602085013567ffffffffffffffff811115610bf757610bf6610ad0565b5b610c0387828801610b3a565b925092505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c3c82610c11565b9050919050565b610c4c81610c31565b8114610c5757600080fd5b50565b600081359050610c6981610c43565b92915050565b6000819050919050565b610c8281610c6f565b8114610c8d57600080fd5b50565b600081359050610c9f81610c79565b92915050565b60008060408385031215610cbc57610cbb610acb565b5b6000610cca85828601610c5a565b9250506020610cdb85828601610c90565b9150509250929050565b610cee81610c31565b82525050565b610cfd81610c6f565b82525050565b6000604082019050610d186000830185610ce5565b610d256020830184610cf4565b9392505050565b600082825260208201905092915050565b7f4e46547320616464726573736573202620746f6b656e496473206c656e67746860008201527f206d69736d617463682e00000000000000000000000000000000000000000000602082015250565b6000610d99602a83610d2c565b9150610da482610d3d565b604082019050919050565b60006020820190508181036000830152610dc881610d8c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112610e2a57610e29610dfe565b5b80840192508235915067ffffffffffffffff821115610e4c57610e4b610e03565b5b602083019250602082023603831315610e6857610e67610e08565b5b509250929050565b600060208284031215610e8657610e85610acb565b5b6000610e9484828501610c5a565b91505092915050565b600082825260208201905092915050565b600080fd5b82818337600083830152505050565b6000610ece8385610e9d565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115610f0157610f00610eae565b5b602083029250610f12838584610eb3565b82840190509392505050565b60006020820190508181036000830152610f39818486610ec2565b90509392505050565b7f546f6b656e20646f6573206e6f742062656c6f6e6720746f20757365722e0000600082015250565b6000610f78601e83610d2c565b9150610f8382610f42565b602082019050919050565b60006020820190508181036000830152610fa781610f6b565b9050919050565b7f556e6c6f636b20746f6f20666173742e00000000000000000000000000000000600082015250565b6000610fe4601083610d2c565b9150610fef82610fae565b602082019050919050565b6000602082019050818103600083015261101381610fd7565b9050919050565b600060608201905061102f6000830186610ce5565b61103c6020830185610ce5565b6110496040830184610cf4565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff82169050919050565b600061109882611080565b915060ff8214156110ac576110ab611051565b5b60018201905091905056fea26469706673582212200cbb59cbc7015cabf041c7f7eed0a517219c5b7309f7da027db709234588779064736f6c63430008090033
Verified Source Code Partial Match
Compiler: v0.8.9+commit.e5eed63a
EVM: london
Optimization: No
ElderGateway.sol 95 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;
interface INFT {
function transferFrom(
address _from,
address _to,
uint256 _tokenId
) external;
}
contract ElderGateway {
/**
* @dev Details of locked NFT
* @param user owner of tokenId
* @param blockNo block.number when locked
*/
struct Details {
address user;
uint256 blockNo;
}
/**
* @dev mapping holds below values:
* collectionAddress => tokenId => Details
*/
mapping(address => mapping(uint256 => Details)) public lockedData;
/**
* @dev Emits event after nft is successfully locked
* @param user address which locked nfts (owner of tokens)
* @param nft collection address
* @param tokenIds list of tokenIds from `nft` collection
*/
event Locked(address indexed user, address indexed nft, uint256[] tokenIds);
/**
* @dev Emits event after nft is successfully unlocked
* @param user address which unlocked nfts (owner of tokens)
* @param nft collection address
* @param tokenIds list of tokenIds from `nft` collection
*/
event Unlocked(address indexed user, address indexed nft, uint256[] tokenIds);
/**
* @dev Locks multiple tokenIds from multiple collections.
* @param nfts list of collection addresses.
* @param tokenIds list of tokenIds from collections. First dimension index has to match `nfts` index.
*/
function lock(address[] calldata nfts, uint256[][] calldata tokenIds) external {
require(nfts.length == tokenIds.length, "NFTs addresses & tokenIds length mismatch.");
uint256 nftsLength = nfts.length;
uint256 tokenIdsLength;
for (uint8 i = 0; i < nftsLength; i++) {
tokenIdsLength = tokenIds[i].length;
if (tokenIdsLength > 0) {
emit Locked(msg.sender, nfts[i], tokenIds[i]);
for (uint8 j = 0; j < tokenIdsLength; j++) {
lockedData[nfts[i]][tokenIds[i][j]].user = msg.sender;
lockedData[nfts[i]][tokenIds[i][j]].blockNo = block.number;
INFT(nfts[i]).transferFrom(msg.sender, address(this), tokenIds[i][j]);
}
}
}
}
/**
* @dev Unlocks multiple tokenIds from multiple collections.
* @param nfts list of collection addresses.
* @param tokenIds list of tokenIds from collections. First dimension index has to match `nfts` index.
*/
function unlock(address[] calldata nfts, uint256[][] calldata tokenIds) external {
require(nfts.length == tokenIds.length, "NFTs addresses & tokenIds length mismatch.");
uint256 nftsLength = nfts.length;
uint256 tokenIdsLength;
for (uint8 i = 0; i < nftsLength; i++) {
tokenIdsLength = tokenIds[i].length;
if (tokenIdsLength > 0) {
emit Unlocked(msg.sender, nfts[i], tokenIds[i]);
for (uint8 j = 0; j < tokenIdsLength; j++) {
require(msg.sender == lockedData[nfts[i]][tokenIds[i][j]].user, "Token does not belong to user.");
require(block.number > lockedData[nfts[i]][tokenIds[i][j]].blockNo, "Unlock too fast.");
delete lockedData[nfts[i]][tokenIds[i][j]];
INFT(nfts[i]).transferFrom(address(this), msg.sender, tokenIds[i][j]);
}
}
}
}
}
Read Contract
lockedData 0x805af4bf → address, uint256
Write Contract 2 functions
These functions modify contract state and require a wallet transaction to execute.
lock 0x8ce9b5e5
address[] nfts
uint256[][] tokenIds
unlock 0x378aa1c4
address[] nfts
uint256[][] tokenIds
Recent Transactions
Transaction index is loading. Only unfinalized transactions are shown while the index starts up.