bdledger-apis/docs/apis.md
2020-09-04 12:29:54 +08:00

21 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字节的交易哈希的数组或为空

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

CreateLedgerResponse

Field Type Label Description
ok bool

GetLedgersResponse

Field Type Label Description
ledgers string repeated

SendTransactionRequest

Field Type Label Description
ledger string
transaction SendTransactionRequest.Transaction

SendTransactionRequest.Transaction

Field Type Label Description
type TransactionType
from bytes
nonce uint64
to bytes
data bytes

SendTransactionResponse

Field Type Label Description
hash bytes

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 节点客户端版本

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
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 required
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 查询时间范围内的区块 start_timestamp is required
CountBlocks BlocksRequest CountBlocksResponse Count all blocks in a ledger, or blocks in a timestamp range 查询帐本中的所有区块数量,或时间范围内的区块数量
GetRecentBlocks RecentBlocksRequest GetBlocksResponse Get recent 'count' blocks (Only support IncludeTransactions=NONE for now) 查询最新的n个区块
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 查询时间范围内的事务
CountTransactions TransactionsRequest CountTransactionsResponse Count all transactions in a ledger, or transactions in a timestamp range 查询帐本中的所有事务数量,或时间范围内的事务数量 start_timestamp is required

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)