[Ethereum Development 06] Introducción al desarrollo de trufas

1. Qué es la trufa

1. Información general

Truffle es un marco de desarrollo de Ethereum de clase mundial, lo que hace que el desarrollo de Ethereum sea simple y eficiente. Tiene las siguientes características:

  1. Compilación, vinculación, desarrollo y gestión binaria de contratos inteligentes incorporados.
  2. Pruebas de contrato automatizadas para un desarrollo rápido
  3. Scripting, implementación escalable y marco de migración.
  4. Gestión de red para implementación en cualquier número de redes públicas y privadas
  5. Basado en EthPM y NPM, y utiliza el estándar ERC190 para la gestión de paquetes
  6. Proporciona una consola interactiva para la comunicación de contratos.
  7. Proporciona una canalización de compilación configurable para una integración estrecha
  8. Ejecutar scripts de ejecución externos en el entorno Truffle

2. Sitio web oficial

El sitio web oficial es inestable y, a menudo, no se puede abrir

3. Localización del sitio web oficial

Clone el código localmente, compílelo y acceda a él localmente (¡perfecto!)

2. Cómo instalar la trufa

npm install -g truffle

Ejecute el siguiente comando para probar la instalación:

truffle version

3. Crea un proyecto vacío

3.1 Preparativos

mkdir truffleTest
cd truffleTest

3.2 Ejecución de comandos

truffle init

Efecto de ejecución:
inserte la descripción de la imagen aquí
se generarán los siguientes archivos en el directorio actual:
inserte la descripción de la imagen aquí

  • contratos: almacenar archivos de contrato
  • migraciones: almacenar archivos relacionados con la implementación
  • prueba: utilizado para pruebas unitarias
  • truffle.js: archivo de configuración, que le dice a truffle en qué red implementar (red de prueba, red principal, red privada, etc.), uso de plataforma que no sea Windows
  • truffle-config.js: igual que truffle.js, solo para plataforma Windows

3.3 Agregar código de contrato

En la carpeta de contratos, cree un archivo SimpleStorage.sol y pegue el siguiente código:

pragma solidity ^0.8.14;
contract SimpleStorage {
    
    
    uint storedData;
    function set(uint x) public {
    
    
        storedData = x;
    }
    function get() public view returns (uint) {
    
    
return storedData;
    }
}

3.4 contrato de compilación de trufas

Ejecute el siguiente comando en nuestro proyecto:

truffle compile

En este momento, se generará el directorio de compilación y los resultados son los siguientes:
inserte la descripción de la imagen aquícompile compilará nuestro código de Solidity en un código de bytes (código que la máquina virtual de Ethereum (EVM) puede entender), y los dos archivos en la carpeta de compilación El archivo se genera de acuerdo con el contrato. Cada archivo .sol compilará un archivo .json. El archivo de descripción json contiene el abi del contrato, el código de bytes y otra información relacionada para la implementación posterior.

3.5 contrato de despliegue de trufas

Por lo general, implementamos en los siguientes tres entornos:

  1. entorno gráfico ganache/entorno de línea de comandos ganache-cli
  2. Entorno real (prueba/mainnet)

3.7 Agregar secuencia de comandos de implementación

Abra la carpeta "migraciones" y cree un nuevo archivo llamado "2_deploy_contracts.js". Las migraciones son solo scripts que nos ayudan a implementar contratos en la cadena de bloques. Pegue el siguiente código en él y guárdelo.


```go
const SimpleStorage = artifacts.require("./SimpleStorage.sol");
module.exports = function (deployer) {
    
    
    deployer.deploy(SimpleStorage);
};

La línea 1 se usa para importar el archivo "SimpleStorage.sol" (exportado desde la carpeta "contratos"), y la línea 4 lo implementa en la cadena de bloques.

4. Contrato de despliegue de trufas

4.1 Implementado en Ganache

Instalar línea de comando ganache-cli

sudo npm install -g ganache-cli

Modifique truffle-config.js de la siguiente manera:

module.exports = {
    
    
 // See <http://truffleframework.com/docs/advanced/configuration>
 // to customize your Truffle configuration!
 networks: {
    
    
 ganacheNet: {
    
     //ganacheNet是可以⾃定义的名字,链接到ganache客户端
 host: "127.0.0.1",
 port: 8545,
 network_id: "*" // match any network
 }
 }
}

Después de iniciar ganache, ejecute el siguiente comando

truffle migrate --network ganacheNet

Este ganacheNet es lo que agregamos manualmente en el archivo de configuración truffle.js

4.2 Despliegue en modo de desarrollo de trufas

Ejecute el siguiente comando en el proyecto:

truffle develop

Inicie el entorno de desarrollo incorporado, el efecto es el siguiente:
inserte la descripción de la imagen aquí
después de iniciar, ingresará a la interfaz interactiva, iniciará el servicio local de forma predeterminada, ocupará el número de puerto 9545 y creará 10 cuentas virtuales al mismo tiempo, cada cuenta contiene 100 eth
-compile comandos
por defecto en la terminal Ejecute compileel comando directamente en el comando para completar la compilación.
inserte la descripción de la imagen aquíResultado: se generará el directorio de compilación, igual que el anterior.

- comando de migración
Ejecute migrateel comando directamente en la terminal para completar la implementación. (No es necesario implementar la red aquí, es una red virtual en sí misma, pero no podemos verla)
inserte la descripción de la imagen aquí
Cuando ejecutamos la migración, este comando actualizará el archivo SimpleStorage.json y se implementará en esta red específica El contrato se guardan la dirección y el hash de la transacción correspondiente. Luego podemos llamar a nuestro contrato a través de la información en este archivo json. (descrito más adelante)

5. Interactuar con el contrato

La consola truffle viene con una instancia web3 y se ha creado una instancia de contrato en la consola, que se puede usar directamente. Este contrato instanciado no es el modo que usamos antes, sino una instancia envuelta con una biblioteca llamada truffle-contract.
inserte la descripción de la imagen aquí

  • En este entorno de desarrollo, hay una instancia web3 incorporada
    , podemos verificar la versión de web3:
    inserte la descripción de la imagen aquíusamos la consola para interactuar con el contrato
  • Al usar el marco de truffle para obtener una instancia de contrato
    inserte la descripción de la imagen aquí , usaremos la biblioteca de truffle: truffle-contract, que encapsula el web3.js nativo para lograr llamadas de contrato más convenientes.
  • Llamar a la función de conjunto
    inserte la descripción de la imagen aquí
  • función de obtención de llamada
    inserte la descripción de la imagen aquí

Seis, prueba prueba

El contrato debe comenzar con Test y el nombre de la función debe comenzar con Test
inserte la descripción de la imagen aquí
Code:

import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";
import "../contracts/SimpleStorage.sol";


//合约名字要Test开头
contract TestMetaCoin {
    
    

    //测试函数要test开头
    function testSet() public{
    
    
        SimpleStorage ss = SimpleStorage(DeployedAddresses.SimpleStorage());
        ss.set(100);
        uint res=ss.get();
       Assert.equal(res,100,"res shoulid be 1000");

    }

}

implementartruffle test

Supongo que te gusta

Origin blog.csdn.net/weixin_42918559/article/details/125140311
Recomendado
Clasificación