最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java開源區(qū)塊鏈初始化創(chuàng)世區(qū)塊jdchain服務搭建

 更新時間:2022年02月24日 12:04:27   作者:kl  
這篇文章主要介紹了java開源區(qū)塊鏈初始化創(chuàng)世區(qū)塊jdchain的服務搭建步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步

初始化創(chuàng)世區(qū)塊

搭建區(qū)塊鏈服務第一步就是初始化創(chuàng)世區(qū)塊,創(chuàng)建賬本。生成dchain初始化創(chuàng)世區(qū)塊有兩種方式,一種是通過官方提供的區(qū)塊鏈部署工具,在頁面上操作初始化,一種是通過初始化腳本創(chuàng)建。目前,部署工具初始化賬本功能有限,只支持btfsmart共識算法的節(jié)點初始化,如果要支持mq的共識,只能使用初始化賬本的腳本創(chuàng)建

第一步、生成公私鑰

使用部署工具生成公私鑰,雖然部署工具不支持mq共識的賬本初始化,但是還是可以用部署工具幫我們創(chuàng)建并維護公私鑰,這種方式比使用腳本創(chuàng)建要方便很多。

第二步、準備配置

jdchain初始化賬本需要三個配置,賬本配置 ledger.init,本地節(jié)點配置:local.conf ,共識服務配置:bftsmart.config 或mq.config,其中l(wèi)ocal.conf是每個共識節(jié)點特有的配置,賬本和共識服務配置需要同步到每個節(jié)點。

更多配置詳情參考:https://github.com/blockchain-jd-com/jdchain

第三步、執(zhí)行初始化腳本

配置準備好后,先找到ledger-init.sh腳本,然后修改其中-i 和-l參數(shù),指定第二步配置好的配置地址。然后依次執(zhí)行。如果配置正確無誤,會提示初始化服務已準備好,按任意鍵開始初始化賬本。這時回車即可,初始化成功后,會在config/init目錄下生成ledger-binding.conf文件。啟動節(jié)點服務就需要這個配置文件

創(chuàng)世區(qū)塊創(chuàng)建過程

假設有四個共識節(jié)點node0、node1、node2、node3、參與共識創(chuàng)建區(qū)塊,那么node0執(zhí)行初始化的腳本時的行為如下,其他節(jié)點行為是一致的:

1、根據(jù)-i和-l參數(shù)加載配置

2、創(chuàng)建初始化配置實例

3、校驗當前節(jié)點公私鑰是否匹配(使用私鑰生成簽名,用公鑰驗簽)

4、初始化賬本,實例化本地事務上下文,生成創(chuàng)世交易

5、對初始交易簽名,生成當前節(jié)點的賬本初始化許可(使用當前事務上下文對象的哈希和當前節(jié)點私鑰生成簽名);

6、在所有參與者之間進行第一階段的共識,請求所有其它參與方的賬本創(chuàng)建許可,依次請求node1、node2、node3的/legerinit/permission/接口,對方接口會進行簽名校驗,和過程3的方式一致

7、使用當前節(jié)點事務交易上下文作為哈希校驗其他節(jié)點返回的接入許可簽名,此過程如果失敗,會重試16次

8、鏈接數(shù)據(jù)庫,生成當前節(jié)點初始賬本

9、在所有參與者之間進行第二階段的共識,開始請求所有成員的賬本創(chuàng)建決定,如果都返回決議創(chuàng)建就提交賬本,否則就回滾。此過程也會重試16次

上面創(chuàng)世區(qū)塊兩階段的共識接口定義如下:

public interface LedgerInitConsensusService {
	/**
	 * 請求賬本的初始化許可;
	 * 
	 * @param requesterId
	 *            發(fā)起請求的參與者 id;
	 * @param signature
	 *            請求者的私鑰對 “id” + “賬本種子” 做出的簽名;只有簽名合法且參與者是初始化配置中的參與方才能獲得有效返回,否則將被拒絕;
	 */
	@HttpAction(path = "/legerinit/permission/{requesterId}", method = HttpMethod.POST, contentType = LedgerInitMessageConverter.CONTENT_TYPE_VALUE, responseConverter = PermissionResponseConverter.class)
	LedgerInitProposal requestPermission(@PathParam(name = "requesterId") int requesterId,
			@RequestBody(converter = SignatureDigestRequestBodyConverter.class) SignatureDigest signature);
	/**
	 * 同步賬本初始化決議;
	 * 
	 * @param initDecision
	 *            調(diào)用者的賬本初始化決議;
	 * @return 目標參與方的賬本初始化決議;如果目標參與者尚未準備就緒, 則返回 null;
	 */
	@HttpAction(path = "/legerinit/decision", method = HttpMethod.POST, contentType = LedgerInitMessageConverter.CONTENT_TYPE_VALUE, responseConverter = DecisionResponseConverter.class)
	LedgerInitDecision synchronizeDecision(@RequestBody(converter = DecisionRequestBodyConverter.class) LedgerInitDecision initDecision);

}

遇到的問題:在請求其它參與方的賬本創(chuàng)建許可時,輸出如下異常:

Invalid permission from participant! --[Id=LdeNn8bWuc2DaqAbx3XCQPUf7bdb94PTKFT2E][name=node1.com]
Invalid permission from participant! --[Id=LdeNezcG3rhs31u8UBSwvfMf2BKr1ZkaLKJAG][name=node2.com]
Invalid permission from participant! --[Id=LdeNqxGmBdmEZK6hVeLcnXppW2qnLLKMMiQhN][name=node3.com]

看到這個輸出,就代表可以排除公私鑰的問題的。因為這個是最后一步許可,交易哈希許可簽名驗證失敗輸出的。而交易哈希是根據(jù)當前賬本上下文創(chuàng)建的,當前賬本上下文是根據(jù)初始化賬本配置裝載的,所以最后的問題出在初始化賬本的配置上面。我是因為理解錯了下面的配置:

# 當前賬本交易發(fā)送隊列主題(不同賬本需不同主題)
system.msg.queue.topic.tx=node3-topic

結語

jdchain的各組件設計的比較靈活,如共識實現(xiàn)可以使用bftsmart、RabbitMQ等,底層存儲也可以使用本地的rocksdb也可以使用redis等。

如果有特殊的需求也可以自己實現(xiàn)定義的api接口。博主第一天使用的都是默認的的提供者實現(xiàn),安裝部署都比較順利,今天嘗試使用RabbitMQ的共識時遇到了好幾個問題,首先是上面的交易許可驗簽的問題,然后目前官方的基于RabbitMQ的共識,RabbitMQ的鏈接器不支持帶用戶認證的mq的配置。不過問題都已解決了,支持amqp的配置代碼也已給官方倉庫提交pr了,算正式踏入?yún)^(qū)塊鏈研究之路了

以上就是java開源區(qū)塊鏈初始化創(chuàng)世區(qū)塊jdchain服務搭建的詳細內(nèi)容,更多關于java開源區(qū)快聯(lián)初始化創(chuàng)世區(qū)塊jdchain的資料請關注腳本之家其它相關文章!

相關文章

  • Java中的迭代和遞歸詳解

    Java中的迭代和遞歸詳解

    這篇文章主要給大家介紹了關于Java中的迭代和遞歸,文章顯示分別介紹了Java中的迭代和遞歸,而后又介紹了迭代和遞歸的區(qū)別以及數(shù)形遞歸的相關內(nèi)容,文中介紹的很詳細,相信會對大家學習具有一定的參考借鑒價值,有需要的朋友們可以參考借鑒。
    2016-11-11
  • java selenium Selenium IDE介紹及用法

    java selenium Selenium IDE介紹及用法

    本文主要介紹java selenium Selenium IDE,這里整理了相關資料和介紹如何安裝 Selenium IDE和使用方法,有需要的小伙伴可以參考下
    2016-08-08
  • SpringBoot-Maven打包壓縮瘦身方式

    SpringBoot-Maven打包壓縮瘦身方式

    這篇文章主要介紹了SpringBoot-Maven打包壓縮瘦身方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • SpringAOP中的通知Advice詳解

    SpringAOP中的通知Advice詳解

    這篇文章主要介紹了SpringAOP中的通知Advice詳解,Spring 的 AOP 功能中一個關鍵概念是通知Advice與切點Pointcut表達式相關聯(lián)在特定節(jié)點織入一些邏輯,Spring 提供了五種類型的通知,需要的朋友可以參考下
    2023-08-08
  • java RMI詳細介紹及實例講解

    java RMI詳細介紹及實例講解

    這篇文章主要介紹了java RMI詳細介紹及實例講解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • SpringBoot 接口開發(fā)教程(httpclient客戶端)

    SpringBoot 接口開發(fā)教程(httpclient客戶端)

    這篇文章主要介紹了SpringBoot 接口開發(fā)教程(httpclient客戶端),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java實現(xiàn)文件夾解壓和壓縮

    java實現(xiàn)文件夾解壓和壓縮

    這篇文章主要為大家詳細介紹了java實現(xiàn)文件夾解壓和壓縮,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Java關鍵字詳解之final static this super的用法

    Java關鍵字詳解之final static this super的用法

    this用來調(diào)用目前類自身的成員變量,super多用來調(diào)用父類的成員,final多用來定義常量用的,static定義靜態(tài)變量方法用的,靜態(tài)變量方法只能被類本身調(diào)用,下文將詳細介紹,需要的朋友可以參考下
    2021-10-10
  • Java8默認方法Default Methods原理及實例詳解

    Java8默認方法Default Methods原理及實例詳解

    這篇文章主要介紹了Java8默認方法Default Methods原理及實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • Spring @value用法示例詳解

    Spring @value用法示例詳解

    這篇文章主要介紹了Spring-@value用法詳解,為了簡化讀取properties文件中的配置值,spring支持@value注解的方式來獲取,這種方式大大簡化了項目配置,提高業(yè)務中的靈活性,本文通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2022-08-08

最新評論

阜宁县| 民乐县| 江北区| 海晏县| 茶陵县| 长海县| 博罗县| 南康市| 航空| 新干县| 迭部县| 北宁市| 新乡县| 攀枝花市| 闵行区| 丰县| 如皋市| 江源县| 出国| 东乌| 达拉特旗| 溧水县| 广宗县| 化德县| 河北省| 普洱| 乌恰县| 安多县| 水城县| 鄂州市| 敦化市| 定襄县| 那曲县| 台州市| 林口县| 墨脱县| 淮滨县| 乌拉特后旗| 杂多县| 建宁县| 波密县|