முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்

SQL மூலம் அடிப்படை எத்தேரியம் தலைப்புகளைக் கற்றுக்கொள்ளுங்கள்

SQL
Querying
Transactions
data-and-analytics
தொடக்கநிலையாளர்
பால் அபிவத்
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 மூலம் வினவ முடியாது.

எனவே, இந்த வழிகாட்டி வழக்கமான பரிவர்த்தனைகளில் கவனம் செலுத்தும். இதை இவ்வாறு வினவலாம்:

1WITH temp_table AS (
2SELECT
3 hash,
4 block_number,
5 block_time,
6 "from",
7 "to",
8 value / 1e18 AS ether,
9 gas_used,
10 gas_price / 1e9 AS gas_price_gwei
11FROM ethereum."transactions"
12WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
13ORDER BY block_time DESC
14)
15SELECT
16 hash,
17 block_number,
18 block_time,
19 "from",
20 "to",
21 ether,
22 (gas_used * gas_price_gwei) / 1e9 AS txn_fee
23FROM temp_table
அனைத்தையும் காட்டு

இது Etherscan இன் பரிவர்த்தனைப் பக்கத்தில் வழங்கப்பட்ட அதே தகவலை வழங்கும். ஒப்பீட்டிற்காக, இரண்டு ஆதாரங்கள் இங்கே:

Etherscan

Etherscan பரிவர்த்தனை எக்ஸ்ப்ளோரர் காட்சியின் ஸ்கிரீன்ஷாட்

Blockscout இல் EF இன் ஒப்பந்தப் பக்கம். (opens in a new tab)

Dune Analytics

Dune Analytics வினவல் டாஷ்போர்டின் ஸ்கிரீன்ஷாட்

டாஷ்போர்டை இங்கே (opens in a new tab) காணலாம். வினவலைப் பார்க்க அட்டவணையைக் கிளிக் செய்யவும் (மேலேயும் பார்க்கவும்).

பரிவர்த்தனைகளை உடைத்தல்

சமர்ப்பிக்கப்பட்ட பரிவர்த்தனையில் பல தகவல்கள் அடங்கும், அவற்றுள் (ஆதாரம்):

  • பெறுநர் (Recipient): பெறும் முகவரி ("to" என வினவப்படுகிறது)
  • கையொப்பம் (Signature): அனுப்புநரின் தனிப்பட்ட விசைகள் ஒரு பரிவர்த்தனையில் கையொப்பமிடும் அதே வேளையில், SQL மூலம் நாம் வினவக்கூடியது அனுப்புநரின் பொது முகவரியாகும் ("from").
  • மதிப்பு (Value): இது மாற்றப்பட்ட ETH இன் அளவு (ether நெடுவரிசையைப் பார்க்கவும்).
  • தரவு (Data): இது ஹேஷ் செய்யப்பட்ட தன்னிச்சையான தரவு (data நெடுவரிசையைப் பார்க்கவும்)
  • gasLimit – பரிவர்த்தனையால் நுகரக்கூடிய அதிகபட்ச எரிவாயு அலகுகள். எரிவாயுவின் அலகுகள் கணக்கீட்டு படிகளைக் குறிக்கின்றன
  • maxPriorityFeePerGas - மைனருக்கு டிப்ஸாகச் சேர்க்கப்பட வேண்டிய அதிகபட்ச எரிவாயு அளவு
  • maxFeePerGas - பரிவர்த்தனைக்குச் செலுத்தத் தயாராக உள்ள அதிகபட்ச எரிவாயு அளவு (baseFeePerGas மற்றும் maxPriorityFeePerGas உட்பட)

எத்தேரியம் அறக்கட்டளையின் பொது முகவரிக்கான பரிவர்த்தனைகளுக்கான இந்த குறிப்பிட்ட தகவல்களை நாம் வினவலாம்:

1SELECT
2 "to",
3 "from",
4 value / 1e18 AS ether,
5 data,
6 gas_limit,
7 gas_price / 1e9 AS gas_price_gwei,
8 gas_used,
9 ROUND(((gas_used / gas_limit) * 100),2) AS gas_used_pct
10FROM ethereum."transactions"
11WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
12ORDER BY block_time DESC
அனைத்தையும் காட்டு

தொகுதிகள் (Blocks)

ஒவ்வொரு பரிவர்த்தனையும் எத்தேரியம் மெய்நிகர் இயந்திரத்தின் (EVM) நிலையை மாற்றும் (ஆதாரம்). பரிவர்த்தனைகள் சரிபார்க்கப்பட்டு ஒரு தொகுதியில் சேர்க்கப்படுவதற்காக நெட்வொர்க்கில் ஒளிபரப்பப்படுகின்றன. ஒவ்வொரு பரிவர்த்தனையும் ஒரு தொகுதி எண்ணுடன் தொடர்புடையது. தரவைப் பார்க்க, நாம் ஒரு குறிப்பிட்ட தொகுதி எண்ணை வினவலாம்: 12396854 (இதை எழுதும் நிலவரப்படி, 11/5/21, எத்தேரியம் அறக்கட்டளை பரிவர்த்தனைகளில் மிகச் சமீபத்திய தொகுதி).

மேலும், அடுத்த இரண்டு தொகுதிகளை நாம் வினவும்போது, ஒவ்வொரு தொகுதியும் முந்தைய தொகுதியின் ஹேஷைக் (அதாவது, பெற்றோர் ஹேஷ்) கொண்டிருப்பதைக் காணலாம், இது பிளாக்செயின் எவ்வாறு உருவாகிறது என்பதை விளக்குகிறது.

ஒவ்வொரு தொகுதியும் அதன் பெற்றோர் தொகுதிக்கான குறிப்பைக் கொண்டுள்ளது. இது கீழே hash மற்றும் parent_hash நெடுவரிசைகளுக்கு இடையே காட்டப்பட்டுள்ளது (ஆதாரம்):

parent_hash

Dune Analytics இல் உள்ள வினவல் (opens in a new tab) இங்கே:

1SELECT
2 time,
3 number,
4 hash,
5 parent_hash,
6 nonce
7FROM ethereum."blocks"
8WHERE "number" = 12396854 OR "number" = 12396855 OR "number" = 12396856
9LIMIT 10
அனைத்தையும் காட்டு

நேரம், தொகுதி எண், சிரமம், ஹேஷ், பெற்றோர் ஹேஷ் மற்றும் நான்ஸ் ஆகியவற்றை வினவுவதன் மூலம் ஒரு தொகுதியை நாம் ஆராயலாம்.

இந்த வினவல் உள்ளடக்காத ஒரே விஷயம் பரிவர்த்தனைகளின் பட்டியல் ஆகும், இதற்கு கீழே ஒரு தனி வினவல் மற்றும் ஸ்டேட் ரூட் (state root) தேவைப்படுகிறது. ஒரு முழு அல்லது காப்பக நோடு அனைத்து பரிவர்த்தனைகளையும் நிலை மாற்றங்களையும் சேமிக்கும், இது வாடிக்கையாளர்களை எந்த நேரத்திலும் சங்கிலியின் நிலையை வினவ அனுமதிக்கிறது. இதற்கு பெரிய சேமிப்பு இடம் தேவைப்படுவதால், சங்கிலித் தரவை நிலைத் தரவிலிருந்து நாம் பிரிக்கலாம்:

  • சங்கிலித் தரவு (தொகுதிகளின் பட்டியல், பரிவர்த்தனைகள்)
  • நிலைத் தரவு (ஒவ்வொரு பரிவர்த்தனையின் நிலை மாற்றத்தின் முடிவு)

ஸ்டேட் ரூட் பிந்தையதில் அடங்கும் மற்றும் இது மறைமுக தரவு (ஆன்செயினில் சேமிக்கப்படவில்லை), அதே சமயம் சங்கிலித் தரவு வெளிப்படையானது மற்றும் சங்கிலியிலேயே சேமிக்கப்படுகிறது (ஆதாரம் (opens in a new tab)).

இந்த வழிகாட்டியில், Dune Analytics வழியாக SQL மூலம் வினவ முடியும் ஆன்செயின் தரவுகளில் கவனம் செலுத்துவோம்.

மேலே கூறியது போல், ஒவ்வொரு தொகுதியும் பரிவர்த்தனைகளின் பட்டியலைக் கொண்டுள்ளது, ஒரு குறிப்பிட்ட தொகுதியை வடிகட்டுவதன் மூலம் இதை நாம் வினவலாம். மிகச் சமீபத்திய தொகுதியான 12396854 ஐ முயற்சிப்போம்:

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

Dune இல் உள்ள SQL வெளியீடு இங்கே:

எத்தேரியம் பரிவர்த்தனைகளின் பட்டியலின் ஸ்கிரீன்ஷாட்

சங்கிலியில் சேர்க்கப்படும் இந்த ஒற்றைத் தொகுதி எத்தேரியம் மெய்நிகர் இயந்திரத்தின் (EVM) நிலையை மாற்றுகிறது. டஜன் கணக்கான சில நேரங்களில், நூற்றுக்கணக்கான பரிவர்த்தனைகள் ஒரே நேரத்தில் சரிபார்க்கப்படுகின்றன. இந்த குறிப்பிட்ட வழக்கில், 222 பரிவர்த்தனைகள் சேர்க்கப்பட்டுள்ளன.

உண்மையில் எத்தனை வெற்றிகரமாக இருந்தன என்பதைப் பார்க்க, வெற்றிகரமான பரிவர்த்தனைகளை எண்ணுவதற்கு மற்றொரு வடிப்பானைச் சேர்ப்போம்:

1WITH temp_table AS (
2 SELECT * FROM ethereum."transactions"
3 WHERE block_number = 12396854 AND success = true
4 ORDER BY block_time DESC
5)
6SELECT
7 COUNT(success) AS num_successful_txn
8FROM temp_table

தொகுதி 12396854 க்கு, மொத்தம் 222 பரிவர்த்தனைகளில், 204 வெற்றிகரமாகச் சரிபார்க்கப்பட்டன:

வெற்றிகரமான எத்தேரியம் பரிவர்த்தனையின் ஸ்கிரீன்ஷாட்

பரிவர்த்தனை கோரிக்கைகள் வினாடிக்கு டஜன் கணக்கான முறை நிகழ்கின்றன, ஆனால் தொகுதிகள் தோராயமாக ஒவ்வொரு 15 வினாடிகளுக்கும் ஒரு முறை உறுதி செய்யப்படுகின்றன (ஆதாரம்).

தோராயமாக ஒவ்வொரு 15 வினாடிகளுக்கும் ஒரு தொகுதி உருவாக்கப்படுவதைப் பார்க்க, ஒரு நாளின் வினாடிகளின் எண்ணிக்கையை (86400) 15 ஆல் வகுத்து ஒரு நாளுக்கு மதிப்பிடப்பட்ட சராசரி தொகுதிகளின் எண்ணிக்கையைப் பெறலாம் (~ 5760).

ஒரு நாளுக்கு உருவாக்கப்படும் எத்தேரியம் தொகுதிகளுக்கான விளக்கப்படம் (2016 - தற்போது வரை):

தினசரி எத்தேரியம் தொகுதி உற்பத்தியைக் காட்டும் விளக்கப்படம்

இந்தக் காலக்கட்டத்தில் தினசரி உருவாக்கப்படும் தொகுதிகளின் சராசரி எண்ணிக்கை ~5,874 ஆகும்:

தினசரி எத்தேரியம் தொகுதி உற்பத்தியைக் காட்டும் விளக்கப்படம்

வினவல்கள்:

1# query to visualize number of blocks produced daily since 2016
2
3SELECT
4 DATE_TRUNC('day', time) AS dt,
5 COUNT(*) AS block_count
6FROM ethereum."blocks"
7GROUP BY dt
8OFFSET 1
9
10# average number of blocks produced per day
11
12WITH temp_table AS (
13SELECT
14 DATE_TRUNC('day', time) AS dt,
15 COUNT(*) AS block_count
16FROM ethereum."blocks"
17GROUP BY dt
18OFFSET 1
19)
20SELECT
21 AVG(block_count) AS avg_block_count
22FROM temp_table
அனைத்தையும் காட்டு

2016 முதல் ஒரு நாளுக்கு உருவாக்கப்படும் தொகுதிகளின் சராசரி எண்ணிக்கை அந்த எண்ணை விடச் சற்று அதிகமாக 5,874 ஆக உள்ளது. மாற்றாக, 86400 வினாடிகளை 5874 சராசரி தொகுதிகளால் வகுத்தால் 14.7 வினாடிகள் அல்லது தோராயமாக ஒவ்வொரு 15 வினாடிகளுக்கும் ஒரு தொகுதி வரும்.

எரிவாயு (Gas)

தொகுதிகள் அளவில் கட்டுப்படுத்தப்பட்டவை. அதிகபட்ச தொகுதி அளவு மாறும் தன்மை கொண்டது மற்றும் நெட்வொர்க் தேவைக்கு ஏற்ப 12,500,000 மற்றும் 25,000,000 அலகுகளுக்கு இடையில் மாறுபடும். வட்டு இடம் மற்றும் வேகத் தேவைகளின் அடிப்படையில் முழு நோடுகளில் தன்னிச்சையாகப் பெரிய தொகுதி அளவுகள் அழுத்தத்தை ஏற்படுத்துவதைத் தடுக்க வரம்புகள் தேவைப்படுகின்றன (ஆதாரம்).

தொகுதி எரிவாயு வரம்பைக் கருத்தியல் செய்வதற்கான ஒரு வழி, பரிவர்த்தனைகளைத் தொகுப்பதற்கான கிடைக்கக்கூடிய தொகுதி இடத்தின் விநியோகம் (supply) என்று நினைப்பதாகும். தொகுதி எரிவாயு வரம்பை 2016 முதல் இன்று வரை வினவலாம் மற்றும் காட்சிப்படுத்தலாம்:

காலப்போக்கில் சராசரி எத்தேரியம் எரிவாயு வரம்பைக் காட்டும் விளக்கப்படம்

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

எத்தேரியம் சங்கிலியில் செய்யப்படும் கணக்கீட்டிற்குச் செலுத்த (அதாவது, பரிவர்த்தனையை அனுப்புதல், ஸ்மார்ட் ஒப்பந்தத்தை அழைத்தல், NFT ஐ உருவாக்குதல்) தினசரி பயன்படுத்தப்படும் உண்மையான எரிவாயு உள்ளது. இது கிடைக்கக்கூடிய எத்தேரியம் தொகுதி இடத்திற்கான தேவை (demand) ஆகும்:

தினசரி பயன்படுத்தப்படும் எத்தேரியம் எரிவாயுவைக் காட்டும் விளக்கப்படம்

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

தேவை மற்றும் விநியோகம் எவ்வாறு வரிசையாக உள்ளன என்பதைப் பார்க்க இந்த இரண்டு விளக்கப்படங்களையும் நாம் ஒன்றாக இணைக்கலாம்:

gas_demand_supply

எனவே கிடைக்கக்கூடிய விநியோகத்தைக் கருத்தில் கொண்டு, எத்தேரியம் தொகுதி இடத்திற்கான தேவையின் செயல்பாடாக எரிவாயு விலைகளை நாம் புரிந்து கொள்ளலாம்.

இறுதியாக, எத்தேரியம் சங்கிலிக்கான சராசரி தினசரி எரிவாயு விலைகளை நாம் வினவ விரும்பலாம், இருப்பினும், அவ்வாறு செய்வது குறிப்பாக நீண்ட வினவல் நேரத்தை ஏற்படுத்தும், எனவே எத்தேரியம் அறக்கட்டளையால் ஒரு பரிவர்த்தனைக்குச் செலுத்தப்படும் சராசரி எரிவாயு அளவிற்கு நமது வினவலை வடிகட்டுவோம்.

எத்தேரியம் அறக்கட்டளையின் தினசரி எரிவாயு பயன்பாட்டைக் காட்டும் விளக்கப்படம்

பல ஆண்டுகளாக எத்தேரியம் அறக்கட்டளை முகவரிக்குச் செய்யப்பட்ட அனைத்து பரிவர்த்தனைகளுக்கும் செலுத்தப்பட்ட எரிவாயு விலைகளை நாம் பார்க்கலாம். வினவல் இங்கே:

1SELECT
2 block_time,
3 gas_price / 1e9 AS gas_price_gwei,
4 value / 1e18 AS eth_sent
5FROM ethereum."transactions"
6WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
7ORDER BY block_time DESC

சுருக்கம்

இந்த வழிகாட்டியின் மூலம், ஆன்செயின் தரவை வினவுவதன் மூலமும் உணர்வதன் மூலமும் அடிப்படை எத்தேரியம் கருத்துகளையும் எத்தேரியம் பிளாக்செயின் எவ்வாறு செயல்படுகிறது என்பதையும் நாம் புரிந்துகொள்கிறோம்.

இந்த வழிகாட்டியில் பயன்படுத்தப்படும் அனைத்து குறியீடுகளையும் கொண்ட டாஷ்போர்டை இங்கே (opens in a new tab) காணலாம்.

web3 ஐ ஆராயத் தரவின் கூடுதல் பயன்பாட்டிற்கு Twitter இல் என்னைக் கண்டறியவும் (opens in a new tab).

பக்கம் கடைசியாகப் புதுப்பிக்கப்பட்டது: 3 மார்ச், 2026

இந்த வழிகாட்டி பயனுள்ளதாக இருந்ததா?