当前位置: 首页 > news >正文

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、如何发行自己的数字代币&#xff08;truffle智能合约项目实战&#xff09; 1-Atom IDE插件安装2-truffle tutorialtoken3-tutorialtoken源码框架分析4-安装openzeppelin代币框架&#xff08;代币发布成功&#xff09; 1-Atom IDE插件安装 正式介绍基于web的智能合约开发 推…...

百日筑基第二十三天-23种设计模式-创建型总汇

百日筑基第二十三天-23种设计模式-创建型总汇 前言 设计模式可以说是对于七大设计原则的实现。 总体来说设计模式分为三大类&#xff1a; 创建型模式&#xff0c;共五种&#xff1a;单例模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式。结构型模式&#xff0c;共…...

张量的基本使用

目录 1.张量的定义 2.张量的分类 3.张量的创建 3.1 根据已有数据创建张量 3.2 根据形状创建张量 3.3 创建指定类型的张量 1.张量的定义 张量&#xff08;Tensor&#xff09;是机器学习的基本构建模块&#xff0c;是以数字方式表示数据的形式。PyTorch就是将数据封装成张量…...

Oracle(14)什么是唯一键(Unique Key)?

唯一键&#xff08;Unique Key&#xff09;是数据库表中的一个或多个列&#xff0c;它们的值必须在整个表中唯一&#xff0c;但允许包含NULL值。唯一键的主要目的是确保表中每一行的数据在指定的列&#xff08;或列组合&#xff09;中是唯一的&#xff0c;以防止重复数据的出现…...

PostgreSQL的引号、数据类型转换和数据类型

一、单引号和双引号&#xff08;重要&#xff09;&#xff1a; 1、在mysql没啥区别 2、在pgsql中&#xff0c;实际字符串用单引号&#xff0c;双引号相当于mysql的,用来包含关键字&#xff1b; -- 单引号&#xff0c;表示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​进行上述操作&#xff0c;直到全变为0为止&#xff0c;对每次操作的数组进行求和&#xff0c;记…...

Flutter 插件之 package_info_plus

当使用Flutter开发应用时,通常需要获取应用程序的基本信息,例如包名、版本号和构建号。Flutter提供了一个名为 package_info_plus 的插件,它能方便地帮助我们获取这些信息。 1. 添加依赖 首先,需要在项目的 pubspec.yaml 文件中添加 package_info_plus 的依赖。打开 pubs…...

如何实现布隆过滤器?

1.布隆过滤器的场景 在Redis 缓存击穿&#xff08;失效&#xff09;、缓存穿透、缓存雪崩怎么解决&#xff1f;中我们说到可以使用布隆过滤器避免「缓存穿透」。 你会说我们只要记录了每个用户看过的历史记录&#xff0c;每次推荐的时候去查询数据库过滤存在的数据实现去重。 …...

运维团队如何高效监控容器化环境中的PID及其他关键指标

随着云计算和容器化技术的快速发展&#xff0c;越来越多的企业开始采用容器化技术来部署和管理应用程序。然而&#xff0c;容器化环境的复杂性和动态性给运维团队带来了前所未有的挑战。本文将从PID&#xff08;进程标识符&#xff09;监控入手&#xff0c;探讨运维团队如何高效…...

通过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服务器费用&#xff0c;目前4核16G服务器10M带宽配置70元1个月、210元3个月&#xff0c;那么能如何呢&#xff1f;配置为ECS经济型e实例4核16G、按固定带宽10Mbs、100GB ESSD Entry系统盘。 那么问题来了&#xff0c;4C16G10M带宽的云服务器可以支持多少人同时在线&…...

塔子哥的平均数-美团2023笔试(codefun2000)

题目链接 塔子哥的平均数-美团2023笔试(codefun2000) 题目内容 给定一个正整数数组a1 ,a2 ,…,an&#xff0c;求平均数正好等于k的最长连续子数组的长度 输入描述 输出描述 输出一个整数&#xff0c;表示最长满足题目条件的长度。 样例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; } 求输出结果 分析&#xff1a; a&#xff1a;先使用后 &#xff0c;a&#xff08;见第15篇http://…...

python BeautifulSoup库安装与使用(anaconda、pip)

BeautifulSoup 是一个可以从HTML或XML文件中提取数据的Python库。Beautiful Soup 已成为和 lxml、html5lib 一样出色的Python解释器&#xff0c;为用户灵活地提供不同的解析策略或强劲的速度。 Requests 获取html BeautifulSoup 解析html、xml,BeautifulSoup4库也称bs4库 安装B…...

基于Matlab的数据可视化

基于Matlab的数据可视化 一、二维图形的绘制&#xff08;一&#xff09;基本图形函数&#xff08;1&#xff09;plot函数&#xff08;2&#xff09;fplot函数&#xff08;3&#xff09;其他坐标系的二维曲线 &#xff08;二&#xff09;图形属性设置&#xff08;1&#xff09;线…...

深入理解Linux网络(二):UDP接收内核探究

深入理解Linux网络&#xff08;二&#xff09;&#xff1a;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 结构 为了使用链表机制&#xff0c;驱动程序需要包含<linux/types.h>头文件&#xff0c;该文件定义了如下结构体实现双向链&#xff1a; struct list_head {struct list_head *next, *prev; };2 链表的初始化 2.1 链表宏定义和初始化 可使用以…...

项目中无关痛痒的词句背后深层含义

项目中听上去无关痛痒的词句背后&#xff0c;深层含义有的时候并不友善。 他们说的&#xff1a;进度表有些激进 真正的意思&#xff1a;我们有麻烦了 他们说的&#xff1a;我们将在接下来的几个迭代里面弥补延误 真正的意思&#xff1a;我们还是有麻烦 他们说的&#xff1…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...