Navigation

    BBS.cash

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • header.languages
    1. Home
    2. 昌用
    3. Posts
    昌
    • Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Best
    • Groups

    Posts made by 昌用

    • APIP15V1_ProofOnChain(zh-CN)
      APIP15V1_ProofOnChain(zh-CN)
      Version:1
      Language:zh-CN
      Author:C_armX
      Status:draft
      Create:2022-05-06
      Update:2022-05-06
      PID:""
      TXID:
      

      APIP15V1_ProofOnChain(zh-CN)


      目录

      关于APIP

      关于本协议

      getProofList

      getProofOpHistory


      Type:APIP
      SerialNumber:14
      ProtocolName:ProofOnChain
      Version:1
      Description:定义链上证明信息的接口。
      Author:C_armX
      Language:zh-CN
      preVersionHash:""
      

      关于APIP

      概述

      APIP(Application Programming Interface Protocols)是自由共识生态协议的一种类型,用于创建和发布开放的API文档,供API服务方开发部署通用API服务,以实现数据服务的去中心化。API需求方可以按照APIP协议从遵循该协议的任何一个API服务方那里获取数据服务。

      通用规则

      《APIP1_OpenAPI》规范了APIP类型协议的协议发布、接口标识、接口URL构成、时间戳格式、密码算法、服务流程、商业模式、连接接口,数据接口和查询语法的通用规则。设计、开发或应用APIP协议前,应先参考《APIP1_OpenAPI》协议。

      建立连接

      使用APIP协议各接口,须先采用《APIP1_OpenAPI》的connect接口从API服务方获取symKey。参见《APIP1_OpenAPI》的“connect接口”。

      通用请求参数

      APIP类型协议接口的通用请求参数如下:

      name type description requested
      requester string 请求方的fch地址 Y
      url string 当前所请求api的url Y
      timestamp timestamp 发起请求的时间戳,精确到毫秒 Y
      query object 请求数据的查询语句,参见”APIP简易查询语法@APIP1“ N
      sort object 请求数据的排序语句,参见”APIP简易查询语法@APIP1“ N
      from int 请求列表数据时的起始位置,从0开始 N
      size int 请求列表数据时的每页条目数 N
      sign string 用symkey对其他参数所做的签名 Y

      通用响应方式

      响应前所作的验证、通用响应状态码、通用响应参数参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      请求成功的通用响应参数为:

      参数 类型 说明 适用状态
      code int 响应状态码 all
      message string 响应状态描述 all
      data object 正常返回数据,由具体APIP定义。 0
      sign string 将symKey加入响应参数做两次sha256哈希的签名值 all

      具体APIP协议的特定响应参数在data参数中给出,并定义具体接口的响应状态。

      请求失败的通用响应码、响应信息和响应参数,参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      签名与验证

      APIP接口的请求和响应都需要签名和验证。

      connect接口请求时用私钥签名,公钥验证,响应时无需签名。

      所有数据请求和数据响应,采用以下方法:

      签名:将对称密钥symKey加入参数压缩升序后计算两次sha256,得到sign的值,再用sign替换参数中的symKey。

      验证:将sign从参数中取出,加入symKey,压缩升序后做两次sha256计算,将值与sign的值比较,一致则验证通过。

      详见《APIP1_OpenAPI》

      关于本协议

      1. 本协议接口提供链上公开发布的声明信息。

      2. 本协议接口的数据来源和相关规则遵循以下协议:

        • 《FEIP33_Proof》
      3. 本协议接口数据采用JSON格式。

      4. 示例数据:
        requester:FEk41Kqjar45fLDriztUDTUkdki7mmcjWK

      requester的公钥pubKey:030be1d7e633feb2338a74a860e76d893bac525f35a5813cb7b21e27ba1bc8312a

      requester的私钥priKey:L2bHRej6Fxxipvb4TiR5bu1rkT3tRp8yWEsUy4R1Zb8VMm2x7sd8

      requester获得的对称密钥symKey:d2c03bbc1ba1380eafc395374e8da61f92545a1aac5d30b0c19289a69bd34a09

      服务方链上发布的urlMainPart: https://www.sign.cash/api/

      接口url:https://www.sign.cash/api/APIP15/v1/[接口名称]


      getProofList

      获取链上证明信息。

      url

      [服务方发布的urlMainPart]APIP15/v1/getProofList

      示例:

      https://www.sign.cash/api/APIP15/v1/getProofList

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      响应参数data.list中各字段均可作为查询字段。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX在链上发布的证明,按交易时间戳倒序,获取从第1条到第20条。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/APIP15/v1/getProofList",
      	"query": {
      		"term": {
      			"address": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX"
      		}
      	},
      	"sort": [{
      		"txTimestamp": {
      			"order": "desc"
      		}
      	}],
      	"from": 0,
      	"size": 20,
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description key in FEIP33
      proofId string The txid in which the proof was issued
      issuer string The address of the first input of the transaction in which the proof was issued.
      holder string The address of the recent holder.
      signer string array The addresses who were invited to sign and signed the proof.
      allHolders string array All addresses who had held or are holding the proof, inclouding the issuer and the holder.
      transferable string Is this proof transferable? data.transferable
      title string The title of Proof data.title
      content string The content of Proof data.content
      firstTimestamp timeStamp The timeStamp of the transaction in which the proof was first published.
      firstBlockHeight uint The height of the block in which the proof was first published.
      lastTxid string The txid of the last operation of the proof.
      lastTimestamp timeStamp The transaction timestamp of the last operation of the proof.
      lastBlockHeight uint The height of the block of the last operation of the proof.
      tCdd uint64 The total destroyed coindays of all transactions with valid operation.
      status bool Is the proof in effect.
      • 示例

      响应查询FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX在链上发布的证明,按交易时间戳倒序,获取从第1条到第20条。

      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      				"proofId": "222220000000000011111",
      				"issuer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      				"holder": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX",
      				"signer": [""],
      				"allHolder": ["FEk41Kqjar45fLDriztUDTUkdki7mmcjWK", "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX"],
      				"transferable": 1,
      				"title": "IOU",
      				"content": "I owe the holder 1000usdt to be paid back on January 1, 2023 at 10% APR.",
      				"firstTimestamp": 1610261291,
      				"firstBlockHeight": 963510,
      				"lastTxid": "1111111111111111111111111",
      				"lastTimestamp": 1636526891,
      				"lastBlockHeight": 963512,
      				"tCdd": 12300000,
      				"status": 1
      			},
      			{
      				"proofId": "33333300000000000000000",
      				"issuer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      				"holder": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX",
      				"signer": [""],
      				"allHolder": ["FEk41Kqjar45fLDriztUDTUkdki7mmcjWK", "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX"],
      				"transferable": 0,
      				"title": "Stock of sign.cash",
      				"content": "The holder of this proof has a 10% stake in sign.cash.",
      				"firstTimestamp": 1619261292,
      				"firstBlockHeight": 963600,
      				"lastTxid": "3333300000000222222233333",
      				"lastTimestamp": 1619261292,
      				"lastBlockHeight": 963612,
      				"tCdd": 221800,
      				"status": 1
      			}
      		],
      		"total": 2,
      		"bestHeight": 963667
      	},
      	"sign": ""
      }
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。


      getProofOpHistory

      查询证明链上操作历史信息。

      url

      [服务方发布的urlMainPart]apip6/v1/getProofOpHistory

      示例:

      https://www.sign.cash/api/apip6/v1/getProofOpHistory

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      响应参数data.list中各字段均可作为查询字段。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询proofID为"0000000011111111111111111111111222"的证明操作记录,按交易时间戳倒序,获取第1批20条。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip7/v1/getProofOpHistory",
      	"query": {
      		"term": {
      			"proofID": "0000000011111111111111111111111222"
      		}
      	},
      	"sort": [{
      		"txTimestamp": {
      			"order": "desc"
      		}
      	}],
      	"from": 0,
      	"size": 20,
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description
      proofId string
      op string The operation.
      signer uint The address of the first input of the transaction
      recipients string array The addresses of the outputs except the signer.
      transferable string Is this proof transferable?
      title string The title of Proof
      content string The content of Proof
      cdd uint64 Coindays destroyed
      txid string The txid of this transaction
      txTimestamp timestamp The timestamp of this transaction
      blockHeight uint The height of the block where the transaction is written
      • 示例
        响应proofId为"0000000011111111111111111111111222"的证明操作历史,按交易时间戳倒序,从0到20条。
      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      				"proofId": "0000000011111111111111111111111222",
      				"op": "destroy",
      				"signer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      				"recipients": [""],
      				"cdd": 200,
      				"txid": "333333333333333333",
      				"txTimestamp": 1618999999999,
      				"blockHeight": 989999
      			},
      			{
      				"proofId": "0000000011111111111111111111111222",
      				"op": "issue",
      				"signer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      				"recipients": ["FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX"],
      				"transferable": 0,
      				"title": "Stock of sign.cash",
      				"content": "The holder of this proof has a 10% stake in sign.cash.",
      				"cdd": 3100,
      				"txid": "2222222222222222222222",
      				"txTimestamp": 1618832997321,
      				"blockHeight": 989302
      			}
      		],
      		"total": 2,
      		"bestHeight": 993667
      	},
      	"sign": ""
      }
      
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      posted in Protocol/协议
      昌
      昌用
    • APIP14V1_DeclarationOnChain(zh-CN)
      APIP14V1_DeclarationOnChain(zh-CN)
      Version:1
      Language:zh-CN
      Author:C_armX
      Status:draft
      Create:2022-05-06
      Update:2022-05-06
      PID:""
      TXID:
      

      APIP14V1_DeclarationOnChain(zh-CN)


      目录

      关于APIP

      关于本协议

      getDeclarationList


      Type:APIP
      SerialNumber:14
      ProtocolName:DeclarationOnChain
      Version:1
      Description:定义链上声明信息的接口。
      Author:C_armX
      Language:zh-CN
      preVersionHash:""
      

      关于APIP

      概述

      APIP(Application Programming Interface Protocols)是自由共识生态协议的一种类型,用于创建和发布开放的API文档,供API服务方开发部署通用API服务,以实现数据服务的去中心化。API需求方可以按照APIP协议从遵循该协议的任何一个API服务方那里获取数据服务。

      通用规则

      《APIP1_OpenAPI》规范了APIP类型协议的协议发布、接口标识、接口URL构成、时间戳格式、密码算法、服务流程、商业模式、连接接口,数据接口和查询语法的通用规则。设计、开发或应用APIP协议前,应先参考《APIP1_OpenAPI》协议。

      建立连接

      使用APIP协议各接口,须先采用《APIP1_OpenAPI》的connect接口从API服务方获取symKey。参见《APIP1_OpenAPI》的“connect接口”。

      通用请求参数

      APIP类型协议接口的通用请求参数如下:

      name type description requested
      requester string 请求方的fch地址 Y
      url string 当前所请求api的url Y
      timestamp timestamp 发起请求的时间戳,精确到毫秒 Y
      query object 请求数据的查询语句,参见”APIP简易查询语法@APIP1“ N
      sort object 请求数据的排序语句,参见”APIP简易查询语法@APIP1“ N
      from int 请求列表数据时的起始位置,从0开始 N
      size int 请求列表数据时的每页条目数 N
      sign string 用symkey对其他参数所做的签名 Y

      通用响应方式

      响应前所作的验证、通用响应状态码、通用响应参数参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      请求成功的通用响应参数为:

      参数 类型 说明 适用状态
      code int 响应状态码 all
      message string 响应状态描述 all
      data object 正常返回数据,由具体APIP定义。 0
      sign string 将symKey加入响应参数做两次sha256哈希的签名值 all

      具体APIP协议的特定响应参数在data参数中给出,并定义具体接口的响应状态。

      请求失败的通用响应码、响应信息和响应参数,参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      签名与验证

      APIP接口的请求和响应都需要签名和验证。

      connect接口请求时用私钥签名,公钥验证,响应时无需签名。

      所有数据请求和数据响应,采用以下方法:

      签名:将对称密钥symKey加入参数压缩升序后计算两次sha256,得到sign的值,再用sign替换参数中的symKey。

      验证:将sign从参数中取出,加入symKey,压缩升序后做两次sha256计算,将值与sign的值比较,一致则验证通过。

      详见《APIP1_OpenAPI》

      关于本协议

      1. 本协议接口提供链上公开发布的声明信息。

      2. 本协议接口的数据来源和相关规则遵循以下协议:

        • 《FEIP8_Declaration》
      3. 本协议接口数据采用JSON格式。

      4. 示例数据:
        requester:FEk41Kqjar45fLDriztUDTUkdki7mmcjWK

      requester的公钥pubKey:030be1d7e633feb2338a74a860e76d893bac525f35a5813cb7b21e27ba1bc8312a

      requester的私钥priKey:L2bHRej6Fxxipvb4TiR5bu1rkT3tRp8yWEsUy4R1Zb8VMm2x7sd8

      requester获得的对称密钥symKey:d2c03bbc1ba1380eafc395374e8da61f92545a1aac5d30b0c19289a69bd34a09

      服务方链上发布的urlMainPart: https://www.sign.cash/api/

      接口url:https://www.sign.cash/api/APIP14/v1/[接口名称]

      getDeclarationList

      获取链上链上声明信息。

      url

      [服务方发布的urlMainPart]APIP14/v1/getDeclarationList

      示例:

      https://www.sign.cash/api/APIP14/v1/getDeclarationList

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      响应参数data.list中各字段均可作为查询字段。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX在链上发布的声明,按交易时间戳倒序,获取从第1条到第20条。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/APIP14/v1/getDeclarationList",
      	"query": {
      		"term": {
      			"address": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX"
      		}
      	},
      	"sort": [{
      		"txTimestamp": {
      			"order": "desc"
      		}
      	}],
      	"from": 0,
      	"size": 20,
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description key in FEIP8
      address string The address of the first input of the transaction.
      title string The title of declaration data.title
      content string The content of declaration data.content
      txid string The txid of this transaction
      txTimestamp timestamp The timestamp of this transaction
      blockHeight uint The height of the block where the transaction is written
      • 示例

      响应查询FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX当前有效的链上HAT信息,按交易时间戳倒序,获取第1批20条。

      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      				"address": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX",
      				"title": "House for sell",
      				"content": "Sale of a property in the heart of New York City with an area of 500 square meters and a total price of 50 million US dollars.",
      				"txid": 1636526891228,
      				"txTimestamp": 230000,
      				"blockHeight": 1003034
      			},
      			{
      				"address": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX",
      				"title": "Exit the fiat circle",
      				"content": "Crypto is the future of the world, I announce to quit the fiat circle and embrace the crypto world.",
      				"txid": 1636526700000,
      				"txTimestamp": 220000,
      				"blockHeight": 1003000
      			}
      		],
      		"total": 2,
      		"bestHeight": 963667
      	},
      	"sign": ""
      }
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。


      posted in Protocol/协议
      昌
      昌用
    • APIP100V1_RawTxBroadcast(zh-CN)
      APIP100: RawTxBroadcast
      Version: 1
      Language: zh-CN
      Author: C_armX
      Status: draft
      Created date: 2022-04-19
      Updata:2022-04-19
      PID: ""
      TXid: 
      

      APIP100V1_RawTxBroadcast(zh-CN)


      目录

      关于APIP

      关于本协议

      rawTxBroadcast


      Type: APIP
      SerialNumber: 2
      ProtocolName: BasicInfoOnChain
      Version: 1
      Description : Freecash主链基础信息API规范.
      Author: C_armX, Write_cash, Free_cash, F7rspPvuPhrc6xYYXjBoCieKAWSz9ShSNp
      Language: zh-CN
      PrePID:""
      

      关于APIP

      概述

      APIP(Application Programming Interface Protocols)是自由共识生态协议的一种类型,用于创建和发布开放的API文档,供API服务方开发部署通用API服务,以实现数据服务的去中心化。API需求方可以按照APIP协议从遵循该协议的任何一个API服务方那里获取数据服务。

      通用规则

      《APIP1_OpenAPI》规范了APIP类型协议的协议发布、接口标识、接口URL构成、时间戳格式、密码算法、服务流程、商业模式、连接接口,数据接口和查询语法的通用规则。设计、开发或应用APIP协议前,应先参考《APIP1_OpenAPI》协议。

      建立连接

      使用APIP协议各接口,须先采用《APIP1_OpenAPI》的connect接口从API服务方获取symKey。参见《APIP1_OpenAPI》的“connect接口”。

      通用请求参数

      APIP类型协议接口的通用请求参数如下:

      name type description requested
      requester string 请求方的fch地址 Y
      url string 当前所请求api的url Y
      timestamp timestamp 发起请求的时间戳,精确到毫秒 Y
      query object 请求数据的查询语句,参见”APIP简易查询语法@APIP1“ N
      sort object 请求数据的排序语句,参见”APIP简易查询语法@APIP1“ N
      from int 请求列表数据时的起始位置,从0开始 N
      size int 请求列表数据时的每页条目数 N
      sign string 用symkey对其他参数所做的签名 Y

      通用响应方式

      响应前所作的验证、通用响应状态码、通用响应参数参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      请求成功的通用响应参数为:

      参数 类型 说明 适用状态
      code int 响应状态码 all
      message string 响应状态描述 all
      data object 正常返回数据,由具体APIP定义。 0
      sign string 将symKey加入响应参数做两次sha256哈希的签名值 all

      具体APIP协议的特定响应参数在data参数中给出,并定义具体接口的响应状态。

      请求失败的通用响应码、响应信息和响应参数,参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      签名与验证

      APIP接口的请求和响应都需要签名和验证。

      connect接口请求时用私钥签名,公钥验证,响应时无需签名。

      所有数据请求和数据响应,采用以下方法:

      签名:将对称密钥symKey加入参数压缩升序后计算两次sha256,得到sign的值,再用sign替换参数中的symKey。

      验证:将sign从参数中取出,加入symKey,压缩升序后做两次sha256计算,将值与sign的值比较,一致则验证通过。

      详见《APIP1_OpenAPI》

      关于本协议

      rawTxBroadcast

      交易广播接口。在链上广播已经签名的原始交易。

      url

      [服务方发布的urlMainPart]apip2/v1/rawTxBroadcast

      示例

      https://www.sign.cash/api/apip2/v1/rawTxBroadcast

      请求参数

      name type description requested
      rawTx string Raw transaction Y
      • 示例

      广播一笔原始交易。

      请求参数:

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip2/v1/balance",
      	"data": {
      		"rawTx": "0222222222222222222222222222"
      	},
      	"sign": "08a47ccb60c682366416e984f3d55f17014643abad512225c7856e5fae1cc933"
      }
      

      响应参数

      除通用响应状态和参数之外,交易广播后,服务方将Freecash节点的响应状态和参数,直接返回给请求方。

      posted in Protocol/协议
      昌
      昌用
    • APIP13V1_SafeOnChain(zh-CN)
      APIP13:SafeOnChain
      Version:1
      Language:zh-CN
      Author:C_armX
      Status:draft
      Createddate:2021-12-01
      Update:2022-04-27
      PID:""
      Txid:
      

      APIP13V1_SafeOnChain(zh-CN)


      目录

      关于APIP

      关于本协议

      getValidSafeItems

      getDeletedSafeItems

      getSafeOpHistory


      Type:APIP
      SerialNumber:13
      ProtocolName:SafeOnChain
      Version:1
      Description:定义获取链上保险柜信息的相关接口。
      Author:C_armX
      Language:zh-CN
      preVersionHash:""
      

      关于APIP

      概述

      APIP(Application Programming Interface Protocols)是自由共识生态协议的一种类型,用于创建和发布开放的API文档,供API服务方开发部署通用API服务,以实现数据服务的去中心化。API需求方可以按照APIP协议从遵循该协议的任何一个API服务方那里获取数据服务。

      通用规则

      《APIP1_OpenAPI》规范了APIP类型协议的协议发布、接口标识、接口URL构成、时间戳格式、密码算法、服务流程、商业模式、连接接口,数据接口和查询语法的通用规则。设计、开发或应用APIP协议前,应先参考《APIP1_OpenAPI》协议。

      建立连接

      使用APIP协议各接口,须先采用《APIP1_OpenAPI》的connect接口从API服务方获取symKey。参见《APIP1_OpenAPI》的“connect接口”。

      通用请求参数

      APIP类型协议接口的通用请求参数如下:

      name type description requested
      requester string 请求方的fch地址 Y
      url string 当前所请求api的url Y
      timestamp timestamp 发起请求的时间戳,精确到毫秒 Y
      query object 请求数据的查询语句,参见”APIP简易查询语法@APIP1“ N
      sort object 请求数据的排序语句,参见”APIP简易查询语法@APIP1“ N
      from int 请求列表数据时的起始位置,从0开始 N
      size int 请求列表数据时的每页条目数 N
      sign string 用symkey对其他参数所做的签名 Y

      通用响应方式

      响应前所作的验证、通用响应状态码、通用响应参数参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      请求成功的通用响应参数为:

      参数 类型 说明 适用状态
      code int 响应状态码 all
      message string 响应状态描述 all
      data object 正常返回数据,由具体APIP定义。 0
      sign string 将symKey加入响应参数做两次sha256哈希的签名值 all

      具体APIP协议的特定响应参数在data参数中给出,并定义具体接口的响应状态。

      请求失败的通用响应码、响应信息和响应参数,参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      签名与验证

      APIP接口的请求和响应都需要签名和验证。

      connect接口请求时用私钥签名,公钥验证,响应时无需签名。

      所有数据请求和数据响应,采用以下方法:

      签名:将对称密钥symKey加入参数压缩升序后计算两次sha256,得到sign的值,再用sign替换参数中的symKey。

      验证:将sign从参数中取出,加入symKey,压缩升序后做两次sha256计算,将值与sign的值比较,一致则验证通过。

      详见《APIP1_OpenAPI》

      关于本协议

      1. 本协议接口提供链上保险柜信息。

      2. 本协议接口的数据来源遵循以下协议:

        • 《FEIP17_Safe》
      3. 本协议接口数据采用JSON格式。

      4. 示例数据:

      requester:FEk41Kqjar45fLDriztUDTUkdki7mmcjWK

      requester的公钥pubKey:030be1d7e633feb2338a74a860e76d893bac525f35a5813cb7b21e27ba1bc8312a

      requester的私钥priKey:L2bHRej6Fxxipvb4TiR5bu1rkT3tRp8yWEsUy4R1Zb8VMm2x7sd8

      requester获得的对称密钥symKey:d2c03bbc1ba1380eafc395374e8da61f92545a1aac5d30b0c19289a69bd34a09

      服务方链上发布的urlMainPart: https://www.sign.cash/api/

      接口url:https://www.sign.cash/api/apip13/v1/[接口名称]


      getValidSafeItems

      获取链上当前有效的保险柜条目信息。

      url

      [服务方发布的urlMainPart]apip13/v1/getValidSafeItems

      示例

      https://www.sign.cash/api/apip13/v1/getValidSafeItems

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      响应参数data.list中各字段均可作为查询字段。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX的链上保险柜信息,按交易时间戳倒序,获取第1批20条。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip13/v1/getValidSafeItems",
      	"query": {
      		"term": {
      			"address": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX"
      		}
      	},
      	"sort": [{
      		"txTimestamp": {
      			"order": "desc"
      		}
      	}],
      	"from": 0,
      	"size": 20,
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description key in FEIP12
      address string The address of the first input.
      alg string The encrypt algorithm data.alg
      ciphertext Safe item content encrypted with the public key of the host data.ciphertext
      txid string The txid of this transaction
      txTimestamp timestamp The timestamp of this transaction
      blockHeight uint The height of the block where the transaction is written
      • 示例
      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      			"address": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX",
      			"alg": "ECC256k1-AES256CBC",
      			"ciphertext": "AjTU0rGQvDxhCs3F5x4Pcz3Bsiiry2LryPcKcPIZ2iDsD68U5he9FkM6AVUzEHTjmfBLkhfFu7rv4fveoyMi5YH+wQoiWDxgs/MYjGZBL/Fuq6XZ6IOCXfWyfwphE4uxhEg5TD9ZBRsrJbNxwbdfee5ev5Gvc8kwYROycs0sAG3rNdoJbEZZ7bs2DqvHbAWdG7w4gYLhP9o+C/xVTZHz7Ks9VHb6i04/1at40etlWXxPWSvkdDWxTtyWSSsY2jrbYjfe+ytXQRTRY4gYQdwg+9s=",
      			"txid": "11111111110000000000",
      			"txTimestamp": 1636180056756,
      			"blockHeight": 963220
      		}],
      		"total": 1,
      		"bestHeight": 963667
      	},
      	"sign": ""
      }
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。


      getDeletedSafeItems

      说明

      获取链上已经删除的保险柜信息。

      url

      [服务方发布的urlMainPart]apip13/v1/getDeletedSafeItems

      示例

      https://www.sign.cash/api/apip13/v1/getDeletedSafeItems

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      响应参数data.list中各字段均可作为查询字段。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX链上已删除的保险柜信息,按交易时间戳倒序,获取第1批20条。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip13/v1/getDeletedSafeItems",
      	"query": {
      		"term": {
      			"address": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX"
      		}
      	},
      	"sort": [{
      		"txTimestamp": {
      			"order": "desc"
      		}
      	}],
      	"from": 0,
      	"size": 20,
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description key in FEIP12
      address string The address of the first input.
      alg string The encrypt algorithm data.alg
      ciphertext Safe item content encrypted with the public key of the host data.ciphertext
      addTxid string The txid of this transaction in which the safe item was added
      addTxTimestamp timestamp The timestamp of the transaction in which the safe item was added
      addBlockHeight uint The height of the block in which the safe item was added
      deleteTxid string The txid of this transaction in which the safe item was deleted
      deleteTxTimestamp timestamp The timestamp of the transaction in which the safe item was deleted
      deleteBlockHeight uint The height of the block in which the safe item was deleted
      • 示例
      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      			"address": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX",
      			"alg": "ECC256k1-AES256CBC",
      			"ciphertext": "AjTU0rGQvDxhCs3F5x4Pcz3Bsiiry2LryPcKcPIZ2iDsD68U5he9FkM6AVUzEHTjmfBLkhfFu7rv4fveoyMi5YH+wQoiWDxgs/MYjGZBL/Fuq6XZ6IOCXfWyfwphE4uxhEg5TD9ZBRsrJbNxwbdfee5ev5Gvc8kwYROycs0sAG3rNdoJbEZZ7bs2DqvHbAWdG7w4gYLhP9o+C/xVTZHz7Ks9VHb6i04/1at40etlWXxPWSvkdDWxTtyWSSsY2jrbYjfe+ytXQRTRY4gYQdwg+9s=",
      			"addTxid": "11111111110000000000",
      			"addTxTimestamp": 1636180056756,
      			"addBlockHeight": 963220,
      			"deleteTxid": "22222111100111111111",
      			"deleteTxTimestamp": 1636180838232,
      			"deleteBlockHeight": 963333
      		}],
      		"total": 1,
      		"bestHeight": 963667
      	},
      	"sign": ""
      }
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      3.getSafeOpHistory

      查询保险柜链上操作历史信息。

      url

      [服务方发布的urlMainPart]apip13/v1/getSafeOpHistory

      示例

      https://www.sign.cash/api/apip13/v1/getSafeOpHistory

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      响应参数data.list中各字段均可作为查询字段。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX链上保险柜操作历史信息,按交易时间戳正序,获取第1批20条。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip13/v1/getSafeOpHistory",
      	"query": {
      		"term": {
      			"address": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX"
      		}
      	},
      	"sort": [{
      		"txTimestamp": {
      			"order": "asc"
      		}
      	}],
      	"from": 0,
      	"size": 20,
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description key in FEIP12
      address string The address of the first input.
      op string The operation data.op
      alg string The encrypt algorithm data.alg
      ciphertext Safe item content encrypted with the public key of the host data.ciphertext
      addTxid string The txid of this transaction in which the item was added data.addTxid
      txid string The txid of this transaction
      txTimestamp timestamp The timestamp of this transaction
      blockHeight uint The height of the block where the transaction is written
      • 示例
      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      				"address": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX",
      				"op": "add",
      				"alg": "ECC256k1-AES256CBC",
      				"ciphertext": "AjTU0rGQvDxhCs3F5x4Pcz3Bsiiry2LryPcKcPIZ2iDsD68U5he9FkM6AVUzEHTjmfBLkhfFu7rv4fveoyMi5YH+wQoiWDxgs/MYjGZBL/Fuq6XZ6IOCXfWyfwphE4uxhEg5TD9ZBRsrJbNxwbdfee5ev5Gvc8kwYROycs0sAG3rNdoJbEZZ7bs2DqvHbAWdG7w4gYLhP9o+C/xVTZHz7Ks9VHb6i04/1at40etlWXxPWSvkdDWxTtyWSSsY2jrbYjfe+ytXQRTRY4gYQdwg+9s=",
      				"txid": "11111111110000000000",
      				"txTimestamp": 1636180000111,
      				"blockHeight": 963220
      			},
      			{
      				"address": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX",
      				"op": "delete",
      				"addTxid": "11111111110000000000",
      				"txid": "33333333333333333333333333333333",
      				"txTimestamp": 1636180000222,
      				"blockHeight": 963201
      			}
      		],
      		"total": 2,
      		"bestHeight": 963667
      	},
      	"sign": ""
      }
      
      posted in Protocol/协议
      昌
      昌用
    • APIP12V1_MailOnChain(zh-CN)
      APIP12:MailOnChain
      Version:1
      Language:zh-CN
      Author:C_armX
      Status:draft
      Createddate:2021-12-01
      Update:2022-04-27
      PID:""
      Txid:
      

      APIP12V1_MailOnChain(zh-CN)


      目录

      关于APIP

      关于本协议

      getValidMails

      getDeletedMails

      getMailOpHistory


      Type:APIP
      SerialNumber:12
      ProtocolName:MailOnChain
      Version:1
      Description:定义获取链上密信的相关接口。
      Author:C_armX
      Language:zh-CN
      preVersionHash:""
      

      关于APIP

      概述

      APIP(Application Programming Interface Protocols)是自由共识生态协议的一种类型,用于创建和发布开放的API文档,供API服务方开发部署通用API服务,以实现数据服务的去中心化。API需求方可以按照APIP协议从遵循该协议的任何一个API服务方那里获取数据服务。

      通用规则

      《APIP1_OpenAPI》规范了APIP类型协议的协议发布、接口标识、接口URL构成、时间戳格式、密码算法、服务流程、商业模式、连接接口,数据接口和查询语法的通用规则。设计、开发或应用APIP协议前,应先参考《APIP1_OpenAPI》协议。

      建立连接

      使用APIP协议各接口,须先采用《APIP1_OpenAPI》的connect接口从API服务方获取symKey。参见《APIP1_OpenAPI》的“connect接口”。

      通用请求参数

      APIP类型协议接口的通用请求参数如下:

      name type description requested
      requester string 请求方的fch地址 Y
      url string 当前所请求api的url Y
      timestamp timestamp 发起请求的时间戳,精确到毫秒 Y
      query object 请求数据的查询语句,参见”APIP简易查询语法@APIP1“ N
      sort object 请求数据的排序语句,参见”APIP简易查询语法@APIP1“ N
      from int 请求列表数据时的起始位置,从0开始 N
      size int 请求列表数据时的每页条目数 N
      sign string 用symkey对其他参数所做的签名 Y

      通用响应方式

      响应前所作的验证、通用响应状态码、通用响应参数参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      请求成功的通用响应参数为:

      参数 类型 说明 适用状态
      code int 响应状态码 all
      message string 响应状态描述 all
      data object 正常返回数据,由具体APIP定义。 0
      sign string 将symKey加入响应参数做两次sha256哈希的签名值 all

      具体APIP协议的特定响应参数在data参数中给出,并定义具体接口的响应状态。

      请求失败的通用响应码、响应信息和响应参数,参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      签名与验证

      APIP接口的请求和响应都需要签名和验证。

      connect接口请求时用私钥签名,公钥验证,响应时无需签名。

      所有数据请求和数据响应,采用以下方法:

      签名:将对称密钥symKey加入参数压缩升序后计算两次sha256,得到sign的值,再用sign替换参数中的symKey。

      验证:将sign从参数中取出,加入symKey,压缩升序后做两次sha256计算,将值与sign的值比较,一致则验证通过。

      详见《APIP1_OpenAPI》


      关于本协议

      1. 本协议接口提供链上密信信息。

      2. 本协议接口的数据来源遵循以下协议:

        • 《FEIP7_MailOnChain》
      3. 本协议接口数据采用JSON格式。

      4. 示例数据:

      requester:FEk41Kqjar45fLDriztUDTUkdki7mmcjWK

      requester的公钥pubKey:030be1d7e633feb2338a74a860e76d893bac525f35a5813cb7b21e27ba1bc8312a

      requester的私钥priKey:L2bHRej6Fxxipvb4TiR5bu1rkT3tRp8yWEsUy4R1Zb8VMm2x7sd8

      requester获得的对称密钥symKey:d2c03bbc1ba1380eafc395374e8da61f92545a1aac5d30b0c19289a69bd34a09

      服务方链上发布的urlMainPart: https://www.sign.cash/api/

      接口url:https://www.sign.cash/api/apip12/v1/[接口名称]


      getValidMails

      根据筛选条件获取某地址在链上未删除的密信。

      url

      [服务方发布的urlMainPart]apip12/v1/getValidMails

      示例

      https://www.sign.cash/api/apip12/v1/getValidMails

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      响应参数data.list中各字段均可作为查询字段。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX的当前有效的链上密信,按交易时间戳倒序,获取第1批20条。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip12/v1/getValidMails",
      	"query": {
      		"multi_match": {
      			"query": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      
      			"fields": ["sender", "recipient"]
      		}
      	},
      	"sort": [{
      		"txTimestamp": {
      			"order": "desc"
      		}
      	}],
      	"from": 0,
      	"size": 20,
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description key in FEIP7
      sender string The address of the first input.
      recipient string The address of the first output.
      alg string The encrypt algorithm data.alg
      ciphertextSend string Mail encrypted with the public key of the sender data.ciphertextSend
      ciphertextReci string Mail encrypted with the public key of the recipient data.ciphertextReci
      txid string The txid of this transaction
      txTimestamp timestamp The timestamp of this transaction
      blockHeight uint The height of the block where the transaction is written
      • 示例

      响应FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX的当前有效的链上密信,按交易时间戳倒序,获取第1批20条。

      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      			"sender": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      			"recipient": "F86zoAvNaQxEuYyvQssV5WxEzapNaiDtTW",
      			"alg": "ECC256k1-AES256CBC",
      			"ciphertextSend": "AjTU0rGQvDxhCs3F5x4Pcz3Bsiiry2LryPcKcPIZ2iDsD68U5he9FkM6AVUzEHTjmfBLkhfFu7rv4fveoyMi5YH+wQoiWDxgs/MYjGZBL/Fuq6XZ6IOCXfWyfwphE4uxhEg5TD9ZBRsrJbNxwbdfee5ev5Gvc8kwYROycs0sAG3rNdoJbEZZ7bs2DqvHbAWdG7w4gYLhP9o+C/xVTZHz7Ks9VHb6i04/1at40etlWXxPWSvkdDWxTtyWSSsY2jrbYjfe+ytXQRTRY4gYQdwg+9s=",
      			"ciphertextReci": "AhJkddIcpBMI4FwtDIG1N9JdMkUdcipfHeu9cqsOyepLnET5YersPMHcd4gbZOvBMr60zCii5fWjx7Vv07HaS6KJszeiMtcfTlj/laDdJ+TqK6DWKJ4A1Rpax4WrI2TFbAGoc8rarHOTql2u3wADAdNq+11ALc/kY65alrVfjtKM7KVKBLp3xZgy00YKV9pSo22TLC0+FnWDlUv70ZoAzROKw/z8+BIKz+QipPAwAa7KBgZhlSjryZU6Ad4bydefP11JFh1MS6lkfov0V+LKVCI=",
      			"txid": "11111111110000000000",
      			"txTimestamp": 1636180056756,
      			"blockHeight": 963220
      		}],
      		"total": 1,
      		"bestHeight": 963667
      	},
      	"sign": ""
      }
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。


      getDeletedMails

      获取链上已经删除的密信。

      url

      [服务方发布的urlMainPart]apip12/v1/getDeletedMails

      示例

      https://www.sign.cash/api/apip12/v1/getDeletedMails

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      响应参数data.list中各字段均可作为查询字段。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询FEk41Kqjar45fLDriztUDTUkdki7mmcjWK链上已删除的密信,按交易时间戳倒序,获取第1批20条。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip12/v1/getDeletedMails",
      	"query": {
      		"multi_match": {
      			"query": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      
      			"fields": ["sender", "recipient"]
      		}
      	},
      	"sort": [{
      		"txTimestamp": {
      			"order": "desc"
      		}
      	}],
      	"from": 0,
      	"size": 20,
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description key in FEIP12
      sender string The address of the first input.
      recipient string The address of the first output.
      alg string The encrypt algorithm data.alg
      ciphertextSend string Mail encrypted with the public key of the sender data.ciphertextSend
      ciphertextReci string Mail encrypted with the public key of the recipient data.ciphertextReci
      sendTxid string The txid of this transaction in which the mail was sent
      sendTxTimestamp timestamp The timestamp of the transaction in which the mail was sent
      sendBlockHeight uint The height of the block in which the mail was sent
      deleteTxid string The txid of this transaction in which the mail was deleted
      deleteTxTimestamp timestamp The timestamp of the transaction in which the mail was deleted
      deleteBlockHeight uint The height of the block in which the mail was deleted
      • 示例

      响应FEk41Kqjar45fLDriztUDTUkdki7mmcjWK链上已删除的密信,按交易时间戳倒序,获取第1批20条。

      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      			"sender": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      			"recipient": "F86zoAvNaQxEuYyvQssV5WxEzapNaiDtTW",
      			"alg": "ECC256k1-AES256CBC",
      			"ciphertextSend": "AjTU0rGQvDxhCs3F5x4Pcz3Bsiiry2LryPcKcPIZ2iDsD68U5he9FkM6AVUzEHTjmfBLkhfFu7rv4fveoyMi5YH+wQoiWDxgs/MYjGZBL/Fuq6XZ6IOCXfWyfwphE4uxhEg5TD9ZBRsrJbNxwbdfee5ev5Gvc8kwYROycs0sAG3rNdoJbEZZ7bs2DqvHbAWdG7w4gYLhP9o+C/xVTZHz7Ks9VHb6i04/1at40etlWXxPWSvkdDWxTtyWSSsY2jrbYjfe+ytXQRTRY4gYQdwg+9s=",
      			"ciphertextReci": "AhJkddIcpBMI4FwtDIG1N9JdMkUdcipfHeu9cqsOyepLnET5YersPMHcd4gbZOvBMr60zCii5fWjx7Vv07HaS6KJszeiMtcfTlj/laDdJ+TqK6DWKJ4A1Rpax4WrI2TFbAGoc8rarHOTql2u3wADAdNq+11ALc/kY65alrVfjtKM7KVKBLp3xZgy00YKV9pSo22TLC0+FnWDlUv70ZoAzROKw/z8+BIKz+QipPAwAa7KBgZhlSjryZU6Ad4bydefP11JFh1MS6lkfov0V+LKVCI=",
      			"sendTxid": "11111111110000000000",
      			"sendTxTimestamp": 1636180056756,
      			"sendBlockHeight": 963220,
      			"deleteTxid": "22222111100111111111",
      			"deleteTxTimestamp": 1636180838232,
      			"deleteBlockHeight": 963333
      		}],
      		"total": 1,
      		"bestHeight": 963667
      	},
      	"sign": ""
      }
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。


      getMailOpHistory

      获取链上加密邮件的操作历史信息。

      url

      [服务方发布的urlMainPart]apip12/v1/getMailOpHistory

      示例:

      https://www.sign.cash/api/apip12/v1/getMailOpHistory

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      响应参数data.list中各字段均可作为查询字段。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询FEk41Kqjar45fLDriztUDTUkdki7mmcjWK的链上加密邮件操作信息,按交易时间戳正序,获取第1批20条。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip12/v1/getMailOpHistory",
      	"query": {
      		"multi_match": {
      			"query": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      
      			"fields": ["sender", "recipient"]
      		}
      	},
      	"sort": [{
      		"txTimestamp": {
      			"order": "asc"
      		}
      	}],
      	"from": 0,
      	"size": 20,
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description key in FEIP12
      sender string The address of the first input.
      recipient string The address of the first output.
      op string The operation data.op
      alg string The encrypt algorithm data.alg
      ciphertextSend string Mail encrypted with the public key of the sender data.ciphertextSend
      ciphertextReci string Mail encrypted with the public key of the recipient data.ciphertextReci
      sendTxid string The txid of this transaction in which the mail was sent data.sendTxid
      txid string The txid of this transaction
      txTimestamp timestamp The timestamp of this transaction
      blockHeight uint The height of the block where the transaction is written
      • 示例

      响应FEk41Kqjar45fLDriztUDTUkdki7mmcjWK的链上加密邮件操作信息,按交易时间戳正序,获取第1批20条。

      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      
      				"op": "send",
      				"sender": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      				"recipient": "F86zoAvNaQxEuYyvQssV5WxEzapNaiDtTW",
      				"alg": "ECC256k1-AES256CBC",
      				"ciphertextSend": "AjTU0rGQvDxhCs3F5x4Pcz3Bsiiry2LryPcKcPIZ2iDsD68U5he9FkM6AVUzEHTjmfBLkhfFu7rv4fveoyMi5YH+wQoiWDxgs/MYjGZBL/Fuq6XZ6IOCXfWyfwphE4uxhEg5TD9ZBRsrJbNxwbdfee5ev5Gvc8kwYROycs0sAG3rNdoJbEZZ7bs2DqvHbAWdG7w4gYLhP9o+C/xVTZHz7Ks9VHb6i04/1at40etlWXxPWSvkdDWxTtyWSSsY2jrbYjfe+ytXQRTRY4gYQdwg+9s=",
      				"ciphertextReci": "AhJkddIcpBMI4FwtDIG1N9JdMkUdcipfHeu9cqsOyepLnET5YersPMHcd4gbZOvBMr60zCii5fWjx7Vv07HaS6KJszeiMtcfTlj/laDdJ+TqK6DWKJ4A1Rpax4WrI2TFbAGoc8rarHOTql2u3wADAdNq+11ALc/kY65alrVfjtKM7KVKBLp3xZgy00YKV9pSo22TLC0+FnWDlUv70ZoAzROKw/z8+BIKz+QipPAwAa7KBgZhlSjryZU6Ad4bydefP11JFh1MS6lkfov0V+LKVCI=",
      				"txid": "21111111111111111111111111111111",
      				"txTimestamp": 1636180000111,
      				"blockHeight": 963200
      			},
      			{
      				"sender": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      				"op": "delete",
      				"sendTxid": "21111111111111111111111111111111",
      				"txid": "33333333333333333333333333333333",
      				"txTimestamp": 1636180000222,
      				"blockHeight": 963201
      			}
      		],
      		"total": 2,
      		"bestHeight": 963667
      	},
      	"sign": ""
      }
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      posted in Protocol/协议
      昌
      昌用
    • APIP20V1_Avatar(zh-CN)
      APIP20V1_Avatar(zh-CN)
      Version:1
      Language:zh-CN
      Author:C_armX
      Status:draft
      Createddate:2022-03-07
      Createddate:2022-03-07
      Filehash:""
      TXid:
      

      APIP20V1_Avatar(zh-CN)


      目录

      关于APIP

      本协议的基本共识

      接口名称

      接口说明

      请求参数

      响应参数

      返回值


      Type:APIP
      SerialNumber:11
      ProtocolName:HATOnChain
      Version:1
      Description:定义头像获取通用接口。
      Author:C_armX
      Language:zh-CN
      preVersionHash:""
      

      关于APIP

      1. APIP(Application Programming Interface Protocols)是自由共识生态协议的一种类型,用于创建开放的API文档,并且按照《FEIP1_FreeProtocol》协议发布在Freecash主链上。

      2. API的URL路径由服务方按照《FEIP29_Service》协议发布在Freecash主链上。

      3. APIP类型协议的一般共识在《APIP1_OpenAPI》中描述,包括接口标识、连接方式、请求方式、数据验证、常用参数、筛选与排序方式等。

      4. 按照《APIP1_OpenAPI》,API请求方向API服务方请求连接和请求数据的流程概括如下:

        • 建立连接:请求方通过connect接口提交私钥签名,请求连接API服务,成功后获得对称密钥symKey用于数据请求和验证。

        • 准备参数:准备请求参数,注意,采用POST方法时,需包括该API的url。

        • 参数排序:所有请求参数按字母升序排列,不区分大小写。

        • 数据签名:将symKey追加至参数末尾,然后经两次sha256哈希获得签名sign。

        • 发送请求:删除symKey字段,将requester和sign追加至末尾,发送给服务方。

        • 验证请求:API服务方验证requester授权、sign、timestamp、POST方法url等均有效或正确后予以响应。

        • 响应数据:响应数据尾部加入symKey后做两次sha256哈希获得sign,再用sign替换symKey后将数据返回请求方。

        • 验证数据:请求方获得数据后,用symKey替换sign后哈希签名,值与sign值一致则接受数据。

      本协议的基本共识

      1. 本协议定义提供头像服务的接口通用格式。

      2. 头像的具体形成和分配方式由服务方自行设计。

      3. 示例数据:

      requester的地址:FEk41Kqjar45fLDriztUDTUkdki7mmcjWK
      
      requester的公钥:030be1d7e633feb2338a74a860e76d893bac525f35a5813cb7b21e27ba1bc8312a
      
      requester的私钥:L2bHRej6Fxxipvb4TiR5bu1rkT3tRp8yWEsUy4R1Zb8VMm2x7sd8
      
      requester的symKey:d2c03bbc1ba1380eafc395374e8da61f92545a1aac5d30b0c19289a69bd34a09
      
      apiUrl:https://www.sign.cash/api/
      

      接口名称

      avatar

      接口说明

      批量获取fch地址对应的头像。

      请求参数

      name type description
      addressList string array The List of FCH addresses
      timestamp timestamp 请求的时间戳,精确到毫秒
      url string 请求的url,仅在post方法时出现
      sign string 用symKey对请求经两次sha256计算得到的签名,参见“构造请求示例”

      响应参数

      方案一:二进制文件,按大端序fch地址+图像大小+图像文件存放所有头像,在文件末尾加入symKey两次sha256哈希得到签名sign值,去除symKey,加入sign值,响应给请求者。
      方案二: 每个头像独立文件,文件名为fch地址。每个文件分别用symKey签名。

      返回值

      返回值 类型 必填 说明
      code uint Y 返回码
      msg string Y 返回信息
      data object N 相关数据
      • 返回信息详情
      code msg 说明 data字段
      0 OK 请求成功
      1 Other error. 其他错误 signedRequest, errorMessage

      构造请求示例

      请求内容:获取FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX的头像。

      参数

      {
      	"addressList": ["FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX"],
      	"timestamp": 1635513688254
      }
      

      GET:

      - unsignedRequest:
      
      https://www.sign.cash/api/cidInfo?addressList=FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX&timestamp=1635513688254
      
      - sign = sha256(sha256(https://www.sign.cash/api/cidInfo?addressList=FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX&timestamp=1635513688254&symKey=d2c03bbc1ba1380eafc395374e8da61f92545a1aac5d30b0c19289a69bd34a09))=33333333333335555555555522222222211111111111111111111111111111
      
      - signedRequest:
      
      https://www.sign.cash/api/cidInfo?addressList=FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX&timestamp=1635513688254&requester=FEk41Kqjar45fLDriztUDTUkdki7mmcjWK&sign=33333333333335555555555522222222211111111111111111111111111111
      

      POST:

      - URL:https://www.sign.cash/api/cidInfo
      
      - unsignedRequest:
      
      {"addressList":["FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX"],"timestamp":1635513688254,"url":"https://www.sign.cash/api/cidInfo"}
      
      - sign = sha256(sha256({"addressList":["FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX"],"timestamp":1635513688254,"url":"https://www.sign.cash/api/cidInfo","symKey":"d2c03bbc1ba1380eafc395374e8da61f92545a1aac5d30b0c19289a69bd34a09"}))=555555555555555555555555522222222211111111111111111111111111111
      
      - signedRequest:
      
      {"addressList":["FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX"],"timestamp":1635513688254,"url":"https://www.sign.cash/api/cidInfo","requester":"FEk41Kqjar45fLDriztUDTUkdki7mmcjWK","sign":"555555555555555555555555522222222211111111111111111111111111111"}
      
      posted in Protocol/协议
      昌
      昌用
    • APIP11V1_HatOnChain(zh-CN)
      APIP11V1_HatOnChain(zh-CN)
      Version:1
      Language:zh-CN
      Author:C_armX
      Status:draft
      

      APIP11V1_HatOnChain(zh-CN)
      Version:1
      Language:zh-CN
      Author:C_armX
      Status:draft
      Create:2022-03-07
      Update:2022-05-01
      PID:""
      TXID:

      
      # APIP11V1_HatOnChain(zh-CN)
      ---
      ## 目录
      
      [关于APIP](#关于APIP)
      
      [关于本协议](#关于本协议)
      
      [getHatList](#getHatList)
      
      
      ---
      
      

      Type:APIP
      SerialNumber:11
      ProtocolName:HatOnChain
      Version:1
      Description:定义文件管理的链上哈希属性表信息接口。
      Author:C_armX
      Language:zh-CN
      preVersionHash:""

      
      
      ## 关于APIP
      
      ### 概述
      
      `APIP`(Application Programming Interface Protocols)是自由共识生态协议的一种类型,用于创建和发布开放的API文档,供API服务方开发部署通用API服务,以实现数据服务的去中心化。API需求方可以按照APIP协议从遵循该协议的任何一个API服务方那里获取数据服务。
      
      ### 通用规则
      
      `《APIP1_OpenAPI》`规范了APIP类型协议的`协议发布`、`接口标识`、`接口URL构成`、`时间戳格式`、`密码算法`、`服务流程`、`商业模式`、`连接接口`,`数据接口`和`查询语法`的通用规则。设计、开发或应用APIP协议前,应先参考《APIP1_OpenAPI》协议。
      
      ### 建立连接
      
      使用APIP协议各接口,须先采用《APIP1_OpenAPI》的`connect`接口从API服务方获取symKey。参见`《APIP1_OpenAPI》`的“connect接口”。
      
      ### 通用请求参数
      
      APIP类型协议接口的通用请求参数如下:
      
      |name|type|description|requested|
      |:---|:---|:---|:---|
      |requester|string|请求方的fch地址|Y|
      |url|string|当前所请求api的url|Y|
      |timestamp|timestamp|发起请求的时间戳,精确到毫秒|Y|
      |query|object|请求数据的查询语句,参见”APIP简易查询语法@APIP1“|N|
      |sort|object|请求数据的排序语句,参见”APIP简易查询语法@APIP1“|N|
      |from|int|请求列表数据时的起始位置,从0开始|N|
      |size|int|请求列表数据时的每页条目数|N|
      |sign|string|用symkey对其他参数所做的签名|Y|
      
      ### 通用响应方式
      
      响应前所作的验证、通用响应状态码、通用响应参数参见`《APIP1_OpenAPI》`的“数据请求接口”的“5. 响应”。
      
      请求成功的通用响应参数为:
      
      |参数|类型|说明|适用状态|
      |:---|:---|:---|:---|
      |code|int|响应状态码|all|
      |message|string|响应状态描述|all|
      |data|object|正常返回数据,由具体APIP定义。|0|
      |sign|string|将symKey加入响应参数做两次sha256哈希的签名值|all|
      
      具体APIP协议的特定响应参数在`data`参数中给出,并定义具体接口的响应状态。
      
      请求失败的通用响应码、响应信息和响应参数,参见`《APIP1_OpenAPI》`的“数据请求接口”的“5. 响应”。
      
      ### 签名与验证
      
      APIP接口的请求和响应都需要签名和验证。
      
      connect接口请求时用私钥签名,公钥验证,响应时无需签名。
      
      所有数据请求和数据响应,采用以下方法:
      
      `签名`:将对称密钥symKey加入参数压缩升序后计算两次sha256,得到sign的值,再用sign替换参数中的symKey。
      
      `验证`:将sign从参数中取出,加入symKey,压缩升序后做两次sha256计算,将值与sign的值比较,一致则验证通过。
      
      详见`《APIP1_OpenAPI》`
      
      ## 关于本协议
      
      1. 本协议接口提供用于文件管理的哈希属性表(HAT)文件的链上信息。
      
      2. 本协议接口的数据来源和相关规则遵循以下协议:
      
         - 《FEIP32_HAT》
      
      3. 本协议接口数据采用JSON格式。
      
      4. 示例数据:
      `requester`:FEk41Kqjar45fLDriztUDTUkdki7mmcjWK
      
      requester的公钥`pubKey`:030be1d7e633feb2338a74a860e76d893bac525f35a5813cb7b21e27ba1bc8312a
      
      requester的私钥`priKey`:L2bHRej6Fxxipvb4TiR5bu1rkT3tRp8yWEsUy4R1Zb8VMm2x7sd8
      
      requester获得的对称密钥`symKey`:d2c03bbc1ba1380eafc395374e8da61f92545a1aac5d30b0c19289a69bd34a09
      
      服务方链上发布的`urlMainPart`: https://www.sign.cash/api/
      
      接口url:https://www.sign.cash/api/apip11/v1/[接口名称]
      
      ## getHatList
      
      获取链上当前有效的HAT信息。
      
      ### url
      
      [服务方发布的urlMainPart]apip11/v1/getHatList
      
      示例:
      
      https://www.sign.cash/api/apip11/v1/getHatList
      
      
      ### 请求参数
      
      通用请求参数参见[通用请求参数](#通用请求参数)。其中:
      
      * query
      
      响应参数`data.list`中各字段均可作为查询字段。
      
      * sort
      
      响应参数`data.list`中的数字类型字段均可作为排序字段。
      
      * 示例
      
      查询FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX当前有效的链上HAT信息,按交易时间戳倒序,获取第1批20条。
      
      

      {
      "requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      "timestamp": 1635513688254,
      "url": "https://www.sign.cash/api/apip11/v1/getHatList",
      "query": {
      "term": {
      "address": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX"
      }
      },
      "sort": [{
      "txTimestamp": {
      "order": "desc"
      }
      }],
      "from": 0,
      "size": 20,
      "sign": ""
      }

      
      ### 响应参数
      
      通用参数参见[通用响应方式](#通用响应方式)。本接口响应参数:
      
      * data
      
      |name|type|description|requested|
      |:---|:---|:---|:---|
      |list|object|See below|
      |total|uint|The total number of items.|Y|
      |bestHeight|uint|The latest block height when getting the data.|Y|
      
      * data.list
      
      |name|type|description|key in FEIP28|
      |:---|:---|:---|:---|
      |address|string|fch地址,本HAT文件所有者||
      |active|bool|标记同一srcFid的系列最新的条目(含所有分片)为1,其他为0||
      |fid|string|本HAT文件的双sha256值|data.fid|
      |srcFid|string|源HAT文件哈希,双Sha256,本文件为源版时等于fid|data.srcFid|
      |preVerFid|string|前版哈希,双Sha256,本文件为源版时为空|data.preVerFid|
      |firstPartFid|string|首哈希,双sha256,无分片为空|data.firstPartFid|
      |prePartFid|string|前片哈希,双sha256,无分片为空|data.prePartFid|
      |algo|string|加密算法,空为未加密,建议"ECC256k1-AES256CBC"|data.algo|
      |pubKey|string|加密公钥,空为上链签名者公钥|data.pubKey|
      |symKeyEncrypted|string|加密后的对称密钥|data.symKeyEncrypted|
      |loca|string array|存放位置,url|data.loca|
      |aid|string|上链HAT文件归属的应用的aid,aid of the app|data.aid|
      |pid|string|上链HAT文件归属的协议的pid,pid of the protocol|data.pid|
      |txid|string|The txid of this transaction|
      |txTimestamp|timestamp|The timestamp of this transaction|
      |blockHeight|uint|The height of the block where the transaction is written|
      
      * 示例
      
      响应查询FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX当前有效的链上HAT信息,按交易时间戳倒序,获取第1批20条。
      
      

      {
      "code": 0,
      "message": "Success.",
      "data": {
      "list": [{
      "address": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX",
      "active": 1,
      "fid": "1111111111111122222222222222",
      "srcFid": "0000000011222222222222222222222",
      "preVerFid": "0000000011222222222222222222222",
      "firstPartFid": "",
      "prePartFid": "",
      "algo": "",
      "pubKey": "0222222222222222222222222",
      "symKeyEncrypted": "",
      "loca": "http://www.cid.cash/file/02dssssssssssssssss,
      "aid": "2k32k323kkkkkkkkkkkkkkkkkkkkkkkk",
      "pid": "33333333333888888888888888888889",
      "txid": 1636526891228,
      "txTimestamp": 230000,
      "blockHeight": 1003034
      }],
      "total": 1,
      "bestHeight": 963667
      },
      "sign": ""
      }

      * 响应状态
      
      参见`《APIP1_OpenAPI》`的“数据请求接口”的“5. 响应”。
      
      ---
      
      Create:2022-03-07
      Update:2021-05-01
      PID:""
      TXID:
      

      APIP11V1_HatOnChain(zh-CN)


      目录

      关于APIP

      关于本协议

      getHatList


      Type:APIP
      SerialNumber:11
      ProtocolName:HatOnChain
      Version:1
      Description:定义文件管理的链上哈希属性表信息接口。
      Author:C_armX
      Language:zh-CN
      preVersionHash:""
      

      关于APIP

      概述

      APIP(Application Programming Interface Protocols)是自由共识生态协议的一种类型,用于创建和发布开放的API文档,供API服务方开发部署通用API服务,以实现数据服务的去中心化。API需求方可以按照APIP协议从遵循该协议的任何一个API服务方那里获取数据服务。

      通用规则

      《APIP1_OpenAPI》规范了APIP类型协议的协议发布、接口标识、接口URL构成、时间戳格式、密码算法、服务流程、商业模式、连接接口,数据接口和查询语法的通用规则。设计、开发或应用APIP协议前,应先参考《APIP1_OpenAPI》协议。

      建立连接

      使用APIP协议各接口,须先采用《APIP1_OpenAPI》的connect接口从API服务方获取symKey。参见《APIP1_OpenAPI》的“connect接口”。

      通用请求参数

      APIP类型协议接口的通用请求参数如下:

      name type description requested
      requester string 请求方的fch地址 Y
      url string 当前所请求api的url Y
      timestamp timestamp 发起请求的时间戳,精确到毫秒 Y
      query object 请求数据的查询语句,参见”APIP简易查询语法@APIP1“ N
      sort object 请求数据的排序语句,参见”APIP简易查询语法@APIP1“ N
      from int 请求列表数据时的起始位置,从0开始 N
      size int 请求列表数据时的每页条目数 N
      sign string 用symkey对其他参数所做的签名 Y

      通用响应方式

      响应前所作的验证、通用响应状态码、通用响应参数参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      请求成功的通用响应参数为:

      参数 类型 说明 适用状态
      code int 响应状态码 all
      message string 响应状态描述 all
      data object 正常返回数据,由具体APIP定义。 0
      sign string 将symKey加入响应参数做两次sha256哈希的签名值 all

      具体APIP协议的特定响应参数在data参数中给出,并定义具体接口的响应状态。

      请求失败的通用响应码、响应信息和响应参数,参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      签名与验证

      APIP接口的请求和响应都需要签名和验证。

      connect接口请求时用私钥签名,公钥验证,响应时无需签名。

      所有数据请求和数据响应,采用以下方法:

      签名:将对称密钥symKey加入参数压缩升序后计算两次sha256,得到sign的值,再用sign替换参数中的symKey。

      验证:将sign从参数中取出,加入symKey,压缩升序后做两次sha256计算,将值与sign的值比较,一致则验证通过。

      详见《APIP1_OpenAPI》

      关于本协议

      1. 本协议接口提供用于文件管理的哈希属性表(HAT)文件的链上信息。

      2. 本协议接口的数据来源和相关规则遵循以下协议:

        • 《FEIP32_HAT》
      3. 本协议接口数据采用JSON格式。

      4. 示例数据:
        requester:FEk41Kqjar45fLDriztUDTUkdki7mmcjWK

      requester的公钥pubKey:030be1d7e633feb2338a74a860e76d893bac525f35a5813cb7b21e27ba1bc8312a

      requester的私钥priKey:L2bHRej6Fxxipvb4TiR5bu1rkT3tRp8yWEsUy4R1Zb8VMm2x7sd8

      requester获得的对称密钥symKey:d2c03bbc1ba1380eafc395374e8da61f92545a1aac5d30b0c19289a69bd34a09

      服务方链上发布的urlMainPart: https://www.sign.cash/api/

      接口url:https://www.sign.cash/api/apip11/v1/[接口名称]

      getHatList

      获取链上当前有效的HAT信息。

      url

      [服务方发布的urlMainPart]apip11/v1/getHatList

      示例:

      https://www.sign.cash/api/apip11/v1/getHatList

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      响应参数data.list中各字段均可作为查询字段。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX当前有效的链上HAT信息,按交易时间戳倒序,获取第1批20条。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip11/v1/getHatList",
      	"query": {
      		"term": {
      			"address": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX"
      		}
      	},
      	"sort": [{
      		"txTimestamp": {
      			"order": "desc"
      		}
      	}],
      	"from": 0,
      	"size": 20,
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description key in FEIP28
      address string fch地址,本HAT文件所有者
      active bool 标记同一srcFid的系列最新的条目(含所有分片)为1,其他为0
      fid string 本HAT文件的双sha256值 data.fid
      srcFid string 源HAT文件哈希,双Sha256,本文件为源版时等于fid data.srcFid
      preVerFid string 前版哈希,双Sha256,本文件为源版时为空 data.preVerFid
      firstPartFid string 首哈希,双sha256,无分片为空 data.firstPartFid
      prePartFid string 前片哈希,双sha256,无分片为空 data.prePartFid
      algo string 加密算法,空为未加密,建议"ECC256k1-AES256CBC" data.algo
      pubKey string 加密公钥,空为上链签名者公钥 data.pubKey
      symKeyEncrypted string 加密后的对称密钥 data.symKeyEncrypted
      loca string array 存放位置,url data.loca
      aid string 上链HAT文件归属的应用的aid,aid of the app data.aid
      pid string 上链HAT文件归属的协议的pid,pid of the protocol data.pid
      txid string The txid of this transaction
      txTimestamp timestamp The timestamp of this transaction
      blockHeight uint The height of the block where the transaction is written
      • 示例

      响应查询FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX当前有效的链上HAT信息,按交易时间戳倒序,获取第1批20条。

      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      			"address": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX",
      			"active": 1,
      			"fid": "1111111111111122222222222222",
      			"srcFid": "0000000011222222222222222222222",
      			"preVerFid": "0000000011222222222222222222222",
      			"firstPartFid": "",
      			"prePartFid": "",
      			"algo": "",
      			"pubKey": "0222222222222222222222222",
      			"symKeyEncrypted": "",
      			"loca": "http://www.cid.cash/file/02dssssssssssssssss,
      			"aid": "2k32k323kkkkkkkkkkkkkkkkkkkkkkkk",
      			"pid": "33333333333888888888888888888889",
      			"txid": 1636526891228,
      			"txTimestamp": 230000,
      			"blockHeight": 1003034
      		}],
      		"total": 1,
      		"bestHeight": 963667
      	},
      	"sign": ""
      }
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。


      posted in Protocol/协议
      昌
      昌用
    • RE: 增加一个fch生态安全的板块吧

      @水雷_zzHe 内容不多,暂时不用。算力攻击相关的可以放到“挖矿”版块。

      posted in General Discussion/讨论区
      昌
      昌用
    • FIPA3V2_InfluenceIndex(en-US)
      FIPA3: InfluenceIndex
      Version: 2
      Language: zh-CN
      Author: C_armX
      Status: draft
      Create: 2022-03-03
      Update:2022-05-07
      PId: ""
      TXID: 
      

      FIPA3V2_InfluenceIndex(zh-CN)

      Contents

      About FIPA

      About this protocol

      计算单位

      [参数构图](#参数构成)

      计算方法

      未来扩展

      Examples

      
      ProtocolType: FIPA
      SerialNumber: 3
      ProtocolName: InfluenceIndex
      VersionNumber: 2
      Description : Define the influence index of the identity calculated based on the coindays and evaluation of the identity on the chain. 基于链上币天和评价数据定义一个身份的综合影响力指数。
      Author: C_armX
      Language: zh-CN
      PreVersionPid:"32c3322189660804581c5647a799811d162eaa8106182d6e6c7d1739be4904fb"
      
      

      About FIPA

      FIPA protocols make improvements to the FCH ecosystem. These improvements will not lead to a hard fork of the main network, and will not write information on the blockchain.

      About this protocol

      1. 本协议基于链上币天和评价数据定义一个身份的综合影响力指数。
      2. 信任降低社会成本。人类之间的信任,可以大幅降低交易成本,提高经济效率。密码共识并未消灭信任,而是在更大范围内,建立更加可靠的信任。
      3. cid在链上留存的数据能够成为其影响力的基础依据。
      4. 币天(Coin Days,CD)能够体现经济价值和时间价值,具有不可人为篡改的基本特征,适合成为量化影响力的基础。

      计算单位

      1. 单位:影响力指数的单位为“点”,“point”。
      2. 基准:影响力指数计量以“万币天”为基准,10000币天=1点
      3. 币天:一笔utxo存在的时间,1FCH存在1天得到1币天。
      4. 币天销毁:花掉某笔utxo,即销毁了其已经存在的币天,销毁数量即其金额乘以销毁时已经存在的天数。如花掉一笔5天前产生的10FCH的utxo,则销毁的币天为10*5=50币天。

      参数构成

      1. **财富:**以“币天余额”和“币天销毁”作为衡量某CID在财富方面的影响力。自由共识生态衡量经济价值的基础量为FCH,但FCH可以随时转移,直接计量财富容易舞弊。因而采用币天进行衡量。其中“币天余额”反映CID当前持有的币天量,反映当前财富数量和持有时间;“币天销毁”反映该CID历史上销毁过的币天量,反映该CID曾经持有的财富数量和时间,反映对生态经济产生过的影响。
      2. 声誉:CID之间按照FEIP16声誉评价协议做的评价衡量CID的社会声誉。人们相互之间的主观评价是社会影响力体系的重要组成部分。FEIP16以币天销毁为基础的声誉评价即实现了主观评价,又实现了量化。

      计算方法

      1. 财富=币天余额0.7+币天销毁0.3。即:当前币天余额占7成权重,历史上销毁的币天总和占3成权重。如果cidA的币天余额为100万币天,历史上曾经销毁200万币天,则cidA的财富=1000.7+2000.3=130点。
      2. **声誉=**Σ(评价方向币天销毁)0.3。**如果cidA总共获得两个声誉评价,分别是1)积极评价,销毁100万币天,2)消极评价,销毁20万币天。0.3为声誉相对于财富的权重。则声誉=11000.3+(-1)200.3=24点。
      3. 影响力=财富+声誉=130+24=154点**。即**cidA的影响力为154点。

      未来扩展

      本协议是早期的尝试,更多扩展的影响力指数,或类似指数,以及计算模式可以自由设计,开放竞争,在市场中进化。

      Examples

      Alice于2020年2月1日获得一笔1万FCH的utxo,8月21日(200天)时,在不同情况下的影响力计算:

      1. 从未动用:财富=10000f*200days*0.7/10000=140点。总影响力140点。
      2. 100天时全部转给自己:财富=(10000*100*0.7+1*100*0.3)/10000 =100点。币天余额100万币天,币天销毁100万币天。总影响力100点。
      3. 100天时全部转给Bob:Alice财富=10000*100*0.3/10000=30点。币天余额为0,币天销毁100万。如果Bob一直未花费,Bob财富=10000*100*0.7/10000=70点。总影响力100点。
      4. 200天时全部转给Bob:Alice财富=10000*200*0.3/10000=60点。Bob财富=1*0*0.3/10000=0点。总影响力60点。
      5. 200天时销毁全部币天给Bob好评:Alice财富=1*200*0.3/10000=60点。Bob声誉=10000*(1*200)*0.3/10000=60点。总影响力120点。(介于1与2两种情况之间,一方面减弱给本人其他CID互评的动机,一方面鼓励相互评价)。
      posted in Protocol/协议
      昌
      昌用
    • Freecash生态建设进展

      Freecash于2019年12月24日发布,2020年1月1日启动运行,已经安全运行2年多,所取得的成果已经远远超出启动时的预期,逐渐明确了构建密码经济基础设施的方向,底层逻辑快速演化成型,进入中间件和商业应用的开发阶段。

      1.生态建设的主要成果

      1.1.去中心化经济组织底层逻辑成熟

      Freecash的诞生是鉴于比特币和比特币现金的成功经验与教训,尝试为去中心化密码货币加入去中心化的治理机制,并做一些改进(参见《自由现金白皮书1.0(2019.7)》https://freecash.org/ )。在展开社区治理的过程中,逐渐意识到去中心化生态的治理必须有去中心化的组织,否则难以保证安全。

      在实现去中心化治理的过程中,我们看到了基于密码共识机制实现去中心化经济组织不但可行,而且更加安全、高效、自由,比特币的优势来自于此,并且可以为几乎所有互联网经济活动提供新的底层逻辑和创新动力。(参见:《密码经济宣言》(2020.4)http://freecash.cc/index.php?id=233 )

      因此,Freecash的定位从密码货币转向为去中心化经济组织提供基础设施,其生态设施也超出了Freecash本身,可以与其他去中心化系统相连,构成自由开放的社会经济共识系统,从而,自由现金(Freecash)升级为自由共识(FreeConsensus)。(参见:《自由共识:为密码经济奠基》(2020.3)(http://freecash.cc/index.php?id=166)

      底层逻辑的升级来自实践,也在实践中试验和进化,经过两年的探索,为去中心化经济组织构建基础设施的底层逻辑已经成熟,与近期DAO、NFT、元宇宙、DID等前沿方向完全一致,并且更加系统、简洁。(参见《自由共识基础设施构架》(2021.6)https://bbs.cash/topic/590/)

      1.2.去中心化经济组织的基础协议体系形成

      共识协议是去中心化经济的基石,Freecash生态的协议系统是最早构建,目前以基本成熟。

      自2020年至今,共编制38个生态共识协议,经过两年的试错演进,最终形成了由23个基础协议构成的自由共识协议体系,涵盖了去中心化的协议、身份、信誉、社交、组织、服务、存储等去中心化经济组织的主要构件。(参见《Freecash Protocol List》https://bbs.cash/topic/568/)

      1.3.底层逻辑在系列APP中得到验证

      Freecash的目标是服务于主流社会,构建更加开放的全球信息经济的基础设施。这与中本聪等早期密码朋克聚焦隐私货币、注重匿名和抗审查的无政府主义倾向有重大差异。比如,在最基本的身份功能上,比特币追求隐匿身份,而Freecash的首要任务是构建新的身份系统。

      因此,Freecash创建了新的基础协议体系,并为应用做了不同于主流dapp的新的底层逻辑。从2020年的密签、sign.cash、dplanet.io、freecash.vip,到2021年的飞签、密圈、cid.cash、write.cash等应用,逐步实现了新的底层逻辑,验证了自由共识方向的可行性。也是在这个过程中,基础协议体系快速进化成熟。

      1.4.底层逻辑和APP在社区治理中得到检验

      Freecash的升级需求来自社区治理需求,由此形成的底层逻辑、基础协议和APP也在社区治理中得到应用和验证。自2020年以来,Freecash社区贡献者们共进行了8次贡献评估,共463人次做出2398项贡献,经贡献者的相互评估,获得了最终的贡献奖励。

      作为社区治理的核心环节,首期贡献评估在主要通过微信完成,随着cid系统、dplanet.io、freecash.vip、密签、飞签、密圈等app逐渐成熟,2021年以来的贡献评估主要在Freecash内生系统中完成。(参见:https://dplanet.io/)

      1.5.API协议体系

      随着基础协议体系的成熟,APP开发的试验阶段基本完成,Freecash生态开始转向中间件和商业应用的开发。为了给商业应用提供统一、高效、去中心化的开发和运营环境,基于23个基础协议,编写了10个APIP协议,提供了46个统一的API,涵盖了去中心化的协议、身份、信誉、社交、组织、服务、存储。

      2.正在进行的主要工作

      2.1.API开发

      当前最重要的开发工作是实现10个APIP协议的46个API,并向生态开放。这是进一步展开各种应用开发的前提。(见下图)

      此项开发工作由生态三位资深开发者speak_wmmw、sirius_8zqD、master_wang承担,APIP协议的主要设计者和飞签APP开发者参与协助。开发正在进行,2022年上半年完成。

      2.2.SDK开发

      Freecash生态建设的目标是用密码共识机制重构互联网经济的基础设施,使信息经济更加安全、高效、自由。在API体系建立之后,互联网应用转用Freecash基础设施的主要障碍在于不熟悉密码技术和自由共识底层逻辑。这个环节本身并不复杂,只需要签名验证、加密解密和公钥地址3个基本开发工具。

      近期,已经委托专业团队开发Java、JavaScript、C++、Go四种语言的签名验证和加密解密SDK,其中Java、JavaScript的加密解密SDK已经完成。公钥产生fch、btc、eth、trx、bch、doge的公钥地址SDK由sirius_8zqD开发。

      2.3.飞签2.0

      飞签是在线身份和资产管理应用,是Freecash生态底层逻辑的主要试验场,1.0版本提供了cid身份管理、密码工具、freecash收支、链上信息管理等基础功能。

      随着基础协议的完善,飞签能够容纳更多Freecash生态的基础功能,在2.0版本中将增加第三方登录服务、链上密信、链上联系人、链上保险柜、utxo管理等新的功能,并将全面采用新的API系统,进一步实现去中心化。

      目前飞签2.0的UI已经设计完成,将与API开发同步展开安卓版APP开发。

      2.4.密签4.0

      密签是Freecash最早的APP,用于离线管理私钥、离线签名验证、加密解密,核心是私钥的安全保存和使用。到密签3.0版已经基本定型。

      目前正在开发4.0版本主要在fch作为身份的基础上,相同私钥增加btc、eth、bsc、trx、bch、doge等多链地址,为用户离线保存多链资产服务。该开发与公钥地址SDK同步进行。

      2.5.基础协议改进

      在API、SDK和APP的开发过程中,基础协议根据出现的问题和需求做进一步的微调和改进。

      2.6.加密备份硬件

      Freecash生态以私钥为安全核心,私钥就是一切,大幅简化由助记词、HD钱包、keystore等所增加的底层逻辑复杂性,但这需要一个安全便捷的私钥备份方式。这是一直以来,Freecash底层逻辑中缺失的并不复杂,但至关重要的一环。

      近期,隐私备份机项目已经酝酿成熟,采用离线扫描二维码打印在长效热敏纸上的办法,实现安全便捷的私钥备份,同时也可以备份助记词、账号密码、谷歌二次认证等重要信息。该项目已经由C_armX联合经验丰富的硬件团队组织实施。

      3.将要实施的主要任务

      3.1.API数据中心部署

      APIP协议开发实现后,在境内境外部署至少2个数据服务中心,以飞签2.0做服务试验调试,成熟后,为进一步的商业应用开发和运行提供服务。

      3.2.去中心化资产管理应用

      基于Freecash底层逻辑、基础协议、API服务和SDK,开发去中心化的多链资产管理应用,该应用具有去中心化的身份、信用、社交等基础模块,能够用单一身份管理fch、btc、eth、trx、bch、doge,以及相应的usdt、usdc等链上资产。

      3.3.去中心化社交通信应用

      基于Freecash底层逻辑、基础协议、API服务和SDK,开发功能较为防备的社交通信应用,主要包括身份管理、信誉管理、链上密信、离链私聊、开放群聊、组织内通讯等功能,探索安全、高效、抗垄断的新型社交模式。

      3.4.去中心化知识发布应用

      基于Freecash底层逻辑、基础协议、API服务和SDK,开发开放的个人知识发布应用,包括身份管理、信誉管理、知识编辑、知识发布、知识评价、作者关注、知识扩散等功能。

      3.5.去中心化文件管理应用

      基于Freecash底层逻辑、基础协议、API服务和SDK,以Freecash为基础账户和文件索引入口,将各种中心化和去中心化的存储系统连接起来,借助市场机制形成跨平台的分布式存储模式,为用户提供去中心化的云文件存储和管理应用。

      3.6.数字产品开放交易平台

      基于Freecash底层逻辑、基础协议、API服务和SDK,开发数字产品,尤其是数字艺术品的发布、认证、流通平台。

      3.7.各种应用的宣传推广

      飞签2.0和隐私备份机将在2022年完成,需要进行相应的宣传推广。但主要的宣传推广需要等待以上商业应用完成。这些商业应用,能够从不同角度体现Freecash所提供的去中心化基础设施的优势,并将这些优势转化为商业利润。与这些应用上市相同步,将会展开一系列的市场推广宣传活动,时间大致在2023年下半年陆续展开。

      fch生态结构.jpg

      密签:
      密签.png

      dplanet.io
      dplanet.io.png

      飞签
      飞签.png

      freecash.vip
      freecash.vip.png

      密圈
      密圈.png

      freecash.cc
      freecash.cc.png

      posted in Announcements & News/公告
      昌
      昌用
    • RE: APIP速查

      APIP8V1_EncryptedInfoOnChain(zh-CN)

      本协议接口提供密信、联系人、保险柜等链上加密信息。数据来源和相关规则遵循以下协议:

      • 《FEIP7_MailOnChain》
      • 《FEIP12_Contacts》
      • 《FEIP17_Safe》

      1. mailOnChain (链上密信接口)

      根据筛选条件获取链上密信信息。

      • 请求参数
      {
          "filterSender": [string, 按第一个输入地址筛选,参见“通用约定·筛选参数”],
          "filterRecipient": [string, 按第一个输出地址筛选,参见“通用约定·筛选参数”],
          "filterDeleted": [bool, 按是否已删除筛选,1为已删除,参见“通用约定·筛选参数”],
          "filterAlg": [string, 按加密算法即data.alg的值筛选,参见“通用约定·筛选参数”],
          "filterTxTimestamp": [string, 按交易时间戳筛选,参见“通用约定·筛选参数”],
          "sortTxTimestamp": [string, 按交易时间戳排序,参见“通用约定·排序参数”],
          "sortDeleted": [string, 按是否已删除排序,1为已删除,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      {
      	"mailList": [{
                  "alg": [string, 加密算法,data.alg的值],
                  "msgSend": [string, 第一个输入地址公钥加密的密文,data.msgSend的值],
                  "msgReci": [string, 第一个输出地址公钥加密的密文,data.msgReci的值],
                  "sender": [string, 第一个输入地址],
                  "recipient": [string, 第一个输出地址],
                  "deleted": [bool, 删除标记,1为已删除],
                  "txid": [string,交易id],
                  "txTimestamp": [timestamp,交易的时间戳],
                  "block": [int, 交易所在区块],
      		}
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      • 返回值
      code msg data
      4000 No matching record. signedRequest

      2.contactsOnChain (链上联系人接口)

      根据筛选条件获取链上联系人信息。

      • 请求参数
      {
          "filterHost": [string, 按第一个输出地址筛选,参见“通用约定·筛选参数”],
          "filterOperator": [string, 按第一个输入地址筛选,参见“通用约定·筛选参数”],
          "filterDeleted": [bool, 按是否已删除筛选,1为已删除,参见“通用约定·筛选参数”],
          "filterAlg": [string, 按加密算法即data.alg的值筛选,参见“通用约定·筛选参数”],
          "filterTxTimestamp": [string, 按交易时间戳筛选,参见“通用约定·筛选参数”],
          "sortTxTimestamp": [string, 按交易时间戳排序,参见“通用约定·排序参数”],
          "sortDeleted": [string, 按是否已删除排序,1为已删除,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      {
      	"contactList": [{
                  "alg": [string, 加密算法,data.alg的值],
                  "msg": [string, 第一个输出地址公钥加密的密文,data.msg的值],
                  "host": [string, 第一个输出地址],
                  "operator": [string, 第一个输入地址],
                  "deleted": [bool, 删除标记,1为已删除],
                  "txid": [string,交易id],
                  "txTimestamp": [timestamp,交易的时间戳],
                  "block": [int, 交易所在区块],
      		}
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      • 返回值
      code msg data
      4000 No matching record. signedRequest

      3.safeOnChain (链上保险柜接口)

      根据筛选条件获取链上保险柜信息。

      • 请求参数
      {
          "filterHost": [string, 按第一个输出地址筛选,参见“通用约定·筛选参数”],
          "filterOperator": [string, 按第一个输入地址筛选,参见“通用约定·筛选参数”],
          "filterDeleted": [bool, 按是否已删除筛选,1为已删除,参见“通用约定·筛选参数”],
          "filterAlg": [string, 按加密算法即data.alg的值筛选,参见“通用约定·筛选参数”],
          "filterTxTimestamp": [string, 按交易时间戳筛选,参见“通用约定·筛选参数”],
          "sortTxTimestamp": [string, 按交易时间戳排序,参见“通用约定·排序参数”],
          "sortDeleted": [string, 按是否已删除排序,1为已删除,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      {
      	"safeList": [{
                  "alg": [string, 加密算法,data.alg的值],
                  "msg": [string, 第一个输出地址公钥加密的密文,data.msg的值],
                  "host": [string, 第一个输出地址],
                  "operator": [string, 第一个输入地址],
                  "deleted": [bool, 删除标记,1为已删除],
                  "txid": [string,交易id],
                  "txTimestamp": [timestamp,交易的时间戳],
                  "block": [int, 交易所在区块],
      		}
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      4000 No matching record. signedRequest

      APIP9V1_GroupInfo(zh-CN)

      本协议接口提供链上注册的各种群的相关信息。数据来源和相关规则遵循以下协议:

      • 《FEIP19_Group》

      1.gidInfoList (gid列表接口)

      给定一个或多个gid获取除成员列表以外的群信息。

      • 请求参数
      {
          "gidList": [string array, gid列表, 必填]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      {
      	"gidInfoList": [{
              "gid": [string, 群的gid],
              "name": [string,群名,data.name的值],
              "desc": [string,群的描述,data.desc的值],
              "memberNumber": [uint64, 活跃成员的数量],
              "sponsor": [string, 创建群的交易的第一个输入地址],
              "updater": [string, 最后更新群信息的交易的第一个输入地址],
              "firstTime": [timestamp,发布时间戳],
              "lastTxid": [string, 群信息最后更新的txid],
              "lastTime": [timestamp,群信息最后更新的时间戳],
              "tCdd": [int64, 该群创建、更新和加群操作的所有交易累计销毁的币天]
      		}
      
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      • 返回值
      code msg data
      9000 These GIDs do not exist. missedGidList
      9001 Too many GIDs are requested. maxGidCount

      2. gidDetails (群详情接口)

      给定一个gid获取其包括群成员在内的全部信息。

      • 请求参数
      {
          "gid": [string, 群的gid,必填]
      }
      
      • 响应参数
      {
      	"gid": [string, 群的gid],
      	"name": [string,群名,data.name的值],
      	"desc": [string,群的描述,data.desc的值],
      	"memberNumber": [uint64, 活跃成员的数量],
      	"activeMembers": [string array, 活跃成员名单],
      	"exitedMembers": [string array, 已退出成员名单],
      	"sponsor": [string, 创建群的交易的第一个输入地址],
      	"updater": [string, 最后更新群信息的交易的第一个输入地址],
      	"firstTime": [timestamp,发布时间戳],
      	"lastTxid": [string,群信息最后更新的txid],
      	"lastTime": [timestamp,群信息最后更新的时间戳],
      	"tCdd": [int64, 该群创建、更新和加群操作的所有交易累计销毁的币天]
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      • 返回值
      code msg data
      9002 The GID does not exist. gid

      3. groupSearch (群搜索接口)

      按条件查询群。

      • 请求参数
      {
      	"filterName": [string,模糊匹配data.name,参见“通用约定·筛选参数”],
      	"filterDesc": [string,模糊匹配data.desc,参见“通用约定·筛选参数”],
      	"filterSponsor": [string, 模糊匹配sponsor,参见“通用约定·筛选参数”],
      	"filterUpdater": [string, 模糊匹配updater,参见“通用约定·筛选参数”],
      	"filterMemberNumber": [string,按memberNumber筛选,参见“通用约定·筛选参数”],
          "filterFirstTime": [string, 按发布的交易时间筛选,参见“通用约定·筛选参数”],
          "filterLastTime": [string, 按发布的交易时间筛选,参见“通用约定·筛选参数”],
          "filterTCdd": [string, 按tCdd筛选,参见“通用约定·筛选参数”],
      	"sortMemberNumber": [string,按memberNumber排序,参见“通用约定·排序参数”],
          "sortFirstTime": [string, 按发布的交易时间戳排序,参见“通用约定·排序参数”],
          "sortLastTime": [string, 按最后更新的交易时间戳排序,参见“通用约定·排序参数”],
          "sortTCdd": [string, 按累计销毁币天tCdd排序,参见“通用约定·排序参数”],
      	"sortName": [string, 按data.name排序,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      
      
      • 响应参数
      {
      	"gidInfoList": [{
              "gid": [string, 群的gid],
              "name": [string,群名,data.name的值],
              "desc": [string,群的描述,data.desc的值],
              "memberNumber": [uint64, 活跃成员的数量],
              "sponsor": [string, 创建群的交易的第一个输入地址],
              "updater": [string, 最后更新群信息的交易的第一个输入地址],
              "firstTime": [timestamp,发布时间戳],
              "lastTxid": [string, 群信息最后更新的txid],
              "lastTime": [timestamp,群信息最后更新的时间戳],
              "tCdd": [int64, 该群创建、更新和加群操作的所有交易累计销毁的币天]
      		}
      
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      • 返回值
      code msg data
      4000 No matching record. signedRequest

      4. gidHistory (群历史接口)

      查询某gid群的所有历史操作记录。

      • 请求参数
      {
          "gid": [string, 群的gid, 必填],
          "filterSigner": [string, 按第一个输入地址筛选,参见“通用约定·筛选参数”],
          "filterOp": [string, 按datga.op筛选,参见“通用约定·筛选参数”],
          "filterTxTimestamp": [string, 按交易时间戳筛选,参见“通用约定·筛选参数”],
          "filterCdd": [string, 按cdd筛选,参见“通用约定·筛选参数”],
          "sortOp": [string, 按data.op排序,参见“通用约定·排序参数”],
          "sortTxTimestamp": [string, 按交易时间戳排序,参见“通用约定·排序参数”],
          "sortCdd": [string, 按销毁币天排序,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      {
          "gid": [string, 群的aid],
          "name": [string,群名, data.name的最新值],
      	"opList ": [{
      			"op": [string, data.op的值],
      			"signer": [string,群的创建者,即建群交易的第一个输入地址],
      			"name": [string,群名, data.name的值],
      			"desc": [string,群的描述,data.desc的值],
      			"txid": [string, txid],
                  "txTimestamp": [timestamp,交易的时间戳],
                  "cdd": [int, 本交易销毁币天],
                  "block": [int, 交易所在区块]
      		}
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      9002 The GID does not exist. gid

      5. gidMemberSearch (群成员搜索接口)

      模糊查询某gid群的某个cid或地址,不区分大小写。

      • 请求参数
      {
          "gid": [string, 群的gid,必填],
          "searchMember": [string, 在cid和address中模糊搜索的内容,必填]
      }
      
      
      • 响应参数
      {
          "gid": [string, 查询的群的gid],
      	"memberList": [string array, 包含searchMember的cid或address列表]
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      • 返回值
      code msg data
      4000 No matching record. 没有符合条件的信息。

      6. myGroupList (我的群列表接口)

      模糊查询某address当前参与和已经退出的群列表。

      • 请求参数
      {
          "address": [string,FCH地址,必填],
          "filterMemberStatus": [string, 按成员状态筛选,包括“active”和“exited”两种状态,参见“通用约定·筛选参数”],
      }
      
      • 响应参数
      {
      	"gidInfoList": [{
              "memberStatus": [string, 在该群的成员状态,“active”或“exited”],
              "gid": [string, 群的gid],
              "name": [string,群名,data.name的值],
              "desc": [string,群的描述,data.desc的值],
              "memberNumber": [uint64, 活跃成员的数量],
              "sponsor": [string, 创建群的交易的第一个输入地址],
              "updater": [string, 最后更新群信息的交易的第一个输入地址],
              "firstTime": [timestamp,发布时间戳],
              "lastTxid": [string, 群信息最后更新的txid],
              "lastTime": [timestamp,群信息最后更新的时间戳],
              "tCdd": [int64, 该群创建、更新和加群操作的所有交易累计销毁的币天]
      		}
      
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      • 返回值
      code msg data
      4000 No matching record. 没有符合条件的信息。

      APIP10V1_OrganizationInfo(zh-CN)

      本协议接口提供链上注册的各种组织的相关信息。数据来源和相关规则遵循以下协议:

      • 《FEIP28_Organization》

      1.oidInfoList (组织概况列表接口)

      给定一个或多个oid获取除成员列表以外的组织信息。

      • 请求参数
      {
          "oidList": [string array, oid列表, 必填]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      {
      	"oidInfoList": [{
              "oid": [string, 组织的oid],
              "owner": [string, 创建组织的交易的第一个输入地址],
      		"stdName": [string,组织的标准名, data.stdName的值],
      		"localName": [string array,组织的其他名称, data.localName的值],
              "desc": [string,组织的描述,data.desc的值],
              "memberNumber": [uint64, 活跃成员的数量],
              "firstTime": [timestamp,创建交易的时间戳],
              "lastTxid": [string, 组织最新操作的txid],
              "lastTime": [timestamp,组织最新操作的时间戳],
              "tCdd": [int64, data.op为“rate”的所有交易的累计币天销毁],
              "tRate": [float, 服务的综合评分,tRate=(tCdd\*tRate+cdd\*rate)/(tCdd+cdd)]
      		}
      
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      • 返回值
      code msg data
      1100 These OIDs do not exist. missedOidList
      1101 Too many OIDs are requested. maxOidCount

      2. memberList (组织成员列表接口)

      获取oid的各种状态的成员列表。

      • 请求参数
      {
          "oid": [string, 组织的oid,必填],
          "filterMemberStatus": [string, 按成员状态筛选,包括“owner”,“active”,“administrators”,“exiting”和“delisted”5种状态,参见“通用约定·筛选参数”],
      }
      
      
      • 响应参数
      {
      	"oid": [string, 组织的oid],
          "owner": [string, 创建组织的交易的第一个输入地址],
      	"activeMembers": [string array, 活跃成员名单],
      	"exitingMembers": [string array, 已申请退出尚未除名的成员名单],
      	"administrators": [string array, 管理员名单],
      	"delistedMembers": [string array, 已除名成员名单],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      • 返回值
      code msg data
      1102 The OID does not exist. oid

      3. organizationSearch (组织搜索接口)

      按条件查询组织。

      • 请求参数
      {
      	"filterStdName": [string,模糊匹配data.stdName,参见“通用约定·筛选参数”],
      	"filterLocalName": [string,模糊匹配data.localName,参见“通用约定·筛选参数”],
      	"filterDesc": [string,模糊匹配data.desc,参见“通用约定·筛选参数”],
      	"filterMemberNumber": [string,按memberNumber筛选,参见“通用约定·筛选参数”],
          "filterFirstTime": [string, 按发布的交易时间筛选,参见“通用约定·筛选参数”],
          "filterLastTime": [string, 按发布的交易时间筛选,参见“通用约定·筛选参数”],
          "filterTCdd": [string, 按累计币天销毁tCdd筛选,参见“通用约定·筛选参数”],
          "filterTRate": [string, 按总和评分tRate筛选,参见“通用约定·筛选参数”],
      	"sortMemberNumber": [string,按memberNumber排序,参见“通用约定·排序参数”],
          "sortFirstTime": [string, 按发布的交易时间戳排序,参见“通用约定·排序参数”],
          "sortLastTime": [string, 按最后更新的交易时间戳排序,参见“通用约定·排序参数”],
          "sortTCdd": [string, 按累计销毁币天tCdd排序,参见“通用约定·排序参数”],
      	"sortStdName": [string, 按data.stdName排序,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      
      
      • 响应参数
      {
      	"oidInfoList": [{
              "oid": [string, 组织的oid],
              "owner": [string, 创建组织的交易的第一个输入地址],
      		"stdName": [string,组织的标准名, data.stdName的值],
      		"localName": [string array,组织的其他名称, data.localName的值],
              "desc": [string,组织的描述,data.desc的值],
              "memberNumber": [uint64, 活跃成员的数量],
              "firstTime": [timestamp,发布时间戳],
              "lastTxid": [string, 组织信息最后更新的txid],
              "lastTime": [timestamp,组织信息最后更新的时间戳],
              "tCdd": [int64, data.op为“rate”的所有交易的累计币天销毁],
              "tRate": [float, 服务的综合评分,tRate=(tCdd\*tRate+cdd\*rate)/(tCdd+cdd)]
      		}
      
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      • 返回值
      code msg data
      4000 No matching record. signedRequest

      4. oidHistory (组织历史接口)

      查询某oid组织的除rate操作外的所有历史操作记录。

      • 请求参数
      {
          "oid": [string, 组织的oid, 必填],
          "filterSigner": [string, 按第一个输入地址筛选,参见“通用约定·筛选参数”],
          "filterOp": [string, 按除了“rate”以外的10种datga.op值筛选,参见“通用约定·筛选参数”],
          "filterTxTimestamp": [string, 按交易时间戳筛选,参见“通用约定·筛选参数”],
          "sortOp": [string, 按data.op排序,参见“通用约定·排序参数”],
          "sortTxTimestamp": [string, 按交易时间戳排序,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      {
          "oid": [string, 组织的aid],
      	"stdName": [string,组织的标准名, data.stdName的值],
      	"opList ": [{
      			"op": [string, data.op的值],
      			"signer": [string,组织的创建者,即建组织交易的第一个输入地址],
      			"recipients": [string array, 所有输出地址列表], 
      		    "stdName": [string,组织的标准名, data.stdName的值],
      	        "localName": [string array,组织的其他名称, data.localName的值],
      			"desc": [string,组织的描述,data.desc的值],
      			"days": [string,邀请的有效时间,data.days的值],
      			"txid": [string, txid],
                  "txTimestamp": [timestamp,交易的时间戳],
                  "cdd": [int, 本交易销毁币天],
                  "block": [int, 交易所在区块]
      		}
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      1102 The OID does not exist. oid

      5. oidMemberSearch (组织成员搜索接口)

      在活跃成员中模糊查询某oid组织的某个cid或地址,不区分大小写。

      • 请求参数
      {
          "oid": [string, 组织的oid,必填],
          "searchMember": [string, 在cid和address中模糊搜索的内容,必填]
      }
      
      
      • 响应参数
      {
          "oid": [string, 查询的组织的oid],
      	"memberList": [string array, 包含searchMember的cid或address列表]
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      • 返回值
      code msg data
      4000 No matching record. 没有符合条件的信息。

      6. myGroupList (我的组织列表接口)

      模糊查询某address当前拥有、当前参与、担任管理员、声明退出或已经退出的组织列表。

      • 请求参数
      {
          "address": [string,FCH地址,必填],
          "filterMemberStatus": [string, 按成员状态筛选,包括“owner”,“active”,“administrators”,“exiting”和“delisted”5种状态,参见“通用约定·筛选参数”],
      }
      
      • 响应参数
      {
      	"oidInfoList": [{
              "memberStatus": [string, 在该组织的成员状态,“owner”,“active”,“administrators”,“exiting”和“delisted”5种状态之一],
              "oid": [string, 组织的oid],
              "owner": [string, 创建组织的交易的第一个输入地址],
      		"stdName": [string,组织的标准名, data.stdName的值],
      		"localName": [string array,组织的其他名称, data.localName的值],
              "desc": [string,组织的描述,data.desc的值],
              "memberNumber": [uint64, 活跃成员的数量],
              "firstTime": [timestamp,发布时间戳],
              "lastTxid": [string, 组织信息最后更新的txid],
              "lastTime": [timestamp,组织信息最后更新的时间戳],
              "tCdd": [int64, data.op为“rate”的所有交易的累计币天销毁],
              "tRate": [float, 服务的综合评分,tRate=(tCdd\*tRate+cdd\*rate)/(tCdd+cdd)]
      		}
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      • 返回值
      code msg data
      4000 No matching record. 没有符合条件的信息。

      7. oidRateList (组织评价列表接口)

      查询对某oid组织的评价信息,即data.op值为“rate”的记录。

      • 请求参数
      name type description required
      oid string Y
      filterRate uint Filter by data.rate N
      filterCdd string Filter by cdd N
      filterTxTimestamp string Filter by txTimestamp N
      filterRater string Filter by the address of the first input of the rating transaction N
      sortTxTimestamp string Sort by txTimestamp N
      sortCdd string Sort by cdd N
      sortRate string Sort by data.rate N
      sortRater string Sort by the address of the first input of the rating transaction N
      count uint How many entries are wanted in a single request. N
      sequence uint Sequence in continuous request.Start from 0. N
      • 请求参数
      {
          "oid": [string, 组织的oid],
          "filterRate": [string, 按评分data.rate的值筛选,参见“通用约定·筛选参数”],
          "filterCdd": [string, 按销毁币天筛选,参见“通用约定·排序参数”],
          "filterTxTimestamp": [string, 按交易时间戳筛选,参见“通用约定·筛选参数”],
          "filterRater": [string, 按评价者筛选,参见“通用约定·筛选参数”],
          "sortTxTimestamp": [string, 按交易时间戳排序,参见“通用约定·排序参数”],
          "sortCdd": [string, 按销毁币天排序,参见“通用约定·排序参数”],
          "sortRate": [string, 按data.rate的值排序,参见“通用约定·排序参数”],
          "sortRater": [string, 按评价者排序,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      
      • 响应参数
      {
          "oid": [string, 组织的oid],
      	"rateList ": [{
              "rater": [string, 评价者地址],
              "rate": [uint, 评分data.rate的值],
              "cdd": [int64, 销毁币天值],
              "txid": [string,交易id],
              "txTimestamp": [timestamp,交易的时间戳],
              "block": [int, 交易所在区块]
      		}
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      1102 The OID does not exist. oid
      4000 No matching record. signedRequest

      posted in Protocol/协议
      昌
      昌用
    • RE: APIP速查

      APIP5V1_ProtocolInfo(zh-CN)

      本协议接口提供链上注册的各种协议的相关信息。数据来源和相关规则遵循以下协议:

      • 《FEIP1_FreeProtocol》

      1.pidInfoList (PID详情接口)

      给定一个或多个PID获取相应协议详情。

      • 请求参数
      {
      	"pidList": [string array, 拟查询的pid列表,必填]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      {
      	"pidInfoList": [{
      			"pid": [string, 协议的pid],
      			"type": [string, 协议类型,data.type的值],
      			"sn": [string,协议编号,data.sn的值],
      			"ver": [string,协议版本号,data.ver的值],
      			"name": [string,协议名,data.name的值],
      			"lang": [string,协议的语言,data.lang的值,采用i18n标准],
      			"title": [string,协议的标题,如"FEIP3V4_CID(en-US)"],
      			"desc": [string,协议的描述,data.desc的值],
      			"authors": [string array, 协议的作者们,data.authors的值],
      			"prePid": [string,协议上一版本的pid,data.prePid的值],
      			"fileUrl": [string,协议文件的url,data.fileUrl的值],
      			"firstTxid": [string,协议发布的txid],
      			"signer": [string,协议的签发者,即发布交易的第一个输入地址],
      			"firstTime": [timestamp,发布时间戳],
      			"lastTxid": [string,协议信息最后更新的txid],
      			"lastTime": [timestamp,协议信息最后更新的时间戳],
      			"tCdd": [int64, 该协议的评价交易累计销毁的币天],
      			"tRate": [float, 协议的综合评分],
      			"status": [bool, 协议的当前状态,1为生效中,0为已注销]
      		}
          ]
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      5000 These PIDs do not exist. missedPidList
      5001 Too many PIDs are requested. maxPidCount

      2. protocolSearch (协议搜索接口)

      按条件查询协议。

      • 请求参数
      
      {
          "filterTitle": [string, 模糊匹配title,参见“通用约定·筛选参数”],
          "filterAuthors": [string, 模糊匹配authors,参见“通用约定·筛选参数”],
          "filterType": [string, 模糊匹配type,参见“通用约定·筛选参数”],
          "filterLang": [string, 模糊匹配lang,参见“通用约定·筛选参数”],
          "filterPrePid": [string, 按prePid精确匹配,参见“通用约定·筛选参数”],
          "filterFileUrl": [string, 模糊匹配fileUrl,参见“通用约定·筛选参数”],
          "filterSigner": [string, 按第一个输入地址筛选],
          "filterFirstTime": [string, 按发布的交易时间筛选,参见“通用约定·筛选参数”],
          "filterLastTime": [string, 按发布的交易时间筛选,参见“通用约定·筛选参数”],
          "filterTCdd": [string, 按tCdd筛选,参见“通用约定·筛选参数”],
          "filterTRate": [string, 按tRate筛选,参见“通用约定·筛选参数”],
          "filterStatus": [string, 按status筛选,参见“通用约定·筛选参数”],
          "sortSigner": [string, 按第一个输入地址排序,参见“通用约定·排序参数”],
          "sortFirstTime": [string, 按发布的交易时间戳排序,参见“通用约定·排序参数”],
          "sortLastTime": [string, 按最后更新的交易时间戳排序,参见“通用约定·排序参数”],
          "sortTCdd": [string, 按累计销毁币天tCdd排序,参见“通用约定·排序参数”],
          "sortTRate": [string, 按综合评分tRate排序,参见“通用约定·排序参数”],
          "sortStatus": [string, 按当前状态排序,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      {
      	"protocolList": [{
      			"pid": [string, 协议的pid],
      			"title": [string,协议的标题,如"FEIP3V4_CID(en-US)"],
      			"desc": [string,协议的描述,data.desc的值],
      			"fileUrl": [string,协议文件的url,data.fileUrl的值],
      			"signer": [string,协议的签发者,即发布交易的第一个输入地址],
      			"firstTime": [timestamp,发布时间戳],
      			"lastTime": [timestamp,协议信息最后更新的时间戳],
      			"tCdd": [int64, 该协议的评价交易累计销毁的币天],
      			"tRate": [float, 协议的综合评分],
      			"status": [bool, 协议的当前状态,1为生效中,0为已注销]
      		}
          ]
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      4000 No matching record. signedRequest

      3. pidHistory (协议历史接口)

      查询某pid协议的所有历史操作记录,不包括data.op值为“rate”的记录。

      • 请求参数
      {
          "pid": [string, 协议的pid],
          "sortTxTimestamp": [string, 按交易时间戳排序,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      
      • 响应参数
      {
          "pid": [string, 协议的pid],
          "signer": [string,协议的签发者,即发布交易的第一个输入地址],
          "title": [string,协议的标题,如"FEIP3V4_CID(en-US)"],
      	"opList ": [{
      			"op": [string, data.op的值,排除值为“rate”的项],
      			"type": [string, data.type的值],
      			"sn": [string,协议编号,data.sn的值],
      			"ver": [string,协议版本号,data.ver的值],
      			"name": [string,协议名,data.name的值],
      			"lang": [string,协议的语言,data.lang的值,采用i18n标准],
      			"title": [string,协议的标题,如"FEIP3V4_CID(en-US)"],
      			"desc": [string,协议的描述,data.desc的值],
      			"authors": [string array, 协议的作者们,data.authors的值],
      			"prePid": [string,协议上一版本的pid,data.prePid的值],
      			"fileUrl": [string,协议文件的url,data.fileUrl的值],
      			"txid": [string, txid],
                  "txTimestamp": [timestamp,交易的时间戳],
                  "block": [int, 交易所在区块]
      		}
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      5002 The PID does not exist. pid

      4. pidRateList (协议评价列表接口)

      查询对某pid协议的评价信息,即data.op值为“rate”的记录。

      • 请求参数
      {
          "pid": [string, 协议的pid],
          "filterRate": [string, 按评分data.rate的值筛选,参见“通用约定·筛选参数”],
          "filterCdd": [string, 按销毁币天筛选,参见“通用约定·排序参数”],
          "filterTxTimestamp": [string, 按交易时间戳筛选,参见“通用约定·筛选参数”],
          "filterRater": [string, 按评价者筛选,参见“通用约定·筛选参数”],
          "sortTxTimestamp": [string, 按交易时间戳排序,参见“通用约定·排序参数”],
          "sortCdd": [string, 按销毁币天排序,参见“通用约定·排序参数”],
          "sortRate": [string, 按data.rate的值排序,参见“通用约定·排序参数”],
          "sortRater": [string, 按评价者排序,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      
      • 响应参数
      {
          "pid": [string, 协议的pid],
      	"rateList ": [{
              "rater": [string, 评价者地址],
              "rate": [uint, 评分data.rate的值],
              "cdd": [int64, 销毁币天值],
              "txid": [string,交易id],
              "txTimestamp": [timestamp,交易的时间戳],
              "block": [int, 交易所在区块]
      		}
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      5002 The PID does not exist. pid
      4000 No matching record. signedRequest

      APIP6V1_ServiceInfo(zh-CN)

      本协议接口提供链上注册的各项服务的相关信息。数据来源和相关规则遵循以下协议:

      • 《FEIP29_Service》

      1.sidInfoList (SID详情接口)

      给定一个或多个SID获取相应服务详情。

      • 请求参数
      {
      	"sidList": [string array, 拟查询的sid列表,必填]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      {
      	"sidInfoList": [{
      			"sid": [string, 服务的sid],
      			"stdName": [string,服务的标准名, data.stdName的值],
      			"localName": [string array,服务的其他名称, data.localName的值],
      			"desc": [string,服务的描述,data.desc的值],
      			"type": [string, 服务类型,data.type的值],
      			"url": [string,服务的url,data.url的值],
      			"pubKey": [string, 发布者指定的管理身份公钥,data.pubKey的值],
      			"signer": [string,服务的签发者,即发布交易的第一个输入地址],
      			"firstTime": [timestamp,发布时间戳],
      			"lastTxid": [string,服务信息最后更新的txid],
      			"lastTime": [timestamp,服务信息最后更新的时间戳],
      			"tCdd": [int64, 该服务的评价交易累计销毁的币天],
              "tRate": [float, 服务的综合评分,tRate=(tCdd\*tRate+cdd\*rate)/(tCdd+cdd)],
      			"status": [bool, 服务的当前状态,1为生效中,0为已注销]
      		}
          ]
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      6000 These SIDs do not exist. missedSidList
      6001 Too many SIDs are requested. maxSidCount

      2. serviceSearch (服务搜索接口)

      按条件查询服务。

      • 请求参数
      
      {
          "filterName": [string, 模糊匹配data.stdName或data.localName,参见“通用约定·筛选参数”],
          "filterAddress": [string, 模糊匹配data.pubKey所对应的address,参见“通用约定·筛选参数”],
          "filterType": [string, 模糊匹配data.type,参见“通用约定·筛选参数”],
          "filterUrl": [string, 模糊匹配data.url,参见“通用约定·筛选参数”],
          "filterSigner": [string, 按第一个输入地址筛选],
          "filterFirstTime": [string, 按发布的交易时间筛选,参见“通用约定·筛选参数”],
          "filterLastTime": [string, 按发布的交易时间筛选,参见“通用约定·筛选参数”],
          "filterTCdd": [string, 按tCdd筛选,参见“通用约定·筛选参数”],
          "filterTRate": [string, 按tRate筛选,参见“通用约定·筛选参数”],
          "filterStatus": [string, 按status筛选,参见“通用约定·筛选参数”],
          "sortSigner": [string, 按第一个输入地址排序,参见“通用约定·排序参数”],
          "sortFirstTime": [string, 按发布的交易时间戳排序,参见“通用约定·排序参数”],
          "sortLastTime": [string, 按最后更新的交易时间戳排序,参见“通用约定·排序参数”],
          "sortTCdd": [string, 按累计销毁币天tCdd排序,参见“通用约定·排序参数”],
          "sortTRate": [string, 按综合评分tRate排序,参见“通用约定·排序参数”],
          "sortStatus": [string, 按当前状态排序,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      {
      	"serviceList": [{
      			"sid": [string, 服务的sid],
      			"stdName": [string,服务的标准名, data.stdName的值],
      			"localName": [string array,服务的其他名称, data.localName的值],
      			"desc": [string,服务的描述,data.desc的值],
      			"type": [string, 服务类型,data.type的值],
      			"url": [string,服务的url,data.url的值],
      			"pubKey": [string, 发布者指定的管理身份公钥,data.pubKey的值],
      			"signer": [string,服务的签发者,即发布交易的第一个输入地址],
      			"firstTime": [timestamp,发布时间戳],
      			"lastTxid": [string,服务信息最后更新的txid],
      			"lastTime": [timestamp,服务信息最后更新的时间戳],
      			"tCdd": [int64, 该服务的评价交易累计销毁的币天],
      			"tRate": [float, 服务的综合评分],
      			"status": [bool, 服务的当前状态,1为生效中,0为已注销]
      		}
          ]
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      4000 No matching record. 没有符合条件的信息。

      3. sidHistory (服务历史接口)

      查询某sid服务的所有历史操作记录,不包括data.op值为“rate”的记录。

      • 请求参数
      {
          "sid": [string, 服务的sid],
          "sortTxTimestamp": [string, 按交易时间戳排序,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      
      • 响应参数
      {
          "sid": [string, 服务的sid],
          "signer": [string,服务的签发者,即发布交易的第一个输入地址],
          "stdName": [string,服务的标准名, data.stdName的最新值],
      	"opList ": [{
      			"op": [string, data.op的值, 排除值为“rate”的项],
      			"stdName": [string,服务的标准名, data.stdName的值],
      			"localName": [string array,服务的其他名称, data.localName的值],
      			"desc": [string,服务的描述,data.desc的值],
      			"type": [string, 服务类型,data.type的值],
      			"url": [string,服务的url,data.url的值],
      			"pubKey": [string, 发布者指定的管理身份公钥,data.pubKey的值],
      			"txid": [string, txid],
                  "txTimestamp": [timestamp,交易的时间戳],
                  "block": [int, 交易所在区块]
      		}
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      6002 The SID does not exist. sid

      4. sidRateList (服务评价列表接口)

      查询对某sid服务的评价信息,即data.op值为“rate”的记录。

      • 请求参数
      {
          "sid": [string, 服务的sid],
          "filterRate": [string, 按评分data.rate的值筛选,参见“通用约定·筛选参数”],
          "filterCdd": [string, 按销毁币天筛选,参见“通用约定·排序参数”],
          "filterTxTimestamp": [string, 按交易时间戳筛选,参见“通用约定·筛选参数”],
          "filterRater": [string, 按评价者筛选,参见“通用约定·筛选参数”],
          "sortTxTimestamp": [string, 按交易时间戳排序,参见“通用约定·排序参数”],
          "sortCdd": [string, 按销毁币天排序,参见“通用约定·排序参数”],
          "sortRate": [string, 按data.rate的值排序,参见“通用约定·排序参数”],
          "sortRater": [string, 按评价者排序,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      
      • 响应参数
      {
          "sid": [string, 服务的sid],
      	"rateList ": [{
              "rater": [string, 评价者地址],
              "rate": [uint, 评分data.rate的值],
              "cdd": [int64, 销毁币天值],
              "txid": [string,交易id],
              "txTimestamp": [timestamp,交易的时间戳],
              "block": [int, 交易所在区块]
      		}
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      6002 The SID does not exist. sid
      4000 No matching record. signedRequest

      APIP7V1_CappInfo(zh-CN)

      本协议接口提供链上注册的各中密码应用的相关信息。数据来源和相关规则遵循以下协议:

      • 《FEIP15_CAPP》

      1.aidInfoList (AID详情接口)

      给定一个或多个AID获取相应应用详情。

      • 请求参数
      {
      	"aidList": [string array, 拟查询的aid列表,必填]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      {
      	"aidInfoList": [{
      			"aid": [string, 应用的aid],
      			"stdName": [string,应用的标准名, data.stdName的值],
      			"localName": [string array,应用的其他名称, data.localName的值],
      			"desc": [string,应用的描述,data.desc的值],
      			"type": [string, 应用类型,data.type的值],
      			"url": [string,应用的url,data.url的值],
      			"prot": [string array, 所采用的协议pid,data.prot的值],
      			"serv": [string array, 所采用的服务sid,data.serv的值],
      			"pubKey": [string, 发布者指定的管理身份公钥,data.pubKey的值],
      			"signer": [string,应用的签发者,即发布交易的第一个输入地址],
      			"firstTime": [timestamp,发布时间戳],
      			"lastTxid": [string,应用信息最后更新的txid],
      			"lastTime": [timestamp,应用信息最后更新的时间戳],
      			"tCdd": [int64, 该应用的评价交易累计销毁的币天],
      			"tRate": [float, 应用的综合评分],
      			"status": [bool, 应用的当前状态,1为生效中,0为已注销]
      		}
          ]
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      7000 These AIDs do not exist. missedAidList
      7001 Too many AIDs are requested. maxAidCount

      2. cappSearch (应用搜索接口)

      按条件查询应用。

      • 请求参数
      {
          "filterName": [string, 模糊匹配data.stdName或data.localName,参见“通用约定·筛选参数”],
          "filterAddress": [string, 模糊匹配data.pubKey所对应的address,参见“通用约定·筛选参数”],
          "filterType": [string, 模糊匹配data.type,参见“通用约定·筛选参数”],
          "filterUrl": [string, 模糊匹配data.url,参见“通用约定·筛选参数”],
          "filterProt": [string, 模糊匹配data.prot, 参见“通用约定·筛选参数”],
          "filterServ": [string, 模糊匹配data.serv,参见“通用约定·筛选参数”],
          "filterSigner": [string, 按第一个输入地址筛选],
          "filterFirstTime": [string, 按发布的交易时间筛选,参见“通用约定·筛选参数”],
          "filterLastTime": [string, 按发布的交易时间筛选,参见“通用约定·筛选参数”],
          "filterTCdd": [string, 按tCdd筛选,参见“通用约定·筛选参数”],
          "filterTRate": [string, 按tRate筛选,参见“通用约定·筛选参数”],
          "filterStatus": [string, 按status筛选,参见“通用约定·筛选参数”],
          "sortSigner": [string, 按第一个输入地址排序,参见“通用约定·排序参数”],
          "sortFirstTime": [string, 按发布的交易时间戳排序,参见“通用约定·排序参数”],
          "sortLastTime": [string, 按最后更新的交易时间戳排序,参见“通用约定·排序参数”],
          "sortTCdd": [string, 按累计销毁币天tCdd排序,参见“通用约定·排序参数”],
          "sortTRate": [string, 按综合评分tRate排序,参见“通用约定·排序参数”],
          "sortStatus": [string, 按当前状态排序,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      {
      	"cappList": [{
      			"aid": [string, 应用的aid],
      			"stdName": [string,应用的标准名, data.stdName的值],
      			"localName": [string array,应用的其他名称, data.localName的值],
      			"desc": [string,应用的描述,data.desc的值],
      			"type": [string, 应用类型,data.type的值],
      			"url": [string,应用的url,data.url的值],
      			"prot": [string array, 所采用的协议pid,data.prot的值],
      			"serv": [string array, 所采用的服务sid,data.serv的值],
      			"pubKey": [string, 发布者指定的管理身份公钥,data.pubKey的值],
      			"signer": [string,应用的签发者,即发布交易的第一个输入地址],
      			"firstTime": [timestamp,发布时间戳],
      			"lastTxid": [string,应用信息最后更新的txid],
      			"lastTime": [timestamp,应用信息最后更新的时间戳],
      			"tCdd": [int64, 该应用的评价交易累计销毁的币天],
      			"tRate": [float, 应用的综合评分],
      			"status": [bool, 应用的当前状态,1为生效中,0为已注销]
      		}
          ]
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      4000 No matching record. 没有符合条件的信息。

      3. aidHistory (应用历史接口)

      查询某aid应用的所有历史操作记录,不包括data.op值为“rate”的记录。

      • 请求参数
      {
          "aid": [string, 应用的aid,必填],
          "sortTxTimestamp": [string, 按交易时间戳排序,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      {
          "aid": [string, 应用的aid],
          "signer": [string,应用的签发者,即发布交易的第一个输入地址],
          "stdName": [string,应用的标准名, data.stdName的最新值],
      	"opList ": [{
      			"op": [string, data.op的值, 排除值为“rate”的项],
      			"stdName": [string,应用的标准名, data.stdName的值],
      			"localName": [string array,应用的其他名称, data.localName的值],
      			"desc": [string,应用的描述,data.desc的值],
      			"type": [string, 应用类型,data.type的值],
      			"url": [string,应用的url,data.url的值],
      			"prot": [string array, 所采用的协议pid,data.prot的值],
      			"serv": [string array, 所采用的服务sid,data.serv的值],
      			"pubKey": [string, 发布者指定的管理身份公钥,data.pubKey的值],
      			"txid": [string, txid],
                  "txTimestamp": [timestamp,交易的时间戳],
                  "block": [int, 交易所在区块]
      		}
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      7002 The AID does not exist. aid

      4. aidRateList (应用评价列表接口)

      查询对某aid应用的评价信息,即data.op值为“rate”的记录。

      • 请求参数
      {
          "aid": [string, 应用的aid, 必填],
          "filterRate": [string, 按评分data.rate的值筛选,参见“通用约定·筛选参数”],
          "filterCdd": [string, 按销毁币天筛选,参见“通用约定·排序参数”],
          "filterTxTimestamp": [string, 按交易时间戳筛选,参见“通用约定·筛选参数”],
          "filterRater": [string, 按评价者筛选,参见“通用约定·筛选参数”],
          "sortTxTimestamp": [string, 按交易时间戳排序,参见“通用约定·排序参数”],
          "sortCdd": [string, 按销毁币天排序,参见“通用约定·排序参数”],
          "sortRate": [string, 按data.rate的值排序,参见“通用约定·排序参数”],
          "sortRater": [string, 按评价者排序,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      
      • 响应参数
      {
          "aid": [string, 应用的aid],
      	"rateList ": [{
              "rater": [string, 评价者地址],
              "rate": [uint, 评分data.rate的值],
              "cdd": [int64, 销毁币天值],
              "txid": [string,交易id],
              "txTimestamp": [timestamp,交易的时间戳],
              "block": [int, 交易所在区块]
      		}
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      7002 The AID does not exist. aid
      4000 No matching record. signedRequest

      posted in Protocol/协议
      昌
      昌用
    • APIP速查

      APIP速查


      示例数据

      requester: FEk41Kqjar45fLDriztUDTUkdki7mmcjWK
      
      requester的公钥: 030be1d7e633feb2338a74a860e76d893bac525f35a5813cb7b21e27ba1bc8312a
      
      requester的私钥: L2bHRej6Fxxipvb4TiR5bu1rkT3tRp8yWEsUy4R1Zb8VMm2x7sd8
      
      requester的symKey: d2c03bbc1ba1380eafc395374e8da61f92545a1aac5d30b0c19289a69bd34a09
      
      API URL: https://www.sign.cash/api/
      
      

      流程

      详见APIP1V1_OpenAPI(zh-CN)

      • 发布URL: API服务商在链上按照《FEIP29_Service》协议,将API服务的URL在发布上链。

      • 建立连接:请求方通过connect接口提交私钥签名,请求连接API服务,成功后获得对称密钥symKey用于数据请求和验证。示例:

      GET方法请求连接:
      
      https://www.sign.cash/api/connect?pubkey=030be1d7e633feb2338a74a860e76d893bac525f35a5813cb7b21e27ba1bc8312a&timestamp=1635513688254&sign=H5viYRRPi4fr4ivgWAiSkWS7pLRpo%2B8YjiJ2FaRjnCDqUSUlEgIfav%2FAsYXYe862EgGUjICSISr8QeL1qIXCRfI%5Cu003d
      
      POST方法请求连接:
      
      {"publicKey":"030be1d7e633feb2338a74a860e76d893bac525f35a5813cb7b21e27ba1bc8312a","timestamp":1635513688254,"url":"https://www.sign.cash/api/connect","sign":"IPZEm2XcRA2dxw3OFrHLT5KzS03MqZyp++QT/3TF5AGdfcfm0GCZo8t8FUE+MLiZ7ZNH0GV1Er8pJole+Qv73lE\u003d"}
      
      响应参数:
      
      {
          "ciphertext"="Ay99PxkGYfvfudU8h3fpD/Ez2laBaGkNKdDH1bJ7PWemOTnC7YIOVmYelqhQp0PYV9mvm3DIOsXv8U7PT7wtU2+gUAUPeimdZP94rKXr3p4kS2hszh0dYaTrsMOGLc+WDyCq9GdhHOfsWlEFH9fBnoNeDJsOnBXSphRfXWdZpkgTzD3nTiQcqTZDPrF5WO6Id6CiiuFVjXaAZtgzAUHmaTI=",
          "days":365
      }
      
      ciphertext的原文为:
      {"symKey":"d2c03bbc1ba1380eafc395374e8da61f92545a1aac5d30b0c19289a69bd34a09"}
      
      • 准备参数:请求数据时,在请求参数中加入timestamp,采用POST方法时,还需加入API的url。

      • 参数排序:所有请求参数按字母升序排列,不区分大小写。

      • 数据签名:将symKey追加至参数末尾,然后经两次sha256哈希获得签名sign。

      • 发送请求:删除symKey字段,将requester和sign追加至末尾,发送给服务方。示例:

      GET
      
      https://www.sign.cash/api/balance?address=FTqiqAyXHnK7uDTXzMap3acvqADK4ZGzts&timestamp=1635513688254&requester=FEk41Kqjar45fLDriztUDTUkdki7mmcjWK&sign=1111111111111110000000000000000000000
      
      POST
      
      {"address":"FTqiqAyXHnK7uDTXzMap3acvqADK4ZGzts","timestamp":1635513688254,"url":"https://www.sign.cash/api/balance","requester":"FEk41Kqjar45fLDriztUDTUkdki7mmcjWK","sign":"1111111111111111111111112222222222222222222222223333333333"}
      
      • 验证请求:API服务方验证requester授权、sign、timestamp、POST方法url等均有效或正确后予以响应。

      • 响应数据:响应数据尾部加入symKey后做两次sha256哈希获得sign,再用sign替换symKey后将数据返回请求方。示例:

      {"cdBalance":2100000000,"cdd":"342742273400","changeUnconfirmed":-110000000,"fchBalance":210000000,"heignt":963667,"utxoNumber":18,"sign":"444441111111111111112222222222222222222222223333333333"}
      
      • 验证数据:请求方获得数据后,用symKey替换sign后哈希签名,值与sign值一致则接受数据。

      通用约定

      详见APIP1V1_OpenAPI(zh-CN)

      1. 接口标识

      按照APIP类型发布的接口的唯一标识为:接口名称@PID#[接口协议的PID]。示例:

      txList@PID#855fa18ea748a558404dba9fffde10691feac325a6e8fbdc7fc3a0afe84e736d

      2. 接口url

      API的URL路径由服务商按照《FEIP29_Service》协议在“url”字段发布上链。

      3. 时间戳格式

      APIP协议涉及的时间戳,若无特定说明,默认为13位,精确到毫秒。

      4. 哈希算法

      无特殊说明,哈希算法采用两次sha256算法,即:sha256(sha256([message])).

      5. 筛选参数

      • 筛选参数在原字段名前加filter,如:以cd为筛选条件的字段名为filterCd。

      • 数字类型:"filterCd": "-2, 3, 4-5, 7-"

        对cd字段进行筛选,选择值小于2(不含2)、或等于3、或4与5之间(含4和5)、或大于4(不含4)的所有条目。

      • 字符串类型:

        • 模糊查询: "filterCid": "arm"

          不区分大小写,查询cid字段所有包含“arm”的条目,如“C_ARmX”。

        • 非空查询: "filterOpReturn":"notNull"

          查询opReturn字段非空的所有条目。

        • 为空查询:"filterOpReturn":"null"

          查询opReturn字段为空的所有条目。

      • 布尔类型: "filterStatus": 0

        查询status字段值为0的所有条目。

      • 枚举类型: "filterMemberStatus": "active, exited"

        查询memberStatus值为"active"或"exited"的所有条目。

      • 多个筛选字段时,筛选关系为“与”,即满足所有筛选条件。

          {
            "filterCd": "7-",
            "filterCid": "arm"
          }  //查询cd大于7,且cid包含"arm"的条目。
      

      6. 排序参数

      详见APIP1V1_OpenAPI(zh-CN)

      • 排序参数在原字段名前加sort,如以cd排序的字段名为sortCd。

      • 排序参数的值为up(升序)或down(降序):

        "sortCd": "up"

        即:以cd字段升序排序

      • 每次请求的排序字段唯一,不支持多级排序。

      7. 批量请求

      详见APIP1V1_OpenAPI(zh-CN)

      请求批量数据时:

      • 以count字段给出每次请求的条目数,由API服务商自定义缺省值。
      • 以sequence字段给出当前请求第几批次。sequence从0开始,缺省默认为第0批。

      如,请求排序为第201至300项,共100项数据:

      {
          "count":100,
          "sequence":2
      }
      
      

      通用返回值

      各接口有特定的返回值,共同的返回值为"成功"和"未知错误":

      code msg data
      0 OK
      1 Other error. signedRequest, customErrorMessage

      示例:

      {
          "code":1,
          "msg":"Unknown error.",
          "data":{
              "signedRequest": "https://www.sign.cash/api/balance?address=FTqiqAyXHnK7uDTXzMap3acvqADK4ZGzts&timestamp=1635513688254&requester=FEk41Kqjar45fLDriztUDTUkdki7mmcjWK&sign=1111111111111110000000000000000000000"
          }
      }
      

      APIP2V1_BasicInfoOnChain(zh-CN)

      本协议接口提供Freecash主链上的主要信息,涉及以下协议:

      • coindays:《FIPA4_Coindays》
      • guide:《FIPA6_Guide》

      1. balance (余额接口)

      获取FCH地址的FCH余额、币天余额、累计销毁币天总额。

      • 请求参数
      {
          "address": [string,要查询余额的FCH地址,必填]
      } 
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      
      {
          "fchBalance": [int64, fch余额,单位为satoshi],
          "changeUnconfirmed":[int64, 未确认的余额变化,单位为satoshi],
          "utxoNumber": [int, 该地址的utxo数量],
          "cdBalance": [int64, 该地址的币天余额],
          "cdd": [int64,该地址累计销毁的币天],
          "heignt": [uint,响应时的最新区块高度]
      } 
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      2000 The address has not been used. address

      2. utxoWithMinCd(最小币天utxo接口)

      获取满足支付金额,且销毁最小币天所需的utxo列表。

      • 请求参数
      {
          "address": [string,FCH地址,必填],
          "amount": [int64,金额, 单位为satoshi,必填]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      { 
          "utxoList": [{
              "txid": [string,交易id],
              "index": [int,索引],
              "amount": [int64,金额, 单位为satoshi],
              "cd": [int64,币天]
              }
          ],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      2000 The address has not been used. address
      2001 There is no UTXO at this address. address
      2002 There is not enough balance. address,amount
      2003 There are too many UTXOs required to pay this amount. Please merge UTXOs first. address,amount,maxUtxoCount

      3. utxoFilteredByCd (币天筛选utxo接口)

      按照币天进行排序和筛选所需要的特定数量utxo。

      • 请求参数
      {
          "address": [string,要查询余额的FCH地址,必填],
          "filterCd": [string, cd筛选,参见“通用约定·筛选参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      
      • 响应参数
      { 
          "utxoList": [        //utxo的结构数组
              {"txid": [string,交易id],
              "index": [int,索引],
              "amount": [int64,金额, 单位为satoshi],
              "cd": [int64,币天]
              }
          ],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      2000 The address has not been used. address
      2001 There is no UTXO at this address. address
      2004 There is no UTXO that meets the conditions. address, filterCd
      2005 Too many utxos are requested. utxoCount, maxUtxoCount

      4. txInfo (交易信息接口)

      获得某笔交易的详细信息。

      • 请求参数
      {
          "txid": [string,交易id],必填"
      }
      
      
      • 响应参数
      {
          "txTimestamp": [timestamp,交易的时间戳],
          "fee": [int,矿工费,单位satoshi],
          "cdd": [int,本交易销毁币天],
          "opReturn": [string, OP_RETURN的内容],
          "amout": [int64,总金额,单位satoshi],
          "block": [int, 交易所在区块],
          "input": [{
                      "index":[int,索引],
                      "address": [string,FCH地址]],
                      "amount":[int64,金额, 单位为satoshi]
              }
          ],
          "output": [{
                      "index":[int,索引],
                      "address": [string,FCH地址]],
                      "amount":[int64,金额, 单位为satoshi]
              }
          ],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      • 返回值
      code msg data
      2006 No such TXID. txid

      5. txList (交易列表接口)

      按条件获取某个地址的历史交易信息列表。

      • 请求参数
      {
          "address": [string,FCH地址,必填],
          "filterOpReturn": [string, 模糊匹配OP_RETURN内容],
          "filterCdd": [string, 按销毁币天筛选,参见“通用约定·筛选参数”],
          "filterChangeUnconfirmed": [string, 按未确认余额筛选,参见“通用约定·筛选参数”],
          "sortTxTimestamp": [string, 按时间戳排序,参见“通用约定·排序参数”],
          "sortAmount": [string, 按金额排序,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      {
          "txList": [{
              "txTimestamp": [timestamp,交易的时间戳],
              "fee": [int,矿工费,单位satoshi],
              "cdd": [int,本交易销毁币天],
              "opReturn": [string, OP_RETURN的内容],
              "amout": [int64,总金额,单位satoshi],
              "block": [int, 交易所在区块],
              "input": [{
                      "index":[int,索引],
                      "address": [string,FCH地址]],
                      "amount":[int64,金额, 单位为satoshi]
                      }
                  ],
              "output": [{
                      "index":[int,索引],
                      "address": [string,FCH地址]],
                      "amount":[int64,金额, 单位为satoshi]
                      }
                  ]
              }
          ],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      • 返回值
      code msg data
      2000 The address has not been used. address
      2001 There is no UTXO at this address. address
      2007 No more transactions. address,count,sequence

      6. txUnconfirmed (未确认交易接口)

      获取某个地址的未确认交易列表。

      • 请求参数
      {
          "address": [string,FCH地址,必填]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      {
          "unconfirmedTxList":[{
              "txTimestamp": [timestamp,交易的时间戳],
              "fee": [int,矿工费,单位satoshi],
              "opReturn": [string, OP_RETURN的内容],
              "amout": [int64,总金额,单位satoshi],
              "input": [{
                      "index":[int,索引],
                      "address": [string,FCH地址]],
                      "amount":[int64,金额, 单位为satoshi]
                      }
                  ],
                  "output": [{
                      "index":[int,索引],
                      "address": [string,FCH地址]],
                      "amount":[int64,金额, 单位为satoshi]
                      }
                  ]
              }
          ],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      code msg data
      2000 The address has not been used. address
      2008 The address has no unconfirmed transaction. address

      7. guide (向导接口)

      获取某个地址第一笔fch来源交易的第一个输入地址,作为将该地址引入应用的向导。

      • 请求参数
      {
          "address": [string,FCH地址]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      {
          "guide":[string,第一个发送fch给address的FCH地址],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      2000 The address has not been used. address

      8. opReturnSearch (OpReturn搜索接口)

      模糊搜索通过OpReturn保存在链上的内容。

      • 请求参数
      {
          "searchContent": [string, 所要搜索的内容],必填",
          "filterSigner": [string, 按第一个输入地址筛选],
          "filterRecipient": [string, 按第一个输出地址筛选],
          "filterCdd": [string, 按销毁币天筛选,参见“通用约定·筛选参数”],
          "filterTxTimestamp": [string, 按交易时间戳筛选,参见“通用约定·筛选参数”],
          "sortTxTimestamp": [string, 按交易时间戳排序,参见“通用约定·排序参数”],
          "sortCdd": [string, 按销毁币天排序,参见“通用约定·排序参数”],
          "sortAmount": [string, 按交易金额排序,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      {
          "txList": [{
              "txTimestamp": [timestamp,交易的时间戳],
              "fee": [int,矿工费,单位satoshi],
              "cdd": [int,本交易销毁币天],
              "opReturn": [string, OP_RETURN的内容],
              "amout": [int64,总金额,单位satoshi],
              "block": [int, 交易所在区块],
              "input": [{
                      "index":[int,索引],
                      "address": [string,FCH地址]],
                      "amount":[int64,金额, 单位为satoshi]
                      }
                  ],
              "output": [{
                      "index":[int,索引],
                      "address": [string,FCH地址]],
                      "amount":[int64,金额, 单位为satoshi]
                      }
                  ]
              }
          ],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      • 返回值
      code msg data
      4000 No matching record. signedRequest

      9. rawTxBroadcast (交易广播接口)

      在链上广播已经签名的原始交易。

      • 请求参数
      {
          "rawTx": [string, 已签名的原始交易,必填]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数

      无响应参数。

      • 返回值

      仅通用返回值,OK或Unknown error。


      APIP3V1_CIDInfo(zh-CN)

      本协议接口提供CID相关的主要信息。数据来源和相关规则遵循以下协议:
      - cid:《FEIP3_CID》
      - homepage:《FEIP26_Homepage》
      - noticeFee:《FEIP27_NoticeFee》
      - master:《FEIP6_Master》


      1. cidInfo (CID信息接口)

      获取cid的地址、公钥、url、noticeFee和master等信息

      • 请求参数
      {
          "address": [string,FCH地址,不可与cid同时查询],
          "cid": [string, CID, 不可与address同时查询]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      
      {
          "address": [string,FCH地址],
          "cid": [string, CID],
          "publicKey": [string, PublicKey],
          "url": [string, 链上注册的url(FEIP26_Homepage)],
          "noticeFee":[int, 链上注册的通知费(FEIP27_NoticeFee),单位satoshi],
          "master":[string, 链上声明的主控地址(FEIP6_Master)],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      2000 The address has not been used. address
      3000 The address has not registed CID. address
      3001 The address has unregisted its CID. address
      3002 The CID has been unregisted. cid
      3003 Cannot query address and CID at the same time. signedRequest

      2. cidInfoList (批量cid信息接口)

      批量获取cid信息。

      • 请求参数
      {
          "addressList": [[string array, fch地址列表,不与cid列表同时查询],
          "cidList": [[string array, cid列表,不与地址列表同时查询]
      }
      
      • 响应参数
      
      {
          "cidInfoList": [{
              "address": [string,FCH地址],
              "cid": [string, CID],
              "publicKey": [string, PublicKey],
              "url": [string, 链上注册的url],
              "noticeFee":[int, 链上注册的通知费,单位satoshi],
              "master":[string, 链上声明的主控地址]
              }
          ],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      • 返回值
      code msg data
      3004 Too many addresses are requested. maxAddress
      3005 Address and cid cannot be queried at the same time signedRequest

      3. cidHistory (cid历史接口)

      获取按照《FEIP3_CID》上链的cid操作历史信息。

      • 请求参数
      {
          "address": [string,FCH地址,不与cid同时查询],
          "cid": [string, CID, 包括已注销的cid,不与地址同时查询],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      
      {
          "address": [string,FCH地址],
          "opList": [{
              "block": [int, 交易所在区块],
              "cid": [string, CID],
              "op": [string,data.op的值],
              "txid": [string,交易id],
              "txTimestamp": [timestamp,交易的时间戳]
              }
          ]
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      • 返回值
      code msg data
      2000 The address has not been used. address
      3000 The address has not registed CID. address
      3003 Cannot query address and CID at the same time. signedRequest

      4. homepageHistory (Homepage历史)

      获取按照《FEIP26_Homepage》声明的cid的url历史信息。

      • 请求参数
      {
          "address": [string,FCH地址],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      
      • 响应参数
      {
          "address": [string,FCH地址],
          "opList": [{
              "block": [int, 交易所在区块],
              "url": [string, 链上注册的url],
              "op": [string,data.op的值],
              "txid": [string,交易id],
              "txTimestamp": [timestamp,交易的时间戳]
              }
          ]
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      2000 The address has not been used. address
      3006 The address has not registed homepage. address

      5. noticeFeeHistory (noticeFee历史)

      获取按照《FEIP27_NoticeFee》声明的cid的noticeFee历史信息。

      • 请求参数
      {
          "address": [string,FCH地址],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      
      • 响应参数
      {
          "address": [string,FCH地址],
          "opList": [{
              "block": [int, 交易所在区块],
              "noticeFee":[int, 链上注册的通知费,单位satoshi],
              "op": [string,data.op的值],
              "txid": [string,交易id],
              "txTimestamp": [timestamp,交易的时间戳]
              }
          ]
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      2000 The address has not been used. address
      3007 The address has not declared notice fee. address

      6. cidSearch (CID搜索接口)

      模糊搜索cid,不区分大小写。

      • 请求参数
      {
          "searchContent": [string, 所要搜索的内容],必填",
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      • 响应参数
      
      {
          "cidList": [string array, cid列表]]
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      • 返回值
      code msg data
      3008 No cid containing this string was found. searchContent

      APIP4V1_Reputation(zh-CN)

      本协议接口提供链上声誉和相互评价相关的主要信息。数据来源和相关规则遵循以下协议:

      - 《FEIP16_Reputation》
      

      1. reputationList (声誉查询接口)

      查询一个或多个地址的声誉值。

      • 请求参数
      {
          "addressList": [[string array, fch地址列表],
      }
      
      • 响应参数
      {
      	"reputationList": [{
                  "address": [string,FCH地址]],
                  "reputation": [int64, The value of reputation defined in "FEIPFEIP16_Reputation"],
                  "tCdd": [int64,该地址累计销毁的币天],
      
      		}
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      3006 Too many addresses are requested. maxAddresses

      2. ratedHistory (被评记录查询接口)

      • 请求参数
      {
          "address": [string,FCH地址],
          "filterCdd": [string, 按销毁币天筛选,参见“通用约定·筛选参数”],
          "filterRater": [string, 按评价者筛选,参见“通用约定·筛选参数”],
          "filterRatingSign": [string, 按好评(+)和差评(-)筛选,参见“通用约定·筛选参数”],
          "filterTxTimestamp": [string, 按交易时间戳筛选,参见“通用约定·筛选参数”],
          "sortTxTimestamp": [string, 按交易时间戳排序,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      
      • 响应参数
      {
          "address": [string,FCH地址],
      	"ratedList": [{
                  "block": [int, 交易所在区块],
                  "cdd": [int,本交易销毁币天],
                  "rater": [string, 评价者地址],
                  "ratingSign": [string, 好评(+)或差评(-)],
                  "txid": [string,交易id],
                  "txTimestamp": [timestamp,交易的时间戳]
      		}
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      2000 The address has not been used. address
      4000 No matching record. signedRequest

      3. ratingHistory (主评记录查询接口)

      获取某地址评价他人的历史记录。

      • 请求参数
      {
          "address": [string,FCH地址],
          "filterCdd": [string, 按销毁币天筛选,参见“通用约定·筛选参数”],
          "filterTxTimestamp": [string, 按交易时间戳筛选,参见“通用约定·筛选参数”],
          "filterRatedAddress": [string, 按被评价地址(ratedAddress)排序,参见“通用约定·筛选参数”],
          "sortTxTimestamp": [string, 按交易时间戳排序,参见“通用约定·排序参数”],
          "count": [int,本次请求数量,参见“通用约定·批量请求”],
          "sequence": [int, 本次请求批次,参见“通用约定·批量请求”]
      }
      //请求还需加入timestamp、API的url(post)、requester、sign,用于验证身份和数据,参见“流程”或原协议.
      
      
      • 响应参数
      
      {
          "address": [string,FCH地址],
      	"ratingList": [{
                  "block": [int, 交易所在区块],
                  "cdd": [int,本交易销毁币天],
                  "ratedAddress": [string, 被评价者地址],
                  "ratingSign": [string, 好评(+)或差评(-)],
                  "txid": [string,交易id],
                  "txTimestamp": [timestamp,交易的时间戳]
      		}
      	],
          "heignt": [uint,响应时的最新区块高度]
      }
      //响应时还需加入sign,用于验证数据,参见“流程”或原协议.
      
      
      • 返回值
      code msg data
      2000 The address has not been used. address
      4000 No matching record. signedRequest

      posted in Protocol/协议
      昌
      昌用
    • FEIP1V7_FreeProtocol(en-US)
      FEIP1: FreeProtocol
      Version: 7
      Language: en-US
      Author: C_armX, Deisler-JJ_Sboy
      Status: draft
      Created date: 2022-02-01
      Update date:2022-05-31
      PID: ""
      Txid: 
      

      FEIP1V7_FreeProtocol(en-US)

      Contents

      General consensuses of FEIP

      Main consensuses of this protocol

      Register

      Update

      Unregister

      Rate

      Protocol type: FEIP
      Serial number: 1
      Protocol name: FreeProtocol
      Version number: 7
      Description : Formulate the consensuses of freely publishing and managing protocols on the blockchain of freecash.
      Author: C_armX, Deisler-JJ_Sboy
      Language: en-US
      Previous version PID:"bd0429aaf6d7784958a36473f2f925d8d2ca76125cc610adf2afb1956a1d56b2"
      

      General consensuses of FEIP

      1. FEIP (Freecash Extensional Improvement Protocol) is a type of freecash protocol which writes important infomation with OP_RETURN on the blockchain of freecash.

      2. The SIGHASH flag of all transaction inputs is ‘ALL’ (value 0x01).

      3. The max size of OP_RETURN : 4096 bytes.

      4. The format of the data in op_return: JSON.

      5. Encoding : utf-8.

      Main consensuses of this protocol

      1. This protocol formulates the consensuses of freely publishing and managing protocols on the blockchain of freecash.

      2. PID (Protocol Identity) is the unique identity of a protocol, which is the double sha256 value of the protocol file.

      3. Anyone can send a transaction to register a protocol by writing data in the format given by Register .

      4. The title of protocol published on chain taks following format:

      type + serial number + 'V' + version number +'_' + protocol name + '(' + language + ')'

      e.g: FEIP3V4_CID(en-US)

      1. Anyone can only update his/her own protocols by writing data in the format given by Update.

      2. Anyone can only unregister his/her own protocols by writing data in the format given by Unregister.

      3. Anyone can evaluate any protocol by writing data in the format given by Rate.

      4. The registered protocol can be updated, but cannot be registered again unless it has been unregistered.

      Register

      Register a protocol by send a transaction, the OP_RETURN of which contains the data as follows:

      field number field name type length content required
      1 type String 4 Fixed: "FEIP". Case insensitive Y
      2 sn int 1 Fixed: 1 Y
      3 ver int 1 Fixed: 7 Y
      4 name String 12 Fixed:"FreeProtocol". Case insensitive N
      5 pid string 64 Double sha256 of this file N
      6 data.type String 8 Type of the protocol being registered. N
      7 data.sn String 8 Serial number of the protocol being registered, counting from 1. N
      8 data.ver String 4 Version number of the protocol being registered. counting from 1. N
      9 data.name String 128 Name of the protocol being registered. N
      10 data.desc String 512 Short description of the protocol being registered. N
      11 data.authors String array 256 FCH addresses of the authors of the protocol being registered. N
      12 data.pid string 64 The double sha256 value of the protocol file being registered.<br> Y
      13 data.lang String 5 The language of the protocol being registered, formatted with i18n(internationalization),such as "en-US". N
      14 data.op String 8 Fixed: "register"<br>Case insensitive Y
      15 data.prePid string 64 Double sha256 value of the previous version protocol file. N
      16 data.fileUrl String array 1024 Locations to find the protocol file. N

      Register Example:

      {
          "type": "FEIP",
          "sn": 1,
          "ver": 7,
          "name": "FreeProtocol",
          "pid": "",
          "data": {
              "type": "FEIP",
              "sn": 3,
              "ver": 4,
              "name": "CID",
              "desc": "Register or unregister a human friendly identity for an address.",
              "authors": ["FPL44YJRwPdd2ipziFvqq6y2tw4VnVvpAv","FS2AWq1dgdhCpNTwqfBbMBBJGNNj1LSboy","FLx88wdsbLQyZRmbqtpeXA9u5FG9EyCash"],
              "pid": "1403e5b7100d8e24724f12cd1ea0b722086c02250a7c66b711947f14546cfcfd",
              "lang": "zh-CN",
              "op": "register",
              "prePid":"bd0429aaf6d7784958a36473f2f925d8d2ca76125cc610adf2afb1956a1d56b2",
              "fileUrl": ["https://github.com/freecashorg/FEIP/FEIP3_CID/"]
          }
      }
      

      Update

      Update a protocol by send a transaction. The data.op is changed from "register" to "update", other data formats are the same as the register data format. All field contents will be updated.

      field number field name type length content required
      1 type String 4 Fixed: "FEIP". Case insensitive Y
      2 sn int 1 Fixed: 1 Y
      3 ver int 1 Fixed: 7 Y
      4 name String 18 Fixed:"FreeProtocol". Case insensitive N
      5 pid string 64 Double sha256 of this file N
      6 data.type String 8 Type of the protocol being registered. N
      7 data.sn String 8 Serial number of the protocol being registered, counting from 1. N
      8 data.ver String 4 Version number of the protocol being registered. counting from 1. N
      9 data.name String 128 Name of the protocol being registered. N
      10 data.desc String 512 Short description of the protocol being registered. N
      11 data.authors String array 256 FCH addresses of the authors of the protocol being registered. N
      12 data.pid string 64 The double sha256 value of the protocol file being updated.<br> Y
      13 data.lang String 5 The language of the protocol being registered, formatted with i18n(internationalization),such as "en-US". N
      14 data.op String 6 Fixed: "update"<br>Case insensitive Y
      15 data.prePid string 64 Double sha256 value of the previous version protocol file. N
      16 data.fileUrl String array 1024 Locations to find the protocol file. N

      Update Example:

      {
          "type": "FEIP",
          "sn": 1,
          "ver": 7,
          "name": "FreeProtocol",
          "pid": "",
          "data": {
              "type": "FEIP",
              "sn": 3,
              "ver": 4,
              "name": "CID",
              "desc": "Register, update or unregister a human friendly identity for an address.",
              "authors": ["FPL44YJRwPdd2ipziFvqq6y2tw4VnVvpAv","FS2AWq1dgdhCpNTwqfBbMBBJGNNj1LSboy","FLx88wdsbLQyZRmbqtpeXA9u5FG9EyCash"],
              "pid": "1403e5b7100d8e24724f12cd1ea0b722086c02250a7c66b711947f14546cfcfd",
              "lang": "zh-CN",
              "op": "update",
              "prePid":"bd0429aaf6d7784958a36473f2f925d8d2ca76125cc610adf2afb1956a1d56b2",
              "fileUrl": ["https://github.com/freecashorg/FEIP/FEIP3_CID/"]
          }
      }
      

      Unregister

      Unregister a protocol by send a transaction, the OP_RETURN of which contains the data as follows:

      field number field name type length content required
      1 type String 4 Fixed: "FEIP". Case insensitive Y
      2 sn int 1 Fixed: 1 Y
      3 ver int 1 Fixed: 7 Y
      4 name String 18 Fixed:"FreeProtocol". Case insensitive N
      5 pid string 64 Double sha256 of this file N
      6 data.pid string 64 The double sha256 value of the protocol file being unregistered.<br> Y
      7 data.op String 10 Fixed: "unregister"<br>Case insensitive Y

      Unregister Example:

      {
          "type": "FEIP",
          "sn": 1,
          "ver": 7,
          "name": "FreeProtocol",
          "pid": "",
          "data": {
              "pid": "bd0429aaf6d7784958a36473f2f925d8d2ca76125cc610adf2afb1956a1d56b2",
              "op": "unregister"
          }
      }
      
      

      Rate

      Evaluate a protocol by send a transaction, the OP_RETURN of which contains the data as follows:

      field number field name type length content required
      1 type String 4 Fixed: "FEIP". Case insensitive Y
      2 sn int 1 Fixed: 1 Y
      3 ver int 1 Fixed: 7 Y
      4 name String 18 Fixed:"FreeProtocol". Case insensitive N
      5 pid string 64 Double sha256 of this file N
      6 data.pid string 64 The double sha256 value of the protocol file being rated.<br> Y
      7 data.op String 4 Fixed: "rate"<br>Case insensitive Y
      8 data.rate int 1 Rating of the service from 0 to 5 Y

      Rate Example:

      {
          "type": "FEIP",
          "sn": 1,
          "ver": 7,
          "name": "FreeProtocol",
          "pid": "",
          "data": {
              "pid": "1403e5b7100d8e24724f12cd1ea0b722086c02250a7c66b711947f14546cfcfd",
              "op": "rate",
              "rate": 4
          }
      }
      
      posted in Protocol/协议
      昌
      昌用
    • FIPA2V3_Signature(en-US)
      FIPA2: Signature
      Version: 3
      Language: en-US
      Author: C_armX
      Status: draft
      Create: 2021-12-11
      Update:2022-05-07
      PID: ""
      TXid: 
      

      FIPA2V3_Signature(en-US)

      Contents

      About FIPA

      About this protocol

      Data format

      Example


      ProtocolType: FIPA
      SerialNumber: 2
      ProtocolName: Signature
      VersionNumber: 3
      Description : Define the format of the signature data.
      Author: C_armX,Free_Cash
      Language: en-US
      Tags: FIPA, Signature
      PreVersionPid:"c1238989a08029c6abf3caf294c5c6589abaf80c64bd1dd2ce3e7bfc44e3a83a"

      About FIPA

      FIPA protocols make improvements to the FCH ecosystem. These improvements will not lead to a hard fork of the main network, and will not write information on the blockchain.

      About this protocol

      1. This protocol defines the data format of Freecash ecological message signature.

      2. The default signature algorithm is ecdsa signature algorithm with Base64 encoding.

      3. Data is in JSON.

      Data format

      The signatures are transmitted in the following format:

      name type description required
      algorithm string Signature algorithm, the default is "ecdsa". Not case sensitive. N
      message string Raw message Y
      address string FCH address of the signer Y
      signature string The signature encoded with Base64 Y

      example

      signer: FEk41Kqjar45fLDriztUDTUkdki7mmcjWK

      pubKey: 030be1d7e633feb2338a74a860e76d893bac525f35a5813cb7b21e27ba1bc8312a

      priKey: L2bHRej6Fxxipvb4TiR5bu1rkT3tRp8yWEsUy4R1Zb8VMm2x7sd8

      {
      "algorithm": "ecdsa",
      "message":"test", 
      "address":"FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      "signature":"HzNqRToLHsY6TrhVB+RjWuk7PqeJhUESINxcL0521mWqU3+rw+NeIGNnOV06ngCLwHD69jCfqHcXWCXuCnIkCGo\u003d"
      }
      
      posted in Protocol/协议
      昌
      昌用
    • APIP10V1_Organization(zh-CN)
      APIP10V1_Organization(zh-CN)
      Version:1
      Language:zh-CN
      Author:C_armX
      Status:draft
      Create:2021-12-03
      Update:2021-04-30
      PID:""
      TXID:
      

      APIP10V1_Organization(zh-CN)


      目录

      关于APIP

      关于本协议

      getOrgList

      getOrgMemberList

      getMyOrgs

      getOrgOpHistory

      getOrgRateHistory


      Type:APIP
      SerialNumber:10
      ProtocolName:Organization
      Version:1
      Description:定义组织信息查询接口。
      Author:C_armX
      Language:zh-CN
      preVersionHash:""
      

      关于APIP

      概述

      APIP(Application Programming Interface Protocols)是自由共识生态协议的一种类型,用于创建和发布开放的API文档,供API服务方开发部署通用API服务,以实现数据服务的去中心化。API需求方可以按照APIP协议从遵循该协议的任何一个API服务方那里获取数据服务。

      通用规则

      《APIP1_OpenAPI》规范了APIP类型协议的协议发布、接口标识、接口URL构成、时间戳格式、密码算法、服务流程、商业模式、连接接口,数据接口和查询语法的通用规则。设计、开发或应用APIP协议前,应先参考《APIP1_OpenAPI》协议。

      建立连接

      使用APIP协议各接口,须先采用《APIP1_OpenAPI》的connect接口从API服务方获取symKey。参见《APIP1_OpenAPI》的“connect接口”。

      通用请求参数

      APIP类型协议接口的通用请求参数如下:

      name type description requested
      requester string 请求方的fch地址 Y
      url string 当前所请求api的url Y
      timestamp timestamp 发起请求的时间戳,精确到毫秒 Y
      query object 请求数据的查询语句,参见”APIP简易查询语法@APIP1“ N
      sort object 请求数据的排序语句,参见”APIP简易查询语法@APIP1“ N
      from int 请求列表数据时的起始位置,从0开始 N
      size int 请求列表数据时的每页条目数 N
      sign string 用symkey对其他参数所做的签名 Y

      通用响应方式

      响应前所作的验证、通用响应状态码、通用响应参数参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      请求成功的通用响应参数为:

      参数 类型 说明 适用状态
      code int 响应状态码 all
      message string 响应状态描述 all
      data object 正常返回数据,由具体APIP定义。 0
      sign string 将symKey加入响应参数做两次sha256哈希的签名值 all

      具体APIP协议的特定响应参数在data参数中给出,并定义具体接口的响应状态。

      请求失败的通用响应码、响应信息和响应参数,参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      签名与验证

      APIP接口的请求和响应都需要签名和验证。

      connect接口请求时用私钥签名,公钥验证,响应时无需签名。

      所有数据请求和数据响应,采用以下方法:

      签名:将对称密钥symKey加入参数压缩升序后计算两次sha256,得到sign的值,再用sign替换参数中的symKey。

      验证:将sign从参数中取出,加入symKey,压缩升序后做两次sha256计算,将值与sign的值比较,一致则验证通过。

      详见《APIP1_OpenAPI》

      关于本协议

      1. 本协议接口提供链上注册的各种组织的相关信息。

      2. 创建组织的交易的txid为该组织的唯一身份,即oid。

      3. 本协议接口的数据来源和相关规则遵循以下协议:

        • 《FEIP28_Organization》
      4. 本协议接口数据采用JSON格式。

      5. 示例数据:

      requester:FEk41Kqjar45fLDriztUDTUkdki7mmcjWK

      requester的公钥pubKey:030be1d7e633feb2338a74a860e76d893bac525f35a5813cb7b21e27ba1bc8312a

      requester的私钥priKey:L2bHRej6Fxxipvb4TiR5bu1rkT3tRp8yWEsUy4R1Zb8VMm2x7sd8

      requester获得的对称密钥symKey:d2c03bbc1ba1380eafc395374e8da61f92545a1aac5d30b0c19289a69bd34a09

      服务方链上发布的urlMainPart: https://www.sign.cash/api/

      接口url:https://www.sign.cash/api/apip10/v1/[接口名称]


      getOrgList

      获取组织信息列表。

      url

      [服务方发布的urlMainPart]apip10/v1/getOrgList

      示例:

      https://www.sign.cash/api/apip10/v1/getOrgList

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      响应参数data.list中各字段均可作为查询字段。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询oid为“222220000000000011111”和“33333000000002222222222”的组织最新详情。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip10/v1/getOrgList",
      	"query": {
      		"terms": {
      			"oid": ["222220000000000011111","33333000000002222222222"]
      		}
      	},
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description key in FEIP28
      oid string The ID of the Organization,that is,the txid of the transaction in which the Organization was registered.
      owner string The address of the first input of the address of the transaction in which the organization was created.
      stdName string array Standard name of the organization data.stdName
      localName string array Names in different languages data.localName
      consHash string The sha256 value of the organization consensus data.consHash
      desc string Description of this organization data.desc
      memberNumber uint64 The number of active members of this organization
      firstTimestamp timeStamp The timeStamp of the transaction in which the Organization was first published.
      firstBlockHeight uint The height of the block in which the Organization was first published.
      lastTxid string The txid of the last operation of the Organization.
      lastTimestamp timeStamp The transaction timestamp of the last operation of the Organization.
      lastBlockHeight uint The height of the block of the last operation of the Organization.
      tCdd uint64 The total destroyed coindays of all transactions where the value of data.op is "rate".
      tRate float Cumulative rating score. tRate=(tCdd*tRate+cdd*rate)/(tCdd+cdd)
      • 示例

      响应查询oid为“222220000000000011111”和“33333000000002222222222”的组织的除成员列表之外最新详情。

      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      				"oid": "000000001111111111111111111111122222222222222222222222222",
      				"owner": "F000000000000001",
      				"stdName": "Love the earth",
      				"localName": ["爱护地球", "地球を愛する"],
      				"consHash": "11111111111111111111111111111",
      				"desc": "欢迎来到密码公司",
      				"memberNumber": 2340,
      				"firstTimestamp": 1610261291,
      				"firstBlockHeight": 963510,
      				"lastTxid": "1111111111111111111111111",
      				"lastTimestamp": 1636526891,
      				"lastBlockHeight": 963512,
      				"tCdd": 12300000,
      				"tRate": 4.65
      			},
      			{
      				"oid": "2222222200000000000000000001111111111111111333333333333333",
      				"owner": "F000000000000002",
      				"stdName": "Digital home",
      				"localName": ["数字家园", "地球を愛する"],
      				"consHash": "22222222222222222222222222",
      				"desc": "数字社区欢迎你!",
      				"memberNumber": 102,
      				"firstTimestamp": 1619261292,
      				"firstBlockHeight": 963600,
      				"lastTxid": "3333300000000222222233333",
      				"lastTimestamp": 1619261292,
      				"lastBlockHeight": 963612,
      				"tCdd": 2300000,
      				"tRate": 4.35
      			}
      		],
      		"total": 2,
      		"bestHeight": 963667
      	},
      	"sign": ""
      }
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。


      getOrgMemberList

      获取各类组织成员列表

      url

      [服务方发布的urlMainPart]apip10/v1/getOrgMemberList

      示例:

      https://www.sign.cash/api/apip10/v1/getOrgMemberList

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      响应参数data.list中各字段均可作为查询字段。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询oid为"222220000000000011111111111111"的组织的各类成员。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip10/v1/getOrgMemberList",
      	"query": {
      		"term": {
      			"oid": "222220000000000011111111111111"
      		}
      	},
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description key in FEIP28
      oid string
      owner string The address of the owner
      admin string array The address list of administrators.
      activeMembers string array The address list of active members.
      quitMembers string array The address list of members who declared quit but have not been delisted.
      delistedMembers string array The address list of delisted members.
      • 示例

      响应查询oid为"222220000000000011111111111111"的组织当前有效成员。

      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      			"oid": "222220000000000011111111111111",
      			"owner": "F000000000000001",
      			"admin": ["F1111111111111S", "F2222222222222222Z"],
      			"activeMembers": ["F1111111111111S", "F2222222222222222Z", "F33333333333333333333h", "F4444444444444444444N"],
      			"quitMembers": ["F555555555555555555x ", "F66666666666666666666666z "],
      			"delistedMembers": ["F77777777777777777e"]
      		}],
      		"total": 1,
      		"bestHeight": 963667
      	},
      	"sign": ""
      }
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。


      getMyOrgs

      获取某地址所参加的组织。

      url

      [服务方发布的urlMainPart]apip10/v1/getMyOrgs

      示例:

      https://www.sign.cash/api/apip10/v1/getMyOrgs

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      以单个fch地址address为查询条件,可增加status筛选在组织内的身份或状态。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX所参加并担任管理员的组织。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip10/v1/getMyOrgs",
      	"query": {
      		"bool": {
      			"must": [{
      					"term": {
      						"address": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX"
      					}
      				},
      				{
      					"match": {
      						"status": "admin"
      					}
      				}
      			]
      		}
      	},
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description requested
      oid string The ID of the Organization,that is,the txid of the transaction in which the Organization was registered.
      name string The name of the Organization in english
      status enum "owner", "admins", "active", "quit", "delisted"
      • 示例

      响应查询FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX所参加并担任管理员的组织。

      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      				"oid": "222220000000000011111",
      				"name": "crypto circle",
      				"status": "admin"
      			},
      			{
      				"oid": "333300000000000111333",
      				"name": "crypto world",
      				"status": "admin"
      			}
      		],
      		"total": 2,
      		"bestHeight": 963667
      	},
      	"sign": ""
      }
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。


      getOrgOpHistory

      查询组织链上除data.op值为“rate”之外的操作历史信息。

      url

      [服务方发布的urlMainPart]apip10/v1/getOrgOpHistory

      示例:

      https://www.sign.cash/api/apip10/v1/getOrgOpHistory

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      响应参数data.list中各字段均可作为查询字段。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询oid为"222220000000000011111111111111"的组织操作记录,按交易时间戳倒序,获取第1批20条。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip10/v1/getOrgOpHistory",
      	"query": {
      		"term": {
      			"oid": "222220000000000011111111111111"
      		}
      	},
      	"sort": [{
      		"txTimestamp": {
      			"order": "desc"
      		}
      	}],
      	"from": 0,
      	"size": 20,
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description key in FEIP28
      op string The operation. data.op
      oid string The oid that the op targets. data.oid
      stdName string array Standard name of the organization data.stdName
      localName string array Names in different languages. data.localName
      consHash string The sha256 value of the organization consensus data.consHash
      desc string Description of this organization. data.desc
      inviteList string array Addresses of the applicants. data.inviteList
      days int 2 Validity period of the invitation.
      deliList string array Addresses to be delisted data.deliList
      authList string array the list of addresses being authorized data.authList
      deauList string array 2048 the list of addresses being deauthorized
      signer string The signer of the first input of the transaction.
      recipients string array Addresses of the outputs except the signer.
      cdd uint64 Coindays destroyed of this transaction
      txid string The txid of this transaction.
      txTimestamp timestamp The timestamp of this transaction
      blockHeight uint The height of the block where the transaction is written
      • 示例

      响应第2批查询20项oid为000000001111111111111111111111122222222222222222222222222的组织操作记录,按txTimestamp降序。

      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      				"op": "invite",
      				"oid": "222220000000000011111111111111",
      				"signer": "F000000000000",
      				"inviteList": ["F1111111111", "F2222222222222", "F33333333333"],
      				"recipients": ["F1111111111", "F2222222222222", "F33333333333"],
      				"txTimestamp": 1613211239,
      				"txid": "0460fc1a1ada6479037a07c05509cfcb0d2e8ead2d2b32a5a6784f558c448866",
      				"cdd": 2300,
      				"blockHeight": 989239
      			},
      			{
      				"op": "update",
      				"oid": "222220000000000011111111111111",
      				"signer": "F11111111111",
      				"recipients": ["F1111111111"],
      				"stdName": "Love the earth",
      				"localName": ["天文爱好者", "Astronomers"],
      				"consHash": "11111111111111111111111111111",
      				"desc": "开放的天文爱好者组织",
      				"txTimestamp": 1610261291,
      				"txid": "0460fc1a1ada6479037a07c05509cfcb0d2e8ead2d2b32a5a6784f558c448866",
      				"cdd": 11300,
      				"blockHeight": 989021
      			}
      		],
      		"bestHeight": 989430
      	}
      }
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。


      getOrgRateHistory

      查询对组织的链上评价信息,即data.op值为“rate”的记录。

      url

      [服务方发布的urlMainPart]apip10/v1/getOrgRateHistory

      示例

      https://www.sign.cash/api/apip10/v1/getOrgRateHistory

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      响应参数data.list中各字段均可作为查询字段。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询oid为"0000000011111111111111111111111222"的组织的币天销毁大于等于1000的评分记录,按“rate”一级降序,交易时间二级降序,获取第1批20条。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip10/v1/getOrgRateHistory",
      	"query": {
      		"bool": {
      			"must": [{
      					"term": {
      						"oid": ""0000000011111111111111111111111222""
      					}
      				},
      				{
      					"range": {
      						"cdd": {
      							"gte": 1000
      						}
      					}
      				}
      			]
      		}
      	},
      	"sort": [{
      		"rate": {
      			"order": "desc"
      		},
      		{"txTimeStamp": {
      			"order": "desc"
      		}
      	}],
      	"from": 0,
      	"size": 20,
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description
      oid string
      rater uint The address of the first input of the rating transaction
      rate uint Rating value from 0 to 5
      cdd uint64
      txid string The txid of this transaction
      txTimestamp timestamp The timestamp of this transaction
      blockHeight uint The height of the block where the transaction is written
      • 示例
        响应oid为"0000000011111111111111111111111222"的组织的币天销毁大于等于1000的评分记录,按“rate”一级降序,交易时间二级降序,获取第1批20条。
      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      				"oid": "0000000011111111111111111111111222",
      				"rater": "FS2AWq1dgdhCpNTwqfBbMBBJGNNj1LSboy",
      				"rate": 5,
      				"cdd": 3100,
      				"txid": "333333333333333333338888889",
      				"txTimestamp": 1618832997321,
      				"blockHeight": 989302
      			},
      			{
      				"oid": "0000000011111111111111111111111222",
      				"rater": "FLx88wdsbLQyZRmbqtpeXA9u5FG9EyCash",
      				"rate": 4,
      				"cdd": 10000,
      				"txid": "44444443333333388888888888889",
      				"txTimestamp": 1618834297302,
      				"blockHeight": 989300
      			}
      		],
      		"total": 2,
      		"bestHeight": 993667
      	},
      	"sign": ""
      }
      
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      posted in Protocol/协议
      昌
      昌用
    • APIP9V1_Group(zh-CN)
      APIP9V1_Group(zh-CN)
      Version:1
      Language:zh-CN
      Author:C_armX
      Status:draft
      Create:2021-12-03
      Update:2021-04-29
      PID:""
      TXID:
      

      APIP9V1_Group(zh-CN)

      目录

      关于APIP

      关于本协议

      getGroupList

      getGroupActiveMembers

      getGroupExitedMembers

      getMyGroups

      getGroupOpHistory


      Type:APIP
      SerialNumber:9
      ProtocolName:Group
      Version:1
      Description:定义群信息查询接口。
      Author:C_armX
      Language:zh-CN
      preVersionHash:""
      

      关于APIP

      概述

      APIP(Application Programming Interface Protocols)是自由共识生态协议的一种类型,用于创建和发布开放的API文档,供API服务方开发部署通用API服务,以实现数据服务的去中心化。API需求方可以按照APIP协议从遵循该协议的任何一个API服务方那里获取数据服务。

      通用规则

      《APIP1_OpenAPI》规范了APIP类型协议的协议发布、接口标识、接口URL构成、时间戳格式、密码算法、服务流程、商业模式、连接接口,数据接口和查询语法的通用规则。设计、开发或应用APIP协议前,应先参考《APIP1_OpenAPI》协议。

      建立连接

      使用APIP协议各接口,须先采用《APIP1_OpenAPI》的connect接口从API服务方获取symKey。参见《APIP1_OpenAPI》的“connect接口”。

      通用请求参数

      APIP类型协议接口的通用请求参数如下:

      name type description requested
      requester string 请求方的fch地址 Y
      url string 当前所请求api的url Y
      timestamp timestamp 发起请求的时间戳,精确到毫秒 Y
      query object 请求数据的查询语句,参见”APIP简易查询语法@APIP1“ N
      sort object 请求数据的排序语句,参见”APIP简易查询语法@APIP1“ N
      from int 请求列表数据时的起始位置,从0开始 N
      size int 请求列表数据时的每页条目数 N
      sign string 用symkey对其他参数所做的签名 Y

      通用响应方式

      响应前所作的验证、通用响应状态码、通用响应参数参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      请求成功的通用响应参数为:

      参数 类型 说明 适用状态
      code int 响应状态码 all
      message string 响应状态描述 all
      data object 正常返回数据,由具体APIP定义。 0
      sign string 将symKey加入响应参数做两次sha256哈希的签名值 all

      具体APIP协议的特定响应参数在data参数中给出,并定义具体接口的响应状态。

      请求失败的通用响应码、响应信息和响应参数,参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      签名与验证

      APIP接口的请求和响应都需要签名和验证。

      connect接口请求时用私钥签名,公钥验证,响应时无需签名。

      所有数据请求和数据响应,采用以下方法:

      签名:将对称密钥symKey加入参数压缩升序后计算两次sha256,得到sign的值,再用sign替换参数中的symKey。

      验证:将sign从参数中取出,加入symKey,压缩升序后做两次sha256计算,将值与sign的值比较,一致则验证通过。

      详见《APIP1_OpenAPI》

      关于本协议

      1. 本协议接口提供链上注册的各种群的相关信息。

      2. 本协议接口的数据来源遵循以下协议:

        • 《FEIP19_Group》
      3. 本协议接口数据采用JSON格式。

      4. 示例数据:

      requester:FEk41Kqjar45fLDriztUDTUkdki7mmcjWK

      requester的公钥pubKey:030be1d7e633feb2338a74a860e76d893bac525f35a5813cb7b21e27ba1bc8312a

      requester的私钥priKey:L2bHRej6Fxxipvb4TiR5bu1rkT3tRp8yWEsUy4R1Zb8VMm2x7sd8

      requester获得的对称密钥symKey:d2c03bbc1ba1380eafc395374e8da61f92545a1aac5d30b0c19289a69bd34a09

      服务方链上发布的urlMainPart: https://www.sign.cash/api/

      接口url:https://www.sign.cash/api/apip9/v1/[接口名称]


      getGroupList

      获取群信息列表。

      url

      [服务方发布的urlMainPart]apip9/v1/getGroupList

      示例:

      https://www.sign.cash/api/apip9/v1/getGroupList

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      响应参数data.list中各字段均可作为查询字段。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询gid为“222220000000000011111”和“33333000000002222222222”的群最新详情。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip9/v1/getGroupList",
      	"query": {
      		"terms": {
      			"gid": ["222220000000000011111","33333000000002222222222"]
      		}
      	},
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description key in FEIP19
      gid string The ID of the group,that is,the txid of the transaction in which the group was registered.
      name string The name of the group in english data.name
      desc string Description of this group data.desc
      activeMemberNumber uint64 The number of active members of this group
      exitedMemberNumber uint64 The number of exited members of this group
      sponsor string The signer of the first input of the transaction in which the group was registered.
      updater string The signer of the first input of the transaction in which the group was updated recently.
      firstTimestamp timeStamp The timeStamp of the transaction in which the group was first published.
      firstBlockHeight uint The height of the block in which the group was first published.
      lastTxid string The txid of the last operation of the group.
      lastTimestamp timeStamp The transaction timestamp of the last operation of the group.
      lastBlockHeight uint The height of the block of the last operation of the group.
      tCdd uint64 All destroyed coindays accumulated by all transactions where the value of data.op is "create", "update", or "join".
      • 示例
        响应查询gid为“222220000000000011111”和“33333000000002222222222”的群的除成员列表之外最新详情。
      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      				"gid": "222220000000000011111",
      				"name": "crypto socity",
      				"desc": "欢迎来到密码社区",
      				"activeMemberNumber": 2340,
      				"exitedMemberNumber": 21,
      				"sponsor": "FPL44YJRwPdd2ipziFvqq6y2tw4VnVvpAv",
      				"updater": "",
      				"firstTimestamp": 1610261291,
      				"firstBlockHeight": 963510,
      				"lastTxid": "1111111111111111111111111",
      				"lastTimestamp": 1636526891,
      				"lastBlockHeight": 963512,
      				"tCdd": 12300000
      			},
      			{
      				"gid": "33333000000002222222222",
      				"name": "digital socity",
      				"desc": "数字社区欢迎你!",
      				"activeMemberNumber": 20,
      				"exitedMemberNumber": 3,
      				"sponsor": "FPL44YJRwPdd2ipziFvqq6y2tw4VnVvpAv",
      				"updater": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      				"firstTimestamp": 1619261292,
      				"firstBlockHeight": 963600,
      				"lastTxid": "3333300000000222222233333",
      				"lastTimestamp": 1619261292,
      				"lastBlockHeight": 963612,
      				"tCdd": 2300000
      			}
      
      		],
      		"total": 2,
      		"bestHeight": 963667
      	},
      	"sign": ""
      }
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。


      getGroupActiveMembers

      获取群当前有效成员信息。

      url

      [服务方发布的urlMainPart]apip9/v1/getGroupActiveMembers

      示例:

      https://www.sign.cash/api/apip9/v1/getGroupActiveMembers

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      响应参数data.list中各字段均可作为查询字段。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询gid为"222220000000000011111111111111"的当前有效成员。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip9/v1/getGroupActiveMembers",
      	"query": {
      		"term": {
      			"gid": "222220000000000011111111111111"
      		}
      	},
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description requested
      gid string The ID of the group,that is,the txid of the transaction in which the group was registered.
      activeMemberNumber uint64 The number of active members of this group
      activeMembers string array The address list of active members.
      • 示例
        响应查询gid为"222220000000000011111111111111"的当前有效成员。
      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      			"gid": "222220000000000011111",
      			"activeMemberNumber": 4,
      			"activeMembers": ["F1111111111111S", "F2222222222222222Z", "F33333333333333333333h", "F4444444444444444444NC7N"]
      		}],
      		"total": 1,
      		"bestHeight": 963667
      	},
      	"sign": ""
      }
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。


      getGroupExitedMembers

      获取群已退出成员信息。

      url

      [服务方发布的urlMainPart]apip9/v1/getGroupExitedMembers

      示例:

      https://www.sign.cash/api/apip9/v1/getGroupExitedMembers

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      响应参数data.list中各字段均可作为查询字段。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询gid为"222220000000000011111111111111"的已退出成员。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip9/v1/getGroupExitedMembers",
      	"query": {
      		"term": {
      			"gid": "222220000000000011111111111111"
      		}
      	},
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description requested
      gid string The ID of the group,that is,the txid of the transaction in which the group was registered.
      exitedMemberNumber uint64 The number of exited members of this group
      exitedMembers string array The address list of exited members.
      • 示例
        响应查询gid为"222220000000000011111111111111"的当前有效成员。
      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      			"gid": "222220000000000011111",
      			"exitedMemberNumber": 4,
      			"exitedMembers": ["F1111111111111S", "F2222222222222222Z", "F33333333333333333333h", "F4444444444444444444NC7N"]
      		}],
      		"total": 1,
      		"bestHeight": 963667
      	},
      	"sign": ""
      }
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。


      getMyGroups

      获取某地址所参加的群。

      url

      [服务方发布的urlMainPart]apip9/v1/getMyGroups

      示例:

      https://www.sign.cash/api/apip9/v1/getMyGroups

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      以单个fch地址address为查询条件,可增加active筛选当前有效的或已退出的群。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX所参加的当前有效的群。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip9/v1/getMyGroups",
      	"query": {
      		"bool": {
      			"must": [{
      					"term": {
      						"address": "FMZsWGT5hEUqhnZhLhXrxNXXG6uDHcarmX"
      					}
      				},
      				{
      					"match": {
      						"active": 1
      					}
      				}
      			]
      		}
      	},
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description requested
      gid string The ID of the group,that is,the txid of the transaction in which the group was registered.
      name string The name of the group in english
      active bool Is the address active in this group.
      • 示例
        响应查询gid为"222220000000000011111111111111"的当前有效成员。
      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      				"gid": "222220000000000011111",
      				"name": "crypto circle",
      				"active": 1
      			},
      			{
      				"gid": "333300000000000111333",
      				"name": "crypto world",
      				"active": 1
      			}
      		],
      		"total": 2,
      		"bestHeight": 963667
      	},
      	"sign": ""
      }
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。


      getGroupOpHistory

      查询群链上操作历史信息。

      url

      [服务方发布的urlMainPart]apip9/v1/getGroupOpHistory

      示例:

      https://www.sign.cash/api/apip9/v1/getGroupOpHistory

      请求参数

      通用请求参数参见通用请求参数。其中:

      • query

      响应参数data.list中各字段均可作为查询字段。

      • sort

      响应参数data.list中的数字类型字段均可作为排序字段。

      • 示例

      查询gid为"222220000000000011111111111111"的群操作记录,按交易时间戳倒序,获取第1批20条。

      {
      	"requesrer": "FEk41Kqjar45fLDriztUDTUkdki7mmcjWK",
      	"timestamp": 1635513688254,
      	"url": "https://www.sign.cash/api/apip9/v1/getGroupOpHistory",
      	"query": {
      		"term": {
      			"gid": "222220000000000011111111111111"
      		}
      	},
      	"sort": [{
      		"txTimestamp": {
      			"order": "desc"
      		}
      	}],
      	"from": 0,
      	"size": 20,
      	"sign": ""
      }
      

      响应参数

      通用参数参见通用响应方式。本接口响应参数:

      • data
      name type description requested
      list object See below
      total uint The total number of items. Y
      bestHeight uint The latest block height when getting the data. Y
      • data.list
      name type description key in FEIP19
      op string The operation. data.op
      gid string The ID of the group,that is,the txid of the transaction in which the group was registered. data.gid
      signer string The signer of the first input of the transaction
      name string The name of the group data.name
      desc string Description of this group data.desc
      cdd uint64 Coindays destroyed of this transaction
      txid string The txid of this transaction
      txTimestamp timestamp The timestamp of this transaction
      blockHeight uint The height of the block where the transaction is written
      • 示例

      响应查询gid为"222220000000000011111111111111"的群操作记录,按交易时间戳倒序,获取第1批20条。

      {
      	"code": 0,
      	"message": "Success.",
      	"data": {
      		"list": [{
      				"gid": "222220000000000011111111111111",
      				"op": "join",
      				"signer": "FT7P7SxogDhx3eSpFGqCsjnFNaMcfwPi7Z",
      				"txTimestamp": 1613211239,
      				"txid": "0460fc1a1ada6479037a07c05509cfcb0d2e8ead2d2b32a5a6784f558c448866",
      				"cdd": 2300,
      				"blockHeight": 989239
      			},
      			{
      				"op": "create",
      				"name": "crypto school",
      				"desc": "密码学院讨论群",
      				"signer": "FPL44YJRwPdd2ipziFvqq6y2tw4VnVvpAv",
      				"txTimestamp": 1610261291,
      				"txid": "0460fc1a1ada6479037a07c05509cfcb0d2e8ead2d2b32a5a6784f558c448866",
      				"cdd": 11300,
      				"blockHeight": 989021
      			}
      		],
      		"bestHeight": 989430
      	}
      }
      
      • 响应状态

      参见《APIP1_OpenAPI》的“数据请求接口”的“5. 响应”。

      posted in Protocol/协议
      昌
      昌用