這30個以太坊開發示例,讓你成為80萬都挖不走的區塊鏈人才!
2018年已過了大半,幣圈跌跌蕩蕩,而鏈圈的人在等待鳳凰涅槃,熊市專心做技術,牛市才能一展身手、衝破雲霄!
本文主要告訴你,如何成為一名優秀的以太坊開發者!
如果你是以太坊開發者中的“老司機”,請直接看最後一部分:30個為你量身定做的挑戰示例!
如果你是以太坊初學者,請認真讀完,相信你終會受益匪淺。
圖較多,不想看圖,文末有程式碼!
我曾經買過加密貨幣,曾試圖使用一些醜陋礦機挖礦,看過一些稀稀拉拉的Solidity教程。但不得不承認,在當時,我更偏愛前者,我切身體會到了加密貨幣的狂熱,急切需要一種平衡,急切停止這種狂熱行為,我最終選擇了離開,大概四五個月的時間吧。
是的,我又回來了,這次我選擇了後者,要做一名區塊鏈開發者!選擇了以太坊,選擇了Solidity。
之前看過的教程不再是最新的,課程、文章、部落格數不勝數,但是仍然很難找到正確的學習方式。
探索了一段時間,終於找到了,在這裡分享出來,希望對你們有所幫助。
小編認為,對於初學Solidity的區塊鏈愛好者來說, https://cryptozombies.io 網站就是一個很不錯的選擇。
每次一開啟它的主介面,植物大戰殭屍的場景就立馬浮現在我的腦海中,就會想要不要開發一款區塊鏈版植物大戰殭屍,激發了我濃厚的學習興趣!
編遊戲的同時,也學習了以太坊智慧合約,何樂而不為呢?
這個網站一共有6個教程,每個教程大約需要1-2小時。小編建議你用一週的時間,每天一節。記住,一定要做一些必要的筆記和備忘單。
推薦使用 Google Docs,當然,你可以使用符合自身偏好的工具,比如 Gist、EverNote 等,以下為來自 Google Docs 的備忘單截圖。
做備忘單的目的就是在學習新知識時不丟棄之前學到的東西(切記不要學狗熊掰棒子)!
學完這6個教程,你就掌握了以太坊開發的基礎知識。
但這樣就可以了嗎?現在就能使用Solidity碼程式碼,成為優秀的以太坊開發者?
Not yet ! 在完成 CryptoZombies並確保你記錄了完整的備忘單之後,就可以進入第二階段了。
在學習CryptoZombies 6個互動課程的過程中,你已瞭解如何編寫智慧合約和建立DApp,這個過程很有趣。CryptoZombies網站之外,你需要一個編譯器。
關於編譯器,我使用的是 Visual Studio Code(你可以根據個人偏好自由選擇),它可以執行在Windows、 Mac 和 Linux環境中。
首先,我們需要安裝Visual Studio code。以Windows作業系統為例,在 https://chocolatey.org/中使用以下命令:
choco install VisualstudioCode –
choco installVisualstudioCode –y
安裝完成,操作介面是這樣的,是不是很簡潔?!
那麼,如何安裝Solidity?點選extensions,安裝Solidity和Material Icon Theme,如下圖:
是不是很簡單?小編想要操作介面看起來更“性感”?需要依次點選 File –> Preferences –> File Icon Theme
看下圖!是不是很性感?!
完成基本配置後,開始建立一個簡單的合約:File -> New File
注意,左下角出現了一個warning(感嘆號!)
Code contains empty block!這是在提示你寫一些有效的程式碼!
No problems have been…沒有報錯!
一定要利用好Solidity官方文件!細細品讀 Solidity documentation ,比如文件中關於智慧合約的介紹Introduction to Smart Contracts ,還是要提醒你,在整個學習過程中,一定要做筆記,做筆記!
除此之外,你還需要了解Solidity官方文件中的 Style Guide. 還要做筆記!做筆記!
當然,這僅僅是一些參考,你可以有自己的專屬Style!
要想學好以太坊開發,有一個不得不提的方法,就是積極參與社群討論。如果你想更加快速地學習Solidity,學習以太坊,學習區塊鏈,你確實需要成為社群中的一員,這是十分有效且有趣的學習方式。
在社群中積極發言,提出問題,分享建議,甚至與 V神互動,可以支援他,也可以懟他(切記要有理有據)!Do whatever you want,it must be amazing!!!
那麼,你需要做什麼?又如何去做呢?
你需要註冊賬戶、選擇社群頻道、加入Facebook小組,關注技術大V或者與其他技術愛好者交流、討論,抓住一切機會,儘可能多地參加線下Meetups。
a)註冊Ethereum Stack Exchange賬戶
b)加入 Solidity Gitter channel
c)加入以太坊相關的Facebook小組, 比如international, polish
d)關注大V部落格
e)參加以太坊Meetups
這是第二階段,這是一個長期的學習過程。在這期間,你會不斷積累Solidity開發經驗,你會與來自五湖四海的以太坊技術開發者分享、交流任何與技術有關的話題,是不是很cool?
在掌握Solidity程式設計基礎,並安裝好 Visual Studio Code 編譯器後,write your code!
首先,開啟電腦;
隨後,開啟編譯器;
然後,敲一敲程式碼,找找指尖的感覺;
最後,往下看!
都說成功在於實踐,學了那麼多知識,就需要真刀真槍地操練一番!
小編為你準備了30個程式設計挑戰案例,涉及簡單智慧合約、測試和去中心化應用等。
主要包含以下主題:
1)Solidity智慧合約: lottery(彩票),ICO(首次代幣發行),DAO(去中心化自制組織)
2)Tokens: ERC20, ERC721
3)測試 :Solidity 測試,JavaScript 測試
4)安全: Re-entry attack(重入攻擊)
5)DAPPs & deployment:Truffle(以太坊Solidity程式語言開發框架),Web3
6)外部服務:Oraclize(以太坊預言機),Infura(一個託管的以太坊節點叢集)
7)儲存:IPFS(星際檔案系統),Swarm(以太坊去中心化儲存網路)
1、閱讀要求
瞭解要求,獲取材料
2、Write your code
對於沒有測試覆蓋和前端部分的挑戰,可以使用線上編譯器 Remix,由於它有自動偵錯程式/編譯器,便於使用並捕獲錯誤。當然,也可以用Visual Studio Code了。
3、對比解決方案
完成之後,與提供的解決方案作對比。
切記,一定要自己動手做一遍!動手做一遍!做一遍!
Now,挑戰開始!
以下為30個挑戰示例(程式碼在文末,圖片/文字格式均有)
01_say_hello
-
在建立時設定問候語並允許所有者(合約建立者)進行更改
-
向每個呼叫sayHello方法的人返回問候語
-
將Hello Daddy返回給建立者
02_balance_address_checker
-
返回合約地址
-
返回合約建立者的地址
-
返回傳送人的地址
-
返回合約的餘額
-
返回合約制定者的餘額(僅在你為該合約所有者的前提下)
-
返回傳送人的餘額
03_basic_random
-
返回0-99之間的隨機數
-
計算中的“財務重要性”小於礦工挖掘單一區塊得到的
-
如何將BLOCKHASH安全地用於隨機數?
04_lottery_10_users
-
限制為10個使用者
-
使用者必須支付0.1ETH才能加入以太坊彩票
-
同一使用者只能加入一次
-
合約建立者可以加入以太坊彩票
-
第10個使用者進入後,選擇獲勝者
-
贏家收走所有的錢
-
選出獲勝者之後,開始下一輪
05_lottery_no_limit
-
使用者支付0.1以太即可加入lottery
-
不限使用者數量
-
同一使用者可以多次加入
-
合約所有人亦可以加入
-
合約所有人決定何時選出贏家
-
贏家將得到所有獎金
-
選出贏家即可開始新一輪lottery
06_lottery_multiple_winners
-
對使用者無限制
-
使用者須支付0.1 ETH和並從1-100中挑選一個數字
-
合約所有者決定何時生成隨機數(1-100)
-
選擇生成數字的使用者獲勝
-
所有獎勵將分配給所有贏家
07_fundraising
-
有籌款目標的(創立時設定數額)
-
籌資有時間限制(創立時設定時間)
-
任何人都可以增加任何金額,直到時間結束或目標達到為止。
-
時間到了,但目標尚未完成,使用者可以撤回他們的資金。
-
當目標達到時,所有者可以取出所有錢
08_basic_token
-
創造時設定代幣的初始供應量
-
合約建立者獲得初始Token
-
Token可以轉移到任何帳戶
-
有保護措施以防止溢位
-
任何人可檢查餘額
09_ERC_20_token
- 基於EIP規範實現ERC 20 token
10_ERC20_usage
-
使用OpenZeppelin建立你自己的ERC 20令牌
-
繼承“標準token”
-
新增自定義名稱、符號、小數和初始供應
11_ERC_721_usage
-
使用OpenZeppelin建立自己的ERC 721令牌
-
繼承“ERC 721 Token”
-
新增自定義名稱和符號
12_string_converter
-
建立函式,將字串轉換為bytz 32
-
為該函式新增可靠性測試
13_route_manager
-
合約內必須儲存公交車站的列表。
-
每個公共汽車站都有id、名稱和座標(例如:czn 1、PKS Cieszyn、10.123222, 33.212345)
-
所有者能夠新增新的站點
-
合約必須有測試範圍
14_testing_route_manager
-
增加Solidity試驗
-
新增JavaScript測試
15_shared_wallet
-
合約有且只有一位所有者
-
所有者可以新增和刪除管理員
-
管理員可以提取所有資金
-
合約具有接收轉帳的應付款回退功能
16_multisig_wallet
-
建立一個多簽名錢包
-
進行轉移須有3名管理員簽署交易
17_crowdsale
-
製造可鑄造硬幣(使用Open Zeppelin)
-
建立簡單的眾包銷售(使用Open Zeppelin)
-
設定開啟和關閉時間
-
固定費率和錢包地址
18_roles_management
-
建立繼承自己的合約(Open Zeppelin)
-
合約須有管理員名單
-
所有者可以新增/更新/刪除管理員
-
合約所有者也是管理員
-
僅管理員可新增修飾符
19_the_dao_attack
-
增加非常簡化的DAO合約(押金,提款)
-
新增攻擊者合約
20_lpg_price
- 利用Oraclize API獲取LPG價格
21_random_oraclize
- 使用Oraclize API獲取隨機數
22_raffle_oraclize
-
使用者可以參與一次抽獎
-
所有者不能參與
-
使用Oraclize的RNG選出贏家
23_ipfs_oraclize
-
向IPF中新增一個簡單的json檔案
-
使用Oraclize讀取該檔案
-
將一個json屬性的結果儲存在字串變數中
24_election
-
每一次選舉建立一個合約,為每個候選人提供一個簡短的名字和地址
-
合約建立者有權對每個地址單獨投票
-
每個投票參與者可以投票一次
-
投票參與者不能為自己投票
25_faucet
-
添加回退函式以接受付款
-
增加退出功能,每人最多能得到1ETH
-
使用事件記錄兩個金額(已支付、轉移)
26_swarm_oraclize
-
將文字檔案新增到Swarm public gateway (https://swarm-gateways.net)
-
通過Oraclize API讀取合約中的檔案
27_dapp_pet_shop
-
允許所有者取消收養
-
編寫取消收養的測試(TDD)
-
在SMART合約中新增取消功能
28_infura_deployment
- 使用Infura新增Ropsten部署設定
29_tic_tac_toe
-
為2名玩家新增基本的tic tac toe
-
3x3 board
-
無需人工智慧
30_web3_DAO_deploy
-
將其更新為Solity0.4.24並編譯
-
使用 web3 和ethereumjs-tx傳送已簽名的交易
-
使用 Infura將編譯好的合同部署到Ropsten網路
以下為各個示例的全部(或部分)程式碼,圖較多,不願看圖,文末有程式碼連結!
01_say_hello
02_balance_address_checker
03_basic_random
04_lottery_10_users
04_lottery_10_users_adamskrodzki
05_lottery_no_limit
06_lottery_multiple_winners
07_fundraising
08_basic_token
09_erc_20_token
10_PiotrexToken
11_DirtyToken
12_StringConverter
13_RouteManager
14_RouteManagerTest
15_SharedWallet
16_MultiSigWallet
17_BuseoCoin
17_BuseoCrowdsale
18_Roles
19_Attacker
19_MiniDAO
20_LpgPrice
21_ RandomOraclize
22_ Raffle
23_ IpfsOraclize
24_Election
25_Faucet
26_SwarmOraclize
27_Adoption
28_truffle
29_TicTacToe
30_web3-deploy-example-master
挑戰成功了嗎? Warriors!
連結:https://pan.baidu.com/s/1UVhLAsG167WC74jp5g9CRg
密碼:i6td
其他資源
-
Official sites: Truffle, Ethereum, Solidity
-
Repositories: solidity-by-example, solidity-baby-steps
-
Channels: Dapp University
-
Blogs: https://michalzalecki.com/
內容來源:區塊鏈大本營(ID:blockchain_camp)
作者 | Piotr Brudny
編譯 | kou、韓依依
以下是我們的社群介紹,歡迎各種合作、交流、學習:)