NAC_Blockchain/sdk/nac-cli/docs/NAC_RPC_METHODS.md

230 lines
6.6 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.

# NAC RPC 方法规范
版本1.0
制定方NAC CLI工具组
日期2026-02-18
## 概述
NAC是原生RWA公链使用自己的RPC方法命名规范不继承以太坊的`eth_*`方法。
## 命名规范
**格式**: `<模块>_<操作>`
- `nac_*` - 核心链功能
- `xtzh_*` - XTZH预言机
- `acc_*` - ACC协议系列
- `charter_*` - Charter智能合约
## 核心方法列表
### 1. 账户相关 (nac_account_*)
| 方法名 | 参数 | 返回 | 说明 |
|--------|------|------|------|
| `nac_account_getBalance` | `address: Address` | `Balance` | 获取账户余额 |
| `nac_account_getNonce` | `address: Address` | `u64` | 获取账户nonce |
| `nac_account_getInfo` | `address: Address` | `AccountInfo` | 获取账户完整信息 |
| `nac_account_listAssets` | `address: Address` | `Asset[]` | 列出账户持有的RWA资产 |
### 2. 交易相关 (nac_tx_*)
| 方法名 | 参数 | 返回 | 说明 |
|--------|------|------|------|
| `nac_tx_send` | `SignedTransaction` | `Hash` | 发送已签名交易 |
| `nac_tx_get` | `hash: Hash` | `Transaction` | 获取交易详情 |
| `nac_tx_getReceipt` | `hash: Hash` | `Receipt` | 获取交易收据 |
| `nac_tx_getStatus` | `hash: Hash` | `TxStatus` | 获取交易状态 |
| `nac_tx_estimateGas` | `Transaction` | `u64` | 估算Gas费用 |
### 3. 区块相关 (nac_block_*)
| 方法名 | 参数 | 返回 | 说明 |
|--------|------|------|------|
| `nac_block_getByNumber` | `number: u64` | `Block` | 按高度获取区块 |
| `nac_block_getByHash` | `hash: Hash` | `Block` | 按哈希获取区块 |
| `nac_block_getLatest` | - | `Block` | 获取最新区块 |
| `nac_block_getHeight` | - | `u64` | 获取当前区块高度 |
| `nac_block_getTransactions` | `number: u64` | `Transaction[]` | 获取区块中的交易 |
### 4. Charter合约相关 (charter_*)
| 方法名 | 参数 | 返回 | 说明 |
|--------|------|------|------|
| `charter_deploy` | `bytecode: bytes, args: any[]` | `Address` | 部署Charter合约 |
| `charter_call` | `address: Address, method: string, args: any[]` | `any` | 调用合约方法(只读) |
| `charter_send` | `address: Address, method: string, args: any[]` | `Hash` | 发送合约交易 |
| `charter_getCode` | `address: Address` | `bytes` | 获取合约字节码 |
| `charter_getStorage` | `address: Address, key: bytes32` | `bytes32` | 获取合约存储 |
### 5. ACC协议相关 (acc_*)
| 方法名 | 参数 | 返回 | 说明 |
|--------|------|------|------|
| `acc_asset_create` | `AssetParams` | `Hash` | 创建RWA资产 |
| `acc_asset_get` | `asset_id: string` | `Asset` | 获取资产信息 |
| `acc_asset_transfer` | `from, to, asset_id` | `Hash` | 转移资产 |
| `acc_asset_listByOwner` | `address: Address` | `Asset[]` | 列出所有者的资产 |
| `acc_compliance_verify` | `asset_id: string` | `ComplianceReport` | 验证资产合规性 |
### 6. 宪法系统相关 (constitution_*)
| 方法名 | 参数 | 返回 | 说明 |
|--------|------|------|------|
| `constitution_getClause` | `clause_id: string` | `Clause` | 获取宪法条款 |
| `constitution_listClauses` | `layer: ClauseLayer` | `Clause[]` | 列出指定层级的条款 |
| `constitution_verifyTx` | `tx: Transaction` | `ConstitutionalReceipt` | 验证交易的宪法合规性 |
| `constitution_getReceipt` | `receipt_id: Hash` | `ConstitutionalReceipt` | 获取宪法收据 |
### 7. CBPP共识相关 (cbpp_*)
| 方法名 | 参数 | 返回 | 说明 |
|--------|------|------|------|
| `cbpp_getValidators` | - | `Validator[]` | 获取验证者列表 |
| `cbpp_getProposal` | `proposal_id: u64` | `Proposal` | 获取提案详情 |
| `cbpp_submitProposal` | `Proposal` | `Hash` | 提交提案 |
| `cbpp_voteProposal` | `proposal_id, vote` | `Hash` | 对提案投票 |
### 8. XTZH预言机相关 (xtzh_*)
| 方法名 | 参数 | 返回 | 说明 |
|--------|------|------|------|
| `xtzh_getRate` | `features: i32[]` | `RateResponse` | 获取XTZH汇率 |
| `xtzh_submitReceipt` | `ReceiptSubmission` | `SubmissionAck` | 提交汇率收据 |
| `xtzh_health` | - | `HealthResponse` | 健康检查 |
### 9. 节点相关 (node_*)
| 方法名 | 参数 | 返回 | 说明 |
|--------|------|------|------|
| `node_getInfo` | - | `NodeInfo` | 获取节点信息 |
| `node_getPeers` | - | `Peer[]` | 获取对等节点列表 |
| `node_getHealth` | - | `HealthStatus` | 获取节点健康状态 |
| `node_getVersion` | - | `string` | 获取节点版本 |
### 10. 网络相关 (net_*)
| 方法名 | 参数 | 返回 | 说明 |
|--------|------|------|------|
| `net_version` | - | `string` | 获取网络版本 |
| `net_peerCount` | - | `u64` | 获取对等节点数量 |
| `net_listening` | - | `bool` | 是否正在监听 |
## 数据类型
### Address
NAC原生地址格式32字节
### Hash
NAC原生哈希格式48字节SHA3-384
### Transaction
```json
{
"from": "Address",
"to": "Address",
"value": "u128",
"data": "bytes",
"nonce": "u64",
"gas_limit": "u64",
"gas_price": "u128",
"signature": "Signature"
}
```
### Block
```json
{
"number": "u64",
"hash": "Hash",
"parent_hash": "Hash",
"timestamp": "u64",
"transactions": "Transaction[]",
"validator": "Address"
}
```
### Asset (RWA资产)
```json
{
"asset_id": "string (GNACS编码)",
"owner": "Address",
"asset_type": "AssetType",
"value": "u128",
"metadata": "object",
"dna": "CryptoDNA"
}
```
## 错误码
| 错误码 | 说明 |
|--------|------|
| -32700 | 解析错误 |
| -32600 | 无效请求 |
| -32601 | 方法不存在 |
| -32602 | 无效参数 |
| -32603 | 内部错误 |
| -40001 | 宪法验证失败 |
| -40002 | 合规检查失败 |
| -40003 | 资产不存在 |
| -40004 | 余额不足 |
## 示例
### 获取账户余额
```json
{
"jsonrpc": "2.0",
"method": "nac_account_getBalance",
"params": {
"address": "0x1234...abcd"
},
"id": 1
}
```
### 发送交易
```json
{
"jsonrpc": "2.0",
"method": "nac_tx_send",
"params": {
"from": "0x1234...abcd",
"to": "0x5678...efgh",
"value": "1000000000000000000",
"data": "0x",
"nonce": 5,
"gas_limit": 21000,
"gas_price": "1000000000",
"signature": "0x..."
},
"id": 2
}
```
### 获取XTZH汇率
```json
{
"jsonrpc": "2.0",
"method": "xtzh_getRate",
"params": {
"features": []
},
"id": 3
}
```
## 注意事项
1. **不要使用以太坊方法名** - NAC是原生链不继承ERC-20/ERC-721
2. **使用NAC原生类型** - Address(32字节)、Hash(48字节)
3. **遵循CBPP共识** - 所有交易需要宪法验证
4. **支持RWA资产** - 使用ACC协议系列
5. **集成XTZH预言机** - 汇率数据来自AI模型
## 版本历史
- v1.0 (2026-02-18) - 初始版本