欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

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

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

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

1.Gateway

在進(jìn)行實(shí)踐前,有一個(gè)比較新的概念需要了解就是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實(shí)現(xiàn)合約交易

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

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

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

Fabric網(wǎng)絡(luò)結(jié)構(gòu) |節(jié)點(diǎn)類型 |節(jié)點(diǎn)名 |所屬組織|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ǔ)工程

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

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

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

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

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

4.1.2 channels

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

4.1.3 organizations

如何使用Fabric2.0 Java SDK實(shí)現(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實(shí)現(xiàn)合約交易

4.1.5 peer

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

4.1.6 certificateAuthorities

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

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

5. JAVA工程目錄說明

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

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

6. 實(shí)踐

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

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

          //使用org1中的user1初始化一個(gè)網(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);
             //放進(jìn)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 交易

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

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

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

然后調(diào)用addTen 進(jìn)行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é)點(diǎn),這里選擇了通道中背書權(quán)限節(jié)點(diǎn)集合

交易完成后再次進(jìn)行查詢

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

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

交易成功。

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

本文題目:如何使用Fabric2.0JavaSDK實(shí)現(xiàn)合約交易
地址分享:http://aaarwkj.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)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
国产欧美一区二区三区高清| 放荡精品少妇一区二区三区| 又黄又爽又刺激的性视频| 日韩成人手机视频在线观看| 国产精品水嫩水嫩粉嫩| 久久国产欧美日韩精品| 成人免费毛片1000部| 国产精品日本欧美一区二区| 91精品国产人妻女教师| 欧美高清一区二区在线观看| 国产黄色三级电影在线| 精品视频中文字幕天码| 日韩人妻精品在线一区二区 | 国产精品色呦呦一区二区| 日韩特级黄片在线免费观看| 97视频免费观看在线| 国产精品_国产精品_k频道| 亚洲激情人妻小说网| 老牛av一区二区三区| 欧美成人精品三级一二| 欧美性精品不卡在线观看| 欧美日韩免费爱爱视频| 亚洲高清成人综合网站| 日本中文字幕在线播放一区| 亚洲欧美一级二级三级| 97视频精品在线播放| 色哟哟网站之中文字幕| 男女视频午夜刺激一区二区 | 国产一区二区毛多内射| 日本一区二区中文字幕在线| 亚洲一区二区天堂av| 国产黄色三级电影在线| 亚洲国产精品一区性色| 男女做爰高清无遮挡免费| 国产欧美日韩经典一区| 国产日韩精品一区二区在线 | 国产v精品欧美精品v日韩| 欧美大片免费高清观看| 日本美女阴部毛茸茸视频| 亚洲一区欧美二区日韩三区| 男女真人啪啪视频免费|