@ocap/client 1.25.5 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +77 -79
- package/dist/base.js +2 -2
- package/dist/base.js.map +1 -1
- package/dist/bundle.js +1 -1
- package/dist/extension.js +4 -4
- package/dist/extension.js.map +1 -1
- package/dist/report.html +2 -2
- package/docs/api-reference-client-methods.ja.md +38 -38
- package/docs/api-reference-client-methods.zh-TW.md +47 -47
- package/docs/api-reference-client-methods.zh.md +34 -34
- package/docs/api-reference-data-types.ja.md +20 -20
- package/docs/api-reference-data-types.zh-TW.md +17 -17
- package/docs/api-reference-data-types.zh.md +24 -24
- package/docs/api-reference-low-level-api.ja.md +49 -49
- package/docs/api-reference-low-level-api.zh-TW.md +48 -48
- package/docs/api-reference-low-level-api.zh.md +43 -43
- package/docs/api-reference-query-mutation-methods.ja.md +85 -85
- package/docs/api-reference-query-mutation-methods.zh-TW.md +140 -140
- package/docs/api-reference-query-mutation-methods.zh.md +141 -141
- package/docs/api-reference-transaction-helpers.ja.md +120 -120
- package/docs/api-reference-transaction-helpers.zh-TW.md +119 -119
- package/docs/api-reference-transaction-helpers.zh.md +153 -153
- package/docs/api-reference.ja.md +6 -6
- package/docs/api-reference.zh-TW.md +5 -5
- package/docs/api-reference.zh.md +8 -8
- package/docs/core-concepts-client-architecture.ja.md +26 -26
- package/docs/core-concepts-client-architecture.zh-TW.md +34 -34
- package/docs/core-concepts-client-architecture.zh.md +26 -26
- package/docs/core-concepts-event-subscriptions.ja.md +29 -29
- package/docs/core-concepts-event-subscriptions.zh-TW.md +23 -23
- package/docs/core-concepts-event-subscriptions.zh.md +29 -29
- package/docs/core-concepts-gas-payment.ja.md +27 -27
- package/docs/core-concepts-gas-payment.zh-TW.md +28 -28
- package/docs/core-concepts-gas-payment.zh.md +32 -32
- package/docs/core-concepts-transaction-lifecycle.ja.md +40 -40
- package/docs/core-concepts-transaction-lifecycle.zh-TW.md +43 -43
- package/docs/core-concepts-transaction-lifecycle.zh.md +49 -49
- package/docs/core-concepts.ja.md +7 -7
- package/docs/core-concepts.zh-TW.md +6 -6
- package/docs/core-concepts.zh.md +7 -7
- package/docs/getting-started-basic-usage.ja.md +24 -24
- package/docs/getting-started-basic-usage.zh-TW.md +28 -28
- package/docs/getting-started-basic-usage.zh.md +24 -24
- package/docs/getting-started-installation.ja.md +13 -13
- package/docs/getting-started-installation.zh-TW.md +9 -9
- package/docs/getting-started-installation.zh.md +15 -15
- package/docs/getting-started.ja.md +5 -5
- package/docs/getting-started.zh-TW.md +6 -6
- package/docs/getting-started.zh.md +6 -7
- package/docs/how-to-guides-delegate-permissions.ja.md +21 -21
- package/docs/how-to-guides-delegate-permissions.zh-TW.md +20 -21
- package/docs/how-to-guides-delegate-permissions.zh.md +18 -18
- package/docs/how-to-guides-manage-accounts.ja.md +21 -21
- package/docs/how-to-guides-manage-accounts.zh-TW.md +23 -23
- package/docs/how-to-guides-manage-accounts.zh.md +17 -17
- package/docs/how-to-guides-manage-assets.ja.md +137 -60
- package/docs/how-to-guides-manage-assets.md +77 -0
- package/docs/how-to-guides-manage-assets.zh-TW.md +116 -39
- package/docs/how-to-guides-manage-assets.zh.md +142 -65
- package/docs/how-to-guides-manage-tokens.ja.md +47 -47
- package/docs/how-to-guides-manage-tokens.zh-TW.md +49 -49
- package/docs/how-to-guides-manage-tokens.zh.md +34 -34
- package/docs/how-to-guides-stake-tokens-and-assets.ja.md +56 -56
- package/docs/how-to-guides-stake-tokens-and-assets.zh-TW.md +55 -55
- package/docs/how-to-guides-stake-tokens-and-assets.zh.md +51 -51
- package/docs/how-to-guides-transfer-tokens-and-nfts.ja.md +45 -45
- package/docs/how-to-guides-transfer-tokens-and-nfts.zh-TW.md +46 -46
- package/docs/how-to-guides-transfer-tokens-and-nfts.zh.md +37 -37
- package/docs/how-to-guides.ja.md +8 -8
- package/docs/how-to-guides.zh-TW.md +4 -4
- package/docs/how-to-guides.zh.md +6 -6
- package/docs/overview.ja.md +15 -15
- package/docs/overview.zh-TW.md +14 -14
- package/docs/overview.zh.md +12 -12
- package/lib/base.js +2 -2
- package/lib/base.js.map +1 -1
- package/lib/extension.js +4 -4
- package/lib/extension.js.map +1 -1
- package/package.json +15 -15
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 底层 API
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
底层 API 提供了对整个交易生命周期的精细控制。与对细节进行抽象的[高级 API](./api-reference-transaction-helpers.md) 不同,这些方法允许您手动构建、编码、签名和发送交易。这对于高级场景非常理想,例如多重签名工作流,其中不同方需要在交易广播前对其进行签名。
|
|
4
4
|
|
|
5
|
-
该 API
|
|
5
|
+
该 API 分为四个主要的方法组,每个方法组对应交易生命周期中的一个阶段:
|
|
6
6
|
|
|
7
7
|
1. **编码**:准备一笔交易并将其序列化为二进制缓冲区。
|
|
8
8
|
2. **签名**:向已编码的交易添加数字签名。
|
|
9
|
-
3.
|
|
9
|
+
3. **多重签名**:向一笔交易添加多个数字签名。
|
|
10
10
|
4. **发送**:将已签名的交易广播到区块链。
|
|
11
11
|
|
|
12
12
|
## 编码交易
|
|
13
13
|
|
|
14
|
-
编码是创建交易的第一步。`encode[Type]Tx`
|
|
14
|
+
编码是创建交易的第一步。`encode[Type]Tx` 方法接收核心交易数据(`itx`)并将其包装在标准交易结构中,添加必要的细节,如 `chainId` 和 `nonce`。结果是一个人类可读的交易对象和一个可供签名的二进制缓冲区。
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
链支持的每种交易类型都有一个对应的 `encode` 方法。您可以通过调用 `client.getTxEncodeMethods()` 获取完整列表。
|
|
17
17
|
|
|
18
18
|
### `encode[Type]Tx(payload)`
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
对交易进行编码,但不签名。
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
**参数**
|
|
23
23
|
|
|
24
24
|
<x-field-group>
|
|
25
25
|
<x-field data-name="tx" data-type="object" data-required="true">
|
|
26
26
|
<x-field-desc markdown>交易数据对象。</x-field-desc>
|
|
27
27
|
<x-field data-name="itx" data-type="object" data-required="true" data-desc="特定于交易类型的内部交易对象。"></x-field>
|
|
28
28
|
<x-field data-name="from" data-type="string" data-required="false" data-desc="发送方地址。如果未提供,则从钱包中派生。"></x-field>
|
|
29
|
-
<x-field data-name="nonce" data-type="number" data-required="false" data-desc="
|
|
29
|
+
<x-field data-name="nonce" data-type="number" data-required="false" data-desc="交易随机数。如果未设置,则默认为 `Date.now()`。"></x-field>
|
|
30
30
|
<x-field data-name="chainId" data-type="string" data-required="false" data-desc="链 ID。如果未提供,则从连接的节点获取。"></x-field>
|
|
31
31
|
</x-field>
|
|
32
32
|
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="用于派生发送方地址和公钥的钱包对象。"></x-field>
|
|
33
33
|
<x-field data-name="delegator" data-type="string" data-required="false" data-desc="委托权限的账户地址(如果适用)。"></x-field>
|
|
34
34
|
</x-field-group>
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
**返回**
|
|
37
37
|
|
|
38
|
-
<x-field data-name="Promise<object>" data-type="Promise<object>" data-desc="一个
|
|
38
|
+
<x-field data-name="Promise<object>" data-type="Promise<object>" data-desc="一个 Promise,它会解析为一个包含已编码交易的对象。">
|
|
39
39
|
<x-field data-name="object" data-type="object" data-desc="人类可读的交易对象。"></x-field>
|
|
40
40
|
<x-field data-name="buffer" data-type="Buffer" data-desc="序列化后的交易二进制缓冲区,可供签名。"></x-field>
|
|
41
41
|
</x-field>
|
|
@@ -57,32 +57,32 @@ const { object, buffer } = await encodeTransferV2Tx({
|
|
|
57
57
|
wallet: senderWallet,
|
|
58
58
|
});
|
|
59
59
|
|
|
60
|
-
console.log('
|
|
61
|
-
console.log('
|
|
60
|
+
console.log('Encoded TX Object:', object);
|
|
61
|
+
console.log('Buffer to Sign:', buffer.toString('hex'));
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
## 签名交易
|
|
65
65
|
|
|
66
|
-
`sign[Type]Tx`
|
|
66
|
+
`sign[Type]Tx` 方法在编码步骤的基础上增加了数字签名。这些方法会对交易进行编码,然后使用提供的钱包对生成的二进制缓冲区进行签名。
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
您可以通过调用 `client.getTxSignMethods()` 获取所有可用的签名方法的完整列表。
|
|
69
69
|
|
|
70
70
|
### `sign[Type]Tx(payload)`
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
对交易进行编码和签名。
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
**参数**
|
|
75
75
|
|
|
76
76
|
<x-field-group>
|
|
77
77
|
<x-field data-name="tx" data-type="object" data-required="true" data-desc="交易数据对象,与编码时相同。"></x-field>
|
|
78
|
-
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="
|
|
78
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="用于签署交易的钱包。"></x-field>
|
|
79
79
|
<x-field data-name="delegator" data-type="string" data-required="false" data-desc="委托人地址(如果适用)。"></x-field>
|
|
80
80
|
<x-field data-name="encoding" data-type="string" data-required="false" data-desc="输出的可选编码('base16'、'hex'、'base58'、'base64')。如果省略,则返回交易对象。"></x-field>
|
|
81
81
|
</x-field-group>
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
**返回**
|
|
84
84
|
|
|
85
|
-
<x-field data-name="Promise<object|string>" data-type="Promise<object|string>" data-desc="一个
|
|
85
|
+
<x-field data-name="Promise<object|string>" data-type="Promise<object|string>" data-desc="一个 Promise,它会解析为已签名的交易对象,如果指定了 `encoding`,则解析为编码后的字符串。"></x-field>
|
|
86
86
|
|
|
87
87
|
**示例**
|
|
88
88
|
|
|
@@ -101,32 +101,32 @@ const signedTx = await signTransferV2Tx({
|
|
|
101
101
|
wallet: senderWallet,
|
|
102
102
|
});
|
|
103
103
|
|
|
104
|
-
console.log('
|
|
104
|
+
console.log('Signed TX:', signedTx);
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
## 发送交易
|
|
108
108
|
|
|
109
|
-
`send[Type]Tx`
|
|
109
|
+
`send[Type]Tx` 方法负责将交易广播到区块链。如果提供了未签名的交易和钱包,这些方法可以隐式执行签名步骤,也可以发送已经签名的交易。
|
|
110
110
|
|
|
111
|
-
可以通过 `client.getTxSendMethods()`
|
|
111
|
+
可以通过 `client.getTxSendMethods()` 获取发送方法的完整列表。
|
|
112
112
|
|
|
113
113
|
### `send[Type]Tx(payload)`
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
对交易进行签名(如果需要)并将其发送到链上。
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
**参数**
|
|
118
118
|
|
|
119
119
|
<x-field-group>
|
|
120
|
-
<x-field data-name="tx" data-type="object" data-required="true" data-desc="
|
|
121
|
-
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="
|
|
122
|
-
<x-field data-name="signature" data-type="string" data-required="false" data-desc="
|
|
120
|
+
<x-field data-name="tx" data-type="object" data-required="true" data-desc="交易对象。可以已签名或未签名。"></x-field>
|
|
121
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="用于签署交易的钱包。即使交易已预先签名,仍然需要此钱包来识别发送方。"></x-field>
|
|
122
|
+
<x-field data-name="signature" data-type="string" data-required="false" data-desc="交易的预计算签名。如果提供,钱包将不会再次用于签名。"></x-field>
|
|
123
123
|
<x-field data-name="delegator" data-type="string" data-required="false" data-desc="委托人地址(如果适用)。"></x-field>
|
|
124
|
-
<x-field data-name="commit" data-type="boolean" data-default="false" data-required="false" data-desc="
|
|
124
|
+
<x-field data-name="commit" data-type="boolean" data-default="false" data-required="false" data-desc="是否等待交易被提交到区块后再解析。"></x-field>
|
|
125
125
|
</x-field-group>
|
|
126
126
|
|
|
127
|
-
|
|
127
|
+
**返回**
|
|
128
128
|
|
|
129
|
-
<x-field data-name="Promise<string>" data-type="Promise<string>" data-desc="一个
|
|
129
|
+
<x-field data-name="Promise<string>" data-type="Promise<string>" data-desc="一个 Promise,它会解析为交易哈希。"></x-field>
|
|
130
130
|
|
|
131
131
|
**示例:自动签名**
|
|
132
132
|
|
|
@@ -135,7 +135,7 @@ const { sendTransferV2Tx } = client;
|
|
|
135
135
|
const senderWallet = fromRandom();
|
|
136
136
|
const receiverAddress = 'z1...';
|
|
137
137
|
|
|
138
|
-
//
|
|
138
|
+
// 客户端在发送前会使用 senderWallet 对此交易进行签名。
|
|
139
139
|
const txHash = await sendTransferV2Tx({
|
|
140
140
|
tx: {
|
|
141
141
|
itx: {
|
|
@@ -146,7 +146,7 @@ const txHash = await sendTransferV2Tx({
|
|
|
146
146
|
wallet: senderWallet,
|
|
147
147
|
});
|
|
148
148
|
|
|
149
|
-
console.log('
|
|
149
|
+
console.log('Transaction sent with hash:', txHash);
|
|
150
150
|
```
|
|
151
151
|
|
|
152
152
|
**示例:发送预签名交易**
|
|
@@ -156,24 +156,24 @@ console.log('交易已发送,哈希值为:', txHash);
|
|
|
156
156
|
const { sendTransferV2Tx } = client;
|
|
157
157
|
|
|
158
158
|
const txHash = await sendTransferV2Tx({
|
|
159
|
-
tx: signedTx, //
|
|
159
|
+
tx: signedTx, // 传递整个已签名的交易对象
|
|
160
160
|
wallet: senderWallet,
|
|
161
161
|
});
|
|
162
162
|
|
|
163
|
-
console.log('
|
|
163
|
+
console.log('Pre-signed transaction sent with hash:', txHash);
|
|
164
164
|
```
|
|
165
165
|
|
|
166
166
|
## 多重签名交易
|
|
167
167
|
|
|
168
|
-
|
|
168
|
+
对于需要多个签名的工作流(如原子交换),使用 `multiSign[Type]Tx` 方法。该过程涉及一方首先对交易进行签名(使用标准的 `sign[Type]Tx` 方法),然后后续各方使用相应的 `multiSign[Type]Tx` 方法添加他们的签名。
|
|
169
169
|
|
|
170
|
-
|
|
170
|
+
您可以通过 `client.getTxMultiSignMethods()` 获取支持多重签名的交易列表。
|
|
171
171
|
|
|
172
172
|
### `multiSign[Type]Tx(payload)`
|
|
173
173
|
|
|
174
|
-
|
|
174
|
+
向一个已有一个或多个签名的交易添加签名。
|
|
175
175
|
|
|
176
|
-
|
|
176
|
+
**参数**
|
|
177
177
|
|
|
178
178
|
<x-field-group>
|
|
179
179
|
<x-field data-name="tx" data-type="object" data-required="true" data-desc="交易对象,应已包含至少一个签名。"></x-field>
|
|
@@ -183,9 +183,9 @@ console.log('预签名交易已发送,哈希值为:', txHash);
|
|
|
183
183
|
<x-field data-name="encoding" data-type="string" data-required="false" data-desc="输出的可选编码('base16'、'hex'、'base58'、'base64')。"></x-field>
|
|
184
184
|
</x-field-group>
|
|
185
185
|
|
|
186
|
-
|
|
186
|
+
**返回**
|
|
187
187
|
|
|
188
|
-
<x-field data-name="Promise<object|string>" data-type="Promise<object|string>" data-desc="一个
|
|
188
|
+
<x-field data-name="Promise<object|string>" data-type="Promise<object|string>" data-desc="一个 Promise,它会解析为添加了新签名的交易对象。"></x-field>
|
|
189
189
|
|
|
190
190
|
**示例:原子交换 (`ExchangeV2Tx`)**
|
|
191
191
|
|
|
@@ -221,8 +221,8 @@ const signedByBoth = await client.multiSignExchangeV2Tx({
|
|
|
221
221
|
// 3. Bob 将 `signedByBoth` 发回给 Alice。Alice 发送最终交易。
|
|
222
222
|
const txHash = await client.sendExchangeV2Tx({
|
|
223
223
|
tx: signedByBoth,
|
|
224
|
-
wallet: aliceWallet, //
|
|
224
|
+
wallet: aliceWallet, // 使用发送方钱包进行提交
|
|
225
225
|
});
|
|
226
226
|
|
|
227
|
-
console.log('
|
|
227
|
+
console.log('Atomic swap transaction sent:', txHash);
|
|
228
228
|
```
|