Maison Périphériques technologiques Industrie informatique Les migrations de la truffe expliquées

Les migrations de la truffe expliquées

Feb 16, 2025 am 10:47 AM

Truffle Migrations Explained

Migration de la truffe: un outil puissant pour le déploiement automatisé de contrats intelligents

Les migrations sont un moyen pour les développeurs d'automatiser le déploiement des données et sa structure de support. Ils sont très utiles pour gérer le déploiement de nouvelles versions logicielles et ne se limitent pas au développement de la blockchain.

La migration de truffes nous permet de "pousser" des contrats intelligents vers la blockchain Ethereum (local, testnet ou mainnet) et de définir les étapes nécessaires pour connecter le contrat et remplir les données initiales du contrat.

L'avantage réel de la migration de la truffe est de gérer les adresses contractuelles sur la blockchain. Ce travail généralement fastidieux est presque complètement abstrait par la truffe.

Points clés

  • La migration des truffes est essentielle pour automatiser le déploiement de contrats intelligents vers la blockchain Ethereum, qui permet aux développeurs de gérer efficacement les adresses et les interactions des contrats.
  • Ce processus consiste à créer des scripts de migration à l'aide de JavaScript, ce qui aide à déployer en douceur les contrats et à gérer leurs dépendances.
  • Il est crucial d'utiliser truffle compile pour compiler des contrats pour générer des artefacts qui facilitent l'interaction entre le contrat et la blockchain avant d'exécuter la migration.
  • Les développeurs peuvent utiliser une seule commande pour gérer plusieurs contrats et leurs interdépendances, améliorant ainsi l'évolutivité et la maintenabilité des applications de blockchain.

Précautions

Assurez-vous que le cadre de truffes et la CLI de Ganache sont installés.

débutant

Tout d'abord, sélectionnez un dossier de projet et exécutez truffle init. Vous devriez obtenir une sortie comme ceci:

<code>Downloading...
Unpacking...
Setting up...
Unbox successful. Sweet!

Commands:

  Compile:        truffle compile
  Migrate:        truffle migrate
  Test contracts: truffle test</code>
Copier après la connexion
Copier après la connexion

Cette commande crée un projet de truffes de base dans votre répertoire. La structure du répertoire est la suivante:

<code>.
├── contracts
│   └── Migrations.sol
├── migrations
│   └── 1_initial_migration.js
├── test
├── truffle-config.js
└── truffle.js</code>
Copier après la connexion
Copier après la connexion

Tout d'abord, dans le répertoire contracts, créez un nouveau fichier nommé Storage.sol avec le contenu suivant:

pragma solidity ^0.4.21;

contract Storage {

    mapping (string => string) private _store;

    function addData(string key, string value) public {
        require(bytes(_store[key]).length == 0);
        _store[key] = value;
    }

    function removeData(string key) public returns (string) {
        require(bytes(_store[key]).length != 0);
        string prev = _store[key];
        delete _store[key];
        return prev;
    }

    function changeData(string key, string newValue) public {
        require(bytes(_store[key]).length != 0);
        _store[key] = newValue;
    }

}
Copier après la connexion
Copier après la connexion

Migration initiale

Vous avez peut-être remarqué que deux fichiers sont créés lors de l'exécution truffle init: Migrations.sol et 1_initial_migration.js.

Les fichiers de migration initiaux nécessitent rarement des modifications. Leur rôle est essentiellement de suivre les adresses sur la blockchain.

Le fichier

Migrations.sol peut être écrit comme vous le souhaitez, mais il doit se conformer à l'interface fixe créée par la commande truffle init. Vous pouvez faire des migrations avancées dans ces fichiers, mais comme je l'ai dit, cela est rarement nécessaire.

Il en va de même pour les fichiers

1_initial_migration.js. Son objectif est simplement de pousser le fichier Migrations.sol vers la blockchain cible.

Migrer les données

Afin de déployer des contrats intelligents à la blockchain Ethereum, vous devez d'abord écrire le fichier de migration. Tout d'abord, dans votre répertoire migrations, créez un fichier nommé 2_deploy_contracts.js. Votre structure de projet devrait maintenant ressembler à ceci:

<code>Downloading...
Unpacking...
Setting up...
Unbox successful. Sweet!

Commands:

  Compile:        truffle compile
  Migrate:        truffle migrate
  Test contracts: truffle test</code>
Copier après la connexion
Copier après la connexion

Afin de déployer des contrats intelligents en utilisant la migration, nous devons d'abord accéder à leurs artefacts . Ces fichiers décrivent l'adresse du contrat, le réseau où le contrat a été déployé et les fonctions du contrat.

Alors, d'où viennent toutes ces données?

Dans votre répertoire de projet, exécutez truffle compile. Si tout se passe bien, vous devriez obtenir une sortie comme ceci:

<code>.
├── contracts
│   └── Migrations.sol
├── migrations
│   └── 1_initial_migration.js
├── test
├── truffle-config.js
└── truffle.js</code>
Copier après la connexion
Copier après la connexion

Selon la version du compilateur, vous pouvez recevoir des avertissements, mais tant qu'il n'y a pas d'erreurs, vous pouvez continuer.

Vérifiez maintenant à nouveau votre structure de répertoire de projet:

pragma solidity ^0.4.21;

contract Storage {

    mapping (string => string) private _store;

    function addData(string key, string value) public {
        require(bytes(_store[key]).length == 0);
        _store[key] = value;
    }

    function removeData(string key) public returns (string) {
        require(bytes(_store[key]).length != 0);
        string prev = _store[key];
        delete _store[key];
        return prev;
    }

    function changeData(string key, string newValue) public {
        require(bytes(_store[key]).length != 0);
        _store[key] = newValue;
    }

}
Copier après la connexion
Copier après la connexion

Notez qu'il existe maintenant un dossier build contenant deux fichiers - Migrations.json et Storage.json - qui correspondent aux fichiers de contrat intelligents dans le répertoire contracts.

Ces fichiers * .json contiennent des descriptions de leurs contrats intelligents respectifs. Les descriptions incluent:

  • Nom du contrat
  • Contrat ABI (Interface binaire d'application - une liste de toutes les fonctions de contrat intelligent, ainsi que leurs paramètres et valeurs de retour)
  • Contrat Bytecode (Données de contrat compilées)
  • Contrat déployé bytecode (la dernière version de ByteCode déployé sur la blockchain)
  • Version du compilateur du contrat du compilateur
  • La liste des réseaux de contrats déployés et l'adresse de chaque contrat sur le réseau.

Ce fichier permet à Truffle de créer des wrappers JavaScript pour communiquer avec des contrats intelligents. Par exemple, lorsque vous appelez contract.address dans le code JavaScript, le cadre de truffes lit l'adresse du fichier * .json et implémente une conversion facile entre la version contractuelle et le réseau.

Écriture de fichiers de migration

Avec ces connaissances, écrivons le premier fichier de migration. Dans le fichier 2_deploy_contracts.js, écrivez ce qui suit:

<code>.
├── contracts
│   ├── Migrations.sol
│   └── Storage.sol
├── migrations
│   ├── 1_initial_migration.js
│   └── 2_deploy_contracts.js
├── test
├── truffle-config.js
└── truffle.js</code>
Copier après la connexion

La rédaction d'un fichier de migration est aussi simple. Pour exécuter le script de migration, exécutez la commande suivante dans le terminal:

<code>Compiling ./contracts/Migrations.sol...
Compiling ./contracts/Storage.sol...

Writing artifacts to ./build/contracts</code>
Copier après la connexion

Vous devriez recevoir un message d'erreur:

<code>.
├── build
│   └── contracts
│       ├── Migrations.json
│       └── Storage.json
├── contracts
│   ├── Migrations.sol
│   └── Storage.sol
├── migrations
│   ├── 1_initial_migration.js
│   └── 2_deploy_contracts.js
├── test
├── truffle-config.js
└── truffle.js</code>
Copier après la connexion

Cela signifie que la truffe ne peut pas trouver le réseau auquel vous souhaitez déployer.

Pour utiliser la blockchain Ethereum simulée, exécutez ganache-cli dans l'onglet New Terminal. Vous devriez obtenir une sortie comme ceci: (la sortie est omise, la même que le texte d'origine)

Cela signifie que vous avez lancé une blockchain privée qui fonctionne sur LocalHost: 8545. Maintenant, configurons la truffe pour déployer sur le réseau.

Mettez ce qui suit dans le fichier truffle.js:

// 从 Storage.json 文件中获取 Storage 合约数据
var Storage = artifacts.require("./Storage.sol");

// JavaScript 导出
module.exports = function(deployer) {
    // deployer 是 Truffle 用于将合约部署到网络的包装器

    // 将合约部署到网络
    deployer.deploy(Storage);
}
Copier après la connexion

Cela signifie simplement que vous déployez votre contrat sur un réseau exécuté sur localhost: 8545.

Exécutez maintenant truffle migrate. Vous devriez obtenir une sortie comme ceci: (la sortie est omise, la même que le texte d'origine)

truffes migre votre contrat vers le réseau et sauve des artefacts. Dans le répertoire build, dans le fichier Storage.json, vérifiez que cela est correct en vérifiant l'objet networks. Vous devriez voir quelque chose comme ceci: (le contenu est omis, le même que le texte d'origine)

... (Le contenu ultérieur est le même que le texte d'origine, y compris le traitement de plusieurs contrats, réseaux, comptes, bibliothèques, ainsi que le résumé final et la FAQ, qui ne seront pas répétés ici.)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
<🎜>: Grow A Garden - Guide de mutation complet
3 Il y a quelques semaines By DDD
Nordhold: Système de fusion, expliqué
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1673
14
Tutoriel PHP
1278
29
Tutoriel C#
1257
24
Pilote CNCF ARM64: impact et perspectives Pilote CNCF ARM64: impact et perspectives Apr 15, 2025 am 08:27 AM

Ce programme pilote, une collaboration entre le CNCF (Cloud Native Computing Foundation), Ampere Computing, Equinix Metal et ACTUTIE, rationalise ARM64 CI / CD pour les projets GitHub CNCF. L'initiative répond aux problèmes de sécurité et aux performances LIM

Pipeline de traitement d'image sans serveur avec AWS ECS et Lambda Pipeline de traitement d'image sans serveur avec AWS ECS et Lambda Apr 18, 2025 am 08:28 AM

Ce tutoriel vous guide dans la création d'un pipeline de traitement d'image sans serveur à l'aide de services AWS. Nous allons créer un frontend Next.js déployé sur un cluster ECS Fargate, en interagissant avec une passerelle API, des fonctions lambda, des seaux S3 et DynamoDB. Ème

Top 21 newsletters du développeur auquel s'abonner en 2025 Top 21 newsletters du développeur auquel s'abonner en 2025 Apr 24, 2025 am 08:28 AM

Restez informé des dernières tendances technologiques avec ces meilleurs bulletins de développeur! Cette liste organisée offre quelque chose pour tout le monde, des amateurs d'IA aux développeurs assaisonnés du backend et du frontend. Choisissez vos favoris et gagnez du temps à la recherche de rel

CNCF déclenche une percée de parité de plate-forme pour ARM64 et X86 CNCF déclenche une percée de parité de plate-forme pour ARM64 et X86 May 11, 2025 am 08:27 AM

Puzzles CI / CD et solutions pour les logiciels open source dans l'architecture ARM64 Le déploiement de logiciels open source sur l'architecture ARM64 nécessite un environnement CI / CD puissant. Cependant, il existe une différence entre les niveaux de soutien des architectures de processeur ARM64 et traditionnelles x86, qui sont souvent désavantagées. Les développeurs de composants d'infrastructure pour plusieurs architectures ont certaines attentes pour leur environnement de travail: Cohérence: les outils et méthodes utilisés sur les plateformes sont cohérents, évitant la nécessité de modifier le processus de développement en raison de l'adoption de plateformes moins populaires. Performances: La plate-forme et le mécanisme de support ont de bonnes performances pour garantir que les scénarios de déploiement ne sont pas affectés par une vitesse insuffisante lors de la prise en charge de plusieurs plates-formes. Couverture de test: efficacité, conformité et

Avantages du logiciel de télécommunication personnalisé Avantages du logiciel de télécommunication personnalisé May 11, 2025 am 08:28 AM

Le développement de logiciels de télécommunications personnalisés est sans aucun doute un investissement considérable. Cependant, à long terme, vous pouvez réaliser qu'un tel projet peut être plus rentable car il peut augmenter votre productivité comme toute solution prête à l'emploi sur le marché. Comprendre les avantages les plus importants de la construction d'un système de télécommunications personnalisé. Obtenez les fonctionnalités exactes dont vous avez besoin Il y a deux problèmes potentiels avec le logiciel de télécommunications standard que vous pouvez acheter. Certaines manquent de fonctionnalités utiles qui peuvent améliorer considérablement votre productivité. Parfois, vous pouvez les améliorer avec une certaine intégration externe, mais cela ne suffit pas toujours pour les rendre excellents. D'autres logiciels ont trop de fonctions et sont trop compliqués à utiliser. Vous n'en utilisez probablement pas (jamais!). Un grand nombre de fonctionnalités ajoute généralement au prix. En fonction de vos besoins

See all articles