Ethereum construit et truffle compile et déploie des contrats intelligents

Ethereum construit, compile et déploie des contrats intelligents

Puisque l'entreprise va construire un projet nft, elle essaie de construire une chaîne privée Ethereum en centos et ubuntu, qui réussissent toutes, et peuvent être compilées et déployées à l'aide de truffle.Ce qui suit enregistre les problèmes rencontrés et les solutions. suggérons de regarder d'abord le compte Ethereum et le contrat
.

construction de centos

  1. Installer les dépendances associées

yum update -y && yum install git wget bzip2 vim gcc-c++ ntp epel-release nodejs tree -y

  1. Téléchargez le package d'installation, vous pouvez choisir la version que vous voulez ici https://geth.ethereum.org/downloads/, copiez le lien vers wget

wget -c https://gethstore.blob.core.windows.net/builds/geth-alltools-linux-amd64-1.9.24-cc05b050.tar.gz ./

  1. décompresser

tar -zxvf geth-alltools-linux-amd64-1.9.24-cc05b050.tar.gz

  1. Copiez les commandes pertinentes directement dans le bac

cp ./abigen /usr/local/bin/abigen
cp ./bootnode /usr/local/bin/bootnode
cp ./clef /usr/local/bin/clef
cp ./evm /usr/local/bin/evm
cp . /geth /usr/local/bin/geth
cp ./puppeth /usr/local/bin/puppeth
cp ./rlpdump /usr/local/bin/rlpdump
5.
Version plus récente de geth

construire sur ubuntu

add-apt-repository -y ppa:ethereum/ethereum
apt-get update
apt-get install ethereum
geth version

Démarrer Ethereum

  1. Créez un fichier genesis avant de commencer à initialiser le bloc genesis, qui équivaut au nœud principal de la blockchain

    mkdir private_Eth //Créer un dossier pour mettre les fichiers associés
    cd private_Eth //Créer un fichier json dans ce chemin
    vim genesie.json //Le système est livré avec vi, vim doit être téléchargé par lui-même

    Le contenu du fichier est le suivant :

{ "config": { "chainId": 666, "homesteadBlock": 0, "eip150Block": 0, "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000", "eip1 55Block": 0, "eip158Block": 0, "byzantiumBlock": 0, "constantinopleBlock": 0, "petersburgBlock": 0, "istanbulBlock": 0, "ethash": {} }, "nonce": "0x0", "timestamp": "0x5ddf8f3e", "extraData": "0x000000000000000000000000000000000000000000 0000000000000000000", "gasLimit": "0xffffffff", "difficulté": "0x00002", "mixHash": "0x00000000000000000000000000000000000000000000000000000000000000",



















"coinbase": "0x000000000000000000000000000000000000000",
"alloc": { }, "number": "0x0", "gasUsed": "0x0", "parentHash": "0x00000000000000000000000000000000 000000000000000000000000000000 » }




  1. Initialisez le paramètre de bloc de création avec le fichier ci-dessus - datadir spécifie le dossier utilisé pour stocker les données

mkdir data
geth --datadir data init genesis.json

  1. Démarrer Ethereum, avec explication de certains paramètres

geth --datadir dataA --nodiscover --networkid 333 --ipcdisable --port 1111 --rpcport 2222 --http --http.corsdomain=“” --http.port 8545 --http.addr 0.0.0.0 -- console d'autorisation de déverrouillage non sécurisé

geth --datadir data --networkid 1337 --http --http.corsdomain=“*” --http.port 8545 --http.addr “0.0.0.0” --allow-insecure-unlock --rpc.allow- unprotected-txs --port 30303 --dev --dev.period 1 console 2>>geth.log

Spécifiez le répertoire de données – datadir
permet de déverrouiller le compte – allow-insecure-unlock (si ce paramètre n'est pas ajouté, le déverrouillage du compte échouera lors de l'exécution de personal.unlockAccount(), et le contrat ne peut pas être déployé) port de connexion – http.port
8545
pour entrer dans la console interactive La console
spécifie le fichier journal >>geth.log
Pour plus d'explications sur les paramètres, reportez-vous à ce https://blog.csdn.net/pulong0748/article/details/109027085

Compiler et déployer des contrats intelligents avec truffle

Vous pouvez directement vous référer au tutoriel d'introduction sur le site officiel de truffle https://trufflesuite.com/docs/truffle/quickstart
Ici, il est recommandé d'installer truffle directement avec ubuntu. Il y a trop de problèmes d'environnement dans windows. J'utilise la machine virtuelle Ubuntu. La procédure d'installation de la machine virtuelle est ignorée.

  1. Installez d'abord npm

apt install npm
npm -g install npm //upgrade npm

  1. installer la truffe

npm install -g truffe

  1. Obtenez des modèles de projet avec truffle

mkdir MetaCoin
cd MetaCoin
truffle unbox metacoin // Il y a un problème de réseau ici, et le modèle de projet ne peut pas être obtenu directement. Allez directement sur git pour télécharger le fichier zip et décompressez le lien git . Il existe un autre moyen, directement truffle init peut
générer le modèle de projet le plus simple

La structure du répertoire du projet après décompression est illustrée dans la figure ci-dessous, truffle-config.js est vide par défaut Structure du répertoire du projet5. Compiler

compilation de truffes

insérez la description de l'image ici

  1. Déploiement : si vous ne modifiez pas le fichier de configuration truffle-config.js, il sera déployé sur la chaîne intégrée de truffle par défaut (le premier compte fourni avec truffle est utilisé pour le déploiement par défaut), entrez truffle develop pour entrez dans le mode interactif, puis entrez migrate pour déployer.
    insérez la description de l'image ici
    Si vous souhaitez déployer sur la chaîne privée du serveur (j'utilise centos), vous devez modifier le fichier de configuration truffle-config.js, puis créer un compte dans la chaîne privée centos, déverrouiller le compte et laisser les mineurs entrer la chaîne démarre l'extraction, sinon
    le fichier de configuration , et l'adresse IP et le port du serveur seront ajoutés
    insérez la description de l'image ici

centos créer un compte
insérez la description de l'image ici

voir tous les comptesvoir le compte

Déverrouillez le compte
insérez la description de l'image ici
et commencez à miner
insérez la description de l'image ici

Utilisez web3j pour compiler,
déployer et appeler le contrat. Si vous souhaitez utiliser web3j pour compiler et déployer en Java, et appeler le contrat, vous devez générer la version Java du contrat. Il existe plusieurs façons de le générer. Ici Je choisis d'utiliser l'outil de ligne de commande web3j pour le générer dans Ubuntu (le principe est d'être équipé de jdk et de truffe)
installer JDK

https://blog.csdn.net/qq_37034181/article/details/120673562


La façon la plus simple d'installer la CLI Web3j est via le script suivant :

curl -L get.web3j.io | sh && source ~/.web3j/source.sh

web3j génère le fichier java du contrat.
Avant de le générer, vous devez compiler le fichier solidity avec des truffes (la méthode d'opération est comme la compilation truffle ci-dessus), afin que vous obteniez le fichier json du contrat (stocké dans le build dossier)
insérez la description de l'image ici

Après cela, appelez la commande web3j

web3j génère la truffe --truffle-json ./MetaCoin.json -o /home/hqz/Desktop -p com.hqz //-o est la sortie, en spécifiant le chemin de sortie, -p est le package en spécifiant le nom du package

Voici un simple fichier de contrat que j'ai écrit pour les tests
insérez la description de l'image ici

insérez la description de l'image ici

Après avoir obtenu le fichier java du contrat, placez-le dans le projet java et appelez
insérez la description de l'image ici
cette méthode pour déployer le contrat et appeler la méthode du contrat, mais les données semblent ne pas pouvoir être placées dans l'enregistrement de la transaction, donc appelez directement l'interface de transfert d'Ethereum peut mettre les données dans l'enregistrement de transaction, car les données sont en hexadécimal dans Ethereum, il est donc nécessaire d'encoder la chaîne : convertissez la chaîne en unicode, puis convertissez-la en hexadécimal. Voici l'enregistrement de transaction
Relevé d'opération

Interconnexion des nœuds de la blockchain

admin.nodeInfo.enode //Informations sur le nœud actuel
admin.addPeer() //Ajouter une commande de nœud

A rencontré beaucoup de problèmes, il y a eu de nombreuses fois où la connexion a échoué, et a finalement conclu que les fichiers de genèse de différents nœuds doivent être les mêmes, et les paramètres de la commande de démarrage doivent être pris en compte

{ "config": { "chainId": 666, "homesteadBlock": 0, "eip150Block": 0, "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000", "eip1 55Block": 0, "eip158Block": 0, "byzantiumBlock": 0, "constantinopleBlock": 0, "petersburgBlock": 0, "istanbulBlock": 0, "ethash": {} }, "nonce": "0x0", "timestamp": "0x5ddf8f3e", "extraData": "0x000000000000000000000000000000000000000000 0000000000000000000", "gasLimit": "0xffffffff", "difficulté": "0x00002", "mixHash": "0x00000000000000000000000000000000000000000000000000000000000000",



















"coinbase": "0x000000000000000000000000000000000000000",
"alloc": { }, "number": "0x0", "gasUsed": "0x0", "parentHash": "0x00000000000000000000000000000000 000000000000000000000000000000 » }




geth --datadir dataB --nodiscover --networkid 333 --ipcdisable --port 3333 --rpcport 4444 --http --http.corsdomain=“” --http.port 8545 --http.addr 0.0.0.0 -- allow-insecure-unlock --http.api "eth, net, web3, txpool" console

–rpc.txfeecap 0 --rpc.gascap 0

Complétez la solution que java ne peut pas appeler l'interface blockchain
- http.api "eth, net, web3, txpool, personal"

Je suppose que tu aimes

Origine blog.csdn.net/Heqinze/article/details/124432658
conseillé
Classement