bdledger-apis/docs/apis.md
2024-03-06 15:37:53 +08:00

25 KiB
Raw Blame History

Protocol Documentation

Table of Contents

Top

bdware/bdledger/api/common.proto

Block

Field Type Label Description
hash bytes 区块的哈希,当区块处于待确认状态时为null
creator bytes 产块者账户地址
nonce uint64 这个区块之前产块者产生的区块数量
parent_hashes bytes repeated 父区块的哈希
witnesses bytes repeated 见证者账户地址
timestamp int64 区块产生时的 UNIX 时间戳,单位为秒
size uint64 区块大小的字节数
transaction_count uint32 区块包含的事务数量
transactions_root bytes 区块的事务默克尔树根
transactions Transaction repeated 事务对象的数组,或为空
transaction_hashes bytes repeated 20字节的事务哈希的数组或为空
creator_signature bytes 产块者签名
witness_signatures bytes repeated 见证者签名

Contract

Field Type Label Description
contractName bytes 合约名称
randomNum uint32 合约执行的节点数量
operation bytes 合约方法
arg bytes 合约方法参数
path bytes 合约文件路径(合约在IDE工程的相对路径)
content bytes 合约内容(可为合约文件相对路径/合约脚本)
pubkey bytes 用户公钥

Transaction

Field Type Label Description
block_hash bytes 事务所在的区块的哈希,当事务处于待确认状态时为null
block_timestamp int64 事务所在的区块产生时的 UNIX 时间戳,单位为秒
index uint32 事务在区块中的位置 index当事务处于待确认状态时为null
hash bytes 事务的哈希
type TransactionType 事务类型
from bytes 发送账户地址
nonce uint64 这条事务之前发送者所发送的事务数量
to bytes 接收账户地址,或者调用的合约地址,或者null如为合约创建
data bytes 数据或合约代码
v bytes ECDSA recovery id
r bytes ECDSA signature r
s bytes ECDSA signature s

Contract.ContractUnitRequestType

Name Number Description
START 0
STOP 1
EXECUTE 2
REPLY 3
REQUEST 4
PREPREPARE 5
PREPARE 6
COMMIT 7
ADDPEER 8
DROPPEER 9
STATESYNC 10

TransactionType

事务类型

Name Number Description
RECORD 0 通用数据记录
MESSAGE 1 消息
CONTRACT_CREATION 2 合约创建
CONTRACT_INVOCATION 3 合约调用
CONTRACT_STATUS 4 合约状态

Top

bdware/bdledger/api/error_details.proto

InvalidArgument

InvalidArgument indicates client specified an invalid argument. Note that this differs from FailedPrecondition. It indicates arguments that are problematic regardless of the state of the system (e.g., a malformed file name).

Field Type Label Description
field_violations InvalidArgument.FieldViolation repeated Describes all violations in a client request.

InvalidArgument.FieldViolation

A message type used to describe a single invalid field.

Field Type Label Description
field string A path leading to a field in the request body. The value will be a sequence of dot-separated identifiers that identify a protocol buffer field. E.g., "field_violations.field" would identify this field.
description string A description of why the request element is bad.

Top

bdware/bdledger/api/ledger.proto

CreateLedgerRequest

Field Type Label Description
name string Ledger name 账本名称

CreateLedgerResponse

Field Type Label Description
ok bool Boolean value indicating if the ledger is successfully created 是否创建成功

GetLedgersResponse

Field Type Label Description
ledgers string repeated List of ledger names 帐本名称列表

SendTransactionRequest

Field Type Label Description
ledger string Ledger name 账本名称
transaction SendTransactionRequest.Transaction Transaction info 事务信息

SendTransactionRequest.Transaction

Field Type Label Description
type TransactionType 事务类型目前仅支持通用数据记录即type为RECORD (0)
from bytes 任意20字节的地址用于区分使用同一节点的事务发起者
nonce uint64 正整数同一from每个nonce应只使用一次防止重复的事务可以每次发送事务+1
to bytes 对于通用数据记录不需传递,无意义
data bytes 事务数据内容,字节数组

SendTransactionResponse

Field Type Label Description
hash bytes Hash of the created transaction 事务哈希

Ledger

Method Name Request Type Response Type Description
CreateLedger CreateLedgerRequest CreateLedgerResponse Create a new ledger 创建一个新账本
GetLedgers .google.protobuf.Empty GetLedgersResponse Get all ledgers 查询所有帐本列表
SendTransaction SendTransactionRequest SendTransactionResponse Send a new transaction 发送一个新事务

Top

bdware/bdledger/api/node.proto

ClientVersionResponse

Field Type Label Description
version string Client version 节点客户端版本

Node

Method Name Request Type Response Type Description
ClientVersion .google.protobuf.Empty ClientVersionResponse Get BDLedger node version 查询BDLedger节点版本

Top

bdware/bdledger/api/query.proto

BlockFilter

暂不支持

Field Type Label Description
hash bytes
timestamp int64

BlocksRequest

Field Type Label Description
ledger string 账本名称
start_timestamp int64 查询范围开始时间戳
end_timestamp int64 查询范围结束时间戳
filters BlockFilter repeated 暂不支持
include_transactions IncludeTransactions 包含事务信息详细程度

CountBlocksResponse

Field Type Label Description
count uint64 区块数量
start_timestamp int64 本次查询有效的查询范围开始时间戳
end_timestamp int64 本次查询有效的查询范围结束时间戳

CountTransactionsResponse

Field Type Label Description
count uint64 事务数量
start_timestamp int64 本次查询有效的查询范围开始时间戳
end_timestamp int64 本次查询有效的查询范围结束时间戳

GetBlockByHashRequest

Field Type Label Description
ledger string 账本名称
hash bytes 区块哈希
full_transactions bool 是否返回完整事务列表,而不是事务哈希列表

GetBlockByHashResponse

Field Type Label Description
block Block 区块信息

GetBlocksResponse

Field Type Label Description
blocks Block repeated 区块列表
start_timestamp int64 本次查询有效的查询范围开始时间戳
end_timestamp int64 本次查询有效的查询范围结束时间戳

GetTransactionByBlockHashAndIndexRequest

Field Type Label Description
ledger string 账本名称
block_hash bytes 事务所属区块哈希
index uint32 事务在区块中的位置

GetTransactionByBlockHashAndIndexResponse

Field Type Label Description
transaction Transaction 事务信息

GetTransactionByHashRequest

Field Type Label Description
ledger string 账本名称
hash bytes 事务哈希

GetTransactionByHashResponse

Field Type Label Description
transaction Transaction 事务信息

GetTransactionsResponse

Field Type Label Description
transactions Transaction repeated 事务列表
start_timestamp int64 本次查询有效的查询范围开始时间戳
end_timestamp int64 本次查询有效的查询范围结束时间戳

RecentBlocksRequest

Field Type Label Description
ledger string 账本名称
offset int64 起始值
count int64 查询区块数量
include_transactions IncludeTransactions 包含事务信息详细程度

TransactionFilter

repeated Transaction/BlockFilters are combined by "&&"(and) operator;

Field Type Label Description
hash bytes
from bytes
to bytes
timestamp bytes

TransactionsRequest

Field Type Label Description
ledger string 账本名称
start_timestamp int64 查询范围开始时间戳
end_timestamp int64 查询范围结束时间戳
filters TransactionFilter repeated 暂不支持

IncludeTransactions

包含事务信息详细程度

Name Number Description
NONE 0 不包含事务数据
HASH 1 包含事务哈希列表
FULL 2 包含完整事务列表

Query

Method Name Request Type Response Type Description
GetBlockByHash GetBlockByHashRequest GetBlockByHashResponse Get a block identified by its hash 查询哈希所指定的区块
GetBlocks BlocksRequest GetBlocksResponse Get blocks in a timestamp range 查询时间范围内的区块 Requirement: start_timestamp <= end_timestamp If neither 'start_timestamp' nor 'end_timestamp' is specified, then 'start_timestamp' will be set to the genesis block's timestamp, and 'end_timestamp' will be set to (start_timestamp + query.maxDuration) (query.maxDuration is specified in go-bdledger's config file). If only 'end_timestamp' is not specified, or (end_timestamp - start_timestamp > query.maxDuration), then 'end_timestamp' will be set to (start_timestamp + query.maxDuration). If only 'start_timestamp' is not specified, then 'start_timestamp' will be set to (end_timestamp - query.maxDuration). In all cases, 'start_timestamp' will never be earlier than the genesis block's timestamp, and 'end_timestamp' will never be later than the current timestamp when the node process the query request.
CountBlocks BlocksRequest CountBlocksResponse Count all blocks in a ledger, or blocks in a timestamp range 查询帐本中的所有区块数量,或时间范围内的区块数量 Requirement: start_timestamp <= end_timestamp If neither 'start_timestamp' nor 'end_timestamp' is specified, then count all blocks in the specified ledger. If only 'end_timestamp' is not specified, then count all blocks with timestamps later than 'start_timestamp'. If only 'start_timestamp' is not specified, then count all blocks with timestamps earlier than 'end_timestamp'. In all cases, 'start_timestamp' will never be earlier than the genesis block's timestamp, and 'end_timestamp' will never be later than the current timestamp when the node process the query request.
GetRecentBlocks RecentBlocksRequest GetBlocksResponse Get recent 'count' blocks (Only support IncludeTransactions=NONE for now) 查询最新的 'count' 个区块
GetTransactionByHash GetTransactionByHashRequest GetTransactionByHashResponse Get a transaction identified by its hash 查询哈希所指定的事务
GetTransactionByBlockHashAndIndex GetTransactionByBlockHashAndIndexRequest GetTransactionByBlockHashAndIndexResponse Get a transaction identified by hash of the block it belongs to and its index inside the block 查询所在区块的哈希与其在区块中的index所指定的事务
GetTransactions TransactionsRequest GetTransactionsResponse Get transactions in a timestamp range 查询时间范围内的事务 'start_timestamp' and 'end_timestamp' follow the same requirements and rules as in 'GetBlocks'.
CountTransactions TransactionsRequest CountTransactionsResponse Count all transactions in a ledger, or transactions in a timestamp range 查询帐本中的所有事务数量,或时间范围内的事务数量 'start_timestamp' and 'end_timestamp' follow the same requirements and rules as in 'CountBlocks'.

Top

google/protobuf/empty.proto

Empty

A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:

service Foo {
  rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
}

The JSON representation for Empty is empty JSON object {}.

Scalar Value Types

.proto Type Notes C++ Java Python Go C# PHP Ruby
double double double float float64 double float Float
float float float float float32 float float Float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers if your field is likely to have negative values, use sint32 instead. int32 int int int32 int integer Bignum or Fixnum (as required)
int64 Uses variable-length encoding. Inefficient for encoding negative numbers if your field is likely to have negative values, use sint64 instead. int64 long int/long int64 long integer/string Bignum
uint32 Uses variable-length encoding. uint32 int int/long uint32 uint integer Bignum or Fixnum (as required)
uint64 Uses variable-length encoding. uint64 long int/long uint64 ulong integer/string Bignum or Fixnum (as required)
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int int32 int integer Bignum or Fixnum (as required)
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long int64 long integer/string Bignum
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int uint32 uint integer Bignum or Fixnum (as required)
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long uint64 ulong integer/string Bignum
sfixed32 Always four bytes. int32 int int int32 int integer Bignum or Fixnum (as required)
sfixed64 Always eight bytes. int64 long int/long int64 long integer/string Bignum
bool bool boolean boolean bool bool boolean TrueClass/FalseClass
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode string string string String (UTF-8)
bytes May contain any arbitrary sequence of bytes. string ByteString str []byte ByteString string String (ASCII-8BIT)