We’re looking for experts for building CryptoPandas during the SLP hackathon.
CryptoPandas is basically an adaptation of CryptoKitties to the Bitcoin Cash blockchain, but with lower fees and an (arguably) cuter species.
CryptoPandas uses SLP NFT1 tokens to represent the genome of a panda. New pandas can be birthed by anyone who has a male and a female panda. Only panda tokens following the birthing specification will be considered valid, similar to how only SLP transactions have to follow the SLP rules, albeit invalid token transactions may exist on the blockchain.
For the user, the process looks as follows:
- Acquire pandas (by buying them/receiving them from someone else, or by birthing them given two pandas of opposite gender).
- Select two pandas that should do their didgeridoo business.
- The app creates 3 transactions, where the last one, the fertilizing transaction, pays a breeding fee to the operators of CryptoPandas, and broadcasts them to the network.
- Once the fertilizing transaction is confirmed on the network, the genome is determined and the panda can be born. Based on the genome of the parents, the transaction hash of the fertilizing transaction and the blockhash of the block that mined the fertilizing transaction, a new genome is determined.
- The app broadcasts a transaction containing the fertilizing transaction and an SLP NFT1 parent token to create a SLP NFT1 child token containing this genome, which is the new panda.
- The user can now sell the panda, keep it, or breed new pandas with it. (He could also burn it but that wouldn’t be very polite).
For the implementation during the hackathon, the following has to be implemented:
- Two smart contracts, one for the fertilizing transaction and one for the CryptoPandas parent token.
- A backend that maintains around 100 CryptoPandas parent tokens on the chain.
- A backend that validates (see below) and lists panda tokens of a specific address (+caching).
- A JavaScript wallet that stores the private key for the pandas and requests panda tokens from the backend, that allows sending pandas and that allows a birthing process as described below.
- A nice website that displays the pandas the user owns and where the user can select two pandas to do the didgeridoo. It should also allow sending pandas to a different address.
- Artwork for the pandas, that means different pictures for different genes which will be layered according to the genome of the panda.
This would require the following experts: - A Script/CashScript developer (that could be me). - An SLP-savvy backend developer (could be me too). - A general backend developer who sets up the APIs for the frontend and does the panda validation. - An SLP-savvy frontend developer (assuming WebAssembly is an option, that would be pretty much the same as the above) for performing the birthing process. - A panda-savvy artist who’s able to create different layers for different traits of pandas (definitely not me). - A general frontend developer who’s good at creating a good UX (absolutely not me).
If any of the above seem attractive to you, please write me on telegram: @tobiassan
The technical process looks as follows (review SLP NFT1 specification for SLP details):
- The user selects two pandas of opposite gender from their wallet
- The app creates two DNA transactions for each panda, where the panda is both kept alive as new output (usually, procreation doesn’t result in death) and where a DNA baton output is created that will be consumed in a fertilizing transaction
- The app then creates a fertilizing transaction, which consumes both DNA outputs, puts some metadata in OP_RETURN, and creates a new P2SH smart contract output with 0.001 BCH as birthing fee.
- * The first challenge (or function) of the P2SH smart contract can only be spent by the creator of the fertilizing transaction and must send 0.001 BCH to the operators of CryptoPandas at vout=2. This will be chosen if the user wants to birth the panda after reviewing its stats
- * The second challenge can only be spent by the operators of CryptoPandas pandas with a timelock of 1 day. This will be chosen if the user didn’t birth the panda after a day, and the fee can be claimed by the operators of CryptoPandas.
- The app waits until the fertilizing transaction is mined and then notifies the user that the panda is ready to be born.
- For the birthing transaction, an SLP NFT1 CryptoPandas parent token is required (see SLP NFT1 spec). These will be provided as anyone-can-spend smart contracts by the operators of CryptoPandas. They will maintain a pool of ~100 outputs that contain this parent token in the following P2SH output with two challenges:
- * The output can be spent by anyone as long as 0.001 BCH are send to the operators of CryptoPandas at vout=2 and the input appears at the first position (vin=0).
- * The output can be spent by the operators of CryptoPandas.
- After the fertilizing transaction has been mined, the genome of the new panda is determined. It’s the result of gene swapping and random mutation based on the blockhash of the block containing the fertilizing transaction.
- To get a panda token, a new SLP NFT1 GENESIS transaction will be created with the genome as part of the <token_document_url>.
- For this, the P2SH output of the fertilizing transaction will be combined with a CryptoPandas parent token as above and both spent for the GENESIS transaction. The fee for the birthing is already part of the P2SH output and just has to be forwarded to the operators of CryptoPandas.
- Immediately, the user can send the new panda token to a different address just like any other SLP NFT1 token.
While this scheme is quite complex, it fully non-interactive, ie. the only thing the operators of CryptoPandas have to do is maintain a pool of anyone-can-spend parent tokens. Verification has the same properties as the Simple Ledger Protocol, meaning to verify a panda token, a DAG check has to be performed.
[link] [comments]
source https://www.reddit.com/r/btc/comments/d8frs2/looking_for_frontend_developers_and_artists_for/
No comments:
Post a Comment