Go-Ethereum

為什麼要使用不同的 EVM 實現?

  • June 3, 2018

目前有許多 EVM 的實現(Java、C++、Python、Go 等)。

例如:我將使用 Solidity 在 EVM-Java 和 EVM-Python 之上編寫 DApp,為什麼要使用 EVM-Java 與 EVM-Python?

為什麼以及何時要使用其中一個而不是另一個?

為什麼以及何時要使用其中一個而不是另一個?

高級別的答案是你不會——你不會在乎。這類似於根據編寫的語言選擇作業系統。

如果您只想開發和執行自己的智能合約,那麼執行這些合約的客戶端就會被抽象掉。


如果你想實際執行自己的客戶端,而不僅僅是開發 Dapps,可能有一些人更喜歡其中一個的原因:

  • 你想執行社區認為最安全、經過實戰考驗的客戶端。所以挑最流行的。
  • 您希望通過確保網路中執行多個不同的客戶端來幫助社區,因此您故意執行最流行的客戶端。(在 DevCon2 的 DDoS 攻擊期間,Geth 受到影響,但 Parity 沒有。如果 Parity 不存在,就會有麻煩。)
  • 您想編輯原始碼以進行自己的更改(例如,如果您是礦工,則更改探勘算法),因此請選擇以您最熟悉的語言編寫的客戶端。

但請注意,只有在最後一個選項中,您才能根據客戶端的基礎語言做出選擇。


我將使用 Solidity 在 EVM-Java 和 EVM-Python 之上編寫 DApp,

正如我上面提到的,a) 創建一個 Dapp,b) 執行一個客戶端,是正交的。你不需要執行自己的客戶端/EVM 來部署你的 Dapp。相關的智能合約將由網路中的每個節點執行,因此您無法選擇哪些類型的客戶端將執行您的合約。

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