亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java為Hyperledger Fabric開發區塊鏈鏈代碼智能合約之環境如何部署

發布時間:2021-12-07 09:29:15 來源:億速云 閱讀:250 作者:小新 欄目:互聯網科技

這篇文章主要為大家展示了“Java為Hyperledger Fabric開發區塊鏈鏈代碼智能合約之環境如何部署”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Java為Hyperledger Fabric開發區塊鏈鏈代碼智能合約之環境如何部署”這篇文章吧。

區塊鏈基礎

盡管關于區塊鏈存在大量炒作,但它確實物有所值。該技術不僅本身很有趣,而且它是顛覆性的,有潛力徹底變革互聯網上的業務執行方式。

如何變革?讓我們來想想一次成功的業務交易的基本屬性:

  • 信任:我們達成了協議,但我能夠真的相信您會遵守它(或尊重我)嗎?

  • 透明性:允許查看 “幕后情況”(這既能建立信任,又能減少對信任的需求)。

  • 責任性:用來定義確定所有各方是否都認為該協議得以遵守的條件。 兩方或多方之間的任何業務關系的健康程度對應于上述 3 種屬性的不同級別(例如,更信任意味著需要的透明度更少,反之亦然),但其中一些屬性必須存在,否則就會出現問題。

“區塊鏈技術正被快速應用到您身邊的軟件開發項目中。您準備好了嗎?”

區塊鏈有何幫助?首先,通過使用通用框架,業務合作伙伴可以提前建立一個信任網絡。然后,通過使用對所有交易方可見的賬本,區塊鏈提供了透明性。最后,通過采用所有各方的一致意見(使用智能合約或鏈代碼的形式),建立了責任制。

這對 Java 開發人員有何意義?

Hyperledger 社區和 Hyperledger Fabric 的快速發展,意味著區塊鏈技術正快速被應用到您身邊的軟件開發項目中。您準備好了嗎?

區塊鏈技術發展形勢

有時,開發技術可能會妨礙業務問題的解決。本教程的主要目的是展示如何編寫 Java 鏈代碼,所以我選擇了最簡單的開發技術組合來實現此目的。

也就是說,該組合中的組件還有其他選擇。在本教程中,我將使用 Docker 作為網絡容器環境,而另一個選擇是帶 VirtualBox 的 Vagrant。如果從未使用過 Vagrant,您至少應該嘗試一下。

Docker 是一個容器環境,而 Vagrant 使用了虛擬化。在與 VirtualBox 結合使用時,虛擬化環境對計算環境進行了不同程度的控制,這一點備受一些開發人員的青睞(使其成為 fabric 開發人員的理想選擇)。

如果想進一步了解容器化與虛擬化孰優孰劣,請參閱 developerWorks 博客上的 “Docker 是什么?容器對應用程序有哪些好處的簡介”。

如果開發人員只想編寫代碼,而不必擔心容器、虛擬化或任何基礎架構,那么可以選擇 IBM? Bluemix?。盡管 Bluemix 支持運行完整的 IBM 區塊鏈網絡,但它目前還不支持使用 Java 語言開發鏈代碼。預計此情況很快就會發生變化,所以請時刻關注。

如果在您的印象中,區塊鏈技術當時的發展情況非常不穩定,您是對的。但是,這意味著您在恰當的時機(從一開始)就開始接觸區塊鏈和鏈代碼。隨著該技術發展成熟,您早期階段學習該技術的投資將會不斷得到豐厚的回報。

區塊鏈是能夠徹底改變每個人的業務執行方式的顛覆式技術之一。這類技術不僅包括 B2B,還包括 B2C,甚至還有 C2C。這的確是一個非常激動人心的時刻。

讓我們開始吧!

設置開發環境

要運行鏈代碼,首先需要設置開發環境。

完成本節后,您就可以運行一個 Hyperledger Java 鏈代碼示例了,在該示例中,您將在真實鏈代碼上部署和調用交易。然后,我將展示如何(幾乎)從頭編寫一個新鏈代碼程序。

在本節中,您將:

  • 設置網絡環境 — 用于運行您的本地區塊鏈網絡。

  • 安裝構建軟件 — 用于構建您的鏈代碼。

  • 安裝一個 HTTP 客戶端 — 用于在您的鏈代碼上調用交易。

  • 啟動區塊鏈網絡。

  • 構建 Java shim 客戶端 JAR。

實話說,要編寫鏈代碼,有許多設置工作要做。但是,如果您按照這些說明進行操作并稍微勤奮一點,您的付出將是值得的。

1.設置網絡環境

本教程將使用 Docker 以及來自 Docker Hub 的預構建區塊鏈網絡組件鏡像來運行本地區塊鏈網絡。如果愿意的話,可以從頭構建 fabric(畢竟它是開源的),但在此階段,使用 Docker Hub 中提供的預構建的 Hyperledger Fabric 鏡像更容易一些。

我在介紹中已經提到過,另一個選擇(您可能在 Hyperledger 文檔中看到過)是使用 Vagrant 和 VirtualBox。Vagrant 是 fabric 開發人員的一個不錯選擇,但作為鏈代碼開發人員,與處理 fabric 本身相比,我們更關心鏈代碼的構建、運行和測試。

如果已經安裝 Docker 1.12 版或更高版本,可以跳到下一節(“安裝構建軟件”)。在下面的操作說明中,假設您尚未安裝 Docker(也就是說,您不是從以前的 Docker 版本進行升級)。安裝 Docker 的過程中也會安裝 Docker Compose,該工具用于定義和運行需要多個容器的應用程序,比如本教程中將運行的本地 Hyperledger 區塊鏈網絡。

安裝 Docker 可在這里找到針對 Mac、Windows 和 Linux 的安裝說明:

將 Docker 安裝在 Mac、Windows 和 Linux 上

驗證 Docker 安裝 要測試 Docker 安裝,可打開一個終端窗口(或 Windows 上的命令提示符)并鍵入以下命令:

docker -v
docker-compose -v

您會獲得以下輸出:

$ docker -v
Docker version 1.13.1, build 092cba3
$ docker-compose -v
docker-compose version 1.11.1, build 7c5d5e4

如果想查看 Docker 的實際運行效果,您可運行 hello-world 鏡像,如下所示:

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
78445dd45222: Pull complete 
Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Status: Downloaded newer image for hello-world:latest
 

Hello from Docker! This message shows that your installation appears to be working correctly.

 
To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.
 
To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash
 
Share images, automate workflows, and more with a free Docker ID:
 https://cloud.docker.com/
 
For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/
2.安裝構建軟件

對于構建系統,Hyperledger Fabric 使用了 Gradle,本教程也將使用它。Gradle 是一個構建自動化系統,它結合使用了指定構建組件的簡單語法與 Apache Ant 和 Apache Maven 的最佳特性,創建了一個容易使用的強大構建系統。如此多開發人員正將他們的項目切換到 Gradle,這不足為奇。請注意,本文使用的是 Gradle 3.3 版本。使用其他版本的 Gradle 可能會導致項目搭建失敗。

可以在 Gradle 主頁 上進一步了解 Gradle(和它的一些知名度高的用戶)。

安裝 Gradle 要安裝 Gradle,請按照下面的說明進行操作:

將 Gradle 安裝在 Mac、Windows 和 Linux 上

驗證 Gradle 安裝 要驗證 Gradle 安裝,可打開一個終端窗口并執行此命令:

gradle -v

您會看到以下輸出:

$ gradle -v
 
------------------------------------------------------------
Gradle 3.3
------------------------------------------------------------
 
Build time:   2017-01-03 15:31:04 UTC
Revision:     075893a3d0798c0c1f322899b41ceca82e4e134b
 
Groovy:       2.4.7
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_102 (Oracle Corporation 25.102-b14)
OS:           Mac OS X 10.12.3 x86_64

####3.安裝 HTTP 客戶端

接下來安裝 HTTP 客戶端軟件,它允許鏈代碼與 Hyperledger 區塊鏈結構的 REST 接口進行通信。您的瀏覽器可以發出 HTTP GET,但要與 fabric 進行交互,您需要能夠通過 POST 發出消息。這意味著您需要一個 HTTP 客戶端。

我為本教程選擇的 HTTP 客戶端是 SoapUI,它提供了一個強大的、容易使用的、包含許多功能的免費社區版本。

安裝 SoapUI 要安裝 SoapUI,請按照下面的說明進行操作:

為 Mac OS、Windows 和 Linux 安裝 SoapUI

驗證 SoapUI 安裝 要確認 SoapUI 已安裝,可在計算機上啟動該應用程序。在 Mac OS 上,打開 SoapUI 后會顯示 SoapUI Starter Page,如圖 1 所示。

Mac OS X 上的 SoapUI Java為Hyperledger Fabric開發區塊鏈鏈代碼智能合約之環境如何部署

4.啟動區塊鏈網絡

現在您已安裝開發和測試鏈代碼所需的軟件,是時候啟動本地區塊鏈網絡了。第一步是定義網絡的配置。

首先,創建一個目錄,用它作為鏈代碼開發過程中使用的所有源代碼的 root 目錄。在本教程中,我將使用 ~/home/mychaincode(或 Windows 上的 C:\home\chaincode)。

接下來,將 GOPATH 環境變量設置為此路徑。我們不會編譯任何 Go 代碼,也不會構建 Golang 包或其他二進制文件,但 Golang 術語已融合到 Hyperledger 中,所以熟悉按 Go 語言和 GOPATH 的方式進行思考是一個不錯的主意。

在 Linux 上,執行以下命令:

export GOPATH=~/home/mychaincode

或者在 Windows 上,可以使用以下命令:

SET GOPATH=C:\home\mychaincode

接下來,必須告訴 Docker Compose 如何創建和運行區塊鏈對等網絡。該網絡是使用 YAML 定義的,應該將它命名為 docker-compose.yml。可以將文件命名為其他名稱,但在啟動 Docker Compose 時,必須指定 -f 標志。建議堅持使用默認名稱,也就是 docker-compose.yml。

在 GOPATH 的 root 目錄中創建 docker-compose.yml 文件。粘貼以下內容:

membersrvc:
  image: hyperledger/fabric-membersrvc
  ports:
    - "7054:7054"
  command: membersrvc
vp0:
  image: hyperledger/fabric-peer:x86_64-0.6.0-preview
  ports:
    - "7050:7050"
    - "7051:7051"
    - "7053:7053"
  environment:
    - CORE_PEER_ADDRESSAUTODETECT=true
    - CORE_VM_ENDPOINT=unix:///var/run/docker.sock
    - CORE_LOGGING_LEVEL=DEBUG
    - CORE_PEER_ID=vp0
    - CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
    - CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
    - CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
    - CORE_SECURITY_ENABLED=false
    - CORE_SECURITY_ENROLLID=test_vp0
    - CORE_SECURITY_ENROLLSECRET=MwYpmSRjupbT
  links:
    - membersrvc
  command: sh -c "sleep 5; peer node start --peer-chaincodedev"

這里涉及許多內容,其中大部分內容都不屬于本教程的討論范圍,但我想稍微解釋一下。

  • 此文件告訴 Docker Compose 定義兩個服務:

    • membersrvc:提供成員服務的成員服務節點,具體來講,它是一個證書簽發機構 (CA),負責處理所有加密解密工作(比如頒發和撤銷證書)。將用于此目的的預構建 Docker 鏡像命名為 hyperledger/fabric-membersrvc。

    • vp0:網絡中的單獨驗證對等節點。對于開發目的,我們不需要奢侈地執行對等網絡驗證,只需要一個對等節點即可。將用于此目的的預構建 Docker 鏡像命名為 hyperledger/fabric-peer: x86_64-0.6.0-preview。請注意,由于 Fabric 版本升級,如果省略掉冒號及之后的字符,會導致構建錯誤。此處指定使用 Fabric 0.6 版本。hyperledger/fabric-peer 等同于 hyperledger/fabric-peer:latest。

  • 一些環境變量由 vp0 對等節點設置。請注意,CORE_LOGGING_LEVEL 變量被設置為 DEBUG。這會生成大量輸出,這些輸出有時很方便。但是,如果想要更少的輸出,可將該級別更改為 INFO。請參閱 Hyperledger 設置文檔中的 “日志控制” 了解日志級別的更多信息。 可以在 Docker 網站 上找到有關 Docker Compose YML 文件定義的更多信息。

接下來請注意,CORE_SECURITY_ENABLED 的值為 false。這意味著 fabric 不需要您發送任何類型的最終用戶憑證。安全性不屬于本教程的討論范圍,但是如果您有興趣了解更多信息,可以根據您的鏈代碼請求來查閱這篇安全功能說明。

最后提醒一句:對任何這些值的默認設置(尤其是端口值)的任何改動都有可能導致本教程中的示例無法運行。區塊鏈網絡是一組分布式軟件組件,它們需要經過精確協調的通信。強烈建議在理解 fabric 的所有組件如何相互作用之前,不要更改端口值的默認值。

完成區塊鏈的定義后,就可以啟動本地區塊鏈網絡了。為此,請運行 Docker Compose。導航到您的 $GOPATH 并執行此命令:

docker-compose up

您會在終端窗口中獲得以下輸出:

$ docker-compose up
.
.
Pulling membersrvc (hyperledger/fabric-membersrvc:latest)...
latest: Pulling from hyperledger/fabric-membersrvc
.
.
Status: Downloaded newer image for hyperledger/fabric-membersrvc:latest
Pulling vp0 (hyperledger/fabric-peer:latest)...
latest: Pulling from hyperledger/fabric-peer
.
.
Status: Downloaded newer image for hyperledger/fabric-peer:latest
Creating mychaincode_membersrvc_1
Creating mychaincode_vp0_1
Attaching to mychaincode_membersrvc_1, mychaincode_vp0_1
vp0_1         | 19:30:03.773 [logging] LoggingInit -> DEBU 001 Setting default logging level to DEBUG for command 'node'
vp0_1         | 19:30:03.773 [nodeCmd] serve -> INFO 002 Running in chaincode development mode
.
.
.
vp0_1         | 19:30:04.146 [peer] chatWithSomePeers -> DEBU 07c Starting up the first peer of a new network
vp0_1         | 19:30:04.146 [consensus/statetransfer] verifyAndRecoverBlockchain -> DEBU 07d Validating existing blockchain, highest validated block is 0, valid through 0
vp0_1         | 19:30:04.146 [consensus/statetransfer] blockThread -> INFO 07e Validated blockchain to the genesis block
vp0_1         | 19:30:04.146 [consensus/handler] 1 -> DEBU 07f Starting up message thread for consenter
vp0_1         | 19:30:04.146 [nodeCmd] serve -> INFO 080 Starting peer with ID=name:"vp0" , network ID=dev, address=172.17.0.3:7051, rootnodes=, validator=true
vp0_1         | 19:30:04.146 [rest] StartOpenchainRESTServer -> INFO 081 Initializing the REST service on 0.0.0.0:7050, TLS is disabled.
vp0_1         | 19:30:04.147 [peer] ensureConnected -> DEBU 082 Starting Peer reconnect service (touch service), with period = 6s
.
.

此輸出告訴您該網絡在正常運行,已準備好接受鏈代碼注冊請求。

備注:突出顯示的行應該僅在第一次運行區塊鏈網絡時出現,因為 Docker 需要從 Docker Hub 下載鏡像。鏡像下載到計算機后,僅在來自 Docker Hub 的鏡像比您計算機上的鏡像更新時,Docker 才會拉入它們。

現在已準備好構建 Java shim 客戶端 JAR,它允許 Java 語言鏈代碼與 Hyperledger Fabric 框架進行通信。

5.構建 Java shim 客戶端 JAR

在運行鏈代碼示例前,需要從 Hyperledger 的 GitHub 存儲庫獲取最新的源代碼。

首先,需要將 Hyperledger Fabric 克隆到本地機器上,以便構建鏈代碼(備注:這是一項臨時措施;在以后某個時刻,應該能從主要的 Maven 存儲庫訪問 Java shim 客戶端 JAR)。

備注:回想一下,您之前已將 GOPATH 設置為 Linux(或 Mac)上的 ~/home/mychaincode 或 Windows 上的 C:\home\mychaincode。

執行此命令來創建結構構建腳本所期望的目錄結構:

mkdir -p $GOPATH/src/github.com/hyperledger

接下來,導航到已創建的新目錄結構的底部:

cd $GOPATH/src/github.com/hyperledger

您需要從這里獲取 Hyperledger 源代碼,以便構建 Java shim 客戶端 JAR。

可通過兩種方式獲得 Hyperledger 源代碼。

  • 不使用 git: 導航到 Hyperledger GitHub 鏡像,選擇v0.6分支,并單擊 Clone or download 按鈕,然后單擊 Download ZIP(參見圖 2)。一個名為 fabric-master.zip 的 ZIP 文件被下載到您的計算機,您可以將它解壓到 $GOPATH/src/github.com/hyperledger。備注:請確保在解壓該文件時,將 root 目錄的名稱從 fabric-master 更改為 fabric。

  • 使用 git: 導航到 $GOPATH/src/github.com/hyperledger,將文本字段中的 URL 復制到 “Clone with HTTPS” 框中(參見圖 2 中的箭頭),然后使用復制的 URL 執行此命令:

git clone https://github.com/hyperledger/fabric.git

git clone –b v0.6 
https://gerrit.hyperledger.org/r/fabric

您會看到 git 命令返回了以下終端窗口輸出:

$ git clone https://github.com/hyperledger/fabric.git
Cloning into 'fabric'...
remote: Counting objects: 26976, done.
remote: Compressing objects: 100% (406/406), done.
remote: Total 26976 (delta 172), reused 0 (delta 0), pack-reused 26558
Receiving objects: 100% (26976/26976), 43.68 MiB | 4.85 MiB/s, done.
Resolving deltas: 100% (15114/15114), done.

Java為Hyperledger Fabric開發區塊鏈鏈代碼智能合約之環境如何部署

現在您已準備好構建 Java 鏈代碼 shim 客戶端 JAR。導航到 $GOPATH/src/github.com/hyperledger/fabric/core/chaincode/shim/java 并運行以下兩個命令:

gradle -b build.gradle clean
gradle -b build.gradle build

Gradle 構建輸出應如下所示:

$ cd $GOPATH/src/github.com/hyperledger/fabric/core/chaincode/shim/java
$ gradle -b build.gradle clean
Starting a Gradle Daemon (subsequent builds will be faster)
:core:chaincode:shim:java:clean
 
BUILD SUCCESSFUL
 
Total time: 5.422 secs
$ gradle -b build.gradle build
:core:chaincode:shim:java:copyProtos UP-TO-DATE
:core:chaincode:shim:java:extractIncludeProto
:core:chaincode:shim:java:extractProto UP-TO-DATE
:core:chaincode:shim:java:generateProto UP-TO-DATE
:core:chaincode:shim:java:compileJava
:core:chaincode:shim:java:processResources
:core:chaincode:shim:java:classes
:core:chaincode:shim:java:jar
:core:chaincode:shim:java:assemble
:core:chaincode:shim:java:extractIncludeTestProto
:core:chaincode:shim:java:extractTestProto UP-TO-DATE
:core:chaincode:shim:java:generateTestProto UP-TO-DATE
:core:chaincode:shim:java:compileTestJava UP-TO-DATE
:core:chaincode:shim:java:processTestResources UP-TO-DATE
:core:chaincode:shim:java:testClasses UP-TO-DATE
:core:chaincode:shim:java:test UP-TO-DATE
:core:chaincode:shim:java:check UP-TO-DATE
:core:chaincode:shim:java:build
:core:chaincode:shim:java:copyToLib
:core:chaincode:shim:java:generatePomFileForMavenJavaPublication
:core:chaincode:shim:java:publishMavenJavaPublicationToMavenLocal
:core:chaincode:shim:java:publishToMavenLocal
 
BUILD SUCCESSFUL
 
Total time: 4.521 secs

構建過程中執行的最后一件事是,將 shim 客戶端 JAR 添加到本地 Maven 存儲庫。現在您已準備好構建鏈代碼。除非在未來某個時刻要更新結構源代碼,或者出于某種原因想要再次重新構建 shim 客戶端 JAR,否則不需要再次運行 Java shim 客戶端 JAR。

以上是“Java為Hyperledger Fabric開發區塊鏈鏈代碼智能合約之環境如何部署”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

翁牛特旗| 永和县| 华容县| 汝城县| 江油市| 乐业县| 南阳市| 四会市| 衡东县| 宣武区| 民县| 武功县| 新干县| 卓尼县| 大连市| 庄浪县| 临西县| 扶余县| 静乐县| 高邮市| 栾川县| 丘北县| 南岸区| 错那县| 平凉市| 汾阳市| 青龙| 都兰县| 巴塘县| 高州市| 兴国县| 桃江县| 太原市| 清涧县| 始兴县| 多伦县| 汨罗市| 白城市| 甘泉县| 仙游县| 宜宾市|