华为云用户手册

  • 请求示例 { "orgID" : "4f1439758ebb41f7411b5f684b67713c08b89198", "channelID" : "mychannel", "cryptoMethod" : "SW", "cert" : "-----BEGIN CERTIFICATE-----\n...\n...\n-----END CERTIFICATE-----", "sk" : "------BEGIN PRIVATE KEY-----\n...\n...\n-----END PRIVATE KEY-----", "timestamp" : "2020-10-27T17:28:16+08:00", "service" : [ { "type" : "VerifiableCredentialService", "serviceEndpoint" : "https://example.com/vc/", "credentialApplySchema" : { "type" : "file", "name" : "Test Enterprise Certification", "description" : "this is test apply info", "attributes" : [ { "name" : "bob", "type" : "string", "description" : "Attribute's description" } ] } } ] }
  • 请求参数 表1 请求Body参数 参数 是否必选 参数类型 描述 orgID 是 String 组织id channelID 是 String 通道id cryptoMethod 是 String 加密方法,目前固定为SW cert 是 String 证书 sk 是 String 私钥 timestamp 是 String 时间戳 provider 是 String 授权者的身份标识 applyer 是 String 申请者的身份标识
  • 响应参数 状态码: 200 表2 响应Body参数 参数 参数类型 描述 applyer String 申请者的身份标识 applyerName String 申请者的名称 provider String 授权者的身份标识 providerName String 授权者的名称 service String 授权者的服务名 price Integer 价格 applyTime String 申请时间 encryptedABEKey String 被加密的ABE密钥 status String 申请状态,request表示未授权;ready表示申请已处理 reason String 原因 lockProof String 证明 attributesJson String 属性 状态码: 500 表3 响应Body参数 参数 参数类型 描述 errorCode String 错误码 errorMsg String 错误描述
  • 响应示例 状态码: 200 ABE用户密钥订单信息 { "applyer" : "did:hwid:mfqqdiW8V64JbPFgQsoiv", "applyerName" : "", "provider" : "did:hwid:FahQr32NgQZWjGRiCZc37C", "providerName" : "", "service" : "", "price" : 0, "applyTime" : "1672985584", "encryptedABEKey" : "", "status" : "ready", "reason" : "", "lockProof" : "", "attributesJson" : "{\"att1\":\"YXR0MW5hbWU=\",\"att2\":\"YXR0Mm5hbWU=\",\"att3\":\"NQ==\"}" } 状态码: 500 失败响应 { "errorCode" : " BCS .5002046", "errorMsg" : "Incorrect number of arguments" }
  • 请求参数 表1 请求Body参数 参数 是否必选 参数类型 描述 orgID 是 String 组织id channelID 是 String 通道id cryptoMethod 是 String 加密方法,目前固定为SW cert 是 String 证书 sk 是 String 私钥 timestamp 是 String 时间戳 owner 是 String 密钥生成者的身份标识 keyManagerMode 否 String abe系统首次使用时,需选择中心模式“central”或者多中心模式“distributed”,该模式仅可选择一次,默认为多中心模式。
  • 请求示例 { "orgID" : "ce0ac69b0c8648cd25b44a551780409767c8890b", "channelID" : "mychannel", "cryptoMethod" : "SW", "cert" : "-----BEGIN CERTIFICATE-----\\n...\\n-----END CERTIFICATE-----", "sk" : "-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----", "timestamp" : "2020-10-27T17:28:16+08:00", "owner" : "did:example:8poVETnVCry9ecfHSDeQaR" }
  • 请求示例 { "orgID" : "ce0ac69b0c8648cd25b44a551780409767c8890b", "channelID" : "mychannel", "cryptoMethod" : "SW", "cert" : "-----BEGIN CERTIFICATE-----\\n...\\n-----END CERTIFICATE-----", "sk" : "-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----", "timestamp" : "2020-10-27T17:28:16+08:00", "provider" : "did:example:DHkJjyD5wZwya6sd6BNBnG", "providerName" : "huawei", "productName" : "prodname", "productID" : "product2", "sampleUrl" : "http://hwcloud.com/sample.com/prodname2", "sampleSize" : "10KB", "sampleType" : "csv", "sampleName" : "data_sub1", "fileType" : "csv", "dataUrl" : "http://hwcloud.com/prodname2", "dataHash" : "2282ba7a1a2ef5700609214a997d3d4237a03bfd3632c6d089e57e7b6f467969", "dataSize" : "100MB", "dataName" : "mydata1", "description" : "this is my second prod", "plainData" : "base64 encoding string", "consumer" : "did:example:3TMWx8owKHARgNwbj4ywmG", "orderSeq" : "1", "watermarkType" : "string", "file" : "string", "productIDKeywords" : "[{\"value\":\"taiyuan\"},{\"value\":\"renmin_hospital\"},{\"value\":\"medicine\"}]", "onChainStore" : "string", "consumerName" : "string" }
  • 响应示例 状态码: 200 订单信息 { "consumer" : "did:example:3TMWx8owKHARgNwbj4ywmG", "consumerName" : "Tyler", "orderSeq" : "1", "provider" : "did:example:DHkJjyD5wZwya6sd6BNBnG", "providerName" : "hw", "productID" : "product1", "productName" : "prodname1", "price" : "0", "applyTime" : "1607332359", "encryptedAesKey" : "BNGhPwjaTgpM+V7czzw1i4mH21KKN+XLKXHLqVsRIfybUCncqZNfomkRfzX4WEHj+oty1X9oCd4h6xMnRvs8BWE5Tvg6BJ6QTW/km9EO/FSYqzJf2GqQzAleAcLJrTBZ3LRbPaF87CgJ114ae7R+VK9VvfXQ8exuH2KMRD305dXieGpM4VPVv9u1BbL15Jpd/g==", "status" : "ready", "reason" : "I want product1", "lockProof" : "", "encryptData" : "base64 encoding string" } 状态码: 500 失败响应 { "errorCode" : "B CS .5002046", "errorMsg" : "Incorrect number of arguments" }
  • 响应参数 状态码: 200 表6 响应Body参数 参数 参数类型 描述 consumer String 订单消费者身份标识 consumerName String 订单消费者名称 orderSeq String 订单序列号 provider String 订单提供者身份标识 providerName String 订单提供者名称 productID String 数据集产品id productName String 数据集产品名称 price String 订单价钱 applyTime String 订单申请时间 encryptedAesKey String 密钥 status String 订单状态 reason String 订单申请原因 lockProof String 订单锁定证明 creatorDID String 流程创建者DID,如果没有加入任何流程,为“” processID String 当前订单所属流程ID,如果没有加入任何流程,为“” encryptData String base64编码的数据密文 状态码: 500 表7 响应Body参数 参数 参数类型 描述 errorCode String 错误码 errorMsg String 错误描述
  • SDK接口 合约SDK提供如下API接口,可以在合约文件中进行调用。这些API按照功能可以划分为: 表1 stub接口 接口 说明 FuncName() string 获取智能合约请求中指定的智能合约函数名称。 Parameters() [][]byte 获取请求参数。 ChainID() string 获取智能合约所在链ID。 ContractName() string 获取智能合约名称。 TxTimestamp() time.Time 获取本次交易的时间戳。 表2 ContractStub接口 接口 说明 GetKV(key string) ([]byte, error) 功能:获取状态数据库中某个key对应的value。 入参:某个键值对的key信息,不可为空。 返回值:返回[]byte类型的value值;当key不存在时,value为nil。 error:当网络出错,状态数据库出错,返回error信息。 PutKV(key string, value []byte) error 功能:写状态数据库操作,将key、value形成写集,打包到交易中,当交易排序、出块、并校验通过之后,将key/value写入到状态数据库中。入参:要写入的键值对要求key != "",并且value != nil。 error:入参错误。 PutKVCommon(key string, value interface{}) error 功能:写状态数据库操作,与PutKV功能相同;与PutKV接口的不同之处在于 value不是[]byte类型,而是一个实现了Marshal(v interface{}) ([]byte, error)接口的数据,接口内部,会将value通过Marshal接口序列化,然后再形成写集。 入参:要写入的键值对,要求key != "",并且value实现了Marshal接口,可以序列化为[]byte。 error:入参错误。 DelKV(key string) error 功能:删除状态数据库中的key及其对应的value,此接口只是将待删除的key放入写集,打包到交易中,当交易排序、出块、并校验通过之后,将key删除。 入参:要删除的key要求key != ""。 error:入参错误。 GetIterator(startKey, endKey string) (Iterator, error) 功能:查询状态数据库中,按字典序,以startKey开头,以endKey结尾的所有状态数据,结果以迭代器的形式呈现;查询范围是左闭右开的,[startKey, endKey)。 入参:startKey是待查询状态数据的按字典序的起始key,startKey != "",endKey是待查询的状态数据的按字典序的结束key,endKey!= ""。 返回值:Iterator是查询结果的迭代器,可以通过此迭代器,按顺序读取查询结果。 error:入参或网络错误。 GetKeyHistoryIterator(key string) (HistoryIterator, error) 功能:查询一个key对应的所有历史的value 入参:key是待查询历史value值的key信息,key != ""。 返回值:HistoryIterator是按顺序返回包含历史value结果的迭代器结构体变量。 error:入参或网络错误。 SaveComIndex(indexName string, attributes []string, objectKey string) error 功能:为objectKey保存索引信息,indexName_attributes_objectKey构成索引信息,注意,此处只是形成索引信息的写集,只有当含有此写集的交易经过排序、出块,并校验通过后,才会写入状态数据库。 入参:indexName 索引标记,indexName != "",attributes需要当做索引的属性,至少包含一个属性信息,objectKey 待索引的key值,objectKey != ""。 error:入参错误。 GetKVByComIndex(indexName string, attributes []string) (Iterator, error) 功能:通过索引信息,查找满足某种查询条件的key/value,key/value以迭代器的形式输出。 入参:indexName 索引标记,indexName != "",attributes需要当做索引的属性,至少包含一个属性信息 返回值:满足索引条件的key/value的迭代器变量。 error:入参或网络错误。 DelComIndexOneRow(indexName string, attributes []string, objectKey string) error 功能:删除objectKey的某个索引,indexName_attributes_objectKey构成索引信息,注意,此处只是形成索引信息的写集,只有当含有此写集的交易经过排序、出块,并校验通过后,才会写入状态数据库。 入参:indexName 索引标记,indexName != "",attributes需要当做索引的属性,至少包含一个属性信息,objectKey 待索引的key值,objectKey != ""。 error:入参错误。 SplitComKey(comKey string) (string, []string, error) 功能:将查询到的复合键分离为objectkey和对应的attributes。 返回值:objectkey,和attributes字符串数组。 GetKVByPartialComKey(objectType string, attributes []string) (Iterator, error) 功能:部分复合键查询。 返回值:Iterator包含查询返回信息,支持迭代获取。 表3 HistoryIterator迭代器接口 接口 说明 Version() (uint64, int32) 获取当前迭代位置(某笔交易)的 BlockNum 和 TxNum。 TxHash() []byte 获取当前迭代位置(某笔交易)的hash。 IsDeleted() bool 被查询的key,当前是否已经在状态数据库中被删除。 Timestamp() uint64 返回当前迭代位置(某笔交易)的时间戳。 父主题: Go合约开发
  • 请求示例 { "orgID" : "ce0ac69b0c8648cd25b44a551780409767c8890b", "channelID" : "mychannel", "cryptoMethod" : "SW", "cert" : "-----BEGIN CERTIFICATE-----\\n...\\n-----END CERTIFICATE-----", "sk" : "-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----", "timestamp" : "2020-10-27T17:28:16+08:00", "currentPage" : "string", "pageSizeNum" : "string", "provider" : "string", "searchText" : "string", "status" : "string" }
  • 响应示例 状态码: 200 数据集分页信息 { "items" : [ { "provider" : "did:example:DHkJjyD5wZwya6sd6BNBnG", "providerName" : "aws", "productName" : "prodname2", "productID" : "product2", "sampleUrl" : "http://hwcloud.com/sample.com/prodname2", "sampleSize" : "10KB", "sampleType" : "csv", "sampleName" : "data_sub1", "fileType" : "csv", "dataUrl" : "http://hwcloud.com/prodname2", "dataHash" : "2282ba7a1a2ef5700609214a997d3d4237a03bfd3632c6d089e57e7b6f467969", "dataSize" : "100MB", "dataName" : "mydata", "description" : "this is second prod", "price" : "0", "encryptedAesKey" : "BA4Ub3t3IskN8uKcEMa+4cbtsDS8OzF4V/qqb4OcPMeMvp7IL+HClzAbL6lPnhbDg/AnrStBlf0qFzRj+qvk6ZH0c7wP0aS48fSoNtecG79aFpFx0dg7rFdVYXWWzgeyI03eD3gFdXlQ/ovpxKJG5ALK39OCazUqDrawZHSDGyIlw0hGh88Q+GVORVSp+6V5Ag==", "status" : "ready", "publishTime" : "1607157244", "dataFiles" : [ { "fileType" : "csv", "dataUrl" : "http://hwcloud.com/prodname2", "dataHash" : "2282ba7a1a2ef5700609214a997d3d4237a03bfd3632c6d089e57e7b6f467969", "dataSize" : "100MB", "dataName" : "mydata" } ], "sampleFiles" : [ { "fileType" : "csv", "dataUrl" : "http://hwcloud.com/prodname2", "dataHash" : "2282ba7a1a2ef5700609214a997d3d4237a03bfd3632c6d089e57e7b6f467969", "dataSize" : "100MB", "dataName" : "mydata" } ], "category" : "string" } ], "pagination" : { "currentPage" : 1, "pageSizeNum" : 100, "totalItems" : 10 } } 状态码: 500 失败响应 { "errorCode" : "BCS.5002046", "errorMsg" : "Incorrect number of arguments" }
  • 请求参数 表1 请求Body参数 参数 是否必选 参数类型 描述 orgID 是 String 组织id channelID 是 String 通道id cryptoMethod 是 String 加密方法,目前固定为SW cert 是 String 证书 sk 是 String 私钥 timestamp 是 String 时间戳 currentPage 否 String 分页参数:当前页码(默认1) pageSizeNum 否 String 分页参数:每页条数(默认100) provider 否 String 过滤条件:发布者身份标识 searchText 否 String 过滤条件:匹配关键字(基于数据集中的产品名称、产品描述信息) status 否 String 过滤条件:数据集状态(ready、closed)
  • 响应参数 状态码: 200 表2 响应Body参数 参数 参数类型 描述 items Array of DatasetResponse objects 列表 pagination PaginationResp object 分页信息 表3 DatasetResponse 参数 参数类型 描述 provider String 数据集提供者身份标识 providerName String 数据集提供者名称 productName String 数据集产品名称 productID String 数据集产品id sampleUrl String 样例数据url sampleSize String 样例数据大小 sampleType String 样例数据类型 sampleName String 样例数据名称 fileType String 文件类型 dataUrl String 数据url dataHash String 数据哈希值 dataSize String 数据大小 dataName String 数据名称 description String 数据描述 price String 数据价格 encryptedAesKey String 密钥 status String 状态 publishTime String 数据发布时间 dataFiles Array of DataFile objects 数据文件列表 sampleFiles Array of DataFile objects 样例文件列表 category String 加密类型 表4 DataFile 参数 参数类型 描述 fileType String 文件类型 dataUrl String 数据url dataHash String 数据哈希 dataSize String 数据大小 dataName String 数据名称 表5 PaginationResp 参数 参数类型 描述 currentPage Integer 当前页码 pageSizeNum Integer 每页条数 totalItems Integer 总条数 状态码: 500 表6 响应Body参数 参数 参数类型 描述 errorCode String 错误码 errorMsg String 错误描述
  • 合约示例 进入在线编译器 https://remix.ethereum.org 创建solidity合约文件,并粘贴示例合约。 pragma solidity ^0.4.26; contract SimpleStorage { uint storedData; function set(uint x) public { storedData = x; } function get() public view returns (uint) { return storedData; } } 编译solidity合约,并复制bytecode结构体中的object值为合约字节码。 { "linkReferences": {}, "object":"***", "opcodes": "****", "sourceMap": "****" } 父主题: Solidity合约开发
  • 简介 本指导文档主要针对具备Go/Java开发经验的人员进行开发指导,其中合约与应用程序需客户自行开发,整体开发流程如下: 本文档主要包含以下内容: 合约开发,Go语言、Java合约、Solidity合约。 SDK介绍,主要介绍Java、Golang语言SDK。 应用程序开发,介绍Java、Golang语言客户端开发流程与示例Demo。 开发流程中的其他操作,请参考: 华为云 区块链 实例购买 合约安装 下载配置文件 父主题: 华为云区块链引擎管理
  • 响应示例 状态码: 200 ABE用户密钥订单信息 { "applyer" : "did:example:Mb4SshJeN5ukWXkbMJK8xC", "provider" : "did:example:Mb4SshJeN5ukWXkbMJK8xC", "applyTime" : "1622166512", "status" : "ready", "attributesJson" : "{\"att1\": \"YXR0MW5hbWU=\",\"att2\": \"YXR0Mm5hbWU=\",\"att3\": \"NQ==\"}" } 状态码: 500 失败响应 { "errorCode" : "BCS.5002046", "errorMsg" : "Incorrect number of arguments" }
  • 请求示例 { "orgID": "ce0ac69b0c8648cd25b44a551780409767c8890b", "channelID": "mychannel", "cryptoMethod": "SW", "cert": "-----BEGIN CERTIFICATE-----\\n...\\n-----END CERTIFICATE-----", "sk": "-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----", "timestamp": “2020-10-27T17:28:16+08:00”, "applyer": "did:example:Mb4SshJeN5ukWXkbMJK8xC", "provider": "did:example:Mb4SshJeN5ukWXkbMJK8xC", "attrJson": "[{\"name\":\"att1\",\"type\":\"plain\",\"value\":\"att1name\"},{\"name\":\"att2\",\"type\":\"plain\",\"value\":\"att2name\"},{\"name\":\"att3\",\"type\":\"plain\",\"value\":\"5\"}]" }
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 applyer String 申请者的身份标识 applyerName String 申请者的名称 provider String 授权者的身份标识 providerName String 授权者的名称 service String 授权者的服务名 price Integer 价格 applyTime String 申请时间 encryptedABEKey String 被加密的ABE密钥 status String 申请状态,request表示未授权;ready表示申请已处理 reason String 原因 lockProof String 证明 attributesJson String 属性 状态码: 500 表4 响应Body参数 参数 参数类型 描述 errorCode String 错误码 errorMsg String 错误描述
  • 请求参数 表1 请求Body参数 参数 是否必选 参数类型 描述 orgID 是 String 组织id channelID 是 String 通道id cryptoMethod 是 String 加密方法,目前固定为SW cert 是 String 证书 sk 是 String 私钥 timestamp 是 String 时间戳 applyer 是 String 申请者的身份标识 provider 是 String 授权者的身份标识 attrJson 是 Array of attribute objects 属性列表 表2 attribute 参数 是否必选 参数类型 描述 name 是 String 属性名 type 是 String 属性类型(plain,comparable) value 是 String 属性值(当type为plain时,value为属性值。当type为comparable时,value必须是整数。) maxValue 否 String 属性值上限,value可能取到的最大值。只在type为comparable时可选使用
  • 请求示例 { "orgID" : "ce0ac69b0c8648cd25b44a551780409767c8890b", "channelID" : "mychannel", "cryptoMethod" : "SW", "cert" : "-----BEGIN CERTIFICATE-----\\n...\\n-----END CERTIFICATE-----", "sk" : "-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----", "timestamp" : "2020-10-27T17:28:16+08:00", "provider" : "did:example:DHkJjyD5wZwya6sd6BNBnG", "productID" : "product1" }
  • 请求参数 表1 请求Body参数 参数 是否必选 参数类型 描述 orgID 是 String 组织id channelID 是 String 通道id cryptoMethod 是 String 加密方法,目前固定为SW cert 是 String 证书 sk 是 String 私钥 timestamp 是 String 时间戳 provider 是 String 数据集提供者身份标识 productID 是 String 数据产品id
  • 请求参数 表1 请求Body参数 参数 是否必选 参数类型 描述 orgID 是 String 组织id channelID 是 String 通道id cryptoMethod 是 String 加密方法,目前固定为SW cert 是 String 证书 sk 是 String 私钥 timestamp 是 String 时间戳 provider 是 String 数据集提供者身份标识 productID 是 String 数据产品id
  • 请求示例 { "orgID" : "ce0ac69b0c8648cd25b44a551780409767c8890b", "channelID" : "mychannel", "cryptoMethod" : "SW", "cert" : "-----BEGIN CERTIFICATE-----\\n...\\n-----END CERTIFICATE-----", "sk" : "-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----", "timestamp" : "2020-10-27T17:28:16+08:00", "provider" : "did:example:DHkJjyD5wZwya6sd6BNBnG", "productID" : "product1" }
  • 合约编译 下载Node.js软件并安装,安装成功后,执行如下命令查看对应版本(软件对应版本无强制要求)。 node -v npm -v 设置新目录assembly,在该目录下执行 npm init 命令,其中package name输入为assembly(目录名、package name建议保持一致,具体名称无强制要求,可自行定义)。 执行如下命令通过npm安装加载器和编译器 npm install --save @assemblyscript/loader npm install --save-dev assemblyscript 若安装过程中出现“ idealTree:assembly: sill idealTree buildDeps”,请确认npm使用镜像源可正常访问。 查看npm镜像源配置命令 npm config get registry 设置npm镜像源配置命令 npm config set registry 国内镜像源地址 执行如下命令,利用编译器提供的脚手架设置新项目 npx asinit . 参考示例Demo完成合约文件contract.ts编写与合约SDK文件index.ts引用后,执行build命令编译AssemblyScript类型的合约文件,编译成功后在build目录下生成optimized.wasm字节码文件(该字节码文件可重新命名)。 npm run asbuild 父主题: 示例Demo
  • 利用合约发送交易 背书消息构建 接口函数 func (msg *ContractRawMessage) BuildInvokeMessage(chainID string, name string, function string, args []string) (*common.RawMessage, error) 参数说明 参数 类型 说明 chainID string 链ID。 name string 合约名称。 function string 调用合约中的方法名。 args []string 合约方法参数。 返回值 类型 说明 *common.RawMessage 背书请求需发送的消息。 error 发送成功返回类型为nil,反之返回error。 背书请求消息发送。 接口函数 func (action *ContractAction) Invoke(rawMsg *common.RawMessage) (*common.RawMessage, error) 参数说明 参数 类型 说明 rawMsg *common.RawMessage 上述背书请求需发送的消息。 返回值 类型 说明 *common.RawMessage 背书请求需发送的消息。 error 发送成功返回类型为nil,反之返回error。 交易消息构建。 接口方法 func (msg *ContractRawMessage) BuildTxRawMsg(rawMessages []*common.RawMessage) (*TxRawMsg, error) 参数说明 参数 类型 说明 rawMessages []*common.RawMessage 背书请求返回结果集合。 返回值 类型 说明 *TxRawMsg 包含交易hash的交易请求信息,该消息使用transaction接口发送。 error 构建成功返回类型为nil,反之返回error。 交易消息发送。 接口方法 func (action *ContractAction) Transaction(rawMsg *common.RawMessage) (*common.RawMessage, error) 参数说明 参数 类型 说明 rawMsg *common.RawMessage 上述生成的交易消息。 返回值 类型 说明 *common.RawMessage 用于获取包含发送结果的消息。 error 发送成功返回类型为nil,反之返回error。 父主题: Go SDK介绍
  • 请求示例 { "orgID" : "4f1439758ebb41f7411b5f684b67713c08b89198", "channelID" : "mychannel", "cryptoMethod" : "SW", "cert" : "-----BEGIN CERTIFICATE-----\n...\n...\n-----END CERTIFICATE-----", "sk" : "------BEGIN PRIVATE KEY-----\n...\n...\n-----END PRIVATE KEY-----", "timestamp" : "2020-10-27T17:28:16+08:00", "orderIndex" : 1 }
  • 响应示例 状态码: 200 UntreatedVCOrder Information List { "items" : [ { "applyer" : "string", "orderSeq" : "string", "applyTime" : "string", "price" : "string", "status" : "string", "service" : "string", "reason" : "string", "dataUri" : "string", "encryptedAesKey" : "string", "uriType" : "string", "dataHash" : "string", "lockProof" : "string", "vcIndex" : "string" } ] } 状态码: 500 失败响应 { "errorCode" : "stringst", "errorMsg" : "string" }
  • 响应参数 状态码: 200 表2 响应Body参数 参数 参数类型 描述 items Array of VCOrder objects 列表 表3 VCOrder 参数 参数类型 描述 applyer String 申请者身份标识 orderSeq String 订单序列号 applyTime String 申请时间 price String 价格 status String 状态 service String 服务 reason String 理由信息 dataUri String 凭证数据URI encryptedAesKey String 加密的AES密钥 uriType String URI类型 dataHash String 数据的hash lockProof String 锁定证明 vcIndex String 凭证索引 状态码: 500 表4 响应Body参数 参数 参数类型 描述 errorCode String 错误码 最小长度:8 最大长度:36 errorMsg String 错误描述 最小长度:2 最大长度:512
  • 请求参数 表1 请求Body参数 参数 是否必选 参数类型 描述 orgID 是 String 组织id channelID 是 String 通道id cryptoMethod 是 String 加密方法,目前固定为SW cert 是 String 用户证书,每行末尾均需要增加显式换行符\n sk 是 String 用户私钥,每行末尾均需要增加显式换行符\n timestamp 是 String 时间戳 serviceID 否 String 服务的标识符
共100000条