<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>OrcaRail API Blog</title>
        <link>https://docs.orcarail.com/es/blog/</link>
        <description>OrcaRail API Blog</description>
        <lastBuildDate>Tue, 13 Oct 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>es</language>
        <item>
            <title><![CDATA[Pasarelas de pago con criptomonedas (2026): 10 pasarelas crypto comparadas]]></title>
            <link>https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/</link>
            <guid>https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/</guid>
            <pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Lista comparativa de 10 pasarelas de pago con criptomonedas en 2026, con comisiones, pagos recurrentes, custodia y stablecoins (USDT, USDC) de Coinbase Commerce, BitPay, NOWPayments, CoinGate, CoinPayments, Cryptomus, Stripe, MoonPay Commerce, BTCPay Server y OrcaRail.]]></description>
            <content:encoded><![CDATA[<p>Esta es una lista de las principales <strong>pasarelas de pago con criptomonedas</strong> (pasarelas cripto o crypto) en 2026, comparadas en lo que importa al integrar una: <strong>comisiones, pagos recurrentes, custodia y soporte de stablecoins</strong>.</p>
<p><strong>Aviso:</strong> OrcaRail publica este blog y es una de las pasarelas de la lista. Todas las cifras de la competencia proceden de la página de precios o la documentación de cada proveedor, revisadas el <strong>13 de octubre de 2026</strong>, con enlace a la fuente. Los precios cambian, así que confírmalos con el proveedor antes de decidir.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="quick-comparison">Comparación rápida<a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#quick-comparison" class="hash-link" aria-label="Enlace directo al Comparación rápida" title="Enlace directo al Comparación rápida" translate="no">​</a></h2>
<table><thead><tr><th>Pasarela</th><th>Comisión publicada (plan estándar)</th><th>Pagos recurrentes</th><th>Modelo</th></tr></thead><tbody><tr><td><a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#orcarail" class="">OrcaRail</a></td><td>0,5 % por transacción completada, las primeras 1.000 gratis; sin comisión si es autoalojado</td><td>Sí: enlace de pago por ciclo o cobro automático on-chain (EVM, Solana)</td><td>API alojada o autoalojada; no custodial por defecto</td></tr><tr><td><a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#coinbase-commerce" class="">Coinbase Commerce</a></td><td>1 %</td><td>No documentado</td><td>Alojado</td></tr><tr><td><a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#bitpay" class="">BitPay</a></td><td>2 % + 0,25 $ (menos a mayor volumen)</td><td>Basado en facturas</td><td>Alojado, liquida en fiat o cripto</td></tr><tr><td><a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#nowpayments" class="">NOWPayments</a></td><td>Desde 0,5 % (1 % con conversión)</td><td>Sí: facturas recurrentes</td><td>Alojado</td></tr><tr><td><a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#coingate" class="">CoinGate</a></td><td>1 %</td><td>Facturas programadas</td><td>Alojado</td></tr><tr><td><a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#coinpayments" class="">CoinPayments</a></td><td>3 % + comisión de red</td><td>No documentado</td><td>Alojado</td></tr><tr><td><a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#cryptomus" class="">Cryptomus</a></td><td>2 % para cuentas nuevas, negociable hasta 0,4 %</td><td>Sí</td><td>Alojado</td></tr><tr><td><a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#stripe-stablecoin-payments" class="">Pagos con stablecoins de Stripe</a></td><td>1,5 %</td><td>Sí, mediante Stripe Billing</td><td>Alojado, liquida en fiat</td></tr><tr><td><a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#moonpay-commerce-formerly-helio" class="">MoonPay Commerce (Helio)</a></td><td>1 %–2 %</td><td>Sí</td><td>Alojado</td></tr><tr><td><a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#btcpay-server" class="">BTCPay Server</a></td><td>Ninguna (pagas el hosting)</td><td>No integrado</td><td>Autoalojado, código abierto</td></tr></tbody></table>
<p>Las comisiones de red (gas) son aparte en todas las pasarelas, y quién las paga depende del proveedor y de tu configuración.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-choose">Cómo elegir una pasarela de pago cripto<a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#how-to-choose" class="hash-link" aria-label="Enlace directo al Cómo elegir una pasarela de pago cripto" title="Enlace directo al Cómo elegir una pasarela de pago cripto" translate="no">​</a></h2>
<ul>
<li class=""><strong>¿Vendes suscripciones?</strong> Elige entre pasarelas que <strong>envían una factura en cada ciclo</strong>, que el cliente paga a mano, y pasarelas que <strong>cobran automáticamente</strong> a partir de una aprobación que el cliente firma una vez. El cobro automático reduce la cancelación. On-chain, funciona mediante un allowance ERC-20 en cadenas EVM o una delegación de token SPL en Solana. <a class="" href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/">Por qué elegimos los cobros por allowance</a>.</li>
<li class=""><strong>Comisión según tu volumen.</strong> Un porcentaje fijo es fácil de calcular. Las comisiones fijas por factura, como los 0,25 $ de BitPay, pesan mucho en pagos pequeños.</li>
<li class=""><strong>Custodia y liquidación.</strong> Algunas pasarelas guardan tus fondos y te pagan en fiat. Otras envían las stablecoins directamente a una wallet que controlas tú.</li>
<li class=""><strong>Stablecoins y redes.</strong> Comprueba que los tokens que tienen tus clientes (USDC, USDT) se aceptan en las redes que usan.</li>
<li class=""><strong>Pruebas.</strong> Un sandbox en testnet te permite probar todo el flujo, incluidos webhooks y renovaciones, sin dinero real.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="orcarail">OrcaRail<a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#orcarail" class="hash-link" aria-label="Enlace directo al OrcaRail" title="Enlace directo al OrcaRail" translate="no">​</a></h2>
<p><a href="https://orcarail.com/" target="_blank" rel="noopener noreferrer" class="">OrcaRail</a> es una API pensada para desarrolladores para <strong>checkout y suscripciones con stablecoins</strong> en cadenas EVM y Solana.</p>
<ul>
<li class=""><strong>Comisión:</strong> 0,5 % por transacción completada en la plataforma alojada, y las primeras 1.000 transacciones son gratis. OrcaRail autoalojado no tiene comisión de OrcaRail. Consulta los <a href="https://orcarail.com/pricing/" target="_blank" rel="noopener noreferrer" class="">precios</a>.</li>
<li class=""><strong>Pagos recurrentes:</strong> dos métodos de cobro. Un <strong>enlace de pago</strong> por ciclo, o el <strong>cobro automático</strong> on-chain que cobra cada renovación de un allowance ERC-20 (EVM) o una delegación SPL (Solana). Consulta <a class="" href="https://docs.orcarail.com/es/docs/subscriptions/overview/">suscripciones</a>.</li>
<li class=""><strong>Custodia:</strong> no custodial por defecto. Los pagos se liquidan en direcciones de retiro que controlas tú.</li>
<li class=""><strong>Herramientas para desarrolladores:</strong> API REST, webhooks firmados, SDK de Node y PHP, un paquete de Laravel Cashier, un plugin de WooCommerce y un <a class="" href="https://docs.orcarail.com/es/docs/integration/mcp/">servidor MCP</a> para agentes de programación con IA.</li>
<li class=""><strong>Pruebas:</strong> <a class="" href="https://docs.orcarail.com/es/docs/sandbox/overview/">organizaciones sandbox</a> gratuitas en testnets con claves <code>ak_test_</code>.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="coinbase-commerce">Coinbase Commerce<a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#coinbase-commerce" class="hash-link" aria-label="Enlace directo al Coinbase Commerce" title="Enlace directo al Coinbase Commerce" translate="no">​</a></h2>
<p><a href="https://www.coinbase.com/commerce" target="_blank" rel="noopener noreferrer" class="">Coinbase Commerce</a> es el checkout para comercios de Coinbase.</p>
<ul>
<li class=""><strong>Comisión:</strong> 1 % por transacción, según la página de Commerce.</li>
<li class=""><strong>Pagos recurrentes:</strong> Coinbase Commerce no documenta una función nativa de suscripciones.</li>
<li class=""><strong>Nota:</strong> Coinbase ha anunciado que <a href="https://www.coinbase.com/blog/introducing-a-powerful-suite-of-business-payment-tools-on-coinbase-business" target="_blank" rel="noopener noreferrer" class="">integrará Commerce en Coinbase Business</a>. Comprueba si el alta está abierta en tu país.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bitpay">BitPay<a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#bitpay" class="hash-link" aria-label="Enlace directo al BitPay" title="Enlace directo al BitPay" translate="no">​</a></h2>
<p><a href="https://bitpay.com/" target="_blank" rel="noopener noreferrer" class="">BitPay</a> es uno de los procesadores cripto más antiguos. Liquida en cuenta bancaria o en cripto.</p>
<ul>
<li class=""><strong>Comisión:</strong> escalonada según el volumen mensual. 2 % + 0,25 $ por factura pagada por debajo de 500.000 $ al mes, 1,5 % + 0,25 $ hasta 1 M$, y 1 % + 0,25 $ por encima. Consulta el <a href="https://support.bitpay.com/hc/en-us/articles/203324073-What-fees-will-I-pay-to-use-BitPay-for-payment-processing" target="_blank" rel="noopener noreferrer" class="">soporte de BitPay</a>.</li>
<li class=""><strong>Pagos recurrentes:</strong> basados en facturas. El cliente paga cada factura.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="nowpayments">NOWPayments<a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#nowpayments" class="hash-link" aria-label="Enlace directo al NOWPayments" title="Enlace directo al NOWPayments" translate="no">​</a></h2>
<p><a href="https://nowpayments.io/" target="_blank" rel="noopener noreferrer" class="">NOWPayments</a> admite una larga lista de criptomonedas.</p>
<ul>
<li class=""><strong>Comisión:</strong> desde 0,5 % para pagos sin conversión de moneda. Los pagos con conversión cuestan 1 %. Consulta los <a href="https://nowpayments.io/pricing" target="_blank" rel="noopener noreferrer" class="">precios</a>.</li>
<li class=""><strong>Pagos recurrentes:</strong> una Recurring Payments API que envía facturas o solicitudes de pago en cada periodo.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="coingate">CoinGate<a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#coingate" class="hash-link" aria-label="Enlace directo al CoinGate" title="Enlace directo al CoinGate" translate="no">​</a></h2>
<p><a href="https://coingate.com/" target="_blank" rel="noopener noreferrer" class="">CoinGate</a> es un procesador alojado con sede en la UE.</p>
<ul>
<li class=""><strong>Comisión:</strong> 1 % por transacción en el plan Standard, sin cuota mensual. Las tarifas Enterprise son personalizadas. Consulta los <a href="https://coingate.com/pricing" target="_blank" rel="noopener noreferrer" class="">precios</a>.</li>
<li class=""><strong>Pagos recurrentes:</strong> el producto Billing envía «facturas puntuales o programadas».</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="coinpayments">CoinPayments<a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#coinpayments" class="hash-link" aria-label="Enlace directo al CoinPayments" title="Enlace directo al CoinPayments" translate="no">​</a></h2>
<p><a href="https://www.coinpayments.net/" target="_blank" rel="noopener noreferrer" class="">CoinPayments</a> admite muchas monedas y tokens.</p>
<ul>
<li class=""><strong>Comisión:</strong> 3 % por pago más comisiones de red, según su <a href="https://www.coinpayments.net/help-fees" target="_blank" rel="noopener noreferrer" class="">página de comisiones</a>. La página también menciona un plan gratuito, pero solo se aplica a depósitos en wallets personales, no a pagos de comercios.</li>
<li class=""><strong>Pagos recurrentes:</strong> no documentados en la página de comisiones.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="cryptomus">Cryptomus<a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#cryptomus" class="hash-link" aria-label="Enlace directo al Cryptomus" title="Enlace directo al Cryptomus" translate="no">​</a></h2>
<p><a href="https://cryptomus.com/" target="_blank" rel="noopener noreferrer" class="">Cryptomus</a> ofrece pagos, envíos y cambio en una sola cuenta.</p>
<ul>
<li class=""><strong>Comisión:</strong> las cuentas nuevas pagan 2 % por transacción. Según el tipo de negocio, el volumen y la integración, la tarifa puede bajar a 0,4 %. Consulta las <a href="https://cryptomus.com/fees/payment" target="_blank" rel="noopener noreferrer" class="">comisiones de pago</a>.</li>
<li class=""><strong>Pagos recurrentes:</strong> se ofrecen como servicio de pagos recurrentes.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="stripe-stablecoin-payments">Pagos con stablecoins de Stripe<a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#stripe-stablecoin-payments" class="hash-link" aria-label="Enlace directo al Pagos con stablecoins de Stripe" title="Enlace directo al Pagos con stablecoins de Stripe" translate="no">​</a></h2>
<p><a href="https://docs.stripe.com/payments/stablecoin-payments" target="_blank" rel="noopener noreferrer" class="">Stripe</a> acepta stablecoins y las liquida en tu saldo de Stripe en <strong>moneda fiat local</strong>.</p>
<ul>
<li class=""><strong>Comisión:</strong> 1,5 % del importe de la transacción en USD. Consulta la <a href="https://docs.stripe.com/crypto/stablecoin-payments" target="_blank" rel="noopener noreferrer" class="">documentación de Stripe</a>.</li>
<li class=""><strong>Tokens:</strong> USDC en Tempo, Ethereum, Solana, Polygon y Base. USDP y USDG se aceptan en algunas cadenas, solo en EE. UU.</li>
<li class=""><strong>Pagos recurrentes:</strong> sí, mediante <a href="https://docs.stripe.com/billing/subscriptions/stablecoins" target="_blank" rel="noopener noreferrer" class="">suscripciones de Stripe Billing</a>.</li>
<li class=""><strong>Límites:</strong> la empresa debe estar en un país admitido. EE. UU. tiene disponibilidad general, y la UE, Hong Kong, México y Suiza están en vista previa privada. Los clientes pueden pagar hasta 10.000 $ por transacción, y los pagos con stablecoins no admiten disputas.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="moonpay-commerce-formerly-helio">MoonPay Commerce (antes Helio)<a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#moonpay-commerce-formerly-helio" class="hash-link" aria-label="Enlace directo al MoonPay Commerce (antes Helio)" title="Enlace directo al MoonPay Commerce (antes Helio)" translate="no">​</a></h2>
<p><a href="https://www.moonpay.com/newsroom/moonpay-commerce" target="_blank" rel="noopener noreferrer" class="">MoonPay Commerce</a> es el antiguo producto Helio, nacido en el ecosistema de Solana.</p>
<ul>
<li class=""><strong>Comisión:</strong> 1 % o 2 % por transacción, según el plan y la categoría de riesgo. Los swaps cuestan un 0,25 % extra y el off-ramp automático un 0,5 %. Consulta los <a href="https://docs.hel.io/docs/pricing-fees" target="_blank" rel="noopener noreferrer" class="">precios</a>.</li>
<li class=""><strong>Pagos recurrentes:</strong> admite suscripciones.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="btcpay-server">BTCPay Server<a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#btcpay-server" class="hash-link" aria-label="Enlace directo al BTCPay Server" title="Enlace directo al BTCPay Server" translate="no">​</a></h2>
<p><a href="https://btcpayserver.org/" target="_blank" rel="noopener noreferrer" class="">BTCPay Server</a> es software gratuito, de código abierto y autoalojado, centrado en Bitcoin y Lightning.</p>
<ul>
<li class=""><strong>Comisión:</strong> sin comisión de procesamiento. Pagas el hosting y gestionas el servidor tú mismo.</li>
<li class=""><strong>Pagos recurrentes:</strong> no es una función principal.</li>
<li class=""><strong>Custodia:</strong> totalmente no custodial. Los pagos van a tu propia wallet.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="summary">Resumen<a href="https://docs.orcarail.com/es/blog/crypto-payment-gateways-list/#summary" class="hash-link" aria-label="Enlace directo al Resumen" title="Enlace directo al Resumen" translate="no">​</a></h2>
<ul>
<li class=""><strong>Comisión publicada más baja en una plataforma alojada:</strong> OrcaRail (0,5 %, las primeras 1.000 gratis) y NOWPayments (desde 0,5 % sin conversión). Cryptomus llega al 0,4 % solo tras negociar.</li>
<li class=""><strong>Gratis y autoalojado:</strong> BTCPay Server para Bitcoin, u OrcaRail autoalojado para stablecoins en EVM y Solana.</li>
<li class=""><strong>Suscripciones automáticas on-chain sin facturas por ciclo:</strong> el cobro automático de OrcaRail. Stripe Billing también admite suscripciones con stablecoins, al 1,5 % y con liquidación en fiat.</li>
<li class=""><strong>Liquidar en un banco en fiat:</strong> Stripe o BitPay.</li>
</ul>
<p>Para probar OrcaRail, abre un <a class="" href="https://docs.orcarail.com/es/docs/sandbox/overview/">sandbox</a> gratuito y sigue la guía de <a class="" href="https://docs.orcarail.com/es/docs/getting-started/">primeros pasos</a>.</p>]]></content:encoded>
            <category>Payments</category>
            <category>Crypto</category>
            <category>Stablecoins</category>
            <category>Subscriptions</category>
        </item>
        <item>
            <title><![CDATA[Faucets de testnet para el sandbox de OrcaRail: EVM, Solana y Bitcoin]]></title>
            <link>https://docs.orcarail.com/es/blog/testnet-faucets/</link>
            <guid>https://docs.orcarail.com/es/blog/testnet-faucets/</guid>
            <pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Dónde conseguir tokens de prueba gratis para cada testnet que admite el sandbox de OrcaRail: USDC y gas en Ethereum Sepolia, Arbitrum Sepolia y Base Sepolia, Solana Devnet y Bitcoin testnet4.]]></description>
            <content:encoded><![CDATA[<p>Una <a class="" href="https://docs.orcarail.com/es/docs/sandbox/overview/">organización sandbox</a> de OrcaRail funciona solo en testnets, así que pagas con tokens de prueba gratuitos en lugar de fondos reales. Esta página reúne un faucet para cada testnet que admite el sandbox.</p>
<!-- -->
<p>No necesitas ningún token si solo quieres ver el flujo: haz clic en <strong>Simular pago</strong> en una página de pago del sandbox o llama a <code>POST /payment_intents/:id/simulate</code>. Consulta <a class="" href="https://docs.orcarail.com/es/docs/sandbox/simulate-payments/">Simular pagos</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-you-need">Qué necesitas<a href="https://docs.orcarail.com/es/blog/testnet-faucets/#what-you-need" class="hash-link" aria-label="Enlace directo al Qué necesitas" title="Enlace directo al Qué necesitas" translate="no">​</a></h2>
<ul>
<li class=""><strong>El token con el que pagas:</strong> USDC en cadenas EVM y Solana, o BTC en Bitcoin.</li>
<li class=""><strong>Gas para la transacción:</strong> ETH en cadenas EVM o SOL en Solana. Bitcoin paga su comisión en BTC.</li>
</ul>
<p>Usa la wallet del pagador que vayas a conectar en la página de pago de OrcaRail.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="usdc-for-every-chain-circle-faucet">USDC para todas las cadenas: faucet de Circle<a href="https://docs.orcarail.com/es/blog/testnet-faucets/#usdc-for-every-chain-circle-faucet" class="hash-link" aria-label="Enlace directo al USDC para todas las cadenas: faucet de Circle" title="Enlace directo al USDC para todas las cadenas: faucet de Circle" translate="no">​</a></h2>
<p>El <a href="https://faucet.circle.com/" target="_blank" rel="noopener noreferrer" class="">faucet de USDC de Circle</a> envía USDC de prueba gratis en cada una de las testnets EVM de abajo y en Solana Devnet. Elige la red, pega la dirección de tu wallet y solicita los tokens.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="evm-testnets">Testnets EVM<a href="https://docs.orcarail.com/es/blog/testnet-faucets/#evm-testnets" class="hash-link" aria-label="Enlace directo al Testnets EVM" title="Enlace directo al Testnets EVM" translate="no">​</a></h2>
<table><thead><tr><th>Red</th><th>USDC de prueba</th><th>Gas (ETH)</th></tr></thead><tbody><tr><td>Ethereum Sepolia</td><td><a href="https://faucet.circle.com/" target="_blank" rel="noopener noreferrer" class="">Faucet de Circle</a></td><td><a href="https://cloud.google.com/application/web3/faucet/ethereum/sepolia" target="_blank" rel="noopener noreferrer" class="">Faucet de Google Cloud</a>, <a href="https://www.alchemy.com/faucets/ethereum-sepolia" target="_blank" rel="noopener noreferrer" class="">faucet de Alchemy</a></td></tr><tr><td>Arbitrum Sepolia</td><td><a href="https://faucet.circle.com/" target="_blank" rel="noopener noreferrer" class="">Faucet de Circle</a></td><td><a href="https://www.alchemy.com/faucets/arbitrum-sepolia" target="_blank" rel="noopener noreferrer" class="">Faucet de Alchemy</a>, <a href="https://faucet.quicknode.com/arbitrum/sepolia" target="_blank" rel="noopener noreferrer" class="">faucet de QuickNode</a></td></tr><tr><td>Base Sepolia</td><td><a href="https://faucet.circle.com/" target="_blank" rel="noopener noreferrer" class="">Faucet de Circle</a></td><td><a href="https://portal.cdp.coinbase.com/products/faucet" target="_blank" rel="noopener noreferrer" class="">Faucet de Coinbase Developer Platform</a>, <a href="https://www.alchemy.com/faucets/base-sepolia" target="_blank" rel="noopener noreferrer" class="">faucet de Alchemy</a>, <a href="https://faucet.quicknode.com/base/sepolia" target="_blank" rel="noopener noreferrer" class="">faucet de QuickNode</a></td></tr></tbody></table>
<p>La documentación de cada cadena también incluye faucets: <a href="https://docs.arbitrum.io/for-devs/dev-tools-and-resources/chain-info" target="_blank" rel="noopener noreferrer" class="">Arbitrum</a> y <a href="https://docs.base.org/base-chain/tools/network-faucets" target="_blank" rel="noopener noreferrer" class="">Base</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="solana-devnet">Solana Devnet<a href="https://docs.orcarail.com/es/blog/testnet-faucets/#solana-devnet" class="hash-link" aria-label="Enlace directo al Solana Devnet" title="Enlace directo al Solana Devnet" translate="no">​</a></h2>
<table><thead><tr><th>Token</th><th>Faucet</th></tr></thead><tbody><tr><td>USDC de prueba</td><td><a href="https://faucet.circle.com/" target="_blank" rel="noopener noreferrer" class="">Faucet de Circle</a> (elige Solana Devnet)</td></tr><tr><td>SOL para comisiones</td><td><a href="https://faucet.solana.com/" target="_blank" rel="noopener noreferrer" class="">Faucet de Solana</a></td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bitcoin-testnet4">Bitcoin testnet4<a href="https://docs.orcarail.com/es/blog/testnet-faucets/#bitcoin-testnet4" class="hash-link" aria-label="Enlace directo al Bitcoin testnet4" title="Enlace directo al Bitcoin testnet4" translate="no">​</a></h2>
<p>OrcaRail usa Bitcoin <strong>testnet4</strong> (explorador: <a href="https://mempool.space/testnet4" target="_blank" rel="noopener noreferrer" class="">mempool.space testnet4</a>). Usa una wallet que admita direcciones de testnet4.</p>
<table><thead><tr><th>Token</th><th>Faucet</th></tr></thead><tbody><tr><td>BTC de prueba</td><td><a href="https://mempool.space/testnet4/faucet" target="_blank" rel="noopener noreferrer" class="">Faucet de mempool.space testnet4</a>, <a href="https://faucet.testnet4.dev/" target="_blank" rel="noopener noreferrer" class="">faucet de testnet4.dev</a>, <a href="https://coinfaucet.eu/en/btc-testnet4/" target="_blank" rel="noopener noreferrer" class="">CoinFaucet testnet4</a></td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tips">Consejos<a href="https://docs.orcarail.com/es/blog/testnet-faucets/#tips" class="hash-link" aria-label="Enlace directo al Consejos" title="Enlace directo al Consejos" translate="no">​</a></h2>
<ul>
<li class="">Los faucets limitan las solicitudes, a menudo a una por dirección y día. Pídelos con antelación.</li>
<li class="">Algunos faucets de gas piden iniciar sesión o tener un pequeño saldo en mainnet.</li>
<li class="">Tu sandbox muestra exactamente qué testnets están activas. Consulta <a class="" href="https://docs.orcarail.com/es/docs/sandbox/testnets-and-faucets/">Testnets y faucets</a> para conocer las reglas: las organizaciones live no pueden usar testnets y los sandboxes no pueden usar mainnets.</li>
</ul>]]></content:encoded>
            <category>Sandbox</category>
            <category>Multi-Chain</category>
            <category>Stablecoins</category>
            <category>Crypto</category>
        </item>
        <item>
            <title><![CDATA[Los paquetes para desarrolladores de OrcaRail son de código abierto]]></title>
            <link>https://docs.orcarail.com/es/blog/orcarail-packages-open-source/</link>
            <guid>https://docs.orcarail.com/es/blog/orcarail-packages-open-source/</guid>
            <pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Los SDK, el servidor MCP, el plugin de WooCommerce y la app de demostración de OrcaRail son de código abierto con licencia MIT. Úsalos, abre issues y contribuye con pull requests en GitHub.]]></description>
            <content:encoded><![CDATA[<p><strong>31 de julio de 2026</strong>: los <strong>paquetes para desarrolladores</strong> de OrcaRail ya son de <strong>código abierto</strong> con licencia <strong>MIT</strong>. Puedes usarlos libremente, abrir issues cuando algo falle o falte y contribuir con mejoras cuando puedas.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-open-source">Qué es de código abierto<a href="https://docs.orcarail.com/es/blog/orcarail-packages-open-source/#whats-open-source" class="hash-link" aria-label="Enlace directo al Qué es de código abierto" title="Enlace directo al Qué es de código abierto" translate="no">​</a></h2>
<p>Estos paquetes son públicos en GitHub y tienen licencia MIT:</p>
<table><thead><tr><th>Paquete</th><th>Registro / función</th><th>Repositorio</th></tr></thead><tbody><tr><td><strong>SDK de Node</strong></td><td><code>@orcarail/node</code></td><td><a href="https://github.com/orcarail/orcarail-node" target="_blank" rel="noopener noreferrer" class="">orcarail/orcarail-node</a></td></tr><tr><td><strong>SDK de PHP</strong></td><td><code>orcarail/orcarail-php</code></td><td><a href="https://github.com/OrcaRail/sdks-php" target="_blank" rel="noopener noreferrer" class="">OrcaRail/sdks-php</a></td></tr><tr><td><strong>Laravel Cashier</strong></td><td><code>orcarail/cashier-orcarail</code></td><td><a href="https://github.com/OrcaRail/sdks-laravel-cashier" target="_blank" rel="noopener noreferrer" class="">OrcaRail/sdks-laravel-cashier</a></td></tr><tr><td><strong>Servidor MCP</strong></td><td><code>@orcarail/mcp</code></td><td><a href="https://github.com/OrcaRail/mcp" target="_blank" rel="noopener noreferrer" class="">OrcaRail/mcp</a></td></tr><tr><td><strong>Plugin de WooCommerce</strong></td><td><code>orcarail/plugins-woocommerce</code></td><td><a href="https://github.com/OrcaRail/plugins-woocommerce" target="_blank" rel="noopener noreferrer" class="">OrcaRail/plugins-woocommerce</a></td></tr><tr><td><strong>App de demostración</strong></td><td>Ejemplo de integración completo</td><td><a href="https://github.com/OrcaRail/demo" target="_blank" rel="noopener noreferrer" class="">OrcaRail/demo</a></td></tr></tbody></table>
<p>Instálalos desde npm o Composer como siempre; la fuente de verdad de cada paquete es su repositorio indicado arriba.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="use-report-contribute">Úsalos, informa, contribuye<a href="https://docs.orcarail.com/es/blog/orcarail-packages-open-source/#use-report-contribute" class="hash-link" aria-label="Enlace directo al Úsalos, informa, contribuye" title="Enlace directo al Úsalos, informa, contribuye" translate="no">​</a></h2>
<p><strong>Usa</strong> los paquetes en tus apps. Dirige a agentes y personas a los repositorios y a <a href="https://docs.orcarail.com/" target="_blank" rel="noopener noreferrer" class="">docs.orcarail.com</a> para ver APIs y ejemplos.</p>
<p><strong>Informa</strong> de bugs y solicitudes de funcionalidades en los GitHub Issues del paquete que te interese:</p>
<ul>
<li class=""><a href="https://github.com/orcarail/orcarail-node/issues" target="_blank" rel="noopener noreferrer" class="">Issues del SDK de Node</a></li>
<li class=""><a href="https://github.com/OrcaRail/sdks-php/issues" target="_blank" rel="noopener noreferrer" class="">Issues del SDK de PHP</a></li>
<li class=""><a href="https://github.com/OrcaRail/sdks-laravel-cashier/issues" target="_blank" rel="noopener noreferrer" class="">Issues de Laravel Cashier</a></li>
<li class=""><a href="https://github.com/OrcaRail/mcp/issues" target="_blank" rel="noopener noreferrer" class="">Issues del MCP</a></li>
<li class=""><a href="https://github.com/OrcaRail/plugins-woocommerce/issues" target="_blank" rel="noopener noreferrer" class="">Issues del plugin de WooCommerce</a></li>
<li class=""><a href="https://github.com/OrcaRail/demo/issues" target="_blank" rel="noopener noreferrer" class="">Issues de la app de demostración</a></li>
</ul>
<p><strong>Contribuye</strong> cuando puedas: haz un fork, abre un pull request y mantén los cambios acotados. Las correcciones de documentación, los tests y las pequeñas mejoras de los SDK son especialmente bienvenidos. Si no sabes bien dónde encaja algo, abre primero un issue.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-this-matters">Por qué importa<a href="https://docs.orcarail.com/es/blog/orcarail-packages-open-source/#why-this-matters" class="hash-link" aria-label="Enlace directo al Por qué importa" title="Enlace directo al Por qué importa" translate="no">​</a></h2>
<p>Tener SDK y plugins abiertos significa que puedes inspeccionar cómo se comunica OrcaRail con tu stack, corregir carencias sin esperar a un proveedor cerrado y compartir mejoras con todos los que integran los mismos rieles.</p>
<p>OrcaRail alojado sigue siendo la superficie del producto para pagos, paneles e infraestructura de producción. Este anuncio trata de los <strong>paquetes para desarrolladores</strong> con los que te integras, no afirma que toda la plataforma sea de código abierto.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="summary">Resumen<a href="https://docs.orcarail.com/es/blog/orcarail-packages-open-source/#summary" class="hash-link" aria-label="Enlace directo al Resumen" title="Enlace directo al Resumen" translate="no">​</a></h2>
<table><thead><tr><th>Área</th><th>Estado</th></tr></thead><tbody><tr><td><strong>Licencia</strong></td><td>MIT</td></tr><tr><td><strong>Paquetes</strong></td><td>SDK de Node, SDK de PHP, Laravel Cashier, servidor MCP, plugin de WooCommerce, demo</td></tr><tr><td><strong>Comunidad</strong></td><td>Usa los paquetes, abre issues, envía pull requests</td></tr></tbody></table>
<p>Gracias por construir sobre OrcaRail. Si publicas algo útil, abre un PR, o un issue si necesitas ayuda.</p>
<hr>
<p><strong><a href="https://app.orcarail.com/" target="_blank" rel="noopener noreferrer" class="">App de OrcaRail</a></strong> · <strong><a href="https://docs.orcarail.com/" target="_blank" rel="noopener noreferrer" class="">Documentación</a></strong> · <strong><a href="https://github.com/OrcaRail" target="_blank" rel="noopener noreferrer" class="">GitHub</a></strong></p>]]></content:encoded>
            <category>Announcement</category>
            <category>Open Source</category>
            <category>Crypto</category>
            <category>Payments</category>
            <category>Web3</category>
        </item>
        <item>
            <title><![CDATA[La hoja de ruta no custodial de OrcaRail]]></title>
            <link>https://docs.orcarail.com/es/blog/non-custodial-roadmap/</link>
            <guid>https://docs.orcarail.com/es/blog/non-custodial-roadmap/</guid>
            <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Una hoja de ruta en ocho fases para llevar OrcaRail de un modelo de barrido con HD wallets a contratos on-chain de enlaces de pago, suscripciones por allowance en EVM y Solana, custodia reducida en Bitcoin y keepers descentralizados opcionales.]]></description>
            <content:encoded><![CDATA[<p><strong>20 de abril de 2026</strong>: hoy publicamos la hoja de ruta completa para llevar OrcaRail de su actual <strong>modelo custodial de barrido</strong> (generamos una dirección de depósito por enlace de pago y luego barremos y repartimos los fondos) a un <strong>modelo no custodial de smart contracts</strong> (los fondos llegan a un contrato por enlace que reparte y liquida de forma atómica, y las suscripciones cobran de un allowance controlado por el pagador).</p>
<p>Este artículo es el índice. Cada fase tiene su propio artículo en profundidad y una página de documentación viva, para que puedas enlazar directamente a la parte que te interesa.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-we-are-doing-this">Por qué lo hacemos<a href="https://docs.orcarail.com/es/blog/non-custodial-roadmap/#why-we-are-doing-this" class="hash-link" aria-label="Enlace directo al Por qué lo hacemos" title="Enlace directo al Por qué lo hacemos" translate="no">​</a></h2>
<p>El flujo actual funciona, pero tiene un problema estructural sencillo: entre el depósito y la liquidación, <strong>OrcaRail retiene los fondos</strong>. Es así aunque nunca guardemos los saldos operativos de los comercios: el momento en tránsito entre «el pagador envió» y «el comercio recibió» es custodial. Eliminar ese momento es una mejora en seguridad, cumplimiento y fiabilidad.</p>
<p>En concreto, el camino heredado es así:</p>
<div class="wrapper_vprU"><button type="button" class="expandBtn_RmxB" aria-label="Show diagram fullscreen" title="Fullscreen"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div>
<p>El objetivo es:</p>
<div class="wrapper_vprU"><button type="button" class="expandBtn_RmxB" aria-label="Show diagram fullscreen" title="Fullscreen"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div>
<p>Los fondos nunca pasan por una wallet que controlemos. Los repartos ocurren on-chain. Las suscripciones cobran de un allowance que el pagador puede revocar en cualquier momento.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-changing-in-one-page">Qué cambia, en una página<a href="https://docs.orcarail.com/es/blog/non-custodial-roadmap/#what-is-changing-in-one-page" class="hash-link" aria-label="Enlace directo al Qué cambia, en una página" title="Enlace directo al Qué cambia, en una página" translate="no">​</a></h2>
<table><thead><tr><th>Área</th><th>Antes</th><th>Después</th></tr></thead><tbody><tr><td>Direcciones de enlaces de pago</td><td>EOA derivada de HD o smart account de Alchemy por enlace</td><td>CREATE2 determinista en EVM; PDA en Solana, sin material de claves guardado por OrcaRail</td></tr><tr><td>Liquidación</td><td>Transacción de barrido tras la observación</td><td>Reparto atómico dentro del receptor en la transacción de pago</td></tr><tr><td>Suscripciones</td><td>Cobro custodial desde una wallet financiada por el comercio</td><td>El pagador firma <code>approve</code> de ERC-20 o delegación SPL; el keeper llama a <code>charge(id)</code></td></tr><tr><td>Keeper</td><td>Un único programador en NestJS</td><td>NestJS principal + Chainlink Automation o Gelato de respaldo (+ EigenLayer opcional)</td></tr><tr><td>Entre cadenas</td><td>Puente de Relay ejecutado por el keeper</td><td>La misma ruta de Relay, pero como llamada on-chain desde un receptor no custodial</td></tr><tr><td>Bitcoin</td><td>Hot wallet con xpub guardada en el servidor</td><td>Multisig taproot 2 de 2 por enlace (comercio + plataforma) con reembolsos prefirmados</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-roadmap">La hoja de ruta<a href="https://docs.orcarail.com/es/blog/non-custodial-roadmap/#the-roadmap" class="hash-link" aria-label="Enlace directo al La hoja de ruta" title="Enlace directo al La hoja de ruta" translate="no">​</a></h2>
<p>Cada fase es autónoma y se puede publicar por separado. Las primeras fases eliminan la custodia en los volúmenes más grandes (pagos y suscripciones en EVM) y las últimas abordan las cadenas más difíciles y la descentralización opcional.</p>
<ul>
<li class=""><strong><a class="" href="https://docs.orcarail.com/es/blog/phase-0-design-and-audit-strategy/">Fase 0: diseñar una pila de pagos no custodial</a></strong>: congelación de la especificación de comisiones y repartos, selección de cadenas, proveedor de auditoría, multisig de despliegue y la matriz de decisión del modelo de suscripciones.</li>
<li class=""><strong><a class="" href="https://docs.orcarail.com/es/blog/phase-1-evm-payment-link-contracts/">Fase 1: enlaces de pago basados en contratos en EVM</a></strong>: <code>PaymentLinkFactory</code> + <code>PaymentLinkReceiver</code> + <code>FeeSplitter</code>, direcciones deterministas e indexador de eventos.</li>
<li class=""><strong><a class="" href="https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/">Fase 2: suscripciones por allowance</a></strong>: <code>SubscriptionHub</code>, nuevo flujo para el pagador y un keeper que sustituye al procesador custodial de cobro automático.</li>
<li class=""><strong><a class="" href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/">Fase 3: despliegue en varias cadenas EVM y redundancia de keepers</a></strong>: Ethereum, Arbitrum, Optimism y Polygon + respaldo con Chainlink/Gelato.</li>
<li class=""><strong><a class="" href="https://docs.orcarail.com/es/blog/phase-4-solana-pda-programs/">Fase 4: Solana no custodial con PDAs de Anchor</a></strong>: programas Anchor <code>payment_link</code> y <code>subscription</code>, cobro automático por delegación SPL.</li>
<li class=""><strong><a class="" href="https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/">Fase 5: Bitcoin, taproot 2 de 2 y un alcance honesto</a></strong>: custodia reducida, reembolsos prefirmados y Lightning BOLT12 como trabajo futuro.</li>
<li class=""><strong><a class="" href="https://docs.orcarail.com/es/blog/phase-6-eigenlayer-keeper-avs/">Fase 6: programador descentralizado y EigenLayer</a></strong>: cuándo ayuda un AVS y cuándo no.</li>
<li class=""><strong><a class="" href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/">Fase 7: retirar la infraestructura de custodia</a></strong>: eliminar <code>hd_wallet_seed</code>, quitar las rutas de barrido y actualizar los términos del servicio.</li>
</ul>
<p>Un artículo complementario, <strong><a class="" href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/">Por qué el cobro por allowance supera al escrow y a las session keys</a></strong>, explica cómo elegimos el modelo de suscripciones.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-this-means-in-practice">Qué significa en la práctica<a href="https://docs.orcarail.com/es/blog/non-custodial-roadmap/#what-this-means-in-practice" class="hash-link" aria-label="Enlace directo al Qué significa en la práctica" title="Enlace directo al Qué significa en la práctica" translate="no">​</a></h2>
<p><strong>Para los comercios</strong>: tras la Fase 1, nada cambia en la API; las URLs de los enlaces de pago y los webhooks se comportan igual. Las reglas de retiro pasan de «liquidar tras el barrido» a «emitir al pagar». Obtienes un camino más rápido, barato y auditable sin cambiar código. La Fase 2 añade un nuevo endpoint público para que los pagadores registren su <code>approve</code> on-chain, en línea con el flujo documentado en <a class="" href="https://docs.orcarail.com/es/docs/subscriptions/auto-charge/">Cobro automático</a>.</p>
<p><strong>Para los pagadores</strong>: los pagos únicos se sienten idénticos. Las suscripciones añaden una firma extra en la configuración (el <code>approve</code> on-chain) y una vía de «revocación» más clara: revoca on-chain y OrcaRail deja de intentarlo. Tus fondos nunca salen de tu wallet hasta que el contrato los cobra, y nunca quedan en una wallet que controlemos.</p>
<p><strong>Para los integradores</strong>: la forma de la API se mantiene estable. Los nuevos campos (direcciones de contratos, cadena de despliegue, metadatos del allowance) son aditivos y están detrás de un feature flag por cadena. Las integraciones existentes siguen funcionando durante su ciclo de renovación actual y migran cuando lo eligen.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-stays-custodial-for-now">Qué sigue siendo custodial (por ahora)<a href="https://docs.orcarail.com/es/blog/non-custodial-roadmap/#what-stays-custodial-for-now" class="hash-link" aria-label="Enlace directo al Qué sigue siendo custodial (por ahora)" title="Enlace directo al Qué sigue siendo custodial (por ahora)" translate="no">​</a></h2>
<p>Bitcoin. Reduciremos la custodia de forma notable en la <a class="" href="https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/">Fase 5</a> moviendo cada enlace a una multisig taproot 2 de 2 con un firmante del comercio, más PSBT de reembolso prefirmadas. Pero la L1 de Bitcoin no tiene hoy la expresividad de contratos necesaria para eliminar la custodia por completo. Las suscripciones en BTC quedan fuera del alcance hasta que los pagos recurrentes de Lightning BOLT12 estén listos.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="timeline-and-status">Calendario y estado<a href="https://docs.orcarail.com/es/blog/non-custodial-roadmap/#timeline-and-status" class="hash-link" aria-label="Enlace directo al Calendario y estado" title="Enlace directo al Calendario y estado" translate="no">​</a></h2>
<p>El plan completo se sigue en <a class="" href="https://docs.orcarail.com/es/docs/non-custodial/roadmap/">/docs/non-custodial/roadmap</a> y cada fase tiene una página de estado:</p>
<ul>
<li class="">Planificadas: <strong>0 a 7</strong></li>
<li class="">En curso: ninguna todavía</li>
<li class="">Publicadas: ninguna todavía</li>
</ul>
<p>Publicaremos un artículo de actualización con fecha cada vez que se complete una fase.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="read-the-architecture-docs">Lee la documentación de arquitectura<a href="https://docs.orcarail.com/es/blog/non-custodial-roadmap/#read-the-architecture-docs" class="hash-link" aria-label="Enlace directo al Lee la documentación de arquitectura" title="Enlace directo al Lee la documentación de arquitectura" translate="no">​</a></h2>
<p>Para la versión de referencia de todo esto (diagramas de arquitectura, superficie de los contratos, guía de migración, modelo de seguridad), empieza en <a class="" href="https://docs.orcarail.com/es/docs/non-custodial/overview/">/docs/non-custodial/overview</a>.</p>
<hr>
<p><strong><a href="https://app.orcarail.com/" target="_blank" rel="noopener noreferrer" class="">App de OrcaRail</a></strong> · <strong><a href="https://docs.orcarail.com/" target="_blank" rel="noopener noreferrer" class="">Documentación</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/overview/">Documentación no custodial</a></strong></p>]]></content:encoded>
            <category>Announcement</category>
            <category>Payments</category>
            <category>Multi-Chain</category>
            <category>Web3</category>
            <category>Stablecoins</category>
            <category>Crypto</category>
        </item>
        <item>
            <title><![CDATA[Protocolo OrcaRail: whitepaper de unos rieles de pago no custodiales, ininterrumpidos y de Web2 a Web3]]></title>
            <link>https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/</link>
            <guid>https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/</guid>
            <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[El whitepaper del Protocolo OrcaRail. Cuatro invariantes (no custodial, ininterrumpido, creíblemente neutral, compatible con Web2), una hoja de ruta en dos líneas, una gobernanza que se descentraliza con el tiempo y una opción reservada, no un compromiso, para un futuro token de gobernanza tras la descentralización.]]></description>
            <content:encoded><![CDATA[<p><strong>20 de abril de 2026</strong>: este es el whitepaper del Protocolo OrcaRail. Es la declaración canónica de en qué se está convirtiendo OrcaRail: un riel de pagos abierto, creíblemente neutral, no custodial e ininterrumpido que un comercio Web2 puede integrar con las APIs HTTP y los webhooks de siempre, y que un pagador Web3 puede usar con cualquier wallet; y que sigue liquidando aunque OrcaRail, la empresa, desaparezca.</p>
<p>Amplía, y <strong>no</strong> sustituye, la <a class="" href="https://docs.orcarail.com/es/blog/non-custodial-roadmap/">hoja de ruta no custodial</a> y el <a class="" href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/">debate sobre el protocolo</a>. La hoja de ruta no custodial (Línea N, Fases 0-7) elimina la custodia. Este whitepaper añade una Línea P paralela que descentraliza el resto: indexadores, frontends, estándares, keepers y gobernanza.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="abstract">Resumen<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#abstract" class="hash-link" aria-label="Enlace directo al Resumen" title="Enlace directo al Resumen" translate="no">​</a></h2>
<p>El Protocolo OrcaRail es un conjunto de primitivas on-chain (factorías y receptores de enlaces de pago, hubs de suscripción por allowance, divisores de comisiones, programas Anchor en Solana y descriptores multisig taproot en Bitcoin) junto con especificaciones públicas para indexadores, keepers, frontends y SDK que operan sobre esas primitivas. El protocolo cumple cuatro invariantes: <strong>no custodial</strong> (ninguna parte retiene fondos en tránsito), <strong>ininterrumpido</strong> (la liquidación legítima continúa sin OrcaRail), <strong>creíblemente neutral</strong> (ninguna parte puede censurar una transacción pagada y bien formada) y <strong>compatible con Web2</strong> (los comercios conservan claves de API, webhooks y paneles). El despliegue sigue dos líneas paralelas: la <strong>Línea N</strong> elimina la custodia en siete fases; la <strong>Línea P</strong> descentraliza la indexación, los frontends, los estándares y el enrutamiento de la liquidación en cinco fases. No existe ningún token en el lanzamiento y este whitepaper no planea ninguno; un futuro token de gobernanza queda explícitamente <strong>reservado</strong> como opción tras la descentralización y, si llegara a introducirse, se publicaría con su propio whitepaper.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-introduction--why-a-protocol-not-just-a-product">1. Introducción: por qué un protocolo y no solo un producto<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#1-introduction--why-a-protocol-not-just-a-product" class="hash-link" aria-label="Enlace directo al 1. Introducción: por qué un protocolo y no solo un producto" title="Enlace directo al 1. Introducción: por qué un protocolo y no solo un producto" translate="no">​</a></h2>
<p>Hoy OrcaRail es un producto de pagos alojado, con opciones autoalojadas en camino. Eso es un producto, no un protocolo. Los productos se pueden mejorar; en los protocolos se puede <strong>confiar en ausencia</strong> de quien los creó.</p>
<p>La <a class="" href="https://docs.orcarail.com/es/blog/non-custodial-roadmap/">hoja de ruta no custodial</a> saca la custodia del camino. Es necesario, pero no suficiente. Incluso sin custodia, un riel de pagos puede romperse si la empresa que lo opera deja de pagar las facturas de AWS, recibe sanciones o simplemente cambia de rumbo. Un protocolo tiene que seguir funcionando cuando pasan esas cosas.</p>
<p>El <a class="" href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/">debate sobre el protocolo</a> repasó cinco arquitecturas. La síntesis fue: publicar el camino del Pragmático, mantener la presión del Maximalista sobre él, adoptar intents para la experiencia del pagador, redactar estándares por el camino y mantener la cadena propia como un futuro opcional. Este whitepaper es esa síntesis escrita como compromisos.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-design-goals">2. Objetivos de diseño<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#2-design-goals" class="hash-link" aria-label="Enlace directo al 2. Objetivos de diseño" title="Enlace directo al 2. Objetivos de diseño" translate="no">​</a></h2>
<p>Cada objetivo se enuncia con una definición precisa y comprobable. La pregunta «¿cumple el diseño esto?» debe tener respuesta sí o no.</p>
<ol>
<li class=""><strong>No custodial</strong>: en ningún momento de un pago o de un cobro de suscripción una wallet o cuenta controlada por OrcaRail, por el procesador de un comercio o por cualquier intermediario retiene los fondos del pagador. <strong>Prueba</strong>: ¿puede un regulador congelar fondos en tránsito notificando solo a OrcaRail? No.</li>
<li class=""><strong>Ininterrumpido</strong>: si los servidores de OrcaRail se apagan indefinidamente, un cobro de suscripción legítimo y vencido sigue liquidándose on-chain, y un pagador puede seguir completando un pago único. <strong>Prueba</strong>: tras una caída de OrcaRail de 30 días, ¿alguna suscripción bien configurada se ha saltado un cobro? No.</li>
<li class=""><strong>Creíblemente neutral</strong>: las reglas on-chain son públicas, inmutables por enlace y se aplican por igual. OrcaRail no puede denegar servicio de forma selectiva en la capa de liquidación (solo en su propio frontend). <strong>Prueba</strong>: ¿puede un comercio no deseado seguir cobrando mediante un frontend de terceros? Sí.</li>
<li class=""><strong>Compatible con Web2</strong>: los comercios conservan la ergonomía que ya tienen (endpoints REST, webhooks, claves de API, paneles, email). Convertirse en protocolo no exige que un comercio ejecute herramientas de Ethereum para aceptar un pago. <strong>Prueba</strong>: ¿puede un comercio que no viene del mundo cripto integrarse en menos de una hora? Sí.</li>
<li class=""><strong>P2P real</strong>: se define con precisión en la siguiente sección.</li>
</ol>
<p>Un diseño que falle en cualquiera de los objetivos está incompleto.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-what-real-p2p-means-here">3. Qué significa aquí «P2P real»<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#3-what-real-p2p-means-here" class="hash-link" aria-label="Enlace directo al 3. Qué significa aquí «P2P real»" title="Enlace directo al 3. Qué significa aquí «P2P real»" translate="no">​</a></h2>
<p>«Peer-to-peer» es un término sobrecargado. En este protocolo tiene tres capas concretas.</p>
<ul>
<li class=""><strong>P2P en la liquidación</strong>: el pagador firma; los fondos fluyen del pagador al contrato on-chain (EVM), a una PDA propiedad del programa (Solana) o a una multisig 2 de 2 (Bitcoin), y de ahí al comercio y a los receptores de comisiones, de forma atómica. Ninguna wallet de OrcaRail está en el camino. Lo garantiza la Línea N.</li>
<li class=""><strong>P2P en el descubrimiento</strong>: un enlace de pago o una suscripción se puede resolver por completo a partir de sus datos on-chain y (opcionalmente) de metadatos fijados en IPFS. Cualquier wallet, frontend o procesador de terceros puede mostrarlo y completarlo. El panel alojado de OrcaRail es <strong>una</strong> implementación de la capa de presentación, no el registro.</li>
<li class=""><strong>P2P en la disponibilidad</strong>: <code>SubscriptionHub.charge(id)</code> y la instrucción <code>charge</code> de Anchor son públicas. Cualquier EOA o solver puede llamarlas. El programador de OrcaRail es un participante entre varios (Chainlink, Gelato, operados por comercios, operados por solvers).</li>
</ul>
<p>Lo que «P2P real» <strong>no</strong> significa aquí: no somos Lightning; no somos una capa de canales directos de wallet a wallet; no estamos sustituyendo una app de pagos por una DHT. OrcaRail es un <strong>protocolo on-chain con experiencia de usuario off-chain</strong>. La propiedad P2P viene de que es imposible que un intermediario se interponga en la liquidación, el descubrimiento o la disponibilidad, no de evitar los rieles on-chain.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-system-architecture">4. Arquitectura del sistema<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#4-system-architecture" class="hash-link" aria-label="Enlace directo al 4. Arquitectura del sistema" title="Enlace directo al 4. Arquitectura del sistema" translate="no">​</a></h2>
<p>Al nivel más alto, el protocolo tiene cinco capas.</p>
<div class="wrapper_vprU"><button type="button" class="expandBtn_RmxB" aria-label="Show diagram fullscreen" title="Fullscreen"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div>
<p>La <strong>capa de liquidación</strong> es inmutable por enlace en EVM y Solana, y derivada de descriptores por enlace en Bitcoin. Las otras cuatro capas son intercambiables. Si quieres el diagrama técnico completo, consulta <a class="" href="https://docs.orcarail.com/es/docs/non-custodial/architecture/">/docs/non-custodial/architecture</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="5-settlement-primitives">5. Primitivas de liquidación<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#5-settlement-primitives" class="hash-link" aria-label="Enlace directo al 5. Primitivas de liquidación" title="Enlace directo al 5. Primitivas de liquidación" translate="no">​</a></h2>
<p>Referencia completa: <a class="" href="https://docs.orcarail.com/es/docs/non-custodial/contract-reference/">/docs/non-custodial/contract-reference</a>. Resumen:</p>
<ul>
<li class=""><strong>EVM</strong>: <code>PaymentLinkFactory</code> (direcciones deterministas con CREATE2), <code>PaymentLinkReceiver</code> (clon mínimo EIP-1167, inmutable por enlace), <code>FeeSplitter</code> (reparto atómico en puntos básicos), <code>SubscriptionHub</code> (cobro por allowance con <code>lastChargedAt</code> monótono).</li>
<li class=""><strong>Solana</strong>: programa Anchor <code>payment_link</code> (una PDA por enlace, repartos por CPI) y programa Anchor <code>subscription</code> (autoridad delegada SPL, con la misma semántica de <code>charge</code> que el hub de EVM).</li>
<li class=""><strong>Bitcoin</strong>: multisig taproot 2 de 2 por enlace (firmante del comercio + firmante de la plataforma desde HSM/MPC) con PSBT de reembolso prefirmadas. Sin BTC recurrente hasta que madure la recurrencia de Lightning BOLT12.</li>
</ul>
<p>Cada primitiva está diseñada para que el mismo <code>linkId</code> o <code>subscriptionId</code> resuelva siempre a la misma dirección determinista en la misma cadena: sin rotación de direcciones, sin reemisión y sin un mapeo guardado en un servidor.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="6-cross-chain-as-intents">6. Entre cadenas como intents<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#6-cross-chain-as-intents" class="hash-link" aria-label="Enlace directo al 6. Entre cadenas como intents" title="Enlace directo al 6. Entre cadenas como intents" translate="no">​</a></h2>
<p>Un protocolo que trata lo cross-chain como «nuestro backend llama a Relay» sigue siendo un producto. Un protocolo trata lo cross-chain como un <strong>intent del pagador</strong>:</p>
<ul>
<li class="">El pagador firma: «paga al comercio X 50 $ en USDC, desde cualquiera de mis wallets en cualquier cadena compatible, en menos de 1 hora, con comisiones de hasta Y».</li>
<li class="">Las redes de solvers existentes (<strong>Across, Relay, deBridge, al estilo CoW</strong>) compiten por cumplir el intent. Los solvers cobran una recompensa incluida en el intent.</li>
<li class="">Para rutas de cola larga poco rentables (importes pequeños, cadenas poco conocidas), OrcaRail opera un <strong>solver de respaldo a coste</strong> para que esa cola también se liquide. El respaldo es público y cualquiera puede operar otro.</li>
</ul>
<p>La firma del pagador está acotada por importe, destinatario, plazo y comisión máxima. En el peor caso, un solver malicioso es lento; no puede desviar los fondos. Es la síntesis del «Creyente en los intents» del <a class="" href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/">debate sobre el protocolo</a>, escrita como compromiso.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="7-standards-and-interoperability">7. Estándares e interoperabilidad<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#7-standards-and-interoperability" class="hash-link" aria-label="Enlace directo al 7. Estándares e interoperabilidad" title="Enlace directo al 7. Estándares e interoperabilidad" translate="no">​</a></h2>
<p>Las primitivas de enlaces de pago y suscripciones de OrcaRail son un riel genérico. Su valor solo se multiplica si otros procesadores, wallets e indexadores las implementan de forma nativa.</p>
<p>Compromisos:</p>
<ul>
<li class=""><strong>Redactar un EIP para enlaces de pago no custodiales</strong> usando <code>PaymentLinkFactory</code> y <code>PaymentLinkReceiver</code> como superficie de referencia. Coescribirlo con al menos otro equipo de procesador o de wallet para evitar el patrón «EIP de un solo proveedor».</li>
<li class=""><strong>Redactar un EIP para suscripciones por allowance</strong> usando <code>SubscriptionHub</code> como referencia. El <code>lastChargedAt</code> monótono y el conjunto de motivos de <code>ChargeSkipped(reason)</code> son objetivos de estandarización.</li>
<li class=""><strong>Publicar un equivalente para Solana</strong> mediante el IDL de Anchor y una especificación escrita, para que cualquier wallet o indexador de Solana pueda mostrar un enlace de pago desde cero.</li>
<li class=""><strong>Publicar el esquema canónico del subgraph</strong> para que cualquier indexador (The Graph, Goldsky, Envio, autoalojado) sea compatible sin cambios.</li>
</ul>
<p>Escribir el EIP no reduce nuestra ventaja competitiva. Como se argumentó en el <a class="" href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/">debate</a>, esa ventaja está en las integraciones, el cumplimiento, los SLA y la confianza de los comercios, y nada de eso se copia con un EIP.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="8-governance">8. Gobernanza<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#8-governance" class="hash-link" aria-label="Enlace directo al 8. Gobernanza" title="Enlace directo al 8. Gobernanza" translate="no">​</a></h2>
<p>La gobernanza tiene dos horizontes.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="today-and-near-term">Hoy y a corto plazo<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#today-and-near-term" class="hash-link" aria-label="Enlace directo al Hoy y a corto plazo" title="Enlace directo al Hoy y a corto plazo" translate="no">​</a></h3>
<ul>
<li class=""><strong>EVM</strong>: multisig Safe 3 de 5 en cada cadena desplegada. Firmantes con hardware wallet. Rotación anual. Timelock de 48 horas en las actualizaciones de proxies. Las instancias <code>PaymentLinkReceiver</code> por enlace son <strong>inmutables</strong>.</li>
<li class=""><strong>Solana</strong>: multisig Squads 3 de 5 con el mismo conjunto de firmantes y la misma política de rotación.</li>
<li class=""><strong>Alcance de las actualizaciones</strong>: las factorías y los hubs están detrás de proxies UUPS; los receptores por enlace y los registros por suscripción no cambian con las actualizaciones.</li>
<li class=""><strong>Auditable públicamente</strong>: cada despliegue y actualización se realiza como una ceremonia multisig anunciada, con las transacciones firmadas registradas.</li>
</ul>
<p>Es la gobernanza descrita en <a class="" href="https://docs.orcarail.com/es/docs/non-custodial/security-model/">/docs/non-custodial/security-model</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="post-decentralization">Tras la descentralización<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#post-decentralization" class="hash-link" aria-label="Enlace directo al Tras la descentralización" title="Enlace directo al Tras la descentralización" translate="no">​</a></h3>
<p>Con el tiempo, el conjunto de firmantes deja de estar formado solo por empleados de OrcaRail y pasa a ser un <strong>consejo público</strong> formado por integradores, empresas de auditoría, operadores de keepers y colaboradores independientes. La autoridad de actualización pasa al consejo. En ese momento la gobernanza on-chain se convierte en una opción real, pero solo como mecanismo de gobernanza, no como vehículo de especulación.</p>
<p>El umbral de la «descentralización» es explícito: al menos tres frontends de producción independientes que alojen el riel, al menos tres keepers independientes ejecutando cobros y al menos un procesador ajeno a OrcaRail publicando integraciones. Hasta que eso sea real, el protocolo no está descentralizado, sea cual sea el mecanismo de gobernanza que tenga encima.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="9-future-governance-token-explicit-reservation">9. Futuro token de gobernanza (reserva explícita)<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#9-future-governance-token-explicit-reservation" class="hash-link" aria-label="Enlace directo al 9. Futuro token de gobernanza (reserva explícita)" title="Enlace directo al 9. Futuro token de gobernanza (reserva explícita)" translate="no">​</a></h2>
<p>Esta sección es corta y específica a propósito.</p>
<ul>
<li class=""><strong>Sin token en el lanzamiento.</strong> Sin preventa. Sin asignaciones. Sin puntos. Sin reclamaciones retroactivas.</li>
<li class=""><strong>Un futuro token de gobernanza queda reservado como opción</strong>, no como compromiso. Solo es apropiado <strong>después</strong> de alcanzar el umbral de descentralización de la sección 8 y cuando exista una base activa de integradores, keepers y frontends que se beneficie de derechos formales de señalización.</li>
<li class=""><strong>Si alguna vez introducimos uno</strong>, se publicará con su propio whitepaper, con total transparencia sobre distribución, bloqueos, suministro y superficie de gobernanza. Ese whitepaper del token se debatiría públicamente antes de la emisión.</li>
<li class=""><strong>El token sería primero de gobernanza, no de especulación.</strong> Mecanismos que tienen sentido: votaciones de señalización sobre actualizaciones, ajuste de parámetros dentro de límites seguros, reputación de los operadores de keepers. Mecanismos que no: descuentos en comisiones ligados a las tenencias, pagar por pagar, yield farming.</li>
<li class=""><strong>No diremos que el protocolo está descentralizado porque exista un token.</strong> La descentralización se mide con lo descrito en la sección 8. Un token es un instrumento que puede formalizar una descentralización ya conseguida; no puede fabricarla.</li>
</ul>
<p>Esta reserva consta en el whitepaper del protocolo, este documento, y en ningún otro sitio. Cualquier cambio futuro de esta postura es un cambio de este whitepaper, publicado abiertamente, no un anuncio unilateral.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="10-economics-and-fees--how-the-protocol-sustains-itself-without-a-token">10. Economía y comisiones: cómo se sostiene el protocolo sin token<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#10-economics-and-fees--how-the-protocol-sustains-itself-without-a-token" class="hash-link" aria-label="Enlace directo al 10. Economía y comisiones: cómo se sostiene el protocolo sin token" title="Enlace directo al 10. Economía y comisiones: cómo se sostiene el protocolo sin token" translate="no">​</a></h2>
<p>El modelo de ingresos del protocolo es el mismo que el del producto, solo que codificado on-chain.</p>
<ul>
<li class="">El <strong>reparto de comisiones</strong> vive en la configuración en puntos básicos de <code>FeeSplitter</code> para cada pago. Son los mismos conceptos que describe hoy la página de <a class="" href="https://docs.orcarail.com/es/docs/withdrawals/strategy/">retiros</a>: comercio, plataforma (la parte alojada de OrcaRail), referido/afiliado y comisión de puente.</li>
<li class="">La <strong>superficie alojada por OrcaRail</strong> (panel, email, gas del paymaster, atención al cliente) se paga con la parte de OrcaRail en el reparto.</li>
<li class="">Los <strong>alojamientos alternativos</strong> (procesadores de terceros, operadores autoalojados, frontends fijados en IPFS) pueden funcionar con un reparto de cero puntos básicos para la plataforma o configurar su propio receptor de comisiones. El protocolo no privilegia la comisión de OrcaRail sobre la de nadie.</li>
<li class=""><strong>Sin emisión, sin subsidios, sin rendimiento por staking.</strong> Los costes son costes en efectivo y los ingresos son ingresos en efectivo. El protocolo solo se abarata si baja el gas o si un alojamiento acepta un margen menor, no emitiendo tokens para tapar los costes operativos.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="11-security-model">11. Modelo de seguridad<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#11-security-model" class="hash-link" aria-label="Enlace directo al 11. Modelo de seguridad" title="Enlace directo al 11. Modelo de seguridad" translate="no">​</a></h2>
<p>Declaración completa: <a class="" href="https://docs.orcarail.com/es/docs/non-custodial/security-model/">/docs/non-custodial/security-model</a>. Postura básica:</p>
<ul>
<li class="">Los receptores por enlace y los registros por suscripción son inmutables.</li>
<li class="">Las factorías y los hubs solo se actualizan mediante multisig + timelock.</li>
<li class="">Los keepers son EOA que solo pagan gas, sin autoridad para mover fondos.</li>
<li class="">La firma en BTC usa un servicio HSM o MPC del lado de la plataforma, más una clave del comercio; ningún servidor tiene autoridad unilateral de gasto.</li>
</ul>
<p>Un añadido específico de la conversión en protocolo: <strong>los alojamientos de frontend independientes deben verificar las direcciones de los contratos contra un registro on-chain</strong> (o un manifiesto de versión firmado) antes de mostrar un enlace de pago. Un frontend clonado y malicioso que dirija los pagos a un contrato parecido es el vector de phishing más probable cuando el ecosistema tenga varios alojamientos. El registro canónico vive on-chain y el flujo de verificación se documenta como parte de P2.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="12-roadmap--two-parallel-tracks">12. Hoja de ruta: dos líneas paralelas<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#12-roadmap--two-parallel-tracks" class="hash-link" aria-label="Enlace directo al 12. Hoja de ruta: dos líneas paralelas" title="Enlace directo al 12. Hoja de ruta: dos líneas paralelas" translate="no">​</a></h2>
<p>El despliegue del protocolo avanza en dos líneas a la vez.</p>
<div class="wrapper_vprU"><button type="button" class="expandBtn_RmxB" aria-label="Show diagram fullscreen" title="Fullscreen"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div>
<p>La Línea N es la <a class="" href="https://docs.orcarail.com/es/blog/non-custodial-roadmap/">hoja de ruta existente</a>, sin cambios. La Línea P formaliza como fases los compromisos M1-M5 del <a class="" href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/">artículo del debate</a>. Ambas líneas apuntan al mismo estado final: un riel que sigue funcionando si OrcaRail se aparta.</p>
<p>La Línea P nunca bloquea a la Línea N, y la Línea N nunca bloquea a la Línea P. Cualquiera de las dos puede publicar una fase antes que la otra.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="13-track-p-phases">13. Fases de la Línea P<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#13-track-p-phases" class="hash-link" aria-label="Enlace directo al 13. Fases de la Línea P" title="Enlace directo al 13. Fases de la Línea P" translate="no">​</a></h2>
<p>Cinco fases, cada una extensión natural de un compromiso M del artículo del debate.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="p1--public-subgraph-and-open-indexer">P1: subgraph público e indexador abierto<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#p1--public-subgraph-and-open-indexer" class="hash-link" aria-label="Enlace directo al P1: subgraph público e indexador abierto" title="Enlace directo al P1: subgraph público e indexador abierto" translate="no">​</a></h3>
<p><strong>Alcance</strong>: un subgraph canónico (The Graph, Envio o equivalente) que indexe todos los eventos <code>Paid</code>, <code>SubscriptionCreated</code>, <code>Charged</code>, <code>ChargeSkipped</code>, <code>Canceled</code> y <code>Refunded</code> de <code>PaymentLinkReceiver</code> y <code>SubscriptionHub</code> en todas las cadenas desplegadas. Esquema publicado. Instrucciones de autoalojamiento publicadas para que cualquiera pueda ejecutar el mismo índice.</p>
<p><strong>Lista de estado</strong></p>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Manifiesto + mappings del subgraph para las cadenas EVM activas en la Fase 1 y la Fase 3</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Equivalente en Solana (webhooks de Helius o stream de Triton) con las mismas formas de evento</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Esquema documentado y con versionado estable</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Un indexador externo demostrado ejecutando el mismo esquema contra eventos reales</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="p2--decentralized-frontends-ipfs--ens">P2: frontends descentralizados (IPFS / ENS)<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#p2--decentralized-frontends-ipfs--ens" class="hash-link" aria-label="Enlace directo al P2: frontends descentralizados (IPFS / ENS)" title="Enlace directo al P2: frontends descentralizados (IPFS / ENS)" translate="no">​</a></h3>
<p><strong>Alcance</strong>: fijar la app de pago y el panel del comercio de OrcaRail en IPFS con paquetes de versión direccionados por contenido. Resolverlos mediante ENS (<code>pay.orcarail.eth</code>, <code>app.orcarail.eth</code>). Builds reproducibles para que cualquiera pueda verificar que el paquete coincide con el código fuente. Un clon malicioso tendría que suplantar tanto las direcciones de los contratos como el registro ENS, no solo el nombre de host.</p>
<p><strong>Lista de estado</strong></p>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->La app de pago se compila de forma reproducible</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->El panel se compila de forma reproducible</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Registros ENS apuntando a CIDs de IPFS</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Ceremonia de firma de versiones desde la multisig Safe</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Registro on-chain de direcciones de contratos que los frontends verifican antes de mostrar</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="p3--standards-draft-eip">P3: estándares (borrador de EIP)<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#p3--standards-draft-eip" class="hash-link" aria-label="Enlace directo al P3: estándares (borrador de EIP)" title="Enlace directo al P3: estándares (borrador de EIP)" translate="no">​</a></h3>
<p><strong>Alcance</strong>: redactar y enviar un EIP para enlaces de pago no custodiales y un EIP complementario para suscripciones por allowance. Coescribirlos con al menos otro equipo de procesador o de wallet. La implementación de referencia son los contratos de OrcaRail. La especificación equivalente para Solana se publica junto a los EIP.</p>
<p><strong>Lista de estado</strong></p>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Coautor confirmado</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Borrador del EIP de enlaces de pago en fase de hilo de discusión</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Borrador del EIP de suscripciones en fase de hilo de discusión</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Especificación de Solana publicada junto a los IDL de Anchor</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Comentarios de los editores de EIP incorporados hasta Last Call</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="p4--intent-based-payer-sdk">P4: SDK de pagador basado en intents<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#p4--intent-based-payer-sdk" class="hash-link" aria-label="Enlace directo al P4: SDK de pagador basado en intents" title="Enlace directo al P4: SDK de pagador basado en intents" translate="no">​</a></h3>
<p><strong>Alcance</strong>: una superficie de SDK (<code>orcarail.pay(intent)</code>) que acepte un intent firmado por el pagador y lo enrute por las redes de solvers existentes (Across, Relay, deBridge), con un solver de respaldo operado por OrcaRail para las rutas de cola larga. El esquema de intents se estandariza en sincronía con P3.</p>
<p><strong>Lista de estado</strong></p>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Esquema de intents finalizado</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Adaptador del SDK para al menos dos redes de solvers</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Solver de respaldo desplegado y medido</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->La experiencia del pagador en la app de pago admite el mismo intent + cross-chain</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Especificación publicada como parte de la referencia del SDK de Node</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="p5--self-host--reference-implementation-kit">P5: kit de autoalojamiento / implementación de referencia<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#p5--self-host--reference-implementation-kit" class="hash-link" aria-label="Enlace directo al P5: kit de autoalojamiento / implementación de referencia" title="Enlace directo al P5: kit de autoalojamiento / implementación de referencia" translate="no">​</a></h3>
<p><strong>Alcance</strong>: un Docker Compose (y un chart de Helm) que permita a cualquiera ejecutar de extremo a extremo un procesador compatible con OrcaRail a partir de los contratos públicos. Incluye subgraph, keeper, indexador, panel opcional y una especificación OpenAPI de la API del procesador a la que otros puedan ajustarse.</p>
<p><strong>Lista de estado</strong></p>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Docker Compose que arranca contra una cadena real y da servicio a un comercio de prueba</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Especificación OpenAPI de la API del procesador</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Chart de Helm para operadores de Kubernetes</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Prueba de extremo a extremo de que un operador autoalojado procesa pagos idénticos a la versión alojada</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Documentación en <code>/docs/non-custodial/</code> (se añadirá en un cambio futuro solo de documentación; fuera del alcance de este whitepaper)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="14-optional-p6--own-chain-evaluation">14. P6 opcional: evaluación de una cadena propia<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#14-optional-p6--own-chain-evaluation" class="hash-link" aria-label="Enlace directo al 14. P6 opcional: evaluación de una cadena propia" title="Enlace directo al 14. P6 opcional: evaluación de una cadena propia" translate="no">​</a></h2>
<p>P6 replica el patrón de la <a class="" href="https://docs.orcarail.com/es/docs/non-custodial/eigenlayer-evaluation/">evaluación de EigenLayer</a>. <strong>No</strong> es un compromiso. Es una revisión trimestral con disparadores concretos.</p>
<p>Recomendación actual: <strong>aplazar</strong>.</p>
<p>Disparadores que abrirían un documento de diseño para construir una Fase P6:</p>
<ol>
<li class="">El volumen de pagos en una sola cadena supera un umbral en el que el gas pasa a ser una partida relevante de la comisión de la plataforma.</li>
<li class="">Una cadena de herramientas L2/L3 canónica ofrece precompilados especializados para la semántica de repartos de pagos a un coste casi nulo.</li>
<li class="">Demanda de los comercios de una latencia de liquidación de fracciones de céntimo que mainnet / L2 no puede cumplir de forma constante.</li>
<li class="">Un socio de rollup-as-a-service permite a OrcaRail lanzar con secuenciación compartida desde el primer día.</li>
</ol>
<p>Si se activara, la construcción preferiría OP Stack con secuenciación compartida (Espresso, Astria) y un puente de salida creíble hacia las cadenas canónicas que ya admitimos. Aun así, las Fases N0-N7 y P1-P5 deben estar lo bastante maduras para que una cadena propia sea una <strong>optimización</strong>, no una dependencia.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="15-what-orcarail-is-today-vs-what-it-becomes">15. Qué es OrcaRail hoy y en qué se convierte<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#15-what-orcarail-is-today-vs-what-it-becomes" class="hash-link" aria-label="Enlace directo al 15. Qué es OrcaRail hoy y en qué se convierte" title="Enlace directo al 15. Qué es OrcaRail hoy y en qué se convierte" translate="no">​</a></h2>
<p>Un antes y después a nivel de riel.</p>
<table><thead><tr><th>Dimensión</th><th>Hoy</th><th>Tras las Líneas N y P</th></tr></thead><tbody><tr><td>Custodia durante un pago</td><td>OrcaRail guarda la clave de la wallet de depósito</td><td>Sin custodia. Pagador → contrato → comercio con repartos atómicos</td></tr><tr><td>Spender de las suscripciones</td><td>Smart account controlada por OrcaRail</td><td>Contrato público <code>SubscriptionHub</code>; cualquiera puede llamarlo</td></tr><tr><td>Keeper</td><td>Un único programador en NestJS</td><td>NestJS + Chainlink + Gelato + AVS de EigenLayer opcional</td></tr><tr><td>Indexador</td><td>Interno</td><td>Subgraph público con un esquema documentado</td></tr><tr><td>App de pago / panel</td><td>Alojados por OrcaRail</td><td>Alojados + copias en IPFS/ENS; alojamientos de terceros bienvenidos</td></tr><tr><td>Primitiva de enlace de pago</td><td>Forma interna de la API</td><td>Borrador de EIP con implementación de referencia</td></tr><tr><td>Liquidación entre cadenas</td><td>El keeper de OrcaRail llama a Relay</td><td>Intents del pagador enrutados por un mercado de solvers + respaldo de OrcaRail</td></tr><tr><td>Gobernanza</td><td>Multisig de OrcaRail (fundadores + equipo)</td><td>Consejo público; gobernanza on-chain como opción real</td></tr><tr><td>Superficie regulatoria</td><td>«OrcaRail es el procesador»</td><td>«OrcaRail es un procesador entre muchos en el mismo riel»</td></tr><tr><td>API visible para el comercio</td><td>REST + webhooks</td><td><strong>Los mismos REST + webhooks</strong> (estables)</td></tr><tr><td>Token</td><td>Ninguno</td><td>Ninguno; reservado como opción futura (sección 9)</td></tr></tbody></table>
<p>La superficie de cara a Web2 se mantiene estable a propósito. Los comercios que se integraron con la API REST en 2026 no se rompen en 2028.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="16-threat-model">16. Modelo de amenazas<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#16-threat-model" class="hash-link" aria-label="Enlace directo al 16. Modelo de amenazas" title="Enlace directo al 16. Modelo de amenazas" translate="no">​</a></h2>
<p>Las amenazas que contemplamos explícitamente, con sus mitigaciones:</p>
<ul>
<li class=""><strong>Bug en un contrato</strong> → varias auditorías por contrato; receptores por enlace inmutables; actualizaciones UUPS con timelock de 48 horas en factorías y hubs; programa público de recompensas por bugs.</li>
<li class=""><strong>Caída del keeper</strong> → redundancia de keepers de la Fase 3 de la Línea N (Chainlink/Gelato) + red de solvers de P4 de la Línea P + <code>charge()</code> manual público como respaldo.</li>
<li class=""><strong>Phishing de frontends</strong> → registro on-chain de contratos de P2 de la Línea P + direccionamiento por contenido con ENS + ceremonia de firma de versiones desde la multisig Safe.</li>
<li class=""><strong>Captura de la gobernanza</strong> → rotación de firmantes de la multisig; umbral 3 de 5; consejo tras la descentralización formado por operadores independientes; ceremonias públicas.</li>
<li class=""><strong>Acción regulatoria contra un alojamiento</strong> → kit de autoalojamiento de P5 de la Línea P + varios frontends independientes para que los comercios tengan rieles alternativos.</li>
<li class=""><strong>Desviación del subgraph o del indexador</strong> → esquema canónico + pruebas de reproducibilidad; varios indexadores independientes.</li>
<li class=""><strong>Mercado de solvers poco profundo</strong> → solver de respaldo de OrcaRail a coste; entrada sin permisos para nuevos solvers.</li>
<li class=""><strong>Pérdida de claves de BTC</strong> → xpub de respaldo en el alta del comercio; failover del HSM; las PSBT de reembolso prefirmadas mantienen posible la recuperación por parte del pagador.</li>
<li class=""><strong>Reorganizaciones en EVM</strong> → <code>lastChargedAt</code> monótono en <code>SubscriptionHub</code>; equivalente en Solana con <code>last_charged_at</code>.</li>
<li class=""><strong>Distorsión inducida por un token</strong> → sin token en el lanzamiento; reserva explícita; cualquier token futuro queda condicionado a umbrales de operadores independientes antes de poder reclamar un papel de gobernanza.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="17-open-questions-we-are-honest-about">17. Preguntas abiertas que reconocemos<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#17-open-questions-we-are-honest-about" class="hash-link" aria-label="Enlace directo al 17. Preguntas abiertas que reconocemos" title="Enlace directo al 17. Preguntas abiertas que reconocemos" translate="no">​</a></h2>
<p>Escribir este documento no resuelve todas las preguntas que plantea.</p>
<ul>
<li class=""><strong>¿Cuándo empieza exactamente la «descentralización»?</strong> La sección 8 da un umbral (tres frontends independientes, tres keepers independientes, un procesador ajeno a OrcaRail). Si ese umbral es el adecuado es un debate abierto.</li>
<li class=""><strong>¿Quién paga el subgraph público a escala?</strong> The Graph tiene un mercado; el autoalojado es gratis pero pesado de operar. La economía aún no está resuelta.</li>
<li class=""><strong>¿Cuál es la salida para un comercio cuyo alojamiento de frontend principal desaparece?</strong> P5 hace posible el autoalojamiento, pero no lo hace automático. Un flujo de «migrar mi tienda a otro alojamiento» es trabajo futuro.</li>
<li class=""><strong>¿Qué decide realmente la gobernanza en un protocolo con contratos inmutables por enlace?</strong> Actualizaciones de las factorías, ajuste de parámetros en los hubs (listas de tokens pausados, despliegues en nuevas cadenas) y valores por defecto del reparto de comisiones para el tráfico alojado por OrcaRail, pero no mucho más. Si ese alcance basta para justificar una gobernanza on-chain forma parte de la conversación sobre la descentralización.</li>
<li class=""><strong>¿Qué pasa con el protocolo si OrcaRail, la empresa, cambia de opinión sobre la reserva de la sección 9?</strong> Cualquier cambio es un cambio publicado de este whitepaper. Nada de giros unilaterales y silenciosos.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="18-conclusion--a-call-to-builders">18. Conclusión: una llamada a quienes construyen<a href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/#18-conclusion--a-call-to-builders" class="hash-link" aria-label="Enlace directo al 18. Conclusión: una llamada a quienes construyen" title="Enlace directo al 18. Conclusión: una llamada a quienes construyen" translate="no">​</a></h2>
<p>La <a class="" href="https://docs.orcarail.com/es/blog/non-custodial-roadmap/">hoja de ruta no custodial</a> saca el riel de la custodia. Este whitepaper saca el riel de OrcaRail. Ambos tienen que publicarse para que cualquiera de los dos importe.</p>
<p>Si estás construyendo una wallet, un panel, un indexador, un solver, una herramienta de cumplimiento o un procesador rival, el protocolo está diseñado para aceptar tu contribución sin pedir permiso. Coescribe el EIP. Ejecuta el subgraph. Fija tu propio frontend. Opera un keeper o un solver. Abre issues contra la implementación de referencia. Cuanto más de la Línea P lo haga gente que no trabaja en OrcaRail, más se ganará el protocolo la palabra <em>protocolo</em>.</p>
<p>Los comercios Web2 con los que trabajamos hoy no notarán nada de esto: sus claves de API, webhooks y paneles siguen funcionando. Esa estabilidad es justo lo que buscamos. Estamos cambiando los cimientos del riel, no la superficie que los comercios tocaron al registrarse.</p>
<hr>
<p><strong>Referencias</strong></p>
<ul>
<li class=""><a class="" href="https://docs.orcarail.com/es/blog/non-custodial-roadmap/">La hoja de ruta no custodial de OrcaRail</a>: Línea N</li>
<li class=""><a class="" href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/">El debate sobre el protocolo: cinco visiones para un OrcaRail totalmente no custodial</a>: origen de la Línea P</li>
<li class=""><a class="" href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/">Por qué el cobro por allowance supera al escrow y a las session keys</a>: decisión sobre el modelo de suscripciones</li>
<li class=""><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/architecture/">Arquitectura</a>: arquitectura técnica completa</li>
<li class=""><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/contract-reference/">Referencia de contratos</a>: ABIs, eventos y direcciones</li>
<li class=""><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/security-model/">Modelo de seguridad</a>: supuestos de confianza y custodia de claves</li>
<li class=""><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/roadmap/">Hoja de ruta</a>: estado de las fases de la Línea N</li>
<li class=""><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/eigenlayer-evaluation/">Evaluación de EigenLayer</a>: patrón reutilizado para P6</li>
</ul>]]></content:encoded>
            <category>Announcement</category>
            <category>Payments</category>
            <category>Multi-Chain</category>
            <category>Web3</category>
            <category>Stablecoins</category>
            <category>Subscriptions</category>
            <category>Crypto</category>
        </item>
        <item>
            <title><![CDATA[Fase 0: diseñar una pila de pagos no custodial]]></title>
            <link>https://docs.orcarail.com/es/blog/phase-0-design-and-audit-strategy/</link>
            <guid>https://docs.orcarail.com/es/blog/phase-0-design-and-audit-strategy/</guid>
            <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Fase 0 de la hoja de ruta no custodial de OrcaRail. Especificación del reparto de comisiones, selección de cadenas, elección del auditor, multisig de despliegue, política de actualizaciones y la matriz de decisión del modelo de suscripciones.]]></description>
            <content:encoded><![CDATA[<p><strong>20 de abril de 2026</strong>: antes de escribir una sola línea de Solidity, congelamos la especificación. La Fase 0 es la fase de diseño y aprobación de la <a class="" href="https://docs.orcarail.com/es/blog/non-custodial-roadmap/">hoja de ruta no custodial</a>: qué pasa a on-chain y qué no, qué cadena se lanza primero, quién audita los contratos y quién guarda las claves de despliegue.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tldr">En resumen<a href="https://docs.orcarail.com/es/blog/phase-0-design-and-audit-strategy/#tldr" class="hash-link" aria-label="Enlace directo al En resumen" title="Enlace directo al En resumen" translate="no">​</a></h2>
<ul>
<li class="">El reparto de comisiones queda congelado en cuatro conceptos: <strong>comercio, plataforma, referido/afiliado y comisión de puente</strong>. Todo lo que hace el divisor on-chain se expresa en puntos básicos; sin ajustes off-chain.</li>
<li class=""><strong>Base</strong> es la cadena de lanzamiento de la Fase 1. Barata, rápida, ya incluida en la lista de cadenas del <a href="https://github.com/orcarail/orcarail/tree/main/api/src/payments/wallet.service.ts" target="_blank" rel="noopener noreferrer" class="">servicio de wallets</a> y con USDC nativo.</li>
<li class="">Las suscripciones adoptan <strong>approve + pull de ERC-20</strong> (EVM) y <strong>delegación SPL</strong> (Solana). Se descartaron los diseños de escrow y de session keys; consulta la matriz de decisión más abajo.</li>
<li class="">Los contratos los despliega una <strong>multisig Safe 3 de 5</strong> (EVM) y una <strong>multisig Squads 3 de 5</strong> (Solana). Los receptores por enlace son inmutables. Las factorías y <code>SubscriptionHub</code> están detrás de un pequeño proxy con un timelock de 48 horas.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-this-phase-changes">Qué cambia en esta fase<a href="https://docs.orcarail.com/es/blog/phase-0-design-and-audit-strategy/#what-this-phase-changes" class="hash-link" aria-label="Enlace directo al Qué cambia en esta fase" title="Enlace directo al Qué cambia en esta fase" translate="no">​</a></h2>
<p>Nada en producción. La Fase 0 es una especificación escrita, tres propuestas de auditoría, una ceremonia de claves de despliegue y un par de ADR fusionados.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-fee-split-spec-frozen">La especificación del reparto de comisiones (congelada)<a href="https://docs.orcarail.com/es/blog/phase-0-design-and-audit-strategy/#the-fee-split-spec-frozen" class="hash-link" aria-label="Enlace directo al La especificación del reparto de comisiones (congelada)" title="Enlace directo al La especificación del reparto de comisiones (congelada)" translate="no">​</a></h2>
<p>Hoy, <code>SmartAccountWalletService.drainSmartAccountWallet</code> en <a href="https://github.com/orcarail/orcarail/tree/main/api/src/withdrawals/services/smart-account-wallet.service.ts" target="_blank" rel="noopener noreferrer" class="">api/src/withdrawals/services/smart-account-wallet.service.ts</a> compone transferencias en una UserOperation con tres destinatarios: el comercio (<code>toAddress</code>), la wallet de soporte (<code>supportWalletAddress</code>) y la wallet de comisiones. La versión en contrato replica esto exactamente:</p>
<div class="language-solidity codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-solidity codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">struct Split {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    address merchant;   // main receiver</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    address platform;   // support / platform fee</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    address referral;   // commission / affiliate (optional, zero = skip)</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    address bridgeFee;  // Relay bridge fee carrier (optional, zero = skip)</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    uint16 platformBps;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    uint16 referralBps;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    uint16 bridgeFeeBps;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre></div></div>
<p>Todo lo que el keeper hace hoy en TypeScript se puede calcular a partir de esta struct y del importe del pago. Lo que el keeper actual no puede expresar (por ejemplo, impuestos dinámicos o retenciones a nivel de comercio) queda fuera del alcance de la Fase 1; lo añadiremos en una fase posterior si hace falta.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="chain-selection">Selección de cadena<a href="https://docs.orcarail.com/es/blog/phase-0-design-and-audit-strategy/#chain-selection" class="hash-link" aria-label="Enlace directo al Selección de cadena" title="Enlace directo al Selección de cadena" translate="no">​</a></h2>
<p>La cadena de lanzamiento de la Fase 1 es <strong>Base</strong>:</p>
<ul>
<li class="">Ya está en nuestro mapa de chainId (<code>8453 → base</code>, <code>84532 → baseSepolia</code>) en <code>api/src/payments/wallet.service.ts</code>.</li>
<li class="">El gas es lo bastante barato como para que desplegar <code>PaymentLinkReceiver</code> + repartir en el primer pago cueste céntimos por transacción.</li>
<li class="">La política de paymaster de Alchemy ya la admite, lo que nos da una vía de escape si queremos patrocinar el keeper en <code>SubscriptionHub.charge()</code>.</li>
<li class="">USDC nativo (no puenteado), algo importante para los allowances de las suscripciones.</li>
</ul>
<p>Ethereum mainnet, Arbitrum, Optimism y Polygon llegan en la <a class="" href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/">Fase 3</a>. Solana es un programa aparte, que se sigue en la <a class="" href="https://docs.orcarail.com/es/blog/phase-4-solana-pda-programs/">Fase 4</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="subscription-model-the-decision-matrix">Modelo de suscripciones: la matriz de decisión<a href="https://docs.orcarail.com/es/blog/phase-0-design-and-audit-strategy/#subscription-model-the-decision-matrix" class="hash-link" aria-label="Enlace directo al Modelo de suscripciones: la matriz de decisión" title="Enlace directo al Modelo de suscripciones: la matriz de decisión" translate="no">​</a></h2>
<p>Evaluamos tres diseños. Solo uno nos sirve.</p>
<table><thead><tr><th>Modelo</th><th>Custodia</th><th>Experiencia del pagador</th><th>Compatibilidad de wallets</th><th>Requisito de keeper</th><th>Veredicto</th></tr></thead><tbody><tr><td><strong>Approve + pull de ERC-20</strong> (elegido)</td><td>Ninguna</td><td>Un único <code>approve</code></td><td>MetaMask, Phantom, Ledger, Safe: nativa</td><td>Cualquiera; el keeper es opcional</td><td>Publicar este</td></tr><tr><td>Depósito en escrow</td><td>Ninguna</td><td>Depositar N meses</td><td>Todas las wallets</td><td>Cualquiera</td><td>Peor experiencia; fondos bloqueados</td></tr><tr><td>Smart wallet + session keys</td><td>Ninguna</td><td>Alta en 4337</td><td>Solo wallets 4337</td><td>Firmante de session keys</td><td>Compatibilidad demasiado limitada</td></tr></tbody></table>
<p>Approve + pull es el único que funciona con las wallets que los pagadores ya usan (MetaMask, Phantom, hardware wallets, Safes). También es el diseño que ya publicamos en <a class="" href="https://docs.orcarail.com/es/docs/subscriptions/auto-charge/">Cobro automático</a>, que documenta <code>approve(spender, amount)</code> y la delegación SPL. La Fase 2 sustituye el <strong>lado del cobro</strong> por un smart contract y deja sin cambios el lado del pagador.</p>
<p>El argumento completo está en <a class="" href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/">Por qué el cobro por allowance supera al escrow y a las session keys</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="deployer-key-custody">Custodia de las claves de despliegue<a href="https://docs.orcarail.com/es/blog/phase-0-design-and-audit-strategy/#deployer-key-custody" class="hash-link" aria-label="Enlace directo al Custodia de las claves de despliegue" title="Enlace directo al Custodia de las claves de despliegue" translate="no">​</a></h2>
<ul>
<li class=""><strong>EVM</strong>: Safe (antes Gnosis Safe) en Base con <strong>umbral 3 de 5</strong>. Firmantes: dos fundadores, un responsable de operaciones, un asesor y una copia de seguridad en frío. Cada firmante usa una hardware wallet; ninguna clave en un servidor.</li>
<li class=""><strong>Solana</strong>: multisig Squads con la misma configuración 3 de 5 y los mismos firmantes.</li>
<li class=""><strong>Rotación</strong>: cada firmante rota anualmente o al marcharse; cualquier rotación individual es una transacción de Safe/Squads.</li>
<li class=""><strong>Ningún keeper en caliente puede desplegar</strong>. La EOA del keeper en NestJS (usada para llamar a <code>charge()</code> en la Fase 2) no tiene autoridad de despliegue, ni de actualización, ni dirección de comisiones.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-policy">Política de actualizaciones<a href="https://docs.orcarail.com/es/blog/phase-0-design-and-audit-strategy/#upgrade-policy" class="hash-link" aria-label="Enlace directo al Política de actualizaciones" title="Enlace directo al Política de actualizaciones" translate="no">​</a></h2>
<ul>
<li class=""><strong><code>PaymentLinkReceiver</code> por enlace</strong>: inmutable. Sin actualizaciones. Es una ganancia de confianza para los pagadores: el código al que pagan no puede cambiar después.</li>
<li class=""><strong><code>PaymentLinkFactory</code></strong>: pequeño proxy UUPS propiedad de la multisig, con timelock de 48 horas en <code>upgradeTo</code>. Las actualizaciones no pueden cambiar los receptores ya desplegados.</li>
<li class=""><strong><code>SubscriptionHub</code></strong>: el mismo patrón. La semántica de <code>charge()</code> y <code>cancel()</code> es estable entre versiones; si alguna vez necesitamos un cambio incompatible, desplegamos <code>SubscriptionHubV2</code> y migramos en lugar de actualizar.</li>
<li class=""><strong>Semántica de reembolsos y disputas</strong>: <code>refund(txId)</code> on-chain, invocable por el firmante del comercio (mediante su clave de API → EOA del keeper) o por la multisig de despliegue. El pagador no puede reembolsarse a sí mismo (igual que en el producto actual).</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="audit-vendor-strategy">Estrategia de proveedores de auditoría<a href="https://docs.orcarail.com/es/blog/phase-0-design-and-audit-strategy/#audit-vendor-strategy" class="hash-link" aria-label="Enlace directo al Estrategia de proveedores de auditoría" title="Enlace directo al Estrategia de proveedores de auditoría" translate="no">​</a></h2>
<p>Preseleccionaremos tres empresas y haremos una auditoría principal + una revisión competitiva:</p>
<ul>
<li class=""><strong>Candidatos principales (EVM)</strong>: Spearbit, Trail of Bits, Zellic.</li>
<li class=""><strong>Candidatos secundarios (Solana)</strong>: OtterSec, Neodyme.</li>
<li class=""><strong>Alcance</strong>: <code>PaymentLinkFactory</code>, <code>PaymentLinkReceiver</code>, <code>FeeSplitter</code>, <code>SubscriptionHub</code>. Los programas Anchor tienen su propia auditoría en la Fase 4.</li>
<li class=""><strong>Presupuesto</strong>: la auditoría es un requisito previo obligatorio para el lanzamiento en Base mainnet. Nada de mainnet antes del informe con todo corregido.</li>
<li class=""><strong>Divulgación pública</strong>: los informes de auditoría se suben al repositorio y se enlazan desde <a class="" href="https://docs.orcarail.com/es/docs/non-custodial/security-model/">/docs/non-custodial/security-model</a>.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="risks-and-mitigations">Riesgos y mitigaciones<a href="https://docs.orcarail.com/es/blog/phase-0-design-and-audit-strategy/#risks-and-mitigations" class="hash-link" aria-label="Enlace directo al Riesgos y mitigaciones" title="Enlace directo al Riesgos y mitigaciones" translate="no">​</a></h2>
<ul>
<li class=""><strong>Ampliación descontrolada de la especificación</strong>. Mitigación: todo lo que no se pueda expresar como reparto en puntos básicos se aplaza a una fase posterior. La Fase 1 no se bloquea por impuestos dinámicos ni por ajustes por comercio.</li>
<li class=""><strong>Disponibilidad de los firmantes de la multisig</strong>. Mitigación: 3 de 5, no 2 de 3, para que dos firmantes cualesquiera puedan no estar disponibles sin congelar los despliegues.</li>
<li class=""><strong>Plazos de la auditoría</strong>. Mitigación: empezar ya las conversaciones con proveedores; publicar los contratos en testnet durante la auditoría; el despliegue en mainnet queda condicionado.</li>
<li class=""><strong>Un caso de comisión olvidado</strong>. Mitigación: reproducir cada camino actual de <code>drainSmartAccountWallet</code> (nativo + ERC-20, con/sin soporte, con/sin comisión) como test de invariantes de Foundry antes de la auditoría.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="status-checklist">Lista de estado<a href="https://docs.orcarail.com/es/blog/phase-0-design-and-audit-strategy/#status-checklist" class="hash-link" aria-label="Enlace directo al Lista de estado" title="Enlace directo al Lista de estado" translate="no">​</a></h2>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Struct del reparto de comisiones aprobada y etiquetada</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Base seleccionada como cadena de lanzamiento de la Fase 1</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Tres proveedores de auditoría preseleccionados</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Multisigs de despliegue Safe (Base) y Squads (Solana) creadas y probadas</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->ADR fusionado sobre la política de actualizaciones y el timelock</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->ADR fusionado sobre la decisión del modelo de suscripciones</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Semántica de reembolsos / disputas documentada</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-next">Qué sigue<a href="https://docs.orcarail.com/es/blog/phase-0-design-and-audit-strategy/#what-is-next" class="hash-link" aria-label="Enlace directo al Qué sigue" title="Enlace directo al Qué sigue" translate="no">​</a></h2>
<p>La Fase 1 implementa la especificación: <strong><a class="" href="https://docs.orcarail.com/es/blog/phase-1-evm-payment-link-contracts/">Enlaces de pago basados en contratos en EVM</a></strong>.</p>
<hr>
<p>Documentación de referencia: <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/phases/phase-0-design/">Estado de la Fase 0</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/security-model/">Modelo de seguridad</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/architecture/">Arquitectura</a></strong></p>]]></content:encoded>
            <category>Payments</category>
            <category>Web3</category>
            <category>Multi-Chain</category>
            <category>Announcement</category>
        </item>
        <item>
            <title><![CDATA[Fase 1: enlaces de pago basados en contratos en EVM]]></title>
            <link>https://docs.orcarail.com/es/blog/phase-1-evm-payment-link-contracts/</link>
            <guid>https://docs.orcarail.com/es/blog/phase-1-evm-payment-link-contracts/</guid>
            <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Fase 1 de la hoja de ruta no custodial de OrcaRail. PaymentLinkFactory, el clon PaymentLinkReceiver y FeeSplitter sustituyen en EVM el modelo de barrido con HD wallets por repartos atómicos on-chain.]]></description>
            <content:encoded><![CDATA[<p><strong>20 de abril de 2026</strong>: la Fase 1 es el verdadero inicio de ingeniería de la <a class="" href="https://docs.orcarail.com/es/blog/non-custodial-roadmap/">hoja de ruta no custodial</a>. Sustituimos las EOA derivadas de HD por enlace y las smart accounts de Alchemy por un patrón de <strong>factoría + receptor como clon mínimo</strong> en EVM. Los fondos se reparten de forma atómica en la transacción de pago; sin barrido, sin custodia.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tldr">En resumen<a href="https://docs.orcarail.com/es/blog/phase-1-evm-payment-link-contracts/#tldr" class="hash-link" aria-label="Enlace directo al En resumen" title="Enlace directo al En resumen" translate="no">​</a></h2>
<ul>
<li class=""><code>PaymentLinkFactory.computeAddress(linkId)</code> devuelve una dirección CREATE2 determinista. Mostramos esa dirección al pagador <strong>antes</strong> de que se despliegue nada.</li>
<li class=""><code>PaymentLinkReceiver</code> es un clon mínimo EIP-1167. Acepta token nativo o ERC-20, emite <code>Paid</code> y llama a <code>FeeSplitter.split()</code> en la misma transacción.</li>
<li class=""><a href="https://github.com/orcarail/orcarail/tree/main/api/src/payments/wallet.service.ts" target="_blank" rel="noopener noreferrer" class="">api/src/payments/wallet.service.ts</a> deja de generar HD wallets para los enlaces EVM; en su lugar llama a la vista de la factoría.</li>
<li class="">El camino de barrido (<code>drainSmartAccountWallet</code>, <code>getSmartAccountClientForDepositWallet</code>) se omite para los enlaces creados con el flag <code>useOnChainReceiver</code>.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-this-phase-changes">Qué cambia en esta fase<a href="https://docs.orcarail.com/es/blog/phase-1-evm-payment-link-contracts/#what-this-phase-changes" class="hash-link" aria-label="Enlace directo al Qué cambia en esta fase" title="Enlace directo al Qué cambia en esta fase" translate="no">​</a></h2>
<div class="wrapper_vprU"><button type="button" class="expandBtn_RmxB" aria-label="Show diagram fullscreen" title="Fullscreen"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div>
<p>En el lado del «después» no hay ninguna caja que controlemos reteniendo los fondos.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="contracts-introduced">Contratos introducidos<a href="https://docs.orcarail.com/es/blog/phase-1-evm-payment-link-contracts/#contracts-introduced" class="hash-link" aria-label="Enlace directo al Contratos introducidos" title="Enlace directo al Contratos introducidos" translate="no">​</a></h2>
<p>Todos en un nuevo paquete <code>contracts/evm/</code>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="paymentlinkfactory">PaymentLinkFactory<a href="https://docs.orcarail.com/es/blog/phase-1-evm-payment-link-contracts/#paymentlinkfactory" class="hash-link" aria-label="Enlace directo al PaymentLinkFactory" title="Enlace directo al PaymentLinkFactory" translate="no">​</a></h3>
<ul>
<li class=""><code>computeAddress(bytes32 linkId) view returns (address)</code>: dirección CREATE2 determinista derivada de <code>linkId</code> (el UUID actual del enlace de pago, con hash a <code>bytes32</code>).</li>
<li class=""><code>deployAndPay(bytes32 linkId, Split split, address token, uint256 amount)</code>: despliegue diferido + pago en una sola transacción. La factoría clona la implementación de <code>PaymentLinkReceiver</code>, la inicializa con el <code>Split</code> y reenvía los fondos.</li>
<li class=""><code>isDeployed(bytes32 linkId) view returns (bool)</code>: auxiliar que usan el indexador y la interfaz.</li>
<li class="">Actualizable detrás de un proxy UUPS, propiedad de la multisig de despliegue (Safe 3 de 5), con timelock de 48 horas en <code>upgradeTo</code>.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="paymentlinkreceiver-clone">PaymentLinkReceiver (clon)<a href="https://docs.orcarail.com/es/blog/phase-1-evm-payment-link-contracts/#paymentlinkreceiver-clone" class="hash-link" aria-label="Enlace directo al PaymentLinkReceiver (clon)" title="Enlace directo al PaymentLinkReceiver (clon)" translate="no">​</a></h3>
<ul>
<li class="">Inmutable tras la inicialización. Guarda la struct <code>Split</code> y la dirección de <code>FeeSplitter</code>.</li>
<li class=""><code>pay(address token, uint256 amount)</code>: gestiona token nativo y ERC-20 en un único punto de entrada. Usa <code>SafeERC20</code> para que funcionen tokens no estándar (USDT). Emite <code>Paid(linkId, payer, token, amount)</code>.</li>
<li class="">Llama a <code>FeeSplitter.split()</code> de forma atómica. Si el reparto revierte, el pago revierte.</li>
<li class=""><code>refund(bytes32 txId)</code> explícito, invocable solo por la EOA del keeper del comercio o por la multisig de despliegue.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="feesplitter">FeeSplitter<a href="https://docs.orcarail.com/es/blog/phase-1-evm-payment-link-contracts/#feesplitter" class="hash-link" aria-label="Enlace directo al FeeSplitter" title="Enlace directo al FeeSplitter" translate="no">​</a></h3>
<ul>
<li class=""><code>split(Split s, address token, uint256 amount)</code>: reparte por puntos básicos. El wei restante va al comercio (sin pérdida de polvo).</li>
<li class="">Emite <code>Split(txId, merchant, platform, referral, bridgeFee)</code> para que el indexador mantenga paridad con los payloads de webhook heredados.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="api-changes">Cambios en la API<a href="https://docs.orcarail.com/es/blog/phase-1-evm-payment-link-contracts/#api-changes" class="hash-link" aria-label="Enlace directo al Cambios en la API" title="Enlace directo al Cambios en la API" translate="no">​</a></h2>
<p>El mayor cambio de código está en <a href="https://github.com/orcarail/orcarail/tree/main/api/src/payments/wallet.service.ts" target="_blank" rel="noopener noreferrer" class="">api/src/payments/wallet.service.ts</a>. Hoy, <code>getOrCreateAddressForPaymentLink</code> deriva desde <code>hd_wallet_seed</code>, calcula la dirección contrafactual de Alchemy y la guarda en <code>wallet_address</code>. Tras la Fase 1, para las cadenas EVM con el feature flag, esa función pasa a ser:</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">getOrCreateAddressForPaymentLink</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">paymentLinkId</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> network</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">isEvm</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">network</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> featureFlags</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">useOnChainReceiver</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">network</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">chainId</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> address </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> factory</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">computeAddress</span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">hashLinkId</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">paymentLinkId</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> address</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> walletAddressId</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> derivationPath</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">null</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// legacy path unchanged</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p>Sin derivación HD. Sin material privado en la base de datos para los enlaces nuevos.</p>
<p>Un nuevo servicio, <code>payments/indexer/evm-paid-event.service.ts</code>, se suscribe a los eventos <code>Paid</code> de cada cadena habilitada mediante <code>viem.watchContractEvent</code>. Cuando hay coincidencia:</p>
<ol>
<li class="">Obtiene el <code>paymentLinkId</code> del evento (indexado en <code>bytes32</code>).</li>
<li class="">Inserta o actualiza una fila <code>PaymentTransaction</code>, con la misma forma que hoy.</li>
<li class="">Emite los mismos webhooks que emite hoy el camino de finalización del barrido (<a href="https://github.com/orcarail/orcarail/tree/main/api/src/webhooks/webhooks.service.ts" target="_blank" rel="noopener noreferrer" class="">api/src/webhooks/webhooks.service.ts</a>).</li>
</ol>
<p>El feature flag <code>useOnChainReceiver</code> se define por chain id. Un enlace creado con el flag desactivado se queda para siempre en el camino de barrido heredado; no migramos enlaces en curso.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="deprecations">Obsolescencias<a href="https://docs.orcarail.com/es/blog/phase-1-evm-payment-link-contracts/#deprecations" class="hash-link" aria-label="Enlace directo al Obsolescencias" title="Enlace directo al Obsolescencias" translate="no">​</a></h2>
<p>En esta fase <strong>omitimos</strong>, pero no eliminamos:</p>
<ul>
<li class=""><code>SmartAccountWalletService.drainSmartAccountWallet</code>: ya no se llama en las cadenas con el flag.</li>
<li class=""><code>SmartAccountWalletService.getSmartAccountClientForDepositWallet</code>: no hace falta cuando las direcciones vienen de la factoría.</li>
<li class="">Filas de <code>wallet_address</code>: no se escriben en las cadenas EVM con el flag.</li>
</ul>
<p>La eliminación real ocurre en la <a class="" href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/">Fase 7</a>, cuando todos los enlaces heredados de la cadena estén liquidados.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="migration-plan">Plan de migración<a href="https://docs.orcarail.com/es/blog/phase-1-evm-payment-link-contracts/#migration-plan" class="hash-link" aria-label="Enlace directo al Plan de migración" title="Enlace directo al Plan de migración" translate="no">​</a></h2>
<ul>
<li class=""><strong>Enlaces nuevos en Base</strong>: reciben una dirección CREATE2 calculada por la factoría. La interfaz la muestra igual que hoy.</li>
<li class=""><strong>Enlaces abiertos existentes en Base</strong>: se quedan en el camino de barrido heredado hasta que caduquen o se liquiden. Sin migración forzada.</li>
<li class=""><strong>Otras cadenas EVM</strong>: en el camino heredado hasta que la <a class="" href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/">Fase 3</a> active su flag.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="risks-and-mitigations">Riesgos y mitigaciones<a href="https://docs.orcarail.com/es/blog/phase-1-evm-payment-link-contracts/#risks-and-mitigations" class="hash-link" aria-label="Enlace directo al Riesgos y mitigaciones" title="Enlace directo al Riesgos y mitigaciones" translate="no">​</a></h2>
<ul>
<li class=""><strong>Se muestra una dirección CREATE2 antes de que exista código</strong>. Mitigación: documentar que la recuperabilidad depende del desplegador de la factoría. Limitar <code>maxLinkValue</code> en la factoría durante los primeros 30 días.</li>
<li class=""><strong>USDT y otros ERC-20 no estándar</strong>. Mitigación: <code>SafeERC20</code> tanto en <code>PaymentLinkReceiver</code> como en <code>FeeSplitter</code>; tests de fuzzing de Foundry contra un fork de mainnet con USDT.</li>
<li class=""><strong>Tokens con comisión por transferencia</strong>. Mitigación: lista de tokens permitidos; los que no estén en ella vuelven al camino heredado.</li>
<li class=""><strong>Retraso del indexador de la cadena</strong>. Mitigación: doble suscripción (Alchemy + RPC pública de respaldo); trabajos de conciliación cada hora; inserción/actualización idempotente.</li>
<li class=""><strong>Hallazgo de auditoría durante el desarrollo</strong>. Mitigación: auditoría como requisito; sin despliegue en mainnet antes del informe con todo corregido.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="status-checklist">Lista de estado<a href="https://docs.orcarail.com/es/blog/phase-1-evm-payment-link-contracts/#status-checklist" class="hash-link" aria-label="Enlace directo al Lista de estado" title="Enlace directo al Lista de estado" translate="no">​</a></h2>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Proyecto Foundry creado en <code>contracts/evm/</code></li>
<li class="task-list-item"><input type="checkbox" disabled=""> <code>PaymentLinkFactory</code> + <code>PaymentLinkReceiver</code> + <code>FeeSplitter</code> implementados</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Tests de fuzzing + invariantes para la aritmética del reparto (el comercio siempre recibe ≥ lo esperado menos comisiones)</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Tests en fork de USDT / ERC-20 no estándar pasando</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Feature flag <code>useOnChainReceiver</code> conectado en <code>api/src/payments</code></li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Indexador <code>evm-paid-event.service.ts</code> publicado y emitiendo los webhooks existentes</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Auditoría iniciada y correcciones integradas</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Despliegue en Base mainnet desde la multisig</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Grupo canario de comercios con el flag activado</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-next">Qué sigue<a href="https://docs.orcarail.com/es/blog/phase-1-evm-payment-link-contracts/#what-is-next" class="hash-link" aria-label="Enlace directo al Qué sigue" title="Enlace directo al Qué sigue" translate="no">​</a></h2>
<p>Con los comercios de Base usando receptores en contrato, la Fase 2 hace lo mismo con las suscripciones: <strong><a class="" href="https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/">Suscripciones por allowance</a></strong>.</p>
<hr>
<p>Documentación de referencia: <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/phases/phase-1-evm-payment-links/">Estado de la Fase 1</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/contract-reference/">Referencia de contratos</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/architecture/">Arquitectura</a></strong></p>]]></content:encoded>
            <category>Payments</category>
            <category>Web3</category>
            <category>Multi-Chain</category>
            <category>Stablecoins</category>
        </item>
        <item>
            <title><![CDATA[Fase 2: suscripciones por allowance]]></title>
            <link>https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/</link>
            <guid>https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/</guid>
            <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Fase 2 de la hoja de ruta no custodial de OrcaRail. El contrato SubscriptionHub sustituye al procesador custodial de cobro automático; los pagadores firman un único approve de ERC-20 y cualquiera puede activar charge(id) según el calendario.]]></description>
            <content:encoded><![CDATA[<p><strong>20 de abril de 2026</strong>: la Fase 2 lleva la facturación recurrente a un <code>SubscriptionHub</code> on-chain. El pagador firma un único <code>approve</code> en su wallet y cualquiera (incluido nuestro keeper) puede llamar a <code>charge(id)</code> cuando vence un periodo. Los fondos van directamente del pagador a los repartos del comercio; OrcaRail nunca los retiene.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tldr">En resumen<a href="https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/#tldr" class="hash-link" aria-label="Enlace directo al En resumen" title="Enlace directo al En resumen" translate="no">​</a></h2>
<ul>
<li class=""><code>SubscriptionHub.createSubscription(...)</code> registra el calendario on-chain.</li>
<li class="">El pagador firma <code>approve(USDC, hub, cap)</code> una vez en su wallet de siempre. Es el mismo paso que ya documentamos en <a class="" href="https://docs.orcarail.com/es/docs/subscriptions/auto-charge/">Cobro automático</a>.</li>
<li class="">Cualquier EOA puede llamar a <code>charge(id)</code>. Nuestro programador en NestJS lo hace por defecto; Chainlink/Gelato lo respaldarán a partir de la <a class="" href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/">Fase 3</a>.</li>
<li class="">Protección frente a reorganizaciones mediante un <code>lastChargedAt</code> monótono. Sin cobros dobles.</li>
<li class="">Los suscriptores existentes migran de forma <strong>voluntaria</strong>, en la renovación.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-this-phase-changes">Qué cambia en esta fase<a href="https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/#what-this-phase-changes" class="hash-link" aria-label="Enlace directo al Qué cambia en esta fase" title="Enlace directo al Qué cambia en esta fase" translate="no">​</a></h2>
<p>Hoy, <a href="https://github.com/orcarail/orcarail/tree/main/api/src/scheduler/processors/subscription-auto-charge.processor.ts" target="_blank" rel="noopener noreferrer" class="">api/src/scheduler/processors/subscription-auto-charge.processor.ts</a> usa una smart account controlada por OrcaRail para cobrar al pagador mediante el <code>approve</code> existente. Funciona, pero la smart account es nuestra: la confianza pasa por nosotros.</p>
<p>Tras la Fase 2:</p>
<div class="wrapper_vprU"><button type="button" class="expandBtn_RmxB" aria-label="Show diagram fullscreen" title="Fullscreen"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div>
<p>El allowance <strong>sigue yendo del pagador a un contrato</strong>, pero el contrato es auditable e inmutable, y cualquiera, no solo nosotros, puede ser el keeper.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="contracts-introduced">Contratos introducidos<a href="https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/#contracts-introduced" class="hash-link" aria-label="Enlace directo al Contratos introducidos" title="Enlace directo al Contratos introducidos" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="subscriptionhub">SubscriptionHub<a href="https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/#subscriptionhub" class="hash-link" aria-label="Enlace directo al SubscriptionHub" title="Enlace directo al SubscriptionHub" translate="no">​</a></h3>
<p>Una instancia por cadena. Superficie mínima:</p>
<div class="language-solidity codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-solidity codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">function createSubscription(</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    bytes32 id,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    address payer,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    IERC20 token,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    uint256 amount,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    uint64 interval,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    uint256 cap,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Split calldata split</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">) external;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">function charge(bytes32 id) external;        // any caller</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">function cancel(bytes32 id) external;        // payer only</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">function subscription(bytes32 id) view returns (Subscription memory);</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">event SubscriptionCreated(bytes32 indexed id, address indexed payer, ...);</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">event Charged(bytes32 indexed id, uint256 amount, uint64 nextChargeAt);</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">event ChargeSkipped(bytes32 indexed id, bytes32 reason);</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">event Canceled(bytes32 indexed id);</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="invariants-enforced-in-charge">Invariantes que impone <code>charge()</code><a href="https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/#invariants-enforced-in-charge" class="hash-link" aria-label="Enlace directo al invariants-enforced-in-charge" title="Enlace directo al invariants-enforced-in-charge" translate="no">​</a></h3>
<ul>
<li class=""><code>block.timestamp &gt;= nextChargeAt</code>: no se puede cobrar antes de tiempo.</li>
<li class=""><code>block.timestamp &gt; lastChargedAt</code>: monótono, así las reorganizaciones no pueden cobrar dos veces.</li>
<li class=""><code>amountCharged + amount &lt;= cap</code>: impone el límite de la aprobación además del allowance de ERC-20.</li>
<li class=""><code>token.allowance(payer, hub) &gt;= amount</code>: revert explícito con <code>InsufficientAllowance</code> para un texto de webhook claro.</li>
<li class=""><code>token.balanceOf(payer) &gt;= amount</code>: igual, con <code>InsufficientBalance</code>.</li>
</ul>
<p>El <code>Split</code> se reutiliza de la <a class="" href="https://docs.orcarail.com/es/blog/phase-1-evm-payment-link-contracts/">Fase 1</a>: el mismo <code>FeeSplitter</code>, la misma semántica de puntos básicos.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="api-changes">Cambios en la API<a href="https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/#api-changes" class="hash-link" aria-label="Enlace directo al Cambios en la API" title="Enlace directo al Cambios en la API" translate="no">​</a></h2>
<p>El gran cambio es que <a href="https://github.com/orcarail/orcarail/tree/main/api/src/scheduler/processors/subscription-auto-charge.processor.ts" target="_blank" rel="noopener noreferrer" class="">api/src/scheduler/processors/subscription-auto-charge.processor.ts</a> deja de cobrar desde nuestra smart account y pasa a llamar a <code>SubscriptionHub.charge(id)</code> con una EOA de keeper.</p>
<p>En concreto:</p>
<ul>
<li class="">La EOA del keeper es una hot wallet por cadena que solo tiene gas. No tiene ninguna autoridad sobre los fondos de los comercios.</li>
<li class="">Si la cadena tiene una política de paymaster de Alchemy (consulta <a href="https://github.com/orcarail/orcarail/tree/main/api/src/withdrawals/services/gas-strategy" target="_blank" rel="noopener noreferrer" class="">api/src/withdrawals/services/gas-strategy</a>), el keeper usa el camino patrocinado; si no, paga con su propio saldo de gas.</li>
<li class="">Si hay un revert, el procesador interpreta el selector del error y actualiza los mismos estados de <a href="https://github.com/orcarail/orcarail/tree/main/api/src/subscriptions/infrastructure/persistence/relational/entities/subscription-auto-charge.entity.ts" target="_blank" rel="noopener noreferrer" class="">SubscriptionAutoChargeEntity</a> que usamos hoy (<code>past_due</code>, <code>insufficient_balance</code>, etc.).</li>
<li class="">Los webhooks y los emails de <code>api/src/mail/mail-templates/subscription-*.hbs</code> se envían sin cambios.</li>
</ul>
<p>La experiencia del pagador en <a href="https://github.com/orcarail/orcarail/tree/main/pay" target="_blank" rel="noopener noreferrer" class="">pay</a> recibe dos ajustes, ambos menores:</p>
<ol>
<li class="">El paso <code>approve()</code> ahora apunta el spender a la dirección de <code>SubscriptionHub</code> en lugar de a nuestra hot wallet. Es un cambio de texto y un valor de configuración; el flujo que ve el pagador es idéntico.</li>
<li class="">Un botón de «revocar» que llama a <code>SubscriptionHub.cancel(id)</code> y luego pide un <code>approve(hub, 0)</code> on-chain para una limpieza completa. La <a class="" href="https://docs.orcarail.com/es/docs/subscriptions/auto-charge/">documentación actual de revocación del cobro automático</a> sigue siendo correcta.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="deprecations">Obsolescencias<a href="https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/#deprecations" class="hash-link" aria-label="Enlace directo al Obsolescencias" title="Enlace directo al Obsolescencias" translate="no">​</a></h2>
<ul>
<li class="">El camino de cobro custodial en <code>subscription-auto-charge.processor.ts</code>: con el flag, solo se ejecuta la rama <code>SubscriptionHub.charge</code>.</li>
<li class="">La smart account de OrcaRail como <code>approval_spender_address</code>: las suscripciones nuevas guardan en su lugar la dirección del hub.</li>
<li class="">El campo <code>approval_spender_address</code> sigue en la respuesta de la API; simplemente apunta a un sitio nuevo y auditable.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="migration-plan">Plan de migración<a href="https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/#migration-plan" class="hash-link" aria-label="Enlace directo al Plan de migración" title="Enlace directo al Plan de migración" translate="no">​</a></h2>
<p>Los suscriptores existentes <strong>nunca se migran a la fuerza</strong>. Ofrecemos dos caminos:</p>
<ol>
<li class=""><strong>Al renovar</strong>: en el siguiente ciclo, un banner del panel pide al pagador que vuelva a firmar <code>approve(hub, cap)</code> en el nuevo <code>SubscriptionHub</code>. Un clic. El allowance antiguo a la hot wallet heredada se puede dejar o revocar; ya no importa.</li>
<li class=""><strong>Por iniciativa del usuario</strong>: un botón «Pasar a no custodial» en la página de detalle de la suscripción hace lo mismo de inmediato.</li>
</ol>
<p>Las suscripciones que nunca migren se quedan en el camino custodial hasta su cancelación. Ese camino se desactiva en la <a class="" href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/">Fase 7</a>, con mucha antelación.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="risks-and-mitigations">Riesgos y mitigaciones<a href="https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/#risks-and-mitigations" class="hash-link" aria-label="Enlace directo al Riesgos y mitigaciones" title="Enlace directo al Riesgos y mitigaciones" translate="no">​</a></h2>
<ul>
<li class=""><strong>Confusión del pagador en la migración</strong>. Mitigación: la plantilla de email reproduce el lenguaje del <code>subscription-auto-charge-approved.hbs</code> existente; banner en el panel; entrada de preguntas frecuentes en <a class="" href="https://docs.orcarail.com/es/docs/non-custodial/migration-guide/">/docs/non-custodial/migration-guide</a>.</li>
<li class=""><strong>Una caída del keeper se salta un cobro</strong>. Mitigación: <code>charge()</code> no requiere permisos; cualquier instancia de Chainlink Automation o Gelato puede ser el respaldo, y también es posible un <code>charge()</code> manual iniciado por el comercio. Plan completo en la <a class="" href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/">Fase 3</a>.</li>
<li class=""><strong>Cobro doble por reorganización</strong>. Mitigación: invariante monótono de <code>lastChargedAt</code>; test unitario con reorganizaciones en fork.</li>
<li class=""><strong>El pagador revoca entre ciclos</strong>. Mitigación: <code>charge()</code> emite <code>ChargeSkipped(AllowanceRevoked)</code>; se envía la plantilla de email existente <code>subscription-insufficient-allowance.hbs</code>; la suscripción pasa a <code>past_due</code>.</li>
<li class=""><strong>Desviación de la lista de tokens permitidos</strong>. Mitigación: el hub solo acepta tokens con <code>SubscriptionHub.isAllowed(token)</code>; los cambios requieren la multisig.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="status-checklist">Lista de estado<a href="https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/#status-checklist" class="hash-link" aria-label="Enlace directo al Lista de estado" title="Enlace directo al Lista de estado" translate="no">​</a></h2>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled=""> <code>SubscriptionHub</code> implementado con todos los invariantes</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Tests de fuzzing para casos de límite, allowance, reorganización y omisión</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Auditoría incremental de <code>SubscriptionHub</code> completada</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->EOA de keeper aprovisionada por cadena, con gas monitorizado mediante Sentry + Datadog</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->La app de pago apunta el <code>approve</code> a <code>SubscriptionHub</code></li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Endpoint <code>approve-auto-charge</code> actualizado para aceptar allowances con el hub como spender</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Banner del panel para las suscripciones existentes</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Grupo canario migrado y estable durante 14 días</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-next">Qué sigue<a href="https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/#what-is-next" class="hash-link" aria-label="Enlace directo al Qué sigue" title="Enlace directo al Qué sigue" translate="no">​</a></h2>
<p>Despliegue en varias cadenas y un segundo keeper: <strong><a class="" href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/">Fase 3</a></strong>.</p>
<hr>
<p>Documentación de referencia: <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/phases/phase-2-evm-subscriptions/">Estado de la Fase 2</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/migration-guide/">Guía de migración</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/contract-reference/">Referencia de contratos</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/">Por qué el cobro por allowance</a></strong></p>]]></content:encoded>
            <category>Subscriptions</category>
            <category>Payments</category>
            <category>Web3</category>
            <category>Stablecoins</category>
        </item>
        <item>
            <title><![CDATA[Fase 3: despliegue en varias cadenas EVM y redundancia de keepers]]></title>
            <link>https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/</link>
            <guid>https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/</guid>
            <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Fase 3 de la hoja de ruta no custodial de OrcaRail. Desplegar la factoría de enlaces de pago y SubscriptionHub en Ethereum, Arbitrum, Optimism y Polygon, y añadir Chainlink Automation o Gelato como segundo keeper.]]></description>
            <content:encoded><![CDATA[<p><strong>20 de abril de 2026</strong>: la Fase 3 toma la superficie de contratos de la <a class="" href="https://docs.orcarail.com/es/blog/phase-1-evm-payment-link-contracts/">Fase 1</a> y la <a class="" href="https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/">Fase 2</a> y la lleva a todas las cadenas EVM que admitimos. Además añade un segundo keeper, para que una caída de NestJS no pueda saltarse un cobro de suscripción.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tldr">En resumen<a href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/#tldr" class="hash-link" aria-label="Enlace directo al En resumen" title="Enlace directo al En resumen" translate="no">​</a></h2>
<ul>
<li class="">Desplegar <code>PaymentLinkFactory</code>, la implementación de <code>PaymentLinkReceiver</code>, <code>FeeSplitter</code> y <code>SubscriptionHub</code> en <strong>Ethereum mainnet, Arbitrum, Optimism y Polygon</strong>.</li>
<li class="">El mismo esquema de salt de CREATE2 en todas partes: la dirección de la factoría es la misma en todas las cadenas (limpio para la documentación, para las integraciones y para <code>computeAddress</code> desde el cliente).</li>
<li class="">Registrar <strong>Chainlink Automation</strong> (preferido) y/o <strong>Gelato Web3 Functions</strong> como segundo keeper que llama al mismo <code>charge(ids[])</code>.</li>
<li class="">Publicar SLO: <strong>99,5 % de los cobros en los 10 minutos siguientes al vencimiento</strong>, medido.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-this-phase-changes">Qué cambia en esta fase<a href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/#what-this-phase-changes" class="hash-link" aria-label="Enlace directo al Qué cambia en esta fase" title="Enlace directo al Qué cambia en esta fase" translate="no">​</a></h2>
<div class="wrapper_vprU"><button type="button" class="expandBtn_RmxB" aria-label="Show diagram fullscreen" title="Fullscreen"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div>
<p>Varios keepers llamando al mismo <code>charge()</code> público es la garantía de disponibilidad. Ninguno tiene custodia; cualquiera de ellos puede salvar un cobro vencido.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="deployment-plan">Plan de despliegue<a href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/#deployment-plan" class="hash-link" aria-label="Enlace directo al Plan de despliegue" title="Enlace directo al Plan de despliegue" translate="no">​</a></h2>
<p>Orden de despliegue (una cadena por semana, con canario por cadena):</p>
<ol>
<li class="">Ethereum mainnet (chainId <code>1</code>)</li>
<li class="">Arbitrum One (<code>42161</code>)</li>
<li class="">Optimism (<code>10</code>)</li>
<li class="">Polygon PoS (<code>137</code>)</li>
</ol>
<p>Las direcciones de cada cadena se publican en <a class="" href="https://docs.orcarail.com/es/docs/non-custodial/contract-reference/">/docs/non-custodial/contract-reference</a>. La clave de despliegue es la misma multisig Safe 3 de 5 definida en la <a class="" href="https://docs.orcarail.com/es/blog/phase-0-design-and-audit-strategy/">Fase 0</a>, redesplegada en cada cadena desde la misma ceremonia.</p>
<p>Las cuatro cadenas comparten el mismo feature flag <code>useOnChainReceiver</code>, definido por <code>chainId</code> dentro de <a href="https://github.com/orcarail/orcarail/tree/main/api/src/payments/wallet.service.ts" target="_blank" rel="noopener noreferrer" class="">api/src/payments/wallet.service.ts</a>. Los comercios lo activan cadena por cadena; el valor por defecto pasa a activado cuando la semana canaria sale limpia.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="gas-strategy-for-charge">Estrategia de gas para <code>charge()</code><a href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/#gas-strategy-for-charge" class="hash-link" aria-label="Enlace directo al gas-strategy-for-charge" title="Enlace directo al gas-strategy-for-charge" translate="no">​</a></h2>
<p>Las transacciones <code>charge()</code> del keeper necesitan gas. Reutilizamos la infraestructura de paymaster existente en <a href="https://github.com/orcarail/orcarail/tree/main/api/src/withdrawals/services/gas-strategy" target="_blank" rel="noopener noreferrer" class="">api/src/withdrawals/services/gas-strategy</a>:</p>
<ul>
<li class=""><strong>Con paymaster de Alchemy (Base, Arbitrum, Optimism, Polygon)</strong>: el keeper llama a <code>SubscriptionHub.charge()</code> como UserOperation con patrocinio de la política. Coste de gas cero para la EOA del keeper.</li>
<li class=""><strong>Ethereum mainnet (sin paymaster)</strong>: el keeper paga con su saldo de gas en caliente. Lo recarga a diario la wallet de la plataforma y se monitoriza con una alerta de Datadog por saldo bajo.</li>
<li class=""><strong>Gas subvencionado por el comercio (opcional)</strong>: los comercios pueden definir una <code>gas_refund_address</code> y el keeper cobra el reembolso de ahí, siguiendo el patrón actual de soporte/comisión. Fuera del alcance del despliegue inicial.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="second-keeper-chainlink-and-gelato">Segundo keeper: Chainlink y Gelato<a href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/#second-keeper-chainlink-and-gelato" class="hash-link" aria-label="Enlace directo al Segundo keeper: Chainlink y Gelato" title="Enlace directo al Segundo keeper: Chainlink y Gelato" translate="no">​</a></h2>
<p>El segundo keeper es una apuesta por la redundancia, no un sustituto. Funciona junto al programador de NestJS.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="chainlink-automation-preferred-on-evm">Chainlink Automation (preferido en EVM)<a href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/#chainlink-automation-preferred-on-evm" class="hash-link" aria-label="Enlace directo al Chainlink Automation (preferido en EVM)" title="Enlace directo al Chainlink Automation (preferido en EVM)" translate="no">​</a></h3>
<ul>
<li class="">Registrar un <strong>Upkeep</strong> por cada <code>SubscriptionHub</code>.</li>
<li class=""><code>checkUpkeep()</code> devuelve <code>performData = abi.encode(ids[])</code> para todos los <code>id</code> con <code>block.timestamp &gt;= nextChargeAt</code> (leídos de una función view).</li>
<li class=""><code>performUpkeep(performData)</code> llama a <code>charge(ids)</code> en lote.</li>
<li class="">Financiado con LINK desde la tesorería de la plataforma; saldo monitorizado.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="gelato-web3-functions-alternative">Gelato Web3 Functions (alternativa)<a href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/#gelato-web3-functions-alternative" class="hash-link" aria-label="Enlace directo al Gelato Web3 Functions (alternativa)" title="Enlace directo al Gelato Web3 Functions (alternativa)" translate="no">​</a></h3>
<ul>
<li class="">Una Web3 Function en JS consulta el hub, encuentra los ID vencidos y envía una transacción <code>charge(ids[])</code>.</li>
<li class="">El precio se paga a posteriori desde <code>1Balance</code> de Gelato.</li>
</ul>
<p>Cualquiera de los dos basta por sí solo; elegiremos según la experiencia operativa durante la Fase 3. Ejecutar ambos no es problema: <code>charge()</code> es idempotente dentro de un periodo gracias a <code>lastChargedAt</code>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="slos-and-monitoring">SLO y monitorización<a href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/#slos-and-monitoring" class="hash-link" aria-label="Enlace directo al SLO y monitorización" title="Enlace directo al SLO y monitorización" translate="no">​</a></h2>
<p>Objetivos de SLO publicados:</p>
<table><thead><tr><th>Métrica</th><th>Objetivo</th></tr></thead><tbody><tr><td><code>charge()</code> en los 10 minutos siguientes a <code>nextChargeAt</code></td><td>99,5 %</td></tr><tr><td><code>charge()</code> en la hora siguiente a <code>nextChargeAt</code></td><td>99,9 %</td></tr><tr><td>Saldo de gas en caliente de la EOA del keeper sobre el umbral de alerta</td><td>99,99 %</td></tr><tr><td>Eventos indexados en los 2 minutos siguientes a la finalidad del bloque</td><td>99,5 %</td></tr></tbody></table>
<p>La monitorización se conecta a la configuración de Sentry existente documentada en la <a href="https://github.com/orcarail/orcarail/tree/main/.cursor/plugins" target="_blank" rel="noopener noreferrer" class="">skill de flujo de trabajo de Sentry</a> del repositorio. Alertas:</p>
<ul>
<li class="">Reverts de <code>charge()</code> por hora &gt; umbral → PagerDuty</li>
<li class="">Saldo nativo de la EOA del keeper por debajo de N gwei × gasLimit × 100 → PagerDuty</li>
<li class="">Upkeep de Chainlink/Gelato en mal estado → aviso</li>
<li class="">Retraso del indexador de eventos <code>Paid</code> &gt; 5 min → aviso</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="deprecations">Obsolescencias<a href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/#deprecations" class="hash-link" aria-label="Enlace directo al Obsolescencias" title="Enlace directo al Obsolescencias" translate="no">​</a></h2>
<p>Igual que en las Fases 1 y 2, pero en más cadenas. Todavía no se elimina nada; la eliminación espera a la <a class="" href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/">Fase 7</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="migration-plan">Plan de migración<a href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/#migration-plan" class="hash-link" aria-label="Enlace directo al Plan de migración" title="Enlace directo al Plan de migración" translate="no">​</a></h2>
<ul>
<li class=""><strong>Enlaces de pago nuevos</strong>: usan receptores en contrato en cualquier cadena con el flag activado.</li>
<li class=""><strong>Suscripciones nuevas</strong>: usan <code>SubscriptionHub</code> en cualquier cadena con el flag activado.</li>
<li class=""><strong>Clientes existentes</strong>: migración voluntaria en la renovación, igual que en la Fase 2.</li>
<li class=""><strong>Liquidación entre cadenas (Relay)</strong>: superficie sin cambios; el keeper sigue llamando a los ejecutores de Relay en <a href="https://github.com/orcarail/orcarail/tree/main/api/src/withdrawals/services/bridge" target="_blank" rel="noopener noreferrer" class="">api/src/withdrawals/services/bridge</a>, solo que desde una EOA sin custodia.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="risks-and-mitigations">Riesgos y mitigaciones<a href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/#risks-and-mitigations" class="hash-link" aria-label="Enlace directo al Riesgos y mitigaciones" title="Enlace directo al Riesgos y mitigaciones" translate="no">​</a></h2>
<ul>
<li class=""><strong>Direcciones distintas entre cadenas</strong>. Mitigación: desplegador CREATE2 determinista (por ejemplo, <code>0x4e59b44847b379578588920cA78FbF26c0B4956C</code>) con un hash de init-code fijo; las factorías comparten dirección en las cuatro cadenas.</li>
<li class=""><strong>Límites de la política de paymaster por cadena</strong>. Mitigación: monitorización por cadena y alertas de cuota de la política al 70 % de uso.</li>
<li class=""><strong>Cambios frecuentes en el registro de upkeeps de Chainlink</strong>. Mitigación: un upkeep por cadena; la lista de ID se lee on-chain, así que dar de alta comercios no requiere cambios en la configuración de Chainlink.</li>
<li class=""><strong>Cobro doble entre keepers</strong>. Mitigación: <code>lastChargedAt</code> monótono más <code>ChargeSkipped</code> para duplicados; ambos keepers son idempotentes por diseño.</li>
<li class=""><strong>Picos de gas en mainnet</strong>. Mitigación: ajuste del tamaño de lote por cadena; un techo de precio de gas por encima del cual <code>charge()</code> se aplaza un bloque.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="status-checklist">Lista de estado<a href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/#status-checklist" class="hash-link" aria-label="Enlace directo al Lista de estado" title="Enlace directo al Lista de estado" translate="no">​</a></h2>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Despliegues completados en Ethereum, Arbitrum, Optimism y Polygon</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Direcciones de factoría + hub publicadas en la referencia de contratos</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Políticas de paymaster validadas por cadena</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Upkeep de Chainlink Automation activo en al menos 2 cadenas</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Panel de SLO en Datadog</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Runbook para caídas del keeper (<code>charge()</code> manual desde la CLI del comercio)</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Comercios canarios desplegados por cadena</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-next">Qué sigue<a href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/#what-is-next" class="hash-link" aria-label="Enlace directo al Qué sigue" title="Enlace directo al Qué sigue" translate="no">​</a></h2>
<p>Solana es la otra gran cadena que debemos hacer no custodial: <strong><a class="" href="https://docs.orcarail.com/es/blog/phase-4-solana-pda-programs/">Fase 4</a></strong>.</p>
<hr>
<p>Documentación de referencia: <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/phases/phase-3-multi-evm-rollout/">Estado de la Fase 3</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/keeper-strategy/">Estrategia de keepers</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/contract-reference/">Referencia de contratos</a></strong></p>]]></content:encoded>
            <category>Payments</category>
            <category>Multi-Chain</category>
            <category>Web3</category>
            <category>Stablecoins</category>
        </item>
        <item>
            <title><![CDATA[Fase 4: Solana no custodial con PDAs de Anchor]]></title>
            <link>https://docs.orcarail.com/es/blog/phase-4-solana-pda-programs/</link>
            <guid>https://docs.orcarail.com/es/blog/phase-4-solana-pda-programs/</guid>
            <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Fase 4 de la hoja de ruta no custodial de OrcaRail. Programas Anchor sustituyen en Solana los barridos con HD wallets por vaults de enlaces de pago basados en PDAs y suscripciones por delegación SPL.]]></description>
            <content:encoded><![CDATA[<p><strong>20 de abril de 2026</strong>: la Fase 4 lleva el modelo no custodial a Solana. Dos programas Anchor sustituyen el flujo de HD wallet + barrido por enlace: <code>payment_link</code> para pagos únicos y <code>subscription</code> para el cobro automático por delegación SPL. No hay ningún mnemónico en nuestros servidores para los nuevos enlaces de Solana.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tldr">En resumen<a href="https://docs.orcarail.com/es/blog/phase-4-solana-pda-programs/#tldr" class="hash-link" aria-label="Enlace directo al En resumen" title="Enlace directo al En resumen" translate="no">​</a></h2>
<ul>
<li class="">El programa <code>payment_link</code> es propietario de una PDA por enlace de pago, derivada de <code>seeds = [b"pl", link_id]</code>. Sin keypair, sin semilla, sin barrido.</li>
<li class="">El programa <code>subscription</code> usa la autoridad <strong>delegada</strong> de SPL, la misma primitiva en la que ya nos apoyamos en <a class="" href="https://docs.orcarail.com/es/docs/subscriptions/auto-charge/">Cobro automático</a>, como un allowance explícito concedido por el pagador.</li>
<li class="">Los repartos se hacen por CPI a la misma lógica <code>fee_splitter</code> que construimos en EVM, adaptada a las cuentas de Solana.</li>
<li class="">El servicio de barrido <a href="https://github.com/orcarail/orcarail/tree/main/api/src/withdrawals/services/solana-withdrawal-transfer.service.ts" target="_blank" rel="noopener noreferrer" class="">api/src/withdrawals/services/solana-withdrawal-transfer.service.ts</a> se omite para los enlaces con el flag y se elimina en la <a class="" href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/">Fase 7</a>.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-this-phase-changes">Qué cambia en esta fase<a href="https://docs.orcarail.com/es/blog/phase-4-solana-pda-programs/#what-this-phase-changes" class="hash-link" aria-label="Enlace directo al Qué cambia en esta fase" title="Enlace directo al Qué cambia en esta fase" translate="no">​</a></h2>
<div class="wrapper_vprU"><button type="button" class="expandBtn_RmxB" aria-label="Show diagram fullscreen" title="Fullscreen"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div>
<p>El lado del «después» sustituye la semilla HD de <a href="https://github.com/orcarail/orcarail/tree/main/api/src/payments/wallet.service.ts" target="_blank" rel="noopener noreferrer" class="">api/src/payments/wallet.service.ts</a> (la rama <code>m/44'/501'/i'/0'</code>) por un cálculo de PDA puramente determinista.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="programs-introduced">Programas introducidos<a href="https://docs.orcarail.com/es/blog/phase-4-solana-pda-programs/#programs-introduced" class="hash-link" aria-label="Enlace directo al Programas introducidos" title="Enlace directo al Programas introducidos" translate="no">​</a></h2>
<p>Nuevo paquete <code>contracts/solana/</code> (Anchor).</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="payment_link-program">Programa <code>payment_link</code><a href="https://docs.orcarail.com/es/blog/phase-4-solana-pda-programs/#payment_link-program" class="hash-link" aria-label="Enlace directo al payment_link-program" title="Enlace directo al payment_link-program" translate="no">​</a></h3>
<p>Cuentas por enlace:</p>
<div class="language-rust codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-rust codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token attribute attr-name" style="color:#00a4db">#[account]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">pub</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">struct</span><span class="token plain"> </span><span class="token type-definition class-name">PaymentLink</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">pub</span><span class="token plain"> link_id</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token keyword" style="color:#00009f">u8</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">32</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">pub</span><span class="token plain"> expected_mint</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token class-name">Pubkey</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">        </span><span class="token comment" style="color:#999988;font-style:italic">// e.g. USDC on SOL</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">pub</span><span class="token plain"> expected_amount</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">u64</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">pub</span><span class="token plain"> split</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token class-name">Split</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">pub</span><span class="token plain"> created_at</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">i64</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">pub</span><span class="token plain"> status</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token class-name">PaymentStatus</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p>Instrucciones:</p>
<ul>
<li class=""><code>initialize(link_id, expected_mint, expected_amount, split)</code>: diferida; la llama en el primer depósito el envoltorio de tipo factoría.</li>
<li class=""><code>pay(link_id, amount)</code>: valida mint + importe, transfiere por CPI a la ATA de la PDA y luego reparte por CPI de forma atómica. Emite <code>PaymentReceived { link_id, payer, amount }</code>.</li>
<li class=""><code>refund(link_id)</code>: requiere la multisig y replica el reembolso de EVM.</li>
</ul>
<p>Semillas de la PDA: <code>[b"pl", link_id]</code>. La PDA <strong>no tiene clave privada</strong>: firma mediante <code>invoke_signed</code>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="subscription-program">Programa <code>subscription</code><a href="https://docs.orcarail.com/es/blog/phase-4-solana-pda-programs/#subscription-program" class="hash-link" aria-label="Enlace directo al subscription-program" title="Enlace directo al subscription-program" translate="no">​</a></h3>
<p>Aprovecha <strong>Approve / Revoke</strong> de SPL para delegar la autoridad. El pagador firma <code>spl_token::approve</code> designando la PDA del programa como delegada por hasta <code>cap</code> tokens. Después:</p>
<div class="language-rust codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-rust codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">pub</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">fn</span><span class="token plain"> </span><span class="token function-definition function" style="color:#d73a49">charge</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">ctx</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token class-name">Context</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token class-name">Charge</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> id</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token keyword" style="color:#00009f">u8</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">32</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-&gt;</span><span class="token plain"> </span><span class="token class-name">Result</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">&gt;</span><br></div></code></pre></div></div>
<p>Cualquiera puede llamarla; comprueba:</p>
<ul>
<li class=""><code>clock.unix_timestamp &gt;= next_charge_at</code></li>
<li class=""><code>clock.unix_timestamp &gt; last_charged_at</code>  // monotonic</li>
<li class=""><code>amount_charged + period_amount &lt;= cap</code></li>
<li class="">que la autoridad delegada siga presente en la ATA del pagador</li>
</ul>
<p>Si pasa, <code>spl_token::transfer_checked</code> por CPI cobra de la ATA del pagador (como delegada) y reparte por CPI.</p>
<p>Eventos: <code>SubscriptionCreated</code>, <code>Charged</code>, <code>ChargeSkipped</code>, <code>Canceled</code>. Tienen la misma forma que produce el indexador de EVM, así que <code>api/src/webhooks</code> es agnóstico.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="api-changes">Cambios en la API<a href="https://docs.orcarail.com/es/blog/phase-4-solana-pda-programs/#api-changes" class="hash-link" aria-label="Enlace directo al Cambios en la API" title="Enlace directo al Cambios en la API" translate="no">​</a></h2>
<ul>
<li class="">La rama de Solana de <code>WalletService.generateAddressForNetwork</code> deja de derivar keypairs y devuelve en su lugar <code>findProgramAddressSync(["pl", linkId], programId)</code>. No se escribe ninguna fila <code>encryptedSeed</code> para los nuevos enlaces de Solana.</li>
<li class="">Un nuevo servicio indexador observa los logs del programa (webhooks de Helius o streams de Triton) y emite los eventos de webhook existentes.</li>
<li class=""><a href="https://github.com/orcarail/orcarail/tree/main/api/src/scheduler/processors/subscription-auto-charge.processor.ts" target="_blank" rel="noopener noreferrer" class="">api/src/scheduler/processors/subscription-auto-charge.processor.ts</a> añade una rama para SOL: construye una transacción <code>charge</code> y la firma con el keeper (camino sin gas mediante una transacción patrocinada, parecido al paymaster de la Fase 2).</li>
<li class=""><code>withdrawals/services/solana-withdrawal-transfer.service.ts</code> no se llama para los enlaces con el flag.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="gas-on-solana">Gas en Solana<a href="https://docs.orcarail.com/es/blog/phase-4-solana-pda-programs/#gas-on-solana" class="hash-link" aria-label="Enlace directo al Gas en Solana" title="Enlace directo al Gas en Solana" translate="no">​</a></h2>
<p>Las comisiones de Solana son pequeñas (normalmente 5000 lamports por firma, 0,000005 SOL). El keeper usa un saldo de SOL en caliente con el mismo patrón de alertas que en la Fase 3. Como Solana no tiene un paymaster al estilo de Alchemy, las transacciones patrocinadas usan un patrón simple de cofirmante: el keeper firma como pagador de comisiones y el pagador no necesita SOL en absoluto.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="deprecations">Obsolescencias<a href="https://docs.orcarail.com/es/blog/phase-4-solana-pda-programs/#deprecations" class="hash-link" aria-label="Enlace directo al Obsolescencias" title="Enlace directo al Obsolescencias" translate="no">​</a></h2>
<ul>
<li class="">Derivación HD de SOL (<code>m/44'/501'/i'/0'</code>) para enlaces nuevos: no se llama cuando el flag está activado.</li>
<li class=""><code>solana-withdrawal-transfer.service.ts</code>: se omite para los enlaces con el flag.</li>
<li class=""><code>SolanaRelayBridgeExecutorService</code> en <a href="https://github.com/orcarail/orcarail/tree/main/api/src/withdrawals/services/bridge/solana-relay-bridge-executor.service.ts" target="_blank" rel="noopener noreferrer" class="">api/src/withdrawals/services/bridge/solana-relay-bridge-executor.service.ts</a> se mantiene: el puente de SOL a EVM cuando el comercio está en EVM sigue usando Relay, pero el disparador pasa al programa.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="migration-plan">Plan de migración<a href="https://docs.orcarail.com/es/blog/phase-4-solana-pda-programs/#migration-plan" class="hash-link" aria-label="Enlace directo al Plan de migración" title="Enlace directo al Plan de migración" translate="no">​</a></h2>
<p>El mismo modelo voluntario que en la Fase 2:</p>
<ul>
<li class="">Enlaces de pago nuevos: direccionados por PDA.</li>
<li class="">Suscripciones nuevas: basadas en delegación SPL.</li>
<li class="">Suscripciones activas existentes: banner + email en la siguiente renovación para volver a delegar al nuevo programa.</li>
<li class="">Los depósitos en curso en direcciones heredadas siguen liquidándose por el camino heredado.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="risks-and-mitigations">Riesgos y mitigaciones<a href="https://docs.orcarail.com/es/blog/phase-4-solana-pda-programs/#risks-and-mitigations" class="hash-link" aria-label="Enlace directo al Riesgos y mitigaciones" title="Enlace directo al Riesgos y mitigaciones" translate="no">​</a></h2>
<ul>
<li class=""><strong>La delegación SPL se puede sobrescribir</strong>. Mitigación: <code>charge</code> vuelve a comprobar <code>delegated_amount</code> antes de transferir; si la comprobación falla emite <code>ChargeSkipped(DelegateRevoked)</code> y sigue la misma plantilla de email que el caso de allowance revocado en EVM.</li>
<li class=""><strong>Autoridad de actualización de Anchor</strong>. Mitigación: una multisig Squads 3 de 5 es propietaria de la autoridad de actualización, con timelock. Coincide con la postura de la Safe en EVM de la <a class="" href="https://docs.orcarail.com/es/blog/phase-0-design-and-audit-strategy/">Fase 0</a>.</li>
<li class=""><strong>SOL envuelto frente a SOL nativo</strong>. Mitigación: <code>payment_link</code> admite ambos, con un <code>expected_mint</code> explícito por enlace para evitar ambigüedades.</li>
<li class=""><strong>Picos de comisiones de prioridad</strong>. Mitigación: cálculo dinámico de la comisión de prioridad en el keeper; reintento de respaldo con mayor prioridad tras un slot.</li>
<li class=""><strong>Auditoría</strong>. Mitigación: auditoría de OtterSec o Neodyme de ambos programas antes del despliegue en mainnet.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="status-checklist">Lista de estado<a href="https://docs.orcarail.com/es/blog/phase-4-solana-pda-programs/#status-checklist" class="hash-link" aria-label="Enlace directo al Lista de estado" title="Enlace directo al Lista de estado" translate="no">​</a></h2>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Workspace de Anchor <code>contracts/solana/</code> creado</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Programa <code>payment_link</code> con todas las instrucciones + tests</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Programa <code>subscription</code> con todas las instrucciones + tests</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Indexador con webhooks de Helius publicado</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Rama de SOL del keeper en <code>subscription-auto-charge.processor.ts</code></li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Informe de auditoría publicado</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Despliegue en mainnet desde la multisig Squads</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Grupo canario de comercios</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-next">Qué sigue<a href="https://docs.orcarail.com/es/blog/phase-4-solana-pda-programs/#what-is-next" class="hash-link" aria-label="Enlace directo al Qué sigue" title="Enlace directo al Qué sigue" translate="no">​</a></h2>
<p>Bitcoin. La cadena más difícil para la no custodia, y en la que tenemos que ser honestos sobre los límites: <strong><a class="" href="https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/">Fase 5</a></strong>.</p>
<hr>
<p>Documentación de referencia: <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/phases/phase-4-solana/">Estado de la Fase 4</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/contract-reference/">Referencia de contratos</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/architecture/">Arquitectura</a></strong></p>]]></content:encoded>
            <category>Payments</category>
            <category>Multi-Chain</category>
            <category>Web3</category>
            <category>Stablecoins</category>
            <category>Subscriptions</category>
        </item>
        <item>
            <title><![CDATA[Fase 5: Bitcoin, taproot 2 de 2 y un alcance honesto]]></title>
            <link>https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/</link>
            <guid>https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/</guid>
            <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Fase 5 de la hoja de ruta no custodial de OrcaRail. Bitcoin no puede ser totalmente no custodial hoy, así que pasamos a una multisig taproot 2 de 2 por enlace con reembolsos prefirmados y dejamos los pagos recurrentes a Lightning BOLT12 como trabajo futuro.]]></description>
            <content:encoded><![CDATA[<p><strong>20 de abril de 2026</strong>: Bitcoin es la cadena en la que tenemos que ser honestos. La superficie de scripts de la L1 no tiene la expresividad de EVM o Solana, así que el patrón de «contrato de enlace de pago que reparte de forma atómica» no se traslada. Lo que sí podemos hacer es <strong>reducir la custodia</strong>, de «OrcaRail guarda la xpub» a «multisig de dos firmantes con un firmante del comercio y un reembolso prefirmado», y dejar los pagos recurrentes para un futuro camino con Lightning.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tldr">En resumen<a href="https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/#tldr" class="hash-link" aria-label="Enlace directo al En resumen" title="Enlace directo al En resumen" translate="no">​</a></h2>
<ul>
<li class="">Cada enlace de pago en BTC pasa a ser una <strong>multisig taproot 2 de 2</strong>: un firmante del comercio y un firmante de la plataforma. La plataforma no puede mover fondos de forma unilateral.</li>
<li class="">Cada depósito recibe una <strong>PSBT de reembolso prefirmada</strong> guardada off-chain, para que el pagador pueda recuperar los fondos si el comercio desaparece.</li>
<li class="">Las xpub maestras salen del servidor de la API y pasan a un <strong>servicio HSM o MPC</strong> (por ejemplo, Lit o Turnkey). Ningún mnemónico en disco.</li>
<li class=""><strong>Los pagos recurrentes en BTC quedan fuera del alcance</strong> hasta que Lightning BOLT12 esté listo para producción. Hoy, <a class="" href="https://docs.orcarail.com/es/docs/subscriptions/auto-charge/">Cobro automático</a> ya indica que BTC no se admite para el cobro automático, y eso sigue siendo así.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-this-phase-changes">Qué cambia en esta fase<a href="https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/#what-this-phase-changes" class="hash-link" aria-label="Enlace directo al Qué cambia en esta fase" title="Enlace directo al Qué cambia en esta fase" translate="no">​</a></h2>
<p>Hoy, <code>BitcoinHotWalletService</code> en <a href="https://github.com/orcarail/orcarail/tree/main/api/src/withdrawals/services/bitcoin-hot-wallet.service.ts" target="_blank" rel="noopener noreferrer" class="">api/src/withdrawals/services/bitcoin-hot-wallet.service.ts</a> deriva una dirección p2wpkh unilateral a partir de un mnemónico guardado en el servidor y la barre mediante <code>bitcoin-withdrawal-transfer.service.ts</code>. Es una única clave que controlamos.</p>
<p>Tras la Fase 5:</p>
<div class="wrapper_vprU"><button type="button" class="expandBtn_RmxB" aria-label="Show diagram fullscreen" title="Fullscreen"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div>
<p>Ninguna parte puede gastar sola. Ningún servidor guarda una semilla unilateral.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-we-are-shipping">Qué vamos a publicar<a href="https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/#what-we-are-shipping" class="hash-link" aria-label="Enlace directo al Qué vamos a publicar" title="Enlace directo al Qué vamos a publicar" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-taproot-2-of-2-per-link">1. Taproot 2 de 2 por enlace<a href="https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/#1-taproot-2-of-2-per-link" class="hash-link" aria-label="Enlace directo al 1. Taproot 2 de 2 por enlace" title="Enlace directo al 1. Taproot 2 de 2 por enlace" translate="no">​</a></h3>
<ul>
<li class="">Wallet de descriptores por enlace: <code>wsh(multi(2, merchant_pubkey, platform_pubkey))</code> o un equivalente taproot (<code>tr(NUMS, {pk(m), pk(p)})</code> con MuSig2 para una salida que parece de firma única, bueno para la privacidad y las comisiones).</li>
<li class="">La clave del comercio vive en el navegador o en la extensión móvil del comercio. El flujo de alta del comercio pide una xpub; las claves por enlace se derivan de ella.</li>
<li class="">La clave de la plataforma vive detrás de un servicio HSM o MPC. El servidor de la API nunca ve el material privado.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-pre-signed-refund-psbt">2. PSBT de reembolso prefirmada<a href="https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/#2-pre-signed-refund-psbt" class="hash-link" aria-label="Enlace directo al 2. PSBT de reembolso prefirmada" title="Enlace directo al 2. PSBT de reembolso prefirmada" translate="no">​</a></h3>
<p>Cuando se detecta un depósito:</p>
<ol>
<li class="">La API monta una PSBT que devuelve el depósito, menos el gas, a la dirección del pagador (capturada al crear el enlace de pago cuando se conoce la wallet del pagador; si no, se aplica la política <code>sendback</code>).</li>
<li class="">Ambos firmantes firman la PSBT de reembolso de inmediato y se guarda (cifrada) en la base de datos.</li>
<li class="">El comercio puede emitir el reembolso en cualquier momento con un clic; no hace falta firmar nada más.</li>
</ol>
<p>Es el equivalente en BTC de una función <code>refund()</code> on-chain.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-mpc-key-rotation">3. Rotación de claves MPC<a href="https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/#3-mpc-key-rotation" class="hash-link" aria-label="Enlace directo al 3. Rotación de claves MPC" title="Enlace directo al 3. Rotación de claves MPC" translate="no">​</a></h3>
<ul>
<li class="">Las xpub maestras de las claves de la plataforma rotan anualmente.</li>
<li class="">Todas las claves por enlace derivadas siguen las rotaciones; los enlaces antiguos siguen funcionando porque su multisig ya está on-chain con la pubkey concreta.</li>
<li class="">La rotación se registra en el mismo historial de auditoría que los despliegues de la multisig de la <a class="" href="https://docs.orcarail.com/es/blog/phase-0-design-and-audit-strategy/">Fase 0</a>.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-we-are-not-shipping">Qué no vamos a publicar<a href="https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/#what-we-are-not-shipping" class="hash-link" aria-label="Enlace directo al Qué no vamos a publicar" title="Enlace directo al Qué no vamos a publicar" translate="no">​</a></h2>
<ul>
<li class=""><strong>Suscripciones / cobro automático en BTC</strong>. Hoy no hay un diseño creíble en la L1. La <a class="" href="https://docs.orcarail.com/es/docs/subscriptions/auto-charge/">documentación de cobro automático</a> actual ya excluye BTC, y eso sigue siendo correcto.</li>
<li class=""><strong>Repartos atómicos on-chain para BTC</strong>. Los repartos ocurren en la PSBT de liquidación que firma el comercio. El reparto sigue siendo determinista y visible en la transacción emitida, pero no lo impone el script.</li>
<li class=""><strong>Fedimint o statechains</strong>. Investigación interesante; no entra en esta fase.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="lightning-as-the-future-path">Lightning como camino futuro<a href="https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/#lightning-as-the-future-path" class="hash-link" aria-label="Enlace directo al Lightning como camino futuro" title="Enlace directo al Lightning como camino futuro" translate="no">​</a></h2>
<p>Los pagos recurrentes en BTC tienen una opción realista: <strong>ofertas BOLT12 de Lightning + la extensión <code>recurrence</code></strong>. Eso nos daría una solución de suscripciones en BTC comparable al approve + pull de ERC-20. Lo seguimos como una fase futura:</p>
<ul>
<li class="">Depende de implementaciones maduras de la recurrencia BOLT12 en LND y CLN.</li>
<li class="">Depende del soporte de las wallets Lightning (Phoenix, Zeus, Blink) para la recurrencia BOLT12.</li>
<li class="">Requiere una flota de nodos LN con liquidez suficiente; probablemente mediante un socio (Voltage, Greenlight).</li>
</ul>
<p>Publicaremos un documento de diseño dedicado cuando las herramientas de base estén listas. Hasta entonces, BTC sigue siendo de pago único.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="deprecations">Obsolescencias<a href="https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/#deprecations" class="hash-link" aria-label="Enlace directo al Obsolescencias" title="Enlace directo al Obsolescencias" translate="no">​</a></h2>
<ul>
<li class=""><code>BitcoinHotWalletService</code>: mantiene su interfaz, pero el proveedor de claves pasa a HSM/MPC. Deja de generarse la dirección de depósito p2wpkh unilateral para los enlaces nuevos.</li>
<li class="">Las direcciones de depósito BTC heredadas se pueden seguir liquidando hasta su caducidad mediante el antiguo camino de barrido.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="migration-plan">Plan de migración<a href="https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/#migration-plan" class="hash-link" aria-label="Enlace directo al Plan de migración" title="Enlace directo al Plan de migración" translate="no">​</a></h2>
<ul>
<li class=""><strong>Enlaces de pago BTC nuevos</strong>: direcciones multisig 2 de 2. La interfaz no cambia; el formato de dirección pasa a taproot.</li>
<li class=""><strong>Enlaces BTC abiertos existentes</strong>: las direcciones unilaterales heredadas siguen activas hasta su caducidad; no forzamos la migración.</li>
<li class=""><strong>Comercios sin un firmante BTC configurado</strong>: por ahora usan una multisig solo de la plataforma, con un paso de alta obligatorio para añadir una clave del comercio en un plazo de 30 días. Así se conserva el camino de reembolso y no se bloquea el volumen BTC existente.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="risks-and-mitigations">Riesgos y mitigaciones<a href="https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/#risks-and-mitigations" class="hash-link" aria-label="Enlace directo al Riesgos y mitigaciones" title="Enlace directo al Riesgos y mitigaciones" translate="no">​</a></h2>
<ul>
<li class=""><strong>El comercio pierde su clave</strong>. Mitigación: el alta del comercio pide <strong>dos</strong> xpub (principal + respaldo); la de respaldo es opcional, pero muy recomendada.</li>
<li class=""><strong>Caída del HSM de la plataforma</strong>. Mitigación: el HSM es redundante entre regiones; recuperación de claves de emergencia mediante una ceremonia multisig documentada en el runbook.</li>
<li class=""><strong>Compromiso del almacenamiento de PSBT de reembolso</strong>. Mitigación: las PSBT de reembolso están cifradas en reposo con una clave KMS distinta; además, son inútiles sin que la firma del comercio se vuelva a hacer para otro destino (el destino está fijado en la PSBT prefirmada).</li>
<li class=""><strong>Madurez de MuSig2</strong>. Mitigación: la v1 sale con un 2 de 2 explícito <code>wsh(multi(...))</code>; MuSig2 llegará más adelante, cuando las herramientas estén ampliamente auditadas.</li>
<li class=""><strong>Picos en el mercado de comisiones</strong>. Mitigación: las PSBT de liquidación incluyen un gancho CPFP que el comercio puede subir; el keeper monitoriza la mempool y avisa a los comercios cuando el gas de liquidación supera un umbral.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="status-checklist">Lista de estado<a href="https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/#status-checklist" class="hash-link" aria-label="Enlace directo al Lista de estado" title="Enlace directo al Lista de estado" translate="no">​</a></h2>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Plantilla de descriptor taproot finalizada</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Proveedor HSM / MPC seleccionado (Lit frente a Turnkey frente a HSM propio)</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Flujo de alta de la xpub del comercio en el panel</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Derivación y almacenamiento de descriptores por enlace</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Generación de PSBT de reembolso prefirmadas + almacenamiento cifrado</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Interfaz de cofirma de liquidaciones (firma del comercio en un clic)</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Runbook para el failover del HSM y la pérdida de claves del comercio</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Grupo canario de comercios en BTC 2 de 2</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-next">Qué sigue<a href="https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/#what-is-next" class="hash-link" aria-label="Enlace directo al Qué sigue" title="Enlace directo al Qué sigue" translate="no">​</a></h2>
<p>Descentralización opcional del keeper mediante EigenLayer: <strong><a class="" href="https://docs.orcarail.com/es/blog/phase-6-eigenlayer-keeper-avs/">Fase 6</a></strong>.</p>
<hr>
<p>Documentación de referencia: <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/phases/phase-5-bitcoin/">Estado de la Fase 5</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/bitcoin-considerations/">Consideraciones sobre Bitcoin</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/security-model/">Modelo de seguridad</a></strong></p>]]></content:encoded>
            <category>Payments</category>
            <category>Multi-Chain</category>
            <category>Web3</category>
        </item>
        <item>
            <title><![CDATA[Fase 6: programador descentralizado y EigenLayer]]></title>
            <link>https://docs.orcarail.com/es/blog/phase-6-eigenlayer-keeper-avs/</link>
            <guid>https://docs.orcarail.com/es/blog/phase-6-eigenlayer-keeper-avs/</guid>
            <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Fase 6 de la hoja de ruta no custodial de OrcaRail. Qué te aporta realmente el restaking de EigenLayer, cuándo tiene sentido un AVS para un sistema de pagos y por qué lo mantenemos como opcional.]]></description>
            <content:encoded><![CDATA[<p><strong>20 de abril de 2026</strong>: la Fase 6 es la fase en la que explícitamente <strong>no</strong> construimos algo, salvo que un requisito real nos obligue. El restaking de EigenLayer es potente, pero no es un hogar de uso general para «un sistema de pagos». Este artículo explica qué nos daría un AVS, cuándo merece la pena construirlo y por qué Chainlink + NestJS bastan para casi todo lo que necesitamos.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tldr">En resumen<a href="https://docs.orcarail.com/es/blog/phase-6-eigenlayer-keeper-avs/#tldr" class="hash-link" aria-label="Enlace directo al En resumen" title="Enlace directo al En resumen" translate="no">​</a></h2>
<ul>
<li class="">EigenLayer es <strong>restaking + atestaciones penalizables de operadores de ETH</strong>. No es una cadena, ni una plataforma de contratos, ni una solución de custodia.</li>
<li class="">Dos sitios donde podría ayudar a OrcaRail: un <strong>AVS de keepers</strong> para un <code>charge()</code> descentralizado y un <strong>AVS de atestación de puentes</strong> para la liquidación entre cadenas.</li>
<li class=""><strong>Aplazaremos la construcción</strong> salvo que un cliente o un requisito de cumplimiento exija una disponibilidad descentralizada más allá de lo que nos dan Chainlink Automation + NestJS.</li>
<li class="">Si alguna vez construimos uno, partiremos de las plantillas de Othentic / Eigen Foundation, no desde cero.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-eigenlayer-actually-gives-you">Qué te da realmente EigenLayer<a href="https://docs.orcarail.com/es/blog/phase-6-eigenlayer-keeper-avs/#what-eigenlayer-actually-gives-you" class="hash-link" aria-label="Enlace directo al Qué te da realmente EigenLayer" title="Enlace directo al Qué te da realmente EigenLayer" translate="no">​</a></h2>
<p>Un <strong>AVS</strong> (Actively Validated Service) es una red de operadores que ejecuta un cálculo off-chain cuyas atestaciones se publican on-chain con seguridad criptoeconómica procedente de ETH en restaking. El mal comportamiento se penaliza (slashing).</p>
<p>Lo que aporta:</p>
<ul>
<li class=""><strong>Disponibilidad descentralizada</strong>: una tarea se ejecuta aunque una de las partes (OrcaRail) se desconecte.</li>
<li class=""><strong>Corrección penalizable</strong>: una atestación incorrecta hace perder el stake del operador.</li>
<li class=""><strong>Seguridad económica de ETH</strong>: heredas una parte del stake de los validadores de Ethereum en lugar de arrancar con tu propio token.</li>
</ul>
<p>Lo que <strong>no</strong> aporta:</p>
<ul>
<li class="">Una plataforma de smart contracts. Los contratos se siguen desplegando en Ethereum / L2.</li>
<li class="">Custodia. EigenLayer no te guarda USDC.</li>
<li class="">Soporte nativo para Solana o Bitcoin. Existen puentes entre cadenas, y añaden complejidad y confianza.</li>
<li class="">Un programador de uso general. Sigues definiendo tú la tarea off-chain y la verificación on-chain.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="where-an-avs-could-help-orcarail">Dónde podría ayudar un AVS a OrcaRail<a href="https://docs.orcarail.com/es/blog/phase-6-eigenlayer-keeper-avs/#where-an-avs-could-help-orcarail" class="hash-link" aria-label="Enlace directo al Dónde podría ayudar un AVS a OrcaRail" title="Enlace directo al Dónde podría ayudar un AVS a OrcaRail" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-keeper-avs-decentralized-charge">1. AVS de keepers (<code>charge()</code> descentralizado)<a href="https://docs.orcarail.com/es/blog/phase-6-eigenlayer-keeper-avs/#1-keeper-avs-decentralized-charge" class="hash-link" aria-label="Enlace directo al 1-keeper-avs-decentralized-charge" title="Enlace directo al 1-keeper-avs-decentralized-charge" translate="no">​</a></h3>
<p>Hoy y hasta la <a class="" href="https://docs.orcarail.com/es/blog/phase-3-multi-evm-and-keeper-redundancy/">Fase 3</a>, el panorama de keepers es:</p>
<ul>
<li class="">Programador de NestJS (principal)</li>
<li class="">Chainlink Automation o Gelato (respaldo)</li>
</ul>
<p>Eso nos da redundancia doble. Un AVS de keepers nos daría redundancia <strong>N</strong> con disponibilidad penalizable: los operadores atestiguan «estos ID vencían y llamé a <code>charge</code>», y saltarse un cobro vencido es una falta penalizable.</p>
<p>Cuándo merece la pena:</p>
<ul>
<li class="">Cuando tengamos un cliente cuyo contrato prohíba depender de una sola parte en nuestra infraestructura.</li>
<li class="">Cuando el cumplimiento normativo lo pida explícitamente (algo raro hoy).</li>
</ul>
<p>Cuándo no merece la pena:</p>
<ul>
<li class="">Cuando la fiabilidad marginal frente a Chainlink es pequeña y el coste de ingeniería son meses.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-bridge-attestation-avs-relay-replacement">2. AVS de atestación de puentes (sustituto de Relay)<a href="https://docs.orcarail.com/es/blog/phase-6-eigenlayer-keeper-avs/#2-bridge-attestation-avs-relay-replacement" class="hash-link" aria-label="Enlace directo al 2. AVS de atestación de puentes (sustituto de Relay)" title="Enlace directo al 2. AVS de atestación de puentes (sustituto de Relay)" translate="no">​</a></h3>
<p>Nuestra liquidación entre cadenas usa hoy Relay (consulta <a href="https://github.com/orcarail/orcarail/tree/main/api/src/withdrawals/services/bridge" target="_blank" rel="noopener noreferrer" class="">api/src/withdrawals/services/bridge</a>). Relay requiere confianza. Un AVS podría atestiguar «fondos observados en la cadena X, liberar en la cadena Y» con seguridad penalizable, con una forma parecida a Hyperlane ISM con EigenLayer u Omni.</p>
<p>Cuándo merece la pena:</p>
<ul>
<li class="">Cuando Relay introduzca condiciones o un rendimiento que no podamos aceptar.</li>
<li class="">Cuando la plataforma procese suficiente volumen entre cadenas como para que el riesgo del puente sea relevante.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-fraud--compliance-oracle">3. Oráculo de fraude / cumplimiento<a href="https://docs.orcarail.com/es/blog/phase-6-eigenlayer-keeper-avs/#3-fraud--compliance-oracle" class="hash-link" aria-label="Enlace directo al 3. Oráculo de fraude / cumplimiento" title="Enlace directo al 3. Oráculo de fraude / cumplimiento" translate="no">​</a></h3>
<p>«¿Está sancionada esta wallet?», «¿se entregó la mercancía?»: las comprobaciones de políticas que hoy están en el camino de webhooks de NestJS podrían convertirse en atestaciones de un AVS. Uso de nicho; solo es útil si la plataforma asume una responsabilidad explícita de políticas on-chain.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-we-defer-the-build">Por qué aplazamos la construcción<a href="https://docs.orcarail.com/es/blog/phase-6-eigenlayer-keeper-avs/#why-we-defer-the-build" class="hash-link" aria-label="Enlace directo al Por qué aplazamos la construcción" title="Enlace directo al Por qué aplazamos la construcción" translate="no">​</a></h2>
<ul>
<li class="">Chainlink Automation + NestJS tiene un coste de ingeniería de ~0. Un AVS de keepers son meses.</li>
<li class="">Construir un AVS significa operar operadores (o coordinar a otros para que lo hagan) y mantener condiciones de slashing. Es una carga operativa comparable a operar nuestra propia flota de nodos blockchain.</li>
<li class="">La mejora de seguridad solo es significativa cuando ya tenemos redundancia doble. Aún no la tenemos (llega en la Fase 3). Es decir: solo cuando la Fase 3 sea estable un AVS de keepers pasa a ser candidato.</li>
<li class="">Incluso con un alcance conservador, un AVS tendrá sus propias consideraciones de custodia (ETH en restaking, economía de compensación de operadores).</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="decision-log">Registro de decisiones<a href="https://docs.orcarail.com/es/blog/phase-6-eigenlayer-keeper-avs/#decision-log" class="hash-link" aria-label="Enlace directo al Registro de decisiones" title="Enlace directo al Registro de decisiones" translate="no">​</a></h2>
<p>Mantendremos un registro público de decisiones en <a class="" href="https://docs.orcarail.com/es/docs/non-custodial/eigenlayer-evaluation/">/docs/non-custodial/eigenlayer-evaluation</a> con la recomendación actual y los disparadores que la cambiarían. Recomendación actual: <strong>aplazar</strong>.</p>
<p>Disparadores que reabrirían la discusión:</p>
<ol>
<li class="">Una conversación comercial bloqueada explícitamente por el riesgo de un «keeper de una sola parte».</li>
<li class="">Un marco regulatorio que reconozca la disponibilidad respaldada por un AVS como control aceptable.</li>
<li class="">Un deterioro significativo del precio o la disponibilidad de Chainlink Automation en nuestras cadenas más usadas.</li>
<li class="">Una alianza en la que podamos reutilizar el AVS de keepers de otro con un coste operativo casi nulo.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="if-we-do-build-it">Si lo construimos<a href="https://docs.orcarail.com/es/blog/phase-6-eigenlayer-keeper-avs/#if-we-do-build-it" class="hash-link" aria-label="Enlace directo al Si lo construimos" title="Enlace directo al Si lo construimos" translate="no">​</a></h2>
<ul>
<li class=""><strong>Partir de una plantilla</strong>. Othentic y Eigen Foundation publican plantillas para AVS de atestación de tareas. No implementaremos el slashing a mano.</li>
<li class=""><strong>Mantener sin cambios el punto de entrada on-chain</strong>. <code>SubscriptionHub.charge(ids[])</code> sigue siendo público y sin permisos. El AVS es simplemente un llamante más junto a NestJS y Chainlink.</li>
<li class=""><strong>No introducir nuevos tokens ni mecánicas de staking</strong> para nuestro propio volumen. A los operadores se les paga en ETH con el presupuesto de gas de la plataforma; no hay token de OrcaRail.</li>
<li class=""><strong>Auditarlo</strong>. Incluso un AVS basado en una plantilla necesita una auditoría.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="status-checklist">Lista de estado<a href="https://docs.orcarail.com/es/blog/phase-6-eigenlayer-keeper-avs/#status-checklist" class="hash-link" aria-label="Enlace directo al Lista de estado" title="Enlace directo al Lista de estado" translate="no">​</a></h2>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Página del registro de decisiones publicada</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Revisión trimestral de los disparadores</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Sandbox de prueba de concepto (no producción) si se activa un disparador</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-next">Qué sigue<a href="https://docs.orcarail.com/es/blog/phase-6-eigenlayer-keeper-avs/#what-is-next" class="hash-link" aria-label="Enlace directo al Qué sigue" title="Enlace directo al Qué sigue" translate="no">​</a></h2>
<p>La fase final elimina los caminos de código de custodia que sustituyeron las Fases 1 a 5: <strong><a class="" href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/">Fase 7</a></strong>.</p>
<hr>
<p>Documentación de referencia: <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/phases/phase-6-decentralized-keepers/">Estado de la Fase 6</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/eigenlayer-evaluation/">Evaluación de EigenLayer</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/keeper-strategy/">Estrategia de keepers</a></strong></p>]]></content:encoded>
            <category>Payments</category>
            <category>Web3</category>
            <category>Multi-Chain</category>
        </item>
        <item>
            <title><![CDATA[Fase 7: retirar la infraestructura de custodia]]></title>
            <link>https://docs.orcarail.com/es/blog/phase-7-retiring-custody/</link>
            <guid>https://docs.orcarail.com/es/blog/phase-7-retiring-custody/</guid>
            <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Fase 7 de la hoja de ruta no custodial de OrcaRail. Eliminar la tabla hd_wallet_seed, WALLET_ENCRYPTION_KEY y los caminos de barrido de EVM/Solana, y actualizar los términos del servicio y la postura de cumplimiento.]]></description>
            <content:encoded><![CDATA[<p><strong>20 de abril de 2026</strong>: la Fase 7 es la limpieza. Cuando lleguemos aquí, el volumen de EVM y Solana estará en receptores en contrato y en <code>SubscriptionHub</code>, Bitcoin estará en multisig 2 de 2 y ningún enlace de pago nuevo pasará por el camino de barrido heredado. Esta fase elimina el código heredado y los secretos heredados.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tldr">En resumen<a href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/#tldr" class="hash-link" aria-label="Enlace directo al En resumen" title="Enlace directo al En resumen" translate="no">​</a></h2>
<ul>
<li class="">Eliminar <code>hd_wallet_seed</code>, la configuración <code>WALLET_ENCRYPTION_KEY</code> y la lógica de derivación para las cadenas con el flag.</li>
<li class="">Borrar los caminos de EVM/SOL en <code>api/src/withdrawals/</code>: <code>SmartAccountWalletService.drainSmartAccountWallet</code>, <code>solana-withdrawal-transfer.service.ts</code> y los archivos de spec relacionados.</li>
<li class="">Mantener el camino de BTC (reducido al modelo 2 de 2 de la <a class="" href="https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/">Fase 5</a>).</li>
<li class="">Actualizar los términos del servicio, la política de privacidad y los controles SOC2 para reflejar una superficie de custodia mucho menor.</li>
<li class="">Publicar un postmortem que resuma lo aprendido.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-this-phase-changes">Qué cambia en esta fase<a href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/#what-this-phase-changes" class="hash-link" aria-label="Enlace directo al Qué cambia en esta fase" title="Enlace directo al Qué cambia en esta fase" translate="no">​</a></h2>
<p>Antes de esta fase, el código tiene dos versiones de todo (el camino de barrido antiguo y el nuevo camino por contrato) detrás de feature flags. Después de esta fase, el camino nuevo es el único en EVM y Solana.</p>
<div class="wrapper_vprU"><button type="button" class="expandBtn_RmxB" aria-label="Show diagram fullscreen" title="Fullscreen"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-we-delete">Qué eliminamos<a href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/#what-we-delete" class="hash-link" aria-label="Enlace directo al Qué eliminamos" title="Enlace directo al Qué eliminamos" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="database">Base de datos<a href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/#database" class="hash-link" aria-label="Enlace directo al Base de datos" title="Enlace directo al Base de datos" translate="no">​</a></h3>
<ul>
<li class="">La tabla <code>hd_wallet_seed</code> y su entidad TypeORM en <a href="https://github.com/orcarail/orcarail/tree/main/api/src/payments/infrastructure/persistence/relational/entities" target="_blank" rel="noopener noreferrer" class="">api/src/payments/infrastructure/persistence/relational/entities/hd-wallet-seed.entity.ts</a>.</li>
<li class="">La columna <code>wallet_address.derivationPath</code> se conserva para consultas históricas, pero pasa a admitir nulos; ninguna fila nueva la escribe para EVM/SOL.</li>
<li class="">Una migración archiva las filas de semillas cifradas en almacenamiento en frío durante siete años (retención regulatoria) y luego elimina la tabla.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="code">Código<a href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/#code" class="hash-link" aria-label="Enlace directo al Código" title="Enlace directo al Código" translate="no">​</a></h3>
<p>En <a href="https://github.com/orcarail/orcarail/tree/main/api/src/payments/wallet.service.ts" target="_blank" rel="noopener noreferrer" class="">api/src/payments/wallet.service.ts</a>:</p>
<ul>
<li class="">Eliminar <code>encryptSeed</code>, <code>decryptSeed</code>, <code>getOrCreateHDWallet</code>, <code>generateAddressForNetwork</code> (ramas de EVM + SOL), <code>getNextAvailableIndex</code> y la importación dinámica de <code>@account-kit/wallet-client</code>.</li>
<li class=""><code>getOrCreateAddressForPaymentLink</code> pasa a ser un envoltorio fino sobre <code>factory.computeAddress</code> para EVM y <code>findProgramAddressSync</code> para Solana.</li>
</ul>
<p>En <a href="https://github.com/orcarail/orcarail/tree/main/api/src/withdrawals/services/smart-account-wallet.service.ts" target="_blank" rel="noopener noreferrer" class="">api/src/withdrawals/services/smart-account-wallet.service.ts</a>:</p>
<ul>
<li class="">Eliminar <code>drainSmartAccountWallet</code>, <code>transferFromSmartAccount</code>, <code>batchTransferFromSmartAccount</code>, <code>getSmartAccountClientForDepositWallet</code> y <code>derivePrivateKey</code>.</li>
<li class="">El módulo se mantiene (todavía tiene un uso pequeño para utilidades relacionadas con BTC y para leer saldos).</li>
</ul>
<p>Otras eliminaciones:</p>
<ul>
<li class=""><a href="https://github.com/orcarail/orcarail/tree/main/api/src/withdrawals/services/solana-withdrawal-transfer.service.ts" target="_blank" rel="noopener noreferrer" class="">api/src/withdrawals/services/solana-withdrawal-transfer.service.ts</a></li>
<li class="">Los archivos <code>.spec.ts</code> y fixtures correspondientes.</li>
<li class="">La rama custodial de <code>subscription-auto-charge.processor.ts</code> (queda la rama <code>SubscriptionHub.charge</code>).</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="config">Configuración<a href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/#config" class="hash-link" aria-label="Enlace directo al Configuración" title="Enlace directo al Configuración" translate="no">​</a></h3>
<ul>
<li class=""><code>WALLET_ENCRYPTION_KEY</code>: se elimina de <code>.env</code>, de los secretos de despliegue y de la documentación.</li>
<li class="">Cualquier material de firmante de Alchemy Account Kit en la configuración (las claves de API de <code>@account-kit/*</code> se mantienen si se siguen usando para el paymaster).</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-stays">Qué se mantiene<a href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/#what-stays" class="hash-link" aria-label="Enlace directo al Qué se mantiene" title="Enlace directo al Qué se mantiene" translate="no">​</a></h2>
<ul>
<li class=""><strong>Hot wallet de BTC</strong>: reducida al modelo multisig 2 de 2 de la <a class="" href="https://docs.orcarail.com/es/blog/phase-5-bitcoin-reduced-custody/">Fase 5</a>. No queda ninguna semilla HD de EVM/SOL.</li>
<li class=""><strong>Política de paymaster de Alchemy</strong>: la usa el keeper para patrocinar <code>charge()</code> cuando aplica.</li>
<li class=""><strong>Ejecutores de puente de Relay</strong>: siguen orquestando la liquidación entre cadenas; quienes llaman son EOA de keeper, no firmantes custodiales.</li>
<li class=""><strong>Todos los webhooks, emails, facturación, panel y analíticas</strong>: sin cambios.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="legal-and-compliance-updates">Actualizaciones legales y de cumplimiento<a href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/#legal-and-compliance-updates" class="hash-link" aria-label="Enlace directo al Actualizaciones legales y de cumplimiento" title="Enlace directo al Actualizaciones legales y de cumplimiento" translate="no">​</a></h2>
<ul>
<li class=""><strong>Términos del servicio</strong>: «OrcaRail no custodia fondos de EVM ni de Solana durante la liquidación de pagos» pasa a ser una afirmación factual, no un texto aspiracional.</li>
<li class=""><strong>Política de privacidad</strong>: eliminar las referencias al material de semillas almacenado.</li>
<li class=""><strong>Alcance de SOC2</strong>: los controles de custodia se reducen; los hallazgos de auditoría se mapean a la nueva superficie, más pequeña.</li>
<li class=""><strong>Postura como transmisor de dinero</strong>: nueva revisión con asesoría legal. Menos puntos de contacto con la custodia simplifican el análisis en varias jurisdicciones.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="postmortem">Postmortem<a href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/#postmortem" class="hash-link" aria-label="Enlace directo al Postmortem" title="Enlace directo al Postmortem" translate="no">​</a></h2>
<p>Un artículo complementario resumirá lo aprendido en las Fases 0 a 7: qué tardó más de lo esperado, qué fue mejor, cuál fue el coste real de ingeniería de la no custodia y cómo reaccionaron los comercios. Cadencia prevista: un artículo en los 30 días siguientes a la publicación de la Fase 7.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="deprecations-none-new">Obsolescencias (ninguna nueva)<a href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/#deprecations-none-new" class="hash-link" aria-label="Enlace directo al Obsolescencias (ninguna nueva)" title="Enlace directo al Obsolescencias (ninguna nueva)" translate="no">​</a></h2>
<p>Esta fase es en sí misma la obsolescencia. Todos los caminos con el flag <code>useOnChainReceiver</code> pasan a estar activados por defecto; el flag se elimina.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="migration-plan">Plan de migración<a href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/#migration-plan" class="hash-link" aria-label="Enlace directo al Plan de migración" title="Enlace directo al Plan de migración" translate="no">​</a></h2>
<p>Cuando se ejecute la Fase 7, todos los pagos y suscripciones nuevos llevarán más de 12 meses siendo no custodiales. La migración se centra en la cola larga de enlaces heredados:</p>
<ul>
<li class=""><strong>Enlaces de pago heredados abiertos</strong> y caducados → liquidar el polvo residual con un script de una sola vez y parar.</li>
<li class=""><strong>Suscripciones heredadas</strong> que nunca migraron → aviso por email 30 días antes del cierre, migración en un clic en el panel y suspensión del cobro automático si no migran.</li>
<li class=""><strong>Saldos residuales en direcciones de depósito heredadas</strong> → barrer por última vez con el antiguo camino de drenaje hacia las direcciones de retiro del comercio y luego retirar las claves.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="risks-and-mitigations">Riesgos y mitigaciones<a href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/#risks-and-mitigations" class="hash-link" aria-label="Enlace directo al Riesgos y mitigaciones" title="Enlace directo al Riesgos y mitigaciones" translate="no">​</a></h2>
<ul>
<li class=""><strong>Polvo residual en direcciones antiguas</strong>. Mitigación: ejecutar un script de barrido final antes del desmantelamiento; publicar en un informe público cualquier polvo irrecuperable.</li>
<li class=""><strong>Riesgo legal por eliminar demasiado pronto</strong>. Mitigación: archivo de 7 años de las filas de semillas cifradas (nunca descifrables sin la clave de cifrado, que se destruye en una ceremonia); los auditores pueden seguir verificando el estado histórico.</li>
<li class=""><strong>Alguien depende de una forma de API no documentada</strong>. Mitigación: aviso público de obsolescencia con 90 días; entrada en el changelog de la API; contacto directo con los principales comercios.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="status-checklist">Lista de estado<a href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/#status-checklist" class="hash-link" aria-label="Enlace directo al Lista de estado" title="Enlace directo al Lista de estado" translate="no">​</a></h2>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Todos los comercios de EVM + SOL en el flujo no custodial durante al menos 90 días</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Suscripciones heredadas residuales a cero</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Script de barrido final completado</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Migración de <code>hd_wallet_seed</code> al archivo en frío completada</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Eliminaciones de código fusionadas</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Términos del servicio + política de privacidad actualizados y publicados</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Artículo de postmortem publicado</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-end-of-the-roadmap">El final de la hoja de ruta<a href="https://docs.orcarail.com/es/blog/phase-7-retiring-custody/#the-end-of-the-roadmap" class="hash-link" aria-label="Enlace directo al El final de la hoja de ruta" title="Enlace directo al El final de la hoja de ruta" translate="no">​</a></h2>
<p>Tras la Fase 7, la postura de custodia es:</p>
<ul>
<li class=""><strong>EVM, Solana</strong>: no custodial. OrcaRail no guarda ningún material de semillas.</li>
<li class=""><strong>Bitcoin</strong>: custodia reducida mediante multisig 2 de 2 con firmante del comercio.</li>
<li class=""><strong>Momento en tránsito</strong>: eliminado en EVM/SOL; reducido a un camino de reembolso multisig en BTC.</li>
</ul>
<p>Eso es lo que nos propusimos en la <a class="" href="https://docs.orcarail.com/es/blog/non-custodial-roadmap/">hoja de ruta no custodial</a>.</p>
<hr>
<p>Documentación de referencia: <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/phases/phase-7-retire-custody/">Estado de la Fase 7</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/security-model/">Modelo de seguridad</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/roadmap/">Hoja de ruta</a></strong></p>]]></content:encoded>
            <category>Payments</category>
            <category>Web3</category>
            <category>Multi-Chain</category>
            <category>Announcement</category>
        </item>
        <item>
            <title><![CDATA[El debate sobre el protocolo: cinco visiones para un OrcaRail totalmente no custodial]]></title>
            <link>https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/</link>
            <guid>https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/</guid>
            <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Un debate moderado entre cinco diseños para convertir OrcaRail en un protocolo totalmente no custodial: smart contracts más API, on-chain puro al estilo Uniswap, una appchain L3, una red de intents y solvers, y una implementación de referencia basada en estándares.]]></description>
            <content:encoded><![CDATA[<p><strong>20 de abril de 2026</strong>: la <a class="" href="https://docs.orcarail.com/es/blog/non-custodial-roadmap/">hoja de ruta no custodial</a> que publicamos la semana pasada describe un camino: smart contracts en cada cadena, un keeper operado por OrcaRail, un indexador operado por OrcaRail y una API operada por OrcaRail. Elimina la custodia, pero nos deja en medio de casi todo lo demás.</p>
<p>Varios lectores preguntaron, con razón: si el objetivo es convertirse en un <strong>protocolo</strong>, ¿por qué quedarse en eliminar la custodia? ¿Cómo sería el riel si OrcaRail pudiera desaparecer mañana y los pagos siguieran fluyendo?</p>
<p>Este artículo es un debate. Cinco posturas defienden cinco arquitecturas distintas. Un moderador pone a prueba cada una. Nadie gana por completo, pero al final tenemos más claro qué compromisos estamos asumiendo realmente.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-fully-non-custodial-protocol-means-precisely">Qué significa exactamente «protocolo totalmente no custodial»<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#what-fully-non-custodial-protocol-means-precisely" class="hash-link" aria-label="Enlace directo al Qué significa exactamente «protocolo totalmente no custodial»" title="Enlace directo al Qué significa exactamente «protocolo totalmente no custodial»" translate="no">​</a></h2>
<p>Antes de empezar el debate necesitamos una definición compartida. Un sistema es un <strong>protocolo totalmente no custodial</strong> si se cumplen <strong>todas</strong> estas condiciones:</p>
<ol>
<li class=""><strong>Custodia</strong>: ninguna parte retiene fondos de usuarios en tránsito, ni siquiera durante un bloque.</li>
<li class=""><strong>Disponibilidad</strong>: ninguna parte individual es imprescindible para que se produzca un pago o un cobro de suscripción legítimo.</li>
<li class=""><strong>Resistencia a la censura</strong>: ninguna parte individual puede denegar una transacción bien formada y pagada.</li>
<li class=""><strong>Control de actualizaciones / cambios</strong>: las actualizaciones requieren el consentimiento de varias partes, no el despliegue de una sola empresa.</li>
<li class=""><strong>Transparencia</strong>: las reglas en las que confía un usuario son totalmente legibles on-chain o bajo un hash verificable.</li>
</ol>
<p>El plan actual cumple (1). Cumple parcialmente (3), (4) y (5). <strong>No</strong> cumple (2): el keeper y la API de OrcaRail siguen siendo necesarios para que el camino feliz funcione de forma fiable. El debate que sigue trata sobre si llevar los cuatro listones restantes hasta el final, y a qué coste.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-positions">Las posturas<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#the-positions" class="hash-link" aria-label="Enlace directo al Las posturas" title="Enlace directo al Las posturas" translate="no">​</a></h2>
<p>Entran cinco arquitectos. Escuchémoslos.</p>
<ul>
<li class=""><strong>Pragmático</strong>: smart contracts + API de OrcaRail (la hoja de ruta actual).</li>
<li class=""><strong>Maximalista</strong>: protocolo on-chain puro + frontend descentralizado (el «modelo Uniswap»).</li>
<li class=""><strong>Soberano</strong>: OrcaRail como L3 / appchain con precompilados específicos para pagos.</li>
<li class=""><strong>Creyente en los intents</strong>: los pagadores expresan intents; una red de solvers sin permisos los liquida.</li>
<li class=""><strong>Defensor de los estándares</strong>: un EIP abierto para enlaces de pago y suscripciones; cualquiera lo implementa.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="round-1--the-opening-statements">Ronda 1: las declaraciones iniciales<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#round-1--the-opening-statements" class="hash-link" aria-label="Enlace directo al Ronda 1: las declaraciones iniciales" title="Enlace directo al Ronda 1: las declaraciones iniciales" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="pragmatist-ship-something-real-then-decentralize-the-painful-parts">Pragmático: «Publica algo real y luego descentraliza las partes dolorosas».<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#pragmatist-ship-something-real-then-decentralize-the-painful-parts" class="hash-link" aria-label="Enlace directo al Pragmático: «Publica algo real y luego descentraliza las partes dolorosas»." title="Enlace directo al Pragmático: «Publica algo real y luego descentraliza las partes dolorosas»." translate="no">​</a></h3>
<p>La hoja de ruta ya elimina el problema difícil (la custodia). Los keepers pueden ser cualquiera: nuestro programador en NestJS es un llamante entre varios; Chainlink y Gelato se pueden registrar mañana. El indexador es público: cualquiera puede suscribirse a los mismos eventos <code>Paid</code> y <code>Charged</code> y reconstruir el estado. La «API de OrcaRail» <strong>no es la capa de liquidación</strong>, es una capa de comodidad sobre contratos públicos. Los comercios que quieran el camino totalmente protocolario ya pueden saltarse nuestra API y llamar directamente a la factoría.</p>
<p><strong>Afirmación</strong>: somos un 80 % protocolo. El 20 % restante son herramientas (wallets, paneles, email), no confianza. Las herramientas deben poder seguir iterándose.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="maximalist-no-api-events-contracts-subgraph-thats-it">Maximalista: «Sin API. Eventos, contratos, subgraph. Y ya».<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#maximalist-no-api-events-contracts-subgraph-thats-it" class="hash-link" aria-label="Enlace directo al Maximalista: «Sin API. Eventos, contratos, subgraph. Y ya»." title="Enlace directo al Maximalista: «Sin API. Eventos, contratos, subgraph. Y ya»." translate="no">​</a></h3>
<p>Uniswap existe. 1inch existe. Se accede a ellos mediante los frontends que alojan sus empresas, pero cualquiera de esos frontends podría desaparecer y el protocolo seguiría funcionando. Eso es lo que significa «protocolo».</p>
<p>Para OrcaRail, eso sería:</p>
<ul>
<li class="">Factorías, hubs y divisores en todas las cadenas EVM/Solana.</li>
<li class="">Un <strong>subgraph canónico</strong> (o indexador de Solana) que cualquiera pueda consultar.</li>
<li class="">Un <strong>frontend descentralizado</strong> fijado en IPFS/Arweave y resuelto mediante ENS (<code>orcarail.eth</code>). El panel del comercio y la app de pago son paquetes estáticos; cada versión está direccionada por contenido.</li>
<li class=""><strong>Ninguna API REST de OrcaRail en el camino crítico.</strong> El SDK llama al subgraph. Los webhooks se derivan de eventos on-chain mediante indexadores como servicio (Alchemy, QuickNode, autoalojados).</li>
</ul>
<p><strong>Afirmación</strong>: cualquier cosa que necesite <code>api.orcarail.com</code> para que un pago funcione es un protocolo a medias.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="sovereign-make-payments-a-precompile-on-our-own-chain">Soberano: «Haz de los pagos un precompilado en nuestra propia cadena».<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#sovereign-make-payments-a-precompile-on-our-own-chain" class="hash-link" aria-label="Enlace directo al Soberano: «Haz de los pagos un precompilado en nuestra propia cadena»." title="Enlace directo al Soberano: «Haz de los pagos un precompilado en nuestra propia cadena»." translate="no">​</a></h3>
<p>Los pagos son sensibles a la latencia y repetitivos. Pagamos el mismo gas por el mismo reparto cada vez. ¿Por qué alquilamos la seguridad de una L1/L2 para un caso de uso que se puede especializar?</p>
<p>Lancemos <strong>OrcaRail Chain</strong> como un rollup de OP Stack (o una appchain de Cosmos, o una cadena Arbitrum Orbit). Entonces:</p>
<ul>
<li class="">La semántica de los enlaces de pago es un <strong>precompilado</strong>, no un contrato de Solidity de 80 líneas. Las comisiones pasan de céntimos a casi cero.</li>
<li class="">La lógica del keeper se integra en la producción de bloques: el secuenciador ejecuta las llamadas <code>charge()</code> como parte del bloque, con penalización según la seguridad de la propia cadena.</li>
<li class="">El puente hacia las cadenas «reales» (Ethereum, Arbitrum, Solana) usa el puente canónico existente + Relay; OrcaRail Chain es la capa de coordinación, no la capa de valor.</li>
<li class="">Las suscripciones pasan a ser ciudadanas de primera: «suscripción» es un tipo de transacción, como «transferencia» en Bitcoin.</li>
</ul>
<p><strong>Afirmación</strong>: la forma más barata de que un protocolo funcione de forma fiable a escala es no compartir espacio de bloque con mints aleatorios de NFT.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="intents-believer-payers-express-intent-solvers-compete-to-settle">Creyente en los intents: «Los pagadores expresan intenciones. Los solvers compiten por liquidarlas».<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#intents-believer-payers-express-intent-solvers-compete-to-settle" class="hash-link" aria-label="Enlace directo al Creyente en los intents: «Los pagadores expresan intenciones. Los solvers compiten por liquidarlas»." title="Enlace directo al Creyente en los intents: «Los pagadores expresan intenciones. Los solvers compiten por liquidarlas»." translate="no">​</a></h3>
<p>El pagador dice: «Quiero pagar al comercio X 50 $ en USDC desde cualquiera de mis wallets, en la próxima hora, optimizando comisiones». Eso es un <strong>intent</strong>: firmado, pero todavía no es una transacción.</p>
<p>Una <strong>red de solvers</strong> sin permisos (al estilo CoW, SUAVE, Anoma, relayers tipo Across) ve el intent, encuentra la ruta más barata (incluidos puentes y cross-chain, desde el token que tenga el pagador) y lo liquida. Los solvers cobran una recompensa incluida en el intent.</p>
<p>Para las suscripciones: el pagador firma un intent recurrente («cobra 20 $/mes en USDC de mi wallet a la PDA de este comercio, durante 12 meses, cancelable en cualquier momento»). Los solvers compiten por llamar a <code>charge()</code> cuando vence, ganando una microcomisión. Es en lo que se convierte el «AVS de keepers» de la Fase 6 si entornas los ojos, pero con un mercado real en lugar de un esquema de slashing.</p>
<p><strong>Afirmación</strong>: los keepers no son realmente un problema de fiabilidad, sino de diseño de mercado. Construyamos el mercado.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="standards-advocate-write-an-eip-everyone-wins-including-us">Defensor de los estándares: «Escribe un EIP. Ganamos todos, nosotros incluidos».<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#standards-advocate-write-an-eip-everyone-wins-including-us" class="hash-link" aria-label="Enlace directo al Defensor de los estándares: «Escribe un EIP. Ganamos todos, nosotros incluidos»." title="Enlace directo al Defensor de los estándares: «Escribe un EIP. Ganamos todos, nosotros incluidos»." translate="no">​</a></h3>
<p>Los enlaces de pago y las suscripciones de OrcaRail son una primitiva genérica. Shopify, Coinbase Commerce, otras pilas de checkout cripto alojadas y un par de docenas de startups están construyendo lo mismo. Deberíamos escribir un <strong>EIP para enlaces de pago no custodiales</strong> y un <strong>EIP complementario para suscripciones por allowance</strong>, con una implementación de referencia.</p>
<p>Entonces:</p>
<ul>
<li class="">Cualquier wallet puede mostrar la URL de un enlace de pago con una interfaz estándar («estás pagando al comercio X, 50 $, USDC, no custodial»).</li>
<li class="">Cualquier indexador (The Graph, Goldsky, Envio) admite los eventos estándar desde el primer momento.</li>
<li class="">Cualquier procesador, incluido un futuro competidor de OrcaRail, puede alojar el mismo protocolo.</li>
<li class="">El producto de OrcaRail pasa a ser <strong>la mejor implementación</strong> de un estándar abierto, no una pila cerrada.</li>
</ul>
<p><strong>Afirmación</strong>: la mayor ventaja competitiva en pagos es la confianza en la <em>primitiva</em>, no en la pila de una empresa. Hagamos pública la primitiva.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="round-2--the-moderator-cross-examines">Ronda 2: el moderador interroga<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#round-2--the-moderator-cross-examines" class="hash-link" aria-label="Enlace directo al Ronda 2: el moderador interroga" title="Enlace directo al Ronda 2: el moderador interroga" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="to-pragmatist-be-honest--if-orcarail-stops-paying-the-paymaster-bill-does-alices-subscription-still-charge">Al Pragmático: «Sé sincero: si OrcaRail deja de pagar la factura del paymaster, ¿se sigue cobrando la suscripción de Alice?»<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#to-pragmatist-be-honest--if-orcarail-stops-paying-the-paymaster-bill-does-alices-subscription-still-charge" class="hash-link" aria-label="Enlace directo al Al Pragmático: «Sé sincero: si OrcaRail deja de pagar la factura del paymaster, ¿se sigue cobrando la suscripción de Alice?»" title="Enlace directo al Al Pragmático: «Sé sincero: si OrcaRail deja de pagar la factura del paymaster, ¿se sigue cobrando la suscripción de Alice?»" translate="no">​</a></h3>
<p><strong>Pragmático</strong>: en la hoja de ruta actual, tras la Fase 3, sí: Chainlink Automation sigue ejecutando <code>charge()</code>. La factura del paymaster es por el gas del keeper; Chainlink usa LINK para el mismo trabajo. Pero <strong>los comercios que necesitan el panel de OrcaRail para conciliar</strong> se verían afectados: los emails, los reintentos y los códigos de fallo legibles viven en nuestra API. Los contratos siguen funcionando; el <strong>producto</strong> no.</p>
<p><strong>Moderador</strong>: ¿«Los contratos siguen funcionando, pero las personas no se enteran» es realmente disponibilidad?</p>
<p><strong>Pragmático</strong>: Es disponibilidad de <em>liquidación</em> sin disponibilidad de <em>experiencia de usuario</em>. Es una distinción real: debemos asumirla, no esconderla. Además, es barato de arreglar con el tiempo: publicar nuestras plantillas de email, abrir el código del indexador, dejar que otro aloje el panel. No tenemos que hacerlo todo en la Fase 1.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="to-maximalist-ens-pinned-ipfs-dashboards-are-great-until-a-regulator-sends-us-a-letter-about-a-merchant">Al Maximalista: «Los paneles en IPFS fijados con ENS están muy bien hasta que un regulador nos envía una carta sobre un comercio».<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#to-maximalist-ens-pinned-ipfs-dashboards-are-great-until-a-regulator-sends-us-a-letter-about-a-merchant" class="hash-link" aria-label="Enlace directo al Al Maximalista: «Los paneles en IPFS fijados con ENS están muy bien hasta que un regulador nos envía una carta sobre un comercio»." title="Enlace directo al Al Maximalista: «Los paneles en IPFS fijados con ENS están muy bien hasta que un regulador nos envía una carta sobre un comercio»." translate="no">​</a></h3>
<p><strong>Maximalista</strong>: Entonces OrcaRail deja de alojar a ese comercio en nuestro panel. El protocolo sigue dándole servicio mediante otro frontend, o el suyo propio. Es una característica, no un fallo: compáralo con las finanzas tradicionales, donde «el procesador congeló mi cuenta» es un drama recurrente sin remedio a nivel de protocolo.</p>
<p><strong>Moderador</strong>: A los comercios a los que expulsa un procesador de tarjetas normalmente también los expulsa la red de Visa. En pagos, el riel y el procesador suelen ser el mismo censor.</p>
<p><strong>Maximalista</strong>: Exacto, y ese es justo el problema que resuelve un protocolo. Visa no puede censurar Ethereum. OrcaRail, con una arquitectura de protocolo, no puede censurar a los comercios a nivel de riel, solo a nivel de frontend. Los frontends son intercambiables; los rieles no.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="to-sovereign-how-do-merchants-withdraw-to-usdc-on-ethereum-if-settlement-lives-on-orcarail-chain">Al Soberano: «¿Cómo retiran los comercios a USDC en Ethereum si la liquidación vive en OrcaRail Chain?»<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#to-sovereign-how-do-merchants-withdraw-to-usdc-on-ethereum-if-settlement-lives-on-orcarail-chain" class="hash-link" aria-label="Enlace directo al Al Soberano: «¿Cómo retiran los comercios a USDC en Ethereum si la liquidación vive en OrcaRail Chain?»" title="Enlace directo al Al Soberano: «¿Cómo retiran los comercios a USDC en Ethereum si la liquidación vive en OrcaRail Chain?»" translate="no">​</a></h3>
<p><strong>Soberano</strong>: Igual que cualquiera sale de cualquier L2: con el puente canónico. Integraríamos Relay de forma nativa para que la salida de stablecoins sea inmediata. El volumen diario de retiros es minúsculo comparado con el volumen dentro de la cadena.</p>
<p><strong>Moderador</strong>: Nos estás pidiendo que operemos una cadena. Toda cadena que importa tiene modos de fallo: paradas del secuenciador, retrasos en la publicación del state root, salidas por el puente. Esos fallos son <em>públicos</em> y <em>visibles</em>. «El secuenciador de OrcaRail lleva 3 horas caído, pagos detenidos en todo el mundo» es un titular peor que «la API de OrcaRail tuvo una caída de 3 horas».</p>
<p><strong>Soberano</strong>: Es un titular peor solo hasta que descentralizas el secuenciador. Las pruebas de fraude de OP Stack y la secuenciación compartida (Espresso, Astria) hacen que esto sea cada vez menos un riesgo de una sola parte. Tienes razón en que no empezaríamos ahí. Pero también en que no deberíamos operar una cadena solos; lanzaríamos mediante un socio de rollup-as-a-service con un camino creíble hacia la secuenciación compartida.</p>
<p><strong>Moderador</strong>: Son muchas dependencias.</p>
<p><strong>Soberano</strong>: Lo son. El intercambio es: dejamos de pagar gas para siempre, dejamos de pelear por espacio de bloque en mainnet y podemos publicar primitivas a medida. Si el volumen de pagos es lo bastante grande para justificar algo de esto, está justificado. Si no, me equivoco.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="to-intents-believer-solver-markets-have-an-mev-problem-who-protects-the-payer-from-a-solver-that-skims">Al Creyente en los intents: «Los mercados de solvers tienen un problema de MEV. ¿Quién protege al pagador de un solver que se queda con una parte?»<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#to-intents-believer-solver-markets-have-an-mev-problem-who-protects-the-payer-from-a-solver-that-skims" class="hash-link" aria-label="Enlace directo al Al Creyente en los intents: «Los mercados de solvers tienen un problema de MEV. ¿Quién protege al pagador de un solver que se queda con una parte?»" title="Enlace directo al Al Creyente en los intents: «Los mercados de solvers tienen un problema de MEV. ¿Quién protege al pagador de un solver que se queda con una parte?»" translate="no">​</a></h3>
<p><strong>Creyente en los intents</strong>: El intent se firma con restricciones estrictas. El importe pagado no puede superar lo que autorizó el pagador. Lo que puede variar es la <strong>ruta</strong> (qué puente, qué DEX si hace falta un swap) y el <strong>momento</strong>. Un solver malicioso no puede desviar fondos; en el peor caso, puede ser lento. La competencia lo elimina.</p>
<p><strong>Moderador</strong>: La competencia baja las comisiones en las rutas de mucho volumen. ¿Y el micropago cross-chain de 5 $ de USDC a USDC que a nadie le compensa resolver?</p>
<p><strong>Creyente en los intents</strong>: Es un hueco real. La respuesta son los <strong>solvers de respaldo</strong>: OrcaRail opera uno a coste. El mercado cubre el 95 % superior; nosotros cubrimos la cola larga. Con el tiempo, cadenas más baratas y mejores puentes cierran el hueco.</p>
<p><strong>Moderador</strong>: O sea, que también operas un keeper, solo que lo llamas solver.</p>
<p><strong>Creyente en los intents</strong>: Un keeper que es <em>uno entre varios</em>, compitiendo por un intent público, con un respaldo: sí. Esa es la diferencia entre «el backend de OrcaRail es el keeper» y «OrcaRail es un participante en un mercado abierto».</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="to-standards-advocate-eips-take-years-what-do-we-do-until-then">Al Defensor de los estándares: «Los EIP tardan años. ¿Qué hacemos mientras tanto?»<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#to-standards-advocate-eips-take-years-what-do-we-do-until-then" class="hash-link" aria-label="Enlace directo al Al Defensor de los estándares: «Los EIP tardan años. ¿Qué hacemos mientras tanto?»" title="Enlace directo al Al Defensor de los estándares: «Los EIP tardan años. ¿Qué hacemos mientras tanto?»" translate="no">​</a></h3>
<p><strong>Defensor de los estándares</strong>: Publicas primero la <strong>implementación de referencia</strong>, siguiendo tu plan actual. Después redactas el EIP en torno a lo que publicaste, no por adelantado. Así se escribieron ERC-4337, ERC-721 y ERC-20. La hoja de ruta actual es compatible con esto: la superficie de <code>SubscriptionHub</code> podría ser la superficie del ERC, con pequeños ajustes de nombres.</p>
<p><strong>Moderador</strong>: ¿Algún riesgo en publicar tu «ventaja competitiva» como estándar?</p>
<p><strong>Defensor de los estándares</strong>: La ventaja no es el contrato. La ventaja son <strong>las integraciones, los SLA, el trabajo de cumplimiento, los paneles, la entregabilidad del email y la confianza de los comercios</strong>. Nada de eso lo puede copiar un competidor leyendo un EIP. Abrir la superficie de los contratos lleva la competencia a los terrenos donde somos fuertes.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="round-3--where-each-position-actually-wins">Ronda 3: dónde gana realmente cada postura<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#round-3--where-each-position-actually-wins" class="hash-link" aria-label="Enlace directo al Ronda 3: dónde gana realmente cada postura" title="Enlace directo al Ronda 3: dónde gana realmente cada postura" translate="no">​</a></h2>
<p>Tras el interrogatorio, cada postura es más fuerte en dimensiones <em>concretas</em>. Tabla de puntuación sincera:</p>
<table><thead><tr><th>Dimensión</th><th>Pragmático</th><th>Maximalista</th><th>Soberano</th><th>Intents</th><th>Estándares</th></tr></thead><tbody><tr><td>Tiempo para publicar la Fase 1</td><td>Rápido</td><td>Lento</td><td>Muy lento</td><td>Lento</td><td>Rápido</td></tr><tr><td>Eliminación de la custodia</td><td>Sí</td><td>Sí</td><td>Sí</td><td>Sí</td><td>Sí</td></tr><tr><td>Disponibilidad sin OrcaRail</td><td>Parcial</td><td>Fuerte</td><td>Media</td><td>Fuerte</td><td>Fuerte</td></tr><tr><td>Resistencia a la censura</td><td>Parcial</td><td>Fuerte</td><td>Media</td><td>Fuerte</td><td>Fuerte</td></tr><tr><td>Experiencia cross-chain</td><td>Buena</td><td>Buena</td><td>Débil</td><td>La mejor</td><td>Buena</td></tr><tr><td>Claridad regulatoria</td><td>Media</td><td>Media</td><td>Débil</td><td>Débil</td><td>Alta</td></tr><tr><td>Dependencia de la infraestructura de OrcaRail</td><td>Alta</td><td>Baja</td><td>Muy alta (cadena)</td><td>Baja</td><td>Baja</td></tr><tr><td>Diferenciación de OrcaRail</td><td>Alta</td><td>Baja</td><td>Alta</td><td>Media</td><td>Alta</td></tr><tr><td>Alta de comercios no nativos de cripto</td><td>La mejor</td><td>La más difícil</td><td>Media</td><td>Media</td><td>Media</td></tr><tr><td>Coste de ingeniería</td><td>Bajo</td><td>Medio</td><td>Muy alto</td><td>Alto</td><td>Medio</td></tr><tr><td>Roturas visibles para los usuarios actuales</td><td>Ninguna</td><td>Significativas</td><td>Graves</td><td>Medias</td><td>Pequeñas</td></tr></tbody></table>
<p>Ninguna fila domina. Por eso esto es un debate y no un plan de despliegue.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="round-4--moderators-synthesis">Ronda 4: la síntesis del moderador<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#round-4--moderators-synthesis" class="hash-link" aria-label="Enlace directo al Ronda 4: la síntesis del moderador" title="Enlace directo al Ronda 4: la síntesis del moderador" translate="no">​</a></h2>
<p>Así es como leería yo el debate, como la persona que tiene que elegir.</p>
<p><strong>El Pragmático gana hoy</strong> porque el producto tiene que seguir publicándose y no podemos permitirnos parar 18 meses para reescribir la arquitectura. La hoja de ruta actual es una versión estrictamente mejor que la custodial que operamos hoy, con mejoras incrementales compatibles.</p>
<p><strong>El Maximalista gana por principios</strong> y capta una restricción real: el día en que nuestra API sea la razón por la que un comercio no puede cobrar es el día en que dejamos de ser un protocolo. Esa es la presión que debe guiar cada decisión de ingeniería de las Fases 1 a 7: publicar el indexador, publicar el subgraph, fijar el panel en IPFS bajo ENS, documentar cómo autoalojarlo. La hoja de ruta del Pragmático <strong>lo hace posible</strong>, pero no <strong>lo obliga</strong>. Deberíamos obligarlo.</p>
<p><strong>El Soberano gana si la escala lo justifica.</strong> Por debajo de cierto umbral de volumen, operar una cadena es una carga. Por encima, alquilar espacio de bloque de Ethereum para repartir 3 $ entre seis cada vez es absurdo. Sabremos que hemos cruzado ese umbral cuando una fracción dominante de nuestro volumen sean rutas de pagador a comercio en la misma cadena y la optimización de gas suponga un ahorro medible en la cuenta de resultados. Todavía no.</p>
<p><strong>El Creyente en los intents gana en cross-chain.</strong> Los pagos son por naturaleza multiactivo y multicadena. Un flujo de pagador basado en intents («paga al comercio X, me da igual cómo») es la mejor experiencia posible para un pagador cripto. Deberíamos adoptar intents <strong>en la capa del SDK del pagador</strong> antes que en la capa de liquidación. Eso hace que los solvers existentes (Across, deBridge, Relay) encajen de forma natural sin tener que construir un mercado nuevo.</p>
<p><strong>El Defensor de los estándares gana en todo donde gana el Maximalista, con menos riesgo.</strong> Escribir un EIP en torno a lo que publiquemos en las Fases 1 y 2 es <strong>gratis</strong>, útil para el ecosistema y no nos frena. Además nos da un relato creíble de «estamos construyendo un riel, no una trampa» para los comercios que evalúan rieles cripto por primera vez.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-blended-answer">La respuesta combinada<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#the-blended-answer" class="hash-link" aria-label="Enlace directo al La respuesta combinada" title="Enlace directo al La respuesta combinada" translate="no">​</a></h2>
<p>La síntesis aburrida pero correcta: <strong>publicar el camino del Pragmático, imponer la presión del Maximalista, adoptar intents para la experiencia del pagador, escribir un EIP por el camino y mantener al Soberano como opción de la Fase 8+ condicionada a la escala.</strong></p>
<p>En concreto, estos son los compromisos incrementales sobre la <a class="" href="https://docs.orcarail.com/es/docs/non-custodial/roadmap/">hoja de ruta</a> existente:</p>
<ul>
<li class=""><strong>M1: subgraph público desde la Fase 1</strong>. Todos los eventos <code>Paid</code> y <code>Charged</code> en un subgraph canónico que cualquiera pueda consultar. No bloquea la API.</li>
<li class=""><strong>M2: app de pago fijada en IPFS desde la Fase 2</strong>. Cada versión está direccionada por contenido y <code>pay.orcarail.eth</code> se resuelve mediante ENS.</li>
<li class=""><strong>M3: kit de autoalojamiento desde la Fase 3</strong>. Docker Compose + documentación para que cualquiera ejecute un panel compatible con OrcaRail a partir de los mismos contratos.</li>
<li class=""><strong>M4: SDK de intents desde la Fase 3</strong>. <code>orcarail.pay(intent)</code> en el cliente enruta por las redes de solvers existentes (Across/Relay) para pagos cross-chain. Solver de respaldo operado por OrcaRail para la cola larga.</li>
<li class=""><strong>M5: borrador de EIP desde la Fase 2</strong>. Coescribir el EIP de enlaces de pago con otro procesador o un equipo de wallet, usando nuestro <code>SubscriptionHub</code> como base.</li>
<li class=""><strong>M6: evaluación trimestral del Soberano</strong> junto a la <a class="" href="https://docs.orcarail.com/es/docs/non-custodial/eigenlayer-evaluation/">evaluación de EigenLayer</a>. Disparadores: volumen de pagos por cadena, coste de gas por pago como % del valor del pago y demanda de los comercios de liquidación por debajo del céntimo.</li>
</ul>
<p>Estas cinco incorporaciones llevan la hoja de ruta existente de «no custodial» a «no custodial, con forma de protocolo y creíblemente neutral». No ralentizan las Fases 1 a 7. Se siguen como líneas de trabajo vivas e independientes.</p>
<p>Se formalizan como la <strong>Línea P</strong> en el <a class="" href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/">whitepaper del protocolo</a>, que convierte M1-M5 en las fases P1-P5 y mantiene M6 (cadena propia) como una P6 opcional.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-we-are-explicitly-not-doing-yet">Lo que explícitamente no hacemos todavía<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#what-we-are-explicitly-not-doing-yet" class="hash-link" aria-label="Enlace directo al Lo que explícitamente no hacemos todavía" title="Enlace directo al Lo que explícitamente no hacemos todavía" translate="no">​</a></h2>
<ul>
<li class=""><strong>Cadena propia</strong>. No en los próximos 18 meses. Se reevalúa cada trimestre.</li>
<li class=""><strong>Token de OrcaRail en el lanzamiento</strong>. No hay token ahora. Un futuro token de gobernanza queda <strong>reservado como opción</strong> para después de la descentralización (consulta el <a class="" href="https://docs.orcarail.com/es/blog/orcarail-protocol-whitepaper/">whitepaper del protocolo</a> para la postura completa). Sin preventa, sin asignaciones, sin puntos.</li>
<li class=""><strong>Camino Maximalista on-chain puro sin ninguna API</strong>. El producto necesita superficies legibles para las personas y los comercios necesitan a alguien a quien llamar cuando algo falla. <em>Permitiremos</em> el uso sin API, no lo <em>exigiremos</em>.</li>
<li class=""><strong>Nuestra propia red de solvers</strong>. Usaremos las existentes. Puede que operemos un <strong>solver de respaldo a coste</strong> para las rutas de cola larga que ignoran los solvers existentes, pero no arrancaremos una nueva red competidora.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="where-this-lands">Dónde queda esto<a href="https://docs.orcarail.com/es/blog/protocol-debate-non-custodial-futures/#where-this-lands" class="hash-link" aria-label="Enlace directo al Dónde queda esto" title="Enlace directo al Dónde queda esto" translate="no">​</a></h2>
<p>Este artículo es un <strong>complemento</strong> de la <a class="" href="https://docs.orcarail.com/es/blog/non-custodial-roadmap/">hoja de ruta no custodial</a>, no un sustituto. La hoja de ruta sigue siguiendo las Fases 0-7. Este debate añade un sexto eje, la <em>forma de protocolo</em>, con el que se debe evaluar cada fase.</p>
<p>Si hubieras estado en el debate, envíanos tu postura. Publicaremos los contraargumentos sólidos.</p>
<hr>
<p><strong>Lecturas relacionadas</strong></p>
<ul>
<li class=""><a class="" href="https://docs.orcarail.com/es/blog/non-custodial-roadmap/">La hoja de ruta no custodial de OrcaRail</a>: la hoja de ruta canónica</li>
<li class=""><a class="" href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/">Por qué el cobro por allowance supera al escrow y a las session keys</a>: el debate sobre el modelo de suscripciones, en el mismo formato</li>
<li class=""><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/eigenlayer-evaluation/">Evaluación de EigenLayer</a>: registro de decisiones complementario sobre keepers descentralizados</li>
<li class=""><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/architecture/">Arquitectura</a>: lo que construye realmente el camino del Pragmático</li>
</ul>]]></content:encoded>
            <category>Payments</category>
            <category>Web3</category>
            <category>Multi-Chain</category>
            <category>Stablecoins</category>
            <category>Subscriptions</category>
        </item>
        <item>
            <title><![CDATA[Por qué el cobro por allowance supera al escrow y a las session keys]]></title>
            <link>https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/</link>
            <guid>https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/</guid>
            <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[La conversación de diseño detrás del modelo de suscripciones no custodial de OrcaRail. Por qué approve + pull de ERC-20 (y la delegación SPL en Solana) supera a los depósitos en escrow y a las smart wallets con session keys para las suscripciones cripto.]]></description>
            <content:encoded><![CDATA[<p><strong>20 de abril de 2026</strong>: todo producto de suscripciones cripto tiene que resolver el mismo problema: ¿cómo autoriza un pagador pagos futuros sin renunciar a la custodia? Hay tres respuestas realistas. Elegimos el <strong>cobro por allowance</strong>, y este artículo explica por qué.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-three-models">Los tres modelos<a href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/#the-three-models" class="hash-link" aria-label="Enlace directo al Los tres modelos" title="Enlace directo al Los tres modelos" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-allowance-pull-erc-20-approve--spl-delegate">1. Cobro por allowance (approve de ERC-20 + delegación SPL)<a href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/#1-allowance-pull-erc-20-approve--spl-delegate" class="hash-link" aria-label="Enlace directo al 1. Cobro por allowance (approve de ERC-20 + delegación SPL)" title="Enlace directo al 1. Cobro por allowance (approve de ERC-20 + delegación SPL)" translate="no">​</a></h3>
<p>El pagador firma <code>approve(spender, cap)</code> una sola vez en el contrato del token. Después, el spender (nuestro <code>SubscriptionHub</code> o el programa de Solana) llama a <code>transferFrom</code> (EVM) o transfiere con autoridad delegada (SOL) cuando vence un periodo. El pagador conserva la custodia; el spender puede cobrar hasta <code>cap</code> durante la vida de la suscripción.</p>
<p>Cancelación: el pagador firma <code>approve(spender, 0)</code> o <code>Revoke</code>. A partir de ahí, ningún cobro puede salir bien.</p>
<p>Es lo que ya usa hoy el <a class="" href="https://docs.orcarail.com/es/docs/subscriptions/auto-charge/">Cobro automático</a>. La <a class="" href="https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/">Fase 2</a> traslada el spender de una hot wallet controlada por la plataforma a un contrato on-chain, pero el lado del pagador no cambia.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-escrow-deposit">2. Depósito en escrow<a href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/#2-escrow-deposit" class="hash-link" aria-label="Enlace directo al 2. Depósito en escrow" title="Enlace directo al 2. Depósito en escrow" translate="no">​</a></h3>
<p>El pagador deposita los fondos de N periodos en un contrato de escrow por suscripción. El contrato los libera al comercio según el calendario. El pagador puede retirar el saldo no usado en cualquier momento (menos los periodos pagados).</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-smart-wallet-with-session-keys">3. Smart wallet con session keys<a href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/#3-smart-wallet-with-session-keys" class="hash-link" aria-label="Enlace directo al 3. Smart wallet con session keys" title="Enlace directo al 3. Smart wallet con session keys" translate="no">​</a></h3>
<p>El pagador usa una smart wallet ERC-4337 y concede una session key con alcance limitado al contrato de suscripción. La session key solo puede hacer lo que permite su alcance (por ejemplo, «transferir hasta X USDC cada 30 días a esta dirección»). El pagador revoca eliminando la session key.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-scoring">La puntuación<a href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/#the-scoring" class="hash-link" aria-label="Enlace directo al La puntuación" title="Enlace directo al La puntuación" translate="no">​</a></h2>
<p>Evaluamos los tres en cinco ejes:</p>
<table><thead><tr><th>Eje</th><th>Cobro por allowance</th><th>Escrow</th><th>Session keys</th></tr></thead><tbody><tr><td>Custodia durante la suscripción activa</td><td>Pagador</td><td>Contrato de escrow</td><td>Pagador (mediante smart wallet)</td></tr><tr><td>Pasos de configuración para el pagador</td><td>1 firma</td><td>1 depósito (con gas)</td><td>1 alta en una wallet 4337</td></tr><tr><td>Compatibilidad de wallets del pagador</td><td>Todas las wallets</td><td>Todas las wallets</td><td>Solo wallets 4337</td></tr><tr><td>Fondos bloqueados / capital de trabajo</td><td>Ninguno</td><td>N meses bloqueados</td><td>Ninguno</td></tr><tr><td>Experiencia de cancelación</td><td>Revocar el approve</td><td>Retirar + cancelar</td><td>Eliminar la session key</td></tr><tr><td>Riesgo de keeper</td><td>Cualquier llamante</td><td>Cualquier llamante</td><td>Cualquier llamante</td></tr><tr><td>Complejidad para el comercio</td><td>Mínima</td><td>Contabilidad de liberaciones</td><td>Configurar un bundler 4337</td></tr><tr><td>Funciona con MetaMask / Phantom</td><td>Sí</td><td>Sí</td><td>No de forma nativa</td></tr><tr><td>Funciona con Ledger / hardware</td><td>Sí</td><td>Sí</td><td>Parcialmente</td></tr><tr><td>Claridad regulatoria</td><td>Alta</td><td>Menor (huele a escrow)</td><td>Alta</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-not-escrow">Por qué no escrow<a href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/#why-not-escrow" class="hash-link" aria-label="Enlace directo al Por qué no escrow" title="Enlace directo al Por qué no escrow" translate="no">​</a></h3>
<p>El escrow tiene el discurso más atractivo («los fondos del pagador están bloqueados en un contrato, no en una empresa»), pero la peor experiencia real:</p>
<ul>
<li class="">A los pagadores no les gusta bloquear N meses de fondos. Una suscripción de 20 $/mes con un escrow de 12 meses supone 240 $ bloqueados. Pone techo a la conversión.</li>
<li class="">Los retiros se complican: el contrato tiene que llevar la cuenta de periodos pagados y no pagados, gestionar reembolsos parciales e impedir que el comercio toque fondos futuros.</li>
<li class="">«Escrow que guarda fondos de clientes» tiene en varias jurisdicciones un tufo regulatorio que «allowance a un smart contract» no tiene.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-not-session-keys">Por qué no session keys<a href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/#why-not-session-keys" class="hash-link" aria-label="Enlace directo al Por qué no session keys" title="Enlace directo al Por qué no session keys" translate="no">​</a></h3>
<p>Las session keys en smart wallets 4337 son elegantes. Pero exigen que la wallet del pagador sea una smart wallet. En 2026 la mayoría de los pagadores siguen usando EOA (MetaMask, Rabby, hardware wallets, firmantes de Safe), y los pagadores de Solana usan wallets de keypair al estilo Phantom. Obligar a darse de alta en 4337 para una suscripción mata la conversión.</p>
<p>Hay un camino en el que 4337 se convierte en la wallet por defecto del pagador y las session keys pasan a ser triviales. Todavía no estamos ahí.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-allowance-pull-wins-today">Por qué gana hoy el cobro por allowance<a href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/#why-allowance-pull-wins-today" class="hash-link" aria-label="Enlace directo al Por qué gana hoy el cobro por allowance" title="Enlace directo al Por qué gana hoy el cobro por allowance" translate="no">​</a></h3>
<ul>
<li class=""><strong>Ningún cambio en la wallet del pagador</strong>. Funciona cualquier wallet que pueda firmar un <code>approve</code> de ERC-20, es decir, todas.</li>
<li class=""><strong>Ningún fondo bloqueado</strong>. El pagador conserva la custodia; el cobro ocurre justo a tiempo.</li>
<li class=""><strong>La revocación es universal</strong>. <code>approve(0)</code> o <code>Revoke</code> es una primitiva que ya muestra la interfaz de cualquier wallet.</li>
<li class=""><strong>El keeper es un commodity</strong>. <code>SubscriptionHub.charge(id)</code> es público y sin permisos. NestJS, Chainlink, Gelato o un AVS de EigenLayer (consulta la <a class="" href="https://docs.orcarail.com/es/blog/phase-6-eigenlayer-keeper-avs/">Fase 6</a>) pueden llamarlo.</li>
<li class=""><strong>El relato regulatorio es más simple</strong>. La plataforma nunca retiene fondos en tránsito.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="known-limitations-and-how-we-mitigate-them">Limitaciones conocidas y cómo las mitigamos<a href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/#known-limitations-and-how-we-mitigate-them" class="hash-link" aria-label="Enlace directo al Limitaciones conocidas y cómo las mitigamos" title="Enlace directo al Limitaciones conocidas y cómo las mitigamos" translate="no">​</a></h2>
<p>El cobro por allowance no es perfecto. Los inconvenientes, con honestidad:</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-infinite-approvals">1. Aprobaciones infinitas<a href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/#1-infinite-approvals" class="hash-link" aria-label="Enlace directo al 1. Aprobaciones infinitas" title="Enlace directo al 1. Aprobaciones infinitas" translate="no">​</a></h3>
<p>Las wallets suelen proponer por defecto valores de <code>approve</code> infinitos. Los contratos maliciosos con allowances infinitos vacían wallets. Nuestra mitigación: la interfaz pide explícitamente una aprobación <em>limitada</em> (por ejemplo, <code>12 × monthly_amount</code> para una suscripción anual), muestra la cifra en dólares y ofrece el texto «cancela cuando quieras». El contrato impone <code>cap</code> por separado del allowance de ERC-20.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-revoke-between-cycles">2. Revocación entre ciclos<a href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/#2-revoke-between-cycles" class="hash-link" aria-label="Enlace directo al 2. Revocación entre ciclos" title="Enlace directo al 2. Revocación entre ciclos" translate="no">​</a></h3>
<p>Un pagador puede revocar a mitad de la suscripción y el siguiente cobro fallará. Es el mismo modo de fallo que una tarjeta guardada que se cancela. Se gestiona con el webhook + email existentes: <code>subscription-insufficient-allowance.hbs</code> y <code>subscription-past-due.hbs</code>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-stale-allowance-after-price-change">3. Allowance desactualizado tras un cambio de precio<a href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/#3-stale-allowance-after-price-change" class="hash-link" aria-label="Enlace directo al 3. Allowance desactualizado tras un cambio de precio" title="Enlace directo al 3. Allowance desactualizado tras un cambio de precio" translate="no">​</a></h3>
<p>Si el comercio sube el precio a mitad de la suscripción, el <code>cap</code> antiguo puede quedarse corto. Se gestiona con el invariante de <code>cap</code>, que revierte <code>charge()</code>, y con la interfaz del comercio pidiendo una nueva aprobación.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-reorg-induced-double-charge">4. Cobro doble por reorganización<a href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/#4-reorg-induced-double-charge" class="hash-link" aria-label="Enlace directo al 4. Cobro doble por reorganización" title="Enlace directo al 4. Cobro doble por reorganización" translate="no">​</a></h3>
<p>Un bot que aproveche una reorganización de bloques puede repetir <code>charge()</code>. Se gestiona con el <code>lastChargedAt</code> monótono de <code>SubscriptionHub</code>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-changes-for-payers-today">Qué cambia hoy para los pagadores<a href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/#what-changes-for-payers-today" class="hash-link" aria-label="Enlace directo al Qué cambia hoy para los pagadores" title="Enlace directo al Qué cambia hoy para los pagadores" translate="no">​</a></h2>
<p>Nada. El flujo actual de <a class="" href="https://docs.orcarail.com/es/docs/subscriptions/auto-charge/">Cobro automático</a> ya pide <code>approve(spender, amount)</code> y <code>SPL Approve</code>: los mismos pasos. La <a class="" href="https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/">Fase 2</a> traslada el spender a la dirección de un contrato no custodial. Tu wallet muestra la misma pantalla de permisos.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-changes-for-merchants">Qué cambia para los comercios<a href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/#what-changes-for-merchants" class="hash-link" aria-label="Enlace directo al Qué cambia para los comercios" title="Enlace directo al Qué cambia para los comercios" translate="no">​</a></h2>
<p>Nada en la forma de la respuesta de la API. El campo <code>approval_spender_address</code> del objeto <code>auto_charge</code> de la suscripción simplemente apunta al contrato <code>SubscriptionHub</code> en lugar de a una hot wallet de OrcaRail. Los webhooks se emiten en los mismos momentos.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="summary">Resumen<a href="https://docs.orcarail.com/es/blog/why-allowance-pull-subscriptions/#summary" class="hash-link" aria-label="Enlace directo al Resumen" title="Enlace directo al Resumen" translate="no">​</a></h2>
<table><thead><tr><th>Consideración</th><th>Ganador</th></tr></thead><tbody><tr><td>Experiencia de alta del pagador</td><td>Cobro por allowance</td></tr><tr><td>Capital de trabajo</td><td>Cobro por allowance / session keys</td></tr><tr><td>Compatibilidad de wallets</td><td>Cobro por allowance</td></tr><tr><td>Claridad regulatoria</td><td>Cobro por allowance / session keys</td></tr><tr><td>Flexibilidad del keeper</td><td>Los tres</td></tr><tr><td>Simplicidad del contrato</td><td>Cobro por allowance</td></tr></tbody></table>
<p>El cobro por allowance gana claramente en compatibilidad de wallets y capital de trabajo, y empata o gana en todos los demás ejes. Por eso las suscripciones de OrcaRail se basan en él.</p>
<hr>
<p>Relacionado: <strong><a class="" href="https://docs.orcarail.com/es/blog/phase-2-allowance-pull-subscriptions/">Fase 2: suscripciones por allowance</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/subscriptions/auto-charge/">Documentación de cobro automático</a></strong> · <strong><a class="" href="https://docs.orcarail.com/es/docs/non-custodial/security-model/">Modelo de seguridad</a></strong></p>]]></content:encoded>
            <category>Subscriptions</category>
            <category>Payments</category>
            <category>Web3</category>
            <category>Stablecoins</category>
        </item>
        <item>
            <title><![CDATA[Suscripciones en OrcaRail: cobro automático y multichain]]></title>
            <link>https://docs.orcarail.com/es/blog/subscriptions-autocharge-multichain/</link>
            <guid>https://docs.orcarail.com/es/blog/subscriptions-autocharge-multichain/</guid>
            <pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Cómo gestiona OrcaRail las suscripciones cripto recurrentes: enlaces de pago frente a cobro automático, aprobaciones y facturación on-chain, y cómo encaja lo multichain con las redes del comercio, el contexto del pagador y los retiros.]]></description>
            <content:encoded><![CDATA[<p><strong>25 de marzo de 2026</strong>: OrcaRail admite <strong>suscripciones recurrentes</strong> con el mismo modelo centrado en la API que los pagos únicos: creas una suscripción, nosotros seguimos los periodos de facturación y los pagadores completan cada ciclo, ya sea <strong>abriendo un enlace de pago</strong> o mediante <strong>cobro automático</strong>, en el que nos autorizan a cobrar stablecoins en cada periodo tras una única aprobación on-chain.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-subscriptions-on-orcarail">Por qué suscripciones en OrcaRail<a href="https://docs.orcarail.com/es/blog/subscriptions-autocharge-multichain/#why-subscriptions-on-orcarail" class="hash-link" aria-label="Enlace directo al Por qué suscripciones en OrcaRail" title="Enlace directo al Por qué suscripciones en OrcaRail" translate="no">​</a></h2>
<p>Las suscripciones sirven para SaaS, membresías, igualas y cualquier producto que se facture en un <strong>intervalo fijo</strong> (día, semana, mes, año), con periodos de prueba, límites de ciclos y reglas de cancelación opcionales. Usas la misma <a class="" href="https://docs.orcarail.com/es/docs/authentication/overview/">autenticación de pagos</a> que el resto de la plataforma y puedes reaccionar a los eventos del ciclo de vida con los <a class="" href="https://docs.orcarail.com/es/docs/subscriptions/webhooks/">webhooks de suscripción</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="two-ways-to-collect-payment-links-vs-auto-charge">Dos formas de cobrar: enlaces de pago o cobro automático<a href="https://docs.orcarail.com/es/blog/subscriptions-autocharge-multichain/#two-ways-to-collect-payment-links-vs-auto-charge" class="hash-link" aria-label="Enlace directo al Dos formas de cobrar: enlaces de pago o cobro automático" title="Enlace directo al Dos formas de cobrar: enlaces de pago o cobro automático" translate="no">​</a></h2>
<ul>
<li class=""><strong><code>send_payment_link</code></strong> (por defecto): en cada ciclo de facturación, el pagador recibe un <strong>enlace de pago</strong> (por email y/o flujo alojado). Paga cuando abre el enlace: es lo habitual en un checkout cripto y se combina fácilmente con las rutas de Relay y la elección de wallet.</li>
<li class=""><strong><code>auto_charge</code></strong>: el pagador <strong>preautoriza</strong> a la <strong>hot wallet</strong> de OrcaRail para cobrar el importe del periodo en cada renovación. Tras la configuración, las renovaciones no requieren que el pagador abra un enlace nuevo cada vez, siempre que el saldo y la autorización sigan siendo válidos.</li>
</ul>
<p>Crea y configura el cobro con <a class="" href="https://docs.orcarail.com/es/docs/subscriptions/create-subscription/"><code>POST /api/v1/subscriptions</code></a>; lista, actualiza, pausa y cancela con <a class="" href="https://docs.orcarail.com/es/docs/subscriptions/manage-subscriptions/">gestionar suscripciones</a>. Los campos completos de la petición y los ejemplos están en esas guías.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="auto-charge-how-we-handle-it">Cobro automático: cómo lo gestionamos<a href="https://docs.orcarail.com/es/blog/subscriptions-autocharge-multichain/#auto-charge-how-we-handle-it" class="hash-link" aria-label="Enlace directo al Cobro automático: cómo lo gestionamos" title="Enlace directo al Cobro automático: cómo lo gestionamos" translate="no">​</a></h2>
<ol>
<li class="">El <strong>comercio</strong> crea una suscripción con <code>collection_method: "auto_charge"</code> y los campos habituales <code>amount</code>, <code>interval</code>, <code>token_id</code>, <code>network_id</code> y los datos de contacto del pagador.</li>
<li class="">El <strong>pagador</strong> abre la suscripción o la experiencia de pago del primer ciclo. Ve el <strong>alcance total de la aprobación</strong> (por ejemplo, la suma de los próximos cargos que le pides cubrir) y firma una autorización on-chain:<!-- -->
<ul>
<li class="">En cadenas <strong>EVM</strong>, es un <strong><code>approve(spender, amount)</code></strong> estándar de ERC-20 con nuestra hot wallet como spender.</li>
<li class="">En <strong>Solana</strong>, el paso equivalente es una <strong>delegación de token SPL</strong> de al menos el importe de un periodo a nuestra hot wallet de Solana.</li>
</ul>
</li>
<li class="">El <strong>pagador</strong> llama al endpoint público <strong><code>POST /api/v1/subscriptions/:id/approve-auto-charge</code></strong> con el <strong>hash de la transacción</strong> del allowance (o de la delegación), <strong><code>payer_wallet_address</code></strong>, <strong><code>payer_network_id</code></strong> y <strong><code>payer_token_id</code></strong>. No hace falta la clave de API del comercio: el pagador demuestra su intención al haber firmado la transacción en la cadena.</li>
<li class=""><strong>OrcaRail verifica on-chain</strong> que el allowance o la delegación cubre <strong>al menos un ciclo de facturación</strong> para la hot wallet esperada antes de marcar el cobro automático como <strong>aprobado</strong>. Antes de cada cobro podemos volver a comprobar la autorización, para no confundir problemas transitorios de RPC con un allowance revocado.</li>
<li class=""><strong>En cada ciclo de facturación</strong>, el proceso de facturación intenta el <strong>cobro</strong> (en EVM, un flujo de tipo <code>transferFrom</code> del pagador a la liquidación; en Solana se usa el saldo delegado). Si sale bien, el periodo avanza; si falla repetidamente (por ejemplo, saldo insuficiente o aprobación revocada), la suscripción puede pasar a <strong><code>past_due</code></strong> y se avisa al pagador. Puedes escuchar webhooks como <code>subscription.payment_link.payment_failed</code> o <code>subscription.past_due</code>, como se describe en <a class="" href="https://docs.orcarail.com/es/docs/subscriptions/auto-charge/">Cobro automático</a> y <a class="" href="https://docs.orcarail.com/es/docs/subscriptions/webhooks/">webhooks</a>.</li>
</ol>
<p><strong>Revocación y alternativa:</strong> si el pagador revoca on-chain, los cobros posteriores fallan. También puede completar <strong><code>POST .../revoke-auto-charge</code></strong> después de revocar para que registremos el estado y podamos cambiar el cobro a <strong><code>send_payment_link</code></strong>, con instrucciones por email para gestionar la suscripción y volver a pagar mediante enlaces. Los detalles están en <a class="" href="https://docs.orcarail.com/es/docs/subscriptions/auto-charge/">Cobro automático</a> y <a class="" href="https://docs.orcarail.com/es/docs/subscriptions/manage-subscriptions/">Gestionar suscripciones</a>.</p>
<p><strong>Seguridad y claridad:</strong> solo se usa para los cobros la wallet que completó la aprobación; mostramos totales y número de ciclos claros para que los pagadores sepan qué han autorizado. En planes muy largos o sin fin, considera limitar los importes aprobados y renovar la aprobación periódicamente, o quedarte con los enlaces de pago. Consulta <a class="" href="https://docs.orcarail.com/es/docs/subscriptions/auto-charge/">Cobro automático</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="multichain-how-it-fits-subscriptions">Multichain: cómo encaja con las suscripciones<a href="https://docs.orcarail.com/es/blog/subscriptions-autocharge-multichain/#multichain-how-it-fits-subscriptions" class="hash-link" aria-label="Enlace directo al Multichain: cómo encaja con las suscripciones" title="Enlace directo al Multichain: cómo encaja con las suscripciones" translate="no">​</a></h2>
<ul>
<li class=""><strong>Ancla del comercio:</strong> cada suscripción se crea con un <strong><code>network_id</code></strong> y un <strong><code>token_id</code></strong> que definen cómo se fija el precio y se liquida en términos de API: la red y el activo «base» de ese plan.</li>
<li class=""><strong>Contexto del pagador en el cobro automático:</strong> el cobro automático guarda <strong><code>payer_network_id</code></strong> y <strong><code>payer_token_id</code></strong>, la red y el token donde el pagador realmente definió el allowance o la delegación. Pueden diferir de los campos principales de la suscripción cuando el pagador paga desde otra cadena o activo compatible, de forma coherente con cómo las cotizaciones y el checkout resuelven las rutas del lado del pagador.</li>
<li class=""><strong>Cobertura alineada con Relay:</strong> las redes y monedas compatibles se mantienen alineadas con <strong><a href="https://relay.link/" target="_blank" rel="noopener noreferrer" class="">Relay</a></strong>; cuando Relay amplía cadenas y tokens, nuestro inventario le sigue. Resumimos ese modelo en <a class="" href="https://docs.orcarail.com/es/blog/supported-networks-currencies-relay/">Redes y monedas compatibles: con la tecnología de Relay</a>.</li>
<li class=""><strong>Adónde llegan los fondos:</strong> los comercios siguen configurando <strong>direcciones de retiro por tipo de cadena</strong> (y pueden anularlas por pago cuando se admite). Para la imagen completa de los retiros multichain y las varias direcciones por cadena, consulta <a class="" href="https://docs.orcarail.com/es/blog/orcarail-multichain-withdrawals-relay/">OrcaRail es multichain: retiros y alineación con Relay</a>.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="summary">Resumen<a href="https://docs.orcarail.com/es/blog/subscriptions-autocharge-multichain/#summary" class="hash-link" aria-label="Enlace directo al Resumen" title="Enlace directo al Resumen" translate="no">​</a></h2>
<table><thead><tr><th>Tema</th><th>Comportamiento de OrcaRail</th></tr></thead><tbody><tr><td><strong>Cobro</strong></td><td><code>send_payment_link</code> en cada ciclo, o <code>auto_charge</code> con aprobación on-chain</td></tr><tr><td><strong>Cobro automático</strong></td><td>Approve ERC-20 en EVM o delegación SPL en Solana → API pública de aprobación → verificación on-chain → cobro por ciclo, con <code>past_due</code> y webhooks si falla</td></tr><tr><td><strong>Revocación</strong></td><td>Revocación on-chain + <code>revoke-auto-charge</code> opcional; puede volver a los enlaces de pago</td></tr><tr><td><strong>Multichain</strong></td><td><code>network_id</code> / <code>token_id</code> de la suscripción; la aprobación del pagador guarda <code>payer_network_id</code> / <code>payer_token_id</code>; redes alineadas con Relay; retiros por tipo de cadena</td></tr></tbody></table>
<p>Las suscripciones en OrcaRail combinan <strong>recursos REST de suscripción</strong> con <strong>autorización no custodial del pagador</strong> para el cobro automático y pagos <strong>multichain</strong>, sin renunciar a la experiencia de pago alojada ni a las APIs que ya usas para los pagos únicos.</p>
<hr>
<p><strong><a href="https://app.orcarail.com/" target="_blank" rel="noopener noreferrer" class="">App de OrcaRail</a></strong> · <strong><a href="https://docs.orcarail.com/" target="_blank" rel="noopener noreferrer" class="">Documentación</a></strong> · <strong><a href="https://relay.link/" target="_blank" rel="noopener noreferrer" class="">Relay</a></strong></p>]]></content:encoded>
            <category>Announcement</category>
            <category>Payments</category>
            <category>Multi-Chain</category>
            <category>Web3</category>
            <category>Stablecoins</category>
            <category>Subscriptions</category>
        </item>
        <item>
            <title><![CDATA[Redes y monedas compatibles: con la tecnología de Relay y actualizadas automáticamente]]></title>
            <link>https://docs.orcarail.com/es/blog/supported-networks-currencies-relay/</link>
            <guid>https://docs.orcarail.com/es/blog/supported-networks-currencies-relay/</guid>
            <pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Las redes y monedas compatibles con OrcaRail provienen de Relay Link y se sincronizan automáticamente; cuando Relay añade cadenas o tokens, nosotros también los recibimos.]]></description>
            <content:encoded><![CDATA[<p><strong>15 de marzo de 2026</strong>: OrcaRail usa <strong><a href="https://relay.link/" target="_blank" rel="noopener noreferrer" class="">Relay Link</a></strong> para pagos y puentes entre cadenas. Por eso admitimos las mismas <strong>redes y monedas</strong> que Relay, y se <strong>integran automáticamente</strong>. No hay una lista fija que mantener; cuando Relay añade o actualiza cadenas y tokens, nuestro sistema los incorpora.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="where-the-list-comes-from">De dónde sale la lista<a href="https://docs.orcarail.com/es/blog/supported-networks-currencies-relay/#where-the-list-comes-from" class="hash-link" aria-label="Enlace directo al De dónde sale la lista" title="Enlace directo al De dónde sale la lista" translate="no">​</a></h2>
<p>No mantenemos una lista propia, curada a mano, de redes y tokens compatibles. En su lugar:</p>
<ul>
<li class="">Las <strong>redes</strong> se sincronizan desde la <strong>Chains API</strong> de Relay (<a href="https://api.relay.link/chains" target="_blank" rel="noopener noreferrer" class="">api.relay.link/chains</a> para mainnet, más las testnets). Nuestro proceso de seed crea los registros de red a partir de los datos de cadenas de Relay, incluidos los tipos de cadena EVM, Bitcoin y Solana cuando Relay los admite.</li>
<li class="">Las <strong>monedas y tokens</strong> se sincronizan desde la <strong>Currencies v2 API</strong> de Relay (<a href="https://docs.relay.link/references/api/get-currencies-v2" target="_blank" rel="noopener noreferrer" class="">get-currencies-v2</a>). Los tokens se insertan o actualizan por red, así cada cadena recibe el conjunto correcto de activos pagables y transferibles por puente.</li>
</ul>
<p>Cuando Relay añade una nueva cadena o moneda, nuestro proceso de seed/actualización la incorpora. Obtienes una <strong>alineación automática</strong> con la cobertura de Relay sin trabajo de integración adicional por tu parte.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-support-means">Qué significa «compatible»<a href="https://docs.orcarail.com/es/blog/supported-networks-currencies-relay/#what-support-means" class="hash-link" aria-label="Enlace directo al Qué significa «compatible»" title="Enlace directo al Qué significa «compatible»" translate="no">​</a></h2>
<p>Los pagos y (cuando aplica) los puentes siguen las <strong>rutas compatibles de Relay</strong>. Actualmente Relay admite <strong>más de 69 redes blockchain</strong> de estos tipos:</p>
<ul>
<li class="">Cadenas <strong>EVM</strong> (Ethereum, Base, Polygon, Arbitrum, Optimism y muchas más)</li>
<li class=""><strong>Bitcoin</strong></li>
<li class=""><strong>Solana</strong> (SVM)</li>
<li class=""><strong>Tron</strong></li>
</ul>
<p>En cada cadena, el soporte de tokens puede ser <strong>"All"</strong> (tokens con liquidez de Solver o DEX) o <strong>"Limited"</strong> (solo tokens marcados con <code>supportsBridging: true</code>). Para la referencia oficial de rutas y tokens compatibles, consulta la documentación de Relay:</p>
<ul>
<li class=""><a href="https://docs.relay.link/references/api/api_resources/supported-routes" target="_blank" rel="noopener noreferrer" class="">Supported Tokens &amp; Routes</a>: cómo comprobar si una ruta es compatible</li>
<li class=""><a href="https://docs.relay.link/references/api/api_resources/contract-addresses" target="_blank" rel="noopener noreferrer" class="">Contract Addresses</a>: direcciones de solvers y contratos por cadena</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-see-what-orcarail-supports">Cómo ver qué admite OrcaRail<a href="https://docs.orcarail.com/es/blog/supported-networks-currencies-relay/#how-to-see-what-orcarail-supports" class="hash-link" aria-label="Enlace directo al Cómo ver qué admite OrcaRail" title="Enlace directo al Cómo ver qué admite OrcaRail" translate="no">​</a></h2>
<p>Usa nuestra API para obtener el conjunto actual de redes y tokens disponibles en OrcaRail:</p>
<ul>
<li class=""><strong>Redes:</strong> <code>GET /payments/networks</code>: lista todas las redes compatibles (puedes filtrar con <code>?active=true</code>).</li>
<li class=""><strong>Tokens por red:</strong> <code>GET /payments/networks/:id/tokens</code>: lista los tokens de una red concreta (usa el <code>id</code> de la red de la lista anterior).</li>
<li class=""><strong>Monedas fiat/de visualización:</strong> <code>GET /price/currencies</code>: lista las monedas fiat compatibles para precios y cotizaciones.</li>
</ul>
<p>Tienes todos los detalles en la documentación de <a class="" href="https://docs.orcarail.com/es/docs/api-reference/payments/#list-networks">Payments API: listar redes / listar tokens</a> y <a class="" href="https://docs.orcarail.com/es/docs/api-reference/price/#list-currencies">Price API: listar monedas</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="summary">Resumen<a href="https://docs.orcarail.com/es/blog/supported-networks-currencies-relay/#summary" class="hash-link" aria-label="Enlace directo al Resumen" title="Enlace directo al Resumen" translate="no">​</a></h2>
<table><thead><tr><th>Origen</th><th>Qué sincronizamos</th><th>Cómo se actualiza</th></tr></thead><tbody><tr><td><strong>Redes</strong></td><td>Desde la Chains API de Relay</td><td>Con nuestro seed de redes; aparecen nuevas cadenas</td></tr><tr><td><strong>Monedas/tokens</strong></td><td>Desde Currencies v2 de Relay, por red</td><td>Con nuestro seed de tokens; aparecen nuevos tokens</td></tr><tr><td><strong>Cobertura de Relay</strong></td><td>Más de 69 cadenas: EVM + Bitcoin + Solana + Tron</td><td>Relay es la fuente de verdad; nosotros la seguimos</td></tr></tbody></table>
<p>Las redes y monedas compatibles en OrcaRail funcionan <strong>con la tecnología de Relay y se actualizan automáticamente</strong>: una integración, muchas cadenas.</p>
<hr>
<p><strong><a href="https://app.orcarail.com/" target="_blank" rel="noopener noreferrer" class="">App de OrcaRail</a></strong> · <strong><a href="https://docs.orcarail.com/" target="_blank" rel="noopener noreferrer" class="">Documentación</a></strong> · <strong><a href="https://relay.link/" target="_blank" rel="noopener noreferrer" class="">Relay</a></strong></p>]]></content:encoded>
            <category>Announcement</category>
            <category>Multi-Chain</category>
            <category>Payments</category>
            <category>Crypto</category>
            <category>Web3</category>
        </item>
        <item>
            <title><![CDATA[OrcaRail es multichain: varias direcciones de retiro por cadena y alineación con Relay]]></title>
            <link>https://docs.orcarail.com/es/blog/orcarail-multichain-withdrawals-relay/</link>
            <guid>https://docs.orcarail.com/es/blog/orcarail-multichain-withdrawals-relay/</guid>
            <pubDate>Thu, 05 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[OrcaRail es multichain y admite varias direcciones de retiro por cadena. Todavía no admitimos Bitcoin ni Solana; Relay sí los admite, y nosotros también, por alineación y por hoja de ruta.]]></description>
            <content:encoded><![CDATA[<p><strong>5 de marzo de 2026</strong>: OrcaRail es <strong>multichain por diseño</strong>. Aquí tienes una imagen clara de lo que admitimos hoy, cómo funcionan los retiros en cada cadena y cómo nos alineamos con Relay en Bitcoin y Solana.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="multichain-not-every-chain-yet">Multichain, pero no todas las cadenas (todavía)<a href="https://docs.orcarail.com/es/blog/orcarail-multichain-withdrawals-relay/#multichain-not-every-chain-yet" class="hash-link" aria-label="Enlace directo al Multichain, pero no todas las cadenas (todavía)" title="Enlace directo al Multichain, pero no todas las cadenas (todavía)" translate="no">​</a></h2>
<p>Hoy OrcaRail está pensado para <strong>cadenas compatibles con EVM</strong>. <strong>No</strong> admitimos <strong>Bitcoin</strong> ni <strong>Solana</strong> (ni tokens nativos de Solana) como cadenas de primer nivel en nuestros flujos de pago y retiro. Así mantenemos una superficie de integración acotada y APIs coherentes mientras crecemos.</p>
<p>Si tu stack es Ethereum, Base, Polygon, Arbitrum, Optimism u otras L1/L2 EVM, tienes una sola integración y una sola documentación. Sin flujos separados para Bitcoin o Solana, por ahora.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="multiple-withdrawal-addresses-per-chain-type">Varias direcciones de retiro por tipo de cadena<a href="https://docs.orcarail.com/es/blog/orcarail-multichain-withdrawals-relay/#multiple-withdrawal-addresses-per-chain-type" class="hash-link" aria-label="Enlace directo al Varias direcciones de retiro por tipo de cadena" title="Enlace directo al Varias direcciones de retiro por tipo de cadena" translate="no">​</a></h2>
<p>En los retiros es donde lo «multichain» de verdad compensa. En OrcaRail puedes configurar <strong>varias direcciones de retiro por tipo de cadena</strong>.</p>
<ul>
<li class=""><strong>Control por cadena:</strong> define un destino por defecto distinto (o un conjunto de direcciones) para Ethereum, Base, Polygon, etc., para que los fondos lleguen donde quieras en cada red.</li>
<li class=""><strong>Anulación por pago:</strong> al crear un payment intent puedes seguir pasando una <code>withdrawal_address</code> para enviar ese pago concreto a un vendedor o a la tesorería en la cadena correcta.</li>
<li class=""><strong>Sin un único cuello de botella:</strong> gestiona marketplaces, SaaS o estructuras con varias entidades sin forzarlo todo por una sola cadena o una sola dirección.</li>
</ul>
<p>Es decir: multichain significa varias redes y <strong>varios destinos de retiro por cadena</strong>, todo configurable en el panel y mediante la API.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="relay-supports-bitcoin-and-solanaand-so-do-we-on-the-roadmap">Relay admite Bitcoin y Solana, y nosotros también (en la hoja de ruta)<a href="https://docs.orcarail.com/es/blog/orcarail-multichain-withdrawals-relay/#relay-supports-bitcoin-and-solanaand-so-do-we-on-the-roadmap" class="hash-link" aria-label="Enlace directo al Relay admite Bitcoin y Solana, y nosotros también (en la hoja de ruta)" title="Enlace directo al Relay admite Bitcoin y Solana, y nosotros también (en la hoja de ruta)" translate="no">​</a></h2>
<p><strong><a href="https://relay.link/" target="_blank" rel="noopener noreferrer" class="">Relay</a></strong> admite <strong>Bitcoin</strong> y <strong>Solana</strong> (y sus tokens) como parte de su cobertura multichain. OrcaRail está diseñado para alinearse con el modelo de Relay: un enlace, muchas cadenas.</p>
<p><em>Hoy</em> no admitimos Bitcoin ni Solana, pero nuestra arquitectura y nuestra hoja de ruta están pensadas para que <strong>cuando los añadamos, sea el mismo producto</strong>: las mismas APIs, el mismo modelo de retiros (varias direcciones por cadena) y el mismo panel. «Nosotros también» significa aquí que estamos comprometidos con la misma visión multichain que encarna Relay, incluidos Bitcoin y Solana, y que estamos creciendo en esa dirección.</p>
<p>Hasta entonces, tienes una experiencia multichain estable y centrada en EVM, con control total sobre adónde van los fondos en cada cadena admitida.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="summary">Resumen<a href="https://docs.orcarail.com/es/blog/orcarail-multichain-withdrawals-relay/#summary" class="hash-link" aria-label="Enlace directo al Resumen" title="Enlace directo al Resumen" translate="no">​</a></h2>
<table><thead><tr><th>Área</th><th>OrcaRail hoy</th></tr></thead><tbody><tr><td><strong>Cadenas</strong></td><td>Compatibles con EVM (Ethereum, Base, Polygon, Arbitrum, Optimism, etc.)</td></tr><tr><td><strong>Bitcoin / Solana</strong></td><td>Aún no admitidos; alineados con el soporte de Relay en la hoja de ruta</td></tr><tr><td><strong>Retiros</strong></td><td>Varias direcciones de retiro por tipo de cadena; se admiten anulaciones por pago</td></tr><tr><td><strong>Relay</strong></td><td>La misma filosofía multichain; ampliamos las cadenas en línea con Relay (Bitcoin, Solana y más allá)</td></tr></tbody></table>
<p>Multichain en OrcaRail significa: <strong>muchas cadenas EVM ya, varias direcciones de retiro por cadena y un camino hacia Bitcoin y Solana al ritmo de Relay.</strong></p>
<hr>
<p><strong><a href="https://app.orcarail.com/" target="_blank" rel="noopener noreferrer" class="">App de OrcaRail</a></strong> · <strong><a href="https://docs.orcarail.com/" target="_blank" rel="noopener noreferrer" class="">Documentación</a></strong> · <strong><a href="https://relay.link/" target="_blank" rel="noopener noreferrer" class="">Relay</a></strong></p>]]></content:encoded>
            <category>Announcement</category>
            <category>Multi-Chain</category>
            <category>Payments</category>
            <category>Crypto</category>
            <category>Web3</category>
        </item>
        <item>
            <title><![CDATA[Nace OrcaRail: rieles de pago cripto abiertos y multichain]]></title>
            <link>https://docs.orcarail.com/es/blog/orcarail-born/</link>
            <guid>https://docs.orcarail.com/es/blog/orcarail-born/</guid>
            <pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[OrcaRail prioriza las stablecoins y es multichain, con precios alojados transparentes (0,5 % después de 1.000 transacciones gratis) y una opción autoalojada gratuita. Acepta cripto con APIs y webhooks predecibles para desarrolladores.]]></description>
            <content:encoded><![CDATA[<p><strong>1 de enero de 2026</strong>: hoy nos alegra muchísimo anunciar el lanzamiento de <strong>OrcaRail</strong>.</p>
<p>Lo construimos con ayuda de la IA y con una convicción clara: <strong>los pagos cripto deben ser abiertos, transparentes y accesibles en todas las cadenas.</strong> Durante demasiado tiempo, comercios y desarrolladores han tenido que elegir entre herramientas de código abierto complejas y sin mantenimiento, o pasarelas de pago cerradas y caras que te atan a su ecosistema y cobran comisiones altas.</p>
<p>Creamos OrcaRail para romper ese paradigma. OrcaRail es una <strong>plataforma de pagos multichain</strong> que une la lógica de negocio Web2 con la liquidación Web3: <strong>alojada</strong>, con precios simples basados en porcentaje y un generoso plan gratuito, o <strong>autoalojada</strong> para tener soberanía total.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-philosophy-a-transparent-public-good">La filosofía: un bien público transparente<a href="https://docs.orcarail.com/es/blog/orcarail-born/#the-philosophy-a-transparent-public-good" class="hash-link" aria-label="Enlace directo al La filosofía: un bien público transparente" title="Enlace directo al La filosofía: un bien público transparente" translate="no">​</a></h2>
<p>Creemos que los rieles financieros de internet deben ser un <strong>bien público</strong>. <strong>OrcaRail alojado</strong> cuesta <strong>el 0,5 % de cada transacción completada</strong>, con <strong>tus primeras 1.000 transacciones gratis</strong>, para que podamos operar una infraestructura fiable sin dejar de ser accesibles para quienes construyen. <strong>OrcaRail autoalojado</strong> es <strong>gratis</strong>, sin comisiones de software de OrcaRail: despliégalo en tu propio hardware y paga solo lo que cueste tu infraestructura. Los SDK oficiales, el MCP y los plugins tienen licencia MIT.</p>
<p>Las cotizaciones de cada pago pueden incluir <strong>conceptos opcionales</strong> que tú controlas, por ejemplo una <strong>comisión de soporte</strong> configurable (porcentaje) y una <strong>comisión</strong> en las claves de API, además de <strong>comisiones de puente</strong> al enrutar entre tokens o redes. Están documentadas en nuestras guías de <a class="" href="https://docs.orcarail.com/es/docs/fees-and-limits/overview/">Comisiones y límites</a> y son independientes del precio de la plataforma alojada.</p>
<p>Al mantenernos en <strong>código abierto</strong> y dejar que la comunidad mejore el producto, buscamos rieles <strong>no custodiales</strong> y de alto rendimiento, con menos riesgo de contraparte que las pasarelas cerradas: <strong>transparentes por diseño</strong>.</p>
<p>Si quienes construyen usan OrcaRail alojado, lo autoalojan o combinan ambos, juntos podemos hacer frente a los silos de pago opacos y de comisiones altas.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-developer-experience-familiar-payment-primitives">La experiencia de desarrollo: primitivas de pago conocidas<a href="https://docs.orcarail.com/es/blog/orcarail-born/#the-developer-experience-familiar-payment-primitives" class="hash-link" aria-label="Enlace directo al La experiencia de desarrollo: primitivas de pago conocidas" title="Enlace directo al La experiencia de desarrollo: primitivas de pago conocidas" translate="no">​</a></h2>
<p>Si sabes integrar procesadores de pago Web2 tradicionales, ya sabes usar OrcaRail. Diseñamos nuestra arquitectura para darte estados predecibles, flujos auditables y webhooks seguros ante reintentos.</p>
<ul>
<li class=""><strong>Primero las stablecoins:</strong> pon precio a tus productos en fiat (USD/EUR) y liquida al instante en USDC o USDT. Elimina el riesgo de volatilidad para tu negocio y ofrece a tus clientes un checkout fluido.</li>
<li class=""><strong>Checkout listo para usar:</strong> usa nuestros enlaces de pago alojados, widgets integrables e interfaces compatibles con WalletConnect para ofrecer una experiencia limpia.</li>
<li class=""><strong>Webhooks e idempotencia:</strong> mantén tu base de datos perfectamente sincronizada con la realidad on-chain. Nuestro sistema emite eventos fiables para los estados <code>succeeded</code>, <code>processing</code> y <code>canceled</code>, con reintentos automáticos.</li>
<li class=""><strong>SDK de Node.js y API REST:</strong> integra una vez, conéctate en todas partes.<!-- -->
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">npm install @orcarail/node</span><br></div></code></pre></div></div>
</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="multi-chain-and-multi-token-native">Multichain y multitoken de forma nativa<a href="https://docs.orcarail.com/es/blog/orcarail-born/#multi-chain-and-multi-token-native" class="hash-link" aria-label="Enlace directo al Multichain y multitoken de forma nativa" title="Enlace directo al Multichain y multitoken de forma nativa" translate="no">​</a></h2>
<p>Web3 está fragmentado, pero tu pasarela de pago no debería estarlo. Tienes una sola integración que funciona sin fricciones en todas las redes.</p>
<p>Hoy OrcaRail admite <strong>cadenas compatibles con EVM</strong> desde el primer momento. Pero no nos quedamos ahí: <strong>todas las cadenas compatibles con Relay están en camino.</strong> Nuestra tecnología de enrutamiento inteligente ayuda a elegir automáticamente la red más rápida o con menores comisiones para cada pago, para que tus clientes nunca abandonen un carrito por comisiones de gas desorbitadas.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="dynamic-withdrawals-built-for-saas--marketplaces">Retiros dinámicos: pensados para SaaS y marketplaces<a href="https://docs.orcarail.com/es/blog/orcarail-born/#dynamic-withdrawals-built-for-saas--marketplaces" class="hash-link" aria-label="Enlace directo al Retiros dinámicos: pensados para SaaS y marketplaces" title="Enlace directo al Retiros dinámicos: pensados para SaaS y marketplaces" translate="no">​</a></h2>
<p>Los negocios de internet modernos son complejos. Tanto si gestionas una plataforma SaaS como un marketplace con varios vendedores o una app de la economía de creadores, enrutar fondos a mano es una pesadilla. OrcaRail lo resuelve de forma nativa:</p>
<ul>
<li class=""><strong>Enrutamiento por pago:</strong> pasa una <code>withdrawal_address</code> al crear un payment intent. Cuando el cliente paga, los fondos se envían automáticamente a la wallet de ese vendedor concreto.</li>
<li class=""><strong>Valores por defecto:</strong> para configuraciones más simples, omite la dirección y deja que los fondos se liquiden en la dirección por defecto de tu cuenta.</li>
<li class=""><strong>Comisiones divididas:</strong> ¿gestionas una plataforma? Define un porcentaje de comisión en tus claves de API. Ganas tu parte en cada transacción, calculada de forma visible en el checkout y enviada automáticamente a tu propia dirección de retiro.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-next-on-the-roadmap">¿Qué sigue en la hoja de ruta?<a href="https://docs.orcarail.com/es/blog/orcarail-born/#whats-next-on-the-roadmap" class="hash-link" aria-label="Enlace directo al ¿Qué sigue en la hoja de ruta?" title="Enlace directo al ¿Qué sigue en la hoja de ruta?" translate="no">​</a></h2>
<p>Esto es solo el primer día. A medida que crecemos, nuestro compromiso con un ecosistema abierto no hace más que crecer:</p>
<ol>
<li class=""><strong>Más cadenas compatibles:</strong> despliegue rápido de cadenas no EVM mediante la integración con Relay.</li>
<li class=""><strong>Autoalojado:</strong> despliega en tu propia infraestructura para tener soberanía y privacidad, sin comisión de software por transacción por nuestra parte.</li>
<li class=""><strong>Herramientas avanzadas de cumplimiento:</strong> campos de metadatos opcionales e integraciones para flujos KYT/KYC sin fricciones.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="try-it-feel-the-difference">Pruébalo: nota la diferencia<a href="https://docs.orcarail.com/es/blog/orcarail-born/#try-it-feel-the-difference" class="hash-link" aria-label="Enlace directo al Pruébalo: nota la diferencia" title="Enlace directo al Pruébalo: nota la diferencia" translate="no">​</a></h2>
<p>Te invitamos a comprobar lo fáciles que pueden ser los pagos cripto.</p>
<ul>
<li class="">🚀 <strong><a href="https://app.orcarail.com/" target="_blank" rel="noopener noreferrer" class="">Empieza a construir</a></strong>: crea una cuenta, genera una clave de API y crea tu primer enlace de pago en menos de dos minutos.</li>
<li class="">🎮 <strong><a href="https://demo.orcarail.com/" target="_blank" rel="noopener noreferrer" class="">Prueba la demo en vivo</a></strong>: prueba el flujo completo, desde la creación del intent hasta la confirmación por webhook.</li>
<li class="">📖 <strong><a href="https://docs.orcarail.com/" target="_blank" rel="noopener noreferrer" class="">Lee la documentación</a></strong>: explora nuestra referencia de API, las guías de los SDK y las descripciones de la arquitectura.</li>
</ul>
<p><em>El futuro debe ser abierto y transparente. Construyámoslo juntos.</em></p>
<hr>
<p><strong><a href="https://app.orcarail.com/" target="_blank" rel="noopener noreferrer" class="">App de OrcaRail</a></strong> · <strong><a href="https://github.com/orcarail/orcarail" target="_blank" rel="noopener noreferrer" class="">GitHub</a></strong> · <strong><a href="https://docs.orcarail.com/es/blog/orcarail-born/#" class="">X/Twitter</a></strong></p>]]></content:encoded>
            <category>Announcement</category>
            <category>Crypto</category>
            <category>Payments</category>
            <category>Open Source</category>
            <category>Multi-Chain</category>
            <category>Stablecoins</category>
            <category>Web3</category>
        </item>
    </channel>
</rss>