BlockSmith is the all-in-one toolkit for Stellar Soroban developers. No JavaScript. No glue code. From local testing to deployment, everything stays in Rust.
Developing on Stellar could be more efficient.
Soroban Testing is split
Logic runs in the VM, but integration over RPC often means rewriting tests in JavaScript.
Integration Development at Production Fidelity
Local environments lack mainnet state and real-world complexity.
Missing Support for Complex Test Scenarios
Contracts are hard to validate under adversarial or high-entropy conditions.
Limited Assistance for Fixing Contract Issues
Most contract fixes still require manual analysis and patching.
No Practical Way to Run Internal Pre-Audit
Teams lack tooling to catch issues before formal audits.
Cross-Ecosystem Learning Overhead
Adapting contracts across ecosystems adds significant learning overhead and development time.
The Solution
Meet BlockSmith
BlockSmith is an all-in-one development toolkit purpose-built for Stellar smart contracts on Soroban.
It unifies testing, deployment, local networks, and performance analysis into a single, Rust-native workflow.
nova cli
$ nova start
[nova] Starting local node...
✓ Local Soroban node is running
$ nova stop
[nova] Stopping local node...
✓ All services stopped
$ nova reset
[nova] Resetting local node...
✓ Node state cleared and ready to start
Local Node Lifecycle Management
Start, stop, reset, and manage local Soroban nodes with simple commands — fully integrated into your testing workflow.
One command to spin up or reset a local Soroban node
No custom scripts or manual configuration
Consistent, repeatable local environments for testing
rust test
#[tokio::test]
async fntest() {
let invoker = EnvClient::new_mock();
// let invoker = RpcClient::new("http://localhost:9000/rpc").await.unwrap();
letctx = Ctx::new(invoker);
letadmin = ctx.generate_address().await;
// ...
// deploy contract, initialize state
// ...
let muttoken = token_mod::Contract::new(
ctx.invoker_handle(),
contract_id.to_string(),
);
token.get_admin().await;
}
Unified Rust Testing
Write your tests once in Rust and run them against an in-memory VM or a real Soroban node — with a simple configuration switch
Run the same Rust tests in VM or on a real local node
Switch environments without rewriting or duplicating code
Catch production issues earlier with higher-fidelity testing
bash
$ blocksmith test --measure
Contract: withdraw_request
──────────────────────────────
CPU Instructions 4,765,041 / 5,000,000 ✓
Memory Bytes 10,002,275 / 10,000,000 ⚠︎
Entry Reads 6 / 10,000 ✓
Entry Writes 3 / 10,000 ✓
⚠︎ Warning: Memory usage near limit
bash
$ blocksmith test --measure
Contract: withdraw_request
──────────────────────────────
CPU Instructions 4,765,041 / 5,000,000 ✓
Memory Bytes 10,002,275 / 10,000,000 ⚠︎
Entry Reads 6 / 10,000 ✓
Entry Writes 3 / 10,000 ✓
⚠︎ Warning: Memory usage near limit
Testing That Matches Production
Simulate, measure, and understand your contracts before deployment.
Real-Time Resource Usage Insights
Cheatcodes for Simulation
Integrated Code Coverage
Unlock the Future, Exciting Features Await
Embark on a journey of innovation as we prepare to unveil groundbreaking features that will transform your experience.
Mainnet Forking for Soroban
Run contracts against a fully mutable fork of real mainnet state, not just a static snapshot.
AI-Assisted Contract Development
Generate suggest patches, unit tests, and help adapt contract logic across ecosystems.
Internal Pre-Audit Gate
Run automated checks before formal audits to surface issues early and reduce remediation cycles.
Designed for Soroban, Proven by Modern Tooling
BlockSmith brings modern smart contract tooling patterns to Soroban without forcing developers into workflows that don't fit.
Traditional Stack
Rust unit tests only in memory
JavaScript scripts for RPC calls
Separate deployment scripts
No visibility into CPU or memory usage
Constant context switching
With BlockSmith
One Rust test suite
Run on VM or real Soroban nodes
Native Rust deployment
Built in performance and coverage insights
One consistent workflow
"Coverage is finally part of the normal workflow, not an afterthought."
Kevin Liu
Beta user feedback
"We kept our tests in Rust and stopped maintaining a separate JS/RPC harness."
Sarah Chen
Beta user feedback
"Local node bring-up and resets went from "scripts and guesses" to one command."
Alex Morgan
Beta user feedback
"Coverage is finally part of the normal workflow, not an afterthought."
Kevin Liu
Beta user feedback
"We kept our tests in Rust and stopped maintaining a separate JS/RPC harness."
Sarah Chen
Beta user feedback
"Local node bring-up and resets went from "scripts and guesses" to one command."
Alex Morgan
Beta user feedback
"Coverage is finally part of the normal workflow, not an afterthought."
Kevin Liu
Beta user feedback
Start building with BlockSmith
Join the private beta and build Soroban contracts with a unified Rust workflow.