📜 [專欄新文章] EIP2929, EIP2930 簡介
✍️ Anton Cheng
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Opcode 加油Proposal,會不會讓以太坊變更貴呢
昨天在同事的推薦下發現了這個YouTube系列:Peep an EIP,也聽了Vitalik和Martin介紹EIP2929 + 2930的這一期。這兩個EIP都已經被列入下一次的硬分岔(Berlin Hardfork),所以我就來寫個學習筆記。先打個預防針,本人對EVM可以說是非常不熟,但也希望藉著這個機會逼自己學習,如果有錯誤的話也希望懂的更多的各路大神可以不吝賜教。
Berlin without hardfork. (By Claudio Schwarz on Unsplash)
EIP2929: Gas cost increases for state access opcodes
乍看之下這是一個極為恐怖的Proposal。在Gas已經高到爆炸的2021年,理論上不應該再通過這種「加油」類的方案。不過不用緊張,其實這個EIP真正改變的是第一次access的價格,如果一筆交易內要執行一樣Opcode動作輛次,那麼gas cost 將降低為100。
Increases gas cost for SLOAD, *CALL, BALANCE, EXT* and SELFEDESTRUCT when used for the first time in a transaction.
大家都知道,合約最終會被Compile成一堆Opcode,這些Opcode也是用來計算最終交易手續費的依據:理論上越是花時間的的Opcode,應該要收越高的手續費。
但是一直以來,state access opcode 太便宜都是一個已知的問題:在2016年的上海DOS攻擊中,其中幾個攻擊的手法就是透過惡意交易大量讀取帳戶資訊、大量的創造合約再銷毀,或是不斷用 EXTCODESIZE 來讀合約大小等等,讓Client必須花大量的IO資源處理交易(需要讀寫disk的動作特別慢),最終使Client程式Crash或是延長出塊時間。儘管大部分的弱點已經透過EIP150中大量提升gas cost獲得改善(還有其後的EIP1884),但在EIP2929中,也引用的這篇Paper的數據:現在replay所有以太坊上的交易,當時那些惡意交易中的worst case還會需要~80秒才能完成。這跟以太坊所定義的13秒出塊時間有著很大的差距,也代表這個潛在的攻擊是可行的。
透過增加這些opcode所需要的gas cost,可以降低每個區塊最大可能的讀取數。以下是偷抄Vitalik PPT 的數據:(12,500,000 為gas limit上限)
Pre-EIP 2929:
BALANCE spam: 12,500,000 / (400 cost + 320 address size + 50 boilerplate) = 16,233 accesses per block
CALL spam: 12,500,000 / (700 + 320 + 50) = 11,682 accesses per block
SLOAD spam: 12,500,000 gas / (800 + 25 boilerplate) = 15,151 accesses per block (but of a smaller tree)
Post-EIP 2929:
BALANCE spam: 12,500,000 / (2,600 + 320 + 50) = 4,280 accesses per block
CALL spam: 12,500,000 / (2,600 + 320 + 50) = 4,280 accesses per block
SLOAD spam: 12,500,000 / (2,100 + 25) = 5,882 accesses per block
說實在的這個數據的解釋也很廢話,就是把Opcode變得用貴,能Spam的數量越少。平均來說Gas cost 變高3倍,所以之前worst case的80秒執行時間可以被下降到大概 ~27秒。
SSTORE changes
在實作層,EVM會維繫一個本筆交易讀取過所有交易的 Set。每次有尚未讀取過的slot時,就會先收取一筆 CLOD_SLOAD_COST (2100) ,然後把這個slot加入這個set中,下次讀寫就會比較便宜。
對於已經讀取過的Slot,再次寫入的Opcode SSTORE 之gas cost為會降低為
5000 — COLD_SLOAD_COST (2100) = 2900
簡單的說,單純只操作一次 SSTORE 的總gas 會維持一樣在 5000 。但如果這個slot是之前有讀過的,則寫入的gas cost就會降低。近一步來說,一個 x += 100 ,其實會變得更便宜:
Pre-EIP-2929: 800 SLOAD + 5000 SSTORE = 5800
Post-EIP-2929: 2100 SLOAD + 2900 warm SSTORE = 5000
其他Side effects
這個改動除了降低了最高能夠spam的次數以外,也降低了以太坊想要做到stateless client,理論上最大的witness 大小。其實這裡的原理跟前面很類似,下圖的表格比較的是目前使用hexary tree所需要的witness大小:若12.5M的區塊全部塞滿該Opcode的witness,理論上最大會佔多少空間。在EIP2929之後由於gas cost增加,就壓縮了最大可能的witness size.
這裡單純只比較增加gas cost後,對於max witness size的影響。影片中有提到其他許多方法旨在減少Witness bytes,包括使用binary tree而不是hexary tree,以及用Code Merklization等等。這些其他方法也能夠降低最後的Max Witness size,但跟這個EIP沒有直接相關。不過可以注意的一點是,這些其他在witness size上面的優化跟 gas cost 所帶來的優化的效果是可以相乘的,例如 SLOAD,更改gas price已經能夠讓max size 縮小2.6倍,若是改用Binary tree可以將 Witness bytes降低到 288 bytes,就會是再3~倍的優化。
對用戶的影響
依照Martin Swende 給出的數據,這個EIP對於一般交易的影響僅有提高0.3~0.4%。理由很簡單,雖然第一次access storage變貴了,但是後面幾次讀寫就會變得便宜。大部分應用的程式邏輯都是類似的幾個變數進行讀寫,因此可能有不少的動作反而會變得更便宜。一個最簡單的例子就是ERC20 Transfer,兩個餘額的 +=和 -= 都會變便宜,所以總共的花費也是變便宜的。
這其中也會對於Solidity的開發pattern有著一定程度的影響,我目前想到的影響可能有兩個:
由於多次的storage access變便宜,永遠cache state variables不再是一個最佳策略。以前我們會盡量想辦法減少寫入state storage的次數,現在可能會基於coding style考量減少一些的memory cache。
之前寫合約都會盡量避免external call,甚至會寫一些一次把所有 variable都回傳回來的笨函示,來避免多次的external calls。這有一部分原因是因為每次external call都會需要使用到 EXTCODESIZE 這個Opcode所以很貴。但如果 EXT 系列的Opcode也變得越call越便宜,那麼這個一次全部call 回來cache 住的pattern也可能改變。
以上兩個想法都還沒有經過實證,如果之後看到更有證據的分析的話,也會來這裡分享。
EIP2930: Optional access lists
EIP2929可能會影響一些鏈上的合約,因為有些合約有hardcode external call的gas 上限。對於這方面的問題,EIP2930提出一個新的交易類型,讓交易中多帶一個access list,即所有這筆交易即將讀寫的storage slot,並且先幫忙付掉第一次讀寫的gas,而真正交易讀寫該storage時,只會被要求付100 gas。
這不但可以避免這次EIP2929帶來的副作用,也可以被使用在其他因為gas price 改變的硬分岔升級而壞掉的合約,例如在EIP1184 增加 SLOAD gas price 時影響到的 Aragon 和Kyber 等等。儘管當時升級前各大專案都有幫助用戶提出migration 方案,但如果有人曾經卡錢在裡面,也可以Follow一下這次柏林Hardfork。
小結
新的一年就用一篇簡單的文章來開頭。最近發現自己以前的學習習慣有點亂無章法,所以新年整理了reading list,逼自己做筆記,順便發想一些想要寫的主題。今年的期許就是學更多Ethereum底層一點的知識,當然還有上層一點Defi的知識。也歡迎大家分享一下自己都是怎麼follow這麼多東西的><
EIP2929, EIP2930 簡介 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
「專案改善ppt」的推薦目錄:
- 關於專案改善ppt 在 Taipei Ethereum Meetup Facebook 的最佳解答
- 關於專案改善ppt 在 台灣物聯網實驗室 IOT Labs Facebook 的最佳解答
- 關於專案改善ppt 在 第四維度 Photography Facebook 的精選貼文
- 關於專案改善ppt 在 如何利用PowerPoint畫出單張「QC Story」報告- YouTube 的評價
- 關於專案改善ppt 在 專案管理ppt模板的推薦,YOUTUBE、PINTEREST、PTT 的評價
- 關於專案改善ppt 在 專案管理ppt模板的推薦,YOUTUBE、PINTEREST、PTT 的評價
- 關於專案改善ppt 在 專案管理ppt模板的推薦,YOUTUBE、PINTEREST、PTT 的評價
- 關於專案改善ppt 在 傅國淵 的評價
專案改善ppt 在 台灣物聯網實驗室 IOT Labs Facebook 的最佳解答
讓物聯網應用開發全面提速,巨頭們用了“大”招【物女心經】
作者:物女王(彭昭)
物聯網智庫 整理發佈
導 讀
物聯網時代,工具的選擇尤為重要。當大部分人還拿著大刀長矛以原始姿勢赤身肉搏時,率先發明火炮步槍,並掌握狙擊方法的人想輸都難。既然IoT低代碼程式設計工具已經出現,我們有必要將它仔細審視一番,掂量一下是否趁手。
在各種IoT平臺你爭我奪的“大戰”中,平臺型企業或者初創物聯網公司紛紛都在打磨著自己的IoT程式設計工具,前沿的一些已經初具雛形,尤其值得關注:
• 本周,阿里雲IoT更新了IoT Studio,這是一套針對物聯網應用的開發工具。IoT Studio可以提供視覺化的應用開發和服務開發能力,説明使用者改善在實際專案交付中,經常面臨的應用開發成本高、需求定制化程度高、投入產出比低等問題。
• 西門子收購的低代碼平臺Mendix在去年實現了150%的高增長。今年4月,西門子將Mendix與工業互聯網平臺MindSphere進行了集成,這意味著沒有很強IT程式設計經驗的OT工程師們,也可以利用Mendix快速構建物聯網服務。Mendix已經培育的60,000名開發者,也將為MindSphere快速構建應用程式。
這些舉措對於物聯網來說具有深遠影響,他們都指向同一個方向:改進程式設計工具、簡化程式設計環節、降低開發成本,是加速物聯網專案落地的一條捷徑。
由於在物聯網時代,工具的選擇尤為重要。當大部分人還拿著大刀長矛以原始姿勢赤身肉搏時,率先發明火炮步槍,並掌握狙擊方法的人想輸都難。
既然IoT低代碼程式設計工具已經出現,我們有必要將它仔細審視一番,掂量一下是否趁手。
因此在本文中你將看到:
• 什麼是IoT程式設計工具?
• 為什麼需要低代碼?
• IoT低代碼程式設計工具之間有什麼差異?
01
什麼是IoT程式設計工具?
在互聯網時代的IT軟體世界中,有4個最核心的成員:
作業系統、程式設計語言、編譯器和資料庫。
1970年,貝爾實驗室的肯•湯普遜和鄧尼斯•利奇開發出了世界第一個通用型電腦作業系統:Unix。
1985年,微軟推出了第一版Windows作業系統。
Linux是一類Unix電腦作業系統的統稱,公認在1991 年誕生。
目前在移動設備上廣泛使用的Android作業系統,也是創建在Linux內核之上。
而程式設計語言的出現,在作業系統之前。
1952年,組合語言Flow-Matic出現。組合語言本質上是使用助記符來代替機器語言01010101,但這種語言對電腦硬體依賴很大。不同的電腦,組合語言不相通。
1957年,世界上第一個高級程式設計語言FORTRAN問世,它使電腦語言從原始的低級組合語言走到人人易懂的境界。
從此,電腦不再是科學家的專利。可以說FORTRAN的誕生,孕育了軟體產業。此後,電腦高級程式設計語言進入蓬勃發展的時代。
由此,可以看出作業系統和程式設計語言的重要性不相伯仲。
到了物聯網時代,作業系統發生了變化。
互聯網時代,作業系統調度的是PC或者手機中的計算和存儲資源。
物聯網時代,作業系統進化為物聯網平臺,它對“物體”的調度過程,由調度“雲、管、邊、端”不同層級中不同設備的計算資源而實現。
比如RT-thread、Mindsphere、WISE-PaaS…都是物聯網時代的作業系統。
下圖是在微軟眼中,物聯網時代作業系統應當具備的能力:
相比於PC作業系統,物聯網作業系統或者平臺具有以下幾個明顯特性:
• 無縫更新:系統更新通過後臺完成,無需中斷
• 更加安全:具備防止惡意攻擊能力
• 長期連接:保持 5G、WiFi等連接能力,保證設備間能一直相互連接
• 可持續的性能
• 雲端接入能力:支援設備與設備間進行無縫訪問資料
• 具備AI能力
• 支持各種交互:兼顧觸控、手寫、語音、鍵鼠等方式,以及能夠通過感測器和姿勢感知
• 多樣產品形態:支援雲、邊、端的應用
最近一系列基於微內核的IoT OS推出,比如阿里AliOS Things、華為鴻蒙OS、GoogleFuchisa,進一步詮釋了物聯網作業系統的特徵。
微內核並非新鮮事物,最早可以追溯到卡內基梅隆大學在1985年推出的微內核作業系統 MACH。新一代的微內核IoT OS可以支援從小到大的各種智慧設備,包括從煙感感測器、到攝像頭、再到計算閘道等;提供各種本地外掛程式、羽量級GUI、以及豐富的連結協定,滿足碎片化的設備開發的需求;還有豐富的雲端一體化的外掛程式,包括連雲套件、OTA、視頻語音連雲套件,確保設備和雲端的設備影子即時同步。
總而言之,基於微內核的物聯網作業系統,有能力適配高度碎片化的硬體與晶片生態,有豐富的本機群組件來支援不同的設備,又能夠充分和雲端的大資料計算能力形成協同,奠定了數位化物理世界的基礎。
在互聯網時代,作業系統幾乎只需要支援PC和手機就可以完成任務。但是到了物聯網時代,IoT作業系統或者IoT平臺的複雜性急劇上升,為了令其更加易用,程式設計語言也需隨之進化,IoT程式設計工具由此產生。
從作業系統到物聯網平臺,從程式設計語言到IoT程式設計工具,這是一個自然而然的推進過程。
可以預見,編譯器和資料庫在物聯網時代也將產生更新或者變異。比如華為在8月31日剛剛開源的方舟編譯器,以及濤思資料推出的時序資料庫,都更加適合物聯網時代的應用。
在物聯網時代,上述這些工具都會進化,有些可能會徹底變成新的物種。IoT平臺與PC作業系統有本質不同,IoT程式設計工具也與程式設計語言有著天壤之別。
因此,在物聯網時代我們需要一個更加立體、分層和全域的視角,來看待關鍵領域。不管是作業系統,還是程式設計語言,都應建立一個全新的理解,從而發現新的機會,更好的利用工具,實現物聯網業務的拓展。
02
什麼是低代碼?
既然與PC作業系統相比,IoT平臺的複雜性急劇上升,需要調度“雲、管、邊、端”各方資源、兼顧傳感、姿勢、語音等各種對話模式,又要保持5G、WiFi、BLE等連接隨時線上…
那麼,IoT程式設計工具的重要使命就是降低這種複雜度,讓開發者可以輕鬆上手。因此“低代碼”是大勢所趨。
簡單來說,“低代碼開發”被用來描述一種快速設計和開發的軟體系統,無需編碼或通過少量代碼,就可以快速生成應用程式。它是研究機構Forrester Research在2014年最先使用的一個術語。
其實低代碼並不是最近才出現的新事物,它可以追溯到上個世紀90年代。
在1991年誕生的快速應用程式開發(Rapid Application Development,縮寫:RAD),目標是在60到90天的短時間內,建立符合使用者要求的業務軟體。RAD的出現掀起了一場程式設計方式的革命,它帶來了視覺化程式設計,使得程式設計的門檻變低了。
根據Forrester的分析預測,低代碼平臺有可能使軟體發展速度比傳統方法快上10倍。到2022年,低代碼平臺市場將從現有的40億美元,增長到220億美元。
如果將“低代碼開發”和汽車製造做類比,“低代碼”之于IoT開發者就像自動化生產線對於汽車行業的作用。
過去汽車的裝配需要手工完成,現在都是通過自動化生產線實現。雖然早期自動化進程中使用的生產線,對汽車複雜多變的配置無能為力,但它們確實加快了裝配和交付的進程。
作為對比,現在的程式設計工作大部分還處於手工作業階段,生產效率在很大程度上取決於編碼者個人的專業技術水準,“低代碼”儘量用少量的代碼開發出企業級的應用,最大限度的提高應用開發的效率。
眾所周知的低代碼實例是WordPress,它是一款開源CMS(Content Management System,內容管理系統),特性是易上手,開發速度尤其快,甚至無需代碼,直接安裝範本和外掛程式就可以達到要求。
使用WordPress,中小型企業只需雇傭一名不懂程式設計的員工,便可以借助網上發佈的各種主題和外掛程式,在完全不需要程式設計代碼的情況下進行基本網站編輯。目前WordPress已經支持了世界上超過70%的網站。
至此,可以看到低代碼具有如下優勢:
• 降低程式設計門檻,不需要大量的程式設計知識
• 大大加快應用程式的開發和部署時間
• 節省成本,節省專案規劃或員工培訓的時間
• 使用者可自訂模組,應用程式可以靈活調整
• 開發者可以將精力更好的分配於核心任務
任何事物都有兩面,必須說明,低代碼也存在使用風險:
• 供應商被鎖定:目前低代碼程式設計工具並不通用,選擇其中一種便意味著鎖定了供應商。
• 維護成本較高:由於低代碼及其供應商存在較強的耦合性,也就意味著供應商擁有較強的議價能力。
• 存在監管隱患:因為減少了代碼編寫的工作量,開發者很難知道API調用的背後隱藏著什麼秘密。
• 功能可能有限:任何低代碼的供應商都不可能預測到所有的應用細節,如果開發者希望更加靈活地適應企業的需求,就需要使用自己編寫的代碼來滿足。
• 應用千篇一律:低代碼程式設計專案可能最終看起來彼此都非常相似,因為開發者使用的是相同的模組。
任何技術都有利弊,越容易被創建,往往也意味著,越容易被複製。
而我們需要做的,就是權衡利弊,想好自己是否要用這個工具。
03
IoT低代碼程式設計工具之間有什麼差異?
總體而言,有兩類公司在提供IoT低代碼程式設計工具,分別是物聯網平臺型企業和應用服務初創型公司。
除了文初提到的阿里和微軟,AWS、Google、Salesforce等巨頭都有提供IoT低代碼程式設計工具。
典型的低代碼平臺初創公司,除了被西門子收購的Mendix,比較知名的還有OutSystems、ServiceNow、Kony等。
市場研究機構Gartner和Forrester分別繪製了低代碼平臺的格局版圖。
這兩類公司由於各自目標不同,所提供的IoT低代碼程式設計工具其側重點也有所區別。
物聯網平臺型企業:這類企業的目標是降低物聯網平臺的應用門檻,彙聚開發者生態,因此往往提供的是端到端的IoT低代碼程式設計工具或者開發環境。
以阿里雲最近更新的IoT Studio為例,它是一套專為物聯網應用所設計的整合式開發環境IDE,功能包括:
• 設備資料無縫集成:設備相關的屬性、服務、事件等資料均可從阿里雲物聯網平臺設備接入和管理模組中直接獲取,大大降低物聯網開發工作量。
• 面向各個行業提供場景化範本:開發者可以直接利用現有的(包含設備,應用和服務的)解決方案模版來開發自己的業務,將原有需要幾周的開發過程縮短到幾天。
• 視覺化應用開發:使用者通過簡單的視覺化拖拽的方式,即可將各種元件、圖表與設備相關的資料來源進行關聯,幾乎無需任何程式設計經驗,整個過程就像使用PPT一樣簡單。
• 提供服務開發的功能:使用者可以很方便的實現設備之間的聯動、設備與服務之間的資料流程轉。IoT Studio打通了阿里雲API市場,用戶還可利用各種人工智慧及資料分析的API。
應用服務初創型公司:這類企業將低代碼平臺本身作為核心產品,探索與之相應的新型行業模式,因此他們的程式設計工具一般並非針對物聯網應用所創建,或者並不具備對於物聯網異構設備的支援能力。
以被西門子並購的Mendix為例,它本身是一個加速企業敏捷開發流程的PaaS平臺,並自稱是全球唯一一個真正的雲原生低代碼平臺。
它由3個無縫集成的產品組成:Sprintr,AppFactory和Mendix Platform-as-a-Service,分別實現的功能如下:
• Sprintr:採用羽量級的社交方法進行企業專案協作。通過在整個企業中提供協作平臺,Sprintr打破了不同部門和專業之間的隔閡,所有員工都是同一個私有社交網路的一部分。
AppFactory:讓使用者能夠使用高級視覺化的模型開發應用程式。這可以實現業務和IT之間的協作,還可縮短回饋週期。AppFactory又由3個元素組成:
-Mendix Business Modeler:使用視覺化模型設計和開發應用程式的建模環境。
-Mendix Team Server:基於雲的模型存儲庫,用於團隊成員協作並進行版本控制。
-Mendix AppStore:應用市場,用於共用和下載業務範本、主題和技術元件。
• MendixPlatform-as-a-Service:使用者只需按一下一下,即可從Mendix Business Modeler中將應用程式模型上傳到Mendix PaaS,從而輕鬆部署應用程式。
被西門子收購之後,Mendix在最新的19版中增加了對於物聯網設備的支援,並升級了AI引擎,提供對於物聯網資料的分析服務。
----寫在最後----
借助IoT低代碼程式設計工具,讓企業有機會嘗試用更少的資源更快更好的實現應用。如果將其承載在工業大腦或者智慧城市的管理平臺之上,勢必將會激發各類應用開發者的創意和想法,讓各類應用快速集成落地。
對於開發者數量有限的傳統行業,IoT低代碼程式設計工具還有可能加速IT和OT的融合。
當然,各種IoT低代碼程式設計工具是否被宣傳得恰如其分,是否在實踐中方便使用,還需要經過驗證。
本文小結:
1.在物聯網時代我們需要一個更加立體、分層和全域的視角,來看待關鍵領域。不管是作業系統,還是程式設計語言,都應建立一個全新的理解,從而發現新的機會,更好的利用工具,實現物聯網業務的拓展。
2.與PC作業系統相比,IoT平臺的複雜性急劇上升,IoT程式設計工具的重要使命就是降低這種複雜度,讓開發者可以輕鬆上手,因此“低代碼”是大勢所趨。
3.現階段有兩類公司在提供IoT低代碼程式設計工具,分別是物聯網平臺型企業和應用服務初創型公司。
資料來源:https://mp.weixin.qq.com/s?__biz=MjM5MTM5ODQyMA==&mid=2651216898&idx=1&sn=b08fe67b565b6c82dadd4468ac21c791&chksm=bd44d3798a335a6fdb7bbb7aa838ebd4d98a2409990dd97fb56ad85d33d3a95d7fe7bb5d418c&scene=21#wechat_redirect
專案改善ppt 在 第四維度 Photography Facebook 的精選貼文
來報告一下今天石虎國的臺三線重機專案會議的結論:
今天我在會議上大概花了10分鐘用精美的PPT做了一下建議陳述,內容包含臺三線城鎮段做路寬縮減、人行道建置、減速折線以及圓環、市郊區速限區隔等建議
但是公路總局的回答差不多就是:
「於法無據出事誰負責?」
「台灣機車很多你是不是忽略了?」
明明現場警政單位、環保單位、公務處、立法委員跟議員都到了,沒法可以呼籲立法,但是卻總是回答這種推託之詞,而且上述幾個工程建設早就有法源依據,剩下的問我懂不懂機車生態的問題我就懶得打了
然後再看看早前幾個會議的結論,加上會議中聽到的資料,臺三線區間測速應該是跑不掉囉,啾咪~
#如何改善中國台灣的緊張關係
#如何解決高房價低薪問題
#區間測速啊不然呢
#區間測速不可行的話可以禁行機車喔
專案改善ppt 在 傅國淵 的推薦與評價
救命不能等2,期待公路總局盡快從根本改善,防撞護 ... https://ppt.cc/fBBa0x ... 國淵於今(9)日上午與議會同仁前往花蓮、吉安分局展開為期三日警政專案小組視察第二 ... ... <看更多>
專案改善ppt 在 如何利用PowerPoint畫出單張「QC Story」報告- YouTube 的推薦與評價
QC story報告最主要目的是在給工程師有一個標準化的品質 改善 報告格式,讓工程師在完成一項艱巨的品質 改善 任務後,可以輕鬆的像在訴說一篇動人故事般, ... ... <看更多>