解說加密貨幣(1):以冥通銀行的冥幣為例

一個月前我寫過一篇關於區塊鏈的短文(《區塊鏈除了加密貨幣還有甚麼?》)。當中提到,區塊鏈有四個特色:一、去中心化;二、數據可以長期保存;三、難以竄改;四、節省交易成本。

今天我想寫一個實際操作的例子。大家都知道,每年鬼節我們都要匯款給陰間的朋友。陰間的流通貨幣是冥通銀行發行的冥幣 (HellCoin),大家可能都用過,就算未用過都應該見過:

冥幣(樣本)

正所謂有錢使得鬼推磨,冥幣對於陰間的朋友是很重要的。沒有冥幣在身,遇到鬼差時的下場便是這樣:

遇鬼差時沒有冥幣的下場

身上冥幣多了,就算進了鬼門關也能安然離開:

輕易逃出鬼門關的民眾

但是目前冥幣發行的制度有兩點重要問題:

  1. 冥幣需要長期保存,時間可能長達數百年,目前用紙幣發行的方式甚為不便。萬一經過刀山火海時不小心掉了呢?即使存入冥通銀行,但難保地府不會發生金融海嘯。萬一冥通銀行倒閉,又沒有存款保障制度,辛苦儲下來的冥幣就會化為烏有。
  2. 每年鬼節,冥通銀行都要處理大量匯款。當中交易過程繁複,成本甚高,亦容易出錯。

區塊鏈可以解決上述問題。只要將冥幣改以區塊鏈加密貨幣的形式發行,即可享有以下好處:

  1. 永久保存。由於區塊鏈去中心化的特性,冥幣不必依靠冥通銀行管理。每個帳戶的結餘,以至每一筆匯款和交易,都會永久保存在區塊鏈上。即使有一天冥通銀行倒閉了,用戶都不會因此蒙受損失。冥幣甚至可以跟功德一樣帶到下一世,不會在投胎時丟失。亦可以將功德與冥幣掛勾,實施穩定的聯繫匯率,如此即有助鼓勵民眾行善積德,培養儲蓄習慣,與及進行長線投資。
  2. 方便存取。每位用戶都會擁有屬於自己的加密貨幣錢包 (wallet)(以下簡稱「加密錢包」),每個錢包都有一對由數字和英文字組成的公鑰 (public key) 和私鑰 (private key)。只要用私鑰登入加密錢包,便能提取冥幣。只要向陽間的親友提供公鑰,親友們即可進行匯款,非常方便。遇到鬼差勒索時,也不怕因為沒有冥幣在身而造成二次死亡。
  3. 安全可靠。所有交易記錄一旦寫入區塊鏈便不能修改,這意味著沒有人(或鬼)可以竄改交易記錄,安全有保障。而且只要妥善保管私鑰,便不用擔心意外丟失錢包。
  4. 節省成本。加密貨幣的交易皆以智能合約 (smart contract) 自動進行,不經人手(鬼手),因此能夠節省成本。過去為了節省交易費用,陽間習慣一年只匯款一兩次。使用區塊鏈以後,交易徵費有望降低,隨時都可以進行小額匯款。

說了那麼多,實際要發行加密冥幣應該怎麼做呢?以下我就以 EOSIO 為例,講解發行加密貨幣的方法,並示範如何進行交易。

由於冥幣目前處於研發階段,因此示範將在一個區塊鏈測試網絡 (testnet) 進行(見《區塊鏈實踐初探》)。如果大家有興趣,也可以在自己的電腦上進行同樣的測試。

首先是要安裝 EOSIO 及設定好當中的執行環境。EOSIO 的原始碼可以在 GitHub 下載,詳細做法可以參考 EOSIO Developer Portal 的說明文件。我今天只做示範,不是做技術教程,因此過程從略,以後有機會再寫細節。

此外,EOSIO 可以安裝到各大作孽系統,但我的建議是使用 Linux 或 macOS 會比較方便。

設定好 EOSIO 執行環境後,便可以發行加密貨幣了。

加密貨幣的發行及交易是由一張智能合約管理的,這張智能合約叫做 eosio.token。如果大家已按上述方法設定好 EOSIO,那麼 eosio.token 應該隨時可以用了。否則,也可從 GitHub 下載。

加密貨幣要有一個發行者,所以首先要在 EOSIO 建立一個帳戶及其加密錢包。以下我假設已一早建立好名為 yanluo (閻羅)的帳戶及其加密錢包,且錢包已解鎖。

下面示範如何發行加密貨幣,其實就三個步驟。

首先要把 eosio.token 智能合約指派給發行者 yanluo:

cleos set contract yanluo ../eosio.token

接著輸入:

cleos push action yanluo create '[ "yanluo", "1000000000.0000 MTD"]' -p yanluo

這句命令的意思是由 yanluo 鑄造 (create) 冥幣,並設定最高發行量為 10 億元,幣值單位是 MTD。以下是執行結果:

executed transaction: a6f4bc89de062f701915d4225e63b348bbe04cead4670bd4bd290d11e487dbd3 120 bytes 1517 us
# yanluo <= yanluo::create {"issuer":"yanluo","maximum_supply":"1000000000.0000 MTD"}
warning: transaction executed locally, but may not be confirmed by the network yet ]

鑄造之後便要發行 (issue) 了。為簡單起見,我假設鑄造者把冥幣直接發行給一個名為 trump 的帳戶:

cleos push action yanluo issue '["trump","100.0000 MTD","first_issue"]' -p yanluo

這會涉及兩個動作:首先 yanluo 發行冥幣,接著把新發行的冥幣轉給 trump:

executed transaction: 9b6c10afbcaa3c90f63ae89a5de5b5f663c4d9e90080e8c616d45c2e8f701934 128 bytes 603 us
# yanluo <= yanluo::issue {"to":"trump","quantity":"100.0000 MTD","memo":"first_issue"}
# yanluo <= yanluo::transfer {"from":"yanluo","to":"trump","quantity":"100.0000 MTD","memo":"first_issue"}
# trump <= yanluo::transfer {"from":"yanluo","to":"trump","quantity":"100.0000 MTD","memo":"first_issue"}
warning: transaction executed locally, but may not be confirmed by the network yet ]

現在,trump 的錢包裡應該已經有 100 MTD 的冥幣了。我們可以檢查這個結餘:

cleos get currency balance yanluo trump

結果:

100.0000 MTD

我們也可以在不同的帳戶之間轉帳。例如,若要由 trump 轉 25 MTD 到名為 donald 的帳戶,可以這樣做:

cleos push action yanluo transfer '[ "trump", "donald", "25.0000 MTD", "trump2donald" ]' -p yanluo

結果:

executed transaction: 6f0155859f99d00ab829514ffdd9c5e5cacd205f56ea4b8a9cdf6d994ad2e34b 144 bytes 360 us
# trump <= yanluo::transfer {"from":"trump","to":"donald","quantity":"25.0000 MTD","memo":"trump2donald"}
# donald <= yanluo::transfer {"from":"trump","to":"donald","quantity":"25.0000 MTD","memo":"trump2donald"}
warning: transaction executed locally, but may not be confirmed by the network yet ]

智能合約會負責管理轉帳的細節。例如,若 trump 的帳戶裡沒有足夠的冥幣,交易時會產生錯誤:

Error 3050003: eosio_assert_message assertion failure
Error Details:
assertion failure with message: overdrawn balance

以上便是用 EOSIO 發行加密貨幣和進行交易的大概情況。最後作幾點補充:

  1. 以上的動作只在我自己的電腦裡的測試用區塊鏈 (testnet) 進行。真正的區塊鏈應用必須在公開的、多節點的區塊鏈上執行才有意思,具體做法以後有機會再寫。
  2. 區塊鏈有很多種,EOSIO 所用的 EOS 只是其中一種。以太網 (Ethereum) 是另一種區塊鏈的例子,而著名的比特幣也有自己的區塊鏈,這些區塊鏈的設計和發行貨幣的原理都各有不同,暫且從略。
  3. 任何人都可以發行自己的加密貨幣,但是除非進行公開的 ICO 認購並放上交易網站進行與其它貨幣之間的交易,否則所謂的加密貨幣就只是一個代幣而已。有關加密冥幣將來的發展,待我跟冥通銀行商討後再作報告。
  4. 這篇文章旨在示範發行加密貨幣的大概做法,是概念性的,並非技術教程。我以後有機會再補上技術細節,如果心急想要知道的話請自行參閱上述的 EOSIO 技術文件,或直接向冥通銀行金融科技發展部查詢。

今天就寫到這裡,多謝閱讀。

《說乎筆記》參加了LikeCoin的「化讚為賞」試驗。如果你喜歡這篇文章,請按下面的LikeButton鼓勵一下。寫作一點都不容易,你的支持將會給我繼續前進的動力。謝謝!

About the Author

發表回覆

你的電郵地址並不會被公開。 必要欄位標記為 *