Skip to content

Instantly share code, notes, and snippets.

Fuzzing Soroban smart contracts RFC

Recently I have been working on making it possible to fuzz Soroban contracts. Having some progress and experience now, I am writing up what I have learned and prototyped in hopes of getting feedback.

The work is currently done in the arbitrary branches of three forks:

Changes that needed to be made to support fuzzing

  • arbitrary features
  • Making soroban contracts rlibs
  • Additions of IntoVal impls

My concerns

  • I have tried to come up with the simplest set of traits that will make it work,

Hi, everyone! Super happy to reach out to you! As a Rustacean, I’ll be grateful for your advice. Due to the war in Ukraine, I’m working on becoming a junior Rust software engineer ASAP. As an anti-corruption activist, I have to relocate from Russia. Because of the war, I’ve lost my family & my livelihood.

But I’m not here to tell a sob story, I’m here to ask the practical questions. I could start my new career as a JavaScript front end guy, but JS doesn't suit my personality, while Rust does. With Rust, I’ll love my work, but with JS — less so.

Unless it’s impossible to go from 0 to a Rust junior job in 1-2 years or faster, I would do everything to choose Rust over JS.


  1. Which Blockchain ecosystem should I choose? NEAR? Solana? Polkadot (Ink)? Cosmos? Holochain? Priority #1 is — in which ecosystem I’ll meet the kindest&smartest colleagues? Priority #2 is — which ecosystem has the best learning resources for beginners? (Though, if there’s no great learning resources, but there’s a feasible path
brson / a.txt
Last active May 17, 2020 22:09
ubuntu@ip-172-30-0-140:~/tikv4$ rustc -V
rustc 1.44.0-nightly (b2e36e6c2 2020-04-22)
ubuntu@ip-172-30-0-140:~/tikv4$ RUSTFLAGS="-Zsanitizer=address" cargo test -p tikv_util --target=x86_64-unknown-linux-gnu -- batch_rec
Finished test [unoptimized + debuginfo] target(s) in 1.30s
Running target/x86_64-unknown-linux-gnu/debug/deps/tikv_util-691515b7c083429f
running 1 test
test mpsc::batch::tests::test_batch_receiver ... ok


Some notes about the question "who is actually using Rust?".

  • Firefox

  • Dropbox's storage backend is in Rust, probably other components as well

  • Reddit uses Rust on every request for markdown parsing has as some loose docs and I believe there exist tools to sort of manage it for you and also mirror s3, but not sure
Bare Minimum Mirror Plus One
I’ve been interested for a long time in making it easier toset up a mirror of Making our vibrant ecosystem of librarieshighly available around the... measures in the dozens of terabytes range so I don't know if a mirror is really practical to maintain, nor am I sure if it'd be helpful as s3 seems fairly reliable
brson / time-passes-release.txt
Created April 7, 2019 04:10
Sum of time passes for tikv release profile 6ff46ed602017597823f5e868a1d37fadfd9ceab
LLVM passes - 1773.56
llvm module passes - 892.79
codegen passes - 488.64
LTO passes - 234.98
codegen - 112.45
codegen to LLVM IR - 75.24
ll link - 61.56
item-bodies checking - 47.36
llvm function passes - 28.94
linking - 28.15
brson / sum-time-passes.txt
Last active April 7, 2019 03:20
TiKV sum of time-passes for commit 6ff46ed602017597823f5e868a1d37fadfd9ceab (debug build)
codegen passes - 216.57999999999936
codegen - 182.27599999999995
LLVM passes - 154.252
codegen to LLVM IR - 87.03499999999997
item-bodies checking - 68.76499999999999
linking - 42.206
write metadata - 41.588999999999984
running linker - 39.791
borrow checking - 35.21
monomorphization collection - 31.260999999999992
brson /
Last active April 7, 2019 04:09
Sum and sort rustc -Ztime-passes
import sys
import re
import operator
file = sys.argv[1]
r = re.compile("time: (\S.*); rss: (\S*)\s*(.*)")
map = { }
brson /
Last active April 7, 2019 03:05
Script for accumulating and sorting output of rustc --Ztime-passes
import sys
import re
import operator
file = sys.argv[1]
r = re.compile("time: (\S.*); rss: (\S*)\s*(.*)")
map = { }