solidity truffle学习

本文详细介绍如何在Ubuntu18环境下安装Node.js、npm、Truffle等工具,并使用Truffle框架创建、编译、部署以太坊智能合约。涵盖了工程目录结构、合约编译、依赖管理、迁移部署等关键步骤。
摘要由CSDN通过智能技术生成

环境:ubuntu 18

安装nodejs和npm

sudo apt install nodejs

sudo apt install npm

安装truffle

npm -g参数是安装到全局的node_modules目录

sudo npm install -g truffle

sudo npm install -g ethereumjs-testrpc

我的truffle版本是v5.0.41

其它参照下面的文章:

Truffle入门到实战

https://www.jianshu.com/p/e697313d9e9a

truffle官方文档

https://www.trufflesuite.com/docs

创建一个工程


1、创建工程目录
    mkdir MetaCoin
    cd MetaCoin
2、下载(unbox)MetaCoin box
    truffle unbox metacoin
    注意:a、可以使用truffle unbox <box-name>命令下载其它的truffle box
        b、使用truffle init创建一个干净的truffle项目
        c、可以在上面的两个命令中添加--force参数,无视当前目录状态,覆盖已有内容。
工程目录下的目录:
contracts/: Solidity合约文件目录
migrations/: 部署脚本目录
test/: 应用程序和合约的测试文件目录
truffle-config.js: Truffle配置文件

编译合约


contracts目录下有个Migrations.sol文件,它是在部署中提供帮助。
编译

在工程目录根部输入truffle compile。第一次编译时会全部编译,再次编译,只编修改过的。添加--all参数可以全部编译。
编译的问题
   Error: Truffle is currently using solc 0.5.8, but one or more of your contracts specify "pragma solidity ^0.4.24".
安装其它版本的solidity编译器(不管用)
   npm install -g solc@0.4.24
修改工程目录下的truffle-config.js
module.exports = {
compilers: {
  solc: {
    version: "0.4.24",
  }
}
};
改完编译ok。编译输出目录build/contracts/。

依懒(Dependencies)
import某个文件
    import "./AnotherContract.sol";
import其它包中的文件,truffle支持import通过 EthPM 和 NPM 安装的包. 
    import "somepackage/SomeContract.sol";

运行部署?(RUNNING MIGRATIONS)
Migrations是些JavaScript文件,用来帮你部署合约到Ethereum网络.
命令 truffle migrate
简单来说,migrations是管理部署脚本的集合。它每次只会执行新的migrations,可以添加--reset参数从头开始执行。
一个简单的migration文件如下:
Filename: 4_example_migration.js

var MyContract = artifacts.require("MyContract");

module.exports = function(deployer) {
  // deployment steps
  deployer.deploy(MyContract);
};
文件名包含数字和描述两部分。
artifacts.require 告知truffle我们要搞那个合约(指定合约名,返回contract abstraction合约的抽象)
module.exports 所有migrations必须通过module.exports导出一个函数,函数的第一个参数是deployer,部署过程中需要用到它。
Initial migration
Truffle要求我们要有个Migrations的合约,以便能使用Migrations的功能。这个合约必须包含一个特别的接口,而你可以自由编辑它。对大多数工程,这个合约会作为最先部署的并且不再作修改。truffle init会默认创建这个文件contracts/Migrations.sol。
Deployer 使用deployer安排部署任务。
// Deploy A, then deploy B, passing in A's newly deployed address
deployer.deploy(A).then(function() {
  return deployer.deploy(B, A.address);
});
Deployer API
    1、deployer.deploy(contract, args..., options)
    2、deployer.link(library, destinations)
    3、deployer.then(function() {...})
Network considerations基于网络来写不同的部署

与合约交互(合约调用)INTERACTING WITH YOUR CONTRACTS

调试合约

truffle debug <transaction hash>

命令与gdb差不多。https://www.trufflesuite.com/docs/truffle/getting-started/debugging-your-contracts

使用truffle develop和终端


Truffle Console: 一个基本的可连接到任何的以太坊客户端的交互终端。可以连接到Ganache或者geth等;还可以选择测试网或者主网;和选择自己的账号。
Truffle Develop: 一个自带blockchain的终端。在测试阶段,不用去部署;用默认账号;不用安装和维护blockchain客户端。
truffle console可以使用--network <name>指定网络。

遇到问题再来记录。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FatherOfCodingMan

如果觉得有用的话,可以赏点饭钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值