=== SkyeGate ===
Contributors: skyemeta
Tags: token-gating, crypto, wallet, nft, web3
Requires at least: 6.0
Tested up to: 6.9
Requires PHP: 7.4
Stable tag: 1.0.4
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Token-gate WordPress content behind crypto wallet verification. Supports 31 blockchains. Powered by InsumerAPI.

== Description ==

SkyeGate lets you restrict access to any WordPress content based on what visitors hold in their crypto wallet. Powered by InsumerAPI, visitors connect their wallet, SkyeGate verifies their token or NFT holdings, and the gated content is revealed — all without collecting personal data.

**Free and fully functional.** Install, add a shortcode, and start gating content immediately. No API key or account required.

= What you can gate by =

* **Token balance** — require visitors to hold a minimum amount of any ERC-20 or SPL token
* **NFT ownership** — require visitors to own an NFT from a specific collection
* **EAS attestations** — require on-chain attestations via Ethereum Attestation Service
* **Native tokens** — gate by ETH, SOL, MATIC, and other native chain tokens

= Supported chains =

Ethereum, Solana, Polygon, Arbitrum, Base, Optimism, BNB Chain, Avalanche, and 23 more (31 blockchains total).

= How it works =

1. Add the `[skyegate]` shortcode around any content
2. Visitors see a "Connect Wallet" button
3. After connecting, SkyeGate verifies their holdings via InsumerAPI
4. If they qualify, the gated content is revealed (loaded server-side, not in page source)

= Wallets supported =

MetaMask, Phantom (EVM + Solana), Coinbase Wallet, and any wallet that supports EIP-6963.

== Installation ==

1. Upload the `skyegate` folder to `/wp-content/plugins/` or install via the WordPress plugin directory
2. Activate the plugin through the Plugins menu
3. Add a `[skyegate]` shortcode to any post or page — it works immediately
4. Optionally configure default chain, button text, and gate style under Settings > SkyeGate

== Frequently Asked Questions ==

= Do I need an API key to get started? =

No. SkyeGate includes InsumerAPI verification out of the box — no API key or account required.

= What wallets are supported? =

MetaMask, Phantom (EVM + Solana), Coinbase Wallet, and any wallet that supports EIP-6963.

= Can I gate by Solana tokens? =

Yes. Use `chain="solana"` in the shortcode. Phantom wallet connects automatically for Solana verification.

= Is the gated content truly hidden? =

Yes. Gated content is stored server-side and only delivered via AJAX after wallet verification passes. It is not present in the page source.

= Is user data collected? =

No. SkyeGate uses InsumerAPI to check on-chain data (token balances, NFT ownership). Verification results are cryptographically signed (ECDSA + JWKS). No personal information, email addresses, or wallet contents are stored.

== External Services ==

This plugin connects to two external services for wallet verification. No personal data is collected or transmitted — only public blockchain wallet addresses and your site domain are sent.

= SkyeGate API (skyemeta.com) =

When a visitor connects their wallet, the plugin sends a POST request to `https://skyemeta.com/api/verify` with the visitor's public wallet address, the gate conditions you configured, and your site domain. The service returns a signed verification result. This happens each time a visitor attempts to access gated content.

* [SkyeGate Terms of Service](https://skyemeta.com/terms/)
* [SkyeGate Privacy Policy](https://skyemeta.com/privacy/)

= InsumerAPI (api.insumermodel.com) =

To verify that the returned attestation was genuinely signed by InsumerAPI and has not been tampered with, the plugin fetches a public signing key (JWKS) from `https://api.insumermodel.com/.well-known/jwks.json`. No user data is sent — this is a public key fetch, cached for 24 hours.

* [InsumerAPI Terms of Service](https://insumermodel.com/terms-of-service)
* [InsumerAPI Privacy Policy](https://insumermodel.com/privacy-policy)

== Source Code ==

The unminified source for `public/js/skyegate-wallet.js` is included in the plugin at `src/wallet.js`. The minified file is built with Vite using `npm run build`. The build configuration is in `package.json` and `vite.config.js`.

== Screenshots ==

1. The SkyeGate connect wallet prompt on the frontend
2. Gated content revealed after wallet verification

== Changelog ==

= 1.0.4 =
* Single-condition gates on 31 blockchains (token balance, NFT ownership, EAS attestation)
* Multi-wallet: MetaMask, Phantom, Coinbase Wallet, and any wallet supporting EIP-6963
* Cryptographically signed verification results (ECDSA + JWKS), verified on the server before content release
* Server-side content delivery — gated HTML is never present in the page source
* Per-visitor session binding so a verification in one browser does not unlock gated content in another
* Built-in caching to minimize verification calls
