背景知識:操作碼 Opcode

機器碼(machinecode)和字節碼(bytecode)是什麼?

字節碼(bytecode)是一種包含執行程序、由一序列 OP代碼(操作碼)/數據對組成的二進制文件。 字節碼是一種中間碼,它比機器碼更抽象,需要直譯器轉譯後才能成為機器碼的中間代碼。通常情況下它是已經經過編譯,但與特定機器碼無關。字節碼通常不像源碼(程式語言)一樣可以讓人閱讀,而是編碼後的數值常量、引用、指令等構成的序列。

<aside> 💡 bytecode = opcode + 數據

</aside>

字節碼主要為了實現特定軟件運行和軟件環境、與硬件環境無關。字節碼的實現方式是通過編譯器和虛擬機器。編譯器將源碼編譯成字節碼,特定平臺上的虛擬機器將字節碼轉譯為可以直接執行的指令(機器碼)。

<aside> 💡 虛擬機執行 bytecode。翻譯成機器碼。

</aside>

Java VM(JVM)規範的某些方面確實包含與EVM的相似之處。從高級概述來看,JVM 旨在提供與底層主機作業系統或硬體無關的運行時環境,從而實現各種系統的兼容性。在JVM上運行的高級程式語言(如Java或Scala)被編譯到相應的指令集 Bytecode 中。這與編譯要在EVM上運行的Solidity 源檔案相當。(資料來源)

介紹

virtual-machines

虛擬機器是實體電腦的虛擬呈現或模擬環境。它們通常稱為訪客,而用來執行的實體機器則稱為主機。虛擬化可讓您在單一實體機器上建立多個虛擬機器,每個虛擬機器都有自己的作業系統 (OS) 和應用程式。虛擬機器無法與實體電腦直接互動。而是需要藉助一個叫做 Hypervisor 的輕量型軟體層,在虛擬機器和底層的實體硬體之間進行協調。Hypervisor 負責將實體運算資源(例如處理器、記憶體及儲存設備)配置給每個虛擬機器。它讓虛擬機器之間相互分開,這樣就不會互相干擾。

<aside> 💡 虛擬機裡面包含作業系統,應用程序運作在作業系統之上。

</aside>

What is a Virtual Machine? | VMware Glossary

虛擬機(又稱「Guest」),是在稱為「主機」的運算環境中所建立。一部主機上可同時存在多個虛擬機。虛擬機的主要構成檔案包括:日誌記錄檔、NVRAM 設定檔、虛擬磁碟檔,以及組態設定檔。

虛擬機是軟體電腦,能提供與實體電腦相同的功能。如同實體電腦,虛擬機也會執行應用程式與作業系統。不過,虛擬機是在實體電腦上執行的電腦檔案,且行為近似實體電腦。換句話說,虛擬機的行為就如同個別的電腦系統一樣。

確定性

Cosmos Network - Internet of Blockchains

A state machine is just a fancy word for a program that holds a state and modifies it when it receives inputs. There is a state, which can represent different things depending on the application (e.g.balances for a cryptocurrency), and transactions, that modify the state (e.g. token bysubtracting balances from oneaccount and adding them to another).

Deterministic means that if you replay the same transactions from the same genesis state, you will always end up with the same resultant state.

Consensus safety refers to the fact that every honest node on which the state machine is replicated should see the same state at the same time.

常見虛擬機

virtual-machines