ప్రధాన కంటెంట్‌కు దాటవేయి

SQLతో ప్రాథమిక ఎథీరియం అంశాలను నేర్చుకోండి

SQL
క్వెరీ చేయడం
లావాదేవీలు
డేటా-మరియు-విశ్లేషణలు
ప్రారంభ స్థాయి
పాల్ అపివత్
11 మే, 2021
7 నిమిషాల పఠనం

చాలా ఎథీరియం ట్యుటోరియల్స్ డెవలపర్‌లను లక్ష్యంగా చేసుకుంటాయి, కానీ డేటా విశ్లేషకులకు లేదా క్లయింట్ లేదా నోడ్‌ను రన్ చేయకుండా ఆన్‌చైన్ డేటాను చూడాలనుకునే వ్యక్తుల కోసం విద్యా వనరుల కొరత ఉంది.

Dune Analytics (opens in a new tab) అందించిన ఇంటర్‌ఫేస్ ద్వారా స్ట్రక్చర్డ్ క్వెరీ లాంగ్వేజ్ (SQL)తో ఆన్‌చైన్ డేటాను క్వెరీ చేయడం ద్వారా లావాదేవీలు, బ్లాక్‌లు మరియు గ్యాస్‌తో సహా ప్రాథమిక ఎథీరియం కాన్సెప్ట్‌లను అర్థం చేసుకోవడానికి ఈ ట్యుటోరియల్ పాఠకులకు సహాయపడుతుంది.

ఆన్‌చైన్ డేటా ఎథీరియంను, నెట్‌వర్క్‌ను మరియు కంప్యూటింగ్ పవర్ కోసం ఒక ఆర్థిక వ్యవస్థగా అర్థం చేసుకోవడంలో మాకు సహాయపడుతుంది మరియు ఈ రోజు ఎథీరియం ఎదుర్కొంటున్న సవాళ్లను (అంటే, పెరుగుతున్న గ్యాస్ ధరలు) మరియు మరీ ముఖ్యంగా, స్కేలింగ్ పరిష్కారాల చుట్టూ ఉన్న చర్చలను అర్థం చేసుకోవడానికి ఒక ఆధారంగా ఉపయోగపడుతుంది.

లావాదేవీలు

ఎథీరియంపై వినియోగదారు ప్రయాణం వినియోగదారు-నియంత్రిత ఖాతా లేదా ETH బ్యాలెన్స్ ఉన్న ఎంటిటీని ప్రారంభించడంతో మొదలవుతుంది. రెండు ఖాతా రకాలు ఉన్నాయి - వినియోగదారు-నియంత్రిత లేదా స్మార్ట్ కాంట్రాక్ట్ (ethereum.org చూడండి).

ఏదైనా ఖాతాను Etherscan (opens in a new tab) లేదా Blockscout (opens in a new tab) వంటి బ్లాక్ ఎక్స్‌ప్లోరర్‌లో చూడవచ్చు. బ్లాక్ ఎక్స్‌ప్లోరర్‌లు ఎథీరియం డేటాకు ఒక పోర్టల్. అవి బ్లాక్‌లు, లావాదేవీలు, మైనర్‌లు, ఖాతాలు మరియు ఇతర ఆన్‌చైన్ కార్యకలాపాలపై డేటాను నిజ సమయంలో ప్రదర్శిస్తాయి (ఇక్కడ చూడండి).

అయితే, బాహ్య బ్లాక్ ఎక్స్‌ప్లోరర్‌లు అందించిన సమాచారాన్ని సరిపోల్చడానికి వినియోగదారు నేరుగా డేటాను క్వెరీ చేయాలనుకోవచ్చు. Dune Analytics (opens in a new tab) SQL గురించి కొంత అవగాహన ఉన్న ఎవరికైనా ఈ సామర్థ్యాన్ని అందిస్తుంది.

సూచన కోసం, ఎథీరియం ఫౌండేషన్ (EF) కోసం స్మార్ట్ కాంట్రాక్ట్ ఖాతాను Blockscout (opens in a new tab)లో చూడవచ్చు.

గమనించాల్సిన ఒక విషయం ఏమిటంటే, EFతో సహా అన్ని ఖాతాలకు లావాదేవీలను పంపడానికి మరియు స్వీకరించడానికి ఉపయోగపడే పబ్లిక్ చిరునామా ఉంటుంది.

Etherscanలోని ఖాతా బ్యాలెన్స్ సాధారణ లావాదేవీలు మరియు అంతర్గత లావాదేవీలను కలిగి ఉంటుంది. అంతర్గత లావాదేవీలు, పేరు అలా ఉన్నప్పటికీ, చైన్ స్థితిని మార్చే వాస్తవ లావాదేవీలు కావు. అవి కాంట్రాక్ట్‌ను అమలు చేయడం ద్వారా ప్రారంభించబడిన విలువ బదిలీలు (మూలం (opens in a new tab)). అంతర్గత లావాదేవీలకు సంతకం లేనందున, అవి బ్లాక్‌చైన్‌లో చేర్చబడవు మరియు Dune Analyticsతో క్వెరీ చేయబడవు.

కాబట్టి, ఈ ట్యుటోరియల్ సాధారణ లావాదేవీలపై దృష్టి పెడుతుంది. దీనిని ఈ విధంగా క్వెరీ చేయవచ్చు:

ఇది Etherscan లావాదేవీ పేజీలో అందించిన అదే సమాచారాన్ని ఇస్తుంది. పోలిక కోసం, ఇక్కడ రెండు మూలాలు ఉన్నాయి:

Etherscan

Screenshot of Etherscan transaction explorer view

Blockscoutలో EF కాంట్రాక్ట్ పేజీ. (opens in a new tab)

Dune Analytics

Screenshot of a Dune Analytics query dashboard

మీరు డ్యాష్‌బోర్డ్‌ను ఇక్కడ (opens in a new tab) కనుగొనవచ్చు. క్వెరీని చూడటానికి పట్టికపై క్లిక్ చేయండి (పైన కూడా చూడండి).

లావాదేవీలను విడదీయడం

సమర్పించబడిన లావాదేవీలో వీటితో సహా అనేక సమాచారాలు ఉంటాయి (మూలం):

  • గ్రహీత: స్వీకరించే చిరునామా ("to"గా క్వెరీ చేయబడింది)
  • సంతకం: పంపినవారి ప్రైవేట్ కీలు లావాదేవీపై సంతకం చేసినప్పటికీ, మనం SQLతో క్వెరీ చేయగలిగేది పంపినవారి పబ్లిక్ చిరునామా ("from").
  • విలువ: ఇది బదిలీ చేయబడిన ETH మొత్తం (ether నిలువు వరుసను చూడండి).
  • డేటా: ఇది హాష్ చేయబడిన ఏకపక్ష డేటా (data నిలువు వరుసను చూడండి)
  • gasLimit – లావాదేవీ ద్వారా వినియోగించబడే గ్యాస్ యూనిట్ల గరిష్ట మొత్తం. గ్యాస్ యూనిట్లు గణన దశలను సూచిస్తాయి
  • maxPriorityFeePerGas - మైనర్‌కు టిప్‌గా చేర్చాల్సిన గ్యాస్ గరిష్ట మొత్తం
  • maxFeePerGas - లావాదేవీ కోసం చెల్లించడానికి ఇష్టపడే గ్యాస్ గరిష్ట మొత్తం (baseFeePerGas మరియు maxPriorityFeePerGas కలుపుకుని)

ఎథీరియం ఫౌండేషన్ పబ్లిక్ చిరునామాకు జరిగే లావాదేవీల కోసం మనం ఈ నిర్దిష్ట సమాచారాన్ని క్వెరీ చేయవచ్చు:

బ్లాక్‌లు

ప్రతి లావాదేవీ ఎథీరియం వర్చువల్ మెషీన్ (EVM) స్థితిని మారుస్తుంది (మూలం). లావాదేవీలు ధృవీకరించబడటానికి మరియు బ్లాక్‌లో చేర్చబడటానికి నెట్‌వర్క్‌కు ప్రసారం చేయబడతాయి. ప్రతి లావాదేవీ ఒక బ్లాక్ నంబర్‌తో అనుబంధించబడి ఉంటుంది. డేటాను చూడటానికి, మనం నిర్దిష్ట బ్లాక్ నంబర్‌ను క్వెరీ చేయవచ్చు: 12396854 (ఇది రాసే సమయానికి ఎథీరియం ఫౌండేషన్ లావాదేవీలలో అత్యంత ఇటీవలి బ్లాక్, 11/5/21).

అంతేకాకుండా, మనం తదుపరి రెండు బ్లాక్‌లను క్వెరీ చేసినప్పుడు, ప్రతి బ్లాక్ మునుపటి బ్లాక్ యొక్క హాష్‌ను (అంటే, పేరెంట్ హాష్) కలిగి ఉన్నట్లు చూడవచ్చు, ఇది బ్లాక్‌చైన్ ఎలా ఏర్పడుతుందో వివరిస్తుంది.

ప్రతి బ్లాక్ దాని పేరెంట్ బ్లాక్‌కు సూచనను కలిగి ఉంటుంది. ఇది క్రింద hash మరియు parent_hash నిలువు వరుసల మధ్య చూపబడింది (మూలం):

parent_hash

Dune Analyticsలో క్వెరీ (opens in a new tab) ఇక్కడ ఉంది:

సమయం, బ్లాక్ నంబర్, క్లిష్టత, హాష్, పేరెంట్ హాష్ మరియు నాన్స్‌ను క్వెరీ చేయడం ద్వారా మనం బ్లాక్‌ను పరిశీలించవచ్చు.

ఈ క్వెరీ కవర్ చేయని ఏకైక విషయం లావాదేవీల జాబితా, దీనికి క్రింద ప్రత్యేక క్వెరీ అవసరం మరియు స్టేట్ రూట్. పూర్తి లేదా ఆర్కైవల్ నోడ్ అన్ని లావాదేవీలు మరియు స్థితి పరివర్తనలను నిల్వ చేస్తుంది, క్లయింట్‌లు ఏ సమయంలోనైనా చైన్ స్థితిని క్వెరీ చేయడానికి అనుమతిస్తుంది. దీనికి పెద్ద నిల్వ స్థలం అవసరం కాబట్టి, మనం చైన్ డేటాను స్థితి డేటా నుండి వేరు చేయవచ్చు:

  • చైన్ డేటా (బ్లాక్‌లు, లావాదేవీల జాబితా)
  • స్థితి డేటా (ప్రతి లావాదేవీ స్థితి పరివర్తన ఫలితం)

స్టేట్ రూట్ రెండవ వర్గంలోకి వస్తుంది మరియు ఇది అంతర్గత డేటా (ఆన్‌చైన్‌లో నిల్వ చేయబడదు), అయితే చైన్ డేటా స్పష్టంగా ఉంటుంది మరియు చైన్‌లోనే నిల్వ చేయబడుతుంది (మూలం (opens in a new tab)).

ఈ ట్యుటోరియల్ కోసం, Dune Analytics ద్వారా SQLతో క్వెరీ చేయగల ఆన్‌చైన్ డేటాపై మనం దృష్టి పెడతాము.

పైన పేర్కొన్న విధంగా, ప్రతి బ్లాక్ లావాదేవీల జాబితాను కలిగి ఉంటుంది, నిర్దిష్ట బ్లాక్ కోసం ఫిల్టర్ చేయడం ద్వారా మనం దీన్ని క్వెరీ చేయవచ్చు. మనం అత్యంత ఇటీవలి బ్లాక్, 12396854ని ప్రయత్నిస్తాము:

SELECT * FROM ethereum."transactions"
WHERE block_number = 12396854
ORDER BY block_time DESC`

Duneలో SQL అవుట్‌పుట్ ఇక్కడ ఉంది:

Screenshot of a list of Ethereum transactions

చైన్‌కు జోడించబడుతున్న ఈ ఒకే బ్లాక్ ఎథీరియం వర్చువల్ మెషీన్ (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 విజయవంతంగా ధృవీకరించబడ్డాయి:

Screenshot of a successful Ethereum transaction

లావాదేవీల అభ్యర్థనలు సెకనుకు డజన్ల కొద్దీ సార్లు జరుగుతాయి, కానీ బ్లాక్‌లు సుమారు ప్రతి 15 సెకన్లకు ఒకసారి కట్టుబడి ఉంటాయి (మూలం).

సుమారు ప్రతి 15 సెకన్లకు ఒక బ్లాక్ ఉత్పత్తి అవుతుందని చూడటానికి, రోజుకు అంచనా వేసిన సగటు బ్లాక్‌ల సంఖ్యను (~ 5760) పొందడానికి మనం ఒక రోజులోని సెకన్ల సంఖ్యను (86400) 15తో భాగించవచ్చు.

రోజుకు ఉత్పత్తి అయ్యే ఎథీరియం బ్లాక్‌ల చార్ట్ (2016 - ప్రస్తుతం) ఇది:

Chart showing daily Ethereum block production

ఈ కాల వ్యవధిలో ప్రతిరోజూ ఉత్పత్తి అయ్యే సగటు బ్లాక్‌ల సంఖ్య ~5,874:

Chart showing daily Ethereum block production

క్వెరీలు ఇవి:

2016 నుండి రోజుకు ఉత్పత్తి అయ్యే సగటు బ్లాక్‌ల సంఖ్య ఆ సంఖ్య కంటే కొంచెం ఎక్కువగా 5,874 వద్ద ఉంది. ప్రత్యామ్నాయంగా, 86400 సెకన్లను 5874 సగటు బ్లాక్‌లతో భాగిస్తే 14.7 సెకన్లు లేదా సుమారు ప్రతి 15 సెకన్లకు ఒక బ్లాక్ వస్తుంది.

గ్యాస్

బ్లాక్‌లు పరిమాణంలో పరిమితం చేయబడ్డాయి. గరిష్ట బ్లాక్ పరిమాణం డైనమిక్ మరియు నెట్‌వర్క్ డిమాండ్ ప్రకారం 12,500,000 మరియు 25,000,000 యూనిట్ల మధ్య మారుతూ ఉంటుంది. డిస్క్ స్పేస్ మరియు వేగ అవసరాల పరంగా పూర్తి నోడ్‌లపై ఒత్తిడి తెచ్చే ఏకపక్షంగా పెద్ద బ్లాక్ పరిమాణాలను నిరోధించడానికి పరిమితులు అవసరం (మూలం).

బ్లాక్ గ్యాస్ పరిమితిని సంభావితం చేయడానికి ఒక మార్గం ఏమిటంటే, లావాదేవీలను బ్యాచ్ చేయడానికి అందుబాటులో ఉన్న బ్లాక్ స్పేస్ యొక్క సరఫరాగా భావించడం. బ్లాక్ గ్యాస్ పరిమితిని 2016 నుండి నేటి వరకు క్వెరీ చేయవచ్చు మరియు దృశ్యమానం చేయవచ్చు:

Chart showing average Ethereum gas limit over time

SELECT
    DATE_TRUNC('day', time) AS dt,
    AVG(gas_limit) AS avg_block_gas_limit
FROM ethereum."blocks"
GROUP BY dt
OFFSET 1

ఆపై ఎథీరియం చైన్‌లో చేసిన కంప్యూటింగ్ కోసం చెల్లించడానికి ప్రతిరోజూ ఉపయోగించే వాస్తవ గ్యాస్ ఉంటుంది (అంటే, లావాదేవీని పంపడం, స్మార్ట్ కాంట్రాక్ట్‌ను కాల్ చేయడం, NFTని ముద్రించడం). ఇది అందుబాటులో ఉన్న ఎథీరియం బ్లాక్ స్పేస్ కోసం డిమాండ్:

Chart showing daily Ethereum gas used

SELECT
    DATE_TRUNC('day', time) AS dt,
    AVG(gas_used) AS avg_block_gas_used
FROM ethereum."blocks"
GROUP BY dt
OFFSET 1

డిమాండ్ మరియు సరఫరా ఎలా వరుసలో ఉన్నాయో చూడటానికి మనం ఈ రెండు చార్ట్‌లను కలిపి ఉంచవచ్చు:

gas_demand_supply

కాబట్టి అందుబాటులో ఉన్న సరఫరాను బట్టి, ఎథీరియం బ్లాక్ స్పేస్ కోసం డిమాండ్ యొక్క విధిగా మనం గ్యాస్ ధరలను అర్థం చేసుకోవచ్చు.

చివరగా, మనం ఎథీరియం చైన్ కోసం సగటు రోజువారీ గ్యాస్ ధరలను క్వెరీ చేయాలనుకోవచ్చు, అయితే, అలా చేయడం వల్ల క్వెరీ సమయం చాలా ఎక్కువగా ఉంటుంది, కాబట్టి మనం ఎథీరియం ఫౌండేషన్ ద్వారా ప్రతి లావాదేవీకి చెల్లించే సగటు గ్యాస్ మొత్తానికి మన క్వెరీని ఫిల్టర్ చేస్తాము.

Chart showing Ethereum Foundation daily gas usage

సంవత్సరాలుగా ఎథీరియం ఫౌండేషన్ చిరునామాకు చేసిన అన్ని లావాదేవీలకు చెల్లించిన గ్యాస్ ధరలను మనం చూడవచ్చు. క్వెరీ ఇక్కడ ఉంది:

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).