Skip to content

SovaNetwork/sova-reth

Repository files navigation

sova-reth

GitHub Release Docs docs MIT License Apache-2.0 License CI Status

Bitcoin's Programmable Execution Environment

OverviewDocumentationRunning a ValidatorSova Testnet

sova-reth

Overview

A Sova node is an extension of the EVM execution client Reth. This extension of reth enables a new subset of Bitcoin precompiles. The precompiles are used to directly interface with a Bitcoin node during EVM transaction execution.

Building and Running

A Makefile is used as a command runner to execute repository commands.

# view all make commands
make help

# build the sova-reth binary
make build

# run in devnet mode using Bitcoin regtest
make run-sova-regtest

Running a Validator

For Operators (WIP)

Operators are free to join the testnet and sync their own historical chain data from genesis. For more information on how to join the Testnet as an operator view our Operator Guide in the docs.

Devnet

For testing sova-reth in a devnet environment, it is recommended to use running-sova. This will orchestrate the deployment of all the auxiliary services need for local development.

Precompiles

The Bitcoin precompiles are found at address 0x999, 0x998, 0x997, 0x996.

Precompile Name Address Description
Broadcast Transaction 0x999 Broadcasts Bitcoin transactions
Decode Transaction 0x998 Decodes raw Bitcoin transactions
Convert Address 0x997 EVM to Bitcoin address conversion
Vault Spend 0x996 Network vault spending

For more information on how to use the precompiles see related docs.

Sentinel

The sentinel is a custom add-on component to every sove-reth node. It is used by the Sova EVM to enforce Bitcoin finality. Transactions on Sova that have associated Bitcoin transactions are considered final after 6 Bitcoin block confirmations. If a transaction that was flagged by the chain is not confirmed on Bitcoin, the Sova state associated with the flagged Bitcoins tx will be reverted after 21 blocks.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in these crates by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.