以太坊学习(三) -- truffle搭建第一个区块链应用程序

以太坊Truffle开发环境搭建
本文介绍如何在Ubuntu 16.04上搭建以太坊开发环境Truffle,包括Node.js和Truffle的安装步骤,以及使用TestRPC进行开发的方法。同时记录了在开发过程中遇到的问题及其解决方案。
以太坊是区块链开发领域最好的编程平台,而truffle是以太坊(Ethereum)最受欢迎的一个开发框架, 搭建truffle开发 环境,运行第一个区块链程序(Dapp)。


系统信息:

  • 操作系统:Ubuntu 16.04
  • truffle版本:v4.1.0
  • node.js版本:v8.9.4
  • npm版本:5.6.0

ubuntu-16.04下安装truffle

安装truffle依赖环境 NodeJS 访问https://nodejs.org 官方网站下载安装

编码安装 :
下载nodejs源码包  node-v8.9.4.tar.gz


tar xvf node-v8.9.4.tar.gz  //解压源码包
./configure        //进入解压目录后 执行配置文件
make             //编译   需要好久
sudo make install   //安装 nodejs
node -v           //安装之后 查看版本号

源码编译真的需要好久,所以可以直接下载nodejs的已经编译完的二进制文件  node-v8.9.4-linux-x64.tar.gz

tar xvf node-v8.9.4-linux-x64.tar.gz  

解压完之后有如下文件夹 


把 文件夹 分别拷贝到 /usr/local/目录下 

sudo cp * /usr/local/ -rf

这样nodejs便完成了安装。

sudo  npm install -g truffle   //安装truffle

需要安装Ethereum客户端,来支持JSON RPC API调用 开发环境,推荐使用EthereumJS TestRPC:  https://github.com/ethereumjs/testrpc

 npm install -g ethereumjs-testrpc   //安装 testrpc

新建第一个项目:


编译项目:

truffle compile



部署项目:

部署之前先启动TestRPC


testrpc




truffle migrate


却出现错误 Error: No network specified. Cannot determine current network.

修改truffle.js 的原始文件 

修改为:

然后再执行 truffle migrate

又出现错误:   Using network 'development'.

                    Network up to date.  

truffle migrate --reset  使用这个命令便可解决以上问题

启动服务:

truffle serve


出现如下错误:
Serving static assets in ./build on port 8080...

/usr/local/lib/node_modules/truffle/build/webpack:/~/chokidar/lib/fsevents-handler.js:26
  return (new fsevents(path)).on('fsevent', callback).start();
^
TypeError: fsevents is not a constructor
    at createFSEventsInstance (/usr/local/lib/node_modules/truffle/build/webpack:/~/chokidar/lib/fsevents-handler.js:26:1)
    at setFSEventsListener (/usr/local/lib/node_modules/truffle/build/webpack:/~/chokidar/lib/fsevents-handler.js:80:1)
    at FSWatcher.FsEventsHandler._watchWithFsEvents (/usr/local/lib/node_modules/truffle/build/webpack:/~/chokidar/lib/fsevents-handler.js:244:1)
    at FSWatcher.<anonymous> (/usr/local/lib/node_modules/truffle/build/webpack:/~/chokidar/lib/fsevents-handler.js:378:1)
    at gotStat (fs.js:1775:21)
    at FSReqWrap.oncomplete (fs.js:152:21)

解决方法: 参考链接:  http://blog.youkuaiyun.com/skylark0924/article/details/79307190   不能解决此问题。
最终不能解决  truffle serve 出现的错误 。  如果谁能在解决此问题,请在下面留言,万分感谢!
 
然后参考链接  https://github.com/trufflesuite/truffle/issues/448 换一种方法启动服务。



mkdir test   //重新建一个项目目录test
truffle unbox webpack
truffle develop   // 启动一个控制台
> compile       //编译
>migrate        //迁移合约    当然这两部也可以不在控制台下完成   可以用 truffle compile  和 truffle migrate 完成。
npm run dev  //运行webpack服务器进行前端热重新加载(在开发控制台之外)。







虽然最终结果还是有问题,不过总算能启动一个服务了,现在还不能解决,等以后学习过之后能解决了再补充吧!
### 安装和使用 Truffle 框架于 Ubuntu 为了在 Ubuntu 上成功安装并使用 Truffle 框架,以下是详细的说明: #### 系统环境准备 确保操作系统版本兼容。虽然引用提到的是基于 Ubuntu 16.04 的应用设置[^1],但现代开发建议升级到较新的 LTS 版本(如 Ubuntu 20.04 或更高)。这有助于获得更好的安全性和软件支持。 #### Node.js 和 npm 安装 Truffle 需要依赖 Node.js 及其包管理器 npm 来运行。可以通过以下命令来安装最新稳定版的 Node.js: ```bash curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash - sudo apt-get install -y nodejs ``` 验证安装是否成功: ```bash node --version npm --version ``` 如果显示版本号,则表示安装完成。 #### Truffle 安装 通过 npm 全局安装 Truffle: ```bash npm install -g truffle ``` 确认 Truffle 是否已正确安装: ```bash truffle version ``` 此命令应返回当前安装的 Truffle 版本号。 #### 创建项目结构 初始化一个新的区块链项目目录,并生成默认配置文件 `truffle-config.js`: ```bash mkdir my-truffle-project && cd my-truffle-project truffle init ``` 此时会创建一些基础模板文件夹与脚本供后续开发使用。 #### 编写智能合约 利用 Solidity 开发自定义逻辑。例如,在 `contracts/` 文件夹下新增名为 `SimpleStorage.sol` 的简单存储合同代码如下所示: ```solidity pragma solidity ^0.8.0; contract SimpleStorage { uint storedData; function set(uint x) public { storedData = x; } function get() view public returns (uint) { return storedData; } } ``` 编译上述合约前需先调整好网络参数以及部署目标地址等内容至 `truffle-config.js` 中适当位置处。 #### 合约编译与测试 执行本地 Ganache 测试链或者连接远程节点之后可以尝试进行编译操作: ```bash truffle compile ``` 接着针对所编写的功能模块开展单元测验工作流程: ```javascript const SimpleStorage = artifacts.require("SimpleStorage"); contract('SimpleStorage', accounts => { it('should store the value correctly', async () => { const instance = await SimpleStorage.deployed(); let result = await instance.set(7); assert.equal((await instance.get()).toNumber(), 7, 'Value not properly saved'); }); }); ``` 最后启动自动化检测过程查看结果反馈情况如何: ```bash truffle test ``` 以上即完成了整个从零构建到初步功能验证的过程概述[^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值