2、如何发行自己的数字代币(truffle智能合约项目实战)
- 1-Atom IDE插件安装
- 2-truffle tutorialtoken
- 3-tutorialtoken源码框架分析
- 4-安装openzeppelin代币框架(代币发布成功)
1-Atom IDE插件安装
正式介绍基于web的智能合约开发
推荐一个新的开发工具
Remix在线工具,无需安装,有缺点,不适合项目的开发
下面的ico代币都要借助官方的模板。保存到本地,在本地进行修改
一行有可能团队开发
https://learnblockchain.cn/docs/solidity/resources.html#solidity-ide
这里使用ATOM,本身绿色版
支持高亮和语法检查
打开一个项目
无智能合约的高亮状态
可能进行了屏蔽,无法下载,需要科学上网安装
若install未安装成功,可以将已经下载好的包(离线安装-此操作看视频)
本人直接在线安装好了
language-ethereum(是高亮的插件)
再安装自动补全的插件
autocomplete-solidity
都是通过官网下载的
此处也在线安装成功了
有高亮状态了
有了此工具开发dapp会更加方便
2-truffle tutorialtoken
进行web
使用相关的web框架参考
学习新技术的时候也使用模板
后期根据需求进行修改,开发效率无疑最快
有各种基于去中心化的解决方案
每个项目设计的技术也不太同
可以根据自己掌握的技术栈选择
通过tutorialtoken完成代币的发送及转账
https://www.trufflesuite.com/boxes
项目的下载和部署页面
创建项目需要的步骤,也在其中
Truffle框架已安装完成
此项目模板下载
进行模板下载失败,网络问题
故直接在码云或者github寻找
很快就下载下来了
直接运行失败了truffle develop
官方的bug
注意将truffle.js
改为truffle-config.js
必须修改
此时就打开了
Migrate部署报错,版本太低,使用ATOM打开项目更改版本
通过npm run dev
(是js的命令必须在开发者模式外执行)
执行npm run dev
报错
安装
npm install -g live-server
问题已找到直接找到下方的解决方法
再次向github下载
按照上方的步骤一步步来
一直到migrate
还是出现了此错误
https://blog.csdn.net/qin_zhimou/article/details/98966993
以下解决方法完全可行
再次运行成功后出现界面如下
进行ico合约发布转账
Node moudles
Src下是前端内容
Src下的js下的app.js就最核心的内容
下节课会分析
自动运行项目并分配3000端口
上方更改dev的启动端口
退出服务再启动npm run dev
启动的服务可以在局域网其他设备查看
3-tutorialtoken源码框架分析
模板编译部署运行
Json的注释在
{
"//":"json格式,定义项目所需的各种配置,和当前项目依赖的资源",
"#name": "定义项目的名称, version: 版本",
"name": "tutorialtoken",
"version": "1.0.0",
"description": "",
"main": "truffle-config.js",
"directories": {
"test": "test"
},
"#script":"定义可以执行的脚本 npm run dev中的dev为定义的脚本名词",
"scripts": {
"dev": "lite-server",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"#lite-server": "lite-server,可以用来搭建本地server服务,默认会读取当前bs-config.json文件",
"lite-server": "^2.3.0"
}
}
可以在bs-config该端口等
官方的demo着重将src下的文件
Css和font是用来美化界面的
从index分析,唯一该用户展示的界面
此处jQuery依赖的是google的在线版,下方最好下载下来为离线版
https://www.jq22.com/jquery-info122
右键另存为
保存到对应的js文件下
jQuery最好直接下载下来
Bootstrap框架
<!-- web3.js 提供了智能合约实例化,和合约调用的功能(RPC 远程过程调动) -->
其他项目要想要调用公有链的智能合约,就需要RPC
App.js是核心的编写的js文件,最重要的
接下来详细分析App.js
本节课主要分析结构,下节课分析细节
App={}
本身是一个对象
项目开始需要链接到私有链,使用web3Provider
在最下方的函数,只要页面加载完成就执行App对象中的init函数,而init函数有调用下方的initweb3(用来实例化web3对象)
Web3内置在truffle,,私有链执行就可以调用,若后期无私有链可以使用
http://cw.hubwiz.com/card/c/web3.js-1.0/
初始化web3实例后才能调用合约
接下来要进行智能合约的初始化
Node.js写作风格
所有的js都被引入到了html
App.js是后台可以调用js文件下所有的js执行
自己写个智能合约,编译后生成json文件,内含ABI数据
TruffleContract函数在其他的js中(用来获取其他合约的名称)
非常标准的逻辑,私有链链接合约实例化
数字货币转账框架,继承
4-安装openzeppelin代币框架(代币发布成功)
将合约和函数补全才能
在区块链比较火的时候发ico,进行众筹
无非就是发行数字名称和总量
已经有解决方案
使用开源代币框架进行发币
使用npm本地安装
在项目根目录下
这里需要注意的是使用npm安装的是最新版本的 openzeppelin-solidity
,使用的合约都是0.8了,而之前的安装环境是0.5.16的(后续冲突会无法继承使用),所以不使用下方命令安装
npm install openzeppelin-solidity
将开源框架下载到本地
使用cnpm安装
E:\truffle\token\github\tutorialtoken-box-master>cnpm install openzeppelin-solidity
结果还是0.8的
算了使用课程提供的代码进行吧
然后新建合约,输入如下
合约直接继承ERC20即可
pragma solidity ^0.5.0;
import "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol";//npm导入的库
contract TutorialToken is ERC20 {
string public name = "TutorialToken";//名称
string public symbol = "TT"; //代币符号
uint8 public decimals = 2; //代币精度
// 发行自己代币的总数量
uint public INITIAL_SUPPLY = 12000;
// 构造函数
constructor() public {
// 调用父类函数,传入合约所有者地址和发币总额
_mint(msg.sender, INITIAL_SUPPLY);
}
}
此发行的币不是以太坊等币,而是自己的币,若有合适产品并且大家都认可你的代币,那么你的代币就有价值
重要的是如何让别人相信你的代币有价值
此时完成迁移文件要,以阿拉伯数字开头
打开ganache
项目运行要链接到私有链,连接到的接口如下
进行合约的编译和部署
E:\truffle\token\github\tutorialtoken-box-master>truffle develop
truffle(develop)> deploy --reset
直接使用课程提供的代码进行编译部署
truffle develop
truffle(develop)> deploy --reset
在另一个cmd窗口运行
Npm run dev
Web3为全局变量,若存在则没问题。不存在链接现有的私链
一旦页面合约初始化完毕就查询当前的账户余额
这里是0,因为链接的账户无钱
有这些代币的账户为部署此转账合约的账户中
找到上方部署的账户地址,找到对应私钥导入metamask中
添加代币
此时就显示代币是数字了,代币算是发布成功了
代币间的转账也需要消耗gas
一个没有以太坊的钱有代币的账户发给另一个账户代币交易时无法成功的失败
此时明确运行在以太坊上的代币之间的转账操作是需要消耗gas的
Result.c
转账成功后查询当前账户的余额