Blockchain App Builder는 토큰 계정 상태를 관리하는 방법을 자동으로 생성합니다. 컨트롤러 메소드를 호출하려면 공용이어야 합니다. 공용 메소드 이름은 대문자로 시작합니다. 소문자로 시작하는 메소드 이름은 전용입니다.
-
GetAccountStatus
- 이 메소드는 토큰 계정의 현재 상태를 가져옵니다. 이 메소드는 체인 코드의
Token Admin
, 지정된 조직의 Org Admin
또는 토큰 계정 소유자가 호출할 수 있습니다. 또한 이 방법은 최신 버전으로 업그레이드된 기존 체인코드에 대한 데이터 마이그레이션을 지원합니다.
-
func (t *Controller) GetAccountStatus(token_id string, org_id string, user_id string) (interface{}, error) {
account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
if err != nil {
return nil, fmt.Errorf("error in getting the generating account_id of (Org-Id: %s, User-Id: %s)", org_id, user_id)
}
auth, err := t.Ctx.Auth.CheckAuthorization("AccountStatus.Get", "TOKEN", map[string]string{"account_id": account_id})
if err != nil && !auth {
return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
}
accountStatus, err := t.Ctx.AccountStatus.GetAccountStatus(account_id)
if err != nil {
return t.Ctx.AccountStatus.GetDefaultAccountStatus(account_id)
}
return accountStatus, nil
}
- 매개변수:
token_id: string
- 토큰의 ID입니다.
org_id: string
- 현재 조직에 있는 사용자의 멤버쉽 서비스 제공자(MSP) ID입니다.
user_id: string
- 사용자의 사용자 이름 또는 전자메일 ID입니다.
- 반환값:
- 성공 시 토큰 계정 상태의 세부정보를 포함하는 메시지입니다.
- 반환 값 예제:
{
"AssetType": "oaccountStatus",
"StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
"AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
"Status": "active"
}
-
GetAccountStatusHistory
- 이 방법은 계정 상태 기록을 가져옵니다. 이 메소드는 체인 코드의
Token Admin
, 지정된 조직의 Org Admin
또는 토큰 계정 소유자가 호출할 수 있습니다.
-
func (t *Controller) GetAccountStatusHistory(token_id string, org_id string, user_id string) (interface{}, error) {
account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
if err != nil {
return nil, fmt.Errorf("error in getting the generating account_id of (Org-Id: %s, User-Id: %s)", org_id, user_id)
}
_, err = t.Ctx.Account.GetAccount(account_id)
if err != nil {
return nil, fmt.Errorf("error in GetAccountStatusHistory: %s", err)
}
auth, err := t.Ctx.Auth.CheckAuthorization("AccountStatus.Get", "TOKEN", map[string]string{"account_id": account_id})
if err != nil && !auth {
return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
}
status_id, err := t.Ctx.AccountStatus.GenerateAccountStatusId(account_id)
if err != nil {
return nil, err
}
account_status_history, err := t.Ctx.AccountStatus.History(status_id)
if err != nil {
return []map[string]interface{}{}, nil
}
return account_status_history, nil
}
- 매개변수:
token_id: string
- 토큰의 ID입니다.
org_id: string
- 현재 조직에 있는 사용자의 멤버쉽 서비스 제공자(MSP) ID입니다.
user_id: string
- 사용자의 사용자 이름 또는 전자메일 ID입니다.
- 반환값:
- 성공 시 계정 상태 기록의 세부정보를 포함하는 메시지입니다.
- 반환 값 예제:
[
{
"IsDelete": "false",
"Timestamp": "2022-12-02T16:20:34+05:30",
"TxId": "af1601c7a14b4becf4bb3b285d85553b39bf234caaf1cd488a284a31a2d9df78",
"Value": {
"AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
"AssetType": "oaccountStatus",
"Status": "suspended",
"StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7"
}
},
{
"IsDelete": "false",
"Timestamp": "2022-12-02T16:19:15+05:30",
"TxId": "4b307b989063e43add5357ab110e19174d586b9746cc8a30c9aa3a2b0b48a34e",
"Value": {
"AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
"AssetType": "oaccountStatus",
"Status": "active",
"StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7"
}
}
]
-
ActivateAccount
- 이 메소드는 토큰 계정을 활성화합니다. 이 메소드는 체인 코드의
Token Admin
또는 지정된 조직의 Org Admin
에 의해서만 호출될 수 있습니다. 삭제된 계정은 활성화할 수 없습니다.
-
func (t *Controller) ActivateAccount(token_id string, org_id string, user_id string) (interface{}, error) {
account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
if err != nil {
return nil, fmt.Errorf("error in getting the generating account_id of (Org-Id: %s, User-Id: %s)", org_id, user_id)
}
auth, err := t.Ctx.Auth.CheckAuthorization("AccountStatus.ActivateAccount", "TOKEN", map[string]string{"org_id": org_id})
if err != nil && !auth {
return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
}
return t.Ctx.Account.ActivateAccount(account_id)
}
- 매개변수:
token_id: string
- 토큰의 ID입니다.
org_id: string
- 현재 조직에 있는 사용자의 멤버쉽 서비스 제공자(MSP) ID입니다.
user_id: string
- 사용자의 사용자 이름 또는 전자메일 ID입니다.
- 반환값:
- 성공 시 지정된 토큰 계정에 대한 계정 상태 객체의 JSON 표현입니다.
- 반환 값 예제:
{
"AssetType": "oaccountStatus",
"StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
"AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
"Status": "active"
}
-
SuspendAccount
- 이 메소드는 토큰 계정을 일시 중지합니다. 일시 중지된 계정은 여전히 읽기 작업을 완료할 수 있습니다. 일시 중지된 계정이 있는 사용자는 토큰을 전송, 수신, 민트 또는 레코딩할 수 없습니다. 이 메소드는 체인 코드의
Token Admin
또는 지정된 조직의 Org Admin
에 의해서만 호출될 수 있습니다. 계정이 일시 중지된 후에는 계정 업데이트 작업을 완료할 수 없습니다. 삭제된 계정은 일시 중지할 수 없습니다.
-
func (t *Controller) SuspendAccount(token_id string, org_id string, user_id string) (interface{}, error) {
account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
if err != nil {
return nil, fmt.Errorf("error in getting the generating account_id of (Org-Id: %s, User-Id: %s)", org_id, user_id)
}
auth, err := t.Ctx.Auth.CheckAuthorization("AccountStatus.SuspendAccount", "TOKEN", map[string]string{"org_id": org_id})
if err != nil && !auth {
return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
}
return t.Ctx.Account.SuspendAccount(account_id)
}
- 매개변수:
token_id: string
- 토큰의 ID입니다.
org_id: string
- 현재 조직에 있는 사용자의 멤버쉽 서비스 제공자(MSP) ID입니다.
user_id: string
- 사용자의 사용자 이름 또는 전자메일 ID입니다.
- 반환값:
- 성공 시 지정된 토큰 계정에 대한 계정 상태 객체의 JSON 표현입니다.
- 반환 값 예제:
{
"AssetType": "oaccountStatus",
"StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
"AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
"Status": "suspended"
}
-
DeleteAccount
- 이 메소드는 토큰 계정을 삭제합니다. 이 메소드는 체인 코드의
Token Admin
또는 지정된 조직의 Org Admin
에 의해서만 호출될 수 있습니다. 계정이 삭제된 후에는 계정 업데이트 작업을 완료할 수 없습니다. 삭제된 계정은 최종 상태이므로 다른 상태로 변경할 수 없습니다. 계정을 삭제하려면 계정 잔액과 보류 중인 잔액이 0이어야 합니다.
-
func (t *Controller) DeleteAccount(token_id string, org_id string, user_id string) (interface{}, error) {
account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
if err != nil {
return nil, fmt.Errorf("error in getting the generating account_id of (Org-Id: %s, User-Id: %s)", org_id, user_id)
}
auth, err := t.Ctx.Auth.CheckAuthorization("AccountStatus.DeleteAccount", "TOKEN", map[string]string{"org_id": org_id})
if err != nil && !auth {
return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
}
return t.Ctx.Account.DeleteAccount(account_id)
}
- 매개변수:
token_id: string
- 토큰의 ID입니다.
org_id: string
- 현재 조직에 있는 사용자의 멤버쉽 서비스 제공자(MSP) ID입니다.
user_id: string
- 사용자의 사용자 이름 또는 전자메일 ID입니다.
- 반환값:
- 성공 시 지정된 토큰 계정에 대한 계정 상태 객체의 JSON 표현입니다.
- 반환 값 예제:
{
"AssetType": "oaccountStatus",
"StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
"AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
"Status": "deleted"
}