📜 [專欄新文章] 區塊鏈管線化的效能增進與瓶頸
✍️ Ping Chen
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
使用管線化(Pipeline)技術可以提升區塊鏈的處理效能,但也可能會產生相應的代價。
Photo by tian kuan on Unsplash
區塊鏈的擴容方案
說到區塊鏈的效能問題,目前討論度最高的應該是分片(sharding)技術,藉由將驗證者分成多組的方式,可以同時分別處理鏈上的交易需求,即使單分片效能不變,總交易量可以隨著分片/驗證者集的數量線性增加。
除了分片,另一個常用來提升程式效能的方案是將計算步驟拆解,以流水線的方式將複雜的運算攤平,降低系統的閒置時間,並大幅提升工作效率。為了達到管線化預期的目的,會需要先知道系統的瓶頸在哪。
區塊鏈的效能瓶頸
熟悉工作量證明設計哲學的人應該會知道,區塊鏈之所以需要挖礦,並不是為了驗證交易的正確性,而是要決定交易的先後順序,從而避免雙花和帳本分裂的發生。可以說,區塊鏈使用低效率的單線程設計,並付給礦工高額的成本,都只為了一件事,就是對交易的全局排序產生共識。
在這樣的基礎之上,區塊鏈在一段時間內可以處理的交易數量是有限的,這之中包含許多方面的限制,包括 CPU 效能、硬碟空間、網路速度等。其中,關於 TPS(每秒交易數) 提升和對硬體的要求大致上是線性增加的,但在設計共識演算法時,通訊複雜度常是平方甚至三次方的關係。
以現在的目標 TPS 來說,處理交易和生成一個合法的區塊並不困難,只是因為區塊鏈的特性,新區塊需要透過洪水法的方式擴散到全網路,每個節點在收到更新請求的時候都要先執行/驗證過區塊內的交易,等於整個廣播的延時會是「驗證區塊時間×經過的 hop 數量」這麼多。似乎網路越分散、節點越多,我們反而會需要降低計算量,以免讓共識不穩定。
管線化的共識機制
使用權益證明取代工作量證明算是行業發展的趨勢,除了環保或安全這些比較顯然的好處之外,權益證明對產生共識的穩定性也很有幫助。首先,權益證明在同一時間參與共識的節點數是已知的,比較容易控制數量級的邊界;其次,權益證明的出塊時間相較工作量證明固定很多,可以降低計算資源不足或閒置的機率。
相較於工作量證明是單一節點出塊,其餘節點驗證,權益證明的出塊本身就需要很多節點共同參與,瓶頸很像是從驗證轉移到通訊上。
以 PBFT 為例,每次產新區塊都需要經過 pre-prepare, prepare, commit 三個階段,你要對同意驗證的區塊簽名,還要對「你有收到某人的簽名」這件事簽名,再對「你有收到 A 說他有收到 B 的簽名」這件事簽名,過程中會有很多簽名飛來飛去,最後才能把一個區塊敲定。
為了降低每兩個區塊間都需要三輪簽名造成的延遲,後來的共識演算法包括 HotStuff 和 Casper FFG 採用了管線化的區塊驗證過程。也就是對區塊 T 的 pre-prepare 同時是對 T-1 的 prepare 和對 T-2 的 commit。再加上簽名聚合技術,出塊的開銷在複雜度等級和係數等級都降低許多。
然而,要保持管線化的區塊生產順利,需要驗證者集合固定不變,且網路通訊狀況良好。如果會經常更動驗證者集合或變換出塊的領導者,前後區塊間的相依性會是個大問題,也就是 T 的驗證者集合取決於 T-1 裡有沒有會導致刪除或新增驗證者的交易,T-1 的合法性又相依於 T-2,以此類推。
當激烈的分叉出現的時候,出塊跟共識的流水線式耦合就從優雅變成災難了。為了避免這種災難,更新的共識演算法會限制驗證者變更的時機,有些叫 epoch 有些叫 checkpoint,每隔一段時間會把前面的區塊徹底敲定,才統一讓驗證者加入或退出。到這些檢查點的時候,出塊的作業流程就會退化成原本的三階段驗證,但在大部分時候還是有加速的效果。
管線化的狀態更新
另一個可以用管線化加速的是區塊鏈的狀態更新。如前所述,現在公鏈的瓶頸在於提高 TPS 會讓區塊廣播變慢,進而導致共識不穩定,這點在區塊時間短的以太坊上尤其明顯。可是如果單看執行一個區塊內的交易所花的時間的話,實際上是遠遠低於區塊間隔的。
只有在收到新區塊的時候,節點才會執行狀態轉移函數,並根據執行結果是否合法來決定要不要把區塊資訊再廣播出去。不過其實只要給定了交易集合,新的狀態 s’ = STF(s, tx) 應該是確定性的。
於是我們有了一個大膽的想法:何不乾脆將交易執行結果移出共識外呢?反正只要大家有對這個區塊要打包哪些交易有共識,計算的結果完全可以當作業留給大家自己算吧。如果真的不放心,我們也可以晚點再一起對個答案,也就是把這個區塊執行後的新狀態根包在下個區塊頭裡面。
這就是對狀態更新的管線化,在區塊 T 中敲定交易順序但暫不執行,區塊 T+1 的時候才更新狀態(以及下一批交易)。這麼做的好處十分顯而易見,就是將原本最緊繃的狀態計算時間攤平了,從原本毫秒必爭的廣播期移出來,變成只要在下個塊出來之前算完就好,有好幾秒的時間可以慢慢來。新區塊在廣播的每個 hop 之間只要驗證交易格式合法(簽名正確,有足夠的錢付手續費)就可以放行了,甚至有些更激進的方案連驗簽名都省略了,如果真的有不合法交易混進去就在下個區塊處罰礦工/提案者便是。
把負擔最重的交易執行移出共識,光用想的就覺得效能要飛天,那代價呢?代價是區塊的使用程度會變得不穩定。因為我們省略了執行,所以對於一筆交易實際用掉多少 gas 是未知的。本來礦工會完整的執行所有交易,並盡可能的塞滿區塊空間,然而在沒有執行的情況下,只能以使用者設定的 gas limit 當作它的用量,能打包的交易會比實際的上限少。
緊接著,下一個問題是退費困難。如果我們仍然將沒用完的手續費退還給使用者,惡意的攻擊者可以透過發送 gas limit 超大,實際用量很小的交易,以接近零的成本「霸佔」區塊空間。所以像已故區塊鏈 DEXON 就直接取消 gas refund,杜絕濫用的可能。但顯然這在使用者體驗和區塊空間效率上都是次優的。
而最近推出的 smartBCH 嘗試擬了一套複雜的退款規則:交易執行後剩餘的 gas 如果小於 gas limit 的一半(代表不是故意的)就退款;如果剩餘量介於 50%-75% 可以退一半;超過 75% 推斷為惡意,不退款。乍看是個合理的方案,仔細一想會發現製造的問題似乎比解決的還多。無論如何,沒用掉的空間終究是浪費了,而根據殘氣比例決定是否退款也不會是個好政策,對於有條件判斷的程式,可能要實際執行才知道走哪條路,gas limit 一定是以高的情況去設定,萬一進到 gas 用量少的分支,反而會噴更多錢,怎麼想都不太合理。
安全考量,退費大概是沒希望了。不過呢,最近以太坊剛上線的 EIP1559 似乎給了一點方向,如果區塊的使用程度能以某種回授控制的方式調節,即使偶爾挖出比較空的區塊似乎也無傷大雅,也許能研究看怎麼把兩者融合吧。
管線化方案的發展性
考慮到以太坊已經堅定地選擇了分片的路線,比較激進的單鏈高 TPS 管線化改造方案應該不太有機會出線,不過管線化畢竟是種歷史悠久的軟體最佳化技巧,還是很有機會被使用在其他地方的,也許是 VDF 之於信標鏈,也許是 rollup 的狀態轉換證明,可以坐等開發者們表演。
倒是那些比較中心化的 EVM fork/sidechain,尤其是專門只 for DeFi 的鏈,管線化加速可以在不破壞交易原子性的前提下擴容,確實是有一些比分片優秀的地方可以說嘴,值得研究研究,但這就要看那些機房鏈們有沒有上進心,願不願意在分叉之餘也投資發展自己的新技術了。
給我錢
ping.eth
區塊鏈管線化的效能增進與瓶頸 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
同時也有1部Youtube影片,追蹤數超過4萬的網紅阿宅爸爸,桐心協力過生活!,也在其Youtube影片中提到,《簡單輕鬆DIY》其他影片 https://tinyurl.com/y64ae57n 訂閱阿宅爸爸的影片 https://tinyurl.com/y9w99rf6 =========================== Mac外接硬碟突然讀不到的救法, 今天打開電腦,存影片的硬碟突然消失了, 線什麼...
硬碟退出不了 在 小金魚的人生實驗室 Facebook 的最佳解答
#經營一個個人品牌一年需要花多少錢 #固定費用
宇宙最近一直讓我想到了關於理財的事情,今天繳卡費的時候,我突然靈光一閃,想說,不如我來審視一下今年所有的卡費細項來一一分類吧,整個下午就都泡在這件事情上面。
然後,我就發現,欸~我可以把屬於 #經營個人品牌 自成一個類別耶,還因為這樣子,把每一個項目的帳單,從頭到尾,每一個月仔仔細細的看了一次。
因此,整理成這篇文章,想要跟大家分享,如果你想要像我一個經營一個個人品牌(喔雖然這個詞我有點不想用,因為這幾年講到爛掉了xddd),你一年大概需要花多少錢。
總表可以看截圖,細項我說明如下:
首先,你會發現前三項是跟blog有關係的,#我的blog是自架站,是 #用wordpress自己架設的,我知道wordpress有那種包套方案,把全部需要的其他服務一次包含在一起,但我自己是分開來,因此,費用也都是分開的。
▍1. #Cloudways
我會把架設自己的網站比喻成像是在蓋自己的家一樣,因此必須要有一個土地蓋房子,那個就是雲端主機在做的事情,同時雲端主機也會有SSL安全憑證(如果你看到網頁的網址前有一個鎖頭,就是有SSL安全憑證),確保你家的安全。
Clousways就是其中一個可以做到這件事情的系統商,我一開始的系統商是選用siteground,但是,他後來退出台灣了QQ 我只能緊急換成Cloudways,這個部分,感謝 Johntool-工具王阿璋幫我搬家。
▍2. #Elementor pro
一般來說,你可以直接使用wordpress的發表新文章的功能,Elementor也是拿來發表文章,但兩個有什麼不一樣呢?
用我的話就是,#wordpress原生的發表新文章後台像是電腦的記事本,沒說不能用,但就是陽春,#Elementor比較像是Microsoft365,版面簡單、操作容易上手,關鍵是還有實用的小工具可以讓你直接使用。
Elementor 有免費版的,但我必須說,pro真的是用起來很爽啊哈哈哈哈哈。
▍3. #網域
這個就是讓你家有一個地址啦,你的網站需要一個網址讓人找到你,就是網域。網域有太多地方可以買了,我的是Gandi。
我必須說,有網域可以做很多事情。
例如說你的gmail升級到付費版之後,你就可以將mail的後綴變成跟網域一樣。
又例如,你可以用convertkit做出來的landing page,將網址調整成跟你的網域一樣。
換句話說,這是 #讓你對外有一致性。
▍4. #Google Workspace
這個,我在去年的時候,單純為了發送電子報,申請了付費的gmail,如同前面說的,因為有了網域,所以我現在寄送電子報的信箱後綴跟我的網址是一樣的。
後來,今年發展了線上讀書會,需要到錄影功能,我就直接升級了我的帳號,直接 #讓Goolge Meet可以錄影,而且 #有1TB的雲端硬碟容量,#錄完影之後會直接放到了雲端硬碟,非常方便。
▍5. #Convertkit
這大家就比較熟悉了,是我發電子報的系統。我註冊的時候是免費的,但後來,我使用到了進階功能,包含 #自動貼標籤、#自動寄信,因此,就需要付月費。
總額算起來,一年花費大概是24,000元,一個月大概就是2,000,說起來,其實如果沒有這次,我可能不會得到這個數字哈哈哈。
因為這些金額是慢慢加上去的,在沒有電子報跟線上讀書會之前,我只有前三項的費用,也就是如果單看blog的話,一年大概6,300元左右,一個月也就大約是500元左右的支出,就算blog沒有賺錢,就單純是一個 #可以寫自己喜歡的文章, #可以隨時更改成自己喜歡的版型來看,我覺得還是蠻享受的。
後來加上了電子報,我自己 #在寫電子報的過程中獲得了很多的快樂,隨著訂閱人數來到了需要付費的門檻,也在研究系統中發現好用的功能而付費。
我覺得這點,不管是在自己架設網站中,還是電子報系統中,我都會因為研究系統、發現新功能、真的使用而得到快樂。(架設自己網站的快樂,要感謝 站長路可 - 網路創業是一場漫長的自我修煉 的YouTube影片)
人生有這樣的小快樂,儘管可能不是很多人懂,但絲毫不減我的快樂程度哈哈哈哈哈哈哈。
以上,今天的固定費用分享,下次有機會我們再來分享非固定的費用,今年到底花了多少吧!
硬碟退出不了 在 職涯成長駭客-Crystal Facebook 的最讚貼文
【你以為電腦裡那些檔案都是黃金?沒做好管理都是垃圾】
-人人必修七大數位檔案的管理技巧
#職人的高效能引擎打造 02
#商業思維學院幕僚課程心得 02
我認為未來職人,是以知識工作者身分為主,而作為知識工作者,除了腦中珍貴的知識經驗以外,還有電腦裡那些經年累月收集來、彙整出來的檔案。
原本那些檔案應該是黃金,是你知識變現的利器,但沒有做好管理,這些東西經年累月累積下來,只會變成垃圾,增加電腦運轉的負擔罷了。
要怎麼避免這樣的情況發生呢?很簡單,只要學會這七大數位檔案的管理技巧,資訊垃圾都能變黃金!
而這七大管理技巧,又可以分成兩個部分來談,分別是「四大基本原則」與「從用戶端到雲端三原則」。
▌數位管理四大原則:三的架構、字母符號排序命名、檔案命名有規則、善用捷徑
1、別以為檔案分類分得越仔細,資料越容易找到,檔案的層級,以三層為主,最多不超過五層。
雖然美國認知心理學家喬治米勒提出了「七加減二法則」認為人能瞬間掌握的資訊量是七項左右,有些人可以更多至九項左右,而覺得七項太多的人,可以減至五項,但如果可以,分類別太多層,有助於快速找到資料。
2、利用字母符號排序命名
電腦系統中,對於各種符號的排序順序如下:
特殊符號>數字>英文>中文
第一層命名可以透過人生領域的不同來做分類,例如我的分類可能會有-「正職工作」、「個人品牌」、「個人」,分別可以編為「A正職」、「B個人品牌」、「C個人」
至於第二層命名,則可以盡量透過「西元日期+任務名稱」來做命名,例如在「B個人品牌-B01 IG經營」內,可能會有「20210526 IG直播」。
3、檔案命名有固定規則,別看心情取
許多檔案命名都很看心情,意思是說除了他本人以外,沒人看得懂,例如「書籍內容整理」
看到這樣的檔名,內心應該會浮現以下問題-
是什麼書要整理?哪一天整理好的?已經整理好了嗎?用哪一國的語言整理的?
所以,檔案的命名,可以透過「日期+任務+版次+語言」來做命名
而值得注意的是,檔案名稱這邊的命名,指的是「完成檔案的時間」這樣的設計,方便我們一目了然知道檔案的順序。
而這邊可能會有個疑惑-「上一層的資料夾不就寫時間了?」
這裡的時間,是指任務發生的時間喔!
4、善用捷徑,別再四處複製新檔案了!
很多人的桌面非常精彩,檔案多到完全看不到桌面了....這樣有一個很大的問題是,當你要找檔案時,你一定會找很久!
所以這時候,「捷徑」就可以出場啦!所謂的「捷徑」其實就是從原本檔案「分生」一個入口,可以隨便你放在不管是桌面,或是任何需要重疊性資料的部分。
先來談談放在桌面,桌面放置檔案的原則,是放你最近真的很常用的資料夾「捷徑」為主,當你結束之後,再把桌面的捷徑刪掉就好,完全不必大費周章的把資料夾移來移去。
再來,如果你發現,在「B01 IG經營」與「B02 FB經營」內,有個檔案「20210526貼文」是重複出現的,你可以透過建立檔案的「捷徑」,來建立資料的「網狀系統」,只要動一份檔案,另外一份就會自動更新!
▌從用戶端到雲端三原則:善用索引、判別權限、活動通知
談完數位管理的四大原則後,我們的視角就要從用戶個人轉移至雲端囉!
而雲端有什麼樣的特性呢?分別是「協作」、「跨裝置」與「同步」,正式這三個特性,讓每個用戶可以透過雲端來協作,即使是疫情嚴重到不能出門的現在!
當然,協作的同時,也會有許多問題產生,例如「沒人懂你的資訊分類」、「資訊不同步」...
但別擔心,以上問題都可以解決!
關於「沒人懂你的資訊分類」,我們可以「善用索引」,我們可以做一張像是「專案管理看板」或者稱總表、清單、目錄...等的表單,讓大家一目了然所有大事記,並把相關檔案連結、重點摘要放上去!
而雲端協作有件事情可能要注意,就是「判別權限」,雲端硬碟的權限大小從上到小分別是-擁有者>編輯者>加註者>檢視者
每一個層次的權限都不一樣,要定期檢視權限授權狀況,把該開的權限開好,例如你的夥伴可能會因為你權限開太低(開成檢視者)沒有辦法協同合作;或是專案進行到一半,有人退出了,那麼也要收回他的權限!
而雲端協作常出現的「資訊不同步」狀況,也可以善用「活動通知」來解決!
我們只要開啟活動通知,就能隨時掌握成員們文件更新的狀況,減少等待、校正資訊等狀況,也能減少許多時間成本囉!
▌未來職人知識變現的基礎:做好數位檔案管理
以上七項檔案基本原則,是不是令人驚艷呢?除了土法煉鋼傻傻的做事,我們其實一開始就要設定好規則,一開始就對,才能事半功倍。
而這件事極其重要,也許會變成基本常識,因為就像我開頭所說的,未來職人會以知識工作者為主,知識變現前要先做好知識管理,而常常我們所認為的「知識」如果在一開始就沒有處理好,例如做菜時一開始沒有清洗、處理好食材,那等於白費工夫,因為我們會花很多時間在後續整理,那麼這樣也會影響我們的產出品質的。
所以未來職人們,知識變現前,先做好數位檔案管理吧,這可是你們的根基呢!
硬碟退出不了 在 阿宅爸爸,桐心協力過生活! Youtube 的最佳貼文
《簡單輕鬆DIY》其他影片 https://tinyurl.com/y64ae57n
訂閱阿宅爸爸的影片 https://tinyurl.com/y9w99rf6
===========================
Mac外接硬碟突然讀不到的救法,
今天打開電腦,存影片的硬碟突然消失了,
線什麼的都沒動到,
花了半天急得像熱鍋上的螞蟻,
最後找到辦法有驚無險的解決了.
影片中參考部落格的連結在這邊
https://tinyurl.com/rpj2s36
(不是我寫的..感謝寫這個部落格的人,實測有效!)
為避免部落格以後失效,
把重點簡單整理一下.
1.開 terminal 輸入指令
ps aux | grep fsck
2.若有看到如下結果:
root 2398 2.6 0.1 4352836 11660 ?? Us 10:02下午 0:02.31 /System/Library/Filesystems/exfat.fs/Contents/Resources/fsck_exfat -y -x /dev/rdisk3s2
表示 rdisk3s2 現在被 fsck_exfat 指令給佔用了,故狀態為忙碌中,無法 mount.
解決方式: 砍掉該 process:
3.sudo kill -9 {pid}
{pid} 就是root後面的數字, 以步驟2為例就是2398
只要用Mac,未來應該還有很大的機會遇到...
把心得紀錄下來,希望對其他也遇到這個問題的人有幫助.
===========================
拍攝工具:
GoPro Hero 8
Sj8 Pro
Panasonic Lumix DMC-GF3
SONY RX100M5A
===========================
剪輯工具:
iMovie
final cut pro
===========================
合作邀約:
kirafu@gmail.com
===========================
幸福有沒有在我身邊,怎麼一直看不見~
爸爸說幸福就在鏡子裡,那就是我快樂的臉~
![post-title](https://i.ytimg.com/vi/ADdq262DHW4/hqdefault.jpg)