For the complete documentation index, see llms.txt. This page is also available as Markdown.

Collections

Using stype variables in arrays and maps

Shielded Arrays

Arrays of shielded types work like standard Solidity arrays. Keys (indices) must be non-shielded — using a shielded type as an array index is a compiler error.

They come in two forms:

  • Dynamic (suint256[], sbool[], saddress[], etc.) — the length is stored as shielded.

  • Fixed-size (suint256[5], sbool[4], saddress[3], etc.) — the length is a compile-time constant and publicly visible.

suint256[] private balances;     // dynamic — shielded length
sbool[4] private flags;          // fixed — length 4 is public

function example(uint256 i) public {
    balances[i] = suint256(100);   // valid — uint256 index
    flags[0] = sbool(true);        // valid — literal index
}

Shielded Mappings

Mappings can have shielded values but keys cannot be shielded types. Using a shielded type as a mapping key is a compiler error. The standard mapping syntax applies.

mapping(address => suint256) private balances;    // valid
mapping(uint256 => sbool) private flags;          // valid
mapping(address => saddress) private recipients;  // valid

mapping(saddress => uint256) private lookup;      // INVALID — shielded key

Last updated