2 JSON-RPC API

2.7 文件上链接口

恒为区块链底层融合IPFS协议,提供大文件上链的功能。区块链节点的存储和带宽资源比较珍贵。遵循“谁消耗,谁付费;谁提供服务,谁收益。”的原则,文件上链和链上文件下载都需要按照大小进行收费。费用支付给节点的搭建者,费用的收费标准由节点搭建者自己设定。

2.7.1 上传文件

2.7.2 文件付费上链

2.7.3 付费获取下载所需信息

2.7.4 在线签名下载

2.7.5 离线签名下载

2.7.1 上传文件

通过 HTTP POST multipart/form-data 的方式将待上链文件上传到文件上链节点服务器先缓存。并返回如下文件上链的付费信息:

{
    "accountID": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
    "downloadFee": 10,
    "files": [
        {
            "content_type": "application/octet-stream",
            "id": "QmPGizoTY6LVv6ZoxajCwCNeQsyivMdzAUn9EJRPeJ31df",
            "md5": "haf59aa2e050998a3236182d9b4c4a64",
            "name": "abc.txt",
            "size": "51"
        }
    ],
    "storageFee": 11
}

上面的备注内容中包含了需要上链文件的信息。

字段名称 类型 描述
accountID string 节点收费账账号
downloadFee unsigned int 文件的下载费率
storageFee unsigned int 文件的存储费率
content_type object 文件的传输格式
id string 文件的IPFS hash值
md5 string 文件的md5值
name string 文件名称

2.7.2 文件付费上链

请求:

{
    "method": "submit",
    "params": [{
        "offline": false,
        "secret": "ss3ZBtHP********ryGE4Kuf",
        "tx_json": {
            "Account": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
            "Amount": 100,
            "Destination": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
            "TransactionType": "Payment",
            "Memos": [{
                "Memo": {
                    "MemoData": "7b0d0a20202020226163636f756e744944223a202236397236454639446842526e383556447068714675593571554a3945666a52633831222c0d0a2020202022646f776e6c6f6164466565223a2031302c0d0a202020202266696c6573223a205b0d0a20202020202020207b0d0a20202020202020202020202022636f6e74656e745f74797065223a20226170706c69636174696f6e2f6f637465742d73747265616d222c0d0a202020202020202020202020226964223a2022516d5047697a6f5459364c5676365a6f78616a4377434e6551737969764d647a41556e39454a5250654a33316466222c0d0a202020202020202020202020226d6435223a20223661663539616132653035303939386133323336313832643962346334613634222c0d0a202020202020202020202020226e616d65223a20226162632e747874222c0d0a2020202020202020202020202273697a65223a20223531220d0a20202020202020207d0d0a202020205d2c0d0a202020202273746f72616765466565223a2031310d0a7d",
                    "MemoFormat" : "4A534F4E",
                    "MemoType": "46696c6555706c6f6164"
                }
            }]
        }
    }]
}
字段名称 类型 描述
method string RPC接口名称
offline bool 是否离线提交。默认false
Amount unsigned int 金额。值不小于(size+storage_fee-1)/storage_fee
Memos object[] (可选)备注集
Memo object 备注
MemoData string 备注内容,必须是Hex编码格式。本例中的内容为“注1”的json数据转换成十六进制后的值。
MemoFormat string 备注内容格式,必须是Hex编码格式。本例中的值为“JSON”的十六进制值。
MemoType string 备注类型,必须是Hex编码格式。例如“string”,Hex编码后是“737472696E67”

注1: 下面是MemoData 十六进制解码后的json格式数据。即2.7.1中节点返回的收费信息。

{
    "accountID": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
    "downloadFee": 10,
    "files": [
        {
            "content_type": "application/octet-stream",
            "id": "QmPGizoTY6LVv6ZoxajCwCNeQsyivMdzAUn9EJRPeJ31df",
            "md5": "haf59aa2e050998a3236182d9b4c4a64",
            "name": "abc.txt",
            "size": "51"
        }
    ],
    "storageFee": 11
}

响应结果:

{
    "result": {
        "engine_result": "tesSUCCESS",
        "engine_result_code": 0,
        "engine_result_message": "The transaction was applied. Only final in a validated ledger.",
        "status": "success",
        "tx_blob": "12000022800000002400000005614000000000000064684000000000002710732103BD349FF8764509DA13C2470455546D9BC0D8CB570617315BDD02C02DFED333D1744630440220115B35406BA565DE6CA34076F0246A77745E32BF4E4AAD641CB01A97BAFB1F7E02204080C2A692710DBE891221C77787F06101287EFFA068547FF7E07829B49E64E08114F501326012BC453DDE1FABE98EAD4AEC1C8B2BDE83145F51DBA17F3AC05DDBEF373AB304EA894472A219F9EA7C0A46696C6555706C6F61647DC1C77B0D0A20202020226163636F756E744944223A202236397236454639446842526E383556447068714675593571554A3945666A52633831222C0D0A2020202022646F776E6C6F6164466565223A2031302C0D0A202020202266696C6573223A205B0D0A20202020202020207B0D0A20202020202020202020202022636F6E74656E745F74797065223A20226170706C69636174696F6E2F6F637465742D73747265616D222C0D0A202020202020202020202020226964223A2022516D5047697A6F5459364C5676365A6F78616A4377434E6551737969764D647A41556E39454A5250654A33316466222C0D0A202020202020202020202020226D6435223A20223661663539616132653035303939386133323336313832643962346334613634222C0D0A202020202020202020202020226E616D65223A20226162632E747874222C0D0A2020202020202020202020202273697A65223A20223531220D0A20202020202020207D0D0A202020205D2C0D0A202020202273746F72616765466565223A2031310D0A7D7E044A534F4EE1F1",
        "tx_json": {
            "Account": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
            "Amount": "100",
            "Destination": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
            "Fee": "10000",
            "Flags": 2147483648,
            "Memos": [
                {
                    "Memo": {
                        "MemoData": "7B0D0A20202020226163636F756E744944223A202236397236454639446842526E383556447068714675593571554A3945666A52633831222C0D0A2020202022646F776E6C6F6164466565223A2031302C0D0A202020202266696C6573223A205B0D0A20202020202020207B0D0A20202020202020202020202022636F6E74656E745F74797065223A20226170706C69636174696F6E2F6F637465742D73747265616D222C0D0A202020202020202020202020226964223A2022516D5047697A6F5459364C5676365A6F78616A4377434E6551737969764D647A41556E39454A5250654A33316466222C0D0A202020202020202020202020226D6435223A20223661663539616132653035303939386133323336313832643962346334613634222C0D0A202020202020202020202020226E616D65223A20226162632E747874222C0D0A2020202020202020202020202273697A65223A20223531220D0A20202020202020207D0D0A202020205D2C0D0A202020202273746F72616765466565223A2031310D0A7D",
                        "MemoFormat": "4A534F4E",
                        "MemoType": "46696C6555706C6F6164"
                    }
                }
            ],
            "Sequence": 5,
            "SigningPubKey": "03BD349FF8764509DA13C2470455546D9BC0D8CB570617315BDD02C02DFED333D1",
            "TransactionType": "Payment",
            "TxnSignature": "30440220115B35406BA565DE6CA34076F0246A77745E32BF4E4AAD641CB01A97BAFB1F7E02204080C2A692710DBE891221C77787F06101287EFFA068547FF7E07829B49E64E0",
            "hash": "FBE874F81108C8E110FF022A766F7C923C3C0CB3992C436302E199A8FCA77154"
        }
    }
}
字段名称 类型 描述
engine_result string 支付执行结果
engine_result_code int 支付结果代码
engine_result_message string 支付结果信息
tx_blob string 签名结果,二进制数据格式
tx_json object 交易要素,json格式
Memos object[] (可选)备注集
Memo object 备注
MemoData string 备注内容,必须是Hex编码格式
MemoFormat string 备注内容格式,必须是Hex编码格式。本例中的值为"JSON"的十六进制值。
MemoType string 备注类型,必须是Hex编码格式。本例中的值为“FileUpload”的十六进制值。
Fee string 交易燃料费,单位为滴
status string 响应状态

2.7.3 付费获取下载所需信息

请求:

{
    "method": "submit",
    "params": [{
        "offline": false,
        "secret": "ss3ZBtHP********ryGE4Kuf",
        "tx_json": {
            "Account": "hnUy2SHT6B9DubsPmkJZUXTf5FcNDG6YEA",
            "Amount": 100,
            "Destination": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
            "TransactionType": "Payment",
            "Memos": [{
             "Memo" : {
                "MemoData" : "7B0D0A20202020226163636F756E744944223A202236397236454639446842526E383556447068714675593571554A3945666A52633831222C0D0A2020202022646F776E6C6F6164466565223A2031302C0D0A202020202266696C6573223A205B0D0A20202020202020207B0D0A20202020202020202020202022636F6E74656E745F74797065223A20226170706C69636174696F6E2F6F637465742D73747265616D222C0D0A202020202020202020202020226964223A2022516D5047697A6F5459364C5676365A6F78616A4377434E6551737969764D647A41556E39454A5250654A33316466222C0D0A202020202020202020202020226D6435223A20223661663539616132653035303939386133323336313832643962346334613634222C0D0A202020202020202020202020226E616D65223A20226162632E747874222C0D0A2020202020202020202020202273697A65223A20223531220D0A20202020202020207D0D0A202020205D2C0D0A202020202273746F72616765466565223A2031310D0A7D",
                "MemoFormat" : "4A534F4E",
                "MemoType" : "46696C65446F776E6C6F6164"
             }
            }]
        }
    }]
}
字段名称 类型 描述
method string RPC接口名称
offline bool 是否离线提交。默认false
Amount unsigned int 金额。值不小于(size+download_fee-1)/download_fee
Memos object[] (可选)备注集
Memo object 备注
MemoData string 备注内容,必须是Hex编码格式本例中的值由“注2”中的json内容经十六进制转换而来。
MemoFormat string 备注内容格式,必须是Hex编码格式。本例中的值为"JSON"的十六进制值。
MemoType string 备注类型,必须是Hex编码格式。本例中的值为"FileDownload"的十六进制值。

注2:

{
    "accountID": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
    "downloadFee": 10,
    "files": [
        {
            "content_type": "application/octet-stream",
            "id": "QmPGizoTY6LVv6ZoxajCwCNeQsyivMdzAUn9EJRPeJ31df",
            "md5": "haf59aa2e050998a3236182d9b4c4a64",
            "name": "abc.txt",
            "size": "51"
        }
    ],
    "storageFee": 11
}

响应结果:

{
    "result": {
        "engine_result": "tesSUCCESS",
        "engine_result_code": 0,
        "engine_result_message": "The transaction was applied. Only final in a validated ledger.",
        "password": "2BCC04AB4DE1E31E16EC1CE80A10D6529AB48A50F59D8FD7EBF418AD298AA0E4",
        "status": "success",
        "tx_blob": "12000022800000002400000013614000000000000064684000000000002710732103EAC169AF572EB52038D1C51F7E5B9C94CE34A7FBB714860BE001BDE25A4B03C8744730450221008744D855D265CC540BDFAA42D1722CCEFA9C3C7262127F03A5CC7C01E0FEAC3402204CCF2F02AB9D61FE9C0446DF21BD76CB16897B4F1354E33D13812642D2CD8DA781142E244E6F20104E57C0C60BD823CB312BF10928C783145F51DBA17F3AC05DDBEF373AB304EA894472A219F9EA7C0C46696C65446F776E6C6F61647DC1C77B0D0A20202020226163636F756E744944223A202236397236454639446842526E383556447068714675593571554A3945666A52633831222C0D0A2020202022646F776E6C6F6164466565223A2031302C0D0A202020202266696C6573223A205B0D0A20202020202020207B0D0A20202020202020202020202022636F6E74656E745F74797065223A20226170706C69636174696F6E2F6F637465742D73747265616D222C0D0A202020202020202020202020226964223A2022516D5047697A6F5459364C5676365A6F78616A4377434E6551737969764D647A41556E39454A5250654A33316466222C0D0A202020202020202020202020226D6435223A20223661663539616132653035303939386133323336313832643962346334613634222C0D0A202020202020202020202020226E616D65223A20226162632E747874222C0D0A2020202020202020202020202273697A65223A20223531220D0A20202020202020207D0D0A202020205D2C0D0A202020202273746F72616765466565223A2031310D0A7D7E044A534F4EE1F1",
        "tx_json": {
            "Account": "hnUy2SHT6B9DubsPmkJZUXTf5FcNDG6YEA",
            "Amount": "100",
            "Destination": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
            "Fee": "10000",
            "Flags": 2147483648,
            "Memos": [
                {
                    "Memo": {
                        "MemoData": "7B0D0A20202020226163636F756E744944223A202236397236454639446842526E383556447068714675593571554A3945666A52633831222C0D0A2020202022646F776E6C6F6164466565223A2031302C0D0A202020202266696C6573223A205B0D0A20202020202020207B0D0A20202020202020202020202022636F6E74656E745F74797065223A20226170706C69636174696F6E2F6F637465742D73747265616D222C0D0A202020202020202020202020226964223A2022516D5047697A6F5459364C5676365A6F78616A4377434E6551737969764D647A41556E39454A5250654A33316466222C0D0A202020202020202020202020226D6435223A20223661663539616132653035303939386133323336313832643962346334613634222C0D0A202020202020202020202020226E616D65223A20226162632E747874222C0D0A2020202020202020202020202273697A65223A20223531220D0A20202020202020207D0D0A202020205D2C0D0A202020202273746F72616765466565223A2031310D0A7D",
                        "MemoFormat": "4A534F4E",
                        "MemoType": "46696C65446F776E6C6F6164"
                    }
                }
            ],
            "Sequence": 19,
            "SigningPubKey": "03EAC169AF572EB52038D1C51F7E5B9C94CE34A7FBB714860BE001BDE25A4B03C8",
            "TransactionType": "Payment",
            "TxnSignature": "30450221008744D855D265CC540BDFAA42D1722CCEFA9C3C7262127F03A5CC7C01E0FEAC3402204CCF2F02AB9D61FE9C0446DF21BD76CB16897B4F1354E33D13812642D2CD8DA7",
            "hash": "039F3D2CD5ED0B58B6E6EF3827474D243C604377302B1424D5036755639E7476"
        }
    }
}
字段名称 类型 描述
engine_result string 支付执行结果
engine_result_code int 支付结果代码
engine_result_message string 支付结果信息
password string 支付结果的临时密钥信息,下载ipfs文件时有用,一小时内有效
tx_blob string 签名结果,二进制数据格式
tx_json object 交易要素,json格式
Memos object[] (可选)备注集
Memo object 备注
MemoData string 备注内容,必须是Hex编码格式
MemoFormat string 备注内容格式,必须是Hex编码格式。本例中的值为"JSON"的十六进制值。
MemoType string 备注类型,必须是Hex编码格式。
Fee string 交易燃料费,单位为滴
status string 响应状态

2.7.4 在线签名下载

请求:

{
    "method": "download",
    "params":[{
    "transaction": "039F3D2CD5ED0B58B6E6EF3827474D243C604377302B1424D5036755639E7476",
    "password": "2BCC04AB4DE1E31E16EC1CE80A10D6529AB48A50F59D8FD7EBF418AD298AA0E4",
    "secret": "ss3ZBtHP7*************ryGE4Kuf"
    }]
}
字段名称 类型 描述
method string RPC接口名称
transaction string 交易哈希
password string 支付结果的临时密钥信息,下载ipfs文件时有用,一小时内有效。
secret string 私钥

响应结果:

abc123
abc123
abc123
abc123
Hello hwchain+IPFS

返回的是文件的内容。

2.7.5 离线签名下载

本地根据signature算法生成签名(对transaction与password连接形成的字符串进行签名)

请求:


{
    "method": "signature",
    "params":[{
    "transaction": "039F3D2CD5ED0B58B6E6EF3827474D243C604377302B1424D5036755639E7476",
    "password": "2BCC04AB4DE1E31E16EC1CE80A10D6529AB48A50F59D8FD7EBF418AD298AA0E4",
    "secret": "ss3ZBtHP7*************ryGE4Kuf"
    }]
}
字段名称 类型 描述
method string RPC接口名称
transaction string 交易哈希
password string 支付结果的临时密钥信息,下载ipfs文件时有用,一小时内有效
secret string 私钥

响应结果:

3045022100A6C88C963AF2F1DC9E164352644D46ED6ECA0FAF9F596FB6FEDD210D81D76B4B02205AEBFA1DBA13FDFB5BD0A85FEE2AEFB4BD304610CA15CFD4456B42E4D6952255

返回的是带password的签名信息。

ii. 提交签名,下载

请求:

{
    "method": "download",
    "params":[{
    "transaction": "039F3D2CD5ED0B58B6E6EF3827474D243C604377302B1424D5036755639E7476",
    "password": "2BCC04AB4DE1E31E16EC1CE80A10D6529AB48A50F59D8FD7EBF418AD298AA0E4",
    "signature": "3045022100A6C88C963AF2F1DC9E164352644D46ED6ECA0FAF9F596FB6FEDD210D81D76B4B02205AEBFA1DBA13FDFB5BD0A85FEE2AEFB4BD304610CA15CFD4456B42E4D6952255"
    }]
}
字段名称 类型 描述
method string RPC接口名称
transaction string 交易哈希
password string 支付结果的临时密钥信息,下载ipfs文件时有用,一小时内有效
secret string 私钥

响应结果:

abc123
abc123
abc123
abc123
Hello hwchain+IPFS

返回的是文件的内容。

results matching ""

    No results matching ""