密碼學/加密貨幣原理

467 回覆
844 Like 6 Dislike
2017-12-15 11:43:26
2017-12-15 15:11:07
lm
2017-12-29 23:34:36
一般wallet 都會check下network有無unconfirmed transaction先再send下一個transaction出去,未必做到發佈左手交右手既transaction

其實想試下race attack都唔洗自己寫Wallet
之前覆你既時候我都唔知道網上已經有tool係比你試double spend attack

你係可以同時send多10條假交易出去
但係對家10幾秒之內應該都見得到果10條假交易
隨非你既physical 交易可以10幾秒之內完成然後逃之夭夭
如果唔係都無乜用
2017-12-29 23:37:29
唔好意思
隔左幾個月都無出文

上次講bitcoin script好似太深
都係轉番D易入口既topic先

what and why is segwit2x

之前提過一個bitcoin既transaction要等礦工加入下一個block先算得到一次confirmation
而礦工點樣判斷加邊個block入下一個block呢?
好多時都係睇transaction fee, 你肯出越多錢比礦工,礦工咪優先處理左你個交易先

如果大家有留意transaction fee既走勢
2016年年尾,如果你想吸引礦工立即處理你既交易,大概係100 satoshi / byte
黎到2017年年尾,升到去900 satoshi / byte
(sources: https://bitcoinfees.info)
一個transaction大概有250 btyes, 即係要37500 satoshi 先可以保證礦工優先處理
以1BTC=15000USD黎計,225000satoshi大約係30美金,你都咪話唔貴

導致transaction fee上升,原因好簡單,因為transaction越黎越多
而且bitcoin天生限制每個block既size係1MB,除番開每個block大約裝到1MB/250B=4000個交易
每10分鐘先有一個block出現,所以每10分鐘=600秒只可以處理到4000個交易
即係話每秒鐘處理4000/600=6.667個交易
大家通常round up做7

成個bitcoin network, 每秒鐘只可以處理7個交易,其實真係好廢
唔好講全世界,淨係講搭地鐵,每一秒都有70個人o都緊八達通啦
Fo reference, visa每秒鐘可以處理約1萬條交交易

所以bitcoin既transaction processing power一直都係討論熱點之一
最常見既解決方法係擴大每一個block既容量,由而家1MB提升到2MB甚至4MB

擴大容量有咩好?簡單直接
... MAX_BLOCK_SIZE=1000000
改做
... MAX_BLOCK_SIZE=2000000

然後coordinate with 所有礦工,擇個時辰吉日一齊升級,搞掂

擴大區塊容量有咩唔好?
1. 增加做礦工既門檻,block大左,運算能力要求高左,即係少左人做到礦工,導致hashing power更加集中
本黎掘礦應該係去中心化,擴大容量之後會中心化左

2. 網速限制,唔係全世界既網絡都好似香港咁快。
block size大左一倍,傳輸時間會長左接近1倍。而家1MB既block要broadcast到全個network都知,需要大約30秒。唔好睇少呢30秒,因為礦工係基於latest block黎掘下一個block。
假設我起香港成功掘到下一個block, 幾秒之內成個亞洲區都會知道,但係要多十秒呢個消失先去到美國歐洲。
即係話美國歐洲既礦工作遲左10幾秒先開始掘下一個block。

掘礦呢樣野係爭分奪秒,情況就好似考試派卷咁,老師一開始派卷比每行第一個人傳去後面,如果老師唔等到所有人都收到卷先話開始做,而係一收到卷就做得,咁每行第1個人就會比每行最尾果個人多幾十秒時間做卷。幾十秒,夠你答arm 多條mc, 分分鐘就爭一個grade。起bitcoin既世界,講緊幾個bitcoin既reward架啦。

所以唔係所有人都同意擴大block size呢個做法。
大致上分為兩派:礦工同bitcoin developer
礦工支持擴大block size, 因為擴大左之後更加少人可以同佢地競爭
bitcoin developer唔支持,因為block size越大network越centralize, 違反左bitcoin既原意
而就算double block size都好,每個block儲到既交易數會由7條上升到14條,其實仍然遠遠唔夠滿足bitcoin既交易量
咁你話double唔得咪triple, 甚至quadruple
比盡你去到8MB一個block, 好似bitcoin cash咁,咪都係1秒56條交易
(講遠D:所以有班極端份子建議bitcoin umlimited,任由miner 無上限自決block size)

bitcoin developer反對擴大容量,咁有咩建議先?
答案係:segwit (segregation witness, 隔離見証)
想一個block可以裝到多d transaction有兩個方法,一個係個block大D,即係上面講過既野
一個係transaction細D,segwit就係令到transaction細D既方法

witness係密碼學入面既jargon...起bitcoin既世界入面,witness即係transaction入面既簽名
一個transaction 250Btyes入面有大約100Btyes係簽名
segwit就係一個神奇魔術,可以拎走個簽名,free番多D位出黎裝transaction

另外segwit仲fix左bitcoin core一個由來以久既問題:transaction malleability
呢個問題唔死得人,無人會因為呢個問題唔見左錢,但係就提供左一個漏洞比人攻擊bitcoin network
2014年初就發生過大規模攻擊事件,搞到幾個大exchange down左一排過唔到錢比人

唔只添wor, segwit係開發lightning network (閃電網絡)既必要條件
閃電網絡既目的係創造一個payment channel, 起呢個channel發生既交易可以暫時唔擺上blockchain住
我可以同你來回幾十次交易之後先commit上條chain度
例如一間咖啡店可以同你開一條channel, 你買左10杯咖啡之後先confirm
閃電網絡安全在於要求雙方拎保証金出黎先,如果呢個channel上有人想走數,佢可以確保另一方唔會有損失

詳細唔講咁多,但係聽到呢到,你起碼要明白礦工一定唔同意呢個方案
因為閃電網絡想做既就係擺少D交易入blockchain, 一旦成事既話礦工就會賺少好多transaction fee
雖然,大家都知道實行segwit先係真係為bitcoin發展好,先真係可以將bitcoin帶入日常生活

所以bitcoin developer同礦工傾唔掂數
bitcoin developer想做segwit, 但係礦工只係想擴大block size(2x)

直到2016年年頭
有班人出黎搞bitcoin classic, 同bitcoin既分別就係block size =2MB
礦工之間有好人心思思想跳槽唔再掘bitcoin, 轉行掘bitcoin classic
Bitcoin developer就梗係唔會同意啦,但係要知道bitcoin developer其實係無實權在手
只有掘礦既人可以控制掘出一個咩block出黎
所以developer決定安撫佢地,於是佢地出黎開會,會後出現左bitcoin round table consenus
https://medium.com/@bitcoinroundtable/bitcoin-roundtable-consensus-266d475a61ff

Developer同礦工開會既地方,係香港既數碼港
真係唔講你都唔知bitcoin既歷史事件係起香港發生
雙方達成既共識係:爭咩丫,溝埋做segwit2x丫,笨

礦工當初話轉投bitcoin classic其實都係想大下班developer, 無人夠膽真係企出黎話帶頭轉過去
始終developer先係bitcoin community既精神領袖,至少起2016年既時候bitcoin先係玄門正宗,無人夠膽搞分裂

講番班bitcoin developer, 其實呢班人都係一個個獨立個體,無話邊個係大佬
當然會有幾個有名氣D,但係唔等於佢地可以控制其他developer做咩
當日出席數碼港既bitcoin roundtable既只係其中幾個developer
呢幾個develoepr雖然答應左會幫手搞2x, 但其他無出席會議既developer其實唔係幾同意

developer一直開發segwit, 仲宣佈2017年8月1日之fork一次
Developer:「如果你班礦工唔願意接受segwit, 隨你,你鐘意就自己fork 條chain,但係後果就係會有兩隻bitcoin出現,後果自負」
而家睇番轉頭可能覺得咁講法無乜殺傷力
因為而家有太多種由bitcoin main chain fork 出黎既bitcoin-alt coin
但係果時無人真係夠膽咁做,大家都驚萬一搞左bitcoin1 bitcoin2出黎大家會好混亂
會嚴重影響bitcoin發展

但係呢個世界就係有人咁大膽,一班2x既支持者覺得2x先係皇道
唔理developer既警告,反而大番佢地轉頭:
「好,你地8月1日fork丫麻,我早過你,我地7月28日就fork, fork出黎既叫bitcoin cash(BCC),睇下你點」
2017-12-29 23:39:30
BCC既特點係8MB一個block, 而且無segwit
搞BCC既人以為一眾礦工一定會支持佢,以為可以反客為主,大番班developer
但係大礦工自己都有個concern:萬一bitcoin真係fork左兩種coin出黎,真係估唔到bitcoin會跌成點
班developer其實就無損失既,bitcoin收左皮佢地咪做第二個project
礦工係真金白銀買左好多ASIC黎掘礦,如果真係fork左有咩意外佢地會損失慘重

於是礦工自己圍內又開多一次會@2017/5/23,呢次起New York開,所以又叫New York agreement
https://medium.com/@DCGco/bitcoin-scaling-agreement-at-consensus-2017-133521fe9a77
其實內容同香港果次無乜分別,都係segwit2x
只不過參加者就有D唔同,New York agreement全部都係礦工,無developer份
雖然無邀請developer, 佢地都唔敢完全唔比面developer, 所以無放棄到segwit, 只係強調2x一定要做

因為紐約協議係一眾礦工傾出黎,只要礦工同意就唔會有fork既風險,所以segwit2x好快就鎖定左go live date
而且分為兩步:8月先上segwit, 11月再上2x

結果BCC就做左傻仔喇,諗住其他礦工會撐佢,點知大部份礦工都做segwit2x
但係BCC洗濕左個頭就決定做埋落去,咩都唔理7月尾fork左出黎
原本大家估計fork完之後有兩個可能,一係無人理BCC,i.e. BCC既價值係0
或者BCC真係值錢,但係BCC既價值要起bitcoin度扣出去,即係bitcoin原本值100蚊
分拆完之後BCC如果值5蚊,咁bitcoin就應該跌到落95蚊
但係turn out 竟然係BCC值5蚊 bitcoin值105蚊
點解分叉既同時會變多左D價值出黎,呢一點到而家我都搞唔明

8月上segwit都無咩大問題,因為班developer已經做左好耐,而且連礦工都同意做segwit之後
無人意圖阻止呢件事

但係11月上2x既時候就大問題喇
有留意開既朋友應該知道2x起last minute call off左
有好多個原因,下面只係列舉幾個
1. 其中幾個有份簽New York agreement既礦工縮沙,例如slush
https://coin.dance/blocks/historical
Oct 13開始表示同意segwit2x既block數量下降
2. 大部份exchange都唔打算用2x bitcoin 黎取代舊bitcoin, 例如Bitfinex就話,舊有既1x bitcoin依然會叫做BTC,新既2x bitcoin會叫做b2x。即係連exchange都表態唔認同行segwit2x既bitcoin可以取代舊bitcoin
3. 2x唔肯做replay protection

解釋一下replay protection
Fork完之後,如果只係block既格式變左,而transaction既格式無變既話
咁同一個transaction起fork出黎既兩條chain都係valid
即係話你起舊bitcoin chain上面發出去既transaction,起新bitcoin chain上同樣有效
可能你只係想比舊bitcoin我,新bitcoin留番比自己用
我識既話,可以起舊bitcoin blockchain搵到呢條transaction起新bitcoin network發佈一次
咁你就蝕左D新bitcoin比我

最後,以上只係講左幾個重要既fact出黎,
成件事仲有好多個角度分析, 例如初初segwit唔受歡迎係因為佢間接地block左ASICBoost,令到bitmain失去佢地掘礦既優勢
例如其實唔係所有出席既人都同意New York Agreement,只係其中幾個大佬寫好曬,就叫大家簽

最最最後,我知我寫既野都唔夠全面
我盡量follow架喇,講錯左既話請屌得細力D,當係抛磚出黎比大家討論一下
2017-12-31 01:43:06
講得好好,支持
2017-12-31 11:21:37
原來太舊既post會隱藏左
遲d我開新post再整理一次
2018-01-02 04:10:31
2018-05-18 09:06:54
lm
2021-02-14 02:28:30
2021-05-21 18:10:21
推一推
2021-06-29 01:14:29
加密貨幣和網頁的產生

加密貨幣是這樣產生
每一個網路節點向網路進行廣播交易,這些廣播出來的交易在經過礦工(在網路上的電腦)驗證後,礦工可使用自己的工作證明結果來表達確認,確認後的交易會被打包到資料塊中,資料塊會串起來形成連續的資料塊鏈。

咁啲coin係響邊度黎?個源頭係邊度?無中央系統點樣可以確保所有人的帳簿都可以有呢筆數嘅交易?


網頁同樣地 當我已經寫好一個網站,我upload去邊度,先會令大家都可以search度,係咪會有一個中央系統?
2021-06-29 23:31:36
系統會從天而降一堆獎勵比下一個最快掘到區塊出黎既人
係呀真係從天而降,今日黎講,每10分鐘就會有6.25個bitcoin憑空誕生出黎,送比下一個掘到block嘅礦工

而呢堆獎勵係會隨時間減少,詳情可以追番呢個post
2021-06-29 23:38:16
個系統喺邊度
2021-06-30 21:44:39
所有礦工都run緊follow同一個standard/ protocol既mining program, 呢個program係公開喺GitHub比所有人睇
2022-02-02 07:42:25
2023-11-30 15:45:38
巴打仲有冇學?
吹水台自選台熱 門最 新手機台時事台政事台World體育台娛樂台動漫台Apps台遊戲台影視台講故台健康台感情台家庭台潮流台美容台上班台財經台房屋台飲食台旅遊台學術台校園台汽車台音樂台創意台硬件台電器台攝影台玩具台寵物台軟件台活動台電訊台直播台站務台黑 洞