成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何使用Fabric2.0JavaSDK實現(xiàn)合約交易

這篇文章主要為大家展示了“如何使用Fabric2.0 Java SDK實現(xiàn)合約交易”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何使用Fabric2.0 Java SDK實現(xiàn)合約交易”這篇文章吧。

創(chuàng)新互聯(lián)建站是一家專注于成都網(wǎng)站設(shè)計、成都網(wǎng)站制作與策劃設(shè)計,平原網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:平原等地區(qū)。平原做網(wǎng)站價格咨詢:18980820575

1.Gateway

在進行實踐前,有一個比較新的概念需要了解就是Gateway。 為了應(yīng)對由于Fabric網(wǎng)絡(luò)中的變化頻繁所造成的后果,F(xiàn)abric2.0 原本的SDK之上蓋了一層網(wǎng)關(guān)Gateway,用于減輕應(yīng)用程序的負(fù)擔(dān)。

具體拓?fù)浣Y(jié)構(gòu)如下: 如何使用Fabric2.0 Java SDK實現(xiàn)合約交易

MagnetoCorp和DigiBank應(yīng)用程序(發(fā)行和購買)將各自的網(wǎng)絡(luò)交互委托給其網(wǎng)關(guān)。每個網(wǎng)關(guān)都了解網(wǎng)絡(luò)通道拓?fù)?,其中包括兩個組織MagnetoCorp和DigiBank的多個peers和order,使應(yīng)用程序?qū)W⒂跇I(yè)務(wù)邏輯。節(jié)點間可以使用gossip協(xié)議在組織內(nèi)部和組織之間相互共識交互。

2.環(huán)境準(zhǔn)備

系統(tǒng)工具版本備注
Window10
Fabric2.0已部署好mychannel通道以及mycc合約到兩個組織節(jié)點
Java1.8
Maven3.5.2

Fabric網(wǎng)絡(luò)結(jié)構(gòu) |節(jié)點類型 |節(jié)點名 |所屬組織|ip |服務(wù)端口 |--|--|--|--|--| | orderer| orderer.example.com|-|192.168.2.104|7050 | peer | peer0.org1.example.com |org1|192.168.2.104|7051 | peer | peer1.org1.example.com |org1|192.168.2.104|8051 | peer | peer0.org2.example.com |org2|192.168.2.104|9051 | peer | peer1org2.example.com|org2|192.168.2.104|10051 | ca | ca1.org1.example.com|org1|192.168.2.104|7054 | ca | ca2.org1.example.com|org2|192.168.2.104|8054

3.創(chuàng)建基礎(chǔ)工程

新建一個Maven工程,添加以下依賴:

<dependency>
  <groupId>org.hyperledger.fabric</groupId>
  <artifactId>fabric-gateway-java</artifactId>
  <version>2.0.0</version>
</dependency>

4.創(chuàng)建connectionProfile

connectionProfile用于創(chuàng)建一個連接網(wǎng)絡(luò)對象,如果有跑過first-network的朋友,相比記得一個ccp.sh的命令,生成的connection-org1.json、connection-org1.yaml這種文件,其實這些就是我們所需要的connectionProfile,可以直接使用。當(dāng)然也可以自行編寫,自行編寫請參考官方模板

4.1 配置文件結(jié)構(gòu)說明

整體connectionProfile結(jié)構(gòu)如下 如何使用Fabric2.0 Java SDK實現(xiàn)合約交易 包含對象說明:

參數(shù)名描述
name自定義網(wǎng)絡(luò)名稱
version自定義網(wǎng)絡(luò)版本
client客戶端相關(guān)信息
channels網(wǎng)絡(luò)所包含的通道信息
organizations網(wǎng)絡(luò)中組織信息
orderers排序節(jié)點信息
peerpee節(jié)點信息
certificateAuthoritiesca節(jié)點信息
4.1.1 client

如何使用Fabric2.0 Java SDK實現(xiàn)合約交易

4.1.2 channels

如何使用Fabric2.0 Java SDK實現(xiàn)合約交易 其中節(jié)點對象有4中角色定義 |角色 |描述| |--|--| |endorsingPeer| 具有背書權(quán)限節(jié)點 |chaincodeQuery| 具有合約查詢權(quán)限節(jié)點 |ledgerQuery|具有賬本查詢權(quán)限節(jié)點 |eventSource| event hub節(jié)點

4.1.3 organizations

如何使用Fabric2.0 Java SDK實現(xiàn)合約交易

其中admin私鑰與admin簽名證書支持路徑與文件內(nèi)容,路徑使用參數(shù)path,對應(yīng)值填寫路徑,文件內(nèi)容使用參數(shù)pem,對應(yīng)值填寫私鑰或者證書內(nèi)容。

4.1.4 orderers

如何使用Fabric2.0 Java SDK實現(xiàn)合約交易

4.1.5 peer

與排序節(jié)點類似,如果是tls必須配置tlsCACerts 如何使用Fabric2.0 Java SDK實現(xiàn)合約交易

4.1.6 certificateAuthorities

與排序節(jié)點類似,如果是tls必須配置tlsCACerts

如何使用Fabric2.0 Java SDK實現(xiàn)合約交易

5. JAVA工程目錄說明

新建的工程目錄如下 如何使用Fabric2.0 Java SDK實現(xiàn)合約交易

src/main/java : 存放demo主程序類
src/main/resources/connection.json : 上面新建好的connectionProfile
src/main/resources/crypto-config: 存放fabric網(wǎng)絡(luò)證書內(nèi)容(選擇用到的就行)

6. 實踐

6.1 創(chuàng)建網(wǎng)關(guān)賬戶

網(wǎng)關(guān)賬戶就是相當(dāng)于連接fabric網(wǎng)絡(luò)的fabric用戶對象。

          //使用org1中的user1初始化一個網(wǎng)關(guān)wallet賬戶用于連接網(wǎng)絡(luò)
            Wallet wallet = Wallets.newInMemoryWallet();
            Path certificatePath = credentialPath.resolve(Paths.get("signcerts", "User1@org1.example.com-cert.pem"));
            certificate = readX509Certificate(certificatePath);

            Path privateKeyPath = credentialPath.resolve(Paths.get("keystore", "priv_sk"));
            privateKey = getPrivateKey(privateKeyPath);
             //放進wallet
            wallet.put("user",Identities.newX509Identity("Org1MSP",certificate,privateKey));

賬戶對象都可以存放到wallet里面,方便存取。 證書對象使用的是org1的user私鑰,證書。

6.2 創(chuàng)建網(wǎng)關(guān)

通過connectionProfile以及網(wǎng)關(guān)賬戶創(chuàng)建網(wǎng)關(guān)

 			//根據(jù)connection-org1.json 獲取Fabric網(wǎng)絡(luò)連接對象
            GatewayImpl.Builder builder = (GatewayImpl.Builder) Gateway.createBuilder();

            builder.identity(wallet, "user").networkConfig(NETWORK_CONFIG_PATH);

NETWORK_CONFIG_PATH : connectionProfile文件路徑

6.3 連接網(wǎng)關(guān)

           //連接網(wǎng)關(guān)
            gateway = builder.connect();
            //獲取mychannel通道
            Network network = gateway.getNetwork("mychannel");
            //獲取合約對象
            Contract contract = network.getContract("mycc");

網(wǎng)關(guān)連接后 getNetwork:可以根據(jù)通道名稱獲取Fabric具體通道網(wǎng)絡(luò) network.getContract:可以根據(jù)合約名稱獲取部署到對應(yīng)通道的智能合約對象

6.4 交易

基于上一部分的智能合約,有一個addTen的交易,結(jié)果是對象加10

首先我們對合約對象a當(dāng)前的值進行查詢

      //查詢合約對象evaluateTransaction
            byte[] queryAResultBefore = contract.evaluateTransaction("query","a");
            System.out.println("交易前:"+new String(queryAResultBefore, StandardCharsets.UTF_8));

然后調(diào)用addTen 進行a+10

 // 創(chuàng)建并且提交交易
            byte[] invokeResult = contract.createTransaction("addTen")
                    .setEndorsingPeers(network.getChannel().getPeers(EnumSet.of(Peer.PeerRole.ENDORSING_PEER)))
                    .submit("a");
            System.out.println(new String(invokeResult, StandardCharsets.UTF_8));

此處setEndorsingPeers 設(shè)置背書節(jié)點,這里選擇了通道中背書權(quán)限節(jié)點集合

交易完成后再次進行查詢

  //查詢合約對象evaluateTransaction
            byte[] queryAResultAfter = contract.evaluateTransaction("query","a");
            System.out.println("交易后:"+new String(queryAResultAfter, StandardCharsets.UTF_8));

最后控制臺輸出: 如何使用Fabric2.0 Java SDK實現(xiàn)合約交易

交易成功。

以上是“如何使用Fabric2.0 Java SDK實現(xiàn)合約交易”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

本文題目:如何使用Fabric2.0JavaSDK實現(xiàn)合約交易
地址分享:http://jinyejixie.com/article8/jjhiip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)定制網(wǎng)站、商城網(wǎng)站網(wǎng)站排名、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
阆中市| 天台县| 瓮安县| 犍为县| 万安县| 闻喜县| 荣成市| 房山区| 长兴县| 林芝县| 天津市| 屏东市| 蓬莱市| 来安县| 青田县| 绥中县| 乡宁县| 望奎县| 金寨县| 闸北区| 嘉峪关市| 和田市| 拉萨市| 平顺县| 拉萨市| 南江县| 弋阳县| 新河县| 增城市| 科技| 大关县| 当阳市| 仲巴县| 绥棱县| 卓尼县| 广宗县| 平原县| 茂名市| 鲜城| 军事| 黑山县|