@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,47 +1,47 @@
|
|
|
1
1
|
# 管理代幣
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
本指南提供了使用 OCAP 用戶端管理同質化代幣的逐步說明。您將學習如何設定一個代幣工廠,它作為您代幣的藍圖,然後用它來鑄造(創建新代幣)和銷毀(摧毀現有代幣)。這些操作是在您的應用程式中創建和管理自訂經濟體系的基礎。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
一旦您鑄造了代幣,就可以在帳戶之間轉移它們。有關該過程的更多詳細資訊,請參閱 [轉移代幣與 NFT](./how-to-guides-transfer-tokens-and-nfts.md) 指南。
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## 創建代幣工廠
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
代幣工廠是一個智慧合約,它定義了同質化代幣的屬性和規則,例如其名稱、符號和供應機制。它也管理著鑄造和銷毀的過程。在任何新代幣進入流通之前,創建工廠是第一步。
|
|
10
10
|
|
|
11
|
-
`createTokenFactory`
|
|
11
|
+
`createTokenFactory` 方法會將一個新的代幣工廠部署到區塊鏈上。
|
|
12
12
|
|
|
13
13
|
### 參數
|
|
14
14
|
<x-field-group>
|
|
15
|
-
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="
|
|
16
|
-
<x-field data-name="token" data-type="object" data-required="true" data-desc="
|
|
17
|
-
<x-field data-name="name" data-type="string" data-required="true" data-desc="
|
|
18
|
-
<x-field data-name="symbol" data-type="string" data-required="true" data-desc="
|
|
15
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="工廠擁有者的錢包物件,用於簽署交易。"></x-field>
|
|
16
|
+
<x-field data-name="token" data-type="object" data-required="true" data-desc="一個定義待創建代幣屬性的物件。">
|
|
17
|
+
<x-field data-name="name" data-type="string" data-required="true" data-desc="代幣的全名(例如:'My Awesome Token')。"></x-field>
|
|
18
|
+
<x-field data-name="symbol" data-type="string" data-required="true" data-desc="代幣的股票代碼(例如:'MAT')。"></x-field>
|
|
19
19
|
<x-field data-name="decimal" data-type="number" data-required="true" data-desc="代幣支援的小數位數。"></x-field>
|
|
20
20
|
<x-field data-name="description" data-type="string" data-required="false" data-desc="代幣的簡要描述。"></x-field>
|
|
21
21
|
<x-field data-name="icon" data-type="string" data-required="false" data-desc="代幣圖示的 URL。"></x-field>
|
|
22
22
|
<x-field data-name="maxTotalSupply" data-type="number" data-required="false" data-desc="可鑄造的最大總供應量。"></x-field>
|
|
23
23
|
</x-field>
|
|
24
|
-
<x-field data-name="curve" data-type="object" data-required="false" data-desc="
|
|
24
|
+
<x-field data-name="curve" data-type="object" data-required="false" data-desc="聯合曲線的設定,用於以程式化方式控制代幣價格。如果省略,鑄造/銷毀將不與儲備代幣掛鉤。">
|
|
25
25
|
<x-field data-name="basePrice" data-type="number" data-required="false" data-desc="代幣以儲備貨幣計價的基礎價格。"></x-field>
|
|
26
|
-
<x-field data-name="fixedPrice" data-type="number" data-required="false" data-desc="
|
|
26
|
+
<x-field data-name="fixedPrice" data-type="number" data-required="false" data-desc="代幣的固定價格,若不使用動態曲線。"></x-field>
|
|
27
27
|
<x-field data-name="slope" data-type="number" data-required="false" data-desc="聯合曲線的斜率,決定其陡峭程度。"></x-field>
|
|
28
28
|
</x-field>
|
|
29
|
-
<x-field data-name="feeRate" data-type="number" data-default="0" data-required="false" data-desc="
|
|
30
|
-
<x-field data-name="data" data-type="object" data-required="false" data-desc="
|
|
29
|
+
<x-field data-name="feeRate" data-type="number" data-default="0" data-required="false" data-desc="鑄造與銷毀操作的費率(以基點為單位)。"></x-field>
|
|
30
|
+
<x-field data-name="data" data-type="object" data-required="false" data-desc="附加到代幣工廠的選用自訂資料。"></x-field>
|
|
31
31
|
</x-field-group>
|
|
32
32
|
|
|
33
|
-
###
|
|
33
|
+
### 回傳值
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
回傳一個 promise,其會解析為一個包含交易雜湊和新創建代幣工廠地址的陣列。
|
|
36
36
|
|
|
37
37
|
<x-field-group>
|
|
38
|
-
<x-field data-name="[0]" data-type="string" data-desc="
|
|
38
|
+
<x-field data-name="[0]" data-type="string" data-desc="工廠創建的交易雜湊。"></x-field>
|
|
39
39
|
<x-field data-name="[1]" data-type="string" data-desc="新代幣工廠的地址。"></x-field>
|
|
40
40
|
</x-field-group>
|
|
41
41
|
|
|
42
42
|
### 範例
|
|
43
43
|
|
|
44
|
-
```javascript
|
|
44
|
+
```javascript 創建代幣工廠 icon=logos:javascript
|
|
45
45
|
import Client from '@ocap/client';
|
|
46
46
|
import Wallet from '@ocap/wallet';
|
|
47
47
|
|
|
@@ -49,7 +49,7 @@ const endpoint = 'https://beta.abtnetwork.io/api';
|
|
|
49
49
|
const client = new Client(endpoint);
|
|
50
50
|
const wallet = Wallet.fromRandom();
|
|
51
51
|
|
|
52
|
-
//
|
|
52
|
+
// 首先,確保錢包中有資金。您可以從水龍頭獲取測試代幣:
|
|
53
53
|
// https://faucet.abtnetwork.io/
|
|
54
54
|
|
|
55
55
|
async function createFactory() {
|
|
@@ -66,12 +66,12 @@ async function createFactory() {
|
|
|
66
66
|
feeRate: 100, // 1% 手續費
|
|
67
67
|
});
|
|
68
68
|
|
|
69
|
-
console.log('
|
|
70
|
-
console.log('
|
|
71
|
-
console.log('
|
|
69
|
+
console.log('Token factory created successfully!');
|
|
70
|
+
console.log('Transaction Hash:', hash);
|
|
71
|
+
console.log('Factory Address:', factoryAddress);
|
|
72
72
|
return factoryAddress;
|
|
73
73
|
} catch (error) {
|
|
74
|
-
console.error('
|
|
74
|
+
console.error('Error creating token factory:', error);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
|
|
@@ -80,29 +80,29 @@ createFactory();
|
|
|
80
80
|
|
|
81
81
|
## 鑄造代幣
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
鑄造是創建新代幣並將其加入總供應量的過程。這是透過代幣工廠完成的。如果工廠設定了聯合曲線,鑄造將需要以儲備代幣支付。
|
|
84
84
|
|
|
85
85
|
`mintToken` 方法會啟動一個交易,從工廠鑄造指定數量的代幣。
|
|
86
86
|
|
|
87
87
|
### 參數
|
|
88
88
|
<x-field-group>
|
|
89
89
|
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="為鑄造操作提供資金並簽署交易的錢包。"></x-field>
|
|
90
|
-
<x-field data-name="tokenFactory" data-type="string" data-required="true" data-desc="
|
|
90
|
+
<x-field data-name="tokenFactory" data-type="string" data-required="true" data-desc="要從中鑄造的代幣工廠地址。"></x-field>
|
|
91
91
|
<x-field data-name="amount" data-type="number" data-required="true" data-desc="要鑄造的代幣數量。"></x-field>
|
|
92
92
|
<x-field data-name="receiver" data-type="string" data-required="true" data-desc="將接收新鑄造代幣的地址。"></x-field>
|
|
93
93
|
<x-field data-name="maxReserve" data-type="number" data-required="true" data-desc="錢包願意花費的儲備代幣最大數量。這可作為一種滑價保護機制。"></x-field>
|
|
94
|
-
<x-field data-name="data" data-type="object" data-required="false" data-desc="
|
|
94
|
+
<x-field data-name="data" data-type="object" data-required="false" data-desc="附加到鑄造交易的選用自訂資料。"></x-field>
|
|
95
95
|
</x-field-group>
|
|
96
96
|
|
|
97
|
-
###
|
|
97
|
+
### 回傳值
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
回傳一個 promise,其會解析為交易雜湊。
|
|
100
100
|
|
|
101
|
-
<x-field data-name="hash" data-type="string" data-desc="
|
|
101
|
+
<x-field data-name="hash" data-type="string" data-desc="鑄造操作的交易雜湊。"></x-field>
|
|
102
102
|
|
|
103
103
|
### 範例
|
|
104
104
|
|
|
105
|
-
```javascript
|
|
105
|
+
```javascript 從工廠鑄造代幣 icon=logos:javascript
|
|
106
106
|
async function mintNewTokens(factoryAddress) {
|
|
107
107
|
try {
|
|
108
108
|
const hash = await client.mintToken({
|
|
@@ -110,46 +110,46 @@ async function mintNewTokens(factoryAddress) {
|
|
|
110
110
|
tokenFactory: factoryAddress,
|
|
111
111
|
amount: 5000,
|
|
112
112
|
receiver: wallet.address, // 將代幣鑄造到我們自己的錢包
|
|
113
|
-
maxReserve: 10, //
|
|
113
|
+
maxReserve: 10, // 支付的最大儲備代幣。根據聯合曲線價格進行調整。
|
|
114
114
|
});
|
|
115
115
|
|
|
116
|
-
console.log('
|
|
117
|
-
console.log('
|
|
116
|
+
console.log('Tokens minted successfully!');
|
|
117
|
+
console.log('Transaction Hash:', hash);
|
|
118
118
|
} catch (error) {
|
|
119
|
-
console.error('
|
|
119
|
+
console.error('Error minting tokens:', error);
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
// 假設 `factoryAddress` 可從 createFactory
|
|
123
|
+
// 假設 `factoryAddress` 可從 createFactory 範例中取得
|
|
124
124
|
// const factoryAddress = '...';
|
|
125
125
|
// mintNewTokens(factoryAddress);
|
|
126
126
|
```
|
|
127
127
|
|
|
128
128
|
## 銷毀代幣
|
|
129
129
|
|
|
130
|
-
|
|
130
|
+
銷毀與鑄造相反;它會永久地將代幣從流通中移除。如果代幣工廠使用聯合曲線,銷毀代幣將會按比例返還儲備貨幣給使用者。
|
|
131
131
|
|
|
132
132
|
`burnToken` 方法會啟動此過程。
|
|
133
133
|
|
|
134
134
|
### 參數
|
|
135
135
|
<x-field-group>
|
|
136
|
-
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="
|
|
136
|
+
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="持有待銷毀代幣並將簽署交易的錢包。"></x-field>
|
|
137
137
|
<x-field data-name="tokenFactory" data-type="string" data-required="true" data-desc="代幣工廠的地址。"></x-field>
|
|
138
138
|
<x-field data-name="amount" data-type="number" data-required="true" data-desc="要銷毀的代幣數量。"></x-field>
|
|
139
139
|
<x-field data-name="receiver" data-type="string" data-required="true" data-desc="將接收返還的儲備代幣的地址。"></x-field>
|
|
140
|
-
<x-field data-name="minReserve" data-type="number" data-required="true" data-desc="
|
|
141
|
-
<x-field data-name="data" data-type="object" data-required="false" data-desc="
|
|
140
|
+
<x-field data-name="minReserve" data-type="number" data-required="true" data-desc="錢包預期收到的最少儲備代幣數量。這可以防止價格滑價。"></x-field>
|
|
141
|
+
<x-field data-name="data" data-type="object" data-required="false" data-desc="附加到銷毀交易的選用自訂資料。"></x-field>
|
|
142
142
|
</x-field-group>
|
|
143
143
|
|
|
144
|
-
###
|
|
144
|
+
### 回傳值
|
|
145
145
|
|
|
146
|
-
|
|
146
|
+
回傳一個 promise,其會解析為交易雜湊。
|
|
147
147
|
|
|
148
|
-
<x-field data-name="hash" data-type="string" data-desc="
|
|
148
|
+
<x-field data-name="hash" data-type="string" data-desc="銷毀操作的交易雜湊。"></x-field>
|
|
149
149
|
|
|
150
150
|
### 範例
|
|
151
151
|
|
|
152
|
-
```javascript
|
|
152
|
+
```javascript 銷毀代幣 icon=logos:javascript
|
|
153
153
|
async function burnExistingTokens(factoryAddress) {
|
|
154
154
|
try {
|
|
155
155
|
const hash = await client.burnToken({
|
|
@@ -157,23 +157,23 @@ async function burnExistingTokens(factoryAddress) {
|
|
|
157
157
|
tokenFactory: factoryAddress,
|
|
158
158
|
amount: 1000,
|
|
159
159
|
receiver: wallet.address, // 將儲備代幣接收回我們自己的錢包
|
|
160
|
-
minReserve: 1, //
|
|
160
|
+
minReserve: 1, // 接收的最小儲備代幣。根據聯合曲線價格進行調整。
|
|
161
161
|
});
|
|
162
162
|
|
|
163
|
-
console.log('
|
|
164
|
-
console.log('
|
|
163
|
+
console.log('Tokens burned successfully!');
|
|
164
|
+
console.log('Transaction Hash:', hash);
|
|
165
165
|
} catch (error) {
|
|
166
|
-
console.error('
|
|
166
|
+
console.error('Error burning tokens:', error);
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
// 假設 `factoryAddress` 可從 createFactory
|
|
170
|
+
// 假設 `factoryAddress` 可從 createFactory 範例中取得
|
|
171
171
|
// const factoryAddress = '...';
|
|
172
172
|
// burnExistingTokens(factoryAddress);
|
|
173
173
|
```
|
|
174
174
|
|
|
175
175
|
## 總結
|
|
176
176
|
|
|
177
|
-
|
|
177
|
+
在本指南中,您學習了管理同質化代幣的完整生命週期:創建工廠、鑄造新代幣,以及銷毀它們以減少供應量。這些強大的基本功能讓您能夠在 OCAP 平台上建立複雜的經濟系統。
|
|
178
178
|
|
|
179
|
-
|
|
179
|
+
既然您知道了如何創建代幣,下一步理所當然就是學習如何轉移它們。請前往 [轉移代幣與 NFT](./how-to-guides-transfer-tokens-and-nfts.md) 指南查看如何操作。
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# 管理通证
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
本指南提供使用 OCAP Client 管理同质化通证的分步说明。您将学习如何设置通证工厂(它作为您通证的蓝图),然后用它来铸造(创建新通证)和销毁(销毁现有通证)。这些操作是在您的应用程序中创建和管理自定义经济体系的基础。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
铸造通证后,您可以在账户之间转移它们。有关该过程的更多详细信息,请参阅[转移通证和 NFT](./how-to-guides-transfer-tokens-and-nfts.md) 指南。
|
|
6
6
|
|
|
7
7
|
## 创建通证工厂
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
通证工厂是一个智能合约,它定义了同质化通证的属性和规则,例如其名称、符号和供应机制。它还管理铸造和销毁的过程。创建工厂是任何新通证进入流通前的第一步。
|
|
10
10
|
|
|
11
11
|
`createTokenFactory` 方法将一个新的通证工厂部署到区块链上。
|
|
12
12
|
|
|
@@ -14,15 +14,15 @@
|
|
|
14
14
|
<x-field-group>
|
|
15
15
|
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="工厂所有者的钱包对象,用于签署交易。"></x-field>
|
|
16
16
|
<x-field data-name="token" data-type="object" data-required="true" data-desc="一个定义待创建通证属性的对象。">
|
|
17
|
-
<x-field data-name="name" data-type="string" data-required="true" data-desc="通证的全名(例如,'
|
|
17
|
+
<x-field data-name="name" data-type="string" data-required="true" data-desc="通证的全名(例如,'My Awesome Token')。"></x-field>
|
|
18
18
|
<x-field data-name="symbol" data-type="string" data-required="true" data-desc="通证的股票代码符号(例如,'MAT')。"></x-field>
|
|
19
19
|
<x-field data-name="decimal" data-type="number" data-required="true" data-desc="通证支持的小数位数。"></x-field>
|
|
20
20
|
<x-field data-name="description" data-type="string" data-required="false" data-desc="通证的简要描述。"></x-field>
|
|
21
21
|
<x-field data-name="icon" data-type="string" data-required="false" data-desc="通证图标的 URL。"></x-field>
|
|
22
|
-
<x-field data-name="maxTotalSupply" data-type="number" data-required="false" data-desc="
|
|
22
|
+
<x-field data-name="maxTotalSupply" data-type="number" data-required="false" data-desc="可铸造的最大总供应量。"></x-field>
|
|
23
23
|
</x-field>
|
|
24
24
|
<x-field data-name="curve" data-type="object" data-required="false" data-desc="联合曲线的配置,它以编程方式控制通证的价格。如果省略,铸造/销毁将不与储备通证挂钩。">
|
|
25
|
-
<x-field data-name="basePrice" data-type="number" data-required="false" data-desc="
|
|
25
|
+
<x-field data-name="basePrice" data-type="number" data-required="false" data-desc="通证以储备货币计价的基础价格。"></x-field>
|
|
26
26
|
<x-field data-name="fixedPrice" data-type="number" data-required="false" data-desc="通证的固定价格,如果不使用动态曲线。"></x-field>
|
|
27
27
|
<x-field data-name="slope" data-type="number" data-required="false" data-desc="联合曲线的斜率,决定其陡峭程度。"></x-field>
|
|
28
28
|
</x-field>
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
|
|
33
33
|
### 返回值
|
|
34
34
|
|
|
35
|
-
返回一个 promise,该 promise
|
|
35
|
+
返回一个 promise,该 promise 会解析为一个数组,其中包含交易哈希和新创建的通证工厂地址。
|
|
36
36
|
|
|
37
37
|
<x-field-group>
|
|
38
38
|
<x-field data-name="[0]" data-type="string" data-desc="工厂创建的交易哈希。"></x-field>
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
|
|
42
42
|
### 示例
|
|
43
43
|
|
|
44
|
-
```javascript
|
|
44
|
+
```javascript 创建通证工厂 icon=logos:javascript
|
|
45
45
|
import Client from '@ocap/client';
|
|
46
46
|
import Wallet from '@ocap/wallet';
|
|
47
47
|
|
|
@@ -49,7 +49,7 @@ const endpoint = 'https://beta.abtnetwork.io/api';
|
|
|
49
49
|
const client = new Client(endpoint);
|
|
50
50
|
const wallet = Wallet.fromRandom();
|
|
51
51
|
|
|
52
|
-
//
|
|
52
|
+
// 首先,确保钱包中有资金。您可以从水龙头获取测试通证:
|
|
53
53
|
// https://faucet.abtnetwork.io/
|
|
54
54
|
|
|
55
55
|
async function createFactory() {
|
|
@@ -63,15 +63,15 @@ async function createFactory() {
|
|
|
63
63
|
description: 'The official currency for My Awesome Game.',
|
|
64
64
|
maxTotalSupply: 1000000,
|
|
65
65
|
},
|
|
66
|
-
feeRate: 100, // 1%
|
|
66
|
+
feeRate: 100, // 1% 手续费
|
|
67
67
|
});
|
|
68
68
|
|
|
69
|
-
console.log('
|
|
70
|
-
console.log('
|
|
71
|
-
console.log('
|
|
69
|
+
console.log('Token factory created successfully!');
|
|
70
|
+
console.log('Transaction Hash:', hash);
|
|
71
|
+
console.log('Factory Address:', factoryAddress);
|
|
72
72
|
return factoryAddress;
|
|
73
73
|
} catch (error) {
|
|
74
|
-
console.error('
|
|
74
|
+
console.error('Error creating token factory:', error);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
|
|
@@ -80,29 +80,29 @@ createFactory();
|
|
|
80
80
|
|
|
81
81
|
## 铸造通证
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
铸造是创建新通证并将其添加到总供应量的过程。这是通过通证工厂完成的。如果工厂配置了联合曲线,铸造将需要使用储备通证进行支付。
|
|
84
84
|
|
|
85
|
-
`mintToken`
|
|
85
|
+
`mintToken` 方法会启动一个交易,从工厂铸造指定数量的通证。
|
|
86
86
|
|
|
87
87
|
### 参数
|
|
88
88
|
<x-field-group>
|
|
89
89
|
<x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="为铸造操作提供资金并签署交易的钱包。"></x-field>
|
|
90
|
-
<x-field data-name="tokenFactory" data-type="string" data-required="true" data-desc="
|
|
90
|
+
<x-field data-name="tokenFactory" data-type="string" data-required="true" data-desc="要从中铸造通证的通证工厂地址。"></x-field>
|
|
91
91
|
<x-field data-name="amount" data-type="number" data-required="true" data-desc="要铸造的通证数量。"></x-field>
|
|
92
92
|
<x-field data-name="receiver" data-type="string" data-required="true" data-desc="将接收新铸造通证的地址。"></x-field>
|
|
93
|
-
<x-field data-name="maxReserve" data-type="number" data-required="true" data-desc="
|
|
93
|
+
<x-field data-name="maxReserve" data-type="number" data-required="true" data-desc="钱包愿意花费的储备通证的最大数量。这可作为一种滑点保护机制。"></x-field>
|
|
94
94
|
<x-field data-name="data" data-type="object" data-required="false" data-desc="附加到铸造交易的可选自定义数据。"></x-field>
|
|
95
95
|
</x-field-group>
|
|
96
96
|
|
|
97
97
|
### 返回值
|
|
98
98
|
|
|
99
|
-
返回一个 promise,该 promise
|
|
99
|
+
返回一个 promise,该 promise 会解析为交易哈希。
|
|
100
100
|
|
|
101
101
|
<x-field data-name="hash" data-type="string" data-desc="铸造操作的交易哈希。"></x-field>
|
|
102
102
|
|
|
103
103
|
### 示例
|
|
104
104
|
|
|
105
|
-
```javascript
|
|
105
|
+
```javascript 从工厂铸造通证 icon=logos:javascript
|
|
106
106
|
async function mintNewTokens(factoryAddress) {
|
|
107
107
|
try {
|
|
108
108
|
const hash = await client.mintToken({
|
|
@@ -113,21 +113,21 @@ async function mintNewTokens(factoryAddress) {
|
|
|
113
113
|
maxReserve: 10, // 支付的最大储备通证。根据联合曲线价格进行调整。
|
|
114
114
|
});
|
|
115
115
|
|
|
116
|
-
console.log('
|
|
117
|
-
console.log('
|
|
116
|
+
console.log('Tokens minted successfully!');
|
|
117
|
+
console.log('Transaction Hash:', hash);
|
|
118
118
|
} catch (error) {
|
|
119
|
-
console.error('
|
|
119
|
+
console.error('Error minting tokens:', error);
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
// 假设 `factoryAddress` 可从 createFactory
|
|
123
|
+
// 假设 `factoryAddress` 可从 createFactory 示例中获取
|
|
124
124
|
// const factoryAddress = '...';
|
|
125
125
|
// mintNewTokens(factoryAddress);
|
|
126
126
|
```
|
|
127
127
|
|
|
128
128
|
## 销毁通证
|
|
129
129
|
|
|
130
|
-
|
|
130
|
+
销毁与铸造相反;它会永久地将通证从流通中移除。如果通证工厂使用联合曲线,销毁通证将按比例向用户返还储备货币。
|
|
131
131
|
|
|
132
132
|
`burnToken` 方法启动此过程。
|
|
133
133
|
|
|
@@ -137,19 +137,19 @@ async function mintNewTokens(factoryAddress) {
|
|
|
137
137
|
<x-field data-name="tokenFactory" data-type="string" data-required="true" data-desc="通证工厂的地址。"></x-field>
|
|
138
138
|
<x-field data-name="amount" data-type="number" data-required="true" data-desc="要销毁的通证数量。"></x-field>
|
|
139
139
|
<x-field data-name="receiver" data-type="string" data-required="true" data-desc="将接收返还的储备通证的地址。"></x-field>
|
|
140
|
-
<x-field data-name="minReserve" data-type="number" data-required="true" data-desc="
|
|
140
|
+
<x-field data-name="minReserve" data-type="number" data-required="true" data-desc="钱包期望收到的储备通证的最低数量。这可以防止价格滑点。"></x-field>
|
|
141
141
|
<x-field data-name="data" data-type="object" data-required="false" data-desc="附加到销毁交易的可选自定义数据。"></x-field>
|
|
142
142
|
</x-field-group>
|
|
143
143
|
|
|
144
144
|
### 返回值
|
|
145
145
|
|
|
146
|
-
返回一个 promise,该 promise
|
|
146
|
+
返回一个 promise,该 promise 会解析为交易哈希。
|
|
147
147
|
|
|
148
148
|
<x-field data-name="hash" data-type="string" data-desc="销毁操作的交易哈希。"></x-field>
|
|
149
149
|
|
|
150
150
|
### 示例
|
|
151
151
|
|
|
152
|
-
```javascript
|
|
152
|
+
```javascript 销毁通证 icon=logos:javascript
|
|
153
153
|
async function burnExistingTokens(factoryAddress) {
|
|
154
154
|
try {
|
|
155
155
|
const hash = await client.burnToken({
|
|
@@ -160,20 +160,20 @@ async function burnExistingTokens(factoryAddress) {
|
|
|
160
160
|
minReserve: 1, // 接收的最小储备通证。根据联合曲线价格进行调整。
|
|
161
161
|
});
|
|
162
162
|
|
|
163
|
-
console.log('
|
|
164
|
-
console.log('
|
|
163
|
+
console.log('Tokens burned successfully!');
|
|
164
|
+
console.log('Transaction Hash:', hash);
|
|
165
165
|
} catch (error) {
|
|
166
|
-
console.error('
|
|
166
|
+
console.error('Error burning tokens:', error);
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
// 假设 `factoryAddress` 可从 createFactory
|
|
170
|
+
// 假设 `factoryAddress` 可从 createFactory 示例中获取
|
|
171
171
|
// const factoryAddress = '...';
|
|
172
172
|
// burnExistingTokens(factoryAddress);
|
|
173
173
|
```
|
|
174
174
|
|
|
175
175
|
## 总结
|
|
176
176
|
|
|
177
|
-
|
|
177
|
+
在本指南中,您学习了管理同质化通证的完整生命周期:创建工厂、铸造新通证以及销毁它们以减少供应。这些强大的原语使您能够在 OCAP 平台上构建复杂的经济系统。
|
|
178
178
|
|
|
179
|
-
|
|
179
|
+
既然您知道了如何创建通证,下一个合乎逻辑的步骤就是学习如何转移它们。请前往[转移通证和 NFT](./how-to-guides-transfer-tokens-and-nfts.md) 指南,了解具体操作方法。
|