EOS智慧合約開發和測試框架EOSFactory
EOS Factory是一個EOS智慧合約開發和測試框架。
自2017年秋季以來,Tokenika一直致力於建立基於Python的EOS智慧合約開發平臺,以便輕鬆建立,測試和部署智慧合約。隨著EOS的不斷髮展,我們已經習慣了其基礎程式碼的突然變化,並且隨著我們的進展而逐漸減少詛咒;)今天,這一天終於來了,我們非常高興能夠將我們的工作交給EOS社群。我們的新生嬰兒將以EOS Factory的名義出現,旨在成為一個完整的,完全記錄的跨平臺IDE,使用簡單的命令列介面,你將能夠:
- 啟動私有 EOS testnet。
- 編譯 EOS 智慧合約。
- 通過單元測試執行它。
- 調整它直到你覺得它準備好了。
- 在 EOS 上部署它。
- 跨平臺相容性。
我們的主要目標之一是使EOSFactory與所有主要作業系統相容,允許開發人員在從Linux到OSX到Windows10的所有內容上執行EOS節點並與之互動。我們很高興地告訴大家這一點已經成功。據我們所知,沒有其他EOS開發解決方案能夠提供。EOSFactory與Visual StudioCode完美配合。這將允許你在一個強大的IDE中編寫EOS智慧合約,執行和單元測試。
為什麼需要它?
EOSFactory提供的所有功能都可以通過官方EOS工具集完成,即cleos和eosiocpp。EOSFactory只是另一種工具嗎?並不是的。
程式碼開發和單元測試涉及需要執行數百次的任務,並且每次都以完全相同的方式和上下文執行。因此,這些任務需要完全自動化,否則浪費了大量時間,更糟糕的是,引入了許多額外的不確定性。手動執行的操作容易出錯。
這就是EOSFactory實際帶來的內容:一種簡單直觀的方式來自動化處理智慧合約的過程。以Python指令碼的形式記下需要以完全相同的方式和上下文多次完成的操作,然後執行指令碼。EOSFactory將負責其他所有事情:它將編譯你的智慧合約,建立新的測試網路,部署合約,呼叫其方法並驗證響應,然後下線測試網路,最後報告結果。所有這一切都在幾秒鐘內完成。
結構
在EOSFactory中,我們使用Python與智慧合約進行互動。但是,在核心裡,我們的工具集由C++提供支援。
因此,EOSFactory由兩層組成:
- 名稱為
teos
的C++橋連線到執行私有testnet的EOS節點。 - 名稱為
Pyteos
的Python封裝器充當方便的人機介面。
換句話說,我們在外部使用Python,而C++則支援內部。
開發週期
這就是智慧合約開發週期的樣子:
- 1.寫一份智慧合約(用EOS的原生C++編寫)。
- 2.編寫單元測試(在Python中)。
- 3.編譯你的智慧合約。
- 4.啟動一個新的單節點testnet。
- 5.使用Bios合約和幾個測試帳戶初始化testnet。
- 6.部署智慧合約。
- 7.執行單元測試。
- 8.下線testnet。
- 9.修改智慧合約或單元測試並跳轉到第3步。
在EOSFactory中,上述過程的每一步都由Python類和方法完全自動化。作為開發人員,你只提供創意部分,即智慧合約和單元測試的內容。單元測試旨在用Python編寫,而智慧合約當然是用C++編寫的。Visual Studio Code完美支援這兩種語言。
面向物件與過程
感謝Python,你在EOSFactory中處理的是類和物件。例如,智慧合約是一個物件,你可以使用其方法處理它,例如contract.build()
,constract.deploy()
,contract.push_action()
和contract.get_table()
。這與用於EOS的官方CLI的cleos
中使用的過程命令相反。
文件
你可以在此儲存庫中找到EOSFactory的原始碼,此處還有可用文件列表。
路線圖
EOSFactory仍在開發中,事情正在得到解決和改進。現在我們正在研究以下功能:
- 升級到更高階的機制來建立和管理單元測試。它們將被儲存為Python檔案的層次結構,其方式類似於以太坊的truffle框架中的流程,只是我們使用Python而不是JavaScript。此外,我們計劃新增對其他IDE的支援,例如Eclipse。
- 其次,我們正在考慮將Python層直接連線到
cleos
(官方EOS CLI)的優缺點。當我們開始研究EOSFactory時,cleos
(當時名為eosc)狀況不佳,因此不適合我們的需求,所以我們必須為EOS節點構建自己的C ++介面。隨著事情變得更加順利,我們可能會重新考慮依賴清單。 - 最後,我們正考慮將Ricardian Contracts整合到我們的單元測試中。這是EOS智慧合約的一個非常有趣的(在這個階段可能並不廣為人知)方面。有關更多資訊,請參閱EOSIO文件。
我們正計劃推出EOSFactory的下一個版本,最好是在EOS推出之前。
我們希望這是有幫助的,任何反饋,尤其是批評,都是非常受歡迎的。如果你發現我們的工作有用,你可以通過在即將到來的EOS Block Producer選舉中投票選舉Tokenika來表達你的支援——我們正在籌備更多令人興奮的EOS專案。
======================================================================
分享一些以太坊、EOS、比特幣等區塊鏈相關的互動式線上程式設計實戰教程:
- EOS教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、賬戶與錢包、發行代幣、智慧合約開發與部署、使用程式碼與智慧合約互動等核心知識點,最後綜合運用各知識點完成一個便籤DApp的開發。
- python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
- java以太坊開發教程,主要是針對java和android程式設計師進行區塊鏈以太坊開發的web3j詳解。
- php以太坊,主要是介紹使用php進行智慧合約開發互動,進行賬號建立、交易、轉賬、代幣開發以及過濾器和交易等內容。
- 以太坊入門教程,主要介紹智慧合約與dapp應用開發,適合入門。
- 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
- C#以太坊,主要講解如何使用C#開發基於.Net的以太坊應用,包括賬戶管理、狀態與交易、智慧合約開發與互動、過濾器和交易等。
- java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Java程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。
- php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Php程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
- tendermint區塊鏈開發詳解,本課程適合希望使用tendermint進行區塊鏈開發的工程師,課程內容即包括tendermint應用開發模型中的核心概念,例如ABCI介面、默克爾樹、多版本狀態庫等,也包括代幣發行等豐富的實操程式碼,是go語言工程師快速入門區塊鏈開發的最佳選擇。
匯智網原創翻譯,轉載請標明出處。這裡是原文EOS 智慧合約開發和測試框架 EOS Factory