RiB Newsletter #14 – Are We Smart (Contract) Yet?
Welcome to the #14 edition of Rust in Blockchain, the hypest newsletter about the hypest tech. Previous: #13.
We’re seeing a bunch of interesting Rust blockchain and crypto projects, so this month the “Interesting Things” section is loaded up with news, papers, and project links.
This month, Elrond, appeared on our radar with the launch of their mainnet. Although not written in Rust, it runs Rust smart contracts on its Arwen WASM VM, which itself is based on the Rust Wasmer VM. Along with NEAR, Nervos, and Enigma (and probably others), this continues an encouraging trend of blockchains enabling smart contracts in Rust. See the “Interesting Things” section for examples of Elrond’s Rust contracts.
Rust continues to be popular for research into zero-knowledge proofs, with Microsoft releasing Spartan, a zk-SNARK system without trusted setup.
In RiB news, we published a late one-year anniversary blog post. It has some reflection on the changes to, and growth of, RiB over the last year.
The Awesome Blockchain Rust project, which is maintained by Sun under the rust-in-blockchain GitHub org, has received a stream of updates recently, and is now published as the Awesome-RiB page on rustinblockchain.org.
It’s a pretty good resource for finding blockchain-related Rust projects, with links to many of the more prominent and mature projects noted in the RiB newsletter. It could use more eyes on it though.
Thanks
This edition of RiB was produced with contributions from Calvin Lau, Darosior, EnforSys, Paulii Good, Sol, Tony Arcieri, Brian Anderson, and Aimee Zhu. Thank you for your help!
Also, Awesome Blockchain Rust has been updated. Thanks to the awesome contributors: Alfredo Garcia, Andy Nogueira, ChainSafe Systems, Lane Rettig, Michael Sproul!
RiB needs help to keep up with Rust blockchain projects. If you follow a particular project, or otherwise find information that is beneficial to the Rust & blockchain community, please contribute to the next issue. Either submit a PR to the #15 draft, or Tweet @rust_blockchain.
Project Spotlight
Each month we like to shine a light on a notable Rust blockchain project. This month that project is…
ethers.rs is an Ethereum & Celo library and wallet implementation, implemented as a port of the ethers.js library to Rust.
Ethereum client programming is usually done in JavaScript with either web3.js or ethers.js, with ethers.js being the newer of the two. These clients communicate to an Ethereum node, typically via JSON-RPC (or, when in the browser, via an “injected” client provider that follows EIP-1193, like MetaMask).
ethers.rs then provides a strongly-typed alternative for writing software that interacts with the Ethereum network.
As of now it is only suited for non-browser use cases, but if you prefer hacking in Rust to JavaScript, as some of us surely do, it is worth looking into for your next Ethereum project.
The author of ethers.rs, Georgios Konstantopoulos, accepts donations to sponsor their work.
Note that there is also a Rust alternative to web3.js, rust-web3.
Interesting Things
News
- NIST’s Post-Quantum Cryptography Program Enters ‘Selection Round’. Not Rust, but relevant to the future of cryptography.
- Rust is now a top 20 language in all of the 5 most major language popularity listings. Looks like we bet on the right horse.
- Microsoft open sources Spartan: High-speed zkSNARKs without trusted setup.
- Elrond, a sharded blockchain, whose mainnet went live in July, has several Rust projects.
- Tutorial: The Crowdfunding Smart Contract (part 1), (part 2)
- Blog: My first smart contract in Rust on Elrond VM
- World’s first practical hardware for zero-knowledge proofs acceleration
- From Rust Crypto – The
k256
crate (pure Rust secp256k1 elliptic curve implementation) just landed an impressive new scalar/field arithmetic backend inspired by bitcoin-core’s libsecp256k1 Party popper.
Blog Posts
- zkPorter: Composable Scalability in L2 Beyond zkRollup. A scaling architecture proposal.
- What’s It Good For?. Lane’s take on the blockchain tech: “blockchain is very good at a narrow set of applications and pretty bad at just about everything else. When you get past the hype, it’s really just a slow, expensive, distributed, permissionless, append-only ledger, nothing more and nothing less.”
- Distaff VM: approaching Turing-completeness
- Hunting down a non-determinism-bug in our Rust Wasm build
- NEAR Accounts and Access Keys as Identities for Textile Integration
Papers
- Demystifying the Role of zk-SNARKs in Zcash
- Performance Trade-offs in Design of MimbleWimble Proofs of Reserves
Projects
- Elrond’s Rust smart contracts:
- elrond-wasm-rs. Rust smart contract library designed for Elrond’s Arwen VM. Also provides a debugging mode with mocks.
- sc-bitswing-rs. BitSwing smart contract by Band Protocol.
- sc-busd-rs. BUSD stablecoin smart contract implementation and tests.
- sc-delegation-rs. Smart contract for managing staking delegation in Elrond.
- sc-dns-rs. Elrond DNS smart contract, written in Rust.
- flux-protocol, the open market protocol build on NEAR protocol, is launching their Beta Program. Check their latest Flux Community Update.
- Forest. Rust Filecoin Node Implementation.
- Graph Node indexes data from blockchains such as Ethereum and serves it over GraphQL.
- Minsc, a Miniscript-based scripting language for Bitcoin contracts.
- Neptune is a Rust implementation of the Poseidon hash function tuned for Filecoin.
- Polymesh. Polymesh is a blockchain for regulated securities and open finance.
- Radicle Link. A secure, p2p network for code collaboration. It has many Rust projects under its GitHub organization
- rusty-blockparser. Bitcoin Blockchain Parser written in Rust.
- rust-fil-proofs. The Filecoin Proving Subsystem (or FPS) provides the storage proofs required by the Filecoin protocol. It is implemented entirely in Rust, as a series of partially inter-dependent crates – some of which export C bindings to the supported API.
- Shuffler uses StarkWare’s VeeDo VDF to seed a seedable RNG, and shuffle a randomisable list of items.
- SputnikVM: Rust Ethereum Virtual Machine Implementation.
- Stacks 2.0 is an open-membership replicated state machine produced by the coordination of a non-enumerable set of peers.
- Tezos node/shell in Rust
- Yew. Rust / Wasm framework for building client web apps. Perhaps we’ll we writing our dapps completely in Rust soon.
- zeroize.rs. Securely zero memory while avoiding compiler optimizations.
- ZoKrates. A toolbox for zkSNARKs on Ethereum.
- zkSync is a fully trustless, secure, user-centric protocol for scaling payments and smart contracts on Ethereum.
Podcasts and Videos
- Hashing It Out #87-Informal Systems Ethan Buchman
- Trail of Bits (Dan Guido) – The Evolution of Smart Contract Security
Most Active in July
Parity: 275 merged PRs (1, 2, 3), 105 closed issues (1, 2, 3), 87 open issues (1, 2, 3)
Solana: 252 merged PRs (1), 24 closed issues (1), 43 open issues (1)
Zcash: 144 merged PRs (1, 2, 3), 74 closed issues (1, 2, 3), 58 open issues (1, 2, 3)
Crypto.com Chain: 118 merged PRs (1, 2, 3), 89 closed issues (1), 33 open issues (1, 2)
Project Updates
COMIT
152 merged PRs (1, 2, 3, 4), 22 closed issues (1, 2, 3, 4), 8 open issues (1, 2, 3)
- PR: Add request/response take order NB by @tcharding
- PR: Enable cnd to run over Tor by @tcharding
- PR: Add configurable ledger to ordebook by @tcharding
Crypto.com Chain
118 merged PRs (1, 2, 3), 89 closed issues (1), 33 open issues (1, 2)
- News: Crypto.com Chain Dev Update #10
- Open sourcing Chain Indexing Service. It can index on chain data into structured records for query.
- Successfully complied chain core written in Rust into WebAssembly.
- News: Released Thaler Testnet Block Explorer 2.0 and Faucet
- News: Revamped Chain Website with brand new Products and Releases Page for developers engagement.
- News: Node.js library supports latest Testnet
- Promotion: Calling for validators and staking pools to join Crypto.com Thaler Testnet.
- PR: Problem (Fix #2040): mls implementation not up with latest spec draft by @yihuang
- PR: Problem: Transaction builder is accepting unnecessary data by @calvinlauco
Holochain
5 merged PRs (1), 0 closed issues, 0 open issues
- News: The Host Release of HoloFuel
- News: Monthly Roundup for Holo & Holochain
- News: Dev Pulse 76, 75
- Blog: Mutual Credit, Part 1: A New Type of Cryptocurrency, As Old As Civilisation
- PR: Validation timeout fixes by @zippy
- PR: Cache validation packages by @zippy
Libra
30 merged PRs (1), 26 closed issues (1), 55 open issues (1)
- PR: [move prover] improvements to pure move function call feature by @emmazzz
- PR: [executor] fuzzing for execute_and_commit_chunk by @mimoo
- PR: [db-bootstrapper] support commit genesis with waypoint at startup by @zekun000
Lighthouse
29 merged PRs (1), 37 closed issues (1), 33 open issues (1)
- News: Lighthouse Update #27
- PR: Write new blocks and states to the database atomically by @adaszko
- PR: swap out rust-crypto for RustCrypto libraries for key management by @realbigsean
- PR: Fix race condition in VC block proposal service by @michaelsproul
MobileCoin
83 merged PRs (1), 2 closed issues (1), 1 open issues (1)
- News:
- PR: Mob url by @garbageslam
- PR: Initial fog authority key signature with schnorrkel by @sugargoat
- PR: Mc sig by @garbageslam
NEAR
83 merged PRs (1), 44 closed issues (1), 32 open issues (1)
- News: NEAR Bringing Chainlink’s Leading Oracle Solution to its Open Web Ecosystem
- News: Community Update
- Video: Whiteboard Series with NEAR
- Video: Community Talk: Blockchain & AI
- PR: feat: Network indexer by @khorolets
- PR: Mocknet load testing (#2899) by @birchmd
- PR: fix: prevent repetitive initialization on node start by @bowenwang1996
Nervos
49 merged PRs (1, 2), 12 closed issues (1), 4 open issues (1, 2, 3)
- News:
- Nervos kicks off first CKLabs cohort with Portal Wallet and Tocial
- Nervos joins Coinbase’s Rosetta to simplify blockchain integration
- Introducing Nervos’ integration with China’s Blockchain-based Services Network (BSN)
- Grant Approved: LeapDAO to Build EVM-Compatible Sidechain Framework
- The Nervos Foundation announced a donation of 10 BTC to Grin
- News: Nervos CKB Development Update #38
- News: CKB Weekly #13, #12, #11, #10, #9
- PR: refactor: use a new method to detect headers sync timeout by @yangby-cryptape
- PR: feat: add sync state rpc by @driftluo
- PR: improvement: don’t cache all data of header map in memory during IBD by @yangby-cryptape
Parity
275 merged PRs (1, 2, 3), 105 closed issues (1, 2, 3), 87 open issues (1, 2, 3)
- News:
- Video: Gavin Wood - A Walkthrough of Polkadot’s Governance
- PR: CandidateBackingSubsystem by @montekki
- PR: Make a test crate to make the runtime-test usable by @cecton
- PR: Add a back-pressure-friendly alternative to NetworkService::write_notifications by @tomaka
- PR: Downward & Upward messages by @bkchr
Secret Network
61 merged PRs (1, 2), 32 closed issues (1), 14 open issues (1)
- News:
- Blog: Programmable Privacy: Turning Smart Contracts into Secret Contracts
- Blog: Secret Network MathWallet Tutorial
- Blog: The Secret Nodes Cookbook
- PR: Implement query_chain() by @assafmo
- PR: Node auth error messages - take 3 by @reuvenpo
Solana
252 merged PRs (1), 24 closed issues (1), 43 open issues (1)
- News:
- Announcing the Solana Arweave Interoperability Hack
- FTX Chooses Solana for Serum: A High-Speed, Non-Custodial Decentralized Derivatives Exchange
- FTX Listed SOL — Trading Is Now Live
- Solana (SOL) Is Now Open For Deposits On BitMax — Trading Will Begin At 2 PM UTC, July 20th
- Solana (SOL) Is Now Trading On Bithumb Global
- SOL Pairs Now Available For Trading On MXC
- Solana Newsletter: July, June
- PR: fix rewards points by @rwalker-com
- PR: Use BlockCommitmentCache for RPC slots by @garious
- PR: Add replay votes to gossip vote tracking by @carllin
Zcash
144 merged PRs (1, 2, 3), 74 closed issues (1, 2, 3), 58 open issues (1, 2, 3)
- News:
- News: Latest proposals to ZF Grants, Viewkeys in Zecwallet
- News: Weekly forum update: July 31, July 24, July 17, July 3
- Thread: @hdevalence highlighted major work on Zebra
- PR: Start work on new Amount type by @yaahc
- PR: Command execution tests by @oxarbitrage
- PR: sync: add backpressure to syncer by @hdevalence
Events
Aug 9-11 | Online
Community Ethereum Development Conference
Aug 15 | Online
ACAS2020. 2nd Workshop on Advanced Cryptography Applications and Standards
Aug 20 | Online
Aug 28-29 | Online
Chainlink’s Smart Contract Virtual Summit #0
Sep 17-18 | Surrey, UK
4th International Workshop on Cryptocurrencies and Blockchain Technology - CBT 2020
Oct 2-30 | Online
ETHOnline 2020. Summits + Hackathon.
Oct 21-23 | NYC, US
ACM Advances in Financial Technologies
Oct 27-28 | Dubai
Careers
Equilibrium | Remote
Findora | Menlo Park, CA
Informal Systems | Berlin, Toronto, Remote
Kraken | Remote
- Backend Engineer - Rust
- Senior Backend Engineer - Rust
- Backend Engineer - Crypto/Payments
- Backend Engineer, Data Processing – Rust
Libra | San Francisco, CA or Geneva, Switzerland
NEAR | Remote
Protocol Labs | Remote
- Software Engineer, Cryptography & Systems
- Software Engineer, Peer-to-Peer Networks
- Sr. Software Engineer, libp2p
- Sr. Software Engineer, Filecoin
Revault | Portugal or Remote
- Build a Bitcoin vault architecture
Solana | (Probably)Remote
Soramitsu | Remote
Trail of Bits | Remote
Want to be included in the next issue? Feel free to submit a PR to the #15 draft, or Tweet @rust_blockchain.
Join the discussion on RiB telegram group ❤️