Solanan Token Programs tukee delegointia – toisen tilin valtuuttamista siirtämään tokeneita token-tililtäsi tiettyyn rajaan asti. Tämä mahdollistaa käyttötapaukset kuten automatisoidut maksut, sulkutilit ja kolmannen osapuolen maksunkäsittely luopumatta varojen hallinnasta.
Miten delegointi toimii
Kun hyväksyt delegaatin, valtuutat tietyn tilin siirtämään tokeneita puolestasi:
- Omistaja säilyttää hallinnan: omistat edelleen tokenit ja voit siirtää tai peruuttaa milloin tahansa
- Rajoitettu käyttö: delegaatti voi siirtää vain hyväksyttyyn määrään asti
- Yksi delegaatti per tili: jokaisella token-tilillä voi olla vain yksi aktiivinen delegaatti
- Uusi hyväksyntä korvaa vanhan: uuden delegaatin hyväksyminen peruuttaa automaattisesti edellisen
Delegointi ei ole säilytyspalvelu. Delegaatti voi käyttää tokeneita rajaan asti, mutta ei voi käyttää tai tyhjentää tiliä hyväksytyn määrän yli. Omistaja voi peruuttaa milloin tahansa.
Liiketoiminnan käyttötapaukset
| Käyttötapaus | Miten delegointi auttaa |
|---|---|
| Maksunkäsittelijät | Kauppias myöntää käsittelijälle luvan selvittää transaktiot |
| Automatisoitu palkanlaskenta | Kassaosasto hyväksyy palkanlaskentapalvelun maksamaan palkat |
| Sulkutilit | Ostaja delegoi sulkutiliagentille ehdollista vapauttamista varten |
| Kaupankäyntialustat | Käyttäjä hyväksyy pörssin toteuttamaan kauppoja puolestaan |
| Korttien myöntäminen | Käyttäjä hyväksyy kortinmyöntäjän veloittamaan ostokset token-tililtään |
Delegaatin hyväksyminen
Myönnä toiselle tilille lupa käyttää tokeneja tililtäsi:
import { getApproveCheckedInstruction } from "@solana-program/token";// Approve delegate to spend up to 1,000 USDC (6 decimals)const approveInstruction = getApproveCheckedInstruction({source: tokenAccountAddress, // Your token accountmint: usdcMintAddress, // USDC mintdelegate: delegateAddress, // Account receiving permissionowner: ownerKeypair, // You (must sign)amount: 1_000_000_000n, // 1,000 USDC in base unitsdecimals: 6});
Parametrit:
source: Token account, joka myöntää luvandelegate: Tili, joka saa käyttöoikeudenowner: Token accountin nykyinen omistaja (täytyy allekirjoittaa transaktio)amount: Maksimimäärä tokeneita, jotka delegaatti voi siirtäädecimals: Tokenin desimaalit validointia varten (estää desimaaliviat)
Delegaatin peruuttaminen
Poista kaikki käyttöoikeudet nykyiseltä delegaatilta:
import { getRevokeInstruction } from "@solana-program/token";const revokeInstruction = getRevokeInstruction({source: tokenAccountAddress, // Your token accountowner: ownerKeypair // You (must sign)});
Revoke poistaa kaikki delegaatin oikeudet – osittaista peruutusta ei ole. Jos haluat pienentää rajaa, hyväksy sama delegaatti pienemmällä määrällä.
Delegoinnin tilan tarkistaminen
Tarkista token accountista sen nykyinen delegaatti ja jäljellä oleva käyttöraja:
import { fetchToken } from "@solana-program/token";const tokenAccount = await fetchToken(rpc, tokenAccountAddress);if (tokenAccount.data.delegate) {console.log("Delegate:", tokenAccount.data.delegate);console.log("Remaining allowance:", tokenAccount.data.delegatedAmount);} else {console.log("No delegate set");}
Siirtäminen delegaattina
Kun toimit delegaattina, käytä tavallista siirtoa mutta allekirjoita delegaatin keypairilla omistajan sijaan:
import { getTransferCheckedInstruction } from "@solana-program/token";const transferInstruction = getTransferCheckedInstruction({source: ownerTokenAccount, // The account you have permission to spend frommint: usdcMintAddress,destination: recipientTokenAccount,authority: delegateKeypair, // You (the delegate) sign, not the owneramount: 100_000_000n, // 100 USDCdecimals: 6});
Siirto onnistuu, jos:
- Lähdetilillä on riittävä saldo
- Delegaatti allekirjoittaa transaktion
Jokainen siirto vähentää jäljellä olevaa käyttöoikeutta. Kun käyttöoikeus saavuttaa nollan, edustaja ei voi enää siirtää tokeneita.
Turvallisuusnäkökohdat
Tilin omistajille:
- Hyväksy vain luotettuja edustajia
- Aseta mahdollisimman pieni tarpeellinen käyttöraja
- Peru valtuutukset, kun niitä ei enää tarvita
- Seuraa tilejäsi odottamattomien siirtojen varalta
Palveluntarjoajille (edustajille):
- Kerro selkeästi käyttäjille pyydetty käyttöraja
- Toteuta asianmukainen avaintenhallinta edustajatilillesi
- Seuraa käyttöoikeuden kulutusta pyytääksesi uudelleenhyväksyntää ennen rajojen täyttymistä
Valtuutus vs. säilytys
| Näkökohta | Valtuutus | Täysi säilytys |
|---|---|---|
| Tokenien omistus | Käyttäjä säilyttää | Käyttäjä siirtää säilyttäjälle |
| Käyttöoikeuden hallinta | Rajoitettu hyväksyttyyn määrään | Täysi pääsy siirrettyihin varoihin |
| Peruutus | Välitön, omistajan toimesta | Vaatii säilyttäjän yhteistyötä |
| Riskialtistus | Rajoitettu hyväksyttyyn määrään | Koko saldo |
| Vaadittu luottamus | Rajoitettu | Korkea |
Valtuutus tarjoaa keskitien – mahdollistaa automaattiset maksut samalla kun riskialtistus rajoittuu hyväksyttyyn määrään.
Aiheeseen liittyvät resurssit
- Approve Delegate — Tekniset tiedot approve-käskystä
Is this page helpful?