Problema de violação de dados Corda

fundo: Aprendemos que a corda não é inviolável, mas é inviolável. Portanto, se um dos nós manipulou um estado diretamente no banco de dados, outros nós poderão detectá-lo e sinalizá-lo se esse estado foi usado em transações subsequentes. No entanto, nossos resultados de teste não foram de acordo com nossa expectativa. Corda não sinalizou o estado que foi violado e, de fato, registrou o novo estado com dados violados em todos os nós participantes.

Pré-requisitos: Comentar validações de contrato: comentamos o código do contrato para verificar se a violação de dados é detectada no Corda sem que a verificação seja explicitamente feita no nível do comando.

Etapas para replicar:

Iniciar obrigação Cordapp.

Crie 3 obrigações entre a Parte A e a Parte B (100 THB, 256 THB e 100 THB)

Edite a tabela VAULT_STATES no banco de dados do Partido B, observando as diferenças entre os hexágonos.As obrigações com quantia diferente estão à esquerda e as duas obrigações com a mesma quantia estão à direita. No editor, quando estão na mesma quantidade, existem duas diferenças (presumivelmente linear-id e timestamp) e quando estão em uma quantidade diferente, a terceira discrepância é mostrada à esquerda.

Substitua a parte específica pelo valor mais baixo e atualize o Vault usando o SQL no Vault da Parte B:

Após esta atualização, verifique o cofre da Parte B e os valores serão alterados para 100 THB nas três obrigações.

No entanto, o cofre do Partido A exibirá valores originais (100, 256, 100), pois os dados não foram adulterados no cofre do Partido A.

Transferir TODAS as obrigações da Parte B para a Parte C

Resultado das obrigações de transferência: a Parte B não tem mais obrigações

Resultado das obrigações de transferência: a Parte C receberá todas as Obrigações da Parte B (100 THB para todos, ou seja, dados adulterados foram repassados à nova parte)

Resultado das obrigações de transferência: o cofre da Parte A também será atualizado com dados adulterados. Não foi possível identificar ou sinalizar dados adulterados.

Como fazer com que os nós participantes do Corda detectem estados adulterados? Perdi algumas configurações ao configurar o nó?

questionAnswers(1)

yourAnswerToTheQuestion