लेनदेन भेजने के लिए राइट ऑपरेशन का उपयोग
लक्षित दर्शक: डेवलपर्स जो अपना पहला स्टेट-चेंजिंग ऑपरेशन करने के लिए तैयार हैं।
पूर्वापेक्षाएँ: एक फंडेड Sui Devnet वॉलेट और एक बेसिक Node.js सेटअप।
लक्ष्य: गैस और हस्ताक्षरों की भूमिका को समझते हुए, Sui टोकन को दूसरे पते पर ट्रांसफर करने के लिए एक स्क्रिप्ट लिखना।
परिचय
हमारे पिछले ट्यूटोरियल्स में, हमने रीड ऑपरेशन्स किए। हमने SuiClient (क्लर्क) से जानकारी मांगी, जो मुफ़्त और गुमनाम था।
अब, हम एक राइट ऑपरेशन करेंगे। हम आपके वॉलेट से दूसरे एड्रेस पर Sui टोकन ट्रांसफर करने जा रहे हैं। क्योंकि यह ब्लॉकचेन की स्थिति को बदलता है, इसलिए दो नई आवश्यकताएं लागू होती हैं:
- हस्ताक्षर (Signature): यह साबित करने के लिए कि फंड आपके हैं, आपको अनुरोध पर क्रिप्टोग्राफिक रूप से हस्ताक्षर करना होगा।
- गैस (Gas): लेनदेन को संसाधित करने के लिए नेटवर्क को मुआवजा देने के लिए आपको Sui टोकन में एक शुल्क का भुगतान करना होगा।
पूर्वापेक्षाएँ
इस ट्यूटोरियल के लिए, आप अकेले एक यादृच्छिक सार्वजनिक एंडपॉइंट का उपयोग नहीं कर सकते। आपको चाहिए:
- एक फंडेड वॉलेट: एक वॉलेट के लिए 12-शब्दों का रिकवरी वाक्यांश जिसमें Sui Devnet टोकन हों।
- Ed25519 कीपेयर लाइब्रेरी: लेनदेन पर हस्ताक्षर करने के लिए।
आवश्यक क्रिप्टोग्राफी पैकेज इंस्टॉल करें (यदि आपने पहले से नहीं किया है):
npm install @mysten/sui
किसी वास्तविक ऐप में, अपनी निजी कुंजी या रिकवरी वाक्यांश को कभी भी हार्डकोड न करें। हमेशा एनवायरनमेंट वेरिएबल (उदाहरण के लिए,
.env) का उपयोग करें। इस ट्यूटोरियल के लिए, हम सरलता के लिए एक वेरिएबल का उपयोग करेंगे, लेकिन इस कोड को GitHub पर कमेिट न करें।
चरण-दर-चरण गाइड
चरण 1: टूल आयात करें और क्लाइंट सेटअप करें
transfer.js नाम की एक फ़ाइल बनाएँ। हमें कनेक्शन के लिए SuiClient और साइनिंग के लिए हमारे "पेन" के रूप में काम करने के लिए Ed25519Keypair की आवश्यकता है।
import { SuiClient, getFullnodeUrl } from '@mysten/sui/client';
import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';
import { Transaction } from '@mysten/sui/transactions';
// 1. Connect to Devnet
const client = new SuiClient({ url: getFullnodeUrl('devnet') });
// 2. Load your Wallet (The Sender)
// REPLACE THIS with your actual 12-word mnemonic phrase
const MNEMONIC = "word1 word2 word3 ... word12";
const keypair = Ed25519Keypair.deriveKeypair(MNEMONIC);
const senderAddress = keypair.getPublicKey().toSuiAddress();
console.log(`📦 प्रेषक पता: ${senderAddress}`);
चरण 2: "पैकेज" (लेनदेन) का निर्माण करें
Sui में, आप कच्चे कमांड नहीं भेजते हैं। आप एक लेनदेन बनाते हैं। इसे शिपिंग लेबल भरने और बॉक्स को सील करने से पहले उसमें आइटम रखने के रूप में सोचें।
हम tx.splitCoins कमांड का उपयोग करेंगे। यह नेटवर्क को बताता है: "मेरे प्राथमिक SUI कॉइन को लें, एक विशिष्ट राशि अलग करें, और इसे ट्रांसफर के लिए तैयार करें।"
// 3. Define the Recipient
const RECIPIENT = '0x9999...'; // Replace with a friend's address or a burn address
// 4. Create the Transaction Container
const tx = new Transaction();
// Split 1000 MIST (The smallest unit of SUI) from the gas coin
const [coinToSend] = tx.splitCoins(tx.gas, [1000]);
// Transfer the split coin to the recipient
tx.transferObjects([coinToSend], RECIPIENT);
चरण 3: साइन करें, डाक शुल्क का भुगतान करें, और भेजें
यह वह महत्वपूर्ण चरण है जहाँ गैस की गणना की जाती है।
जब आप नीचे दिए गए कोड को निष्पादित करते हैं, तो SuiClient:
- गैस का अनुमान लगाता है: यह आपके
txबॉक्स को देखता है, उसका वजन (गणनात्मक जटिलता) मापता है, और आवश्यक शुल्क निर्धारित करता है। - हस्ताक्षर करता है: यह लेनदेन पर क्रिप्टोग्राफ़िक रूप से हस्ताक्षर करने के लिए आपके
कीपेयरका उपयोग करता है। - चलाता है: यह हस्ताक्षरित लेनदेन को नेटवर्क पर सबमिट करता है।
async function sendTransaction() {
try {
console.log("📝 लेनदेन पर हस्ताक्षर और सबमिट कर रहा है...");
const result = await client.signAndExecuteTransaction({
signer: keypair,
transaction: tx,
});
console.log("✅ लेनदेन सबमिट हो गया!");
console.log(`डाइजेस्ट (ट्रैकिंग आईडी): ${result.digest}`);
} catch (error) {
console.error("❌ लेनदेन विफल:", error);
}
}
sendTransaction();
इस लेनदेन में गैस को समझना
आपने ध्यान दिया होगा कि हमने स्पष्ट रूप से कोई शुल्क राशि निर्धारित नहीं की है।
- स्वचालित बजटिंग: डिफ़ॉल्ट रूप से, SDK आपके लिए गैस लागत का स्वचालित रूप से अनुमान लगाता है। यह सुनिश्चित करता है कि आप लेनदेन को संसाधित करने के लिए पर्याप्त राशि प्रदान करते हुए, बहुत अधिक भुगतान न करें।
- भुगतान का स्रोत: SDK इस शुल्क का भुगतान करने के लिए आपके वॉलेट से स्वचालित रूप से एक Sui कॉइन ऑब्जेक्ट चुनता है। यही कारण है कि आप अपने सभी Sui नहीं भेज सकते; आपको ट्रांसफर की गैस का भुगतान करने के लिए हमेशा थोड़ा सा हिस्सा पीछे छोड़ना होगा।
अपेक्षित आउटपुट
सफल होने पर, आपको एक ट्रांजैक्शन डाइजेस्ट प्राप्त होगा। यह आपका आपका ट्रैकिंग नंबर है।
📦 प्रेषक का पता: 0x123...
📝 ट्रांजैक्शन पर हस्ताक्षर और सबमिट कर रहा है...
✅ लेनदेन सबमिट हो गया!
डाइजेस्ट (ट्रैकिंग आईडी): 5T7x...9B2a
आप इस डाइजेस्ट को कॉपी करके किसी Sui एक्सप्लोरर (जैसे Suiscan) में पेस्ट कर सकते हैं, ताकि आप अपने ट्रांसफर का स्थायी रिकॉर्ड देख सकें, जिसमें यह भी शामिल है कि इसमें ठीक-ठीक कितनी गैस खर्च हुई।