IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> Ubuntu下Truffle框架的搭建 2022年最新版 -> 正文阅读

[区块链]Ubuntu下Truffle框架的搭建 2022年最新版

一、安装nodejs和npm

ubuntu中node和npm的卸载与安装_软件工程小施同学的博客-CSDN博客

二、安装

1.环境
本人已使用Ubuntu18.04,已安装如下:
g++安装,执行命令:sudo apt-get install g++
libssl-dev安装,执行命令:sudo apt-get install libssl-dev

nodejs安装,执行命令:sudo apt-get install nodejs

2. 还需要安装
solc安装:sudo snap install solc

不用装testrpc,已经废弃

testrpc安装:sudo npm install -g ethereumjs-testrpc


3.Truffle安装
Truffle的安装指令为:

sudo npm install -g truffle

?也不用装ganache了,已经有了

创建工程


创建一个空工程

truffle init



创建包含metacoin的工程

新版本truffle引入了box的概念,所有的示例代码都以box的形式提供。下载metacoin的示例代码:

truffle unbox metacoin



工程结构

工程结构如图:

contracts 目录中包含 Solidity 合约代码,其中 Migrations.sol 是必须的,其他的是合约代码(这里是示例的 MetaCoin 代码)。

migrations 目录中包含合约部署脚本, 1_initial_migration.js 用来部署 Migrations.sol ,其他的脚本会按照顺序依次执行。

test 目录中是测试代码。

MetaCoin

MetaCoin的代码主要实现了三个接口:发币,查看余额,查看Eth余额。
?

contract MetaCoin {
? ? mapping (address => uint) balances;

? ? event Transfer(address indexed _from, address indexed _to, uint256 _value);

? ? function MetaCoin() public {
? ? ? ? balances[tx.origin] = 10000;
? ? }

? ? function sendCoin(address receiver, uint amount) public returns(bool sufficient) {
? ? ? ? if (balances[msg.sender] < amount) return false;
? ? ? ? balances[msg.sender] -= amount;
? ? ? ? balances[receiver] += amount;
? ? ? ? Transfer(msg.sender, receiver, amount);
? ? ? ? return true;
? ? }

? ? function getBalanceInEth(address addr) public view returns(uint){
? ? ? ? return ConvertLib.convert(getBalance(addr),2);
? ? }

? ? function getBalance(address addr) public view returns(uint) {
? ? ? ? return balances[addr];
? ? }
}

可以安装ganache图形版

? 下载地址:https://www.trufflesuite.com/ganache。下载对应系统的版本,然后安装,这个就跳过不说话了。我们重点介绍一下truffle的设置。

? ? ? ?打开Ganache,如下图:

在这里插入图片描述

? ? ? ?左边的按钮是快速启动,它的数据不会保存,每次启动后都是全新的开发环境。右边的按钮是保存当前的数据到相应的工作空间中,可以有多个工作空间。我们选择右边的new workspace:
在这里插入图片描述

?这里可以将workspace取一个有意义的名字,左下角的添加工程先跳过,因为我们目前还没有truffle工程。

这个界面最上面一栏是导航菜单,接下来一行是各种信息,右边是切换工作空间和设置按钮。第三行是助记词,所有的地址都是根据它生成的。

? ? ? ?界面主体有10个账号,分别列出了每个账号的地址,余额,已经完成的交易数量、账号数组中的索引、显示私钥按钮等。点击那个钥匙图标,就会显示它的私钥。

? ? ? ?点击导航上的Blocks,可以看到目前Block是0。这是因为Ganache挖矿机制决定的,每一个交易产生一个block,所以一个block也只会有一笔交易(这是笔者的使用经验,有可能不对)。在我们交易后就会产生一个block,目前还没有。


————————————————
版权声明:本文为CSDN博主「Zero_Nothing」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39430411/article/details/104248037

在一系列配置结束之后,就可以使用Visual Studio Code打开项目文件夹了。如果没有安装Visual Studio Code,可以通过http://code.visualstudio.com 来进行下载。打开项目文件夹后,目录内容如下:

其中,

  • contract 文件夹用来保存开发的智能合约源代码。文件夹中的Migrations.sol 是Truffle 用来帮助部署Solidity智能合约的辅助代码,请不要随意改动。
  • mirgations 文件夹是用来保存部署、编译和测试合约的JavaScript 脚本代码的文件夹。
  • test文件夹内保存单元测试源代码。
  • Truffle-config.js 和truffle.js 文件是保存Truffle Framework 配置文件信息的,其实两个文件中的内容一样,truffle.js 文件用于macOS 和Linux操作系统。在Windows下,为了避免重名,改用truffle-config.js作为配置文件。

编译和部署合约


Ganache 默认运行在本地 7545 端口,运行后默认创建10个账号,每个账号里有100ETH的余额。

修改truffle.js

要部署到链上,需要把IP、端口、网络ID告诉truffle。修改truffle.js:

module.exports = { ?
? ? networks: { ?
? ? ? ? development: { ?
? ? ? ? ? ? host: 'localhost', ?
? ? ? ? ? ? port: '7545', ?
? ? ? ? ? ? network_id: '*' // Match any network id ?
? ? ? ? } ?
? ? } ?
};?


编译和部署

truffle compile ?

?如合约改动,truffle compile仅对改动的合约进行编译,如需强制编译整体合约,可使用 truffle compile --compile-all。


truffle migrate

migrations/2_deploy_contracts.js?

?若需要带参数

module.exports = function(deployer) {
  deployer.deploy(Greeter,"Hello, World!");//"参数在第二个变量携带"
};
var Voting = artifacts.require("./Voting.sol");
module.exports = function(deployer) {
deployer.deploy(Voting, ['Alice', 'Bob', 'Cary'], {gas:
290000});
};

从上面可以看出,部署者希望第一个参数为合约名,跟在构造函数参数后面。

在我们的例子中,只有一个参数,就是一个候选者数组。第三个参数是一个哈希,我们用来指定部署代码所需的 gas。gas 数量会随着你的合约大小而变化。对于投票合约, 290000 就足够了。

合约地址?

测试合约


测试内容

MetaCoin的示例代码里已经把测试代码写好了,主要测试 MetaCoin 的接口是否可用:

contract TestMetacoin {

// 测试已经部署的智能合约
function testInitialBalanceUsingDeployedContract() public {
? ? MetaCoin meta = MetaCoin(DeployedAddresses.MetaCoin());

? ? uint expected = 10000;

? ? Assert.equal(meta.getBalance(tx.origin), expected, "Owner should have 10000 MetaCoin initially");
}


// 测试新的智能合约
function testInitialBalanceWithNewMetaCoin() public {
? ? MetaCoin meta = new MetaCoin();

? ? uint expected = 10000;

? ? Assert.equal(meta.getBalance(tx.origin), expected, "Owner should have 10000 MetaCoin initially");
}

}


测试合约

直接输入测试合约的命令:

truffle test



结果显示5个测试都通过:

可以使用

js调用测试,也可以使用再写一个sol合约测试?


————————————————
版权声明:本文为CSDN博主「MyHerux」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/MyHerux/article/details/80340095


?

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:17:03  更:2022-04-04 12:17:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 3:39:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计