@ocap/client 1.25.3 → 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.
Files changed (92) hide show
  1. package/README.md +76 -80
  2. package/dist/report.html +1 -1
  3. package/docs/_sidebar.md +22 -0
  4. package/docs/api-reference-client-methods.ja.md +229 -0
  5. package/docs/api-reference-client-methods.md +229 -0
  6. package/docs/api-reference-client-methods.zh-TW.md +229 -0
  7. package/docs/api-reference-client-methods.zh.md +229 -0
  8. package/docs/api-reference-data-types.ja.md +482 -0
  9. package/docs/api-reference-data-types.md +482 -0
  10. package/docs/api-reference-data-types.zh-TW.md +482 -0
  11. package/docs/api-reference-data-types.zh.md +482 -0
  12. package/docs/api-reference-low-level-api.ja.md +228 -0
  13. package/docs/api-reference-low-level-api.md +228 -0
  14. package/docs/api-reference-low-level-api.zh-TW.md +228 -0
  15. package/docs/api-reference-low-level-api.zh.md +228 -0
  16. package/docs/api-reference-query-mutation-methods.ja.md +814 -0
  17. package/docs/api-reference-query-mutation-methods.md +814 -0
  18. package/docs/api-reference-query-mutation-methods.zh-TW.md +814 -0
  19. package/docs/api-reference-query-mutation-methods.zh.md +814 -0
  20. package/docs/api-reference-transaction-helpers.ja.md +649 -0
  21. package/docs/api-reference-transaction-helpers.md +649 -0
  22. package/docs/api-reference-transaction-helpers.zh-TW.md +649 -0
  23. package/docs/api-reference-transaction-helpers.zh.md +649 -0
  24. package/docs/api-reference.ja.md +23 -0
  25. package/docs/api-reference.md +23 -0
  26. package/docs/api-reference.zh-TW.md +23 -0
  27. package/docs/api-reference.zh.md +23 -0
  28. package/docs/core-concepts-client-architecture.ja.md +102 -0
  29. package/docs/core-concepts-client-architecture.md +102 -0
  30. package/docs/core-concepts-client-architecture.zh-TW.md +102 -0
  31. package/docs/core-concepts-client-architecture.zh.md +102 -0
  32. package/docs/core-concepts-event-subscriptions.ja.md +123 -0
  33. package/docs/core-concepts-event-subscriptions.md +123 -0
  34. package/docs/core-concepts-event-subscriptions.zh-TW.md +123 -0
  35. package/docs/core-concepts-event-subscriptions.zh.md +123 -0
  36. package/docs/core-concepts-gas-payment.ja.md +111 -0
  37. package/docs/core-concepts-gas-payment.md +111 -0
  38. package/docs/core-concepts-gas-payment.zh-TW.md +111 -0
  39. package/docs/core-concepts-gas-payment.zh.md +111 -0
  40. package/docs/core-concepts-transaction-lifecycle.ja.md +183 -0
  41. package/docs/core-concepts-transaction-lifecycle.md +183 -0
  42. package/docs/core-concepts-transaction-lifecycle.zh-TW.md +183 -0
  43. package/docs/core-concepts-transaction-lifecycle.zh.md +183 -0
  44. package/docs/core-concepts.ja.md +22 -0
  45. package/docs/core-concepts.md +22 -0
  46. package/docs/core-concepts.zh-TW.md +22 -0
  47. package/docs/core-concepts.zh.md +22 -0
  48. package/docs/getting-started-basic-usage.ja.md +87 -0
  49. package/docs/getting-started-basic-usage.md +87 -0
  50. package/docs/getting-started-basic-usage.zh-TW.md +87 -0
  51. package/docs/getting-started-basic-usage.zh.md +87 -0
  52. package/docs/getting-started-installation.ja.md +60 -0
  53. package/docs/getting-started-installation.md +60 -0
  54. package/docs/getting-started-installation.zh-TW.md +60 -0
  55. package/docs/getting-started-installation.zh.md +60 -0
  56. package/docs/getting-started.ja.md +16 -0
  57. package/docs/getting-started.md +16 -0
  58. package/docs/getting-started.zh-TW.md +16 -0
  59. package/docs/getting-started.zh.md +17 -0
  60. package/docs/how-to-guides-delegate-permissions.ja.md +167 -0
  61. package/docs/how-to-guides-delegate-permissions.md +167 -0
  62. package/docs/how-to-guides-delegate-permissions.zh-TW.md +167 -0
  63. package/docs/how-to-guides-delegate-permissions.zh.md +166 -0
  64. package/docs/how-to-guides-manage-accounts.ja.md +73 -0
  65. package/docs/how-to-guides-manage-accounts.md +73 -0
  66. package/docs/how-to-guides-manage-accounts.zh-TW.md +73 -0
  67. package/docs/how-to-guides-manage-accounts.zh.md +73 -0
  68. package/docs/how-to-guides-manage-assets.ja.md +255 -0
  69. package/docs/how-to-guides-manage-assets.md +255 -0
  70. package/docs/how-to-guides-manage-assets.zh-TW.md +255 -0
  71. package/docs/how-to-guides-manage-assets.zh.md +255 -0
  72. package/docs/how-to-guides-manage-tokens.ja.md +179 -0
  73. package/docs/how-to-guides-manage-tokens.md +179 -0
  74. package/docs/how-to-guides-manage-tokens.zh-TW.md +179 -0
  75. package/docs/how-to-guides-manage-tokens.zh.md +179 -0
  76. package/docs/how-to-guides-stake-tokens-and-assets.ja.md +205 -0
  77. package/docs/how-to-guides-stake-tokens-and-assets.md +205 -0
  78. package/docs/how-to-guides-stake-tokens-and-assets.zh-TW.md +205 -0
  79. package/docs/how-to-guides-stake-tokens-and-assets.zh.md +205 -0
  80. package/docs/how-to-guides-transfer-tokens-and-nfts.ja.md +179 -0
  81. package/docs/how-to-guides-transfer-tokens-and-nfts.md +179 -0
  82. package/docs/how-to-guides-transfer-tokens-and-nfts.zh-TW.md +179 -0
  83. package/docs/how-to-guides-transfer-tokens-and-nfts.zh.md +179 -0
  84. package/docs/how-to-guides.ja.md +27 -0
  85. package/docs/how-to-guides.md +27 -0
  86. package/docs/how-to-guides.zh-TW.md +27 -0
  87. package/docs/how-to-guides.zh.md +27 -0
  88. package/docs/overview.ja.md +70 -0
  89. package/docs/overview.md +70 -0
  90. package/docs/overview.zh-TW.md +70 -0
  91. package/docs/overview.zh.md +70 -0
  92. package/package.json +14 -14
@@ -0,0 +1,179 @@
1
+ # トークンを管理する
2
+
3
+ このガイドでは、OCAP Client を使用してファンジブルトークンを管理するための手順を詳しく説明します。トークンの設計図として機能するトークンファクトリーを設定し、それを使用してミント(新しいトークンの作成)およびバーン(既存のトークンの破棄)する方法を学びます。これらの操作は、アプリケーション内で独自の経済システムを構築・管理する上で基本となります。
4
+
5
+ トークンをミントした後は、アカウント間で転送できます。そのプロセスの詳細については、[トークンとNFTの転送](./how-to-guides-transfer-tokens-and-nfts.md)ガイドを参照してください。
6
+
7
+ ## トークンファクトリーを作成する
8
+
9
+ トークンファクトリーは、名前、シンボル、供給メカニズムなど、ファンジブルトークンのプロパティとルールを定義するスマートコントラクトです。また、ミントとバーンのプロセスも管理します。新しいトークンを流通させるには、まずファクトリーを作成する必要があります。
10
+
11
+ `createTokenFactory` メソッドは、新しいトークンファクトリーをブロックチェーンにデプロイします。
12
+
13
+ ### パラメータ
14
+ <x-field-group>
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
+ <x-field data-name="decimal" data-type="number" data-required="true" data-desc="トークンがサポートする小数点以下の桁数。"></x-field>
20
+ <x-field data-name="description" data-type="string" data-required="false" data-desc="トークンの簡単な説明。"></x-field>
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="これまでにミントできる最大総供給量。"></x-field>
23
+ </x-field>
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="リザーブ通貨でのトークンの基本価格。"></x-field>
26
+ <x-field data-name="fixedPrice" data-type="number" data-required="false" data-desc="動的なカーブを使用しない場合のトークンの固定価格。"></x-field>
27
+ <x-field data-name="slope" data-type="number" data-required="false" data-desc="ボンディングカーブの傾きで、その急勾配を決定します。"></x-field>
28
+ </x-field>
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
+ </x-field-group>
32
+
33
+ ### 戻り値
34
+
35
+ トランザクションハッシュと新しく作成されたトークンファクトリーのアドレスを含む配列に解決されるプロミスを返します。
36
+
37
+ <x-field-group>
38
+ <x-field data-name="[0]" data-type="string" data-desc="ファクトリー作成のトランザクションハッシュ。"></x-field>
39
+ <x-field data-name="[1]" data-type="string" data-desc="新しいトークンファクトリーのアドレス。"></x-field>
40
+ </x-field-group>
41
+
42
+ ### 例
43
+
44
+ ```javascript Create a Token Factory icon=logos:javascript
45
+ import Client from '@ocap/client';
46
+ import Wallet from '@ocap/wallet';
47
+
48
+ const endpoint = 'https://beta.abtnetwork.io/api';
49
+ const client = new Client(endpoint);
50
+ const wallet = Wallet.fromRandom();
51
+
52
+ // まず、ウォレットに資金があることを確認します。テストトークンはフォーセットから入手できます:
53
+ // https://faucet.abtnetwork.io/
54
+
55
+ async function createFactory() {
56
+ try {
57
+ const [hash, factoryAddress] = await client.createTokenFactory({
58
+ wallet,
59
+ token: {
60
+ name: 'My Game Coin',
61
+ symbol: 'MGC',
62
+ decimal: 18,
63
+ description: 'The official currency for My Awesome Game.',
64
+ maxTotalSupply: 1000000,
65
+ },
66
+ feeRate: 100, // 1%の手数料
67
+ });
68
+
69
+ console.log('トークンファクトリーが正常に作成されました!');
70
+ console.log('トランザクションハッシュ:', hash);
71
+ console.log('ファクトリーアドレス:', factoryAddress);
72
+ return factoryAddress;
73
+ } catch (error) {
74
+ console.error('トークンファクトリーの作成中にエラーが発生しました:', error);
75
+ }
76
+ }
77
+
78
+ createFactory();
79
+ ```
80
+
81
+ ## トークンをミントする
82
+
83
+ ミントとは、新しいトークンを作成して総供給量に追加するプロセスです。これはトークンファクトリーを通じて行われます。ファクトリーがボンディングカーブで設定されている場合、ミントにはリザーブトークンでの支払いが必要になります。
84
+
85
+ `mintToken` メソッドは、ファクトリーから指定された量のトークンをミントするトランザクションを開始します。
86
+
87
+ ### パラメータ
88
+ <x-field-group>
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="ミント元となるトークンファクトリーのアドレス。"></x-field>
91
+ <x-field data-name="amount" data-type="number" data-required="true" data-desc="ミントするトークンの数量。"></x-field>
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="ウォレットが支払う意思のあるリザーブトークンの最大量。これはスリッページ保護メカニズムとして機能します。"></x-field>
94
+ <x-field data-name="data" data-type="object" data-required="false" data-desc="ミントトランザクションに添付するオプションのカスタムデータ。"></x-field>
95
+ </x-field-group>
96
+
97
+ ### 戻り値
98
+
99
+ トランザクションハッシュに解決されるプロミスを返します。
100
+
101
+ <x-field data-name="hash" data-type="string" data-desc="ミント操作のトランザクションハッシュ。"></x-field>
102
+
103
+ ### 例
104
+
105
+ ```javascript Mint Tokens from a Factory icon=logos:javascript
106
+ async function mintNewTokens(factoryAddress) {
107
+ try {
108
+ const hash = await client.mintToken({
109
+ wallet,
110
+ tokenFactory: factoryAddress,
111
+ amount: 5000,
112
+ receiver: wallet.address, // 自身のウォレットにトークンをミントする
113
+ maxReserve: 10, // 支払うリザーブトークンの最大値。ボンディングカーブの価格に基づいて調整してください。
114
+ });
115
+
116
+ console.log('トークンが正常にミントされました!');
117
+ console.log('トランザクションハッシュ:', hash);
118
+ } catch (error) {
119
+ console.error('トークンのミント中にエラーが発生しました:', error);
120
+ }
121
+ }
122
+
123
+ // `factoryAddress` が createFactory の例から利用可能であると仮定
124
+ // const factoryAddress = '...';
125
+ // mintNewTokens(factoryAddress);
126
+ ```
127
+
128
+ ## トークンをバーンする
129
+
130
+ バーンはミントの反対で、トークンを流通から永久に削除します。トークンファクトリーがボンディングカーブを使用している場合、トークンをバーンすると、ユーザーに比例した量のリザーブ通貨が返されます。
131
+
132
+ `burnToken` メソッドがこのプロセスを開始します。
133
+
134
+ ### パラメータ
135
+ <x-field-group>
136
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="バーンされるトークンを保持し、トランザクションに署名するウォレット。"></x-field>
137
+ <x-field data-name="tokenFactory" data-type="string" data-required="true" data-desc="トークンファクトリーのアドレス。"></x-field>
138
+ <x-field data-name="amount" data-type="number" data-required="true" data-desc="バーンするトークンの数量。"></x-field>
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="ウォレットが受け取ると期待するリザーブトークンの最小量。これは価格の滑りから保護します。"></x-field>
141
+ <x-field data-name="data" data-type="object" data-required="false" data-desc="バーントランザクションに添付するオプションのカスタムデータ。"></x-field>
142
+ </x-field-group>
143
+
144
+ ### 戻り値
145
+
146
+ トランザクションハッシュに解決されるプロミスを返します。
147
+
148
+ <x-field data-name="hash" data-type="string" data-desc="バーン操作のトランザクションハッシュ。"></x-field>
149
+
150
+ ### 例
151
+
152
+ ```javascript Burn Tokens icon=logos:javascript
153
+ async function burnExistingTokens(factoryAddress) {
154
+ try {
155
+ const hash = await client.burnToken({
156
+ wallet,
157
+ tokenFactory: factoryAddress,
158
+ amount: 1000,
159
+ receiver: wallet.address, // 自身のウォレットにリザーブトークンを受け取る
160
+ minReserve: 1, // 受け取るリザーブトークンの最小値。ボンディングカーブの価格に基づいて調整してください。
161
+ });
162
+
163
+ console.log('トークンが正常にバーンされました!');
164
+ console.log('トランザクションハッシュ:', hash);
165
+ } catch (error) {
166
+ console.error('トークンのバーン中にエラーが発生しました:', error);
167
+ }
168
+ }
169
+
170
+ // `factoryAddress` が createFactory の例から利用可能であると仮定
171
+ // const factoryAddress = '...';
172
+ // burnExistingTokens(factoryAddress);
173
+ ```
174
+
175
+ ## まとめ
176
+
177
+ このガイドでは、ファンジブルトークンを管理するための完全なライフサイクル(ファクトリーの作成、新しいトークンのミント、供給を減らすためのバーン)を学びました。これらの強力なプリミティブにより、OCAP プラットフォーム上で高度な経済システムを構築できます。
178
+
179
+ トークンの作成方法を学んだので、次のステップはトークンの移動方法を学ぶことです。[トークンとNFTの転送](./how-to-guides-transfer-tokens-and-nfts.md)ガイドでその方法を確認してください。
@@ -0,0 +1,179 @@
1
+ # Manage Tokens
2
+
3
+ This guide provides step-by-step instructions for managing fungible tokens using the OCAP Client. You will learn how to set up a token factory, which acts as a blueprint for your token, and then use it to mint (create new tokens) and burn (destroy existing tokens). These operations are fundamental to creating and managing custom economies within your application.
4
+
5
+ Once you have minted tokens, you can transfer them between accounts. For more details on that process, please see the [Transfer Tokens and NFTs](./how-to-guides-transfer-tokens-and-nfts.md) guide.
6
+
7
+ ## Create a Token Factory
8
+
9
+ A token factory is a smart contract that defines the properties and rules of a fungible token, such as its name, symbol, and supply mechanics. It also governs the process of minting and burning. Creating a factory is the first step before any new tokens can be brought into circulation.
10
+
11
+ The `createTokenFactory` method deploys a new token factory to the blockchain.
12
+
13
+ ### Parameters
14
+ <x-field-group>
15
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="The wallet object of the factory owner, used to sign the transaction."></x-field>
16
+ <x-field data-name="token" data-type="object" data-required="true" data-desc="An object defining the properties of the token to be created.">
17
+ <x-field data-name="name" data-type="string" data-required="true" data-desc="The full name of the token (e.g., 'My Awesome Token')."></x-field>
18
+ <x-field data-name="symbol" data-type="string" data-required="true" data-desc="The token's ticker symbol (e.g., 'MAT')."></x-field>
19
+ <x-field data-name="decimal" data-type="number" data-required="true" data-desc="The number of decimal places the token supports."></x-field>
20
+ <x-field data-name="description" data-type="string" data-required="false" data-desc="A brief description of the token."></x-field>
21
+ <x-field data-name="icon" data-type="string" data-required="false" data-desc="URL to an icon for the token."></x-field>
22
+ <x-field data-name="maxTotalSupply" data-type="number" data-required="false" data-desc="The maximum total supply that can ever be minted."></x-field>
23
+ </x-field>
24
+ <x-field data-name="curve" data-type="object" data-required="false" data-desc="Configuration for a bonding curve, which programmatically controls the token's price. If omitted, minting/burning is not tied to a reserve token.">
25
+ <x-field data-name="basePrice" data-type="number" data-required="false" data-desc="The base price for the token in the reserve currency."></x-field>
26
+ <x-field data-name="fixedPrice" data-type="number" data-required="false" data-desc="A fixed price for the token, if not using a dynamic curve."></x-field>
27
+ <x-field data-name="slope" data-type="number" data-required="false" data-desc="The slope of the bonding curve, determining its steepness."></x-field>
28
+ </x-field>
29
+ <x-field data-name="feeRate" data-type="number" data-default="0" data-required="false" data-desc="The fee rate (in basis points) for minting and burning operations."></x-field>
30
+ <x-field data-name="data" data-type="object" data-required="false" data-desc="Optional custom data to attach to the token factory."></x-field>
31
+ </x-field-group>
32
+
33
+ ### Returns
34
+
35
+ Returns a promise that resolves to an array containing the transaction hash and the address of the newly created token factory.
36
+
37
+ <x-field-group>
38
+ <x-field data-name="[0]" data-type="string" data-desc="The transaction hash for the factory creation."></x-field>
39
+ <x-field data-name="[1]" data-type="string" data-desc="The address of the new token factory."></x-field>
40
+ </x-field-group>
41
+
42
+ ### Example
43
+
44
+ ```javascript Create a Token Factory icon=logos:javascript
45
+ import Client from '@ocap/client';
46
+ import Wallet from '@ocap/wallet';
47
+
48
+ const endpoint = 'https://beta.abtnetwork.io/api';
49
+ const client = new Client(endpoint);
50
+ const wallet = Wallet.fromRandom();
51
+
52
+ // First, ensure the wallet has funds. You can get test tokens from a faucet:
53
+ // https://faucet.abtnetwork.io/
54
+
55
+ async function createFactory() {
56
+ try {
57
+ const [hash, factoryAddress] = await client.createTokenFactory({
58
+ wallet,
59
+ token: {
60
+ name: 'My Game Coin',
61
+ symbol: 'MGC',
62
+ decimal: 18,
63
+ description: 'The official currency for My Awesome Game.',
64
+ maxTotalSupply: 1000000,
65
+ },
66
+ feeRate: 100, // 1% fee
67
+ });
68
+
69
+ console.log('Token factory created successfully!');
70
+ console.log('Transaction Hash:', hash);
71
+ console.log('Factory Address:', factoryAddress);
72
+ return factoryAddress;
73
+ } catch (error) {
74
+ console.error('Error creating token factory:', error);
75
+ }
76
+ }
77
+
78
+ createFactory();
79
+ ```
80
+
81
+ ## Mint Tokens
82
+
83
+ Minting is the process of creating new tokens and adding them to the total supply. This is done through a token factory. If the factory was configured with a bonding curve, minting will require a payment in the reserve token.
84
+
85
+ The `mintToken` method initiates a transaction to mint a specified amount of tokens from a factory.
86
+
87
+ ### Parameters
88
+ <x-field-group>
89
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="The wallet funding the mint operation and signing the transaction."></x-field>
90
+ <x-field data-name="tokenFactory" data-type="string" data-required="true" data-desc="The address of the token factory to mint from."></x-field>
91
+ <x-field data-name="amount" data-type="number" data-required="true" data-desc="The quantity of tokens to mint."></x-field>
92
+ <x-field data-name="receiver" data-type="string" data-required="true" data-desc="The address that will receive the newly minted tokens."></x-field>
93
+ <x-field data-name="maxReserve" data-type="number" data-required="true" data-desc="The maximum amount of the reserve token the wallet is willing to spend. This acts as a slippage protection mechanism."></x-field>
94
+ <x-field data-name="data" data-type="object" data-required="false" data-desc="Optional custom data to attach to the mint transaction."></x-field>
95
+ </x-field-group>
96
+
97
+ ### Returns
98
+
99
+ Returns a promise that resolves to the transaction hash.
100
+
101
+ <x-field data-name="hash" data-type="string" data-desc="The transaction hash for the mint operation."></x-field>
102
+
103
+ ### Example
104
+
105
+ ```javascript Mint Tokens from a Factory icon=logos:javascript
106
+ async function mintNewTokens(factoryAddress) {
107
+ try {
108
+ const hash = await client.mintToken({
109
+ wallet,
110
+ tokenFactory: factoryAddress,
111
+ amount: 5000,
112
+ receiver: wallet.address, // Mint tokens to our own wallet
113
+ maxReserve: 10, // Max reserve token to pay. Adjust based on bonding curve price.
114
+ });
115
+
116
+ console.log('Tokens minted successfully!');
117
+ console.log('Transaction Hash:', hash);
118
+ } catch (error) {
119
+ console.error('Error minting tokens:', error);
120
+ }
121
+ }
122
+
123
+ // Assuming `factoryAddress` is available from the createFactory example
124
+ // const factoryAddress = '...';
125
+ // mintNewTokens(factoryAddress);
126
+ ```
127
+
128
+ ## Burn Tokens
129
+
130
+ Burning is the opposite of minting; it permanently removes tokens from circulation. If the token factory uses a bonding curve, burning tokens will return a proportional amount of the reserve currency to the user.
131
+
132
+ The `burnToken` method initiates this process.
133
+
134
+ ### Parameters
135
+ <x-field-group>
136
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="The wallet that holds the tokens to be burned and will sign the transaction."></x-field>
137
+ <x-field data-name="tokenFactory" data-type="string" data-required="true" data-desc="The address of the token factory."></x-field>
138
+ <x-field data-name="amount" data-type="number" data-required="true" data-desc="The quantity of tokens to burn."></x-field>
139
+ <x-field data-name="receiver" data-type="string" data-required="true" data-desc="The address that will receive the reserve tokens in return."></x-field>
140
+ <x-field data-name="minReserve" data-type="number" data-required="true" data-desc="The minimum amount of the reserve token the wallet expects to receive. This protects against price slippage."></x-field>
141
+ <x-field data-name="data" data-type="object" data-required="false" data-desc="Optional custom data to attach to the burn transaction."></x-field>
142
+ </x-field-group>
143
+
144
+ ### Returns
145
+
146
+ Returns a promise that resolves to the transaction hash.
147
+
148
+ <x-field data-name="hash" data-type="string" data-desc="The transaction hash for the burn operation."></x-field>
149
+
150
+ ### Example
151
+
152
+ ```javascript Burn Tokens icon=logos:javascript
153
+ async function burnExistingTokens(factoryAddress) {
154
+ try {
155
+ const hash = await client.burnToken({
156
+ wallet,
157
+ tokenFactory: factoryAddress,
158
+ amount: 1000,
159
+ receiver: wallet.address, // Receive reserve tokens back to our own wallet
160
+ minReserve: 1, // Min reserve token to receive. Adjust based on bonding curve price.
161
+ });
162
+
163
+ console.log('Tokens burned successfully!');
164
+ console.log('Transaction Hash:', hash);
165
+ } catch (error) {
166
+ console.error('Error burning tokens:', error);
167
+ }
168
+ }
169
+
170
+ // Assuming `factoryAddress` is available from the createFactory example
171
+ // const factoryAddress = '...';
172
+ // burnExistingTokens(factoryAddress);
173
+ ```
174
+
175
+ ## Summary
176
+
177
+ In this guide, you've learned the complete lifecycle for managing fungible tokens: creating a factory, minting new tokens into existence, and burning them to reduce the supply. These powerful primitives allow you to build sophisticated economic systems on the OCAP platform.
178
+
179
+ Now that you know how to create tokens, the next logical step is to learn how to move them around. Head over to the [Transfer Tokens and NFTs](./how-to-guides-transfer-tokens-and-nfts.md) guide to see how it's done.
@@ -0,0 +1,179 @@
1
+ # 管理代幣
2
+
3
+ 本指南提供使用 OCAP Client 管理同質化代幣的逐步說明。您將學習如何設定代幣工廠(作為您代幣的藍圖),然後用它來鑄造(創建新代幣)和銷毀(摧毀現有代幣)。這些操作是在您的應用程式中創建和管理自訂經濟體的基礎。
4
+
5
+ 一旦鑄造了代幣,您就可以在帳戶之間轉移它們。有關該過程的更多詳細資訊,請參閱 [轉移代幣和 NFT](./how-to-guides-transfer-tokens-and-nfts.md) 指南。
6
+
7
+ ## 建立代幣工廠
8
+
9
+ 代幣工廠是一種智能合約,它定義了同質化代幣的屬性和規則,例如其名稱、符號和供應機制。它還管理鑄造和銷毀的過程。建立工廠是任何新代幣進入流通前的第一步。
10
+
11
+ `createTokenFactory` 方法將一個新的代幣工廠部署到區塊鏈上。
12
+
13
+ ### 參數
14
+ <x-field-group>
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
+ <x-field data-name="decimal" data-type="number" data-required="true" data-desc="代幣支援的小數位數。"></x-field>
20
+ <x-field data-name="description" data-type="string" data-required="false" data-desc="代幣的簡要描述。"></x-field>
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="可鑄造的最大總供應量。"></x-field>
23
+ </x-field>
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="代幣以儲備貨幣計價的基礎價格。"></x-field>
26
+ <x-field data-name="fixedPrice" data-type="number" data-required="false" data-desc="代幣的固定價格,如果不使用動態曲線。"></x-field>
27
+ <x-field data-name="slope" data-type="number" data-required="false" data-desc="聯合曲線的斜率,決定其陡峭程度。"></x-field>
28
+ </x-field>
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
+ </x-field-group>
32
+
33
+ ### 返回值
34
+
35
+ 返回一個解析為包含交易雜湊值和新創建代幣工廠地址的陣列的 promise。
36
+
37
+ <x-field-group>
38
+ <x-field data-name="[0]" data-type="string" data-desc="工廠創建的交易雜湊值。"></x-field>
39
+ <x-field data-name="[1]" data-type="string" data-desc="新代幣工廠的地址。"></x-field>
40
+ </x-field-group>
41
+
42
+ ### 範例
43
+
44
+ ```javascript Create a Token Factory icon=logos:javascript
45
+ import Client from '@ocap/client';
46
+ import Wallet from '@ocap/wallet';
47
+
48
+ const endpoint = 'https://beta.abtnetwork.io/api';
49
+ const client = new Client(endpoint);
50
+ const wallet = Wallet.fromRandom();
51
+
52
+ // 首先,確保錢包有資金。您可以從水龍頭獲取測試代幣:
53
+ // https://faucet.abtnetwork.io/
54
+
55
+ async function createFactory() {
56
+ try {
57
+ const [hash, factoryAddress] = await client.createTokenFactory({
58
+ wallet,
59
+ token: {
60
+ name: 'My Game Coin',
61
+ symbol: 'MGC',
62
+ decimal: 18,
63
+ description: 'The official currency for My Awesome Game.',
64
+ maxTotalSupply: 1000000,
65
+ },
66
+ feeRate: 100, // 1% 手續費
67
+ });
68
+
69
+ console.log('代幣工廠建立成功!');
70
+ console.log('交易雜湊值:', hash);
71
+ console.log('工廠地址:', factoryAddress);
72
+ return factoryAddress;
73
+ } catch (error) {
74
+ console.error('建立代幣工廠時出錯:', error);
75
+ }
76
+ }
77
+
78
+ createFactory();
79
+ ```
80
+
81
+ ## 鑄造代幣
82
+
83
+ 鑄造是創建新代幣並將其加入總供應量的過程。這是透過代幣工廠完成的。如果工廠配置了聯合曲線,鑄造將需要支付儲備代幣。
84
+
85
+ `mintToken` 方法會啟動一個交易,從工廠鑄造指定數量的代幣。
86
+
87
+ ### 參數
88
+ <x-field-group>
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="要從中鑄造代幣的代幣工廠地址。"></x-field>
91
+ <x-field data-name="amount" data-type="number" data-required="true" data-desc="要鑄造的代幣數量。"></x-field>
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="錢包願意花費的儲備代幣最大數量。這可作為一種滑價保護機制。"></x-field>
94
+ <x-field data-name="data" data-type="object" data-required="false" data-desc="可選的自訂資料,附加到鑄造交易中。"></x-field>
95
+ </x-field-group>
96
+
97
+ ### 返回值
98
+
99
+ 返回一個解析為交易雜湊值的 promise。
100
+
101
+ <x-field data-name="hash" data-type="string" data-desc="鑄造操作的交易雜湊值。"></x-field>
102
+
103
+ ### 範例
104
+
105
+ ```javascript Mint Tokens from a Factory icon=logos:javascript
106
+ async function mintNewTokens(factoryAddress) {
107
+ try {
108
+ const hash = await client.mintToken({
109
+ wallet,
110
+ tokenFactory: factoryAddress,
111
+ amount: 5000,
112
+ receiver: wallet.address, // 將代幣鑄造到我們自己的錢包
113
+ maxReserve: 10, // 要支付的最大儲備代幣。根據聯合曲線價格進行調整。
114
+ });
115
+
116
+ console.log('代幣鑄造成功!');
117
+ console.log('交易雜湊值:', hash);
118
+ } catch (error) {
119
+ console.error('鑄造代幣時出錯:', error);
120
+ }
121
+ }
122
+
123
+ // 假設 `factoryAddress` 可從 createFactory 範例中獲得
124
+ // const factoryAddress = '...';
125
+ // mintNewTokens(factoryAddress);
126
+ ```
127
+
128
+ ## 銷毀代幣
129
+
130
+ 銷毀與鑄造相反;它會永久地將代幣從流通中移除。如果代幣工廠使用聯合曲線,銷毀代幣將按比例返還儲備貨幣給用戶。
131
+
132
+ `burnToken` 方法會啟動此過程。
133
+
134
+ ### 參數
135
+ <x-field-group>
136
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="持有要銷毀的代幣並將簽署交易的錢包。"></x-field>
137
+ <x-field data-name="tokenFactory" data-type="string" data-required="true" data-desc="代幣工廠的地址。"></x-field>
138
+ <x-field data-name="amount" data-type="number" data-required="true" data-desc="要銷毀的代幣數量。"></x-field>
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="錢包預期收到的最少儲備代幣數量。這可以防止價格滑動。"></x-field>
141
+ <x-field data-name="data" data-type="object" data-required="false" data-desc="可選的自訂資料,附加到銷毀交易中。"></x-field>
142
+ </x-field-group>
143
+
144
+ ### 返回值
145
+
146
+ 返回一個解析為交易雜湊值的 promise。
147
+
148
+ <x-field data-name="hash" data-type="string" data-desc="銷毀操作的交易雜湊值。"></x-field>
149
+
150
+ ### 範例
151
+
152
+ ```javascript Burn Tokens icon=logos:javascript
153
+ async function burnExistingTokens(factoryAddress) {
154
+ try {
155
+ const hash = await client.burnToken({
156
+ wallet,
157
+ tokenFactory: factoryAddress,
158
+ amount: 1000,
159
+ receiver: wallet.address, // 將儲備代幣接收回我們自己的錢包
160
+ minReserve: 1, // 要接收的最小儲備代幣。根據聯合曲線價格進行調整。
161
+ });
162
+
163
+ console.log('代幣銷毀成功!');
164
+ console.log('交易雜湊值:', hash);
165
+ } catch (error) {
166
+ console.error('銷毀代幣時出錯:', error);
167
+ }
168
+ }
169
+
170
+ // 假設 `factoryAddress` 可從 createFactory 範例中獲得
171
+ // const factoryAddress = '...';
172
+ // burnExistingTokens(factoryAddress);
173
+ ```
174
+
175
+ ## 總結
176
+
177
+ 在本指南中,您學習了管理同質化代幣的完整生命週期:建立工廠、鑄造新代幣使其存在,以及銷毀它們以減少供應。這些強大的基礎功能讓您可以在 OCAP 平台上建構複雜的經濟系統。
178
+
179
+ 既然您知道了如何創建代幣,接下來合乎邏輯的一步就是學習如何轉移它們。請前往 [轉移代幣和 NFT](./how-to-guides-transfer-tokens-and-nfts.md) 指南查看如何操作。