云服务器内容精选
-
Go SDK升级 1. 删除原有huaweichainSDK文件,下载新版本的SDK文件解压至原有的SDK文件路径。 2. SDK下载参见SDK配置。 3. 修改合约发送方法,详细参考下表。 表1 更新内容 内容 旧版本(2.1.0.2.39) 新版本(2.1.0.6.41) SDK参考 交易消息构建方法 BuildTransactionMessage BuildTxRawMsg 利用合约发送交易 父主题: SDK升级
-
查询文件历史版本 接口方法 func (bc *BsClient) GetFileHistory(fileName string) ([]*bstore.FileHistory, error) 参数说明 参数 类型 说明 fileName string 查询的链上文件名。 返回值 类型 说明 []*FileHistory 文件历史版本信息列表,每条历史版本信息包含版本号、文件哈希值、首次上链时间、更新时间、上传者数据。 error 查询成功返回类型为nil,反之返回error。 父主题: 其他查询
-
文件下载 接口方法 func (bc *BsClient) DownloadFile(filePath, fileName string, versionId int) error 参数说明 参数 类型 说明 filePath string 文件下载到本地的路径。 fileName string 待下载文件在链上的名称。 versionId int 待下载文件的版本号。 返回值 类型 说明 error 下载成功返回类型为nil,反之返回error。 父主题: Go SDK介绍
-
查询文件操作记录 接口方法 func (bc *BsClient) GetFileOperation(fileName, startTime, endTime string) ([]*bstore.StorageEvent, error) 参数说明 参数 类型 说明 fileName string 查询的链上文件名。 startTime string 查询记录的起始时间(秒时间戳)。 endTime string 查询记录的结束时间(秒时间戳) 返回值 类型 说明 []*StorageEvent 文件操作记录列表,每条操作记录包含操作者、操作类型、时间数据。 error 查询成功返回类型为nil,反之返回error。 父主题: 其他查询
-
文件上链 接口方法 func (bc *BsClient) UploadFile(filePath, fileName string) (*UploadFileResponse, error) 参数说明 参数 类型 说明 filePath string 待上链文件在本地的路径。当前支持不大于100MB的任意格式文件。 fileName string 文件在链上的名称。 返回值 类型 说明 *UploadFileResponse 文件上链返回信息。 error 上链成功返回类型为nil,反之返回error。 父主题: Go SDK介绍
-
初始化SDK 文件存储客户端 基于已初始化的SDK Gateway客户端模板初始化富媒体存储客户端。 调用方法 func NewBsClient(gatewayClient *client.GatewayClient, chainID string, consenterName string)(*BsClient, error) 参数说明 参数 类型 说明 gatewayClient *client.GatewayClient 必填参数,已初始化过的Gateway客户端。 chainID string 链名称。 consenterName string 共识节点名称,如“node-0.organization”。
-
初始化SDK客户端 基于标准配置文件模板初始化Gateway SDK。 调用方法 func NewGatewayClient(configPath string, decrypts ...func(bytes []byte) ([]byte, error)) (*GatewayClient, error) 参数说明 参数 类型 说明 configPath String 必填参数,客户端SDK配置文件的绝对路径。 decrypts func(bytes []byte) ([]byte, error) 非必填参数,指定证书密文解密算法,默认为明文,无须解密(可变参数)。
-
SDK客户端配置 客户端配置如下: SDK配置请参考SDK配置。 华为链实例创建完成后,下载配置文件,具体请参考下载配置文件。 使用解压后的配置文件初始化SDK客户端,初始化方法请参考SDK介绍中的通用方法,配置示例可参考示例Demo。 配置文件主要包含证书文件和yaml配置,实例中每个组织对应一个yaml文件,可通过读取不同的yaml生成不同的SDK客户端对象。 客户端初始化需确保yaml文件中证书文件等路径为证书的实际存放路径。 父主题: Go应用程序开发
-
查询区块详情 消息构建。 接口方法 func (msg *QueryRawMessage) BuildBlockRawMessage(chainID string, blockNum uint64) (*common.RawMessage, error) 参数说明 参数 类型 说明 chainID string 链名称。 blockNum uint64 区块高度。 返回值 类型 说明 *common.RawMessage 根据块高查询区块详情需发送的消息。 error 查询成功返回类型为nil,反之返回error。 消息发送。 接口方法 func (action *QueryAction) GetBlockByNum(rawMsg *common.RawMessage) (*common.RawMessage, error) 参数说明 参数 类型 说明 rawMsg *common.RawMessage 上述根据块高查询区块详情消息。 返回值 类型 说明 *common.RawMessage 用于获取包含发送结果的消息。 error 发送成功返回类型为nil,反之返回error。 父主题: 其他查询
-
SDK配置 linux环境,Go SDK的编译、运行,需要手动下载并配置openssl(openssl下载链接) 解压openssl,拷贝openssl文件夹到目录/usr/local/include/下 执行库的导入命令:export LD_LIBRARY_PATH=/usr/local/include/openssl SDK版本号 下载链接 2.1.0.6.41 下载SDK 父主题: Go SDK介绍
-
合约结构 AssemblyScript语言合约主要包括index.ts和contract.ts两个文件,其中index.ts为开发智能合约文件(contract.ts)依赖的合约SDK,合约涉及的业务相关开发仅在contract.ts文件,智能合约文件contract.ts需要根据实际业务进行开发。 合约SDK(index.ts)主要结构如下: // 引入智能合约文件 import { invoke, init } from "./contract";// 合约的初始化(wasm_init)接口。包含合约文件的init()接口,合约启动时,需要首先执行且只需要执行一次的逻辑放到合约文件init()接口中。export function wasm_init(buffer_offset: i32, size: i32):void{ // 实际调用合约文件的init()接口} // 合约被调用(wasm_invoke)接口。包含合约文件的invoke()接口,供合约使用者通过SDK的wasm_invoke接口调用。export function wasm_invoke(buffer_offset: i32, size: i32):void{ // 实际调用合约文件的invoke()接口}// 合约被调用(wasm_prepare)接口,保持为空即可。export function wasm_prepare():void{} 智能合约文件(contract.ts)主要结构如下: // 引入合约SDK方法 import { FuncName, smlog, Str2ArrayBuffer, Parameters, PutKV, ArrayBuffer2Str, GetKV, DelKV, MakeErrRes,MakeSuccessRes, Response,IteratorNew, IteValue, IteKey, IteNext, IteratorFree } from "./index"// 智能合约的初始化(init)接口的实现。export function init(txid:string):Response{}// 智能合约被调用(invoke)接口的实现。export function invoke(txid:string):Response{} 父主题: Wasm合约开发(AssemblyScript)
-
基于SDK开发流程 基于SDK开发客户端需要进行以下步骤。 初始化 创建SDK实例对象,然后进行初始化。 构造消息 由于消息类型较多,所以根据消息类型进行封装,在构造消息之前,必须先获取消息类型对象,然后再基于获取对象中对应的方法封装消息。 获取节点 获取消息发送节点对象。 发送消息 所有的发送接口都封装在节点类中,发送消息时,先获取节点,再调用节点的消息发送对象获取方法。不同的消息对应不同的构建接口,同理,消息发送接口也根据接口类型进行了分装,在发送消息前,必须先获取接口类型对象,然后再基于获取对象中对应的方法发送消息。 结果解析 服务端返回的消息中,均包含交易最后执行结果的标志位,以此判断交易是否执行成功。若结果为不成功,则返回错误原因,用于分析定位。 结果监听 对于业务交易和投票类型等需要落盘的交易,即使消息发送成功,后续落盘时还可能产生各种校验失败,导致交易无效。因此还需要监听交易是否最终落盘成功。
-
SDK逻辑结构 SDK主要提供消息封装、发送模块及相应的配套组件。配套组件主要包含异常处理、配置文件解析、节点获取等功能接口。 消息封装 由于消息类型较多,因此按类型进行了分类封装。消息封装相关接口均在build这个包下面,包含了ContractRawMessage、QueryRawMessage这几种消息构造的封装类。 ContractRawMessage:包含交易背书、落盘两阶段消息的构建。 QueryRawMessage:包含所有查询相关接口的消息构建,目前支持交易详情查询、链状态查询、区块查询、合约信息查询等接口。 消息发送 同消息封装类接口,按类型进行了分类封装。消息发送相关接口均包含在action这个包下面,包含了ContractAction、QueryAction、EventAction这几种消息发送的封装类。 ContractAction:对应ContractRawMessage封装的消息的发送。 QueryAction:对应QueryRawMessage中封装的消息的发送。 EventAction:主要用于监听消息的最终状态,因为参数仅包含交易ID,消息封装的方法直接内置。同时所有的消息发送接口均提供同步和异步两种接口。 同步接口入参均为需要发送的消息,返回值为一个ListenableFuture对象,用于监听消息发送结果。 异步接口则传入需要发送消息的同时,还需要传入一个StreamObserver对象,用于异步获取消息发送结果。
-
SDK说明 华为链目前提供Java、Golang两种语言SDK, 区块链 服务启动时会启动一系列grpc接口,监听客户端发送的消息,与客户端交互完成各种请求。在开发客户端时,如果从底层grpc接口开始,进行各种消息封装、消息发送、返回值解析等工作,不仅会导致开发量过大,并且造成重复劳动。SDK则是将区块链服务提供的各种grpc接口进行封装,同时封装各接口所需类型的消息。在开发客户端时,只需要关注自己的业务逻辑,调用相应接口封装并发送消息即可,不需要关注底层消息发送接收的具体过程。 1. SDK中相关方法的使用示例,可参考应用程序开发对应语言的示例Demo。 2. SDK在不同环境下支持的实例安全机制如下: windows环境:ECDSA linux环境:国密算法、ECDSA
-
合约相关的API contractapi.ContractStub提供如下API接口,可以在合约文件中进行调用。这些API按照功能可以划分为: 表1 辅助功能 接口 说明 FuncName() string 获取智能合约请求中指定的智能合约函数名称。 Parameters() [][]byte 获取请求参数。 ChainID() string 获取智能合约所在链ID。 ContractName() string 获取智能合约名称。 表2 账本数据操作 接口 说明 GetKV(key string) ([]byte, error) 获取某个键对应的值。 PutKV(key string, value []byte) error 添加或更新一对键值。 PutKVCommon(key string, value interface{}) error 添加或更新一对键值。其中值为结构体,需要实现Marshal() ([]byte, error)。 DelKV(key string) error 删除一对键值。 GetIterator(startKey, endKey string) (Iterator, error) 查询指定范围内的键值,查询范围是左闭右开的。 GetKeyHistoryIterator(key string) (HistoryIterator, error) 查询某个键的所有历史值。 SaveComIndex(indexName string, attributes []string, objectKey string) error 创建一个复合键。 例如为"zhangsan":{sex="male", height=175}创建用于查询性别的复合键,可调用SaveComIndex("sex", []string{"male"}, "zhangsan"),如创建用于查询性别和身高的复合键,可调用SaveComIndex("sex/height", []string{"male", "175"}, "zhangsan")。 GetKVByComIndex(indexName string, attributes []string) (Iterator, error) 通过复合键查找满足某种查询条件的键值对。 DelComIndexOneRow(indexName string, attributes []string, objectKey string) error 删除某个复合键。 父主题: Go合约开发
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格