近幾年區塊鏈很火,隨著各國政府對加密技術的監管政策不斷變化和BTC的暴漲,越來越多人對這項去中心化的技術充滿著期待。這次我用openEuler 24.09 RISC-V的遠端機器嘗試編譯了Solidity專案,發現過程比較順暢,於是記錄下來,後面有機會我也多多探討區塊鏈在RISC-V的可能性。
git clone git@github.com:ethereum/solidity.git
先是把Solidity的原始碼專案克隆了下來,由於專案比較龐大,用https拉的過程中總是會出現錯誤,我改成了ssh,第一步done!
由於專案裡面包含了好幾個submodule,我在拉取submodule的過程中也失敗了,然後嘗試手動克隆(方法同上)後成功。
這是.gitmodules檔案,裡面包含了需要拉取的子模組,同時"deps/xxx"就是專案所存放的目錄,只需要手動將專案拉到"deps"目錄就行。
接下來就是編譯,不過也遇到了編譯失敗的問題,編譯命令比較簡單,參照文件如下:
mkdir build
cd build
cmake .. && make
很明顯這是一個跟浮點數轉換有關的編譯錯誤,面對這種情況,只需要在Cmake裡面加上一個選項。
cmake -DCMAKE_CXX_FLAGS="-Werror=float-conversion" ..
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
這將輸出合約的abi和位元組碼。Done!
平安夜快樂!