J'essaye de faire un contrat intelligent pour réaliser automatiquement ce qui suit. Mais je me suis coincé dans la mise en œuvre. Comment puis-je exécuter le (2) Tx sans avoir B pour signer le Tx, c'est-à-dire: Je veux qu'il s'exécute automatiquement une fois (1) est activé et la condition (2) est prête.Limitations intelligentes de contrat dans Ethereum & Fabric
pseudocode (un):
A send 50 to B (1)
if (B > 50) (2)
B send 10 to C (3)
Le code ci-dessus implique plusieurs propriétaires, à savoir. A, B et C. Premièrement, A active le contrat en exécutant/signant Tx (1). Ensuite, le contrat vérifie la condition (2). Maintenant, mais comment courir (3) automatiquement sans avoir à forcer B à signer?
En fin de compte, le contrat est-il en mesure de signer (ou de signer par procuration) sur le comportement de B?
modifier
Qu'en est ci-dessous dans une chaincode? Peut-il fonctionner automatiquement, c'est-à-dire que D doit signer en utilisant la clé privée de D dans (3)?
pseudocode (deux):
A send 50 to B (1)
if (something is true, say Z > 50) (2)
D send 10 to F (3)
merci pour votre réponse. Si je vous comprends bien, je dois faire le calcul à l'étape du dépôt.Mais le problème est maintenant que je veux seulement faire B envoyer C montant 10 lorsque la condition si (B> 50) est vrai, ce qui à son tour est basé sur le résultat de A envoyer 50 à B – wildcolor
merci beaucoup pour la bon exemple. la condition si (B> 50) signifie vérifier le solde total actuel de B. Ceci est vérifié après que B reçoive le paiement de 50 de A. Ainsi, le contrat est-il en mesure de vérifier le solde de B? et deuxièmement, si B.balance> 50, nous voulons alors B.send (10) à C. Dans votre exemple, vous avez utilisé/assigné tout le dépôt à owedToB. Ensuite, vous avez vérifié la condition. Si la condition est vraie, vous avez affecté 10 à owedToC. D'où vient ce 10, A, B ou C? Dans ma question initiale, je veux que B envoie 10 (une partie de B) à C. – wildcolor
Vous avez raison. Il devrait y avoir un owedToB - = 10. Fixe le. Il est possible de voir l'équilibre mais en pratique ce n'est peut-être pas le meilleur moyen. Par exemple, uint BBalance = B.balance; Le problème avec cela est qu'il peut flotter de haut en bas avec des dépôts et des retraits, donc la plupart des contrats sont basés sur les flux d'argent, c'est-à-dire que vous ne déclenchez pas des choses basées sur la vérification du solde du compte; plutôt, une sorte de recettes accumulées. En tout cas, l'idée de l'exemple est juste de montrer le schéma de retrait. L'arithmétique est adaptable à la situation. –