上一篇文章《如何成為以太坊開發?《一》》中,我們學習到如何使用區塊鏈錢包連接以太坊網絡,以及區塊鏈錢包助記詞,公私鑰,平臺幣和合約幣等概念。
有了之前的基礎,我們再繼續往下學習。
以太坊的所有交易記錄都可以在瀏覽器中查詢到,這個瀏覽器在國內是需要科學上網的,如果是國內的話,可以使用這個瀏覽器地址。
瀏覽器的數據是從鏈上同步下來獲取寫到數據庫,前端直接從後端的數據庫接口獲取到的,所以,瀏覽器的所有數據都是鏈上的真實有效的實時數據。
在瀏覽器中,我們可以看到有區塊高度,區塊哈希,區塊時間戳,代幣總量等非常豐富的數據信息,這些數據信息正好就是鏈上的所有數據信息。
不管是以太坊鏈還是其它的鏈,區塊鏈上的數據永遠都在出塊,作為計算機內的礦工永遠都在等待打包交易,所以我們能夠實時的看到區塊鏈的區塊高度一直在遞增。
之前我們就講過,區塊裡都是數據,那麼每個區塊高度都存在的大量的數據信息。
區塊鏈上的每筆交易都會返回一個交易的哈希值,這就相當於現實生活中在銀行轉賬的流水,通過這個哈希值,我們就可以查詢到我們具體交易的具體數據信息,包括發送人,接受人,發送了什麼,發送的時間戳等等。
截止至此,我們已經完全能理解以太坊的運作,規則,以及一些常用的概念,數據了。
接下來,作為技術開發,我們要成為以太坊開發者需要掌握哪些技術棧呢?
不管是前端開發還是後端開發,我們一定要掌握的就是以太坊的web3庫。
那什麼是web3庫呢?web3庫可以分為支持nodejs語言的web3.js庫,支持java的web3.j庫,支持python的web3.py庫。
所以,作為vue前端或者是react前端開發,我們一定要掌握web3.js庫的使用。
而對於後端而言,就需要要求後端任意選擇自己拿手的編程語言了,如果本來是nodejs開發,那麼web3.js庫就可以很輕易上手,如果是java開發,那麼web3.j庫就可以很容易上手,又或者如果是python開發,那麼web3.py就可以很容易掌握了。
除了上述的nodejs,java,python編程語言,官方提供了這種web3第三方庫來與以太坊交互外,其實go或者cpp也是可以與以太坊進行交互,隻是官方沒有對應這兩種編程語言的web3庫,在與以太坊做交互的時候,就感覺沒有官方提供支持有web3庫的語言那樣使用起來這麼的方便直觀。
當我們懂得了使用web3,使用支持的編程語言去跟以太坊去交互了。
接下來,我們還的學會智能合約語言,前面我們有提到過,solidity,python,vyper,cpp都可以編寫智能合約,而且,我們還需要學會使用智能合約在線編輯器。
有了這些基礎,我們就可以開發我們自己的智能合約了。
solidity是官方推薦的編寫智能合約的語言,而且寫起來也很容易上手,推薦大家學習這門語言。
再往深一點學習以太坊的合約編程的話,我們還需要深入學習下內聯匯編語言。
在掌握了智能合約編程後,更深一點,我們需要學會合約在EVM虛擬機裡編譯部署的底層原理。
智能合約的編寫,不像其它的編程,它除了講究數據結構的優化外,更註重的是合約編寫的安全性,因為合約部署到鏈上後是無法修改的,只要部署成功了,合約都將按照代碼的特定邏輯自動運行,無法幹涉。
再則,在合約領域,代碼都是開源的,所以,為了防止攻擊,代碼的安全性是非常重要的。
之前我們提到以太坊是有測試網絡的,所以,當我們需要做應用的時候,我們通常都是先利用官方的測試網絡先測試運行代碼,調試邏輯,當所有邏輯都符合預期了,才會安排在主網上線。
區塊鏈的所有交易都是需要扣取平臺幣作為手續費的,那測試網絡當然也是要的,那麼我們就得到對應的水龍頭去領取對應網絡的測試平臺幣,隻有擁有了測試網絡的平臺幣,我們在發送交易的時候才有手續費可以抵扣,交易才會上鏈。
因為水龍頭獲取平臺幣的數量有限,另一種方法是,我們之前講過私有鏈,私有鏈是私有的,數據是不公開的,那麼我們可以自己搭建一條以太坊私有鏈,這樣我們需要多少幣就完全取決於我們自己了。
但是這種方法之前我們也講過,搭建一條私有鏈也是比較繁瑣的,因為鏈不斷的在出塊,這對我們服務器的性能來說又是一筆開銷,所以,我們通常不這樣來測試。
官方給我們提供了ganache網絡,這個網絡模仿了以太坊網絡,也默認給我們定義了一些平臺幣,所以,我們也可以利用它來進行測試,也就不需要我們自己手動去創建私有鏈了。
上面我們講到編寫智能合約,那麼針對智能合約編寫完成後,我們除了使用智能合約在線編輯器對代碼的邏輯進行調試外,我們更加需要使用後端編程語言,連接上以太坊網絡,然後使用truffle測試框架,或者使用hardhat測試框架,foundry測試框架對代碼的邏輯進行深度的測試。
所以,我們還得掌握這三種合約測試框架。
如果掌握了這兩節所說的技術知識點,那麼我們就已經完全可以成為一名合格的以太坊技術開發了。
別著急,有了這些基本的技術知識體系後,再接下來的學習中,我們會一點一點去嘗試一些示例的開發,讓我們一起再往下學習吧。