跳到主要內容

管理帳號

在由 OCAP 驅動的區塊鏈上,帳號本質上是與一個地址相關聯的狀態,由一對加密金鑰(公鑰和私鑰)控制。一個需要理解的關鍵概念是,帳號是隱式創建的。一旦帳號收到第一筆傳入的交易,例如代幣或資產轉移,它就在鏈上正式存在。沒有明確的 createAccount 交易。

本指南著重於一項關鍵的帳號管理操作:將帳號遷移到一組新的金鑰。這是一項重要的安全功能,可讓您在不改變帳號地址、餘額或資產的情況下,變更帳號的所有權。

將帳號遷移至新金鑰

migrateAccount 函式可讓您將現有帳號地址與一個新的公鑰關聯起來。這在多種情況下都很有用,例如:

  • 金鑰洩露:如果您懷疑自己的私鑰可能已經洩露,可以將帳號遷移到一對新的、安全的金鑰對,以防止未經授權的存取。
  • 升級安全性:您可能希望從舊的金鑰類型遷移到更新、更安全的類型。

此操作有效地轉移了帳號的控制權,同時保留其在區塊鏈上的歷史和狀態。

參數

  • from WalletObject (required) — 代表正在遷移的當前帳號的錢包物件。此錢包必須簽署交易以證明所有權。
  • to WalletObject (required) — 將控制權轉移至的新錢包物件。來自此錢包的公鑰將成為該帳號地址的新權限持有者。

回傳值

migrateAccount 方法回傳一個 Promise,其解析值為交易雜湊值的字串。

範例

以下是如何將帳號從舊錢包遷移到新錢包的範例。

遷移帳號

javascript
import Client from '@ocap/client';
import { fromRandom } from '@ocap/wallet';

const client = new Client('https://beta.abtnetwork.io/api');

// 假設 oldWallet 是目前授權給該帳號的錢包
const oldWallet = fromRandom();

// 建立一個帶有新金鑰組的新錢包
const newWallet = fromRandom();

async function migrate() {
  try {
    // 在遷移之前,您通常需要為 oldWallet 的地址儲值。
    // 在此範例中,我們假設它有足夠的資金來支付交易費用。
    // 您可以從 https://faucet.abtnetwork.io/ 獲取測試代幣
    console.log(`Migrating account from ${oldWallet.address} to new keys associated with ${newWallet.address}`);

    const hash = await client.migrateAccount({
      from: oldWallet,
      to: newWallet,
    });

    console.log('Account migration transaction sent successfully!');
    console.log('Transaction Hash:', hash);
    console.log(`View transaction at: https://beta.abtnetwork.io/explorer/txs/${hash}`);

  } catch (err) {
    console.error('Error migrating account:', err);
  }
}

migrate();

現在您已了解如何透過遷移金鑰來保護您的帳號,您可能想學習如何在不分享主金鑰的情況下,授予有限權限給其他帳號。請參閱 委派權限 指南以獲取更多詳細資訊。