5大虛擬貨幣介紹 — Bitcoin (BTC), Ethereum (ETH), Ripple (XRP), Bitcoin Cash (BCH), Cardano (ADA)

Coin Hunt
Coin Hunt Collection
15 min readJan 23, 2018

CoinMarcketCap裡的Coin和Token分別用來說明兩個概念。COIN是自己搭的區塊鏈網絡中發行的東西,比如比特幣(Bitcoin)和以太幣(Ether)就是流通在兩套不同的區塊鏈網絡,也就是兩套協議(Protocol),兩套協議各自發行自己的幣;TOKEN則是在別人搭好的區塊鏈網絡上開發的項目,項目自己發行的東西,比如在ICO? Token? Ethereum區塊鏈項目投資教學這篇提到的Token就是基於Ethereum平台開發的。

到今天,市值超過100億美金的Coin有5種,同樣都作為解決支付問題的虛擬貨幣,因各自的理念和算法規則不同,得到不同的信賴關注。以下簡要說明這5種幣的網絡主張和用途。

Bitcoin, BTC 比特幣

2009年誕生,實現去中心化的點對點貨幣交易。願景是不依賴銀行等第三方機構進行交易,並解決其帶來的雙重支付(Double-spending)問題。

區塊鏈虛擬貨幣的基本概念都寫在這段,作為後續介紹基礎。

  1. 支付,就是把"以前收到的BTC"轉給下一個人,"以前收到的BTC"在用戶還沒花出去前稱為Unspent Transaction Output (UTXO),這個UTXO不是一個加總後的數額,而是獨立的多個數額。比如用戶A從用戶B那收到2 BTC,又從用戶C那收到5 BTC,現在用戶A的UTXO=2 BTC+5 BTC。下次用戶A要支付用戶D 6 BTC時,就會把"以前收到的2 BTC和5 BTC"作為兩筆Input,把"6 BTC的擁有者設為用戶D"並把"1 BTC的擁有者設為用戶A"作為兩筆Output,這樣就是一筆交易,完成後用戶A的UTXO=1 BTC。
  2. 網絡儲存的是一筆又一筆交易數據,沒有中央伺服器,而是儲存在裝了Bitcoin軟體的每個電腦節點裡,不可竄改,這樣就是去中心化。
  3. 用戶透過Bitcoin網絡進行虛擬貨幣交易,每發起一筆交易就是在告訴全網絡某A支付給某B,因此一筆交易裡必須包含支付方和接收方的數據。
    ● 每個用戶各擁有一組Public key和Private key,用非對稱加密法製作。
    ● 一筆交易主要包含的數據=此交易Hash值+Input(=單個或多個"支付方簽名+被選中的UTXO的交易Hash值")+Output(=單個或多個"某數額+接收方的Public key")。這個Hash是SHA-256算法。
    ● 支付方簽名=支付方的Private key+Hash(被選中的UTXO的交易Hash值+接收方的Public key)。每筆交易裡的支付方簽名都是獨一無二的。
    ● 交易Hash值=Hash[Hash(此交易包含的Input和Output數據組合)]。
  4. 支付方為了證明"此次作為Input的UTXO"確實是以前有人給自己的,需要網絡中大多數節點都同意這個UTXO的交易是最早發生的,假如有別筆交易說自己也收到了同個UTXO就認為無效,以避免雙重支付。Bitcoin的作法是讓網絡節點把驗證過的數筆交易打包成一個有時間戳的區塊,這個區塊含有"前一個區塊Hash值"。一個區塊關聯著前一個區塊,這就是
  5. 既然要成為去中心化網絡,就不能只依賴一台電腦來打包交易生成區塊,網絡中每個電腦節點都可以參與。
    ● 一個區塊頭部數據=版本號+前一個區塊Hash值+數筆交易數據經Merkle Tree生成的Hash值+時間戳+困難度+Nonce。
    ● 區塊Hash值=Hash[Hash(此區塊頭部數據)]。
    ● 網絡中很多節點都在生成區塊,整個網絡只認最長的那條鏈,那麼要以誰的區塊為準?所以節點要憑運氣憑算力找到一個隨機數填入Nonce,使得最終生成的區塊Hash值符合特定要求,先找到這個隨機數的節點就是勝利者。這個方式稱為工作量證明(Proof of Work),依賴電腦CPU運算,平均約10分鐘完成一個區塊。
  6. 一個區塊的儲存上限是1MB。
  7. 為了激勵節點參與運算,勝利者可以獲得BTC獎勵=新發行幣數+此區塊所含交易的交易費。新發行幣數就是新產生的BTC,每四年減半,透過給到勝利者進入市場流通。
  8. BTC總量趨近於2100萬,目前還有20%待挖掘。

Ethereum: Ether, ETH 以太幣

2015年誕生,除了使用ETH作為點對點貨幣交易,更致力打造成一個去中心化的多應用平台,比如用於建立自治組織、發起項目ICO和提供DApp (Decentralized application)。

  1. 區塊鏈的應用不再只有貨幣交易。Ethereum網絡裡內建了圖靈完備(Turing completeness)的程式語言,使得任何人都能夠在網絡中開發DApp,比如養貓遊戲;或編寫智能合約(Smart Contract),把自定義的規則寫成一個會自動執行的程序。
    ● 比如創建自定義Token
    ● 比如讓大家用ETH來購買自己創建的Token,這就是ICO。
    ● 比如用戶A和用戶B共同存了22 ETH作為基金,約定好當兩人都同意時就支付給用戶C,可以把這個條件寫在智能合約裡,當滿足條件時會自動執行。不用第三方監督就能保證交易運作,這就是自治。
  2. 創建一款Token需要定義其發行總量和作為啟動金的ETH數額等,啟動金是為了讓 自定義Token與Token間交易時 能用其Token作為交易費。描述有哪些東西要編寫在智能合約裡的Token Standard最普遍的是ERC-20
  3. 相比Bitcoin使用UTXO,Ethereum使用帳戶(Account)結構紀錄交易數據。一組Public key和Private key對應一個帳戶,一份智能合約也對應一個帳戶。網絡儲存的就是 一筆又一筆帳戶的狀態(State)
    ● 一個帳戶的狀態數據=Ether餘額+此帳戶發過的交易或訊息次數+智能合約才有的"程式碼Hash值+儲存文件Hash值"。這個Hash是KECCAK-256算法。
    ● 一筆交易主要包含的數據=接收方地址+某數額+支付方簽名+支付方帳戶發過的交易次數+此筆交易的被運算次數上限(Gas limit)+此筆交易每被運算一次的手續費上限(Gas price)。
    ● 當交易完成會更新支付方和接收方的帳戶狀態。
  4. 同樣的,網絡節點要把最新的數筆帳戶狀態打包成一個有時間戳的區塊,一個區塊關聯著前一個區塊。
    ● 一個區塊頭部數據=前一個區塊Hash值+引用的叔塊們Hash值+可收此區塊生成獎勵的帳戶+帳戶狀態數據經Merkle Patricia tree生成的Hash值+交易請求數據經Merkle Patricia tree生成的Hash值+交易結果數據經Merkle Patricia tree生成的Hash值+log數據+困難度+區塊編號+區塊可運算的次數上限(gasLimit)+此區塊已運算次數(gasUsed)+時間戳+額外數據+用於工作量證明(Proof of Work)的數據。
  5. Ethereum的數學題不那麼依賴CPU,而是GPU,使得訂製ASIC挖礦的成本提高,平均約14秒完成一個區塊。這樣快的速度導致一下子生出很多新區塊,但因為最終只認最長的那條鏈,這樣就有很多區塊被浪費,並導致協助打包交易的節點傾向集中算力,這樣就變得中心化了。為了激勵"即使最終自己生成的區塊沒有加入到最長的鏈"的節點,網絡中允許每個區塊夾帶別的區塊的數據,比如區塊B, C都是關聯著區塊A生成的,區塊B可夾帶區塊C的數據,如果最後是區塊B成為了最長的鏈中的一塊,區塊C相當於毫無貢獻但因為被區塊B引用了,生成區塊C的節點也可以得到獎勵。這裡的區塊C在網絡中稱為叔塊(Uncle)
  6. 生成主鏈新區塊的ETH獎勵=新發行幣數+引用叔塊獎勵+此區塊所含交易費。
  7. ETH總量無限。2014年眾籌期間發行了7200萬ETH,目前限定每年最多發行1800萬ETH。創始人Vitalik Buterin擁有55萬ETH。
  8. 預計2018年上線 混合工作量證明和股權證明(Proof of Stake) 的驗證方式,稱為Casper the Friendly Finality Gadget。持有一定數量的ETH就可成為候選節點,由當選的節點負責驗證交易生成區塊。

RippleNet: Ripple, XRP 瑞波幣

2012年誕生,作為金融相關機構的全球支付網絡,重點解決銀行間跨境支付問題。另也作為點對點信用清算網絡。

  1. 相比Bitcoin想替代現實生活中的法定貨幣,RippleNet則是想輔助現實生活解決法幣和法幣、法幣和虛擬貨幣、虛擬貨幣之間的流通問題。
  2. RippleNet有一種叫Gateway的單位,作用就像是現實生活中的銀行,網絡中的交易都要透過Gateway完成。
  3. 金融機構 成為Gateway除了提供一般用戶支付服務,自己也能和別的金融機構進行跨境支付。比如墨西哥的銀行A要支付給韓國的銀行B,可使用三項服務方案組合:透過xVia發起支付,再透過xCurrent處理支付,其中可透過xRapid把XRP作為各種法幣交易媒介以降低貨幣流通成本。
  4. 一般用戶 除了使用XRP作為貨幣交易,還能創建自定義Token,用一個符號來表示XRP以外的某樣資產,比如創建一個"USD"符號代表美金。
  5. 用戶A如果要轉20 USD和3 XRP給用戶B,則用戶A必須授予超過20 USD和3 XRP的信任額度給某個Gateway,然後告訴已信任的Gateway把20 USD和3 XRP轉給用戶B,這個Gateway會進行的動作是:[紀錄]用戶A給用戶B 20 USD、[轉移]用戶A帳中的3 XRP到用戶B帳中。這裡要注意,在RippleNet中交易XRP是確實在你的Ripple帳中發生數字變化,但是,如果交易的是XRP以外的Token(比如例子中的20 USD),那麼就只是紀錄下來,成為債務憑證(Debt Obligation),在現實中用戶A的銀行帳戶裡並不會真的少了20美金。由於Ripple在現實生活中沒有執法力,雖然RippleNet紀錄用戶A要給用戶B 20美金,此處假設是借款關係,當用戶B向用戶A要求還"真的20美金"的時候,用戶A可以逃之夭夭。
  6. 新區塊驗證使用Proof of Correctness。每筆交易發送到特殊節點經多數驗證後同步到最新帳本,目前,特殊節點就是Ripple官方架設的伺服器。交易完成的等待時間只需幾秒鐘。
  7. 總量1000億。XRP以外的資產每筆交易要收取微小交易費,以XRP計算,作為交易費的XRP會被銷毀,也就是說,這1000億XRP會以極緩慢的速度逐漸減少。
  8. 1000億中的200億XRP在Ripple Labs創始人手裡,剩下的800億留給Ripple Labs管理發行。2017年Ripple承諾發行550億XRP,方法是每個月發行最多10億XRP,連續發行55個月,如果當月發行不到10億XRP,剩餘的XRP會回收最後發行。

Bitcoin Cash, BCH 比特幣現金

2017年8月1日從Bitcoin硬分岔後誕生,原是為了解決單位時間內一個區塊可包含的交易量問題,由挖礦機公司Bitmain發起。

  1. 將一個區塊的儲存上限改為8MB。
  2. 新區塊的"解數學題"困難度會依據全網絡運算能力動態調整。
  3. 分岔後,原本擁有BTC的人得到同樣數額的BCH。總量趨近於2100萬BCH。
  4. 關於Bitcoin和Bitcoin Cash分岔歷史:什么是硬分叉,什么是软分叉,什么是共识?比特币的另类视角(六) — — 关于扩容与分叉(下)

Cardano: ADA 卡爾達諾艾達幣

2017年9月29日誕生,願景是改進當前區塊鏈網絡的底層架構缺點。

  1. 提出三大區塊鏈網絡的改進方向
    ● Scalability:要能應對無限增長的信息量。
    ● Interoperability:要能和其它區塊鏈網絡、銀行等機構交換信息並且不外洩個人隱私。
    ● Sustainability:要有讓網絡自主投票眾籌的機制,避免出現網絡分岔。
  2. 為了解決上述三大問題,設計相互獨立的兩層協議:Settlement Layer負責存放帳戶信息;Computation Layer負責處理Settlement Layer中的信息、執行智能合約。
  3. 新區塊的驗證使用名為Ouroboros的股權證明(Proof of Stake)方式。網絡會選取幾個電腦節點來分別生成特定的某一個新區塊,被選取的節點稱為Slot leaders,Slot leaders必須在規定時間內驗證處理收到的新交易信息,如果沒完成(比如沒有連網)則失去這次生成新區塊的機會。
  4. 使用Recursive InterNetwork Architecture (RINA)把整個網絡切分成可互相溝通的多個子網絡,一個子網絡裡有很多節點,每個節點都只負責存儲被分配到的子網絡的數據。
  5. 設立一個獨立財政單位(Treasury),這個財政單位在新區塊生成的獎勵中抽取25%作為基金,以網絡自有的ADA計算,當有開發者想改進Cardano網絡時可以提案,所有網絡參與者投票給自己認可的方案,獲選的提案收到可用於開發的錢(ADA)。
  6. ADA總量450億,其中250億用於眾籌,50億作為公司運營,還有150億作為生成新區塊獎勵。

搭建一個區塊鏈網絡就是一群人共同定義一份"生活公約",然後把這份公約,或者說協議,寫成代碼。Bitcoin、Ethereum、RippleNet、Bitcoin Cash、Cardano等網絡在做的事情就是改造這份公約,把公約裡的一條條規則定義的更有彈性且覆蓋更多應用面。

雖然每個區塊鏈網絡都強調"去中心化",但是,網絡的開發還是掌握在一群懂技術的人手裡,就像社會想的是全民自治,但勢必會有一個帶頭政府。目前的"去中心化"只能說把權力從銀行這樣的第三方機構 轉移 到了"另一群人"手中,然後任何人都能加入成為這"另一群人",如果你懂技術的話。

權力轉移,轉成怎樣,這才是區塊鏈網絡的本質。

系列文章

歡迎補充修正 任何片段引用轉載請註明作者和原文網址
也歡迎ETH支持 0xE03a17Bbb628B36C9011A70CFfD5f27A00DAe701

--

--