文組也該知道的區塊鏈技術知識 <3> 從染色幣到無頭合約的代幣演進史 《上篇》

Blockchain Technical Overview <3> The History of Token ( Part 1 )

Vins Lai @vins.ton
Pelith
7 min readAug 26, 2019

--

收看本系列文章的讀者,應該都對於區塊鏈的基本原理和架構有些概念,如果沒有,推薦您先去 Google 搜尋 區塊鏈、比特幣、以太坊這些關鍵字了解一下。我們將在這些基礎概念之上,來談區塊鏈的技術知識。本系列文章並不會談到太深的技術鑽研,而是希望以深入淺出的方式讓每一個想要搞懂區塊鏈技術的人都能在讀完後說出:原來如此!

前兩節的內容我們從交易開始認識比特幣及以太坊的基礎架構,隨後介紹了以太坊智慧合約運作的概念。第三節我們將來回顧區塊鏈「代幣」演進的歷史,並解析與之相關的技術。由於內容豐富,為避免讀者閱讀上的負擔,會分成上、下兩個篇章來闡述。

既然要談代幣,就必須先釐清代幣的定義。用比喻來說明的話,我們現實世界中有各國發行流通的法幣,如:台幣(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 中在前的錢堆是染色幣;在後的錢堆則是比特幣。
不了解 UTXO 架構的讀者傳送門

染色幣交易示意圖

以上,便是最古早鑄造的 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。若是有地址寫下了無效的交易訊息將被自動濾掉。

含有 omni 訊息的交易 OP_RETURN

以太坊 ERC-20 Token

以上便是在比特幣上發行 Token 常見的作法。接下來進入到以太坊的世界,由於智慧合約功能的出現,一切都變得簡單了些。ERC-20 Token 是至今最常見的代幣,那麼 ERC-20 是什麼?ERC-20 Token 是怎麼鑄造出來的呢?

ERC-20 是以太坊上發行代幣的協定規範,約定發行的代幣必須包含的資訊(如發行幾顆)以及代幣具有的功能(如發送與接收)和限制(如一定時間內能從錢包提領的上限)等,並且會在以太坊上建立資料庫來記錄每個地址持有的代幣數量。

舉例來說,我今天想要發行一個 ERC-20 Token,取名叫 Pelith Token。假設想發行一百萬顆,要怎麼做到呢?

用最直白的方式來說,就是要寫一個 ERC-20 代幣發行規範的智慧合約,並在發行量這段程式碼中寫一百萬顆,接著把這個智慧合約放入一筆交易的 Input Data 中,交易的接收地址填為 0x0,被礦工執行部署完成後,一百萬顆 Pelith Token 便誕生了。所以說,代幣的創造在技術上是非常容易的,無論想要發行一百萬顆、一億顆、十億顆,其實都只是智慧合約內改個數字的差別,發行量的變動成本趨近於零。所以 2017 年的 ICO 浪潮,才會出現這麼多各式各樣的 shitcoin,只要寫個智慧合約和白皮書,一個代幣就此誕生了,可以開始圈錢。啊!不是,是募資。
不了解智慧合約架構的讀者傳送門

真正的難處往往是代幣發行後實際的應用場景搭建和社群行銷營運,讓這個代幣被認可、讓人願意持有及應用才是最大的困難點和成本之所在。

《上篇》結論

  1. 「協議代幣」往往有自己的區塊鏈或類似的分散式帳本技術,而「自定義代幣」則是利用現有的區塊鏈來發行及運行
  2. 早期比特幣上常見的代幣有改變單位定義的染色幣把比特幣作為便條紙的 Omni Layer 兩種做法。
  3. 以太坊與智慧合約的出現讓發行代幣在技術門檻上變得更簡易且更有統一的規範,然而應用場景搭建與社群行銷營運才是真正難處。

好,先分享至此,上篇中大致帶過了流變的脈絡,《下篇》我們將更著重在技術面的介紹。

傳送門:文組也該知道的區塊鏈技術知識 <4> 從染色幣到無頭合約的代幣演進史 《下篇》

以上,若有任何

A. 我寫得不夠清楚的地方
B. 撰寫上改進的建議
C. 希望我能夠撰寫分享的區塊鏈技術知識內容

都非常歡迎在底下留言回覆。希望我的文章能幫助到更多像我一樣想學習區塊鏈技術與知識的朋友。如果您覺得讀完有所收穫,也希望能
*不吝嗇給我 Like / 50 claps
*分享給您的朋友們
謝謝大家!

--

--

Vins Lai @vins.ton
Pelith
Editor for

Co-Founder of Aurora Card - World's First Crypto Credit Card built on Trust with supreme Privacy, sign up: https://app.aurora-card.com/signup?userRef=N527Zi