在openEuler RISC-V上無痛部署Solidity

ChebyshevTST發表於2024-12-24

近幾年區塊鏈很火,隨著各國政府對加密技術的監管政策不斷變化和BTC的暴漲,越來越多人對這項去中心化的技術充滿著期待。這次我用openEuler 24.09 RISC-V的遠端機器嘗試編譯了Solidity專案,發現過程比較順暢,於是記錄下來,後面有機會我也多多探討區塊鏈在RISC-V的可能性。

git clone git@github.com:ethereum/solidity.git

先是把Solidity的原始碼專案克隆了下來,由於專案比較龐大,用https拉的過程中總是會出現錯誤,我改成了ssh,第一步done!

由於專案裡面包含了好幾個submodule,我在拉取submodule的過程中也失敗了,然後嘗試手動克隆(方法同上)後成功。

在openEuler RISC-V上無痛部署Solidity

這是.gitmodules檔案,裡面包含了需要拉取的子模組,同時"deps/xxx"就是專案所存放的目錄,只需要手動將專案拉到"deps"目錄就行。

接下來就是編譯,不過也遇到了編譯失敗的問題,編譯命令比較簡單,參照文件如下:

mkdir build
cd build
cmake .. && make

在openEuler RISC-V上無痛部署Solidity

很明顯這是一個跟浮點數轉換有關的編譯錯誤,面對這種情況,只需要在Cmake裡面加上一個選項。

cmake -DCMAKE_CXX_FLAGS="-Werror=float-conversion" ..

在openEuler RISC-V上無痛部署Solidity

Done!

編譯就暫時先跳過了,試試寫一個Solidity的demo。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract HelloWorld {
    string private message;

    constructor() {
        message = "Hello, World!";
    }

    function getMessage() public view returns (string memory) {
        return message;
    }
}

執行./solc --bin --abi xxx.sol

在openEuler RISC-V上無痛部署Solidity

這將輸出合約的abi和位元組碼。Done!

平安夜快樂!

相關文章