SQL के साथ मूलभूत एथेरियम विषय सीखें
कई एथेरियम ट्यूटोरियल डिवेलपर को लक्षित करते हैं, लेकिन डेटा विश्लेषकों या उन लोगों के लिए शैक्षिक संसाधनों की कमी है जो क्लाइंट या नोड चलाए बिना ऑन-चेन डेटा देखना चाहते हैं।
यह ट्यूटोरियल पाठकों को ड्यून एनालिटिक्स (opens in a new tab) द्वारा प्रदान किए गए इंटरफ़ेस के माध्यम से स्ट्रक्चर्ड क्वेरी लैंग्वेज (SQL) के साथ ऑन-चेन डेटा की क्वेरी करके लेनदेन, ब्लोक और गैस सहित मूलभूत एथेरियम अवधारणाओं को समझने में मदद करता है।
ऑन-चेन डेटा हमें एथेरियम, नेटवर्क और कंप्यूटिंग शक्ति के लिए एक अर्थव्यवस्था को समझने में मदद कर सकता है और इसे आज एथेरियम के सामने आने वाली चुनौतियों (यानी, बढ़ती गैस कीमतें) और, इससे भी महत्वपूर्ण बात, स्केलिंग समाधानों के आसपास की चर्चाओं को समझने के लिए एक आधार के रूप में काम करना चाहिए।
लेनदेन
एथेरियम पर एक यूज़र की यात्रा एक यूज़र-नियंत्रित खाता या ETH बैलेंस वाली एक इकाई को शुरू करने के साथ शुरू होती है। दो प्रकार के खाते होते हैं - उपयोगकर्ता-नियंत्रित या एक स्मार्ट अनुबंध (ethereum.org देखें)।
किसी भी खाते को ईथरस्कैन (opens in a new tab) या ब्लॉकस्काउट (opens in a new tab) जैसे ब्लॉक खोजकर्ता पर देखा जा सकता है। ब्लॉक खोजकर्ता एथेरियम के डेटा का एक पोर्टल हैं। वे वास्तविक समय में, ब्लोक, लेनदेन, माईनर, खाते और अन्य ऑन-चेन गतिविधि पर डेटा प्रदर्शित करते हैं (यहां देखें)।
हालांकि, एक यूज़र बाहरी ब्लॉक खोजकर्ताओं द्वारा प्रदान की गई जानकारी का मिलान करने के लिए सीधे डेटा की क्वेरी करना चाह सकता है। ड्यून एनालिटिक्स (opens in a new tab) SQL के कुछ ज्ञान वाले किसी भी व्यक्ति को यह क्षमता प्रदान करता है।
संदर्भ के लिए, एथेरियम फाउंडेशन (EF) के लिए स्मार्ट अनुबंध खाते को ब्लॉकस्काउट (opens in a new tab) पर देखा जा सकता है।
ध्यान देने वाली एक बात यह है कि EF सहित सभी खातों में, एक सार्वजनिक पता होता है जिसका उपयोग लेनदेन भेजने और प्राप्त करने के लिए किया जा सकता है।
ईथरस्कैन पर खाता बैलेंस में नियमित लेनदेन और आंतरिक लेनदेन शामिल हैं। आंतरिक लेनदेन, नाम के बावजूद, वास्तविक लेनदेन नहीं हैं जो श्रृंखला की स्थिति को बदलते हैं। वे मूल्य हस्तांतरण हैं जो एक अनुबंध को निष्पादित करके शुरू किए जाते हैं (स्रोत (opens in a new tab))। चूंकि आंतरिक लेनदेन में कोई हस्ताक्षर नहीं होता है, इसलिए वे ब्लॉकचेन पर शामिल नहीं होते हैं और ड्यून एनालिटिक्स के साथ क्वेरी नहीं किए जा सकते।
इसलिए, यह ट्यूटोरियल नियमित लेनदेन पर ध्यान केंद्रित करेगा। इसे इस तरह से क्वेरी किया जा सकता है:
WITH temp_table AS (
SELECT
hash,
block_number,
block_time,
"from",
"to",
value / 1e18 AS ether,
gas_used,
gas_price / 1e9 AS gas_price_gwei
FROM ethereum."transactions"
WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
ORDER BY block_time DESC
)
SELECT
hash,
block_number,
block_time,
"from",
"to",
ether,
(gas_used * gas_price_gwei) / 1e9 AS txn_fee
FROM temp_table
यह वही जानकारी देगा जो ईथरस्कैन के लेनदेन पृष्ठ पर प्रदान की गई है। तुलना के लिए, यहां दो स्रोत दिए गए हैं:
ईथरस्कैन
ब्लॉकस्काउट पर EF का अनुबंध पृष्ठ। (opens in a new tab)
डून एनालिटिक्स
आप डैशबोर्ड यहां (opens in a new tab) पा सकते हैं। क्वेरी देखने के लिए तालिका पर क्लिक करें (ऊपर भी देखें)।
लेनदेन को तोड़ना
एक प्रस्तुत लेनदेन में कई जानकारी शामिल होती है (स्रोत):
- प्राप्तकर्ता: प्राप्तकर्ता पता ("to" के रूप में क्वेरी किया गया)
- हस्ताक्षर: जबकि एक प्रेषक की निजी चाबी एक लेनदेन पर हस्ताक्षर करती है, हम SQL के साथ जो क्वेरी कर सकते हैं वह प्रेषक का सार्वजनिक पता ("from") है।
- मान: यह हस्तांतरित ETH की राशि है (
etherकॉलम देखें)। - डेटा: यह मनमाना डेटा है जिसे हैश किया गया है (
dataकॉलम देखें) - gasLimit – गैस इकाइयों की अधिकतम मात्रा जो लेनदेन द्वारा उपभोग की जा सकती है। गैस की इकाइयां कम्प्यूटेशनल चरणों का प्रतिनिधित्व करती हैं
- maxPriorityFeePerGas - माईनर को टिप के रूप में शामिल की जाने वाली गैस की अधिकतम राशि
- maxFeePerGas - लेनदेन के लिए भुगतान की जाने वाली गैस की अधिकतम राशि (baseFeePerGas और maxPriorityFeePerGas सहित)
हम एथेरियम फाउंडेशन के सार्वजनिक पते पर किए गए लेनदेन के लिए इस विशिष्ट जानकारी की क्वेरी कर सकते हैं:
SELECT
"to",
"from",
value / 1e18 AS ether,
data,
gas_limit,
gas_price / 1e9 AS gas_price_gwei,
gas_used,
ROUND(((gas_used / gas_limit) * 100),2) AS gas_used_pct
FROM ethereum."transactions"
WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
ORDER BY block_time DESC
ब्लॉक
प्रत्येक लेनदेन एथेरियम वर्चुअल मशीन (EVM) की स्थिति को बदल देगा (स्रोत)। लेनदेन को सत्यापित होने और एक ब्लोक में शामिल होने के लिए नेटवर्क पर प्रसारित किया जाता है। प्रत्येक लेनदेन एक ब्लोक संख्या से जुड़ा होता है। डेटा देखने के लिए, हम एक विशिष्ट ब्लोक संख्या: 12396854 की क्वेरी कर सकते हैं (इस लेखन के समय, 11/5/21 तक एथेरियम फाउंडेशन लेनदेन के बीच सबसे हालिया ब्लोक)।
इसके अलावा, जब हम अगले दो ब्लोक की क्वेरी करते हैं, तो हम देख सकते हैं कि प्रत्येक ब्लोक में पिछले ब्लोक का हैश होता है (यानी, पैरेंट हैश), यह दर्शाता है कि ब्लॉकचेन कैसे बनता है।
प्रत्येक ब्लोक में इसके पैरेंट ब्लोक का एक संदर्भ होता है। यह नीचे hash और parent_hash कॉलम के बीच दिखाया गया है (स्रोत):
ड्यून एनालिटिक्स पर क्वेरी (opens in a new tab) यहां दी गई है:
SELECT
time,
number,
hash,
parent_hash,
nonce
FROM ethereum."blocks"
WHERE "number" = 12396854 OR "number" = 12396855 OR "number" = 12396856
LIMIT 10
हम समय, ब्लोक संख्या, कठिनाई, हैश, पैरेंट हैश और नॉन्स की क्वेरी करके एक ब्लोक की जांच कर सकते हैं।
यह क्वेरी केवल लेनदेन की सूची को कवर नहीं करती है जिसके लिए नीचे एक अलग क्वेरी और स्टेट रूट की आवश्यकता होती है। एक पूर्ण या अभिलेखीय नोड सभी लेनदेन और स्थिति संक्रमणों को संग्रहीत करेगा, जो क्लाइंट को किसी भी समय श्रृंखला की स्थिति की क्वेरी करने की अनुमति देता है। क्योंकि इसके लिए बड़े भंडारण स्थान की आवश्यकता होती है, हम श्रृंखला डेटा को स्थिति डेटा से अलग कर सकते हैं:
- श्रृंखला डेटा (ब्लोक की सूची, लेनदेन)
- स्थिति डेटा (प्रत्येक लेनदेन के स्थिति संक्रमण का परिणाम)
स्टेट रूट बाद वाले में आता है और यह अंतर्निहित डेटा है (ऑन-चेन संग्रहीत नहीं है), जबकि श्रृंखला डेटा स्पष्ट है और स्वयं श्रृंखला पर संग्रहीत है (स्रोत (opens in a new tab))।
इस ट्यूटोरियल के लिए, हम ऑन-चेन डेटा पर ध्यान केंद्रित करेंगे जिसे ड्यून एनालिटिक्स के माध्यम से SQL के साथ क्वेरी किया जा सकता है।
जैसा कि ऊपर कहा गया है, प्रत्येक ब्लोक में लेनदेन की एक सूची होती है, हम एक विशिष्ट ब्लोक के लिए फ़िल्टर करके इसे क्वेरी कर सकते हैं। हम सबसे हालिया ब्लोक, 12396854 का प्रयास करेंगे:
SELECT * FROM ethereum."transactions"
WHERE block_number = 12396854
ORDER BY block_time DESC`
Dune पर SQL आउटपुट यहां दिया गया है:
श्रृंखला में जोड़े जाने वाला यह एकल ब्लोक एथेरियम वर्चुअल मशीन (EVM) की स्थिति को बदलता है। दर्जनों कभी-कभी, सैकड़ों लेनदेन एक साथ सत्यापित किए जाते हैं। इस विशिष्ट मामले में, 222 लेनदेन शामिल थे।
यह देखने के लिए कि वास्तव में कितने सफल हुए, हम सफल लेनदेन की गणना करने के लिए एक और फ़िल्टर जोड़ेंगे:
WITH temp_table AS (
SELECT * FROM ethereum."transactions"
WHERE block_number = 12396854 AND success = true
ORDER BY block_time DESC
)
SELECT
COUNT(success) AS num_successful_txn
FROM temp_table
ब्लोक 12396854 के लिए, कुल 222 लेनदेन में से, 204 को सफलतापूर्वक सत्यापित किया गया:
लेनदेन अनुरोध प्रति सेकंड दर्जनों बार होते हैं, लेकिन ब्लोक लगभग हर 15 सेकंड में एक बार प्रतिबद्ध होते हैं (स्रोत)।
यह देखने के लिए कि लगभग हर 15 सेकंड में एक ब्लोक का उत्पादन होता है, हम प्रति दिन ब्लोक की अनुमानित औसत संख्या (~ 5760) प्राप्त करने के लिए एक दिन में सेकंड की संख्या (86400) को 15 से विभाजित कर सकते हैं।
प्रति दिन उत्पादित एथेरियम ब्लोक के लिए चार्ट (2016 - वर्तमान) है:
इस समयावधि में प्रतिदिन उत्पादित ब्लोक की औसत संख्या ~5,874 है:
क्वेरी हैं:
# 2016 से प्रतिदिन उत्पादित ब्लोक की संख्या की कल्पना करने के लिए क्वेरी
SELECT
DATE_TRUNC('day', time) AS dt,
COUNT(*) AS block_count
FROM ethereum."blocks"
GROUP BY dt
OFFSET 1
# प्रति दिन उत्पादित ब्लोक की औसत संख्या
WITH temp_table AS (
SELECT
DATE_TRUNC('day', time) AS dt,
COUNT(*) AS block_count
FROM ethereum."blocks"
GROUP BY dt
OFFSET 1
)
SELECT
AVG(block_count) AS avg_block_count
FROM temp_table
2016 से प्रति दिन उत्पादित ब्लोक की औसत संख्या उस संख्या से थोड़ी अधिक 5,874 है। वैकल्पिक रूप से, 86400 सेकंड को 5874 औसत ब्लोक से विभाजित करने पर 14.7 सेकंड या लगभग हर 15 सेकंड में एक ब्लोक आता है।
गैस
ब्लोक आकार में सीमित हैं। अधिकतम ब्लोक आकार गतिशील है और नेटवर्क मांग के अनुसार 12,500,000 और 25,000,000 इकाइयों के बीच बदलता रहता है। मनमाने ढंग से बड़े ब्लोक आकार को रोकने के लिए सीमाएं आवश्यक हैं जो डिस्क स्थान और गति आवश्यकताओं के मामले में पूर्ण नोड पर दबाव डालते हैं (स्रोत)।
ब्लोक गैस सीमा की अवधारणा का एक तरीका इसे उपलब्ध ब्लोक स्थान की आपूर्ति के रूप में सोचना है जिसमें लेनदेन को बैच किया जाता है। ब्लोक गैस सीमा को 2016 से आज तक क्वेरी और विज़ुअलाइज़ किया जा सकता है:
SELECT
DATE_TRUNC('day', time) AS dt,
AVG(gas_limit) AS avg_block_gas_limit
FROM ethereum."blocks"
GROUP BY dt
OFFSET 1
फिर एथेरियम श्रृंखला पर किए गए कंप्यूटिंग के लिए भुगतान करने के लिए दैनिक रूप से उपयोग की जाने वाली वास्तविक गैस है (यानी, लेनदेन भेजना, स्मार्ट अनुबंध को कॉल करना, एक एनएफटी का टकसाल बनाना)। यह उपलब्ध एथेरियम ब्लोक स्थान के लिए मांग है:
SELECT
DATE_TRUNC('day', time) AS dt,
AVG(gas_used) AS avg_block_gas_used
FROM ethereum."blocks"
GROUP BY dt
OFFSET 1
हम इन दोनों चार्ट को एक साथ रखकर यह भी देख सकते हैं कि मांग और आपूर्ति कैसे मिलती है:
इसलिए हम उपलब्ध आपूर्ति को देखते हुए, एथेरियम ब्लोक स्थान की मांग के एक कार्य के रूप में गैस की कीमतों को समझ सकते हैं।
अंत में, हम एथेरियम श्रृंखला के लिए औसत दैनिक गैस कीमतों की क्वेरी करना चाह सकते हैं, हालांकि, ऐसा करने से क्वेरी का समय विशेष रूप से लंबा होगा, इसलिए हम अपनी क्वेरी को एथेरियम फाउंडेशन द्वारा प्रति लेनदेन भुगतान की गई गैस की औसत राशि पर फ़िल्टर करेंगे।
हम वर्षों से एथेरियम फाउंडेशन के पते पर किए गए सभी लेनदेन के लिए भुगतान की गई गैस की कीमतें देख सकते हैं। यहां क्वेरी है:
SELECT
block_time,
gas_price / 1e9 AS gas_price_gwei,
value / 1e18 AS eth_sent
FROM ethereum."transactions"
WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
ORDER BY block_time DESC
सारांश
इस ट्यूटोरियल के साथ, हम ऑन-चेन डेटा की क्वेरी करके और उसका अनुभव करके मूलभूत एथेरियम अवधारणाओं को और एथेरियम ब्लॉकचेन कैसे काम करता है, को समझते हैं।
इस ट्यूटोरियल में उपयोग किए गए सभी कोड वाला डैशबोर्ड यहां (opens in a new tab) पाया जा सकता है।
web3 का पता लगाने के लिए डेटा के अधिक उपयोग के लिए मुझे ट्विटर पर खोजें (opens in a new tab)।
पेज का अंतिम अपडेट: 3 अप्रैल 2026










