Was wäre, wenn Sie Blockchain-Anwendungen erstellen könnten, die 65.000 Transaktionen pro Sekunde mit einer Finalität von 400 Millisekunden verarbeiten? Die Solana-API macht dies möglich und bietet eine JSON-RPC-Schnittstelle, mit der Sie Konten abfragen, Transaktionen übermitteln und Echtzeit-Updates abonnieren können, ohne die Validator-Infrastruktur selbst verwalten zu müssen.
Die traditionelle Blockchain-Entwicklung zwingt Sie dazu, zwischen Geschwindigkeit und Dezentralisierung zu wählen. Ethereums 15 TPS erzeugen Engpässe bei Netzwerküberlastung. Layer-2-Lösungen erhöhen die Komplexität. Solana eliminiert diesen Kompromiss durch seinen Proof-of-History-Konsens in Kombination mit Proof-of-Stake und liefert Web2-Performance mit Web3-Garantien. Sie erstellen Anwendungen, die sich sofort anfühlen und gleichzeitig zensurresistent bleiben.
Inhaltsverzeichnis:
- Solanas Architektur verstehen
- Einrichten Ihrer Entwicklungsumgebung
- Wichtige RPC-API-Methoden
- Transaktionen mit Web3.js erstellen
- Bewährte Sicherheitspraktiken
- Fazit
Solanas Architektur verstehen
Solana verwendet eine einzigartige Architektur, die sich auf die Solana Program Library (SPL) und eine hohe Durchsatz-Laufzeitumgebung konzentriert. Das Verständnis dieser Grundlagen hilft Ihnen, effiziente API-Aufrufe zu schreiben.
Proof of History (PoH)
PoH erstellt einen kryptografischen Zeitstempel für jede Transaktion vor dem Konsens. Dies eliminiert die Notwendigkeit, dass Knoten sich auf die Zeit einigen, und reduziert die Latenz dramatisch. Wenn Sie eine Transaktion über die API übermitteln, wird sie sofort mit einem Zeitstempel versehen und gelangt in die Warteschlange des Leaders zur Verarbeitung.
Konten und Programme
Im Gegensatz zu Ethereums kontenbasiertem Modell mit Codespeicherung trennt Solana Code (Programme) von Daten (Konten). Programme sind zustandslos – sie enthalten nur ausführbare Logik. Konten speichern Daten und geben an, welches Programm sie besitzt. Diese Architektur ermöglicht die parallele Transaktionsverarbeitung, da sich nicht überschneidende Konten gleichzeitig ausführen lassen.
Jedes Konto hat eine eindeutige 32-Byte-Adresse, die von einem Ed25519-Public Key abgeleitet ist. Konten zahlen Miete in Lamports (1 SOL = 10^9 Lamports), um auf der Blockchain zu verbleiben. Mietbefreite Konten – solche, die mindestens 2 Jahre Miete halten – bleiben unbegrenzt ohne Verfall bestehen.
Bestätigungsstufen (Commitment Levels)
Solana bietet drei Bestätigungsstufen:
- Processed: Transaktion vom aktuellen Leader verarbeitet, aber nicht bestätigt. Schnellste Antwort, geringste Sicherheit.
- Confirmed: Transaktion vom Cluster bestätigt. Durchschnittlich ~5-10 Sekunden.
- Finalized: Transaktion ist endgültig im Root-Block und kann nicht rückgängig gemacht werden. ~12-15 Sekunden.
Geben Sie Bestätigungsstufen in API-Aufrufen an, um Geschwindigkeit und Finalitätsgarantien auszugleichen.

Einrichten Ihrer Entwicklungsumgebung
Sie benötigen drei Komponenten: die Solana CLI für die Schlüsselverwaltung und Bereitstellung, einen RPC-Endpunkt für den Blockchain-Zugriff und das JavaScript SDK für die Anwendungsintegration.
Installation der Solana CLI
Installieren Sie das offizielle CLI-Tool:
sh -c "$(curl -sSfL https://release.solana.com/stable/install)"
Installation überprüfen:
solana --version
Konfigurieren Sie Ihre Umgebung für Devnet (Test) oder Mainnet (Produktion):
# Für die Entwicklung
solana config set --url https://api.devnet.solana.com
# Für die Produktion
solana config set --url https://api.mainnet-beta.solana.com
Erstellen einer Wallet
Generieren Sie ein neues Schlüsselpaar zum Signieren von Transaktionen:
solana-keygen new --outfile ~/.config/solana/id.json
Die CLI gibt Ihre öffentliche Adresse und eine 12-Wörter-Seed-Phrase aus. Speichern Sie die Seed-Phrase sicher – sie stellt Ihre Wallet wieder her. Die JSON-Datei enthält Ihren privaten Schlüssel; schützen Sie ihn mit Dateiberechtigungen (chmod 600).
Guthaben überprüfen:
solana balance
Finanzieren Sie Ihre Devnet-Wallet mit kostenlosem SOL:
solana airdrop 2
Devnet-Airdrops stellen 2 SOL pro Anfrage bereit, begrenzt auf eine Anfrage alle 10 Sekunden. Mainnet erfordert den Kauf von SOL über Börsen.
Auswahl eines RPC-Anbieters
Während Solana öffentliche RPC-Endpunkte bereitstellt, benötigen Produktionsanwendungen eine dedizierte Infrastruktur. Optionen umfassen:
- Helius:
https://mainnet.helius-rpc.com/?api-key=YOUR_KEY - QuickNode:
https://solana-mainnet.g.alchemy.com/v2/YOUR_KEY - Chainstack: Dedizierte Nodes auf Unternehmensniveau
Kostenlose Tarife erlauben typischerweise 100.000 Anfragen pro Monat. Kostenpflichtige Tarife bieten höhere Limits, gestakte Verbindungen für die Transaktionsabwicklung und Priority-Fee-APIs.
Installation von Web3.js
Solanas JavaScript SDK hat zwei Hauptversionen. Version 2.0 stellt eine komplette Neufassung mit funktionalen Programmierparadigmen, Tree-Shakability und ohne Abhängigkeiten dar.
Version 2.0 installieren:
npm install @solana/web3.js@2 @solana-program/system @solana-program/compute-budget
Für Version 1.x Kompatibilität:
npm install @solana/web3.js
TippApidogSolana
Wichtige Solana RPC API-Methoden
Solanas JSON-RPC API bietet HTTP-Endpunkte für Abfragen und WebSocket-Endpunkte für Abonnements. Alle Anfragen folgen der JSON-RPC 2.0 Spezifikation.

Kontovorgänge
Kontoinformationen und Guthaben abrufen:
curl https://api.devnet.solana.com \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getAccountInfo",
"params": [
"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36zEGQp",
{"encoding": "base58"}
]
}'
Mehrere Konten effizient abrufen:
curl https://api.devnet.solana.com \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getMultipleAccounts",
"params": [
[
"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36zEGQp",
"4fYNw3dojWGPgVMtUU7ziPwq1r2VMGrhCrKZC9EQTbkV"
],
{"encoding": "base64"}
]
}'
Block- und Transaktionsabfragen
Den neuesten Blockhash für die Transaktionserstellung abrufen:
curl https://api.devnet.solana.com \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getLatestBlockhash",
"params": [{"commitment": "confirmed"}]
}'
Transaktionsstatus abfragen:
curl https://api.devnet.solana.com \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getSignatureStatuses",
"params": [
[
"5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpEz7CmGVZxhEHppBrGK"
],
{"searchTransactionHistory": true}
]
}'
WebSocket-Abonnements
Kontenänderungen in Echtzeit überwachen:
import { createSolanaRpcSubscriptions } from "@solana/web3.js";
const rpcSubscriptions = createSolanaRpcSubscriptions(
"wss://api.devnet.solana.com"
);
const abortController = new AbortController();
await rpcSubscriptions.accountNotifications(
"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36zEGQp",
{ commitment: "confirmed" },
(notification) => {
console.log("Account changed:", notification);
},
{ abortSignal: abortController.signal }
);
// Nach 60 Sekunden das Abhören beenden
setTimeout(() => abortController.abort(), 60000);
WebSocket-Verbindungen erfordern regelmäßige Pings alle 30-60 Sekunden, um aktiv zu bleiben. Implementieren Sie eine Wiederverbindungslogik für Produktionsanwendungen.
Profi-TippApidogsSolana
Transaktionen mit Web3.js erstellen
Solana-Transaktionen bestehen aus einer oder mehreren Anweisungen, die auf bestimmte Programme abzielen. Jede Anweisung spezifiziert das Programm, die Konten, mit denen sie interagiert, und serialisierte Daten.
Eine Transfertransaktion erstellen
SOL zwischen Konten mit dem Version 2.0 SDK übertragen:
import {
airdropFactory,
createKeyPairSignerFromBytes,
createSolanaRpc,
createSolanaRpcSubscriptions,
generateKeyPairSigner,
lamports,
sendAndConfirmTransactionFactory,
pipe,
createTransactionMessage,
setTransactionMessageFeePayer,
setTransactionMessageLifetimeUsingBlockhash,
appendTransactionMessageInstruction,
signTransactionMessageWithSigners,
getSignatureFromTransaction,
} from "@solana/web3.js";
import { getTransferSolInstruction } from "@solana-program/system";
const LAMPORTS_PER_SOL = BigInt(1_000_000_000);
// RPC-Verbindungen einrichten
const rpc = createSolanaRpc("https://api.devnet.solana.com");
const rpcSubscriptions = createSolanaRpcSubscriptions("wss://api.devnet.solana.com");
const sendAndConfirmTransaction = sendAndConfirmTransactionFactory({ rpc, rpcSubscriptions });
// Sender und Empfänger generieren
const sender = await generateKeyPairSigner();
const recipient = await generateKeyPairSigner();
// Sender mit Airdrop finanzieren
await airdropFactory({ rpc, rpcSubscriptions })({
recipientAddress: sender.address,
lamports: lamports(2n * LAMPORTS_PER_SOL),
commitment: "confirmed",
});
// Neuesten Blockhash abrufen
const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
// Transaktion mit pipe erstellen
const transactionMessage = pipe(
createTransactionMessage({ version: 0 }),
(msg) => setTransactionMessageFeePayer(sender.address, msg),
(msg) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, msg),
(msg) => appendTransactionMessageInstruction(
getTransferSolInstruction({
amount: lamports(LAMPORTS_PER_SOL / BigInt(2)),
destination: recipient.address,
source: sender,
}),
msg
)
);
// Signieren und senden
const signedTransaction = await signTransactionMessageWithSigners(transactionMessage);
console.log("Transaktion signiert");
await sendAndConfirmTransaction(signedTransaction, {
commitment: "confirmed",
maxRetries: 0n,
skipPreflight: true,
});
console.log("Bestätigt:", getSignatureFromTransaction(signedTransaction));
Die pipe-Funktion erstellt eine funktionale Kette, wobei jeder Schritt die Transaktionsnachricht transformiert. Dieses Muster eliminiert veränderlichen Zustand und macht die Transaktionskonstruktion deklarativ.
Optimierung mit Prioritätsgebühren
Bei Netzwerküberlastung gewährleisten Prioritätsgebühren die Aufnahme von Transaktionen. Empfohlene Gebühren von der Helius API abrufen:
import { getBase64EncodedWireTransaction } from "@solana/web3.js";
const base64Transaction = getBase64EncodedWireTransaction(signedTransaction);
const response = await fetch("https://mainnet.helius-rpc.com/?api-key=YOUR_KEY", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
jsonrpc: "2.0",
id: "priority-fee-request",
method: "getPriorityFeeEstimate",
params: [{
transaction: base64Transaction,
options: { recommended: true }
}]
})
});
const { result } = await response.json();
const priorityFee = result.priorityFeeEstimate;
// Anweisung für Prioritätsgebühr hinzufügen
import { getSetComputeUnitPriceInstruction } from "@solana-program/compute-budget";
const optimizedMessage = pipe(
transactionMessage,
(msg) => appendTransactionMessageInstruction(
getSetComputeUnitPriceInstruction({ microLamports: priorityFee }),
msg
)
);
Prioritätsgebühren werden in Mikro-Lamports pro Compute-Einheit angegeben. Höhere Gebühren erhöhen die Transaktionspriorität bei Überlastung.
Fehlerbehandlung
Solana gibt spezifische Fehlercodes für häufige Fehler zurück:
import { isSolanaError, SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE } from "@solana/web3.js";
try {
await sendAndConfirmTransaction(signedTransaction);
} catch (error) {
if (isSolanaError(error)) {
switch (error.contextErrorCode) {
case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE:
console.error("Vorabprüfung fehlgeschlagen:", error.message);
break;
default:
console.error("Solana-Fehler:", error);
}
}
}
Häufige Fehler sind unzureichende Mittel (0x1), ungültiger Blockhash (abgelaufen) und Konto in Verwendung (Transaktionskonflikte).
Bewährte Sicherheitspraktiken
Solanas hoher Durchsatz bringt einzigartige Sicherheitsaspekte mit sich. Implementieren Sie diese Maßnahmen, um Ihre Anwendung und Benutzer zu schützen.
Schlüsselverwaltung
Private Schlüssel niemals in die Versionskontrolle aufnehmen. Verwenden Sie Umgebungsvariablen:
# .env
SOLANA_PRIVATE_KEY="[1,2,3,...]"
Schlüssel sicher in Ihrer Anwendung laden:
import { createKeyPairSignerFromBytes } from "@solana/web3.js";
import { getBase58Encoder } from "@solana/codecs";
const secretKey = JSON.parse(process.env.SOLANA_PRIVATE_KEY);
const signer = await createKeyPairSignerFromBytes(
new Uint8Array(secretKey)
);
Für Browseranwendungen integrieren Sie Wallet-Adapter (Phantom, Solflare), anstatt private Schlüssel direkt zu handhaben. Benutzer signieren Transaktionen über ihre Wallet-Erweiterung, wodurch die Schlüssel sicher bleiben.
Transaktionssimulation
Simulieren Sie Transaktionen immer vor der Übermittlung, um Fehler frühzeitig zu erkennen:
const simulationResult = await rpc.simulateTransaction(signedTransaction).send();
if (simulationResult.value.err) {
console.error("Simulation fehlgeschlagen:", simulationResult.value.err);
// Fehler behandeln, ohne Gebühren zu verschwenden
}
Die Simulation führt die Transaktion gegen den aktuellen Zustand aus, ohne Änderungen zu übernehmen. Sie deckt Logikfehler, unzureichende Konten und Überschreitungen des Compute-Budgets auf.
Wiedergabeschutz
Solana-Transaktionen enthalten einen kürzlichen Blockhash, der nach ca. 90 Sekunden abläuft. Dies verhindert Replay-Angriffe – das mehrfache Übermitteln derselben Transaktion. Für idempotente Operationen generieren Sie eindeutige Anweisungsdaten oder Konten pro Transaktion.
Ratenbegrenzung
Öffentliche RPC-Endpunkte implementieren eine strikte Ratenbegrenzung (typischerweise 100 Anfragen pro 10 Sekunden). Implementieren Sie exponentielles Backoff:
async function withRetry(fn, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
return await fn();
} catch (error) {
if (error.status === 429) {
await new Promise(r => setTimeout(r, 1000 * Math.pow(2, i)));
continue;
}
throw error;
}
}
}
Für die Produktion verwenden Sie dedizierte RPC-Nodes oder kostenpflichtige Anbieter-Tiers mit höheren Limits.
Programmverifizierung
Bevor Sie mit Programmen Dritter interagieren, überprüfen Sie deren Quellcode auf Explorern wie SolanaFM oder Solscan. Achten Sie auf verifizierte Abzeichen, die anzeigen, dass der bereitgestellte Bytecode mit Open-Source-Repositories übereinstimmt. Unverifizierte Programme können bösartige Logik enthalten, die Benutzergelder abzieht.
Fazit
Solanas API liefert die Leistung, die moderne Anwendungen benötigen – Finalität im Subsekundenbereich, hoher Durchsatz und vorhersehbare Gebühren. Sie fragen Kontostände über JSON-RPC ab, abonnieren Echtzeit-Updates über WebSocket und erstellen Transaktionen mit dem funktionalen Web3.js 2.0 SDK. Die kontobasierte Architektur ermöglicht parallele Ausführung, während Sie mit Bestätigungsstufen den Kompromiss zwischen Sicherheit und Geschwindigkeit wählen können.
Beginnen Sie mit Devnet, um ohne finanzielles Risiko zu experimentieren. Verwenden Sie Prioritätsgebühren bei Mainnet-Überlastung. Implementieren Sie Simulation und ordnungsgemäße Schlüsselverwaltung, bevor Sie benutzerorientierte Anwendungen bereitstellen. Solanas Ökosystem bietet die Tools; Ihre Anwendungslogik bestimmt den Wert.
Beginnen Sie noch heute mit Apidog – importieren Sie Ihre Solana API-Endpunkte in Sekundenschnelle und starten Sie das Testen ohne Konfiguration.
