Coin Brief ENDE

solana-web3.js 3.0 stellt die klassische API auf Kit um, mit asynchronen Keypairs und neuem Standard

Die Solana Foundation hat am 1. Oktober @solana/web3.js 3.0.0 veröffentlicht, den Nachfolger der 1.x-Reihe der klassischen, klassenbasierten JavaScript-Bibliothek; die Versionshinweise beschreiben die Änderungen seit 1.98.4. Sie liegt auf npm unter dem Tag next und soll am 19. Oktober zu latest werden; eine einfache Installation liefert bis dahin weiter 1.x. Daneben erscheint ein neues Paket @solana/wallet-adapter 3.0 mit Sign-In With Solana 1.1 und eigenständigem Signieren.

Was sich darunter ändert. Connection läuft jetzt durchgehend auf den typisierten HTTP- und WebSocket-Transporten von Solana Kit und ersetzt die alte JSON-RPC-Technik, während die gewohnte API bleibt. Signieren und Prüfen folgen WebCrypto und Kit, die Bibliothek setzt stärker auf Uint8Array statt auf Nodes Buffer, und die Kodierung von Programmen nutzt Codecs und generierte Programm-Clients. Keypair implementiert Kits KeyPairSigner und lässt sich direkt an Kit-APIs und generierte Clients übergeben.

Inkompatible Änderungen, die die meisten treffen.

  • Keypair.generate(), fromSecretKey() und fromSeed() sind jetzt asynchron, ebenso Transaction.serialize() und verifySignatures().
  • Der implizite Standard-Commitment von Connection wechselt von finalized zu confirmed.
  • Viele Connection-Methoden liefern bigint statt number, Kontodaten kommen als schreibgeschütztes Uint8Array, space als bigint.
  • Die alte Signer-Form {publicKey, secretKey}, PublicKey.unique(), die Altklasse Account und die veralteten Gebührenrechner-Methoden einschließlich getRecentBlockhash entfallen.
  • getMinimumBalanceForRentExemption wirft bei einem RPC-Fehler jetzt eine Ausnahme, statt eine Warnung zu protokollieren und null zurückzugeben. Die Begründung in den Hinweisen: Eine gescheiterte Abfrage darf nicht mit einem mietfreien Konto verwechselt werden.

Härtung. Viele Korrekturen betreffen Randfälle: Der Nachrichten-Header wird beim Erzeugen kopiert, damit spätere Änderungen die signierten Bytes nicht verändern; der Signaturstatus wird abgeglichen, bevor eine Transaktion als abgelaufen gemeldet wird; fehlgeschlagene WebSocket-Abonnements laufen nicht mehr in einer Endlosschleife; und der Wallet-Adapter verweigert Ausgaben einer Wallet, die die Signaturen des Aufrufers weglassen.

Der ehrliche Vorbehalt. Die Versionshinweise enthalten einen Abschnitt mit dem Titel Migration Reality Check. Die API ist weiter klassenbasiert, doch wer nicht triviale TypeScript-Projekte pflegt, sollte mit umfangreichen mechanischen Änderungen rechnen, vor allem durch bigint-Zahlen, Uint8Array-Daten, asynchrone Hilfsfunktionen und schreibgeschützte Ergebnisse. Für Anwendungen, die schon große Teile der Bibliothek nutzen, liege der Gewinn laut den Hinweisen eher in Modernisierung und künftiger Kompatibilität als in einem deutlich kleineren Bundle.

solana-web3.js 3.0 stellt die klassische API auf Kit um, mit asynchronen Keypairs und neuem Standard
solana-web3.js 3.0 stellt die klassische API auf Kit um, mit asynchronen Keypairs und neuem Standard — Coin Brief

Was das bedeutet

Entscheidend ist der 19. Oktober, wenn latest wechselt und Installationen ohne feste Version 3.0 laden. Projekte, die @solana/web3.js ohne Versionsbereich einbinden, sollten jetzt ^1 festschreiben und das Upgrade planen. Die subtile Änderung ist der Commitment: Code, der stillschweigend auf finalized gelesene Daten gebaut hat, sieht künftig bestätigten Zustand.