2 votes

Dans Corda, puis-je inclure une partie comme signataire facultatif ?

La signature facultative des transactions est-elle possible ? Je sais que la commande décrit explicitement la requis signataires (parties qui doivent signer une transaction pour qu'elle soit notariée), mais une partie peut-elle avoir l'option de signer ? Comment pourrions-nous mettre cela en œuvre ?

Le cas d'utilisation est une entité anti-blanchiment d'argent qui signera en fonction du niveau de confiance de la partie qui effectue la transaction.

val requiredSigners = listOf<PublicKey>()
val optionalSigners = listOf<PublicKey>()

tb.addCommand(TestContract.Commands.TestCommand(), requiredSigners, optionalSigners)

Le code ci-dessus n'est pas possible en utilisant le SDK existant.

2voto

Nicholas Rogers Points 292

Si le niveau de confiance est connu lors de la création d'une transaction, nous pouvons indiquer explicitement les signataires requis lors de l'ajout de la balise TestCommand() au constructeur de la transaction.

Une fois qu'une transaction est signée, elle devient immuable. Ce qui signifie que nous sommes incapables d'ajouter des signataires supplémentaires requis.

Pour activer les signataires facultatifs, il faut ajuster le contenu des signataires obligatoires en fonction des entrées et des sorties du générateur de transactions (ou de toute autre logique commerciale). Ensuite, dans le contrat Corda, nous pourrions vérifier le nombre de signatures requises en fonction de cette même logique métier.

En bref : les commandes définissent qui doit signer, mais la logique de vérification de votre méthode verify dans votre contrat Corda est ce qui regarde les états inclus et décide quelles clés publiques doivent être dans les commandes. Il est donc parfaitement possible d'avoir une logique conditionnelle entourant les signataires requis.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X