這30個以太坊開發示例,讓你成爲80萬都挖不走的區塊鏈人才!

image

2018年已過了大半,幣圈跌跌蕩蕩,而鏈圈的人在等待鳳凰涅槃,熊市專心作技術,牛市才能一展身手、衝破雲霄!前端

本文主要告訴你,如何成爲一名優秀的以太坊開發者!git

若是你是以太坊開發者中的「老司機」,請直接看最後一部分:30個爲你量身定作的挑戰示例!github

若是你是以太坊初學者,請認真讀完,相信你終會受益不淺。web

圖較多,不想看圖,文末有代碼!編程

我曾經買過加密貨幣,曾試圖使用一些醜陋礦機挖礦,看過一些稀稀拉拉的Solidity教程。但不得不認可,在當時,我更偏心前者,我切身體會到了加密貨幣的狂熱,急切須要一種平衡,急切中止這種狂熱行爲,我最終選擇了離開,大概四五個月的時間吧。json

是的,我又回來了,此次我選擇了後者,要作一名區塊鏈開發者!選擇了以太坊,選擇了Solidity。安全

以前看過的教程再也不是最新的,課程、文章、博客數不勝數,可是仍然很難找到正確的學習方式。網絡

探索了一段時間,終於找到了,在這裏分享出來,但願對大家有所幫助。app

小編認爲,對於初學Solidity的區塊鏈愛好者來講, cryptozombies.io 網站就是一個很不錯的選擇。框架

每次一打開它的主界面,植物大戰殭屍的場景就立馬浮如今個人腦海中,就會想要不要開發一款區塊鏈版植物大戰殭屍,激發了我濃厚的學習興趣!

image

編遊戲的同時,也學習了以太坊智能合約,何樂而不爲呢?

這個網站一共有6個教程,每一個教程大約須要1-2小時。小編建議你用一週的時間,天天一節。記住,必定要作一些必要的筆記和備忘單。

image

推薦使用 Google Docs,固然,你可使用符合自身偏好的工具,好比 Gist、EverNote 等,如下爲來自 Google Docs 的備忘單截圖。

image

作備忘單的目的就是在學習新知識時不丟棄以前學到的東西(切記不要學狗熊掰棒子)!

學完這6個教程,你就掌握了以太坊開發的基礎知識。

但這樣就能夠了嗎?如今就能使用Solidity碼代碼,成爲優秀的以太坊開發者?

Not yet ! 在完成 CryptoZombies並確保你記錄了完整的備忘單以後,就能夠進入第二階段了。

在學習CryptoZombies 6個互動課程的過程當中,你已瞭解如何編寫智能合約和建立DApp,這個過程頗有趣。CryptoZombies網站以外,你須要一個編譯器。

關於編譯器,我使用的是 Visual Studio Code(你能夠根據我的偏好自由選擇),它能夠運行在Windows、 Mac 和 Linux環境中。

首先,咱們須要安裝Visual Studio code。以Windows操做系統爲例,在 chocolatey.org/中使用如下命令:

choco install VisualstudioCode –

choco installVisualstudioCode –y

安裝完成,操做界面是這樣的,是否是很簡潔?!

image

那麼,如何安裝Solidity?點擊extensions,安裝Solidity和Material Icon Theme,以下圖:

image

是否是很簡單?小編想要操做界面看起來更「性感」?須要依次點擊 File –> Preferences –> File Icon Theme

image

看下圖!是否是很性感?!

image

完成基本配置後,開始建立一個簡單的合約:File -> New File

image

注意,左下角出現了一個warning(感嘆號!)

image

Code contains empty block!這是在提示你寫一些有效的代碼!

image

No problems have been…沒有報錯!

image

必定要利用好Solidity官方文檔!細細品讀 Solidity documentation ,好比文檔中關於智能合約的介紹Introduction to Smart Contracts ,仍是要提醒你,在整個學習過程當中,必定要作筆記,作筆記!

image

除此以外,你還須要瞭解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(以太坊去中心化存儲網絡)

一、閱讀要求

瞭解要求,獲取材料

二、Write your code

對於沒有測試覆蓋和前端部分的挑戰,可使用在線編譯器 Remix,因爲它有自動調試器/編譯器,便於使用並捕獲錯誤。固然,也能夠用Visual Studio Code了。

三、對比解決方案

完成以後,與提供的解決方案做對比。

切記,必定要本身動手作一遍!動手作一遍!作一遍!

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 一、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 (swarm-gateways.net

  • 經過Oraclize API讀取合約中的文件

27_dapp_pet_shop

28_infura_deployment

  • 使用Infura添加Ropsten部署設置

29_tic_tac_toe

  • 爲2名玩家添加基本的tic tac toe

  • 3x3 board

  • 無需人工智能

30_web3_DAO_deploy

  • 從 ethereum.org/dao複製DAO代碼

  • 將其更新爲Solity0.4.24並編譯

  • 使用 web3 和ethereumjs-tx發送已簽名的交易

  • 使用 Infura將編譯好的合同部署到Ropsten網絡

如下爲各個示例的所有(或部分)代碼,圖較多,不肯看圖,文末有代碼連接!

image

01_say_hello

image

02_balance_address_checker

image

03_basic_random

image

04_lottery_10_users

image

04_lottery_10_users_adamskrodzki

image

05_lottery_no_limit

image

06_lottery_multiple_winners

image

07_fundraising

image

08_basic_token

image

09_erc_20_token

image

10_PiotrexToken

image

11_DirtyToken

image

12_StringConverter

image

13_RouteManager

image

14_RouteManagerTest

image

15_SharedWallet

image

16_MultiSigWallet

image

17_BuseoCoin

image

17_BuseoCrowdsale

image

18_Roles

image

19_Attacker

image

19_MiniDAO

image

20_LpgPrice

image

21_ RandomOraclize

image

22_ Raffle

image

23_ IpfsOraclize

image

24_Election

image

25_Faucet

image

26_SwarmOraclize

image

27_Adoption

image

28_truffle

image

29_TicTacToe

image

30_web3-deploy-example-master

挑戰成功了嗎? Warriors!

連接:pan.baidu.com/s/1UVhLAsG1…

密碼:i6td

其餘資源

內容來源:區塊鏈大本營(ID:blockchain_camp)

做者 | Piotr Brudny

編譯 | kou、韓依依

image
相關文章
相關標籤/搜索