簡體   English   中英

查詢 Contract JAVA API Hyperledger Fabric

[英]Query on Contract JAVA API Hyperledger Fabric

我正在分析 Hyperledger Fabric 中的 Fabcar Java 項目。 以下是項目中的依賴項。 來自 pom.xml 的片段

 <dependencies>
      <dependency>
         <groupId>org.hyperledger.fabric</groupId>
         <artifactId>fabric-gateway-java</artifactId>
         <version>2.1.1</version>
      </dependency>
      <dependency>
         <groupId>org.junit.platform</groupId>
         <artifactId>junit-platform-launcher</artifactId>
         <version>1.4.2</version>
      </dependency>
      <dependency>
         <groupId>org.junit.jupiter</groupId>
         <artifactId>junit-jupiter-engine</artifactId>
         <version>5.4.1</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.junit.vintage</groupId>
         <artifactId>junit-vintage-engine</artifactId>
         <version>5.4.2</version>
      </dependency>
      <dependency>
         <groupId>org.assertj</groupId>
         <artifactId>assertj-core</artifactId>
         <version>3.12.2</version>
         <scope>test</scope>
      </dependency>

我能夠在其中運行程序。 喜歡

EnrollAdmin.main(null);
RegisterUser.main(null);
ClientApp.main(null);

然后我想從頭開始編寫自己的智能合約。所以開始研究/分析並偶然發現了Hyperledger Foundation 的視頻

在這個視頻中,演示者說每個智能合約都必須從 Contract 類擴展。 合同類包含類似的方法

beforeTransaction()
afterTransaction()
 createContext()

ETC

所以我在我的 Java 工作區中搜索了 Contract 類,發現其中存在不同的方法。

Transaction createTransaction(String name);
submitTransaction(String name, String... args) 
evaluateTransaction(String name, String... args)

所以我的問題

  1. 合同類是否已升級,我正在觀看舊教程或者我指的是舊 API?

  2. 我還發現,有一個依賴 fabric-chaincode-shim 2.2.4 API,其中包含與視頻教程匹配的方法。

    包:org.hyperledger.fabric.contract

    接口:合約接口

我是否必須導入此依賴項或我現有的合約接口(org.hyperledger.fabric.gateway.Contract)才能編寫新的智能合約?

為 Fabric 編寫應用程序有兩個編碼方面。 一種是智能合約(也稱為鏈碼)。 另一個是客戶端應用程序,它將發送交易請求,導致智能合約中的功能被執行。

首先使用 SmartContract,它將擴展 Contract 接口,然后您將編寫各種交易函數(例如 createAsset)。

要“運行”這些事務功能,客戶端應用程序需要調用提交或評估事務。 只有提交交易功能才會對賬本進行更改。 因此,評估實際上只是一個查詢。

總之,您需要使用兩種 API - 一種用於合約,一種用於客戶端應用程序。

createContext()、beforeTransaction() 和 afterTransaction() 方法是 Hyperledger Fabric contractapi的一部分。 這些方法可用於鏈代碼。 createTransaction​()、submitTransaction() 和 evaluateTransaction() 是應用程序網關的一部分。 應用程序網關包用於與 Fabric 網絡進行交互。 您可以使用應用程序網關調用/查詢鏈代碼。 兩者的樣品都可以在fabric-samples 中找到。 更多信息請參考官方文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM