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
在这里插入图片描述

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/382061.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分类损失函数 (一) torch.nn.CrossEntropyLoss()

1、交叉熵 是一种用于衡量两个概率分布之间的距离或相似性的度量方法。机器学习中&#xff0c;交叉熵常用于损失函数&#xff0c;用于评估模型的预测结果和实际标签的差异。公式&#xff1a; y&#xff1a;真是标签的概率分布&#xff0c;y&#xff1a;模型预测的概率分布 …

Kotlin泛型实化

内联函数 reified实现 1. 内联函数 内联函数中的代码会在编译的时候自动被替换到调用它的地方&#xff0c;这样的话也就不存在什么泛型擦除的问题了&#xff0c;因为代码在编译之后会直接使用实际的类型来替代内联函数中的泛型声明。 2. reified关键字 在Kotlin中&#xff0…

购物车案例(源码分享)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

谷粒商城实战笔记-37-前端基础-Vue-基本语法插件安装

文章目录 一&#xff0c;v-model1&#xff0c;双向绑定2&#xff0c;vue的双向绑定2.1 html元素上使用指令v-model2.2 model中声明对应属性2.3&#xff0c;验证view绑定modelmodel绑定view 完整代码 二&#xff0c;v-on1&#xff0c;指令简介2&#xff0c;在button按钮中添加v-…

llama 2 改进之 RMSNorm

RMSNorm 论文&#xff1a;https://openreview.net/pdf?idSygkZ3MTJE Github&#xff1a;https://github.com/bzhangGo/rmsnorm?tabreadme-ov-file 论文假设LayerNorm中的重新居中不变性是可有可无的&#xff0c;并提出了均方根层归一化(RMSNorm)。RMSNorm根据均方根(RMS)将…

前端JS特效第50集:zyupload图片上传

zyupload图片上传&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下(全部代码在文章末尾)&#xff1a; var operimg_id; var zoom_rate100; var zoom_timeout; function rotateimg(){var smallImg$("#"operimg_id);var numsmallImg.attr(curr_rotate);if(nu…

2024 HNCTF PWN(hide_flag Rand_file_dockerfile Appetizers TTOCrv_)

文章目录 参考hide_flag思路exp Rand_file_dockerfile libc 2.31思路exp Appetizers glibc 2.35绕过关闭标准输出实例客户端 关闭标准输出服务端结果exp TTOCrv_&#x1f3b2; glibc 2.35逆向DT_DEBUG获得各个库地址随机数思路exp 参考 https://docs.qq.com/doc/p/641e8742c39…

语音识别 语音识别项目相关笔记内容

语音识别 语音识别项目相关笔记内容 语音识别应用范畴语音识别框架语音基本操作使用scipy.io.wavfile读取wav音频文件获取采样率、长度、通道数使用numpy读取pcm格式音频文件读取wav音频文件,并绘制图像读取双声道的wav音频文件,分别绘制不同声道的波形图读取一个采样率为16k…

【k8s故障处理篇】calico-kube-controllers状态为“ImagePullBackOff”解决办法

【k8s故障处理篇】calico-kube-controllers状态为“ImagePullBackOff”解决办法 一、环境介绍1.1 本次环境规划1.2 kubernetes简介1.3 kubernetes特点二、本次实践介绍2.1 本次实践介绍2.2 报错场景三、查看报错日志3.1 查看pod描述信息3.2 查看pod日志四、报错分析五、故障处理…

【Vue】深入了解 v-for 指令:从基础到高级应用的全面指南

文章目录 一、v-for 指令概述二、v-for 指令的基本用法1. 遍历数组2. 遍历对象3. 使用索引 三、v-for 指令的高级用法1. 组件列表渲染2. 使用 key 提升性能3. 嵌套循环 四、结合其他功能的高级用法1. 处理过滤和排序后的结果2. 迭代数值范围3. 结合其他命令使用模板部分 (<t…

基于vue3 + vite产生的 TypeError: Failed to fetch dynamically imported module

具体参考这篇衔接&#xff1a; Vue3报错&#xff1a;Failed to fetch dynamically imported module-CSDN博客 反正挺扯淡的&#xff0c;错误来源于基于ry-vue-plus来进行二次开发的时候遇到的问题。 错误起因 我创建了一个广告管理页面。然后发现访问一直在加载中。报的是这样…

Unity点击生成节点连线

Unity点击生成节点连线 效果 2.主要代码 Test_Line 控制类 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems;public class Test_Line : MonoBehaviour {public GameObject qiu_prefab;public List<Game…

h5点击电话号跳转手机拨号

需要使用到h5的 <a>标签 我们首先在<head>标签中添加代码 <meta name"format-detection" content"telephoneyes"/>然后再想要的位置添加代码 <a href"tel:10086"> 点击拨打&#xff1a;10086 </a> 这样功能就实现…

【Day1415】Bean管理、SpringBoot 原理、总结、Maven 高级

0 SpringBoot 配置优先级 从上到下 虽然 springboot 支持多种格式配置文件&#xff0c;但是在项目开发时&#xff0c;推荐统一使用一种格式的配置 &#xff08;yml是主流&#xff09; 1 Bean管理 1.1 从 IOC 容器中获取 Bean 1.2 Bean 作品域 可以通过注解 Scope("proto…

深入浅出WebRTC—ALR

ALR&#xff08;Application Limited Region&#xff09;指的是网络传输过程中&#xff0c;由于应用层的限制&#xff08;而非网络拥塞&#xff09;导致带宽未被充分利用的情况。在这种情况下&#xff0c;应用层可能因为处理能力、手动配置或其他因素无法充分利用可用带宽&…

Mybatis配置代码解读(事务管理与连接池)

目录 配置代码解读 事务管理方式 数据库连接池 测试代码解读 SqlSessionFactory SqlSession 接口的代理对象 ▐ 前言 在上一篇文章 手把手教你搭建Mybatis框架-CSDN博客 中分享了如何搭建Mybatis框架&#xff0c;但没有对一些配置文件和语法做出详细解读&#xff0c;刚…

免费【2024】springboot 必录德健身器材用品网的设计与实现

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

maven私服上传jar包 400 Bad Request 错误

文章目录 前言一、直接看报错二、问题处理三 maven 私服配置说明总结 前言 maven仓库的私服,一般会存放公司或者个人封装的jar包,用来共享给二次开发和协作伙伴用,很方便 第一次发布没有问题,但是我第二次发布,开始报错了 一、直接看报错 401 无权限我这个是400 说明用户名密…

Sql Server缓冲池、连接池等基本知识(附Demo)

目录 前言1. 缓存池2. 连接池3. 彩蛋 前言 基本的知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;Mysql优化高级篇&#xff08;全&#xff09;Mysql底层原理详细剖析常见面试题&#xff08;全&#xff09; 1…

昇思25天学习打卡营第14天|计算机视觉

昇思25天学习打卡营第14天 文章目录 昇思25天学习打卡营第14天FCN图像语义分割语义分割模型简介网络特点数据处理数据预处理数据加载训练集可视化 网络构建网络流程 训练准备导入VGG-16部分预训练权重损失函数自定义评价指标 Metrics 模型训练模型评估模型推理总结引用 打卡记录…