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.

questionAnswers(1)

yourAnswerToTheQuestion