这篇笔记主要记录菜鸡在看cryptozombies的truffle测试和部署两个模块的一些新东西
主要有一下几个
testrpc、web3.js、truffle、solc、truffle init报错、Ganache、mocha、Chai 、async、await、let和var、Loom、Infura、Rinkeby
testrpc不同于geth,geth是真正的以太坊环境,testrpc是在本地使用内存模拟的一个以太坊环境。testrpc会默认给你十个测试账号用来调试
web3.js是基于以太坊的Javascript API
web3.js的API文档https://web3.tryblockchain.org/
在搜这些名词的过程中找到一个中文学习的链接,在这里插一下
区块链相关教程
https://www.qikegu.com/docs/5124
truffle是本地的用来编译、部署智能合约的工具
truffle init
创建一个空工程
truffle compile
编译
truffle migrate
部署
truffle test
测试
init后会创建几个文件
contracts用于存放合约
migrations用于存放部署脚本
test用于存放测试文件
truffle-foncig.js是配置文件
truffle init报错解决方案
解决方法可以是直接git代码取代truffle init命令
git clone https://github.com/truffle-box/bare-box
后续的命令需要先执行:cd bare-box
以上两条命令的功能就相当于truffle init,自动生成好了框架。
solc是solidity的编译工具,在truffle开发框架中使用到solc
Ganache,这是一种用于以太坊开发的个人区块链,可用于部署合同,开发应用程序和运行测试。
truffle测试相关
每次开始编写新的测试套件时,需要做的第一件事是加载要与之交互的合同的构建工件。
这样,Truffle就会知道如何以合约可以理解的方式来格式化我们的函数调用。
一个简单的例子。
假设有一个合同叫做myAwesomeContract。我们可以执行以下操作来加载构建工件:
const myAwesomeContract = artifacts.require(“myAwesomeContract”);
该函数返回称为合同抽象的东西。
简而言之,合同抽象隐藏了与以太坊进行交互的复杂性,并为我们的Solidity智能合同提供了便捷的JavaScript接口.
mocha是JavaScript的一种单元测试框架,既可以在浏览器环境下运行,也可以在Node.js环境下运行。
使用mocha,我们就只需要专注于编写单元测试本身,然后,让mocha去自动运行所有的测试,并给出测试结果。
Chai 是一个针对 Node.js 和浏览器的行为驱动测试和测试驱动测试的断言库
async(async function)声明一个function是异步的
await(async wait)用于等待一个异步方法执行完成
async函数执行后返回一个promise
promise有三个状态,pending(进行中)、resolved(已完成)、rejected(已拒绝)
let和var都可以定义一个变量
使用let声明一个变量,该变量的范围限于声明它的块中
Loom是用于创建出侧链的工具,它本身并不是侧链
Infura就是一个可以让你的dApp快速接入以太坊的平台,不需要本地运行以太坊节点。
Infura不管理私钥,这意味着它无法代表我们签署交易
由于部署智能合约需要Truffle签署交易,因此我们需要一个名为的工具truffle-hdwallet-provider。它的唯一目的是处理事务签名。
Rinkeby是以太坊测试网络
用于测试的eth可以从Rinkeby的Authenticated Faucet服务里获取