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