
Wir stellen Kite vor: das moderne Solana-TypeScript-Framework
Inhaltsverzeichnis
Heute freuen wir uns, Kite vorzustellen: das moderne TypeScript-Framework für Browser und Node.js. Kite baut auf der Leistungsfähigkeit von Solana web3.js Version 2 auf und vereinfacht gängige Aufgaben erheblich.
Warum Kite?
Kite nutzt die Geschwindigkeit und Eleganz von Solana web3.js Version 2, ermöglicht dir aber, alltägliche Solana-Aufgaben mit einer einzigen Funktion zu erledigen.
Da Kite web3.js Version 2 für die aufwendige Arbeit nutzt, stehen dir alle Funktionen von web3.js Version 2 zur Verfügung. Wenn du Kite nicht mehr brauchst, kannst du es einfach entfernen und direkt web3.js Version 2 verwenden.
Kite ist die web3.js-v2-Weiterentwicklung von @solana-developers/helpers, der beliebtesten High-Level-Bibliothek für web3.js Version 1, und stammt vom ursprünglichen Autor.
Das Kite-Paket enthält aktualisierte Versionen der meisten ursprünglichen Hilfsfunktionen, darunter Beiträge von Helius, der Solana Foundation, Anza, Turbin3, Unboxed Software und StarAtlas.
Die Funktionen von @solana-developers/helpers, die Kite noch nicht enthält, werden bald ergänzt.
Kite funktioniert sowohl im Browser als auch in Node.js und hat minimale Abhängigkeiten.
Was kann ich mit Kite tun?
Kite enthält Funktionen für folgende Aufgaben:
Wallets
- Eine neue Wallet erstellen — mit Vanity-Adressen, einem sofort verfügbaren SOL-Guthaben und/oder Speicherung in einer Datei.
- Eine Wallet aus einer Datei laden — im standardmäßigen id.json-Format von Anza.
- Eine Wallet aus einer Umgebungsvariable laden — im üblichen „Array of Numbers“-Format, das die meisten Solana-Tools verwenden.
SOL
- SOL per Airdrop erhalten, wenn das Guthaben niedrig ist — eine praktische Möglichkeit, bei Bedarf SOL zu erhalten, ohne die Devnet-/Testnet-Faucets unnötig zu belasten.
- Das SOL-Guthaben eines Kontos abrufen - rufe das SOL-Guthaben ab.
- SOL zwischen Wallets übertragen.
Token
- Einen neuen Token erstellen — mit Token-Metadaten.
- Die Adresse eines Token-Kontos abrufen — um die Adresse einer Wallet für einen bestimmten Token zu finden.
- Informationen zu einem Token-Mint abrufen — um Details zu einem Mint zu finden.
- Token für ein Konto minten — damit die Mint Authority einen Token-Mint verwenden und neue Token im Konto einer Person erstellen kann.
- Token zwischen Konten übertragen — ermittle die erforderlichen Token-Konten für Absender und Empfänger, erstelle bei Bedarf das Token-Konto des Empfängers und übertrage die Token zwischen den Konten!
Transaktionen
- Eine Transaktion signieren, senden und bestätigen — in einem einzigen Schritt. Übernimm die Anweisungen für eine Transaktion, erstelle die Transaktion, rufe einen aktuellen Blockhash ab, signiere die Nachricht in der Transaktion und sende sie.
- Eine Transaktion senden und bestätigen — wenn du bereits eine Transaktion erstellt hast
- Prüfen, ob eine Transaktion bestätigt wurde.
- Transaktionsprotokolle abrufen — rufe die Protokolle einer Transaktion ab.
Explorer
- Einen Solana-Explorer-Link abrufen — ein einziger Schritt mit allen Details, um die Transaktion, den Block oder die Adresse über dein RPC anzuzeigen.
Kite und Solana web3.js 2 im Vergleich:
Hier ist ein kurzes Beispiel für die Erstellung eines Tokens
Mit Kite
Denk daran: Kite ist nur ein Framework auf Basis von web3.js v2. Daher verwendet es dieselben Typen und zugrunde liegenden Funktionen von web3.js v2.
import { connect } from "@helius-dev/kite";
const connection = connect();
const mintAddress = await connection.makeTokenMint(
mintAuthority,
6,
"My Token",
"MTKN",
"https://example.com/metadata.json",
{
description: "A sample token",
website: "https://example.com",
},
);
console.log(connection.getExplorerLink(mintAddress));Mit Solana web3.js v2
...ohne Kite!
import {
airdropFactory,
appendTransactionMessageInstructions,
createSolanaRpc,
createSolanaRpcSubscriptions,
createTransactionMessage,
generateKeyPairSigner,
getSignatureFromTransaction,
lamports,
pipe,
sendAndConfirmTransactionFactory,
setTransactionMessageFeePayerSigner,
setTransactionMessageLifetimeUsingBlockhash,
signTransactionMessageWithSigners,
some,
} from "@solana/web3.js";
import { getCreateAccountInstruction } from "@solana-program/system";
import {
getInitializeMintInstruction,
getMintSize,
TOKEN_2022_PROGRAM_ADDRESS,
extension,
getInitializeMetadataPointerInstruction,
getInitializeTokenMetadataInstruction,
tokenMetadataField,
getUpdateTokenMetadataFieldInstruction,
} from "@solana-program/token-2022";
const rpc = createSolanaRpc("http://127.0.0.1:8899");
const rpcSubscriptions = createSolanaRpcSubscriptions("ws://127.0.0.1:8900");
const feePayer = await generateKeyPairSigner();
console.log(feePayer.address);
const mint = await generateKeyPairSigner();
await airdropFactory({ rpc, rpcSubscriptions })({
recipientAddress: feePayer.address,
lamports: lamports(1_000_000_000n),
commitment: "confirmed",
});
const balance = await rpc.getBalance(feePayer.address).send();
console.log("balance:", balance.value);
const metadataPointerExtension = extension("MetadataPointer", {
authority: some(feePayer.address),
metadataAddress: some(mint.address),
});
const tokenMetadataExtension = extension("TokenMetadata", {
updateAuthority: some(feePayer.address),
mint: mint.address,
name: "OPOS",
symbol: "OPOS",
uri: "https://raw.githubusercontent.com/solana-developers/opos-asset/main/assets/DeveloperPortal/metadata.json",
additionalMetadata: new Map<string, string>([["description", "Only Possible On Solana"]]),
});
const spaceWithoutMetadata = BigInt(getMintSize([metadataPointerExtension]));
const spaceWithMetadata = BigInt(getMintSize([metadataPointerExtension, tokenMetadataExtension]));
const rent = await rpc.getMinimumBalanceForRentExemption(spaceWithMetadata).send();
const createAccountInstruction = getCreateAccountInstruction({
payer: feePayer,
newAccount: mint,
lamports: rent,
space: spaceWithoutMetadata,
programAddress: TOKEN_2022_PROGRAM_ADDRESS,
});
const initializeMetadataPointerInstruction = getInitializeMetadataPointerInstruction({
mint: mint.address,
authority: feePayer.address,
metadataAddress: mint.address,
});
const initializeMintInstruction = getInitializeMintInstruction({
mint: mint.address,
decimals: 2,
mintAuthority: feePayer.address,
});
const initializeTokenMetadataInstruction = getInitializeTokenMetadataInstruction({
metadata: mint.address,
updateAuthority: feePayer.address,
mint: mint.address,
mintAuthority: feePayer,
name: tokenMetadataExtension.name,
symbol: tokenMetadataExtension.symbol,
uri: tokenMetadataExtension.uri,
});
const updateTokenMetadataInstruction = getUpdateTokenMetadataFieldInstruction({
metadata: mint.address,
updateAuthority: feePayer,
field: tokenMetadataField("Key", ["description"]),
value: "Only Possible On Solana",
});
const instructions = [
createAccountInstruction,
initializeMetadataPointerInstruction,
initializeMintInstruction,
initializeTokenMetadataInstruction,
updateTokenMetadataInstruction,
];
const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
const transactionMessage = pipe(
createTransactionMessage({ version: 0 }),
(message) => setTransactionMessageFeePayerSigner(feePayer, message),
(message) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, message),
(message) => appendTransactionMessageInstructions(instructions, message),
);
const signedTransaction = await signTransactionMessageWithSigners(transactionMessage);
const transactionSignature = getSignatureFromTransaction(signedTransaction);
await sendAndConfirmTransactionFactory({ rpc, rpcSubscriptions })(signedTransaction, {
commitment: "confirmed",
skipPreflight: true,
});
console.log("Transaction Signature:", `https://explorer.solana.com/tx/${transactionSignature}?cluster=custom`);
Wie du siehst, müsstest du ohne Kite eine Transaktionsnachricht mit fünf Anweisungen und den entsprechenden Optionen erstellen, die Transaktionsnachricht signieren und sie an das RPC senden. Mit Kite führst du makeTokenMint aus und erhältst die Adresse des neuen Mints zurück.
Kite und Poseidon im Vergleich
Kite ist eine reine Client-Bibliothek für Browser und Node.js. Sieh dir Poseidon an, wenn du On-Chain-Apps (z. B. Smart Contracts) mit TypeScript entwickeln möchtest.
Mitwirken
Kite ist noch neu. Wir wollen es jedoch zu einem robusten Framework ausbauen, das die Solana-Entwicklung für alle zugänglicher macht.
Indem wir gängige Aufgaben vereinfachen und Boilerplate-Code reduzieren, können wir mehr Entwicklern helfen, großartige Dinge auf Solana zu entwickeln.
So kannst du helfen:
- Probleme melden
- Lies unsere Richtlinien für Beiträge und reiche Pull Requests ein
Probiere Kite noch heute aus
Bist du bereit, deine Solana-Entwicklung einfacher zu machen?
Leg mit Kite los:
npm i @helius-dev/kiteIn unserem GitHub-Repository findest du die vollständige Dokumentation und Beispiele.
Beschleunigen wir gemeinsam die Solana-Entwicklung! 🪁
Ähnliche Artikel
Helius abonnieren
Bleib bei der Solana-Entwicklung auf dem Laufenden und erhalte Updates, wenn wir neue Beiträge veröffentlichen


