Skip to main content

Intro to Sig

Sig is a reads-optimized Solana validator client written in Zig. Read the announcement blog post for more information on the goals of this project.


Sig's Goals:

  • Performance → improved RPS (Reads-Per-Second)
  • Client Diversity → improved Network Fault Tolerance
  • Readability → improved Accessibility

RPS Performance

96% of All Calls Made to a Node Are Reads

This heavy use of read calls makes Solana validators lag behind the rest of the network (which we call slot lag).

As blockchains scale and more of the digital world is stored on-chain, the importance of fast, reliable reads will only increase.

Sig emphasizes maximizing RPS with low-latency and high-throughput RPC methods for fast interactions and smooth user experiences.

Client Diversity

Introducing a new client aims to reduce the risk of systemic failures due to bugs or vulnerabilities existing in a single client.

Client diversity will bolster Solana's fault tolerance to maintain uninterrupted operations, fortifying the chain's reliability.

Protocol Accessibility

Sig is written with a focus on readability and simplicity to ensure a modular and contributor-friendly implementation of the protocol to grow the core developer ecosystem.

🤔 Why Zig?

Zig's definition:

Zig is a general-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.

  1. Optimized performance: Zig provides control over how your program runs at a low level, similar to languages like C. It allows fine-grained control over aspects such as memory management and system calls, which can lead to improved performance.

  2. Safety focus: Zig has built-in features to prevent bugs and safety issues common in C. For example, it includes testing and bounds checking, which can help avoid problems such as buffer overflows and undefined behavior.

  3. Readability and maintainability: Zig syntax is designed to be straightforward and clear. This can make the code easier to understand, more maintainable, and less prone to bugs.

  4. No hidden control flow: Zig doesn't allow hidden control flow like exceptions in some other languages. This can make it easier to reason about what your program is doing.

  5. Integration with C: Zig has excellent interoperation with C. You can directly include C libraries and headers in a Zig program, which can save time when using existing C libraries.

  6. Custom allocators: Zig allows you to define custom memory allocation strategies for different parts of your program. This provides the flexibility to optimize memory usage for specific use cases or workloads.

📚 Learn More