2、如何发行自己的数字代币(truffle智能合约项目实战)
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

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

相关文章:
2、如何发行自己的数字代币(truffle智能合约项目实战)
2、如何发行自己的数字代币(truffle智能合约项目实战) 1-Atom IDE插件安装2-truffle tutorialtoken3-tutorialtoken源码框架分析4-安装openzeppelin代币框架(代币发布成功) 1-Atom IDE插件安装 正式介绍基于web的智能合约开发 推…...
百日筑基第二十三天-23种设计模式-创建型总汇
百日筑基第二十三天-23种设计模式-创建型总汇 前言 设计模式可以说是对于七大设计原则的实现。 总体来说设计模式分为三大类: 创建型模式,共五种:单例模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式。结构型模式,共…...
张量的基本使用
目录 1.张量的定义 2.张量的分类 3.张量的创建 3.1 根据已有数据创建张量 3.2 根据形状创建张量 3.3 创建指定类型的张量 1.张量的定义 张量(Tensor)是机器学习的基本构建模块,是以数字方式表示数据的形式。PyTorch就是将数据封装成张量…...
Oracle(14)什么是唯一键(Unique Key)?
唯一键(Unique Key)是数据库表中的一个或多个列,它们的值必须在整个表中唯一,但允许包含NULL值。唯一键的主要目的是确保表中每一行的数据在指定的列(或列组合)中是唯一的,以防止重复数据的出现…...
PostgreSQL的引号、数据类型转换和数据类型
一、单引号和双引号(重要): 1、在mysql没啥区别 2、在pgsql中,实际字符串用单引号,双引号相当于mysql的,用来包含关键字; -- 单引号,表示user_name的字符串实际值 insert into t_user(user_nam…...
Mad MAD Sum-Codeforces Round 960 (Div. 2)
题目在这里 大意: MAD函数返回出现次数 ≥ 2 \geq2 ≥2的最大整数 b i b_i bi M A D ( a [ 1 , 2 , . . . i ] ) MAD(a[1,2,...i]) MAD(a[1,2,...i]) 每次操作把 a i a_i ai进行上述操作,直到全变为0为止,对每次操作的数组进行求和,记…...
Flutter 插件之 package_info_plus
当使用Flutter开发应用时,通常需要获取应用程序的基本信息,例如包名、版本号和构建号。Flutter提供了一个名为 package_info_plus 的插件,它能方便地帮助我们获取这些信息。 1. 添加依赖 首先,需要在项目的 pubspec.yaml 文件中添加 package_info_plus 的依赖。打开 pubs…...
如何实现布隆过滤器?
1.布隆过滤器的场景 在Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?中我们说到可以使用布隆过滤器避免「缓存穿透」。 你会说我们只要记录了每个用户看过的历史记录,每次推荐的时候去查询数据库过滤存在的数据实现去重。 …...
运维团队如何高效监控容器化环境中的PID及其他关键指标
随着云计算和容器化技术的快速发展,越来越多的企业开始采用容器化技术来部署和管理应用程序。然而,容器化环境的复杂性和动态性给运维团队带来了前所未有的挑战。本文将从PID(进程标识符)监控入手,探讨运维团队如何高效…...
通过vue3 + TypeScript + uniapp + uni-ui 实现下拉刷新和加载更多的功能
效果图: 核心代码: <script lang="ts" setup>import { ref, reactive } from vue;import api from @/request/api.jsimport empty from @/component/empty.vueimport { onLoad,onShow, onPullDownRefresh, onReachBottom } from @dcloudio/uni-applet form …...
Pointnet++改进即插即用系列:全网首发WTConv2d大接受域的小波卷积|即插即用,提升特征提取模块性能
简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入WTConv2d,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤三 1.理…...
4核16G服务器支持多少人?4C16G服务器性能测评
租赁4核16G服务器费用,目前4核16G服务器10M带宽配置70元1个月、210元3个月,那么能如何呢?配置为ECS经济型e实例4核16G、按固定带宽10Mbs、100GB ESSD Entry系统盘。 那么问题来了,4C16G10M带宽的云服务器可以支持多少人同时在线&…...
塔子哥的平均数-美团2023笔试(codefun2000)
题目链接 塔子哥的平均数-美团2023笔试(codefun2000) 题目内容 给定一个正整数数组a1 ,a2 ,…,an,求平均数正好等于k的最长连续子数组的长度 输入描述 输出描述 输出一个整数,表示最长满足题目条件的长度。 样例1 输入 5 2 1 3 2 4 1 输出 3 样例1解释…...
故障诊断 | 基于小波包能量谱对滚动轴承的故障诊断Matlab代码
故障诊断 | 基于小波包能量谱对滚动轴承的故障诊断Matlab代码 目录 故障诊断 | 基于小波包能量谱对滚动轴承的故障诊断Matlab代码效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于小波包能量谱对滚动轴承的故障诊断 matlab代码 数据采用的是凯斯西储大学数据 首先利用…...
E14.【C语言】练习:有关短路运算
#include <stdio.h> int main() {int i 0,a0,b2,c 3,d4;i a && b && d;printf("a %d\nb %d\nc %d\nd %d\n", a, b, c, d);return 0; } 求输出结果 分析: a:先使用后 ,a(见第15篇http://…...
python BeautifulSoup库安装与使用(anaconda、pip)
BeautifulSoup 是一个可以从HTML或XML文件中提取数据的Python库。Beautiful Soup 已成为和 lxml、html5lib 一样出色的Python解释器,为用户灵活地提供不同的解析策略或强劲的速度。 Requests 获取html BeautifulSoup 解析html、xml,BeautifulSoup4库也称bs4库 安装B…...
基于Matlab的数据可视化
基于Matlab的数据可视化 一、二维图形的绘制(一)基本图形函数(1)plot函数(2)fplot函数(3)其他坐标系的二维曲线 (二)图形属性设置(1)线…...
深入理解Linux网络(二):UDP接收内核探究
深入理解Linux网络(二):UDP接收内核探究 一、UDP 协议处理二、recvfrom 系统调⽤实现 一、UDP 协议处理 udp 协议的处理函数是 udp_rcv。 //file: net/ipv4/udp.c int udp_rcv(struct sk_buff *skb) {return __udp4_lib_rcv(skb, &udp_…...
linux内核中list的基本用法
内核链表 1 list_head 结构 为了使用链表机制,驱动程序需要包含<linux/types.h>头文件,该文件定义了如下结构体实现双向链: struct list_head {struct list_head *next, *prev; };2 链表的初始化 2.1 链表宏定义和初始化 可使用以…...
项目中无关痛痒的词句背后深层含义
项目中听上去无关痛痒的词句背后,深层含义有的时候并不友善。 他们说的:进度表有些激进 真正的意思:我们有麻烦了 他们说的:我们将在接下来的几个迭代里面弥补延误 真正的意思:我们还是有麻烦 他们说的࿱…...
如何用deberta-v3-base-zeroshot-v2.0构建企业级NLP应用?完整教程来了
如何用deberta-v3-base-zeroshot-v2.0构建企业级NLP应用?完整教程来了 【免费下载链接】deberta-v3-base-zeroshot-v2.0 项目地址: https://ai.gitcode.com/hf_mirrors/NingBo_Ascend/deberta-v3-base-zeroshot-v2.0 deberta-v3-base-zeroshot-v2.0是一款基…...
Buzz音频转录完全指南:3大核心功能+5个实战场景,快速掌握本地语音转文字技术
Buzz音频转录完全指南:3大核心功能5个实战场景,快速掌握本地语音转文字技术 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Tr…...
量子计算中Loschmidt回声相位测量的创新方法
1. 量子计算中的Loschmidt回声相位测量方法概述Loschmidt回声是量子动力学中一个重要的概念,它描述了量子系统在时间反演演化后与初始状态的相似程度。在量子计算领域,精确测量Loschmidt回声的相位信息对于理解量子系统的非平衡态行为、计算能量本征值以…...
第三幕 御酒掺土,江山为祭
金牌监制,您这一刀改得极其精准,直接把整部戏的格局从“江湖恩怨”拉升到了“家国博弈”的层面!确实,如果只谈慈悲,唐三藏只是个高僧;但如果加上李世民的重托和大唐的国运,他就是一个背负着沉重…...
DeepSeek系统设计辅助效能断崖式下降的3个信号,第2个90%工程师至今未察觉!
更多请点击: https://kaifayun.com 第一章:DeepSeek系统设计辅助效能断崖式下降的3个信号,第2个90%工程师至今未察觉! 当 DeepSeek 的系统设计辅助能力突然变“笨”——接口建议频繁失准、上下文感知错乱、生成代码无法通过基础编…...
从BUG()到panic:深入Linux 5.4内核,看异常处理如何层层递进
从BUG()到panic:Linux内核异常处理的防御体系全解析当你在深夜调试一个内核模块时,突然屏幕刷出一串红色警告——这可能是每个Linux内核开发者都经历过的噩梦时刻。但你是否想过,从第一行警告出现到系统完全崩溃,内核究竟经历了怎…...
保姆级教程:在Ubuntu上配置Frida环境,搞定Android App的IO重定向与签名绕过
在Ubuntu上构建Android逆向工程环境:Frida实战与IO重定向技术解析 对于习惯Linux环境的安全研究人员而言,Windows-centric的逆向工具链往往带来诸多不便。本文将系统性地介绍如何在Ubuntu上搭建完整的Android逆向环境,并深入探讨如何利用Frid…...
终极免费音乐解锁工具:5步轻松解密你的加密音乐文件
终极免费音乐解锁工具:5步轻松解密你的加密音乐文件 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https:/…...
人工智能的伦理与安全:这3个问题,软件测试从业者必须重视
随着大语言模型、生成式AI的爆发式落地,人工智能已经从实验室走向千行百业的生产场景,深刻改变着软件开发与交付的逻辑。对于直接把控产品质量关口的软件测试从业者来说,我们的职责早已不再是单纯验证功能可用性、排查性能bug那么简单——AI系…...
ZYNQ中断避坑指南:PL端信号线如何正确‘连线’到PS端处理函数?
ZYNQ中断系统深度解析:从硬件信号到软件响应的全链路实践 在嵌入式系统开发中,中断处理是实时响应的核心机制。对于ZYNQ这种集成了ARM处理器(PS)和可编程逻辑(PL)的异构计算平台,其中断系统既有传统处理器的特性,又具备FPGA灵活定…...
