सुई इस समय की श्रृंखला है, और हालांकि मूव सुई पर स्मार्ट अनुबंध लिखने के लिए पवित्र कब्र है, टाइपस्क्रिप्ट समर्थन महत्वपूर्ण है। आप टाइपस्क्रिप्ट के साथ पारिस्थितिकी तंत्र पर सुई और अधिकांश डेफी ऐप्स के साथ बातचीत कर सकते हैं और उनका उपयोग कर सकते हैं।
इस ट्यूटोरियल में, मैं आपको टाइपस्क्रिप्ट के माध्यम से सुई नेटवर्क के साथ इंटरैक्ट करना सिखाऊंगा। आप सीखेंगे कि ब्लॉकचेन की स्थिति कैसे पढ़ें, अपने टाइपस्क्रिप्ट प्रोग्राम से श्रृंखला में लेनदेन कैसे लिखें।
एकमात्र शर्त यह है कि इस ट्यूटोरियल को सुचारू रूप से चलाने के लिए आपको बुनियादी जेएस/टीएस ज्ञान की आवश्यकता होगी। मैं आपको बाकी सभी चीज़ों के बारे में बताऊंगा।
सबसे पहले, अपने टर्मिनल में एक नया टाइपस्क्रिप्ट प्रोजेक्ट बनाएं और एक नया Node.js प्रोजेक्ट आरंभ करें।
mkdir SuiTS cd SuiTS npm init -y
यदि आपके पास यह पहले से नहीं है तो टाइपस्क्रिप्ट को विकास निर्भरता के रूप में स्थापित करें।
npm install typescript --save-dev npm install ts-node //runs TS without the need for transpiling
अब, आप एक नया टाइपस्क्रिप्ट प्रोजेक्ट प्रारंभ कर सकते हैं। यह कमांड डिफ़ॉल्ट विकल्पों के साथ एक tsconfig.json फ़ाइल बनाएगा जिसे आप अपने प्रोजेक्ट के लिए अनुकूलित कर सकते हैं।
npx tsc --init
tsconfig.json खोलें और इन कॉन्फ़िगरेशन को पेस्ट करें।
{ "compilerOptions": { "target": "ES2020", "module": "CommonJS", "outDir": "./dist", "rootDir": "./src", "strict": true, "esModuleInterop": true, "types": ["node"], "resolveJsonModule": true }, "exclude": ["node_modules"], "scripts": { "build": "tsc", "start": "node dist/index.js" } }
एक src निर्देशिका बनाएं जहां आप अपनी टाइपस्क्रिप्ट फ़ाइलें जोड़ेंगे।
mkdir src touch src/index.ts
अंत में, इस आदेश के साथ सुई टाइपस्क्रिप्ट एसडीके स्थापित करें।
npm i @mysten/sui.js
तुम सब सेट हो। आप टाइपस्क्रिप्ट प्रोग्राम लिखना शुरू कर सकते हैं जो सुई ब्लॉकचेन के साथ इंटरैक्ट करते हैं।
श्रृंखला के साथ इंटरैक्ट करने के लिए आपको सुई ब्लॉकचेन से कनेक्ट होना होगा।
सबसे पहले, SDK क्लाइंट मॉड्यूल से getFullnodeUrl और SuiClient आयात करें।
import { getFullnodeUrl, SuiClient } from '@mysten/sui/client';
अब, आपके इच्छित कनेक्शन के आधार पर, आप सुई टेस्टनेट, मेननेट, लोकलनेट, या डेवनेट के पूर्ण नोड यूआरएल को पुनः प्राप्त करने के लिए getFullnodeUrl का उपयोग कर सकते हैं; फिर, क्लाइंट इंस्टेंस से कनेक्ट करने के लिए SuiClient का उपयोग करें।
import { getFullnodeUrl, SuiClient } from '@mysten/sui/client'; const rpcUrl = getFullnodeUrl('mainnet'); const client = new SuiClient({ url: rpcUrl });
अपने कनेक्शन का परीक्षण करने के लिए, आप नेटवर्क की नवीनतम स्थिति प्राप्त करने के लिए getLatestSuiSystemState का उपयोग कर सकते हैं।
// index.ts import { getFullnodeUrl, SuiClient } from '@mysten/sui/client'; const rpcUrl = getFullnodeUrl("mainnet"); const client = new SuiClient({ url: rpcUrl }); async function getNetworkStatus() { const currentEpoch = await client.getLatestSuiSystemState(); console.log(currentEpoch) } getNetworkStatus();
अब, टाइपस्क्रिप्ट कोड को जावास्क्रिप्ट में ट्रांसपाइल करें और इसे इस कमांड के साथ चलाएं:
ts-node index.ts
जब आप कमांड निष्पादित करते हैं तो आपको इसके समान आउटपुट की उम्मीद करनी चाहिए।
वॉलेट बनाना एक और लोकप्रिय ऑपरेशन है जो सुई नेटवर्क पर निर्माण करने पर उपयोगी हो सकता है।
यहां बताया गया है कि सुई वॉलेट कीपेयर कैसे बनाएं और कीपेयर से निजी और सार्वजनिक कुंजी कैसे प्राप्त करें।
import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519'; import { getFullnodeUrl, SuiClient } from '@mysten/sui/client'; const rpcUrl = getFullnodeUrl("mainnet"); const client = new SuiClient({ url: rpcUrl }); // random Keypair const keypair = new Ed25519Keypair(); const publicKey = keypair.getPublicKey(); const privatekey = keypair.getSecretKey(); console.log(privatekey.toString()); console.log(publicKey.toSuiAddress());
Ed25519कीपेयर फ़ंक्शन एक नई कुंजी जोड़ी बनाता है। GetPublicKey और getPrivateKey विधियाँ आपको क्रमशः सार्वजनिक और निजी कुंजियों तक पहुँच प्रदान करती हैं।
यहां मेरे द्वारा प्रोग्राम के साथ जेनरेट की गई निजी और सार्वजनिक कुंजियों का स्ट्रिंग आउटपुट है:
suiprivkey1qq9r6rkysny207t5vr7m5025swh7w0wzra9p0553paprhn8zshqsx2rz64r New Sui Address: 0xbd46d7582ced464ef369114252704b10317436ef70f196a33fcf2c724991fcba
मैं संचालन के अगले सेट के लिए इस वॉलेट को 0.25 सुई से वित्तपोषित कर रहा हूं। बेझिझक वॉलेट को सत्यापित और स्कैन करें। कोई धनराशि न भेजें; यह सिर्फ एक डमी वॉलेट है।
आप वॉलेट पते में सिक्कों पर विवरण प्राप्त करने के लिए अपने क्लाइंट इंस्टेंस पर getCoins फ़ंक्शन का उपयोग कर सकते हैं।
import { getFullnodeUrl, SuiClient } from '@mysten/sui/client'; // use getFullnodeUrl to define the Devnet RPC location const rpcUrl = getFullnodeUrl('mainnet'); // create a client connected to devnet const client = new SuiClient({ url: rpcUrl }); async function getOwnedCoins() { const coins = await client.getCoins({ owner: '0xbd46d7582ced464ef369114252704b10317436ef70f196a33fcf2c724991fcba', }); console.log(coins); } getOwnedCoins();
फ़ंक्शन अकेले सुई सिक्के और विवरण पर विवरण देता है। आउटपुट MIST, सुई गैस टोकन में है। 1 SUI 1 बिलियन MIST के बराबर है।
वैलेट में सभी सिक्कों की सूची प्राप्त करने के लिए getAllCoins फ़ंक्शन का उपयोग उसी तरह किया जा सकता है।
async function getAllCoins() { // Get the list of owned coins (tokens) for the given owner address const ownedCoins = await client.getAllCoins({ owner: "0xbd46d7582ced464ef369114252704b10317436ef70f196a33fcf2c724991fcba" }); // Access the coin data const coins = ownedCoins.data; // Iterate through the coins and print their details for (const coin of coins) { console.log(`Coin Type: ${coin.coinType}`); console.log(`Coin Object ID: ${coin.coinObjectId}`); console.log(`Balance: ${coin.balance}`); console.log('--------------------'); } // If there is more data, handle pagination if (ownedCoins.hasNextPage) { console.log('More data available. Fetching next page...'); // You can handle the next page using ownedCoins.nextCursor if needed } } getAllCoins();
इस उदाहरण के लिए, मैंने हॉप एग्रीगेटर पर $FUD के लिए कुछ सुई का कारोबार किया, और यहां प्रोग्राम चलाने के बाद आउटपुट है।
अंत में, दिलचस्प बात यह है कि आप ब्लॉकचेन पर लेनदेन भेजना सीखेंगे।
आइए कुछ $FUD टोकन दूसरे वॉलेट में भेजें। यह सुई नेटवर्क पर किसी भी सिक्के के लिए काम करता है।
import {getFullnodeUrl, SuiClient} from '@mysten/sui/client'; import {Ed25519Keypair} from '@mysten/sui/keypairs/ed25519'; import {Transaction} from '@mysten/sui/transactions'; // Set the RPC URL to connect to the Sui mainnet const rpcUrl = getFullnodeUrl("mainnet"); const client = new SuiClient({url: rpcUrl}); // Create the keypair using the private key const keypair = Ed25519Keypair.fromSecretKey("suiprivkey1qq9r6rkysny207t5vr7m5025swh7w0wzra9p0553paprhn8zshqsx2rz64r"); // FUD coin type const FUD_TYPE = '0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1::fud::FUD'; async function sendFUD() { const tx = new Transaction(); // Fetch FUD coins owned by the sender const coins = await client.getCoins({owner: keypair.getPublicKey().toSuiAddress(), coinType: FUD_TYPE}); if (coins.data.length === 0) { console.log("No FUD coins found in the wallet."); return; } // Choose the first available FUD coin and split it for the transfer (adjust amount if needed) const [coin] = tx.splitCoins(coins.data[0].coinObjectId, [100000000]); tx.transferObjects([coin], '0xb0042cf2c5a16d0a240fc1391d570cd5fe06548f860583f1878c327db70f2a22'); const result = await client.signAndExecuteTransaction({signer: keypair, transaction: tx}); await client.waitForTransaction({digest: result.digest}); console.log("Transaction successful. Digest:", result.digest); } sendFUD().then(console.log).catch(console.error);
सबसे पहले, मैंने जाँच की कि वॉलेट में कुछ $FUD है और इसे स्थानांतरण के लिए विभाजित कर दिया। Tx.transferObjects विभाजित सिक्के को निर्दिष्ट पते पर स्थानांतरित करता है।
अंत में, आपको client.signAndExecuteTransaction के साथ लेनदेन पर हस्ताक्षर करने की आवश्यकता है, और लेनदेन की पुष्टि करने के लिए आप waitForTransaction के साथ लेनदेन की प्रतीक्षा कर सकते हैं
आपने आधिकारिक टाइपस्क्रिप्ट एसडीके का उपयोग करके सुई ब्लॉकचेन के साथ इंटरैक्ट करना सीख लिया है। आप अपने नए अर्जित ज्ञान से सुई पर बहुत कुछ बना सकते हैं, जैसे वॉलेट और बॉट बनाना।
आप अधिक परिष्कृत डीएपी बनाने के लिए सुई पर मूव कॉन्ट्रैक्ट्स के साथ इंटरैक्ट करने का तरीका सीखकर इसे आगे ले जा सकते हैं
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3