十一课堂|通过小游戏学习Ethereum DApps编程(4)
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
在上篇完結(jié)的時(shí)候,我們制造出了這個(gè)獨(dú)一無(wú)二可愛(ài)至極的角色:
這里我們繼續(xù)總結(jié)一些關(guān)于solidity語(yǔ)言的知識(shí)點(diǎn)。并且開(kāi)始了解一些比較高級(jí)的內(nèi)容。
ERC20 tokens以及ERC721標(biāo)準(zhǔn),和crypto-collectible。這些知識(shí)可以讓我們可以和其他玩家交易自己的創(chuàng)造的角色。
1
Token
對(duì)于token的理解,眾說(shuō)紛紜。為了讓你清醒的記憶token在這里的定義,我就不舉例其他對(duì)token的解釋了。
在這里,token就是一個(gè)Dapp,一個(gè)智能合約的意思。
重要的事情說(shuō)三遍: token就是一個(gè)Dapp,一個(gè)智能合約的意思。 token就是一個(gè)Dapp,一個(gè)智能合約的意思。
這個(gè)智能合約可以追溯誰(shuí)擁有多少"金幣",然后有一些功能可以讓"金幣"擁有者進(jìn)行交易。
So basically a token is just a contract that keeps track of who owns how much of that token, and some functions so those users can transfer their tokens to other addresses.
因?yàn)镋RC20 tokens是一個(gè)已經(jīng)被實(shí)現(xiàn)了的Dapp,就意味著,你可以直接在你的Dapp里面使用ERC20 tokens,不需要自己去定義自己的"金幣"。 在ERC20 tokens這個(gè)Dapp里面,一個(gè)"金幣",完全等于另外一個(gè)"金幣"。如果你沒(méi)有零錢"金幣",你可以付給對(duì)方一個(gè)大面值的"金幣",對(duì)方可以找零。
但在我們這個(gè)游戲里面,你創(chuàng)造和訓(xùn)練的無(wú)敵角色,和其他剛剛創(chuàng)造的角色的價(jià)值是完全不對(duì)等的,而且,在交易的時(shí)候,也不可能說(shuō)是找0.5個(gè)角色。
與之對(duì)應(yīng)的另外一個(gè)token標(biāo)準(zhǔn):ERC721 tokens可是適用于我們這個(gè)游戲。
ERC721 tokens are not interchangeable since each one is assumed to be unique, and are not divisible.?
2
繼承
在Solidity里面,我們可以這樣創(chuàng)建一個(gè)智能合約,并且結(jié)成另外一個(gè)
pragma solidity ^0.4.19;import "./ZombieAttack.sol"; contract ZombieOwnership is ZombieAttack { }ERC721 Standard 多重繼承
這是ERC721 Standard的定義:我們只需要實(shí)現(xiàn)這些接口。
contract ERC721 {event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);function balanceOf(address _owner) public view returns (uint256 _balance);function ownerOf(uint256 _tokenId) public view returns (address _owner);function transfer(address _to, uint256 _tokenId) public;function approve(address _to, uint256 _tokenId) public;function takeOwnership(uint256 _tokenId) public;}ERC721 standard還只是一個(gè)草稿,并非正式版。在這個(gè)游戲里面我們就直接使用OpenZeppelin庫(kù)里面的實(shí)現(xiàn)版本。
Note: The ERC721 standard is currently a draft, and there is no officially agreed-upon implementation yet. For this tutorial we're using the current version from OpenZeppelin's library
3
實(shí)現(xiàn)接口
和繼承一樣,import,并且把要實(shí)現(xiàn)的接口放到合約定義的 is 后面。
import "./zombieattack.sol";import "./erc721.sol";contract ZombieOwnership is ZombieAttack, erc721 { }本系列文章作者:HiBlock區(qū)塊鏈技術(shù)布道群-Amywu
原文發(fā)布于簡(jiǎn)書
加微信baobaotalk_com,加入技術(shù)布道群
Blockathon|48小時(shí)極客競(jìng)賽,區(qū)塊鏈馬拉松等你挑戰(zhàn)(上海)
時(shí)間:2018年10月19-21日
地點(diǎn):(上海黃浦)露香園路1號(hào)(近淮海東路)P2
- 招募50名開(kāi)發(fā)者(識(shí)別下圖二維碼或點(diǎn)擊“閱讀原文”即可了解詳情并報(bào)名)
北京blockathon回顧:
Blockathon(北京):48小時(shí)極客開(kāi)發(fā),區(qū)塊松11個(gè)現(xiàn)場(chǎng)交付項(xiàng)目創(chuàng)意公開(kāi)
成都blockathon回顧:
Blockathon2018(成都站)比賽落幕,留給我們這些區(qū)塊鏈應(yīng)用思考
轉(zhuǎn)載于:https://my.oschina.net/u/3782027/blog/2223055
總結(jié)
以上是生活随笔為你收集整理的十一课堂|通过小游戏学习Ethereum DApps编程(4)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JavaCSV之写CSV文件
- 下一篇: Error:No resource id