Comment créer des transactions et retarder sa diffusion vers d’autres nœuds

Kaki Master Of Time

Comment créer des transactions et retarder sa diffusion vers d’autres nœuds


Je crée un projet où j’ai besoin d’utiliser mon contrat intelligent pour ajouter des données au stockage mais de manière programmée:

J’utilise web3 sur mon serveur nodejs, et je veux créer la transaction comme d’habitude, en utilisant web3 mais retarder ou arrêter la diffusion de la transaction jusqu’à ce que je veuille l’envoyer.

Mon idée est d’obtenir la transaction brute et de l’enregistrer dans une base de données hors chaîne en tant que chaîne. puis quand je veux diffuser la transaction, je peux l’obtenir de la base de données et utiliser web3 pour l’envoyer comme une transaction brute.

Donc, je veux d’abord savoir si mon idée est réalisable, et y a-t-il de toute façon je peux enregistrer des transactions à l’intérieur de mon nœud à la place, puis les envoyer par programme parce que l’idée de sauvegarder des transactions dans des bases de données relationnelles n’est pas vraiment attrayante et semble peu sûre.

Mikko Ohtamaa

Veuillez comprendre que votre nœud exécute lui-même une base de données interne qui n’est ni moins ni plus sécurisée que toute autre base de données.

Kaki Master Of Time

ok, j’ai compris. comment cela va-t-il affecter la façon dont je stocke la transaction.

Réponses


 Rob Hitchens B9lab

Ce que vous décrivez est réalisable. Vous auriez des clients logiciels sous forme de transactions, signer, puis votre serveur enregistrerait leurs actions signées dans votre base de données pour une éventuelle soumission au réseau à une date ultérieure.

Il me semble que vous aurez quelques considérations supplémentaires au niveau de l’application. Par exemple, les utilisateurs résisteraient probablement à l’idée, à moins que les choses ne soient arrangées avec des délais d’expiration définis, du type « bon jusqu’au numéro de bloc n ». Cette expiration devrait probablement être appliquée au niveau du contrat intelligent pour limiter sévèrement ce qui peut être fait par le serveur privilégié.

Il n’y aura pas de problème de double dépense, mais il y a certainement la possibilité d’être trop étendu, auquel cas les transactions échoueront.

Jetez un œil au protocole 0x pour quelque chose qui fonctionne dans ce sens.

J’espère que cela aide.

Kaki Master Of Time

comment une transaction non diffusée se prolongerait-elle? y a-t-il un délai sur la validité d’une transaction avant qu’elle ne soit reconnue par le réseau?

Rob Hitchens B9lab

Pas ce que je voulais dire. Une personne pourrait faire des chèques pour plus de fonds ou d’une autre ressource qu’elle n’en a réellement. La prémisse ici est que de telles transactions ne sont pas soumises au réseau pour le savoir. S’il y a une présomption que le « serveur » vérifiera d’une manière ou d’une autre, je pense que ce sera très difficile à appliquer sans écrire quelque chose dans la chaîne, ce que vous essayez clairement d’éviter.


 Nulik

Ethereum ne prend pas en charge la fonctionnalité de « délai de transaction » que vous décrivez.

Mais …

C’est une mauvaise idée de signer des transactions et de les laisser (au format brut) hors chaîne en attente de soumission. Parce qu’une transaction inclut un champ nonce , qui est un numéro consécutif qui appartient à votre compte. C’est pourquoi votre première transaction bloquera toutes les transactions suivantes. Vous devrez stocker les transactions en attente sans les signer, et seulement lorsque vous aurez vraiment besoin de les exécuter, vous les signerez et les enverrez à la blockchain.

Les transactions brutes sont parfaitement sûres pour être stockées n’importe où, en fait, elles sont stockées dans la base de données blockchain en ce moment et tout le monde y a accès, ce sont des informations publiques.

Kaki Master Of Time

La meilleure idée est donc de créer la transaction sous forme brute et de ne pas la signer. puis faites la signature plus tard (donc la signature ajoute le nonce à la transaction)

Nulik

raw signifie qu’ils sont déjà signés

Kaki Master Of Time

puis-je créer une transaction et la stocker dans ma base de données puis la signer et l’envoyer au réseau?

Nulik

@KakiMasterOfTime exactement, vous signez avant de l’envoyer au réseau

 

#et, comment, créer, d’autres, des, Diffusion, nœuds, retarder, sa, transactions, vers

 

yahoo

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *