Evm

發明 EVM 的原因是什麼?

  • December 18, 2021

發明乙太坊虛擬機 (EVM) 的原因是什麼?為什麼不使用像 Java-VM 這樣的現有虛擬機。最大的優勢是可以使用現有的 Java 開發工具集。

因此,您問題的重點是為什麼要使用新 VM 而不是 java VM。好吧,讓我們選擇一個 Java VM,我們會得到什麼?:

1 -複雜而龐大的字節碼 => 如何在區塊鏈中儲存它,成本是多少?(知道單個 java 方法的大小可以達到 64KB)因此這樣的 VM 或語言並不節省空間。

2 -無用的功能和安全問題:網路訪問、I/O 流、文件 W/R … =>這些功能中的每一個都意味著很大的安全問題。想想看,你可以寫一段程式碼來ping(死亡)另一台機器或訪問受保護的文件,甚至竊取礦工的私鑰。甚至沙盒也可能出現漏洞,文件“寫入/讀取”功能可能會破壞整個系統的安全性。所以我們需要擺脫所有這些功能,這對於獲得許可的虛擬機來說是一項艱鉅的任務。我們需要記住,區塊鏈虛擬機應該被隔離,沒有與外部環境通信的能力。

3-如果你有 JVM,你會使用Java或其他 JVM 語言,它們不適合區塊鏈上下文(缺乏確定性、記憶體和硬體訪問、更高的執行延遲、浮點等……)。想像一下,你有一個帶有 rand() 的 Java 字節碼,結果會是什麼以及如何達成共識?

4- 對 DDos 的抵抗力較弱(如何在 Java VM 這樣的複雜 VM 中設置類似氣體的系統?)。

3 - JAVA VM 是 獲得許可的 Sun 產品,因此您無法自定義它以將其集成到乙太坊的環境中(例如,您將如何計算 gas 成本以避免 Dos 攻擊?)?要克服這個問題,您需要編寫自己的 Java VM,這是一項複雜的任務,請閱讀:https ://softwareengineering.stackexchange.com/questions/71561/java-and-jvm-license 。

此外,您可以查看有關為什麼要創建新合約語言的答案: 創建像 Solidity 這樣的新智能合約語言而不是使用其他語言有什麼好處?

引用自:https://ethereum.stackexchange.com/questions/142