2、如何发行自己的数字代币(truffle智能合约项目实战)

2、如何发行自己的数字代币(truffle智能合约项目实战)

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

转账成功后查询当前账户的余额

相关推荐
全栈还没全15 小时前
什么是Gas?使用场景以及开发中如何不使用Gas进行开发
区块链
代码羊羊1 天前
Foundry 依赖库管理实战
区块链·foundry
boyedu1 天前
以太坊智能合约核心技术解析与应用实践
区块链·智能合约
穗余1 天前
Solidity——什么是状态变量
区块链
元宇宙时间1 天前
全球发展币GDEV:从中国出发,走向全球的数字发展合作蓝图
大数据·人工智能·去中心化·区块链
boyedu1 天前
区块链平台以太坊核心原理
区块链·以太坊·以太坊核心原理
全栈还没全2 天前
区块链准备工作
区块链
Menger_Wen2 天前
分析新旧因子相关性
python·机器学习·区块链
嘻嘻仙人2 天前
SHA-256算法详解——Github工程结合示例和动画演示
区块链·ruby·哈希算法·sha-256
元媛媛3 天前
金融行业信息
金融·区块链