truffle以太坊(使用Truffle开发以太坊DApp:完整教程)
Truffle以太坊:一个完整的DApp教程
尽管区块链技术的社会拓展还需漫长宽广的道路,但是自从以太坊诞生以来,它对去中心化应用程序的开发提供了前所未有的机遇。有很多工具可以帮助开发人员快速地构建去中心化应用程序(DApp),其中Truffle是一个广受欢迎的以太坊开发框架之一。Truffle 并不仅仅是一个基于以太坊的开发框架,它更是一个生产力工具,可以帮助您迅速地编写和部署应用程序。
何为Truffle?
Truffle是以太坊生态系统中的一个开发框架和环境。通过Truffle,开发人员能够更快地编写、测试和部署基于以太坊的应用。Truffle不仅仅是一个开发框架,它还提供了一个完备的生态环境,该环境包含了一些有用的工具,如编译器、调试器以及交互式控制台等工具,这些工具可以帮助开发人员跟踪和修复以太坊智能合约的问题。
安装Truffle
安装Truffle很简单,只需要用npm即可:
$ npm install -g truffle
然后,你就可以在命令行中运行Truffle了:
$ truffle
如果Truffle成功安装,你应该会看到Truffle命令的帮助文档。
构建第一个DApp
让我们来尝试使用Truffle创建第一个DApp。我们将使用一个简单的投票应用程序作为示例,该应用程序让用户创建和管理投票,以及查看当前得票情况。
使用以下命令,在Truffle项目目录下,创建一个新的项目:
$ truffle unbox webpack
这会创建一个包含Truffle框架、webpack及其它有用工具的基础项目结构,以及样例“Hello World”合约。
接下来,我们将创建一个新的“Voting”合约。在“contracts”文件夹下创建一个新的文件Voting.sol。
该合约的代码如下:
pragma solidity ^0.5.0;
contract Voting {
mapping (bytes32 => uint8) public votesReceived;
bytes32[] public candidateList;
constructor(bytes32[] memory candidateNames) public {
candidateList = candidateNames;
}
function voteForCandidate(bytes32 candidate) public {
require(validCandidate(candidate));
votesReceived[candidate] += 1;
}
function totalVotesFor(bytes32 candidate) view public returns (uint8) {
require(validCandidate(candidate));
return votesReceived[candidate];
}
function validCandidate(bytes32 candidate) view public returns (bool) {
for(uint i = 0; i < candidateList.length; i++) {
if (candidateList[i] == candidate) {
return true;
}
}
return false;
}
}
该合约实现了一个简单的投票系统,用户可以选择候选人进行投票,并查看当前得票数。当然,这只是一个示例合同,并不能商用。
现在我们需要使用Truffle编译、测试并部署该合约。在命令行中输入以下命令:
$ truffle compile
在“build”目录下生成的合约编译代码:Voting.json。
接下来,我们需要使用测试文件进行测试。在“test”文件夹下创建一个新的文件Voting.js, 写入以下测试代码:
var Voting = artifacts.require("./Voting.sol");
contract("Voting", function(accounts) {
it("...should assert true", function() {
var voting;
return Voting.deployed().then(function(instance) {
voting = instance;
return voting.totalVotesFor.call('Rama');
}).then(function(result) {
assert.equal(result.toNumber(), 0, "初次任何人投票时得票应该为0")
});
});
});
该测试文件中测试了是否能够初始化正确的候选人列表以及投票功能是否可用。在命令行中运行以下命令进行测试:
$ truffle test
如果一切顺利,你应该能够看到测试被成功通过了。
现在,我们将使用Truffle将合约部署到以太坊网络上。在命令行中输入以下命令:
$ truffle migrate --reset
如果顺利的话,你应该会看到一些输出,最后被提示部署成功。
创建DApp前端
现在我们需要创建一个前端界面,用户界面让用户能够使用我们创建的投票应用程序。我们将使用新建的项目包含的webpack-dev-server来搭建前端界面。在命令行中运行以下命令启动webpack-dev-server:
$ npm run dev
这会打开一个浏览器窗口,访问localhost:8080可以看到应用程序已经启动,我们可以看到一个简单的UI,帮助我们查看在区块链中部署的Voting合约,查看候选人的得票情况,并投票。
总结
Truffle是一个非常有用的工具,让我们能够更快、更容易地构建DApp。当您在使用Truffle框架开发DApp时,你可以更专注于业务逻辑层面的开发,而不需要关注太多底层技术的实现细节。在不断的学习探索过程中,你也将掌握更多的区块链开发技能!
原创文章,作者:区块链,如若转载,请注明出处:https://www.53moban.com/4014.html