Go-Ethereum

什麼是 Geth 的 JIT VM?

  • May 23, 2016

在下載區塊鏈時,我花了大約一周的時間才獲得了 109 萬個區塊,在 1050999 -1060888 左右重新啟動後,我收到了來自 geth.exe 的消息

您是少數將嘗試 JIT VM(隨機)的幸運兒之一。如果您遇到共識失敗,請用失敗的塊雜湊報告此事件。您可以通過設置 –jitvm=false 切換到正常 VM

知道這意味著什麼嗎? 這是一個即時虛擬機?在閱讀和閱讀之後,我猜測這一定是某種叉子?如果我錯了,請糾正我,感謝您的回饋!由於我的蜥蜴大腦,我重新啟動了同步。

geth正如您已經猜到的,這是乙太坊節點軟體中的新即時虛擬機。

go-ethereum - cmd/util/flags.go,第 683 到 688 行

jitEnabled := ctx.GlobalBool(VMEnableJitFlag.Name)
// if the jit is not enabled enable it for 10 pct of the people
if !jitEnabled && rand.Float64() < 0.1 {
   jitEnabled = true
   glog.V(logger.Info).Infoln("You're one of the lucky few that will try out the JIT VM (random). If you get a consensus failure please be so kind to report this incident with the block hash that failed. You can switch to the regular VM by setting --jitvm=false")
}

只有 10% 的geth執行這個新版本軟體的實例會使用這個 JIT VM,而這 10% 是隨機選擇的。

如果新的 JIT VM 實施出現重大故障,90% 的節點仍將繼續探勘乙太坊區塊鏈。可以報告故障,並且在修復時,可以geth使用參數從命令行禁用 JIT 功能--jitvm=false

如果您想再次看到該消息,只需geth反復重啟,平均而言,您應該在 10 次重啟中看到此消息。

它不是區塊鏈中的分叉。

這是一篇關於新 JIT VM -優化乙太坊虛擬機的文章。

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