Projeto Scaffolded Go para Estrutura de Taxonomia de Token
O Blockchain App Builder pega a entrada do seu arquivo de especificação de token e gera um projeto de chaincode com andaimes totalmente funcional.
O projeto gera automaticamente classes e funções de ciclo de vida de token, incluindo métodos CRUD e não CRUD. Validação de argumentos, marshalling/unmarshalling e capacidade de persistência transparente são suportados automaticamente.
Para obter informações sobre o projeto andaime e os métodos que não estão diretamente relacionados aos tokens, consulte Projeto Andaime Go Chaincode.
Modelo
O Recurso de Persistência Transparente, ou ORM simplificado, é capturado na classe OchainModel
.
package src
type Digicur struct {
AssetType string `json:"AssetType" final:"otoken"`
Token_id string `json:"Token_id" id:"true" mandatory:"true" validate:"regexp=^[A-Za-z0-9][A-Za-z0-9_-]*$,max=16"`
Token_name string `json:"Token_name" final:"digicur"`
Token_desc string `json:"Token_desc" validate:"max=256"`
Token_type string `json:"Token_type" final:"fungible" validate:"regexp=^fungible$"`
Behavior []string `json:"Behavior" final:"[\"divisible\",\"mintable\",\"transferable\",\"burnable\",\"holdable\",\"roles\"]"`
Roles map[string]interface{} `json:"Roles" final:"{\"minter_role_name\":\"minter\",\"burner_role_name\":\"burner\",\"notary_role_name\":\"notary\"}"`
Mintable map[string]interface{} `json:"Mintable" final:"{\"Max_mint_quantity\":20000}"`
Divisible map[string]interface{} `json:"Divisible" final:"{\"Decimal\":1}"`
Token_to_currency_ratio int `json:"Token_to_currency_ratio" validate:"int"`
Currency_representation string `json:"Currency_representation" validate:"string"`
Metadata interface{} `json:"Metadata,omitempty"`
}
Controladora
Há apenas um controlador principal.
type Controller struct {
Ctx trxcontext.TrxContext
}
Você pode criar qualquer número de classes, funções ou arquivos, mas apenas os métodos que são definidos dentro da classe do controlador principal são invocáveis. Os outros métodos estão ocultos.
Você pode usar os métodos SDK de token para criar métodos personalizados para seu aplicativo de negócios.
Se você usar mais de um método SDK de token em um método personalizado, não use métodos que afetarão os mesmos pares de chave/valor no banco de dados de estado.
Em vez disso, use o método BulkTransferTokens
para transferir para várias contas da conta do chamador, conforme mostrado no trecho de código a seguir.
BulkTransferTokens(token_id string, flow: []map[string]interface{})
Observação:
Se você usar mais de um método SDK de token em um método personalizado que possa afetar os mesmos pares de chave/valor no banco de dados de estado, ative a otimização MVCC para códigos de cadeia de token. Para obter mais informações, consulte Otimização de MVCC.Métodos de Token Gerados Automaticamente
O Blockchain App Builder gera automaticamente métodos para suportar tokens e ciclos de vida de token. Você pode usar esses métodos para inicializar tokens, gerenciar atribuições e contas e concluir outras tarefas de ciclo de vida de token sem qualquer codificação adicional. Os métodos da Controladora devem ser públicos para serem chamados. Os nomes de métodos públicos começam com um caractere maiúsculo. Os nomes dos métodos que começam com um caractere minúsculo são privados.
- Gerenciamento de Controle de Acesso
- Gerenciamento de Configuração de Token
- Gerenciamento de Contas
- Gerenciamento de Atribuições
- Gerenciamento do Histórico de Transações
- Gerenciamento de Comportamento de Token
Métodos de Gerenciamento de Controle de Acesso
-
AddTokenAdmin
- Esse método adiciona um usuário como um
Token Admin
do chaincode. Este método só pode ser chamado por umToken Admin
do chaincode. -
RemoveTokenAdmin
- Este método remove um usuário como um
Token Admin
do chaincode. Este método só pode ser chamado por umToken Admin
do chaincode. -
IsTokenAdmin
- Esse método retornará o valor booliano
true
se o chamador da função forToken Admin
; caso contrário, retornaráfalse
. UmToken Admin
ouOrg Admin
pode chamar essa função em qualquer outro usuário na rede blockchain. Outros usuários só podem chamar esse método em suas próprias contas. -
GetAllTokenAdmins
- Esse método retorna uma lista de todos os usuários que são um
Token Admin
do chaincode. Esse método só pode ser chamado peloToken Admin
ouOrg Admin
do chaincode. -
AddOrgAdmin
- Esse método adiciona um usuário como um
Org Admin
da organização. Esse método só pode ser chamado por umToken Admin
do chaincode ou por umOrg Admin
da organização especificada. -
RemoveOrgAdmin
- Esse método remove um usuário como um
Org Admin
de uma organização. Esse método só pode ser chamado por umToken Admin
do chaincode ou por umOrg Admin
da organização especificada. -
GetOrgAdmins
- Esse método retorna uma lista de todos os usuários que são um
Org Admin
de uma organização. Esse método só pode ser chamado por umToken Admin
do chaincode ou por qualquerOrg Admin
.
Métodos de Gerenciamento de Configuração de Token
-
Init
- Esse método é chamado quando o chaincode é implantado. Cada
Token Admin
é identificado pelas informaçõesuser_id
eorg_id
no parâmetroadminList
obrigatório.user_id
é o nome de usuário ou o ID de e-mail do proprietário da instância ou do usuário que está conectado à instância. Oorg_id
é o ID do provedor de serviços de associação (MSP) do usuário na organização de rede atual. -
Initialize<Token Name>Token
- Esse método cria um token e inicializa as propriedades do token. O ativo e suas propriedades são salvos no banco de dados de estado. Esse método só pode ser chamado por um
Token Admin
do chaincode. -
Update<Token Name>Token
- Esse método atualiza as propriedades do token. Depois que um ativo de token é criado, somente a propriedade
token_desc
e as propriedades personalizadas podem ser atualizadas. Este método só pode ser chamado por umToken Admin
do chaincode. -
GetTokenDecimals
- Esse método retorna o número de casas decimais que foram configuradas para um token fracionário. Se o comportamento
divisible
não tiver sido especificado para o token, o valor padrão será 0. Esse método só pode ser chamado por umToken Admin
ouOrg Admin
do chaincode. -
GetTokenById
- Esse método retornará um objeto de token se ele estiver presente no banco de dados de estado. Esse método só pode ser chamado por um
Token Admin
ouOrg Admin
do chaincode. -
GetTokenHistory
- Este método retorna o histórico de token para um ID de token especificado. Qualquer usuário pode chamar esse método.
-
GetAllTokens
- Esse método retorna todos os tokens armazenados no banco de dados de estado. Esse método só pode ser chamado por um
Token Admin
ouOrg Admin
do chaincode. -
GetTokensByName
- Esse método retorna todos os objetos de token com um nome especificado. Esse método só pode ser chamado por um
Token Admin
ouOrg Admin
do chaincode. Esse método usa consultas avançadas do Berkeley DB SQL e só pode ser chamado quando conectado à rede remota do Oracle Blockchain Platform.
Métodos de Gerenciamento de Conta
-
CreateAccount
- Esse método cria uma conta para um usuário e token especificados. Uma conta deve ser criada para qualquer usuário que tenha tokens a qualquer momento. As contas rastreiam saldos, saldos suspensos e histórico de transações. Um ID de conta é um conjunto alfanumérico de caracteres, prefixado com
oaccount~<token asset name>~
e seguido por um hash do nome de usuário ou ID de e-mail (user_id
) do proprietário da instância ou do usuário que está conectado à instância, o ID do provedor de serviços de associação (org_id
) do usuário na organização de rede atual. Esse método só pode ser chamado por umToken Admin
do chaincode ou por umOrg Admin
da organização especificada. -
AssociateTokenToAccount
- Este método associa um token fungível a uma conta. Esse método só pode ser chamado por um
Token Admin
do chaincode ou por umOrg Admin
da organização relevante. -
GetAccount
- Este método retorna detalhes da conta de um usuário e token especificados. Esse método só pode ser chamado por um
Token Admin
do chaincode, umOrg Admin
da organização especificada ou oAccountOwner
da conta. -
GetAccountHistory
- Este método retorna detalhes do histórico da conta para um usuário e token especificados. Esse método só pode ser chamado por um
Token Admin
do chaincode ou peloAccountOwner
da conta. -
GetAccountOnHoldBalance
- Este método retorna o saldo retido atual de uma conta e token especificados. Esse método só pode ser chamado por um
Token Admin
do chaincode, umOrg Admin
da organização especificada ou oAccountOwner
da conta. -
GetAllAccounts
- Este método retorna uma lista de todas as contas. Este método só pode ser chamado por um
Token Admin
do chaincode. Esse método usa consultas avançadas do Berkeley DB SQL e só pode ser chamado quando conectado à rede remota do Oracle Blockchain Platform. -
GetUserByAccountId
- Esse método retorna detalhes do usuário (
org_id
euser_id
) para uma conta especificada. Esse método pode ser chamado por qualquer usuário do chaincode. -
GetAccountBalance
- Este método retorna o saldo atual de uma conta e token especificados. Esse método só pode ser chamado por um
Token Admin
do chaincode, umOrg Admin
da organização especificada ou oAccountOwner
da conta. -
GetAllOrgAccounts
- Este método retorna uma lista de todas as contas de token que pertencem a uma organização especificada. Esse método só pode ser chamado por um
Token Admin
do chaincode ou por umOrg Admin
da organização especificada.
Métodos de Gerenciamento de Atribuições
-
AddRole
- Esse método adiciona uma atribuição a um usuário e token especificados. Esse método só pode ser chamado por um
Token Admin
do chaincode ou por umOrg Admin
da organização especificada que também tenha a atribuição especificada. -
RemoveRole
- Esse método remove uma atribuição de um usuário e token especificados. Esse método só pode ser chamado por um
Token Admin
do chaincode ou por umOrg Admin
da organização especificada que também tenha a atribuição especificada. -
GetAccountsByRole
- Esse método retorna uma lista de todos os IDs de conta para uma função e um token especificados. Este método só pode ser chamado por um
Token Admin
do chaincode. -
GetAccountsByUser
- Esse método retorna uma lista de todos os IDs conta para um ID organização e ID usuário especificados. Esse método só pode ser chamado por um
Token Admin
do chaincode, umOrg Admin
da organização especificada ou peloAccount Owner
especificado nos parâmetros. -
GetUsersByRole
- Esse método retorna uma lista de todos os usuários de uma atribuição e token especificados. Esse método só pode ser chamado por um
Token Admin
do chaincode ou peloAccount Owner
especificado nos parâmetros. -
IsInRole
- Este método retorna um valor booliano para indicar se um usuário e um token têm uma função especificada. Esse método só pode ser chamado pelo
Token Admin
do chaincode, por umOrg Admin
da organização especificada ou peloAccountOwner
da conta. -
GetOrgUsersByRole
- Esse método retorna informações sobre todos os usuários que têm uma função especificada em uma organização especificada. Esse método só pode ser chamado por um
Token Admin
do chaincode ou por umOrg Admin
da organização especificada. -
GetOrgAccountsByRole
- Esse método retorna informações sobre todas as contas que têm uma atribuição especificada em uma organização especificada. Esse método só pode ser chamado por um
Token Admin
do chaincode ou por umOrg Admin
da organização especificada.
Métodos do Gerenciamento do Histórico de Transações
-
GetAccountTransactionHistory
- Este método retorna um array de detalhes do histórico de transações da conta para um usuário e token especificados. Esse método só pode ser chamado pelo
Token Admin
do chaincode, por umOrg Admin
da organização especificada ou peloAccountOwner
da conta. -
GetAccountTransactionHistoryWithFilters
- Este método retorna um array de detalhes do histórico de transações da conta para um usuário e token especificados. Esse método só pode ser chamado pelo
Token Admin
do chaincode, por umOrg Admin
da organização especificada ou peloAccountOwner
da conta. Esse método só pode ser chamado quando conectado à rede remota do Oracle Blockchain Platform. -
GetSubTransactionsById
- Este método retorna um array de detalhes do histórico de subtransações para uma transação especificada.
-
GetSubTransactionsByIdWithFilters
- Este método retorna um array de detalhes do histórico de subtransações para uma transação especificada.
-
GetTransactionById
- Esse método retorna o histórico de um ativo
Transaction
. -
DeleteHistoricalTransactions
- Este método exclui transações mais antigas do banco de dados de estado.
Métodos do Gerenciamento de Comportamento de Token - Comportamento Mintable
-
IssueTokens
- Esse método cria tokens, que são então de propriedade do chamador do método. O chamador deve ter uma conta e a atribuição de minerador. O número de tokens que podem ser cunhados é limitado pela propriedade
max_mint_quantity
do comportamentomintable
no arquivo de especificação. Se a propriedademax_mint_quantity
não for especificada, um número ilimitado de tokens poderá ser cunhado. A quantidade deve estar dentro dos valores decimais especificados pelo parâmetrodecimal
do comportamentodivisible
no arquivo de especificação. Esse método só pode ser chamado peloAccountOwner
da conta com a atribuição de minter. -
GetTotalMintedTokens
- Este método retorna o número total de tokens cunhados para um token especificado. Esse método só pode ser chamado por um
Token Admin
ouOrg Admin
do chaincode. -
GetNetTokens
- Este método retorna o número líquido total de tokens disponíveis no sistema para um token especificado. O total do token líquido é a quantidade de tokens restantes após os tokens serem gravados. Em forma de equação tokens líquidos = total de tokens cunhados - total de tokens queimados. Se nenhum token for gravado, o número de tokens líquidos será igual ao total de tokens cunhados. Esse método só pode ser chamado por um
Token Admin
ouOrg Admin
do chaincode.
Métodos do Gerenciamento de Comportamento de Token - Comportamento Transferível
-
TransferTokens
- Este método transfere tokens do chamador para uma conta especificada. O chamador do método deve ter uma conta. A quantidade deve estar dentro dos valores decimais especificados pelo parâmetro
decimal
do comportamentodivisible
no arquivo de especificação. Esse método só pode ser chamado peloAccountOwner
da conta. -
BulkTransferTokens
- Esse método é usado para executar a transferência em massa de tokens da conta do chamador para as contas especificadas no objeto
flow
. As quantidades devem estar dentro dos valores decimais especificados pelo parâmetrodecimal
do comportamentodivisible
no chamador file.The da especificação desse método devem ter uma conta já criada. Esse método só pode ser chamado peloAccountOwner
da conta.
Métodos do Token Behavior Management - Holdable Behavior
-
HoldTokens
- Esse método cria uma retenção em nome do proprietário dos tokens com a conta
to_account_id
. Uma conta de notário é especificada, que é responsável por concluir ou liberar a retenção. Quando a retenção é criada, o saldo do token especificado do pagador é colocado em retenção. Um saldo retido não pode ser transferido até que a retenção seja concluída ou liberada. O chamador deste método deve ter uma conta já criada. Esse método só pode ser chamado peloAccountOwner
da conta. -
ExecuteHoldTokens
- Este método conclui uma retenção de um token. Uma quantidade de tokens anteriormente mantidos por um proprietário de token é transferida para um receptor. Se o valor
quantity
for menor que o valor de retenção real, o valor restante estará disponível novamente para o proprietário original dos tokens. Esse método só pode ser chamado pelo IDAccountOwner
com a atribuiçãonotary
. A retenção só pode ser concluída pelo notário. -
ReleaseHoldTokens
- Este método libera uma retenção de tokens. A transferência não foi concluída e todos os tokens mantidos estão disponíveis novamente para o proprietário original. Esse método pode ser chamado pelo ID
Account Owner
com a atribuiçãonotary
dentro do limite de tempo especificado ou pelo pagador, beneficiário ou notário após o limite de tempo especificado. -
GetOnHoldIds
- Este método retorna uma lista de todos os IDs de retenção de uma conta especificada. Esse método pode ser chamado pelo
Token Admin
do chaincode, por umOrg Admin
da organização especificada ou peloAccount Owner
da conta. -
GetOnHoldDetailsWithOperationId
- Este método retorna os detalhes da transação em retenção para um ID e token de operação especificados. Este método pode ser invocado por qualquer pessoa.
-
GetOnHoldBalanceWithOperationId
- Este método retorna o saldo retido para um ID de operação e token especificados. Este método pode ser invocado por qualquer pessoa.
Métodos de Gerenciamento de Comportamento de Token - Comportamento Queimável
-
BurnTokens
- Esse método desativa ou grava tokens da conta do chamador da transação. O chamador desse método deve ter uma conta e a função de gravador. A quantidade deve estar dentro dos valores decimais especificados pelo parâmetro
decimal
do comportamentodivisible
no arquivo de especificação. Esse método pode ser chamado peloAccount Owner
da conta com a atribuição de gravador.
Métodos Personalizados
Você pode usar os métodos SDK de token para criar métodos personalizados para seu aplicativo de negócios.
Certifique-se de rastrear o valor de retorno ao usar os métodos SDK de token. Além disso, para evitar gastos duplos, não combine várias funções assíncronas que operam nos mesmos pares de chave/valor no banco de dados de estado. Em vez disso, use o método BulkTransferTokens
para fazer várias transferências em um método.
O exemplo a seguir mostra como usar métodos SDK de token em métodos personalizados. Quando o método BuyTicket
é chamado, ele transfere 20 tokens da conta do chamador para a conta do vendedor e retorna a mensagem de transação da transferência.
func (t *Controller) BuyTicket(TokenId string, SellerOrgId string, SellerUserId string) (interface{}, error){
token, err := t.Ctx.Token.Get(TokenId)
if err != nil {
return nil, err
}
/**
* The following method t.Ctx.Account.GenerateAccountId(TokenId, SellerOrgId, SellerUserId) generates account id of the seller
*/
sellerAccountId, err := t.Ctx.Account.GenerateAccountId(TokenId, SellerOrgId, SellerUserId)
if err != nil {
return nil, err
}
/**
* The following method t.Ctx.Token.Transfer(sellerAccountId, 20, token) transfers the quantity 20 from caller's
* account & to seller's account.
*/
transaction, err := t.Ctx.Token.Transfer(sellerAccountId, 20, token)
if err != nil {
return nil, err
}
return transaction, nil
}
Métodos SDK de Token
- Gerenciamento de Controle de Acesso
- Gerenciamento de Configuração de Token
- Gerenciamento de Contas
- Gerenciamento de Atribuições
- Gerenciamento do Histórico de Transações
- Gerenciamento de Comportamento de Token
Métodos de Gerenciamento de Controle de Acesso
Token Admin
, Org Admin
ou AccountOwner
do token. Você pode usar esse recurso para garantir que as operações sejam executadas apenas pelos usuários pretendidos. Qualquer acesso não autorizado resulta em um erro. Para usar a função de controle de acesso, importe a classe Authorization
do módulo ../lib/auth
.import { Authorization } from '../lib/auth';
-
AddAdmin
- Esse método adiciona um usuário como
Token Admin
do chaincode do token. -
RemoveAdmin
- Esse método remove um usuário como
Token Admin
do chaincode do token. -
GetAllAdmins
- Esse método retorna uma lista de todos os usuários que são um
Token Admin
do chaincode do token. -
GetAllAdminUsers
- Esse método retorna uma lista de todos os usuários que são um
Token Admin
do chaincode do token. -
CheckAuthorization
- Use este método para adicionar controle de acesso ao seu chaincode. Muitos dos métodos de token gerados automaticamente usam controle de acesso. O mapeamento entre o receptor do SDK e os métodos que têm controle de acesso é descrito no arquivo
oChainUtil.go
. Para usar seu próprio controle de acesso ou desativar o controle de acesso, remova o código de controle de acesso dos métodos de controlador gerados automaticamente e métodos personalizados.var t TokenAccess var r RoleAccess var a AccountAccess var as AccountStatusAccess var h HoldAccess var ad AdminAccess var trx TransactionAccess var tc TokenConversionAccess var auth AuthAccess auth.IsTokenAdmin = []string{"Admin", "MultipleAccountOwner"} trx.DeleteHistoricalTransactions = []string{"Admin"} ad.AddAdmin = []string{"Admin"} ad.RemoveAdmin = []string{"Admin"} ad.GetAllAdmins = []string{"Admin", "OrgAdmin"} ad.AddOrgAdmin = []string{"Admin", "OrgAdminOrgIdCheck"} ad.RemoveOrgAdmin = []string{"Admin", "OrgAdminOrgIdCheck"} ad.GetOrgAdmins = []string{"Admin", "OrgAdmin"} ad.IsTokenAdmin = []string{"Admin", "MultipleAccountOwner", "OrgAdmin"} t.Save = []string{"Admin"} t.GetAllTokens = []string{"Admin", "OrgAdmin"} t.Update = []string{"Admin"} t.GetTokenDecimals = []string{"Admin", "OrgAdmin"} t.GetTokensByName = []string{"Admin", "OrgAdmin"} t.AddRoleMember = []string{"Admin", "OrgAdminRoleCheck"} t.RemoveRoleMember = []string{"Admin", "OrgAdminRoleCheck"} t.IsInRole = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} t.GetTotalMintedTokens = []string{"Admin", "OrgAdmin"} t.GetNetTokens = []string{"Admin", "OrgAdmin"} t.Get = []string{"Admin", "OrgAdmin"} t.GetTokenHistory = []string{"Admin", "OrgAdmin"} a.CreateAccount = []string{"Admin", "OrgAdminOrgIdCheck"} a.AssociateToken = []string{"Admin", "OrgAdminAccountIdCheck"} a.GetAllAccounts = []string{"Admin"} a.GetAllOrgAccounts = []string{"Admin", "OrgAdminOrgIdCheck"} a.GetAccount = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} a.History = []string{"Admin", "AccountOwner"} a.GetAccountTransactionHistory = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} a.GetAccountTransactionHistoryWithFilters = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} a.GetSubTransactionsById = []string{"Admin", "TransactionInvoker"} a.GetSubTransactionsByIdWithFilters = []string{"Admin", "TransactionInvoker"} a.GetAccountBalance = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} a.GetAccountOnHoldBalance = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} a.GetOnHoldIds = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} a.GetAccountsByUser = []string{"Admin", "OrgAdminOrgIdCheck", "MultipleAccountOwner"} as.Get = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} as.ActivateAccount = []string{"Admin", "OrgAdminOrgIdCheck"} as.SuspendAccount = []string{"Admin", "OrgAdminOrgIdCheck"} as.DeleteAccount = []string{"Admin", "OrgAdminOrgIdCheck"} r.GetAccountsByRole = []string{"Admin"} r.GetUsersByRole = []string{"Admin"} r.GetOrgAccountsByRole = []string{"Admin", "OrgAdminOrgIdCheck"} r.GetOrgUsersByRole = []string{"Admin", "OrgAdminOrgIdCheck"} tc.InitializeExchangePoolUser = []string{"Admin"} tc.AddConversionRate = []string{"Admin"} tc.UpdateConversionRate = []string{"Admin"} tc.GetConversionRate = []string{"Admin", "OrgAdmin", "AnyAccountOwner"} tc.GetConversionRateHistory = []string{"Admin", "OrgAdmin", "AnyAccountOwner"} tc.TokenConversion = []string{"Admin", "AnyAccountOwner"} tc.GetExchangePoolUser = []string{"Admin"}
-
IsUserTokenAdmin
- Esse método retornará o valor booliano
true
se o chamador da função forToken Admin
. Caso contrário, o método retornaráfalse
. -
AddOrgAdmin
- Esse método adiciona um usuário como um
Org Admin
da organização. -
RemoveOrgAdmin
- Esse método remove um usuário como um
Org Admin
de uma organização. -
GetOrgAdmins
- Esse método retorna uma lista de todos os usuários que são um
Org Admin
de uma organização.
Métodos de Gerenciamento de Configuração de Token
-
GetTokenDecimals
- Esse método retorna o número de casas decimais disponíveis para um token fracionário. Se o comportamento
divisible
não for especificado, o valor padrão será 0. -
GetAllTokens
- Este método retorna todos os ativos de token salvos no banco de dados de estado. Esse método usa consultas avançadas do Berkeley DB SQL e só pode ser chamado quando conectado à rede remota do Oracle Blockchain Platform.
-
GetTokensByName
- Este método retorna todos os ativos de token com o nome especificado. Esse método usa consultas avançadas do Berkeley DB SQL e só pode ser chamado quando conectado à rede remota do Oracle Blockchain Platform.
-
Get
- Esse método retornará um objeto de token se ele estiver presente no banco de dados de estado. Esse método só pode ser chamado por um
Token Admin
do chaincode do token. -
IsTokenType
- Este método testa se existe um ativo de token para um ID de token especificado.
-
Save
- Este método cria um token e salva suas propriedades no banco de dados de estado.
-
Update
- Esse método atualiza as propriedades do token. Depois que um ativo de token for criado, você só poderá atualizar o valor
token_desc
e suas propriedades personalizadas. -
GetByRange
- Esse método chama o método fabric
getStateByRange
internamente. Embora qualquer ativo com o ID fornecido seja retornado do razão, esse método converte o ativo no tipo de Ativo chamador. -
History
- Este método retorna o histórico de token para um ID de token especificado.
Métodos de Gerenciamento de Conta
-
GenerateAccountId
- Esse método retorna um ID de conta, que é um conjunto alfanumérico de caracteres, prefixado com
oaccount~<token asset name>~
e seguido por um hash do nome de usuário ou ID de e-mail (user_id
) do proprietário da instância ou do usuário que está conectado à instância, o ID do provedor de serviços de associação (org_id
) do usuário na organização de rede atual e o ID de token exclusivo (token_id
). -
CreateAccount
- Esse método cria uma conta para um usuário e token especificados. Todo usuário que tem tokens em qualquer ponto deve ter uma conta. As contas rastreiam o saldo de um usuário, o saldo retido e o histórico de transações. Um ID de conta é um conjunto alfanumérico de caracteres, prefixado com
oaccount~<token asset name>~
e seguido por um hash do nome de usuário ou ID de e-mail (user_id
) do proprietário da instância ou do usuário que está conectado à instância, o ID do provedor de serviços de associação (org_id
) do usuário na organização de rede atual. Este método só pode ser chamado peloToken Admin
do chaincode. -
AssociateToken
- Este método associa um token fungível a uma conta. Este método só pode ser chamado por um
Token Admin
do chaincode. -
GetAccountWithStatus
- Este método retorna detalhes da conta de uma conta especificada, incluindo o status da conta.
-
GetAccount
- Este método retorna detalhes da conta de uma conta especificada.
-
GetAccountHistory
- Este método retorna um array dos detalhes do histórico da conta para uma conta especificada.
-
GetAccountOnHoldBalance
- Este método retorna o saldo retido para uma conta especificada.
-
GetAllAccounts
- Este método retorna uma lista de todas as contas. Esse método usa consultas avançadas do Berkeley DB SQL e só pode ser chamado quando conectado à rede remota do Oracle Blockchain Platform.
-
GetUserByAccountId
- Este método retorna os detalhes do usuário de uma conta especificada.
-
GetAccountBalance
- Este método retorna o saldo da conta de uma conta especificada.
-
GetAllOrgAccounts
- Este método retorna uma lista de todas as contas de token que pertencem a uma organização especificada.
Métodos de Gerenciamento de Atribuições
-
AddRoleMember
- Esse método adiciona uma atribuição a um usuário e token especificados.
-
RemoveRoleMember
- Esse método remove uma atribuição de um usuário e token especificados.
-
GetAccountsByRole
- Esse método retorna uma lista de todas as contas de uma atribuição e token especificados.
-
GetUsersByRole
- Esse método retorna uma lista de todos os usuários de uma atribuição e token especificados.
-
IsInRole
- Este método indica se um usuário e um token têm uma atribuição especificada.
-
RoleCheck
- Este método verifica se o ID da conta fornecido é membro de qualquer função.
-
GetOrgUsersByRole
- Esse método retorna informações sobre todos os usuários que têm uma função especificada em uma organização especificada.
-
GetOrgAccountsByRole
- Esse método retorna informações sobre todas as contas que têm uma atribuição especificada em uma organização especificada.
Métodos do Gerenciamento do Histórico de Transações
-
GetAccountTransactionHistory
- Este método retorna um array dos detalhes do histórico de transações de uma conta especificada.
-
GetAccountTransactionHistoryWithFilters
- Este método retorna um array dos detalhes do histórico de transações para uma transação especificada. Esse método só pode ser chamado quando conectado à rede remota do Oracle Blockchain Platform.
-
GetSubTransactionsById
- Este método retorna um array dos detalhes do histórico de transações para uma transação especificada.
-
GetSubTransactionsByIdWithFilters
- Este método retorna um array dos detalhes do histórico de transações para uma transação especificada.
-
GetTransactionById
- Esse método retorna o histórico de um ativo
Transaction
. -
DeleteHistoricalTransactions
- Este método exclui transações mais antigas do banco de dados de estado.
Métodos do Gerenciamento de Comportamento de Token - Comportamento Mintable
-
Mint
- Esse método cria tokens, que são então de propriedade do chamador do método. O chamador deve ter uma conta e a atribuição de minerador. O número de tokens que podem ser cunhados é limitado pela propriedade
max_mint_quantity
do comportamentomintable
no arquivo de especificação. Se a propriedademax_mint_quantity
não for especificada, um número ilimitado de tokens poderá ser cunhado. A quantidade deve estar dentro dos valores decimais especificados pelo parâmetrodecimal
do comportamentodivisible
no arquivo de especificação. Esse método só pode ser chamado peloAccountOwner
da conta com a atribuição de minter. -
GetTotalMintedTokens
- Este método retorna o número total de tokens cunhados.
-
GetNetTokens
- Este método retorna a quantidade líquida de tokens que estão disponíveis no sistema para um token especificado. Os tokens líquidos são a quantidade de tokens restantes após os tokens serem gravados. Na forma de equação: tokens líquidos = total de tokens cunhados - total de tokens queimados. Se nenhum token for gravado, o número de tokens líquidos será igual ao total de tokens cunhados.
-
GetMaxMintQuantity
- Esse método retorna a quantidade mínima máxima de um token. Se o comportamento
max_mint_quantity
não for especificado, o valor padrão será 0, o que permite que qualquer número de tokens seja cunhado.
Métodos do Gerenciamento de Comportamento de Token - Comportamento Transferível
-
Transfer
- Este método transfere tokens do chamador para uma conta especificada. O chamador do método deve ter uma conta. A quantidade deve estar dentro dos valores decimais especificados pelo parâmetro
decimal
do comportamentodivisible
no arquivo de especificação. Esse método só pode ser chamado peloAccountOwner
da conta. -
BulkTransfer
- Esse método é usado para executar a transferência em massa de tokens da conta do chamador para as contas especificadas no objeto
flow
. O chamador deste método deve ter uma conta já criada.
Métodos do Token Behavior Management - Holdable Behavior
-
Hold
- Esse método cria uma retenção em nome do proprietário dos tokens com a conta
to_account_id
. Uma conta de notário é especificada, que é responsável por concluir ou liberar a retenção. Quando a retenção é criada, o saldo do token especificado do pagador é colocado em retenção. Um saldo retido não pode ser transferido até que a retenção seja concluída ou liberada. O chamador deste método deve ter uma conta já criada. -
ExecuteHold
- Este método conclui uma retenção de tokens, transferindo a quantidade especificada de tokens anteriormente em retenção para o receptor. Se o valor
quantity
for menor que o valor de retenção real, o valor restante estará disponível novamente para o proprietário original dos tokens. Esse método só pode ser chamado pelo IDAccountOwner
com a atribuiçãonotary
. -
ReleaseHold
- Este método libera uma retenção de tokens. A transferência não foi concluída e todos os tokens mantidos estão disponíveis novamente para o proprietário original. Esse método pode ser chamado pelo ID
Account Owner
com a atribuiçãonotary
dentro do limite de tempo especificado ou pelo pagador, beneficiário ou notário após o limite de tempo especificado. -
GetOnHoldIds
- Este método retorna uma lista de todos os IDs de retenção de um usuário e token especificados.
-
GetOnHoldDetailsWithOperationID
- Este método retorna os detalhes da transação em retenção para um ID e token de operação especificados.
-
GetOnHoldBalanceWithOperationID
- Este método retorna o saldo retido para um ID de operação e token especificados.
Métodos de Gerenciamento de Comportamento de Token - Comportamento Queimável