首页>编程相关>其他源码

项目更新

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按“原样”提供,没有任何保证。使用风险自负。

展开
附加信息