close

 萬物的運行皆遵循原則...

               IN GOD WE TRUST

 
然而...
往往牽扯到了"$$$"~ 就會沒了其原則!!!

        Blockchain = Trust Machine

 

Combo™網誌的開端...

 In Blockchain We Trust

 有趣的區塊鏈(Blockchain)入門說明:


@ 春嬌與志明打賭著明天台北的天氣!
其實... 這裡會有幾種方式來完成這賭局的交易~~~

1. 建立在春嬌與志明的信任基礎上面;
   [缺點]即使是春嬌與志明,也有可能會有賴皮不願付錢,更何況是人的信任基礎上。
2. 建立在春嬌與志明的合約基礎上面;
   [缺點]贏的可以告輸的,勞神又傷財,又有點不切實際!
3. 建立在春嬌與志明的中立第三者基礎上面。
   [缺點]每人先分別把錢給第三者,結果揭曉後,再把所有的錢給贏的那個。當然,這第三者有可能落跑。

我們無法信任人,為合約打官司勞神傷財,當然還有中立第三者會落跑的可能!!!

 一個可能是截至目前為止最棒且有趣的發明...

         Blockchain (區塊鏈)

https://bitcoin.org/en/developer-reference#block-chain

@ 區塊鏈技術要幫我們解決上述交易的缺點,而且要安全、快速又便宜。
@ 區塊鏈所實現的基於零信任基礎上面、並且要是真正去中心化分散式系統

區塊鏈技術由密碼學、數學、演算法及經濟模型所組成,結合點對點的網路關係(P2P),
並採用分散式共識演算法,來解決傳統分散式資料庫的同步問題,可說是一套整合跨領域技術的基礎建設。

 當然... 能夠稱乎為infrastructure
區塊鏈(Blockchain)絕非橫空出世的莽崑崙~~~

區塊鏈與其說是於零信任基礎
更精確來說是... 建立在宇宙共通的語言"數學基礎"上面!!!


區塊鏈技術演進史
http://www.ithome.com.tw/news/105370

 
區塊鏈運作原理大剖析:5大關鍵技術
http://www.ithome.com.tw/news/105374

 
區塊鏈不等於比特幣(上)
http://www.ithome.com.tw/voice/107532

 
區塊鏈不等於比特幣(下)
http://www.ithome.com.tw/voice/107703


關鍵技術#1: 工作量證明機制(Proof of Work,POW
精隨: 這是一個可以讓每個參與的節點可共同參與交易驗證的方式,
來實現一個能多方共同維護的單一系統,並共享同一份記錄交易的帳本,
以形成一個基於零信任基礎,卻能實現去中心化的P2P網路系統。

實現POW必須仰賴成本函數(Cost-Functions):
而這種成本函數特性: 「很容易驗證」(efficiently verifiable),
                            卻很難被破解 (parameterisably expensive to compute),且不可逆。

實現這成本函數可以仰賴因數分解或是哈希函數(SHA):
驗證奇易: 正數相乘/SHA
破解爆難: 因數分解/SHA碰撞

    Hashcash演算法也被用來做阻擋垃圾郵件的機制


hashcash靈感來自於因數分解的數學問題 (容易驗證難以破解) (难于发现而易于校验)
 
而... hashcash是一個基於可廣泛應用的SHA的巧妙系统,
它使得請求者要進行大量可參數化的工作,而求值程序可以“簡單廉價”地進行驗證。

交互是質詢 (Challenge-response)

對交互式質詢來說,因數分解足以勝任。
比如,我有一個資源,希望您能象徵性地為其付出代價。
我可以向您發送一個消息,說“只要您能因數分解這個數,我將讓您得到這個資源”。
沒有誠意的人將無法得到我的資源,只有那些能夠證明自己有足夠的興趣、
付出一些CPU周期來回答這個質詢的人才能得到這個資源。

 
非交互是質詢 (Solution-verification)

為了實現非交互式的“支付(payment)”,
hashcash讓Receiver向所有想發送電子郵件的Sender都分發一個"標準質詢"。
在Sender的訊息檔頭裡面,必須包括一個合法的hashcash戳記(stamp);
具體來說,該標誌中包含Receiver的收件人地址。
hashcash提出質詢的方式是,當通過Secure Hash Algorithm進行散列時,
要求Sender(“minters”)產成一個戳記stamps,
在Sender的散列中有很多前導零(Nonce)。所找到的前導零(Nonce)的數目就是特定戳記的比特值。

 Proof of work Example#1:
https://en.bitcoin.it/wiki/Proof_of_work


Let's say the base string that we are going to do work on is "Hello, world!".
Our target is to find a variation of it that SHA-256 hashes to a value beginning with '0000'.
We vary the string by adding an integer value to the end called a nonce and incrementing it each time.
Finding a match for "Hello, world!" takes us 4251 tries
4251 hashes on a modern computer is not very much work
(@ most computers can achieve at least 4 million hashes per second)


Bitcoin automatically varies the difficulty (and thus the amount of work required to generate a block) to keep a roughly constant rate of block generation.

"Hello, world!0" => 1312af178c253f84028d480a6adc1e25e81caa44c749ec81976192e2ec934c64
"Hello, world!1" => e9afc424b79e4f6ab42d99c81156d3a17228d6e1eef4139be78e948a9332a7d8
"Hello, world!2" => ae37343a357a8297591625e7134cbea22f5928be8ca2a32aa475cf05fd4266b7
...
"Hello, world!4248" => 6e110d98b388e77e9c6f042ac6b497cec46660deef75a55ebc7cfdf65cc0b965
"Hello, world!4249" => c004190b822f1669cac8dc37e761cb73652e7832fb814565702245cf26ebb9e6
"Hello, world!4250" => 0000c3af42fc31103f1fdc0151fa747ff87349a4714df7cc52ea464e12dcd4e9

0,1,2,... 4250: 特定戳記(Stampt)
0000: 特定數目的前導零(Nonce)
difficulty: 調整困難度就是調整特定前導零的數目


 Proof of work Example#2:
nonce=0 開始向上不斷測試,直到nonce=13973878才找到了第一個符合有24 bit前導零nonce
http://www.codedata.com.tw/social-coding/hashcash/

Hash Functions @ http://www.fileformat.info/tool/hash.htm
Nonce是一個在加密通信只能使用一次的數字。

Andreas M.Antonopoulos在《精通比特幣》一書中對挖礦有很好的比喻,
我們可以把挖礦想像為一個大規模的多人數獨遊戲,
一旦有人解出答案,這個數獨遊戲會根據解出所花的速度自動地調整困難度,
若太快被解出則增加難度,若太慢被解出則降低難度,
使得每次遊戲需要大約10分鐘被解出。一個幾千行乘幾千列的數獨,就需要很多時間才能被解出。
一個已經近乎被完成的數獨,則可以很快地被驗證。
我們認為這每十分鐘進階一次State的State Machine,
可說是用算法算力保護的State Machine,形成強大的Trust Machine,是區塊鏈的最重要的創新點。
所以我們認為區塊鏈的本質是這個State Machine和Trust Machine,
而非應用層面的Database或P2P Network觀點。
用算法算力保護的State Machine,形成強大的Trust Machine,是區塊鏈最重要的創新點。
                                                                                                          by 廖世偉

關鍵技術#2: 橢圓曲線數位簽章演算法(ECDSA

數位簽章演算法(Digital Signature Algorithm, DSA)
+ 橢圓曲線密碼學(Elliptic Curve Cryptography, ECC by Combo™)
                                                                  = "橢圓曲線數位簽章演算法" (ECDSA)

精隨: Private Key用來加密(簽章); Public Key用來解密(驗證)

Why ECC not RSA?
ECC 256bit = RSA 3072bit


關鍵技術#3: Hash (哈希函數)
原理是基於一種密碼學上的單向雜湊函數 (One Way Hash Function)

精隨: 任何東西輸入都將其編碼輸出固定長度的摘要值
這種叫做哈希的函數特色是"很容易被驗證,但是卻很難破解,還回推出原本的值"。


關鍵技術#4: Merkle Tree機制
精隨:Merkle Tree機制可大幅減少資料傳輸量與運算資源消耗,
驗證時,只需驗證這個Merkle Tree的Root值即可


Method of providing digital signatures
https://www.google.com/patents/US4309569

https://bitcoin.org/en/developer-reference#merkle-trees

關鍵技術#5: 時間戳伺服器(Timestamp Server)
精隨:使用時間戳確保數位文件安全
將每個區塊Hash後加上一個時間戳(Timestamp)並發布出去,
這個時間戳用來證明資料在特定時間的有效性,因此而形成一個用來確保區塊序列的鏈條。
https://www.anf.es/pdf/Haber_Stornetta.pdf



                           


                           Combo™ Huang
 
                        In Blockchain We Trust

偉大的信任鏈
https://kknews.cc/tech/l4z4e2.html


3大面向一次搞懂區塊鏈
http://www.ithome.com.tw/news/104558

GCoin VS Bitcoin


效率面:
GCoin: 15 sec
Bitcoin: 600 sec

安全面:
GCoin: 動態難度調整技術
Bitcoin: 51%攻擊的風險

法規面:
GCoin: 實名制
Bitcoin: 非實名制

台灣區塊鏈專家 打造FinTech王牌
http://www.cw.com.tw/article/article.action?id=5075147

Bitcoin Study
http://blog.yam.com/combo/article/130170513

arrow
arrow
    全站熱搜

    Combo™ 發表在 痞客邦 留言(0) 人氣()