以太坊:Truffle框架实践之HelloWorld
时间:2020-04-15 20:09:33
收藏:0
阅读:94
一、初始化项目
mkdir helloworld cd helloworld truffle init
新建一个文件夹,使用truffle init进行初始化,有时候会连接不上,多试几次就好了。
将文件夹使用ftp下载到本地,文件目录如下:
文件目录解释如下:
- contract/ - Truffle默认的合约文件存放地址。
- migrations/ - 存放发布脚本文件
- test/ - 用来测试应用和合约的测试文件
- truffle-config.js - Truffle的配置文件
二、编写智能合约
2.1.编写智能合约
在contract下新建合约合约文件Greeter.sol
pragma solidity >=0.4.25 <0.7.0; contract Greeter { address creator; string greeting; constructor(string memory _greeting) public{ creator = msg.sender; greeting = _greeting; } function greet() public view returns(string memory) { return greeting; } function setGreeting(string memory _newgreeting) public{ greeting = _newgreeting; } }
这里有个需要注意的地方:truffle在编译的时候,会有默认的solidity编译版本,编写智能合约的时候最好使用相同的版本。我这里的是0.5.16版本
2.2.新建发布脚本
在./migrations/目录下新建一个文件:2_deploy_contracts.js,增加发布代码。
var Greeter = artifacts.require("./Greeter.sol"); module.exports = function(deployer) { deployer.deploy(Greeter,"Hello, World!"); };
2.3.修改配置文件truffle-config.js
module.exports = { networks: { development: { host: "127.0.0.1", // Localhost (default: none) port: 8545, // Standard Ethereum port (default: none) network_id: "*", // Any network (default: none) } }, // Set default mocha options here, use special reporters etc. mocha: { // timeout: 100000 }, // Configure your compilers compilers: { solc: { // version: "0.5.1", // Fetch exact version from solc-bin (default: truffle‘s version) // docker: true, // Use "0.5.1" you‘ve installed locally with docker (default: false) // settings: { // See the solidity docs for advice about optimization and evmVersion // optimizer: { // enabled: false, // runs: 200 // }, // evmVersion: "byzantium" // } } } }
三、部署合约
3.1.启动ganache-cli
ganache-cli
3.2.编译合约
truffle compile
3.3.部署合约
truffle migrate
四、测试合约
truffle提供了一种更加简单的方式,通过交互式控制台来与你的那些准备好的合约进行交互。
truffle console
一个基本的交互控制台,可以连接任何EVM客户端。如果你已经有了自己的ganache或者geth等EVM的本地环境,那么就可以使用truffle console来交互,所以如果你已经有一个现成的小组共享的开发用EVM,那么使用这个没错。
truffle develop
一个交互控制台,启动时会自动生成一个开发用区块链环境(其实我认为它与ganache就是一个底层实现机制,都是默认生成10个账户)。如果你没有自己的EVM环境的话,直接使用truffle develop非常方便。
进入基本的交互控制台
truffle console
输入Greeter智能合约命令,显示打印出一个json结构,展示了它的各种属性内容。
在truffle5版本之后,使用原文的调用方式会出现异常,新版本调用合约方式如下:
Greeter.deployed().then((instance) => { greeter = instance } ) greeter.greet()
参考:https://www.jianshu.com/p/2e2b3b12eb0e
原文:https://www.cnblogs.com/fdzang/p/12707027.html
评论(0)