• Deterministic Storage Program name for (channelId, subnetMemberId). Public so resolveMember can re-derive it; included verbatim in tests.

    Components are percent-encoded so the layout stays one-to-one. Without this guard, the pairs ("a:b", "c") and ("a", "b:c") would collide on the same SP name and resolveMember could be tricked into returning a binding from one channel/member context for a lookup of another.

    Parameters

    • channelId: string
    • subnetMemberId: string

    Returns string