பிரதான உள்ளடக்கத்திற்குச் செல்

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

SQL
வினவல்
பரிவர்த்தனைகள்
தொடக்கநிலை
Paul Apivat
11 மே, 2021
7 நிமிட வாசிப்பு

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

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

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

பரிவர்த்தனைகள்

எத்தேரியத்தில் ஒரு பயனரின் பயணம், பயனர் கட்டுப்பாட்டில் உள்ள கணக்கைத் தொடங்குவதில் அல்லது ETH இருப்புடன் கூடிய ஒரு நிறுவனத்துடன் தொடங்குகிறது. பயனர் கட்டுப்பாட்டில் உள்ள கணக்கு அல்லது ஒரு ஸ்மார்ட் ஒப்பந்தம் என இரண்டு கணக்கு வகைகள் உள்ளன (ethereum.org பார்க்கவும்).

Etherscanopens in a new tab அல்லது Blockscoutopens in a new tab போன்ற ஒரு தொகுதி ஆய்வியில் எந்தக் கணக்கையும் பார்க்கலாம். தொகுதி ஆய்விகள் எத்தேரியத்தின் தரவுகளுக்கான ஒரு நுழைவாயில் ஆகும். அவை நிகழ்நேரத்தில், தொகுதிகள், பரிவர்த்தனைகள், மைனர்கள், கணக்குகள் மற்றும் பிற ஆன்செயின் செயல்பாடுகள் பற்றிய தரவைக் காட்டுகின்றன (இங்கே பார்க்கவும்).

இருப்பினும், ஒரு பயனர் வெளிப்புற தொகுதி ஆய்விகளால் வழங்கப்பட்ட தகவல்களைச் சரிபார்க்க நேரடியாக தரவை வினவ விரும்பலாம். Dune Analyticsopens in a new tab SQL பற்றிய சில அறிவு உள்ள எவருக்கும் இந்தத் திறனை வழங்குகிறது.

குறிப்புக்காக, எத்தேரியம் ஃபவுண்டேஷனின் (EF) ஸ்மார்ட் ஒப்பந்தக் கணக்கை Blockscoutopens in a new tab இல் பார்க்கலாம்.

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

ஈதர்ஸ்கேனில் உள்ள கணக்கு இருப்பில் வழக்கமான பரிவர்த்தனைகள் மற்றும் உள் பரிவர்த்தனைகள் உள்ளன. உள் பரிவர்த்தனைகள், பெயருக்கு மாறாக, சங்கிலியின் நிலையை மாற்றும் உண்மையான பரிவர்த்தனைகள் அல்ல. அவை ஒரு ஒப்பந்தத்தை செயல்படுத்துவதன் மூலம் தொடங்கப்பட்ட மதிப்புப் பரிமாற்றங்கள் ஆகும் (ஆதாரம்opens in a new tab). உள் பரிவர்த்தனைகளுக்கு கையொப்பம் இல்லாததால், அவை not பிளாக்செயினில் சேர்க்கப்படவில்லை மற்றும் 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

பிளாக்ஸ்கவுட்டில் EF இன் ஒப்பந்தப் பக்கம்.opens in a new tab

Dune அனலிட்டிக்ஸ்

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

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

சமர்ப்பிக்கப்பட்ட ஒரு பரிவர்த்தனை பல தகவல்களை உள்ளடக்கியது (ஆதாரம்):

  • பெறுநர்: பெறும் முகவரி ("to" என வினவப்பட்டது)
  • கையொப்பம்: அனுப்புநரின் தனிப்பட்ட திறவுகோல்கள் ஒரு பரிவர்த்தனையில் கையொப்பமிடும்போது, SQL மூலம் நாம் வினவக்கூடியது அனுப்புநரின் பொது முகவரி ("from") ஆகும்.
  • மதிப்பு: இது மாற்றப்பட்ட ETH இன் அளவு (ether நெடுவரிசையைப் பார்க்கவும்).
  • தரவு: இது துண்டிக்கப்பட்ட தன்னிச்சையான தரவு (data நெடுவரிசையைப் பார்க்கவும்)
  • கேஸ் வரம்பு – பரிவர்த்தனையால் நுகரப்படும் அதிகபட்ச கேஸ் யூனிட்களின் அளவு. கேஸ் யூனிட்கள் கணக்கீட்டு படிகளைக் குறிக்கின்றன
  • ஒரு கேஸுக்கான அதிகபட்ச முன்னுரிமைக் கட்டணம் (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
அனைத்தையும் காட்டு

தொகுதிகள்

ஒவ்வொரு பரிவர்த்தனையும் எத்தேரியம் மெய்நிகர் இயந்திரத்தின் (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
அனைத்தையும் காட்டு

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

இந்த வினவல் உள்ளடக்காத ஒரே விஷயம் list of transaction, இதற்கு கீழே ஒரு தனி வினவல் தேவைப்படுகிறது மற்றும் 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# 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# ஒரு நாளைக்கு உற்பத்தி செய்யப்படும் தொகுதிகளின் சராசரி எண்ணிக்கை
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 வினாடிக்கும் ஒரு தொகுதி என்று வருகிறது.

எரிவாயு

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

தொகுதி கேஸ் வரம்பை கருத்தாக்கம் செய்வதற்கான ஒரு வழி, அதை பரிவர்த்தனைகளைத் தொகுக்கக் கிடைக்கும் தொகுதி இடத்தின் வழங்கல் என்று நினைப்பதாகும். தொகுதி கேஸ் வரம்பை 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-ஐ உருவாக்குதல்) செலுத்த தினசரி பயன்படுத்தப்படும் உண்மையான கேஸ் உள்ளது. இது கிடைக்கும் எத்தேரியம் தொகுதி இடத்திற்கான தேவை:

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 காணலாம்.

வெப்3-ஐ ஆராய தரவை மேலும் பயன்படுத்த, என்னை ட்விட்டரில் கண்டறியவும்opens in a new tab.

பக்கத்தின் கடைசி புதுப்பிப்பு: 29 செப்டம்பர், 2025

இந்தப் பயிற்சி உதவியாக இருந்ததா?