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

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

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

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

Dune Analytics (opens in a new tab) வழங்கும் இடைமுகத்தின் மூலம் structured query language (SQL) ஐப் பயன்படுத்தி சங்கிலிசார் தரவை வினவுவதன் மூலம் பரிவர்த்தனைகள், தொகுதிகள் மற்றும் எரிவாயு உள்ளிட்ட அடிப்படை எத்திரியம் கருத்துகளைப் புரிந்துகொள்ள இந்த வழிகாட்டி வாசகர்களுக்கு உதவுகிறது.

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

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

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

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

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

குறிப்புக்காக, எத்தீரியம் அறக்கட்டளைக்கான (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) இதோ:

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

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

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

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

ஒரு நாளைக்கு உருவாக்கப்படும் எத்திரியம் தொகுதிகளுக்கான விளக்கப்படம் (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).