Protocol Documentation

Table of Contents

bdware/bdledger/api/common.proto

Top

Block

FieldTypeLabelDescription
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

FieldTypeLabelDescription
contractName bytes

合约名称

randomNum uint32

合约执行的节点数量

operation bytes

合约方法

arg bytes

合约方法参数

path bytes

合约文件路径(合约在IDE工程的相对路径)

content bytes

合约内容(可为合约文件相对路径/合约脚本)

pubkey bytes

用户公钥

Transaction

FieldTypeLabelDescription
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

NameNumberDescription
START 0

STOP 1

EXECUTE 2

REPLY 3

REQUEST 4

PREPREPARE 5

PREPARE 6

COMMIT 7

ADDPEER 8

DROPPEER 9

STATESYNC 10

TransactionType

事务类型

NameNumberDescription
RECORD 0

通用数据记录

MESSAGE 1

消息

CONTRACT_CREATION 2

合约创建

CONTRACT_INVOCATION 3

合约调用

CONTRACT_STATUS 4

合约状态

bdware/bdledger/api/error_details.proto

Top

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).

FieldTypeLabelDescription
field_violations InvalidArgument.FieldViolation repeated

Describes all violations in a client request.

InvalidArgument.FieldViolation

A message type used to describe a single invalid field.

FieldTypeLabelDescription
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.

bdware/bdledger/api/ledger.proto

Top

CreateLedgerRequest

FieldTypeLabelDescription
name string

CreateLedgerResponse

FieldTypeLabelDescription
ok bool

GetLedgersResponse

FieldTypeLabelDescription
ledgers string repeated

SendTransactionRequest

FieldTypeLabelDescription
ledger string

transaction SendTransactionRequest.Transaction

SendTransactionRequest.Transaction

FieldTypeLabelDescription
type TransactionType

from bytes

nonce uint64

to bytes

data bytes

SendTransactionResponse

FieldTypeLabelDescription
hash bytes

Ledger

Method NameRequest TypeResponse TypeDescription
CreateLedger CreateLedgerRequest CreateLedgerResponse

Create a new ledger 创建一个新账本

GetLedgers .google.protobuf.Empty GetLedgersResponse

Get all ledgers 查询所有帐本列表

SendTransaction SendTransactionRequest SendTransactionResponse

Send a new transaction 发送一个新事务

bdware/bdledger/api/node.proto

Top

ClientVersionResponse

FieldTypeLabelDescription
version string

节点客户端版本

Node

Method NameRequest TypeResponse TypeDescription
ClientVersion .google.protobuf.Empty ClientVersionResponse

Get BDLedger node version 查询BDLedger节点版本

bdware/bdledger/api/query.proto

Top

BlockFilter

FieldTypeLabelDescription
hash bytes

timestamp int64

BlocksRequest

FieldTypeLabelDescription
ledger string

start_timestamp int64

end_timestamp int64

filters BlockFilter repeated

include_transactions IncludeTransactions

CountBlocksResponse

FieldTypeLabelDescription
count uint64

start_timestamp int64

end_timestamp int64

CountTransactionsResponse

FieldTypeLabelDescription
count uint64

start_timestamp int64

end_timestamp int64

GetBlockByHashRequest

FieldTypeLabelDescription
ledger string

hash bytes

full_transactions bool

GetBlockByHashResponse

FieldTypeLabelDescription
block Block

GetBlocksResponse

FieldTypeLabelDescription
blocks Block repeated

start_timestamp int64

end_timestamp int64

GetTransactionByBlockHashAndIndexRequest

FieldTypeLabelDescription
ledger string

block_hash bytes

index uint32

GetTransactionByBlockHashAndIndexResponse

FieldTypeLabelDescription
transaction Transaction

GetTransactionByHashRequest

FieldTypeLabelDescription
ledger string

hash bytes

GetTransactionByHashResponse

FieldTypeLabelDescription
transaction Transaction

GetTransactionsResponse

FieldTypeLabelDescription
transactions Transaction repeated

start_timestamp int64

end_timestamp int64

RecentBlocksRequest

FieldTypeLabelDescription
ledger string

count int64

include_transactions IncludeTransactions

TransactionFilter

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

FieldTypeLabelDescription
hash bytes

from bytes

to bytes

timestamp bytes

TransactionsRequest

FieldTypeLabelDescription
ledger string

start_timestamp int64

required

end_timestamp int64

filters TransactionFilter repeated

IncludeTransactions

NameNumberDescription
NONE 0

不包含交易数据

HASH 1

包含交易哈希列表

FULL 2

包含完整交易列表

Query

Method NameRequest TypeResponse TypeDescription
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

google/protobuf/empty.proto

Top

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 TypeNotesC++JavaPythonGoC#PHPRuby
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)