'Mempool聯合創始人林哲明:BSV的應用程序架構設計及誤區'

比特幣 區塊鏈 廣播 鏈得得APP 2019-09-16
"

摘要: 在9月7日舉辦的“BSV開發與商業生態大會”上,Mempool聯合創始人林哲明表示,未來BSV將成為唯一的公鏈。

9月7日,Bitcoin Association(比特幣協會)與OKEx、鏈得得聯合在中國北京舉辦了一場BSV開發與商業生態大會,嘉楠耘智、wework作為協辦方鼎力支持了此次活動。

這次活動是Bitcoin Association(下文簡稱BA)設置中國區域負責人以來的首次線下亮相,同時也是Bitcoin SV在中國地區的第一場官方活動。

在活動上,Mempool聯合創始人林哲明就BSV的應用程序架構設計及誤區話題發表演講。

在談到雙花交易問題時,他表示並不是指這個網絡上不能有雙花,這是很重要的一點。很多做應用的開發者認為,“真正的比特幣網絡交易就應該是拒絕雙花,不能允許它存在”。而作為礦工必須堅守自己認為最真實的賬本,所以我們不會允許像別人宣傳的那樣說——“根據節點代碼,你收到那個速度最快的來自攻擊者的區塊,你應該把自己的算力切到它那邊去,去跟隨著攻擊者的區塊走”。

他認為在比特幣網絡世界裡面,礦工自然形成了一個小世界網絡,每一個礦工節點和其它礦工基本上都保持著良好的連接,任何一條信息最多經過兩次跳躍,就能夠完成在礦工中的傳播,這意味礦工之間的網絡將成為下一代互聯網的核心骨幹基礎設施。

從賬本維度,林哲明對BSV進行了分析,使用了UTXO結構的BSV使得賬本的驗證難度隨著交易量呈現對數級別增長,當交易量擴張時,驗證成本增速只可能越來越慢。這使得BSV或將成為唯一的公鏈

經過編輯整理,林哲明的演講全文如下:

"

摘要: 在9月7日舉辦的“BSV開發與商業生態大會”上,Mempool聯合創始人林哲明表示,未來BSV將成為唯一的公鏈。

9月7日,Bitcoin Association(比特幣協會)與OKEx、鏈得得聯合在中國北京舉辦了一場BSV開發與商業生態大會,嘉楠耘智、wework作為協辦方鼎力支持了此次活動。

這次活動是Bitcoin Association(下文簡稱BA)設置中國區域負責人以來的首次線下亮相,同時也是Bitcoin SV在中國地區的第一場官方活動。

在活動上,Mempool聯合創始人林哲明就BSV的應用程序架構設計及誤區話題發表演講。

在談到雙花交易問題時,他表示並不是指這個網絡上不能有雙花,這是很重要的一點。很多做應用的開發者認為,“真正的比特幣網絡交易就應該是拒絕雙花,不能允許它存在”。而作為礦工必須堅守自己認為最真實的賬本,所以我們不會允許像別人宣傳的那樣說——“根據節點代碼,你收到那個速度最快的來自攻擊者的區塊,你應該把自己的算力切到它那邊去,去跟隨著攻擊者的區塊走”。

他認為在比特幣網絡世界裡面,礦工自然形成了一個小世界網絡,每一個礦工節點和其它礦工基本上都保持著良好的連接,任何一條信息最多經過兩次跳躍,就能夠完成在礦工中的傳播,這意味礦工之間的網絡將成為下一代互聯網的核心骨幹基礎設施。

從賬本維度,林哲明對BSV進行了分析,使用了UTXO結構的BSV使得賬本的驗證難度隨著交易量呈現對數級別增長,當交易量擴張時,驗證成本增速只可能越來越慢。這使得BSV或將成為唯一的公鏈

經過編輯整理,林哲明的演講全文如下:

Mempool聯合創始人林哲明:BSV的應用程序架構設計及誤區

Mempool聯合創始人 林哲明

在這裡,要感謝比特幣協會給我這個機會。首先自我介紹一下,我是來自Mempool的林哲明,我的另一個身份是BSV社區的礦工哲亮。除了一直在挖礦外,還搭建了一個礦池,甚至開發了自己的數字錢包,整個過程我樂在其中,感覺像是承包了這條產業鏈。

礦工是如何保護比特幣賬本安全?

礦池是區塊鏈行業的核心基礎設施。挖礦這件事情,可能很多人的理解存在一個誤區:礦工在深山老林裡面偷電,然後買一些機器放在那運行,就保護了比特幣的安全。事實上,真正保護比特幣賬本安全靠的是具有打包權的服務器對網絡持續的監測,防禦對比特幣網絡的攻擊。

其中一個經典的例子就是BCH硬分叉事件,Craig博士領導並使用Bitcoin SV節點,反抗來自Bitcoin ABC試圖修改比特幣協議的攻擊。這個保護賬本的動作其實很簡單,就是使用invalidateblock的方式,拒絕試圖攻擊的區塊。在這種情況下,礦工用自己的算力投票,來保護比特幣真正的賬本。

由此延伸一下,在現實生活的區塊鏈世界裡,最早比特幣出來的時候,存在“經過六個區塊確認後就會比較安全”的這麼一個說法。這也是為什麼很多人在使用錢包、交易所轉賬、入賬時都很注意確認數的原因。確認就是你的交易已經被某個礦工打包在區塊裡,寫在了這個礦工眼裡最可能成為最長鏈一部分的某一個賬本里。六個確認是為了應對區塊鏈上面隨時會出現可能的分叉。如果出現分叉是否會影響用戶資金的安全?這點需要注意,實際在比特幣領域,區塊並非一個重要核心理念,反之交易才是最重要的因素——每一個交易都帶有交易發送方的數字簽名,它是一個合法的數字證明,且是依靠交易來保證的,而不是依靠區塊。

由於每位礦工都獨立地驗證交易信息的合法性並將其廣播給其他礦工,所以礦工在不同交易版本的選擇上發揮巨大作用。在這個流程背後存在著經濟驅動,當交易更快送達至其他礦工時,礦工打包的區塊也可以更高效傳達到了其他礦工手裡,這就降低了礦工自身的孤塊率。

假設突然出現了一個雙花交易,礦工會將這個交易和其他礦工手裡收到的交易進行對比,看其是否會被其它礦工所接受,如果這筆交易有99%的算力都認可他的話,可以認為它在下一個區塊寫入賬本的可能性是高達99%。事實上,某筆交易在網絡上面並沒有收到有雙花通知的話,則可以認為這個交易應該是能夠被寫入賬本的,這就是我們講的零確認交易概念。

所以,零確認交易並不是指這個網絡上不能有雙花,這是很重要的一點。很多做應用的開發者認為,“真正的比特幣網絡交易就應該是拒絕雙花,不能允許它存在”,其實這並不必要,關鍵只在於,需要收款方能夠確定地知道——自己收到的交易是否不存在雙花的可能性,就是完成任務了。

如果存在雙花的可能性的話,只有可能是這個交易的人在作弊導致的這個原因,因為只有他能夠簽名出另外一個版本的交易,所以從開發者的視角來看這個問題的話:

第一,把交易作為核心的原則進行控制,而不是看區塊確認,區塊確認其實不重要。

第二,在收到交易以後,應該儘快把這個交易和其他所有的礦工進行交叉的確認,確認這個網絡上是否存在另外一個版本的交易。尤其是第二點,很多開發者並沒有做到,他們都還依賴於廣播這麼一個概念。

假設一個前提,某個交易在網絡上沒有發現同時存在的雙花交易,但是10分鐘以後我們發現出了一個新的塊,這個塊出現了一筆雙花交易,覆蓋了原先的交易,這就是大家所說的礦工雙花攻擊網絡。某個礦工惡意打包了一個區塊,這個區塊雙花了用戶的幣。但這個雙花過程是可以被其他礦工檢測到的,因為每一筆寫入賬本的交易,是經過了所有礦工確認並認可的。但是在網絡上突然無徵兆地出現了另外一個塊的交易導致雙花,使得現有的交易不合法了,那隻可能說明比特幣網絡受到了來自惡意礦工的攻擊。

回到剛才的問題,我們礦工用什麼樣的方式來保護比特幣的賬本呢?就是通過檢測可能出現的雙花交易,並且拒絕掉包含著不應被其它礦工認可的交易版本所在的那個區塊來完成的。

在這時候網絡會不可避免出現分叉,因為我們作為誠實的礦工,必須堅守自己認為最真實的賬本,所以我們不會允許像別人宣傳的那樣說——“根據節點代碼,你收到那個速度最快的來自攻擊者的區塊,你應該把自己的算力切到它那邊去,去跟隨著攻擊者的區塊走”,這是一個很大的概念誤區。

如果對對挖礦的概念不太瞭解的人,就可能會誤以為雙花BSV的成本很低,只需要用全網百分之一點幾的算力就可以發動攻擊,帶著所有不明真相的BSV賬本分叉,對賬本進行任意修改。如果是這樣的話,攻擊者大可以放馬過來試一下。我們作為礦工會堅守看到的誠實賬本,不管背後有多少算力。我們會堅持直到自己破產為止,所以這並非簡單一句話說,我只要快速的對交易進行6次確認,所有其它的賬本、交易所全部都跟著我了。

對於交易所來說,假設在網絡上看到了兩個不同版本的賬本,一個賬本是誠實的,但拿到的算力暫時比較低,另外一個版本是攻擊的賬本,上面有很多非法的雙花交易,那你應該選擇哪個賬本,是選擇算力更大的賬本還是選擇一個誠實的賬本?這個問題留給所有的交易所,留給所有的應用開發者,相信他們會有自己的判斷。

廣播交易的弊端

現在很多開發者都依賴廣播,但它事實上是一個給很多人帶來了幻覺的魔術。作為一個礦工,跟其他礦工廣播自己收到了什麼交易,就像突然間所有礦工都聽到了廣播,並記在賬本上,轉帳順利達成,這是大家以為的。

但是在比特幣世界裡,其實不存在大家想像的這種廣播。每個節點只保持與其它6-7個節點的連接,假設礦工收到了一個交易,也只能跟6-7個其它節點進行交易的傳遞,它並非一個廣播,但現在很多人把它錯誤理解為廣播。

實際上並不存在一個方法,你只需網絡大吼一聲,就能夠保證它傳達至網絡上連入的所有的其它節點而沒有錯誤。所以,在做開發的時候,需要提醒自己不能依靠P2P網絡廣播的方式來傳遞交易。這種方式把實際成本轉嫁到了接收方手裡,對接收方來說首先需要監聽並過濾掉當前網絡上的每一條信息,然後找出跟自己相關的那條信息,才能最終確認自己收到的錢。

打一個比方,就好像我要轉賬給Lise小姐,然後我在我的支票上面寫上了Lise小姐收,然後把它往地上一丟,跟Lise小姐說我錢轉給你了,已經丟出去了,什麼時候收到,看有誰撿到這個支票以後能傳到你手裡。這個做法與比特幣設計理念背道而馳,本質上我們使用比特幣是因為它能夠更節約成本,不能通過如此低效率的方式來完成交易傳遞。

真正的比特幣交易過程應該是付款人將交易簽完名直接發到收款人手裡,收款人把這個交易轉發給接觸到的礦工,讓礦工幫忙檢測網絡上是否存在雙花,並把該交易寫入礦工賬本里。

之前我從巴厘島的CambrianSV會議回來,發現很多開發者並沒有真正的意識到如何正確使用比特幣網絡,這或許是一個大問題。如果每個交易都還是依賴於P2P網絡廣播,然後大家再從另外一個接口,用另一套程序去監聽消息的傳遞,最後才收入交易的話,整個流程效率極低,這種做法在我們將來實現GB級別甚至TB級別區塊的時候,難度和成本也非常高。

因此,所有的開發者可以嘗試完全摒棄掉廣播交易的做法,只有這樣才能夠實現比特幣的擴容,才能夠幫助區塊達到TB級別。

所有的錢包包括我自己的打點錢包到最後都會面臨一個問題:隨著用戶使用頻次提升,成千上萬個比特幣歷史使用地址對性能是一個巨大的挑戰。錢包開發方需要監聽網絡,在面對如此多的收款地址,保證每份資金能夠安全無誤地轉出、轉入和記賬。未來可以預見很多錢包將逐漸摒棄這種收款模式,而所有交易都是點對點的,我們也將提供一系列基礎設施,包括PKI、CA,來協助用戶完成點對點、直接的交易。

礦工網絡--下代互聯網核心基礎設施

那未來比特幣網絡如何做到這一點呢?

很多人認為礦工的挖塊就是刷哈希,事實上礦工的目標並不是以最快的速度出塊,而是需要讓其它礦工接受自己的工作成果。誰出的塊誠實、速度快、傳播性好,匹配了當前網絡效率,那麼就會被其它礦工所接受,在你的賬本版本上投票。

礦工們為了減少損失,提高收益,會盡可能的提高和其它礦工的連通性。一方面,儘快把剛出的區塊收到手裡,並開始挖下一個區塊。另一方面,在自己打包出區塊時,儘快把區塊傳遞給其它的礦工,讓別人在自己的區塊上工作。在比特幣網絡世界裡面,礦工自然形成了一個小世界網絡,每一個礦工節點和其它礦工基本上都保持著良好的連接,任何一條信息最多經過兩次跳躍,就能夠完成在礦工中的傳播,這意味礦工之間的網絡將成為下一代互聯網的核心骨幹基礎設施。

而用戶和服務提供商通過SPV(簡單支付驗證)節點和礦工之間的小世界網絡保持緊密連接,全世界可能有幾十上百號礦工,你可以選擇一個離你最近、速度最快的礦工進行連接,然後你可以委託他們幫你把消息傳遞給你的目標的用戶,這是作為基礎設施的礦工網絡可以為大家提供的服務。

礦工和用戶之間的每一個連接全部由公鑰進行控制和識別的,在接下來的IPV6地址背後由於CGA的加持,都會具備公鑰和私鑰。通過這種方式,極大改善我們當前互聯網的連接,每一個參與者通過自己的電腦,委託礦工,在通過礦工網絡,在四跳之內將信息傳遞給目標服務器!在當前,十跳已經是很快的結果了,尤其通過中國網站裡,用戶要訪問美國服務器,需要層層往上找到邊界網關服務器,再層層往下去翻到目的地址,這中間的過程沒有十幾跳是完不成的。在可以預見的未來,所有的瀏覽器、所有的用戶、所有的手機都可以使用SPV的方式和礦工保持直接連接。

但直接連接並不是像大家想的那樣,連接上礦工服務器並開一個連接,就可以傳遞數據了,礦工也自然的幫我轉播交易了。不是這樣的,因為交易的轉播是有成本的,天下沒有免費的午餐。如果你發出的交易是帶手續費的,為了賺取手續費礦工會接受交易。但是有很多的交易,礦工是拿不到手續費的,這時候就需要一個叫做支付通道的技術,來額外的向礦工支付成本。

這就要說到我的礦池產品, Mempool會對開發者正式開放支付通道技術,讓開發者使用支付通道為自己的交易打包付一些微小的費用。有人抱怨說,在比特幣網絡上傳照片、傳視頻,傳各種各樣的東西很貴,在打包不同種類的交易時,Mempool具備了一定的自主權,可以實現更低費率來接受這樣的交易,這是我們的一大優勢。

第二大優勢就是,在支付通道下,每一個消息傳遞都是有數字簽名的,它和現有HTTP和API等最大區別就在於,用戶可以為數據本身甚至數據傳遞定價。將來你或許可以付錢給礦工,付一筆小費用,同時告知礦工去用公鑰取回對應服務器上的信息。礦工通過傳遞這個被簽名的信息來賺取他的服務費。

這一系列是接下來會在BSV網絡上發生的事情。作為開發者我們不能只看眼前,而是想到接下來會發生什麼事情,未來是否會出現以比特幣協議作為基礎協議的瀏覽器,不再是HTTP,是否會會出現用戶自身客戶端就有錢包可以通過簽發交易的方式來傳遞信息?在這個基礎上,我們才可以去設想、構築未來比特幣的應用。

為什麼我要強調支付通道這麼一個技術呢?這又涉及了另外一個開發的誤區——認為將一切東西放在鏈上,問題就解決了。

其實上鍊的成本一直存在的,除非對數據安全性的要求高到願意付出高昂的成本,否則並不需要把所有數據全都放在鏈上。

舉一個大視頻雲存儲的例子,我可以找多個的雲存儲服務商,我把我的視頻分段切片後放在他們的服務器上,並且讓他們使用哈希上鍊的方式來保證他們提供數據的完整性。我可以通過向他們查詢哈希的方式獲得原始數據。

在這種情況下,用戶可以以極低的成本獲得高可用性的數據,其一,有好幾個服務商,其二,這裡的數據的完整性有一個唯一的標準,用戶可以舉證對方給的數據是錯的,因為這個數據的哈希存在鏈上,可被證明。

在這種情況下你並不需要特別在意你的數據是不是真的放在了鏈上。我們要以更高效的方式去使用比特幣的賬本空間,而這個賬本空間的成本永遠是存在那的。我們以一個更高效的方法來用它,來降低服務和應用的成本。而不是想著既然上傳費用這麼便宜,我把東西都丟到鏈上去就好了,真正適合放在鏈上的數據往往具備這麼幾個特徵:

1、具有公開的價值。私人數據放在鏈上是用於存儲,但是放在鏈上的數據絕大部分是用於和其他的商業夥伴進行共享。

2、這部分數據的完整性、真實性的校驗的需求是很強的。你需要證明在某時某地確實存在這樣的一份數據,它就具備著存儲的價值。

之前在BSV上面出現的一個叫做RateSV應用,將交易所的分鐘級別的交易數據傳到了鏈上,作為企業結算、報稅的一個參考數據,這就很好的使用了這兩個特點。很有價值的數據需要公開,需要存在性證明。用戶需要明白的是究竟要用區塊鏈去解決一個什麼問題。

BSV或將成為唯一的公鏈

那為什麼說BSV一定能成為唯一的公鏈?因為它的成本是最低的,人們現在看到的公鏈等都存在兩個維度,一個維度是應用維度,一個維度是賬本維度。在應用維度就是你所謂的應用場景,它可以做什麼事情,並不強制要求底層的鏈一定得是什麼形態才能完成應用場景,事實上只要具備智能合約的功能,賬本公開、可審計、可查就行了。在賬本維度,Token的轉移全都需要在賬本上進行表現、存儲、驗證,哪個賬本的成本最低,又能滿足用戶需求的話,這個賬本將會最終勝出。在這種情況下,找不到另外一個成本更低的賬本來替代比BSV 賬本。

拿打點錢包來說,打點錢包現在支持接收BTC,這個過程是在是在BSV上完成的,用戶在轉帳BTC的時候可以轉到打點錢包的BTC地址,然後我們給用戶發一個等額的BTC,這是寫在BSV賬本上的,用BSV的賬本完成了BTC在不同用戶的不同地址之間的轉帳。鏈上完成,公開可查證,中間沒有貓膩,更關鍵的是手續費極低。在接下來的迭代版本里,打點錢包將發佈BTC發紅包的功能。用戶可以用1分錢的代價來轉BTC。

那為什麼BSV的成本是最低的呢?因為使用了UTXO的結構,UTXO的結構就是用戶錢包裡面的錢是不記名的,只需要驗證錢從一個地方轉到另外一個地方的轉帳過程是不是合法就可以了。每次轉帳的時候會花掉一些合法的UTXO,生成了新的UTXO,轉帳完成,驗證過程就結束了,非常簡單、高效。只對錢本身有效,跟用戶、跟背後的賬戶沒有一點關係,巧妙的把用戶的錢的餘額計算轉變成了在個人本地就可以完成的過程。不用藉助其他人的幫助,用戶以極低的成本瞭解自己的錢包裡有多少幣可以用。

在基於賬戶系統裡面的賬本里面,你要想驗證一個錢從一個賬戶轉到另外一個賬戶,需要對這個賬戶背後是否有相應數量的幣進行驗證,這是個成本高昂的過程。很多其它的共識體系,PBFT、DAG等等的共識體系,每一個交易的驗證成本都比比特幣交易的驗證成本要高很多,只要交易量一大必然導致成本極速上升的,也就無法承載大量的交易。但是在交易量極大的時候,UTXO賬本的驗證難度隨著交易量僅僅是對數級別的,隨著交易量增長,驗證成本增速只可能越來越慢。因此比特幣的賬本可以有能力承載起一切交易、一切事物。

所以,在這種情況下礦工額外的安全開銷被平攤到海量的交易上面的時候,你會發現在海量交易下每一個交易成本上升只有一點點,但是每一個交易都很安全,這些微小的驗證費用又能夠支撐得起礦工的安全成本。

因此開發者要更清晰的看一看接下來可能會發生的事情,系統要如何去設置和其他的用戶、開發者和應用保持更好的聯繫,不能再依靠廣播、交易、過濾,把自己需要的東西保存下來,我建議每一個開發者都應該現在開始使用SPV模型。

我的分享就到這裡,謝謝大家。

"

相關推薦

推薦中...