如何將智能合約遷移到任何EVM?
譯文譯者 | 布加迪
審校 | 重樓
幾年前以太坊區(qū)塊鏈出現(xiàn)后,由于可以創(chuàng)建智能合約,以太坊區(qū)塊鏈逐漸成為開發(fā)人員和項目用來創(chuàng)建以前不可想象的新平臺和新體驗的入口點,比如視頻游戲和去中心化金融(DeFi)等。起初,以太坊似乎是最好的區(qū)塊鏈,但隨著項目和交易數(shù)量增加,技術(shù)局限性逐漸暴露出來,引發(fā)了對其長期可持續(xù)性的質(zhì)疑。
在2016年至2017年期間,隨著比特幣的局限性顯露無遺,一些人和項目開始探索更有效的區(qū)塊鏈的替代想法。這與以太坊作為構(gòu)建去中心化應(yīng)用程序(dApps)的平臺出現(xiàn)時的情況相似。在這方面,值得注意的動向之一是EOS區(qū)塊鏈的形成。
其他項目(不是完全創(chuàng)新)通過修改其他參數(shù)將以太坊結(jié)構(gòu)作為基礎(chǔ),使其成為理論上更快速更便宜的以太坊版本。
即使對于非專業(yè)人士來說,這些區(qū)塊鏈令人難以置信,截然相反的情緒源自技術(shù)視角,它們具有與EVM(以太坊虛擬機)兼容的優(yōu)勢,實際上允許那些在以太坊上開發(fā)某些產(chǎn)品的人將其移植到這些新的所謂的“與EVM兼容”的區(qū)塊鏈上,沒有太多的問題。
與EVM兼容的區(qū)塊鏈
如前所述,這種類型的區(qū)塊鏈允許您使用在以太坊上創(chuàng)建的相同代碼,這里由一種專門創(chuàng)建的名為Solidity的語言表示,含有智能合約指令的文件采用“.sol”格式。
因此對于程序員來說,使用相同的文件就足以在這些與EVM兼容的區(qū)塊鏈上使用它,甚至不需要修改;這已一再證明是將開發(fā)人員和應(yīng)用程序吸引到新區(qū)塊鏈的基本功能和特征。
EOS EVM
到目前為止我們討論了脫胎于以太坊的區(qū)塊鏈,但技術(shù)環(huán)境其實并沒有出現(xiàn)創(chuàng)新。事實上,大多數(shù)與EVM兼容的區(qū)塊鏈幾乎彼此都相同,只是代幣(Token)的名稱發(fā)生了變化。
EOS區(qū)塊鏈本身與以太坊和EVM不兼容,因此必須開發(fā)一種技術(shù)上具有挑戰(zhàn)性的解決方案,以便在其生態(tài)系統(tǒng)內(nèi)模擬EVM。由于兩種區(qū)塊鏈的架構(gòu)和共識機制不同,在EOS上模擬EVM需要花很大的精力。
這種模擬允許EOS運行基于以太坊的dApps,并在其生態(tài)系統(tǒng)內(nèi)執(zhí)行以太坊智能合約,從而為開發(fā)人員提供更多選擇。
盡管如此,在技術(shù)嫻熟的EOS工程師的幫助下,EOS EVM誕生了,并于4月中旬推出。與其他區(qū)塊鏈上的其他EVM相比,EOS EVM展示了其所有技術(shù)力量;它選擇的數(shù)據(jù)是“每秒交換”,比當(dāng)時被認(rèn)為速度最快的EVM(即Solana上的EVM)快4倍。
如何將智能合約遷移到EOS EVM?
既然我們已經(jīng)了解了EVM的歷史和功能,現(xiàn)在是時候讓我們動手編寫代碼了,看看如何將我們?yōu)橐蕴换?/span>另一種EVM區(qū)塊鏈創(chuàng)建的代碼遷移到EOS EVM。
為了遷移智能合約,我們需要一些支持:
- 加載到我們的MetaMask錢包中的主網(wǎng)或測試網(wǎng)網(wǎng)絡(luò)
- 智能合約的代碼
- 支付網(wǎng)絡(luò)費用的EOS加密貨幣(這里是測試網(wǎng)水龍頭)
如何部署?
要部署智能合約,即將代碼加載到區(qū)塊鏈上,我們基本上有兩種方法:
- 使用IDE,比如Remix
- 從命令行使用Hardhat
1. 使用Remix IDE進(jìn)行部署
人人都可以上手的一種快捷方法就是使用Remix,此后我們將部署智能合約。
首先,確保我們的MetaMask錢包在EOS EVM、測試網(wǎng)或主網(wǎng)上是活躍的,然后連接到Remix web界面,在這里創(chuàng)建一個新文件,給它取個名字和.sol擴(kuò)展名:
圖1
在空文件中,我們將粘貼代碼;或者如果我們有多個智能合約,可以從我們的PC上傳文件。
此時,選擇我們想要上傳到區(qū)塊鏈的.sol文件,然后移動到“Solidity Compiler”菜單:
圖2
在這里,我們不需要做任何其他事情,只需按下藍(lán)色按鈕,等待操作成功(只需查看綠色√號):
圖3
在部署到區(qū)塊鏈的最后一步中,瀏覽到“Deploy & Run Transactions”菜單。在“Environment”部分中,選擇“Inject Provider – MetaMask”選項。這個選擇會自動考慮EOS EVM(無論您選擇的是測試網(wǎng)還是主網(wǎng))?,F(xiàn)在點擊“Deploy”按鈕,繼續(xù)下一步。會出現(xiàn)提示,您需要確認(rèn)使用您的MetaMask錢包進(jìn)行交易。
圖4
就這樣,在不到5分鐘的時間里,我們已經(jīng)將智能合約遷移到了EOS EVM。
2. 使用Hardhat進(jìn)行部署
如果我們使用Hardhat開發(fā)dApp,將以下網(wǎng)絡(luò)添加到“hardhat.config.js”配置文件中就足夠了:
圖5
然后運行命令來部署(請記住,我們應(yīng)該在用于支付交易成本的地址上有一些EOS):
- 針對EOS EVM主網(wǎng),npx hardhat運行scripts/deploy.js--network eosevm
- 針對EOS EVM測試網(wǎng),npx hardhat運行scripts/deploy.js--network eosevm_testnet
最后,如果在使用dApp時出現(xiàn)任何錯誤,尤其是附有消息“gas required exceeded allowance”的錯誤32603 - MetaMask -RPC Error: Internal JSON-RPC錯誤:
圖6
它不依賴EOS EVM的問題,而是來自MetaMask的問題,建議使用另一個瀏覽器并重新執(zhí)行交易,會沒有問題地加以處理。
結(jié)語
總之,由于這些簡單的操作,我們不僅可以使用自己的舊代碼,還可以使用高性能的EVM,而最終用戶不必安裝任何其他東西,因為它足以添加新的網(wǎng)絡(luò)和相關(guān)的加密貨幣。
原文標(biāo)題:How to migrate smart contracts to any EVM,作者:Alfredo de Candia