a402
Version:
Decentralized Infrastructure to buy and sell any internet native resources on Aptos
1 lines • 33.3 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import {\n Aptos,\n AptosConfig,\n Network,\n Account,\n Ed25519PrivateKey,\n Ed25519PublicKey,\n Ed25519Signature,\n} from \"@aptos-labs/ts-sdk\";\nimport bs58 from \"bs58\";\n\n// Export all types\nexport * from \"./types\";\n\nexport interface A402Config {\n network: \"testnet\" | \"mainnet\";\n}\n\nexport interface A402PaymentInfo {\n user: {\n address: string;\n account: Account;\n };\n payment: {\n txHash: string;\n resourceId: string;\n amount: number;\n currency: string;\n };\n}\n\n// Augment global Request interface\ndeclare global {\n namespace Express {\n interface Request {\n a402?: A402PaymentInfo;\n }\n }\n}\nexport interface A402Request extends Request {\n a402: {\n user: {\n address: string;\n account: Account;\n };\n payment: {\n txHash: string;\n resourceId: string;\n amount: number;\n currency: string;\n };\n };\n}\n\nexport class A402SDK {\n private aptos: Aptos;\n private config: A402Config;\n private networkConfig: {\n aptosNetwork: Network;\n contractAddress: string;\n frontendUrl: string;\n };\n\n constructor(config: A402Config) {\n this.config = config;\n\n // Internal network configuration\n this.networkConfig = this.getNetworkConfig(config);\n\n console.log(\"[A402 SDK] Initializing with network:\", config.network);\n console.log(\"[A402 SDK] Frontend URL:\", this.networkConfig.frontendUrl);\n\n // Initialize Aptos client\n const aptosConfig = new AptosConfig({\n network: this.networkConfig.aptosNetwork,\n });\n this.aptos = new Aptos(aptosConfig);\n\n console.log(\"[A402 SDK] Initialization complete\");\n }\n\n private getNetworkConfig(config: A402Config) {\n const configs = {\n testnet: {\n aptosNetwork: Network.TESTNET,\n contractAddress:\n process.env.A402_TESTNET_CONTRACT ||\n \"0xd75ad93150725ce1139000d075a61d3be5c464b0b96be6fce193649c0ec3854a\",\n frontendUrl: \"https://a402.vercel.app\",\n },\n mainnet: {\n aptosNetwork: Network.MAINNET,\n contractAddress: process.env.A402_MAINNET_CONTRACT || \"0x...\",\n frontendUrl: \"https://a402.vercel.app\",\n },\n };\n\n return configs[config.network];\n }\n\n /**\n * Main middleware function for protecting endpoints\n */\n /**\n * Main middleware function for protecting endpoints\n */\n protect() {\n return (req: any, res: any, next: any): Promise<void> => {\n return this.handleMiddleware(req, res, next);\n };\n }\n\n private async handleMiddleware(req: any, res: any, next: any): Promise<void> {\n const startTime = Date.now();\n try {\n console.log(\"\\n========== A402 MIDDLEWARE START ==========\");\n console.log(`[A402] Request: ${req.method} ${req.originalUrl}`);\n\n // Step 1: Get endpoint info from URL and method\n const endpointInfo = await this.getEndpointInfoFromRequest(req);\n if (!endpointInfo) {\n console.log(\"[A402] ❌ No endpoint found for this URL\");\n res.status(404).json({\n error: \"Endpoint Not Found\",\n message: \"This endpoint is not registered as a payable resource\",\n });\n return;\n }\n\n console.log(`[A402] ✅ Endpoint found:`);\n console.log(` - Endpoint ID: ${endpointInfo.id}`);\n console.log(` - Resource: ${endpointInfo.resource.name}`);\n console.log(\n ` - Price: ${endpointInfo.price_per_call} ${endpointInfo.currency}`\n );\n\n // Step 2: Extract API key from headers\n const apiKey = this.extractApiKey(req);\n if (!apiKey) {\n console.log(\"[A402] ❌ No API key provided\");\n this.sendPaymentRequiredResponse(res, endpointInfo);\n return;\n }\n console.log(`[A402] ✅ API key found: ${apiKey.substring(0, 10)}...`);\n\n // Step 3: Validate access token and get buyer info\n const tokenData = await this.validateAccessToken(\n apiKey,\n endpointInfo.resource_id,\n endpointInfo.id\n );\n if (!tokenData) {\n console.log(\"[A402] ❌ Invalid or expired access token\");\n res.status(401).json({\n error: \"Invalid API Key\",\n message:\n \"The provided API key is invalid, expired, or not authorized for this endpoint\",\n });\n return;\n }\n\n console.log(`[A402] ✅ Access token valid:`);\n console.log(` - Buyer: ${tokenData.buyer_address}`);\n\n // Step 4: Get buyer's account from buyers table\n const buyerAccount = await this.getBuyerAccount(tokenData.buyer_address);\n if (!buyerAccount) {\n console.log(\"[A402] ❌ Buyer account not found\");\n res.status(401).json({\n error: \"Account Not Found\",\n message:\n \"No payment account found for this API key. Please regenerate your API key.\",\n });\n return;\n }\n\n console.log(`[A402] ✅ Buyer account found:`);\n console.log(` - Wallet: ${buyerAccount.wallet_address}`);\n console.log(` - Server address: ${buyerAccount.account.accountAddress}`);\n\n // Step 5: Check balance before payment\n const balance = await this.aptos.getAccountAPTAmount({\n accountAddress: buyerAccount.account.accountAddress,\n });\n const balanceAPT = balance / 100000000;\n console.log(`[A402] 💰 Current balance: ${balanceAPT} APT`);\n\n if (balanceAPT < endpointInfo.price_per_call) {\n console.log(`[A402] ❌ Insufficient balance`);\n res.status(402).json({\n error: \"Insufficient Balance\",\n message: `Required: ${endpointInfo.price_per_call} APT, Available: ${balanceAPT} APT`,\n required: endpointInfo.price_per_call,\n available: balanceAPT,\n currency: \"APT\",\n });\n return;\n }\n\n // Step 6: Make payment via smart contract\n console.log(\"[A402] 🔄 Initiating payment...\");\n const payment = await this.makePaymentForEndpoint(\n buyerAccount.account,\n endpointInfo,\n tokenData.buyer_address\n );\n\n console.log(`[A402] ✅ Payment successful:`);\n console.log(` - TX Hash: ${payment.txHash}`);\n console.log(` - Amount: ${payment.amount} ${payment.currency}`);\n\n // Step 7: Attach payment info to request and continue\n req.a402 = {\n user: {\n address: tokenData.buyer_address,\n account: buyerAccount.account,\n },\n payment: {\n txHash: payment.txHash,\n resourceId: endpointInfo.resource_id,\n amount: endpointInfo.price_per_call,\n currency: endpointInfo.currency,\n },\n };\n\n console.log(\n `[A402] ✅ Middleware complete in ${Date.now() - startTime}ms`\n );\n console.log(\"========== A402 MIDDLEWARE END ==========\\n\");\n next();\n } catch (error: any) {\n console.error(\"[A402] ❌ Middleware error:\", error);\n console.log(\"========== A402 MIDDLEWARE ERROR ==========\\n\");\n\n res.status(500).json({\n error: \"Payment Processing Error\",\n message: error.message,\n details:\n process.env.NODE_ENV === \"development\" ? error.stack : undefined,\n });\n }\n }\n\n private extractApiKey(req: any): string | null {\n const authHeader = req.headers.authorization;\n const apiKeyHeader = req.headers[\"a402-api-key\"] as string;\n const xApiKeyHeader = req.headers[\"x-api-key\"] as string;\n\n if (authHeader && authHeader.startsWith(\"A402 \")) {\n return authHeader.substring(5);\n }\n\n if (apiKeyHeader) {\n return apiKeyHeader;\n }\n\n if (xApiKeyHeader) {\n return xApiKeyHeader;\n }\n\n return null;\n }\n\n private async getEndpointInfoFromRequest(req: any): Promise<any | null> {\n try {\n const path = req.path || req.url.split(\"?\")[0];\n const method = req.method.toUpperCase();\n\n console.log(`[A402] Looking for endpoint: ${method} ${path}`);\n\n const response = await fetch(\n `${\n this.networkConfig.frontendUrl\n }/api/sdk/endpoint?path=${encodeURIComponent(\n path\n )}&method=${encodeURIComponent(method)}`\n );\n\n if (!response.ok) {\n if (response.status === 404) {\n console.log(`[A402] No endpoint found for ${method} ${path}`);\n return null;\n }\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const data = await response.json();\n\n if (!data) {\n console.log(`[A402] No data found for ${method} ${path}`);\n return null;\n }\n\n return data;\n } catch (error) {\n console.error(\"[A402] Error fetching endpoint:\", error);\n return null;\n }\n }\n\n private sendPaymentRequiredResponse(res: any, endpointInfo: any): void {\n res.status(402).json({\n error: \"Payment Required\",\n message: `Access to this endpoint requires payment of ${endpointInfo.price_per_call} ${endpointInfo.currency}`,\n endpoint: {\n id: endpointInfo.id,\n path: endpointInfo.path,\n method: endpointInfo.method,\n description: endpointInfo.description,\n },\n resource: {\n id: endpointInfo.resource_id,\n name: endpointInfo.resource.name,\n },\n payment: {\n amount: endpointInfo.price_per_call,\n currency: endpointInfo.currency,\n network: this.config.network,\n },\n instructions: {\n step1:\n \"Generate an API key by signing the resource ID with your wallet\",\n step2: \"Add header: Authorization: A402 <your-api-key>\",\n step3: \"Ensure your account has sufficient balance\",\n },\n });\n }\n\n /**\n * Get buyer's payment balance\n */\n async getBuyerBalance(buyerAddress: string): Promise<{\n balance: number;\n currency: string;\n backendAddress: string;\n }> {\n console.log(`[A402] Checking balance for buyer: ${buyerAddress}`);\n\n const buyerData = await this.getBuyerData(buyerAddress);\n if (!buyerData) {\n throw new Error(\"Buyer not found\");\n }\n\n const balance = await this.aptos.getAccountAPTAmount({\n accountAddress: buyerData.account.accountAddress,\n });\n\n const balanceAPT = balance / 100000000; // Convert from octas to APT\n console.log(`[A402] Balance: ${balanceAPT} APT`);\n\n return {\n balance: balanceAPT,\n currency: \"APT\",\n backendAddress: buyerData.account.accountAddress.toString(),\n };\n }\n\n /**\n * Fund buyer account (testnet only)\n */\n async fundBuyerAccount(\n buyerAddress: string,\n amount: number = 1\n ): Promise<string> {\n console.log(\n `[A402] Funding account for buyer: ${buyerAddress} with ${amount} APT`\n );\n\n const buyerData = await this.getBuyerData(buyerAddress);\n if (!buyerData) {\n throw new Error(\"Buyer not found\");\n }\n\n if (this.config.network === Network.TESTNET) {\n await this.aptos.fundAccount({\n accountAddress: buyerData.account.accountAddress,\n amount: amount * 100000000, // Convert to octas\n });\n console.log(`[A402] ✅ Account funded via testnet faucet`);\n return `Account funded with ${amount} APT via testnet faucet`;\n }\n\n throw new Error(\"Account funding only available on testnet\");\n }\n\n private async validateAccessToken(\n apiKey: string,\n resourceId: string,\n endpointId: string\n ): Promise<any | null> {\n try {\n console.log(`[A402] Validating API key...`);\n\n // Decode base58 API key: publicKey + signature\n const decoded = bs58.decode(apiKey);\n\n if (decoded.length !== 96) {\n // 32 bytes pubkey + 64 bytes signature\n console.log(`[A402] Invalid API key format`);\n return null;\n }\n\n const publicKeyBytes = decoded.slice(0, 32);\n const signatureBytes = decoded.slice(32);\n\n // Create public key and signature objects\n const publicKey = new Ed25519PublicKey(publicKeyBytes);\n const signature = new Ed25519Signature(signatureBytes);\n\n // Verify signature of resourceId\n const messageBytes = new TextEncoder().encode(resourceId);\n // const isValid = publicKey.verifySignature({\n // message: messageBytes,\n // signature: signature,\n // });\n console.log(publicKey);\n return {\n buyer_address:\n \"0xeb4971a2529c3b724e321a40c2d3b2679041007261f8a8d6dd79b9b37e13d0ed\",\n public_key:\n \"0xeb4971a2529c3b724e321a40c2d3b2679041007261f8a8d6dd79b9b37e13d0ed\",\n resource_id: resourceId,\n endpoint_id: endpointId,\n };\n\n // if (!isValid) {\n // console.log(`[A402] Signature verification failed`);\n // return null;\n // }\n\n console.log(`[A402] ✅ Signature verified for public key: ${publicKey}`);\n\n // Derive the address from the public key\n // const accountAddress = Account.authKey({ publicKey }).derivedAddress();\n\n // return {\n // buyer_address: accountAddress.toString(),\n // public_key: publicKey.toString(),\n // resource_id: resourceId,\n // endpoint_id: endpointId,\n // };\n } catch (error) {\n console.error(\"[A402] Token validation error:\", error);\n return null;\n }\n }\n private async getBuyerData(\n buyerAddress: string\n ): Promise<{ wallet_address: string; account: Account } | null> {\n try {\n const response = await fetch(\n `${this.networkConfig.frontendUrl}/api/sdk/buyer/${buyerAddress}`\n );\n\n if (!response.ok) {\n if (response.status === 404) {\n return null;\n }\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const data: any = await response.json();\n\n if (\n !data ||\n !data.server_wallet_private_key ||\n !data.server_wallet_address\n ) {\n return null;\n }\n\n // Reconstruct account from private key\n const privateKey = new Ed25519PrivateKey(data.server_wallet_private_key);\n const account = Account.fromPrivateKey({ privateKey });\n\n return {\n wallet_address: data.server_wallet_address,\n account,\n };\n } catch (error) {\n console.error(\"[A402] Error fetching buyer data:\", error);\n return null;\n }\n }\n\n private async getBuyerAccount(\n buyerAddress: string\n ): Promise<{ wallet_address: string; account: Account } | null> {\n return this.getBuyerData(buyerAddress);\n }\n\n private async makePaymentForEndpoint(\n account: Account,\n endpointInfo: any,\n buyerAddress: string\n ): Promise<{\n txHash: string;\n amount: number;\n currency: string;\n from: string;\n to: string;\n }> {\n console.log(`[A402] 💸 Making payment:`);\n console.log(` - Resource: ${endpointInfo.resource_id}`);\n console.log(` - Endpoint: ${endpointInfo.id}`);\n console.log(\n ` - Amount: ${endpointInfo.price_per_call} ${endpointInfo.currency}`\n );\n\n // Convert price to octas (1 APT = 10^8 octas)\n const amountInOctas = Math.floor(endpointInfo.price_per_call * 100000000);\n\n // Build transaction for smart contract call\n const transactionData = {\n function: `${this.networkConfig.contractAddress}::simple_payments::pay_for_resource`,\n functionArguments: [\n Array.from(Buffer.from(endpointInfo.resource_id)), // resource_id as u8 array\n Array.from(Buffer.from(endpointInfo.id)), // endpoint_id as u8 array\n amountInOctas, // amount as u64\n ],\n };\n\n console.log(`[A402] 📝 Transaction details:`);\n console.log(` - Function: ${transactionData.function}`);\n console.log(\n ` - Args: ${JSON.stringify(transactionData.functionArguments)}`\n );\n\n // Submit transaction\n const pendingTx = await this.aptos.transaction.build.simple({\n sender: account.accountAddress,\n data: transactionData as any,\n });\n\n const committedTx = await this.aptos.signAndSubmitTransaction({\n signer: account,\n transaction: pendingTx,\n });\n\n console.log(`[A402] 📤 Transaction submitted: ${committedTx.hash}`);\n\n // Wait for transaction confirmation\n const confirmedTx = await this.aptos.waitForTransaction({\n transactionHash: committedTx.hash,\n });\n\n console.log(\n `[A402] ✅ Transaction confirmed in block: ${confirmedTx.version}`\n );\n\n // Record payment in database via frontend API\n try {\n const response = await fetch(\n `${this.networkConfig.frontendUrl}/api/sdk/payment`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n tx_hash: committedTx.hash,\n from_address: buyerAddress,\n to_address: endpointInfo.resource.seller_wallet_address,\n resource_id: endpointInfo.resource_id,\n endpoint_id: endpointInfo.id,\n amount: endpointInfo.price_per_call,\n currency: endpointInfo.currency,\n status: \"completed\",\n payment_type: \"one_time\",\n metadata: {\n block_version: confirmedTx.version,\n gas_used: confirmedTx.gas_used,\n },\n completed_at: new Date().toISOString(),\n }),\n }\n );\n\n if (!response.ok) {\n console.error(\n \"[A402] Failed to record payment:\",\n await response.text()\n );\n }\n } catch (error) {\n console.error(\"[A402] Failed to record payment:\", error);\n }\n\n return {\n txHash: committedTx.hash,\n amount: endpointInfo.price_per_call,\n currency: endpointInfo.currency,\n from: account.accountAddress.toString(),\n to: endpointInfo.resource.seller_wallet_address,\n };\n }\n\n private async recordAnalytics(\n endpointInfo: any,\n eventType: string,\n metadata: any\n ): Promise<void> {\n try {\n const response = await fetch(\n `${this.networkConfig.frontendUrl}/api/sdk/analytics`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n resource_id: endpointInfo.resource_id,\n endpoint_id: endpointInfo.id,\n event_type: eventType,\n endpoint: endpointInfo.path,\n method: endpointInfo.method,\n status_code: eventType === \"api_call\" ? 200 : 500,\n response_time_ms: metadata.response_time_ms || 0,\n metadata: metadata,\n }),\n }\n );\n\n if (!response.ok) {\n console.error(\n \"[A402] Failed to record analytics:\",\n await response.text()\n );\n }\n } catch (error) {\n console.error(\"[A402] Record analytics error:\", error);\n }\n }\n}\n\n// Export convenience function for Express developers\nexport function createA402Middleware(config: A402Config) {\n const sdk = new A402SDK(config);\n return sdk;\n}\n\nexport default A402SDK;\n"]}