基于以太坊发行自己的数字货币(代币)

imtoken官网地址 admin 2024-09-11 03:13 19 0

imToken 是一款全球领先的区块链数字资产管理工具[ZB],帮助你安全管理BTC, ETH, ATOM, EOS, TRX, CKB, BCH, LTC, DOT, KSM, FIL, XTZ 资产,同时支持去中心化币币兑换功能 ...

基于以太坊发行自己的数字货币(代币)

比特币钱包和以太坊钱包

(参考来自网络以及各种探索,包括各种坑)

区块链比特币以太坊

本文从纯技术角度详细介绍了基于以太坊ERC20创建代币的流程(本案例为已部署的eth主网,并非测试案例)

写在前面

本文讨论的代币是使用以太坊智能合约创建的。在阅读本文之前,你应该对以太坊和智能合约有一定的了解。如果你还不了解,建议你先阅读什么是以太坊。

代币

如果我们不太在意确切的定义,代币就是一种数字货币,比特币和以太坊都是代币。

利用以太坊的智能合约,你可以很容易地编写自己的代币,这些代币可以代表任何可以交易的东西,比如积分、财产、证书等。

因此不管是商业用途还是学习用途,很多人都想创建自己的token,我们先贴个图,看看创建出来的token长什么样子。

以我自己发布的货币Bcoin为例

访问网址:

今天我们将详细讨论如何创建这样的代币。

ERC20 代币

ERC20和代币一起出现。ERC20是以太坊定义的代币标准,是发行代币的合约必须遵循的协议,协议规定了几个参数——要发行的货币名称、缩写、发行数量、支持的功能等,只有支持这个协议才能被以太坊认可。

erc20标准代码如下

//

ERC20 {

()(单位);

()(单位);

(_to,uint)(布尔值);

(_from,_to,uint)(布尔值);

(,uint)(布尔值);

(,)(单位);

事件(_from,_to,uint);

事件(,,uint);

:表示发行的代币总量():该方法可以返回代币总数

name:发行token的名称:token发行后,token交易的最小单位

():该方法输入钱包地址后返回钱包的token余额。

() :将余额从一个地址发送到另一个地址

():允许您从您的账户转移余额

():允许从您的账户余额中转账。多次调用将覆盖可用金额。某些 DEX 函数需要此函数

event():token转移完成后触发

event():( , )调用后触发

编写代币合约:

^0.4.12;

{

(地址,nas)(布尔值);

/* 受 NAS 币启发 */

{

(x,y)(){

z=x+y;

((z >= x) && (z >= y));

顆;

(x,y)(){

(x >= y);

z=x-y;

顆;

(x,y)(){

z=x*y;

((x == 0)||(z / x == y));

顆;

令牌 {

()();

(_to,)(布尔值);

(_from,_to,)(布尔值);

(,)(布尔值);

(,)();

事件(_from,_to,);

事件 (imToken, , );

/* ERC 20 代币 */

是令牌{

(_to,)(布尔值){

如果([消息]> = &&> 0){

[消息]-=;

[_到] += ;

(消息, _to, );

真的;

} 别的 {

错误的;

(_来自,_到,)(布尔值){

如果([_from] >= && [_from][msg.] >= && > 0){

[_到] += ;

[_来自] -= ;

[_来自][消息] -= ;

(_来自,_到,);

真的;

} 别的 {

错误的;

()(){

[];

(,)(布尔){

[消息][] = ;

(消息,,);

真的;

(,)(){

[][];

( => );

( => ( => ));

是 , {

//

名称 = “”;

=“BCoin”;

= 18;

=“1.0”;

//

; //ETH存储地址

; // 代币更新地址

//

bool; // 状态切换为 true

; // 当前销售数量

= 0; //售出的代币总数

= 0; // 交易的代币总数

= 625; // 625 兑换 1 ETH

//

事件(_to,);//分配的私人交易令牌;

事件(_to,);//公开出售的代币;

事件 ( );

事件 ( );

事件(_to,);

//转换

()(){

*10**;

//

=;

= false; //控制预啤酒状态

= 0;

= 0;

=();

=();

[消息] = ;

如果(>)则抛出;

(){(消息。==);_;}

/// 设置代币汇率

(){

如果(==0)抛出;

如果(==)则抛出;

=;

/// @dev 代币超额发行

(){

值 = ();

如果 (值 + > ) 则抛出;

=(,值);

(价值);

/// @dev 被盗令牌处理

(){

值 = ();

如果 (值 + > ) 则抛出;

=(,值);

(价值);

/// 开始块检测异常处理

(,){

如果()抛出;

如果 ( >= ) 则抛出;

如果(block. >= )抛出;

=;

=;

=真;

/// 关闭块异常处理

(){

如果(!)抛出;

=假;

/// 开发了新的合约来接收代币(或更新代币)

(){

如果(==)则抛出;

=;

/// 设置新主人地址

()(){

如果(==(0x0))抛出;

=;

///将代币转移到新合约

(){

如果()抛出;

如果(==(0x0))抛出;

= [消息];

如果(==0)抛出;

[消息] = 0;

=(,);

=();

如果(!。(msg。,))抛出;

(msg., ); // 记录它

/// 将 ETH 转给团队

(){

如果 (this. == 0) 抛出;

如果(!.send(this.))抛出;

/// 将令牌分配给预处理地址。

(_addr,_eth){

如果 (_eth == 0) 抛出;

如果 (_addr == (0x0)) 则抛出;

= ((_eth), );

如果 ( + > ) 则抛出;

=(,);

[_地址] += ;

(_addr, ); // 记录 token 日志

/// 购买代币

(){

如果(!)抛出;

如果 (msg.value == 0) 则抛出;

如果(块。<)抛出;

如果(块。>)抛出;

=(消息.值,);

如果 ( + > ) 则抛出;

=(,);

[消息] += ;

(msg., ); //记录日志

上述代币合约是基于已经ICO并产生价值的以太坊代币合约,功能齐全、功能强大,通过该合约创建的代币具备“交易”、“转账”、“异常检测”、“更改代币持有者”、“设置汇率”、“被盗处理”、“代币超发”等功能。

(解释:在以太坊的世界里,硬通货就是ETH,相当于现实世界的黄金,我们发行的代币就相当于各国发行的需要和黄金挂钩的货币,国家对货币有控制权,只要扩展合约功能,创建代币的人也就拥有了对代币的控制权。)

(关于挖矿的误区:很多小伙伴以为挖矿就是挖币,其实挖矿就是挖区块,区块有什么用呢?就是用来打包交易,存储数据的。代币是不需要挖的,你挖到一个区块,代币就是你的奖励,在一定发行量的情况下,代币会越来越少,所以挖一个区块的奖励也会越来越少,奖励少了为什么还要挖矿?因为你的任何一笔交易都需要记录,一个区块的大小只有几MB,不可能存储那么多的交易信息,所以你还要继续挖区块来记录你的交易,同时交易费也会奖励给挖出区块的人。)

部署合约:

部署合约有多种方式 1 geth 编译代码---部署合约

2 使用钱包部署合约

3 最简单​​直观的部署合约方式:使用Remix IDE部署合约

我们按照Remix IDE来部署合约。

1:创建钱包账户。它是一种钱包,在浏览器中,可以安装插件,安装完成后右上角会出现一个“狐狸头”的标志,点击标志即可打开钱包。第一步是创建账户。(创建账户只需要输入密码,创建后名字可以随意改,账户是一个哈希值,给创建的账户充值,可以去网站,按照提示购买以太坊,然后转到创建的账户上。)创建成功后以太坊和比特币区块链钱包,记住密码和生成的几个随机词(一定要记下来)。如下:

2:打开Remix IDE访问地址:#=false&=-v0.4.21+..js界面如下

3:将“编写Token合约”后面的代码复制到Remix IDE中,并进行编译,如下所示

4:发布如下

5 之后,生成哈希值,复制哈希值,并将代币添加到钱包

OK,如上图,第一个真正属于你的去中心化数字货币诞生了,正式网的部署方式和测试网一样,不需要购买ETH。

如果是测试网络,如何获取ETH?下面输入,直接发送你的账户地址(hash值),一般五分钟到账,获得五个测试网络的ETH币。

6(如果你部署的是eth主网,而不是测试网,请执行此步骤,忽略测试网)

代币发布后,如果以后想进行ICO,需要发布源代码,步骤如下

① 复制部署成功的合约地址(hash),在右上角搜索hash

② 按照以下方式进行AND

评论区