唔知我嘅理解有冇錯
第一二篇講嘅就係bitcoin 加密背後既原理
第三篇講嘅係礦工角色就好似係間無人銀行入面做admin 野, 將大家啲transaction history 整理加密放好
我有兩個問題,想知後面既篇章係咪會講到
1. 邊個出糧比啲礦工?冇錢就冇人做admin 野,但呢個過程邊個出糧?
2. 一路將新transaction 加去每unit coin 上面去整一條越來越長既chain, 會唔會拖慢左交易時間?定其實加長對處理既時間係微不足道?
唔知我嘅理解有冇錯
第一二篇講嘅就係bitcoin 加密背後既原理
第三篇講嘅係礦工角色就好似係間無人銀行入面做admin 野, 將大家啲transaction history 整理加密放好
我有兩個問題,想知後面既篇章係咪會講到
1. 邊個出糧比啲礦工?冇錢就冇人做admin 野,但呢個過程邊個出糧?
2. 一路將新transaction 加去每unit coin 上面去整一條越來越長既chain, 會唔會拖慢左交易時間?定其實加長對處理既時間係微不足道?
詳細等其他師兄答, 我答簡單既
1. 出糧方面, 你處理transaction既同時, 你其實係掘緊 coin, 掘到你就有收入。 另外, 好似每次處理交易, 都會收小小費用幫補下 (但係呢度有個問題搞唔清楚: 人人都處理, 唔通人人都收?如果唔係咁邊個收?)
2. 每個block chain, 其實係上一個chain hash + 新交易, 所以唔會越來越長。
問題:如果bitcoin有幸去到132年之後都未收皮,無新bitcoin賺仲邊會有人做礦工?
答案:靠大家比既transaction fee
上個chapter講過,理論上礦工處理邊個交易先,係先到先得咁決定
咁係因為掘礦初期淨係靠獎賞都夠食
但係隨住獎賞不斷下降,就要交發起交易既人比transaction fee先維持到生計
(起碼都幫補下人地既電費丫...)
所以礦工會唔會及時處理你既交易,就好視乎你肯比幾多tips
你比既tips係會直接袋落個礦工袋到
所以,就算你個交易係好遲send出黎,如果你肯比夠多tips既話,全世界既礦工會爭住擺你既交易入下一個block
就算你既交易係遲過人地發出去,分分鐘可以比其他交易更快得到confirmation
掉番轉咁講,如果你平時都唔比錢聽歌/比錢睇AV
斷估你用bitcoin比錢既時候都唔會比tips
咁你個交易既priority就會不斷比其他肯比tips既交易壓低落去
結果好可能係,明明你6pm就send左個交易出去,等到7pm都未有礦工confirm你
--------
上面提到,mining既難度係會調節到每10分鐘就出現一個新block
呢個調節係每2016個block發生一次
如果每一次既調節都做得好既話,即係每2016 * 10分鐘 =20160分鐘=336小時=14日
所以大約每兩個禮拜就會調節一次
起講點樣調節之前,要define幾個parameter
Difficulty = 2^224 / current target
difficult 最低係1, when current target = 2^224
所以2^224 又叫做"Target when difficult = 1"
將2^224表達番做16進制
0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
即係話頭8個位都係0
呢個target其實真係唔難, 你識寫programme既話,求其寫個for loop, loop夠一晚
應該會搵到一個input既hash value細過2^224
頭先講過difficult 1係最易
咁而家既difficult係幾多呢?860,221,984,436.2223
所以current target = 2^224 / 860221tel:9844362223
大約係0x000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
(18個0字頭)
即係話你個block個hash value要細過0x000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
先合格
如果difficult 係 1
咁平圴要hash幾多次先會到個合格既block呢?
因為SHA256既output係256個bit, total 有2^256個outcome
difficulty = 1既時候, 只要outcome < 2^224都bingo
所以expected value係2^256 / 2^224 = 2^32次
(想象下擲骰仔有6個outcome, 擲到細過3就合格,咁你要擲到合格既expected次數就=6/3=2次)
如果我想每10分鐘=600秒搵到一個新既block
咁成個bitcoin network既total hash power就要有2^32/600 per second
當difficulty 唔係1既時候
hash到合格既expected次數就係difficulty * 2^256 / 2^224 = D * 2^32
成個bitcoin network既total hash power就要有D * 2^32/600 per second
用番而家做例子
而家個difficulty = 860,221,984,436.2223
所以而家既total hash power就係860,221,984,436.2223 * 2^32/600=6.15*10^18 / second
即係而家全世界礦工夾埋,一秒計到6.15*10^18次SHA256
--------------
秒秒鐘計緊6.15*10^18次SHA256
有幾犀利?
根據https://en.bitcoin.it/wiki/Non-specialized_hardware_comparison
Core i7 950 5.8MHash/s , 即係一秒鐘5800000次
GPU可以上到1000MHash/s = 1*10^9 Hash /s
同上面既10^18比仲係爭9條街
GPU可以快過CPU咁多係因為parallel computing
GeForce 10 閒閒地有1000個core,每個core可以各自計SHA256
但係CPU去到盡,就算server grade, 都唔過100 cores
bitcoin面世頭果幾年都仲可以用CPU/GPU 掘到金
後黎比班EE佬/CE佬玩寸左個場
佢地用FPGA黎寫programme計SHA256
FPGA同CPU唔同在於,你起電腦上面寫programme, low level極都要寫C
C要compile做assembly language, 分分鐘一行x=x+1而家用左十行assembly code
但係FPGA就係programme on CPU level,你可以寫hardware description language直接操控點砌d logic gates
越寫low level language, 就越能夠improve performance
後黎D人覺得FPGA都唔夠玩,因為FPGA仲有可programme既功能
馮親可以改既野,即係未優化到盡
所以最終level係ASIC (Application-specific integrated circuit)
即係塊電路版係焊死左,淨係識得計SHA256,做唔到其他野
平平地1000蚊港紙買到一部Antminer S5, 1.16 TH/s
1.16TH/s = 1160GH/s = 1160000MH/s
閒閒地快過GPU成千倍都有,呢部ASIC仲要係cheap野
所以礦工生態由以往各有各掘,發展到而家要form mining pool黎掘
靠自己一個掘既話真係掘到天荒地老都唔會掘到一個
終於明少少
但唔明中本聰當初整嚟為咩?如果為咗創造比舊有好嘅貨幣制度,咁整bitcoin嘅本係邊到嚟,冇理由冇啦會派錢比你地,定係本身bitcoin唔值錢,係有人投資落去同有市場價值先值錢?
可能有啲1999,我係咪需要重睇
終於明少少
但唔明中本聰當初整嚟為咩?如果為咗創造比舊有好嘅貨幣制度,咁整bitcoin嘅本係邊到嚟,冇理由冇啦會派錢比你地,定係本身bitcoin唔值錢,係有人投資落去同有市場價值先值錢?
可能有啲1999,我係咪需要重睇
應該是無本
我覺得因為bitcoin用黎洗黑錢太方便(主要係政府管唔到)d on9市民又炒埋一份 所以先值錢
因為不法份子用高價(黑錢)買bitcoin 再將bitcoin換物/低價賣番bitcoin洗錢
市民見有利可圖就用乾淨錢投資bitcoin 洗走不法份子d黑錢
利申 唔識 以上全部鳩噏
想問hash255 條formula 係點
-----課外知識1-----
之前提過ECC既private key係random揀個數出黎
簽名時候用既k, 即係暫時性既private key同樣係隨機揀個數出黎
但係呢個k要揀得好小心:用過一次既k唔可以再用
如果你真係咁環保
文件1同文件2都用左同一個k黎簽名
咁就大檸樂喇:hacker可以根據簽名1同簽名2 計番你條private key出黎
即係玩撚猿
點解咁特別提起呢個k?
因為歷史上真係有人試過用左同一個k而奶野:Sony
PS3一直以黎係唔玩得翻版碟
當中就係用左ECC digital signature
每隻正版碟都有Sony既簽名,文件就係隻game
而且部console就有Sony既public key, 可以驗證 Sony既簽名
如果你自己寫左game,擺落PS3度行,因為你無Sony 既簽名,通過唔到認證,就行唔到隻game
PS3就係用左ECC digital signature
2010年George Hotz唔知點樣發現,Sony generate PS3 Game既簽名果陣無用到隨機暫時性private key (即係k)
反而,所有簽名都用左同一個k
咁只要你肯比錢買多幾隻正版碟
就可以有好多
文件1, Sony 簽名1
文件2, Sony 簽名2
文件3, Sony 簽名3
就可以搵到Sony簽名用既private key
然後用Sony既private key黎幫你自己寫既game簽名
Digital Signature scheme係唔會知邊人用private key黎簽
verify果陣淨係認數字,所以一但公開左條key,就全世界都可以冒認Sony簽名
即係可以繞過Sony既認證檢查
簡單黎講:Jailbroken,可以玩翻版碟
George Hotz公開左條key之後,Sony嬲到爆炸
決定從法律途徑告George告到甩褲
呢個行為辣著左Anonymous, 因為Anonymous覺得而家係Sony柒左
有人免費幫你搵個loophole出黎你唔多謝佢不突止,仲要告佢?
Apple iOS都成日比人jailbreak啦,你有無見過Apple告人?
所以2011年4月Anonymous大規模攻擊Sony
傳說話佢地就係用private key 簽左一個自己寫既programme,所以登入到dev-PSN network...
繼而拎到曬所有PSN所有user既資料...
之後既事大家都應該知啦,PSN down左成個月咁濟...
-----課外知識1-----
之前提過ECC既private key係random揀個數出黎
簽名時候用既k, 即係暫時性既private key同樣係隨機揀個數出黎
但係呢個k要揀得好小心:用過一次既k唔可以再用
如果你真係咁環保
文件1同文件2都用左同一個k黎簽名
咁就大檸樂喇:hacker可以根據簽名1同簽名2 計番你條private key出黎
即係玩撚猿
點解咁特別提起呢個k?
因為歷史上真係有人試過用左同一個k而奶野:Sony
PS3一直以黎係唔玩得翻版碟
當中就係用左ECC digital signature
每隻正版碟都有Sony既簽名,文件就係隻game
而且部console就有Sony既public key, 可以驗證 Sony既簽名
如果你自己寫左game,擺落PS3度行,因為你無Sony 既簽名,通過唔到認證,就行唔到隻game
PS3就係用左ECC digital signature
2010年George Hotz唔知點樣發現,Sony generate PS3 Game既簽名果陣無用到隨機暫時性private key (即係k)
反而,所有簽名都用左同一個k
咁只要你肯比錢買多幾隻正版碟
就可以有好多
文件1, Sony 簽名1
文件2, Sony 簽名2
文件3, Sony 簽名3
就可以搵到Sony簽名用既private key
然後用Sony既private key黎幫你自己寫既game簽名
Digital Signature scheme係唔會知邊人用private key黎簽
verify果陣淨係認數字,所以一但公開左條key,就全世界都可以冒認Sony簽名
即係可以繞過Sony既認證檢查
簡單黎講:Jailbroken,可以玩翻版碟
George Hotz公開左條key之後,Sony嬲到爆炸
決定從法律途徑告George告到甩褲
呢個行為辣著左Anonymous, 因為Anonymous覺得而家係Sony柒左
有人免費幫你搵個loophole出黎你唔多謝佢不突止,仲要告佢?
Apple iOS都成日比人jailbreak啦,你有無見過Apple告人?
所以2011年4月Anonymous大規模攻擊Sony
傳說話佢地就係用private key 簽左一個自己寫既programme,所以登入到dev-PSN network...
繼而拎到曬所有PSN所有user既資料...
之後既事大家都應該知啦,PSN down左成個月咁濟...
Sorry 呀 追到呢part 未追晒成個post 但有啲野想問
如果我當Sony 係用左random private key k
咁佢console 個private 咪要不斷跟住咁變?
因為以我睇完既理解 private key and public key shall be a pair
但如果係咁 部console 點認邊條public key 對應邊條private key ?