PłatnościZaawansowane płatności

Uprawnienia do wydawania środków

Programy Tokenów Solana obsługują delegowanie — czyli przyznawanie innemu kontu uprawnienia do transferu tokenów z Twojego token account do określonego limitu. Pozwala to na realizację takich scenariuszy jak automatyczne płatności, usługi escrow czy przetwarzanie płatności przez strony trzecie, bez utraty kontroli nad własnymi środkami.

Jak działa delegowanie

Gdy zatwierdzasz delegata, upoważniasz konkretne konto do transferowania tokenów w Twoim imieniu:

  • Właściciel zachowuje kontrolę: Nadal jesteś właścicielem tokenów i możesz w każdej chwili dokonać transferu lub odwołać uprawnienia
  • Limit wydatków: Delegat może przelać tylko zatwierdzoną kwotę
  • Jeden delegat na konto: Każdy token account może mieć tylko jednego aktywnego delegata
  • Nowe zatwierdzenie zastępuje stare: Zatwierdzenie nowego delegata automatycznie cofa poprzednie uprawnienie

Delegowanie jest niepowiernicze. Delegat może wydawać tokeny tylko do ustalonego limitu, ale nie ma dostępu do środków poza zatwierdzoną kwotą. Właściciel może w każdej chwili cofnąć uprawnienia.

Przykłady zastosowań biznesowych

ZastosowanieJak pomaga delegowanie
Procesory płatnościSprzedawca przyznaje procesorowi uprawnienia do rozliczania transakcji
Automatyczna wypłata pensjiSkarbnik zatwierdza usługę kadrową do wypłaty wynagrodzeń
Usługi escrowKupujący deleguje agentowi escrow warunkowe zwolnienie środków
Platformy tradingoweUżytkownik zatwierdza giełdę do realizacji transakcji w jego imieniu
Wydawanie kartUżytkownik zatwierdza wystawcę karty do obciążania jego token account

Zatwierdzanie delegata

Przyznaj innemu kontu uprawnienia do wydawania tokenów z Twojego konta:

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

Parametry:

  • source: token account przyznający uprawnienia
  • delegate: konto, które otrzyma uprawnienia do wydawania
  • owner: obecny właściciel token account (musi podpisać transakcję)
  • amount: maksymalna liczba tokenów, jaką delegat może przelać
  • decimals: liczba miejsc po przecinku tokena do walidacji (zapobiega błędom dziesiętnym)

Cofnięcie uprawnień delegata

Usuń wszystkie uprawnienia do wydawania od obecnego delegata:

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

Cofnięcie usuwa wszystkie uprawnienia delegata — nie ma częściowego cofnięcia. Jeśli chcesz zmniejszyć limit, zatwierdź tego samego delegata z niższą kwotą.

Sprawdzanie statusu delegacji

Sprawdź token account, aby zobaczyć obecnego delegata i pozostały limit:

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

Przelew jako delegat

Działając jako delegat, użyj standardowego transferu, ale podpisz go keypair delegata zamiast właściciela:

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

Przelew powiedzie się, jeśli:

  • Konto źródłowe ma wystarczające saldo
  • Delegat podpisze transakcję

Każdy transfer zmniejsza pozostały limit. Gdy limit osiągnie zero, delegat nie może już wykonywać transferów tokenów.

Względy bezpieczeństwa

Dla właścicieli kont:

  • Zatwierdzaj tylko zaufanych delegatów
  • Ustaw minimalnie niezbędny limit wydatków
  • Cofnij delegacje, gdy nie są już potrzebne
  • Monitoruj swoje konta pod kątem nieoczekiwanych transferów

Dla dostawców usług (delegatów):

  • Jasno komunikuj użytkownikom żądany limit wydatków
  • Wdrażaj odpowiednie zarządzanie kluczami dla swojego konta delegata
  • Monitoruj wykorzystanie limitu, aby poprosić o ponowną akceptację zanim limit się wyczerpie

Delegowanie vs. powiernictwo

AspektDelegowaniePełne powiernictwo
Własność tokenówUżytkownik zachowujeUżytkownik przekazuje powiernikowi
Kontrola wydatkówOgraniczona do zatwierdzonej kwotyPełny dostęp do przekazanych środków
OdwołanieNatychmiastowe, przez właścicielaWymaga współpracy powiernika
Ekspozycja na ryzykoOgraniczona do zatwierdzonej kwotyCały stan konta
Wymagane zaufanieOgraniczoneWysokie

Delegowanie stanowi kompromis—umożliwia automatyczne płatności przy jednoczesnym ograniczeniu ekspozycji na ryzyko do zatwierdzonej kwoty.

Powiązane zasoby

Is this page helpful?

Spis treści

Edytuj stronę

Zarządzane przez

© 2026 Solana Foundation.
Wszelkie prawa zastrzeżone.
Bądź na bieżąco