本報告由火幣區塊鏈研究院出品,報告發布時間2020年10月30日,作者:?袁煜明,馬天元,趙文琦,陳樂
摘要:
10月15日,比特幣核心開發者PieterWuille主導的3個提案(BIP340-342)的代碼正式合入比特幣代碼的主分支。三個提案分別包含了Schnorr,Taproot和Tapscript的內容。社區評價這次變更為隔離見證之后比特幣上最大的技術更新。
Schnorr簽名主要的目標是取代目前比特幣現行的ECDSA簽名。相比于比特幣區塊鏈目前采用的ECDSA,Schnorr具有一些優勢:
簽名安全性高,其安全性可被數學證明,并具有不可延展性;
簽名可為多重簽名的參與方提供隱私保護;
簽名的線性特征,可作為Taproot等技術的基礎,進一步加強交易的隱私性;
簽名長度更短,且可聚合多簽,能節省存儲空間,實現變相比特幣擴容;
簽名可批量驗證,從而提高驗證效率;
不過,它也有一些不足之處,在于:
用戶在使用前需要多輪交互;
簽名會消耗一些額外帶寬和計算資源;
簽名對隨機數的隨機性要求非常高。
作為一項可能會替代橢圓加密算法ECDSA簽名機制的技術更新,Schnorr簽名是比特幣底層技術開發的重要里程碑之一。此次代碼加入后,意味著這項技術已經基本成型,接下來需要等待社區確定軟分叉的正式激活時間,不過此時間點目前尚未有定論。
1.背景介紹
Schnorr簽名機制最初由德國密碼學家、數學家Claus-PeterSchnorr發明,Schnorr數字簽名也因他的名字而命名。Schnorr的安全性基于特定的離散對數問題,長期以安全性和簡單性而聞名。但是Schnorr為他的簽名注冊了專利,因此,這項技術雖好,但是很長一段時間內,一些應用無法直接使用它。
直到2008年時,Schnorr簽名的專利才過期。同時,業界也沒有廣泛接受的具體實現方案,所以在同年發布比特幣白皮書的中本聰,在當時并沒有選擇Schnorr簽名方案,而是選擇了當時更為成熟的ECDSA簽名方案。隨著Schnorr技術專利的過期,這項技術逐漸落地,在比特幣社區PieterWuille等核心開發者的推動下,社區內開始認真考慮應用Schnorr簽名替代現行的ECDSA簽名,并以軟分叉的方式進行升級。
在2018年7月,比特幣核心開發者PieterWuille就提議了升級Schnorr的BIP,隨后Blockstream和開源社區亦參與了相關開發工作。在比特幣正式采用之前,比特幣的分叉幣BCH中已通過硬分叉提前部署了Schnorr。即在2019年5月,BCH就已經將簽名方案升級為了Schnorr簽名。之所以它會被更早激活,主要是因為它是通過硬分叉完成的升級,而比特幣不能采用硬分叉的方案,需要更為精巧設計的軟分叉方案。
百度Apollo首發 “Apollo 001”系列紀念數字藏品:金色財經報道,據百度Apollo智能駕駛官方公眾號,百度Apollo全網首發首款 “Apollo 001”系列紀念數字藏品,以百度汽車機器人為主體形象,每款對應一個百度Apollo自動駕駛重要里程碑事件。據悉,該數字藏品將于2022年7月8日 09:55發布汽車機器人家族全家福空投款。[2022/7/7 1:58:19]
后來,PieterWuille又進一步提出了Taproot/Schnorr軟分叉升級提案,并年于今年1月被正式發布,即本文提到的BIP340-342。而此次,Schnorr的升級提案已正式被合并入代碼庫。一起被合并進Bitcoin主干的三個提案分別是BIP340:SchnorrSignaturesforsecp256k1、BIP341:Taproot:SegWitversion1spendingrules、BIP342:?ValidationofTaprootScripts。
其中,第一個提案就是Schnorr簽名的主提案。Taproot是默克爾樹式的抽象語法樹升級,它與Schnorr簽名一起,將允許比特幣以隱私方式執行更多的智能合約腳本;而最后一個提案是在比特幣上對前兩個提案的補充,主要對原本的比特幣腳本進行了升級,以支持Schnorr簽名、批量驗證以及簽名哈希等。不過值得注意的是,Schnorr算法目前仍然沒有被業界標準化,此次BIP340的提案采用的Schnorr仍然是基于比特幣量身定做開發的。
2.Schnorr簽名與BIP提案
2.1Schnorr簽名到底是什么?
Schnorr本質是一種密碼學簽名技術,我們可以簡單理解為,在比特幣系統中,Schnorr將是ECDSA的替代升級方案。
ECDSA的全稱是橢圓曲線數字簽名算法。它在比特幣中的作用我們的并不陌生,我們在比特幣網絡中的每一次簽名都用到了ECDSA技術。比如說,Alice想發送一筆交易,必須要讓礦工確認只有Alice擁有私鑰,擁有這筆資產的處置權。因此Alice需要用ECDSA前去生成一個獨一無二且無法被修改的簽名,以證明Alice擁有私鑰,同時確認交易部分的具體金額。而等到Schnorr正式激活后,這項工作將由Schnorr接替。本過程見圖2.
2.2為什么我們需要更換簽名方案?
在過去的10年時間內,ECDSA運作情況良好,看起來能夠勝任這份生成簽名的關鍵性工作。但是有一個問題一直縈繞著ECDSA,即目前業界暫時沒有能夠給出一個嚴謹的數學和密碼學證明,來證明ECDSA是數學安全的。與之形成對比的是,Schnorr可以。在滿足一定條件的狀態下,Schnorr簽名技術被證明在數學上是安全的。對于比特幣這樣高度依賴安全性的加密貨幣來說,能夠證明安全性的技術肯定要比實踐中暫未出現問題的技術更讓人放心。
LBank藍貝殼于4月9日16:50首發 BOSON:據官方公告,4月9日16:50,LBank藍貝殼首發BOSON(Boson Protocol),開放USDT交易,4月9日16:00開放充值,4月12日16:00開放提現。上線同一時間開啟充值交易BOSON瓜分10,000 USDT。
LBank藍貝殼于4月9日16:50開啟充值交易BOSON瓜分10,000 USDT。用戶凈充值數量不少于1枚BOSON ,可按凈充值量獲得等值1%的BOSON的USDT空投獎勵;交易賽將根據用戶的BOSON交易量進行排名,前30名可按個人交易量占比瓜分USDT。詳情請點擊官方公告。[2021/4/9 20:02:26]
同時,對于比特幣來說,更重要的是Schnorr簽名具備“線性”的特征,該特征允許將多個用戶的公鑰通過線性計算聚合成一個公鑰,并能生成與之對應的聚合簽名。
為什么說“線性”的特性對于當前的比特幣來說十分重要呢?ECDSA本身是不支持多重簽名的,比特幣現在是通過P2SH腳本來處理,但是P2SH類的腳本會向網絡暴露多簽交易的存在并揭示所有的簽名者。使用Schnorr簽名可以將多簽聚合為一個簽名,增強交易的隱私性,并節省解鎖腳本內因多簽帶來的空間占用,節約寶貴的鏈上空間,實現變相擴容。整體而言,如果得到廣泛普及,有可能能夠帶來比特幣性能5%~20%左右提升。
此外,由于簽名被聚合成一個,在驗簽的時候也只需要進行一次驗證,這會降低計算的成本。這部分的技術細節我們將在下一章詳細講述。
Schnorr簽名對于比特幣來說意義重大,還在于它能成為Taproot這類的技術基石。Taproot也是此次第二個提案BIP341的內容,Taproot源自于MAST(MerkelizedAbstractSyntaxTree),它可以用基于默克爾樹的形式來表達復雜腳本。我們知道,默克爾樹的重要特性之一,就在于其可以在不揭示無關分支的真實數據的情況下,快速驗證某個節點值的存在性,因此被廣泛用于存儲區塊鏈中的交易、狀態數據等。基于這一特性的Taproot,可以在不揭示腳本中未被使用到的分支條件情況下,完成腳本的運行。而對比來看,P2SH則需要揭示出所有的腳本內容。
結合Schnorr簽名的技術,Taproot甚至可以實現讓一個有復雜腳本的交易(包括閃電網絡的交易、多簽交易、多判斷分支的交易等)看起來就像一個普通的P2PKH的交易。支持復雜腳本,保護腳本隱私,不暴露簽名者,讓一個有復雜判斷條件的交易看起來像普通交易一樣簡單,并且無法從形式上進行區分,這就是Taproot與Schnorr結合的效果。
2.3Schnorr會以什么樣形式進行?
《精靈達人3D》正式首發 Cocos-BCX 主網:據官方消息,近日,由生態合伙人 DAPPX 參與開發的《精靈達人3D》正式首發于游戲公鏈 Cocos-BCX 主網。《精靈達人3D》是一款以精靈寶可夢為題材的抓寵游戲,游戲美術采用全3D 制作。用戶可通過 CocosWallet , DAPPX 或 IMCOCOS 登錄 COCOS 主網賬號即可體驗。截至目前,Cocos-BCX 主網已上線《加密騎士團》《惡龍必須死》《XPEX怪獸世界》《Go Block》《可可奪幣》《熊貓運動會》等多款玩法多樣的趣味性鏈游,游戲公鏈生態在逐步壯大和完善。[2020/8/20]
和此前眾多的BIP類似,此次Schnorr以軟分叉的方式進行。
BIP的全稱是比特幣改進提案,通常來說,它包括對比特幣底層區塊鏈技術更新、新特性引入和信息補充等。自2009年中本聰發布第一版比特幣區塊鏈客戶端之后,大多數技術更新都以BIP形式被添加到比特幣技術中。目前,比特幣社區已采納百余個BIP提案,比如:隔離見證、P2SH多簽結構和助記詞等。
硬分叉和軟分叉的區別大家可能并不陌生,在硬分叉中,社區由于對某些特性和技術出現強烈分歧時,會導致主鏈分成兩條鏈,且新老兩類客戶端相互不兼容,例如BTC和BCH,BCH和BSV等。而一次軟分叉升級中,如Segwit升級等,雖然社區可能會有分歧產生,但它仍能保持一條鏈,新老兩類客戶端能夠在一定程度上兼容。
硬分叉有時會帶來社區強烈的動蕩,因此比特幣社區長期對主動硬分叉升級持保留態度,盡可能地避免通過硬分叉升級。本次比特幣的Schnorr升級,將會通過軟分叉完成,這是它很可能得到社區順利激活的重要原因。
替換ECDSA簽名看起來是非常大的變動,為什么Schnorr能夠通過軟分叉完成呢?這要從Schnorr本身說起。
Schnorr的安全性基于一個假設:即某個特定離散對數問題非常難以解決,而且此安全性可通過數學手段證明。換句話說,只要此假設成立,則Schnorr簽名的難破解性,將等于該離散對數問題的難破解性。
同時,一個橢圓曲線中,也存在和該離散對數非常相似的難題。過去比特幣底層區塊鏈技術中的橢圓曲線數字簽名算法的安全性,也基于橢圓曲線離散對數問題的難解性。
Schnorr簽名仍然利用原來比特幣采用的橢圓曲線,不過其采用了一種新的計算方法,由此能夠最大程度上和不想升級的版本兼容,實現軟分叉升級。
另一方面,Schnorr對Segwit客戶端改動非常小,而目前Segwit客戶端的普及率超過90%。根據luke.dashjr統計,截至2020年10月,比特幣網絡節點中超過90%的節點已經把客戶端更新為0.16版本以上,即Segwit升級后的版本。Segwit將簽名信息從交易信息中隔離開,并作為單獨的結構附加到結尾。因為簽名信息只起到驗證作用,不影響交易的關鍵參數:如轉賬地址、數量等。Schnorr簽名主要影響簽名信息,對于升級了Segwit特性的客戶端來說,Schnorr簽名只涉及到以單獨結構附在結尾的簽名驗證信息,因此影響較小。
首發 | 百度財報體現區塊鏈 BaaS平臺成為新戰略重點:金色財經報道,2020年2月28日,百度(股票代碼BAIDU)公布財報,其中將區塊鏈BaaS平臺相關的進展進行了單獨敘述,依托于百度智能云的區塊鏈平臺有望成為技術創新方向的新增長引擎。在AI服務上,百度與上海浦東發展銀行達成合作,共建區塊鏈聯盟,在百度區塊鏈服務(BaaS)平臺上實現跨行信息驗證。[2020/2/28]
綜上所述,Schnorr簽名可以以軟分叉升級的形式被添加到比特幣區塊鏈底層上,無需硬分叉,不會給社區帶來分裂。拒絕Schnorr簽名的客戶端仍然可以正常加入網絡,完成打包等操作。軟分叉作為一種區塊鏈賬本的升級手段,雖然實現難度更大,往往需要精巧的設計以繞開某些規則,但是它兼容性更好,不會導致共識分裂,是一種循序漸進的、溫和的更新方式。
由于軟分叉的溫和升級特點,再加上Schnorr弊端較小,由核心開發人員推動,因此它具有較高的激活可能性。
3.Schnorr簽名技術細節解析
接下里,讓我們對Schnorr簽名的技術細節進行解析:
3.1安全性高
Schnorr簽名的安全性從數學上得到了證明,而ECDSA暫時還沒有被證明。雖然過去很多年以來,ECDSA一直沒有出現安全問題,就好比一座從來沒有噴發過的火山,長久沉寂,但是你不知道它會不會有一天突然爆發。而一個得到數學證明的算法一定是要比可能還有“隱患”的算法更加令人信任。
在DavidPointcheval、YannickSeurin等學者的數學證明下,我們知道,在隨機預言模型中,假設橢圓曲線離散對數問題很困難,想要突破Schnorr簽名的唯一方法就是解決離散對數問題。
因此從某種程度上來說,Schnorr簽名更加安全,更加可信。
此外,Schnorr簽名具有不可延展性,這一特性在與ECDSA的對比中能得到充分展現,ECDSA是一個可延展的簽名算法。具體來說,基于ECDSA生成的簽名,對于一個給定的消息,攻擊者在不知道密鑰的情況下,可生成同樣有效的新簽名。比特幣上還專門提出了BIP146以應對該問題。但Schnorr簽名天然具有不可延展性,可以直接規避這一安全問題。
3.2支持簽名的聚合,節省存儲空間
簽名的聚合,主要指的是對多重簽名的聚合。多重簽名是Bitcoin中的一種控制資金使用權限的技術。例如我們常見的“2of3”多簽,要求被授權的3方中至少要有2方對交易進行了簽名,這筆資金才能被使用。
例如上面的圖4就是一筆“2of3”多簽的輸入腳本,可以看到紅框中就是2個ECDSA的簽名,有了這2個簽名,這筆資金就可以被合法的使用。但是ECDSA的多簽沒有對簽名做任何的聚合,只是簡單的把每個簽名都放在輸入腳本中,并且2個簽名者的公鑰也需要分別放在輸入腳本中。假如有一個“9of10”多簽,就需要在區塊中存放9個簽名和9個公鑰,這是很占用空間的。
首發 | 螞蟻礦機S17性能曝光 采用全新散熱技術及全局優化定制方案:金色財經訊,日前,比特大陸即將發布的螞蟻礦機S17性能曝光。據螞蟻礦機S17產品經理朋友圈稱,新品將采用新一代散熱技術及全局優化定制方案。據了解,該散熱技術可能是指芯片的封裝技術,也有可能是機器的散熱結構設計。至于S17產品“全局優化定制”方案未有細節透露。有聲音評價,這或許是為決戰豐水期做出的準備。[2019/3/22]
但如果使用Schnorr簽名,就可以改善這一問題。Schnorr簽名通過一種叫做密鑰聚合的技術,可以將任何一筆“mofn”多簽中的m個簽名聚合為1個簽名,同時m個簽名者的公鑰也可以聚合為1個公鑰。無論m多大,在輸入腳本中都只需要填寫1個簽名和1個公鑰,這樣可以大大減少多簽在區塊中占據的空間。
上圖(圖5)為PieterWuille對Bitcoin歷史數據做的一個模擬測算,將Bitcoin歷史數據中所有的多簽都替換成Schnorr的聚合簽名后,可以顯著降低Bitcoin區塊的存儲空間。
上面提到的還只是Schnorr聚合簽名中的一種,即“對UTXO單個輸入中的多個簽名進行聚合”。事實上,Schnorr簽名還有更強大的功能,可以“對UTXO多個輸入中的多個簽名進行聚合”,從而使整個UTXO只有一個Schnorr簽名。不過這種聚合的前置條件比較苛刻,實施起來比較復雜。
3.3簽名長度更短,節省存儲空間
根據PieterWuille提出的方案,Bitcoin中使用的Schnorr簽名算法,公鑰的長度為32字節,簽名長度為64字節。而Bitcoin目前使用的ECDSA簽名算法,公鑰長度為33字節,簽名最長會達到72字節。Bitcoin區塊寸土寸金,節省一點空間都是意義重大的。
例如圖3中這筆2個輸入2個輸出的UTXO,其中紅框選中的部分就是輸入中填入的ECDSA簽名,長度為72字節;之后緊跟的就是33字節的公鑰。那么采用Schnorr簽名之后,簽名和公鑰所占的空間就可以減少為64字節和32字節。
事實上Schnorr簽名還有一種變種,可以把簽名縮短到48字節,但由于不支持批量驗證,PieterWuille并不推薦使用。
3.4更強的隱私保護
Schnorr可以用于多把密鑰聚合成一把,它能讓比特幣“多重簽名”錢包發出的交易只展示聚合后的一把,這令多重錢包更為簡潔和隱私。過去,用戶基于ECDSA簽名使用“多重簽名”錢包時,因為要展示多把公鑰,因此容易被暴露此錢包的多重簽名情況。但是如果基于Schnorr簽名,多把密鑰在鏈下進行聚合,可以讓一筆多重簽名的交易看起來和正常交易無異。
還是上面那個“2of3”多簽的例子,可以看到提供簽名的2方的公鑰都被暴露出來了,也就是說,哪2方參與了多簽是公開的。但如果采用Schnorr的聚合簽名,公鑰也被聚合為了1個,這樣就不會暴露是哪2方參與了多簽。聚合后的多簽甚至和一個正常的“單簽”看起來也沒有區別,這就意味著外界看來甚至不知道這是一筆多簽。這大大保護了多簽參與者的隱私。
3.5簽名可批量驗證,提高驗證效率
Schnorr簽名,由于具有線性性質,天然的就可以支持批量驗證。其實原理并不復雜,Schnorr簽名的驗證過程,就是判斷一個等式"s?G=Re?P"是否成立。其中"s=rex","R=r?G","P=x?G",帶入前面的等式就變成了"(rex)?G=r?Gex?G",根據乘法分配律,可以很容易看出等式成立。而批量驗證,就是當有n個這樣的等式S1?G=R1e1?P1,……,Sn?G=Rnen?Pn需要驗證,我們可以把它們的左邊全部加起來,右邊也全部加起來,這樣只需要驗證一次等式是否成立,就可以判斷n個簽名是不是都合法。
并且原本驗證n個等式時,計算S1?G,S2?G,……,Sn?G需要做n次乘法,現在可以合并為?G,只需要做n-1次加法和1次乘法,大大的提高了驗證效率。
Schnorr簽名的這種線性性質是天然具備的,因此即使來自于不同的用戶、不同Tx,甚至不同區塊的簽名,都可以合在一起進行批量驗證。一個新的全節點,在同步區塊數據時,需要做大量的驗證工作,如果Bitcoin采用Schnorr簽名,通過批量驗證就可顯著提高全節點的同步速度。
3.6一些不足之處
前面講的都是Schnorr簽名的優勢。事實上,帶來這些好處也是有代價的。因為Schnorr聚合私鑰簽名的特點,它需要參與方進行多輪交互,這相比過去的ECDSA會更麻煩一些。而且它對隨機數的要求比較高,必須確保隨機數不容易被攻擊者猜到,一些傳統的偽隨機數生成方式不一定適合。同時,PC計算這些簽名和生成隨機數的過程還是比較繁瑣的,因此也會造成發送交易這一步驟的少許延遲,并要求PC消耗更多的計算帶寬資源。但是,以目前的技術而言,這些問題都可以在一定程度進行解決和克服。
4.總結
Schnorr簽名相比ECDSA更加安全可信,而且還順便帶來了比特幣鏈上空間的擴容,使得比特幣性能得到小幅提升,同時,Schnorr簽名還能保護多簽、閃電網絡等技術的參與方的隱私,結合Taproot還能使得更多智能合約腳本得以增加隱私性。
目前來看,提案由Core組成員推動,以軟分叉方式進行溫和升級,未來一段時間順利激活的概率很大,也期待Schnorr簽名能為比特幣以及區塊鏈世界,帶來更多新鮮技術活力。
參考文獻
https://github.com/bitcoin/bitcoin/pull/19953
BIP340:https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki
BIP341:https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki
BIP342:https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki
DavidPointcheval,SecurityArgumentsforDigitalSignaturesandBlindSignature
YannickSeurin,OntheExactSecurityofSchnorr-TypeSignaturesintheRandomOracleModel
關于火幣區塊鏈研究院
火幣區塊鏈應用研究院成立于2016年4月,于2018年3月起致力于全面拓展區塊鏈各領域的研究與探索,以泛區塊鏈領域為研究對象,以加速區塊鏈技術研究開發、推動區塊鏈行業應用落地、促進區塊鏈行業生態優化為研究目標,主要研究內容包括區塊鏈領域的行業趨勢、技術路徑、應用創新、模式探索等。本著公益、嚴謹、創新的原則,火幣研究院將通過多種形式與政府、企業、高校等機構開展廣泛而深入的合作,搭建涵蓋區塊鏈完整產業鏈的研究平臺,為區塊鏈產業人士提供堅實的理論基礎與趨勢判斷,推動整個區塊鏈行業的健康、可持續發展。
聯系我們:
咨詢郵箱
官方網站
http://research.huobi.cn
微信公眾號
HuobiCN
簡書
火幣區塊鏈研究院
新浪微博
火幣區塊鏈研究院
https://www.weibo.com/u/6690456123
@Huobi_Research
https://twitter.com/Huobi_Research
Medium
HuobiResearch
https://medium.com/@huobiresearch
免責聲明:
1、本報告作者及其所在機構與本報告中所涉及的其他第三方不存在任何影響報告客觀性、獨立性、公正性的關聯關系。
2、本報告所引用的資料及數據均來自合規渠道,資料及數據的出處皆被作者認為可靠,且已對其真實性、準確性及完整性進行了必要的核查,但作者不對其真實性、準確性或完整性做出任何保證。
3、報告的內容僅供參考,報告中的事實和觀點不構成商業、投資等相關建議。作者不對因使用本報告內容而導致的損失承擔任何責任,除非法律法規有明確規定。讀者不應僅依據本報告做出商業、投資方面的決策,也不應依據本報告喪失獨立判斷的能力。
4、本報告所載資料、意見及推斷僅反映研究人員于定稿本報告當日的判斷,未來基于行業變化和數據信息的更新,存在觀點與判斷更新的可能性。
5、本報告版權僅為火幣區塊鏈研究院所有,如需引用本報告內容,請注明出處。如需大幅引用,請事先告知,并在允許的范圍內使用。在任何情況下不得對本報告進行任何有悖原意的引用、刪節和修改。
比特幣天圖 2020.7.26在9675介入的長線多單A,可以繼續持有。從2020年4月底以來,比較經典的多頭信號也就是上圖這三筆單子!這三筆多單全部都是我們提前很多天計劃,然后實際行情跟計劃一.
1900/1/1 0:00:00投資公司OffTheChainCapital創始人BrianEstes表示:“我認為,到2029年-2030年,當美國90%的家庭使用加密貨幣和比特幣時,我認為它將成為經濟的穩定組成部分.
1900/1/1 0:00:00資金面分析:昨日高位套現砸盤割了一波韭菜之后,今日主力再次低位進場吸籌又反向收割一波,目前已經有大量散戶跟風進場,謹防莊家再次砸盤.
1900/1/1 0:00:00DeFi領域有很多不同的應用,它們提供了可以替代傳統金融的鑄幣、消費及轉賬方式。借貸平臺可以說是去中心化金融中最受歡迎的產品.
1900/1/1 0:00:00Polkadot創始人GavinWood介紹波卡特性、發展歷程及規劃。演講:GavinWood,Polkadot、Parity與Web3基金會創始人10月29日,2020Web3峰會在上海外灘開.
1900/1/1 0:00:00如今的IPFS已經被越來越多的人所熟知,IPFS不僅僅是為了創造更好的網絡環境,IPFS的主要價值,按照現在的商業的里面的行業來講的話,它的主要價值其實是三塊.
1900/1/1 0:00:00