Alan Hou的个人博客

Hyperledger Fabric v2.x基础网络开发-API篇

Fabric SDK

jwt: https://jwt.io/

header+payload+signature

本文中的代码参见:https://github.com/alanhou/blockchain/tree/main/fabric-network

api-v1.4

注册用户

通过向 http://localhost:4000/users 提交 post 请求即可注册用户(首次注册会默认注册一个 admin),并在crypto和fabric-client-kv-xxx 中生成相应的文件:

此时获取的 token 用作稍后请求时携带的 JWT 参数

交易调用

示例:POST http://192.168.xx.xxx:4000/channels/mychannel/chaincodes/fabcar

BODY(通过修改参数中最后一个字段即相关将所有权转让)

RESPONSE

根据 id 查询内容

示例: GET http://192.168.xx.xxx:4000/channels/mychannel/chaincodes/fabcar?args=%5B“SuperCar”%5D&peer=peer0.org1.alanhou.org&fcn=queryCar

RESPONSE

交易更新操作

示例:POST http://192.168.xx.xxx:4000/channels/mychannel/chaincodes/fabcar

BODY

RESPONSE

根据交易id 查询交易内容

示例: GET http://192.168.xx.xxx:4000/channels/mychannel/transactions/921c7a68cb2355b5c30e3d22f27ab9d51c0a2dadbeae28225f94b3e624995f8e?peer=peer0.org1.alanhou.org

RESPONSE

根据区块编号查询区块内容

示例: GET http://192.168.xx.xxx:4000/channels/mychannel/blocks/6?peer=peer0.org1.alanhou.org

RESPONSE

查询资产历史交易

示例: GET http://192.168.xx.xxx:4000/channels/mychannel/chaincodes/fabcar?args=%5B“SuperCar”%5D&peer=peer0.org1.alanhou.org&fcn=getHistoryForAsset

RESPONSE

Composite Key

首先使用同一个人多次调用 createCar(之后再调用 changeCarOwner 不受影响)

示例: GET http://192.168.xx.xxx:4000/channels/mychannel/chaincodes/fabcar?args=%5B“John”%5D&peer=peer0.org1.alanhou.org&fcn=queryCarsByOwner

RESPONSE

区块链浏览器

logger

基于属性的权限控制

Ledger账本

账本是一个数据库,由两部分组成

版本号可参见数据中_rev 字段横杠前的部分



更新链码

将更新后的链码上传到相应目录,然后修改 deploy-chaincode.sh 中的 version 重新执行即可,更新后镜像中的数字也会发生变化:

dev-peer0.org2.alanhou.org-fabcar_2-xxx

api-v2.x

在connection-org1.json和connection-org2.json中配置tlsCACerts,需使用单行模式(原换行替换为\n),证书示例地址为crypto-config/peerOrganizations/org1.alanhou.org/tlsca/tlsca.org1.alanhou.org-cert.pem

注册用户

通过向 http://localhost:4000/users 提交 post 请求即可注册用户(首次注册会默认注册一个 admin),并在xxx-wallet 中生成相应的文件,其中的 xxx 与orgName的值有关

参见api-1.4部分执行交易调用、交易更新操作、根据 id 查询内容

生成证书

在线测试工具

参见 app/sign-tx.js

手动创建证书部署链码

 

常见问题

1、Failed to invoke chaincode. cause:Failed to send Proposal and receive all good ProposalResponse

可能是由于重新部署了节点,但未清除前端项目下的crypto和fabric-client-kv-xxx目录

Credit: https://www.youtube.com/c/PavanAdhav

Section 3 – Dive In to Network

退出移动版