Usamos zkLogin para firmar PTBs sin seed phrases ni gas; también puedes usar wallets EVM para iniciar CCTP.
typescriptimport { getZkLoginSession, buildPtbProof } from '@/app/lib/chain-abstraction'; async function handleCryptoPayment(ptbChallenge: string, orderId: string) { // 1. Obtener sesión zkLogin o dirección EVM const session = await getZkLoginSession(); // 2. Construir prueba PTB (seedless, gasless) const chainProof = await buildPtbProof({ ptbChallenge, address: session.address, network: 'sui', }); // 3. Enviar claim al AgentBE/PayBE const res = await fetch(`/api/orders/${orderId}/claim`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ paymentType: 'crypto', chainProof, }), }); return res.json(); }
Prepara la ruta CCTP desde Base/OP/Arbitrum para acuñar USDC en Sui/Arc.
typescriptimport { prepareBridgeRoute } from '@/app/lib/chain-abstraction'; async function ensureRoute(orderId: string, sourceChain: 'base' | 'optimism' | 'arbitrum') { // Prepara la ruta EVM → Sui usando CCTP const route = await prepareBridgeRoute({ orderId, sourceChain }); console.log('Route ready:', route.attestationId); return route; }