【区块链-智能合约工程师】第四篇:Truffle框架安装和介绍(Windows)

news2024/12/24 11:39:30

文章目录

    • 第一次尝试安装(fail)
        • 简单介绍
        • 安装配置
        • truffle命令报错:'truffle' 不是内部或外部命令
        • truffle命令报错:Cannot find module 'fs/promises'
    • 第二次尝试安装(fail)
        • 安装和配置npm
        • 安装ganache-cli节点仿真器
        • 安装 solc 编译器
        • 安装 web 库
        • 安装 truffle 开发框架
        • 报错:node 12 版本过低
    • 第三次安装(success)
        • 安装 node 最新版本
        • 安装其他组件

参考文章:

  • 以太坊开发框架——Truffle的基础使用
  • 区块链(2)以太坊开发框架Truffle教程(Windows)(主要参考)

第一次尝试安装(fail)

简单介绍

Truffle 是目前最流行的 以太坊 DApp 开发框架,(按照官网说法)是一个世
界级的开发环境和测试框架,也是所有使用了 EVM 的区块链的资产管理通道,它基于 JavaScript,致力于让以太坊上的开发变得简单。

Truffle 有以下功能:

  • 内置的智能合约编译,链接,部署和二进制文件的管理。
  • 合约自动测试,方便快速开发。
  • 脚本化的、可扩展的部署与发布框架。
  • 可部署到任意数量公网或私网的网络环境管理功能
  • 使用 EthPM 和 NPM 提供的包管理,使用 ERC190 标准。
  • 与合约直接通信的直接交互控制台(写完合约就可以命令行里验证了)。
  • 可配的构建流程,支持紧密集成。
  • 在 Truffle 环境里支持执行外部的脚本。

使用 Truffle需要三个东西,分别如下:

  • Nodejs :是一个基于google浏览器Chrome里面的JavaScript引擎(V8)的一个平台,可以很容易的构建快速而具有扩展性的网络程序。
  • Truffle :以太坊开发框架
  • Ganache CLI:是在本地使用内存模拟的一个以太坊环境,其基于Node.js,以前叫TestRPC,在开发过程中使用。

安装配置

node(JS解析器):本地已安装过,版本 v12.18.3。设置 npm 全局模块目录,避免挤占 C 盘空间:

npm config set prefix D:\npm\prefix

Truffle(Dapp开发框架):全局安装 npm –g install truffle,版本为 truffle@5.7.0:
(后续使用 truffle 遇到报错,此处安装 truffle 时未成功安装相关模块: mocha 、fsevents)

在这里插入图片描述

Ganache CLI(模拟以太坊环境):全局安装 npm install -g ganache-cli,版本为 ganache-cli@6.12.2:

在这里插入图片描述

truffle命令报错:‘truffle’ 不是内部或外部命令

参考文章:npm安装的全局包/工具不能使用,不是内部/外部命令

需要把 npm 的全局模块路径添加到系统变量 path 中,添加如下路径:

D:\npm\prefix

truffle命令报错:Cannot find module ‘fs/promises’

参考文章:

  • electron打包后启动应用,提示cannot find module fs/promises的解决(情况不太相同,我是npm下载truffle时发现,平台不支持truffle的相关模块导致模块缺失)
  • windows下node升级到最新版本(亲测有效)

尝试使用最新的 node 版本重新下载:访问 node官网下载地址,发现最新版本是 18.12.1(又尝试了 18.0.0 发现还是无法切换版本)

npm install -g nvmw
nvmw install 18.12.1
nvmw use 18.12.1

在这里插入图片描述

问题分析:npm下载truffle时发现,平台不支持truffle的相关模块导致模块缺失,其中 fsevents 模块依赖 darwin 操作系统(苹果开发的 unix 操作系统)

第二次尝试安装(fail)

参考文章:Win10 搭建truffle框架

安装和配置npm

本地已有开发环境版本信息
nodev12.18.3
npm6.14.6

设置安装模块和缓存文件的目录:

npm config set prefix "D:\npm\myNodeglobal"
npm config set cache "D:\npm\myNodecache"

新建系统变量:NODE_PATH / D:\npm\node_modules,PATH 变量中添加值 D:\npm\myNodeglobal

npm换源: 由于node是从国外服务器下载第三方依赖包,下载的速度会非常缓慢而且有发生异常的可能,所以需要把npm的镜像源换成淘宝的镜像源。

npm config set registry https://registry.npm.taobao.org
npm config get registry

安装ganache-cli节点仿真器

参考文章:Ganache CLI - 用于测试和开发的快速以太坊RPC客户端

Ganache CLI是以太坊开发工具Truffle套件的一部分,是以太坊开发私有区块链的Ganache命令行版本。

Ganache CLI使用 ethereumjs 来模拟完整的客户端行为,使开发以太坊应用程序更快,更轻松,更安全。它还包括所有主流的RPC函数和功能(如event),并可以准确地运行以使开发变得容易。

安装和验证命令如下,解析器文件位于 D:\npm\myNodeglobal 目录,系统变量无需再添加。

npm install -g ganache-cli
ganache-cli

在这里插入图片描述

安装 solc 编译器

安装命令如下,版本:solc@0.8.17

npm install -g solc
solcjs -V

安装 web 库

安装命令如下,版本:web3@1.8.1

npm install -g web3

安装 truffle 开发框架

安装命令:npm install -g truffle

遇到报错如下,还有其他报错提示 node 版本需要大于等于 14.16。

Error: Error while attempting to download and cache solc 0.5.16: Command failed: node ./build/cli.bundled.js obtain --solc=0.5.16
    at postinstallObtain (D:\npm\myNodeglobal\node_modules\truffle\scripts\postinstall.js:13:11)
    at Object.<anonymous> (D:\npm\myNodeglobal\node_modules\truffle\scripts\postinstall.js:20:3)

报错:node 12 版本过低

解决办法:访问 https://nodejs.org/en/download/ 下载最新版本 node。

第三次安装(success)

参考文章:Win10 搭建truffle框架(同第二次尝试,只是node版本变化了)

安装 node 最新版本

访问 https://nodejs.org/en/download/ 下载最新版本 node:

Node.js v18.12.1
查看开发环境版本信息
nodev18.12.1
npmv8.19.2

设置安装模块和缓存文件的目录:

npm config set prefix "D:\nodejs\myNodeglobal"
npm config set cache "D:\nodejs\myNodecache"

新建系统变量:NODE_PATH / D:\nodejs\node_modules,PATH 变量中添加值 D:\nodejs\myNodeglobal

npm换源: 由于node是从国外服务器下载第三方依赖包,下载的速度会非常缓慢而且有发生异常的可能,所以需要把npm的镜像源换成淘宝的镜像源。

npm config set registry https://registry.npm.taobao.org
npm config get registry

安装其他组件

安装ganache-cli节点仿真器:v6.12.2

npm install -g ganache-cli
ganache-cli

安装 solc 编译器:solc@0.8.17

npm install -g solc
solcjs -V

安装 web 库::web3@1.8.1

npm install -g web3

安装 truffle 开发框架:换了版本以后没有报错!

npm install -g truffle

安装 webpack 打包器:

npm install -g webpack

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

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

相关文章

Java高手速成│实战:应用数据库和GUI开发产品销售管理软件(2)

实战项目&#xff1a;应用数据库和GUI开发产品销售管理软件&#xff08;2&#xff09; 01、项目分析 改进实战项目——应用数据库和GUI开发产品销售管理软件&#xff08;1&#xff09;的设计和操作&#xff0c;并增加新的功能&#xff1b;利用按钮和文本框实现对数据库编程的…

荣耀破壁2022:蜕变的解法、蓄势的护法、进击的打法

“世上只有一种英雄主义&#xff0c;那就是在认清生活的真相后依然热爱生活”&#xff0c; 罗曼罗兰在《米开朗琪罗传》中写道。人如此&#xff0c;企业亦如此。12月30日&#xff0c;荣耀在新年致辞中提到&#xff1a;“真正的勇敢是在认清真相后依然热爱。”刚过去的2022年&am…

zOffice新年新版本!多项实用功能上线

2022年发生了很多大事&#xff0c;你们在2022年做过最有意义的事情是什么呢&#xff1f;或许这一年我们有很多不足&#xff0c;或许我们依旧还需努力&#xff0c;但是我们都将继续寻找人生的新篇章&#xff0c;在2023年到来之际&#xff0c;联想Filez也祝大家新年快乐&#xff…

都2023年了,诸佬们肯定熟知RabbitMQ了吧

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;曾经在某央企公司实习&#xff0c;目前入职某税务公司。本篇文章将记录和分享RabbitMQ相关的知识点。 本篇文章记录的基础知识&#xff0c;适合在学Java的小白&#xff0c;也适合复习中&#xff…

EXCEL的查找:如何按 行号+列号 进行查询, 可用indirect() + match() 或 index() + match()

0 首先用match()等取得行号&#xff0c;列号 如果想根据行号列号&#xff0c;精确查找&#xff0c;另外一个区域的数据&#xff0c;可以用如下方法 INDIRECT("Sheet2!r"&MATCH($C11,Sheet2!$A:$A,0)&"C"&MATCH(D$10,Sheet2!$1:$1,0),FALSE) …

ERR_UNSAFE_PORT浏览器安全问题导致无法访问的解决方案

前言 出发点是Java Agent内存马的自动分析与查杀&#xff0c;实际上其他内存马都可以通过这种方式查杀 本文主要的难点主要是以下三个&#xff0c;我会在文中逐个解答 1.如何dump出JVM中真正的当前的字节码 2.如何解决由于LAMBDA表达式导致非法字节码无法分析的问题 3.如何对…

短视频带货流程话术

现在短视频热度高涨&#xff0c;已经成为人们娱乐休闲的一种方式。短视频人流量大&#xff0c;已经衍生出了直播带货、橱窗链接带货等方式&#xff0c;也吸引了一批想要带货的用户。前言现在短视频热度高涨&#xff0c;已经成为人们娱乐休闲的一种方式。短视频人流量大&#xf…

JDBC(使用java语言操作数据库)

JDBC概念&#xff1a;使用Java语言操作关系型数据库的一套api&#xff08;可以用一套标准的jdbc操作所有类型的数据库&#xff0c;jdbc是接口&#xff0c;每一个数据库&#xff08;mysql、oracle、db2...&#xff09;都去实现jdbc的接口&#xff0c;每个数据库的实现类都不一样…

LeetCode:11. 盛最多水的容器

11. 盛最多水的容器1&#xff09;题目2&#xff09;思路3&#xff09;代码4&#xff09;结果1&#xff09;题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x …

2023年1月4日:fastadminApi接口开发项目时遇到的问题

SelectPage selectpage(官方文档&#xff1a;动态下拉(SelectPage) - FastAdmin框架文档 - FastAdmin开发文档) 常规用法 下面介绍一个基础的动态下拉列表示例&#xff0c;如下 <input id"c-name" data-rule"required" data-source"category/sel…

AVS3变换之IST和ISTS

IST&#xff08;Implicit Selected Transform&#xff09;是AVS3中新增的针对intra块的变换工具&#xff0c;IST对intra块提供了两种可分离的变换核&#xff0c;编码器根据RDO选择最优的变换核&#xff0c;但是对于选中的变换核不在码流中传输其索引&#xff0c;而是将其索引隐…

day34【代码随想录】贪心算法之跳跃游戏、跳跃游戏||、K次取反后最大化的数组和

文章目录前言一、跳跃游戏&#xff08;力扣55&#xff09;二、跳跃游戏 II&#xff08;力扣45&#xff09;三、K次取反后最大化的数组和&#xff08;力扣1005&#xff09;前言 1、跳跃游戏 2、跳跃游戏|| 3、K次取反后最大化的数组和 一、跳跃游戏&#xff08;力扣55&#xff…

火热的低代码到底是什么?

低代码风头正紧&#xff0c;也是最近一段时间跟云原生一起被热捧&#xff0c;不管你是做后端开发、还是前端设计、销售、售前&#xff0c;如果你没接触过低代码你都不好意思说自己在软件领域工作&#xff0c;这边文章从我的角度聊聊低代码是什么、以怎么样的方式开发、及低代码…

react笔记_05函数组件与类组件的区别之capture value特性

函数组件与类组件在写法没有好坏之分&#xff0c;性能差距也几乎可以忽略&#xff0c;而且 React 会长期支持这两种写法。 React的函数式组件和类组件之间的根本区别 在心智模型上。 函数式组件具有 capture value 特性。 capture value特性 Capture Value 从字面上可以理解…

【已解决】office提示你的许可证不是正版,你可能是盗版软件的受害者?

三步即可先看效果步骤1、下载工具2、找到 修复Office许可证明问题3、填入KMS主机&#xff0c;点击修复如何查看正在使用的 KMS 主机地址&#xff1f;先看效果 步骤 1、下载工具 工具下载&#xff1a;https://otp.landian.vip/zh-cn/ 2、找到 修复Office许可证明问题 3、填入…

PEM格式RSA密钥解析(一)

Base64转16进制格式 后缀是.PEM 的数字证书是 BASE64 编码的&#xff0c;以 ASCII 码来表示。常见的证书如下所示&#xff08;以 RSA1024 为例&#xff09;&#xff1a; 私钥&#xff1a; ----BEGIN RSA PRIVATE KEY----- MIICWwIBAAKBgHU4CF6yvqb5WBhwcYfvh/o3NpwcSJlcfj0nIZ…

下载神器IDM安装与使用(保姆级教程)

下载神器IDM安装与使用&#xff08;保姆级教程&#xff09; 文章目录下载神器IDM安装与使用&#xff08;保姆级教程&#xff09;前言一、下载地址二、IDM是什么&#xff1f;三、作用与特点四、安装步骤总结前言 众所周知&#xff0c;下载工具是大家电脑里必装的软件之一。 但大…

大数据时代,制造业人要知道,为什么有ERP还要上SRM系统

每个公司都是在一个供应链中&#xff0c;每个公司都有自己的上下游。如今&#xff0c;企业间的竞争已不再是单一企业的单打独斗&#xff0c;而是由价值链与价值链、供应链与供应链的较量。上游厂商&#xff08;供应商&#xff09;直接影响到公司的产品与服务的价格及竞争能力。…

零售企业全域数据打通最佳实践

在数字化转型的实战中&#xff0c;零售企业面临着巨大的挑战&#xff0c;过去三年线下流量锐减&#xff0c;甚至不少门店关停&#xff0c;不少零售企业布局线上&#xff0c;但是这个也给零售企业带来另外一个挑战&#xff1a;IT资源有限的情况下&#xff0c;线上&线下的流量…

密码学_RC4算法

在密码学中&#xff0c;RC4&#xff08;来自Rivest Cipher 4的缩写&#xff09;是一种流加密算法&#xff0c;密钥长度可变。它加解密使用相同的密钥&#xff0c;因此也属于对称加密算法。RC4是有线等效加密&#xff08;WEP&#xff09;中采用的加密算法&#xff0c;也曾经是TL…