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 链表宏定义和初始化 可使用以…...
项目中无关痛痒的词句背后深层含义
项目中听上去无关痛痒的词句背后,深层含义有的时候并不友善。 他们说的:进度表有些激进 真正的意思:我们有麻烦了 他们说的:我们将在接下来的几个迭代里面弥补延误 真正的意思:我们还是有麻烦 他们说的࿱…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...

spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

sshd代码修改banner
sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头,…...