Shield Protocol

El nivel 1 funciona hoy con cualquier anchor SEP-24; el nivel 2 permite que los anchors depositen en el pool de forma nativa.

El Shield Protocol se apoya en SEP-24, SEP-10, SEP-53 y un pool de Stellar Private Payments con allow-list, block-list y Global View Key. El nombre no lleva marca para que cualquier anchor lo pueda adoptar.

Roles

RolQué hace
UsuarioDeriva sus llaves del pool en la wallet; las llaves de gasto nunca salen de ahí
AnchorRampa SEP-24: KYC, recibe el pago en fiat, paga el activo
ASPMantiene la allow-list y la block-list del pool
AuditorTiene la Global View Key y puede descifrar cada nota
Shield (nivel 1)ASP + cuenta ómnibus + cliente SEP-24 frente a cualquier anchor

Nivel 1: Shield como middleware (implementado)

Registro

  1. La wallet deriva la llave de nota, la de cifrado y la hoja del ASP. El usuario no se registra en el registro público de llaves del pool, porque esa transacción publicaría su dirección.
  2. La cuenta firma las llaves (SEP-53) y las envía al ASP.
  3. Tras el KYC, el ASP inserta la hoja en la allow-list. Bloquear es insertar la llave de nota en la block-list.

Depósito

  1. Shield se autentica con el anchor (SEP-10) como su cuenta ómnibus, con un memo id del usuario.
  2. Shield pide un depósito interactivo (SEP-24) a su cuenta ómnibus, con un memo id aleatorio del intent.
  3. El usuario paga en el widget del anchor; el anchor le paga a la cuenta ómnibus.
  4. Shield fondea el intent solo con la transacción que reporta el anchor (stellar_transaction_id), nunca solo porque un pago traiga el memo.
  5. Shield deposita en el pool (ext_amount > 0) y luego transfiere en privado al usuario (ext_amount = 0).

Nivel 2: depósitos privados nativos (borrador)

El anchor deposita directo en el pool a las llaves del usuario, lo que elimina la custodia de Shield.

stellar.toml
SHIELD_PROTOCOL_VERSION = "0.1"
SHIELD_POOL_CONTRACT = "C…"
SHIELD_ASP_ENDPOINT = "https://…"
GET /info (SEP-24)
{ "features": { "shielded_deposit": true } }
Depósito interactivo SEP-24
POST /transactions/deposit/interactive
asset_code=USDC
destination_type=shielded
shielded_recipient=<note_public_key>:<encryption_public_key>

El borrador completo, con la liquidación, los retiros, las consideraciones de seguridad y las preguntas abiertas, está en docs/protocol/shield-protocol.md (en inglés).