检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
Go语言链代码开发 链代码结构 链代码相关的API 链代码示例(1.4风格) 链代码示例(2.0风格) 链代码调测 父主题: 链代码开发
Java语言链代码开发 链代码结构 链代码相关的API 链代码示例 链代码调测 父主题: 链代码开发
合约结构 Go语言合约由合约文件及依赖包构成,包含包声明、依赖包导入、智能合约的结构体定义和方法定义。 合约文件中,用户可自定义结构体以及合约函数。以下内容不可更改: package名:package usercontract 函数的签名:NewSmartContract()、Init(stub
链代码结构 本章以Go语言为例来介绍。链代码即一个Go文件,创建好文件后进行函数开发等操作。 当前支持两种方式编写链码:1.4风格(使用shim包)和2.2风格(使用fabric-contract-api-go包)。 区块链服务BCS支持使用两种风格编写的链代码。 链代码接口 Fabric架构版本的区块链实例:
合约结构 Java语言合约由合约文件及依赖包构成,包含包声明、依赖包导入、智能合约的方法定义。 合约文件中,用户可自定义合约函数,需要实现Contract的init和invoke方法。 合约的结构如下: package com.huawei.poissonchain; import
链代码结构 本章以Java语言为例来介绍。链代码即一个Java项目,创建好文件后进行函数开发等操作。 约束与限制 Java链代码仅支持Fabric 2.2及以上版本。 Java链代码仅适用于Fabric架构版本的区块链实例。 链代码接口 链代码启动必须通过调用shim包中的start方法。实际开发中,
链代码相关的API Fabric源码包中的shim包提供了如下几种类型的接口,您可以参考使用: 参数解析API:调用链代码时需要给被调用的目标函数/方法传递参数,该API提供解析这些参数的方法。 账本状态数据操作API:该API提供了对账本数据状态进行操作的方法,包括对状态数据的查询及事务处理等。
链代码相关的API Fabric源码包中的shim包提供了如下几种类型的接口,您可以参考使用: 参数解析API:调用链代码时需要给被调用的目标函数/方法传递参数,该API提供解析这些参数的方法。 账本状态数据操作API:该API提供了对账本数据状态进行操作的方法,包括对状态数据的查询及事务处理等。
获取用户传递给调用链代码的函数名称及参数 function, args := stub.GetFunctionAndParameters() // 对获取到的函数名称进行判断 if function == "invoke" { // 调用 invoke 函数实现转账操作 return
A string, Aval int, B string, Bval int) error { // 使用println函数输出的信息会记录在链码容器日志中 fmt.Println("ABstore Init") var err
执行成功如图所示,表示链代码调测无问题: 图4 执行成功 执行失败示例如图所示,请根据失败提示修改链代码或者检查调测代码的逻辑: 图5 执行失败 父主题: Java语言链代码开发
main(String[] args) { new SimpleChaincode().start(args); } } 父主题: Java语言链代码开发
创建链代码工程,具体请参见创建并启动IDE实例。 图1 创建链代码工程 链代码调测。 以下截图对1.4风格(使用shim包)的链代码进行调测。 父主题: Go语言链代码开发
防止出现panic后链代码容器异常 该内容仅适用于Fabric架构版本的区块链实例的Go语言链代码开发。 为避免出现panic异常时链代码容器异常重启,找不到日志,导致问题无法及时定位,可在Invoke函数入口处添加defer语句时,出现panic异常时返回错误给客户端。 // 定义命名
合约安装 Solidity语言合约安装步骤如下: 完成solidity合约编译后,复制object对应的value(示例合约字节码可直接安装)。 608060405234801561001057600080fd5b5060df8061001f6000396000f30060806
利用合约发送交易 背书消息构建 接口函数 func (msg *ContractRawMessage) BuildInvokeMessage(chainID string, name string, function string, args []string) (*common
行开发,整体开发流程如下: 本文档主要包含以下内容: 合约开发,Go语言、Java合约、Solidity合约。 SDK介绍,主要介绍Java、Golang语言SDK。 应用程序开发,介绍Java、Golang语言客户端开发流程与示例Demo。 开发流程中的其他操作,请参考: 华为云区块链实例购买
合约示例 Java语言合约开发和调测可参考合约示例,使用步骤如下: 合约开发Demo。 编写Java合约。 Java合约示例。 父主题: JAVA合约开发
利用合约查询数据 查询请求消息构建 接口函数 func (msg *ContractRawMessage) BuildInvokeMessage(chainID string, name string, function string, args []string) (*common
在安装界面输入“链代码名称”、“链代码版本”,选择需要安装链代码的节点及链代码语言,添加链代码文件等。 表1 安装链代码参数说明 参数 说明 链代码名称 chaincodedemo 链代码版本 1.0 选择全部Peer节点 勾选 链代码语言 Golang 链代码文件 添加链代码文件。本示例使用存证链