Inicio>Relacionado con la programación>Otro código fuente

Actualizaciones del proyecto

A principios de 2024, Eiger asumió la propiedad del repositorio de Beerus y dirigió el proyecto. Beerus fue iniciado por el equipo de exploración de Starkware y estamos agradecidos por su confianza y el excelente trabajo que han realizado.

Uno de nuestros objetivos es integrar Beerus en carteras basadas en web, permitiendo a los usuarios cambiar sin problemas a un modo de cliente ligero. Esta transición es crucial para quienes prefieren no depender de proveedores de RPC que no son de confianza, un paso fundamental para una operación sin confianza.

Publicamos actualizaciones de desarrollo en el canal Telegram.

Empezando

Ejecutando Beerus por primera vez

Copie el archivo de configuración de etc/conf/beerus.toml y configure las URL del proveedor RPC en la copia. Asegúrese de que los proveedores sean compatibles. Lea más sobre proveedores aquí

Luego ejecuta:

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

Una vez que Beerus haya comenzado a verificar que esté en funcionamiento, intente esta solicitud:

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

El resultado exitoso debería ser similar al siguiente:

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

Configuración

campo ejemplo descripción
ethereum_rpc https://eth-mainnet.g.alchemy.com/v2/{YOUR_API_KEY} URL del proveedor del nodo L1 no confiable
starknet_rpc https://starknet-mainnet.g.alchemy.com/starknet/version/rpc/v0_7/{YOUR_API_KEY} URL del proveedor del nodo L2 no confiable
dir_datos tmp Ubicación OPTIONAL para almacenar datos L1 y L2
encuesta_segundos 5 Segundos OPTIONAL para esperar para consultar el estado del sn, min = 1 y max = 3600
rpc_addr 127.0.0.1:3030 Dirección local OPTIONAL para escuchar los requisitos de rpc

Cuando seleccione una red, verifique que las URL ethereum_rpc y starknet_rpc también apunten a sus redes correspondientes. Por ejemplo:

RED PRINCIPAL

 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}"

SEPOLIA

 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}"

Proveedores de RPC

Beerus depende de DOS puntos finales RPC que no son de confianza, uno para L1 (Ethereum) y otro para L2 (Starknet). Como no son de confianza, normalmente no serán nodos que se ejecuten en su host local o en su red local.

Punto final Starknet RPC

Beerus espera ofrecer la versión 0.7.1 de las especificaciones de Starknet OpenRPC.

El proveedor Starknet RPC también debe admitir el punto final API de extensión pathfinder_getProof de Pathfinder.

Puede comprobar si el proveedor es compatible ejecutando este comando:

 # 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"
    ]
  ]
}
'

Si recibe una respuesta similar a la siguiente, entonces el proveedor no es compatible .

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

Recomendamos utilizar uno de estos proveedores:

Puede encontrar más proveedores de API aquí.

Punto final RPC de Ethereum

Para el proveedor Ethereum RPC, no existen requisitos especiales. El proveedor debe admitir la especificación JSON-RPC de Ethereum.

NOTA: confiamos en helios tanto para los valores de puntos de control válidos como para las URL de rpc de consenso

Desarrollo

Construir

cargo build --release

Prueba

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 

Estibador

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

Ejemplos

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

Seguridad

Beerus sigue buenas prácticas de seguridad, pero no se puede garantizar el 100% de seguridad. Beerus se proporciona "tal cual" sin garantía alguna. Úselo bajo su propio riesgo.

Expandir
Información adicional