Bitcoin Forum

Local => 中文 (Chinese) => Topic started by: jl2012 on June 15, 2014, 03:55:01 PM



Title: Bitcoin 高質技術討論專區
Post by: jl2012 on June 15, 2014, 03:55:01 PM
由於本區討論質素日益低下, 本人決定設立一系列之高質討論專區, 並由本人直接管理. 本人亦不會再參與中文區內任何其它討論

規則:

1. 本專區由本人管理,  違反規則者可不作警告直接刪貼, 如不喜歡者請不要在此發言
2. 本專區只限討論技術問題. 投資, 政策等題目請勿在此發言
3. 本專區絕不容忍刷貼及一切軟硬廣告, 將直接刪除
4. 任何轉貼文章, 必須附上原出處之連結, 經提醒後不改正者可被刪除
5. 任何翻譯文章, 必須附上原語言文章之連結, 經提醒後不改正者可被刪除
6. 發佈不實信息, 被指出後仍重覆發佈, 視情況可被刪除
7. 有關山寨幣的技術問題, 如非與Bitcoin直接有關, 可被刪除
8. 本專區歡迎任何人發言, 但對於Activity愈低者, 規則會執行得愈嚴格

本人文章如註明CC BY-NC-SA 3.0, 表示轉載者必須引述本人名稱(jl2012@bitcointalk), 不得用於商業用途, 分享時亦必須以相同條款分享. 具體條款見: http://creativecommons.org/licenses/by-nc-sa/3.0/ . 如需用作商業用途, 或以其它條款重新發佈, 請先與本人聯絡

如果你喜歡我的原創技術文章, 請考慮捐款, 謝謝!


Title: Re: Bitcoin 高質技術討論專區
Post by: innocent93 on June 15, 2014, 04:02:08 PM
 :)非常好的解决方案,我一个支持这个独立贴子。


Title: 3字開頭的地址: P2SH
Post by: jl2012 on June 15, 2014, 04:54:16 PM
今天有人問到為什麼有些地址是3開頭, 例如這個 https://blockchain.info/address/3QRhucKtEn5P9i7YPxzXCqBtPJTPbRFycn

這叫做Pay-to-script-hash, P2SH, 是2012年才出現的新功能.

傳統的1開頭地址, 在2009年就有了, 其實叫做Pay-to-pubkey-hash, P2PH

所謂地址, 其實就是一些條件, 說明收款人只要做到某些操作, 就有權把錢送出去. 1開頭的地址, 就是說收款人需要提供一個特定的數碼簽名, 就可以把錢送出去, 而這個簽名只有錢包的持有人才能做到. 這個大家都應該不陌生.

但P2PH只能指定一個簽名, 不能做到更複雜的條件. 我們可能希望有一個賬號, 要求三人之中有兩人簽署才能用錢. 這叫做multi-sig, 多重簽名. 要求N人之中有M人簽署的multi-sig就叫M-of-N multi-sig, M 小於或等於 N.

其實多重簽名在2009年一開始就存在了, 但若要指定一個multi-sig的交易, 地址會變得很長, 因此一直沒有流行起來.

但multi-sig明顥是一個很有用的功能, 因此在2012年引入了P2SH功能. 用了P2SH, 無論用錢的條件有多複雜, 都可以用一個固定長度 (約30多字母) 的地址來指定, 其中包括N為不多於15的M-of-N multi-sig. 更複雜的條件都可以, 例如要動公司的錢包, 可以由老闆的簽名, 或四名經理其中三名的簽名 (1 or 3-of-4); 要動用小孩的錢包, 要由小孩簽名, 加上父母其中一方的簽名 (1 and 1-of-2), 理論上都可以做到

但很可惜, 由於一直以來的應用都是基於最簡單的1地址, 3地址經過兩年仍沒有流行起來. 不過情況會在本年開始轉變, 已經有在線錢包應用P2SH: https://greenaddress.it/en/ . 用了P2SH multi-sig的錢包, 即使有關服務跑路了, 也不能帶著錢走; 就算服務被黑了, 只要客戶沒被黑, 黑客也拿不到一分錢. 本人相信P2SH會在兩年內帶來很多全新應用.

(C) jl2012@bitcointalk 2014. CC BY-NC-SA 3.0  http://creativecommons.org/licenses/by-nc-sa/3.0/

如果你喜歡我的原創技術文章, 請考慮捐款, 謝謝!


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on June 15, 2014, 04:57:24 PM
本人盡量每一兩天講一個技術題目. 如果有想了解的題目可以提出. 謝絕沒意義的回貼如"長知識了", "謝謝  ;D"等


Title: Re: Bitcoin 高質技術討論專區
Post by: zcxvbs on June 15, 2014, 05:04:13 PM
本人盡量每一兩天講一個技術題目. 如果有想了解的題目可以提出. 謝絕沒意義的回貼如"長知識了", "謝謝  ;D"等
请详细解释下所谓51%攻击,和51%攻击未来对比特币发展的影响 :)


Title: 挖礦的目的: 防止雙花
Post by: jl2012 on June 15, 2014, 05:43:13 PM
本人盡量每一兩天講一個技術題目. 如果有想了解的題目可以提出. 謝絕沒意義的回貼如"長知識了", "謝謝  ;D"等
请详细解释下所谓51%攻击,和51%攻击未来对比特币发展的影响 :)

這問題可以寫成一個系列了. 要正確了解51%攻擊, 首先要正確了解挖礦

挖礦可能是bitcoin最神奇的一環, 讓人可以在家裏印鈔, 以前做夢也想不到. 在Bitcoin最早的幾年, 挖礦是很多人開始參與bitcoin的原因. 但10個人挖礦, 正確了解挖礦的恐怕1個也沒有

挖礦是Satoshi最重要的發明, 是Bitcoin的靈魂, 挖礦的真正目的是解決去中心化電子貨幣雙重花費 ("雙花") 的問題, 其"印鈔"功能只是次要.

把1元當2元花, 就是雙花; 如果任何人都可以隨便雙花, 任何貨幣都不會有價值. 在傳統金融是靠可信的中心機構防止雙花. 例如央行是唯一可以印鈔的機構, 你把鈔票覆印, 就是雙花, 在中國要判死刑. 另一例子是銀行支票, 例如你有100元在銀行賬戶, 其實你是可以無限發出支票, 但當發出支票的總額高於100元, 那就叫空頭支票, 也就是雙花; 銀行不會容許空頭支票兌現, 發出空頭支票也是犯法的.

Bitcoin也面臨相同問題. 由於Bitcoin傳送就只是一些數碼簽名, 錢包的持有人其實可以無限制把同一bitcoin發送給多於一個人, 情況就像是不斷簽空頭支票, 也就是雙花. 但bitcoin沒有中心機構, 防止雙花的工作就落在礦工身上了.

待續

( 在這個網頁, https://blockchain.info/double-spends , 你可以看到人們嘗試雙花的情況. 正如我上面所說, 嘗試雙花就和發空頭支票一樣容易, 任何人都可以做到. 但由於有挖礦保護, 這些雙花都不會成功, 各位不要聽信謠言 )

(C) jl2012@bitcointalk 2014. CC BY-NC-SA 3.0  http://creativecommons.org/licenses/by-nc-sa/3.0/


Title: Re: Bitcoin 高質技術討論專區
Post by: dorismak on June 15, 2014, 08:08:05 PM
想问一个问题:比特币QT钱包的地址如何删除?删除以后这个地址还可以再分配吗?


Title: Re: Bitcoin 高質技術討論專區
Post by: innocent93 on June 16, 2014, 12:33:40 AM
想问一个问题:比特币QT钱包的地址如何删除?删除以后这个地址还可以再分配吗?
地址一旦生成就没法删除吧,就算你删除客户端与否,地址对应的私钥已经存在,删除后可以随时通过私钥来导入。反正地址资源基本是用不尽的。


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on June 16, 2014, 02:40:45 AM
想问一个问题:比特币QT钱包的地址如何删除?

Bitcoin-QT (現稱Bitcoin Core) 是不容許刪除地址, 因為這十分危險, 可能令你損失金錢

如果你不想用某個錢包了, 最簡單的方法是把所有錢都發到另一個新錢包, 再把舊的離線保存好就可以了. 即使是空錢包也必須備份, 因為可能會有某些原因, 有人把錢再發去那錢包

Quote
删除以后这个地址还可以再分配吗?

我不肯定你"分配"的意思, 不過Bitcoin地址不是分配得來的. Bitcoin地址不像銀行賬號. 銀行的賬號, 是銀行分配給你的; 而Bitcoin地址是你自己在本地隨機產生出來的, 你甚至無需連線, 也可以產生一個Bitcoin地址


Title: 挖礦如何防止雙花?
Post by: jl2012 on June 16, 2014, 05:02:26 AM
本人盡量每一兩天講一個技術題目. 如果有想了解的題目可以提出. 謝絕沒意義的回貼如"長知識了", "謝謝  ;D"等
请详细解释下所谓51%攻击,和51%攻击未来对比特币发展的影响 :)

這問題可以寫成一個系列了. 要正確了解51%攻擊, 首先要正確了解挖礦

挖礦可能是bitcoin最神奇的一環, 讓人可以在家裏印鈔, 以前做夢也想不到. 在Bitcoin最早的幾年, 挖礦是很多人開始參與bitcoin的原因. 但10個人挖礦, 正確了解挖礦的恐怕1個也沒有

挖礦是Satoshi最重要的發明, 是Bitcoin的靈魂, 挖礦的真正目的是解決去中心化電子貨幣雙重花費 ("雙花") 的問題, 其"印鈔"功能只是次要.

把1元當2元花, 就是雙花; 如果任何人都可以隨便雙花, 任何貨幣都不會有價值. 在傳統金融是靠可信的中心機構防止雙花. 例如央行是唯一可以印鈔的機構, 你把鈔票覆印, 就是雙花, 在中國要判死刑. 另一例子是銀行支票, 例如你有100元在銀行賬戶, 其實你是可以無限發出支票, 但當發出支票的總額高於100元, 那就叫空頭支票, 也就是雙花; 銀行不會容許空頭支票兌現, 發出空頭支票也是犯法的.

Bitcoin也面臨相同問題. 由於Bitcoin傳送就只是一些數碼簽名, 錢包的持有人其實可以無限制把同一bitcoin發送給多於一個人, 情況就像是不斷簽空頭支票, 也就是雙花. 但bitcoin沒有中心機構, 防止雙花的工作就落在礦工身上了.

待續

( 在這個網頁, https://blockchain.info/double-spends , 你可以看到人們嘗試雙花的情況. 正如我上面所說, 嘗試雙花就和發空頭支票一樣容易, 任何人都可以做到. 但由於有挖礦保護, 這些雙花都不會成功, 各位不要聽信謠言 )

(C) jl2012@bitcointalk 2014. CC BY-NC-SA 3.0  http://creativecommons.org/licenses/by-nc-sa/3.0/

任何擁有bitcoin的人, 都可以透過數碼簽署轉讓bitcoin. 如果張三想把他的1個Bitcoin轉讓給李四, 張三就要用他的私鑰 (錢包) 簽署以下訊息: “我張三同意把1個Bitcoin轉讓給李四”. 當全世界都看到這個簽署, 大家就會公認李四擁有1個Bitcoin, 而張三就不再擁有Bitcoin了. 然後李四也就可以用他的私鑰作簽署, 把Bitcoin再轉讓給其它人, 如此類推.

但問題是既然張三可以通過數碼簽署把Bitcoin轉讓給李四, 他也可以同時發出另一簽署把Bitcoin轉讓給王五, 那就等於張三可以無限生產Bitcoin, Bitcoin也不會再有價值.

Bitcoin通過一個所謂挖礦的方法來處理雙重花費的問題. 要理解挖礦, 先要理解雜湊函數 (Hashing algorithm)

雜湊函數有很多種, 其中Bitcoin挖礦採用了SHA256. 簡單而言, 雜湊函數可以把任意訊息轉化為一段固定長度的數字 (雜湊). 雜湊函數都有以下特性:
  • 1. 決定性 (Determinism), 輸入相同相同的訊息, 必會給出相同的雜湊;
  • 2. 偽隨機性 (Pseudo-random), 輸出的雜湊, 統計上和隨機雜訊無異;
  • 3. 不可逆性 (Irreversible), 不可能由雜湊算出原輸入訊息;
  • 4. 雪崩效應(Avalanche effect), 只要輸入的資訊有任何微少變動, 產生的雜湊就會出現完全不能預測的劇變.

利用雜湊函數, 人們可以把上述的“我張三同意把1個Bitcoin轉讓給李四”簽署轉化為一個雜湊. 人們也可以在上述的簽署後加上一個數字 (稱為nonce), 再計算雜湊; 基於雪崩效應, 隨著nonce的改變, 產生的雜湊就會完全不同. 挖礦的意思, 就是不停改變這個nonce, 直至算出來的雜湊小於一個大家都認同的數值 (雜湊本身就是一個數字), 這就成為一個有效的雜湊了. 由於偽隨機性, 沒有人可以在計算前知道什麼nonce可以得到有效的雜湊, 所以挖礦的人必須每一個nonce嘗試, 直至成功為止, 這過程沒有捷徑, 而且運算需要消秏能量, 因此這個有效雜湊是一個工作量證明 (Proof-of-work), 意思是能交出有效雜湊的人, 他必定曾經用電腦進行過一定份量的運算工作. 挖礦的意思, 就是挖礦的人 (礦工, miner) 必須以勞動才能找到有價值的東西 (即有效雜湊). 任何人只要有適當的電腦器材和網絡連接就能挖礦, 所以整個系統是去中心化的 (decentralized). 所謂的ASIC礦機, 其唯一作用就是不斷嘗試不同的nonce, 直至找到有效的雜湊

礦工可以同時為多個交易訊息挖礦, 他只需要把多個交易訊息串連起來, 在最後加上一個nonce並不斷嘗試, 也可以得到有效的雜湊, 這些交易訊息和nonce的組合稱為區塊 (Block). 但如果礦工為一些有矛盾的交易挖礦, 例如張三把同一個Bitcoin既給李四, 又給王五, 那其它人看到這個有矛盾的區塊就不會承認, 礦工就白做了. 因此有效的區塊除了要有有效的雜湊, 也要求所有交易的是有效的, 包括簽署正確和沒有雙重花費. 當交易訊息成為了有效的區塊, 就叫做確認了.

其實在組成區塊時, 除了新的交易訊息和nonce, 還要再加上上一個區塊的雜湊, 因此一個區塊不單是確認了新的交易訊息, 它也是確認了上一個區塊內的交易 (因為雜湊的決定性和不可逆性, 區塊的雜湊也就代表了區塊本身內所有的交易資訊); 而由於上一個區塊內有再上一個區塊的雜湊, 如此類推, 一個新的區塊其實是對歷史上所有區塊的確認 (第一個區塊 genesis block 除外, 它沒有上一個區塊的信息), 這稱為區塊鏈 (Blockchain). 因此一個新的區塊內不但不能有矛盾的交易, 而且也不能有和區塊鏈歷史上任何交易有矛盾的交易, 否則這個區塊也是無效的.

但如果有兩個礦工, 一個為”張三->李四”這交易確認, 另一個卻為”張三->王五” 這交易確認, 那究竟是哪個交易有效? 如果真的同時出現兩個有效的區塊, 但內容有所不同, 其它礦工也只能二選其一再繼續挖礦. 由於兩個都是有效的區塊, 礦工可以任意選擇其一; 但當其中一個區塊被新的區塊確認了, 其它礦工就會轉向為這個最新的區塊挖礦. 最終, 有較大工作量 (較長) 的分支 (fork) 就會成為公認的主區塊鏈, 較短的分支會變成孤兒區塊 (orphan block) 而被放棄. 因此最終兩個矛盾的交易只會有一個為世界所公認, 雙重花費變得不可能.

總結來說, 任何人都可以嘗試雙花, 但多個雙花的交易之中, 最終只會有一個能進入最長的分支 (主區塊鏈); 只有在主區塊鏈內的紀錄, 才是全世界公認的交易紀錄; 其餘沒有進入主區塊鏈的, 全都變成不能兌現的空頭支票, 因此雙花就變得不可能了. 也正是這個原因, 接受Bitcoin的一方, 必須等待交易進入最新區塊, 而且該區塊又被後來的新區塊確認; 確認愈多, 交易就愈安全. 任何未經確認的交易, 都存在被雙花的可能, 萬一進入不了主區塊鏈, 就會變成不能兌現的空頭支票

待續

(C) jl2012@bitcointalk 2014. CC BY-NC-SA 3.0  http://creativecommons.org/licenses/by-nc-sa/3.0/

如果你喜歡我的原創技術文章, 請考慮捐款, 謝謝!


Title: Re: Bitcoin 高質技術討論專區
Post by: wang_yan on June 16, 2014, 05:12:09 AM
请问如果要提高单个区块大小上限的话,是否需要Hardfork?

另外,如果进行了Hardfork,那些没有更新客户端的人会面临什么样的结果?

多谢!


Title: Hardfork, Softfork: 提升區塊大小上限
Post by: jl2012 on June 16, 2014, 07:44:22 AM
请问如果要提高单个区块大小上限的话,是否需要Hardfork?

另外,如果进行了Hardfork,那些没有更新客户端的人会面临什么样的结果?

多谢!

Bitcoin的本質, 是對區塊有效性的一套共識.

Hardfork的意思, 是把本來不合法的區塊, 變為合法; Softfork的意思, 是把本來合法的區塊, 變為不合法

Softfork在Bitcoin歷史上出現了很多次, 一些是bug修正, 一些是新功能. 以比較簡單的一次CVE-2010-5139為例. 在2010年, 發現了一個嚴重的bug, 原來bitcoin容許輸出的bitcoin量為負值, 由於規則是要求輸出的總量不得高於輸入的總量, 如果有一個輸出為負值, 那其餘輸出的總值就可以大於輸入總值, 就是說可以無限制刷bitcoin了. 當時實行了一次緊急的softfork, 規定任何個別輸出值不得小於0, 問題就解決了. 這做法令原本合法的交易 (負值輸出) 變為不合法, 所以是一次softfork.

要實行softfork, 只要大部份礦工同意新規則就可以了. 如果有小量礦工拒絕新規則, 繼續容許負值輸出, 他們挖到的區塊就得不到大部份礦工承認, 變為無效區塊, 損失了挖礦的收入. 對於非礦工的普通用戶, 即使他們沒更新, 由於新規則的區塊鏈對於他們來說仍然合法, 他們也會自動跟隨這最長的新規則區塊鏈. 因此只要絕大部份礦工同意, softfork其實不會造成真正的分叉

這裏列舉了bitcoin歷史上所有softfork: https://bitcointalk.org/index.php?topic=641294.msg7166458#msg7166458

至於Hardfork, 情況就複雜得多. 由於是把本來不合法的區塊變為合法, 不更新的用戶, 他們會拒絕接受新的區塊鏈, 而堅持留在舊的區塊鏈. 因此區塊鏈會出現真正的分叉, 兩分叉的bitcoin各不互通. 分叉前就存在的bitcoin, 可以在兩個分叉內各自使用一次; 分叉後才收到的bitcoin, 就只能在該分叉流通. 這明顯會嚴重危害bitcoin的價值. 因此要實行hardfork, 必須要有極充分的共識, 提供長時間的預告, 讓絕大部份的用戶, 包括礦工和非礦工, 都升級到新的規則.

(如果只有極小數如0.1%的用戶拒絕更新, 那問題就不大, 因為他們將沒有足夠算力維持挖礦, 平均一星期才出現一個新區塊, 要6星期才能確認一次交易, 還要等38年才可令難度下調, 那明顯是不可能維持下去的.)

至目前為止, Bitcoin還沒有一次真正的Hardfork. (2013年的BIP0050 bug某種意義上可以算一次, 將來另文再述)

講完了背景, 就正式答問題了. 現在bitcoin區塊有一個規定, 是任何區塊不得大於1MB. 這規定在最初的bitcoin是沒有的, 是Satoshi為防止Bitcoin被攻擊而後來加上 (這其實是一個softfork, 請自己想想為什麼). 但這個1MB的規定, 限制了bitcoin處理的交易總量, 因此很多人希望可以提高. 如果是簡單的由1MB提高至2MB, 那就會是一個hardfork, 因為這是把一個本來不合法的區塊 (2MB大小) 變為合法.

不更新的後果, 就要視乎客戶端的種類. 如果是bitcoin core (前稱bitcoin-qt), 由於會檢查每一區塊的合法性, 因此不更新的後果和上述一樣, 會堅持跟隨原有的分支. 如果是輕便型的錢包, 如multibit, android bitcoin wallet, 由於他們不檢查區塊合法性, 他們是不會知道區塊的大小, 所以兩個分支對他們來說都是合法的, 他們會選擇較長的分支. 如果是在線錢包如blockchain.info, 那服務商選擇哪一個分支, 用戶就用哪一分支

但其實只要動動腦筋, 在理論上是可以用softfork提升區塊大小上限, 去年我就提出了Auxiliary block ( https://bitcointalk.org/index.php?topic=283746.0 ) 來解決這個問題, 我暫時不打算翻譯為中文了. 這做法的明顯好處是softfork, 但缺點是實行起來非常複雜, 而且輕便型錢包也必須更新, 否則是看不到擴大後的交易.

(C) jl2012@bitcointalk 2014. CC BY-NC-SA 3.0  http://creativecommons.org/licenses/by-nc-sa/3.0/

如果你喜歡我的原創技術文章, 請考慮捐款, 謝謝!


Title: Re: Bitcoin 高質技術討論專區
Post by: wang_yan on June 16, 2014, 08:43:35 AM
感谢您的耐心解答,捐款0.01BTC表示感谢 :D https://blockchain.info/tx/ad51f233f5a92425b44f794329892f8e7a522f83be1e6fae6cf95722af7f882d


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on June 16, 2014, 08:53:24 AM
感谢您的耐心解答,捐款0.01BTC表示感谢 :D https://blockchain.info/tx/ad51f233f5a92425b44f794329892f8e7a522f83be1e6fae6cf95722af7f882d

謝謝! 如果有什麼想知道的, 我懂的都會回答. 經過一段時間, 相信可結集成一套Bitcoin技術文集


Title: Re: Hardfork, Softfork: 提升區塊大小上限
Post by: jl2012 on June 16, 2014, 09:05:27 AM
请问如果要提高单个区块大小上限的话,是否需要Hardfork?

另外,如果进行了Hardfork,那些没有更新客户端的人会面临什么样的结果?

多谢!

Bitcoin的本質, 是對區塊有效性的一套共識.

Hardfork的意思, 是把本來不合法的區塊, 變為合法; Softfork的意思, 是把本來合法的區塊, 變為不合法

Softfork在Bitcoin歷史上出現了很多次, 一些是bug修正, 一些是新功能. 以比較簡單的一次CVE-2010-5139為例. 在2010年, 發現了一個嚴重的bug, 原來bitcoin容許輸出的bitcoin量為負值, 由於規則是要求輸出的總量不得高於輸入的總量, 如果有一個輸出為負值, 那其餘輸出的總值就可以大於輸入總值, 就是說可以無限制刷bitcoin了. 當時實行了一次緊急的softfork, 規定任何個別輸出值不得小於0, 問題就解決了. 這做法令原本合法的交易 (負值輸出) 變為不合法, 所以是一次softfork.

要實行softfork, 只要大部份礦工同意新規則就可以了. 如果有小量礦工拒絕新規則, 繼續容許負值輸出, 他們挖到的區塊就得不到大部份礦工承認, 變為無效區塊, 損失了挖礦的收入. 對於非礦工的普通用戶, 即使他們沒更新, 由於新規則的區塊鏈對於他們來說仍然合法, 他們也會自動跟隨這最長的新規則區塊鏈. 因此只要絕大部份礦工同意, softfork其實不會造成真正的分叉

這裏列舉了bitcoin歷史上所有softfork: https://bitcointalk.org/index.php?topic=641294.msg7166458#msg7166458

至於Hardfork, 情況就複雜得多. 由於是把本來不合法的區塊變為合法, 不更新的用戶, 他們會拒絕接受新的區塊鏈, 而堅持留在舊的區塊鏈. 因此區塊鏈會出現真正的分叉, 兩分叉的bitcoin各不互通. 分叉前就存在的bitcoin, 可以在兩個分叉內各自使用一次; 分叉後才收到的bitcoin, 就只能在該分叉流通. 這明顯會嚴重危害bitcoin的價值. 因此要實行hardfork, 必須要有極充分的共識, 提供長時間的預告, 讓絕大部份的用戶, 包括礦工和非礦工, 都升級到新的規則.

(如果只有極小數如0.1%的用戶拒絕更新, 那問題就不大, 因為他們將沒有足夠算力維持挖礦, 平均一星期才出現一個新區塊, 要6星期才能確認一次交易, 還要等38年才可令難度下調, 那明顯是不可能維持下去的.)

至目前為止, Bitcoin還沒有一次真正的Hardfork. (2013年的BIP0050 bug某種意義上可以算一次, 將來另文再述)

講完了背景, 就正式答問題了. 現在bitcoin區塊有一個規定, 是任何區塊不得大於1MB. 這規定在最初的bitcoin是沒有的, 是Satoshi為防止Bitcoin被攻擊而後來加上 (這其實是一個softfork, 請自己想想為什麼). 但這個1MB的規定, 限制了bitcoin處理的交易總量, 因此很多人希望可以提高. 如果是簡單的由1MB提高至2MB, 那就會是一個hardfork, 因為這是把一個本來不合法的區塊 (2MB大小) 變為合法.

不更新的後果, 就要視乎客戶端的種類. 如果是bitcoin core (前稱bitcoin-qt), 由於會檢查每一區塊的合法性, 因此不更新的後果和上述一樣, 會堅持跟隨原有的分支. 如果是輕便型的錢包, 如multibit, android bitcoin wallet, 由於他們不檢查區塊合法性, 他們是不會知道區塊的大小, 所以兩個分支對他們來說都是合法的, 他們會選擇較長的分支. 如果是在線錢包如blockchain.info, 那服務商選擇哪一個分支, 用戶就用哪一分支

但其實只要動動腦筋, 在理論上是可以用softfork提升區塊大小上限, 去年我就提出了Auxiliary block ( https://bitcointalk.org/index.php?topic=283746.0 ) 來解決這個問題, 我暫時不打算翻譯為中文了. 這做法的明顯好處是softfork, 但缺點是實行起來非常複雜, 而且輕便型錢包也必須更新, 否則是看不到擴大後的交易.

(C) jl2012@bitcointalk 2014. CC BY-NC-SA 3.0  http://creativecommons.org/licenses/by-nc-sa/3.0/

如果你喜歡我的原創技術文章, 請考慮捐款, 謝謝!


補充一點, 只要出現一個大於1MB的區塊, 分叉就會出現; 就算之後的區塊都是小於1MB, 分叉都不可能融合. 因為只要一個區塊被認定為無效, 其子孫都會被認定為無效.


Title: Re: Bitcoin 高質技術討論專區
Post by: innocent93 on June 16, 2014, 11:35:14 AM
感谢您的耐心解答,捐款0.01BTC表示感谢 :D https://blockchain.info/tx/ad51f233f5a92425b44f794329892f8e7a522f83be1e6fae6cf95722af7f882d
签名挂着Donation address终于有了作用了
其实我很好奇很多Dice网站,他们花了不少钱推广,那真的有人去玩吗?


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on June 16, 2014, 01:22:41 PM

其实我很好奇很多Dice网站,他们花了不少钱推广,那真的有人去玩吗?

這不是技術問題

不過部份服務如Satoshidice, 你可以在blockchain看到他們的營業額, 但也不排除網站刷營業額的可能


Title: Re: Bitcoin 高質技術討論專區
Post by: innocent93 on June 19, 2014, 04:49:42 PM
OP,这里有一个技术问题。
如何计算实际的51%的攻击概率呢? 全文见http://blockindex.info/blog/51.html

bitcoin创建到现在总计产生30多万个block, 我们可以用这30多万个block的时间来估算51%攻击实际的概率和需要的时间

以下以6个confirm为例,来计算实际可能的概率

正常的 blockchain, 我们称之为C

[]----->[]----->[]----->[]----->[]----->[]----->[] C blockchain
诚实节点计算的 A blockchain

攻击节点计算的 B blockchain

[]----->[]----->[]----->[]----->[]----->[]----->[] A blockchain
        \
         []----->[]----->[]----->[]----->[]----->[]----->[] B  blockchain
分别计算每连续6个block的生成时间间隔:

t1 = blk5.time - blk0.time t2 = blk6.time - blk1.time ..... tx = blkn.time - blk(n-5).time

这样得到100%算力的C的连续生成6个块的时间集合 {t1,t2,t3....tx} TC1

然后用同样的方法计算连续生成7个block的时间间隔, 得到100%算力的C的连续生成7个块的时间集合 {t1,t2,t3....} TC2

对TC1绘图,得到正常的C blockchain 连续生成6个block时间分布曲线

x为连续的6个block

y为生成连续的6个block的时间

时间分布曲线
http://blockindex.info/blog/imgs/6.png

对时间排下序得到下图,可以得到连续生成6个block需要的最少时间和最多时间

时间分布曲线
http://blockindex.info/blog/imgs/6s.png

然后对T1计算,每间隔10秒内Tx的数目, 得到{len(T1...Tx),len(Tx+1....Tx+n)....},得到密度分布曲线,如下
http://blockindex.info/blog/imgs/6d.png
时间分布曲线

上图可以看出连续生成6个block需要的时间

每隔20000个block分别计算密度分布,难度应该变化10倍左右,算力变化x倍,发现block生成时间密度曲线基本重合

http://blockindex.info/blog/imgs/xd.png
 
把A和B看成一个独立的blockchain,则 A,B生成block概率的密度分布应该和C一致,但是由于A,B的算力下降,所以把时间轴等比缩放,

A 连续生成6个块需要的时间集合{t1,t2,t3....} TA = TC1 * 100/(1-49)

B 连续生成7个块需要的时间集合{t1,t2,t3....} TB = TC2 * 100/(1-51)

时间分布曲线
http://blockindex.info/blog/imgs/51d.png
得到A,B的曲线(左边为A,右边为B),和A可能的连续生成6个block的时间集合TA,和B连续生成7个block的时间集合TB

现在问题转化为在TA中随机选一个时间,大于TB中任意元素的概率

代码如下:

AB为有序集合,从小到大依次排列

AB中任意取元素a,b, 计算a>b的概率

def AB (A,B):
    N = []
    qz = 0.0
    for i,a in enumerate(A):
       n = 0
       for b in B:
          if a<=b: break
          else: n+=1
       N.append(n)
    return  float(sum(N))/(len(B) *len(A))
实际的计算结果

51% 算力攻击, height高度为280000~300000, 20000个block的生成时间密度计算成功的概率为

z=0 P=1.000000
z=1 P=0.25991752883
z=2 P=0.327356211643
z=3 P=0.362791063488
z=4 P=0.38572021231
z=5 P=0.402129295953
z=6 P=0.41492854999
如果觉得20000个样本不够,那么以height高度为200000~300000的, 100000个的生成时间密度计算成功的概率为

z=0 P=1.000000
z=1 P=0.258909623337
z=2 P=0.327897207064
z=3 P=0.363898341947
z=4 P=0.387023480539
z=5 P=0.403786580212
z=6 P=0.416886094841

全文见http://blockindex.info/blog/51.html


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on June 19, 2014, 05:07:26 PM
其實只要擁有>50%算力, 在統計上可證明51%攻擊是必定成功, 只是遲早問題

OP,这里有一个技术问题。
如何计算实际的51%的攻击概率呢? 全文见http://blockindex.info/blog/51.html

bitcoin创建到现在总计产生30多万个block, 我们可以用这30多万个block的时间来估算51%攻击实际的概率和需要的时间

以下以6个confirm为例,来计算实际可能的概率

正常的 blockchain, 我们称之为C

[]----->[]----->[]----->[]----->[]----->[]----->[] C blockchain
诚实节点计算的 A blockchain

攻击节点计算的 B blockchain

[]----->[]----->[]----->[]----->[]----->[]----->[] A blockchain
        \
         []----->[]----->[]----->[]----->[]----->[]----->[] B  blockchain
分别计算每连续6个block的生成时间间隔:

t1 = blk5.time - blk0.time t2 = blk6.time - blk1.time ..... tx = blkn.time - blk(n-5).time

这样得到100%算力的C的连续生成6个块的时间集合 {t1,t2,t3....tx} TC1

然后用同样的方法计算连续生成7个block的时间间隔, 得到100%算力的C的连续生成7个块的时间集合 {t1,t2,t3....} TC2

对TC1绘图,得到正常的C blockchain 连续生成6个block时间分布曲线

x为连续的6个block

y为生成连续的6个block的时间

时间分布曲线
http://blockindex.info/blog/imgs/6.png

对时间排下序得到下图,可以得到连续生成6个block需要的最少时间和最多时间

时间分布曲线
http://blockindex.info/blog/imgs/6s.png

然后对T1计算,每间隔10秒内Tx的数目, 得到{len(T1...Tx),len(Tx+1....Tx+n)....},得到密度分布曲线,如下
http://blockindex.info/blog/imgs/6d.png
时间分布曲线

上图可以看出连续生成6个block需要的时间

每隔20000个block分别计算密度分布,难度应该变化10倍左右,算力变化x倍,发现block生成时间密度曲线基本重合

http://blockindex.info/blog/imgs/xd.png
 
把A和B看成一个独立的blockchain,则 A,B生成block概率的密度分布应该和C一致,但是由于A,B的算力下降,所以把时间轴等比缩放,

A 连续生成6个块需要的时间集合{t1,t2,t3....} TA = TC1 * 100/(1-49)

B 连续生成7个块需要的时间集合{t1,t2,t3....} TB = TC2 * 100/(1-51)

时间分布曲线
http://blockindex.info/blog/imgs/51d.png
得到A,B的曲线(左边为A,右边为B),和A可能的连续生成6个block的时间集合TA,和B连续生成7个block的时间集合TB

现在问题转化为在TA中随机选一个时间,大于TB中任意元素的概率

代码如下:

AB为有序集合,从小到大依次排列

AB中任意取元素a,b, 计算a>b的概率

def AB (A,B):
    N = []
    qz = 0.0
    for i,a in enumerate(A):
       n = 0
       for b in B:
          if a<=b: break
          else: n+=1
       N.append(n)
    return  float(sum(N))/(len(B) *len(A))
实际的计算结果

51% 算力攻击, height高度为280000~300000, 20000个block的生成时间密度计算成功的概率为

z=0 P=1.000000
z=1 P=0.25991752883
z=2 P=0.327356211643
z=3 P=0.362791063488
z=4 P=0.38572021231
z=5 P=0.402129295953
z=6 P=0.41492854999
如果觉得20000个样本不够,那么以height高度为200000~300000的, 100000个的生成时间密度计算成功的概率为

z=0 P=1.000000
z=1 P=0.258909623337
z=2 P=0.327897207064
z=3 P=0.363898341947
z=4 P=0.387023480539
z=5 P=0.403786580212
z=6 P=0.416886094841

全文见http://blockindex.info/blog/51.html


Title: Re: Bitcoin 高質技術討論專區
Post by: kaneflysky on June 22, 2014, 01:38:44 PM
脑钱包的疑问:
对于脑钱包,本质上是通过一串字符,生成1个地址。那么脑钱包的生成规则,是否有统一标准?会不会出现同一串字符,在A网站生成的脑钱包和B网站生成的脑钱包不一致的情况?


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on June 22, 2014, 04:06:58 PM
脑钱包的疑问:
对于脑钱包,本质上是通过一串字符,生成1个地址。那么脑钱包的生成规则,是否有统一标准?会不会出现同一串字符,在A网站生成的脑钱包和B网站生成的脑钱包不一致的情况?

更準確的說, 所謂腦錢包, 就是用某些方法, 把一串字符, 1) 生成一個256bit的數字, 2) 再用這個數字生成一個地址.

其中第2步是標準的 (地址有壓縮和非壓縮之分, 所以一個256bit數字可以生成2個有效地址). 但第1步並沒有標準, 所以在A網站生成的可能和B網站不同, 視乎第1步用的是什麼方法而定

警告: 腦錢包其實是很危險的, 因為你無論用了什麼字串, 那是遠遠不及真正的隨機數安全, 而且也有忘記的可能. 如果最後也是要寫下來, 那不如就用真正的隨機數. 本人並不建議新手用腦錢包


Title: Re: Bitcoin 高質技術討論專區
Post by: wang_yan on June 24, 2014, 01:51:59 AM
请问为何比特币钱包地址的长度不一样?


Title: Re: Bitcoin 高質技術討論專區
Post by: lihuajkl on June 24, 2014, 02:52:37 AM
我用在线钱包blockchain, 但是有时又打不开,或者要很长时间打开,又想用本地钱包,但是下载了数据要同步好久!真是纠结!请问有什么安全快的钱包可以用吗?


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on June 24, 2014, 01:25:24 PM
请问为何比特币钱包地址的长度不一样?

Bitcoin 地址本質上是一個由0至2160-1之間的數字, 數字有長短, 所以地址也可以有長短. 最短為27個字, 最長為34個字

https://en.bitcoin.it/wiki/Address


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on June 24, 2014, 01:27:06 PM
我用在线钱包blockchain, 但是有时又打不开,或者要很长时间打开,又想用本地钱包,但是下载了数据要同步好久!真是纠结!请问有什么安全快的钱包可以用吗?

Multibit 和 Electrum 應該合符你要求

https://bitcoin.org/zh_CN/choose-your-wallet


另外, 刷子們不要在這裏浪費時間, 沒實際意義的帖都會全部刪除, 和我爭論什麼叫做有意義的也會刪除


Title: Re: Bitcoin 高質技術討論專區
Post by: wang_yan on June 25, 2014, 04:59:32 AM
能否解释一下这笔交易是怎么回事? https://blockchain.info/tx/893f85eed0b515214f52089fe3ccb46c36bbd35aae4d19f0aa4d31bb2c013bab

发款方和收款方是同一个地址



Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on June 25, 2014, 05:37:29 AM
能否解释一下这笔交易是怎么回事? https://blockchain.info/tx/893f85eed0b515214f52089fe3ccb46c36bbd35aae4d19f0aa4d31bb2c013bab

发款方和收款方是同一个地址



這是容許的,沒什麼好解釋的


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on June 25, 2014, 04:26:15 PM
能否解释一下这笔交易是怎么回事? https://blockchain.info/tx/893f85eed0b515214f52089fe3ccb46c36bbd35aae4d19f0aa4d31bb2c013bab

发款方和收款方是同一个地址



這是容許的,沒什麼好解釋的

補充一句, 在Bitcoin協定內, 根本沒有所謂地址的概念, 地址只是方便日常應用


Title: 51%攻擊
Post by: jl2012 on June 25, 2014, 06:05:30 PM
首先要了解挖礦的基礎知識:
挖礦的目的: 防止雙花 https://bitcointalk.org/index.php?topic=653151.msg7328634#msg7328634
挖礦如何防止雙花? https://bitcointalk.org/index.php?topic=653151.msg7336943#msg7336943

其實51%攻擊是一個總稱, 包括了多種不同的攻擊方式. 簡單來說, 任何人控制的挖礦算力高於其它所有人的總和, 就可以發動51%攻擊, 而且在統計學上必定成功

為簡化討論, 我們把礦工分為兩類, 誠實的和惡意的. 誠實的礦工,

  • a) 他們只求挖礦的獎金, 不求不正當得益;
  • b) 他們看到合法的未確認交易, 只要有合理的交易費, 就會嘗試加到下一區塊;
  • c) 他們永遠會嘗試確認網絡上看到的最長區塊鏈.

惡意的礦工就是不守上述一項或多項原則的礦工.

惡意礦工其實一直有存在, 例如拒絕確認交易. 但一般他們的總算力很低, 所以不成問題. 但如果惡意礦工控制的算力高於誠實礦工, 就會出嚴重問題, 即51%攻擊

擁有51%算力的惡意礦工, 可以做到什麼?

1. 他們可以禁止部份或所有其它礦工挖礦. 原則上, 挖礦是任何人都可以參與的. 但控制了51%算力的惡意礦工, 可以拒絕確認由其它礦工產生的區塊, 而且由於他的算力較強, 統計學上他最終必定會勝出. 其它礦工挖出了區塊也得不到獎金, 被迫放棄挖礦, 最終惡意礦工完全控制bitcoin. 這違反了上述的原則c, 因為惡意礦工拒絕確認別人找到的最新區塊.

2. 他們可以拒絕確認部份或所有交易. 其實礦工本來就沒有必然的責任去為別人確認交易, 人們為了吸引礦工協助確認交易, 所以會願意付出少許的交易費. 因此惡意礦工可以拒絕確認部份或所有交易, 或要求不合理的交易費 (違反原則b). 如果他們同時實行上一段的攻擊, 結果就是沒有任何交易可以被確認, bitcoin的運作完全停止

3. 他們可以把已確認的交易變為未確認的. 假設有某個交易(下稱"交易A"), 於第123號區塊到確認. 惡意礦工可以選擇忽略這個原有的123號區塊及其後的區塊, 而挖另一個不含交易A的123號區塊, 造成分叉 (這違反了上述的原則c); 如果惡意礦工擁有51%算力, 統計學上他最終必定會勝出, 成為最長鏈. 結果交易A就由已確認變為未確認的. 如果配合上述的兩種攻擊, 那交易A便永遠不能確認了.

3a. 如果惡意礦工本身就是交易A的付款方, 他還可以把有關的bitcoin發送到另一地址, 並在他自己的鏈上確認, 那交易A便變成無效了. 這就是所謂的雙重花費了.

4. 他們強制他人實行Softfork, 有限度的改變一些交易規則 (見前文 https://bitcointalk.org/index.php?topic=653151.msg7338530#msg7338530 ). 這是一個比較複雜的問題.

51%攻擊也有很多事情是做不到了, 而且也不是完全沒有對策, 待續

(C) jl2012@bitcointalk 2014. CC BY-NC-SA 3.0  http://creativecommons.org/licenses/by-nc-sa/3.0/


Title: Re: Bitcoin 高質技術討論專區
Post by: msc_de on June 25, 2014, 08:03:49 PM
我用在线钱包blockchain, 但是有时又打不开,或者要很长时间打开,又想用本地钱包,但是下载了数据要同步好久!真是纠结!请问有什么安全快的钱包可以用吗?

paper wallet or no wallet

 i use cex as wallet  :D


Title: Re: Bitcoin 高質技術討論專區
Post by: wang_yan on June 26, 2014, 02:34:55 PM
请问Transaction ID的产生原理是什么,是否与交易数量有关?


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on June 26, 2014, 03:22:49 PM
请问Transaction ID的产生原理是什么,是否与交易数量有关?

Transaction ID 就是交易內容進行兩次SHA256的結果


----------------------
順便再警告刷子們, 在這裏刷帖只會浪費你的時間, 刪帖後你不會得到任何Activity


Title: Re: Bitcoin 高質技術討論專區
Post by: i.shad0w on June 26, 2014, 03:37:29 PM
请问Transaction ID的产生原理是什么,是否与交易数量有关?
应该没多大关系吧


Title: Re: Bitcoin 高質技術討論專區
Post by: Water_kel on June 26, 2014, 04:13:26 PM
如何能在一筆交易中發送BTC到很多個地址?


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on June 26, 2014, 04:21:32 PM
如何能在一筆交易中發送BTC到很多個地址?

幾乎所有客戶端都可以輕易做到吧, 這也要問?


Title: Re: Bitcoin 高質技術討論專區
Post by: msc_de on June 26, 2014, 09:46:59 PM
如何能在一筆交易中發送BTC到很多個地址?

幾乎所有客戶端都可以輕易做到吧, 這也要問?

不是每个人都是技术能手,俗话说隔行如隔山。 德国有句谚语:  '' 没有愚蠢的问题,只有愚蠢的回答'' 。 ;)


Title: Re: Bitcoin 高質技術討論專區
Post by: innocent93 on June 27, 2014, 12:56:24 AM
一直有个疑问,当时使用qt钱包发送比特币后,由于给的手续费极低,就一直无法确认。
然后我直接恢复发送比特币前的wallet.dat文件,发送的的比特币居然又回到账户余额且可用了?


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on June 27, 2014, 02:59:57 AM
如何能在一筆交易中發送BTC到很多個地址?

幾乎所有客戶端都可以輕易做到吧, 這也要問?

不是每个人都是技术能手,俗话说隔行如隔山。 德国有句谚语:  '' 没有愚蠢的问题,只有愚蠢的回答'' 。 ;)

他的問題也不是一個好問題, 最少也要說明是用什麼客戶端吧?


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on June 27, 2014, 04:02:23 AM
一直有个疑问,当时使用qt钱包发送比特币后,由于给的手续费极低,就一直无法确认。
然后我直接恢复发送比特币前的wallet.dat文件,发送的的比特币居然又回到账户余额且可用了?

任何沒有確認的交易, 和不存在其實是差不多. 就像你簽發了支票, 一天沒拿到銀行兌現, 你的賬戶餘額都不會減少. Bitcoin qt 會即時顯示餘額減少, 只是為了避免用戶無意中雙花.

Bitcoin qt有一個memory pool, 負責記著沒有確認的交易. Memory pool 只是一個暫存系統, 只要你清空了memory pool, Bitcoin-qt就會不會知道你曾經發出過的這個交易, 而讓你再一次使用這個bitcoin. 如果你在blockchain.info看, 這可能會顯示為一個雙花的嘗試


Title: Re: Bitcoin 高質技術討論專區
Post by: wang_yan on July 08, 2014, 07:09:16 AM
请问为何有的区块会早于前一个区块出现?比如309736和309735


Title: Re: Bitcoin 高質技術討論專區
Post by: Eric2013 on July 08, 2014, 07:32:12 AM
你好,我想请问,地址有没有可能重复? 按理如果地址越来越多,那最后肯定会出现重复的,或者到时候等所有地址都产生完毕,就不允许产生新的地址了?


Title: Re: Bitcoin 高質技術討論專區
Post by: wang_yan on July 08, 2014, 07:44:34 AM
你好,我想请问,地址有没有可能重复? 按理如果地址越来越多,那最后肯定会出现重复的,或者到时候等所有地址都产生完毕,就不允许产生新的地址了?

这个问题我都可以回答,地址一共有2^160个,重复的几率相当于你每天买彩票中五百万,连中一辈子。


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on July 08, 2014, 08:00:53 AM
你好,我想请问,地址有没有可能重复? 按理如果地址越来越多,那最后肯定会出现重复的,或者到时候等所有地址都产生完毕,就不允许产生新的地址了?

这个问题我都可以回答,地址一共有2^160个,重复的几率相当于你每天买彩票中五百万,连中一辈子。

在統計學上是有可能重複的. 但不難證明, 就算到了太陽滅亡的一天, 隨機產生重複地址的概率仍然是極低


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on July 08, 2014, 08:39:39 AM
请问为何有的区块会早于前一个区块出现?比如309736和309735

請看以下例子:

  • 在一個荒島上, 如果只有一個人, 他有一只太陽能手錶, 那麼他就是荒島上唯一的時間標準, 他也沒必要和其它人對時
  • 在一次軍事行動之中, 長官要求隊員在2014年7月1日早上10時正發動攻擊, 時間以長官的手錶為準. 因此隊員需要先和長官對時
  • 在商業上, 張三和李四簽訂合約, 於2014年7月1日早上10時正前必須完成交易. 因於雙方關係平等, 他們協定以香港天文台的時間為準
  • 在這個論壇發言所顯示的時間, 都是是論壇主機時間為準, 不受發言者電腦時間的影響

在上述的例子, 都有一個中心化的時間標準. 中心化的好處是容易管理, 但缺點是如果這標準出錯, 甚至刻意發出錯誤時間, 所有依賴這標準的人都會出錯.

然而Bitcoin是去中心化的, 其中一個後果就是沒有人能成為時間標準. 當一個礦工挖出一個有效區塊, 這區塊需要數秒甚至數分鐘才能傳播到整個網絡, 所以要核實區塊的真實產生時間是不可能的, 我們只能相信礦工所聲稱的時間, 也就是區塊的timestamp; 但timestamp的時間有可能是超前於真實時間的, 因此Bitcoin協議容許後來的區塊timestamp先於之前的區塊. 但無論如何, 一個區塊的timestamp必須大於過去11個區塊timestamp的中位數. ( 詳見: https://en.bitcoin.it/wiki/Block_timestamp )

這做法確保了只要大部份礦工是誠實的, 區塊的時間大致上會和真實時間相符; 即使個別礦工不當地用了過大的timestamp, 後來的礦工都有機會修正. 如果硬性要求後來區塊的時間必須大於上一區塊, 只要一個惡意礦工就能操控了整個區塊鏈的時間.

但請注意, 須然後來區塊的timestamp可以小於之前的區塊, 但區塊出現的先後次序卻是不會改變的: 這是因為每一區塊必包括上一區塊的hash, 而這個hash只有在上一區塊找出來後才會知道. 也因為如此, 不論timestamp是什麼, 交易的先後次序是由區塊的先後次序所決定.

(C) jl2012@bitcointalk 2014. CC BY-NC-SA 3.0  http://creativecommons.org/licenses/by-nc-sa/3.0/

這裏又出現刷子了. 在這裏刷帖只會浪費你的時間, 刪帖後你不會得到任何Activity


Title: Re: Bitcoin 高質技術討論專區
Post by: wang_yan on July 16, 2014, 02:23:11 AM
请问您对storj的Proof of storage是否有所了解,如果有,能否简要介绍一下?


Title: Re: Bitcoin 高質技術討論專區
Post by: xiujie1990 on July 16, 2014, 02:42:31 AM
btc能硬分叉吗?能不能把被盗的币全部孤立


Title: Re: Bitcoin 高質技術討論專區
Post by: zcxvbs on July 16, 2014, 02:52:23 AM
 :)问一个新手的问题
如果一些比特币完全冷储藏在本地一个硬盘 如果某天这个硬盘坏了,这些比特币是否永久丢失?


Title: Re: Bitcoin 高質技術討論專區
Post by: wang_yan on July 16, 2014, 03:16:49 AM
:)问一个新手的问题
如果一些比特币完全冷储藏在本地一个硬盘 如果某天这个硬盘坏了,这些比特币是否永久丢失?

比特币是存储在blockchain上的,永远也不会丢失。

你想问的应该是你是否可以使用这些比特币,答案是,如果你没有保存私钥的话,无法使用。


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on July 16, 2014, 03:55:52 AM
btc能硬分叉吗?能不能把被盗的币全部孤立
肯定是可以的,但是现在比特币系统这么庞大,硬分叉成本应该很高。

在定義上, 所有山寨幣都是bitcoin的硬分叉

"能不能把被盗的币全部孤立"? 當然可以, 只要沒有人接受這些"被盗"的幣就可以. 問題是誰來決定什麼是盗, 什麼不是盗?


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on July 17, 2014, 09:41:46 AM
请问您对storj的Proof of storage是否有所了解,如果有,能否简要介绍一下?

看過他們的whitepaper (http://storj.io/paper/storj.pdf), 最重要的創新是"Proof of Resource", 但在whitepaper我只看到概念, 沒看到有實際內容. 至於Storjcoin, 不過是又一種山寨幣, 主要是紀錄檔案位置, Namecoin都可以做到.

我初步的結論是, 如果沒有去中心化的"Proof of Resource"機制, 這東西只有少許創新.

我看不出為何這東西 (在這階段) 價值9800BTC, 當然也有可能會像Dogecoin般毫無創新卻被炒作. 投資這種東西就像賭博, 請注意風險.


Title: Re: Bitcoin 高質技術討論專區
Post by: bitsaint on July 17, 2014, 09:49:43 AM
支持技术贴,能不能开个专区,类似跳骚市场这种。这种一个个帖子看的好乱


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on July 17, 2014, 09:51:14 AM
:)问一个新手的问题
如果一些比特币完全冷储藏在本地一个硬盘 如果某天这个硬盘坏了,这些比特币是否永久丢失?

比特币是存储在blockchain上的,永远也不会丢失。

你想问的应该是你是否可以使用这些比特币,答案是,如果你没有保存私钥的话,无法使用。

Bitcoin是存在於blockchain上, 並不存在你的硬盤. 存在硬盤上的是動用Bitcoin所需的私鑰

Bitcoin的重要原則:

  • 如果你是私鑰的唯一擁有人, 那些Bitcoin就是你的
  • 如果你不擁有私鑰, 你就不擁有Bitcoin.

所以如果你把Bitcoin存放在交易平台, 你就不擁有Bitcoin, 你只擁有平台給你的欠單.


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on July 17, 2014, 09:53:45 AM
支持技术贴,能不能开个专区,类似跳骚市场这种。这种一个个帖子看的好乱

我暫時沒興趣開設其它專區. 但你可以自設其它專區, 請看: https://bitcointalk.org/index.php?topic=689926.0


Title: Re: Bitcoin 高質技術討論專區
Post by: wang_yan on July 17, 2014, 06:12:05 PM
请问您对storj的Proof of storage是否有所了解,如果有,能否简要介绍一下?

看過他們的whitepaper (http://storj.io/paper/storj.pdf), 最重要的創新是"Proof of Resource", 但在whitepaper我只看到概念, 沒看到有實際內容. 至於Storjcoin, 不過是又一種山寨幣, 主要是紀錄檔案位置, Namecoin都可以做到.

我初步的結論是, 如果沒有去中心化的"Proof of Resource"機制, 這東西只有少許創新.

我看不出為何這東西 (在這階段) 價值9800BTC, 當然也有可能會像Dogecoin般毫無創新卻被炒作. 投資這種東西就像賭博, 請注意風險.

它给自己估值9800BTC的原因大概是参照Dropbox吧,因为它相对Dropbox更为高效,而Dropbox有着十亿美元的估值。


Title: 暴力破解Bitcoin地址
Post by: jl2012 on July 18, 2014, 07:35:39 AM
有人嘗試計算隨機碰撞Bitcoin地址的概率, 可惜其最重要的計算都是錯誤的
http://8btc.com/thread-6089-1-1.html
https://bitcointalk.org/index.php?topic=698601.0

計算Bitcoin地址, 需要多種運算, 首先是一次ECDSA, 然後是一次SHA256, 最後是一次RIPEMD160. 論計算量, SHA256和RIPEMD160差不多, 但ECDSA卻遠超這兩者. (檢查碼的運算並非必須, 所以不用考慮.)

為方便估計, 我們假設計算一個私鑰需要3倍SHA256的計算量 (這是一個極保守的假設)

此刻的挖礦總算力約為150,000,000,000,000,000 hash/s, 即1.5*10^17 hash/s. 由於挖礦需要計算兩次SHA256, 也就是每秒運算3*10^17次SHA256. 由於以上假設計算一個私鑰需要3倍SHA256的計算量, 所以以現在挖礦總算力可以每秒運算10^17個私鑰

假設我們擁有現有總算力的一百萬倍, 那代表每秒可以運算10^23個私鑰

假設該系統運行10^10秒, 即317年, 那一共可以運算10^33個私鑰, 即2^110. 相對於總數2^256個私鑰, 2^110仍然是小得可以忽略, 所以可以省去有關修正

現假設我們的目標是FBI擁有144,000BTC的地址: 1FfmbHfnpaZjKFvyi1okTjJJusN455paPH. 在以上條件下, 317年成功的概率是:

1-((1-2^-160)^(10^33))
http://www.wolframalpha.com/share/img?i=d41d8cd98f00b204e9800998ecf8427e9i7t2ka8ks&f=HBQTQYZYGY4TSM3EMI3WENBTHAYDCNBXGQ4DGYRVMM3TAMZSMQ2Aaaaa

即6.842*10^-16

在香港, 中六合彩頭獎的概率是1.0737*10^-7; 也就是在317年內成功的機會, 比連中指定兩次六合彩更困難

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

現在世上一共有71億人, 即7.1*10^9. 假設每人擁有1,400個有結餘的地址, 則一共有約10^13個地址, 即2^43

在以上條件下, 317年成功的概率是:

1-((1-2^-117)^(10^33))
http://www.wolframalpha.com/share/img?i=d41d8cd98f00b204e9800998ecf8427esirb25fffs&f=HBQTQYZYGY4TMM3EMI3WENJVGQYDCNBXGQ4DIYJSHEZDQMTGGVSQaaaa

即0.006.

雖然0.006聽起來很大, 但請留意以上都要基於非常保守的假設, 而且需要連續工作317年, 才有千分之六的可能性成功. 就算成功了, 還有很大機會是找到0.01BTC以下的地址, 投入的資源將遠遠大於可能的得益.

因此只要ECDSA, SHA256, 或RIPEMD160不出現漏洞, 要暴力破解一個隨機產生的地址是絕不可能做到的

(C) jl2012@bitcointalk 2014. CC BY-NC-SA 3.0  http://creativecommons.org/licenses/by-nc-sa/3.0/




Title: Re: 暴力破解Bitcoin地址
Post by: xfli on July 18, 2014, 08:31:07 AM
有人嘗試計算隨機碰撞Bitcoin地址的概率, 可惜其最重要的計算都是錯誤的
http://8btc.com/thread-6089-1-1.html
https://bitcointalk.org/index.php?topic=698601.0

計算Bitcoin地址, 需要多種運算, 首先是一次ECDSA, 然後是一次SHA256, 最後是一次RIPEMD160. 論計算量, SHA256和RIPEMD160差不多, 但ECDSA卻遠超這兩者. (檢查碼的運算並非必須, 所以不用考慮.)

為方便估計, 我們假設計算一個私鑰需要3倍SHA256的計算量 (這是一個極保守的假設)

此刻的挖礦總算力約為150,000,000,000,000,000 hash/s, 即1.5*10^17 hash/s. 由於挖礦需要計算兩次SHA256, 也就是每秒運算3*10^17次SHA256. 由於以上假設計算一個私鑰需要3倍SHA256的計算量, 所以以現在挖礦總算力可以每秒運算10^17個私鑰

假設我們擁有現有總算力的一百萬倍, 那代表每秒可以運算10^23個私鑰

假設該系統運行10^10秒, 即317年, 那一共可以運算10^33個私鑰, 即2^110. 相對於總數2^256個私鑰, 2^110仍然是小得可以忽略, 所以可以省去有關修正

現假設我們的目標是FBI擁有144,000BTC的地址: 1FfmbHfnpaZjKFvyi1okTjJJusN455paPH. 在以上條件下, 317年成功的概率是:

1-((1-2^-160)^(10^33))
http://www.wolframalpha.com/share/img?i=d41d8cd98f00b204e9800998ecf8427e9i7t2ka8ks&f=HBQTQYZYGY4TSM3EMI3WENBTHAYDCNBXGQ4DGYRVMM3TAMZSMQ2Aaaaa

即6.842*10^-16

在香港, 中六合彩頭獎的概率是1.0737*10^-7; 也就是在317年內成功的機會, 比連中指定兩次六合彩更困難

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

現在世上一共有71億人, 即7.1*10^9. 假設每人擁有1,400個有結餘的地址, 則一共有約10^13個地址, 即2^43

在以上條件下, 317年成功的概率是:

1-((1-2^-117)^(10^33))
http://www.wolframalpha.com/share/img?i=d41d8cd98f00b204e9800998ecf8427esirb25fffs&f=HBQTQYZYGY4TMM3EMI3WENJVGQYDCNBXGQ4DIYJSHEZDQMTGGVSQaaaa

即0.006.

雖然0.006聽起來很大, 但請留意以上都要基於非常保守的假設, 而且需要連續工作317年, 才有千分之六的可能性成功. 就算成功了, 還有很大機會是找到0.01BTC以下的地址, 投入的資源將遠遠大於可能的得益.

因此只要ECDSA, SHA256, 或RIPEMD160不出現漏洞, 要暴力破解一個隨機產生的地址是絕不可能做到的

(C) jl2012@bitcointalk 2014. CC BY-NC-SA 3.0  http://creativecommons.org/licenses/by-nc-sa/3.0/




首先声明,比特币目前来看安全性不容质疑,帖子也证明lz的数学是及格的。

“因此只要ECDSA, SHA256, 或RIPEMD160不出現漏洞, 要暴力破解一個隨機產生的地址是絕不可能做到的”,既然你很严谨,就不能把“极难做到”说成是“絕不可能做到”。

你还有一个最大的漏洞是没有考虑算力增长的因素。

看似你的假设已经把算力按照目前的100万倍计算算是很极端了,实际按照目前算力增长的幅度大约是每11天25%(挖矿收入计算器上提示的),大约682天之后算力就会增长到目前的100万倍。
1.25^x=1000000, x=62, 62*11天=682天。

10^10秒=115740天=9612个难度增长周期(11天)。
这样算力到那时就会是:1.25^9612=3.155e931。

你再算算317年后概率会有多大?

不考虑摩尔定律是不是还能持续正确下去,当然也许量子计算机会把计算能力作数量级的提升,也不考虑挖矿电力供应等因素,因为本来都是假设。




Title: Re: 暴力破解Bitcoin地址
Post by: jl2012 on July 18, 2014, 08:47:56 AM


首先声明,比特币目前来看安全性不容质疑。

“因此只要ECDSA, SHA256, 或RIPEMD160不出現漏洞, 要暴力破解一個隨機產生的地址是絕不可能做到的”,既然你很严谨,就不能把“极难做到”说成是“絕不可能做到”。

看似你的假设已经把算力按照目前的100万倍计算算是很极端了,实际按照目前算力增长的幅度大约是每11天25%(挖矿收入计算器上提示的),大约682天之后算力就会增长到目前的100万倍。
1.25^x=1000000, x=62, 62*11天=682天。

10^10秒=115740天=9612个难度增长周期(11天)。
这样算力到那时就会是:1.25^9612=3.155e931。

你再算算317年后概率会有多大?




你肯定是被騙了, 根本沒增長那麼快: http://bitcoin.sipa.be/speed-ever.png

無論如何, 增長還是不少. 但現在能夠有這增長, 只是因為基數太低. 只要ASIC到了20nm以下, 就不可能如此暴漲.

如果按照摩爾定律, 每1.5年增加一倍, 也需要20年才能提升100萬倍. 但這也說明攻擊者必須不停升級硬體, 才有少許成功的希望

還請留意, ECDSA的計算量最少是SHA256的10倍以上 (我手上沒有確實數字), 我現在假設是相同.


Title: Re: Bitcoin 高質技術討論專區
Post by: xfli on July 18, 2014, 09:05:23 AM
我没被骗,短期内增长速度确实是接近25%每11天的,你注意这个图是坐标是对数的(修正一下:2013.5.13-2014.7.13间平均11.6天难度平均增长22%,近期难度增幅变小,大约平均每12天难度增幅16%左右)。
我也承认算力不会以这个速度持续增长,所以也说是假设。
摩尔定律主要是考虑单芯片的能力增长,实际如果有应用需求,产量是可以倍增的,并不是算力也一定要20年才能增长100万倍。
但你没考虑算力增长,而且没作说明是没错吧。
从你写的帖子看,我毫不怀疑你的能力和对比特币的热情。
但曲高和寡,这不是推广比特币的好方法。
比特币需要每个有热情的人参与。

不和你斗嘴了。
学习了一下你的技术贴,我还是有收获的!


Title: Re: Bitcoin 高質技術討論專區
Post by: Eric2013 on July 19, 2014, 03:07:18 AM
楼主,您好,请问每个比特币交易的交易号,是不是绝对随机的? 有没有可能计算出来?


Title: Re: 暴力破解Bitcoin地址
Post by: chehw on July 19, 2014, 07:22:08 AM
有人嘗試計算隨機碰撞Bitcoin地址的概率, 可惜其最重要的計算都是錯誤的
http://8btc.com/thread-6089-1-1.html
https://bitcointalk.org/index.php?topic=698601.0

計算Bitcoin地址, 需要多種運算, 首先是一次ECDSA, 然後是一次SHA256, 最後是一次RIPEMD160. 論計算量, SHA256和RIPEMD160差不多, 但ECDSA卻遠超這兩者. (檢查碼的運算並非必須, 所以不用考慮.)

為方便估計, 我們假設計算一個私鑰需要3倍SHA256的計算量 (這是一個極保守的假設)


计算bitcoin地址的描述不算太准确。

計算Bitcoin地址, 需要多種運算, 首先是生成一个256位的随机数,然后是一次ECC运算计算出公钥, 然后是一次HASH160(一次SHA256+RIPEMD160), 然后是一次HASH256(两次SHA256),最后还有一次Base58编码。

我测试了一下,(CPU 2.6GHz,单线程运算):
按挖矿模式(hash256并比对bits值),计算1000万个HASH256(block_header): 12秒; 计算出10万个地址及其私钥:94秒。

结论:計算一個私鑰对应的地址需要约800倍挖矿的計算量。


Title: Re: 暴力破解Bitcoin地址
Post by: jl2012 on July 19, 2014, 08:20:09 AM
有人嘗試計算隨機碰撞Bitcoin地址的概率, 可惜其最重要的計算都是錯誤的
http://8btc.com/thread-6089-1-1.html
https://bitcointalk.org/index.php?topic=698601.0

計算Bitcoin地址, 需要多種運算, 首先是一次ECDSA, 然後是一次SHA256, 最後是一次RIPEMD160. 論計算量, SHA256和RIPEMD160差不多, 但ECDSA卻遠超這兩者. (檢查碼的運算並非必須, 所以不用考慮.)

為方便估計, 我們假設計算一個私鑰需要3倍SHA256的計算量 (這是一個極保守的假設)


计算bitcoin地址的描述不算太准确。

計算Bitcoin地址, 需要多種運算, 首先是生成一个256位的随机数,然后是一次ECC运算计算出公钥, 然后是一次HASH160(一次SHA256+RIPEMD160), 然后是一次HASH256(两次SHA256),最后还有一次Base58编码。

我测试了一下,(CPU 2.6GHz,单线程运算):
按挖矿模式(hash256并比对bits值),计算1000万个HASH256(block_header): 12秒; 计算出10万个地址及其私钥:94秒。

结论:計算一個私鑰对应的地址需要约800倍挖矿的計算量。

地址的校驗碼只是給人看的,可有可無,所以那個HASH256不用考慮


Title: Re: Bitcoin 高質技術討論專區
Post by: xfli on July 19, 2014, 08:24:39 AM
按照公钥生成算法,在计算完 RIPEMD-160 哈希值后,有效位已经从256位减少到了160位,实际相当于有损压缩。
假如真有算力能支撑的话,只要顺序取前2^160个私钥进行运算,碰撞出公钥的概率也许会接近100%。
为什么一定要随机生成一个256位的私钥去碰撞呢?碰撞成功的概率会变大吗?
不知道我这么理解对不对?

当然实用地址生成不能这么做,这样别人就太容易循序找出私钥了。


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on July 19, 2014, 08:31:30 AM
按照公钥生成算法,在计算完 RIPEMD-160 哈希值后,有效位已经从256位减少到了160位,实际相当于有损压缩。
假如真有算力能支撑的话,只要顺序取前2^160个私钥进行运算,碰撞出公钥的概率也许会接近100%。
为什么一定要随机生成一个256位的私钥去碰撞呢?碰撞成功的概率会变大吗?
不知道我这么理解对不对?

当然实用地址生成不能这么做,这样别人就太容易循序找出私钥了。

不對,因為私鈅和地址不是一一對應,一個地址可能有多個私鈅,而且是隨機的


Title: Re: Bitcoin 高質技術討論專區
Post by: chehw on July 19, 2014, 10:55:30 AM
按照公钥生成算法,在计算完 RIPEMD-160 哈希值后,有效位已经从256位减少到了160位,实际相当于有损压缩。
假如真有算力能支撑的话,只要顺序取前2^160个私钥进行运算,碰撞出公钥的概率也许会接近100%。
为什么一定要随机生成一个256位的私钥去碰撞呢?碰撞成功的概率会变大吗?
不知道我这么理解对不对?

当然实用地址生成不能这么做,这样别人就太容易循序找出私钥了。

按顺序取是一种最不可行的方法。

RIPEMD160后,碰撞成功几率肯定大了很多。但即使这样,如果按顺序遍历,即使每秒可以運算10^23個私鑰(現有全网總算力的一百萬倍给你一个人用),遍历完也需要大约4.6 × 10^17(46亿亿)年。平均碰撞成功到某一地址大约需23亿亿年。


Title: Re: Bitcoin 高質技術討論專區
Post by: xfli on July 19, 2014, 11:58:05 AM
私钥对公钥不是顺序一一对应,那么就是说算完前2^160个私钥并不能找出所有公钥,因为里面可能会有很多组私钥只对应某些公钥,这我现在理解了。
但是顺序取用私钥和随机生成私钥去碰撞公钥有什么不同吗?概率还是一样的。
为什么这么做是一种最不可取的方法呢?能证明一下吗?
或者说你算一下用随机生成私钥的方法碰撞成功一个地址和循序遍历私钥的方法各会需要多少时间。

而且顺序计算不会发生随机生成私钥有可能把某些私钥重复生成计算的问题,虽说概率很小,但理论上确实会发生。而且随机生成私钥本身也需要代价,虽说代价很小。


Title: Re: Bitcoin 高質技術討論專區
Post by: chehw on July 19, 2014, 01:38:39 PM
私钥对公钥不是顺序一一对应,那么就是说算完前2^160个私钥并不能找出所有公钥,因为里面可能会有很多组私钥只对应某些公钥,这我现在理解了。
但是顺序取用私钥和随机生成私钥去碰撞公钥有什么不同吗?概率还是一样的。
为什么这么做是一种最不可取的方法呢?能证明一下吗?
或者说你算一下用随机生成私钥的方法碰撞成功一个地址和循序遍历私钥的方法各会需要多少时间。

而且顺序计算不会发生随机生成私钥有可能把某些私钥重复生成计算的问题,虽说概率很小,但理论上确实会发生。而且随机生成私钥本身也需要代价,虽说代价很小。


顺序遍历是在没有任何其他更好的方法的情况下才采取的方法,只要有其他方法可以解决,就一定不会选择遍历,所以说这是最不可取的方法。

如果没有任何可行的方法,小样本空间下当然选择顺序取样,但如果样本空间大到一定程度,则随机取样更适合。
这是因为你不能假设你可以持续不断地连续取样,除非你能活的足够长(需要远远超过太阳系预计所能存活的时间)。

碰撞目标出现在2^159之后的概率至少有50%,如果顺序取样,那么,至少有50%可能性你算到银河系毁灭也100%碰撞不到。
随机取样就是为了避免出现这种情况而采取的手段。有得必有失,因为无法预估最终结果,所以就要承担一定的(可接受的范围)性能损失。


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on July 19, 2014, 01:48:15 PM
私钥对公钥不是顺序一一对应,那么就是说算完前2^160个私钥并不能找出所有公钥,因为里面可能会有很多组私钥只对应某些公钥,这我现在理解了。
但是顺序取用私钥和随机生成私钥去碰撞公钥有什么不同吗?概率还是一样的。
为什么这么做是一种最不可取的方法呢?能证明一下吗?
或者说你算一下用随机生成私钥的方法碰撞成功一个地址和循序遍历私钥的方法各会需要多少时间。

而且顺序计算不会发生随机生成私钥有可能把某些私钥重复生成计算的问题,虽说概率很小,但理论上确实会发生。而且随机生成私钥本身也需要代价,虽说代价很小。


顺序遍历是在没有任何其他更好的方法的情况下才采取的方法,只要有其他方法可以解决,就一定不会选择遍历,所以说这是最不可取的方法。

如果没有任何可行的方法,小样本空间下当然选择顺序取样,但如果样本空间大到一定程度,则随机取样更适合。
这是因为你不能假设你可以持续不断地连续取样,除非你能活的足够长(需要远远超过太阳系预计所能存活的时间)。

碰撞目标出现在2^159之后的概率至少有50%,如果顺序取样,那么,至少有50%可能性你算到银河系毁灭也100%碰撞不到。
随机取样就是为了避免出现这种情况而采取的手段。有得必有失,因为无法预估最终结果,所以就要承担一定的(可接受的范围)性能损失。


非常典型的概率謬誤, 就像賭徒以為彩票結果 "1,2,3,4,5,6" 比 "1,14,18,31,34,41" 更難出現, 其實兩者出現的概率完全一樣

無論是順序還是隨機嘗試, 成功的概率都是完全一樣.


Title: Re: Bitcoin 高質技術討論專區
Post by: chehw on July 19, 2014, 02:11:01 PM
私钥对公钥不是顺序一一对应,那么就是说算完前2^160个私钥并不能找出所有公钥,因为里面可能会有很多组私钥只对应某些公钥,这我现在理解了。
但是顺序取用私钥和随机生成私钥去碰撞公钥有什么不同吗?概率还是一样的。
为什么这么做是一种最不可取的方法呢?能证明一下吗?
或者说你算一下用随机生成私钥的方法碰撞成功一个地址和循序遍历私钥的方法各会需要多少时间。

而且顺序计算不会发生随机生成私钥有可能把某些私钥重复生成计算的问题,虽说概率很小,但理论上确实会发生。而且随机生成私钥本身也需要代价,虽说代价很小。


顺序遍历是在没有任何其他更好的方法的情况下才采取的方法,只要有其他方法可以解决,就一定不会选择遍历,所以说这是最不可取的方法。

如果没有任何可行的方法,小样本空间下当然选择顺序取样,但如果样本空间大到一定程度,则随机取样更适合。
这是因为你不能假设你可以持续不断地连续取样,除非你能活的足够长(需要远远超过太阳系预计所能存活的时间)。

碰撞目标出现在2^159之后的概率至少有50%,如果顺序取样,那么,至少有50%可能性你算到银河系毁灭也100%碰撞不到。
随机取样就是为了避免出现这种情况而采取的手段。有得必有失,因为无法预估最终结果,所以就要承担一定的(可接受的范围)性能损失。


非常典型的概率謬誤, 就像賭徒以為彩票結果 "1,2,3,4,5,6" 比 "1,14,18,31,34,41" 更難出現, 其實兩者出現的概率完全一樣

無論是順序還是隨機嘗試, 成功的概率都是完全一樣.

单次取样的概率确实是一样的,但如果连续不断地取值,则随机取样有可能取出重复值(好的算法也只能是出现重复值的概率极低而已),因而效率略低于顺序取样。
采取随机取样是因为在有生之年以最大速度所能取到的样本数占总样本的比例仍几乎为0,随机取样能覆盖的的范围会更广一些,所以仍有概率(虽然趋近于0)能取到。而顺序取样一旦选错了初始点,则100%碰撞不到。


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on July 19, 2014, 03:01:13 PM
私钥对公钥不是顺序一一对应,那么就是说算完前2^160个私钥并不能找出所有公钥,因为里面可能会有很多组私钥只对应某些公钥,这我现在理解了。
但是顺序取用私钥和随机生成私钥去碰撞公钥有什么不同吗?概率还是一样的。
为什么这么做是一种最不可取的方法呢?能证明一下吗?
或者说你算一下用随机生成私钥的方法碰撞成功一个地址和循序遍历私钥的方法各会需要多少时间。

而且顺序计算不会发生随机生成私钥有可能把某些私钥重复生成计算的问题,虽说概率很小,但理论上确实会发生。而且随机生成私钥本身也需要代价,虽说代价很小。


顺序遍历是在没有任何其他更好的方法的情况下才采取的方法,只要有其他方法可以解决,就一定不会选择遍历,所以说这是最不可取的方法。

如果没有任何可行的方法,小样本空间下当然选择顺序取样,但如果样本空间大到一定程度,则随机取样更适合。
这是因为你不能假设你可以持续不断地连续取样,除非你能活的足够长(需要远远超过太阳系预计所能存活的时间)。

碰撞目标出现在2^159之后的概率至少有50%,如果顺序取样,那么,至少有50%可能性你算到银河系毁灭也100%碰撞不到。
随机取样就是为了避免出现这种情况而采取的手段。有得必有失,因为无法预估最终结果,所以就要承担一定的(可接受的范围)性能损失。


非常典型的概率謬誤, 就像賭徒以為彩票結果 "1,2,3,4,5,6" 比 "1,14,18,31,34,41" 更難出現, 其實兩者出現的概率完全一樣

無論是順序還是隨機嘗試, 成功的概率都是完全一樣.

单次取样的概率确实是一样的,但如果连续不断地取值,则随机取样有可能取出重复值(好的算法也只能是出现重复值的概率极低而已),因而效率略低于顺序取样。
采取随机取样是因为在有生之年以最大速度所能取到的样本数占总样本的比例仍几乎为0,随机取样能覆盖的的范围会更广一些,所以仍有概率(虽然趋近于0)能取到。而顺序取样一旦选错了初始点,则100%碰撞不到。

我已經講了一次, 這是很初級的概率謬誤. 順序取樣, 也有可能選到極好的初始點, 很快就碰撞成功. 因此很明顯, 無論是隨機取樣還是順序取樣, 所需計算量的期望值是完全一樣.


Title: Re: 量子電腦 (量子计算机) 與 Bitcoin
Post by: jl2012 on August 06, 2014, 05:15:40 PM
最近(又)有人提出量子電腦的問題

据斯诺登透露的文件,美国国家安全局正在一个耗资$79.7M的项目中努力研制量子计算机。
加拿大公司D-Wave声称成功制造出了小型量子计算机,一旦量子计算机出现,比特币将会怎样?

简单的说:
1,挖矿用的SHA256算法是安全的。量子计算机用于挖矿,挖矿难度大幅提高。
2,比特币用的椭圆曲线签名算法(ECDSA)会被破解。通过量子计算机计算,通过公钥可以找到私钥。
一旦你的地址付过款,公钥就公开,此地址的钱就可能被盗。对于使用多地址钱包,每个地址只使用用一次的用户,钱还是安全的。
3,比特币的签名算法将要升级。

一旦量子计算机出现,现在电子商务、网银广泛使用的RSA 签名算法也会被破解,如果你去问银行,“量子计算机出现后,我的网银安全吗?”,银行会说你杞人忧天,但由于椭圆曲线签名算法的破解对比特币影响更为直接,所以比特币社区对量子计算机更为关注。

虽说量子计算机还在科研阶段,D-Wave的量子设备是否能运算真正的量子运算还受学术界质疑,一旦比特币用于存储大额财富,安全至关重要。

量子计算机出现,比特币会面临挑战,但依旧会前行。

建议:大额比特币不要重复使用地址。

本人對這題目了解有限, 不過據本人的理解, 以上所述基本上正確

Bitcoin主要涉及兩大類的密碼技術: 雜湊(Hash), 主要是SHA256及RIPEMD160; 以及ECDSA公鑰系統. 要破解挖礦, 就只需要破解SHA256; 要破解地址, 則要同時破解RIPEMD160, SHA256, 及ECDSA

假如量子電腦(QC)真的成功, 利用Grover's algorithm, 就可以大大縮短碰撞雜湊的時間, 例如160 bit的RIPEMD160, 就會被弱化為只有80 bit的安全性. 然而即使是80 bit的安全性, 仍然是十分安全, 令我們有足夠時間過渡至更強的雜湊算法. 只要把長度倍增至320 bit, 就可擁有和現在的160 bit相同的安全性, 代價只是地址會比現在長一倍. 因此基本上, QC對挖礦的影響基本可以不考慮

QC帶來真正的問題, 是Shor's algorithm容許以極快速度破解ECDSA; 用傳統電腦上萬年也不能從公鑰算出私鑰, 用QC可能以小時甚至分鐘就可以完成 (確實時間我不肯定, 反正是快得不能接受). 雖然如此, 因為Bitcoin地址並非公鑰本身, 而是公鑰的雜湊, 因此只有地址, 就算用QC也是不可能算出私鑰, 所以只作收款, 從未付款的地址仍然是安全的. 曾經付款的地址, 由於付款過程必須公開公鑰, 便會變得不安全了.

如果你真的擔心QC的問題, 從今天開始就不要重覆使用地址. Bitcoin的設計, 本來就不是要重覆使用地址的.

如果QC真的可以以極高速 (秒級) 破解ECDSA, 則單次使用地址也會有問題, 因為在沒確認前就可以被偷了. 這有兩個方法: 中心化的, 由"可信"的礦工處理交易  (http://bitcoinmagazine.com/6021/bitcoin-is-not-quantum-safe-and-how-we-can-fix/), 及本人提出的去中心化的, 稱為Guy Fawkes簽名的方法 ( https://bitcointalk.org/index.php?topic=320634.0 ).

在ECDSA被破解後, 我們可改用一些QC也不能快速破解的公鑰系統, 例如基於雜湊技術的Lamport簽名. 我有時間會另文再述

(C) jl2012@bitcointalk 2014. CC BY-NC-SA 3.0  http://creativecommons.org/licenses/by-nc-sa/3.0/



https://bitcointalk.org/index.php?topic=320634.0


Title: Re: Bitcoin 高質技術討論專區
Post by: innocent93 on August 06, 2014, 06:03:03 PM
精彩的解答,现在我想问:面对量子计算机,比特币系统能否通过升级协议来修复这个先天缺陷来避免危机?或者说这种手术如果进行就足以致命几乎等于重新建造了一种新币? 这个问题社区迟早要面对的,毕竟量子计算机已经可以期望了。


Title: Re: Bitcoin 高質技術討論專區
Post by: jsgayo on August 18, 2014, 02:01:56 AM

規則:

7. 有關山寨幣的技術問題, 如非與Bitcoin直接有關, 可被刪除


社区最近的热门话题:比特儿NXT币被盗事件。
能否请楼主详细解释一下“rollback”(回滚)是怎么回事?比特币历史上发生过的回滚是什么情况?


Title: Re: Bitcoin 高質技術討論專區
Post by: btcgov on August 18, 2014, 03:38:35 AM
Quote
社区最近的热门话题:比特儿NXT币被盗事件。
能否请楼主详细解释一下“rollback”(回滚)是怎么回事?比特币历史上发生过的回滚是什么情况?

rollback跟51%的攻击有没有关联呢?我觉得是类似的。Rollback是主动安排的,通知社区并重复同意的,当然也会造成影响;51%攻击是攻击行为,是不可见人的,会让整个社区受到损害。

所以近期BTC下跌,跟大家对此的担心有很大关系。


Title: 交易回滾
Post by: jl2012 on August 18, 2014, 03:42:12 AM

規則:

7. 有關山寨幣的技術問題, 如非與Bitcoin直接有關, 可被刪除


社区最近的热门话题:比特儿NXT币被盗事件。
能否请楼主详细解释一下“rollback”(回滚)是怎么回事?比特币历史上发生过的回滚是什么情况?

Bitcoin, 及所有由Bitcoin啓發的山寨幣, 本質都是一個單向性的產權記賬系統. 例如:

1. A擁有1個幣, 他轉移給B
2. 之後B又把這1個幣轉移給C
3. C把這1個幣分割為三份, 其中0.3個幣給D, 0.4個幣給E, 0.3個幣給自己
4. E把他的0.4個幣分割為兩份, 其中0.1個給D, 0.3個給自己
5. D現在共有0.3+0.1個幣, 他重新融合再分割, 0.05個給A, 0.35個給自己

單向性的意思, 就是後來的步驟, 都必須依賴所有之前的步驟. 如果例子中的第3步是無效的, 那麼就連第4, 5步都會有如從未發生一樣; 也就是說, 如果第3步是無效, 結果就是C擁有從第2步得來的1個幣, ADE一無所有.

一般來說, 有效的交易, 必須有正確的數碼簽署, 而且該交易輸入的幣在區塊鏈上有紀錄而且還沒有被花. 如果例子中的第3步的數碼簽署錯誤, 那麼E就不會在區塊鏈紀錄上擁有0.4個幣, 所以第4步也是無效, 也令第5步無效. 如果第2步已記在區塊鏈上, A就不再擁有任何幣, 他嘗試再花他的1個幣也不會成功.

BTER的情況, 是這樣的
a. 很多用戶通過不同地址把幣發給BTER
b. BTER把這些幣都放到同一地址NXT-LSC3-VB9T-2W3V-BH7FB
c. 黑客得到地址NXT-LSC3-VB9T-2W3V-BH7FB的密鑰, 把所有幣發到自己的地址NXT-8WJ7-8A2H-MBYN-3W9K4 (https://nxtblocks.info/#section/txid/5930851748280200080)

所有交易, 在技術上都是有效的, 當然亦已經記在區塊鏈上.

現在有些人說: "我討厭交易c, 我認為那是無效的交易". 請記著, 交易c是技術上有效的交易, 有些人討厭這個交易, 可能是為了道德原因, 也可能是為了私利 (自己有很多錢在BTER), 但一定不是技術原因.

他們既然認為交易c是無效的, 那麼他們也必定認為記載著交易c的區塊209886號 (https://nxtblocks.info/#section/blockId/11441067699374044604)是無效的, 因為有效的區塊內所有交易都必須有效. 如果他們認為209886號區塊是無效的, 那麼也必定認為這區塊以後的所有區塊是無效.

現在NXT開發者就提供了一個新版本, 宣佈交易c是無效的, 讓用戶自行決定是否跟隨. 跟隨這版本的, 就會認為區塊鏈在209885號就斷了, 那麼礦工就會在這之上另挖一個不含交易c的209886號區塊, 黑客在這個新的區塊鏈上是一無所有的. 如果支持新版本的礦工多於舊版本, 他們最終就會超越舊版本, 成為最長的區塊鏈, 那麼就連舊版本都會認為黑客是一無所有, 因為這個新區塊鏈在舊版本眼中都是有效的.

如果支持新版本的礦工少於舊版本, 舊版本就會繼續堅持承認黑客擁有NXT, 新版本就會堅持認為黑客不擁有NXT. 區塊鏈就會出現硬分叉, 會有兩種NXT同時流通. 視乎你用的是哪一版本, 就會看到不同的產權紀錄. 這時候唯一方法就是新版本用戶要投降, 放棄自己的分叉, 接受交易c是有效的.

(註: NXT不叫自己做挖礦, 不過這不是重點)

回滾的意思, 就是把技術上有效而且已確認的交易, 人為地宣佈無效, 在特定位置另挖一個區塊鏈以趕上原有的區塊鏈. 這情況在Bitcoin發生過兩次, 兩次都是技術理由; 特別是是第一次, 如果不回滾, Bitcoin已經完蛋了. 也多次有人提出過技術以外的理由要回滾, 當然沒有實行, 因為這會嚴重損害Bitcoin的交易不可逆轉性. 待續.

(C) jl2012@bitcointalk 2014. CC BY-NC-SA 3.0  http://creativecommons.org/licenses/by-nc-sa/3.0/


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on August 18, 2014, 03:43:38 AM
Quote
社区最近的热门话题:比特儿NXT币被盗事件。
能否请楼主详细解释一下“rollback”(回滚)是怎么回事?比特币历史上发生过的回滚是什么情况?

rollback跟51%的攻击有没有关联呢?我觉得是类似的。Rollback是主动安排的,通知社区并重复同意的,当然也会造成影响;51%攻击是攻击行为,是不可见人的,会让整个社区受到损害。

所以近期BTC下跌,跟大家对此的担心有很大关系。

51%攻擊有很多種, 其中一種和rollback在技術上是相同的行為


Title: Re: 交易回滾
Post by: jl2012 on August 18, 2014, 12:20:28 PM

規則:

7. 有關山寨幣的技術問題, 如非與Bitcoin直接有關, 可被刪除


社区最近的热门话题:比特儿NXT币被盗事件。
能否请楼主详细解释一下“rollback”(回滚)是怎么回事?比特币历史上发生过的回滚是什么情况?

Bitcoin, 及所有由Bitcoin啓發的山寨幣, 本質都是一個單向性的產權記賬系統. 例如:

1. A擁有1個幣, 他轉移給B
2. 之後B又把這1個幣轉移給C
3. C把這1個幣分割為三份, 其中0.3個幣給D, 0.4個幣給E, 0.3個幣給自己
4. E把他的0.4個幣分割為兩份, 其中0.1個給D, 0.3個給自己
5. D現在共有0.3+0.1個幣, 他重新融合再分割, 0.05個給A, 0.35個給自己

單向性的意思, 就是後來的步驟, 都必須依賴所有之前的步驟. 如果例子中的第3步是無效的, 那麼就連第4, 5步都會有如從未發生一樣; 也就是說, 如果第3步是無效, 結果就是C擁有從第2步得來的1個幣, ADE一無所有.

一般來說, 有效的交易, 必須有正確的數碼簽署, 而且該交易輸入的幣在區塊鏈上有紀錄而且還沒有被花. 如果例子中的第3步的數碼簽署錯誤, 那麼E就不會在區塊鏈紀錄上擁有0.4個幣, 所以第4步也是無效, 也令第5步無效. 如果第2步已記在區塊鏈上, A就不再擁有任何幣, 他嘗試再花他的1個幣也不會成功.

BTER的情況, 是這樣的
a. 很多用戶通過不同地址把幣發給BTER
b. BTER把這些幣都放到同一地址NXT-LSC3-VB9T-2W3V-BH7FB
c. 黑客得到地址NXT-LSC3-VB9T-2W3V-BH7FB的密鑰, 把所有幣發到自己的地址NXT-8WJ7-8A2H-MBYN-3W9K4 (https://nxtblocks.info/#section/txid/5930851748280200080)

所有交易, 在技術上都是有效的, 當然亦已經記在區塊鏈上.

現在有些人說: "我討厭交易c, 我認為那是無效的交易". 請記著, 交易c是技術上有效的交易, 有些人討厭這個交易, 可能是為了道德原因, 也可能是為了私利 (自己有很多錢在BTER), 但一定不是技術原因.

他們既然認為交易c是無效的, 那麼他們也必定認為記載著交易c的區塊209886號 (https://nxtblocks.info/#section/blockId/11441067699374044604)是無效的, 因為有效的區塊內所有交易都必須有效. 如果他們認為209886號區塊是無效的, 那麼也必定認為這區塊以後的所有區塊是無效.

現在NXT開發者就提供了一個新版本, 宣佈交易c是無效的, 讓用戶自行決定是否跟隨. 跟隨這版本的, 就會認為區塊鏈在209885號就斷了, 那麼礦工就會在這之上另挖一個不含交易c的209886號區塊, 黑客在這個新的區塊鏈上是一無所有的. 如果支持新版本的礦工多於舊版本, 他們最終就會超越舊版本, 成為最長的區塊鏈, 那麼就連舊版本都會認為黑客是一無所有, 因為這個新區塊鏈在舊版本眼中都是有效的.

如果支持新版本的礦工少於舊版本, 舊版本就會繼續堅持承認黑客擁有NXT, 新版本就會堅持認為黑客不擁有NXT. 區塊鏈就會出現硬分叉, 會有兩種NXT同時流通. 視乎你用的是哪一版本, 就會看到不同的產權紀錄. 這時候唯一方法就是新版本用戶要投降, 放棄自己的分叉, 接受交易c是有效的.

(註: NXT不叫自己做挖礦, 不過這不是重點)

回滾的意思, 就是把技術上有效而且已確認的交易, 人為地宣佈無效, 在特定位置另挖一個區塊鏈以趕上原有的區塊鏈. 這情況在Bitcoin發生過兩次, 兩次都是技術理由; 特別是是第一次, 如果不回滾, Bitcoin已經完蛋了. 也多次有人提出過技術以外的理由要回滾, 當然沒有實行, 因為這會嚴重損害Bitcoin的交易不可逆轉性. 待續.

(C) jl2012@bitcointalk 2014. CC BY-NC-SA 3.0  http://creativecommons.org/licenses/by-nc-sa/3.0/

Bitcoin的第一次回滾:

https://bitcointalk.org/index.php?topic=822.0

在2010年8月15日, 第74638號區塊出現了一個奇怪交易, 兩個輸出竟然都有92233720368.54277039 BTC (922億), 遠超BTC的設計總量2100萬. 原因是Bitcoin有漏洞, 當兩個輸出的總值加起來出現溢出 (Overflow), 被視為負數. 由於當時的代碼只會檢查輸出總值是否小於輸入總值, 這個"負總輸出"的交易就被視為合法, 並被接納在74638號區塊內. 當時Satoshi還在, 他要求礦工(*)先停止挖礦, 然後以原來的74637號開始以修正版本挖礦. 但由於並非所有礦工都立即更新, 要直到第74691號區塊, 新鏈才趕過舊鏈, 即是有53個區塊被浪費了, 沒及時更新的礦工一共損失50*53=2650BTC的獎勵. 沒有紀錄顯示有任何人對這2650BTC的損失作出過賠償, 但以當日Bitcoin價格只有0.064美元計算, 這只是總值170美元左右.

(*) 額外歷史知識: 第一個礦池發現的區塊, 是於2010年12月16日由Slush礦池 ( https://mining.bitcoin.cz/ ) 找到, 因此第一次回滾發生之時, 應該全部都是個人礦工.

Bitcoin的第二次回滾:

https://bitcointalk.org/index.php?topic=152030.0

2013年2月19日, bitcoind 0.8 推出. 其中一個大變動, 是以LevelDB取代Berkeley DB用以紀錄區塊鏈資料. 2013年3月11日, 運行0.8的Slush礦池找到了一個有1700多個交易的225430號區塊. 這區塊理論上是合法的, 但0.7或以前的版本所使用的Berkeley DB不能正確處理, 因此網絡出現分叉: 運行0.8的, 也就是大部份礦工, 視這個較大的225430號區塊為合法, 而且一直在其之上挖礦, 成為最長的鏈; 0.7或以前的, 視這個較大的225430號區塊為非法, 因此所有隨後的都是非法, 他們找到另一個只有797個交易的225430號區塊 ( https://blockchain.info/block/00000000000001c108384350f74090433e7fcf79a606b8e797f065b130575932 ), 並繼續挖礦. 因此兩個版本之間, 互不承認對方

當時的解決方法, 是決定回歸到0.7的區塊鏈, 放棄0.8區塊鏈. 原因是0.7的區塊鏈只要夠長, 0.8都會承認; 但無論0.8的區塊鏈有多長, 0.7或以前的版本都不會承認, 這會置舊版本用戶於很危險的情況, 因為他們看不到新版本(也就是最多人承認)的情況, 收到的Bitcoin可能已經一文不值

各大礦池立即轉向0.7的分叉, 最終225462號趕過了0.8分叉, 有32個0.8分叉的區塊被浪費了, 不算手續費涉及了800BTC的獎勵. 事件引致價格大幅波動, 由$47下跌至最低$36.65, 所以總損失約值30000多美元. 這次的損失由Gavin從Bitcoin Faucet的餘款作出賠償: https://blockchain.info/tx/c931f1aa9f0d211dca085342ec472e77b538b55980a2c7b0ff9fab9a20a9acd2

另外, 在分叉的時候, 有人成功雙花了211.9093BTC (約10000美元). 他首先發了211.9093BTC給OKPAY, 交易在0.8分叉上確認後, OKPAY把$9800打到該用戶的BTC-E賬戶. 然後該用戶發現他這個交易原來並不在0.7分叉上出現, 因此他另發一個交易, 把相同的Bitcoin發給自己, 並成功在0.7分叉上確認. 由於0.7分叉最終勝出, OKPAY便白白失去了211.9093BTC. 雖然該用戶的行為是實驗性質, 而且事後也還款給OKPAY, OKPAY還是決定不再接受Bitcoin存款了. 事件顯示任何回滾必須要非常小心的進行, 否則可以帶來很不良的後果.

(C) jl2012@bitcointalk 2014. CC BY-NC-SA 3.0  http://creativecommons.org/licenses/by-nc-sa/3.0/
 


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on August 18, 2014, 03:37:44 PM
精彩的解答,现在我想问:面对量子计算机,比特币系统能否通过升级协议来修复这个先天缺陷来避免危机?或者说这种手术如果进行就足以致命几乎等于重新建造了一种新币? 这个问题社区迟早要面对的,毕竟量子计算机已经可以期望了。

這問題太多假設性. 例如這所謂量子電腦會是由極少數人掌握的尖端軍事科技, 還是未來所有人都會有一部量子智能手機? 對Bitcoin的影響已經非常不同.


Title: Re: Bitcoin 高質技術討論專區
Post by: jyaken on August 19, 2014, 05:36:02 AM
想知道楼主对proof-of-stack的看法。有种说法是因为很多PoW的矿工不真正持币,在PoW下矿工的利益和持币人利益是错位的。


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on August 19, 2014, 10:13:04 AM
想知道楼主对proof-of-stack的看法。有种说法是因为很多PoW的矿工不真正持币,在PoW下矿工的利益和持币人利益是错位的。

無論是POS還是POW, 本質上都是當區塊鏈出現分叉, 決定哪一個是有效的方法. 總的來說, POS把這個權力給予持幣者, POW把這個權力給予運算者

通常支持POS的講法, 是節省能源, 以及持幣者應有權決定貨幣的命運. 我認為這在原則上沒有錯, 但純POS系統有嚴重缺憾. POW的算力同一時間只能為一條區塊鏈挖礦, 如果有礦工要為兩個不同的分叉挖礦, 他只能分散他有限的算力. 但POS卻不同, 只要是持幣者, 就可以同時為無數個互相矛盾的區塊鏈挖礦, 甚至可以在花幣後, 倒過來攻擊最長的區塊鏈以取回已花的幣, 例如:

1. 在123號區塊時共有100個幣, A擁有60個, B擁有40個.
2. A把60個幣轉給B(交易X); 當交易X進入124號區塊確認後, B付了若干貨物給A.
3. 由於在123號區塊的紀錄上, A仍然擁有60個幣, 他可以另尋一個不含交易X的124號區塊. 而且因為他擁有大多數的幣, 他可以更快延長對自己有利的分叉.
4. 結果B財貨兩空

如果Bitcoin一開始是一個純POS系統, Satoshi作為0號區塊的擁有人, 也就是說他當時是100% Bitcoin的擁有人, 他可以隨時把我們累積了多年的區塊鏈完全消滅.

為了防止這個問題, PPC就採用了中心化的檢查點(checkpoint), 也就是開發者會定時公佈哪個是最長的區塊鏈, 這當然是非常不理想.

NXT則用了另一策略, 就是在若干區塊出現後, 節點就會拒絕回滾. 這做法好一點, 但有機會無意中造成硬分叉.

我本人的看法, 較理想的做法是以POW為骨幹, 由POS輔助, 可以由軟分叉做到. 本人曾提議過一些方案, 都在"Development & Technical Discussion"區發表

(C) jl2012@bitcointalk 2014. CC BY-NC-SA 3.0  http://creativecommons.org/licenses/by-nc-sa/3.0/


Title: Re: Bitcoin 高質技術討論專區
Post by: jyaken on August 21, 2014, 01:10:48 PM
请问Bitpay的0确认是怎么实现的?


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on August 21, 2014, 02:48:05 PM
请问Bitpay的0确认是怎么实现的?

如果貨品是虛擬的, 例如域名, 在短時間內一般都可以回收, 就不怕雙花

如果貨品是實體郵寄的, 在寄出時早已有幾十個確認了


Title: Re: 量子電腦 (量子计算机) 與 Bitcoin
Post by: btc2nxt on August 24, 2014, 02:52:49 AM
最近(又)有人提出量子電腦的問題

据斯诺登透露的文件,美国国家安全局正在一个耗资$79.7M的项目中努力研制量子计算机。
加拿大公司D-Wave声称成功制造出了小型量子计算机,一旦量子计算机出现,比特币将会怎样?

简单的说:
1,挖矿用的SHA256算法是安全的。量子计算机用于挖矿,挖矿难度大幅提高。
2,比特币用的椭圆曲线签名算法(ECDSA)会被破解。通过量子计算机计算,通过公钥可以找到私钥。
一旦你的地址付过款,公钥就公开,此地址的钱就可能被盗。对于使用多地址钱包,每个地址只使用用一次的用户,钱还是安全的。
3,比特币的签名算法将要升级。

一旦量子计算机出现,现在电子商务、网银广泛使用的RSA 签名算法也会被破解,如果你去问银行,“量子计算机出现后,我的网银安全吗?”,银行会说你杞人忧天,但由于椭圆曲线签名算法的破解对比特币影响更为直接,所以比特币社区对量子计算机更为关注。

虽说量子计算机还在科研阶段,D-Wave的量子设备是否能运算真正的量子运算还受学术界质疑,一旦比特币用于存储大额财富,安全至关重要。

量子计算机出现,比特币会面临挑战,但依旧会前行。

建议:大额比特币不要重复使用地址。

本人對這題目了解有限, 不過據本人的理解, 以上所述基本上正確

Bitcoin主要涉及兩大類的密碼技術: 雜湊(Hash), 主要是SHA256及RIPEMD160; 以及ECDSA公鑰系統. 要破解挖礦, 就只需要破解SHA256; 要破解地址, 則要同時破解RIPEMD160, SHA256, 及ECDSA

假如量子電腦(QC)真的成功, 利用Grover's algorithm, 就可以大大縮短碰撞雜湊的時間, 例如160 bit的RIPEMD160, 就會被弱化為只有80 bit的安全性. 然而即使是80 bit的安全性, 仍然是十分安全, 令我們有足夠時間過渡至更強的雜湊算法. 只要把長度倍增至320 bit, 就可擁有和現在的160 bit相同的安全性, 代價只是地址會比現在長一倍. 因此基本上, QC對挖礦的影響基本可以不考慮

QC帶來真正的問題, 是Shor's algorithm容許以極快速度破解ECDSA; 用傳統電腦上萬年也不能從公鑰算出私鑰, 用QC可能以小時甚至分鐘就可以完成 (確實時間我不肯定, 反正是快得不能接受). 雖然如此, 因為Bitcoin地址並非公鑰本身, 而是公鑰的雜湊, 因此只有地址, 就算用QC也是不可能算出私鑰, 所以只作收款, 從未付款的地址仍然是安全的. 曾經付款的地址, 由於付款過程必須公開公鑰, 便會變得不安全了.

如果你真的擔心QC的問題, 從今天開始就不要重覆使用地址. Bitcoin的設計, 本來就不是要重覆使用地址的.

如果QC真的可以以極高速 (秒級) 破解ECDSA, 則單次使用地址也會有問題, 因為在沒確認前就可以被偷了. 這有兩個方法: 中心化的, 由"可信"的礦工處理交易  (http://bitcoinmagazine.com/6021/bitcoin-is-not-quantum-safe-and-how-we-can-fix/), 及本人提出的去中心化的, 稱為Guy Fawkes簽名的方法 ( https://bitcointalk.org/index.php?topic=320634.0 ).

在ECDSA被破解後, 我們可改用一些QC也不能快速破解的公鑰系統, 例如基於雜湊技術的Lamport簽名. 我有時間會另文再述

(C) jl2012@bitcointalk 2014. CC BY-NC-SA 3.0  http://creativecommons.org/licenses/by-nc-sa/3.0/


51%攻击,量子计算危机,比特币其实并不完美,仍是一场试验。
不能过于悲观,真量子计算机还没出现,有人在研究后量子计算机时代的加密算法了:
http://pqcrypto.org/


阅读了下pqcrypto.org下的PDF,已经有好几个算法可以抗QC攻击,将加密长度由256升到10^12等。只是基于有效性等的考虑未实现, 正如用高射炮打蚊子。


Title: Re: Bitcoin 高質技術討論專區
Post by: wang_yan on September 14, 2014, 12:06:59 PM
为何有的区块里一笔交易也没有?https://blockchain.info/block-index/463697/00000000000000000aa37fa1cae0cd8aa6b875ff0264eb6bee48690c0e2d7534


Title: Re: Bitcoin 高質技術討論專區
Post by: jyaken on September 15, 2014, 01:36:14 AM
为何有的区块里一笔交易也没有?https://blockchain.info/block-index/463697/00000000000000000aa37fa1cae0cd8aa6b875ff0264eb6bee48690c0e2d7534
两个块离得太近,中间没出交易吧
这个块和上一个只差5秒


Title: Re: Bitcoin 高質技術討論專區
Post by: wateradom123 on February 23, 2016, 06:25:01 PM
本人盡量每一兩天講一個技術題目. 如果有想了解的題目可以提出. 謝絕沒意義的回貼如"長知識了", "謝謝  ;D"等
你好請教一個問題˙我將BITCOIN.QT設定走代理位置127.0.0.1   阜號9150由TOR出去˙
請問我如何確認設定已經成功了˙
謝謝你

請你幫忙解答


Title: Re: Bitcoin 高質技術討論專區
Post by: 7425504 on February 24, 2016, 07:40:38 AM
为什么比特币的确认时间设定是10分钟,很多山寨币是60秒

但是实际使用过程中却往往需要更长的时间?


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on February 24, 2016, 03:42:29 PM
为什么比特币的确认时间设定是10分钟,很多山寨币是60秒

但是实际使用过程中却往往需要更长的时间?

我幾乎沒有用山寨币, 會不會是: 1. 沒人挖矿; 2. 手續費不夠; 3. 過短的確認時間導致大量孤塊


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on February 24, 2016, 03:49:46 PM
本人盡量每一兩天講一個技術題目. 如果有想了解的題目可以提出. 謝絕沒意義的回貼如"長知識了", "謝謝  ;D"等
你好請教一個問題˙我將BITCOIN.QT設定走代理位置127.0.0.1   阜號9150由TOR出去˙
請問我如何確認設定已經成功了˙
謝謝你

請你幫忙解答


如果你開了tor就連上, 關了就連不上, 那應該就可以吧?


Title: Re: Bitcoin 高質技術討論專區
Post by: Wei H on February 25, 2016, 03:04:09 AM
你是如何看ethereum?


Title: Re: Bitcoin 高質技術討論專區
Post by: ... ... on February 25, 2016, 03:43:31 AM
为什么比特币的确认时间设定是10分钟,很多山寨币是60秒

但是实际使用过程中却往往需要更长的时间?

我幾乎沒有用山寨币, 會不會是: 1. 沒人挖矿; 2. 手續費不夠; 3. 過短的確認時間導致大量孤塊
我上次使用比特币转了1.2个币花了两个多小时,比特币不会没人挖矿的,好像是花了0.0001个手续费


Title: Re: Bitcoin 高質技術討論專區
Post by: 7425504 on February 25, 2016, 05:14:02 AM
为什么比特币的确认时间设定是10分钟,很多山寨币是60秒

但是实际使用过程中却往往需要更长的时间?

我幾乎沒有用山寨币, 會不會是: 1. 沒人挖矿; 2. 手續費不夠; 3. 過短的確認時間導致大量孤塊
现在基本没10分钟就确认的,上次在转一些寨币,多给了一些币手续费,居然还是等了半个小时。。。


Title: Re: Bitcoin 高質技術討論專區
Post by: jl2012 on February 25, 2016, 08:55:05 AM
你是如何看ethereum?

在隔離見證實現後, 像ethereum的協議理論上也可以在bitcoin實行, 不過風險比較大. 可能在側鏈實現會比較好


Title: Re: Bitcoin 高質技術討論專區
Post by: 7425504 on February 25, 2016, 01:27:36 PM
以太坊将使用混合型的安全协议,前期使用工作量证明机制(POW),用于分发以太币,然后会切换到权益证明机制(POS)。自上线时起,每年都将有0.26x,即每年有60102216 * 0.26 = 15626576个以太币被矿工挖出。转成POS后,每年产出的以太币将减少。

目前是不是每年有1500万个币产出?