首頁>編程相關>其他源碼

專案更新

2024 年初,Eiger 接管了 Beerus 儲存庫的所有權和該專案的領導權。 Beerus 由 Starkware 探索團隊發起,我們感謝他們的信任和所做的出色工作。

我們的目標之一是將 Beerus 整合到基於網路的錢包中,使用戶能夠無縫切換到輕客戶端模式。對於不想依賴不受信任的 RPC 提供者的人來說,這種轉變至關重要,這是實現去信任操作的關鍵一步。

我們在 Telegram 頻道上發布開發更新

入門

第一次奔跑比魯斯

etc/conf/beerus.toml複製設定檔並在副本中設定 RPC 提供者 URL。確保提供者相容。在這裡閱讀有關提供者的更多信息

然後運行:

cargo run --release -- -c ./path/to/config.toml

一旦 Beerus 開始驗證其是否已啟動並運行,請嘗試以下請求:

 curl -H 'Content-type: application/json' -d'{
    "jsonrpc": "2.0",
    "method": "starknet_getStateRoot",
    "params": [],
    "id": 1
}' http://127.0.0.1:3030

成功的結果應類似以下內容:

 {"jsonrpc":"2.0","result":"0x539895aff28be4958188c1d4e8e68ee6772bdd49dd9362a4fbb189e61c54ff1","id":1}

配置

場地例子描述
以太坊rpc https://eth-mainnet.g.alchemy.com/v2/{YOUR_API_KEY}不受信任的 L1 節點提供者 url
斯塔克網路rpc https://starknet-mainnet.g.alchemy.com/starknet/version/rpc/v0_7/{YOUR_API_KEY}不受信任的 L2 節點提供者 url
數據目錄tmp用於儲存 L1 和 L2 資料的OPTIONAL位置
輪詢秒數5等待查詢 sn 狀態的OPTIONAL秒數,最小值 = 1,最大值 = 3600
rpc_位址127.0.0.1:3030用於偵聽 rpc 請求的OPTIONAL本機位址

選擇網路時,請檢查ethereum_rpcstarknet_rpc url 是否也指向其對應的網路。例如:

主網

 ethereum_rpc = "https://eth-mainnet.g.alchemy.com/v2/{YOUR_API_KEY}"
starknet_rpc = "https://starknet-mainnet.g.alchemy.com/starknet/version/rpc/v0_7/{YOUR_API_KEY}"

塞波利亞

 ethereum_rpc = "https://eth-sepolia.g.alchemy.com/v2/{YOUR_API_KEY}"
starknet_rpc = "https://starknet-sepolia.g.alchemy.com/starknet/version/rpc/v0_7/{YOUR_API_KEY}"

RPC 提供者

Beerus 依賴兩個不受信任的 RPC 端點,一個用於 L1(以太坊),一個用於 L2(Starknet)。由於這些節點不受信任,因此它們通常不是在本地主機或本地網路上運行的節點。

Starknet RPC 端點

Beerus 預計提供 Starknet OpenRPC 規格 v0.7.1 服務。

Starknet RPC 提供者也必須支援 Pathfinder 的擴充 API pathfinder_getProof端點。

您可以透過執行以下命令檢查提供者是否相容:

 # This is an example RPC url. Use your RPC provider url to check if the node is compatible.
STARKNET_RPC_URL= " https://starknet-sepolia.g.alchemy.com/starknet/version/rpc/v0_7/{YOUR_API_KEY} "
curl --request POST 
     --url $STARKNET_RPC_URL 
     --header ' content-type: application/json ' 
     --data '
{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "pathfinder_getProof",
  "params": [
    {
      "block_number": 56072
    },
    "0x07cb0dca5767f238b056665d2f8350e83a2dee7eac8ec65e66bbc790a4fece8a",
    [
        "0x01d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"
    ]
  ]
}
'

如果您收到類似以下內容的回應,則表示提供者不相容

 {
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32601,
    "message": "method 'pathfinder_getProof' not found"
  }
}

我們建議使用以下提供者之一:

可以在這裡找到更多 API 提供者。

以太坊 RPC 端點

對於以太坊 RPC 提供者來說,沒有特殊要求。提供者必須支援以太坊 JSON-RPC 規範

注意:我們依賴 helios 來取得有效的檢查點值和共識 RPC URL

發展

建造

cargo build --release

測試

cargo test

# # Run integration tests against live endpoint
export STARKNET_MAINNET_URL=https://starknet-mainnet.g.alchemy.com/starknet/version/rpc/v0_7/ ${ALCHEMY_API_KEY}
export STARKNET_SEPOLIA_URL=https://starknet-sepolia.g.alchemy.com/starknet/version/rpc/v0_7/ ${ALCHEMY_API_KEY}
BEERUS_TEST_RUN=1 cargo test 

碼頭工人

docker build . -t beerus
docker run -e ETHEREUM_RPC= < arg > -e STARKNET_RPC= < arg > -it beerus

範例

ALCHEMY_API_KEY= ' YOURAPIKEY ' cargo run --release --example call
ALCHEMY_API_KEY= ' YOURAPIKEY ' cargo run --release --example state

安全

Beerus 遵循良好的安全實踐,但不能保證 100% 的安全。 Beerus以「現況」提供,沒有任何保證。使用風險自負。

展開
附加信息