TypeScript 記號帳戶狀態的方法

Blockchain App Builder 會自動產生方法,供您用來管理使用權杖分類架構標準之有趣權杖的帳戶狀態。

您可以使用下列方法將記號使用者帳戶置於作用中、已暫停或已刪除的狀態。

帳戶暫停時,帳戶使用者無法完成任何寫入作業,包括採礦、燒錄、傳輸及保留記號。此外,其他使用者無法在暫停的帳戶中轉移記號或保留記號。暫停的帳號仍然可以完成讀取作業。

無法刪除具有非零權杖餘額的帳戶。您必須先轉移或燒錄帳戶中的所有權杖,才能刪除帳戶。帳戶處於已刪除狀態之後,便無法將帳戶狀態變更回作用中或已暫停。

自動產生的科目狀態方法

Blockchain App Builder 會自動產生管理權杖帳戶狀態的方法。控制器方法必須要有 @Validator(...params) 修飾器才能呼叫。

getAccountStatus
此方法會取得權杖帳戶的目前狀態。此方法可由鏈碼的 Token Admin、指定組織的 Org Admin 或權杖帳戶擁有者呼叫。此方法也支援將現有鏈碼升級至較新版本的資料移轉。
@Validator(yup.string(), yup.string(), yup.string())
  public async getAccountStatus(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.get", "TOKEN", { account_id });
    try {
      return await this.Ctx.AccountStatus.getAccountStatus(account_id);
    } catch (err) {
      return await this.Ctx.AccountStatus.getDefaultAccountStatus(account_id);
    }
  }
參數:
  • token_id: string - 記號的 ID。
  • org_id: string - 目前組織中使用者的成員服務提供者 (MSP) ID。
  • user_id: string - 使用者的使用者名稱或電子郵件 ID。
傳回值:
  • 成功時,包含權杖帳戶狀態明細的訊息。
傳回值範例:
{
    "assetType": "oaccountStatus",
    "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "status": "active"
}
getAccountStatusHistory
此方法會取得帳戶狀態的歷史記錄。此方法可由鏈碼的 Token Admin、指定組織的 Org Admin 或權杖帳戶擁有者呼叫。
  @Validator(yup.string(), yup.string(), yup.string())
  public async getAccountStatusHistory(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Account.getAccount(account_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.history", "TOKEN", { account_id });
    const status_id = await this.Ctx.AccountStatus.generateAccountStatusId(account_id);
    let account_status_history: any;
    try {
      account_status_history = await this.Ctx.AccountStatus.history(status_id);
    } catch (err) {
      return [];
    }
    return account_status_history;
  }
參數:
  • token_id: string - 記號的 ID。
  • org_id: string - 目前組織中使用者的成員服務提供者 (MSP) ID。
  • user_id: string - 使用者的使用者名稱或電子郵件 ID。
傳回值:
  • 成功時,包含帳戶狀態歷史記錄明細的訊息。
傳回值範例:
[
  {
    "trxId": "d5c6d6f601257ba9b6edaf5b7660f00adc13c37d5321b8f7d3a35afab2e93e63",
    "timeStamp": "2022-12-02T10:39:14.000Z",
    "value": {
      "assetType": "oaccountStatus",
      "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
      "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
      "status": "suspended"
    }
  },
  {
    "trxId": "e6c850cfa084dc20ad95fb2bb8165eef3a3bd62a0ac867cccee57c2003125183",
    "timeStamp": "2022-12-02T10:37:50.000Z",
    "value": {
      "assetType": "oaccountStatus",
      "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
      "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
      "status": "active"
    }
  }
]
activateAccount
此方法會啟用權杖帳戶。此方法只能由鏈碼的 Token Admin 或指定組織的 Org Admin 呼叫。無法啟用已刪除的帳戶。
@Validator(yup.string(), yup.string(), yup.string())
  public async activateAccount(token_id: string, org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.activateAccount", "TOKEN", { org_id });
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    return await this.Ctx.Account.activateAccount(account_id);
  }
參數:
  • token_id: string - 記號的 ID。
  • org_id: string - 目前組織中使用者的成員服務提供者 (MSP) ID。
  • user_id: string - 使用者的使用者名稱或電子郵件 ID。
傳回值:
  • 成功時,指定記號帳戶之帳戶狀態物件的 JSON 表示法。
傳回值範例:
{
  "assetType": "oaccountStatus",
  "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
  "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
  "status": "active"
}
suspendAccount
此方法會暫停權杖帳戶。此方法只能由鏈碼的 Token Admin 或指定組織的 Org Admin 呼叫。帳戶暫停後,您便無法完成任何更新帳戶的作業。無法暫停已刪除的帳戶。
@Validator(yup.string(), yup.string(), yup.string())
  public async suspendAccount(token_id: string, org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.suspendAccount", "TOKEN", { org_id });
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    return await this.Ctx.Account.suspendAccount(account_id);
  }
參數:
  • token_id: string - 記號的 ID。
  • org_id: string - 目前組織中使用者的成員服務提供者 (MSP) ID。
  • user_id: string - 使用者的使用者名稱或電子郵件 ID。
傳回值:
  • 成功時,指定記號帳戶之帳戶狀態物件的 JSON 表示法。
傳回值範例:
{
    "assetType": "oaccountStatus",
    "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "status": "suspended"
}
deleteAccount
此方法會刪除記號帳戶。此方法只能由鏈碼的 Token Admin 或指定組織的 Org Admin 呼叫。刪除帳戶後,您便無法完成任何更新帳戶的作業。刪除的帳戶處於最終狀態,無法變更為任何其他狀態。若要刪除帳戶,帳戶餘額和保留餘額必須為零。
@Validator(yup.string(), yup.string(), yup.string())
  public async deleteAccount(token_id: string, org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.deleteAccount", "TOKEN", { org_id });
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    return await this.Ctx.Account.deleteAccount(account_id);
  }
參數:
  • token_id: string - 記號的 ID。
  • org_id: string - 目前組織中使用者的成員服務提供者 (MSP) ID。
  • user_id: string - 使用者的使用者名稱或電子郵件 ID。
傳回值:
  • 成功時,指定記號帳戶之帳戶狀態物件的 JSON 表示法。
傳回值範例:
{
  "assetType": "oaccountStatus",
  "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
  "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
  "status": "deleted"
}

帳戶狀態 SDK 方法

getAccountStatus
此方法會取得權杖帳戶的目前狀態。
Ctx.AccountStatus.getAccountStatus(account_id: string)
參數:
  • account_id: string - 權杖帳戶的 ID。
傳回值:
  • 成功時,帳戶狀態物件的 JSON 表示法。
傳回值範例:
{
    "assetType": "oaccountStatus",
    "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "status": "active"
}
saveAccountStatus
此方法會儲存記號帳戶的狀態物件 (如果沒有狀態物件),並將狀態設為指定的值。
Ctx.AccountStatus.saveAccountStatus(account_id: string, status: AccountStatus)
參數:
  • account_id: string - 權杖帳戶的 ID。
  • status: AccountStatus - 要為指定帳戶設定的狀態。

    AccountStatusenum 類型,必須是 activesuspendeddeleted

傳回值:
  • 成功時,帳戶狀態物件的 JSON 表示法。
傳回值範例:
{
    "assetType": "oaccountStatus",
    "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "status": "active"
}
getAccountStatusHistory
此方法會取得帳戶狀態的歷史記錄。
Ctx.AccountStatus.history(status_id: string)
參數:
  • status_id: string - 帳戶狀態物件的 ID。
傳回值:
  • 成功時,代表帳戶狀態歷史記錄的 JSON。
傳回值範例:
[
  {
    "trxId": "d5c6d6f601257ba9b6edaf5b7660f00adc13c37d5321b8f7d3a35afab2e93e63",
    "timeStamp": "2022-12-02T10:39:14.000Z",
    "value": {
      "assetType": "oaccountStatus",
      "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
      "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
      "status": "suspended"
    }
  },
  {
    "trxId": "e6c850cfa084dc20ad95fb2bb8165eef3a3bd62a0ac867cccee57c2003125183",
    "timeStamp": "2022-12-02T10:37:50.000Z",
    "value": {
      "assetType": "oaccountStatus",
      "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
      "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
      "status": "active"
    }
  }
]
activateAccount
此方法會啟用權杖帳戶。
Ctx.Account.activateAccount(account_id: string)
參數:
  • account_id: string - 權杖帳戶的 ID。
傳回值:
  • 成功時,指定記號帳戶之帳戶狀態物件的 JSON 表示法。
傳回值範例:
{
  "assetType": "oaccountStatus",
  "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
  "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
  "status": "active"
}
suspendAccount
此方法會暫停權杖帳戶。
Ctx.Account.suspendAccount(account_id: string)
參數:
  • account_id: string - 權杖帳戶的 ID。
傳回值:
  • 成功時,指定記號帳戶之帳戶狀態物件的 JSON 表示法。
傳回值範例:
{
    "assetType": "oaccountStatus",
    "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "status": "suspended"
}
deleteAccount
此方法會刪除記號帳戶。
Ctx.Account.deleteAccount(account_id: string)
參數:
  • account_id: string - 權杖帳戶的 ID。
傳回值:
  • 成功時,指定記號帳戶之帳戶狀態物件的 JSON 表示法。
傳回值範例:
{
  "assetType": "oaccountStatus",
  "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
  "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
  "status": "deleted"
}