Projeto TypeScript com andaimes para o Token Taxonomy Framework
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 Chaincode do TypeScript Andaime.
Modelo
Cada classe de modelo tokenizada estende a classe Token
, que, por sua vez, estende a classe OchainModel
. A classe Token
é importada de ../lib/token
. O Recurso de Persistência Transparente, ou ORM simplificado, é capturado na classe OchainModel
.
import * as yup from 'yup';
import { Id, Mandatory, Validate, ReadOnly } from '../lib/decorators';
import { Token } from '../lib/token';
@Id('token_id')
export class Digicur extends Token<Digicur> {
public readonly assetType = 'otoken';
@Mandatory()
@Validate(yup.string().required().matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/).max(16))
public token_id: string;
@ReadOnly('digicur')
public token_name: string;
@Validate(yup.string().trim().max(256))
public token_desc: string;
@ReadOnly('fungible')
public token_type: string;
@ReadOnly(["divisible","mintable","transferable","burnable","holdable","roles"])
public behaviors: string[];
@ReadOnly({minter_role_name: "minter", burner_role_name: "burner", notary_role_name: "notary"})
public roles: object;
@ReadOnly({max_mint_quantity: 20000})
public mintable: object;
@ReadOnly({decimal: 1})
public divisible: object;
@Validate(yup.number())
public token_to_currency_ratio: number;
@Validate(yup.string())
public currency_representation: string;
}
Controlador
A classe do controlador principal estende a classe OchainController
. Há apenas um controlador principal.
export class DigiCurrCCController extends OchainController{
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.
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 ter um decorador @Validator(...params)
para serem chamados.
- 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
ou por qualquerOrg 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
da 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 umOrg Admin
de qualquer organização.
Métodos de Gerenciamento de Configuração de Token
-
init
- Esse método é chamado quando o chaincode é implantado ou atualizado. 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
ou umOrg 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
ou umOrg 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. -
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 em retenção 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 mantém 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 mantém 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 pelo
Token Admin
do chaincode, peloOrg 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. Este método só pode ser chamado por um
Token Admin
do chaincode. -
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 por um
Token Admin
do chaincode, peloAccountOwner
da conta 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. -
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.
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. -
getSubTransactionById
- 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 ou peloAccountOwner
da conta. -
getSubTransactionsByIdWithFilters
- Este método retorna um array de detalhes do histórico de subtransações da conta 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
ou qualquerOrg 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. 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. Esse método só pode ser chamado por um
Token Admin
ou qualquerOrg 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
para o ID de operação especificado. 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
AccountOwner
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 por um
Token Admin
do chaincode, umOrg Admin
da organização especificada ou oAccountOwner
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 peloAccountOwner
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.
Para evitar o gasto duplo, 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.
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string())
public async buyTicket(token_id: string, seller_org_id: string, seller_user_id: string) {
const token = await this.getTokenObject(token_id);
/**
* The following method this.Ctx.Account.generateAccountId(token_id, seller_org_id, seller_user_id) generates account id of the seller.
*/
const seller_account_id = await this.Ctx.Account.generateAccountId(token_id, seller_org_id, seller_user_id);
/**
* The following method this.Ctx.Token.transfer(seller_account_id, 20, token) transfers the quantity 20 from caller's
* account & to seller's account.
*/
const transaction = await this.Ctx.Token.transfer(seller_account_id, 20, token);
return transaction;
}
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. O exemplo a seguir mostra a maneira incorreta de fazer várias transferências:
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string())
public async sendTokens(token_id: string, user1_org_id: string, user1_user_id: string, user2_org_id: string, user2_user_id: string) {
const token = await this.getTokenObject(token_id);
const user1_account_id = await Account.generateAccountId(token_id, user1_org_id, user1_user_id);
const user2_account_id = await Account.generateAccountId(token_id, user2_org_id, user2_user_id);
await token.transfer(user1_account_id, 20);
await token.transfer(user2_account_id, 30);
}
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: object[])
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 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. -
checkAuthorization
- Use esse método para adicionar uma verificação de controle de acesso a uma operação. Determinados métodos de token só podem ser executados por um
Token Admin
ouAccountOwner
do token ou peloMultipleAccountOwner
para usuários com várias contas. O mapeamento do controle de acesso é descrito no arquivo../lib/constant.ts
. Você pode modificar o controle de acesso editando o arquivo../lib/constant.ts
. 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.export const TOKENACCESS = { ADMIN: { isUserTokenAdmin: ["Admin", "OrgAdmin"], addTokenAdmin: ["Admin"], removeTokenAdmin: ["Admin"], getAllAdmins: ["Admin", "OrgAdmin"], addOrgAdmin: ["Admin", "OrgAdminForOrgId"], removeOrgAdmin: ["Admin", "OrgAdminForOrgId"], getOrgAdmins: ["Admin", "OrgAdmin"], }, TOKEN: { save: ["Admin"], getAllTokens: ["Admin", "OrgAdmin"], get: ["Admin", "OrgAdmin"], update: ["Admin"], getDecimals: ["Admin", "OrgAdmin"], getTokensByName: ["Admin", "OrgAdmin"], addRoleMember: ["Admin", "OrgAdminRoleCheck"], removeRoleMember: ["Admin", "OrgAdminRoleCheck"], isInRole: ["Admin", "OrgAdminForAccountId", "AccountOwner"], getTotalMintedTokens: ["Admin", "OrgAdmin"], getNetTokens: ["Admin", "OrgAdmin"], getTokenHistory: ["Admin", "OrgAdmin"], }, ROLE: { getAccountsByRole: ["Admin"], getOrgAccountsByRole: ["Admin", "OrgAdminForOrgId"], getUsersByRole: ["Admin"], getOrgUsersByRole: ["Admin", "OrgAdminForOrgId"], }, TRANSACTION: { deleteTransactions: ["Admin"], },ACCOUNT: { createAccount: ["Admin", "OrgAdminForOrgId"], associateToken: ["Admin", "OrgAdminForAccountId"], getAllAccounts: ["Admin"], getAllOrgAccounts: ["Admin", "OrgAdminForOrgId"], getAccountsByUser: ["Admin", "OrgAdminForOrgId", "MultipleAccountOwner"], getAccount: ["Admin", "OrgAdminForAccountId", "AccountOwner"], history: ["Admin", "AccountOwner"], getAccountTransactionHistory: ["Admin", "OrgAdminForAccountId", "AccountOwner"], getAccountTransactionHistoryWithFilters: ["Admin", "OrgAdminForAccountId", "AccountOwner"], getSubTransactionsById: ["Admin", "TransactionInvoker"], getSubTransactionsByIdWithFilters: ["Admin", "TransactionInvoker"], getAccountBalance: ["Admin", "OrgAdminForAccountId", "AccountOwner"], getAccountOnHoldBalance: ["Admin", "OrgAdminForAccountId", "AccountOwner"], getOnHoldIds: ["Admin", "OrgAdminForAccountId", "AccountOwner"], getConversionHistory: ["Admin", "OrgAdminForAccountId", "AccountOwner"], }, ACCOUNT_STATUS: { get: ["Admin", "OrgAdminForAccountId", "AccountOwner"], history: ["Admin", "OrgAdminForAccountId", "AccountOwner"], activateAccount: ["Admin", "OrgAdminForOrgId"], suspendAccount: ["Admin", "OrgAdminForOrgId"], deleteAccount: ["Admin", "OrgAdminForOrgId"], }, TOKEN_CONVERSION: { initializeExchangePoolUser: ["Admin"], addConversionRate: ["Admin"], updateConversionRate: ["Admin"], getConversionRate: ["Admin", "OrgAdmin", "AnyAccountOwner"], getConversionRateHistory: ["Admin", "OrgAdmin", "AnyAccountOwner"], tokenConversion: ["Admin", "AnyAccountOwner"], getExchangePoolUser: ["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
da 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.
-
isTokenType
- Este método indica se existe um ativo de token com o ID 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ê atualizará apenas 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 do token especificado.
Métodos de Gerenciamento de Conta
-
getCallerAccountId
- Esse método retorna o ID da conta do chamador.
-
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. Esse método só pode ser chamado peloToken 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. -
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.
-
history
- 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.
-
getAccountsByUser
- Esse método retorna uma lista de todos os IDs de conta de um usuário especificado.
-
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
-
getTransactionById
- Esse método retorna o histórico de um ativo
Transaction
. -
deleteHistoricalTransactions
- Este método retorna um array dos detalhes do histórico de transações de uma conta especificada.
-
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 de uma conta especificada. Esse método só pode ser chamado quando conectado à rede remota do Oracle Blockchain Platform.
-
getSubTransactionHistory
- Este método retorna um array dos detalhes do histórico de transações para uma transação especificada.
-
getSubTransactionHistoryWithFilters
- Este método retorna um array dos detalhes do histórico de subtransações para uma transação especificada.
Gerenciamento de Comportamento de Token
Token
do módulo ../lib/token
.
import { Token } from '../lib/token';
Métodos do Gerenciamento de Comportamento de Token - Comportamento Mintable
-
mint
- Esse método cria uma quantidade de 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. A quantidade deve estar dentro dos valores decimais especificados pelo parâmetro
decimal
do comportamentodivisible
no arquivo de especificação. -
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. 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
- Esse método transfere tokens do chamador da transação para a conta
to_account_id
. O chamador desse método deve ter uma conta e a quantidade deve estar dentro dos valores decimais especificados pelo parâmetrodecimal
do comportamentodivisible
no arquivo de especificação. -
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
para o ID de operação especificado. A retenção só pode ser concluída pelo notário. -
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
AccountOwner
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.
-
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. Este método pode ser invocado por qualquer pessoa.
Métodos de Gerenciamento de Comportamento de Token - Comportamento Queimável