Comment spécifier le payeur de gaz

Hrach Karapetyan

Comment spécifier le payeur de gaz


comment puis-je spécifier le compte qui paiera pour le gaz disons que 0x1 envoie des jetons à 0x2 mais je veux que 0x3 (j’ai une clé privée) paie pour le gaz tx?

Réponses


 Hrach Karapetyan

Je réponds à ma propre question, j’ai pu spécifier from_address pour toutes les transactions comme ça

 exports . getContract =   function   ( token_name , private_key , owner_address , contract_address , owner_private )   {  
        let  cont_address = token_name + "_address" ; 
        //read ABI dynamically 
        const  abi =  fs . readFileSync ( 'erc20_' + token_name + 'Abi.json' ,   'utf-8' ); 
        // tricky part add user private key to interact with his/her wallet web3 . eth . accounts . wallet . add ( private_key ); 
        // This line helps to add general wallet which will pay for gas web3 . eth . accounts . wallet . add ( owner_private ); 
       const  contract =   new  web3 . eth . Contract ( JSON . parse ( abi ),  contract_address ,{ from :  owner_address ,  gas :   1000000 });  
       return  contract 

Dans ces scénarios, j’ai pu envoyer et recevoir des jetons sans avoir rien dans mon portefeuille. J’espère que cela aide


 quelque chose

Je suppose que tu ne peux pas. Celui qui envoie la transaction doit payer le gaz épuisé.

Ce que vous pouvez faire est de calculer le prix du gaz usé, de le convertir en éther et de renvoyer cette valeur à 0x1 / 0x2 à partir de 0x3.

Permettez-moi d’expliquer cela plus en détail:

Si vous souhaitez le faire automatiquement (pour rembourser les frais de transmission), vous pouvez écrire un script simple pour le faire. Je vous suggère de vérifier le Web3.js car il est beaucoup plus pratique pour résoudre de tels problèmes. Votre algorithme devrait donc fonctionner de cette façon:

  1. Configurez une sorte d’observateur de solde pour le premier compte (0x1). (Vérifiez la réponse correspondante sur la façon de procéder). Donc, lorsque le solde de votre compte 0x1 change, vous devez vérifier si la transaction a été envoyée à 0x2

  2. Si vous voyez la nouvelle transaction de transfert d’éther réussie apparaître, utilisez Web3 pour obtenir le hachage de la transaction, puis obtenez les frais de tx (gaz épuisé) et convertissez-le en Wei.

  3. Envoyez à nouveau le montant converti de 0x3 à 0x1 à l’ aide de Web3.

C’est la façon assez directe et simple de résoudre un tel problème. Mais attention, vous dépenserez plus car 0x3 doit également payer des frais de remboursement.

Hrach Karapetyan

merci donc il sera toujours facturé à partir – adresse?

Hrach Karapetyan

quelque chose entre vous, veuillez expliquer votre dernière déclaration? est de calculer le prix du gaz usé, de le convertir en éther et de renvoyer cette valeur à 0x1 / 0x2 à partir de 0x3. ??? Merci

quelque chose

Oui, mais vous devez écrire un algorithme simple pour ce faire. Vérifiez web3. Ou vous pouvez écrire une telle logique via des contrats intelligents je pense.

Hrach Karapetyan

Je comprends que je ne comprends tout simplement pas ce que vous avez suggéré

quelque chose

J’ai mis à jour la réponse


 Henk

Cela n’est possible que si 0x1 est un contrat. 0x3 peut alors appeler une méthode sur 0x1 qui envoie les jetons à 0x2.

Si 0x1 ne peut pas être un contrat, consultez la réponse de someart

 

#de, comment, gaz, Le, payeur, spécifier

 

yahoo

Laisser un commentaire

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