@ocap/client 1.25.4 → 1.25.5
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/dist/report.html +1 -1
- package/docs/api-reference-client-methods.ja.md +229 -0
- package/docs/api-reference-client-methods.zh-TW.md +229 -0
- package/docs/api-reference-client-methods.zh.md +27 -27
- package/docs/api-reference-data-types.ja.md +482 -0
- package/docs/api-reference-data-types.zh-TW.md +482 -0
- package/docs/api-reference-data-types.zh.md +14 -14
- package/docs/api-reference-low-level-api.ja.md +228 -0
- package/docs/api-reference-low-level-api.zh-TW.md +228 -0
- package/docs/api-reference-low-level-api.zh.md +39 -39
- package/docs/api-reference-query-mutation-methods.ja.md +814 -0
- package/docs/api-reference-query-mutation-methods.zh-TW.md +814 -0
- package/docs/api-reference-query-mutation-methods.zh.md +158 -158
- package/docs/api-reference-transaction-helpers.ja.md +649 -0
- package/docs/api-reference-transaction-helpers.zh-TW.md +649 -0
- package/docs/api-reference-transaction-helpers.zh.md +112 -112
- package/docs/api-reference.ja.md +23 -0
- package/docs/api-reference.zh-TW.md +23 -0
- package/docs/api-reference.zh.md +6 -6
- package/docs/core-concepts-client-architecture.ja.md +102 -0
- package/docs/core-concepts-client-architecture.zh-TW.md +102 -0
- package/docs/core-concepts-client-architecture.zh.md +21 -21
- package/docs/core-concepts-event-subscriptions.ja.md +123 -0
- package/docs/core-concepts-event-subscriptions.zh-TW.md +123 -0
- package/docs/core-concepts-event-subscriptions.zh.md +22 -22
- package/docs/core-concepts-gas-payment.ja.md +111 -0
- package/docs/core-concepts-gas-payment.zh-TW.md +111 -0
- package/docs/core-concepts-gas-payment.zh.md +30 -30
- package/docs/core-concepts-transaction-lifecycle.ja.md +183 -0
- package/docs/core-concepts-transaction-lifecycle.zh-TW.md +183 -0
- package/docs/core-concepts-transaction-lifecycle.zh.md +51 -51
- package/docs/core-concepts.ja.md +22 -0
- package/docs/core-concepts.zh-TW.md +22 -0
- package/docs/core-concepts.zh.md +6 -6
- package/docs/getting-started-basic-usage.ja.md +87 -0
- package/docs/getting-started-basic-usage.zh-TW.md +87 -0
- package/docs/getting-started-basic-usage.zh.md +17 -17
- package/docs/getting-started-installation.ja.md +60 -0
- package/docs/getting-started-installation.zh-TW.md +60 -0
- package/docs/getting-started-installation.zh.md +14 -14
- package/docs/getting-started.ja.md +16 -0
- package/docs/getting-started.zh-TW.md +16 -0
- package/docs/getting-started.zh.md +6 -5
- package/docs/how-to-guides-delegate-permissions.ja.md +167 -0
- package/docs/how-to-guides-delegate-permissions.zh-TW.md +167 -0
- package/docs/how-to-guides-delegate-permissions.zh.md +27 -28
- package/docs/how-to-guides-manage-accounts.ja.md +73 -0
- package/docs/how-to-guides-manage-accounts.zh-TW.md +73 -0
- package/docs/how-to-guides-manage-accounts.zh.md +14 -14
- package/docs/how-to-guides-manage-assets.ja.md +255 -0
- package/docs/how-to-guides-manage-assets.zh-TW.md +255 -0
- package/docs/how-to-guides-manage-assets.zh.md +60 -60
- package/docs/how-to-guides-manage-tokens.ja.md +179 -0
- package/docs/how-to-guides-manage-tokens.zh-TW.md +179 -0
- package/docs/how-to-guides-manage-tokens.zh.md +52 -52
- package/docs/how-to-guides-stake-tokens-and-assets.ja.md +205 -0
- package/docs/how-to-guides-stake-tokens-and-assets.zh-TW.md +205 -0
- package/docs/how-to-guides-stake-tokens-and-assets.zh.md +44 -44
- package/docs/how-to-guides-transfer-tokens-and-nfts.ja.md +179 -0
- package/docs/how-to-guides-transfer-tokens-and-nfts.zh-TW.md +179 -0
- package/docs/how-to-guides-transfer-tokens-and-nfts.zh.md +47 -47
- package/docs/how-to-guides.ja.md +27 -0
- package/docs/how-to-guides.zh-TW.md +27 -0
- package/docs/how-to-guides.zh.md +11 -11
- package/docs/overview.ja.md +70 -0
- package/docs/overview.zh-TW.md +70 -0
- package/docs/overview.zh.md +8 -8
- package/package.json +14 -14
|
@@ -0,0 +1,649 @@
|
|
|
1
|
+
# 高階 API
|
|
2
|
+
|
|
3
|
+
交易輔助工具是 OCAP Client 內建的高階函式,它將建立和簽署常見交易的複雜性抽象化。您無需手動建構交易物件,即可使用這些便利的方法來處理諸如建立資產、轉移代幣、質押和執行原子交換等工作流程。這些輔助工具確保交易結構正確,並顯著簡化開發過程。
|
|
4
|
+
|
|
5
|
+
要更深入地了解底層的交易生命週期,請參閱 [核心概念:交易生命週期](./core-concepts-transaction-lifecycle.md)。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 帳戶管理
|
|
10
|
+
|
|
11
|
+
### migrateAccount
|
|
12
|
+
|
|
13
|
+
將帳戶的所有權遷移到新的金鑰對。這對於金鑰輪換或帳戶恢復很有用。
|
|
14
|
+
|
|
15
|
+
**參數**
|
|
16
|
+
|
|
17
|
+
<x-field-group>
|
|
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
|
+
</x-field-group>
|
|
21
|
+
|
|
22
|
+
**返回**
|
|
23
|
+
|
|
24
|
+
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的雜湊值。"></x-field>
|
|
25
|
+
|
|
26
|
+
**範例**
|
|
27
|
+
|
|
28
|
+
```javascript Send an AccountMigrateTx icon=logos:javascript
|
|
29
|
+
const txHash = await client.migrateAccount({
|
|
30
|
+
from: oldWallet,
|
|
31
|
+
to: newWallet,
|
|
32
|
+
});
|
|
33
|
+
console.log('Migration transaction hash:', txHash);
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### delegate
|
|
37
|
+
|
|
38
|
+
授權另一個帳戶(受託人)代表委託人發送特定類型的交易。這是一個用於建立安全、沙盒化權限的強大功能。
|
|
39
|
+
|
|
40
|
+
**參數**
|
|
41
|
+
|
|
42
|
+
<x-field-group>
|
|
43
|
+
<x-field data-name="from" data-type="WalletObject" data-required="true" data-desc="委託人的錢包,即授予權限的一方。"></x-field>
|
|
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="被允許的交易的類型 URL(例如:'fg:t:transfer_v2')。"></x-field>
|
|
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="對特定同質化代幣的限制。"></x-field>
|
|
49
|
+
<x-field data-name="assets" data-type="array" data-desc="對特定資產(NFT)的限制。"></x-field>
|
|
50
|
+
</x-field>
|
|
51
|
+
</x-field>
|
|
52
|
+
</x-field-group>
|
|
53
|
+
|
|
54
|
+
**返回**
|
|
55
|
+
|
|
56
|
+
<x-field data-name="result" data-type="Promise<[string, string]>" data-desc="一個包含交易雜湊值和新建立的委託地址的陣列。"></x-field>
|
|
57
|
+
|
|
58
|
+
**範例**
|
|
59
|
+
|
|
60
|
+
```javascript Send a DelegateTx icon=logos:javascript
|
|
61
|
+
const [txHash, delegateAddress] = await client.delegate({
|
|
62
|
+
from: userWallet,
|
|
63
|
+
to: appWallet,
|
|
64
|
+
privileges: [
|
|
65
|
+
{
|
|
66
|
+
typeUrl: 'fg:t:transfer_v2',
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
});
|
|
70
|
+
console.log('Delegation tx hash:', txHash);
|
|
71
|
+
console.log('Delegate address:', delegateAddress);
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### revokeDelegate
|
|
75
|
+
|
|
76
|
+
從受託人處撤銷先前授予的權限。
|
|
77
|
+
|
|
78
|
+
**參數**
|
|
79
|
+
|
|
80
|
+
<x-field-group>
|
|
81
|
+
<x-field data-name="from" data-type="WalletObject" data-required="true" data-desc="委託人的錢包。"></x-field>
|
|
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(例如:'fg:t:transfer_v2')。"></x-field>
|
|
85
|
+
</x-field>
|
|
86
|
+
</x-field-group>
|
|
87
|
+
|
|
88
|
+
**返回**
|
|
89
|
+
|
|
90
|
+
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的雜湊值。"></x-field>
|
|
91
|
+
|
|
92
|
+
**範例**
|
|
93
|
+
|
|
94
|
+
```javascript Send a RevokeDelegateTx icon=logos:javascript
|
|
95
|
+
const txHash = await client.revokeDelegate({
|
|
96
|
+
from: userWallet,
|
|
97
|
+
to: appWallet,
|
|
98
|
+
privileges: ['fg:t:transfer_v2'],
|
|
99
|
+
});
|
|
100
|
+
console.log('Revocation tx hash:', txHash);
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 資產(NFT)管理
|
|
106
|
+
|
|
107
|
+
### createAsset
|
|
108
|
+
|
|
109
|
+
在區塊鏈上建立一個新資產(非同質化代幣)。
|
|
110
|
+
|
|
111
|
+
**參數**
|
|
112
|
+
|
|
113
|
+
<x-field-group>
|
|
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="一個包含資產元資料的 JSON 物件。"></x-field>
|
|
116
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="資產初始所有者的錢包。"></x-field>
|
|
117
|
+
<x-field data-name="parent" data-type="string" data-required="false" data-desc="父資產的地址,用於建立層級連結。"></x-field>
|
|
118
|
+
<x-field data-name="ttl" data-type="number" data-required="false" data-default="0" data-desc="首次消耗後的存活時間(以秒為單位)。"></x-field>
|
|
119
|
+
<x-field data-name="readonly" data-type="boolean" data-required="false" data-default="false" data-desc="如果為 true,資產在建立後無法更新。"></x-field>
|
|
120
|
+
<x-field data-name="transferrable" data-type="boolean" data-required="false" data-default="true" data-desc="如果為 true,資產可以轉移到另一個帳戶。"></x-field>
|
|
121
|
+
<x-field data-name="display" data-type="object" data-required="false" data-desc="用於資產顯示元資料的物件。"></x-field>
|
|
122
|
+
<x-field data-name="endpoint" data-type="object" data-required="false" data-desc="用於資產端點元資料的物件。"></x-field>
|
|
123
|
+
<x-field data-name="tags" data-type="string[]" data-required="false" data-desc="用於分類的標籤陣列。"></x-field>
|
|
124
|
+
<x-field data-name="delegator" data-type="string" data-required="false" data-desc="如果交易由受託人發送,則為委託人的地址。"></x-field>
|
|
125
|
+
</x-field-group>
|
|
126
|
+
|
|
127
|
+
**返回**
|
|
128
|
+
|
|
129
|
+
<x-field data-name="result" data-type="Promise<[string, string]>" data-desc="一個包含交易雜湊值和新建立資產地址的陣列。"></x-field>
|
|
130
|
+
|
|
131
|
+
**範例**
|
|
132
|
+
|
|
133
|
+
```javascript Send a CreateAssetTx icon=logos:javascript
|
|
134
|
+
const [txHash, assetAddress] = await client.createAsset({
|
|
135
|
+
moniker: 'My First NFT',
|
|
136
|
+
data: {
|
|
137
|
+
typeUrl: 'json',
|
|
138
|
+
value: { name: 'Digital Collectible', description: 'A unique item.' },
|
|
139
|
+
},
|
|
140
|
+
wallet: userWallet,
|
|
141
|
+
});
|
|
142
|
+
console.log('Create asset tx hash:', txHash);
|
|
143
|
+
console.log('New asset address:', assetAddress);
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### updateAsset
|
|
147
|
+
|
|
148
|
+
更新現有非唯讀資產的 `moniker` 和 `data` 欄位。
|
|
149
|
+
|
|
150
|
+
**參數**
|
|
151
|
+
|
|
152
|
+
<x-field-group>
|
|
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="資產的新標識名。"></x-field>
|
|
155
|
+
<x-field data-name="data" data-type="object" data-required="true" data-desc="資產的新 JSON 資料物件。"></x-field>
|
|
156
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="資產當前所有者的錢包。"></x-field>
|
|
157
|
+
</x-field-group>
|
|
158
|
+
|
|
159
|
+
**返回**
|
|
160
|
+
|
|
161
|
+
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的雜湊值。"></x-field>
|
|
162
|
+
|
|
163
|
+
**範例**
|
|
164
|
+
|
|
165
|
+
```javascript Send an UpdateAssetTx icon=logos:javascript
|
|
166
|
+
const txHash = await client.updateAsset({
|
|
167
|
+
address: 'z3g...',
|
|
168
|
+
moniker: 'Updated NFT Name',
|
|
169
|
+
data: {
|
|
170
|
+
typeUrl: 'json',
|
|
171
|
+
value: { name: 'Updated Collectible', description: 'Now with more features!' },
|
|
172
|
+
},
|
|
173
|
+
wallet: userWallet,
|
|
174
|
+
});
|
|
175
|
+
console.log('Update asset tx hash:', txHash);
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### createAssetFactory
|
|
179
|
+
|
|
180
|
+
建立一個資產工廠,它作為模板,用於鑄造具有一致結構的多個新資產。
|
|
181
|
+
|
|
182
|
+
**參數**
|
|
183
|
+
|
|
184
|
+
<x-field-group>
|
|
185
|
+
<x-field data-name="factory" data-type="object" data-required="true" data-desc="一個包含工廠配置的物件。">
|
|
186
|
+
<x-field data-name="name" data-type="string" data-required="true" data-desc="工廠名稱。"></x-field>
|
|
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="可鑄造資產的最大數量(0 代表無限制)。"></x-field>
|
|
189
|
+
<x-field data-name="trustedIssuers" data-type="string[]" data-required="false" data-desc="允許從此工廠鑄造的錢包地址列表。"></x-field>
|
|
190
|
+
<x-field data-name="input" data-type="object" data-required="true" data-desc="定義鑄造所需的輸入。"></x-field>
|
|
191
|
+
<x-field data-name="output" data-type="object" data-required="true" data-desc="定義鑄造資產的結構,通常使用模板。"></x-field>
|
|
192
|
+
</x-field>
|
|
193
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="擁有該工廠的錢包。"></x-field>
|
|
194
|
+
</x-field-group>
|
|
195
|
+
|
|
196
|
+
**返回**
|
|
197
|
+
|
|
198
|
+
<x-field data-name="result" data-type="Promise<[string, string]>" data-desc="一個包含交易雜湊值和新建立工廠地址的陣列。"></x-field>
|
|
199
|
+
|
|
200
|
+
**範例**
|
|
201
|
+
|
|
202
|
+
```javascript Send a CreateFactoryTx icon=logos:javascript
|
|
203
|
+
const factoryConfig = {
|
|
204
|
+
name: 'Ticket Factory',
|
|
205
|
+
description: 'Mints event tickets',
|
|
206
|
+
limit: 1000,
|
|
207
|
+
input: { ... },
|
|
208
|
+
output: { ... },
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
const [txHash, factoryAddress] = await client.createAssetFactory({
|
|
212
|
+
factory: factoryConfig,
|
|
213
|
+
wallet: eventCreatorWallet,
|
|
214
|
+
});
|
|
215
|
+
console.log('Create factory tx hash:', txHash);
|
|
216
|
+
console.log('New factory address:', factoryAddress);
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### acquireAsset
|
|
220
|
+
|
|
221
|
+
從現有資產工廠獲取(鑄造)一個新資產。這通常由將擁有該資產的終端使用者發起。
|
|
222
|
+
|
|
223
|
+
**參數**
|
|
224
|
+
|
|
225
|
+
<x-field-group>
|
|
226
|
+
<x-field data-name="itx" data-type="AcquireAssetV2Tx" data-required="true" data-desc="內部交易物件,通常使用像 `preMintAsset` 這樣的輔助工具來準備。"></x-field>
|
|
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="委託人的地址(如適用)。"></x-field>
|
|
229
|
+
</x-field-group>
|
|
230
|
+
|
|
231
|
+
**返回**
|
|
232
|
+
|
|
233
|
+
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的雜湊值。"></x-field>
|
|
234
|
+
|
|
235
|
+
**範例**
|
|
236
|
+
|
|
237
|
+
```javascript Send an AcquireAssetV2Tx icon=logos:javascript
|
|
238
|
+
// First, prepare the minting transaction (e.g., on the server)
|
|
239
|
+
const itx = await client.preMintAsset({
|
|
240
|
+
factory: factoryAddress,
|
|
241
|
+
owner: userWallet.address,
|
|
242
|
+
wallet: issuerWallet,
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
// Then, the user sends the transaction
|
|
246
|
+
const txHash = await client.acquireAsset({ itx, wallet: userWallet });
|
|
247
|
+
console.log('Acquire asset tx hash:', txHash);
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### mintAsset
|
|
251
|
+
|
|
252
|
+
這是與 `acquireAsset` 相對應的發行方操作。它允許受信任的發行方從工廠鑄造資產並將其分配給指定的所有者。
|
|
253
|
+
|
|
254
|
+
**參數**
|
|
255
|
+
|
|
256
|
+
<x-field-group>
|
|
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="受信任發行方的錢包。"></x-field>
|
|
259
|
+
</x-field-group>
|
|
260
|
+
|
|
261
|
+
**返回**
|
|
262
|
+
|
|
263
|
+
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的雜湊值。"></x-field>
|
|
264
|
+
|
|
265
|
+
**範例**
|
|
266
|
+
|
|
267
|
+
```javascript Send a MintAssetTx icon=logos:javascript
|
|
268
|
+
const itx = await client.preMintAsset({
|
|
269
|
+
factory: factoryAddress,
|
|
270
|
+
owner: userWallet.address,
|
|
271
|
+
wallet: issuerWallet,
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
const txHash = await client.mintAsset({ itx, wallet: issuerWallet });
|
|
275
|
+
console.log('Mint asset tx hash:', txHash);
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## 代幣管理
|
|
281
|
+
|
|
282
|
+
### createTokenFactory
|
|
283
|
+
|
|
284
|
+
建立一個用於鑄造和銷毀特定同質化代幣的新工廠,通常基於聯合曲線定價模型。
|
|
285
|
+
|
|
286
|
+
**參數**
|
|
287
|
+
|
|
288
|
+
<x-field-group>
|
|
289
|
+
<x-field data-name="feeRate" data-type="number" data-required="false" data-default="0" data-desc="鑄造和銷毀操作的手續費率。"></x-field>
|
|
290
|
+
<x-field data-name="curve" data-type="object" data-required="true" data-desc="用於定價的聯合曲線配置。"></x-field>
|
|
291
|
+
<x-field data-name="token" data-type="object" data-required="true">
|
|
292
|
+
<x-field-desc markdown>要建立的代幣的配置。這包括諸如 `name`、`symbol`、`decimal` 和 `maxTotalSupply` 等屬性。</x-field-desc>
|
|
293
|
+
</x-field>
|
|
294
|
+
<x-field data-name="data" data-type="object" data-required="false" data-desc="代幣工廠的可選元資料。"></x-field>
|
|
295
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="工廠所有者的錢包。"></x-field>
|
|
296
|
+
</x-field-group>
|
|
297
|
+
|
|
298
|
+
**返回**
|
|
299
|
+
|
|
300
|
+
<x-field data-name="result" data-type="Promise<[string, string]>" data-desc="一個包含交易雜湊值和新建立代幣工廠地址的陣列。"></x-field>
|
|
301
|
+
|
|
302
|
+
**範例**
|
|
303
|
+
|
|
304
|
+
```javascript Send a CreateTokenFactoryTx icon=logos:javascript
|
|
305
|
+
const [txHash, factoryAddress] = await client.createTokenFactory({
|
|
306
|
+
feeRate: 100, // 1%
|
|
307
|
+
curve: { fixedPrice: '1' }, // 1 native token per new token
|
|
308
|
+
token: {
|
|
309
|
+
name: 'My Community Token',
|
|
310
|
+
symbol: 'MCT',
|
|
311
|
+
decimal: 18,
|
|
312
|
+
maxTotalSupply: '1000000',
|
|
313
|
+
},
|
|
314
|
+
wallet: creatorWallet,
|
|
315
|
+
});
|
|
316
|
+
console.log('Create token factory tx hash:', txHash);
|
|
317
|
+
console.log('New token factory address:', factoryAddress);
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### updateTokenFactory
|
|
321
|
+
|
|
322
|
+
更新現有代幣工廠的 `feeRate` 和 `data`。
|
|
323
|
+
|
|
324
|
+
**參數**
|
|
325
|
+
|
|
326
|
+
<x-field-group>
|
|
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
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="工廠所有者的錢包。"></x-field>
|
|
331
|
+
</x-field-group>
|
|
332
|
+
|
|
333
|
+
**返回**
|
|
334
|
+
|
|
335
|
+
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的雜湊值。"></x-field>
|
|
336
|
+
|
|
337
|
+
**範例**
|
|
338
|
+
|
|
339
|
+
```javascript Send an UpdateTokenFactoryTx icon=logos:javascript
|
|
340
|
+
const txHash = await client.updateTokenFactory({
|
|
341
|
+
address: 'z2f...',
|
|
342
|
+
feeRate: 50, // 0.5%
|
|
343
|
+
wallet: ownerWallet,
|
|
344
|
+
});
|
|
345
|
+
console.log('Update token factory tx hash:', txHash);
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### mintToken
|
|
349
|
+
|
|
350
|
+
從代幣工廠鑄造新代幣,以換取儲備代幣(通常是原生鏈代幣)。成本由工廠的聯合曲線決定。
|
|
351
|
+
|
|
352
|
+
**參數**
|
|
353
|
+
|
|
354
|
+
<x-field-group>
|
|
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
|
+
<x-field data-name="data" data-type="object" data-required="false" data-desc="交易的可選元資料。"></x-field>
|
|
360
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="發起鑄造的錢包。"></x-field>
|
|
361
|
+
</x-field-group>
|
|
362
|
+
|
|
363
|
+
**返回**
|
|
364
|
+
|
|
365
|
+
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的雜湊值。"></x-field>
|
|
366
|
+
|
|
367
|
+
**範例**
|
|
368
|
+
|
|
369
|
+
```javascript Send a MintTokenTx icon=logos:javascript
|
|
370
|
+
const txHash = await client.mintToken({
|
|
371
|
+
tokenFactory: 'z2f...',
|
|
372
|
+
amount: 100,
|
|
373
|
+
receiver: userWallet.address,
|
|
374
|
+
maxReserve: 105, // Willing to pay up to 105 native tokens
|
|
375
|
+
wallet: userWallet,
|
|
376
|
+
});
|
|
377
|
+
console.log('Mint token tx hash:', txHash);
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
### burnToken
|
|
381
|
+
|
|
382
|
+
在工廠銷毀現有代幣,以換取底層儲備代幣。收到的儲備代幣數量由工廠的聯合曲線決定。
|
|
383
|
+
|
|
384
|
+
**參數**
|
|
385
|
+
|
|
386
|
+
<x-field-group>
|
|
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
|
+
<x-field data-name="data" data-type="object" data-required="false" data-desc="交易的可選元資料。"></x-field>
|
|
392
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="發起銷毀的錢包。"></x-field>
|
|
393
|
+
</x-field-group>
|
|
394
|
+
|
|
395
|
+
**返回**
|
|
396
|
+
|
|
397
|
+
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的雜湊值。"></x-field>
|
|
398
|
+
|
|
399
|
+
**範例**
|
|
400
|
+
|
|
401
|
+
```javascript Send a BurnTokenTx icon=logos:javascript
|
|
402
|
+
const txHash = await client.burnToken({
|
|
403
|
+
tokenFactory: 'z2f...',
|
|
404
|
+
amount: 50,
|
|
405
|
+
receiver: userWallet.address,
|
|
406
|
+
minReserve: 48, // Expecting to receive at least 48 native tokens
|
|
407
|
+
wallet: userWallet,
|
|
408
|
+
});
|
|
409
|
+
console.log('Burn token tx hash:', txHash);
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
---
|
|
413
|
+
|
|
414
|
+
## 轉帳與交換
|
|
415
|
+
|
|
416
|
+
### transfer
|
|
417
|
+
|
|
418
|
+
在單一交易中將原生代幣、自訂同質化代幣和/或資產(NFT)轉移到另一個帳戶。
|
|
419
|
+
|
|
420
|
+
**參數**
|
|
421
|
+
|
|
422
|
+
<x-field-group>
|
|
423
|
+
<x-field data-name="to" data-type="string" data-required="true" data-desc="接收方的地址。"></x-field>
|
|
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="要轉移的鏈原生代幣數量。"></x-field>
|
|
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="自訂代幣合約的地址。"></x-field>
|
|
429
|
+
<x-field data-name="value" data-type="number" data-required="true" data-desc="要轉移的自訂代幣數量。"></x-field>
|
|
430
|
+
</x-field>
|
|
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="委託人的地址(如適用)。"></x-field>
|
|
433
|
+
</x-field-group>
|
|
434
|
+
|
|
435
|
+
**返回**
|
|
436
|
+
|
|
437
|
+
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的雜湊值。"></x-field>
|
|
438
|
+
|
|
439
|
+
**範例**
|
|
440
|
+
|
|
441
|
+
```javascript Send a TransferV2Tx icon=logos:javascript
|
|
442
|
+
const txHash = await client.transfer({
|
|
443
|
+
to: 'z1sb...',
|
|
444
|
+
token: 1.5, // 1.5 of the native chain token
|
|
445
|
+
assets: ['z3g...'], // An NFT
|
|
446
|
+
tokens: [{ address: 'z2t...', value: 100 }], // 100 of a custom token
|
|
447
|
+
memo: 'Payment for services',
|
|
448
|
+
wallet: senderWallet,
|
|
449
|
+
});
|
|
450
|
+
console.log('Transfer tx hash:', txHash);
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
### prepareExchange
|
|
454
|
+
|
|
455
|
+
準備原子交換交易中發送方的一半。它會簽署發送方的報價,並返回一個可以傳遞給接收方的交易物件。
|
|
456
|
+
|
|
457
|
+
**參數**
|
|
458
|
+
|
|
459
|
+
<x-field-group>
|
|
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="提出報價的使用者錢包。"></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
|
+
<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="要求回報的自訂同質化代幣陣列。"></x-field>
|
|
468
|
+
<x-field data-name="memo" data-type="string" data-required="false" data-desc="交易的可選備註。"></x-field>
|
|
469
|
+
</x-field-group>
|
|
470
|
+
|
|
471
|
+
**返回**
|
|
472
|
+
|
|
473
|
+
<x-field data-name="transactionObject" data-type="Promise<object>" data-desc="部分簽署的交易物件。"></x-field>
|
|
474
|
+
|
|
475
|
+
### finalizeExchange
|
|
476
|
+
|
|
477
|
+
完成原子交換中接收方的一半。它接收來自 `prepareExchange` 的部分簽署交易,添加接收方的簽名,並返回完全簽署的交易物件。
|
|
478
|
+
|
|
479
|
+
**參數**
|
|
480
|
+
|
|
481
|
+
<x-field-group>
|
|
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="接受報價的使用者錢包。"></x-field>
|
|
484
|
+
<x-field data-name="data" data-type="object" data-required="false" data-desc="多重簽名中的額外資料。"></x-field>
|
|
485
|
+
</x-field-group>
|
|
486
|
+
|
|
487
|
+
**返回**
|
|
488
|
+
|
|
489
|
+
<x-field data-name="transactionObject" data-type="Promise<object>" data-desc="完全簽署的多重簽名交易物件。"></x-field>
|
|
490
|
+
|
|
491
|
+
### exchange
|
|
492
|
+
|
|
493
|
+
將完全簽署的交換交易發送到區塊鏈。在 `finalizeExchange` 完成後,任何一方都可以呼叫此函式。
|
|
494
|
+
|
|
495
|
+
**參數**
|
|
496
|
+
|
|
497
|
+
<x-field-group>
|
|
498
|
+
<x-field data-name="tx" data-type="object" data-required="true" data-desc="從 `finalizeExchange` 返回的交易物件。"></x-field>
|
|
499
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="提交交易的使用者錢包。"></x-field>
|
|
500
|
+
</x-field-group>
|
|
501
|
+
|
|
502
|
+
**返回**
|
|
503
|
+
|
|
504
|
+
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的雜湊值。"></x-field>
|
|
505
|
+
|
|
506
|
+
**範例(完整交換流程)**
|
|
507
|
+
|
|
508
|
+
```javascript Perform an atomic swap icon=logos:javascript
|
|
509
|
+
// 1. Offerer prepares the transaction
|
|
510
|
+
const offerTx = await client.prepareExchange({
|
|
511
|
+
receiver: receiverWallet.address,
|
|
512
|
+
offerAssets: ['z3g...'], // Offer an NFT
|
|
513
|
+
demandToken: 10, // Demand 10 native tokens
|
|
514
|
+
wallet: offererWallet,
|
|
515
|
+
});
|
|
516
|
+
|
|
517
|
+
// 2. Receiver finalizes the transaction
|
|
518
|
+
const finalTx = await client.finalizeExchange({
|
|
519
|
+
tx: offerTx,
|
|
520
|
+
wallet: receiverWallet,
|
|
521
|
+
});
|
|
522
|
+
|
|
523
|
+
// 3. Either party can send the finalized transaction
|
|
524
|
+
const txHash = await client.exchange({ tx: finalTx, wallet: offererWallet });
|
|
525
|
+
console.log('Exchange tx hash:', txHash);
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
---
|
|
529
|
+
|
|
530
|
+
## 質押
|
|
531
|
+
|
|
532
|
+
### stake
|
|
533
|
+
|
|
534
|
+
將代幣和/或資產質押到一個接收方地址。質押會鎖定資源,通常是為了換取獎勵或提供安全性。
|
|
535
|
+
|
|
536
|
+
**參數**
|
|
537
|
+
|
|
538
|
+
<x-field-group>
|
|
539
|
+
<x-field data-name="to" data-type="string" data-required="true" data-desc="質押接收方的地址。"></x-field>
|
|
540
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="質押者的錢包。"></x-field>
|
|
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="要質押的同質化代幣物件陣列。"></x-field>
|
|
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="被允許懲罰此質押的地址列表。"></x-field>
|
|
545
|
+
<x-field data-name="message" data-type="string" data-required="false" data-desc="質押的可選備註。"></x-field>
|
|
546
|
+
</x-field-group>
|
|
547
|
+
|
|
548
|
+
**返回**
|
|
549
|
+
|
|
550
|
+
<x-field data-name="result" data-type="Promise<[string, string]>" data-desc="一個包含交易雜湊值和新建立質押地址的陣列。"></x-field>
|
|
551
|
+
|
|
552
|
+
**範例**
|
|
553
|
+
|
|
554
|
+
```javascript Send a StakeTx icon=logos:javascript
|
|
555
|
+
const [txHash, stakeAddress] = await client.stake({
|
|
556
|
+
to: 'z1v...',
|
|
557
|
+
tokens: [{ address: 'z2t...', value: 5000 }],
|
|
558
|
+
message: 'Staking for validator rewards',
|
|
559
|
+
wallet: userWallet,
|
|
560
|
+
});
|
|
561
|
+
console.log('Stake tx hash:', txHash);
|
|
562
|
+
console.log('New stake address:', stakeAddress);
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
### revokeStake
|
|
566
|
+
|
|
567
|
+
撤銷先前質押的代幣和/或資產,啟動將其歸還給所有者的流程。請注意,在資產可以領取之前,可能會有一個解綁期。
|
|
568
|
+
|
|
569
|
+
**參數**
|
|
570
|
+
|
|
571
|
+
<x-field-group>
|
|
572
|
+
<x-field data-name="from" data-type="string" data-required="true" data-desc="要從中撤銷的質押地址。"></x-field>
|
|
573
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="質押所有者的錢包。"></x-field>
|
|
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="要撤銷的同質化代幣物件陣列。"></x-field>
|
|
576
|
+
</x-field-group>
|
|
577
|
+
|
|
578
|
+
**返回**
|
|
579
|
+
|
|
580
|
+
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的雜湊值。"></x-field>
|
|
581
|
+
|
|
582
|
+
**範例**
|
|
583
|
+
|
|
584
|
+
```javascript Send a RevokeStakeTx icon=logos:javascript
|
|
585
|
+
const txHash = await client.revokeStake({
|
|
586
|
+
from: 'z6s...',
|
|
587
|
+
tokens: [{ address: 'z2t...', value: 1000 }],
|
|
588
|
+
wallet: userWallet,
|
|
589
|
+
});
|
|
590
|
+
console.log('Revoke stake tx hash:', txHash);
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
### claimStake
|
|
594
|
+
|
|
595
|
+
領取已成功撤銷並度過解綁期的質押物品。
|
|
596
|
+
|
|
597
|
+
**參數**
|
|
598
|
+
|
|
599
|
+
<x-field-group>
|
|
600
|
+
<x-field data-name="from" data-type="string" data-required="true" data-desc="要從中領取的質押地址。"></x-field>
|
|
601
|
+
<x-field data-name="evidence" data-type="string" data-required="true" data-desc="`revokeStake` 交易的交易雜湊值。"></x-field>
|
|
602
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="質押所有者的錢包。"></x-field>
|
|
603
|
+
</x-field-group>
|
|
604
|
+
|
|
605
|
+
**返回**
|
|
606
|
+
|
|
607
|
+
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的雜湊值。"></x-field>
|
|
608
|
+
|
|
609
|
+
**範例**
|
|
610
|
+
|
|
611
|
+
```javascript Send a ClaimStakeTx icon=logos:javascript
|
|
612
|
+
const revokeTxHash = '0x123...abc';
|
|
613
|
+
const txHash = await client.claimStake({
|
|
614
|
+
from: 'z6s...',
|
|
615
|
+
evidence: revokeTxHash,
|
|
616
|
+
wallet: userWallet,
|
|
617
|
+
});
|
|
618
|
+
console.log('Claim stake tx hash:', txHash);
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
### slashStake
|
|
622
|
+
|
|
623
|
+
允許指定的懲罰者對質押進行懲罰,通常是因為不當行為。被懲罰的資產將被轉移到指定的金庫地址。
|
|
624
|
+
|
|
625
|
+
**參數**
|
|
626
|
+
|
|
627
|
+
<x-field-group>
|
|
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
|
+
</x-field-group>
|
|
634
|
+
|
|
635
|
+
**返回**
|
|
636
|
+
|
|
637
|
+
<x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的雜湊值。"></x-field>
|
|
638
|
+
|
|
639
|
+
**範例**
|
|
640
|
+
|
|
641
|
+
```javascript Send a SlashStakeTx icon=logos:javascript
|
|
642
|
+
const txHash = await client.slashStake({
|
|
643
|
+
from: 'z6s...',
|
|
644
|
+
reason: 'Validator downtime',
|
|
645
|
+
tokens: [{ address: 'z2t...', value: 500 }],
|
|
646
|
+
wallet: slasherWallet,
|
|
647
|
+
});
|
|
648
|
+
console.log('Slash stake tx hash:', txHash);
|
|
649
|
+
```
|