@ocap/client 1.25.6 → 1.26.1
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 +16 -16
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# 委派權限
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
委派權限是一項強大的功能,它允許一個帳戶(委派人)授權另一個帳戶(受派人)代表其發送特定類型的交易。這對於需要為使用者執行操作,但又不想直接存取使用者主私鑰的應用程式特別有用。例如,您可以將權限委派給特定於應用程式的金鑰,以轉移某些資產或與智慧合約互動,透過限制金鑰的權限範圍來增強安全性。
|
|
4
4
|
|
|
5
5
|
本指南將引導您完成授予、使用和撤銷委派的過程。
|
|
6
6
|
|
|
7
7
|
## 授予委派
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
若要授權另一個帳戶,您需要使用 `delegate` 方法。您必須指定要委派給誰,以及他們被允許發送哪些特定交易類型。每項權限還可以設定限制,例如可以涉及哪些代幣或資產。
|
|
10
10
|
|
|
11
11
|
### 參數
|
|
12
12
|
|
|
@@ -18,12 +18,12 @@
|
|
|
18
18
|
<x-field-desc markdown>受派人(接收權限的帳戶)的錢包物件。</x-field-desc>
|
|
19
19
|
</x-field>
|
|
20
20
|
<x-field data-name="privileges" data-type="Array<object>" data-required="true">
|
|
21
|
-
<x-field-desc markdown
|
|
21
|
+
<x-field-desc markdown>一個要授予的權限物件陣列。每個物件都定義了一個特定的授權。</x-field-desc>
|
|
22
22
|
<x-field data-name="typeUrl" data-type="string" data-required="true">
|
|
23
|
-
<x-field-desc markdown>被允許的交易的類型 URL
|
|
23
|
+
<x-field-desc markdown>被允許的交易的類型 URL(例如:`ocap:t:transfer_v2`)。</x-field-desc>
|
|
24
24
|
</x-field>
|
|
25
25
|
<x-field data-name="limit" data-type="object" data-required="false">
|
|
26
|
-
<x-field-desc markdown
|
|
26
|
+
<x-field-desc markdown>對權限的選用限制,例如限制於特定的代幣或資產。</x-field-desc>
|
|
27
27
|
<x-field data-name="tokens" data-type="Array<string>" data-required="false" data-desc="此權限適用的代幣地址陣列。"></x-field>
|
|
28
28
|
<x-field data-name="assets" data-type="Array<string>" data-required="false" data-desc="此權限適用的資產地址陣列。"></x-field>
|
|
29
29
|
</x-field>
|
|
@@ -36,9 +36,9 @@
|
|
|
36
36
|
|
|
37
37
|
### 範例
|
|
38
38
|
|
|
39
|
-
以下是如何將 `transfer`
|
|
39
|
+
以下是如何將 `transfer` 權限從一個帳戶委派給另一個帳戶。
|
|
40
40
|
|
|
41
|
-
```javascript
|
|
41
|
+
```javascript 授予轉帳權限 icon=logos:javascript
|
|
42
42
|
import Client from '@ocap/client';
|
|
43
43
|
import { fromRandom } from '@ocap/wallet';
|
|
44
44
|
import { typeUrls } from '@ocap/proto';
|
|
@@ -53,9 +53,8 @@ const delegateeWallet = fromRandom();
|
|
|
53
53
|
|
|
54
54
|
async function grantPermission() {
|
|
55
55
|
try {
|
|
56
|
-
//
|
|
57
|
-
//
|
|
58
|
-
// from a faucet or another account.
|
|
56
|
+
// 首先,確保委派人帳戶中有資金。
|
|
57
|
+
// 在實際應用中,您需要從水龍頭或其他帳戶轉帳資金到 delegatorWallet.address
|
|
59
58
|
console.log(`Delegator address: ${delegatorWallet.address}`);
|
|
60
59
|
console.log(`Delegatee address: ${delegateeWallet.address}`);
|
|
61
60
|
console.log('Please fund the delegator account before proceeding.');
|
|
@@ -87,22 +86,22 @@ grantPermission();
|
|
|
87
86
|
|
|
88
87
|
## 作為受派人發送交易
|
|
89
88
|
|
|
90
|
-
|
|
89
|
+
一旦獲得委派,受派人錢包可以透過在交易參數中指定 `delegator` 的地址來發送已授權的交易。該交易由受派人簽署,但代表委派人執行,交易費用從委派人的帳戶中支付。
|
|
91
90
|
|
|
92
91
|
### 範例
|
|
93
92
|
|
|
94
|
-
```javascript
|
|
93
|
+
```javascript 作為受派人發送轉帳 icon=logos:javascript
|
|
95
94
|
// 假設前一個範例中的 grantPermission() 函數已成功執行
|
|
96
95
|
|
|
97
|
-
//
|
|
96
|
+
// 轉帳的接收人
|
|
98
97
|
const recipientWallet = fromRandom();
|
|
99
98
|
|
|
100
99
|
async function sendDelegatedTransaction() {
|
|
101
100
|
try {
|
|
102
101
|
const hash = await client.transfer({
|
|
103
102
|
to: recipientWallet.address,
|
|
104
|
-
token: 1, // 轉移 1
|
|
105
|
-
wallet: delegateeWallet, //
|
|
103
|
+
token: 1, // 轉移 1 個鏈的原生代幣
|
|
104
|
+
wallet: delegateeWallet, // 由受派人簽署
|
|
106
105
|
delegator: delegatorWallet.address, // 代表委派人執行
|
|
107
106
|
});
|
|
108
107
|
|
|
@@ -114,7 +113,7 @@ async function sendDelegatedTransaction() {
|
|
|
114
113
|
}
|
|
115
114
|
}
|
|
116
115
|
|
|
117
|
-
//
|
|
116
|
+
// 請確保在委派上鏈確認後再呼叫此函數。
|
|
118
117
|
// sendDelegatedTransaction();
|
|
119
118
|
```
|
|
120
119
|
|
|
@@ -129,21 +128,21 @@ async function sendDelegatedTransaction() {
|
|
|
129
128
|
<x-field-desc markdown>最初授予權限的委派人的錢包物件。</x-field-desc>
|
|
130
129
|
</x-field>
|
|
131
130
|
<x-field data-name="to" data-type="WalletObject" data-required="true">
|
|
132
|
-
<x-field-desc markdown
|
|
131
|
+
<x-field-desc markdown>其權限將被撤銷的受派人的錢包物件。</x-field-desc>
|
|
133
132
|
</x-field>
|
|
134
133
|
<x-field data-name="privileges" data-type="Array<string>" data-required="true">
|
|
135
|
-
<x-field-desc markdown
|
|
134
|
+
<x-field-desc markdown>一個要撤銷的交易 `typeUrl` 字串陣列。</x-field-desc>
|
|
136
135
|
</x-field>
|
|
137
136
|
</x-field-group>
|
|
138
137
|
|
|
139
138
|
### 返回值
|
|
140
139
|
|
|
141
|
-
<x-field data-name="hash" data-type="Promise<string>" data-desc="
|
|
140
|
+
<x-field data-name="hash" data-type="Promise<string>" data-desc="一個解析為撤銷操作的交易雜湊的 Promise。"></x-field>
|
|
142
141
|
|
|
143
142
|
### 範例
|
|
144
143
|
|
|
145
|
-
```javascript
|
|
146
|
-
//
|
|
144
|
+
```javascript 撤銷轉帳權限 icon=logos:javascript
|
|
145
|
+
// 假設 delegatorWallet 和 delegateeWallet 與前述範例中相同
|
|
147
146
|
|
|
148
147
|
async function revokePermission() {
|
|
149
148
|
try {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# 委托权限
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
委托权限是一项强大的功能,它允许一个账户(委托人)授权另一个账户(受托人)代表其发送特定类型的交易。这对于需要为用户执行操作但又不想直接访问用户主私钥的应用程序尤其有用。例如,您可以将权限委托给特定于应用程序的密钥,以转移某些资产或与智能合约进行交互,通过限制该密钥的权限范围来增强安全性。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
本指南将引导您完成授予、使用和撤销委托的全过程。
|
|
6
6
|
|
|
7
7
|
## 授予委托
|
|
8
8
|
|
|
9
|
-
要授权另一个账户,您可以使用 `delegate`
|
|
9
|
+
要授权另一个账户,您可以使用 `delegate` 方法。您必须指定委托给谁以及他们被允许发送哪些具体的交易类型。每项权限还可以设置限制,例如可以涉及哪些代币或资产。
|
|
10
10
|
|
|
11
11
|
### 参数
|
|
12
12
|
|
|
@@ -15,15 +15,15 @@
|
|
|
15
15
|
<x-field-desc markdown>委托人(授予权限的账户)的钱包对象。</x-field-desc>
|
|
16
16
|
</x-field>
|
|
17
17
|
<x-field data-name="to" data-type="WalletObject" data-required="true">
|
|
18
|
-
<x-field-desc markdown
|
|
18
|
+
<x-field-desc markdown>受托人(接收权限的账户)的钱包对象。</x-field-desc>
|
|
19
19
|
</x-field>
|
|
20
20
|
<x-field data-name="privileges" data-type="Array<object>" data-required="true">
|
|
21
21
|
<x-field-desc markdown>要授予的权限对象数组。每个对象定义一个特定的授权。</x-field-desc>
|
|
22
22
|
<x-field data-name="typeUrl" data-type="string" data-required="true">
|
|
23
|
-
<x-field-desc markdown>被许可的交易的类型 URL
|
|
23
|
+
<x-field-desc markdown>被许可的交易的类型 URL(例如 `fg:t:transfer_v2`)。</x-field-desc>
|
|
24
24
|
</x-field>
|
|
25
25
|
<x-field data-name="limit" data-type="object" data-required="false">
|
|
26
|
-
<x-field-desc markdown
|
|
26
|
+
<x-field-desc markdown>对权限的可选限制,例如将其限制于特定的代币或资产。</x-field-desc>
|
|
27
27
|
<x-field data-name="tokens" data-type="Array<string>" data-required="false" data-desc="此权限适用的代币地址数组。"></x-field>
|
|
28
28
|
<x-field data-name="assets" data-type="Array<string>" data-required="false" data-desc="此权限适用的资产地址数组。"></x-field>
|
|
29
29
|
</x-field>
|
|
@@ -32,13 +32,13 @@
|
|
|
32
32
|
|
|
33
33
|
### 返回值
|
|
34
34
|
|
|
35
|
-
<x-field data-name="result" data-type="Promise<[string, string]>" data-desc="一个 Promise
|
|
35
|
+
<x-field data-name="result" data-type="Promise<[string, string]>" data-desc="一个 Promise,解析为一个包含交易哈希和新创建的委托地址的数组。"></x-field>
|
|
36
36
|
|
|
37
37
|
### 示例
|
|
38
38
|
|
|
39
39
|
以下是如何将 `transfer` 权限从一个账户委托给另一个账户。
|
|
40
40
|
|
|
41
|
-
```javascript
|
|
41
|
+
```javascript 授予转账权限 icon=logos:javascript
|
|
42
42
|
import Client from '@ocap/client';
|
|
43
43
|
import { fromRandom } from '@ocap/wallet';
|
|
44
44
|
import { typeUrls } from '@ocap/proto';
|
|
@@ -84,13 +84,13 @@ async function grantPermission() {
|
|
|
84
84
|
grantPermission();
|
|
85
85
|
```
|
|
86
86
|
|
|
87
|
-
##
|
|
87
|
+
## 作为受托人发送交易
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
一旦获得委托,受托人钱包就可以通过在交易参数中指定 `delegator` 的地址来发送已授权的交易。该交易由受托人签名,但代表委托人执行,交易费用从委托人的账户中支付。
|
|
90
90
|
|
|
91
91
|
### 示例
|
|
92
92
|
|
|
93
|
-
```javascript
|
|
93
|
+
```javascript 作为受托人发送转账 icon=logos:javascript
|
|
94
94
|
// 假设前一个示例中的 grantPermission() 函数已成功执行
|
|
95
95
|
|
|
96
96
|
// 转账的接收方
|
|
@@ -101,7 +101,7 @@ async function sendDelegatedTransaction() {
|
|
|
101
101
|
const hash = await client.transfer({
|
|
102
102
|
to: recipientWallet.address,
|
|
103
103
|
token: 1, // 转移 1 个链的原生代币
|
|
104
|
-
wallet: delegateeWallet, //
|
|
104
|
+
wallet: delegateeWallet, // 由受托人签名
|
|
105
105
|
delegator: delegatorWallet.address, // 代表委托人执行
|
|
106
106
|
});
|
|
107
107
|
|
|
@@ -113,13 +113,13 @@ async function sendDelegatedTransaction() {
|
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
-
//
|
|
116
|
+
// 确保在委托上链确认后再调用此函数。
|
|
117
117
|
// sendDelegatedTransaction();
|
|
118
118
|
```
|
|
119
119
|
|
|
120
120
|
## 撤销委托
|
|
121
121
|
|
|
122
|
-
委托人可以随时使用 `revokeDelegate`
|
|
122
|
+
委托人可以随时使用 `revokeDelegate` 方法撤销任何已授予的权限。您需要为指定的受托人指明要撤销哪些交易类型。
|
|
123
123
|
|
|
124
124
|
### 参数
|
|
125
125
|
|
|
@@ -128,7 +128,7 @@ async function sendDelegatedTransaction() {
|
|
|
128
128
|
<x-field-desc markdown>最初授予权限的委托人的钱包对象。</x-field-desc>
|
|
129
129
|
</x-field>
|
|
130
130
|
<x-field data-name="to" data-type="WalletObject" data-required="true">
|
|
131
|
-
<x-field-desc markdown
|
|
131
|
+
<x-field-desc markdown>其权限正在被撤销的受托人的钱包对象。</x-field-desc>
|
|
132
132
|
</x-field>
|
|
133
133
|
<x-field data-name="privileges" data-type="Array<string>" data-required="true">
|
|
134
134
|
<x-field-desc markdown>要撤销的交易 `typeUrl` 字符串数组。</x-field-desc>
|
|
@@ -137,12 +137,12 @@ async function sendDelegatedTransaction() {
|
|
|
137
137
|
|
|
138
138
|
### 返回值
|
|
139
139
|
|
|
140
|
-
<x-field data-name="hash" data-type="Promise<string>" data-desc="一个 Promise
|
|
140
|
+
<x-field data-name="hash" data-type="Promise<string>" data-desc="一个 Promise,解析为撤销操作的交易哈希。"></x-field>
|
|
141
141
|
|
|
142
142
|
### 示例
|
|
143
143
|
|
|
144
|
-
```javascript
|
|
145
|
-
//
|
|
144
|
+
```javascript 撤销转账权限 icon=logos:javascript
|
|
145
|
+
// 假设使用与前述示例中相同的 delegatorWallet 和 delegateeWallet
|
|
146
146
|
|
|
147
147
|
async function revokePermission() {
|
|
148
148
|
try {
|
|
@@ -1,47 +1,47 @@
|
|
|
1
1
|
# アカウントの管理
|
|
2
2
|
|
|
3
|
-
OCAP
|
|
3
|
+
OCAP を利用したブロックチェーンにおいて、アカウントとは基本的に、暗号キーのペア(公開キーと秘密キー)によって制御される、アドレスに関連付けられた状態のことです。理解すべき重要な概念は、アカウントが暗黙的に作成されるということです。アカウントは、トークンやアセットの転送など、最初の着信トランザクションを受信するとすぐに、オンチェーンで正式に存在することになります。明示的な `createAccount` トランザクションは存在しません。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
このガイドでは、アカウントを新しいキーセットに移行するという、重要なアカウント管理操作に焦点を当てます。これは、アドレス、残高、またはアセットを変更することなくアカウントの所有権を変更できる、不可欠なセキュリティ機能です。
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## アカウントを新しいキーに移行する
|
|
8
8
|
|
|
9
|
-
`migrateAccount`
|
|
9
|
+
`migrateAccount` 関数を使用すると、既存のアカウントアドレスを新しい公開キーに関連付けることができます。これは、次のような複数のシナリオで役立ちます。
|
|
10
10
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
11
|
+
- **キーの漏洩**:秘密キーが漏洩した疑いがある場合、アカウントを新しい安全なキーペアに移行して不正アクセスを防ぐことができます。
|
|
12
|
+
- **セキュリティのアップグレード**:古いタイプのキーから、より新しく安全なキーに移行したい場合があるかもしれません。
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
この操作は、ブロックチェーン上の履歴と状態を維持しながら、アカウントの制御を効果的に移転します。
|
|
15
15
|
|
|
16
|
-
###
|
|
16
|
+
### パラメータ
|
|
17
17
|
|
|
18
18
|
<x-field-group>
|
|
19
19
|
<x-field data-name="from" data-type="WalletObject" data-required="true">
|
|
20
|
-
<x-field-desc markdown
|
|
20
|
+
<x-field-desc markdown>移行対象の現在のアカウントを表すウォレットオブジェクト。所有権を証明するために、このウォレットでトランザクションに署名する必要があります。</x-field-desc>
|
|
21
21
|
</x-field>
|
|
22
22
|
<x-field data-name="to" data-type="WalletObject" data-required="true">
|
|
23
|
-
<x-field-desc markdown
|
|
23
|
+
<x-field-desc markdown>制御が移転される新しいウォレットオブジェクト。このウォレットの公開キーが、アカウントアドレスの新しい権限になります。</x-field-desc>
|
|
24
24
|
</x-field>
|
|
25
25
|
</x-field-group>
|
|
26
26
|
|
|
27
27
|
### 戻り値
|
|
28
28
|
|
|
29
|
-
`migrateAccount`
|
|
29
|
+
`migrateAccount` メソッドは、文字列としてのトランザクションハッシュに解決される Promise を返します。
|
|
30
30
|
|
|
31
31
|
### 例
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
古いウォレットから新しいウォレットにアカウントを移行する方法は次のとおりです。
|
|
34
34
|
|
|
35
|
-
```javascript
|
|
35
|
+
```javascript アカウントの移行 icon=logos:javascript
|
|
36
36
|
import Client from '@ocap/client';
|
|
37
37
|
import { fromRandom } from '@ocap/wallet';
|
|
38
38
|
|
|
39
39
|
const client = new Client('https://beta.abtnetwork.io/api');
|
|
40
40
|
|
|
41
|
-
// oldWallet
|
|
41
|
+
// oldWallet がアカウントに対して現在承認されているウォレットであると仮定します
|
|
42
42
|
const oldWallet = fromRandom();
|
|
43
43
|
|
|
44
|
-
//
|
|
44
|
+
// 新しいキーセットで新しいウォレットを作成します
|
|
45
45
|
const newWallet = fromRandom();
|
|
46
46
|
|
|
47
47
|
async function migrate() {
|
|
@@ -49,19 +49,19 @@ async function migrate() {
|
|
|
49
49
|
// 移行する前に、通常は oldWallet のアドレスに資金を供給します。
|
|
50
50
|
// この例では、トランザクション手数料を支払うのに十分な資金があると仮定します。
|
|
51
51
|
// テストトークンは https://faucet.abtnetwork.io/ から入手できます
|
|
52
|
-
console.log(
|
|
52
|
+
console.log(`Migrating account from ${oldWallet.address} to new keys associated with ${newWallet.address}`);
|
|
53
53
|
|
|
54
54
|
const hash = await client.migrateAccount({
|
|
55
55
|
from: oldWallet,
|
|
56
56
|
to: newWallet,
|
|
57
57
|
});
|
|
58
58
|
|
|
59
|
-
console.log('
|
|
60
|
-
console.log('
|
|
61
|
-
console.log(
|
|
59
|
+
console.log('Account migration transaction sent successfully!');
|
|
60
|
+
console.log('Transaction Hash:', hash);
|
|
61
|
+
console.log(`View transaction at: https://beta.abtnetwork.io/explorer/txs/${hash}`);
|
|
62
62
|
|
|
63
63
|
} catch (err) {
|
|
64
|
-
console.error('
|
|
64
|
+
console.error('Error migrating account:', err);
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
|
|
@@ -70,4 +70,4 @@ migrate();
|
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
キーを移行してアカウントを保護する方法がわかったので、次はプライマリーキーを共有することなく、他のアカウントに限定的な権限を付与する方法を学びたいと思うかもしれません。詳細については、[権限の委任](./how-to-guides-delegate-permissions.md)ガイドを参照してください。
|
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 管理帳號
|
|
2
2
|
|
|
3
|
-
在由 OCAP
|
|
3
|
+
在由 OCAP 驅動的區塊鏈上,帳號本質上是與一個地址相關聯的狀態,由一對加密金鑰(公鑰和私鑰)控制。一個需要理解的關鍵概念是,帳號是隱式創建的。一旦帳號收到第一筆傳入的交易,例如代幣或資產轉移,它就在鏈上正式存在。沒有明確的 `createAccount` 交易。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
本指南著重於一項關鍵的帳號管理操作:將帳號遷移到一組新的金鑰。這是一項重要的安全功能,可讓您在不改變帳號地址、餘額或資產的情況下,變更帳號的所有權。
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## 將帳號遷移至新金鑰
|
|
8
8
|
|
|
9
|
-
`migrateAccount`
|
|
9
|
+
`migrateAccount` 函式可讓您將現有帳號地址與一個新的公鑰關聯起來。這在多種情況下都很有用,例如:
|
|
10
10
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
11
|
+
- **金鑰洩露**:如果您懷疑自己的私鑰可能已經洩露,可以將帳號遷移到一對新的、安全的金鑰對,以防止未經授權的存取。
|
|
12
|
+
- **升級安全性**:您可能希望從舊的金鑰類型遷移到更新、更安全的類型。
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
此操作有效地轉移了帳號的控制權,同時保留其在區塊鏈上的歷史和狀態。
|
|
15
15
|
|
|
16
16
|
### 參數
|
|
17
17
|
|
|
18
18
|
<x-field-group>
|
|
19
19
|
<x-field data-name="from" data-type="WalletObject" data-required="true">
|
|
20
|
-
<x-field-desc markdown
|
|
20
|
+
<x-field-desc markdown>代表正在遷移的當前帳號的錢包物件。此錢包必須簽署交易以證明所有權。</x-field-desc>
|
|
21
21
|
</x-field>
|
|
22
22
|
<x-field data-name="to" data-type="WalletObject" data-required="true">
|
|
23
|
-
<x-field-desc markdown
|
|
23
|
+
<x-field-desc markdown>將控制權轉移至的新錢包物件。來自此錢包的公鑰將成為該帳號地址的新權限持有者。</x-field-desc>
|
|
24
24
|
</x-field>
|
|
25
25
|
</x-field-group>
|
|
26
26
|
|
|
27
|
-
###
|
|
27
|
+
### 回傳值
|
|
28
28
|
|
|
29
|
-
`migrateAccount`
|
|
29
|
+
`migrateAccount` 方法回傳一個 Promise,其解析值為交易雜湊值的字串。
|
|
30
30
|
|
|
31
31
|
### 範例
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
以下是如何將帳號從舊錢包遷移到新錢包的範例。
|
|
34
34
|
|
|
35
|
-
```javascript
|
|
35
|
+
```javascript 遷移帳號 icon=logos:javascript
|
|
36
36
|
import Client from '@ocap/client';
|
|
37
37
|
import { fromRandom } from '@ocap/wallet';
|
|
38
38
|
|
|
39
39
|
const client = new Client('https://beta.abtnetwork.io/api');
|
|
40
40
|
|
|
41
|
-
// 假設 oldWallet
|
|
41
|
+
// 假設 oldWallet 是目前授權給該帳號的錢包
|
|
42
42
|
const oldWallet = fromRandom();
|
|
43
43
|
|
|
44
|
-
//
|
|
44
|
+
// 建立一個帶有新金鑰組的新錢包
|
|
45
45
|
const newWallet = fromRandom();
|
|
46
46
|
|
|
47
47
|
async function migrate() {
|
|
48
48
|
try {
|
|
49
49
|
// 在遷移之前,您通常需要為 oldWallet 的地址儲值。
|
|
50
|
-
//
|
|
50
|
+
// 在此範例中,我們假設它有足夠的資金來支付交易費用。
|
|
51
51
|
// 您可以從 https://faucet.abtnetwork.io/ 獲取測試代幣
|
|
52
|
-
console.log(
|
|
52
|
+
console.log(`Migrating account from ${oldWallet.address} to new keys associated with ${newWallet.address}`);
|
|
53
53
|
|
|
54
54
|
const hash = await client.migrateAccount({
|
|
55
55
|
from: oldWallet,
|
|
56
56
|
to: newWallet,
|
|
57
57
|
});
|
|
58
58
|
|
|
59
|
-
console.log('
|
|
60
|
-
console.log('
|
|
61
|
-
console.log(
|
|
59
|
+
console.log('Account migration transaction sent successfully!');
|
|
60
|
+
console.log('Transaction Hash:', hash);
|
|
61
|
+
console.log(`View transaction at: https://beta.abtnetwork.io/explorer/txs/${hash}`);
|
|
62
62
|
|
|
63
63
|
} catch (err) {
|
|
64
|
-
console.error('
|
|
64
|
+
console.error('Error migrating account:', err);
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
|
|
@@ -70,4 +70,4 @@ migrate();
|
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
現在您已了解如何透過遷移金鑰來保護您的帳號,您可能想學習如何在不分享主金鑰的情況下,授予有限權限給其他帳號。請參閱 [委派權限](./how-to-guides-delegate-permissions.md) 指南以獲取更多詳細資訊。
|
|
@@ -1,38 +1,38 @@
|
|
|
1
1
|
# 管理账户
|
|
2
2
|
|
|
3
|
-
在由 OCAP
|
|
3
|
+
在由 OCAP 驱动的区块链上,账户本质上是与一个地址关联的状态,由一对加密密钥(公钥和私钥)控制。一个需要理解的关键概念是,账户是隐式创建的。一旦账户收到第一笔入账交易(例如代币或资产转移),它就正式在链上存在了。没有显式的 `createAccount` 交易。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
本指南重点介绍一个关键的账户管理操作:将账户迁移到一组新的密钥。这是一项重要的安全功能,允许您在不改变账户地址、余额或资产的情况下更改账户的所有权。
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## 将账户迁移到新密钥
|
|
8
8
|
|
|
9
|
-
`migrateAccount`
|
|
9
|
+
`migrateAccount` 函数允许您将一个现有的账户地址与一个新的公钥关联起来。这在多种场景下都很有用,例如:
|
|
10
10
|
|
|
11
11
|
- **密钥泄露**:如果您怀疑自己的私钥已被泄露,可以将账户迁移到一个新的、安全的密钥对,以防止未经授权的访问。
|
|
12
|
-
-
|
|
12
|
+
- **升级安全性**:您可能希望从旧的密钥类型迁移到更新、更安全的密钥类型。
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
此操作可以有效地转移账户的控制权,同时保留其在区块链上的历史和状态。
|
|
15
15
|
|
|
16
16
|
### 参数
|
|
17
17
|
|
|
18
18
|
<x-field-group>
|
|
19
19
|
<x-field data-name="from" data-type="WalletObject" data-required="true">
|
|
20
|
-
<x-field-desc markdown
|
|
20
|
+
<x-field-desc markdown>代表正在被迁移的当前账户的钱包对象。该钱包必须签署交易以证明所有权。</x-field-desc>
|
|
21
21
|
</x-field>
|
|
22
22
|
<x-field data-name="to" data-type="WalletObject" data-required="true">
|
|
23
|
-
<x-field-desc markdown
|
|
23
|
+
<x-field-desc markdown>控制权将被转移到的新钱包对象。该钱包的公钥将成为该账户地址的新权限所有者。</x-field-desc>
|
|
24
24
|
</x-field>
|
|
25
25
|
</x-field-group>
|
|
26
26
|
|
|
27
27
|
### 返回值
|
|
28
28
|
|
|
29
|
-
`migrateAccount` 方法返回一个 Promise,该 Promise
|
|
29
|
+
`migrateAccount` 方法返回一个 Promise,该 Promise 会解析为交易哈希字符串。
|
|
30
30
|
|
|
31
31
|
### 示例
|
|
32
32
|
|
|
33
33
|
以下是如何将账户从旧钱包迁移到新钱包的示例。
|
|
34
34
|
|
|
35
|
-
```javascript
|
|
35
|
+
```javascript 迁移账户 icon=logos:javascript
|
|
36
36
|
import Client from '@ocap/client';
|
|
37
37
|
import { fromRandom } from '@ocap/wallet';
|
|
38
38
|
|
|
@@ -41,7 +41,7 @@ const client = new Client('https://beta.abtnetwork.io/api');
|
|
|
41
41
|
// 假设 oldWallet 是当前账户的授权钱包
|
|
42
42
|
const oldWallet = fromRandom();
|
|
43
43
|
|
|
44
|
-
//
|
|
44
|
+
// 创建一个具有新密钥对的新钱包
|
|
45
45
|
const newWallet = fromRandom();
|
|
46
46
|
|
|
47
47
|
async function migrate() {
|
|
@@ -49,19 +49,19 @@ async function migrate() {
|
|
|
49
49
|
// 在迁移之前,您通常需要为 oldWallet 的地址充值。
|
|
50
50
|
// 在本示例中,我们假设它有足够的资金来支付交易费用。
|
|
51
51
|
// 您可以从 https://faucet.abtnetwork.io/ 获取测试代币
|
|
52
|
-
console.log(
|
|
52
|
+
console.log(`Migrating account from ${oldWallet.address} to new keys associated with ${newWallet.address}`);
|
|
53
53
|
|
|
54
54
|
const hash = await client.migrateAccount({
|
|
55
55
|
from: oldWallet,
|
|
56
56
|
to: newWallet,
|
|
57
57
|
});
|
|
58
58
|
|
|
59
|
-
console.log('
|
|
60
|
-
console.log('
|
|
61
|
-
console.log(
|
|
59
|
+
console.log('Account migration transaction sent successfully!');
|
|
60
|
+
console.log('Transaction Hash:', hash);
|
|
61
|
+
console.log(`View transaction at: https://beta.abtnetwork.io/explorer/txs/${hash}`);
|
|
62
62
|
|
|
63
63
|
} catch (err) {
|
|
64
|
-
console.error('
|
|
64
|
+
console.error('Error migrating account:', err);
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
|
|
@@ -70,4 +70,4 @@ migrate();
|
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
现在您已经了解了如何通过迁移密钥来保护您的账户,您可能想学习如何在不共享主密钥的情况下向其他账户授予有限的权限。更多详情请参阅[委托权限](./how-to-guides-delegate-permissions.md)指南。
|