truffle 常用配置

2024-09-03 07:08
文章标签 配置 常用 truffle

本文主要是介绍truffle 常用配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

部署命令

初次部署: truffle migrate

重新部署:truffle migrate --reset

部署文件

先修改./migrations/2_initial_migration.js

注意,文件名的前缀是数字,后缀是描述。为了记录迁移是否成功运行,需要有编号的前缀。后缀是纯粹为了人类的可读性和理解力。

1.基本配置

artifacts.require()

在迁移开始时,我们通过artifacts.require()方法告诉Truffle我们想与哪些合同进行交互。 这个方法类似于Node的要求,但在我们的例子中,它特别返回了我们可以在其余部署脚本中使用的抽象合约。 指定的名称应与该源文件中的合同定义的名称匹配。 不传递源文件的名称,因为文件可以包含多个合同。举例:

// fileName: ./contracts/Contracts.sol
contract ContractOne { // ... }contract ContractTwo { // ... }

如果只用合约中的ContractTwo你的artifacts.require()这样写:

var ContractTwo = artifacts.require("ContractTwo");

如果两者都要用:

var ContractOne = artifacts.require("ContractOne");
var ContractTwo = artifacts.require("ContractTwo");

module.exports

所有迁移都必须通过module.exports语法导出函数。 每次迁移导出的函数都应接受部署者对象作为其第个参数。 此对象通过为部署智能合约提供清晰的语法以及执行某些部署更普通的职责(例如保存已部署的工件以供以后使用)来帮助部署。 部署者对象是用于暂存部署任务的主要界面,其API在本页底部描述。

Initial migration

Truffle 框架中必须保留 contracts/Migrations.sol 和 migrations/1_initial_migration.js这两个文件,

部署的时候,将先部署这个合约。

2.部署器(Deployer)

您的部署文件将使用部署器来完成部署任务。 因此,您可以同步编写部署任务,它们将以正确的顺序执行:

// 先部署A再部署B,两者直接无直接联系
deployer.deploy(A);
deployer.deploy(B);
// 部署A后把A的地址作为参数再部署B
deployer.deploy(A).then(function() {return deployer.deploy(B, A.address);
});

后面有详细的API文档说明

3.网络配置

可以根据部署到的网络有条件地运行部署步骤。 这是项高级功能,因此请在继续之前先查看“Networks”部分。

要有条件地暂存部署步骤,请编写迁移,以便它们接受第二个参数,称为Network。 例:

module.exports = function(deployer, network) {if (network == "live") {// Do something specific to the network named "live".} else {// Perform a different step otherwise.}
}

4.选择账户

迁移还传递了Ethereum客户端和web3提供商提供给您的帐户列表,供您在部署期间使用。这是从web3.eth.getAccounts()返回的相同的帐户列表。

module.exports = function(deployer, network, accounts) {// Use the accounts within your migrations.
}

5.Deployer.API

部署程序包含许多可用于简化迁移的功能。

deployer.deploy

deployer.deploy(contract, args..., options)

使用可选的构造函数参数部署由合同对象指定的特定合同。这对单例合约很有用,因此dapp只存在此合约的个实例。这将在部署后设置合同的地址(即,Contract.address将等于新部署的地址),并且它将覆盖存储的任何先前地址。

您可以选择传递组合同或组数组,以加快多个合同的部署。此外,最后个参数是个可选对象,可以包含名为overwrite的键以及其他事务参数,例如gas和from。如果overwrite设置为false,则部署者将不会部署此合同(如果已经部署了该合同)。这对于由外部依赖项提供合同地址的某些情况很有用。

请注意,在调用deploy之前,您需要首先部署和链接合同所依赖的任何库。有关详细信息,请参阅下面的链接功能。

有关更多信息,请参阅松露合同文档。

// 在没有构造函数参数的情况下部署单个合约
deployer.deploy(A);// 使用构造函数参数部署单个合同
deployer.deploy(A, arg1, arg2, ...);// 如果已经部署了此合同,请不要部署它
deployer.deploy(A, {overwrite: false});//为部署设置最大Gas 和 “from” 地址
deployer.deploy(A, {gas: 4612388, from: "0x...."});// Deploy multiple contracts, some with arguments and some without.
// This is quicker than writing three `deployer.deploy()` statements as the deployer
// can perform the deployment as a single batched request.
deployer.deploy([[A, arg1, arg2, ...],B,[C, arg1]
]);// External dependency example:
//
// For this example, our dependency provides an address when we're deploying to the
// live network, but not for any other networks like testing and development.
// When we're deploying to the live network we want it to use that address, but in
// testing and development we need to deploy a version of our own. Instead of writing
// a bunch of conditionals, we can simply use the `overwrite` key.
deployer.deploy(SomeDependency, {overwrite: false});

deployer.link

deployer.link(library, destinations)

将已部署的库链接到合同或多个合同。 目的地可以是单个合同或多个合同的数组。 如果目的地内的任何合同不依赖于链接的库,则合同将被忽略。

// Deploy library LibA, then link LibA to contract B, then deploy B.
deployer.deploy(LibA);
deployer.link(LibA, B);
deployer.deploy(B);// Link LibA to many contracts
deployer.link(LibA, [B, C, D]);

deployer.then

deployer.then(function() {...})

就像promise样,运行任意部署步骤。 使用此选项可在迁移期间调用特定的合同函数,以添加,编辑和重新组织合同数据。

var a, b;
deployer.then(function() {// Create a new version of Areturn A.new();
}).then(function(instance) {a = instance;// Get the deployed instance of Breturn B.deployed();
}).then(function(instance) {b = instance;// Set the new instance of A's address on B via B's setA() function.return b.setA(a.address);
});

部署其他配置

solc

编译器配置:

compilers: {solc: {version: "0.5.1",settings: {optimizer: {enabled: true,runs: 200,}}}}

wallet

在项目根目录的项目配置文件truffle.js中,可以使用种子,在主网或测试网部署合约。下面提供种部署到测试网rinkeby的配置

const HDWalletProvider = require('truffle-hdwallet-provider');
const fs = require('fs');
// 读取种子,12个单词组成的种子
const mnemonic = fs.readFileSync("./path/to/mnemonic.secret").toString().trim();module.exports ={networks:{rinkebyTest:{provider: () => new HDWalletProvider(mnemonic, `https://rinkeby.infura.io/v3/aa86f***60803c`,// your infura API key0, // 地址的起始索引10 // 生成的地址数量),network_id: 4,// gas: 6500000,confirmations: 2,gasPrice: 5000000000, // 5 GweiskipDryRun: true // 跳过预执行,直接部署}}
}

truffle 学习笔记(一)基本命令和配置_JustinQP的博客-CSDN博客

这篇关于truffle 常用配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1132364

相关文章

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

CentOS 7 YUM源配置错误的解决方法

《CentOS7YUM源配置错误的解决方法》在使用虚拟机安装CentOS7系统时,我们可能会遇到YUM源配置错误的问题,导致无法正常下载软件包,为了解决这个问题,我们可以替换YUM源... 目录一、备份原有的 YUM 源配置文件二、选择并配置新的 YUM 源三、清理旧的缓存并重建新的缓存四、验证 YUM 源

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

MySQL 安装配置超完整教程

《MySQL安装配置超完整教程》MySQL是一款广泛使用的开源关系型数据库管理系统(RDBMS),由瑞典MySQLAB公司开发,目前属于Oracle公司旗下产品,:本文主要介绍MySQL安装配置... 目录一、mysql 简介二、下载 MySQL三、安装 MySQL四、配置环境变量五、配置 MySQL5.1

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

mybatis的mapper对应的xml写法及配置详解

《mybatis的mapper对应的xml写法及配置详解》这篇文章给大家介绍mybatis的mapper对应的xml写法及配置详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录前置mapper 对应 XML 基础配置mapper 对应 xml 复杂配置Mapper 中的相