1. 程式人生 > >EOS智慧合約開發和測試框架EOSFactory

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