拼團眾籌模式技術系統開發詳情
設定Identity 用到的方法原型如下: Gateway.Builder identity(Identity identity) 設定Identity其實就是向Gateway中匯入賬戶的身份證書。傳參型別 Identity 也是一個介面,該介面在Gateway實現中被X509Identity這個類所實現。我們需要構造並傳進去的,也是這個X509Identity。這個類的構造方法比較簡單,需要指定賬戶所屬組織的mspID,以及X509Certificate private static Identity newIdentity() throws IOException, CertificatException { // certPath為證書路徑 var certReader = Files.newBufferedReader(certPath); // 建立 X509Certificate var certificate = Identities.readX509Certificate(certReader); return new X509Identity(mspID, certificate); } 1 2 3 4 5 6 7 8 這裡建立X509Certificate用到的,是Identities類中的方法,注意區分 Identity介面 和 Identities類。Identities類並沒有實現 Identity介面,也沒有自己的屬性,而是實現了一些方便進行證書、金鑰讀寫的靜態方法。 2.2.2 設定Signer 用到的方法原型如下: Gateway.Builder signer(Signer signer) 設定Signer其實就是向Gateway中匯入賬戶與證書相匹配的私鑰。 只要熟悉了上面 Identity 的套路,Signer以及之後的其他設定都是類似的。傳參型別中的Signer是一個介面,它只宣告瞭一個方法,byte sign(byte[] digest)即對訊息摘要進行簽名。這個介面被ECPrivateKeySigner 類實現,整個Gateway實現中,實際負責簽名的,便是這個ECPrivateKeySigner 類的例項。 2.2.3 設定gRPC Channel 還記得2.1中我們建立的 gRPC Channel 嗎?這裡導進來就行,函式原型如下: Gateway.Builder connection(Channel grpcChannel) 1 2.2.4 設定gRPC任務超時時間 這一步是可選的,目的是為了設定各項任務的超時時間。這其中常用方法的函式原型如下: default Gateway.Builder evaluateOptions(CallOption... options); default Gateway.Builder endorseOptions(CallOption... options); default Gateway.Builder submitOptions(CallOption... options); default Gateway.Builder commitStatusOptions(CallOption... options); 1 2 3 4 他們各自的作用在後面 3. 鏈碼的執行與提交 部分會提到,我們先只需要知道他們各自設定了一項任務的超時時間。 這裡我們先看看傳入引數型別 CallOption 類,這個也是Gateway實現中獨有的類,目的是設定gRPC執行時的行為,目前主要用來設定超時。我們可以透過 CallOption 類中的 public static CallOption deadlineAfter(long duration, TimeUnit unit) 方法來構建一個超時設定物件,並透過上面介面中宣告的超時方法,將超時設定物件與特定的任務繫結到一起。例如,指定背書超時時間為5分鐘可以這麼寫: // builder是透過Gateway建立的一個GatewayImpl例項 builder.endorseOptions(CallOption.deadlineAfter(5, TimeUnit.SECONDS)) 1 2 現在我們已經完成了對Gateway屬性的設定。 其實從原始碼來看,我們在呼叫connect()方法之前,從始至終操作的就是同一個Builder物件,呼叫上面的設定方法,實際上是呼叫中GatewayImpl中Builder內建類的方法,以完成對該Builder物件中各個屬性的設定。 可以拿connection方法舉個例子: // Builder為GatewayImpl的內建類 public static final class Builder implements Gateway.Builder { private static final Signer UNDEFINED_SIGNER = (digest) -> { throw new UnsupportedOperationException("No signing implementation supplied"); }; private Channel grpcChannel; private Identity identity; private Signer signer; private Function<byte[], byte[]> hash; private final DefaultCallOptions.Builder optionsBuilder; public Builder() { this.signer = UNDEFINED_SIGNER; this.hash = Hash::sha256; this.optionsBuilder = DefaultCallOptions.newBuiler(); } //注意看這裡,其實設定的是Builder類中的屬性,並沒有對外面的GatewayImpl物件的靜態屬性產生影響 public Builder connection(Channel grpcChannel) { Objects.requireNonNull(grpcChannel, "connection"); this.grpcChannel = grpcChannel; return this; } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 每一次設定方法的呼叫,對於GatewayImpl物件的靜態屬性都沒有造成實質更改(其實GatewayImpl沒有什麼靜態屬性哈哈哈)。當所有的設定配置完畢,可以透過呼叫connect方法應用上面的配置。我們看一下Builder類中 connect方法的實現: public GatewayImpl connect() { return new GatewayImpl(this); } 1 2 3 connect()方法其實就是呼叫GatewayImpl類的有參構造方法,將Builder物件傳入,以將其中的屬性,配置到新建立的GatewayImpl物件中,並將這個物件返回。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70010128/viewspace-2937348/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 拼團眾籌開發詳情版丨拼團眾籌系統開發(開發案例及原始碼)原始碼
- 拼團眾籌商城開發運營版丨拼團眾籌商城系統開發(詳情及案例原始碼)原始碼
- 拼團+眾籌系統開發丨拼團+眾籌開發原始碼案例原始碼
- 泰山眾籌模式dapp系統開發技術詳解模式APP
- 迪斯克質押眾籌模式系統開發詳情模式
- 迪斯克Disrupt DEX眾籌質押模式系統開發詳情丨技術框架搭建模式框架
- Sun(泰山眾籌)系統開發|眾籌DAPP開發搭建技術APP
- 區塊鏈眾籌互助商城dapp系統開發合約技術詳情區塊鏈APP
- 泰山眾籌4.0商城開發詳情丨泰山眾籌4.0商城系統開發實現技術案例及原始碼原始碼
- 泰山眾籌系統丨及泰山眾籌系統開發原始碼部署(技術開發流程)泰山眾籌原始碼
- 拼團系統開發技術方案
- Avatar阿凡達(泰山眾籌)系統開發技術詳情及方案原始碼原始碼
- Python技術原理/泰山眾籌開發解析/泰山眾籌Dapp矩陣系統開發技術PythonAPP矩陣
- Avatar阿凡達泰山眾籌開發|眾籌系統DAPP開發技術APP
- Avatar泰山眾籌系統開發搭建詳情邏輯
- 關於泰山眾籌4.0/阿凡達眾籌系統/技術開發
- 樂眾商城/零擼/卷軸/系統技術/樂眾系統開發詳情
- UD眾籌鏈/原始碼開發/系統開發/UD眾籌鏈生態開發技術原始碼
- 泰山眾籌Dapp矩陣系統技術開發(技術分析)APP矩陣
- 達贊系統技術開發/達贊DAS模式技術開發詳情模式
- 阿凡達泰山眾籌開發系統丨阿凡達泰山眾籌系統開發(詳情版)丨阿凡達泰山眾籌原始碼開發原始碼
- SUN4.0眾籌模式系統開發模式丨SUN4.0阿凡達模式系統開發技術方案模式
- DAPP眾籌智慧合約系統開發原理丨眾籌模式分析丨dapp眾籌系統APP模式
- Disrupt DEX迪斯克眾籌質押DAPP系統開發詳情原始碼丨技術框架APP原始碼框架
- 區塊鏈拼團挖礦商城dapp系統開發詳情(模式定製)區塊鏈APP模式
- 深入分析阿凡達(泰山眾籌4.0)系統開發技術詳情及邏輯原始碼原始碼
- 眾籌app商城開發詳細,眾籌app商城系統開發(原始碼部署),眾籌商城系統原始碼功能APP原始碼
- 拼團模式系統APP開發方案模式APP
- 阿凡達(Avatar)泰山眾籌商城系統開發技術詳細及案例
- 關於泰山眾籌模式系統開發邏輯分析丨泰山眾籌DAPP模式詳細開發方案(原始碼部署)模式APP原始碼
- 什麼是阿凡達泰山眾籌系統開發丨阿凡達泰山眾籌系統開發(dapp開發技術)APP
- 泰山&眾籌互助區塊鏈商城dapp系統開發功能詳情區塊鏈APP
- 奇蹟世界Miracle眾籌系統搭建開發NFT技術
- 咖道眾籌互助商城系統開發技術原始碼原始碼
- 阿凡達Avata泰山眾籌系統開發技術搭建
- Defi幣安鏈/LP代幣預售眾籌質押分紅系統開發/python技術詳情Python
- 關於sun4.0泰山眾籌阿凡達模式系統開發技術方案模式
- 泰山眾籌4.0合約系統開發|泰山DAPP開發搭建技術APP