0
想要了解以太坊智能合約開發(fā)食茎,cryptozombies(加密僵尸)是個很不錯的學(xué)習(xí)網(wǎng)站。
即使沒有編程功底的人也可以很方便的學(xué)習(xí)智能合約馏谨,因為這里的教學(xué)方法很科學(xué)很神奇。
1
這個網(wǎng)站的每一個知識點(diǎn)的教學(xué)思路都是:
1. 循序漸進(jìn)地向用戶講解一個知識點(diǎn)附迷。
2. 根據(jù)這個知識點(diǎn)設(shè)計一個題目惧互,讓用戶去完成哎媚。
3. 用戶提交代碼,如果不成功再根據(jù)正確答案修改自己的代碼喊儡,直至提交成功拨与。
這是一種非常科學(xué)的“學(xué)習(xí)—>實(shí)踐—>反饋-->改進(jìn)”的刻意練習(xí)式的學(xué)習(xí)方式艾猜,你想不想試一試买喧,那就點(diǎn)這個鏈接cryptozombies訪問官網(wǎng)吧。
2
這個網(wǎng)站的主線任務(wù)就是通過智能合約設(shè)計一個加密版的“僵尸大戰(zhàn)”的游戲:用戶可以新建僵尸匆赃,和別人的僵尸PK淤毛,繁殖新的僵尸等等。
這些都是為了增加學(xué)習(xí)智能合約編程的趣味性算柳,真正學(xué)習(xí)的時候還是需要一步一步去演練知識點(diǎn)的低淡,這一點(diǎn)始終是無法取巧略過的。
3
很多技術(shù)類教程往往只講技術(shù)細(xì)節(jié)瞬项,很少講這項技術(shù)的應(yīng)用場景蔗蹋。
學(xué)習(xí)新技術(shù)的時候技術(shù)本身自然是最重要的,但是知道這項技術(shù)能做什么囱淋,適合在什么地方用顯然會讓我們?nèi)菀兹菀酌椒较颉?/p>
先掌握整體的框架思路猪杭,再去擼細(xì)節(jié)問題,會得心應(yīng)手很多妥衣。
4
智能合約和我們平時在電腦上運(yùn)行的程序有什么區(qū)別呢皂吮?
以我們玩的游戲為例:
1. 最早的時候我們大多玩的是單機(jī)游戲,游戲的程序運(yùn)行在本地電腦上称鳞,不需要網(wǎng)線涮较。有些游戲被其他程序員開發(fā)出了作弊器,就可以任意修改參數(shù)——金錢無限冈止,生命無限等等狂票,任意改。
2. 后來有了網(wǎng)絡(luò)游戲熙暴,數(shù)據(jù)都是存儲在運(yùn)營商的服務(wù)器上闺属。這時候只有運(yùn)營商可以修改數(shù)據(jù)和代碼,我們想作弊就不容易了周霉,頂多就是用了第三方作弊器掂器,在運(yùn)營商允許的范圍內(nèi)上傳假數(shù)據(jù)。
5 程序不可更改
現(xiàn)在如果在以太坊上開發(fā)了游戲俱箱,這個程序一旦被部署到以太坊的網(wǎng)絡(luò)中国瓮,就會在每一個全節(jié)點(diǎn)上保存這個程序,它就變得不可更改。
這種永固性意味著代碼永遠(yuǎn)不能被調(diào)整或更新乃摹,它會一直的禁漓,永久的,不可更改的存在以太網(wǎng)上孵睬。
這也是機(jī)器信任產(chǎn)生的原因播歼。
同時,以太坊開發(fā)語言solidity代碼的安全性就會變得非常重要掰读。因為如果這個智能合約有漏洞秘狞,即使后來發(fā)現(xiàn)了也無法補(bǔ)救,你只能眼睜睜蹈集、眼睜睜的看著別人利用這個漏洞做他們想做的事情烁试。
6 參數(shù)可改
代碼和數(shù)據(jù)都是在鏈上的,不可修改雾狈,但是參數(shù)還是可以修改的廓潜。
譬如:幣乎用于給每篇文章的作者和點(diǎn)贊者發(fā)放KEY的智能合約,那些a善榛、c值什么的就是可以修改的辩蛋。往往為了安全起見,修改者也僅限于智能合約的創(chuàng)建者移盆。
從感性角度看悼院,如果什么都不能改,智能合約那不是太不智能了咒循?
所以据途,開發(fā)者在開發(fā)智能合約的時候就需要好好考慮一下哪些參數(shù)是需要變動的,哪些參數(shù)不能變動叙甸。不然可以變動的參數(shù)太多颖医,機(jī)器倒是可以信任了,人還是不可信的裆蒸,用戶還怎么放心使用你的智能合約呢熔萧?
7 Gas
在Solidity中,你的用戶想要每次執(zhí)行你的DApp都需要支付一定的gas僚祷,gas可以用以太幣購買佛致。
你在進(jìn)行以太坊轉(zhuǎn)賬的時候需要花費(fèi)gas進(jìn)行交易打包,這動用了以太坊的節(jié)點(diǎn)的資源辙谜。同樣俺榆,你在運(yùn)行Dapp的時候也需要動用以太坊節(jié)點(diǎn)的資源,所以也需要花費(fèi)gas装哆。
所以以太坊上運(yùn)行的智能合約往往都是比較有經(jīng)濟(jì)價值的合約罐脊,畢竟誰也不會花著真金白銀去天天玩加密貓定嗓,僵尸大戰(zhàn)啥的。
8 可支付
為什么區(qū)塊鏈基本都需要發(fā)通證(token)爹殊,因為可支付性是智能合約的一個重要特點(diǎn)蜕乡。
payable是solidity中的一個修飾符,它是一種可以接收以太的特殊函數(shù)梗夸,這就讓以太坊變得很酷了。
當(dāng)你在調(diào)用一個普通網(wǎng)站服務(wù)器上的API函數(shù)的時候号醉,你無法用你的函數(shù)傳送美元反症,甚至你也不能傳送比特幣。
但是在以太坊中畔派, 因為錢 (以太坊)铅碍、數(shù)據(jù),以及合約代碼本身都存在于以太坊线椰。你可以在同時調(diào)用函數(shù)并付錢給另外一個合約胞谈。
至于怎么調(diào)用,嘿嘿憨愉,去cryptozombies試試看烦绳。
重要的網(wǎng)站推薦三遍。
9 應(yīng)用前端
DApp的前端和我們平時用的手機(jī)App或者網(wǎng)頁的使用體驗差別并不大配紫,主要的差別應(yīng)該就是你用著用著就會有一個環(huán)節(jié)提示你需要付款了——gas費(fèi)用径密,或者程序中約定需要支付的其他費(fèi)用。
10 小結(jié)
智能合約的應(yīng)用暫時還比較簡單躺孝,使用的方法也并沒有太多的神奇之處享扔。
就像我們平時刷App一樣,在DApp上進(jìn)行一項操作植袍,然后程序調(diào)用智能合約惧眠,智能合約根據(jù)代碼的規(guī)則給我們反饋,如此而已于个。
但是氛魁,智能合約的一些特點(diǎn)卻是極為重要和非常需要關(guān)心的地方:
1. 代碼和數(shù)據(jù)部署在以太坊區(qū)塊鏈系統(tǒng)中,沒有人可以更改览濒,但是開發(fā)者可以留有靈活調(diào)整的參數(shù)呆盖。
2. 智能合約之間可以方便的進(jìn)行錢(以太坊)的價值傳遞。
了解了智能合約的關(guān)鍵點(diǎn)——道贷笛,再去學(xué)習(xí)智能合約的細(xì)節(jié)——術(shù)应又,頓時感覺自己是個“專家”,就沒有那么困難了乏苦。