主页 > imtoken钱包下载2.0版本 > 以太坊的智能合约应用(一):发行硬币

以太坊的智能合约应用(一):发行硬币

imtoken钱包下载2.0版本 2023-02-10 07:03:04

可以说,以太坊是2016年和2017年区块链牛市的导火索,为什么呢? 大家想一想,其实从区块链诞生至今,杀手级应用只有两个,一个是比特币的数字货币功能,一个是以太坊的货币发行功能。

以太坊简单得令人发指的发币功能,直接引爆了ICO的火热规模化发展。 事实上,ICO是随着区块链一起诞生的,并不是什么新鲜事物。 当时以太坊本身就是通过ICO融合一些比特币发展起来的。

然而,以太坊出现之前的ICO有两个缺点:

1、风险比较大,很有可能投入的币发过去,但不会再发回新币;

2. 项目周期长,项目向投资人发币通常需要很长时间。

以太坊通过智能合约的方式完美解决了这两个问题。 当投入的以太坊转出时,肯定会有新的币回到你的账户,而且几乎是立刻,马上。 不管这个项目是不是air项目,至少新币可以马上拿到,对投资人来说风险小很多。 因此,以太坊的发币功能重新赋能了ICO。

下面我们来看一个最简单的发币智能合约。 它用solidity语言编写,实现了最简单的功能,即投资者向智能合约发送以太币,智能合约自动将新发行的代币转入投资者账户。

如图所示:

没错,几行代码,足够简单方便!

让我们阅读它:

合同 ABC{}

contract表示这是一个智能合约,合约名称是ABC,然后{}是合约的内容。 这个合约有bal和owner两个数据,ABC()和invest()两个函数。 我们暂且称其发行的代币为ABC币。

地图(地址=>uint)公共球;

地图是一种数据类型。 如前所述,它代表一种数据类型到另一种数据类型的映射。 这里,就是一个以太坊地址(address)到一个uint(unsigned integer)数据的映射。 public 是指这个变量可以从合约外部访问。 所以这句话其实定义了一个叫bal的map,可以在合约外访问。 它的作用是代表以太坊账户的ABC代币余额。

地址公共所有者;

在这里,定义了一个名为 owner 的具有公共属性的地址变量。 顾名思义,我们用 owner 来表示合约所有者的以太坊地址。

函数 ABC(){}

这里定义了一个叫做ABC()的函数,function表示这是一个函数,{}是函数的内容。 有没有注意到这个函数的名字和这个合约的名字是一样的,因为它是合约的创建函数,它的作用是做一些初始化的工作来“创建”合约,所以只被执行创建合约时5分钟以太坊发币,以后都不能调用。

所有者=消息。 发件人;

我们在这个创始函数中可以看到的代码就是这句话(其实真正编译之后还是做了很多工作),也就是说合约的部署者(msg.sender,以太坊就是用这个变量名来指的是每个合约的部署者,即发起交易的地址)被定义为合约的所有者。

函数投资()应付{}

这个函数是可以被外部调用的函数。 实现了发币功能。 应付账款也是一个关键词。 所有涉及令牌的操作都必须随身携带才能成功执行。 我们来看看它的具体实现。

如果(消息。值> 0)

这句话的意思是5分钟以太坊发币,如果合约调用者发送给合约的以太币数量(msg.value)大于0。那么:

1. bal[msg.sender] = msg.value; 然后,在调用者的账户中存储与 msg.value 一样多的 ABC 代币;

2. owner.send(msg.value); 同时,将合约的调用者发送给合约的以太币转移给合约的所有者。

所以,如果你转一个以太币到这个合约地址,你就会得到一个ABC币,然后你的以太币就会转给合约的所有者。 这个过程是一个 ICO。

当然,以太坊的智能合约绝对不仅仅局限于发币的应用。 明天我们将寻找另外两个应用程序。 别着急,我就不码了,简单介绍一下。

投资或死亡

自由就是选择的权利,每一个选择都是一种投资。

谢谢阅读

✬如果您喜欢本文,欢迎分享到朋友圈✬

评论功能现已开放,接受各种形式的投诉和表扬☺