3 votes

Déployer un contrat intelligent sur la blockchain uniquement en utilisant l'API EVM sans utiliser geth ou tuffle ou ganache ?

J'ai implémenté ma blockchain personnelle en utilisant node js pour des utilisations IoT et je veux maintenant déployer du code de contrat intelligent dans cette blockchain sans utiliser geth ou tuffle ou ganache OU Remix ou web3.js donc mon but est d'utiliser EVM API juste pour compiler et exécuter un contrat intelligent. Alors, comment ?

0voto

Aditya Singh Points 522

Vous pouvez consulter les spécifications du contrat ABI

Suivez aquí

L'interface binaire d'application (ABI) du contrat est la manière standard de d'interagir avec les contrats dans l'écosystème Ethereum, à la fois de l'extérieur de la la blockchain que pour l'interaction entre contrats. Les données sont codées en fonction de leur type, comme décrit dans cette spécification. Le codage de codage n'est pas autodécrivant et nécessite donc un schéma pour être décoder.

Aussi,

Pour intégrer Ethereum, il faut un nœud client Ethereum tel que Geth, parity , quorum etc. avec RPC / IPC activé.

Si vous souhaitez simplement récupérer les données existantes des contrats, ou envoyer des transactions signées hors ligne à partir de la chaîne publique d'Ethereum, vous pouvez simplement utiliser un nœud public tel que Infura sans avoir besoin d'installer un client local comme Parity ou Geth.

Pour le développement de contrats intelligents, vous pouvez également installer Test RPC qui va créer un réseau en mémoire sans truffe ni ganache.

testrpc est un client Ethereum basé sur Node.js pour les tests et le développement. développement. Il utilise ethereumjs pour simuler le comportement complet du client et pour et rendre le développement d'applications Ethereum beaucoup plus rapide. Il inclut également fonctions et caractéristiques RPC populaires (comme les événements) et peut être exécuté déterministe pour faire du développement un jeu d'enfant.

pour plus de détails sur testrpc , suivre aquí

Pour installer testrpc

npm install -g ethereumjs-testrpc

Note

Ganache CLI est la dernière version de TestRPC : un émulateur de blockchain rapide et personnalisable. émulateur de blockchain. Il vous permet d'effectuer des appels à la blockchain sans les frais généraux de l'exécution d'un nœud Ethereum réel.

Pour installer ganache-cli

npm install -g ganache-cli

Étapes:-

  1. Créer un contrat intelligent pour une application iot.

  2. Compiler le contrat à l'aide du compilateur solc solidity pour nodejs

  3. A partir de l'objet contrat JS compilé, récupérez l'objet interface.

    La chaîne de caractères du bytecode, qui est la représentation binaire du contrat est fondamentalement un ensemble d'instructions d'assemblage (en quelque sorte) pour que la machine virtuelle d'Ethereum les exécute.

  4. Déployer le contrat sur le réseau testrpc

aquí est la solution détaillée sans utiliser de truffe ou de ganache

Pour déployer uniquement en utilisant le Bytecode

Voir aussi pour déployer en utilisant uniquement le bytecode : aquí y aquí et le Papier jaune

0voto

msp Points 56

Compilez votre contrat (le fichier résultat est /build/contracts/YourContract.json) puis déployez-le sans truffe :

// Dependencies
const Web3 = require('web3');
const fs = require("fs");

// Load Parameter
let PROVIDER = ...
let FROM_ACCOUNT = ...
let FROM_PRIVATE_KEY = ...

// Create web3 instance
const web3 = new Web3(new Web3.providers.HttpProvider(PROVIDER), null, {transactionConfirmationBlocks: 1});

// Deploy
web3.eth.getTransactionCount(FROM_ACCOUNT)
    .catch(e => {
        console.log(e);
    })
    .then(txCount => {

        // construct the transaction data
        const txData = {
            nonce: web3.utils.toHex(txCount),
            from: FROM_ACCOUNT,
            data: JSON.parse(fs.readFileSync('./build/contracts/YourContract.json', 'utf8')).bytecode,
            gasLimit: web3.utils.toHex(7900000),
            gasPrice: web3.utils.toHex(web3.utils.toWei('12', 'gwei')),
        };
        console.log('nonce             : ' + txData.nonce);
        console.log('gasPrice          : ' + txData.gasPrice);

        // contract creation
        web3.eth.accounts.signTransaction(txData, FROM_PRIVATE_KEY).then(signed => {
            console.log('sign transaction  : OK');

            web3.eth.sendSignedTransaction(signed.rawTransaction)
                .on("error", error => {
                    console.log('send transaction  : ' + error);
                    throw "DEPLOY FAILED";
                })
                .on("receipt", (receipt) => {
                    console.log('send transaction  : OK');
                    let contractAddress = (receipt.contractAddress === null) ? 'n.a.' : receipt.contractAddress;
                    console.log("CONTRACT_ADDRESS  : " + contractAddress);
                });
            });
        });
    });

Dépendances web3 v1.2.1 et fs v0.0.2

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