Source Code
Latest 25 from a total of 541 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Deposit NF Ts | 419330012 | 16 days ago | IN | 0 ETH | 0.00000085 | ||||
| Deposit NF Ts | 410330745 | 42 days ago | IN | 0 ETH | 0.00000047 | ||||
| Deposit NF Ts | 398410459 | 77 days ago | IN | 0 ETH | 0.00000043 | ||||
| Deposit NF Ts | 396897228 | 81 days ago | IN | 0 ETH | 0.0000045 | ||||
| Deposit NF Ts | 392993053 | 92 days ago | IN | 0 ETH | 0.00000077 | ||||
| Deposit NF Ts | 392531260 | 94 days ago | IN | 0 ETH | 0.00000047 | ||||
| Deposit NF Ts | 391964344 | 95 days ago | IN | 0 ETH | 0.00000048 | ||||
| Deposit NF Ts | 391747807 | 96 days ago | IN | 0 ETH | 0.00000098 | ||||
| Deposit NF Ts | 391318711 | 97 days ago | IN | 0 ETH | 0.00000048 | ||||
| Deposit NF Ts | 390280447 | 100 days ago | IN | 0 ETH | 0.00000044 | ||||
| Deposit NF Ts | 390084310 | 101 days ago | IN | 0 ETH | 0.00000043 | ||||
| Deposit NF Ts | 389938269 | 101 days ago | IN | 0 ETH | 0.00000099 | ||||
| Deposit NF Ts | 389868586 | 101 days ago | IN | 0 ETH | 0.00000054 | ||||
| Deposit NF Ts | 389811930 | 102 days ago | IN | 0 ETH | 0.00000616 | ||||
| Deposit NF Ts | 389764814 | 102 days ago | IN | 0 ETH | 0.00000069 | ||||
| Deposit NF Ts | 389701859 | 102 days ago | IN | 0 ETH | 0.00000045 | ||||
| Deposit NF Ts | 389701730 | 102 days ago | IN | 0 ETH | 0.00000046 | ||||
| Deposit NF Ts | 389701532 | 102 days ago | IN | 0 ETH | 0.00000044 | ||||
| Deposit NF Ts | 389701372 | 102 days ago | IN | 0 ETH | 0.00000047 | ||||
| Deposit NF Ts | 389701170 | 102 days ago | IN | 0 ETH | 0.00000048 | ||||
| Deposit NF Ts | 389700356 | 102 days ago | IN | 0 ETH | 0.0000006 | ||||
| Deposit NF Ts | 389564565 | 102 days ago | IN | 0 ETH | 0.00000049 | ||||
| Deposit NF Ts | 389222263 | 103 days ago | IN | 0 ETH | 0.00000047 | ||||
| Deposit NF Ts | 389222147 | 103 days ago | IN | 0 ETH | 0.00000051 | ||||
| Deposit NF Ts | 389222052 | 103 days ago | IN | 0 ETH | 0.00000051 |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
NFTBridgeDeposit
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 69 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;
import {IERC721A} from "erc721a-4.3.0/contracts/interfaces/IERC721A.sol";
import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
contract NFTBridgeDeposit is IERC721Receiver {
IERC721A public immutable nft;
event Deposit(address indexed depositor, uint256 indexed tokenId);
constructor(address _nft) {
nft = IERC721A(_nft);
}
function depositNFTs(address from, uint256[] calldata tokenIds) external {
for (uint256 i = 0; i < tokenIds.length; i++) {
nft.safeTransferFrom(from, address(this), tokenIds[i]);
emit Deposit(from, tokenIds[i]);
}
}
function onERC721Received(
address,
address,
uint256,
bytes calldata
) external pure override returns (bytes4) {
return IERC721Receiver.onERC721Received.selector;
}
}// SPDX-License-Identifier: MIT // ERC721A Contracts v4.3.0 // Creator: Chiru Labs pragma solidity ^0.8.4; import '../IERC721A.sol';
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721Receiver.sol)
pragma solidity ^0.8.20;
/**
* @title ERC-721 token receiver interface
* @dev Interface for any contract that wants to support safeTransfers
* from ERC-721 asset contracts.
*/
interface IERC721Receiver {
/**
* @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
* by `operator` from `from`, this function is called.
*
* It must return its Solidity selector to confirm the token transfer.
* If any other value is returned or the interface is not implemented by the recipient, the transfer will be
* reverted.
*
* The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
*/
function onERC721Received(
address operator,
address from,
uint256 tokenId,
bytes calldata data
) external returns (bytes4);
}// SPDX-License-Identifier: MIT
// ERC721A Contracts v4.3.0
// Creator: Chiru Labs
pragma solidity ^0.8.4;
/**
* @dev Interface of ERC721A.
*/
interface IERC721A {
/**
* The caller must own the token or be an approved operator.
*/
error ApprovalCallerNotOwnerNorApproved();
/**
* The token does not exist.
*/
error ApprovalQueryForNonexistentToken();
/**
* Cannot query the balance for the zero address.
*/
error BalanceQueryForZeroAddress();
/**
* Cannot mint to the zero address.
*/
error MintToZeroAddress();
/**
* The quantity of tokens minted must be more than zero.
*/
error MintZeroQuantity();
/**
* The token does not exist.
*/
error OwnerQueryForNonexistentToken();
/**
* The caller must own the token or be an approved operator.
*/
error TransferCallerNotOwnerNorApproved();
/**
* The token must be owned by `from`.
*/
error TransferFromIncorrectOwner();
/**
* Cannot safely transfer to a contract that does not implement the
* ERC721Receiver interface.
*/
error TransferToNonERC721ReceiverImplementer();
/**
* Cannot transfer to the zero address.
*/
error TransferToZeroAddress();
/**
* The token does not exist.
*/
error URIQueryForNonexistentToken();
/**
* The `quantity` minted with ERC2309 exceeds the safety limit.
*/
error MintERC2309QuantityExceedsLimit();
/**
* The `extraData` cannot be set on an unintialized ownership slot.
*/
error OwnershipNotInitializedForExtraData();
/**
* The `tokenIds` must be strictly ascending.
*/
error TokenIdsNotStrictlyAscending();
/**
* `_sequentialUpTo()` must be greater than `_startTokenId()`.
*/
error SequentialUpToTooSmall();
/**
* The `tokenId` of a sequential mint exceeds `_sequentialUpTo()`.
*/
error SequentialMintExceedsLimit();
/**
* Spot minting requires a `tokenId` greater than `_sequentialUpTo()`.
*/
error SpotMintTokenIdTooSmall();
/**
* Cannot mint over a token that already exists.
*/
error TokenAlreadyExists();
/**
* The feature is not compatible with spot mints.
*/
error NotCompatibleWithSpotMints();
// =============================================================
// STRUCTS
// =============================================================
struct TokenOwnership {
// The address of the owner.
address addr;
// Stores the start time of ownership with minimal overhead for tokenomics.
uint64 startTimestamp;
// Whether the token has been burned.
bool burned;
// Arbitrary data similar to `startTimestamp` that can be set via {_extraData}.
uint24 extraData;
}
// =============================================================
// TOKEN COUNTERS
// =============================================================
/**
* @dev Returns the total number of tokens in existence.
* Burned tokens will reduce the count.
* To get the total number of tokens minted, please see {_totalMinted}.
*/
function totalSupply() external view returns (uint256);
// =============================================================
// IERC165
// =============================================================
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)
* to learn more about how these ids are created.
*
* This function call must use less than 30000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
// =============================================================
// IERC721
// =============================================================
/**
* @dev Emitted when `tokenId` token is transferred from `from` to `to`.
*/
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
*/
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables or disables
* (`approved`) `operator` to manage all of its assets.
*/
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
/**
* @dev Returns the number of tokens in `owner`'s account.
*/
function balanceOf(address owner) external view returns (uint256 balance);
/**
* @dev Returns the owner of the `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function ownerOf(uint256 tokenId) external view returns (address owner);
/**
* @dev Safely transfers `tokenId` token from `from` to `to`,
* checking first that contract recipients are aware of the ERC721 protocol
* to prevent tokens from being forever locked.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must be have been allowed to move
* this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement
* {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId,
bytes calldata data
) external payable;
/**
* @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId
) external payable;
/**
* @dev Transfers `tokenId` from `from` to `to`.
*
* WARNING: Usage of this method is discouraged, use {safeTransferFrom}
* whenever possible.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token
* by either {approve} or {setApprovalForAll}.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 tokenId
) external payable;
/**
* @dev Gives permission to `to` to transfer `tokenId` token to another account.
* The approval is cleared when the token is transferred.
*
* Only a single account can be approved at a time, so approving the
* zero address clears previous approvals.
*
* Requirements:
*
* - The caller must own the token or be an approved operator.
* - `tokenId` must exist.
*
* Emits an {Approval} event.
*/
function approve(address to, uint256 tokenId) external payable;
/**
* @dev Approve or remove `operator` as an operator for the caller.
* Operators can call {transferFrom} or {safeTransferFrom}
* for any token owned by the caller.
*
* Requirements:
*
* - The `operator` cannot be the caller.
*
* Emits an {ApprovalForAll} event.
*/
function setApprovalForAll(address operator, bool _approved) external;
/**
* @dev Returns the account approved for `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function getApproved(uint256 tokenId) external view returns (address operator);
/**
* @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
*
* See {setApprovalForAll}.
*/
function isApprovedForAll(address owner, address operator) external view returns (bool);
// =============================================================
// IERC721Metadata
// =============================================================
/**
* @dev Returns the token collection name.
*/
function name() external view returns (string memory);
/**
* @dev Returns the token collection symbol.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
*/
function tokenURI(uint256 tokenId) external view returns (string memory);
// =============================================================
// IERC2309
// =============================================================
/**
* @dev Emitted when tokens in `fromTokenId` to `toTokenId`
* (inclusive) is transferred from `from` to `to`, as defined in the
* [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard.
*
* See {_mintERC2309} for more details.
*/
event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to);
}{
"remappings": [
"@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/",
"@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/",
"@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/",
"@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/",
"@uniswap-v2-core-1.0.1/=dependencies/@uniswap-v2-core-1.0.1/",
"@uniswap-v2-periphery-1.1.0-beta.0/=dependencies/@uniswap-v2-periphery-1.1.0-beta.0/",
"balancer-v2-latest/=dependencies/balancer-v2-latest/",
"berachain-contracts-latest/=dependencies/berachain-contracts-latest/",
"erc721a-4.3.0/=dependencies/erc721a-4.3.0/",
"forge-std-1.9.4/=dependencies/forge-std-1.9.4/",
"forge-std/=dependencies/forge-std-1.9.4/src/",
"foundry-devops-0.2.2/=dependencies/foundry-devops-0.2.2/",
"openzeppelin-foundry-upgrades-0.3.6/=dependencies/openzeppelin-foundry-upgrades-0.3.6/",
"solady-0.0.298/=dependencies/solady-0.0.298/",
"solady/src/=dependencies/solady-0.0.298/src/",
"solady/test/=dependencies/solady-0.0.298/test/",
"@balancer-labs/=dependencies/balancer-v2-latest/../../node_modules/@balancer-labs/",
"@mock/=dependencies/berachain-contracts-latest/test/mock/",
"@openzeppelin-gov-ext/=dependencies/berachain-contracts-latest/node_modules/@openzeppelin/contracts-upgradeable/governance/extensions/",
"@openzeppelin-gov/=dependencies/berachain-contracts-latest/node_modules/@openzeppelin/contracts-upgradeable/governance/",
"@prb/math/=dependencies/berachain-contracts-latest/node_modules/@prb/math/",
"@pythnetwork/=dependencies/berachain-contracts-latest/node_modules/@pythnetwork/pyth-sdk-solidity/",
"@uniswap/=dependencies/@uniswap-v2-periphery-1.1.0-beta.0/node_modules/@uniswap/",
"ds-test/=dependencies/openzeppelin-foundry-upgrades-0.3.6/lib/solidity-stringutils/lib/ds-test/src/",
"openzeppelin-foundry-upgrades/=dependencies/openzeppelin-foundry-upgrades-0.3.6/src/",
"solidity-stringutils/=dependencies/openzeppelin-foundry-upgrades-0.3.6/lib/solidity-stringutils/",
"transient-goodies/=dependencies/berachain-contracts-latest/lib/transient-goodies/src/"
],
"optimizer": {
"enabled": true,
"runs": 69
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "cancun",
"viaIR": false
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_nft","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"depositor","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Deposit","type":"event"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"depositNFTs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nft","outputs":[{"internalType":"contract IERC721A","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"}]Contract Creation Code
60a0604052348015600e575f5ffd5b506040516103e63803806103e6833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516103636100835f395f81816085015260e001526103635ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063150b7a021461004357806347ccca0214610080578063e157d91d146100bf575b5f5ffd5b610062610051366004610203565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020015b60405180910390f35b6100a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610077565b6100d26100cd366004610298565b6100d4565b005b5f5b818110156101e2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166342842e0e853086868681811061012157610121610319565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015610175575f5ffd5b505af1158015610187573d5f5f3e3d5ffd5b5050505082828281811061019d5761019d610319565b90506020020135846001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c60405160405180910390a36001016100d6565b50505050565b80356001600160a01b03811681146101fe575f5ffd5b919050565b5f5f5f5f5f60808688031215610217575f5ffd5b610220866101e8565b945061022e602087016101e8565b935060408601359250606086013567ffffffffffffffff811115610250575f5ffd5b8601601f81018813610260575f5ffd5b803567ffffffffffffffff811115610276575f5ffd5b886020828401011115610287575f5ffd5b959894975092955050506020019190565b5f5f5f604084860312156102aa575f5ffd5b6102b3846101e8565b9250602084013567ffffffffffffffff8111156102ce575f5ffd5b8401601f810186136102de575f5ffd5b803567ffffffffffffffff8111156102f4575f5ffd5b8660208260051b8401011115610308575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52603260045260245ffdfea264697066735822122098be2ddcbdfa853b8c1a0fcd6c3da4830a4c308aa50d90ddb84c6586a7276eca64736f6c634300081c0033000000000000000000000000b40ba1951b9b3be813f5a4ceafed29eb08d5358d
Deployed Bytecode
0x608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063150b7a021461004357806347ccca0214610080578063e157d91d146100bf575b5f5ffd5b610062610051366004610203565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020015b60405180910390f35b6100a77f000000000000000000000000b40ba1951b9b3be813f5a4ceafed29eb08d5358d81565b6040516001600160a01b039091168152602001610077565b6100d26100cd366004610298565b6100d4565b005b5f5b818110156101e2577f000000000000000000000000b40ba1951b9b3be813f5a4ceafed29eb08d5358d6001600160a01b03166342842e0e853086868681811061012157610121610319565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015610175575f5ffd5b505af1158015610187573d5f5f3e3d5ffd5b5050505082828281811061019d5761019d610319565b90506020020135846001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c60405160405180910390a36001016100d6565b50505050565b80356001600160a01b03811681146101fe575f5ffd5b919050565b5f5f5f5f5f60808688031215610217575f5ffd5b610220866101e8565b945061022e602087016101e8565b935060408601359250606086013567ffffffffffffffff811115610250575f5ffd5b8601601f81018813610260575f5ffd5b803567ffffffffffffffff811115610276575f5ffd5b886020828401011115610287575f5ffd5b959894975092955050506020019190565b5f5f5f604084860312156102aa575f5ffd5b6102b3846101e8565b9250602084013567ffffffffffffffff8111156102ce575f5ffd5b8401601f810186136102de575f5ffd5b803567ffffffffffffffff8111156102f4575f5ffd5b8660208260051b8401011115610308575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52603260045260245ffdfea264697066735822122098be2ddcbdfa853b8c1a0fcd6c3da4830a4c308aa50d90ddb84c6586a7276eca64736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b40ba1951b9b3be813f5a4ceafed29eb08d5358d
-----Decoded View---------------
Arg [0] : _nft (address): 0xb40ba1951b9B3bE813F5a4ceafed29eB08D5358d
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b40ba1951b9b3be813f5a4ceafed29eb08d5358d
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 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.