Miten maksut toimivat Solanassa

Ennen kuin rakennat maksuvirrat Solanaan, sinun on ymmärrettävä viisi peruskäsitettä: lompakot, vakauskolikot, token-tilit, maksut ja transaktiot. Solanan maksut vastaavat selkeästi monen valuutan maksujärjestelmiä:

Perinteinen maksumalliSolanaKuvaus
Asiakastunnus / TilinumeroLompakon osoiteTilinomistajan yksilöllinen tunniste
Valuutta (USD, EUR)Token mint (USDG, USDC)Siirrettävän omaisuuden tyyppi
Saldo valuutoittainToken-tili (ATA)Sisältää tietyn valuutan/mintin saldon

Aivan kuten pankkiasiakkaalla on yksi identiteetti mutta erilliset saldot kullekin valuutalle, Solana-lompakolla on yksi osoite mutta erillinen token-tili jokaiselle omaisuudelle, jota se pitää hallussaan. Käydään läpi jokainen komponentti.

Lompakot: lähettäjät ja vastaanottajat

Jokaisessa maksussa on kaksi osapuolta, joista kumpikin tunnistetaan lompakon osoitteella – yksilöllisellä 32-tavuisella julkisella avaimella (esim. 7EcDhS...).

  • Lähettäjä: Maksun aloittava lompakko. Sillä on oltava riittävä vakauskolikkotilin saldo ja sen on allekirjoitettava transaktio.
  • Vastaanottaja: Kohdelompakko. Ei tarvitse allekirjoittaa eikä sillä tarvitse olla olemassa olevaa saldoa.
  • Maksun maksaja: Valinnainen maksun maksajalompakko. Voidaan käyttää tukemaan tai mahdollistamaan pelkästään vakauskolikoilla tehtäviä transaktioita käyttäjien välillä.

Ajattele lompakon osoitteita kuin pankkitilinumeroita: julkisia, turvallisia jakaa ja välttämättömiä varojen lähettämiseen tai vastaanottamiseen.

Vakauskolikot

Vakauskolikoita kutsutaan "tokeneiksi" Solanassa. Tokenit edustavat omaisuustyyppiä verkossa. Jokaisella tokenilla on yksilöllinen tunniste, jota kutsutaan "mint-osoitteeksi". Kun rakennat maksujärjestelmiä, viittaat näihin mint-osoitteisiin tunnistaaksesi omaisuuden, jonka kanssa olet vuorovaikutuksessa. Tässä on joitakin yleisiä vakauskolikkominttejä mainnetissä:

TokenLiikkeeseenlaskijaMint-osoite
USDCCircleEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
USDTTetherEs9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB
PYUSDPayPal2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo
USDGPaxos2u1tszSeqZ3qBWF3uNGPFc8TzMk2tdiwknnRMWGWjGWH

Lisätietoja Solanan stablecoineista löytyy Stablecoinit-ratkaisusivulta.

Maksuja vastaanottaessasi validoi aina mint-osoite ja Token Program. Tokeneilla voi olla sama nimi, mutta eri liikkeeseenlaskijat ja taustalla olevat varat.

Token accountit

Lompakot eivät säilytä tokeneita suoraan. Sen sijaan jokaisella lompakolla on valtuudet token accountiin jokaiselle sen hallussa olevalle tokentyypille. Maksut suoritetaan siirtämällä tokeneita lähettäjän token accountista vastaanottajan token accountiin, joka on samaa minttiä:

Token accountitToken accountit

Associated Token Account on deterministinen token account, joka on sidottu tiettyyn lompakkoon ja minttiin. Kun lompakon osoite ja mintti ovat tiedossa, ATA-osoite on aina sama.

  1. Yksi ATA per mintti. Lompakolla on täsmälleen yksi ATA USDC:lle, yksi USDT:lle jne.
  2. Täytyy olla olemassa ennen vastaanottamista. Et voi lähettää tokeneita ATA:han, jota ei ole olemassa.
  3. Lähettäjä tyypillisesti luo. Jos vastaanottajan ATA:ta ei ole olemassa, lähettäjä voi luoda sen osana maksutapahtumaa.
import { findAssociatedTokenPda } from "@solana-program/token";
const [receiverATA] = await findAssociatedTokenPda({
mint: USDG_MINT_ADDRESS,
owner: receiverWallet.address,
tokenProgram: TOKEN_PROGRAM_ADDRESS
});

Token Program

Solanassa ohjelmat ovat suoritettavaa logiikkaa, joka hallitsee tilin tilaa. Token accounteja hallinnoi Token Program – ketjussa oleva koodi, joka varmentaa siirrot ja päivittää saldot atomaarisesti.

Solanassa on kaksi Token Programia:

OhjelmaOsoiteEsimerkkitokeneita, jotka
käyttävät tätä ohjelmaa
Token ProgramTokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DAUSDC, USDT
Token-2022TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEbPYUSD, USDG

Token-2022 (kutsutaan myös nimellä "Token Extensions") lisää ominaisuuksia kuten siirtokoukut, siirtomaksut ja luottamukselliset siirrot. Molemmat ohjelmat toimivat samankaltaisesti perussiirroissa, mutta sinun on käytettävä oikeaa ohjelmaa johdettaessa ATA:ita.

Miksi tämä on tärkeää

Token Program, jota käytettiin tokenin luomiseen, hallitsee tokenin ohjeita ja tilin tilaa. Jos käytät väärää ohjelmaa, et voi siirtää tokenia.

ATA:t johdetaan kolmesta syötteestä: wallet + mint + token_program. Väärän ohjelman käyttäminen tuottaa täysin erilaisen osoitteen:

import {
findAssociatedTokenPda,
TOKEN_PROGRAM_ADDRESS
} from "@solana-program/token";
import { TOKEN_2022_PROGRAM_ADDRESS } from "@solana-program/token-2022";
// USDC uses Token Program
const [usdcAta] = await findAssociatedTokenPda({
mint: USDC_MINT,
owner: walletAddress,
tokenProgram: TOKEN_PROGRAM_ADDRESS // ✓ Correct
});
// ❌ This will produce a different address because it uses the wrong program
const [wrongUsdcAta] = await findAssociatedTokenPda({
mint: USDC_MINT,
owner: walletAddress,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS // ❌ Wrong program
});
// PYUSD uses Token-2022
const [pyusdAta] = await findAssociatedTokenPda({
mint: PYUSD_MINT,
owner: walletAddress,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS // ✓ Correct
});

ATA:n johtaminen väärällä ohjelmalla tuottaa virheellisen osoitteen. Sovita aina ohjelma tokenin minttiin.

Sama periaate pätee siirto-ohjeisiin. Jokaisella token-ohjelmalla on oma siirto-ohjeensa, ja sinun on kutsuttava oikeaa:

import { getTransferInstruction } from "@solana-program/token";
import { getTransferInstruction as getTransferInstruction22 } from "@solana-program/token-2022";
// For USDC (Token Program)
const usdcTransferIx = getTransferInstruction({
source: senderUsdcAta,
destination: receiverUsdcAta,
authority: senderWallet,
amount: 1_000_000n // 1 USDC (6 decimals)
});
// For PYUSD (Token-2022)
const pyusdTransferIx = getTransferInstruction22({
source: senderPyusdAta,
destination: receiverPyusdAta,
authority: senderWallet,
amount: 1_000_000n // 1 PYUSD (6 decimals)
});
// *Note*: Most token program JS Client functions include the ability
// to specify the token program address. Generally, defining it is a
// good practice to ensure you are fully aware of the program you are using
const usdcTransferIx2 = getTransferInstruction(
{
source: senderUsdcAta,
destination: receiverUsdcAta,
authority: senderWallet,
amount: 1_000_000n // 1 USDC (6 decimals)
},
{ tokenProgram: TOKEN_PROGRAM_ADDRESS }
);

Siirto-ohjeen lähettäminen väärään ohjelmaan epäonnistuu. Ohjelma validoi, että se omistaa mukana olevat token-tilit—Token Programin luomia tilejä ei voi siirtää Token-2022:n kautta, ja päinvastoin.

Varmistaaksesi, mitä ohjelmaa token tai token account käyttää, hae mintti tai token account ja tarkista sen owner -kenttä:

import { createSolanaRpc, address } from "@solana/kit";
const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
const accountInfo = await rpc.getAccountInfo(address(mintAddress)).send();
// The owner field tells you which program manages this token
const tokenProgram = accountInfo.value?.owner;
// Returns: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA (Token Program)
// or: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb (Token-2022)

Maksusovelluksissa tallenna oikea ohjelman osoite jokaisen tuetun tokenin rinnalle:

const SUPPORTED_TOKENS = {
USDC: {
mint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
program: TOKEN_PROGRAM_ADDRESS,
decimals: 6
},
PYUSD: {
mint: "2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo",
program: TOKEN_2022_PROGRAM_ADDRESS,
decimals: 6
}
};

Token Extensions

Token Extensions Program (Token 2022) tarjoaa lisää ominaisuuksia ylimääräisten ohjeiden kautta, joita kutsutaan extensioneiksi. Extensions ovat valinnaisia ominaisuuksia, joita voit lisätä token mintiin tai token accountiin.

Lisätietoja Token Extensionsista löydät Token Extensions -dokumentaatiosta.

Maksut

Solana-maksuihin liittyy enintään kolme kustannuskomponenttia:

MaksutyyppiSOLUSD (arvio)Milloin
Perustransaktiomaksu5 000 lamportia*~0,0007 $Jokaisessa transaktiossa (yhdistä maksuja kustannusten jakamiseksi)
PrioriteettimaksuVaihtelevaVaihtelevaValinnainen; nopeampi käsittely ruuhkan aikana
Tilin luonti (rent)~0,0029 SOL~0,40 $Vain uutta token accountia luotaessa

Kokonaiskustannus maksua kohden: Alle 0,001 $ useimmissa siirroissa. Jos luodaan uusi token account, kokonaiskustannus on noin 0,40 $.

Solana käyttää paikallisia maksumarkkinoita – kunkin ohjelman transaktiot kilpailevat vain muiden samaan tilaan kohdistuvien transaktioiden kanssa. Tämä tarkoittaa, että maksumaksut pysyvät alhaisina ja ennustettavina myös muualla verkossa tapahtuvan korkean aktiivisuuden aikana. Rent-kustannusten on myös suunniteltu laskevan 50 % lähitulevaisuudessa.

Voit abstrahoida maksut kokonaan, jotta käyttäjien ei tarvitse koskaan olla tekemisissä SOL:n kanssa. Katso toteutusmalleja kohdasta maksun abstrahointi.

Transaktiot ja ohjeet

Transaktio on Solanan atominen suoritusyksikkö – joko kaikki operaatiot onnistuvat tai mikään ei onnistu. Jokainen transaktio sisältää yhden tai useamman ohjeen, jotka ovat yksittäisiä komentoja (esim. "siirrä 10 USDC", "luo token account").

Tyypillinen maksutransaktio saattaa sisältää kaksi ohjetta: luo vastaanottajan token account (tarvittaessa) ja siirrä tokeneita. Molemmat suoritetaan atomisesti – ei osittaisia tiloja. Kuten näet kohdassa maksujen käsittely, voit yhdistää useita maksuja yhteen transaktioon kustannusten vähentämiseksi ja suorituskyvyn parantamiseksi.

Yhteenveto

Tyypillinen maksuvirta:

  1. Kerää tiedot. Hanki lähettäjän ja vastaanottajan lompakkoosoitteet sekä siirrettävän tokenin mint-osoite.
  2. Johda ATA:t. Määritä molempien osapuolten token-tilit.
  3. Rakenna ja allekirjoita. Muodosta transaktio tarvittavilla siirto-ohjeilla ja allekirjoita lähettäjän avaimella.
  4. Lähetä ja vahvista. Transaktio toteutuu alle sekunnissa.

Seuraavat vaiheet


* lamport on SOL:n pienin yksikkö ja vastaa 0,000000001 SOL:ia

Is this page helpful?

Sisällysluettelo

Muokkaa sivua

Hallinnoi

© 2026 Solana Foundation.
Kaikki oikeudet pidätetään.
Yhdistä