Beerus — это легкий клиент Starknet, вдохновленный и использующий Helios.
В начале 2024 года Эйгер взял на себя владение репозиторием Beerus и руководство проектом. Beerus был основан командой Starkware Exploration Team, и мы благодарны им за доверие и отличную работу, которую они проделали.
Одна из наших целей — интегрировать Beerus в веб-кошельки, позволяя пользователям беспрепятственно переключаться в режим легкого клиента. Этот переход имеет решающее значение для тех, кто предпочитает не полагаться на ненадежных поставщиков RPC, что является важным шагом к безопасной работе.
Обновления разработки публикуем на Telegram-канале
Скопируйте файл конфигурации из etc/conf/beerus.toml
и настройте URL-адреса провайдера RPC в копии. Убедитесь, что поставщики совместимы. Подробнее о провайдерах читайте здесь
Затем запустите:
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}
поле | пример | описание |
---|---|---|
ethereum_rpc | https://eth-mainnet.g.alchemy.com/v2/{ВАШ_API_KEY} | URL-адрес ненадежного поставщика узла L1 |
starknet_rpc | https://starknet-mainnet.g.alchemy.com/starknet/version/rpc/v0_7/{ВАШ_API_KEY} | URL-адрес ненадежного поставщика узла L2 |
каталог_данных | tmp | OPTIONAL место для хранения данных L1 и L2. |
опрос_сек | 5 | OPTIONAL секунды ожидания запроса состояния sn, мин = 1 и макс = 3600 |
rpc_addr | 127.0.0.1:3030 | OPTIONAL локальный адрес для прослушивания запросов RPC |
Когда вы выбираете сеть, убедитесь, что URL-адреса ethereum_rpc
и starknet_rpc
также указывают на соответствующие сети. Например:
МЕЙННЕТ
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}"
Beerus использует ДВЕ ненадежные конечные точки RPC: одну для L1 (Ethereum) и одну для L2 (Starknet). Поскольку они не являются доверенными, они обычно не являются узлами, работающими на вашем локальном хосте или в вашей локальной сети.
Beerus планирует обслуживать версию 0.7.1 спецификаций Starknet OpenRPC.
Поставщик RPC Starknet также должен поддерживать конечную точку 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 можно найти здесь.
Для провайдера Ethereum RPC особых требований нет. Поставщик должен поддерживать спецификацию Ethereum JSON-RPC.
ПРИМЕЧАНИЕ. Мы полагаемся на helios как для действительных значений контрольных точек, так и для согласованных URL-адресов rpc.
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 предоставляется «как есть» без каких-либо гарантий . Используйте на свой страх и риск.