Quando chamar getAssetRegistry para atualizar ativos (e o equivalente dos participantes)
Sou capaz de escrever alguns contratos inteligentes simplistas usando meu ambiente de desenvolvimento do compositor, mas estou confuso sobre quando persistir ativos e participantes no registro.
Eu li os documentos emcompositer-runtime.AssetRegistry e agetAssetRegistry função para retornar um objeto de registro de ativos e executar atualizações, mas ainda não estou claro quais ativos / participantes devem ser atualizados.
Aqui está um exemplo (pode não estar totalmente funcionando):
participant Trader identified by userID {
o String userID
o String firstName
o String lastName
}
participant Bank identified by bank,ID {
o String bankID
o String description
--> BankAccount[] accounts optional
}
asset BankAccount identified by accountID {
o String accountID
o Double balance
o AccountTrx[] transactions optional
--> Trader owner
}
transaction AccountTrx {
o Double amount
o String operation
--> BankAccount account
--> Trader party
}
Se eu escrever uma função de processador de transações para executar uma transação da conta (por exemplo, uma retirada ou depósito) como esta:
/**
* Perform a deposit or withdrawal from a bank account
* @param {org.acme.auctionnetwork.AccountTrx} transaction
* @transaction
*/
function execTrx(transaction) {
// initialize array of transactions if none exist
if(transaction.account.transactions == null) {
transaction.account.transactions = [];
}
// determine whether this is a deposit or withdrawal and execute accordingly
if(transaction.operation == 'W') {
transaction.account.balance -= transaction.amount;
} else if(transaction.operation == 'D') {
transaction.account.balance += transaction.amount;
}
// add the current transaction to the bank account's transaction history
transaction.account.transactions.push(transaction);
// update the registry (but which ones???)
return getAssetRegistry('org.acme.auctionnetwork.BankAccount')
.then(function(regBankAccount) {
return regBankAccount.update(transaction.account);
});
}
Estou certo ao supor que apenas o ativo BankAccount precisa ser atualizado? (porque a variável de saldo no ativo BankAccount foi atualizada)
Também precisaria atualizar os participantes do Banco e do Negociador, uma vez que o participante do Negociador fazia parte da transação AccountTrx e o participante do Banco está vinculado ao ativo BankAccount? Não vejo que nada tenha mudado no participante do Trader ou no ativo BankAccount.