@ocap/client 1.25.5 → 1.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +77 -79
  2. package/dist/base.js +2 -2
  3. package/dist/base.js.map +1 -1
  4. package/dist/bundle.js +1 -1
  5. package/dist/extension.js +4 -4
  6. package/dist/extension.js.map +1 -1
  7. package/dist/report.html +2 -2
  8. package/docs/api-reference-client-methods.ja.md +38 -38
  9. package/docs/api-reference-client-methods.zh-TW.md +47 -47
  10. package/docs/api-reference-client-methods.zh.md +34 -34
  11. package/docs/api-reference-data-types.ja.md +20 -20
  12. package/docs/api-reference-data-types.zh-TW.md +17 -17
  13. package/docs/api-reference-data-types.zh.md +24 -24
  14. package/docs/api-reference-low-level-api.ja.md +49 -49
  15. package/docs/api-reference-low-level-api.zh-TW.md +48 -48
  16. package/docs/api-reference-low-level-api.zh.md +43 -43
  17. package/docs/api-reference-query-mutation-methods.ja.md +85 -85
  18. package/docs/api-reference-query-mutation-methods.zh-TW.md +140 -140
  19. package/docs/api-reference-query-mutation-methods.zh.md +141 -141
  20. package/docs/api-reference-transaction-helpers.ja.md +120 -120
  21. package/docs/api-reference-transaction-helpers.zh-TW.md +119 -119
  22. package/docs/api-reference-transaction-helpers.zh.md +153 -153
  23. package/docs/api-reference.ja.md +6 -6
  24. package/docs/api-reference.zh-TW.md +5 -5
  25. package/docs/api-reference.zh.md +8 -8
  26. package/docs/core-concepts-client-architecture.ja.md +26 -26
  27. package/docs/core-concepts-client-architecture.zh-TW.md +34 -34
  28. package/docs/core-concepts-client-architecture.zh.md +26 -26
  29. package/docs/core-concepts-event-subscriptions.ja.md +29 -29
  30. package/docs/core-concepts-event-subscriptions.zh-TW.md +23 -23
  31. package/docs/core-concepts-event-subscriptions.zh.md +29 -29
  32. package/docs/core-concepts-gas-payment.ja.md +27 -27
  33. package/docs/core-concepts-gas-payment.zh-TW.md +28 -28
  34. package/docs/core-concepts-gas-payment.zh.md +32 -32
  35. package/docs/core-concepts-transaction-lifecycle.ja.md +40 -40
  36. package/docs/core-concepts-transaction-lifecycle.zh-TW.md +43 -43
  37. package/docs/core-concepts-transaction-lifecycle.zh.md +49 -49
  38. package/docs/core-concepts.ja.md +7 -7
  39. package/docs/core-concepts.zh-TW.md +6 -6
  40. package/docs/core-concepts.zh.md +7 -7
  41. package/docs/getting-started-basic-usage.ja.md +24 -24
  42. package/docs/getting-started-basic-usage.zh-TW.md +28 -28
  43. package/docs/getting-started-basic-usage.zh.md +24 -24
  44. package/docs/getting-started-installation.ja.md +13 -13
  45. package/docs/getting-started-installation.zh-TW.md +9 -9
  46. package/docs/getting-started-installation.zh.md +15 -15
  47. package/docs/getting-started.ja.md +5 -5
  48. package/docs/getting-started.zh-TW.md +6 -6
  49. package/docs/getting-started.zh.md +6 -7
  50. package/docs/how-to-guides-delegate-permissions.ja.md +21 -21
  51. package/docs/how-to-guides-delegate-permissions.zh-TW.md +20 -21
  52. package/docs/how-to-guides-delegate-permissions.zh.md +18 -18
  53. package/docs/how-to-guides-manage-accounts.ja.md +21 -21
  54. package/docs/how-to-guides-manage-accounts.zh-TW.md +23 -23
  55. package/docs/how-to-guides-manage-accounts.zh.md +17 -17
  56. package/docs/how-to-guides-manage-assets.ja.md +137 -60
  57. package/docs/how-to-guides-manage-assets.md +77 -0
  58. package/docs/how-to-guides-manage-assets.zh-TW.md +116 -39
  59. package/docs/how-to-guides-manage-assets.zh.md +142 -65
  60. package/docs/how-to-guides-manage-tokens.ja.md +47 -47
  61. package/docs/how-to-guides-manage-tokens.zh-TW.md +49 -49
  62. package/docs/how-to-guides-manage-tokens.zh.md +34 -34
  63. package/docs/how-to-guides-stake-tokens-and-assets.ja.md +56 -56
  64. package/docs/how-to-guides-stake-tokens-and-assets.zh-TW.md +55 -55
  65. package/docs/how-to-guides-stake-tokens-and-assets.zh.md +51 -51
  66. package/docs/how-to-guides-transfer-tokens-and-nfts.ja.md +45 -45
  67. package/docs/how-to-guides-transfer-tokens-and-nfts.zh-TW.md +46 -46
  68. package/docs/how-to-guides-transfer-tokens-and-nfts.zh.md +37 -37
  69. package/docs/how-to-guides.ja.md +8 -8
  70. package/docs/how-to-guides.zh-TW.md +4 -4
  71. package/docs/how-to-guides.zh.md +6 -6
  72. package/docs/overview.ja.md +15 -15
  73. package/docs/overview.zh-TW.md +14 -14
  74. package/docs/overview.zh.md +12 -12
  75. package/lib/base.js +2 -2
  76. package/lib/base.js.map +1 -1
  77. package/lib/extension.js +4 -4
  78. package/lib/extension.js.map +1 -1
  79. package/package.json +15 -15
@@ -1,22 +1,22 @@
1
1
  # 管理资产 (NFT)
2
2
 
3
- 本指南全面介绍了如何使用 OCAP Client 管理非同质化代币(NFT)(也称为资产)的整个生命周期。你将学习如何从头开始创建新资产、更新其属性、建立用于标准化铸造的资产工厂,以及从该工厂获取新资产。
3
+ 本指南将全面介绍如何使用 OCAP Client 管理非同质化代币 (NFT),也称为资产的整个生命周期。您将学习如何从零开始创建新资产、更新其属性、建立用于标准化铸造的资产工厂,以及如何从该工厂获取新资产。
4
4
 
5
5
  ## 创建新资产
6
6
 
7
- 你可以使用 `createAsset` 方法在区块链上创建一个独特的、独立的资产。每个资产都会根据其初始属性派生出一个唯一的链上地址。
7
+ 您可以使用 `createAsset` 方法在区块链上创建一个独立的唯一资产。每个资产都会被分配一个唯一的链上地址,该地址由其初始属性派生而来。
8
8
 
9
9
  ```javascript icon=logos:javascript
10
- const { wallet } = getWallet(); // 用户钱包对象
10
+ const { wallet } = getWallet(); // 用户的钱包对象
11
11
 
12
12
  async function createNewAsset() {
13
13
  try {
14
14
  const [hash, address] = await client.createAsset({
15
- moniker: '我的独特数字艺术品',
15
+ moniker: 'My Unique Digital Artwork',
16
16
  data: {
17
17
  typeUrl: 'json',
18
18
  value: {
19
- description: '由艺术家 X 创作的独一无二的作品。',
19
+ description: 'A one-of-a-kind piece created by Artist X.',
20
20
  imageUrl: 'https://example.com/path/to/image.png',
21
21
  },
22
22
  },
@@ -25,11 +25,11 @@ async function createNewAsset() {
25
25
  wallet: wallet,
26
26
  });
27
27
 
28
- console.log(`资产创建交易已发送: ${hash}`);
29
- console.log(`新资产地址: ${address}`);
28
+ console.log(`Asset creation transaction sent: ${hash}`);
29
+ console.log(`New asset address: ${address}`);
30
30
  return address;
31
31
  } catch (error) {
32
- console.error('创建资产时出错:', error);
32
+ console.error('Error creating asset:', error);
33
33
  }
34
34
  }
35
35
 
@@ -39,53 +39,53 @@ createNewAsset();
39
39
  ### 参数
40
40
 
41
41
  <x-field-group>
42
- <x-field data-name="moniker" data-type="string" data-required="true" data-desc="资产的名称。" ></x-field>
43
- <x-field data-name="parent" data-type="string" data-default="''" data-required="false" data-desc="父资产的地址(如有)。" ></x-field>
44
- <x-field data-name="data" data-type="object" data-required="true" data-desc="资产的数据负载,必须包含 typeUrl 和 value。" ></x-field>
45
- <x-field data-name="readonly" data-type="boolean" data-default="false" data-required="false" data-desc="如果为 true,资产在创建后无法更新。" ></x-field>
46
- <x-field data-name="transferrable" data-type="boolean" data-default="true" data-required="false" data-desc="如果为 true,资产可以转移到另一个账户。" ></x-field>
47
- <x-field data-name="ttl" data-type="number" data-default="0" data-required="false" data-desc="资产首次消费后的存活时间(秒)。" ></x-field>
48
- <x-field data-name="display" data-type="object" data-required="false" data-desc="包含资产显示信息的对象。" ></x-field>
49
- <x-field data-name="endpoint" data-type="object" data-required="false" data-desc="包含资产端点详细信息的对象。" ></x-field>
50
- <x-field data-name="tags" data-type="string[]" data-default="[]" data-required="false" data-desc="用于对资产进行分类的字符串数组。" ></x-field>
51
- <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="资产初始所有者的钱包对象。" ></x-field>
52
- <x-field data-name="delegator" data-type="string" data-default="''" data-required="false" data-desc="通过委托授权此交易的账户地址。" ></x-field>
42
+ <x-field data-name="moniker" data-type="string" data-required="true" data-desc="资产的名称。"></x-field>
43
+ <x-field data-name="parent" data-type="string" data-default="''" data-required="false" data-desc="父资产的地址(如有)。"></x-field>
44
+ <x-field data-name="data" data-type="object" data-required="true" data-desc="资产的数据负载,必须包含 typeUrl 和 value。"></x-field>
45
+ <x-field data-name="readonly" data-type="boolean" data-default="false" data-required="false" data-desc="如果为 true,资产在创建后无法更新。"></x-field>
46
+ <x-field data-name="transferrable" data-type="boolean" data-default="true" data-required="false" data-desc="如果为 true,资产可以转移到另一个账户。"></x-field>
47
+ <x-field data-name="ttl" data-type="number" data-default="0" data-required="false" data-desc="资产首次消费后的存活时间(以秒为单位)。"></x-field>
48
+ <x-field data-name="display" data-type="object" data-required="false" data-desc="包含资产显示信息的对象。"></x-field>
49
+ <x-field data-name="endpoint" data-type="object" data-required="false" data-desc="包含资产端点详细信息的对象。"></x-field>
50
+ <x-field data-name="tags" data-type="string[]" data-default="[]" data-required="false" data-desc="用于对资产进行分类的字符串数组。"></x-field>
51
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="资产初始所有者的钱包对象。"></x-field>
52
+ <x-field data-name="delegator" data-type="string" data-default="''" data-required="false" data-desc="通过委托授权此交易的账户地址。"></x-field>
53
53
  </x-field-group>
54
54
 
55
55
  ### 返回值
56
56
 
57
57
  一个 `Promise`,它会解析为一个包含交易哈希和新资产链上地址的数组。
58
58
 
59
- <x-field data-name="response" data-type="Promise<[string, string]>" data-desc="[transactionHash, assetAddress]"></x-field>
59
+ <x-field data-name="response" data-type="Promise<[string, string]>" data-desc="[交易哈希, 资产地址]"></x-field>
60
60
 
61
61
  ---
62
62
 
63
63
  ## 更新现有资产
64
64
 
65
- 如果资产创建时设置了 `readonly: false`,你可以使用 `updateAsset` 方法修改其 `moniker` 和 `data` 字段。资产通过其唯一地址进行识别。
65
+ 如果资产创建时设置了 `readonly: false`,您可以使用 `updateAsset` 方法修改其 `moniker` 和 `data` 字段。通过资产的唯一地址来识别该资产。
66
66
 
67
67
  ```javascript icon=logos:javascript
68
- const { wallet } = getWallet(); // 用户钱包对象
68
+ const { wallet } = getWallet(); // 用户的钱包对象
69
69
  const assetAddress = 'z362...'; // 要更新的资产地址
70
70
 
71
71
  async function updateExistingAsset() {
72
72
  try {
73
73
  const hash = await client.updateAsset({
74
74
  address: assetAddress,
75
- moniker: '我更新后的数字艺术品',
75
+ moniker: 'My Updated Digital Artwork',
76
76
  data: {
77
77
  typeUrl: 'json',
78
78
  value: {
79
- description: '我的独特作品的更新描述。',
79
+ description: 'An updated description for my unique piece.',
80
80
  imageUrl: 'https://example.com/path/to/new_image.png',
81
81
  },
82
82
  },
83
83
  wallet: wallet,
84
84
  });
85
85
 
86
- console.log(`资产更新交易已发送: ${hash}`);
86
+ console.log(`Asset update transaction sent: ${hash}`);
87
87
  } catch (error) {
88
- console.error('更新资产时出错:', error);
88
+ console.error('Error updating asset:', error);
89
89
  }
90
90
  }
91
91
 
@@ -95,17 +95,17 @@ updateExistingAsset();
95
95
  ### 参数
96
96
 
97
97
  <x-field-group>
98
- <x-field data-name="address" data-type="string" data-required="true" data-desc="要更新的资产的链上地址。" ></x-field>
99
- <x-field data-name="moniker" data-type="string" data-required="true" data-desc="资产的新名称。" ></x-field>
100
- <x-field data-name="data" data-type="object" data-required="true" data-desc="资产的更新数据负载。" ></x-field>
101
- <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="当前资产所有者的钱包对象。" ></x-field>
98
+ <x-field data-name="address" data-type="string" data-required="true" data-desc="要更新的资产的链上地址。"></x-field>
99
+ <x-field data-name="moniker" data-type="string" data-required="true" data-desc="资产的新名称。"></x-field>
100
+ <x-field data-name="data" data-type="object" data-required="true" data-desc="资产的更新数据负载。"></x-field>
101
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="当前资产所有者的钱包对象。"></x-field>
102
102
  </x-field-group>
103
103
 
104
104
  ### 返回值
105
105
 
106
106
  一个 `Promise`,它会解析为交易哈希。
107
107
 
108
- <x-field data-name="response" data-type="Promise<string>" data-desc="transactionHash"></x-field>
108
+ <x-field data-name="response" data-type="Promise<string>" data-desc="交易哈希"></x-field>
109
109
 
110
110
  ---
111
111
 
@@ -117,8 +117,8 @@ updateExistingAsset();
117
117
  const { wallet } = getWallet(); // 工厂所有者的钱包
118
118
 
119
119
  const factoryDefinition = {
120
- name: '会议门票工厂',
121
- description: '铸造 2024 年技术大会的门票。',
120
+ name: 'Conference Ticket Factory',
121
+ description: 'Mints tickets for the 2024 Tech Conference.',
122
122
  limit: 1000, // 最多可铸造 1000 张门票
123
123
  input: {
124
124
  // 定义铸造资产所需的数据
@@ -129,9 +129,9 @@ const factoryDefinition = {
129
129
  },
130
130
  },
131
131
  output: {
132
- // 定义铸造资产的结构
133
- moniker: '{{attendeeName}}的门票',
134
- description: '2024 年技术大会的{{ticketType}}门票。',
132
+ // 定义铸造出的资产的结构
133
+ moniker: 'Ticket for {{attendeeName}}',
134
+ description: '{{ticketType}} admission for the 2024 Tech Conference.',
135
135
  transferrable: false, // 门票不可转让
136
136
  },
137
137
  hooks: [],
@@ -144,10 +144,10 @@ async function createFactory() {
144
144
  wallet: wallet,
145
145
  });
146
146
 
147
- console.log(`工厂创建交易已发送: ${hash}`);
148
- console.log(`新工厂地址: ${factoryAddress}`);
147
+ console.log(`Factory creation transaction sent: ${hash}`);
148
+ console.log(`New factory address: ${factoryAddress}`);
149
149
  } catch (error) {
150
- console.error('创建资产工厂时出错:', error);
150
+ console.error('Error creating asset factory:', error);
151
151
  }
152
152
  }
153
153
 
@@ -158,16 +158,16 @@ createFactory();
158
158
 
159
159
  <x-field-group>
160
160
  <x-field data-name="factory" data-type="object" data-required="true" data-desc="一个定义工厂属性和铸造逻辑的对象。">
161
- <x-field data-name="name" data-type="string" data-required="true" data-desc="工厂的名称。" ></x-field>
162
- <x-field data-name="description" data-type="string" data-required="true" data-desc="工厂用途的描述。" ></x-field>
163
- <x-field data-name="limit" data-type="number" data-default="0" data-required="false" data-desc="可从此工厂铸造的最大资产数量。0 表示无限制。" ></x-field>
164
- <x-field data-name="trustedIssuers" data-type="string[]" data-required="false" data-desc="有权从此工厂铸造的账户地址列表。" ></x-field>
165
- <x-field data-name="input" data-type="object" data-required="true" data-desc="定义铸造资产所需的输入数据。" ></x-field>
166
- <x-field data-name="output" data-type="object" data-required="true" data-desc="定义将要铸造的资产的结构和属性。" ></x-field>
167
- <x-field data-name="hooks" data-type="object[]" data-required="false" data-desc="在铸造过程中执行的钩子列表。" ></x-field>
168
- <x-field data-name="data" data-type="object" data-required="false" data-desc="与工厂一起存储的额外任意数据。" ></x-field>
161
+ <x-field data-name="name" data-type="string" data-required="true" data-desc="工厂的名称。"></x-field>
162
+ <x-field data-name="description" data-type="string" data-required="true" data-desc="工厂用途的描述。"></x-field>
163
+ <x-field data-name="limit" data-type="number" data-default="0" data-required="false" data-desc="可以从此工厂铸造的最大资产数量。0 表示无限制。"></x-field>
164
+ <x-field data-name="trustedIssuers" data-type="string[]" data-required="false" data-desc="被授权从此工厂铸造资产的账户地址列表。"></x-field>
165
+ <x-field data-name="input" data-type="object" data-required="true" data-desc="定义铸造资产所需的输入数据。"></x-field>
166
+ <x-field data-name="output" data-type="object" data-required="true" data-desc="定义将被铸造的资产的结构和属性。"></x-field>
167
+ <x-field data-name="hooks" data-type="object[]" data-required="false" data-desc="在铸造过程中执行的钩子列表。"></x-field>
168
+ <x-field data-name="data" data-type="object" data-required="false" data-desc="与工厂一起存储的额外任意数据。"></x-field>
169
169
  </x-field>
170
- <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="工厂所有者的钱包对象。" ></x-field>
170
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="工厂所有者的钱包对象。"></x-field>
171
171
  </x-field-group>
172
172
 
173
173
 
@@ -175,24 +175,24 @@ createFactory();
175
175
 
176
176
  一个 `Promise`,它会解析为一个包含交易哈希和新工厂链上地址的数组。
177
177
 
178
- <x-field data-name="response" data-type="Promise<[string, string]>" data-desc="[transactionHash, factoryAddress]"></x-field>
178
+ <x-field data-name="response" data-type="Promise<[string, string]>" data-desc="[交易哈希, 工厂地址]"></x-field>
179
179
 
180
180
  ---
181
181
 
182
182
  ## 从工厂获取资产
183
183
 
184
- 从工厂获取资产是一个两步过程。首先,你准备铸造数据,这可以让你预览将要创建的资产。其次,你将交易提交到区块链以正式获取资产。
184
+ 从工厂获取资产是一个两步过程。首先,您准备铸造数据,这使您可以预览将要创建的资产。其次,您将交易提交到区块链以正式获取该资产。
185
185
 
186
- 这种分离很有用,因为它允许应用程序在用户签署并提交最终交易之前,向用户展示他们将要收到的东西。
186
+ 这种分离很有用,因为它允许应用程序在用户签名并提交最终交易之前,向用户展示他们将要收到的东西。
187
187
 
188
188
  ### 步骤 1:准备资产数据
189
189
 
190
190
  `preMintAsset` 方法接收工厂地址和用户提供的输入,以生成最终的资产数据。此过程在链下发生,不需要交易。
191
191
 
192
192
  ```javascript icon=logos:javascript
193
- const factoryAddress = 'z2...'; // 先前创建的工厂的地址
194
- const { wallet: issuerWallet } = getIssuerWallet(); // 工厂所有者或受信任的发行人
195
- const { wallet: userWallet } = getUserWallet(); // 将拥有新资产的用户
193
+ const factoryAddress = 'z2...'; // 先前创建的工厂地址
194
+ const { wallet: issuerWallet } = getIssuerWallet(); // 工厂所有者或受信任的发行方
195
+ const { wallet: userWallet } = getUserWallet(); // 将拥有新资产的用户的钱包
196
196
 
197
197
  async function prepareAssetForMinting() {
198
198
  try {
@@ -206,17 +206,17 @@ async function prepareAssetForMinting() {
206
206
  wallet: issuerWallet,
207
207
  });
208
208
 
209
- console.log('已准备好用于铸造的资产数据:', mintingData);
209
+ console.log('Prepared asset data for minting:', mintingData);
210
210
  return mintingData;
211
211
  } catch (error) {
212
- console.error('准备资产时出错:', error);
212
+ console.error('Error preparing asset:', error);
213
213
  }
214
214
  }
215
215
  ```
216
216
 
217
217
  ### 步骤 2:发送交易
218
218
 
219
- 一旦铸造数据准备好,用户(未来的资产所有者)签署并发送 `acquireAsset` 交易。来自 `preMintAsset` 的 `itx` 对象被用作有效负载。
219
+ 一旦铸造数据准备好,用户(未来的资产所有者)签名并发送 `acquireAsset` 交易。来自 `preMintAsset` 的 `itx` 对象将用作有效负载。
220
220
 
221
221
  ```javascript icon=logos:javascript
222
222
  async function acquireNewAsset() {
@@ -230,26 +230,103 @@ async function acquireNewAsset() {
230
230
  wallet: userWallet, // 用户的钱包签署交易
231
231
  });
232
232
 
233
- console.log(`资产获取交易已发送: ${hash}`);
234
- console.log(`新资产将在以下地址可用: ${itx.address}`);
233
+ console.log(`Asset acquisition transaction sent: ${hash}`);
234
+ console.log(`New asset will be available at address: ${itx.address}`);
235
235
  } catch (error) {
236
- console.error('获取资产时出错:', error);
236
+ console.error('Error acquiring asset:', error);
237
237
  }
238
238
  }
239
239
 
240
240
  acquireNewAsset();
241
241
  ```
242
242
 
243
- ### `acquireAsset` 的参数
243
+ ### acquireAsset 的参数
244
244
 
245
245
  <x-field-group>
246
- <x-field data-name="itx" data-type="object" data-required="true" data-desc="从 `preMintAsset` 方法返回的内部交易对象。" ></x-field>
247
- <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="正在获取资产的用户的钱包。" ></x-field>
248
- <x-field data-name="delegator" data-type="string" data-default="''" data-required="false" data-desc="通过委托授权此交易的账户地址。" ></x-field>
246
+ <x-field data-name="itx" data-type="object" data-required="true" data-desc="从 `preMintAsset` 方法返回的内部交易对象。"></x-field>
247
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="正在获取资产的用户的钱包。"></x-field>
248
+ <x-field data-name="delegator" data-type="string" data-default="''" data-required="false" data-desc="通过委托授权此交易的账户地址。"></x-field>
249
249
  </x-field-group>
250
250
 
251
251
  ### 返回值
252
252
 
253
253
  一个 `Promise`,它会解析为 `acquireAsset` 操作的交易哈希。
254
254
 
255
- <x-field data-name="response" data-type="Promise<string>" data-desc="transactionHash"></x-field>
255
+ <x-field data-name="response" data-type="Promise<string>" data-desc="交易哈希"></x-field>
256
+
257
+ ---
258
+
259
+ ## 从工厂铸造资产
260
+
261
+ 除了用户主导的 `acquireAsset` 流程外,授权的发行方(例如工厂所有者或受信任的发行方)可以铸造一个资产并将其直接发送到用户的账户。此过程也使用 `preMintAsset` 来准备数据,但最终的交易是 `mintAsset`,由发行方签名。
262
+
263
+ 此流程适用于空投、颁发证书或任何接收用户无需发起最终交易的情况。
264
+
265
+ ### 步骤 1:准备资产数据
266
+
267
+ 此步骤与获取流程相同。发行方调用 `preMintAsset` 在链下生成交易有效负载(`itx`)。
268
+
269
+ ```javascript icon=logos:javascript
270
+ const factoryAddress = 'z2...'; // 工厂地址
271
+ const { wallet: issuerWallet } = getIssuerWallet(); // 工厂所有者或受信任的发行方
272
+ const userAddress = 'z1...'; // 将接收资产的用户的地址
273
+
274
+ async function prepareAssetForMinting() {
275
+ try {
276
+ const mintingData = await client.preMintAsset({
277
+ factory: factoryAddress,
278
+ inputs: {
279
+ attendeeName: 'Jane Smith',
280
+ ticketType: 'General',
281
+ },
282
+ owner: userAddress,
283
+ wallet: issuerWallet, // 此处使用发行方的钱包
284
+ });
285
+
286
+ console.log('Prepared asset data for minting:', mintingData);
287
+ return mintingData;
288
+ } catch (error) {
289
+ console.error('Error preparing asset:', error);
290
+ }
291
+ }
292
+ ```
293
+
294
+ ### 步骤 2:发送铸造交易
295
+
296
+ 发行方使用准备好的 `itx` 对象调用 `mintAsset`。交易由发行方的钱包签名,新创建的资产被分配给上一步中指定的所有者。
297
+
298
+ ```javascript icon=logos:javascript
299
+ async function mintNewAsset() {
300
+ // 首先,从步骤 1 获取铸造数据
301
+ const itx = await prepareAssetForMinting();
302
+ if (!itx) return;
303
+
304
+ try {
305
+ // 发行方的钱包签署交易
306
+ const hash = await client.mintAsset({
307
+ itx: itx,
308
+ wallet: issuerWallet,
309
+ });
310
+
311
+ console.log(`Asset minting transaction sent: ${hash}`);
312
+ console.log(`New asset for ${userAddress} will be available at address: ${itx.address}`);
313
+ } catch (error) {
314
+ console.error('Error minting asset:', error);
315
+ }
316
+ }
317
+
318
+ mintNewAsset();
319
+ ```
320
+
321
+ ### mintAsset 的参数
322
+
323
+ <x-field-group>
324
+ <x-field data-name="itx" data-type="object" data-required="true" data-desc="从 `preMintAsset` 方法返回的内部交易对象。"></x-field>
325
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="正在铸造资产的发行方的钱包。"></x-field>
326
+ </x-field-group>
327
+
328
+ ### 返回值
329
+
330
+ 一个 `Promise`,它会解析为 `mintAsset` 操作的交易哈希。
331
+
332
+ <x-field data-name="response" data-type="Promise<string>" data-desc="交易哈希"></x-field>
@@ -1,30 +1,30 @@
1
- # トークンを管理する
1
+ # トークンの管理
2
2
 
3
- このガイドでは、OCAP Client を使用してファンジブルトークンを管理するための手順を詳しく説明します。トークンの設計図として機能するトークンファクトリーを設定し、それを使用してミント(新しいトークンの作成)およびバーン(既存のトークンの破棄)する方法を学びます。これらの操作は、アプリケーション内で独自の経済システムを構築・管理する上で基本となります。
3
+ このガイドでは、OCAP Client を使用してファンジブルトークンを管理するための手順を詳しく説明します。トークンの設計図として機能するトークンファクトリーを設定し、それを使用してミント(新しいトークンの作成)およびバーン(既存のトークンの破棄)を行う方法を学びます。これらの操作は、アプリケーション内でカスタムエコノミーを作成および管理するための基本です。
4
4
 
5
- トークンをミントした後は、アカウント間で転送できます。そのプロセスの詳細については、[トークンとNFTの転送](./how-to-guides-transfer-tokens-and-nfts.md)ガイドを参照してください。
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
 
13
13
  ### パラメータ
14
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>
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
- <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>
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
23
  </x-field>
24
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
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>
27
+ <x-field data-name="slope" data-type="number" data-required="false" data-desc="ボンディングカーブの傾き。その急勾配を決定します。"></x-field>
28
28
  </x-field>
29
29
  <x-field data-name="feeRate" data-type="number" data-default="0" data-required="false" data-desc="ミントおよびバーン操作の手数料率(ベーシスポイント単位)。"></x-field>
30
30
  <x-field data-name="data" data-type="object" data-required="false" data-desc="トークンファクトリーに添付するオプションのカスタムデータ。"></x-field>
@@ -32,7 +32,7 @@
32
32
 
33
33
  ### 戻り値
34
34
 
35
- トランザクションハッシュと新しく作成されたトークンファクトリーのアドレスを含む配列に解決されるプロミスを返します。
35
+ トランザクションハッシュと新しく作成されたトークンファクトリーのアドレスを含む配列に解決される 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 Create a Token Factory icon=logos: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,32 +63,32 @@ 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% fee
67
67
  });
68
68
 
69
- console.log('トークンファクトリーが正常に作成されました!');
70
- console.log('トランザクションハッシュ:', hash);
71
- console.log('ファクトリーアドレス:', factoryAddress);
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('トークンファクトリーの作成中にエラーが発生しました:', error);
74
+ console.error('Error creating token factory:', error);
75
75
  }
76
76
  }
77
77
 
78
78
  createFactory();
79
79
  ```
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="ミント元となるトークンファクトリーのアドレス。"></x-field>
91
- <x-field data-name="amount" data-type="number" 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
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
94
  <x-field data-name="data" data-type="object" data-required="false" data-desc="ミントトランザクションに添付するオプションのカスタムデータ。"></x-field>
@@ -96,84 +96,84 @@ createFactory();
96
96
 
97
97
  ### 戻り値
98
98
 
99
- トランザクションハッシュに解決されるプロミスを返します。
99
+ トランザクションハッシュに解決される 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 Mint Tokens from a Factory icon=logos:javascript
105
+ ```javascript ファクトリーからトークンをミントする icon=logos:javascript
106
106
  async function mintNewTokens(factoryAddress) {
107
107
  try {
108
108
  const hash = await client.mintToken({
109
109
  wallet,
110
110
  tokenFactory: factoryAddress,
111
111
  amount: 5000,
112
- receiver: wallet.address, // 自身のウォレットにトークンをミントする
113
- maxReserve: 10, // 支払うリザーブトークンの最大値。ボンディングカーブの価格に基づいて調整してください。
112
+ receiver: wallet.address, // 自分のウォレットにトークンをミントします
113
+ maxReserve: 10, // 支払うリザーブトークンの最大額。ボンディングカーブの価格に基づいて調整してください。
114
114
  });
115
115
 
116
- console.log('トークンが正常にミントされました!');
117
- console.log('トランザクションハッシュ:', hash);
116
+ console.log('Tokens minted successfully!');
117
+ console.log('Transaction Hash:', hash);
118
118
  } catch (error) {
119
- console.error('トークンのミント中にエラーが発生しました:', error);
119
+ console.error('Error minting tokens:', error);
120
120
  }
121
121
  }
122
122
 
123
- // `factoryAddress` が createFactory の例から利用可能であると仮定
123
+ // createFactory の例で `factoryAddress` が利用可能であると仮定します
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="バーンされるトークンを保持し、トランザクションに署名するウォレット。"></x-field>
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
- <x-field data-name="amount" data-type="number" data-required="true" data-desc="バーンするトークンの数量。"></x-field>
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="ウォレットが受け取ると期待するリザーブトークンの最小量。これは価格の滑りから保護します。"></x-field>
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
- トランザクションハッシュに解決されるプロミスを返します。
146
+ トランザクションハッシュに解決される 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 Burn Tokens icon=logos:javascript
152
+ ```javascript トークンをバーンする icon=logos:javascript
153
153
  async function burnExistingTokens(factoryAddress) {
154
154
  try {
155
155
  const hash = await client.burnToken({
156
156
  wallet,
157
157
  tokenFactory: factoryAddress,
158
158
  amount: 1000,
159
- receiver: wallet.address, // 自身のウォレットにリザーブトークンを受け取る
160
- minReserve: 1, // 受け取るリザーブトークンの最小値。ボンディングカーブの価格に基づいて調整してください。
159
+ receiver: wallet.address, // 自分のウォレットでリザーブトークンを受け取ります
160
+ minReserve: 1, // 受け取るリザーブトークンの最小額。ボンディングカーブの価格に基づいて調整してください。
161
161
  });
162
162
 
163
- console.log('トークンが正常にバーンされました!');
164
- console.log('トランザクションハッシュ:', hash);
163
+ console.log('Tokens burned successfully!');
164
+ console.log('Transaction Hash:', hash);
165
165
  } catch (error) {
166
- console.error('トークンのバーン中にエラーが発生しました:', error);
166
+ console.error('Error burning tokens:', error);
167
167
  }
168
168
  }
169
169
 
170
- // `factoryAddress` が createFactory の例から利用可能であると仮定
170
+ // createFactory の例で `factoryAddress` が利用可能であると仮定します
171
171
  // const factoryAddress = '...';
172
172
  // burnExistingTokens(factoryAddress);
173
173
  ```
174
174
 
175
175
  ## まとめ
176
176
 
177
- このガイドでは、ファンジブルトークンを管理するための完全なライフサイクル(ファクトリーの作成、新しいトークンのミント、供給を減らすためのバーン)を学びました。これらの強力なプリミティブにより、OCAP プラットフォーム上で高度な経済システムを構築できます。
177
+ このガイドでは、ファンジブルトークンを管理するための完全なライフサイクル、つまりファクトリーの作成、新しいトークンのミント、そして供給量を減らすためのバーンについて学びました。これらの強力なプリミティブにより、OCAP プラットフォーム上で洗練された経済システムを構築できます。
178
178
 
179
- トークンの作成方法を学んだので、次のステップはトークンの移動方法を学ぶことです。[トークンとNFTの転送](./how-to-guides-transfer-tokens-and-nfts.md)ガイドでその方法を確認してください。
179
+ トークンの作成方法を学んだので、次の論理的なステップはそれらを移動させる方法を学ぶことです。[トークンとNFTの転送](./how-to-guides-transfer-tokens-and-nfts.md)ガイドに進み、その方法を確認してください。