区块链开发者观点:《Learn EOS》的作者 Christoph Michel
Source
對(duì)于將來的主導(dǎo) dapp 來說,在其開發(fā)堆棧中使用區(qū)塊鏈,開發(fā)人員需要他們?cè)趥鹘y(tǒng)網(wǎng)頁開發(fā)時(shí)所習(xí)慣使用的工具和信息通道。 dfuse 與經(jīng)驗(yàn)豐富的區(qū)塊鏈開發(fā)人員交流,分享他們的走過的路程、他們使用的工具以及他們的知識(shí)來源。 本周我們采訪了《Learn EOS》的作者 Christoph Michel。
向大家介紹下自己吧
我是 Christoph Michel 一名來自德國(guó)的軟件工程師。在網(wǎng)上一般用 cmichel 的昵稱。我對(duì)編程的迷戀始于我十幾歲玩游戲的時(shí)候。那時(shí),反作弊系統(tǒng)很容易被規(guī)避,作弊的玩家很常見。我就開始訪問游戲黑客論壇,打算通過學(xué)著自己做更好的作弊器來擊敗其他作弊者。有意思的是,我很快發(fā)現(xiàn)編寫和改進(jìn)作弊程序給我?guī)砹吮韧嬗螒蚋嗟臉啡ぁN业木幊躺木痛碎_始了,然后我轉(zhuǎn)進(jìn)了網(wǎng)絡(luò)開發(fā),最終進(jìn)到大學(xué)學(xué)了數(shù)學(xué)和計(jì)算機(jī)科學(xué)。
我在讀我的密碼學(xué)碩士期間第一次接觸了區(qū)塊鏈技術(shù)。當(dāng)我知道我學(xué)的加密協(xié)議在與經(jīng)濟(jì)激勵(lì)的結(jié)合后能夠構(gòu)建完全去中心化的系統(tǒng)的時(shí)候,馬上它就吸引住我了。從技術(shù)角度來看,像 Monero 或 Zcash 這樣的隱私保護(hù)幣對(duì)我來說非常有趣。
但是,作為開發(fā)人員,我真的很喜歡開發(fā)應(yīng)用程序,然后我開始關(guān)注更多能夠運(yùn)行代碼的區(qū)塊鏈。在我評(píng)估不同的智能合約平臺(tái)時(shí),Dan Larimer 宣布了 EOS,我很贊同他在設(shè)計(jì)中做出的許多權(quán)衡。我在2018年初開始使用預(yù)發(fā)布版本的 EOS,然后在 EOS 主網(wǎng)上推出了首批 EOS 游戲之一,King of EOS。從那之后我就堅(jiān)持使用 EOS 做開發(fā),最近我發(fā)售了 ,這本書教會(huì)開發(fā)人員如何在 EOS 上開發(fā) dapp 。
您寫《Learn EOS》的期望是什么呢?
我在主網(wǎng)發(fā)布之前開始在 EOS 上做開發(fā),文檔呢主要包括如何通過手動(dòng)編譯 EOS 源代碼來設(shè)置開發(fā)環(huán)境。當(dāng)然,要弄清楚如何編寫智能合約,你最終還是要閱讀 EOS 源代碼或其他開源智能合約,因?yàn)楫?dāng)時(shí)沒有其他選擇。我當(dāng)時(shí)對(duì) Block.one 的 “Elemental Battles” 寄予厚望,是個(gè)教你如何開發(fā)你的第一個(gè) EOS 智能合約的游戲。但是它在發(fā)布時(shí)已經(jīng)過時(shí)了,不久之后新的 EOS 版本(EOSIO.CDT v1.3)引入了許多重大變化。 (順便提一個(gè)有意思的事:同樣的事情發(fā)生在我的書的發(fā)布上了,新的 EOS 合約開發(fā)工具包就在我的出書前一天發(fā)布了。)
我和社區(qū)的許多其他開發(fā)人員一樣,對(duì) EOS 開發(fā)缺乏最新的學(xué)習(xí)資源而感到沮喪。考慮到我已經(jīng)有了在 EOS上開發(fā) dapp 的經(jīng)驗(yàn)了,我認(rèn)為我應(yīng)該把我的這些經(jīng)驗(yàn)和閱讀 EOS 源代碼學(xué)來的東西。
在我看來,對(duì)開發(fā)者的教育是整個(gè)生態(tài)系統(tǒng)的重要組成部分,我看到了一個(gè)可以用我的知識(shí)來填補(bǔ)的大空白。最后,我們需要用戶的采用,而開發(fā)人員構(gòu)建的應(yīng)用程序會(huì)帶來用戶。
我打算創(chuàng)建一個(gè)完整的指南,它是自足的,有從頭到尾在 EOS 上構(gòu)建 dapps 的最新信息。從設(shè)置開發(fā)環(huán)境,到學(xué)習(xí) EOS 的功能、智能合約編程、通過前端和集成錢包進(jìn)行交互、去中心化部署前端到 IPFS。
雖然您可以在 EOS.IO Stack Exchange 論壇、GitHub 問題或源代碼中找到這些網(wǎng)上的信息,但它一般都是過時(shí)了或不夠完整。
例如,你可以在 EOS Developer Portal 上找到有關(guān)如何使用內(nèi)聯(lián)交易與其他智能合約進(jìn)行通信的信息。但是,假如您想在未來某個(gè)時(shí)間而不是現(xiàn)在執(zhí)行的交易呢?允許某項(xiàng)操作提前運(yùn)行或預(yù)約的最長(zhǎng)時(shí)間是多少?您能通過延期交易能得到什么保證?當(dāng)他們失敗時(shí)會(huì)發(fā)生什么?你如何解決這種不可靠性以及合約中的這些限制以使其有保障?
以上是一些人脈在編寫文檔時(shí)不會(huì)考慮到的問題,使得這些信息難以被找到。但是,當(dāng)坐下來編寫實(shí)際合約時(shí),你自己還是會(huì)遇到它們。
因此,我將所有這些信息打包成260多頁的書,這樣所有級(jí)別的開發(fā)者都可以從中受益,不管你是初學(xué)者還是大神。唯一的先決條件是,你應(yīng)該熟悉任何語言的一般編程概念。對(duì)編程的介紹并不是 EOS 所需要的,也不是我對(duì)本書的意圖。外面已經(jīng)有很多關(guān)于學(xué)習(xí)如何編程的好書了,所以我不想在這方面做重復(fù)的工作。這里我只把精力放在區(qū)塊鏈的開發(fā)上。
撰寫《Learn EOS》時(shí)您遇到的主要挑戰(zhàn)是什么?
對(duì)我來說,最大的挑戰(zhàn)是 EOS 上的智能合約是用 C ++ 編寫的。
雖然我十年前寫過 C 和 C ++,但從那時(shí)起,這語言經(jīng)過了巨大的改變。最近大部分做的是網(wǎng)絡(luò)開發(fā),所以我首先必須再次熟悉現(xiàn)代 C ++(迭代器,函數(shù)式編程,lambda函數(shù))及其更低級(jí)的功能,如內(nèi)存管理和引用。但是主要是要習(xí)慣它的語法,我很高興知道編寫智能合約不需要掌握復(fù)雜的 C ++。
作為一個(gè) JavaScript 網(wǎng)頁開發(fā)員,另一個(gè)問題是開發(fā)人員工具。我習(xí)慣于熱重加載和好的軟件包管理系統(tǒng),每當(dāng)我進(jìn)行代碼更改時(shí),我必須運(yùn)行命令來編譯和部署我的合約這個(gè)過程感覺相當(dāng)古老。這促使我快速開發(fā)自己的自動(dòng)構(gòu)建過程。
最乏味的部分是每當(dāng) EOS 發(fā)布具有重大變化的新版本時(shí),必須更新所有代碼示例。到目前為止,這種情況發(fā)生了兩次,去年十月發(fā)生一次,另一次是出書的前一天。我確定這會(huì)不會(huì)是最后一次,但我會(huì)保證讓這本書保持最新狀態(tài)。我認(rèn)為每個(gè)用了 EOS 很長(zhǎng)時(shí)間的人都遇到國(guó)在編寫過時(shí)的智能合約代碼時(shí)那種令人沮喪的經(jīng)歷。這對(duì)剛剛?cè)腴T的新開發(fā)人員特別不好,因此我想保證本書是最新的,來消除這種挫敗感。
作為區(qū)塊鏈開發(fā)人員,您需要熟悉快節(jié)奏的更和所有在進(jìn)行中的開發(fā)。對(duì)于所有技術(shù)領(lǐng)域都是如此,但我認(rèn)為區(qū)塊鏈更是。在傳統(tǒng)的軟件開發(fā)中,您擁有獨(dú)立的服務(wù)器,您可以決定不更新。在我們這個(gè)的空間里,一切都交織在一起,會(huì)有其他因素為您做選擇。您的代碼在去中心的基礎(chǔ)架構(gòu)中的不同節(jié)點(diǎn)的硬件上執(zhí)行,共識(shí)會(huì)決定運(yùn)行哪些版本以及哪些新提議,把它作為系統(tǒng)的更新。
您希望在區(qū)塊鏈生態(tài)中看到什么?
我想從兩個(gè)不同的角度回答這個(gè)問題。首先,在所有平臺(tái)的全球生態(tài)系統(tǒng)層面,和我具體希望在 EOS 上看到的。
在全球范圍內(nèi),我希望看到項(xiàng)目之間的更多有意義的合作。對(duì)我而言,似乎大多數(shù)項(xiàng)目只關(guān)心自身,并且都有"贏家拿走一切"的心態(tài)。實(shí)際上,在我看來恰恰相反。更多的用戶采用和更多真實(shí)用例將推動(dòng)整個(gè)市場(chǎng)。
特別是隨著跨區(qū)塊鏈通信(IBC)被實(shí)現(xiàn),或者甚至比如說就光是通過 Bancor 網(wǎng)絡(luò)來進(jìn)行 EOS 和以太坊上的代幣交換,項(xiàng)目可以共存。幾乎計(jì)算機(jī)科學(xué)研究的所有東西都只是不同的權(quán)衡問題,然后項(xiàng)目可以選擇哪個(gè)項(xiàng)目具體有什么級(jí)別的去中心化、隱私和性能,來適合他們的需求。
另一個(gè)我希望看到的是對(duì)游戲、賭博或金融之外的用例的探索。我認(rèn)為去中心化的無信保險(xiǎn)公司是一個(gè)值得探索的好概念。基本上,任何可以通過公共 API 調(diào)用確認(rèn)的內(nèi)容都可以無信任、更透明和有效通過預(yù)言機(jī)實(shí)現(xiàn)。
最后,我希望看到開區(qū)塊鏈公司的相關(guān)法律變得更清晰。這個(gè)問題我們不經(jīng)常說,但許多團(tuán)隊(duì)決定保持匿名只是因?yàn)楝F(xiàn)有的法律框架尚不適用于區(qū)塊鏈。舉個(gè)例子,在向歐盟客戶銷售數(shù)字產(chǎn)品時(shí),您必須在客戶所在國(guó)家/地區(qū)支付增值稅。當(dāng)您的產(chǎn)品可以通過智能合約購買時(shí),無法獲得該信息。還有許多其他此類法律上的不確定因素。
具體在 EOS 上呢,我希望看到更多的骰子游戲。我覺得吧,把"EOS"、“BET”、"DICE"和"PLAY"這幾個(gè)單詞重新組合還可以變出更多這樣游戲的公司 。要是不開玩笑的化,我要說許多 dapp 仍然是閉源的,即使它們是開源的,也很難驗(yàn)證它們確實(shí)正在運(yùn)行他們說在運(yùn)行的代碼,因?yàn)槲覀冊(cè)趨^(qū)塊瀏覽器中缺少合約驗(yàn)證工具。我知道 EOSPark 和 SlowMist 團(tuán)隊(duì)以前都在試著發(fā)布過相關(guān)的解決方案,但我發(fā)現(xiàn)它們使用起來有點(diǎn)不穩(wěn)定。
作為一名開發(fā)人員,我個(gè)人最大的愿望是擁有更多工具,使區(qū)塊鏈解析更容易——類似于 dfuse.io 在做的。每當(dāng)執(zhí)行智能合約上的操作時(shí),有個(gè)能觸及你 API 端點(diǎn)的可靠的 webhook 是非常有價(jià)值的。現(xiàn)在,實(shí)現(xiàn)這一目標(biāo)的唯一可靠方法是自己運(yùn)行 EOS 主網(wǎng)節(jié)點(diǎn),這是有大量的財(cái)務(wù)和時(shí)間成本的。
有什么想與開發(fā)人員分享的建議嗎?
我對(duì)區(qū)塊鏈發(fā)展采取逆向觀點(diǎn)。畢竟它與傳統(tǒng)的編程沒有什么不同。某些方面它甚至更容易,例如無需考慮數(shù)據(jù)備份,設(shè)置基礎(chǔ)架構(gòu)或執(zhí)行開發(fā)和維護(hù)相關(guān)任務(wù)以保持應(yīng)用程序的運(yùn)行。這一切都是由網(wǎng)絡(luò)完成的。 (前提是你的所有后端邏輯都是通過智能合約完成的,是不需要服務(wù)器的。)所以我想說的是你不必害怕學(xué)習(xí)區(qū)塊鏈開發(fā)。
EOS開發(fā)人員門戶網(wǎng)站依舊是一個(gè)很好的入門資源,如果您對(duì)區(qū)塊鏈感興趣,那么現(xiàn)在就沒有比現(xiàn)在更好的時(shí)間起步了。
給大家的一些提示:
- 給你整個(gè)設(shè)置,從啟動(dòng)本地網(wǎng)絡(luò)到編譯和部署合約,做自動(dòng)化。這個(gè)時(shí)間是疊加起來的。特別是在它只是一個(gè)你每天只投入幾個(gè)小時(shí)的支線項(xiàng)目的時(shí)候,手動(dòng)完成整個(gè)過程可能足以給你讓你無法起步的負(fù)擔(dān)。這就是我自己編寫 EOS 樣板生成器的原因。
*由于您的智能合約不是一個(gè)長(zhǎng)期運(yùn)行的流程,而是根據(jù)個(gè)人情況處理每個(gè)操作的,您需要仔細(xì)考慮您的應(yīng)用程序可能最終遇到的不同狀態(tài)。我發(fā)現(xiàn)用有限狀態(tài)機(jī)器的角度考慮它并繪制出圖表是非常有幫助的。就像我給我的 Cryptoship 合約做的一樣。這有助于在架構(gòu)早期發(fā)現(xiàn)無法預(yù)料到的問題,從而避免以后進(jìn)行大量重構(gòu)。
*不要依賴延期交易。它們不能保證百分百執(zhí)行,您還是應(yīng)該給用戶提供手動(dòng)重試的操作。
*在為一個(gè)智能合約平臺(tái)開發(fā)時(shí),您學(xué)到的許多概念會(huì)適用于其他智能合約平臺(tái)。不要覺得你是在封閉自己的選擇,也不要在你的平臺(tái)上投入過多情感。
如果您對(duì) EOS 開發(fā)很認(rèn)真,并且想要深入了解并節(jié)省在網(wǎng)上找解決方案的時(shí)間,我還是會(huì)地推薦以下我自己的《Learn EOS》。
另一個(gè)更簡(jiǎn)單的是合約開發(fā)工具包的"eosiolib"源代碼。
慢霧的這份智能合約安全檢查表也值得一提。
如果您遇到任何問題,請(qǐng)隨時(shí)通過 Stack Exchange 或 Telegram 與社區(qū)聯(lián)系。 EOS社區(qū)是我參加過的最互相幫助的社區(qū)之一!似乎所有針對(duì) EOS 的 FUD( Fear, Uncertainty, Doubt 意思為懼、惑、疑)讓每個(gè)人都更緊密。
如果你是一個(gè)開發(fā)人員并希望分享你的區(qū)塊鏈開發(fā)經(jīng)驗(yàn),請(qǐng)隨時(shí)與我們聯(lián)系。 我們很樂意將你的訪談?wù)系轿覀兊南盗形恼隆秴^(qū)塊鏈開發(fā)者觀點(diǎn)》中。
總結(jié)
以上是生活随笔為你收集整理的区块链开发者观点:《Learn EOS》的作者 Christoph Michel的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 火车站的江湖,远比你想象的深
- 下一篇: GeneXus学习笔记-Excel导出