ΠληρωμέςΠροηγμένες πληρωμές

Δικαιώματα δαπάνης

Τα Token Programs του Solana υποστηρίζουν εξουσιοδότηση—παραχώρηση άδειας σε άλλο λογαριασμό να μεταφέρει tokens από το token account σας μέχρι ένα καθορισμένο όριο. Αυτό επιτρέπει περιπτώσεις χρήσης όπως αυτοματοποιημένες πληρωμές, υπηρεσίες εγγύησης και επεξεργασία πληρωμών από τρίτους χωρίς να παραδώσετε την κατοχή των κεφαλαίων σας.

Πώς λειτουργεί η εξουσιοδότηση

Όταν εγκρίνετε έναν εξουσιοδοτημένο, εξουσιοδοτείτε έναν συγκεκριμένο λογαριασμό να μεταφέρει tokens εκ μέρους σας:

  • Ο κάτοχος διατηρεί την κατοχή: Εξακολουθείτε να κατέχετε τα tokens και μπορείτε να τα μεταφέρετε ή να ανακαλέσετε την εξουσιοδότηση ανά πάσα στιγμή
  • Περιορισμένη δαπάνη: Ο εξουσιοδοτημένος μπορεί να μεταφέρει μόνο μέχρι το εγκεκριμένο ποσό
  • Ένας εξουσιοδοτημένος ανά λογαριασμό: Κάθε token account μπορεί να έχει μόνο έναν ενεργό εξουσιοδοτημένο
  • Η νέα έγκριση αντικαθιστά την παλιά: Η έγκριση νέου εξουσιοδοτημένου ανακαλεί αυτόματα τον προηγούμενο

Η εξουσιοδότηση δεν μεταβιβάζει την κατοχή. Ο εξουσιοδοτημένος μπορεί να δαπανήσει tokens μέχρι το όριο, αλλά δεν μπορεί να αποκτήσει πρόσβαση ή να αδειάσει τον λογαριασμό πέρα από το εγκεκριμένο ποσό. Ο κάτοχος μπορεί να ανακαλέσει ανά πάσα στιγμή.

Επιχειρηματικές περιπτώσεις χρήσης

Περίπτωση χρήσηςΠώς βοηθά η εξουσιοδότηση
Επεξεργαστές πληρωμώνΟ έμπορος παραχωρεί άδεια στον επεξεργαστή να διευθετεί συναλλαγές
Αυτοματοποιημένη μισθοδοσίαΤο ταμείο εγκρίνει την υπηρεσία μισθοδοσίας να καταβάλει μισθούς
Υπηρεσίες εγγύησηςΟ αγοραστής εξουσιοδοτεί τον πράκτορα εγγύησης για υπό όρους απελευθέρωση
Πλατφόρμες συναλλαγώνΟ χρήστης εγκρίνει το ανταλλακτήριο να εκτελεί συναλλαγές εκ μέρους του
Έκδοση καρτώνΟ χρήστης εγκρίνει τον εκδότη κάρτας να χρεώνει αγορές στο token account του

Έγκριση εξουσιοδοτημένου

Παραχωρήστε σε έναν άλλο λογαριασμό άδεια να ξοδέψει tokens από τον λογαριασμό σας:

import { getApproveCheckedInstruction } from "@solana-program/token";
// Approve delegate to spend up to 1,000 USDC (6 decimals)
const approveInstruction = getApproveCheckedInstruction({
source: tokenAccountAddress, // Your token account
mint: usdcMintAddress, // USDC mint
delegate: delegateAddress, // Account receiving permission
owner: ownerKeypair, // You (must sign)
amount: 1_000_000_000n, // 1,000 USDC in base units
decimals: 6
});

Παράμετροι:

  • source: Ο λογαριασμός token που παραχωρεί την άδεια
  • delegate: Ο λογαριασμός που θα έχει άδεια δαπάνης
  • owner: Τρέχων κάτοχος του λογαριασμού token (πρέπει να υπογράψει τη συναλλαγή)
  • amount: Μέγιστος αριθμός tokens που μπορεί να μεταφέρει ο εκπρόσωπος
  • decimals: Δεκαδικά ψηφία του token για επικύρωση (αποτρέπει σφάλματα δεκαδικών)

Ανάκληση εκπροσώπου

Αφαιρέστε όλες τις άδειες δαπάνης από τον τρέχοντα εκπρόσωπο:

import { getRevokeInstruction } from "@solana-program/token";
const revokeInstruction = getRevokeInstruction({
source: tokenAccountAddress, // Your token account
owner: ownerKeypair // You (must sign)
});

Η ανάκληση αφαιρεί όλες τις άδειες του εκπροσώπου—δεν υπάρχει μερική ανάκληση. Αν χρειάζεται να μειώσετε το όριο, εγκρίνετε τον ίδιο εκπρόσωπο με χαμηλότερο ποσό.

Έλεγχος κατάστασης εξουσιοδότησης

Ερωτήστε έναν λογαριασμό token για να δείτε τον τρέχοντα εκπρόσωπό του και το υπόλοιπο όριο:

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");
}

Μεταφορά ως εκπρόσωπος

Όταν ενεργείτε ως εκπρόσωπος, χρησιμοποιήστε μια τυπική μεταφορά αλλά υπογράψτε με το keypair του εκπροσώπου αντί του κατόχου:

Transfer as Delegate
import { getTransferCheckedInstruction } from "@solana-program/token";
const transferInstruction = getTransferCheckedInstruction({
source: ownerTokenAccount, // The account you have permission to spend from
mint: usdcMintAddress,
destination: recipientTokenAccount,
authority: delegateKeypair, // You (the delegate) sign, not the owner
amount: 100_000_000n, // 100 USDC
decimals: 6
});

Η μεταφορά θα επιτύχει αν:

  • Ο λογαριασμός προέλευσης έχει επαρκές υπόλοιπο
  • Ο εκπρόσωπος υπογράψει τη συναλλαγή

Κάθε μεταφορά μειώνει το υπόλοιπο όριο. Όταν το όριο φτάσει στο μηδέν, ο εκπρόσωπος δεν μπορεί πλέον να μεταφέρει tokens.

Ζητήματα ασφάλειας

Για τους κατόχους λογαριασμών:

  • Εγκρίνετε μόνο αξιόπιστους εκπροσώπους
  • Ορίστε το ελάχιστο απαραίτητο όριο δαπανών
  • Ανακαλέστε τις εξουσιοδοτήσεις όταν δεν χρειάζονται πλέον
  • Παρακολουθείτε τους λογαριασμούς σας για μη αναμενόμενες μεταφορές

Για τους παρόχους υπηρεσιών (εκπροσώπους):

  • Επικοινωνήστε με σαφήνεια το ζητούμενο όριο δαπανών στους χρήστες
  • Εφαρμόστε κατάλληλη διαχείριση κλειδιών για τον λογαριασμό εκπροσώπου σας
  • Παρακολουθείτε την κατανάλωση του ορίου για να ζητήσετε επανέγκριση πριν εξαντληθούν τα όρια

Εξουσιοδότηση έναντι θεματοφυλακής

ΠτυχήΕξουσιοδότησηΠλήρης θεματοφυλακή
Κυριότητα tokensΟ χρήστης διατηρείΟ χρήστης μεταφέρει στον θεματοφύλακα
Έλεγχος δαπανώνΠεριορισμένος στο εγκεκριμένο ποσόΠλήρης πρόσβαση στα μεταφερόμενα κεφάλαια
ΑνάκλησηΆμεση, από τον κάτοχοΑπαιτεί συνεργασία θεματοφύλακα
Έκθεση σε κίνδυνοΠεριορισμένη στο εγκεκριμένο ποσόΟλόκληρο το υπόλοιπο
Απαιτούμενη εμπιστοσύνηΠεριορισμένηΥψηλή

Η εξουσιοδότηση παρέχει μια ενδιάμεση λύση—επιτρέποντας αυτοματοποιημένες πληρωμές ενώ περιορίζει την έκθεση σε κίνδυνο στο εγκεκριμένο ποσό.

Σχετικοί πόροι

Is this page helpful?

Διαχειρίζεται από

© 2026 Ίδρυμα Solana.
Με επιφύλαξη παντός δικαιώματος.
Συνδεθείτε