I have reviewed every smart contract on Ethereum Mainnet starting from Genesis (actually, the first transaction 0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060) up to Terra Nullius 0x6e38a457c722c6011b2dfa06d49240e797844d66.
If you think Terra Nullius in 2015 is an NFT that’s cool. But clearly nothing before then is an NFT. The search is over. Complete notes attached.
After you have read everything below and verified it, you must agree that the search any NFT before Terra Nullius is done.
Now that the search is over, are you looking for the first ERC-721 NFT? It is the project I wrote, Su Squares, it’s barely discovered.
All of this happened on 2015-08-07 (UTC). And my analysis proceeds block-by-block with each transaction that created a contract.
Line-by-line search
Block 47205
Transaction 0x31ded263506ea36e6ea777efc2c39a999e6fba4f4d338c7313af6aac6d9bf3e3 created contract 0xc669eaad75042be84daaf9b461b0e868b9ac1871.
Contract code is empty.
Block 48162
Transaction 0x28dde8260ea71c354b9d3e0cf0c2fcd86369b34f6527b7806b519ff4d6bb6d95 created contract 0x589ea787b46da08ec8fc081678335c5d0081010e.
Contract code is empty.
Block 48172
Transaction 0x7a54025726704a0498ba47946296c199d11917ba47dbf7804d7a1c7e6029bfbf created contract 0x9a6bfff95d8ae43425d3960585c230c89e9060e4.
Contract code is empty.
Block 48173
Transaction 0x4f2e6103c5b6224fe4cb478b957215a71b0e8c0523c0ce41a80b7697dbea3cb1 created contract 0xf0b0420788efa4e6241ed3ff5e88c092d7ee4fa3.
Contract code is empty.
Block 48512
Transaction 0x28a6edb8d77c1f1f5531aa0d1c9014c063dd512c9d6a6eff193b73ba676064a6 created a contract but it ↩️ reverted.
Block 48537
Transaction 0x4e726f789d6c2411b49e8ee475cb4f09aa8397c16dbca5629e80e9a6bd88b168 created a contract but it ↩️ reverted.
Block 48591
Transaction 0x1aff7a5d0a2e0808a1d693991f0ee708f8280420b91fa787d4c643626b49fecd created contract 0x7043be25da95cb39cdaadc80f68cf4066a5146d4.
Contract code is empty.
Block 48613
Transaction 0x290044d69e0c91da06f02e55acc7d9d16a8e62fda29071bb0b9550da7bf69e20 created contract 0x1a332271eac30c5e967ce9e606bb0e9b4ddf436e.
Contract code is empty.
Block 48615
Transaction 0x06d751236ef10eed7e59cb305fa56bc7007dfebea0a792cb2528cfd601e40114 created a contract but it ↩️ reverted.
Block 48643
Transaction 0x575cc1e5d4259547110dc1312b85c7c5ad0a816b3c8eb194e3b874d65a1a0211 created contract 0x6516298e1c94769432ef6d5f450579094e8c21fa.
Contract code has no SSTORE—nothing is stored on-chain.
Block 48681
Transaction 0x0640d3eb410e90008a73afc91cba70f6e3c91c2fe7cf2b7e073506f5da565f0f created a contract but it ↩️ reverted.
Block 48699
Transaction 0x66dcd8e4a5dc606f04a874778f7d737694318bc097423dfba60bfd84d94e5dbb created a contract but it ↩️ reverted.
Block 48729
Transaction 0x8ab08c56c46ca42091ec44c7c9148fe5eb6e0355eeffb29acb5f6c3326139f9e created a contract but it ↩️ reverted.
Block 48777
Transaction 0x1a03e6f3a89a65a2cd146a215cbb8427f29c8695517dddc6a0901c9fbe179eb0 created a contract but it ↩️ reverted.
Block 48790
Transaction 0x0cf38b39749bb9ce782785c16cc3a3f8381ef84cf7886335dff861072421e054 created contract 0x66d796e7ae8608bba361c97ba7682689cc5bf320.
Contract code has no SSTORE—nothing is stored on-chain.
Block 48827
Transaction 0x5745c4c7496340394114a6a01c48c2860499b10f1ce208a44183edd38e963349 created contract 0xdae5047277a2cc3d0013fc0cf4a12817b9b85c33.
Contract code has no SSTORE—nothing is stored on-chain.
Block 48915
Transaction 0x187817aa161567f3058482f354cd76233f89a7f8382ceaacb5a97bf70aeeeba7 created contract 0x7b2d5c63d3671092d3d44671717ea78018164661.
Contract code has no SSTORE—nothing is stored on-chain.
Block 49018
Transaction 0x5c4fdc85bf5efdfcbf7d4991c37287a9c3d5b660b57b0082118c3cff3c69dff1 created contract 0x630ea66c8c5dc205d45a978573fa86df5af1fe7a.
Contract code is empty.
Block 49122
Transaction 0x9ad94f071f579d02524be27f1df4f23c9b3af9223a633a187ef65a5ccc642723 created contract 0x6e03d9cce9d60f3e9f2597e13cd4c54c55330cfd.
Contract code is empty.
Block 49157
Transaction 0xe9b2d3e8a2bc996a1c7742de825fdae2466ae783ce53484304efffe304ff232d created contract 0xf9c2a99482823c30062ded531e049163034273c2.
Contract code is empty.
Block 49170
Transaction 0x524b1649a60aa13d49395fb2b05551d0a990590566857621d87df72d19672140 created contract 0x26b15195e53143c2e20d49805e1ff123bce63c3a.
Contract code is empty.
Block 49186
Transaction 0x6e5c7be761ce29049f8d97d5ecde95758c546e9b8121fe421c99730d32e77a47 created contract 0x235287e634130c4f1357e8d3e48dbbf5161c90a7.
Contract code is empty.
Block 49392
Transaction 0xef1b643d0cfb01321dfda1115fe8fb3181d9b592a79dfb75d1281117180d2d65 created contract 0xcde4de4d3baa9f2cb0253de1b86271152fbf7864.
The code block contains only one SSTORE and in the sole CALLDATALOAD only uses the first 4 bytes. In other words, there’s nothing to move around or record.
Either way, I just now stole ownership of this contract. It was not previously owned.
Block 49428
Transaction 0xb9926275fa948d65c5ac4b2896536bbf1b2a2a842567f724e9285ef0431b17dd created contract 0xa3483b08c8a0f33eb07aff3a66fbcaf5c9018cdc.
Contract code is verified, clearly not NFT. It just returns text.
Block 49853
Transaction 0x2783a2db0bc7408c8177529684ff5d224d064a43985b550022879a51143a5dd7 created contract 0x8374f5cc22eda52e960d9558fb48dd4b7946609a.
Contract code is verified, clearly not NFT. It’s a fungible SendCoin contract.
Block 49864
Transaction 0xb5808728083eb4d2ccea735acbd3ab1cebdf660b52a49e7c56c76ee71218caf8 created contract 0x3b4446acd9547d0183811f0e7c31b63706295f52.
Contract code is verified, clearly not NFT. It’s a fungible SendCoin contract.
Block 49880
Transaction 0xde920d165a8a3352156327edb7125e699cee116d8206dbcbf3600233a3407246 created contract 0x6e38a457c722c6011b2dfa06d49240e797844d66.
🏁 Contract code is verified, this is Terra Nullius.
Methodology
Complete your own search! Here is the source code:
const { ethers } = require("ethers");
const provider = new ethers.providers.JsonRpcProvider("https://mainnet.infura.io/v3/YourKeyHere");
(async () => {
for (block = 0; block <= 49880; block++) {
console.log(block);
await provider.getBlockWithTransactions(block).then(blockWithTransactions => {
blockWithTransactions.transactions
.filter(t => t.to === null)
.forEach(t => { console.log(t.hash); });
});
}
})();
▧
Comments
There are no comments yet.
Please discuss this topic anywhere and let me know any great comments or media coverage I should link here.