🤖 신간: 『 Quicknode AI Cookbook』 AI 코딩을 위한 검증된 레시피 10가지 agents.
레시피 보기SOC 2 Type II 인증 · ISO 27001
x402 그리고 MPP: 작동 원리와 다른 점
x402 와 Tempo의 HTTP 402 기반 API 결제용 MPP를 비교해 보세요. 여기에는 프로토콜 설계, 결제 방법, 사용량 기반 과금 대 세션 기반 과금, 정산 및 영수증 처리 등이 포함되며, Quicknode의 x402 SDK 또는 M2M(Machine-to-Machine) 및 RPC 워크플로우용 MPP endpoint 와 함께 각각을 언제 사용해야 하는지도 확인해 보세요.

2026년 3월 29일 — 읽는 데 10분 소요

x402 누군가 API 키 대신 지갑을 통해 서비스나 API 요금을 결제하고자 할 때마다 항상 거론되는 이름입니다.
최근 Tempo 에서 MPP(Machine Payments Protocol)를 공개했으며, 이제 설계 철학이 다른 두 번째 옵션이 등장했습니다. 이 두 프로토콜은 자주 비교되고 있습니다. 둘 다 HTTP를 기반으로 합니다. 402 결제 필요, 하지만 이들은 서로 다른 계층에서 서로 다른 문제를 해결합니다.
각 방식이 어떻게 작동하는지, ‘ Quicknode ’의 도구가 어디에 활용되는지, 그리고 선택할 때 실제로 고려해야 할 장단점에 대해 알아보겠습니다.
x402 Quicknode 에서는 지갑만 있으면 RPC 엔드포인트에 요청을 보낼 수 있습니다. 계정, API 키, 구독이 필요하지 않습니다. USDC( , , ) 또는 USDG( )로 결제하고 바로 호출을 시작하세요. Quicknode Base Polygon SolanaX Layer
Tempo 의 MPP는 모든 API를 통해 기기 간 결제를 지원하는 프로토콜입니다. 이 프로토콜은 자체적인 챌린지/인증 정보/영수증 체계 flow 를 갖추고 있으며, 다양한 결제 수단(Tempo 스테이블코인, Stripe 카드, 라이트닝)을 지원하고, RPC와 같은 고주파수 계량 청구를 위한 세션 모델을 포함하고 있습니다.
Quicknode 다음 두 가지 모두에 사용할 수 있는 공구를 제공합니다: @Quicknode/x402 그리고 @Quicknode/x402-solana x402 용, 그리고 MPP와 호환되는 endpoint 는 https://mpp.quicknode.com/ 다음과 함께 사용하기 위한 mpp SDK.
x402 Coinbase에서 처음 제안된 개방형 표준으로, HTTP를 통해 402 수십 년 동안 “향후 사용을 위해 유보”되어 온 사양이 마침내 구체화되었다.
이dea는 간단합니다. 서버가 다음과 같이 응답합니다. 402 결제 필요, 클라이언트는 결제 요건을 확인하고 스테이블코인 승인서에 서명한 뒤 요청을 다시 시도하면, 서버는 결제를 처리하고 리소스를 반환합니다. 이 모든 과정이 동일한 HTTP 교환 내에서 이루어집니다.
Quicknode x402 를 사용하여 RPC 인프라에 대한 지갑 인증 기반 액세스를 제공합니다. 계정을 별도로 생성할 필요는 없습니다. USDC가 들어 있는 지갑을 연결하기만 하면, 클라이언트 라이브러리가 인증, 결제 처리, 세션 관리 등 나머지 모든 과정을 처리합니다. Quicknode
두 가지 오픈소스 패키지:
@quicknode/x402 – Quicknode x402 프록시를 통해 JSON-RPC, REST, gRPC-Web 및 WebSocket을 지원하는 멀티체인 클라이언트
@quicknode/x402-solana – Solana Kit 및 Kite에 연동되는 Solana 전용 클라이언트
이 클라이언트는 다음과 같은 결제 방식을 지원합니다:
요청당 과금 – 호출당 0.001달러, 인증 및 세션 불필요. 가장 간단한 방법입니다.
신용 한도 인출 – SIWX(Sign-In with X)로 한 번 인증한 후, USDC로 크레딧 번들을 구매하고, 이후 각 요청 시 해당 크레딧을 사용합니다. 지속적인 사용 시 비용 효율성이 더 높습니다.
한 가지 주목할 점은, 결제 네트워크가 RPC 네트워크와 분리되어 있다는 것입니다. 예를 들어, Base Sepolia에서 USDC로 결제하면서 동시에 Ethereum ,mainnet, Solana, Aptos, Flow 또는 지원되는 140개 이상의 블록체인 네트워크 중 어느 곳에서든 쿼리를 실행할 수 있습니다. 지갑과 인증 방식은 동일합니다. flow.
다음 기능을 사용하는 클라이언트 @quicknode/x402 먼저 Quicknode x402 프록시에 리소스를 요청(RPC, REST, gRPC-Web 또는 WebSocket 등)하고, 402 결제 필요 응답. 그런 다음 클라이언트는 SIWX 인증을 수행하고, JWT 세션 토큰을 수신한 뒤 결제 인증 정보를 제출합니다. 프록시는 해당 인증 정보를 x402 중개자에게 전송하여 결제를 검증 및 처리한 후, 확인이 완료되면 크레딧을 충전합니다. 클라이언트는 세션 토큰을 사용하여 원래 요청을 재시도합니다. 프록시는 이를 상류 Quicknode 인프라로 전달하고, 응답을 수신한 뒤 클라이언트에게 200 OK를 반환하며, 이 과정에서 크레딧 1개를 소모합니다.
MPP(Machine Payments Protocol)는 보다 포괄적인 접근 방식을 취합니다. x402 가 개별 엔드포인트의 수익화 수단으로 시작된 반면, MPP는 HTTP를 통해 어떤 기계가 다른 기계에 대금을 지불하는 방식을 표준화하고자 합니다.
이 프로토콜은 HTTP 인증 프레임워크를 직접 사용합니다:
WWW-Authenticate: 결제 402 응답에 포함된 정보는 클라이언트에게 어떤 결제가 필요한지 알려줍니다
승인: 결제 재시도 시에는 결제 증빙 자료를 지참해야 합니다
지불 영수증 200 응답 코드는 서버가 결제를 수락했음을 나타냅니다
이 문서는 IETF 인터넷 초안 ( Tempo Labs 및 Stripe가 작성)으로, 단순한 SDK 관행에 그치지 않고 실제 표준으로 정립하기 위해 추진 중인 것입니다.
MPP는 지불 방식 과 지불 유형을 구분합니다:
“방법”이란 결제 경로를 의미합니다: tempo ( Tempo 블록체인의 스테이블코인), 줄무늬 (카드), 번개 (Bitcoin), 또는 사용자 지정.
“의도”란 청구 패턴을 의미합니다: 요금 (요청당 1회) 또는 세션 (채널 기반 종량제).
이 점이 중요한 이유는 서로 조합하여 사용할 수 있기 때문입니다. 단일 API( endpoint )는 Tempo 스테이블코인과 Stripe 카드 모두를 수용할 수 있습니다. 서버는 402 챌린지에서 모든 옵션을 알리고, 클라이언트는 자신이 지원하는 옵션을 선택합니다.
특히 Tempo 의 경우, 세션 ‘intent’가 흥미로운 부분입니다. 클라이언트는 요청마다 온체인 거래를 처리하는 대신, 에스크로 계약에 자금을 예치한 뒤 자원을 소비할 때마다 오프체인 바우처를 서명합니다. 서버는 각 바우처를 단일 ecrecover 호출; RPC도, DB 조회도 없이 오직 CPU만 사용됩니다. 정산은 서버가 채널을 닫기로 결정할 때마다 일괄 처리됩니다. 토큰별 LLM 과금과 같은 경우, 매 청크마다 온체인에서 결제하는 것보다 이 방식이 훨씬 실용적입니다.
MPP에서 요금 flow, 한 mppx 클라이언트가 MPP 서비스에 리소스를 요청하고 다음을 수신합니다. 402 다음과 같은 응답을 WWW-Authenticate: 결제 과제. 그런 다음 클라이언트는 선택한 백엔드를 통해 결제를 완료하고(예: 트랜잭션 서명 또는 청구서 결제), 동일한 요청을 다시 시도하며 Authorization: Payment <credential>, 그리고 서비스는 백엔드에서 해당 자격 증명을 확인합니다. 확인이 성공하면, 서비스는 리소스를 반환하며 200 OK 그리고 다음을 포함하며, 지불 영수증.
MPP에서 세션 flow Tempo 채널의 경우, 클라이언트는 먼저 에스크로 계약에 자금을 예치하여 채널을 개설한 다음, 서비스 접근을 요청합니다. 서비스는 세션 바우처를 요청하고, 클라이언트는 서명된 누적 오프체인 바우처로 응답합니다. 서비스는 다음을 사용하여 로컬에서 바우처를 검증합니다. Tempo ecrecover 그리고 응답을 반환하기 전에 증분 금액을 확인합니다. 이 바우처 업데이트 주기는 사용 중에 높은 빈도로 반복되며, 이후 서비스는 일괄 정산을 통해 온체인에서 채널을 종료하고, 그 후 미사용 예치금은 클라이언트에게 환불됩니다.
x402 | MPP | |
|---|---|---|
출처 | 코인베이스, 오픈소스 사양 | Tempo Labs + Stripe, IETF 인터넷 초안 |
와이어 형식 | 사용자 정의 헤더 (X-PAYMENT-*) | 표준 HTTP 인증 방식 (WWW-Authenticate: Payment, Authorization: Payment, Payment-Receipt) |
결제 방법 | 스테이블코인 | 기타: Tempo 스테이블코인, Stripe 카드, 라이트닝 BTC, 사용자 지정 |
에서 요청당 과금 mode, SIWX도, JWT도, 세션 상태도 전혀 없습니다. 각 요청은 독립적으로 처리됩니다.
프록시는 업스트림 호출이 성공한 후에만 결제를 처리합니다. RPC 호출에 오류가 발생하면 요금을 지불할 필요가 없습니다.
다음과 같이 설정할 수 있습니다. preAuth: true 신용 한도 인출 시 mode 에서 첫 번째 402 오류가 발생하기 전에 클라이언트 생성 시 인증을 수행합니다. 이를 통해 왕복 통신 횟수를 줄일 수 있습니다.
gRPC-웹과 WebSocket은 모두 작동하지만, JWT 세션에 의존하기 때문에 크레딧 차감 모델이 필요합니다. 자세한 내용은 다음을 참조하세요.
402 이는 결제 관련 오류에만 해당됩니다. 클라이언트의 인증에 실패하면 서버는 401 . 결제가 완료되었지만 특정 정책으로 인해 접근이 차단된 경우, 이는 403 . 이러한 구분은 사양서에 명시되어 있습니다.
서버는 여러 개를 반환할 수 있습니다. WWW-Authenticate: 결제 서로 다른 결제 방식을 지원하는 헤더. 하나의 ‘ endpoint ’는 ‘ Tempo ’, ‘Stripe’, ‘Lightning’을 동시에 처리할 수 있습니다. 클라이언트가 그중 하나를 선택합니다.
mode 세션에서, 지불 영수증 여기에는 트랜잭션 해시가 아닌 채널 ID가 포함되어 있습니다. 채널이 종료될 때 온체인 트랜잭션 해시를 확인할 수 있습니다.
MPP는 AI 도구 호출을 위해 MCP(Model Context Protocol) 위에서도 작동합니다. 해당 전송 프로토콜에서 402는 JSON-RPC 오류 코드에 대응합니다. 32042 , 그리고 증명서나 영수증은 여기에 넣으세요 _meta HTTP 헤더 대신 필드.
Quicknode 의 MPP 프록시, 가격, 경로, 세션 대 청구 인텐트, 지원되는 네트워크 및 클라이언트 설정에 대한 자세한 ‘ endpoint ’ 정보는 다음을 참조하십시오.
Quicknode 둘 다 지원합니다. 어느 쪽도 계정이 필요하지 않습니다. 선택은 agent/application이 어떤 다른 서비스와 연동되는지에 따라 결정됩니다.
블록체인 데이터 접근이 주된 목적이라면 x402 을 이용하세요. 이 @quicknode/x402 클라이언트는 JSON-RPC, gRPC-Web 및 WebSocket 전송 프로토콜, 크레딧 번들 청구 방식, 그리고 다음을 통한 Solana Kit 연동 기능을 제공합니다. @quicknode/x402-solana. 이는 Quicknode 에서 자사의 x402 프록시를 위해 특별히 구축한 자체 라이브러리입니다.
agent 가 여러 서비스에 대한 비용을 지불하는 경우, RPC용 Quicknode , 추론을 위한 LLM 제공업체, 검색을 위한 검색 API 등이 있습니다. MPP를 사용하면 이 모든 서비스에 대해 단일 프로토콜과 지갑을 사용할 수 있습니다. Quicknode 의 MPP endpoint 에서 https://mpp.quicknode.com/ 다음과 동일하게 작동합니다 mppx 다른 MPP 지원 서비스를 호출할 때 사용하는 클라이언트입니다.
둘 다 사용할 수 없는 이유는 없습니다. 인프라 계층에는 x402 를, 그 위에 구축하는 API에는 MPP를 사용하면 됩니다.
import { createQuicknodeX402Client } from '@quicknode/x402'
// Initialize x402 client for Base Sepolia
// Wallet needs testnet USDC — get it via POST /auth (SIWE) then POST /drip
const client = await createQuicknodeX402Client({
baseUrl: 'https://x402.quicknode.com',
network: 'eip155:84532',
evmPrivateKey: process.env.PRIVATE_KEY as `0x${string}`,
preAuth: true,
})
// Make a paid RPC call — payment is handled automatically
const res = await client.fetch('https://x402.quicknode.com/base-sepolia', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'eth_blockNumber',
params: [],
}),
})
// Print the result
console.log(await res.json())import { createSolanaX402Clients } from "@Quicknode/x402-solana"
import { address } from "@solana/kit"
import { homedir } from "node:os"
const { rpc } = await createSolanaX402Clients(
"mainnet",
`${homedir()}/.config/solana/id.json`,
)
const balance = await rpc
.getBalance(address("dDCQNnDmNbFVi8cQhKAgXhyhXeJ625tvwsunRyRc7c8"))
.send()
console.log("Balance:", balance.value)mppx CLI# create a wallet (stored in keychain)
npx mppx account create
# charge intent — $0.001/request, one on-chain tx per request
npx mppx -X POST -H 'Content-Type: application/json' \\
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' \\
<https://mpp.quicknode.com/base-sepolia>
# session intent — $0.00001/request, off-chain vouchers
npx mppx -X POST -H 'Content-Type: application/json' \\
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' \\
<https://mpp.quicknode.com/session/base-sepolia>import { Mppx, tempo } from 'mppx/client'
import { privateKeyToAccount } from 'viem/accounts'
const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`)
// Polyfills globalThis.fetch — handles 402 challenges automatically
Mppx.create({
methods: [tempo({ account })],
})
// Charge intent ($0.001/req) — payment is transparent
const res = await fetch('https://mpp.quicknode.com/base-sepolia', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'eth_blockNumber',
params: [],
}),
})
const { result } = await res.json()
console.log('Block number:', BigInt(result))import { Mppx, tempo } from 'mppx/client'
import { privateKeyToAccount } from 'viem/accounts'
const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`)
// deposit 0.10 PathUSD into a payment channel
// first request opens the channel on-chain, subsequent ones use off-chain vouchers
Mppx.create({
methods: [tempo({ account, deposit: '0.10' })],
})
const res = await fetch('https://mpp.quicknode.com/session/base-sepolia', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'eth_blockNumber',
params: [],
}),
})
console.log(await res.json())x402 그리고 MPP는 서로 밀접한 관련이 있으며, HTTP를 통해 유료 API 액세스를 제공하는 동일한 핵심 문제를 해결합니다.
Quicknode 의 RPC 프록시 기능의 경우, 두 가지 방식 중 어느 것이나 사용할 수 있습니다. 실질적인 차이는 구현 방식에 있습니다. x402 는 촉진자(facilitator) 모델에 의존하는 반면, MPP는 이러한 의존성을 제거하고 flow 를 공식적인 HTTP 인증 체계로 정의합니다.
2017년에 설립된 Quicknode 은 개발자와 기업을 위해 엔터프라이즈급 블록체인 인프라를 제공합니다. 99.99%의 가동률과 75개 이상의 체인을 지원함으로써, 팀들은 타협 없이 온체인 애플리케이션을 구축하고 확장할 수 있습니다.
최신 엔지니어링 인사이트, 제품 업데이트, 웹3 뉴스를 여러분의 이메일로 바로 받아보세요.
다중 방법론에 따른 endpoint | 아니요. 요청당 하나의 계획만 가능합니다. | 네. 서버는 하나의 402 응답에 여러 가지 방법을 제시할 수 있으며, 클라이언트는 그중 하나를 선택합니다. |
청구 패턴 | 프로토콜 수준에서만 요청별로 적용됨 | 요청당(요금) 및 사용량 기반(세션)을 별개의 의도(intent)로 구분 |
세션/채널 지원 | 프로토콜 자체에는 포함되어 있지 않습니다. 구현체에서 자체적으로 추가합니다(예: 크레딧 시스템). | Native. session intent는 오프체인 바우처를 사용하고 온체인 결제를 일괄 처리하는 결제 채널을 활용합니다. |
정산 모델 | 중개자는 클라이언트와 서버 간의 각 결제를 확인하고 처리합니다. | 요금: 요청 시마다 정산됩니다. 세션: 서버가 자체 일정에 따라 채널을 종료합니다. |
영수증 / 증빙 자료 | 진행자 확정 | 참조 번호, 금액, 자산, 지급인이 포함된 영수증 본문을 가진 지급-영수증 헤더 |
상태 코드의 의미 | 결제 필요: 402 | 명시적 구분: 402 = 결제 필요, 401 = 인증 실패, 403 = 정책에 따른 거부 |
교통 | HTTP | HTTP, MCP (JSON-RPC 오류 -32042 + _meta 필드) |
체인 지원 | EVM, Solana | Tempo 체인( tempo 메서드용) 및 비블록체인 기반 결제 수단(Stripe, Lightning) |
표준화 트랙 | 오픈소스 저장소, 공식 표준 기구 없음 | IETF 인터넷 초안 |