close

昨天受邀參加Crypto Night社群小聚的邀請,聆聽Jollen講解匿名幣Grin的技術和特點,並和現場同好一同討論.....收穫滿滿.....

這裡就將Jollen昨天精彩的講演做個整理,讓大家跟著一起更深入目前新的區塊鏈應用趨勢

昨天一開始是介紹Grin這個匿名幣....

為什麼這個幣會引起大家的關注呢?主要有下列幾個特點:

1.注重隱私權  - 無法追蹤匿名,也無法得知轉帳金額  :這部分就是小聚宣傳的哈利波特一書中描述的霍格華茲學院的咒語 Mimblewimble!!! ⚡️ (失憶魔法)

 (註:Mimblewimble 取自哈利波特系列叢書,是一種可以讓中咒者無法洩露秘密的咒語。 )

2. 取代比特幣的PKI( Public Key Infrastructure 公開金鑰基礎架構)配對加密機制,註: Flowchain採用的是PPKI 機制),想了解Flowchain的PPKI機制,可以看我先前的文章介紹

區塊鏈 - 一個值得關注的區塊鏈項目 – 結合IPFS+IOT+AI的區塊鏈軟硬服務產品Flowchain

區塊鏈 - 由Flowchain Coin(FLC)上交易所後觀看區塊鏈應用的未來

區塊鏈 - Flowchain小聚6 - Flowchain/IPFS混合鏈與挖礦模型
3. ASIC resistance 特殊應用晶片的抵抗性: (目前的解決方案都是塞一堆垃圾資料佔滿頻寬,拖慢晶片運算速度過快導致初快來避免產出區塊過快的問題)

接著Jollen說了Grin神奇崛起的傳奇精采故事.......

其實Grin的崛起速度很快,不到3年的時間,時間回到2016年8月,當初有一位 Tom Elvis Jedusor(匿名) 在Bitcoin的論壇上提出一個Mimblewimble的通訊協議,剛提出來的時候,就有一些人開始關注,但是質疑和討論的人很多,但是大家都半信半疑,但是過了三個月之後一位數學家寫了一篇論文驗證其理論的可行性之後,瞬間引爆,接著在2017一位俄羅斯的一位工程師把雛型做了出來,因此相關的高手同好不斷的投入,所以Grin一開始是一個社群開發的區塊鏈技術,並在2019年一月中主網正式上線,目前採用Mimblewimble當作底層技術的有Grin和企業公司的Beam來當作比特幣的改良版,而Tom Elvis Jedusor就被大家當作是另一位中本聰.....

在以 Mimblewimble 建立的區塊鏈網絡中,交易的各項要素都被層層加密隱藏,非交易參與者既查不到交易地址,也查不到交易金額,甚至連中間轉手的交易過程都查不到,
另外簡化後的交易過程使該協議在記錄同等內容的數據時,所耗費的帳本容量和網絡頻寬要遠遠小於比特幣協議,昨天Jollen就精彩的解釋了運作機制........

----------------------------------------------------------------------------------------------------

昨天因為時間不夠,所以Jollen沒有很多時間說明比特幣的on-chain和off-chain的差異,目前有七種off-chain的類型,包括side-chain,混合鏈,閃電網路都是其應用........

我們來看wiki對於off-chain transaction的解釋: (連結:https://en.bitcoin.it/wiki/Off-Chain_Transactions

An off-chain transaction is the movement of value outside of the block chain. While an on-chain transaction - usually referred to as simply 'a transaction' - modifies the blockchain and depends on the blockchain to determine its validity an off-chain transaction relies on other methods to record and validate the transaction. Like on-chain transactions all parties must agree to accept the particular method by which the transaction occurs, the question then being, how can those parties be convinced that the movement of value has actually happened, will not be reversed, and can be exchanged in the future for something of value?

With an on-chain transaction those questions are answered by the parties faith in the Bitcoin system as a whole. For instance a transaction (after some number of confirmations) can only be reversed if a majority of hashing power agrees to reverse the transaction. The parties to the transaction are trusting that the majority of hashing power in existence is controlled by "honest" parties who will not attempt to reverse the transaction.

簡單的說為何有off chain(離線區塊鏈)的交易產生呢?主要的就是解決下列問題:

Speed(交易速度) - 交易的時間過久不僅有交易風險,且會影響使用者交易的意願

Privacy/Anonymity(隱私/匿名)- 目前比特幣等數字幣都還是可追蹤的,至少要轉帳6000次以上才可以避免被追蹤,因此更保護隱私的需求被提出

Cost/Scalability(成本/可擴展性) -交易的成本和可擴展性,因為比特幣的特點就是工作證明(proof of work),誰最先挖出誰就獲取區塊獎勵,因此礦場,設備升級耗費了不少資源,區塊鏈想要大幅度的應用就必須要可以用較低的成本和擁有可擴展性,才能大量且快速普及

所以off chain就是把目前的區塊鏈笨重的架構做瘦身,因此Side-chain可以用來解決擴展性和應用的問題,閃點網路是解決交易速度和成本的問題,混合鏈則是處理成本和企業擴展應用的問題.....

這裡幫大家找了幾個線上的說明,有興趣的可以自行研究

On Chain VS Off Chain

區塊鏈 Blockchain – 側鏈 Sidechain

公鏈,企業鏈(私鏈),混合鏈(區塊客文章)

五分鐘就看懂:圖說閃電網路

----------------------------------------------------------------------------------------------------

好的拉回主題,在Jollen說明Mimblewimble技術之前,還有一些知識要複習一下........

第一各位要先了解比特幣的程式的運作流程:

1.產生transaction

甚麼是Transaction交易紀錄呢?例如:我現在有100塊要轉帳到Bob的錢包,因此會產生兩筆交易紀錄,一筆是output的交易(由我的錢包金額轉出)這裡有一個專有名詞叫做(Unspent Transaction Output UTXO, 未花費的交易輸出,白話就是錢包要記錄多少錢沒被花掉),接著再產生一筆input交易到Bob的錢包和扣除後的剩餘金額的回寫到自己的錢包(找錢)

維基說明UTXO連結:https://en.wikipedia.org/wiki/Unspent_transaction_output

簡單的說,這是比特幣在產生下一筆未來的交易前,必須先產生確認你的錢包有一筆未花費的交易,這樣才能轉帳到別人的錢包和回寫自己錢包的餘額

所以每次會產生兩筆Transaction....

如果還是不懂UTXO的話,我再找另一篇文章給大家參考:

比特幣UTXO模型介紹-如何解讀比特幣交易

至於以太坊則是用account base,其交易的方式就是一進一出的account的記帳方式和比特幣的UTXO不同

 

另外礦工挖礦則會產生Coinbase transaction

說到這裡還要了解一下甚麼是Coinbase or Generation transaction這個專有名詞,連結: What is a Coinbase or Generation Transaction?

The Coinbase transaction, or Generation transaction, is a special transaction in the Bitcoin protocol that differs from a standard transaction as it creates coins from nothing.

It is the reward that miner gets for successfully mining a block.

The Bitcoin block reward is dependent on the number of blocks from the genesis block and the number of fees included in the transactions of the block.

First all the transactions to be included are assembled and then all their fees are summed.

簡單的說就是產生給礦工的交易酬勞(挖一個block產生區塊獎勵寫入礦工自己的錢包),Jollen昨天用程式實做案例說明上述的過程 

 

2.寫入區塊(包含merkle root)

每個區塊至少包含了四項基本內容:A.時間戳記 B.數值 C.前一區塊的資料 D.Merkle root

詳細的內容請參閱我上次的文章:區塊鏈 - Flowchain小聚6 - Flowchain/IPFS混合鏈與挖礦模型

 

3.廣播:廣撥給礦工開始挖區塊

 

4.交易驗證(礦工)上鏈 (public script PKI加密+ double SHA 驗證前一個區塊)

  • 在產生Coinbase的transaction或轉帳交易的output transaction都需要本人(Bob)的私鑰(Private key)來加密產生交易資料
  •  而接收轉帳的人Alice(錢包),則需要用和Bob建立聯繫通道後,用Bob的公鑰去驗證資料的正確性(確認Bob真的要轉這些金額)

------------------------------------------------------------------------------------------------------------------------------

以上就是比特幣的運作流程.....

而這些的流程目前讓比特幣技術有了一些缺點和問題,

1. 竄改風險 ->因為比特幣是共識修正,假設30個人寫入區塊時有5個人竄改,則多數決將會修正這5個人的transaction,但這就有 51%的攻擊的風險,也就是有人掌控51%的算力將可以以假亂真,目前總共遇到7次51%的攻擊,2019年就有兩次但未成功 (我猜主因是因為礦場集中少數人所有和殭屍挖礦木馬程式的散播!?,導致駭客可以比較容易的掌控到51%以上的共識算力)

2.Block mining difficulty 難度變高(演算法變困難),因為Node數多了,處理時間縮短,所以不斷的增加難度......讓產生區塊的時間越來越長,這會導致成本不斷提高最後大家棄挖,去年有人統計比特幣一枚的挖礦成本是坐落在6000~8000美元,後來難度爭高挖出一枚的成本抵不過挖出的價值,導致比特幣價格大崩跌,目前約在3800~4000美元一枚震盪

3. PKI的缺點: 丟掉Private key是個比特幣區塊鏈支付的大問題,有的人忘記私鑰或搞丟了,比特幣就無法提領了,Jollen舉了好幾個案例:例如有人會把私鑰複製貼上的存在網頁上,導致有駭客專門寫程式在網路上爬取各人私鑰,又有教授在演講時用自己的私鑰做範例演練,結果被自己的朋友用手機拍下來做幣的移轉,還有人存在硬碟就隨意丟掉,所以也有人專門蒐購舊硬碟尋找存放的私鑰......所以PKI的私鑰容易遺失又容易被盜取導致數位資產的保存和提取的風險提高

昨天Jollen詳細的說明了比特幣的詳細交易方式,其實就是讓大家先了解之後,再提出Grin模式的差異

1. Grin 不用private key 來sign, 而是用兩個(交易雙方)public key multi signature 多方共簽,方式就是甲先用公鑰發出交易紀錄,乙再收到確認這份交易紀錄和甲的公鑰之後,再用自己的公鑰對這筆交易做簽核,回傳給甲,因為同時有兩筆甲乙的公鑰同時確認就可以代表這個交易是成立的......

2. 零知識證明(zero-knowledge proofs,ZKP),我轉帳100,但是另一個人打開金額不是100而是一個橢圓曲線的隨機參數,用過即丟進而推算出金額,之後就找不到帳務紀錄了(遺忘)但bitcoin的每次的兩個transaction 一個是output,一個是input,input上的區塊要記錄前一個output的transaction ID,Grin則不用

科普一下零知識證明(相關連結:https://blocktrend.today/07-17-2018-zero-knowledge-proof-intro

區塊鏈的兩難-隱私但可以驗證....

零知識證明可以做到保持秘密但可以驗證

3. 在說明Mimblewimble之前,我們要先了解一個名詞,那就是 Perdersen Commitment ....網址連結:https://www.getmonero.org/resources/moneropedia/pedersen-commitment.html

簡單的說就是  Pedersen的承諾是一種加密算法,允許證明者在不洩露或能夠改變它的情況下承諾某個值。 這也稱作Zero commitment 

這是什麼意思

只要創建的加密輸出量(包括收件人的輸出和返回發送方的更改輸出)和未加密的交易費用等於所花費的輸入的總和,它就是合法的交易,並且可以被證實不會憑空創造

好了,了解這個名詞之後,就可以說明甚麼是Mimblewimble的protocol了......

我幫大家找了這一篇文章:MimbleWimble 和 Grin 简介

好,看不懂是不是.....慢慢研究吧......簡單的說明輸出值 r*G + v*H

r(通關密語)*G(ECC橢圓隨機點) + V(Amout)*H(很大的常數)

一開始會先建立雙方交易的通道r,然後隨機產生G,你收到的資料是K和H(K=r*G + v*H)

所以v金額 = (K-(r*G))/H (呃,就我理解Jollen的意思應該是這樣的.......我研究了一天而已,不要抱怨太多.......上面的文章和名詞再好好的研讀一次)

由此就可以歸納出結論 Grin透過Mimblewimble技術就可以多個transaction合併成一個 + amount不知(零知識),因而確保了隱私性

----------------------------------------------------------------------------------------------------

好了,忍耐一點,就快完了,我們講到最後一個主題了,ASIC Resistant......

說到特殊應用晶片的抵抗性主要有三種常用的方式

1.Brute force hashing 暴力哈希,演算法很難一直調高難度,使用的硬體由CPU->GPU->ASIC(比特採用)
2.Memory hard hashing 記憶體障礙哈希 塞給你礦機約4G的垃圾(以太採用) (但這已有晶片公司已破解,傳輸時壓縮資料避開頻寬不足的問題,再丟到memory後解壓縮)
3.Chained hashing flowchain採用 (執行16個最慢的hash算法,很難用晶片做出,因為只要順序調整,晶片就要重新研發),請參考我上一篇文章區塊鏈 - Flowchain小聚6 - Flowchain/IPFS混合鏈與挖礦模型

好了,為何要提到ASIC Resistant呢?因為Grin採用了非上述的方式來避免耗費硬體資源和成本.....

Grin採用的是圖論(Bipartite Graph) 相關的數學和理論就是以前所學的離散數學中的 Graph Theory or 拓樸學(topology).....Jollen說離散數學之父是圖靈?(不是記得很清楚)

又到了科普時間了,維基連結:https://en.wikipedia.org/wiki/Bipartite_graph

二分圖又稱雙分圖二部圖偶圖,指頂點可以分成兩個互斥的獨立集,也就是在任兩個同在的頂點不相鄰。

二分圖又稱作二部圖,是圖論中的一種特殊模型。 設  是一個無向圖,如果頂點V可分割為兩個互斥的子集 ,並且圖中的每條邊  的兩個端點    分別屬於這兩個不同的頂點集 ,則稱圖 為一個二分圖。

無向圖  為二分圖的充分必要條件是, 至少有兩個頂點,且其所有迴路的長度均為偶數。

可以將    當做一個著色 中所有頂點為藍色, 中所有頂點著綠色,每條邊的兩個端點的顏色不同,符合圖著色問題的要求[1][2]。相反的,非二分圖無法被二著色,例如 (3 個頂點的完全圖),將其中一個頂點著藍色並且另外一個著綠色後,第三個頂點與上述具有兩個顏色的頂點相連,無法再對它著藍色或綠色。

二分圖的一種描述方式為:,包含了獨立集   ,以及邊  的資訊。假如不是連通圖,可能有多種將所有頂點分成   的方式[3];在特定的應用場合中,將頂點的兩部分寫出來是有必要的。如果,則  稱為平衡二分圖[1]。如果二分圖  以及 的頂點分別有相同的度數,則  被稱為是雙正則的

給定一個二分圖 ,在  的一個子圖  中, 的邊集中的任意兩條邊都沒有共同的端點,則稱  是一個匹配

好了,了解圖論之後....就可以說明 cuckoo cycle - (全部走完再回到開始成一循環, 或大部分走完回到原點的路徑法)

Grin就是利用GPU的POW(Proof of work)誰最先找到cuckoo cycle的閉環路徑就是誰挖出的區塊.......

補上一篇 , 解決的問題:給出N個節點(奇偶兩行)和M個邊,在M個邊中尋找一個閉環(即找到一個路徑使得一個節點是起點也是終點)

grin 之 Cuckoo Cycle 演算法挖礦分析

除了常用的POW之外的還有POS(Proof-of-stake - 根據你的持有數,挖出來的幣按多寡數分潤)

因此Grin也是另類的memory hash的方式
其設計礦工可以Solo一個人挖也可以 Pooled (Mining Pool) (可切割,上述的圖可以區分數個閉環,圖是無限大), 
因為根據數學計算,無論用甚麼樣的設備每個產生演算時間都差不多,因此就不需要Asic resistance的解法了.........

-------------------------------------------------------------------------------------------------------------------------------

好了,終於結束了,這就是昨天Jollen上的兩小時多的課......感想是有點硬啊

最後來個工商時間

1. Jollen說匿名幣是個趨勢....比特要轉6000次以上才不會被追蹤   因此考慮到私有和隱密性,年輕的後進應該要朝此方向研究,我個人也認為個人日後的資產,每個人或多或少都有一些海外資產不想被課稅或想保有隱私,當然在國內的資產要透明和繳稅,但我認為日後的趨勢是每個人的持有數字資產和實體資產的比率由1:9到4:6不等.....現在的Line point,電子儲值,電子禮劵,遊戲點數和寶物,自媒體創作,都算的上是數字資產

2. 預告3月底會在清大區塊鏈研究社 Jollen會帶著大家flowchain DAPP實做,請注意FB的清大區塊鏈研究社的消息
  

arrow
arrow
    全站熱搜

    T.S.(黃增勳) 發表在 痞客邦 留言(0) 人氣()