Главная страница>Связанные с программированием>Другой исходный код

Обновления проекта

В начале 2024 года Эйгер взял на себя владение репозиторием Beerus и руководство проектом. Beerus был основан командой Starkware Exploration Team, и мы благодарны им за доверие и отличную работу, которую они проделали.

Одна из наших целей — интегрировать Beerus в веб-кошельки, позволяя пользователям беспрепятственно переключаться в режим легкого клиента. Этот переход имеет решающее значение для тех, кто предпочитает не полагаться на ненадежных поставщиков RPC, что является важным шагом к безопасной работе.

Обновления разработки публикуем на Telegram-канале

Начиная

Первый запуск Beerus

Скопируйте файл конфигурации из 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}"

Поставщики RPC

Beerus использует ДВЕ ненадежные конечные точки RPC: одну для L1 (Ethereum) и одну для L2 (Starknet). Поскольку они не являются доверенными, они обычно не являются узлами, работающими на вашем локальном хосте или в вашей локальной сети.

Конечная точка Starknet RPC

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 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 предоставляется «как есть» без каких-либо гарантий . Используйте на свой страх и риск.

Расширять
Дополнительная информация