Conflux 的 CVM 和 EVM 虛擬機器層的主要區別

買賣虛擬貨幣
在這裡,Conflux 團隊成員將敞開心扉,權威解析 Conflux 網路最新進展、生態構建程序等資訊,沒有八卦、沒有小道訊息,絕對乾貨、絕對知無不言,想要 360° 無死角瞭解 Conflux,來這裡就夠了!將EVM位元組碼移植到Conflux上Conflux 採用了儲存押金機制。執行智慧合約時,如果透過  SSTORE (0x55)  指令往儲存中寫入非零資料的時候,則需要支付儲存押金。當這段資料被清空時,儲存押金會被退還給支付者。儲存押金的價格是 1/1024 CFX/byte。每個儲存單元計 64 位元組。除此之外,合約建立後,程式碼也要收儲存押金。儲存押金機制產生的區別Conflux 採用了儲存押金機制。執行智慧合約時,如果透過 SSTORE (0x55) 指令往儲存中寫入非零資料的時候,則需要支付儲存押金。當這段資料被清空時,儲存押金會被退還給支付者。
儲存押金的價格是 1/1024 CFX/byte。每個儲存單元計 64 位元組。除此之外,合約建立後,程式碼也要收儲存押金。交易的儲存上限域在 Conflux 中,每個交易需要填寫儲存上限,單位是位元組。如果儲存上限填寫的過高,超過了賬戶餘額所能支付的儲存押金,交易就會失敗。如果儲存上限填寫過低,導致交易執行結束時實際新增的儲存超過了儲存上限,交易也會失敗。一個最簡單的方案是,透過 Conflux RPC 估算(詳見相關章節)交易需要的儲存上限。或者,可以透過  n*1024  的公式計算賬戶餘額最高支援的儲存上限。(其中  n  為支付了交易費和賬戶轉賬費用後的餘額。為了保險起見,也可以填一個小一點的數,如  n*1000 )寫儲存消耗的燃料量就可以了。在 Conflux 中,所有  SSTORE (0x55)  指令消耗的燃料都是 5000 gas。相比較,以太坊在這裡的邏輯很複雜。不過,一般開發者不需要關心每個指令的具體 gas 定價,只需要透過 RPC 估計整個交易的燃料用量就可以了。
共識機制產生的區別區塊高度和區塊雜湊相關的指令在以太坊中, BLOCKHASH (0x40)  指令 (Solidity 中的  block.blockhash(n)  函式) 接受區塊編號(區塊高度)  n 作為輸入,輸出區塊高度對應的雜湊值。其中引數高度  n  與交易執行時所在區塊高度相差不可以超過 256,否則會返回 0。Conflux 採用了樹圖結構,當區塊排序後,每一個區塊會產生一個排序編號,這個排序編號不同於區塊高度。因為樹圖結構排序後,相鄰的兩個區塊可能沒有父子關係,所以編號為  n-1  的區塊不一定是編號為   n  區塊的父親區塊。Conflux 中  BLOCKHASH (0x40)  指令 (Solidity 中的  block.blockhash(n)  函式)接受區塊排序編號  n  作為輸入。相應的, NUMBER (0x43)  指令(Solidity 中的 block.number  變數)得到的也是排序編號。此外,以太坊的  BLOCKHASH (0x40)  指令可以詢問交易所在區塊前 256 個區塊的雜湊值,而 Conflux 的指令只能詢問前一個區塊的雜湊值。但是,Conflux 的引數數量和以太坊沒有區別。
出塊速度Conflux 的出塊速度是每秒 2 個塊,比以太坊快很多。如果智慧合約的程式碼邏輯裡硬編碼了出塊速度,需要作出相應的改變。交易中的資訊填寫· 當使用者發起一筆交易時,Conflux 所需要填寫的資訊有所區別。不過一般 RPC 和 SDK 會替開發者和使用者做好這件事情。· Storage Limit: 儲存上限。詳見 交易的儲存上限域 小節。· Gas Limit: 燃料上限。對於未用完的 gas, Conflux 最多隻退還 Gas Limit 的 1/4,所以發出交易前,務必估計一個比較準的燃料上限。
· Chain ID: 區塊鏈編號。規定可以執行這筆交易的區塊鏈編號,避免有人將測試網的交易拿到主網上重放。目前,測試網的 Chain ID 是 1,主網的 Chain ID 是 2。· Epoch Height: 交易執行時的(大概的)epoch。如果交易執行時實際的 Epoch 與交易填寫的 Epoch Height 相差 100000 以上(Epoch 編號增長 100000 的時間在半天到幾天不等),交易將執行失敗。也就是說,過長時間未被打包的交易將無法執行。· Recipient: Conflux 的地址演算法與以太坊有區別。所有公鑰生成的地址前四個 bits 都是 0001,所有合約地址前四個 bits 都是 1000。所有內建合約地址前四個 bits 都是 0000。如果收款地址 recipient 的前四個 bits 不是這三者之一,交易執行失敗。其他區別· 合約建立後,建立者(即合約建立時的  msg.sender )自動成為合約的管理員。管理員有權銷燬合約,或轉移管理員許可權給他人。管理員可以是普通地址,也可以是合約地址。· Conflux 建立的合約程式碼上限是 49152 位元組,比以太坊多一倍。
· 請檢查自己的合約裡有沒有硬編碼以太坊的相關地址。· Conflux 中還有一些其他的區別,是合約的開發者與使用者不需要關心的,這裡我們略去。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;