Skip to content

joncinque/solana-program-rosetta

Repository files navigation

solana-program-rosetta

Multiple implementations of Solana programs across languages: Rust, Zig, C, and even assembly.

More programs will be added over time!

Getting started

Prerequisite for all languages

Rust

  • Install Solana tools
./install-solana.sh
  • Go to a program directory
cd helloworld
  • Build a program
cargo build-sbf
  • Test a program
cargo test-sbf

Zig

  • Get the compiler
./install-solana-zig.sh
  • Go to the Zig implementation of a program
cd helloworld/zig
  • Build the program
../../solana-zig/zig build
  • Test it
cd ..
SBF_OUT_DIR="./zig/zig-out/lib" cargo test
  • OR use the helper from the root of this repo to build and test
./test-zig.sh helloworld

C

  • Install Solana C compiler
./install-solana-c.sh
  • Install Solana tools
./install-solana.sh
  • Go to a program directory
cd helloworld/c
  • Build a program
make
  • Test it
cd ..
SBF_OUT_DIR="./c/out" cargo test
  • OR use the helper from the root of this repo to build and test
./test-c.sh helloworld

Assembly

  • Install Solana LLVM tools
./install-solana-llvm.sh
  • Go to a program directory
cd helloworld/asm
  • Build a program
make
  • Test it
cd ..
SBF_OUT_DIR="./asm/out" cargo test
  • OR use the helper from the root of this repo to build and test
./test-asm.sh helloworld

Current Programs

  • Helloworld: logs a static string using the sol_log_ syscall
Language CU Usage
Rust 105
Zig 105
C 105
Assembly 104

Since this is just doing a syscall, all the languages behave the same. The only difference is that the Assembly version doesn't set the return code to 0, and lets the VM assume it worked.

  • Transfer-Lamports: moves 5 lamports from a source account to a destination
Language CU Usage
Rust 464
Zig 469
C 103
Assembly 23

This one starts to get interesting since it requires parsing the instruction input. Since the assembly version knows exactly where to find everything, it can be hyper-optimized. The C version is also very performant.

About

Multiple implementations of Solana programs across languages

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published