欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

AERGO SHIP:用于開發(fā)智能合約的包管理器

 更新時(shí)間:2018年11月14日 11:43:08   投稿:mrr  
AERGO SHIP:用于開發(fā)智能合約的包管理器,用于構(gòu)建、測(cè)試和部署分布式應(yīng)用程序的客戶端框架和開發(fā)環(huán)境

AERGO SHIP:用于開發(fā)智能合約的包管理器

用于構(gòu)建、測(cè)試和部署分布式應(yīng)用程序的客戶端框架和開發(fā)環(huán)境

構(gòu)建大型分布式應(yīng)用程序是很困難的,因?yàn)閷?duì)其進(jìn)行測(cè)試,使其實(shí)現(xiàn)端到端工作,并進(jìn)行部署是一個(gè)非常耗時(shí)的過(guò)程。通過(guò)AERGO,我們計(jì)劃讓一切變得與眾不同。

AERGO是一個(gè)為在實(shí)現(xiàn)基于區(qū)塊鏈的系統(tǒng)和應(yīng)用程序時(shí)面臨眾多獨(dú)特挑戰(zhàn)的企業(yè)提供解決方案的平臺(tái)。為了提高開發(fā)、測(cè)試和部署智能合約的效率和易用性,我們創(chuàng)建了SHIP。SHIP是Lua智能合約包管理器。它將本地開發(fā)環(huán)境與Git和分布式分類賬連接起來(lái),從而大大減少了構(gòu)建和管理智能合約所花費(fèi)的時(shí)間。SHIP提供以下功能:

項(xiàng)目設(shè)置:在簡(jiǎn)單的任務(wù)中完成開發(fā)準(zhǔn)備。

從遠(yuǎn)程存儲(chǔ)庫(kù)安裝軟件包:GitHub上的軟件包可以安裝在本地存儲(chǔ)庫(kù)中。

構(gòu)建:結(jié)合(預(yù)處理)項(xiàng)目?jī)?nèi)部的資源來(lái)開發(fā)準(zhǔn)備分發(fā)的產(chǎn)品。

單元測(cè)試:在上傳到網(wǎng)絡(luò)之前,您可以驗(yàn)證新版本的功能是否符合要求。

部署到本地存儲(chǔ)庫(kù):將已開發(fā)的項(xiàng)目安裝到本地存儲(chǔ)庫(kù)中,以供其他項(xiàng)目參考。

SHIP最基本的理念是簡(jiǎn)潔;它輕巧而有效。目前版本的SHIP特意不包括廣泛的開發(fā)功能;但重要的是,SHIP是一個(gè)持續(xù)更新的項(xiàng)目。我們將從技術(shù)社區(qū)中獲取建議,并繼續(xù)添加被視為有價(jià)值的功能。

我們?yōu)槭裁匆獎(jiǎng)?chuàng)建包管理器?

我們經(jīng)常回顧歷史,以便提出假設(shè)。本月早些時(shí)候,Phil發(fā)表了一篇文章,解釋了我們基于Linux和Red Hat所取得的歷史性成功的開源執(zhí)行方法。在開發(fā)分布式應(yīng)用程序時(shí),我們采用相同的方式創(chuàng)建了一個(gè)包管理器。

2009年至2014年,許多技術(shù)競(jìng)相出現(xiàn),形成了我們今天所知的現(xiàn)代網(wǎng)絡(luò)的年代。

需要注意的是,在創(chuàng)建JavaScript之后,1995年到2010年之間沒有引入構(gòu)建或包管理工具。在開始使用JavaScript之后的15年里,在推進(jìn)Web狀態(tài)方面幾乎沒有取得任何進(jìn)展。然而,隨著2009年Node.js的發(fā)布,包管理器和捆綁包變得越來(lái)越普遍,從而可以創(chuàng)建新一代的動(dòng)態(tài)網(wǎng)頁(yè)。Node.js的默認(rèn)包管理器npm的創(chuàng)建實(shí)現(xiàn)了Web的快速發(fā)展。

2012年,Trello發(fā)布了一篇文章概述Trello Tech Stack。這篇文章介紹了許多技術(shù),這些技術(shù)將使Web作為一個(gè)應(yīng)用程序而不僅僅是一個(gè)頁(yè)面工作。它很好地概述了2012年之前網(wǎng)絡(luò)的進(jìn)展及其在前幾年的快速發(fā)展。這種快速發(fā)展確實(shí)是由npm的創(chuàng)建引起的,減少了開發(fā)網(wǎng)頁(yè)所花費(fèi)的時(shí)間。

就像npm之于Web一樣,SHIP旨在成為開發(fā)基于區(qū)塊鏈的應(yīng)用程序和智能合約的關(guān)鍵點(diǎn)。SHIP將實(shí)現(xiàn)智能合約的開發(fā)、測(cè)試和部署無(wú)縫且高效。最終,SHIP將為AERGO提供吸引下一代dApp和企業(yè)區(qū)塊鏈開發(fā)人員所需的可用性,以創(chuàng)建一個(gè)蓬勃發(fā)展的開發(fā)者開源生態(tài)系統(tǒng)。

如何使用SHIP

要使用SHIP,您必須先下載并安裝以下程序:

Git
JDK 8+
Node.js
npm

構(gòu)建SHIP

SHIP目前尚未正式發(fā)布。如果您希望使用SHIP,必須先構(gòu)建它。SHIP使用下方的GitHub地址作為源存儲(chǔ)。

aergoio/ship

從GitHub獲取源代碼。(命令開頭的$顯示提示,如果系統(tǒng)root提示,則提示符為#)。

$ git clone

現(xiàn)在運(yùn)行構(gòu)建。第一次嘗試運(yùn)行時(shí),命令很長(zhǎng)。

$ cd ship

$ ./build.sh clean deps npm assemble

成功完成后,您可以看到ship- $ VERSION.tar文件已在程序集/構(gòu)建/分發(fā)中創(chuàng)建。

解壓縮此文件以安裝SHIP。

接下來(lái),使用ship命令在PATH路徑中包含bin目錄。您可將.bash_profile添加到最后一部分。它可能會(huì)根據(jù)您的shell而發(fā)生改變。

export PATH=$PATH:$SHIP_HOME/bin

SHOP_HOME指的是解壓縮ship - $ {VERSION}目錄。安裝現(xiàn)已完成。

建立項(xiàng)目

我們現(xiàn)在正在建立一個(gè)智能合約開發(fā)項(xiàng)目。在所需位置為項(xiàng)目創(chuàng)建目錄。

$ mkdir my-first-project

在本文中,我將此位置稱為$ {PROJECT_HOME}。

ship命令假定當(dāng)前工作目錄即為項(xiàng)目目錄。讓我們將當(dāng)前目錄移到項(xiàng)目中。

$ cd my-first-project

要將空目錄作為項(xiàng)目,您需要運(yùn)行以下命令。

$ ship init

如果運(yùn)行正常,則將在項(xiàng)目目錄中創(chuàng)建名為aergo.json的文件。aergo.json文件應(yīng)如下所示:

{
“name” : “bylee/my-first-project”,
“source” : “src/main/lua/main.lua”,
“target” : “app.lua”
}

更改項(xiàng)目設(shè)置

有關(guān)該項(xiàng)目的信息存儲(chǔ)在aergo.json中。必要時(shí),您可以編輯此文件。我們來(lái)看看這個(gè)文件的屬性。

name - 項(xiàng)目名稱:以$ {github_account} / $ {project_name}格式導(dǎo)入或?qū)湃氪鎯?chǔ)庫(kù)時(shí)使用此名稱。最初創(chuàng)建為$ {username} / $ {project_name}。如果您的用戶名和GitHub帳戶不同,則需要對(duì)其進(jìn)行更改。

source – 將開始構(gòu)建的源文件的路徑視為相對(duì)于項(xiàng)目文件夾的路徑。

target - 保存有構(gòu)建結(jié)果的文件的路徑。編譯構(gòu)建的文件,生成二進(jìn)制文件和ABI并將其部署到AERGO服務(wù)器。

dependencies - 引用的包的名稱。包是指存儲(chǔ)庫(kù)中安裝的項(xiàng)目的類型。

tests - 測(cè)試源的路徑。顧名思義,這是一種數(shù)組類型。

endpoint - AERGO服務(wù)器部署和運(yùn)行以進(jìn)行集成測(cè)試的主機(jī)名和端口信息。 $ {hostname}:設(shè)置為$ {port}。默認(rèn)值為“l(fā)ocalhost:7845”。

由于當(dāng)前狀態(tài)沒有變化,我們將繼續(xù)下一步。

編寫智能合約

現(xiàn)在,讓我們來(lái)編寫一段簡(jiǎn)單的代碼。源是src / main / lua / main.lua。

function min(a, b)
if (a < b) then
return a
else
return b
end
end

我寫了一個(gè)min函數(shù),該函數(shù)選取了兩個(gè)數(shù)字并返回其中較小的數(shù)字。目前,AERGO支持的智能合約基于語(yǔ)言lua。讓我們來(lái)構(gòu)建當(dāng)前的源代碼。

$ ship build

如果沒有問題,則創(chuàng)建app.lua文件。如果打開此文件,它與src / main / lua / main.lua完全相同,因?yàn)槟赡苤挥幸粋€(gè)文件要?jiǎng)?chuàng)建。如果繼續(xù)修改源并查看其更改方式,則可以看到該構(gòu)建如何組合文件。

此前,SHIP表示可以將多個(gè)文件合并為一個(gè)?,F(xiàn)在,讓我們重構(gòu)main.lua文件。您可以使用import命令從一個(gè)源引用另一個(gè)源。將min函數(shù)移到src / main / lua / utils.lua,將現(xiàn)有的main.lua替換為:

import “./utils.lua”

如果進(jìn)行重新構(gòu)建,則可以看到app.lua文件與之前相同。

創(chuàng)建單元測(cè)試

讓我們?yōu)閯倓?chuàng)建的utils.lua中的min函數(shù)編寫一個(gè)單元測(cè)試。我們將在src / test / lua / test-utils.lua中編寫測(cè)試代碼。下一次如果有機(jī)會(huì),我會(huì)更詳細(xì)地討論用于測(cè)試的API,這次僅顯示示例。

import “aergoio/athena-343”
local suite = TestSuite(‘test suite for utils.lua')
suite:add(TestCase(‘test min', function()
assertEquals(3, min(3, 4))
end))
suite:run()

在aergo.json中添加一個(gè)測(cè)試條目,告知SHIP這是一個(gè)用于測(cè)試的文件。

{
“name” : “bylee/my-first-project”,
“source” : “src/main/lua/main.lua”,
“target” : “app.lua”,
“tests”: [ “src/test/lua/test-utils.lua” ]
}

要運(yùn)行測(cè)試,請(qǐng)運(yùn)行以下命令:

$ ship test
ERROR : "Package aergoio/athena-343 not found: /Users/bylee/.aergo_modules/aergoio/athena-343/aergo.json"
When you run the test, you get an error because the aergoio / athena-343 that you use as a test framework is not installed. Now, let's install the package in github.
$ ship install aergoio/athena-343

實(shí)驗(yàn)部分

增量構(gòu)建

SHIP具有強(qiáng)大的構(gòu)建能力。此功能可檢測(cè)項(xiàng)目中文件的更改,并對(duì)其進(jìn)行自動(dòng)構(gòu)建和測(cè)試。

運(yùn)行該函數(shù)需要構(gòu)建命令的其他參數(shù)。

$ ship build –watch

如果運(yùn)行沒有問題,則可以看到以下結(jié)果。這個(gè)例子是我的第一個(gè)項(xiàng)目。

如果您更改了源,則可以看到實(shí)時(shí)反映的構(gòu)建和測(cè)試。

WebUI

此外,我們還提供一個(gè)Web服務(wù),允許瀏覽器訪問以下附加端口選項(xiàng)。

$ ship build --watch --port 8080

構(gòu)建結(jié)果

除了提供比終端所提供的更多細(xì)節(jié)之外,它還提供了額外的部署功能。此部署用于測(cè)試,因此它將轉(zhuǎn)到localhost上的端口7845。要使用此功能,服務(wù)器必須正在運(yùn)行,并且必須在PATH中設(shè)置aergoluac命令。

單元測(cè)試結(jié)果

您還可以查看每個(gè)構(gòu)建的測(cè)試結(jié)果,并且構(gòu)建記錄還保存有過(guò)去的五個(gè)測(cè)試結(jié)果。

當(dāng)您選擇Runner菜單時(shí),會(huì)出現(xiàn)一個(gè)屏幕,您可以在其中實(shí)際運(yùn)行已部署的功能。

結(jié)論

SHIP提供支持項(xiàng)目開發(fā)每個(gè)階段的功能,從設(shè)置到部署。它可以幫助開發(fā)人員從現(xiàn)有的編程方法中獲得結(jié)構(gòu)化編程,從而使開發(fā)智能合約的過(guò)程更加無(wú)縫和高效。雖然SHIP還沒有足夠的功能,并且開發(fā)的某些方面可能還不夠簡(jiǎn)便,但我們計(jì)劃與dApp開發(fā)人員合作,以確定有價(jià)值的東西,并在將來(lái)通過(guò)更好的功能實(shí)現(xiàn)這些價(jià)值。我們正在等待您的反饋!

如果您還不知道,我們最近推出了AERGO預(yù)測(cè)試網(wǎng),并發(fā)布了AERGO平臺(tái)的Alpha代碼庫(kù)。您可以隨意啟動(dòng)本地測(cè)試網(wǎng)絡(luò),貢獻(xiàn)代碼。

相關(guān)文章

最新評(píng)論