truffle 创建测试合约并部署到测试网络

news2024/12/24 21:26:06

1、npm 安装truffle

npm install -g truffle

2、创建truffle项目

mkdir imooc-on-blockchain-truffle && cd imooc-on-blockchain-truffle

3、初始化truffle目录,会生成如下几个目录

  • contracts 存放.sol合约文件
  • migrations 部署脚本目录
  • test 测试文件目录
  • truffle-config.js truffle配置文件
% truffle init
% ls -l
 contracts               
 migrations              
 test                    
 truffle-config.js

4、编译合约

编译合约以后会生成build目录,存放编译好生成的合约的json文件

truffle compile

5、修改合约
如果要部署自己的合约文件,将合约文件赋值到contracts目录下重新编译即可。
如果只是需要运行truffle的demo,不用改变

6、修改部署脚本
使用 artifacts.require("CourseList")方法引入合约,名称为定义好的合约名称。
然后将deployer.deploy()方法测参数修改为相应的参数名称。

const CourseList = artifacts.require("CourseList");

module.exports = function(deployer) {
  deployer.deploy(CourseList);
};

7、启动dashboard
在项目的目录中执行truffle dashboard命令。会启动一个web服务并在默认浏览器中打开一个页面。

% truffle dashboard

8、执行部署
在另外一个命令行窗口中,执行以下命令,进行合约部署。

% truffle migrate --network dashboard

部署的过程中,在dashboard的页面中会有提示,是否发送,点击发送,会继续部署。

部署成功以后,在命令行窗口中会返回部署结果。

% truffle migrate --network dashboard
Compiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.


Starting migrations...
======================
> Network name:    'dashboard'
> Network id:      11155111
> Block gas limit: 30000000 (0x1c9c380)


1_deploy_contracts.js
=====================

   Deploying 'CourseList'
   ----------------------
   > transaction hash:    0xc603ed8246528259fed877e62449fd35d3159e6c6dd07595a20a920353f5f3dassage.
   > Blocks: 5            Seconds: 68
   > contract address:    0x88888888888888888888888888888140937d29cD
   > block number:        2883963
   > block timestamp:     1676176488
   > account:             0x888888888888888888888888888889c16FcA382a
   > balance:             0.12207404998410734
   > gas used:            1696218 (0x19e1da)
   > gas price:           2.500000007 gwei
   > value sent:          0 ETH
   > total cost:          0.004240545011873526 ETH

   > Saving artifacts
   -------------------------------------
   > Total cost:     0.004240545011873526 ETH

Summary
=======
> Total deployments:   1
> Final cost:          0.004240545011873526 ETH

返回结果中会显示部署合约的耗费,以及部署到的地址 > contract address: 0x88888888888888888888888888888140937d29cD
使用这个地址,在相应的etherscan可以查看相应信息。
https://sepolia.etherscan.io/tx/${contractAddress}

参考文档:
https://trufflesuite.com/docs/truffle/how-to/install/
https://trufflesuite.com/docs/truffle/quickstart/
https://trufflesuite.com/docs/truffle/how-to/use-the-truffle-dashboard/

see also at http://www.shutdown.cn/post/deploy-contract-to-test-net-with-truffle/

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20230210组会论文总结

目录 【Ultra-High-Definition Low-Light Image Enhancement: A Benchmark and Transformer-Based Method】 【ShuffleMixer: An Efficient ConvNet for Image Super-Resolution】 【A Close Look at Spatial Modeling: From Attention to Convolution 】 【DEA-Net: Single i…

自动机,即有限状态机

文章目录一、问题来源二、题目描述三、题解中的自动机四、自动机学习五、有限状态机的使用场景一、问题来源 今天做力克题目的时候看到了字符串转换整数的一道算法题,其中又看到了题解中有自动机的概念,所以在这里对自动机做个笔记。题目链接 二、题目描…

详解Python正则表达式中group与groups的用法

在Python中,正则表达式的group和groups方法是非常有用的函数,用于处理匹配结果的分组信息。 group方法是re.MatchObject类中的一个函数,用于返回匹配对象的整个匹配结果或特定的分组匹配结果。而groups方法同样是re.MatchObject类中的函数&am…

MySQL主从同步-(一)搭建主机服务器

准备工作:搭建mysql 数据库 主从复同步系统 centos 7.5 运行环境 docker mysql版本 8.0.3 准备主机服务器第一步:停止虚拟机中其他 docker ,关闭防火墙,关闭系统的mysql(防止端口冲突)docker stop $(docker…

C++11实现计算机网络中的TCP/IP连接(Windows端)

目录引言1、TCP2、IP2.1 IP路由器3、TCP/IP4、TCP/IP协议C11实现参考文献引言 TCP/IP 指传输控制协议/网际协议(Transmission Control Protocol / Internet Protocol)。[1] 在TCP/IP协议簇中主要包含以下内容: TCP (传输控制协议) - 应用程序…

Bing引擎引入ChatGPT申请候补名单方式

Bing引入ChatGPT申请候补名单方式ChatGPT一、ChatGPT简介二、OpenAI和Google的"军备军赛"三、ChatGPT版本⭐Bing引擎引入ChatGPT申请候补名单方式1.下载chrome拓展程序2.配置拓展程序3.Bing 申请候补名单3.1旧版本Bing3.2新版本Bing4.等待获取结尾ChatGPT 一、ChatG…

Linux ALSA 之十:ALSA ASOC Machine Driver

ALSA ASOC Machine Driver一、Machine 简介二、ASoC Machine Driver2.1 Machine Driver 的 Platform Driver & Platform Device 驱动模型2.2 在 Probe() 中注册声卡三、snd_soc_register_card 函数3.1 bind DAIs3.2 New a sound card3.3 Create card new widgets3.4 Probe …

JointBERT代码复现详解【上】

BERT for Joint Intent Classification and Slot Filling代码复现【上】 源码链接:JointBERT源码复现(含注释) 一、准备工作 源码架构 data:存放两个基准数据集;model:JointBert模型的实现&#xff1b…

修改本地host文件加入可用ip使谷歌浏览器翻译插件重新生效

修改本地host文件加入可用ip使谷歌浏览器翻译插件重新生效 第一步:找到host文件: 可以使用这个工具进行对Hosts文件进行一个查找 鼠标放到对应路径上面 点击鼠标右键,选择打开路径就到对应 路径了 也可以复制到这个路径下面去找hosts文件 …

【Node.js实战】一文带你开发博客项目之Koa2重构(实现session、开发路由、联调、日志)

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,也会涉及到服务端 📃个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀未…

Redis集群搭建(主从、哨兵、分片)

1.单机安装Redis 首先需要安装Redis所需要的依赖: yum install -y gcc tcl然后将课前资料提供的Redis安装包上传到虚拟机的任意目录: 例如,我放到了/tmp目录: 解压缩: tar -xzf redis-6.2.4.tar.gz解压后&#xff1…

C# Lambda表达式含义及各种写法

Lambda表达式在各个语言中的表达方式都不太相同,本文重点介绍C#的Lambda表达式。 首先,Lambda表达式就是一个匿名的方法/函数。 以下面的一个完整版作为例子,前面是参数,后面是返回值: 由于 Lambda表达式和委托常常一起…

AI推理计算框架中的内存优化

背景 内存管理是AI计算中非常重要的一部分。我们希望模型计算时占用内存尽可能小,这样我们训练或推理时就可以用更大的batch size使其尽快收敛,或者提高吞吐率。又或者让我们可以使用参数更多、或更复杂的模型从而达到更好的准确率。由于现代深度学习模…

【MySQL数据库】主从复制原理和应用

主从复制和读写分离1. 主从复制的原理2. 主从复制的环境配置2.1 准备好数据库服务器2.2 配置master2.3 配置slave2.4 测试3. 主从复制的应用——读写分离3.1 读写分离的背景3.2 Sharding-JDBC介绍3.3 Sharding-JDBC使用步骤1. 主从复制的原理 MySQL主从复制是一个异步的过程&a…

微服务 RocketMQ-延时消息 消息过滤 管控台搜索问题

~~微服务 RocketMQ-延时消息 消息过滤 管控台搜索问题~~ RocketMQ-延时消息实现延时消息RocketMQ-消息过滤Tag标签过滤SQL标签过滤管控台搜索问题RocketMQ-延时消息 给消息设置延时时间,到一定时间,消费者才能消费的到,中间件内部通过每秒钟扫…

TCP的运输连接管理

TCP的运输连接管理 文章目录TCP的运输连接管理TCP报文格式简介首部各个字段的含义控制位(flags)TCP的连接建立抓包验证一些细节及解答TCP连接释放抓包验证一些细节及解答参考TCP是面向连接的协议。运输连接是用来传送TCP报文的。TCP运输连接的建立和释放时每一次面向连接的通信…

第一部分:简单句——第一章:简单句的核心——二、简单句的核心变化(主语/宾语/表语的变化)

二、简单句的核心变化 简单句的核心变化其实就是 一主一谓(n. v.) 表达一件事情,谓语动词是其中最重要的部分,谓语动词的变化主要有四种:三态加一否(时态、语态、情态、否定),其中…

MSI_MSI-X中断之源码分析

MSI_MSI-X中断之源码分析 文章目录MSI_MSI-X中断之源码分析一、 怎么发出MSI/MSI-X中断1.1 在RK3399上体验1.1.1 安装工具1.1.2 查看设备MSI-X信息1.1.3 验证MSI-X信息二、 怎么使用MSI/MSI-X三、 MSI/MSI-X中断源码分析3.1 IRQ Domain创建流程3.1.1 GIC3.1.2 ITS3.1.3 PCI MSI…

Linux C/C++ timeout命令实现(运行具有时间限制)

Linux附带了大量命令,每个命令都是唯一的,并在特定情况下使用。Linux timeout命令的一个属性是时间限制。可以为任何命令设置时间限制。如果时间到期,命令将停止执行。 如何使用timeout命令 我们将解释如何使用Linux timeout命令 timeout […

七、Git远程仓库操作——团队成员内协作

1. github远程协作的两种方式 前面我写的笔记,都是自己一个人在玩,无论是本地操作还是推送到远程都是自己推送到自己的仓库。 如果是别人拥有这个仓库,而我想对这个仓库的内容更改后,然后想推送更新到这个仓库,我们要…