ETH Price: $3,342.99 (+7.19%)
 

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Transfer All Tra...407618632026-01-13 14:04:3314 hrs ago1768313073IN
0xEf6cA22D...61Df95bf3
0 ETH0.000002980.00673702
Transfer All Tra...407144702026-01-12 11:44:4740 hrs ago1768218287IN
0xEf6cA22D...61Df95bf3
0 ETH0.000001050.00237909
Transfer All Tra...403306792026-01-03 14:31:4510 days ago1767450705IN
0xEf6cA22D...61Df95bf3
0 ETH0.000001490.00335962
Transfer All Tra...403306012026-01-03 14:29:0910 days ago1767450549IN
0xEf6cA22D...61Df95bf3
0 ETH0.000001470.00333186
Transfer All Tra...402402022026-01-01 12:15:5112 days ago1767269751IN
0xEf6cA22D...61Df95bf3
0 ETH0.000000310.00060119
Transfer All Tra...402401762026-01-01 12:14:5912 days ago1767269699IN
0xEf6cA22D...61Df95bf3
0 ETH0.000000280.00054961
Transfer All Tra...402401452026-01-01 12:13:5712 days ago1767269637IN
0xEf6cA22D...61Df95bf3
0 ETH0.000000270.00052543
Transfer All Tra...402401092026-01-01 12:12:4512 days ago1767269565IN
0xEf6cA22D...61Df95bf3
0 ETH0.000004870.00052838
Transfer All Tra...402400612026-01-01 12:11:0912 days ago1767269469IN
0xEf6cA22D...61Df95bf3
0 ETH0.000000270.00053522
Transfer All Tra...401097762025-12-29 11:48:1915 days ago1767008899IN
0xEf6cA22D...61Df95bf3
0 ETH0.000001490.00349682
Transfer All Tra...401097542025-12-29 11:47:3515 days ago1767008855IN
0xEf6cA22D...61Df95bf3
0 ETH0.000000150.00379982
Transfer All Tra...401097322025-12-29 11:46:5115 days ago1767008811IN
0xEf6cA22D...61Df95bf3
0 ETH0.000001030.00358827
Transfer All Tra...401096662025-12-29 11:44:3915 days ago1767008679IN
0xEf6cA22D...61Df95bf3
0 ETH0.000001120.00308647
Transfer All Tra...401096272025-12-29 11:43:2115 days ago1767008601IN
0xEf6cA22D...61Df95bf3
0 ETH0.000001590.00359346
Transfer All Tra...401095992025-12-29 11:42:2515 days ago1767008545IN
0xEf6cA22D...61Df95bf3
0 ETH0.000001550.0034968
Transfer All Tra...401095632025-12-29 11:41:1315 days ago1767008473IN
0xEf6cA22D...61Df95bf3
0 ETH0.000001570.00354764
Transfer All Tra...395095312025-12-15 14:20:0929 days ago1765808409IN
0xEf6cA22D...61Df95bf3
0 ETH0.000002860.0064531
Transfer All Tra...395095042025-12-15 14:19:1529 days ago1765808355IN
0xEf6cA22D...61Df95bf3
0 ETH0.000005020.01133226
Transfer All Tra...395094772025-12-15 14:18:2129 days ago1765808301IN
0xEf6cA22D...61Df95bf3
0 ETH0.000003930.00888068
Transfer All Tra...395094592025-12-15 14:17:4529 days ago1765808265IN
0xEf6cA22D...61Df95bf3
0 ETH0.000003710.00837703
Transfer All Tra...391179672025-12-06 12:48:0138 days ago1765025281IN
0xEf6cA22D...61Df95bf3
0 ETH0.000001640.00169798
Transfer All Tra...391177862025-12-06 12:41:5938 days ago1765024919IN
0xEf6cA22D...61Df95bf3
0 ETH0.00000080.0012584
Transfer All Tra...390018772025-12-03 20:18:2141 days ago1764793101IN
0xEf6cA22D...61Df95bf3
0 ETH0.000000790.00191431
Transfer All Tra...389987612025-12-03 18:34:2941 days ago1764786869IN
0xEf6cA22D...61Df95bf3
0 ETH0.000000720.00176235
Transfer All Tra...389961732025-12-03 17:08:1341 days ago1764781693IN
0xEf6cA22D...61Df95bf3
0 ETH0.000000580.00141279
View all transactions

Parent Transaction Hash Block From To
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BulkTraitTransfer

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;

interface IChonksMain {
    function ownerOf(uint256 tokenId) external view returns (address);
    function tokenIdToTBAAccountAddress(uint256 tokenId) external view returns (address);
}

interface IChonkTraits {
    function transferFrom(address from, address to, uint256 tokenId) external;
    function walletOfOwner(address owner) external view returns (uint256[] memory);
}

/**
 * @title BulkTraitTransfer
 * @notice A utility contract to transfer all traits from one Chonk to another
 */
contract BulkTraitTransfer {

    IChonksMain  public immutable chonksMain = IChonksMain(0x07152bfde079b5319e5308C43fB1Dbc9C76cb4F9);
    IChonkTraits public immutable traitsContract;

    /// Error

    error NotChonkOwner();

    /// Constructor

    constructor(address _traitsContract) {
        traitsContract = IChonkTraits(_traitsContract);
    }

    /**
     * @notice Transfers all traits from the source Chonk to the destination Chonk
     * @param _sourceChonkId The ID of the source Chonk
     * @param _destinationChonkId The ID of the destination Chonk
     */
    function transferAllTraits(uint256 _sourceChonkId, uint256 _destinationChonkId) external {
        (address sourceTBA, address destinationTBA) = _getTBAs(_sourceChonkId, _destinationChonkId);

        uint256[] memory traitIds = traitsContract.walletOfOwner(sourceTBA);

        for (uint256 i; i < traitIds.length; ++i)
            traitsContract.transferFrom(sourceTBA, destinationTBA, traitIds[i]);
    }

    /**
     * @notice Transfers specific traits from the source Chonk to the destination Chonk
     * @param _sourceChonkId The ID of the source Chonk
     * @param _destinationChonkId The ID of the destination Chonk
     * @param _traitIds Array of trait IDs to transfer
     */
    function transferSelectedTraits(
        uint256 _sourceChonkId,
        uint256 _destinationChonkId,
        uint256[] calldata _traitIds
    ) external {
        (address sourceTBA, address destinationTBA) = _getTBAs(_sourceChonkId, _destinationChonkId);

        for (uint256 i; i < _traitIds.length; ++i)
            traitsContract.transferFrom(sourceTBA, destinationTBA, _traitIds[i]);
    }

    /// Internal

    function _getTBAs(
        uint256 _sourceChonkId,
        uint256 _destinationChonkId
    ) internal view returns (address sourceTBA, address destinationTBA) {
        if (chonksMain.ownerOf(_sourceChonkId) != msg.sender) revert NotChonkOwner();

        sourceTBA = chonksMain.tokenIdToTBAAccountAddress(_sourceChonkId);
        destinationTBA = chonksMain.tokenIdToTBAAccountAddress(_destinationChonkId);
    }

}

Settings
{
  "remappings": [
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "@openzeppelin/=lib/openzeppelin-contracts/",
    "solady/=lib/solady/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "scripty/=lib/scripty/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "viaIR": false,
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_traitsContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotChonkOwner","type":"error"},{"inputs":[],"name":"chonksMain","outputs":[{"internalType":"contract IChonksMain","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"traitsContract","outputs":[{"internalType":"contract IChonkTraits","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sourceChonkId","type":"uint256"},{"internalType":"uint256","name":"_destinationChonkId","type":"uint256"}],"name":"transferAllTraits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sourceChonkId","type":"uint256"},{"internalType":"uint256","name":"_destinationChonkId","type":"uint256"},{"internalType":"uint256[]","name":"_traitIds","type":"uint256[]"}],"name":"transferSelectedTraits","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c06040527307152bfde079b5319e5308c43fb1dbc9c76cb4f960805234801561002857600080fd5b506040516107dd3803806107dd83398101604081905261004791610058565b6001600160a01b031660a052610088565b60006020828403121561006a57600080fd5b81516001600160a01b038116811461008157600080fd5b9392505050565b60805160a0516107086100d56000396000818160990152818161011701528181610196015261027a0152600081816056015281816103630152818161040b015261049701526107086000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063ba7270f314610051578063c093afdb14610094578063d2cf5199146100bb578063ed92e00a146100d0575b600080fd5b6100787f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b6100787f000000000000000000000000000000000000000000000000000000000000000081565b6100ce6100c9366004610513565b6100e3565b005b6100ce6100de366004610535565b61025c565b6000806100f0848461033e565b60405162438b6360e81b81526001600160a01b0380841660048301529294509092506000917f0000000000000000000000000000000000000000000000000000000000000000169063438b630090602401600060405180830381865afa15801561015e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261018691908101906105ce565b905060005b8151811015610254577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323b872dd85858585815181106101d7576101d761068c565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561023157600080fd5b505af1158015610245573d6000803e3d6000fd5b5050505080600101905061018b565b505050505050565b600080610269868661033e565b9150915060005b83811015610335577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323b872dd84848888868181106102bb576102bb61068c565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b15801561031257600080fd5b505af1158015610326573d6000803e3d6000fd5b50505050806001019050610270565b50505050505050565b6040516331a9108f60e11b815260048101839052600090819033906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa1580156103aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ce91906106a2565b6001600160a01b0316146103f55760405163abc45a5d60e01b815260040160405180910390fd5b604051639c05d68d60e01b8152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639c05d68d90602401602060405180830381865afa15801561045a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047e91906106a2565b604051639c05d68d60e01b8152600481018590529092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639c05d68d90602401602060405180830381865afa1580156104e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050a91906106a2565b90509250929050565b6000806040838503121561052657600080fd5b50508035926020909101359150565b6000806000806060858703121561054b57600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561057157600080fd5b818701915087601f83011261058557600080fd5b81358181111561059457600080fd5b8860208260051b85010111156105a957600080fd5b95989497505060200194505050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156105e157600080fd5b825167ffffffffffffffff808211156105f957600080fd5b818501915085601f83011261060d57600080fd5b81518181111561061f5761061f6105b8565b8060051b604051601f19603f83011681018181108582111715610644576106446105b8565b60405291825284820192508381018501918883111561066257600080fd5b938501935b8285101561068057845184529385019392850192610667565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156106b457600080fd5b81516001600160a01b03811681146106cb57600080fd5b939250505056fea2646970667358221220679d16b3fb77676ccb87580533958a1136132c3997065192435f0c99f2acf76264736f6c6343000816003300000000000000000000000074d8725a65c21251a83f6647aa23140bd80504b1

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061004c5760003560e01c8063ba7270f314610051578063c093afdb14610094578063d2cf5199146100bb578063ed92e00a146100d0575b600080fd5b6100787f00000000000000000000000007152bfde079b5319e5308c43fb1dbc9c76cb4f981565b6040516001600160a01b03909116815260200160405180910390f35b6100787f00000000000000000000000074d8725a65c21251a83f6647aa23140bd80504b181565b6100ce6100c9366004610513565b6100e3565b005b6100ce6100de366004610535565b61025c565b6000806100f0848461033e565b60405162438b6360e81b81526001600160a01b0380841660048301529294509092506000917f00000000000000000000000074d8725a65c21251a83f6647aa23140bd80504b1169063438b630090602401600060405180830381865afa15801561015e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261018691908101906105ce565b905060005b8151811015610254577f00000000000000000000000074d8725a65c21251a83f6647aa23140bd80504b16001600160a01b03166323b872dd85858585815181106101d7576101d761068c565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561023157600080fd5b505af1158015610245573d6000803e3d6000fd5b5050505080600101905061018b565b505050505050565b600080610269868661033e565b9150915060005b83811015610335577f00000000000000000000000074d8725a65c21251a83f6647aa23140bd80504b16001600160a01b03166323b872dd84848888868181106102bb576102bb61068c565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b15801561031257600080fd5b505af1158015610326573d6000803e3d6000fd5b50505050806001019050610270565b50505050505050565b6040516331a9108f60e11b815260048101839052600090819033906001600160a01b037f00000000000000000000000007152bfde079b5319e5308c43fb1dbc9c76cb4f91690636352211e90602401602060405180830381865afa1580156103aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ce91906106a2565b6001600160a01b0316146103f55760405163abc45a5d60e01b815260040160405180910390fd5b604051639c05d68d60e01b8152600481018590527f00000000000000000000000007152bfde079b5319e5308c43fb1dbc9c76cb4f96001600160a01b031690639c05d68d90602401602060405180830381865afa15801561045a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047e91906106a2565b604051639c05d68d60e01b8152600481018590529092507f00000000000000000000000007152bfde079b5319e5308c43fb1dbc9c76cb4f96001600160a01b031690639c05d68d90602401602060405180830381865afa1580156104e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050a91906106a2565b90509250929050565b6000806040838503121561052657600080fd5b50508035926020909101359150565b6000806000806060858703121561054b57600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561057157600080fd5b818701915087601f83011261058557600080fd5b81358181111561059457600080fd5b8860208260051b85010111156105a957600080fd5b95989497505060200194505050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156105e157600080fd5b825167ffffffffffffffff808211156105f957600080fd5b818501915085601f83011261060d57600080fd5b81518181111561061f5761061f6105b8565b8060051b604051601f19603f83011681018181108582111715610644576106446105b8565b60405291825284820192508381018501918883111561066257600080fd5b938501935b8285101561068057845184529385019392850192610667565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156106b457600080fd5b81516001600160a01b03811681146106cb57600080fd5b939250505056fea2646970667358221220679d16b3fb77676ccb87580533958a1136132c3997065192435f0c99f2acf76264736f6c63430008160033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000074d8725a65c21251a83f6647aa23140bd80504b1

-----Decoded View---------------
Arg [0] : _traitsContract (address): 0x74D8725A65C21251A83f6647aa23140Bd80504b1

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000074d8725a65c21251a83f6647aa23140bd80504b1


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.