Skip to content
Solana Devnet: test network. Documents and acceptances here are for testing, not production evidence.

Build with Stele.

Prove which terms each user accepted — or make your Solana program require them. Install a package, follow one guide, look things up in the references.

Browser & Node.js

npm install @stelehq/sdk
npm ↗

Solana program (Rust)

cargo add stele-gate
crates.io ↗

Plain HTML

<script src="https://stele.site/sdk/v1/stele.js" defer></script>
Widget guide ↗

Stele Proof

Prove which terms each user accepted

  1. 1Publish your terms in the dashboard.
  2. 2Add the widget: the user signs the exact text, free.
  3. 3Check acceptances from your server or verify them on Solana.
<div
  data-stele-organization="acme.com"
  data-stele-document="terms-of-service"
></div>

<script src="https://stele.site/sdk/v1/stele.js" defer></script>
Proof guide — step by step

Stele Gate

Make your program require the current terms

  1. 1Create a policy: which document and version an action needs.
  2. 2Call require_current() in your Solana program.
  3. 3Wrap the action with gate() in your app: Accept & Continue.
// Cargo.toml: stele-gate = "1"
pub const POLICY: Pubkey = pubkey!("YOUR_POLICY_ADDRESS");

pub fn deposit(ctx: Context<Deposit>, amount: u64) -> Result<()> {
    stele_gate::require_current(
        &ctx.accounts.access_pass,
        &ctx.accounts.policy, // #[account(address = POLICY)]
        &ctx.accounts.user,
    )?;
    // … the protected action
    Ok(())
}
Gate guide — step by step

References

API base URL

Solana Devnetthis site

https://stele.site/api/v1

Solana Mainnet

Not available yet

Each network is a separate Stele app with its own API keys and data. Server endpoints use an API key from the dashboard (API keys).