bdledger-apis/docs.md
huyingcong 08f427899c change go_package path
Summary: change go_package path

Test Plan: none

Reviewers: nex, wuyi

Reviewed By: nex

Differential Revision: https://phabricator.internetapi.cn/D29
2020-01-08 10:04:41 +08:00

538 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 通用类型
### common.ClientVersionResponse 节点客户端版本查询返回值
```
message ClientVersionResponse {
string version = 1; // 节点客户端版本
}
```
### TransactionType 事务类型
```
enum TransactionType {
RECORD = 0; // 通用数据记录
MESSAGE = 1; // 消息
CONTRACT_CREATION = 2; // 合约创建
CONTRACT_INVOCATION = 3; // 合约调用
CONTRACT_STATUS = 4; // 合约调用
}
```
---
### Transaction 事务
```
message Transaction {
uint64 block_number = 1; // 事务所在的区块的区块号,当事务处于待确认状态时为`null`
bytes block_hash = 2; // 事务所在的区块的哈希,当事务处于待确认状态时为`null`
uint32 index = 3; // 事务在区块中的位置index当事务处于待确认状态时为`null`
bytes hash = 4; // 事务的哈希
TransactionType type = 5; // 事务类型
bytes from = 6; // 发送账户地址
uint64 nonce = 7; // 这条事务之前发送者所发送的事务数量
bytes to = 8; // 接收账户地址,或者调用的合约地址,或者`null`如为合约创建
bytes data = 9; // 数据或合约代码
bytes v = 10; // ECDSA recovery id
bytes r = 11; // ECDSA signature r
bytes s = 12; // ECDSA signature s
}
```
---
### Block 区块
```
message Block {
uint64 number = 1; // 区块号,当区块处于待确认状态时为`null`
bytes hash = 2; // 区块的哈希,当区块处于待确认状态时为`null`
bytes parent_hash = 3; // 父区块的哈希
repeated bytes witnesses = 4; // 见证者账户地址的数组
int64 timestamp = 5; // 区块产生时的UNIX时间戳
uint64 size = 6; // 区块大小的字节数
bytes transactions_root = 7; // 区块的事务树根
repeated Transaction transactions = 8; // 事务对象的数组,或为空
repeated bytes transaction_hashes = 9; // 20字节的交易哈希的数组或为空
}
```
---
## 事务账本API
### ClientVersion
查询节点客户端版本
#### 参数
```
google.protobuf.Empty
```
#### 返回值
1. version `DATA` - 客户端节点版本
#### 样例
```lang=js
// 请求
{}
// 结果
{
version: "TxLedgerGo/v0.0.1alpha/darwin/go1.11"
}
```
---
### CreateLedger
创建账本。(仅管理账户有权限调用)
#### 参数
1. name `DATA` - 账本名称
```
message CreateLedgerRequest {
string name = 1;
}
```
#### 返回值
1. ok `Boolean` - 成功则返回`true`,否则返回`false`
```
message CreateLedgerResponse {
bool ok = 1;
}
```
#### 样例
```lang=js
// 请求
{
name: "new ledger"
}
// 结果
{
ok: true
}
```
---
### GetLedgers
返回账本列表。
#### 参数
```
google.protobuf.Empty
```
#### 返回值
1. ledgers `Array` - 账本名称字符串的数组
```
message GetLedgersResponse {
repeated string ledgers = 1;
}
```
#### 样例
```lang=js
// 请求
{}
// 结果
{
ledgers: ["main", "new ledger"]
}
```
---
### SendTransaction
发送新事务,包括:通用数据记录、交易、合约创建、合约调用。
#### 参数
1. ledger `DATA` - 账本名称
2. transaction `Object` - 事务对象
- type `QUANTITY`, 1 Byte - 事务类型
- from `DATA`, 20 Bytes - 发送账户地址
- to `DATA`, 20 Bytes - (可选)接收账户地址,或调用的合约地址
- data `DATA` - (可选)数据或合约代码
```
message SendTransactionRequest {
string ledger = 1;
message Transaction {
TransactionType type = 1;
bytes from = 2;
bytes to = 3;
bytes data = 4;
}
Transaction transaction = 2;
}
```
#### 返回值
1. hash `DATA`, 20 Bytes - 事务哈希
```
message SendTransactionResponse {
bytes hash = 1;
}
```
#### 样例
```lang=js
// 请求
{
ledger: "main",
transaction: {
type: 0,
from: "0xb60e8dd61c5d32be8058bb8eb970870f07233155",
to: "0xd46e8dd67c5d32be8058bb8eb970870f07244567",
data: "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"
}
]
// 结果
{
hash: "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
}
```
---
## 记账链API
### ClientVersion
查询节点客户端版本
#### 参数
```
google.protobuf.Empty
```
#### 返回值
1. version `DATA` - 客户端节点版本
#### 样例
```lang=js
// 请求
{}
// 结果
{
version: "AcChainGo/v0.0.1alpha/darwin/go1.11"
}
```
---
### BlockNumber
返回最新区块的区块号。
#### 参数
1. ledger `DATA` - 账本名称
```
message BlockNumberRequest {
string ledger = 1;
}
```
#### 返回值
1. block_number `QUANTITY` - 该客户端目前最新区块的区块号
```
message BlockNumberResponse {
uint64 block_number = 1;
}
```
#### 样例
```lang=js
// 请求
{
ledger: "main"
}
// 结果
{
block_number: "0xc94" // 1207
}
```
---
### GetBlockByNumber
返回区块号所指定区块的信息。
#### 参数
1. ledger `DATA` - 账本名称
2. number `QUANTITY` - 整型,区块号
3. full_transaction `Boolean` - 如果为`true`返回完整的事务对象,如果为`false`仅返回交易的事务
```
message GetBlockByNumberRequest {
string ledger = 1;
uint64 number = 2;
bool full_transaction = 3;
}
```
#### 返回值
`Object` - 区块对象,或者`null`如果没有找到区块
- number `QUANTITY` - 区块号,当区块处于待确认状态时为`null`
- hash `DATA`, 20 Bytes - 区块的哈希,当区块处于待确认状态时为`null`
- parent_hash `DATA`, 20 Bytes - 父区块的哈希
- witnesses `Array` of 20 Bytes `DATA` - 见证者账户地址的数组
- timestamp `QUANTITY` - 区块产生时的UNIX时间戳
- size `QUANTITY` - 整型,区块大小的字节数
- transactions_root `DATA`, 32 Bytes - 区块的事务树根
- transactions `Array` - 最后一个参数为`true`时为事务对象的数组,否则为空
- transaction_hashes `Array` - 最后一个参数为`false`时为20字节的交易哈希的数组否则为空
```
Block
```
#### 样例
```lang=js
// 请求
{
ledger: "main",
number: "0x1b4",
full_transaction: true
}
// 结果
{
number: "0x1b4", // 436
hash: "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
parent_hash: "0x9646252be9520f6e71339a8df9c55e4d7619deeb018d2a3f2d21fc165dde5eb5",
witnesses: [
"0x0404040404040404040404040404040404040404",
"0x1313131313131313131313131313131313131313",
"0x5252525252525252525252525252525252525252"
],
timestamp: "0x54e34e8e" // 1424182926
size: "0x027f07", // 163591
transactions_root: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
transactions [{...},{ ... }]
}
```
---
### GetBlockByHash
返回哈希所指定区块的信息。
#### 参数
1. ledger `DATA` - 账本名称
2. hash `DATA`, 20 Bytes - 区块的哈希
3. full_transaction `Boolean` - 如果为`true`返回完整的事务对象,如果为`false`仅返回事务的哈希
```
message GetBlockByHashRequest {
string ledger = 1;
bytes hash = 2;
bool full_transaction = 3;
}
```
#### 返回值
同`getBlockByNumber`的返回值
#### 样例
```lang=js
// 请求
{
ledger: "main",
hash: "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
full_transaction: true
}
```
结果同`getBlockByNumber`
---
### GetTransactionByHash
返回哈希所指定事务的信息。
#### 参数
1. ledger `DATA` - 账本名称
2. hash `DATA`, 20 Bytes - 事务的哈希
```
message GetTransactionByHashRequest {
string ledger = 1;
bytes hash = 2;
}
```
#### 返回值
`Object` - 事务对象,或者`null`如果没有找到区块
- block_number `QUANTITY` - 事务所在的区块的区块号,当事务处于待确认状态时为`null`
- block_hash `DATA`, 20 Bytes - 事务所在的区块的哈希,当事务处于待确认状态时为`null`
- index `QUANTITY` - 整型事务在区块中的位置index当事务处于待确认状态时为`null`
- hash `DATA`, 20 Bytes - 事务的哈希
- type `QUANTITY`, 1 Byte - 事务类型
- from `DATA`, 20 Bytes - 发送账户地址
- nonce `QUANTITY` - 这条事务之前发送者所发送的事务数量
- to `DATA`, 20 Bytes - 接收账户地址,或者调用的合约地址,或者`null`如为合约创建
- data `DATA` - 数据或合约代码
- v `QUANTITY` - ECDSA recovery id
- r `DATA`, 32 Bytes - ECDSA signature r
- s `DATA`, 32 Bytes - ECDSA signature s
```
Transaction
```
#### 样例
```lang=js
// 请求
{
ledger: "main",
hash: "0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"
}
// 结果
{
block_number: "0x5daf3b", // 6139707
block_hash: "0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
index: "0x41", // 65
hash: "0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b",
type: "0x0", // 0
from: "0xa7d9ddbe1f17865597fbd27ec712455208b6b76d",
nonce: "0x15", // 21
to: "0xf02c1c8e6114b1dbe8937a39260b5b0a374432bb",
data: "0x68656c6c6f21",
v: "0x25", // 37
r: "0x1b5e176d927f8e9ab405058b2d2457392da3e20f328b16ddabcebc33eaac5fea",
s: "0x4ba69724e8f69de52f0125ad8b3c5c2cef33019bac3249e2c0a2192766d1721c"
}
```
---
### GetTransactionByBlockNumberAndIndex
返回区块号与事务index所指定事务的信息。
#### 参数
1. ledger `DATA` - 账本名称
2. block_number `QUANTITY` - 整型,区块号
3. index `QUANTITY` - 整型事务的index
```
message GetTransactionByBlockNumberAndIndexRequest {
string ledger = 1;
uint64 block_number = 2;
uint32 index = 3;
}
```
#### 返回值
同`GetTransactionByHash`的返回值
#### 样例
```lang=js
// 请求
{
ledger: "main",
block_number: "0x29c", // 668
index: "0x0" // 0
}
```
结果同`getTransactionByHash`
---
### GetTransactionByBlockHashAndIndex
返回区块的哈希与事务的index所指定事务的信息。
#### 参数
1. ledger `DATA` - 账本名称
2. block_hash `DATA`, 20 Bytes - 区块的哈希
3. index `QUANTITY` - 整型事务的index
```
message GetTransactionByBlockHashAndIndexRequest {
string ledger = 1;
bytes block_hash = 2;
uint32 index = 3;
}
```
#### 返回值
同`GetTransactionByHash`的返回值
#### 样例
```lang=js
// 请求
{
ledger: "main",
block_hash: "0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b",
index: "0x0"
}
```
结果同`getTransactionByHash`