Sui.

Beitrag

Teile dein Wissen.

article banner.
harry phan.
Apr 09, 2025
Artikel

Leitfaden für SUI-Transaktionen: Von der Einrichtung bis zur Ausführung und Überprüfung

Leitfaden für Sui-Transaktionen: Von der Einrichtung bis zur Ausführung und Überprüfung

Wenn Sie neugierig auf die Einzelheiten der Ausführung von Transaktionen auf der Sui-Blockchain sind und einen ausführlichen, praktischen Leitfaden wünschen, der Sie durch jeden Schritt führt.

In diesem Artikel werden wir den gesamten Prozess untersuchen — von der Einrichtung Ihrer Kundenumgebung über die Überprüfung Ihrer Wallet-Objekte, die Berechnung der Gasgebühren bis hin zur Unterzeichnung und Ausführung einer Transaktion und schließlich der Überprüfung ihrer Details.

Lassen Sie uns das Schritt für Schritt aufschlüsseln:

Was macht Sui so besonders? 🔥

Sui bietet eine hochoptimierte Plattform für dezentrale Anwendungen (dApps) und intelligente Verträge. Sein elegantes Design bei der Verwaltung von Gasgebühren und Transaktionslogik macht es zu einem aufregenden Spielplatz für Entwickler, die die Grenzen der Web3-Technologie erweitern möchten.

Nummer 2. Erste Schritte: Umgebungs-Setup und Wallet-Konfiguration ⚙️

2.1. Konfiguration Ihrer Sui-Client-Umgebung

Bevor Sie mit Transaktionen beginnen, stellen Sie sicher, dass Ihr Sui-Client ordnungsgemäß eingerichtet ist. Sui unterstützt mehrere Netzwerke (devnet, mainnet, testnet), und Sie können mit dem folgenden Befehl überprüfen, welches aktiv ist:

➜ sui client envs
╭─────────┬─────────────────────────────────────┬────────╮
│ alias   │ url                                 │ active │
├─────────┼─────────────────────────────────────┼────────┤
│ devnet  │ https://fullnode.devnet.sui.io:443  │        │
│ mainnet │ https://fullnode.mainnet.sui.io:443 │        │
│ testnet │ https://fullnode.testnet.sui.io:443 │ *      │
╰─────────┴─────────────────────────────────────┴────────╯

Dies bestätigt, dass Sie mit dem Testnetz verbunden sind. Im richtigen Netzwerk zu sein, ist der erste Schritt zu einer erfolgreichen Transaktion.

2.2. Überprüfe deine aktive Brieftasche

Bestätigen Sie als Nächstes Ihre aktive Wallet-Adresse. Dies ist von entscheidender Bedeutung, da jede Transaktion an Ihre Wallet-Identität gebunden ist:

➜ sui client active-address
0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73

2.3. Eigene Objekte abfragen

Mithilfe der SUIX_GetOwnedObjects-API können Sie Details zu den Objekten (wie Münzen) abrufen, die Sie in der Blockchain besitzen. Mit diesem Befehl können Sie Ihren Kontostand und die für Transaktionen verfügbaren Vermögenswerte überprüfen:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "suix_getOwnedObjects",
  "params": [
      "0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73",
      {
          "filter": {
              "MatchAll": [
                  {
                      "StructType": "0x2::coin::Coin<0x2::sui::SUI>"
                  }
              ]
          },
          "options": {
              "showType": true,
              "showOwner": true,
              "showPreviousTransaction": true
          }
      }
  ]
}

Dieser Schritt ist wichtig, um zu überprüfen, ob Ihre Brieftasche über die erforderlichen Münzen (in diesem Fall SUI-Münzen) verfügt, bevor Sie Transaktionen versuchen.

3. Gasberechnung: Budgetierung der Transaktionskosten 💸

Gas ist der Treibstoff, der Blockchain-Transaktionen antreibt. Es ist wichtig, sowohl den Gaspreis als auch das Gasbudget zu verstehen, um Transaktionsausfälle zu vermeiden.

3.1. Den Gaspreis abrufen

Der aktuelle Gaspreis kann mit dem API-Aufruf SUIX_GetReferenceGasPrice abgerufen werden:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "suix_getReferenceGasPrice",
  "params": []
}

Wenn die API „1000" zurückgibt, bedeutet das, dass jede Gaseinheit 1000 MIST kostet. Denken Sie daran, dass 1 SUI 10^9 MIST entspricht, sodass sich selbst kleine Zahlen in MIST bei der Budgetierung summieren können.

3.2. Festlegung des Gasbudgets

Ihr Gasbudget ist die maximale Gasmenge (in MIST), die Sie bereit sind auszugeben. Nehmen wir für unser Beispiel an, Ihr Gasbudget beträgt 4964000 MIST. Die Gesamtkosten einer Transaktion werden in der Regel wie folgt berechnet:

Gesamtkosten = Berechnungskosten plus Speicherkosten — Speicherrabatt

Zum Beispiel: • Berechnungskosten: 1.000.000 MIST • Speicherkosten: 2.964.000 MIST • Lagerrabatt: 978.120 MIST

Die Nettokosten belaufen sich also auf 1.000.000 + 2.964.000 − 978.120 = 2.985.880 MIST.

Durch die genaue Festlegung Ihres Gasbudgets wird sichergestellt, dass Ihre Transaktion über ausreichende Mittel verfügt, um erfolgreich ausgeführt zu werden.

4. Die Transaktion vorbereiten: Ein Probelauf für Selbstvertrauen 🔧

Bevor Sie eine Live-Transaktion senden, sollten Sie am besten einen „Probelauf“ durchführen, um potenzielle Probleme zu erkennen. Auf diese Weise können Sie die Transaktionslogik validieren, ohne Gas zu geben.

4.1. Eine Dry-Run-Transaktion erstellen

Hier ist ein Beispiel für eine TypeScript-Funktion, die zeigt, wie eine Probelauf-Transaktion vorbereitet und ausgeführt wird. Dieser Code beschreibt, wie Münzen aufgeteilt und Transferoperationen vorbereitet werden:

export const signSuiDryRunTransaction = async (requestParams: SignDryRequestParams): Promise<string> => {
  const { gasPrice, privateKey, coinRefs, network, recipients } = requestParams;
  const keypair = Ed25519Keypair.fromSecretKey(privateKey);
  const tx = newTransaction();

  // Configure gas payment, price, and sender
  tx.setGasPayment(coinRefs);
  tx.setGasPrice(gasPrice);
  tx.setSender(keypair.toSuiAddress());

  // Split coins based on each recipient's amount
  const coins = tx.splitCoins(tx.gas, recipients.map((transfer) => transfer.amount));
  recipients.forEach((transfer, index) => {
    tx.transferObjects([coins[index]], transfer.to);
  });

  // Build and sign the transaction with the client
  const client = newSuiClient({ url: getFullnodeUrl(network) });
  const bytes = await tx.build({ client });
  const { signature } = await keypair.signTransaction(bytes);
  await verifyTransactionSignature(bytes, signature, { address: keypair.getPublicKey().toSuiAddress() });

  return JSON.stringify([toBase64(bytes), signature]);
};

Dieser Probelauf ist entscheidend, um sicherzustellen, dass jedes Detail korrekt ist, bevor Sie echtes Geld einsetzen.

5. Unterzeichnung und Ausführung der Transaktion: Alles zusammenfügen ✍️

Nach einem erfolgreichen Probelauf besteht der nächste Schritt darin, Ihre Transaktion zu signieren und auf der Blockchain zu senden.

5.1. Unterzeichnung der Transaktion

Im Folgenden finden Sie eine verfeinerte Beispielfunktion, die die Transaktion mit dem angegebenen Gasbudget signiert:

const signSuiTransaction = async (requestParams: SignRequestParams): Promise<string> => {
  const { gasBudget, gasPrice, privateKey, coinRefs, network, recipients } = requestParams;
  const keypair = Ed25519Keypair.fromSecretKey(privateKey);
  const tx = newTransaction();

  // Set up gas parameters, including the gas budget
  tx.setGasPayment(coinRefs);
  tx.setGasPrice(gasPrice);
  tx.setGasBudget(gasBudget);
  tx.setSender(keypair.toSuiAddress());

  // Split coins for each recipient
  const coins = tx.splitCoins(tx.gas, recipients.map((transfer) => transfer.amount));
  recipients.forEach((transfer, index) => {
    tx.transferObjects([coins[index]], transfer.to);
  });

  // Build the transaction and sign it
  const client = newSuiClient({ url: getFullnodeUrl(network) });
  const bytes = await tx.build({ client });
  const { signature } = await keypair.signTransaction(bytes);
  await verifyTransactionSignature(bytes, signature, { address: keypair.getPublicKey().toSuiAddress() });

  return JSON.stringify([toBase64(bytes), signature]);
};

Diese Funktion integriert alle notwendigen Parameter — einschließlich Gasdetails und Empfänger — und stellt sicher, dass Ihre Transaktion sicher signiert und zur Ausführung bereit ist.

5.2. Ausführung der Transaktion

Nach der Unterzeichnung wird die Transaktion mithilfe des API-Endpunkts SUI_ExecuteTransactionBlock an die Blockchain gesendet:

curl --location 'https://fullnode.testnet.sui.io:443' \
--header 'Content-Type: application/json' \
--data '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "sui_executeTransactionBlock",
  "params": [
    "<base64-encoded-transaction>",
    ["<signature>"],
    {
      "showInput": true,
      "showRawInput": true,
      "showEffects": true,
      "showEvents": true,
      "showObjectChanges": true,
      "showBalanceChanges": true
    },
    "WaitForLocalExecution"
  ]
}'

Dieser Aufruf gibt eine detaillierte JSON-Antwort mit Informationen wie Transaktionsübersicht, Gasverbrauch, Objektänderungen und Bilanzaktualisierungen zurück.

6. Überprüfung Ihrer Transaktion: Überprüfen Sie alles 🔍

Nach der Ausführung der Transaktion müssen Sie unbedingt überprüfen, ob alles wie erwartet ausgeführt wurde.

6.1. Überprüfung des Browsers

Sie können Ihre Transaktion in einem Blockchain-Explorer wie Suivision Testnet Explorer überprüfen. Der Explorer zeigt alle Transaktionsdetails in einem intuitiven visuellen Format an, sodass Probleme leichter erkannt werden können.

6.2. Überprüfung über die Befehlszeile

Für eine detailliertere Prüfung verwenden Sie die Befehlszeile:

sui client tx-block -- 3FopuDy5qzKm1kLRFZCdi8Lynadym9j15NaVxzUH6nYD

Dieser Befehl bietet eine umfassende Aufschlüsselung der Transaktion, einschließlich Absenderdetails, Gaszahlung, Objektänderungen und Ausführungsstatus.

7. Analyse der JSON-Antwort: Die Ebenen einer Transaktion verstehen

Lassen Sie uns die JSON-Antwort entpacken, die Sie nach der Ausführung Ihrer Transaktion erhalten:

7.1. Überblick über die Transaktion

  • jsonrpc & id: Standardfelder für das JSON-RPC-Protokoll.
  • Digest: Der eindeutige Transaktions-Hash (z. B. „3fopuDY5QZKM1KLRFZCDI8LYNADYM9J15NAVXZUH6NYD“), der für das Tracking verwendet wird.
  • TimeStampMS & Checkpoint: Geben Sie den Kontext an, wann die Transaktion ausgeführt wurde, und den Blockchain-Checkpoint zu diesem Zeitpunkt.

7.2. Inhalt der Transaktion

  • Sender- und Gasdaten: Enthält die Adresse des Absenders und alle gasbezogenen Konfigurationen (Zahlung, Preis, Budget).
  • Operationen (Transaktionen): Die Transaktionslogik umfasst Operationen wie:
  • SplitCoins: Zerlegen einer Gasmünze in kleinere Teile.
  • TransferObjects: Verschieben von Münzsegmenten an die angegebenen Empfängeradressen.
  • Signaturen: Kryptografische Signaturen (Base64-kodiert) stellen die Authentizität der Transaktion sicher.

7.3. Auswirkungen auf die Ausführung

  • Status: Der Status „Erfolg“ bestätigt, dass die Transaktion ohne Fehler verarbeitet wurde.
  • Gasverbrauch: Zeigt die Rechen- und Lagerkosten sowie etwaige Rabatte an.
  • Objektänderungen: Beschreibt, welche Objekte als Ergebnis der Transaktion geändert, erstellt oder aktualisiert wurden.
  • Abhängigkeiten: Listet verwandte Transaktions-Hashes auf, von denen diese Transaktion abhängt.

Diese granulare Aufschlüsselung ist für das Debuggen und die Verbesserung der Leistung Ihrer DApp unerlässlich.

8. Praktische Einblicke für Entwickler: Tipps und Erkenntnisse

Wenn Sie jeden Schritt dieses Prozesses verstehen, erwerben Sie die Fähigkeiten, um sichere, effiziente Web3-Anwendungen auf Sui zu erstellen. Diese Erkenntnisse helfen Ihnen nicht nur bei der Behebung von Problemen, sondern ermöglichen es Ihnen auch, innerhalb des Sui-Ökosystems selbstbewusst Innovationen voranzutreiben.

  • Sui
  • SDKs and Developer Tools
  • Transaction Processing
3
Teilen
Kommentare
.
Wir verwenden Cookies, um sicherzustellen, dass Sie die beste Erfahrung auf unserer Website haben.
Mehr Infos