主页 > tp钱包和imtoken钱包通用吗 > 你可以用比特币发行硬币吗?一篇文章了解代币进化史

你可以用比特币发行硬币吗?一篇文章了解代币进化史

tp钱包和imtoken钱包通用吗 2023-03-24 06:42:51

本文作者为区块链解决方案服务商Pelith Technology项目经理赖艳婷。本系列文章不会讲太深的技术研究,而是以通俗易懂的方式,让各位想了解区块链技术的读者看完后可以说:就是这样!

前两节我们从交易开始了解比特币和以太坊的基本结构,然后介绍了以太坊智能合约操作的概念。在第三部分,我们将回顾区块链“代币”的演进历史,并分析相关技术。

既然要讲代币,首先要明确代币的定义。打个比方,在我们的现实世界中,有各国发行流通的法定货币,例如:台币(NTD)、美元(USD)。但是,有些公司会发行在平台上流通的“代币”,以方便平台管理或流通便利,例如:汤姆熊币、Line Points。

在区块链的世界里,其实也有类似的概念。公链上流通的加密货币,如比特币(BTC)和以太坊(ETH),就像各国的法定货币,一般被称为“协议代币”(在比特币/以太坊协议下流通的代币)。

但是,在以太坊上,我们可以通过智能合约的定制,创造出类似于代币的产品,可以称之为“定制代币”。代币的功能是通过智能合约赋予代币的,类似于我们上面理解的传统代币。

“协议令牌”和“自定义令牌”都称为加密货币。而“协议代币”往往拥有自己的区块链或类似的去中心化账本技术,无需任何其他区块链即可独立运作。而“自定义代币”使用现有的区块链(主要是以太坊)来发行和运行智能合约或其他方法。

本文主要介绍“自定义代币”的主题。

2017 年的 ICO 浪潮迎来了大币发行时代,每个人都可以在以太坊区块链上发行自己的代币。但实际上,在以太坊上线之前,区块链代币(以下简称代币)就已经存在。

区块链代币的起源:彩色硬币

代币的历史可以追溯到比特币上的彩币。但是比特币没有智能合约,怎么发币呢?当时铸造代币的做法是:我们将 1 个 Satoshi(10^-8 个比特币)重新定义为 1 美元。

这样,1 个比特币(1 亿聪)的价值就变成了 1 亿美元。但是,这样的做法必须是可信的,所以铸币机构应该抵押 1 亿美元来保证这 1 亿个 Satoshi 有等值的 1 亿美元(但没有机制保证铸币机构真的有抵押)。

所以我们会说这些比特币是染色的,因为它不再代表比特币的账面价值,而是被赋予了新的价值含义,但是这个Token是通过比特币的区块链网络流通的。当我寄给你 100 聪时,我实际上寄给你 100 美元。

但这 100M 的彩色硬币如何与其他比特币区分开来呢?因此,许多铸币者会使用比特币外部的账本来追踪这 100M Satoshi 的交易记录,从而确认谁拥有了这些“染色”的 Satoshi,他们有权将这些 Satoshi 兑换成美元。

另外,在比特币UTXO的框架下,如果彩币和比特币同时交易,如何区分哪些是彩币?一种可能的方式是:一笔交易输出的前钱堆是彩色硬币;后者的钱堆是比特币。

用比特币就能发币?一文看懂代币演进史

以上就是最早铸造Token的做法。这种方法的主要缺点是:当你染了这 1 个比特币时,也意味着你失去了这 1 个比特币(因为这 1 个比特币被用于其他目的)。

而当你想和别人交易 300 美元(300 Satoshi)时,你必须向矿工支付比 300 Satoshi 大得多的费用,所以真正像这样铸造的人很少。2017年币价破天后,几乎没有人再像这样铸造它了。

USDT 和 Omni 层

下一步是由Tether发行著名的第一代USDT。第一代USDT建立在比特币之上,采用了Omni Layer技术。做法是在比特币上发送一笔交易,但交易本身并不是重点,重点是在交易的OP_RETURN中写入消息。

例如:地址A到地址B

用比特币就能发币?一文看懂代币演进史

以太坊 ERC-20 代币

以上是在比特币上发行Token的常见做法。然后进入以太坊的世界,得益于智能合约功能的出现,一切都变得简单了。ERC-20 Token 是迄今为止最常见的代币,那么 ERC-20 是什么?ERC-20 代币是如何铸造的?

ERC-20 是在以太坊上发行代币的协议规范,规定了所发行的代币必须包含的信息(例如发行多少),以及功能(例如发送和接收)和限制(例如在一定时间内发送和接收令牌的能力)。钱包提款限额)等,并在以太坊上建立数据库,记录每个地址持有的代币数量。

例如,今天我想发行一个名为 Pelith Token 的 ERC-20 Token。假设你要发布一百万件,你是怎么做的?

最直接的方式就是用ERC-20代币发行规范编写一个智能合约2021发行比特币硬币,在发行代码中写入一百万条,然后把这个智能合约放到一个交易中。在 Input Data 中,交易的接收地址用 0x0 填充。矿工执行部署后,一百万个 Pelith 代币诞生。

因此,创建代币在技术上非常容易。不管你是想发行100万、1亿还是10亿,其实只是智能合约中改变一个数字的区别,而改变发行的成本往往接近于零。

因此,在2017年的ICO浪潮中,将会出现各种各样的shitcoins。只要你写了一份智能合约和一份白皮书,一个代币就诞生了,你就可以开始赚钱了。什么!不,是筹款。

真正的难点往往是代币发行后的实际应用场景建设和社区营销运营。通证被认可、人们愿意持有和使用是最大的困难和成本。

概括

1.“协议代币”通常拥有自己的区块链或类似的去中心化账本技术,而“自定义代币”则使用现有的区块链发行和运行。

2. 在比特币的早期,有两种方法可以改变单位的定义,彩色硬币和使用比特币作为便条纸的 Omni Layer。

3. 以太坊和智能合约的出现,使得代币的发行在技术门槛上变得更加容易和统一。然而,应用场景的搭建和社区营销运营才是真正的难点。

上面我们讲了自定义代币从比特币开始到以太坊ERC-20代币出现的发展历程。下面将重点介绍以太坊的技术方面,并在最后对代币的演变历史给出一些看法和评论。

代币转移的成本

大家应该在第一节就知道,区块链加密货币交易必须向矿工支付手续费,所以既然“自定义代币”需要通过区块链传输,那么当我想将代币发给别人的时候,也是很符合逻辑的向矿工支付费用。

下一部分的讲解会用到Section 2的很多概念,如果没看过的话,建议你先看一遍,不然可能很难消化。

假设我(A)想将 10 个 Pelith 代币(自定义代币)转移给 B,实际发生了什么?我只是做了一个图表来说明。(只是概念性的解释,省略了很多可能很复杂的中间细节)

首先你要知道,在区块链上发行代币实际上并不是发币或发钞票,而是建立一个“类似Excel的账本”来记录谁拥有多少代币。当我们进行代币转移时,我们只需更改此分类帐上网格中的数字。

因此,当我通过智能合约创建 Pelith Token 时,我创建了一个类似 Excel 的表格来跟踪所有 Pelith Token 持有者的持有量,并且这些数据会以某种形式存储和备份在每个节点中(是的,它是关于全节点 200 G)。

当我想将 10 个 Pelith Token 转给 B 时,我必须以收件人为合约地址发送一笔交易,矿工们就会知道我要操作智能合约,而不是一般将 Ether 发送给其他人的交易。并在Input Data中调用我要操作action的函数,并输入相应的参数,大概如下所示:

我要调用的函数格式:

transferFrom(地址_from,地址_to,uint256_value)

[从_from地址向_to钱包地址转账_value数量的代币] 填写参数:transferFrom(0xA⋯⋯, 0xB⋯⋯, 10)

→ transferFrom(0xA⋯⋯, 0xB⋯⋯, 10000000000000000000)

注意:第三个参数uint256_value是10个Pelith Tokens,但是因为以太坊上没有小数点,所以在进入操作时需要使用wei(10^-18,以太坊的最小单位),所以需要填写在 10. 18 0 之后。然后转换成这样的东西:

0x23B872DD0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088AC788AC78AC78AC78AC78AC78AC78AC78AC8AC8AC78AC78AC8AC78AC78AC78AC78AC8AC

然后将其放入输入数据中。*(0xA⋯⋯, 0xB⋯⋯, 10) 这串函数中的参数称为“Payload”(装载货物)

这些 Bytecode 被矿工验证并执行后,“账本”中对应地址的 Balance 被更新,然后与其他交易一起打包成一个新的区块。最先找到Nonce获得出块权的矿工将其广播给其他节点,直到各节点同步完成,确认该区块在最长区块链中,正式验证I(A ) 将 10 个 Pelith 代币转移给 B。

上述动作,其实和交易是一样的,需要支付一定的以太币手续费给矿工。当您的 ERC-20 代币要转移到一个新的地址进行持有时(假设 B 过去从未持有 Pelith 代币),我们必须在“账本”中打开一个额外的网格来记录和跟踪地址的余额。

“多开一个格子”的价格是20000gas;“更改现有网格中的数字”的价格是 5,000 gas。在本次交易中,A 和 B 两个网格发生了变化,所以是 10,000 gas。加上 21,000 gas 的基本交易费。我执行了将 10 个 Pelith 代币转移到 B 的操作,总共花费了 51,000 个 gas。

计算执行操作的总 Gas 成本:

20,000 gas + 5,000*2 gas + 21,000 gas = 51,000 gas 手续费(Eth)= Gas Used * Gas​​ Price

51,000 gas * 10 Gwei(快速)= 510,000 Gwei = 0.00051 ETH = 0.1 USD

(按 1 以太币 = 200 美元计算)

大约3台币,也就是换一格的手续费左右。

至此,我们知道了转账Token的手续费。如果转账金额很大,其实金额是一定的。另外,如果你的 Token Transfer 交易无效并被退回(例如你只有 10 个 Token,但发送了 20 个给其他人),直到矿工想要更改网格,但矿工已经执行了交易才会触发错误. 从事务的操作直到错误被触发。因此,即使交易失败,仍然需要支付费用。

以太坊2.0 和无头合约

最近,随着以太坊2.0的消息越来越多,出现了一个新名词:“无头合约”。原本在智能合约中,当我们从 Input Data 中调用合约中的函数时,合约中的代码会进行逻辑运算来更新“账本”中的余额。

但是,以太坊的 Phase 1 2.0 没有 EVM,无法执行合约的逻辑部分。因此,已发布合约中的函数将如下所示:

transferFrom(地址_from,地址_to,uint256_value){

}

1.0 的原始合约函数如下所示:

transferFrom(address _from, address _to, uint256 _value) 返回 (bool) {

余额[_from] = 余额[_from].sub(_value);

余额[_to] = 余额[_to].add(_value);

发出转移(_from,_to,_value);

返回真;

}

这是什么意思?也就是说,当我们在 Input Data 中调用合约中的函数时,该函数实际上并没有更新账本上网格中的余额。所以这个合约只是一个空壳2021发行比特币硬币,虽然看起来有点东西,但实际上并没有执行任何动作。

因此,当我们将交易发送到合约时,输入 Input Data:

transferFrom(0xA⋯⋯, 0xB⋯⋯, 10)

合约实际上并没有更新账本(因为根本没有账本),也不会同步到其他节点。因此,这些 Input Data 输入的内容仅在 to 合约的交易中写为一般备注文本消息。所以,我又回到了 Bitcoin Omni Layer 的实践。我不得不爬取“便条纸”上的所有信息,才能知道每个地址的最新余额状态。因此,当我们发送一个调用这个合约的交易时,因为没有逻辑执行,我们其实可以节省很多gas。我们只需要支付 21,000 gas 的基本交易费外加一点文字写作费。

我们回顾了目前为止的4个部分的内容,我们可以发现区块链已经从1.0的比特币变成了2.0的以太坊。最大的升级是智能合约的功能,它让开发者可以定制很多需要的功能。

综上所述

1. 在区块链上发行代币实际上并不是发行硬币或发行纸币,而是创建一个“类似 Excel 的账本”来跟踪谁拥有多少代币

2. 代币转账时,必须发送以接收地址为合约地址的交易,并在Input Data中调用合约中的函数进行操作,并支付相应的计算成本矿工。

3.在以太坊的第一阶段2.0,没有逻辑执行功能,所以智能合约变成了“无头合约”,所以以太坊2.0可以看成是Omni等层状“便条纸”使用。