Machine Payments Protocol Solanassa

Machine Payments Protocol (MPP) soveltaa HTTP-todennuksen semantiikkaa maksuihin. Palvelin esittää haasteen maksamattomalle pyynnölle, asiakas palauttaa maksutunnistetiedon ja palvelin palauttaa kuitin hyväksyttyään maksun.

MPP erottaa toisistaan kolme asiaa:

  • Intentti kuvaa kaupallisen vuorovaikutuksen, kuten kertaluonteisen charge-veloituksen tai mitatun session-istunnon.
  • Maksutapa kuvaa, miten arvo siirtyy. Solana-maksutapa tukee veloituksissa natiivia SOLia ja SPL-tokeneita.
  • HTTP-kuljetus välittää haasteet, tunnistetiedot, kuitit ja virheet.

MPP julkaistaan Internet-Draft-luonnosten joukkona. Pidä voimassa olevia määrityksiä ensisijaisena totuuden lähteenä ja varaudu siihen, että yksityiskohdat muuttuvat luonnosten ollessa vielä työn alla.

HTTP-viestintä

MPP käyttää tavallisia HTTP-todennuskenttiä protokollakohtaisten maksuotsikoiden sijaan:

ViestiHTTP-esitys
Maksuhaaste402 Payment Required ja WWW-Authenticate: Payment ...
MaksutunnistetietoUudelleenlähetetty pyyntö, jossa on Authorization: Payment ...
Onnistunut kuittiResurssin vastaus, jossa on Payment-Receipt: ...
Virheelliset maksutiedotProblem Details -runko, jossa käytetään application/problem+json-tyyppiä
MPP Charge Flow

Haaste sisältää palvelimen luoman tunnisteen, realmin, maksutavan, intentin, koodatun maksupyynnön ja vanhenemisajan. Tunnistetieto toistaa haasteen ja lisää siihen maksutapakohtaisen maksutodisteen. Palvelimen on tarkistettava molemmat osat; voimassa oleva siirto, joka kuuluu toiseen haasteeseen, ei saa avata resurssia.

Kertaluonteiset Solana-veloitukset

Solanan charge-intentti tukee kahta tunnistetietotyyppiä:

  • Pull-tila käyttää allekirjoitettua transaktiota. Asiakas allekirjoittaa siirron ja lähettää transaktion palvelimelle. Palvelin vahvistaa sen, lisää tarvittaessa verojen maksajan allekirjoituksen, lähettää transaktion verkkoon, odottaa vahvistuksen ja palauttaa transaktion allekirjoituksen kuitissaan.
  • Push-tila käyttää transaktion allekirjoitusta. Asiakas lähettää transaktion ensin verkkoon ja lähettää sitten vahvistetun allekirjoituksen palvelimelle. Palvelin hakee ja vahvistaa transaktion ennen resurssin palauttamista.

Pull-tila mahdollistaa palvelimen sponsoroimat transaktiomaksut ja palvelinpuolen uudelleenyrityslogiikan. Push-tila on hyödyllinen, kun lompakko edellyttää asiakkaan lähettävän oman transaktionsa, mutta se ei voi käyttää palvelimen maksusponsorointia.

Normatiiviset kentät ja vahvistussäännöt löytyvät Solana charge -määrityksestä.

MPP-veloituksen lisääminen Express-rajapintaan

Solana Pay Kit tarjoaa ajantasaisen TypeScript-integraation MPP:lle ja x402:lle. Asenna se Expressin kanssa:

pnpm add @solana/pay-kit @solana/kit@^6.9.0 express
pnpm add --save-dev @types/express tsx

Tämä pienin mahdollinen esimerkki käyttää isännöityä Surfpool-hiekkalaatikkoa ja paketin julkista demo-vastaanottajaa. Se on tarkoitettu vain paikalliseen kehitykseen:

import express from "express";
import { createPayKit, usd } from "@solana/pay-kit";
const pay = await createPayKit({
accept: ["mpp"],
rpcUrl: "https://402.surfnet.dev:8899"
});
const app = express();
app.get("/report", pay.express(usd("0.01")), (_req, res) => {
res.json({ report: "Paid report" });
});
app.listen(4567, () => {
console.log("Paid API listening on http://127.0.0.1:4567");
});

Suorita se ja vertaa maksamatonta pyyntöä maksun huomioivaan pyyntöön:

pnpm tsx server.ts
curl -i http://127.0.0.1:4567/report
pay --sandbox curl http://127.0.0.1:4567/report

Reitinkäsittelijä suoritetaan vasta, kun väliohjelmisto on hyväksynyt maksun.

Korvaa kaikki hiekkalaatikon oletusarvot tuotannossa

Määritä eksplisiittinen verkko, kauppiaan vastaanottaja, oma RPC, vakaa haasteeseen sidottu salaisuus, tuotantoallekirjoittaja ja pysyvä uudelleentoistojen tallennus. Älä koskaan ohjaa oikeita maksuja paketin demoallekirjoittajalle.

Mitatut istunnot

Käytä Solanan MPP-session-istuntoa, kun asiakas tekee paljon pieniä, toisiinsa liittyviä maksuja. Istunto avaa ketjussa olevan maksukanavan, jolla on enimmäistalletus, ja käyttää sitten kumulatiivisia allekirjoitettuja vouchereita käytön kasvaessa. Palvelin voi vahvistaa voucherit ketjun ulkopuolella ja suorittaa suurimman hyväksytyn summan selvityksen myöhemmin.

Tämä sopii tokenimitattuun inferenssiin, tavumitattuihin latauksiin, reaaliaikaiseen dataan ja toistuviin työkalukutsuihin. Se ei ole sama asia kuin erillisen ketjussa tehtävän maksun lähettäminen jokaisesta tapahtumasta.

MPP Session Lifecycle

Kutsu istuntoa nimellä istuntomaksu, maksukanava tai ylärajattu toistuva valtuutus. Käytä nimitystä suoratoistomaksu vain, kun palvelu ja maksusopimus mittaavat todella käytön virtaa.

Tuotantovahvistus

Jokaisen Solana-veloituksen kohdalla palvelimen on vahvistettava vähintään seuraavat:

  • Haaste on aito, voimassa oleva, sidottu tähän pyyntöön ja tarkoitettu tälle realmille.
  • Transaktio käyttää odotettua verkkoa, omaisuuserää tai mintiä, vastaanottajaa, summaa ja Token Programia.
  • Kaikki verojen maksajaa tai associated token account -tilejä koskevat ohjeet on sallittu nimenomaisesti, eivätkä ne voi tyhjentää palvelimen allekirjoittajaa.
  • Transaktio onnistui vaaditulla vahvistustasolla.
  • Transaktion allekirjoitusta ei ole jo käytetty.
  • Uudelleentoistotarkistus ja käyttöönotto ovat atomisia kaikissa palvelininstansseissa.

Tallenna istunnoissa lisäksi kanavan tila, hyväksytty kumulatiivinen summa ja selvityksen vesileima jaettuun tallennustilaan. Dokumentoi, miten asiakkaat saavat käyttämättömät varat takaisin, jos palvelin ei ole saatavilla.

Aiheeseen liittyvät resurssit

Is this page helpful?

Sisällysluettelo

Muokkaa sivua
© 2026 Solana Foundation. Kaikki oikeudet pidätetään.