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.

Motivation

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 frequent use of read calls causes Solana validators to fall behind the rest of the network, a condition known as 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 focuses on optimizing RPS using low-latency and high-throughput RPC methods, ensuring quick interactions and a seamless user experience.

Client Diversity

Introducing a new client aims to minimize the risk of systemic failures caused by bugs or vulnerabilities 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

Zig

Solana

Sig