10,000 unique collectible characters with proof of ownership stored on the Ethereum blockchain.
NEW MARKET CONTRACT RELEASED! You can now sell punks, as well as bid on them.
Just be sure to watch the new contract, 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB. Read the full details here.
What you see above are the 10,000 unique "CryptoPunks" in a map-like interface. No two are exactly alike, and each one of them can be officially owned by a single person on the Ethereum blockchain. They can be claimed for free by anybody with an Ethereum wallet, although you will need to pay a small fee to the Ethereum network to execute your transaction. At current Ethereum prices, it costs around 11 cents to get a punk. We have also created a marketplace where you can buy and sell individual Punks. You can either offer them for sale to anyone for a minimum price, or to a specific person. The zoomable image above is connected to the Ethereum network and has been colored to show you which punks are currently owned or for sale. Punks with a blue background are not yet claimed by anyone. Punks with a green background have been claimed. Punks with a red background are available for sale by their owner. Finally, punks with a purple background have an active bid on them. You can click to zoom in on a Punk and reveal its details.
What is a CryptoPunk?
The CryptoPunks are 24x24 pixel art images, generated algorithmically. Most are punky-looking guys and girls, but there are a few rarer types mixed in: Apes, Zombies and even the odd Alien. Every punk has their own profile page that shows their attributes as well as their ownership/for-sale status (here's an example).
What exactly is going on here?
CryptoCoins were made famous by Bitcoin, but Bitcoin is designed just to transact and store ownership of Bitcoin itself. We are using a successor to Bitcoin called Ethereum which allows for arbitrary computer code to be executed on the blockchain and the results of the execution to be stored forever. This is pretty cool! Normally code is run on a server somewhere and you basically need to trust the person running the server. Ethereum lets everyone execute the code, show each other what result they got, and agree that the code was executed properly and fairly.
We have written code that lives on the blockchain that anyone can use to buy and sell Punks with anyone else in the world. An interesting aspect of this system is that we no longer have any control over the code running CryptoPunks! Once we released it onto the blockchain it became permanently embedded there and can no longer be modified by anyone. This is scary for us as developers because we worry about bugs, but it is also a very powerful feature of the system. It allows a user verify that there are indeed only 10,000 punks, check that we can't steal them from you, and basically make sure that everything we told you about the code is true.
How do I get a Punk?
This is going to be a lot easier if you already are somewhat familiar with Ethereum and have some Ether or Bitcoin. The basic steps are the following:
- Download and install the Ethereum wallet and get some Ether (probably buy it from somewhere like CoinBase and transfer it to your wallet address).
- Download the CryptoPunks ABI file here and then in the Ethereum wallet, "watch" the CryptoPunks contract at address 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB
- Now pick a punk that no one owns yet and execute the "getPunk(punkIndex)" method on the contract, specifying that punk's index. You are now the proud owner of a CryptoPunk! (We don't charge any Ether to be assigned a punk, you just need to pay the transaction fees to execute the function).
- If you want to sell a punk you can execute the "offerPunkForSale(punkIndex, price)" function and set a price that you will accept for that particular punk.
- If you want to sell a punk to a specific person execute the "offerPunkForSaleToAddress(punkIndex, price, address)".
- If you want to just give a punk to someone execute "transferPunk(address, punkIndex)".
- The actual images of the punks are too large to store on the blockchain, so we took a hash of the composite image of all the punks and embeded it into the contract. You can verify that the punks being managed by the Ethereum contract are the True Official Genuine CryptoPunks™ by calculating an SHA256 hash on the cryptopunks image and comparing it to the hash stored in the contract.
- CryptoPunks are almost an ERC20 token. We support the methods that provide your balance so you can watch CryptoPunks as a token in your wallet and see how many you own. None of the other methods are the same since you're not transferring a simple balance, but need to reference which specific Punk you want to work with.
- Functions that provide punks for sale specify the price in Wei, which is a 1/10^18 Ether. It's probably best to use a unit converter to enter a price in Ether and get the Wei value.
- The contract source and more technical details are available on Github.