以太坊 day (7)

一、truffle

1.1 truffle概念

他是以太坊的开放框架

1.2 安装truffle

npm install truffle -g

1.3 搭建truffle空项目

  • mkdir project
  • truffle init

1.4 truffle文件目录

在这里插入图片描述

1.5 修改truffle-config.js

  compilers: {
    solc: {
      version: "0.4.26", 
      }
   }

二、truffle操作文件

2.1 编译文件

  • truffle compile
  • 编译后生成.json文件

2.2 部署文件

需要自己写部署脚本,2_initial-migration.js

const Hello = artifacts.require("hello");

module.exports = function (deployer) {
    deployer.deploy(Hello);
};

2.3 配置网络,solc版本

  • truffle-config.js
module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",
      port: 8545,
      network_id: "*"
    }
  },
  compilers: {
    solc: {
      version: "^0.4.26"
    }
  }
};

2.4 进行部署

 truffle migrate --network ganacheNet

2.5 部署完成后,hello.json文件的变化

在这里插入图片描述

2.5 使用truffle自带环境编译部署集合

  • truffle develop
  • compile
  • migrate

2.6 与合约交互

  • truffle-contract

2.7 测试合约

  • 修改合约后,要重新进行编译,不然会一直报错
pragma solidity ^0.4.26;
import 'truffle/Assert.sol';
import  'truffle/DeployedAddresses.sol';
import  '../contracts/Hello.sol';
//测试合约的Test是大写的
contract TestHello{
    //测试方法的test是小写的
    function testSetGet() public{
        Hello  hh = Hello(DeployedAddresses.Hello());
        hh.setMsg("jack");
        string memory res = hh.getMsg();
        Assert.equal(res, "jack", "结果应该是jack");
    }
}

三、react框架

3.1 安装react

  • npm install -g ethereumjs-testrpc

  • truffle unbox react

3.2 未完待续

四、遇到的问题

4.1 Win10修改编辑文件无法保存怎么办

Win10修改编辑文件无法保存怎么办

4.2 truffle test出错,rpc,找不到client

  • 进入truffle develop
  • 然后test

4.3 部署失败

  • 在truffle控制台中,migrate --reset,会重新不是一遍
  • 如果还失败,rm -rf build,删除编译好的文件

五、新版本web3

5.1 三种方式获取accounts

//获取用户的地址
let Web3 = require('web3')
let web3 = new Web3('http://127.0.0.1:7545');
//console.log(web3)
web3.eth.getAccounts((err, res) =>{
    console.log(res)
    if(err){
        console.log(err)
    }
})
web3.eth.getAccounts().then(res =>{
console.log(res)}).catch(err =>{
    console.log(err)
})
let f = async () =>{
    try{
        let accounts = await web3.eth.getAccounts();
        console.log(accounts)
    }catch (e) {
        console.log(e)
    }
}
f()

5.2 不使用合约就可以转账

//获取用户的地址
let Web3 = require('web3')
let web3 = new Web3('http://127.0.0.1:7545');

let f = async () =>{
    try{
        let accounts = await web3.eth.getAccounts();
        //console.log(accounts)
        //不需要合约就可以转账
        let res = await web3.eth.sendTransaction({
            from:accounts[0],
            to:accounts[1],
            value:web3.utils.toWei('10', 'ether')
        })
    }catch (e) {
        console.log(e)
    }
}
f()

5.3 bigNumber

  • bignumber.js
    npm install bignumber.js -g
let bigNumber = require('bignumber.js')
let num1 = new bigNumber('12134144444444433')
let num2 = new bigNumber('1000')
let num3 = new bigNumber('1000')
console.log(num1.plus(num2).toString())
console.log(num1.minus(num2).toString())
console.log(num1.times(num2).toString())
console.log(num1.div(num2).toString())
console.log(num2.eq(num3).toString())

  • web3.util.toBN的使用
let Web3 = require('web3')
let web3 = new Web3()
let num1 = web3.utils.toBN('2000000000')
let num2 = web3.utils.toBN('22')
console.log(num1.add(num2).toString())

5.4 简单的util类型转换api

let Web3 = require('web3')
let web3 = new Web3()
//wei转成ether
let res = web3.utils.fromWei('1', 'ether')
console.log(res)
//转成16进制
let res1 = web3.utils.toHex('jack')
console.log(res1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值