Le jeton ERC20 peut-il être créé et récompensé automatiquement en fonction de la commande? [fermé]

danny

Le jeton ERC20 peut-il être créé et récompensé automatiquement en fonction de la commande? [fermé]


J’ai un projet où j’ai l’intention de payer mes utilisateurs via un Token ERC20.

Nous avons l’intention de développer une machine d’apprentissage de l’IA qui collectera des informations sur les activités des utilisateurs en fonction de la tâche qu’ils doivent accomplir sur notre plate-forme pour être payés. Nous voulons que le logiciel AI interagisse avec le contrat intelligent en le mettant à jour avec les informations nécessaires. Une fois que le contrat intelligent aura reçu ces informations, il frappera le jeton nécessaire et récompensera chaque membre dans son portefeuille éthereum en fonction du rapport fourni par l’IA.

Je voudrais savoir si cela est possible et comment cela pourrait être fait.

Votre aimable contribution sera très appréciée.

Je vous remercie

Andy B.

Utiliser un seul lien API pour générer des résultats et basé sur les résultats des jetons de menthe (même si vous utilisez le meilleur système Oracle de confiance) va à l’encontre de l’objectif d’un contrat intelligent de blockchain qui est de le rendre totalement sans confiance et décentralisé.

Réponses


 norganna

Fonction ERC balanceOf

Le solde ERC 20 d’une adresse de compte est tout simplement ce que la fonction balanceOf indique.

Comme vous pouvez définir la fonction, vous pouvez décider de ce que le solde indique pour chaque compte.

Cela signifie que vous pouvez faire toutes sortes de choses loufoques, selon la manière dont vous décidez que le contrat doit fonctionner.

Il n’y a rien de spécial ou de mystique dans un jeton ERC20, à part la spécification des noms de fonction requis.

Pièces « frappées »

Pour la plupart des contrats, la frappe de pièces n’est rien d’autre que l’ajout d’un nombre à une variable sans soustraire un nombre d’une autre variable. À l’inverse, brûler des pièces consiste à soustraire un nombre d’une variable sans l’ajouter à une autre variable. Généralement, les variables qui gèrent les soldes sont un mappage entre l’adresse du compte et le solde.

Exemple

 /// @notice Will cause a certain `_value` of coins minted for `_to`. /// @param _to The address that will receive the coin. /// @param _value The amount of coin they will receive. function mint(address _to, uint _value) public { require(msg.sender == owner); // assuming you have a contract owner balances[_to] += value; supply += value; require(balances[_to] >= value && supply >= value); // overflow checks emit Transfer(address(0), _to, _value); } 

Mais ce n’est pas balanceOf dans le balanceOf et votre contrat peut faire n’importe quoi à l’intérieur de la fonction balanceOf laquelle vous pouvez éventuellement penser.

Pour répondre spécifiquement à votre question, oui, vous pouvez avoir une fonction que vous seul pouvez appeler qui créera de nouveaux jetons à partir de rien en fonction des actions de l’utilisateur externes au contrat.

Le gaz coûte cher?

Sachez que l’appel de la fonction mint() telle que définie à propos de vous coûtera (ou quelqu’un) du gaz à chaque fois que vous exécutez la fonction pour créer les nouveaux jetons.

Souvent, pour atténuer ce problème, les gens mettront dans le contrat des fonctionnalités « batch » ou « airdrop » afin que plusieurs mises à jour puissent être effectuées en un seul appel et ainsi économiser du gaz.

Exemple:

 /// @notice Will cause a certain `_value` of coins minted for `_to`. /// @param _to The address that will receive the coin. /// @param _value The amount of coin they will receive. function mint(address _to, uint _value) public { require(msg.sender == owner); // assuming you have a contract owner mintToken(_to, _value); } /// @notice Will allow multiple minting within a single call to save gas. /// @param _to_list A list of addresses to mint for. /// @param _values The list of values for each respective `_to` address. function airdropMinting([]address _to_list, []uint _values) public { require(msg.sender == owner); // assuming you have a contract owner require(_to_list.length == _values.length); for (uint i = 0; i < _to_list.length; i++) { mintToken(_to_list[i], _values[i]); } } /// Internal method shared by `mint()` and `airdropMinting()`. function mintToken(address _to, uint _value) internal { balances[_to] += value; supply += value; require(balances[_to] >= value && supply >= value); // overflow checks emit Transfer(address(0), _to, _value); } 

Dans cet exemple, vous pouvez appeler la fonction airdropMinting une fois par jour (ou à tout intervalle que vous jugez approprié) avec une liste d’articles de frappe et elle s’exécutera à tour de rôle, économisant environ 21000 gaz par article supplémentaire.

Remarque: nous avons redéfini mint () pour appeler une fonction de mintToken() interne, et bien que nous aurions pu appeler la fonction mint() d’origine à partir de mintToken() , l’appel d’une fonction externe de l’intérieur a un coût supplémentaire en gaz.

Remarque 2: il y a une limite sur le nombre d’articles que vous pouvez frapper en même temps, et cela est basé sur la limite mondiale de gaz de 8 millions de gaz.

norganna

Si cela répond à votre question, veuillez la marquer comme la bonne réponse. Sinon, faites-le moi savoir afin que je puisse vous aider davantage.

 

[fermé], #de, #en, #et, #la, automatiquement, commande, créé, ERC20?, être, fonction, jeton, Le, peut-il, récompense,

 

yahoo

Laisser un commentaire

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