网络安全检测|网络安全服务|网络安全扫描-香港墨客投资移动版

主页 > 业界资讯 > imtoken

代币是怎样演进的

在前两节的内容我们从交易开始认识比特币及以太坊的基础架构,随后介绍了以太坊智慧合约运作的概念。第三节我们将来回顾区块链「代币」演进的历史,并解析与之相关的技术。

既然要谈代币,就必须先厘清代币的定义。用比喻来说明的话,我们现实世界中有各国发行流通的法币,如:台币(NTD)、美金(USD)。然而,有些公司为了便于平台管理或流通便利性等因素,会发行在平台流通的「代币」,如:汤姆熊币、Line Points。

在区块链的世界里,其实也存在类似的概念,在公链上流通的加密货币如:比特币(BTC)、以太币(ETH),就像是各国的法币,普遍被称之为「协议代币」(在比特币/以太坊协议下流通的代币)。

然而,在以太坊上我们可以透过智慧合约客制化来创造出类似于代币性质的产物,可称之为「自定义代币」,透过智慧合约来赋予代币功能,类似我们传统上理解的代币。

「协议代币」与「自定义代币」我们都称为加密货币(Cryptocurrency)。而「协议代币」往往有自己的区块链或类似的分散式帐本技术,不需要任何其它区块链就能独立运作。而「自定义代币」则是利用现有的区块链(绝大多数是Ethereum),透过智慧合约或其它方式来发行及运行。

本文主要是以「自定义代币」为主题来介绍。

2017 年的ICO 浪潮开启了大发币时代,人人都能在以太坊区块链上发行自己的代币。但其实在以太坊上线之前便已有区块链代币(以下简称代币)的存在。

区块链代币的起源:染色币(Colored Coin)

代币的历史最早可以溯及到比特币上的染色币。但比特币没有智慧合约,要如何发币呢?当时铸造Token的做法是:我们把1 Satoshi (10^-8个Bitcoin)重新定义为1 USD。

如此一来,1 Bitcoin (100 Million Satoshi )的价值便变成了100M USD。然而这样的做法必须具有公信力,因此铸造的机构应该要抵押 100M的USD来担保这100M的Satoshi具有等值100M USD的价值(但没有机制保证铸造机构真的有抵押)。

于是我们会说这些比特币被染色了,因为它代表的不再是比特币的帐面价值,而被赋予了新的价值意义,只是这个Token 透过比特币的区块链网络来进行流通。我发送给你100 Satoshi,其实是发送给你100 USD。

但这100M的染色币要怎么跟其它比特币来区隔呢?于是许多铸造商会再利用一个比特币外部的帐本来追踪这100M Satoshi的交易纪录,如此来确认谁手上具有这些被「染色」的Satoshi,他们有权利可以用这些Satoshi兑换为美金。

此外,在比特币UTXO 的架构下,若是同时交易了染色币与比特币,该怎么区分哪些是有染色的Satoshi 呢?一种可能的做法是:一笔交易的Output 中在前的钱堆是染色币;在后的钱堆则是比特币。

以上,便是最古早铸造的Token的作法。这个作法主要的缺点是:当你把这1颗Bitcoin染色,也代表你失去了这1 Bitcoin(因为这1 Bitcoin被当作其它的用途了)。

并且当你要交易300美金( 300 Satoshi )给别人时,却必须付出远大于300 Satoshi的手续费给矿工,所以其实很少人这样子铸造。在2017年币价突破天际后,便几乎没人再这样铸造了。

USDT 与Omni Layer

接下来的作法,便是由Tether 公司发行,赫赫有名的第一代USDT。第一代USDT 是建构在比特币上,采用Omni Layer 的技术。做法是在比特币上发送交易,然而交易本身不是重点,重点是在交易的OP_RETURN 中写下讯息。

如:地址A给地址B 《10 USDT》,地址B便可以再给地址C 《4 USDT》、给地址D 《2 USDT》。如此不断的接续下去,就像是把比特币当作便条纸来使用一般,仅是利用比特币的OP_RETURN内容会永久存在区块链上的特性来记录USDT的流通。

然而,若是一个地址A并没有持有USDT,但他却写下了给B 《10 USDT》,这样具有效力吗?于是,Omni Layer便另外建立了一个Explorer来追踪这些所有Bitcoin交易上OP_RETURN内的Omni讯息,借以得知每个地址持有的USDT。若是有地址写下了无效的交易讯息将被自动滤掉。

以太坊ERC-20 Token

以上便是在比特币上发行Token 常见的作法。接下来进入到以太坊的世界,由于智能合约功能的出现,一切都变得简单了些。ERC-20 Token 是至今最常见的代币,那么ERC-20 是什么?ERC-20 Token 是怎么铸造出来的呢?

ERC-20是以太坊上发行代币的协定规范,约定发行的代币必须包含的资讯(如发行几颗)以及代币具有的功能(如发送与接收)和限制(如一定时间内能从钱包提领的上限)等,并且会在以太坊上建立资料库来记录每个地址持有的代币数量。

举例来说,我今天想要发行一个ERC-20 Token,取名叫Pelith Token。假设想发行一百万颗,要怎么做到呢?

(责任编辑:admin)