@ocap/client 1.25.6 → 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,8 +1,8 @@
|
|
|
1
1
|
# 高级 API
|
|
2
2
|
|
|
3
|
-
交易助手是 OCAP Client
|
|
3
|
+
交易助手是 OCAP Client 内置的高级函数,它抽象了创建和签署常见交易的复杂性。您无需手动构建交易对象,而是可以使用这些便捷方法来处理创建资产、转移通证、质押和执行原子交换等工作流。这些助手可确保交易结构的正确性,并显著简化开发过程。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
如需更深入地了解底层交易生命周期,请参阅[核心概念:交易生命周期](./core-concepts-transaction-lifecycle.md)。
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -10,54 +10,54 @@
|
|
|
10
10
|
|
|
11
11
|
### migrateAccount
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
将账户的所有权迁移到新的密钥对。这对于密钥轮换或账户恢复非常有用。
|
|
14
14
|
|
|
15
15
|
**参数**
|
|
16
16
|
|
|
17
17
|
<x-field-group>
|
|
18
|
-
<x-field data-name="from" data-type="WalletObject" data-required="true" data-desc="
|
|
19
|
-
<x-field data-name="to" data-type="WalletObject" data-required="true" data-desc="
|
|
18
|
+
<x-field data-name="from" data-type="WalletObject" data-required="true" data-desc="要迁出账户的钱包对象。"></x-field>
|
|
19
|
+
<x-field data-name="to" data-type="WalletObject" data-required="true" data-desc="要迁入账户的钱包对象。"></x-field>
|
|
20
20
|
</x-field-group>
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
**返回值**
|
|
23
23
|
|
|
24
24
|
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
|
|
25
25
|
|
|
26
26
|
**示例**
|
|
27
27
|
|
|
28
|
-
```javascript
|
|
28
|
+
```javascript Send an AccountMigrateTx icon=logos:javascript
|
|
29
29
|
const txHash = await client.migrateAccount({
|
|
30
30
|
from: oldWallet,
|
|
31
31
|
to: newWallet,
|
|
32
32
|
});
|
|
33
|
-
console.log('
|
|
33
|
+
console.log('Migration transaction hash:', txHash);
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
### delegate
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
授权另一个账户(受托人)代表委托人发送特定类型的交易。这是一项强大的功能,可用于创建安全的沙盒化权限。
|
|
39
39
|
|
|
40
40
|
**参数**
|
|
41
41
|
|
|
42
42
|
<x-field-group>
|
|
43
43
|
<x-field data-name="from" data-type="WalletObject" data-required="true" data-desc="委托人的钱包,即授予权限的一方。"></x-field>
|
|
44
44
|
<x-field data-name="to" data-type="WalletObject" data-required="true" data-desc="受托人的钱包,即接收权限的一方。"></x-field>
|
|
45
|
-
<x-field data-name="privileges" data-type="array" data-required="true" data-desc="
|
|
46
|
-
<x-field data-name="typeUrl" data-type="string" data-required="true" data-desc="
|
|
45
|
+
<x-field data-name="privileges" data-type="array" data-required="true" data-desc="一个权限对象数组,用于指定允许的操作。">
|
|
46
|
+
<x-field data-name="typeUrl" data-type="string" data-required="true" data-desc="被许可交易的类型 URL(例如 'fg:t:transfer_v2')。"></x-field>
|
|
47
47
|
<x-field data-name="limit" data-type="object" data-required="false" data-desc="对委托的可选限制。">
|
|
48
|
-
<x-field data-name="tokens" data-type="array" data-desc="
|
|
49
|
-
<x-field data-name="assets" data-type="array" data-desc="
|
|
48
|
+
<x-field data-name="tokens" data-type="array" data-desc="对特定可替代通证的限制。"></x-field>
|
|
49
|
+
<x-field data-name="assets" data-type="array" data-desc="对特定资产 (NFT) 的限制。"></x-field>
|
|
50
50
|
</x-field>
|
|
51
51
|
</x-field>
|
|
52
52
|
</x-field-group>
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
**返回值**
|
|
55
55
|
|
|
56
56
|
<x-field data-name="result" data-type="Promise<[string, string]>" data-desc="一个包含交易哈希和新创建的委托地址的数组。"></x-field>
|
|
57
57
|
|
|
58
58
|
**示例**
|
|
59
59
|
|
|
60
|
-
```javascript
|
|
60
|
+
```javascript Send a DelegateTx icon=logos:javascript
|
|
61
61
|
const [txHash, delegateAddress] = await client.delegate({
|
|
62
62
|
from: userWallet,
|
|
63
63
|
to: appWallet,
|
|
@@ -67,37 +67,37 @@ const [txHash, delegateAddress] = await client.delegate({
|
|
|
67
67
|
},
|
|
68
68
|
],
|
|
69
69
|
});
|
|
70
|
-
console.log('
|
|
71
|
-
console.log('
|
|
70
|
+
console.log('Delegation tx hash:', txHash);
|
|
71
|
+
console.log('Delegate address:', delegateAddress);
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
### revokeDelegate
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
撤销先前授予受托人的权限。
|
|
77
77
|
|
|
78
78
|
**参数**
|
|
79
79
|
|
|
80
80
|
<x-field-group>
|
|
81
81
|
<x-field data-name="from" data-type="WalletObject" data-required="true" data-desc="委托人的钱包。"></x-field>
|
|
82
82
|
<x-field data-name="to" data-type="WalletObject" data-required="true" data-desc="受托人的钱包。"></x-field>
|
|
83
|
-
<x-field data-name="privileges" data-type="array" data-required="true" data-desc="
|
|
84
|
-
<x-field data-name="typeUrl" data-type="string" data-required="true" data-desc="要撤销的交易的类型 URL
|
|
83
|
+
<x-field data-name="privileges" data-type="array" data-required="true" data-desc="一个权限对象数组,用于指定要撤销的权限。">
|
|
84
|
+
<x-field data-name="typeUrl" data-type="string" data-required="true" data-desc="要撤销的交易的类型 URL(例如 'fg:t:transfer_v2')。"></x-field>
|
|
85
85
|
</x-field>
|
|
86
86
|
</x-field-group>
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
**返回值**
|
|
89
89
|
|
|
90
90
|
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
|
|
91
91
|
|
|
92
92
|
**示例**
|
|
93
93
|
|
|
94
|
-
```javascript
|
|
94
|
+
```javascript Send a RevokeDelegateTx icon=logos:javascript
|
|
95
95
|
const txHash = await client.revokeDelegate({
|
|
96
96
|
from: userWallet,
|
|
97
97
|
to: appWallet,
|
|
98
98
|
privileges: ['fg:t:transfer_v2'],
|
|
99
99
|
});
|
|
100
|
-
console.log('
|
|
100
|
+
console.log('Revocation tx hash:', txHash);
|
|
101
101
|
```
|
|
102
102
|
|
|
103
103
|
---
|
|
@@ -106,13 +106,13 @@ console.log('撤销交易哈希:', txHash);
|
|
|
106
106
|
|
|
107
107
|
### createAsset
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
在区块链上创建一个新资产(非同质化通证)。
|
|
110
110
|
|
|
111
111
|
**参数**
|
|
112
112
|
|
|
113
113
|
<x-field-group>
|
|
114
114
|
<x-field data-name="moniker" data-type="string" data-required="true" data-desc="资产的简短、人类可读的名称。"></x-field>
|
|
115
|
-
<x-field data-name="data" data-type="object" data-required="true" data-desc="
|
|
115
|
+
<x-field data-name="data" data-type="object" data-required="true" data-desc="包含资产元数据的 JSON 对象。"></x-field>
|
|
116
116
|
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="资产初始所有者的钱包。"></x-field>
|
|
117
117
|
<x-field data-name="parent" data-type="string" data-required="false" data-desc="父资产的地址,用于建立层级链接。"></x-field>
|
|
118
118
|
<x-field data-name="ttl" data-type="number" data-required="false" data-default="0" data-desc="首次消费后的存活时间(秒)。"></x-field>
|
|
@@ -124,23 +124,23 @@ console.log('撤销交易哈希:', txHash);
|
|
|
124
124
|
<x-field data-name="delegator" data-type="string" data-required="false" data-desc="如果交易由受托人发送,则为委托人的地址。"></x-field>
|
|
125
125
|
</x-field-group>
|
|
126
126
|
|
|
127
|
-
|
|
127
|
+
**返回值**
|
|
128
128
|
|
|
129
129
|
<x-field data-name="result" data-type="Promise<[string, string]>" data-desc="一个包含交易哈希和新创建资产地址的数组。"></x-field>
|
|
130
130
|
|
|
131
131
|
**示例**
|
|
132
132
|
|
|
133
|
-
```javascript
|
|
133
|
+
```javascript Send a CreateAssetTx icon=logos:javascript
|
|
134
134
|
const [txHash, assetAddress] = await client.createAsset({
|
|
135
|
-
moniker: '
|
|
135
|
+
moniker: 'My First NFT',
|
|
136
136
|
data: {
|
|
137
137
|
typeUrl: 'json',
|
|
138
|
-
value: { name: '
|
|
138
|
+
value: { name: 'Digital Collectible', description: 'A unique item.' },
|
|
139
139
|
},
|
|
140
140
|
wallet: userWallet,
|
|
141
141
|
});
|
|
142
|
-
console.log('
|
|
143
|
-
console.log('
|
|
142
|
+
console.log('Create asset tx hash:', txHash);
|
|
143
|
+
console.log('New asset address:', assetAddress);
|
|
144
144
|
```
|
|
145
145
|
|
|
146
146
|
### updateAsset
|
|
@@ -151,33 +151,33 @@ console.log('新资产地址:', assetAddress);
|
|
|
151
151
|
|
|
152
152
|
<x-field-group>
|
|
153
153
|
<x-field data-name="address" data-type="string" data-required="true" data-desc="要更新的资产的地址。"></x-field>
|
|
154
|
-
<x-field data-name="moniker" data-type="string" data-required="true" data-desc="
|
|
154
|
+
<x-field data-name="moniker" data-type="string" data-required="true" data-desc="资产的新标识。"></x-field>
|
|
155
155
|
<x-field data-name="data" data-type="object" data-required="true" data-desc="资产的新 JSON 数据对象。"></x-field>
|
|
156
156
|
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="资产当前所有者的钱包。"></x-field>
|
|
157
157
|
</x-field-group>
|
|
158
158
|
|
|
159
|
-
|
|
159
|
+
**返回值**
|
|
160
160
|
|
|
161
161
|
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
|
|
162
162
|
|
|
163
163
|
**示例**
|
|
164
164
|
|
|
165
|
-
```javascript
|
|
165
|
+
```javascript Send an UpdateAssetTx icon=logos:javascript
|
|
166
166
|
const txHash = await client.updateAsset({
|
|
167
167
|
address: 'z3g...',
|
|
168
|
-
moniker: '
|
|
168
|
+
moniker: 'Updated NFT Name',
|
|
169
169
|
data: {
|
|
170
170
|
typeUrl: 'json',
|
|
171
|
-
value: { name: '
|
|
171
|
+
value: { name: 'Updated Collectible', description: 'Now with more features!' },
|
|
172
172
|
},
|
|
173
173
|
wallet: userWallet,
|
|
174
174
|
});
|
|
175
|
-
console.log('
|
|
175
|
+
console.log('Update asset tx hash:', txHash);
|
|
176
176
|
```
|
|
177
177
|
|
|
178
178
|
### createAssetFactory
|
|
179
179
|
|
|
180
|
-
|
|
180
|
+
创建一个资产工厂,该工厂可作为模板,用于铸造具有一致结构的多个新资产。
|
|
181
181
|
|
|
182
182
|
**参数**
|
|
183
183
|
|
|
@@ -185,24 +185,24 @@ console.log('更新资产交易哈希:', txHash);
|
|
|
185
185
|
<x-field data-name="factory" data-type="object" data-required="true" data-desc="包含工厂配置的对象。">
|
|
186
186
|
<x-field data-name="name" data-type="string" data-required="true" data-desc="工厂的名称。"></x-field>
|
|
187
187
|
<x-field data-name="description" data-type="string" data-required="true" data-desc="工厂的描述。"></x-field>
|
|
188
|
-
<x-field data-name="limit" data-type="number" data-required="false" data-default="0" data-desc="
|
|
189
|
-
<x-field data-name="trustedIssuers" data-type="string[]" data-required="false" data-desc="
|
|
188
|
+
<x-field data-name="limit" data-type="number" data-required="false" data-default="0" data-desc="可铸造资产的最大数量(0 表示无限制)。"></x-field>
|
|
189
|
+
<x-field data-name="trustedIssuers" data-type="string[]" data-required="false" data-desc="允许从此工厂铸造资产的钱包地址列表。"></x-field>
|
|
190
190
|
<x-field data-name="input" data-type="object" data-required="true" data-desc="定义铸造所需的输入。"></x-field>
|
|
191
191
|
<x-field data-name="output" data-type="object" data-required="true" data-desc="定义铸造资产的结构,通常使用模板。"></x-field>
|
|
192
192
|
</x-field>
|
|
193
193
|
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="拥有该工厂的钱包。"></x-field>
|
|
194
194
|
</x-field-group>
|
|
195
195
|
|
|
196
|
-
|
|
196
|
+
**返回值**
|
|
197
197
|
|
|
198
198
|
<x-field data-name="result" data-type="Promise<[string, string]>" data-desc="一个包含交易哈希和新创建工厂地址的数组。"></x-field>
|
|
199
199
|
|
|
200
200
|
**示例**
|
|
201
201
|
|
|
202
|
-
```javascript
|
|
202
|
+
```javascript Send a CreateFactoryTx icon=logos:javascript
|
|
203
203
|
const factoryConfig = {
|
|
204
|
-
name: '
|
|
205
|
-
description: '
|
|
204
|
+
name: 'Ticket Factory',
|
|
205
|
+
description: 'Mints event tickets',
|
|
206
206
|
limit: 1000,
|
|
207
207
|
input: { ... },
|
|
208
208
|
output: { ... },
|
|
@@ -212,29 +212,29 @@ const [txHash, factoryAddress] = await client.createAssetFactory({
|
|
|
212
212
|
factory: factoryConfig,
|
|
213
213
|
wallet: eventCreatorWallet,
|
|
214
214
|
});
|
|
215
|
-
console.log('
|
|
216
|
-
console.log('
|
|
215
|
+
console.log('Create factory tx hash:', txHash);
|
|
216
|
+
console.log('New factory address:', factoryAddress);
|
|
217
217
|
```
|
|
218
218
|
|
|
219
219
|
### acquireAsset
|
|
220
220
|
|
|
221
|
-
|
|
221
|
+
从现有资产工厂获取(铸造)一个新资产。此操作通常由将拥有该资产的最终用户发起。
|
|
222
222
|
|
|
223
223
|
**参数**
|
|
224
224
|
|
|
225
225
|
<x-field-group>
|
|
226
|
-
<x-field data-name="itx" data-type="AcquireAssetV2Tx" data-required="true" data-desc="
|
|
226
|
+
<x-field data-name="itx" data-type="AcquireAssetV2Tx" data-required="true" data-desc="内部交易对象,通常使用 `preMintAsset` 等助手函数来准备。"></x-field>
|
|
227
227
|
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="获取资产的用户的钱包。"></x-field>
|
|
228
|
-
<x-field data-name="delegator" data-type="string" data-required="false" data-desc="
|
|
228
|
+
<x-field data-name="delegator" data-type="string" data-required="false" data-desc="委托人的地址(如适用)。"></x-field>
|
|
229
229
|
</x-field-group>
|
|
230
230
|
|
|
231
|
-
|
|
231
|
+
**返回值**
|
|
232
232
|
|
|
233
233
|
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
|
|
234
234
|
|
|
235
235
|
**示例**
|
|
236
236
|
|
|
237
|
-
```javascript
|
|
237
|
+
```javascript Send an AcquireAssetV2Tx icon=logos:javascript
|
|
238
238
|
// 首先,准备铸造交易(例如,在服务器上)
|
|
239
239
|
const itx = await client.preMintAsset({
|
|
240
240
|
factory: factoryAddress,
|
|
@@ -244,27 +244,27 @@ const itx = await client.preMintAsset({
|
|
|
244
244
|
|
|
245
245
|
// 然后,用户发送交易
|
|
246
246
|
const txHash = await client.acquireAsset({ itx, wallet: userWallet });
|
|
247
|
-
console.log('
|
|
247
|
+
console.log('Acquire asset tx hash:', txHash);
|
|
248
248
|
```
|
|
249
249
|
|
|
250
250
|
### mintAsset
|
|
251
251
|
|
|
252
|
-
|
|
252
|
+
这是与 `acquireAsset` 对应的发行方操作。它允许受信任的发行人从工厂铸造资产并将其分配给指定的所有者。
|
|
253
253
|
|
|
254
254
|
**参数**
|
|
255
255
|
|
|
256
256
|
<x-field-group>
|
|
257
257
|
<x-field data-name="itx" data-type="MintAssetTx" data-required="true" data-desc="内部交易对象,通常使用 `preMintAsset` 准备。"></x-field>
|
|
258
|
-
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="
|
|
258
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="受信任发行人的钱包。"></x-field>
|
|
259
259
|
</x-field-group>
|
|
260
260
|
|
|
261
|
-
|
|
261
|
+
**返回值**
|
|
262
262
|
|
|
263
263
|
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
|
|
264
264
|
|
|
265
265
|
**示例**
|
|
266
266
|
|
|
267
|
-
```javascript
|
|
267
|
+
```javascript Send a MintAssetTx icon=logos:javascript
|
|
268
268
|
const itx = await client.preMintAsset({
|
|
269
269
|
factory: factoryAddress,
|
|
270
270
|
owner: userWallet.address,
|
|
@@ -272,141 +272,141 @@ const itx = await client.preMintAsset({
|
|
|
272
272
|
});
|
|
273
273
|
|
|
274
274
|
const txHash = await client.mintAsset({ itx, wallet: issuerWallet });
|
|
275
|
-
console.log('
|
|
275
|
+
console.log('Mint asset tx hash:', txHash);
|
|
276
276
|
```
|
|
277
277
|
|
|
278
278
|
---
|
|
279
279
|
|
|
280
|
-
##
|
|
280
|
+
## 通证管理
|
|
281
281
|
|
|
282
282
|
### createTokenFactory
|
|
283
283
|
|
|
284
|
-
|
|
284
|
+
创建一个新工厂,用于铸造和销毁特定的可替代通证,通常基于联合曲线定价模型。
|
|
285
285
|
|
|
286
286
|
**参数**
|
|
287
287
|
|
|
288
288
|
<x-field-group>
|
|
289
|
-
<x-field data-name="feeRate" data-type="number" data-required="false" data-default="0" data-desc="
|
|
289
|
+
<x-field data-name="feeRate" data-type="number" data-required="false" data-default="0" data-desc="铸造和销毁操作的费率。"></x-field>
|
|
290
290
|
<x-field data-name="curve" data-type="object" data-required="true" data-desc="用于定价的联合曲线配置。"></x-field>
|
|
291
291
|
<x-field data-name="token" data-type="object" data-required="true">
|
|
292
|
-
<x-field-desc markdown
|
|
292
|
+
<x-field-desc markdown>要创建的通证的配置。这包括 `name`、`symbol`、`decimal` 和 `maxTotalSupply` 等属性。</x-field-desc>
|
|
293
293
|
</x-field>
|
|
294
|
-
<x-field data-name="data" data-type="object" data-required="false" data-desc="
|
|
294
|
+
<x-field data-name="data" data-type="object" data-required="false" data-desc="通证工厂的可选元数据。"></x-field>
|
|
295
295
|
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="工厂所有者的钱包。"></x-field>
|
|
296
296
|
</x-field-group>
|
|
297
297
|
|
|
298
|
-
|
|
298
|
+
**返回值**
|
|
299
299
|
|
|
300
|
-
<x-field data-name="result" data-type="Promise<[string, string]>" data-desc="
|
|
300
|
+
<x-field data-name="result" data-type="Promise<[string, string]>" data-desc="一个包含交易哈希和新创建的通证工厂地址的数组。"></x-field>
|
|
301
301
|
|
|
302
302
|
**示例**
|
|
303
303
|
|
|
304
|
-
```javascript
|
|
304
|
+
```javascript Send a CreateTokenFactoryTx icon=logos:javascript
|
|
305
305
|
const [txHash, factoryAddress] = await client.createTokenFactory({
|
|
306
306
|
feeRate: 100, // 1%
|
|
307
|
-
curve: { fixedPrice: '1' }, //
|
|
307
|
+
curve: { fixedPrice: '1' }, // 1 个原生通证兑换 1 个新通证
|
|
308
308
|
token: {
|
|
309
|
-
name: '
|
|
309
|
+
name: 'My Community Token',
|
|
310
310
|
symbol: 'MCT',
|
|
311
311
|
decimal: 18,
|
|
312
312
|
maxTotalSupply: '1000000',
|
|
313
313
|
},
|
|
314
314
|
wallet: creatorWallet,
|
|
315
315
|
});
|
|
316
|
-
console.log('
|
|
317
|
-
console.log('
|
|
316
|
+
console.log('Create token factory tx hash:', txHash);
|
|
317
|
+
console.log('New token factory address:', factoryAddress);
|
|
318
318
|
```
|
|
319
319
|
|
|
320
320
|
### updateTokenFactory
|
|
321
321
|
|
|
322
|
-
|
|
322
|
+
更新现有通证工厂的 `feeRate` 和 `data`。
|
|
323
323
|
|
|
324
324
|
**参数**
|
|
325
325
|
|
|
326
326
|
<x-field-group>
|
|
327
|
-
<x-field data-name="address" data-type="string" data-required="true" data-desc="
|
|
328
|
-
<x-field data-name="feeRate" data-type="number" data-required="false" data-desc="
|
|
329
|
-
<x-field data-name="data" data-type="object" data-required="false" data-desc="
|
|
327
|
+
<x-field data-name="address" data-type="string" data-required="true" data-desc="要更新的通证工厂的地址。"></x-field>
|
|
328
|
+
<x-field data-name="feeRate" data-type="number" data-required="false" data-desc="铸造和销毁的新费率。"></x-field>
|
|
329
|
+
<x-field data-name="data" data-type="object" data-required="false" data-desc="通证工厂的新元数据。"></x-field>
|
|
330
330
|
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="工厂所有者的钱包。"></x-field>
|
|
331
331
|
</x-field-group>
|
|
332
332
|
|
|
333
|
-
|
|
333
|
+
**返回值**
|
|
334
334
|
|
|
335
335
|
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
|
|
336
336
|
|
|
337
337
|
**示例**
|
|
338
338
|
|
|
339
|
-
```javascript
|
|
339
|
+
```javascript Send an UpdateTokenFactoryTx icon=logos:javascript
|
|
340
340
|
const txHash = await client.updateTokenFactory({
|
|
341
341
|
address: 'z2f...',
|
|
342
342
|
feeRate: 50, // 0.5%
|
|
343
343
|
wallet: ownerWallet,
|
|
344
344
|
});
|
|
345
|
-
console.log('
|
|
345
|
+
console.log('Update token factory tx hash:', txHash);
|
|
346
346
|
```
|
|
347
347
|
|
|
348
348
|
### mintToken
|
|
349
349
|
|
|
350
|
-
|
|
350
|
+
从通证工厂铸造新通证,以换取储备通证(通常是原生链通证)。成本由工厂的联合曲线决定。
|
|
351
351
|
|
|
352
352
|
**参数**
|
|
353
353
|
|
|
354
354
|
<x-field-group>
|
|
355
|
-
<x-field data-name="tokenFactory" data-type="string" data-required="true" data-desc="
|
|
356
|
-
<x-field data-name="amount" data-type="number" data-required="true" data-desc="
|
|
357
|
-
<x-field data-name="receiver" data-type="string" data-required="true" data-desc="
|
|
358
|
-
<x-field data-name="maxReserve" data-type="number" data-required="true" data-desc="
|
|
355
|
+
<x-field data-name="tokenFactory" data-type="string" data-required="true" data-desc="通证工厂的地址。"></x-field>
|
|
356
|
+
<x-field data-name="amount" data-type="number" data-required="true" data-desc="要铸造的新通证数量。"></x-field>
|
|
357
|
+
<x-field data-name="receiver" data-type="string" data-required="true" data-desc="将接收新铸造通证的地址。"></x-field>
|
|
358
|
+
<x-field data-name="maxReserve" data-type="number" data-required="true" data-desc="用户愿意支付的储备通证的最大数量。这可以起到滑点保护的作用。"></x-field>
|
|
359
359
|
<x-field data-name="data" data-type="object" data-required="false" data-desc="交易的可选元数据。"></x-field>
|
|
360
360
|
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="发起铸造的钱包。"></x-field>
|
|
361
361
|
</x-field-group>
|
|
362
362
|
|
|
363
|
-
|
|
363
|
+
**返回值**
|
|
364
364
|
|
|
365
365
|
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
|
|
366
366
|
|
|
367
367
|
**示例**
|
|
368
368
|
|
|
369
|
-
```javascript
|
|
369
|
+
```javascript Send a MintTokenTx icon=logos:javascript
|
|
370
370
|
const txHash = await client.mintToken({
|
|
371
371
|
tokenFactory: 'z2f...',
|
|
372
372
|
amount: 100,
|
|
373
373
|
receiver: userWallet.address,
|
|
374
|
-
maxReserve: 105, //
|
|
374
|
+
maxReserve: 105, // 愿意支付最多 105 个原生通证
|
|
375
375
|
wallet: userWallet,
|
|
376
376
|
});
|
|
377
|
-
console.log('
|
|
377
|
+
console.log('Mint token tx hash:', txHash);
|
|
378
378
|
```
|
|
379
379
|
|
|
380
380
|
### burnToken
|
|
381
381
|
|
|
382
|
-
|
|
382
|
+
在工厂销毁现有通证,以换取底层的储备通证。收到的储备通证数量由工厂的联合曲线决定。
|
|
383
383
|
|
|
384
384
|
**参数**
|
|
385
385
|
|
|
386
386
|
<x-field-group>
|
|
387
|
-
<x-field data-name="tokenFactory" data-type="string" data-required="true" data-desc="
|
|
388
|
-
<x-field data-name="amount" data-type="number" data-required="true" data-desc="
|
|
389
|
-
<x-field data-name="receiver" data-type="string" data-required="true" data-desc="
|
|
390
|
-
<x-field data-name="minReserve" data-type="number" data-required="true" data-desc="
|
|
387
|
+
<x-field data-name="tokenFactory" data-type="string" data-required="true" data-desc="通证工厂的地址。"></x-field>
|
|
388
|
+
<x-field data-name="amount" data-type="number" data-required="true" data-desc="要销毁的通证数量。"></x-field>
|
|
389
|
+
<x-field data-name="receiver" data-type="string" data-required="true" data-desc="将接收储备通证的地址。"></x-field>
|
|
390
|
+
<x-field data-name="minReserve" data-type="number" data-required="true" data-desc="用户期望收到的储备通证的最低数量。这可以起到滑点保护的作用。"></x-field>
|
|
391
391
|
<x-field data-name="data" data-type="object" data-required="false" data-desc="交易的可选元数据。"></x-field>
|
|
392
392
|
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="发起销毁的钱包。"></x-field>
|
|
393
393
|
</x-field-group>
|
|
394
394
|
|
|
395
|
-
|
|
395
|
+
**返回值**
|
|
396
396
|
|
|
397
397
|
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
|
|
398
398
|
|
|
399
399
|
**示例**
|
|
400
400
|
|
|
401
|
-
```javascript
|
|
401
|
+
```javascript Send a BurnTokenTx icon=logos:javascript
|
|
402
402
|
const txHash = await client.burnToken({
|
|
403
403
|
tokenFactory: 'z2f...',
|
|
404
404
|
amount: 50,
|
|
405
405
|
receiver: userWallet.address,
|
|
406
|
-
minReserve: 48, // 期望至少收到 48
|
|
406
|
+
minReserve: 48, // 期望至少收到 48 个原生通证
|
|
407
407
|
wallet: userWallet,
|
|
408
408
|
});
|
|
409
|
-
console.log('
|
|
409
|
+
console.log('Burn token tx hash:', txHash);
|
|
410
410
|
```
|
|
411
411
|
|
|
412
412
|
---
|
|
@@ -415,60 +415,60 @@ console.log('销毁代币交易哈希:', txHash);
|
|
|
415
415
|
|
|
416
416
|
### transfer
|
|
417
417
|
|
|
418
|
-
|
|
418
|
+
在单笔交易中将原生通证、自定义可替代通证和/或资产(NFT)转移到另一个账户。
|
|
419
419
|
|
|
420
420
|
**参数**
|
|
421
421
|
|
|
422
422
|
<x-field-group>
|
|
423
423
|
<x-field data-name="to" data-type="string" data-required="true" data-desc="接收方的地址。"></x-field>
|
|
424
424
|
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="发送方的钱包。"></x-field>
|
|
425
|
-
<x-field data-name="token" data-type="number" data-required="false" data-default="0" data-desc="
|
|
425
|
+
<x-field data-name="token" data-type="number" data-required="false" data-default="0" data-desc="要转移的链上原生通证的数量。"></x-field>
|
|
426
426
|
<x-field data-name="assets" data-type="string[]" data-required="false" data-desc="要转移的资产地址(NFT)数组。"></x-field>
|
|
427
|
-
<x-field data-name="tokens" data-type="object[]" data-required="false" data-desc="
|
|
428
|
-
<x-field data-name="address" data-type="string" data-required="true" data-desc="
|
|
429
|
-
<x-field data-name="value" data-type="number" data-required="true" data-desc="
|
|
427
|
+
<x-field data-name="tokens" data-type="object[]" data-required="false" data-desc="要转移的自定义可替代通证对象数组。">
|
|
428
|
+
<x-field data-name="address" data-type="string" data-required="true" data-desc="自定义通证合约的地址。"></x-field>
|
|
429
|
+
<x-field data-name="value" data-type="number" data-required="true" data-desc="要转移的自定义通证的数量。"></x-field>
|
|
430
430
|
</x-field>
|
|
431
431
|
<x-field data-name="memo" data-type="string" data-required="false" data-desc="交易的可选备注。"></x-field>
|
|
432
|
-
<x-field data-name="delegator" data-type="string" data-required="false" data-desc="
|
|
432
|
+
<x-field data-name="delegator" data-type="string" data-required="false" data-desc="委托人的地址(如适用)。"></x-field>
|
|
433
433
|
</x-field-group>
|
|
434
434
|
|
|
435
|
-
|
|
435
|
+
**返回值**
|
|
436
436
|
|
|
437
437
|
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
|
|
438
438
|
|
|
439
439
|
**示例**
|
|
440
440
|
|
|
441
|
-
```javascript
|
|
441
|
+
```javascript Send a TransferV2Tx icon=logos:javascript
|
|
442
442
|
const txHash = await client.transfer({
|
|
443
443
|
to: 'z1sb...',
|
|
444
|
-
token: 1.5, // 1.5
|
|
444
|
+
token: 1.5, // 1.5 个原生链通证
|
|
445
445
|
assets: ['z3g...'], // 一个 NFT
|
|
446
|
-
tokens: [{ address: 'z2t...', value: 100 }], // 100
|
|
447
|
-
memo: '
|
|
446
|
+
tokens: [{ address: 'z2t...', value: 100 }], // 100 个自定义通证
|
|
447
|
+
memo: 'Payment for services',
|
|
448
448
|
wallet: senderWallet,
|
|
449
449
|
});
|
|
450
|
-
console.log('
|
|
450
|
+
console.log('Transfer tx hash:', txHash);
|
|
451
451
|
```
|
|
452
452
|
|
|
453
453
|
### prepareExchange
|
|
454
454
|
|
|
455
|
-
|
|
455
|
+
准备原子交换(exchange)交易的发送方部分。它会对发送方的报价进行签名,并返回一个可以传递给接收方的交易对象。
|
|
456
456
|
|
|
457
457
|
**参数**
|
|
458
458
|
|
|
459
459
|
<x-field-group>
|
|
460
460
|
<x-field data-name="receiver" data-type="string" data-required="true" data-desc="交换中另一方的地址。"></x-field>
|
|
461
|
-
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="
|
|
462
|
-
<x-field data-name="offerToken" data-type="number" data-required="false" data-desc="
|
|
463
|
-
<x-field data-name="offerAssets" data-type="string[]" data-required="false" data-desc="
|
|
464
|
-
<x-field data-name="offerTokens" data-type="object[]" data-required="false" data-desc="
|
|
465
|
-
<x-field data-name="demandToken" data-type="number" data-required="false" data-desc="
|
|
461
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="发起报价的用户的钱包。"></x-field>
|
|
462
|
+
<x-field data-name="offerToken" data-type="number" data-required="false" data-desc="报价的原生通证数量。"></x-field>
|
|
463
|
+
<x-field data-name="offerAssets" data-type="string[]" data-required="false" data-desc="报价的资产地址数组。"></x-field>
|
|
464
|
+
<x-field data-name="offerTokens" data-type="object[]" data-required="false" data-desc="报价的自定义可替代通证数组。"></x-field>
|
|
465
|
+
<x-field data-name="demandToken" data-type="number" data-required="false" data-desc="要求的回报原生通证数量。"></x-field>
|
|
466
466
|
<x-field data-name="demandAssets" data-type="string[]" data-required="false" data-desc="要求的回报资产地址数组。"></x-field>
|
|
467
|
-
<x-field data-name="demandTokens" data-type="object[]" data-required="false" data-desc="
|
|
467
|
+
<x-field data-name="demandTokens" data-type="object[]" data-required="false" data-desc="要求的回报自定义可替代通证数组。"></x-field>
|
|
468
468
|
<x-field data-name="memo" data-type="string" data-required="false" data-desc="交易的可选备注。"></x-field>
|
|
469
469
|
</x-field-group>
|
|
470
470
|
|
|
471
|
-
|
|
471
|
+
**返回值**
|
|
472
472
|
|
|
473
473
|
<x-field data-name="transactionObject" data-type="Promise<object>" data-desc="部分签名的交易对象。"></x-field>
|
|
474
474
|
|
|
@@ -480,11 +480,11 @@ console.log('转账交易哈希:', txHash);
|
|
|
480
480
|
|
|
481
481
|
<x-field-group>
|
|
482
482
|
<x-field data-name="tx" data-type="object" data-required="true" data-desc="从 `prepareExchange` 返回的交易对象。"></x-field>
|
|
483
|
-
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="
|
|
483
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="接受报价的用户的钱包。"></x-field>
|
|
484
484
|
<x-field data-name="data" data-type="object" data-required="false" data-desc="多重签名中的额外数据。"></x-field>
|
|
485
485
|
</x-field-group>
|
|
486
486
|
|
|
487
|
-
|
|
487
|
+
**返回值**
|
|
488
488
|
|
|
489
489
|
<x-field data-name="transactionObject" data-type="Promise<object>" data-desc="完全签名的多重签名交易对象。"></x-field>
|
|
490
490
|
|
|
@@ -499,18 +499,18 @@ console.log('转账交易哈希:', txHash);
|
|
|
499
499
|
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="提交交易的用户的钱包。"></x-field>
|
|
500
500
|
</x-field-group>
|
|
501
501
|
|
|
502
|
-
|
|
502
|
+
**返回值**
|
|
503
503
|
|
|
504
504
|
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
|
|
505
505
|
|
|
506
|
-
|
|
506
|
+
**示例(完整交换流程)**
|
|
507
507
|
|
|
508
|
-
```javascript
|
|
509
|
-
// 1.
|
|
508
|
+
```javascript Perform an atomic swap icon=logos:javascript
|
|
509
|
+
// 1. 报价方准备交易
|
|
510
510
|
const offerTx = await client.prepareExchange({
|
|
511
511
|
receiver: receiverWallet.address,
|
|
512
|
-
offerAssets: ['z3g...'], //
|
|
513
|
-
demandToken: 10, // 要求 10
|
|
512
|
+
offerAssets: ['z3g...'], // 报价一个 NFT
|
|
513
|
+
demandToken: 10, // 要求 10 个原生通证
|
|
514
514
|
wallet: offererWallet,
|
|
515
515
|
});
|
|
516
516
|
|
|
@@ -522,7 +522,7 @@ const finalTx = await client.finalizeExchange({
|
|
|
522
522
|
|
|
523
523
|
// 3. 任何一方都可以发送最终确定的交易
|
|
524
524
|
const txHash = await client.exchange({ tx: finalTx, wallet: offererWallet });
|
|
525
|
-
console.log('
|
|
525
|
+
console.log('Exchange tx hash:', txHash);
|
|
526
526
|
```
|
|
527
527
|
|
|
528
528
|
---
|
|
@@ -531,7 +531,7 @@ console.log('交换交易哈希:', txHash);
|
|
|
531
531
|
|
|
532
532
|
### stake
|
|
533
533
|
|
|
534
|
-
|
|
534
|
+
将通证和/或资产质押到接收方地址。质押会锁定资源,通常用于换取奖励或提供安全性。
|
|
535
535
|
|
|
536
536
|
**参数**
|
|
537
537
|
|
|
@@ -539,111 +539,111 @@ console.log('交换交易哈希:', txHash);
|
|
|
539
539
|
<x-field data-name="to" data-type="string" data-required="true" data-desc="质押接收方的地址。"></x-field>
|
|
540
540
|
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="质押者的钱包。"></x-field>
|
|
541
541
|
<x-field data-name="assets" data-type="string[]" data-required="false" data-desc="要质押的资产地址数组。"></x-field>
|
|
542
|
-
<x-field data-name="tokens" data-type="object[]" data-required="false" data-desc="
|
|
542
|
+
<x-field data-name="tokens" data-type="object[]" data-required="false" data-desc="要质押的可替代通证对象数组。"></x-field>
|
|
543
543
|
<x-field data-name="locked" data-type="boolean" data-required="false" data-default="false" data-desc="质押在创建时是否被锁定。"></x-field>
|
|
544
|
-
<x-field data-name="slashers" data-type="string[]" data-required="false" data-desc="
|
|
544
|
+
<x-field data-name="slashers" data-type="string[]" data-required="false" data-desc="被允许削减此质押的地址列表。"></x-field>
|
|
545
545
|
<x-field data-name="message" data-type="string" data-required="false" data-desc="质押的可选备注。"></x-field>
|
|
546
546
|
</x-field-group>
|
|
547
547
|
|
|
548
|
-
|
|
548
|
+
**返回值**
|
|
549
549
|
|
|
550
|
-
<x-field data-name="result" data-type="Promise<[string, string]>" data-desc="
|
|
550
|
+
<x-field data-name="result" data-type="Promise<[string, string]>" data-desc="一个包含交易哈希和新创建质押地址的数组。"></x-field>
|
|
551
551
|
|
|
552
552
|
**示例**
|
|
553
553
|
|
|
554
|
-
```javascript
|
|
554
|
+
```javascript Send a StakeTx icon=logos:javascript
|
|
555
555
|
const [txHash, stakeAddress] = await client.stake({
|
|
556
556
|
to: 'z1v...',
|
|
557
557
|
tokens: [{ address: 'z2t...', value: 5000 }],
|
|
558
|
-
message: '
|
|
558
|
+
message: 'Staking for validator rewards',
|
|
559
559
|
wallet: userWallet,
|
|
560
560
|
});
|
|
561
|
-
console.log('
|
|
562
|
-
console.log('
|
|
561
|
+
console.log('Stake tx hash:', txHash);
|
|
562
|
+
console.log('New stake address:', stakeAddress);
|
|
563
563
|
```
|
|
564
564
|
|
|
565
565
|
### revokeStake
|
|
566
566
|
|
|
567
|
-
|
|
567
|
+
撤销先前质押的通证和/或资产,启动将其返还给所有者的流程。请注意,在资产可以被认领之前,可能存在一个解绑期。
|
|
568
568
|
|
|
569
569
|
**参数**
|
|
570
570
|
|
|
571
571
|
<x-field-group>
|
|
572
|
-
<x-field data-name="from" data-type="string" data-required="true" data-desc="
|
|
572
|
+
<x-field data-name="from" data-type="string" data-required="true" data-desc="要从中撤销质押的质押地址。"></x-field>
|
|
573
573
|
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="质押所有者的钱包。"></x-field>
|
|
574
574
|
<x-field data-name="assets" data-type="string[]" data-required="false" data-desc="要撤销的资产地址数组。"></x-field>
|
|
575
|
-
<x-field data-name="tokens" data-type="object[]" data-required="false" data-desc="
|
|
575
|
+
<x-field data-name="tokens" data-type="object[]" data-required="false" data-desc="要撤销的可替代通证对象数组。"></x-field>
|
|
576
576
|
</x-field-group>
|
|
577
577
|
|
|
578
|
-
|
|
578
|
+
**返回值**
|
|
579
579
|
|
|
580
580
|
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
|
|
581
581
|
|
|
582
582
|
**示例**
|
|
583
583
|
|
|
584
|
-
```javascript
|
|
584
|
+
```javascript Send a RevokeStakeTx icon=logos:javascript
|
|
585
585
|
const txHash = await client.revokeStake({
|
|
586
586
|
from: 'z6s...',
|
|
587
587
|
tokens: [{ address: 'z2t...', value: 1000 }],
|
|
588
588
|
wallet: userWallet,
|
|
589
589
|
});
|
|
590
|
-
console.log('
|
|
590
|
+
console.log('Revoke stake tx hash:', txHash);
|
|
591
591
|
```
|
|
592
592
|
|
|
593
593
|
### claimStake
|
|
594
594
|
|
|
595
|
-
|
|
595
|
+
从已成功撤销并度过解绑期的质押中认领项目。
|
|
596
596
|
|
|
597
597
|
**参数**
|
|
598
598
|
|
|
599
599
|
<x-field-group>
|
|
600
|
-
<x-field data-name="from" data-type="string" data-required="true" data-desc="
|
|
600
|
+
<x-field data-name="from" data-type="string" data-required="true" data-desc="要从中认领的质押地址。"></x-field>
|
|
601
601
|
<x-field data-name="evidence" data-type="string" data-required="true" data-desc="`revokeStake` 交易的交易哈希。"></x-field>
|
|
602
602
|
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="质押所有者的钱包。"></x-field>
|
|
603
603
|
</x-field-group>
|
|
604
604
|
|
|
605
|
-
|
|
605
|
+
**返回值**
|
|
606
606
|
|
|
607
607
|
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
|
|
608
608
|
|
|
609
609
|
**示例**
|
|
610
610
|
|
|
611
|
-
```javascript
|
|
611
|
+
```javascript Send a ClaimStakeTx icon=logos:javascript
|
|
612
612
|
const revokeTxHash = '0x123...abc';
|
|
613
613
|
const txHash = await client.claimStake({
|
|
614
614
|
from: 'z6s...',
|
|
615
615
|
evidence: revokeTxHash,
|
|
616
616
|
wallet: userWallet,
|
|
617
617
|
});
|
|
618
|
-
console.log('
|
|
618
|
+
console.log('Claim stake tx hash:', txHash);
|
|
619
619
|
```
|
|
620
620
|
|
|
621
621
|
### slashStake
|
|
622
622
|
|
|
623
|
-
|
|
623
|
+
允许指定的削减者惩罚质押,通常是针对不当行为。被削减的资产将被转移到指定的金库地址。
|
|
624
624
|
|
|
625
625
|
**参数**
|
|
626
626
|
|
|
627
627
|
<x-field-group>
|
|
628
|
-
<x-field data-name="from" data-type="string" data-required="true" data-desc="
|
|
629
|
-
<x-field data-name="reason" data-type="string" data-required="true" data-desc="
|
|
630
|
-
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="
|
|
631
|
-
<x-field data-name="assets" data-type="string[]" data-required="false" data-desc="
|
|
632
|
-
<x-field data-name="tokens" data-type="object[]" data-required="false" data-desc="
|
|
628
|
+
<x-field data-name="from" data-type="string" data-required="true" data-desc="要削减的质押地址。"></x-field>
|
|
629
|
+
<x-field data-name="reason" data-type="string" data-required="true" data-desc="解释削减原因的消息。"></x-field>
|
|
630
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="指定削减者的钱包。"></x-field>
|
|
631
|
+
<x-field data-name="assets" data-type="string[]" data-required="false" data-desc="要削减的资产地址数组。"></x-field>
|
|
632
|
+
<x-field data-name="tokens" data-type="object[]" data-required="false" data-desc="要削减的可替代通证对象数组。"></x-field>
|
|
633
633
|
</x-field-group>
|
|
634
634
|
|
|
635
|
-
|
|
635
|
+
**返回值**
|
|
636
636
|
|
|
637
637
|
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
|
|
638
638
|
|
|
639
639
|
**示例**
|
|
640
640
|
|
|
641
|
-
```javascript
|
|
641
|
+
```javascript Send a SlashStakeTx icon=logos:javascript
|
|
642
642
|
const txHash = await client.slashStake({
|
|
643
643
|
from: 'z6s...',
|
|
644
|
-
reason: '
|
|
644
|
+
reason: 'Validator downtime',
|
|
645
645
|
tokens: [{ address: 'z2t...', value: 500 }],
|
|
646
646
|
wallet: slasherWallet,
|
|
647
647
|
});
|
|
648
|
-
console.log('
|
|
648
|
+
console.log('Slash stake tx hash:', txHash);
|
|
649
649
|
```
|