检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
交易链码是用户实现其业务逻辑的链码,这里给出的示例代码Transaction Chaincode完成用户间的转账操作。在转账数据的验证过程中使用同态加密库对密文交易数据进行合法性校验,确保没有非法操作。示例中实现了余额初始化,余额查询,转账交易三个功能函数,具体功能实现参考如下。 Init初始化余额
获取用户传递给调用链代码的函数名称及参数 function, args := stub.GetFunctionAndParameters() // 对获取到的函数名称进行判断 if function == "invoke" { // 调用 invoke 函数实现转账操作 return
包含Go合约SDK文件(interfaces.go)、SDK接口的mock,用于实现合约逻辑的接口。 example.go 用户自定义合约文件。示例文件以合约结构为基础,提供简单场景、复杂场景(弹珠游戏)两类合约操作函数。 父主题: Go合约开发
"github.com/hyperledger/fabric-contract-api-go/contractapi" ) // 链码实现 type ABstore struct { contractapi.Contract } // 初始化链码数据,实例化或者升级链码时自动调用
合约结构 Java语言合约由合约文件及依赖包构成,包含包声明、依赖包导入、智能合约的方法定义。 合约文件中,用户可自定义合约函数,需要实现Contract的init和invoke方法。 合约的结构如下: package com.huawei.poissonchain; import
该内容仅适用于Fabric架构版本的区块链实例的Go语言链代码开发。 为避免出现panic异常时链代码容器异常重启,找不到日志,导致问题无法及时定位,可在Invoke函数入口处添加defer语句时,出现panic异常时返回错误给客户端。 // 定义命名返回值,发生panic在defer里面赋值,确保客户端可以收到返回值
Fabric架构版本的区块链实例: 链代码启动必须通过1.4风格(调用shim包)中的Start函数,入参为shim包中定义的Chaincode接口类型。实际开发中, 您需要自行定义一个结构体,实现Chaincode接口。 type Chaincode interface { Init(stub
并调用RESTAPI的接口"/v1/chaincode/operation"来调用链代码,实现a给b转账功能。运行结果如下: 本Demo用一个简单的REST客户端调用RESTAPI服务实现了调用链代码,返回的invoke结果为一个base64加密的TransactionID,qu
invoke(ChaincodeStub stub) { // 在该方法中实现链代码运行中被调用或查询时的处理逻辑 // 编写时可灵活使用stub中的API } //主函数,需要调用shim.Start()方法 public static
利用合约查询数据 查询请求消息构建 接口函数 func (msg *ContractRawMessage) BuildInvokeMessage(chainID string, name string, function string, args []string) (*common
yptedTlsKey) //将解密后的TLS私钥传入Fabric-SDK,实现通过内存传入TLSKey 对于MSP私钥 在main.go文件的insert函数中,按如下方式调用函数: encryptedbytekey,_:= GetPrivateKeyBytes(org)
链代码相关的API Fabric源码包中的shim包提供了如下几种类型的接口,您可以参考使用: 参数解析API:调用链代码时需要给被调用的目标函数/方法传递参数,该API提供解析这些参数的方法。 账本状态数据操作API:该API提供了对账本数据状态进行操作的方法,包括对状态数据的查询及事务处理等。
链代码相关的API Fabric源码包中的shim包提供了如下几种类型的接口,您可以参考使用: 参数解析API:调用链代码时需要给被调用的目标函数/方法传递参数,该API提供解析这些参数的方法。 账本状态数据操作API:该API提供了对账本数据状态进行操作的方法,包括对状态数据的查询及事务处理等。
利用合约发送交易 背书消息构建 接口函数 func (msg *ContractRawMessage) BuildInvokeMessage(chainID string, name string, function string, args []string) (*common
value不是[]byte类型,而是一个实现了Marshal(v interface{}) ([]byte, error)接口的数据,接口内部,会将value通过Marshal接口序列化,然后再形成写集。 入参:要写入的键值对,要求key != "",并且value实现了Marshal接口,可以序列化为[]byte。
Go语言合约由合约文件及依赖包构成,包含包声明、依赖包导入、智能合约的结构体定义和方法定义。 合约文件中,用户可自定义结构体以及合约函数。以下内容不可更改: package名:package usercontract 函数的签名:NewSmartContract()、Init(stub contractapi.Con
概述 合约主要用于操作账本上的数据。作为运行在区块链上的、特定条件下自动执行的代码逻辑,合约是用户利用区块链实现业务逻辑的重要途径,基于区块链特点,合约的运行结果是可信的,其结果是无法被伪造和篡改的。 智能合约由用户自行编写上传并保证安全,请务必注意命令注入等相关安全问题。 为了
Java或Node.js语言编写的程序,主要用于操作账本上的数据。链代码是运行在区块链上的、特定条件下自动执行的代码逻辑,是用户利用区块链实现业务逻辑的重要途径。基于区块链特点,智能合约的运行结果是可信的,其结果是无法被伪造和篡改的。 在使用区块链服务BCS时,用户需要开发自己的
署、管理、维护区块链网络,降低您使用区块链的门槛,让您专注于自身业务的开发与创新,实现业务快速上链。 BCS除了提供web界面管理运维资源之外,还提供了API调用方式,便于用户集成自有管理系统,实现定制化管理入口。可以使用本文档提供API对区块链服务进行相关操作,如创建、查询、删
在商业实践中,数据是重要的生产要素。基于区块链的可信数据交换,实现了分布式场景中业务数据的隐私保护与可信共享,有效打破“数据孤岛”,最大化数据价值。可信数据共享中间件集成在Rest API插件中,可快速插拔,支持弹性伸缩。用户可通过RESTful API的方式访问区块链系统,快速集成,实现数据的发布、授权、分享、加密、解密、细粒度访问控制等能力。