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
| Rol | Qué hace |
|---|---|
| Usuario | Deriva sus llaves del pool en la wallet; las llaves de gasto nunca salen de ahí |
| Anchor | Rampa SEP-24: KYC, recibe el pago en fiat, paga el activo |
| ASP | Mantiene la allow-list y la block-list del pool |
| Auditor | Tiene 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
- 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.
- La cuenta firma las llaves (SEP-53) y las envía al ASP.
- 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
- Shield se autentica con el anchor (SEP-10) como su cuenta ómnibus, con un memo
iddel usuario. - Shield pide un depósito interactivo (SEP-24) a su cuenta ómnibus, con un memo
idaleatorio del intent. - El usuario paga en el widget del anchor; el anchor le paga a la cuenta ómnibus.
- Shield fondea el intent solo con la transacción que reporta el anchor (
stellar_transaction_id), nunca solo porque un pago traiga el memo. - 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.
SHIELD_PROTOCOL_VERSION = "0.1"
SHIELD_POOL_CONTRACT = "C…"
SHIELD_ASP_ENDPOINT = "https://…"{ "features": { "shielded_deposit": true } }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).