主頁 > 區塊鏈 > 兩萬字整理Fabric(超級賬本) 組態檔 掌握了它就掌握了Fabric的核心

兩萬字整理Fabric(超級賬本) 組態檔 掌握了它就掌握了Fabric的核心

2021-10-11 16:44:50 區塊鏈

導語:文章沒有重復的地方,沒有廢話,如果能幫助到你,那是我的榮幸,記得一鍵三連喲

Fabric 組態檔詳解

  • 一、四個核心組態檔
  • 二、Fabric 的核心組態檔
  • 三、網路啟動步驟
    • 1. 生成認證證書
      • crypto-config.yaml
    • 2. 生成起始區塊
      • configtx.yaml
        • Organizations:
        • Capabilities:
        • Application:
        • Orderer:
        • Channel:
        • Profiles:
    • 3. 創建通道組態檔
    • 4. 創建組織錨節點組態檔
      • 4.1 創建Org1組織錨節點組態檔
      • 4.2 創建Org2組織錨節點組態檔
      • 4.3關閉TLS傳輸
    • 5. docker 容器啟動
      • docker-compose-cli.yaml
      • cli客戶端節點
      • orderer排序節點
      • peer對等節點
      • 進入docker容器
    • 6. 根據通道組態檔生成通道
    • 7. 將peer0.Org1節點加入通道
    • 7. 將peer1.Org1節點加入通道
    • 7. 將peer0.Org2節點加入通道
    • 7. 將peer1.Org2節點加入通道
    • 8. 根據錨節點組態檔更新錨節點
    • 8. 根據錨節點組態檔更新錨節點-Org2
    • 8. 根據錨節點組態檔更新錨節點-Org1
    • 9. 安裝鏈碼
    • 9. 安裝鏈碼-peer0.Org1
    • 9. 安裝鏈碼-peer0.Org2
    • 10. 實體化鏈碼
    • 11. 鏈碼查詢
    • 12. 鏈碼互動

一、四個核心組態檔

1、crypto-config.yaml
2、configtx.yaml
3、docker-compose-cli.yaml
4、byfn.sh

二、Fabric 的核心組態檔

Fabric 將節點運行在docker容器中,其證書認證、通道創建、鏈碼安裝、鏈碼互動等,都可以通過組態檔與命令列工具執行,
在Fabric 網路搭建的程序中,有三個組態檔起到很重要的作用,我們可以通過對這個幾個配置
檔案的修改,來構建符合業務邏輯和企業需求的區塊鏈網路, 這幾個組態檔我們可以在fabric-samples
目錄下的first-network 專案里找到:
1、crypto-config.yaml:認證證書、組織資訊、網路節點數量等;
2、configtx.yaml:起始區塊、通道組態檔、共識演算法設定等;
3、docker-compose-cli.yaml:docker容器設定、批量管理docker容器等;
4、還有一個shell腳本byfn.sh,詳細說明了啟動Fabric 區塊鏈網路所需的大部分命令;

三、網路啟動步驟

  1. 生成認證證書;
  2. 生成起始區塊;
  3. 創建通道組態檔;
  4. 創建組織錨節點組態檔;
  5. docker 容器啟動;
  6. 根據通道組態檔生成通道
  7. 將節點加入通道;
  8. 根據錨節點組態檔更新錨節點;
  9. 安裝鏈碼;
  10. 實體化鏈碼;
  11. 鏈碼互動;
  12. 鏈碼查詢;

1. 生成認證證書

crytogen 組件,為每一個組織生成MSP 所需要的證書與密鑰,它與crypto-config.yaml檔案配
套使用,在命令列輸入以下命令:
cd $HOME/fabric-samples/first-network cryptogen
generate --config=./crypto-config.yaml
會在當前目錄下自動生成crypto-config目錄,里邊存放了所有的證書與密鑰,為MSP 提供服務;
在這里插入圖片描述
在這里插入圖片描述

crypto-config.yaml

Name:組織名稱
Domain:組織域名
Specs:

  • Hostname:自定義節點名稱
    Template:使用模板定義節點名稱 peer($Count +1)
  • Count:節點數量
    Users:用戶名稱 user$Count
  • Count:用戶數量
    在這里插入圖片描述

2. 生成起始區塊

configtxgen 組件,用于生成通道創世區塊或通道交易的組態檔,需要與configtx.yaml檔案配套使用,
configtxgen -profile TwoOrgsOrdererGenesis -channelID syschannel -outputBlock ./channel-artifacts/genesis.block
-profile:后邊接通道配置名稱,從configtx.yaml檔案的profiles配置段中尋找相關通道配置名稱載入, -channelID:后邊接通道名稱,這里定義的是系統通道的名稱,建議全小寫并且沒有特殊字符; -outputBlock:后邊接創世區塊輸出的檔案路徑,路徑中目錄如果不存在,需提前創建;
cd $HOME/fabric-samples/first-network
mkdir -p channel-artifacts
configtxgen -profile TwoOrgsOrdererGenesis -channelID syschannel -outputBlock ./channel-artifacts/genesis.block
在這里插入圖片描述
在這里插入圖片描述

configtx.yaml

該檔案總共有六個配置段:
Organizations:定義了各組織機構的名稱、MSPID、MSP目錄、讀寫策略等;
Capabilities:能力定義,設定了不同版本的節點所能做的事情;
Application:定義了要寫入創世區塊或配置交易的應用引數,
Orderer:定義了通道的共識模式與區塊的相關資訊;
Channel:定義了通道中相關API的呼叫權限;
Profiles:定義configtxgen工具的相關配置入口;

Organizations:

Name:在網路中的名稱
ID:MSP中的唯一ID
MSPDir:msp的相關目錄
Policies:讀寫策略
AnchorPeers:錨節點配置
在這里插入圖片描述

Capabilities:

Capabilities段用來定義fabric網路的能力,這是版本v1.1.0引入的一個新的配置段,當與版本
v1.0.x的對等節點與排序節點混合組網時不可使用,
Capabilities段定義了fabric程式要加入網路所必須支持的特性,例如,如果添加了一個新的
MSP型別,那么更新的程式可能會根據該型別識別并驗證簽名,但是老版本的程式就沒有辦法驗
證這些交易,這可能導致不同版本的fabric程式中維護的世界狀態不一致,
因此,通過定義通道的能力,就明確了不滿足該能力要求的fabric程式,將無法處理交易,除非
升級到新的版本,對于v1.0.x的程式而言,如果在Capabilities段定義了任何能力,即使宣告不
需要支持這些能力,都會導致其有意崩潰,
在這里插入圖片描述

Application:

這一部分后續由應用程式端進行配置;
在這里插入圖片描述

Orderer:

在這里插入圖片描述

Channel:

在這里插入圖片描述

Profiles:

configtxgen 工具 -profile 命令 后接的名稱要與profiles 下的欄位 匹配;
在這里插入圖片描述

3. 創建通道組態檔

configtxgen 組件,用于生成通道創世區塊或通道交易的組態檔,需要與configtx.yaml檔案配套使用,
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel
-profile:后邊接通道配置名稱,從configtx.yaml檔案的profiles配置段中尋找相關通道配置名稱載入, -outputCreateChannelTx:后邊接通道組態檔輸出的檔案路徑;
-channelID:后邊接通道名稱,這里定義的是業務通道的名稱,建議全小寫并且沒有特殊字符
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel
在這里插入圖片描述在這里插入圖片描述

4. 創建組織錨節點組態檔

configtxgen 組件,用于生成通道創世區塊或通道交易的組態檔,需要與configtx.yaml檔案配套使用,
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
-profile:后邊接通道配置名稱,從configtx.yaml檔案的profiles配置段中尋找相關通道配置名稱載入,
-outputAnchorPeersUpdate:后邊接組織錨節點組態檔輸出的檔案路徑;
-channelID:后邊接通道名稱,這里定義的是業務通道的名稱,建議全小寫并且沒有特殊字符;
-asOrg:后邊接所屬組織的MSPID,要與configtx.yaml檔案中Organizations配置段的定義一致;
錨節點每個組織至少有一個,有多少個錨節點就創建多少個錨節點組態檔;

4.1 創建Org1組織錨節點組態檔

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP

在這里插入圖片描述在這里插入圖片描述

4.2 創建Org2組織錨節點組態檔

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP

在這里插入圖片描述
在這里插入圖片描述

4.3關閉TLS傳輸

修改docker-compose的yaml 檔案,將TLS相關配置關閉:
一:修改docker-compose-cli.ymal中service下的cli容器的environment:
將TLS欄位的環境變數注釋掉;
在這里插入圖片描述修改docker-compose的yaml 檔案,將TLS相關配置關閉:
二:修改base/peer-bash.ymal中service下的peer-base容器和orderer容器的environment: 將TLS欄位的環境變數注釋掉;
在這里插入圖片描述在這里插入圖片描述

5. docker 容器啟動

使用docker-compose 組件,根據docker-compose-cli.yaml 檔案批量啟動docker容器;
docker-compose -f docker-compose-cli.yaml up -d
-f:使用指定組態檔
up:啟動
-d:后臺運行,不占用命令列視窗

docker-compose -f docker-compose-cli.yaml up -d

在這里插入圖片描述

docker-compose-cli.yaml

此yaml檔案定義了docker的相關資訊,供docker-compose啟動時使用;
以下是頂級的配置項:
version:定義了版本資訊;
volumes:定義了卷資訊,提供給 services 中的 具體容器使用;
networks:定義了網路資訊,提供給 services 中的 具體容器使用;
services:定義了服務的配置資訊以及該服務啟動的每個容器的配置;
在這里插入圖片描述

以下是services配置項下的服務資訊以及相關的容器配置:
container_name:指定容器的名稱;
image:指定服務所使用的鏡像,如果本地不存在,將拉取鏡像;
tty:是否默認給容器一個虛擬終端;
environment:環境變數配置,可以用陣列或字典兩種方式;
working_dir:作業目錄,登錄該容器終端時默認訪問的目錄;
command:覆寫容器啟動后默認執行的命令;
depends_on:容器啟動的先后問題;
extends:拓展使用另一yaml檔案中的內容;
networks:使用頂級配置項networks所定義的網路,容器只能在同一網路中進行互動;
在這里插入圖片描述

  • volumes:卷掛載路徑;
  • 本地的目錄名稱:容器中的目錄名稱
  • ports:埠映射資訊;
  • “宿主機埠:容器埠”
    在這里插入圖片描述

cli客戶端節點

客戶端節點cli的環境變數配置;
在這里插入圖片描述

orderer排序節點

排序節點orderer的環境變數配置;
在這里插入圖片描述

peer對等節點

對等節點peer的環境變數配置;
在這里插入圖片描述

進入docker容器

當執行到第5步,啟動docker容器后,在byfn.sh腳本的195行,使用了exec命令,執行了cli容
器里的腳本檔案,所以接下來的命令都是在cli容器中執行的;
在這里插入圖片描述
所以,我們需要進入到cli容器中:
docker exec -it cli bash
-i :即使沒有附加也保持STDIN 打開
-t :分配一個偽終端 bash:可執行shell命令
在這里插入圖片描述

6. 根據通道組態檔生成通道

peer 組件,可用于創建通道、節點加入、鏈碼安裝、鏈碼實體化、鏈碼互動等操作; peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx
peer channel create:創建通道;
-o:與某個排序節點連接;
-c:通道名稱;
-f:使用通道組態檔;
–tls:是否開啟TLS加密傳輸協議;
–cafile:服務端的證書檔案;
在這里插入圖片描述

7. 將peer0.Org1節點加入通道

peer channel join -b mychannel.block
peer channel join:加入通道;
-b:參考那個起始區塊;
mychannel.block 是第6步創建通道時生成的檔案,以通道名稱命名,.block結尾;
在這里插入圖片描述

7. 將peer1.Org1節點加入通道

cli客戶端節點,通過下圖的四個環境變數,使其默認與peer0.Org1節點連接,所以上一條命令, 我們將peer0.Org1這個節點加入了通道;
在這里插入圖片描述
現在我們也需要修改這幾個變數,使其連接其他節點,再將節點加入通道當中,

export CORE_PEER_ADDRESS=peer1.org1.example.com:7051 peer channel join -b mychannel.block

在這里插入圖片描述

7. 將peer0.Org2節點加入通道

export CORE_PEER_ADDRESS=peer0.org2.example.com:7051  
export CORE_PEER_LOCALMSPID=Org2MSP  
export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/user/Admin@org2.example.com/msp  
peer channel join -b mychannel.block

在這里插入圖片描述

7. 將peer1.Org2節點加入通道

export CORE_PEER_ADDRESS=peer1.org2.example.com:7051 
peer channel join -b mychannel.block

在這里插入圖片描述

8. 根據錨節點組態檔更新錨節點

peer channel update -o orderer.example.com:7050 -c mychannel \ -f
./channel-artifacts/${CORE_PEER_LOCALMSPID}anchors.tx
peer channel update:更新通道;
-o:與某個排序節點連接;
-c:通道名稱;
-f:使用通道組態檔,是第4步時生成的檔案;
–tls:是否開啟TLS加密傳輸協議;
–cafile:服務端的證書檔案;

8. 根據錨節點組態檔更新錨節點-Org2

因為我們現在連接的使peer1.Org2,所以我們先更新Org2組織的錨節點,因為我們在
configtx.yaml檔案中的Organizations里設定了peer0.org2為錨節點,所以要修改環境變數, 連接到peer0.Org2節點;
export CORE_PEER_ADDRESS=peer0.org2.example.com:7051
export CORE_PEER_LOCALMSPID=Org2MSP
peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org2MSPanchors.tx
在這里插入圖片描述

8. 根據錨節點組態檔更新錨節點-Org1

因為我們現在連接的使peer0.Org2,并且我們在configtx.yaml檔案中的Organizations里設定了peer0.org1為錨節點,所以要修改環境變數,連接到peer0.Org1節點;
export CORE_PEER_ADDRESS=peer0.org1.example.com:7051
export CORE_PEER_LOCALMSPID=Org1MSP
export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org1MSPanchors.tx

9. 安裝鏈碼

因為我們現在連接的是peer0.Org1節點,所以我們把鏈碼安裝到這個節點上,使其成為背書節點,
peer chaincode install -n mycc -v ${VERSION} -l ${LANGUAGE} -p ${CC_SRC_PATH}
在fabric-samples/first-network/scripts/script.sh檔案里:
在這里插入圖片描述
peer chaincode install:安裝鏈碼;
-n:鏈碼名稱,首次在這里定義;
-v:鏈碼版本號,默認1.0;
-l:鏈碼編程語言,使用golang;
-p:鏈碼目錄的路徑,為容器中的路徑,在docker-compose-cli.yaml里的cli容器,通過檔案映 射連接宿主機的鏈碼;
在這里插入圖片描述

9. 安裝鏈碼-peer0.Org1

peer chaincode install -n mycc -v 1.0 -l golang -p "github.com/chaincode/chaincode_example02/go/"
在這里插入圖片描述

9. 安裝鏈碼-peer0.Org2

export CORE_PEER_ADDRESS=peer0.org2.example.com:7051
export CORE_PEER_LOCALMSPID=Org2MSP
export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
peer chaincode install -n mycc -v 1.0 -l golang -p "github.com/chaincode/chaincode_example02/go/"
在這里插入圖片描述

10. 實體化鏈碼

實體化鏈碼,每條鏈碼只需要實體化一次,重復實體化會報錯,
peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n mycc -l golang -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')"
peer chaincode instantiate:實體化鏈碼;
-o:與某個排序節點連接;
-l:鏈碼編程語言,使用golang;
–tls:是否開啟TLS加密傳輸協議;
-v:鏈碼版本號,默認1.0;
–cafile:服務端的證書檔案;
-c:傳輸給鏈碼的引數;
-C:通道名稱;
-P:背書策略;
-n:鏈碼名稱;

因為現在連接的是peer0.Org2節點,所以這里是將peer0.Org2節點的鏈碼實體化成容器,單獨運行;

 peer chaincode instantiate -o orderer.example.com:7050 -C mychannel  -n mycc -l
golang -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')"

在這里插入圖片描述

11. 鏈碼查詢

peer0.Org2的鏈碼實體化操作后,其他的鏈碼可以通過查詢鏈碼使其生成容器單獨運行,

export CORE_PEER_ADDRESS=peer0.org1.example.com:7051
export CORE_PEER_LOCALMSPID=Org1MSP
export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/user/Admin@org1.example.com/msp peer chaincode query -C mychannel -n mycc -c ‘{“Args”:[“query”,“a”]}’
peer chaincode query:鏈碼查詢;
-n:鏈碼名稱;
-C:通道名稱;
-c:傳輸給鏈碼的引數;
在這里插入圖片描述

12. 鏈碼互動

鏈碼互動,應實體化時選擇了 AND背書策略,所以在發起請求時,需要用–peerAddresses 指令 發送多條請求,

peer chaincode invoke -o orderer.example.com:7050 -C mychannel -n mycc --peerAddresses peer0.Org1.example.com:7051  --peerAddresses peer0.Org2.example.com:7051  -c '{"Args":["invoke","a","b","10"]}'

peer chaincode invoke:鏈碼互動;
-C:通道名稱;
-o:與某個排序節點連接;
-n:鏈碼名稱;
–tls:是否開啟TLS加密傳輸協議;
-c:傳輸給鏈碼的引數;
–cafile:服務端的證書檔案;
–peerAddresses:背書節點地址;
–tlsRootCertFiles:背書節點的證書檔案;
在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/308927.html

標籤:區塊鏈

上一篇:檢查清單——企業估值

下一篇:CHNG時間分片獎勵發布

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • JAVA使用 web3j 進行token轉賬

    最近新學習了下區塊鏈這方面的知識,所學不多,給大家分享下。 # 1. 關于web3j web3j是一個高度模塊化,反應性,型別安全的Java和Android庫,用于與智能合約配合并與以太坊網路上的客戶端(節點)集成。 # 2. 準備作業 jdk版本1.8 引入maven <dependency> < ......

    uj5u.com 2020-09-10 03:03:06 more
  • 以太坊智能合約開發框架Truffle

    前言 部署智能合約有多種方式,命令列的瀏覽器的渠道都有,但往往跟我們程式員的風格不太相符,因為我們習慣了在IDE里寫了代碼然后打包運行看效果。 雖然現在IDE中已經存在了Solidity插件,可以撰寫智能合約,但是部署智能合約卻要另走他路,沒辦法進行一個快捷的部署與測驗。 如果團隊管理的區塊節點多、 ......

    uj5u.com 2020-09-10 03:03:12 more
  • 谷歌二次驗證碼成為區塊鏈專用安全碼,你怎么看?

    前言 谷歌身份驗證器,前些年大家都比較陌生,但隨著國內互聯網安全的加強,它越來越多地出現在大家的視野中。 比較廣泛接觸的人群是國際3A游戲愛好者,游戲盜號現象嚴重+國外賬號安全應用廣泛,這類游戲一般都會要求用戶系結名為“兩步驗證”、“雙重驗證”等,平臺一般都推薦用谷歌身份驗證器。 后來區塊鏈業務風靡 ......

    uj5u.com 2020-09-10 03:03:17 more
  • 密碼學DAY1

    目錄 ##1.1 密碼學基本概念 密碼在我們的生活中有著重要的作用,那么密碼究竟來自何方,為何會產生呢? 密碼學是網路安全、資訊安全、區塊鏈等產品的基礎,常見的非對稱加密、對稱加密、散列函式等,都屬于密碼學范疇。 密碼學有數千年的歷史,從最開始的替換法到如今的非對稱加密演算法,經歷了古典密碼學,近代密 ......

    uj5u.com 2020-09-10 03:03:50 more
  • 密碼學DAY1_02

    目錄 ##1.1 ASCII編碼 ASCII(American Standard Code for Information Interchange,美國資訊交換標準代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,并等同于國際標準ISO/IE ......

    uj5u.com 2020-09-10 03:04:50 more
  • 密碼學DAY2

    ##1.1 加密模式 加密模式:https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html ECB ECB : Electronic codebook, 電子密碼本. 需要加密的訊息按照塊密碼的塊大小被分為數個塊,并對每個塊進 ......

    uj5u.com 2020-09-10 03:05:42 more
  • NTP時鐘服務器的特點(京準電子)

    NTP時鐘服務器的特點(京準電子) NTP時鐘服務器的特點(京準電子) 京準電子官V——ahjzsz 首先對時間同步進行了背景介紹,然后討論了不同的時間同步網路技術,最后指出了建立全球或區域時間同步網存在的問題。 一、概 述 在通信領域,“同步”概念是指頻率的同步,即網路各個節點的時鐘頻率和相位同步 ......

    uj5u.com 2020-09-10 03:05:47 more
  • 標準化考場時鐘同步系統推進智能化校園建設

    標準化考場時鐘同步系統推進智能化校園建設 標準化考場時鐘同步系統推進智能化校園建設 安徽京準電子科技官微——ahjzsz 一、背景概述隨著教育事業的快速發展,學校建設如雨后春筍,隨之而來的學校教育、管理、安全方面的問題成了學校管理人員面臨的最大的挑戰,這些問題同時也是學生家長所擔心的。為了讓學生有更 ......

    uj5u.com 2020-09-10 03:05:51 more
  • 位元幣入門

    引言 位元幣基本結構 位元幣基礎知識 1)哈希演算法 2)非對稱加密技術 3)數字簽名 4)MerkleTree 5)哪有位元幣,有的是UTXO 6)位元幣挖礦與共識 7)區塊驗證(共識) 總結 引言 上一篇我們已經知道了什么是區塊鏈,此篇說一下區塊鏈的第一個應用——位元幣。其實先有位元幣,后有的區塊 ......

    uj5u.com 2020-09-10 03:06:15 more
  • 北斗對時服務器(北斗對時設備)電力系統應用

    北斗對時服務器(北斗對時設備)電力系統應用 北斗對時服務器(北斗對時設備)電力系統應用 京準電子科技官微(ahjzsz) 中國北斗衛星導航系統(英文名稱:BeiDou Navigation Satellite System,簡稱BDS),因為是目前世界范圍內唯一可以大面積提供免費定位服務的系統,所以 ......

    uj5u.com 2020-09-10 03:06:20 more
最新发布
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:46:47 more
  • Hyperledger Fabric 使用 CouchDB 和復雜智能合約開發

    在上個實驗中,我們已經實作了簡單智能合約實作及客戶端開發,但該實驗中智能合約只有基礎的增刪改查功能,且其中的資料管理功能與傳統 MySQL 比相差甚遠。本文將在前面實驗的基礎上,將 Hyperledger Fabric 的默認資料庫支持 LevelDB 改為 CouchDB 模式,以實作更復雜的資料... ......

    uj5u.com 2023-04-16 07:28:31 more
  • .NET Core 波場鏈離線簽名、廣播交易(發送 TRX和USDT)筆記

    Get Started NuGet You can run the following command to install the Tron.Wallet.Net in your project. PM> Install-Package Tron.Wallet.Net 配置 public reco ......

    uj5u.com 2023-04-14 08:08:00 more
  • DKP 黑客分析——不正確的代幣對比率計算

    概述: 2023 年 2 月 8 日,針對 DKP 協議的閃電貸攻擊導致該協議的用戶損失了 8 萬美元,因為 execute() 函式取決于 USDT-DKP 對中兩種代幣的余額比率。 智能合約黑客概述: 攻擊者的交易:0x0c850f,0x2d31 攻擊者地址:0xF38 利用合同:0xf34ad ......

    uj5u.com 2023-04-07 07:46:09 more
  • Defi開發簡介

    Defi開發簡介 介紹 Defi是去中心化金融的縮寫, 是一項旨在利用區塊鏈技術和智能合約創建更加開放,可訪問和透明的金融體系的運動. 這與傳統金融形成鮮明對比,傳統金融通常由少數大型銀行和金融機構控制 在Defi的世界里,用戶可以直接從他們的電腦或移動設備上訪問廣泛的金融服務,而不需要像銀行或者信 ......

    uj5u.com 2023-04-05 08:01:34 more
  • solidity簡單的ERC20代幣實作

    // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "hardhat/console.sol"; //ERC20 同質化代幣,每個代幣的本質或性質都是相同 //ETH 是原生代幣,它不是ERC20代幣, ......

    uj5u.com 2023-03-21 07:56:29 more
  • solidity 參考型別修飾符memory、calldata與storage 常量修飾符C

    在solidity語言中 參考型別修飾符(參考型別為存盤空間不固定的數值型別) memory、calldata與storage,它們只能修飾參考型別變數,比如字串、陣列、位元組等... memory 適用于方法傳參、返參或在方法體內使用,使用完就會清除掉,釋放記憶體 calldata 僅適用于方法傳參 ......

    uj5u.com 2023-03-08 07:57:54 more
  • solidity注解標簽

    在solidity語言中 注釋符為// 注解符為/* 內容*/ 或者 是 ///內容 注解中含有這幾個標簽給予我們使用 @title 一個應該描述合約/介面的標題 contract, library, interface @author 作者的名字 contract, library, interf ......

    uj5u.com 2023-03-08 07:57:49 more
  • 評價指標:相似度、GAS消耗

    【代碼注釋自動生成方法綜述】 這些評測指標主要來自機器翻譯和文本總結等研究領域,可以評估候選文本(即基于代碼注釋自動方法而生成)和參考文本(即基于手工方式而生成)的相似度. BLEU指標^[^?88^^?^]^:其全稱是bilingual evaluation understudy.該指標是最早用于 ......

    uj5u.com 2023-02-23 07:27:39 more
  • 基于NOSTR協議的“公有制”版本的Twitter,去中心化社交軟體Damus

    最近,一個幽靈,Web3的幽靈,在網路游蕩,它叫Damus,這玩意詮釋了什么叫做病毒式營銷,滑稽的是,一個Web3產品卻在Web2的產品鏈上瘋狂傳銷,各方大佬紛紛為其背書,到底發生了什么?Damus的葫蘆里,賣的是什么藥? 注冊和簡單實用 很少有什么產品在用戶注冊環節會有什么噱頭,但Damus確實出 ......

    uj5u.com 2023-02-05 06:48:39 more