区块链-智能合约工程师第四篇:truffle框架安装和介绍(windows)(代码片段)

区块链市场观察家 区块链市场观察家     2023-01-04     137

关键词:

文章目录

参考文章:

第一次尝试安装(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’

参考文章:

尝试使用最新的 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

区块链开发以太坊系统下truffle构建智能合约

truffle环境安装针对truffle环境安装这里不多叙述,可以搜一下…初始化打开终端创建一个目录mkdirtestcdtesttruffleinit会生成文件新建合约文件然后可以用vscode打开test目录新建一个合约pragmasolidity^0.4.23;contractSaystringprivatecontent;funct... 查看详情

区块链入门truffle项目实战,solidityide,智能合约部署

在上一张我们学习了Truffle项目的创建,部署等相关内容,今天我们就来实战一下.今天我们要做3件事:1)学习搭建一个SolidityIDE(Remix).2)使用这个SolidityIde编写一份智能合约.3)在我们前面第1,2,3章中部署的私有网络节点集群中部署这个合... 查看详情

区块链游戏fomo3d智能合约核心分析

最近做一个区块链的项目,需要彻底分析FOMO3D的智能合约,顺便熟悉一下区块链的开发流程。首先为了能跑FOMO3D的智能合约我尝试了truffle+galanche,对我来说不太理想,我就自己用python+solc做了一个类似的框架。可以编译部署发布合... 查看详情

以太坊dapp开发实战基础

...户转账和余额查询功能实现投票项目实战第六章、以太坊区块链浏览器:搭建以太坊区块链浏览器 查看详情

在币安智能链中部署合约时面临错误

】在币安智能链中部署合约时面临错误【英文标题】:FacingerrorondeployingcontractinBinanceSmartChain【发布时间】:2021-04-2014:22:24【问题描述】:我正在尝试在币安智能链网络上部署测试合约。我正在使用元掩码和松露来创建和测试合... 查看详情

区块链-智能合约工程师第一篇:某科技jd解读

文章目录智能合约工程师JD-某科技岗位职责:任职要求:加分项解读事项路线智能合约工程师JD-某科技智能合约工程师(P6-7)岗位职责:根据业务需求,设计、开发DAPP智能合约;分析智能合约代码漏洞,对合约代码进行审计。任... 查看详情

区块链入门truffle创建项目,编译,及项目部署

上一章的结尾说这一次要讲编写一个智能合约部署到测试网络集群中,并进行交易,但我自己越看越觉得内容挺多的.先讲下truffle的项目创建,编译和部署的问题,然后再做上面说的事情吧.truffle是一套以太坊的开发测试框架,使用solidi... 查看详情

基于区块链的投票系统的设计与实现

 1、本地环境的搭建(Windows10) 1.1安装nodejs,npm,git,web3,solc (1)nodejs:官网下载最新版本https://nodejs.org/en/download/current/  node.js后续还需安装python2.7与visualstudio的c++开发工具包(建议手动)。 (2)npm:... 查看详情

手把手教你区块链java开发智能合约nft-第五篇(铸造第一个nft)(代码片段)

文章目录手把手教你区块链java开发智能合约nft-第五篇(铸造第一个NFT)回顾部署NFT721铸造NFT根据tokenId查看NFT链上数据完整代码[NFT721相关智能合约源码下载](https://download.csdn.net/download/huangxuanheng/86260438)手把手教你区块链j... 查看详情

truffle框架环境搭建(代码片段)

...以及时修复它在本教程中,为我们将基本合同迁移到测试区块链中。 一个基本的智能合约1.创建一个新的目录,在本地可以收集合同:mkdir Truffle_procd  Truffle_pro 2.创建一个简单的truffle项目 这将创建诸如contr... 查看详情

区块链技术工坊-线下区块链技术分享

区块链技术工坊由一群热爱区块链技术的开发者组织,在全国各主要城市每周举办线下区块链技术分享活动。深圳地区由HiBlock、小牛新能源、登链学院联合主办,由以太零、Qtum、FIBOS、AckBlock、HPB赞助。区块链技术工坊坚持聚焦... 查看详情

以太坊是什么,智能合约,编程语言:solidity,dapp:去中心化的应用程序,truffle(代码片段)

...总结以太坊是什么以太坊(Ethereum)是一个建立在区块链技术之上,去中心化应用平台。它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。对这句话不理解的同学,姑且可以理解为以太坊是... 查看详情

区块链-智能合约工程师第二篇:solidity入门(代码片段)

文章目录Solidity极简入门HelloWorld数值类型三种函数类型函数输出变量作用域引用类型参考文章:一文速览2022十大智能合约开发工具资料地址:WTF学院Solidity极简入门HelloWorldremix:在线智能合约开发IDE(IntegratedDevelo... 查看详情

以太坊——运用truffle框架部署第一个dapp----pet-shop(代码片段)

...;借助了truffle框架和ganache进行合约部署。同时实现web端与区块链的交互。1.设置开发环境2.使用TruffleBox创建一个Truffle项目3.编写智能合约4.编译和部署智能合约5.测试智能合约6.创建用户界面以与智能合约交互7.在浏览器中与dapp交... 查看详情

区块链-智能合约工程师第三篇:solidity进阶(代码片段)

文章目录合约库String库调用库函数常用的合约库import接收ETH接收函数receive()回退函数fallback()二者的区别合约库库合约一般都是一些好用的函数合集(库函数),为了提升solidity代码的复用性和减少gas而存在。他和普通... 查看详情

区块链技术开发智能合约与图像存储在外部存储器ipfs(interplanetaryfilesystem)

专栏:【区块链技术开发】前期文章:【区块链技术开发】十个比较流行的以太坊智能合约开发框架【区块链技术开发】剖析区块链Ganache模拟器工具及其智能合约部署区块链的查询方式【区块链技术开发】基于Web3.js以太坊网络... 查看详情

智能合约重构社会契约(11)天德区块链智能合约系统

智能合约是可以运行在区块链上的合约代码,是一种运行在区块链之上的电子协议,它允许在没有第三方的情况下进行可信执行。1.设计原则智能合约数据来源于链上。智能合约的输人是从区块链的数据库里出来的。这此数据是由... 查看详情

智能合约重构社会契约(11)天德区块链智能合约系统

智能合约是可以运行在区块链上的合约代码,是一种运行在区块链之上的电子协议,它允许在没有第三方的情况下进行可信执行。1.设计原则智能合约数据来源于链上。智能合约的输人是从区块链的数据库里出来的。这此数据是由... 查看详情