@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.
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,10 +1,10 @@
1
1
  # 管理資產 (NFT)
2
2
 
3
- 本指南提供了使用 OCAP Client 管理非同質化代幣 (NFT)(也稱為資產)整個生命週期的完整演練。您將學習如何從頭開始創建新資產、更新其屬性、建立資產工廠以進行標準化鑄造,以及從該工廠獲取新資產。
3
+ 本指南將全面介紹如何使用 OCAP Client 管理非同質化代幣 (NFT) 的整個生命週期,NFT 也稱為資產。您將學習如何從頭開始建立新資產、更新其屬性、建立資產工廠以進行標準化鑄造,以及從該工廠獲取新資產。
4
4
 
5
- ## 創建新資產
5
+ ## 建立新資產
6
6
 
7
- 您可以使用 `createAsset` 方法在區塊鏈上創建一個獨一無二的獨立資產。每個資產都會被分配一個根據其初始屬性派生而來的唯一鏈上地址。
7
+ 您可以使用 `createAsset` 方法在區塊鏈上建立一個獨特的獨立資產。每個資產都會被分配一個獨一無二的鏈上地址,該地址由其初始屬性衍生而來。
8
8
 
9
9
  ```javascript icon=logos:javascript
10
10
  const { wallet } = getWallet(); // 使用者的錢包物件
@@ -12,11 +12,11 @@ const { wallet } = getWallet(); // 使用者的錢包物件
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
 
@@ -42,8 +42,8 @@ createNewAsset();
42
42
  <x-field data-name="moniker" data-type="string" data-required="true" data-desc="資產的名稱。"></x-field>
43
43
  <x-field data-name="parent" data-type="string" data-default="''" data-required="false" data-desc="父資產的地址(如果有的話)。"></x-field>
44
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>
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
47
  <x-field data-name="ttl" data-type="number" data-default="0" data-required="false" data-desc="資產首次消費後的存活時間(以秒為單位)。"></x-field>
48
48
  <x-field data-name="display" data-type="object" data-required="false" data-desc="包含資產顯示資訊的物件。"></x-field>
49
49
  <x-field data-name="endpoint" data-type="object" data-required="false" data-desc="包含資產端點詳細資訊的物件。"></x-field>
@@ -62,7 +62,7 @@ createNewAsset();
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
68
  const { wallet } = getWallet(); // 使用者的錢包物件
@@ -72,20 +72,20 @@ 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
 
@@ -97,8 +97,8 @@ updateExistingAsset();
97
97
  <x-field-group>
98
98
  <x-field data-name="address" data-type="string" data-required="true" data-desc="要更新的資產的鏈上地址。"></x-field>
99
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>
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
  ### 返回值
@@ -109,16 +109,16 @@ updateExistingAsset();
109
109
 
110
110
  ---
111
111
 
112
- ## 創建資產工廠
112
+ ## 建立資產工廠
113
113
 
114
- 資產工廠是用於創建多個相似資產的範本。它定義了鑄造新資產的結構、規則和邏輯,這比單獨創建每個資產更有效率。這非常適合用於發行活動門票、證書或收藏品等用例。
114
+ 資產工廠是建立多個相似資產的範本。它定義了鑄造新資產的結構、規則和邏輯,比單獨建立每個資產更有效率。這對於發行活動門票、證書或收藏品等使用場景非常理想。
115
115
 
116
116
  ```javascript icon=logos:javascript
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
  // 定義鑄造資產所需的資料
@@ -130,8 +130,8 @@ const factoryDefinition = {
130
130
  },
131
131
  output: {
132
132
  // 定義鑄造資產的結構
133
- moniker: '{{attendeeName}} 的門票',
134
- description: '2024 年技術大會的 {{ticketType}} 入場券。',
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
 
@@ -160,11 +160,11 @@ createFactory();
160
160
  <x-field data-name="factory" data-type="object" data-required="true" data-desc="一個定義工廠屬性和鑄造邏輯的物件。">
161
161
  <x-field data-name="name" data-type="string" data-required="true" data-desc="工廠的名稱。"></x-field>
162
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>
163
+ <x-field data-name="limit" data-type="number" data-default="0" data-required="false" data-desc="可從此工廠鑄造的資產最大數量。0 表示無限制。"></x-field>
164
164
  <x-field data-name="trustedIssuers" data-type="string[]" data-required="false" data-desc="授權從此工廠鑄造的帳戶地址列表。"></x-field>
165
165
  <x-field data-name="input" data-type="object" data-required="true" data-desc="定義鑄造資產所需的輸入資料。"></x-field>
166
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="在鑄造過程中要執行的一系列掛鉤 (hooks)。"></x-field>
167
+ <x-field data-name="hooks" data-type="object[]" data-required="false" data-desc="在鑄造過程中執行的掛鉤列表。"></x-field>
168
168
  <x-field data-name="data" data-type="object" data-required="false" data-desc="與工廠一起儲存的額外任意資料。"></x-field>
169
169
  </x-field>
170
170
  <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="工廠擁有者的錢包物件。"></x-field>
@@ -181,16 +181,16 @@ createFactory();
181
181
 
182
182
  ## 從工廠獲取資產
183
183
 
184
- 從工廠獲取資產是一個兩步驟的過程。首先,您需要準備鑄造資料,這讓您可以預覽將要創建的資產。其次,您將交易提交到區塊鏈以正式獲取資產。
184
+ 從工廠獲取資產是一個兩步驟的過程。首先,您需要準備鑄造資料,這讓您可以預覽將要建立的資產。其次,您將交易提交到區塊鏈以正式獲取資產。
185
185
 
186
- 這種分離很有用,因為它允許應用程式在使用者簽署並提交最終交易之前,向他們展示即將收到的內容。
186
+ 這種分離很有用,因為它允許應用程式在使用者簽署並提交最終交易之前,向使用者展示他們將要收到的內容。
187
187
 
188
188
  ### 步驟 1:準備資產資料
189
189
 
190
- `preMintAsset` 方法接收工廠地址和使用者提供的輸入,以生成最終的資產資料。此過程在鏈下進行,不需要交易。
190
+ `preMintAsset` 方法會接收工廠地址和使用者提供的輸入,以產生最終的資產資料。此過程在鏈下發生,不需要交易。
191
191
 
192
192
  ```javascript icon=logos:javascript
193
- const factoryAddress = 'z2...'; // 先前創建的工廠地址
193
+ const factoryAddress = 'z2...'; // 先前建立的工廠地址
194
194
  const { wallet: issuerWallet } = getIssuerWallet(); // 工廠擁有者或受信任的發行者
195
195
  const { wallet: userWallet } = getUserWallet(); // 將擁有新資產的使用者
196
196
 
@@ -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() {
@@ -227,13 +227,13 @@ async function acquireNewAsset() {
227
227
  try {
228
228
  const hash = await client.acquireAsset({
229
229
  itx: itx,
230
- wallet: userWallet, // 使用者的錢包簽署此交易
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
 
@@ -252,4 +252,81 @@ acquireNewAsset();
252
252
 
253
253
  一個 `Promise`,會解析為 `acquireAsset` 操作的交易雜湊值。
254
254
 
255
+ <x-field data-name="response" data-type="Promise<string>" data-desc="transactionHash"></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
+
255
332
  <x-field data-name="response" data-type="Promise<string>" data-desc="transactionHash"></x-field>