ఎథీరియం గురించి అర్థం చేసుకోవాలనుకుంటున్నారా?
ఎథీరియం ప్రారంభించబడటానికి ముందు, ఈ శ్వేతపత్రం 2014లో ప్రచురించబడింది. 10+ సంవత్సరాల అభివృద్ధి, ప్రధాన అప్గ్రేడ్లు మరియు పర్యావరణ వ్యవస్థ వృద్ధి తర్వాత, అసలు శ్వేతపత్రం నేటి ఎథీరియం ఎలా ఉందో ఇకపై ప్రతిబింబించదు.
ఇది కొన్ని సంవత్సరాల క్రితం నాటిదైనప్పటికీ, ఇది ఇప్పటికీ ఒక ఉపయోగకరమైన సూచనగా మరియు ఎథీరియం మరియు దాని లక్ష్యానికి ఖచ్చితమైన ప్రాతినిధ్యంగా పనిచేస్తున్నందున మేము దిగువన అసలు పత్రాన్ని అలాగే ఉంచుతున్నాము.
తదుపరి తరం స్మార్ట్ కాంట్రాక్ట్ మరియు వికేంద్రీకృత అప్లికేషన్ (dapp) ప్లాట్ఫారమ్
2009లో సతోషి నకమోటో బిట్కాయిన్ను అభివృద్ధి చేయడం అనేది డబ్బు మరియు కరెన్సీలో ఒక సమూలమైన పరిణామంగా తరచుగా ప్రశంసించబడింది, ఇది ఏకకాలంలో ఎలాంటి మద్దతు లేదా "అంతర్గత విలువ (opens in a new tab)" మరియు కేంద్రీకృత జారీదారు లేదా నియంత్రకుడు లేని డిజిటల్ ఆస్తికి మొదటి ఉదాహరణ. అయితే, బిట్కాయిన్ ప్రయోగంలో మరొకటి, బహుశా మరింత ముఖ్యమైన భాగం, పంపిణీ చేయబడిన ఏకాభిప్రాయ సాధనంగా అంతర్లీనంగా ఉన్న బ్లాక్చైన్ సాంకేతికత, మరియు బిట్కాయిన్ యొక్క ఈ ఇతర అంశంపైకి దృష్టి వేగంగా మళ్లడం ప్రారంభమైంది. బ్లాక్చైన్ సాంకేతికత యొక్క సాధారణంగా ఉదహరించబడే ప్రత్యామ్నాయ అప్లికేషన్లలో అనుకూల కరెన్సీలు మరియు ఆర్థిక సాధనాలను సూచించడానికి ఆన్-బ్లాక్చైన్ డిజిటల్ ఆస్తులను ఉపయోగించడం ("కలర్డ్ కాయిన్స్ (opens in a new tab)"), అంతర్లీన భౌతిక పరికరం యొక్క యాజమాన్యం ("స్మార్ట్ ప్రాపర్టీ (opens in a new tab)"), డొమైన్ పేర్ల వంటి నాన్-ఫంగిబుల్ ఆస్తులు ("Namecoin (opens in a new tab)"), అలాగే ఏకపక్ష నియమాలను అమలు చేసే కోడ్ ద్వారా డిజిటల్ ఆస్తులను నేరుగా నియంత్రించే మరింత సంక్లిష్టమైన అప్లికేషన్లు ("స్మార్ట్ కాంట్రాక్ట్లు (opens in a new tab)") లేదా బ్లాక్చైన్ ఆధారిత "వికేంద్రీకృత స్వయంప్రతిపత్త సంస్థలు (opens in a new tab)" (DAOలు) కూడా ఉన్నాయి. ఎథీరియం అందించాలనుకుంటున్నది ఏమిటంటే, అంతర్నిర్మిత పూర్తి స్థాయి ట్యూరింగ్-కంప్లీట్ ప్రోగ్రామింగ్ లాంగ్వేజ్తో కూడిన బ్లాక్చైన్, దీనిని ఏకపక్ష స్థితి పరివర్తన ఫంక్షన్లను ఎన్కోడ్ చేయగల "కాంట్రాక్ట్లను" సృష్టించడానికి ఉపయోగించవచ్చు, తద్వారా వినియోగదారులు పైన వివరించిన ఏవైనా సిస్టమ్లను, అలాగే మనం ఇంకా ఊహించని మరెన్నో సిస్టమ్లను, కేవలం కొన్ని లైన్ల కోడ్లో లాజిక్ను రాయడం ద్వారా సృష్టించడానికి అనుమతిస్తుంది.
బిట్కాయిన్ మరియు ఇప్పటికే ఉన్న భావనల పరిచయం
చరిత్ర
వికేంద్రీకృత డిజిటల్ కరెన్సీ భావన, అలాగే ఆస్తి రిజిస్ట్రీల వంటి ప్రత్యామ్నాయ అప్లికేషన్లు దశాబ్దాలుగా ఉన్నాయి. 1980లు మరియు 1990ల నాటి అనామక ఇ-క్యాష్ ప్రోటోకాల్లు, ఎక్కువగా Chaumian blinding అని పిలువబడే క్రిప్టోగ్రాఫిక్ ప్రిమిటివ్పై ఆధారపడి, అధిక స్థాయి గోప్యతతో కూడిన కరెన్సీని అందించాయి, అయితే కేంద్రీకృత మధ్యవర్తిపై ఆధారపడటం వలన ఈ ప్రోటోకాల్లు పెద్దగా ఆదరణ పొందలేకపోయాయి. 1998లో, Wei Dai యొక్క b-money (opens in a new tab) గణన పజిల్లను పరిష్కరించడం ద్వారా డబ్బును సృష్టించే ఆలోచనను మరియు వికేంద్రీకృత ఏకాభిప్రాయాన్ని ప్రవేశపెట్టిన మొదటి ప్రతిపాదనగా నిలిచింది, అయితే వికేంద్రీకృత ఏకాభిప్రాయాన్ని వాస్తవానికి ఎలా అమలు చేయవచ్చనే వివరాలు ఈ ప్రతిపాదనలో తక్కువగా ఉన్నాయి. 2005లో, Hal Finney "పునర్వినియోగించదగిన ప్రూఫ్స్ ఆఫ్ వర్క్ (opens in a new tab)" అనే భావనను ప్రవేశపెట్టారు, ఇది క్రిప్టోకరెన్సీ కోసం ఒక భావనను సృష్టించడానికి Adam Back యొక్క గణనపరంగా కష్టమైన Hashcash పజిల్లతో పాటు b-money నుండి ఆలోచనలను ఉపయోగించే వ్యవస్థ, కానీ బ్యాకెండ్గా విశ్వసనీయ కంప్యూటింగ్పై ఆధారపడటం ద్వారా ఇది మరోసారి ఆదర్శానికి దూరంగా నిలిచింది. 2009లో, పబ్లిక్ కీ గూఢలిపి శాస్త్రం ద్వారా యాజమాన్యాన్ని నిర్వహించడానికి ఏర్పాటు చేసిన ప్రిమిటివ్లను, నాణేలు ఎవరికి ఉన్నాయో ట్రాక్ చేయడానికి "ప్రూఫ్-ఆఫ్-వర్క్ (PoW)" అని పిలువబడే ఏకాభిప్రాయ అల్గారిథమ్తో కలిపి, Satoshi Nakamoto మొదటిసారిగా వికేంద్రీకృత కరెన్సీని ఆచరణలో అమలు చేశారు.
ప్రూఫ్-ఆఫ్-వర్క్ (PoW) వెనుక ఉన్న యంత్రాంగం ఈ రంగంలో ఒక పురోగతి, ఎందుకంటే ఇది ఏకకాలంలో రెండు సమస్యలను పరిష్కరించింది. మొదట, ఇది సరళమైన మరియు ఓ మోస్తరు ప్రభావవంతమైన ఏకాభిప్రాయ అల్గారిథమ్ను అందించింది, నెట్వర్క్లోని నోడ్లు బిట్కాయిన్ లెడ్జర్ యొక్క స్థితికి సంబంధించిన ప్రామాణిక నవీకరణల సమితిపై సమిష్టిగా అంగీకరించడానికి అనుమతిస్తుంది. రెండవది, ఇది ఏకాభిప్రాయ ప్రక్రియలోకి ఉచిత ప్రవేశాన్ని అనుమతించే యంత్రాంగాన్ని అందించింది, ఏకాభిప్రాయాన్ని ఎవరు ప్రభావితం చేస్తారో నిర్ణయించే రాజకీయ సమస్యను పరిష్కరిస్తూనే, ఏకకాలంలో సిబిల్ దాడులను నిరోధిస్తుంది. ఒక నిర్దిష్ట జాబితాలో ప్రత్యేకమైన అస్తిత్వంగా నమోదు చేయబడాలనే ఆవశ్యకత వంటి భాగస్వామ్యానికి ఉన్న అధికారిక అడ్డంకిని ఆర్థిక అడ్డంకితో భర్తీ చేయడం ద్వారా ఇది చేస్తుంది - ఏకాభిప్రాయ ఓటింగ్ ప్రక్రియలో ఒకే నోడ్ యొక్క బరువు ఆ నోడ్ తీసుకువచ్చే కంప్యూటింగ్ శక్తికి నేరుగా అనులోమానుపాతంలో ఉంటుంది. అప్పటి నుండి, ప్రూఫ్-ఆఫ్-స్టేక్ (PoS) అని పిలువబడే ప్రత్యామ్నాయ విధానం ప్రతిపాదించబడింది, ఇది నోడ్ యొక్క బరువును దాని కరెన్సీ హోల్డింగ్లకు అనులోమానుపాతంలో లెక్కిస్తుంది మరియు గణన వనరులకు కాదు; ఈ రెండు విధానాల సాపేక్ష యోగ్యతల చర్చ ఈ కాగితం పరిధికి మించినది, అయితే క్రిప్టోకరెన్సీకి వెన్నెముకగా పనిచేయడానికి రెండు విధానాలను ఉపయోగించవచ్చని గమనించాలి.
ఒక స్థితి పరివర్తన వ్యవస్థగా బిట్కాయిన్
సాంకేతిక కోణంలో, బిట్కాయిన్ వంటి క్రిప్టోకరెన్సీ యొక్క లెడ్జర్ను స్థితి పరివర్తన వ్యవస్థగా భావించవచ్చు, ఇక్కడ ఇప్పటికే ఉన్న అన్ని బిట్కాయిన్ల యాజమాన్య స్థితిని కలిగి ఉన్న "స్థితి" మరియు ఒక స్థితిని మరియు లావాదేవీని తీసుకుని ఫలితంగా కొత్త స్థితిని అవుట్పుట్ చేసే "స్థితి పరివర్తన ఫంక్షన్" ఉంటాయి. ఉదాహరణకు, ప్రామాణిక బ్యాంకింగ్ వ్యవస్థలో, స్థితి అనేది బ్యాలెన్స్ షీట్, లావాదేవీ అనేది A నుండి B కి $X తరలించడానికి ఒక అభ్యర్థన, మరియు స్థితి పరివర్తన ఫంక్షన్ A ఖాతాలోని విలువను $X తగ్గిస్తుంది మరియు B ఖాతాలోని విలువను $X పెంచుతుంది. మొదట A ఖాతాలో $X కంటే తక్కువ ఉంటే, స్థితి పరివర్తన ఫంక్షన్ ఎర్రర్ను అందిస్తుంది. అందువల్ల, ఎవరైనా అధికారికంగా ఇలా నిర్వచించవచ్చు:
APPLY(S,TX) -> S' లేదా ERROR
పైన నిర్వచించిన బ్యాంకింగ్ వ్యవస్థలో:
APPLY({ Alice: $50, Bob: $50 },"send $20 from Alice to Bob") = { Alice: $30, Bob: $70 }
కానీ:
APPLY({ Alice: $50, Bob: $50 },"send $70 from Alice to Bob") = ERROR
బిట్కాయిన్లో "స్థితి" అనేది ముద్రించబడి ఇంకా ఖర్చు చేయబడని అన్ని నాణేల (సాంకేతికంగా, "ఖర్చు చేయని లావాదేవీ అవుట్పుట్లు" లేదా UTXO) సేకరణ, ప్రతి UTXO ఒక డినామినేషన్ మరియు యజమానిని (20-బైట్ చిరునామా ద్వారా నిర్వచించబడింది, ఇది ప్రాథమికంగా క్రిప్టోగ్రాఫిక్ పబ్లిక్ కీfn1) కలిగి ఉంటుంది. ఒక లావాదేవీ ఒకటి లేదా అంతకంటే ఎక్కువ ఇన్పుట్లను కలిగి ఉంటుంది, ప్రతి ఇన్పుట్ ఇప్పటికే ఉన్న UTXOకి సూచనను మరియు యజమాని చిరునామాతో అనుబంధించబడిన ప్రైవేట్ కీ ద్వారా ఉత్పత్తి చేయబడిన క్రిప్టోగ్రాఫిక్ సంతకాన్ని కలిగి ఉంటుంది, మరియు ఒకటి లేదా అంతకంటే ఎక్కువ అవుట్పుట్లను కలిగి ఉంటుంది, ప్రతి అవుట్పుట్ స్థితికి జోడించాల్సిన కొత్త UTXOని కలిగి ఉంటుంది.
స్థితి పరివర్తన ఫంక్షన్ APPLY(S,TX) -> S' ను స్థూలంగా ఈ క్రింది విధంగా నిర్వచించవచ్చు:
TXలోని ప్రతి ఇన్పుట్ కోసం:- సూచించబడిన UTXO
Sలో లేకపోతే, ఎర్రర్ను అందించండి. - అందించిన సంతకం UTXO యజమానితో సరిపోలకపోతే, ఎర్రర్ను అందించండి.
- సూచించబడిన UTXO
- అన్ని ఇన్పుట్ UTXOల డినామినేషన్ల మొత్తం అన్ని అవుట్పుట్ UTXOల డినామినేషన్ల మొత్తం కంటే తక్కువగా ఉంటే, ఎర్రర్ను అందించండి.
- అన్ని ఇన్పుట్ UTXOలు తీసివేయబడి మరియు అన్ని అవుట్పుట్ UTXOలు జోడించబడిన
Sని అందించండి.
మొదటి దశలోని మొదటి సగం లావాదేవీ పంపేవారు ఉనికిలో లేని నాణేలను ఖర్చు చేయకుండా నిరోధిస్తుంది, మొదటి దశలోని రెండవ సగం లావాదేవీ పంపేవారు ఇతరుల నాణేలను ఖర్చు చేయకుండా నిరోధిస్తుంది మరియు రెండవ దశ విలువ పరిరక్షణను అమలు చేస్తుంది. చెల్లింపు కోసం దీన్ని ఉపయోగించడానికి, ప్రోటోకాల్ ఈ క్రింది విధంగా ఉంటుంది. ఆలిస్ బాబ్కు 11.7 BTC పంపాలనుకుంటున్నారని అనుకుందాం. మొదట, ఆలిస్ తనకు స్వంతమైన మరియు కనీసం 11.7 BTC వరకు ఉండే అందుబాటులో ఉన్న UTXOల సమితి కోసం వెతుకుతుంది. వాస్తవానికి, ఆలిస్ కచ్చితంగా 11.7 BTC పొందలేకపోవచ్చు; ఆమె పొందగలిగే అతి చిన్నది 6+4+2=12 అని అనుకుందాం. ఆమె ఆ మూడు ఇన్పుట్లు మరియు రెండు అవుట్పుట్లతో ఒక లావాదేవీని సృష్టిస్తుంది. మొదటి అవుట్పుట్ బాబ్ చిరునామాను దాని యజమానిగా కలిగి ఉన్న 11.7 BTC అవుతుంది, మరియు రెండవ అవుట్పుట్ మిగిలిన 0.3 BTC "చిల్లర" అవుతుంది, దీనికి యజమాని ఆలిస్ స్వయంగా ఉంటుంది.
మైనింగ్
మనకు నమ్మదగిన కేంద్రీకృత సేవకు ప్రాప్యత ఉంటే, ఈ వ్యవస్థను అమలు చేయడం చాలా సులభం; స్థితిని ట్రాక్ చేయడానికి కేంద్రీకృత సర్వర్ యొక్క హార్డ్ డ్రైవ్ను ఉపయోగించి, వివరించిన విధంగానే దీన్ని సులభంగా కోడ్ చేయవచ్చు. అయినప్పటికీ, బిట్కాయిన్తో మనం వికేంద్రీకృత కరెన్సీ వ్యవస్థను నిర్మించడానికి ప్రయత్నిస్తున్నాము, కాబట్టి లావాదేవీల క్రమంపై అందరూ అంగీకరిస్తారని నిర్ధారించడానికి మనం స్థితి లావాదేవీ వ్యవస్థను ఏకాభిప్రాయ వ్యవస్థతో కలపాలి. బిట్కాయిన్ యొక్క వికేంద్రీకృత ఏకాభిప్రాయ ప్రక్రియకు నెట్వర్క్లోని నోడ్లు "బ్లాక్లు" అని పిలువబడే లావాదేవీల ప్యాకేజీలను ఉత్పత్తి చేయడానికి నిరంతరం ప్రయత్నించడం అవసరం. నెట్వర్క్ ప్రతి పది నిమిషాలకు సుమారు ఒక బ్లాక్ను ఉత్పత్తి చేయడానికి ఉద్దేశించబడింది, ప్రతి బ్లాక్ టైమ్స్టాంప్, నాన్స్, మునుపటి బ్లాక్కు సూచన (అంటే, హాష్) మరియు మునుపటి బ్లాక్ నుండి జరిగిన అన్ని లావాదేవీల జాబితాను కలిగి ఉంటుంది. కాలక్రమేణా, ఇది బిట్కాయిన్ లెడ్జర్ యొక్క తాజా స్థితిని సూచించడానికి నిరంతరం నవీకరించబడే స్థిరమైన, ఎప్పటికప్పుడు పెరుగుతున్న "బ్లాక్చైన్"ను సృష్టిస్తుంది.
ఈ నమూనాలో వ్యక్తీకరించబడిన బ్లాక్ చెల్లుబాటు అవుతుందో లేదో తనిఖీ చేయడానికి అల్గారిథమ్ ఈ క్రింది విధంగా ఉంటుంది:
- బ్లాక్ ద్వారా సూచించబడిన మునుపటి బ్లాక్ ఉందో లేదో మరియు చెల్లుబాటు అవుతుందో లేదో తనిఖీ చేయండి.
- బ్లాక్ యొక్క టైమ్స్టాంప్ మునుపటి బ్లాక్fn2 కంటే ఎక్కువగా ఉందని మరియు భవిష్యత్తులో 2 గంటల కంటే తక్కువగా ఉందని తనిఖీ చేయండి
- బ్లాక్పై ప్రూఫ్-ఆఫ్-వర్క్ (PoW) చెల్లుబాటు అవుతుందో లేదో తనిఖీ చేయండి.
- మునుపటి బ్లాక్ ముగింపులో స్థితి
S[0]అని అనుకుందాం. TXఅనేదిnలావాదేవీలతో కూడిన బ్లాక్ యొక్క లావాదేవీల జాబితా అని అనుకుందాం.0...n-1లోని అన్నిiకోసం,S[i+1] = APPLY(S[i],TX[i])ని సెట్ చేయండి. ఏదైనా అప్లికేషన్ ఎర్రర్ను అందిస్తే, నిష్క్రమించి false ని అందించండి.- true ని అందించండి మరియు ఈ బ్లాక్ ముగింపులో స్థితిగా
S[n]ని నమోదు చేయండి.
ముఖ్యంగా, బ్లాక్లోని ప్రతి లావాదేవీ లావాదేవీ అమలు చేయబడటానికి ముందు ఉన్న ప్రామాణిక స్థితి నుండి ఏదైనా కొత్త స్థితికి చెల్లుబాటు అయ్యే స్థితి పరివర్తనను అందించాలి. స్థితి ఏ విధంగానూ బ్లాక్లో ఎన్కోడ్ చేయబడలేదని గమనించండి; ఇది కేవలం ధృవీకరించే నోడ్ ద్వారా గుర్తుంచుకోవలసిన ఒక నైరూప్యత మరియు ప్రారంభ స్థితి నుండి ప్రారంభించి ప్రతి బ్లాక్లోని ప్రతి లావాదేవీని వరుసగా వర్తింపజేయడం ద్వారా మాత్రమే ఏదైనా బ్లాక్ కోసం (సురక్షితంగా) లెక్కించబడుతుంది. అదనంగా, మైనర్ బ్లాక్లో లావాదేవీలను చేర్చే క్రమం ముఖ్యమని గమనించండి; ఒక బ్లాక్లో A మరియు B అనే రెండు లావాదేవీలు ఉండి, A సృష్టించిన UTXOని B ఖర్చు చేస్తే, A అనేది B కంటే ముందు వస్తే బ్లాక్ చెల్లుబాటు అవుతుంది, లేకపోతే కాదు.
ఇతర వ్యవస్థలలో కనుగొనబడని పై జాబితాలో ఉన్న ఒక చెల్లుబాటు షరతు "ప్రూఫ్-ఆఫ్-వర్క్ (PoW)" ఆవశ్యకత. ఖచ్చితమైన షరతు ఏమిటంటే, 256-బిట్ సంఖ్యగా పరిగణించబడే ప్రతి బ్లాక్ యొక్క డబుల్-SHA256 హాష్, డైనమిక్గా సర్దుబాటు చేయబడిన లక్ష్యం కంటే తక్కువగా ఉండాలి, ఇది ఈ రచన సమయానికి సుమారు 2187 గా ఉంది. దీని ఉద్దేశ్యం బ్లాక్ సృష్టిని గణనపరంగా "కష్టతరం" చేయడం, తద్వారా సిబిల్ దాడి చేసేవారు మొత్తం బ్లాక్చైన్ను తమకు అనుకూలంగా రీమేక్ చేయకుండా నిరోధించడం. SHA256 పూర్తిగా అనూహ్యమైన నకిలీ-యాదృచ్ఛిక ఫంక్షన్గా రూపొందించబడినందున, చెల్లుబాటు అయ్యే బ్లాక్ను సృష్టించడానికి ఏకైక మార్గం కేవలం ట్రయల్ అండ్ ఎర్రర్, నాన్స్ను పదేపదే పెంచడం మరియు కొత్త హాష్ సరిపోలుతుందో లేదో చూడటం.
~2187 ప్రస్తుత లక్ష్యం వద్ద, చెల్లుబాటు అయ్యే బ్లాక్ కనుగొనబడటానికి ముందు నెట్వర్క్ సగటున ~269 ప్రయత్నాలు చేయాలి; సాధారణంగా, ప్రతి 2016 బ్లాక్లకు నెట్వర్క్ ద్వారా లక్ష్యం తిరిగి క్రమాంకనం చేయబడుతుంది, తద్వారా సగటున ప్రతి పది నిమిషాలకు నెట్వర్క్లోని ఏదో ఒక నోడ్ ద్వారా కొత్త బ్లాక్ ఉత్పత్తి అవుతుంది. ఈ గణన పనికి మైనర్లకు పరిహారం చెల్లించడానికి, ప్రతి బ్లాక్ యొక్క మైనర్ ఎక్కడి నుండో తమకు తాము 25 BTC ఇచ్చే లావాదేవీని చేర్చడానికి అర్హులు. అదనంగా, ఏదైనా లావాదేవీ దాని అవుట్పుట్ల కంటే దాని ఇన్పుట్లలో ఎక్కువ మొత్తం డినామినేషన్ను కలిగి ఉంటే, ఆ వ్యత్యాసం కూడా "లావాదేవీ రుసుము"గా మైనర్కు వెళుతుంది. యాదృచ్ఛికంగా, BTC జారీ చేయబడే ఏకైక యంత్రాంగం కూడా ఇదే; ప్రారంభ స్థితిలో అసలు నాణేలు లేవు.
మైనింగ్ యొక్క ఉద్దేశ్యాన్ని బాగా అర్థం చేసుకోవడానికి, హానికరమైన దాడి చేసే వ్యక్తి విషయంలో ఏమి జరుగుతుందో పరిశీలిద్దాం. బిట్కాయిన్ యొక్క అంతర్లీన గూఢలిపి శాస్త్రం సురక్షితమైనదని తెలిసినందున, దాడి చేసే వ్యక్తి నేరుగా గూఢలిపి శాస్త్రం ద్వారా రక్షించబడని బిట్కాయిన్ సిస్టమ్లోని ఒక భాగాన్ని లక్ష్యంగా చేసుకుంటాడు: లావాదేవీల క్రమం. దాడి చేసే వ్యక్తి వ్యూహం సులభం:
- ఏదైనా ఉత్పత్తికి (ప్రాధాన్యంగా వేగంగా డెలివరీ అయ్యే డిజిటల్ వస్తువు) బదులుగా వ్యాపారికి 100 BTC పంపండి
- ఉత్పత్తి డెలివరీ కోసం వేచి ఉండండి
- అదే 100 BTC ని తనకు తాను పంపుకుంటూ మరో లావాదేవీని ఉత్పత్తి చేయండి
- తనకు తాను చేసుకున్న లావాదేవీయే ముందుగా వచ్చిందని నెట్వర్క్ను ఒప్పించడానికి ప్రయత్నించండి.
దశ (1) జరిగిన తర్వాత, కొన్ని నిమిషాల తర్వాత కొంతమంది మైనర్ లావాదేవీని బ్లాక్లో చేర్చుతారు, ఉదాహరణకు బ్లాక్ నంబర్ 270000. సుమారు ఒక గంట తర్వాత, ఆ బ్లాక్ తర్వాత చైన్కు మరో ఐదు బ్లాక్లు జోడించబడతాయి, ఆ బ్లాక్లలో ప్రతి ఒక్కటి పరోక్షంగా లావాదేవీని సూచిస్తుంది మరియు తద్వారా దానిని "నిర్ధారిస్తుంది". ఈ సమయంలో, వ్యాపారి చెల్లింపును ఖరారైనదిగా అంగీకరించి ఉత్పత్తిని బట్వాడా చేస్తాడు; ఇది డిజిటల్ వస్తువు అని మనం ఊహిస్తున్నందున, డెలివరీ తక్షణమే జరుగుతుంది. ఇప్పుడు, దాడి చేసే వ్యక్తి 100 BTC ని తనకు తాను పంపుకుంటూ మరో లావాదేవీని సృష్టిస్తాడు. దాడి చేసే వ్యక్తి దానిని ఆచరణలో విడుదల చేస్తే, లావాదేవీ ప్రాసెస్ చేయబడదు; మైనర్లు APPLY(S,TX) ని అమలు చేయడానికి ప్రయత్నిస్తారు మరియు TX ఇకపై స్థితిలో లేని UTXOని వినియోగిస్తుందని గమనిస్తారు. కాబట్టి దానికి బదులుగా, దాడి చేసే వ్యక్తి బ్లాక్చైన్ యొక్క "ఫోర్క్"ను సృష్టిస్తాడు, అదే బ్లాక్ 269999 ని పేరెంట్గా సూచిస్తూ బ్లాక్ 270000 యొక్క మరొక సంస్కరణను మైనింగ్ చేయడం ద్వారా ప్రారంభిస్తాడు, కానీ పాత లావాదేవీ స్థానంలో కొత్త లావాదేవీ ఉంటుంది. బ్లాక్ డేటా భిన్నంగా ఉన్నందున, దీనికి ప్రూఫ్-ఆఫ్-వర్క్ (PoW) ని మళ్లీ చేయాల్సి ఉంటుంది. అంతేకాకుండా, దాడి చేసే వ్యక్తి యొక్క బ్లాక్ 270000 కొత్త సంస్కరణ వేరే హాష్ను కలిగి ఉంటుంది, కాబట్టి అసలు బ్లాక్లు 270001 నుండి 270005 వరకు దానిని "సూచించవు"; అందువలన, అసలు చైన్ మరియు దాడి చేసే వ్యక్తి యొక్క కొత్త చైన్ పూర్తిగా వేరుగా ఉంటాయి. నియమం ఏమిటంటే, ఫోర్క్లో పొడవైన బ్లాక్చైన్ సత్యంగా తీసుకోబడుతుంది, కాబట్టి చట్టబద్ధమైన మైనర్లు 270005 చైన్పై పని చేస్తారు, అయితే దాడి చేసే వ్యక్తి మాత్రమే 270000 చైన్పై పని చేస్తాడు. దాడి చేసే వ్యక్తి తన బ్లాక్చైన్ను అత్యంత పొడవైనదిగా చేయడానికి, అతను మిగిలిన నెట్వర్క్ మొత్తాన్ని కలుపుకున్న దానికంటే ఎక్కువ గణన శక్తిని కలిగి ఉండాలి (అందుకే, "51% దాడి").
మెర్కిల్ వృక్షాలు
ఎడమ: ఒక శాఖ యొక్క చెల్లుబాటుకు రుజువు ఇవ్వడానికి మెర్కిల్ వృక్షంలో తక్కువ సంఖ్యలో నోడ్లను మాత్రమే ప్రదర్శిస్తే సరిపోతుంది.
కుడి: మెర్కిల్ వృక్షంలోని ఏ భాగాన్నైనా మార్చడానికి చేసే ఏ ప్రయత్నమైనా చివరికి చైన్లో ఎక్కడో ఒకచోట అస్థిరతకు దారి తీస్తుంది.
బిట్కాయిన్ యొక్క ముఖ్యమైన స్కేలబిలిటీ లక్షణం ఏమిటంటే బ్లాక్ బహుళ-స్థాయి డేటా నిర్మాణంలో నిల్వ చేయబడుతుంది. బ్లాక్ యొక్క "హాష్" వాస్తవానికి బ్లాక్ శీర్షిక యొక్క హాష్ మాత్రమే, ఇది టైమ్స్టాంప్, నాన్స్, మునుపటి బ్లాక్ హాష్ మరియు బ్లాక్లోని అన్ని లావాదేవీలను నిల్వ చేసే మెర్కిల్ వృక్షం అని పిలువబడే డేటా నిర్మాణం యొక్క రూట్ హాష్ను కలిగి ఉన్న సుమారు 200-బైట్ల డేటా. మెర్కిల్ వృక్షం అనేది ఒక రకమైన బైనరీ ట్రీ, ఇది అంతర్లీన డేటాను కలిగి ఉన్న చెట్టు దిగువన పెద్ద సంఖ్యలో లీఫ్ నోడ్లతో కూడిన నోడ్ల సమితి, ప్రతి నోడ్ దాని రెండు పిల్లల హాష్గా ఉండే ఇంటర్మీడియట్ నోడ్ల సమితి మరియు చివరగా చెట్టు యొక్క "పైభాగాన్ని" సూచించే దాని రెండు పిల్లల హాష్ నుండి ఏర్పడిన ఒకే రూట్ నోడ్తో కూడి ఉంటుంది. మెర్కిల్ వృక్షం యొక్క ఉద్దేశ్యం బ్లాక్లోని డేటాను ముక్కలు ముక్కలుగా బట్వాడా చేయడానికి అనుమతించడం: ఒక నోడ్ ఒక మూలం నుండి బ్లాక్ యొక్క శీర్షికను మాత్రమే డౌన్లోడ్ చేయగలదు, మరొక మూలం నుండి వారికి సంబంధించిన చెట్టులోని చిన్న భాగాన్ని డౌన్లోడ్ చేయగలదు మరియు ఇప్పటికీ మొత్తం డేటా సరైనదని హామీ ఇవ్వబడుతుంది. ఇది ఎందుకు పని చేస్తుందంటే హాష్లు పైకి వ్యాపిస్తాయి: హానికరమైన వినియోగదారు మెర్కిల్ వృక్షం దిగువన నకిలీ లావాదేవీని మార్చుకోవడానికి ప్రయత్నిస్తే, ఈ మార్పు పై నోడ్లో మార్పుకు కారణమవుతుంది, ఆపై దాని పై నోడ్లో మార్పుకు కారణమవుతుంది, చివరకు చెట్టు యొక్క మూలాన్ని మరియు తద్వారా బ్లాక్ యొక్క హాష్ను మారుస్తుంది, దీని వలన ప్రోటోకాల్ దానిని పూర్తిగా భిన్నమైన బ్లాక్గా నమోదు చేస్తుంది (దాదాపు ఖచ్చితంగా చెల్లని ప్రూఫ్-ఆఫ్-వర్క్ (PoW) తో).
మెర్కిల్ వృక్షం ప్రోటోకాల్ దీర్ఘకాలిక స్థిరత్వానికి నిస్సందేహంగా అవసరం. బిట్కాయిన్ నెట్వర్క్లోని "పూర్తి నోడ్", ప్రతి బ్లాక్ మొత్తాన్ని నిల్వ చేసే మరియు ప్రాసెస్ చేసేది, ఏప్రిల్ 2014 నాటికి బిట్కాయిన్ నెట్వర్క్లో సుమారు 15 GB డిస్క్ స్థలాన్ని తీసుకుంటుంది మరియు నెలకు ఒక గిగాబైట్ కంటే ఎక్కువ పెరుగుతోంది. ప్రస్తుతం, ఇది కొన్ని డెస్క్టాప్ కంప్యూటర్లకు ఆచరణీయమైనది మరియు ఫోన్లకు కాదు, మరియు భవిష్యత్తులో వ్యాపారాలు మరియు అభిరుచి గలవారు మాత్రమే పాల్గొనగలుగుతారు. "సింప్లిఫైడ్ పేమెంట్ వెరిఫికేషన్" (SPV) అని పిలువబడే ప్రోటోకాల్ "లైట్ నోడ్స్" అని పిలువబడే మరొక తరగతి నోడ్లు ఉనికిలో ఉండటానికి అనుమతిస్తుంది, ఇవి బ్లాక్ శీర్షికలను డౌన్లోడ్ చేస్తాయి, బ్లాక్ శీర్షికలపై ప్రూఫ్-ఆఫ్-వర్క్ (PoW) ని ధృవీకరిస్తాయి మరియు ఆపై వాటికి సంబంధించిన లావాదేవీలతో అనుబంధించబడిన "శాఖలను" మాత్రమే డౌన్లోడ్ చేస్తాయి. ఇది లైట్ నోడ్లు మొత్తం బ్లాక్చైన్లో చాలా చిన్న భాగాన్ని మాత్రమే డౌన్లోడ్ చేస్తున్నప్పుడు ఏదైనా బిట్కాయిన్ లావాదేవీ యొక్క స్థితి మరియు వాటి ప్రస్తుత బ్యాలెన్స్ ఏమిటో బలమైన భద్రతా హామీతో నిర్ణయించడానికి అనుమతిస్తుంది.
ప్రత్యామ్నాయ బ్లాక్చైన్ అప్లికేషన్లు
అంతర్లీన బ్లాక్చైన్ ఆలోచనను తీసుకుని దానిని ఇతర భావనలకు వర్తింపజేసే ఆలోచనకు కూడా సుదీర్ఘ చరిత్ర ఉంది. 2005లో, నిక్ సబో "యజమాని అధికారంతో సురక్షితమైన ఆస్తి శీర్షికలు (opens in a new tab)" అనే భావనతో ముందుకు వచ్చారు, ఇది "ప్రతిరూప డేటాబేస్ సాంకేతికతలో కొత్త పురోగతులు" ఏ భూమి ఎవరికి ఉందో రిజిస్ట్రీని నిల్వ చేయడానికి బ్లాక్చైన్-ఆధారిత వ్యవస్థను ఎలా అనుమతిస్తుందో వివరించే పత్రం, హోమ్స్టెడింగ్, ప్రతికూల స్వాధీనం మరియు జార్జియన్ భూమి పన్ను వంటి భావనలతో సహా విస్తృతమైన ఫ్రేమ్వర్క్ను సృష్టిస్తుంది. అయినప్పటికీ, దురదృష్టవశాత్తు ఆ సమయంలో సమర్థవంతమైన ప్రతిరూప డేటాబేస్ సిస్టమ్ అందుబాటులో లేదు, కాబట్టి ప్రోటోకాల్ ఆచరణలో ఎప్పుడూ అమలు చేయబడలేదు. అయితే, 2009 తర్వాత, బిట్కాయిన్ యొక్క వికేంద్రీకృత ఏకాభిప్రాయం అభివృద్ధి చెందిన తర్వాత అనేక ప్రత్యామ్నాయ అప్లికేషన్లు వేగంగా ఉద్భవించడం ప్రారంభించాయి.
- Namecoin - 2010లో సృష్టించబడింది, Namecoin (opens in a new tab) వికేంద్రీకృత పేరు నమోదు డేటాబేస్గా ఉత్తమంగా వర్ణించబడింది. Tor, బిట్కాయిన్ మరియు BitMessage వంటి వికేంద్రీకృత ప్రోటోకాల్లలో, ఖాతాలను గుర్తించడానికి ఏదో ఒక మార్గం ఉండాలి, తద్వారా ఇతరులు వారితో పరస్పర చర్య చేయవచ్చు, కానీ ఇప్పటికే ఉన్న అన్ని పరిష్కారాలలో అందుబాటులో ఉన్న ఏకైక రకమైన ఐడెంటిఫైయర్
1LW79wp5ZBqaHW1jL5TCiBCrhQYtHagUWyవంటి నకిలీ-యాదృచ్ఛిక హాష్. ఆదర్శవంతంగా, ఎవరైనా "george" లాంటి పేరుతో ఖాతాను కలిగి ఉండాలని కోరుకుంటారు. అయినప్పటికీ, సమస్య ఏమిటంటే, ఒక వ్యక్తి "george" పేరుతో ఖాతాను సృష్టించగలిగితే, మరొకరు అదే ప్రక్రియను ఉపయోగించి తమ కోసం "george" ని నమోదు చేసుకోవచ్చు మరియు వారిలా నటించవచ్చు. దీనికి ఏకైక పరిష్కారం ఫస్ట్-టు-ఫైల్ నమూనా, ఇక్కడ మొదటి రిజిస్టర్ చేసే వ్యక్తి విజయం సాధిస్తాడు మరియు రెండవ వ్యక్తి విఫలమవుతాడు - ఇది బిట్కాయిన్ ఏకాభిప్రాయ ప్రోటోకాల్కు సరిగ్గా సరిపోయే సమస్య. అటువంటి ఆలోచనను ఉపయోగించి పేరు నమోదు వ్యవస్థను అమలు చేయడంలో Namecoin పురాతనమైనది మరియు అత్యంత విజయవంతమైనది. - రంగుల నాణేలు (Colored coins) - రంగుల నాణేల (opens in a new tab) ఉద్దేశ్యం ప్రజలు తమ స్వంత డిజిటల్ కరెన్సీలను సృష్టించడానికి అనుమతించే ప్రోటోకాల్గా పనిచేయడం - లేదా, ఒక యూనిట్ ఉన్న కరెన్సీ యొక్క ముఖ్యమైన చిన్న సందర్భంలో, బిట్కాయిన్ బ్లాక్చైన్లో డిజిటల్ టోకెన్లను సృష్టించడం. రంగుల నాణేల ప్రోటోకాల్లో, ఒక నిర్దిష్ట బిట్కాయిన్ UTXOకి బహిరంగంగా రంగును కేటాయించడం ద్వారా ఎవరైనా కొత్త కరెన్సీని "జారీ" చేస్తారు, మరియు ప్రోటోకాల్ పునరావృతంగా ఇతర UTXOల రంగును వాటిని సృష్టించిన లావాదేవీ ఖర్చు చేసిన ఇన్పుట్ల రంగుతో సమానంగా నిర్వచిస్తుంది (మిశ్రమ-రంగు ఇన్పుట్ల విషయంలో కొన్ని ప్రత్యేక నియమాలు వర్తిస్తాయి). ఇది వినియోగదారులు నిర్దిష్ట రంగు యొక్క UTXOని మాత్రమే కలిగి ఉన్న వాలెట్లను నిర్వహించడానికి మరియు సాధారణ బిట్కాయిన్ల వలె వాటిని పంపడానికి అనుమతిస్తుంది, వారు స్వీకరించే ఏదైనా UTXO యొక్క రంగును నిర్ణయించడానికి బ్లాక్చైన్ ద్వారా వెనుకకు ట్రాక్ చేస్తుంది.
- మెటాకాయిన్లు (Metacoins) - మెటాకాయిన్ వెనుక ఉన్న ఆలోచన ఏమిటంటే, బిట్కాయిన్ పైన నివసించే ప్రోటోకాల్ను కలిగి ఉండటం, మెటాకాయిన్ లావాదేవీలను నిల్వ చేయడానికి బిట్కాయిన్ లావాదేవీలను ఉపయోగించడం కానీ వేరే స్థితి పరివర్తన ఫంక్షన్
APPLY'ని కలిగి ఉండటం. మెటాకాయిన్ ప్రోటోకాల్ బిట్కాయిన్ బ్లాక్చైన్లో చెల్లని మెటాకాయిన్ లావాదేవీలు కనిపించకుండా నిరోధించలేనందున,APPLY'(S,TX)ఎర్రర్ను అందిస్తే, ప్రోటోకాల్ డిఫాల్ట్గాAPPLY'(S,TX) = Sకి మారుతుందనే నియమం జోడించబడింది. ఇది ఏకపక్ష క్రిప్టోకరెన్సీ ప్రోటోకాల్ను సృష్టించడానికి సులభమైన యంత్రాంగాన్ని అందిస్తుంది, బిట్కాయిన్ లోపల అమలు చేయలేని అధునాతన లక్షణాలతో, కానీ మైనింగ్ మరియు నెట్వర్కింగ్ యొక్క సంక్లిష్టతలు ఇప్పటికే బిట్కాయిన్ ప్రోటోకాల్ ద్వారా నిర్వహించబడుతున్నందున చాలా తక్కువ అభివృద్ధి వ్యయంతో ఉంటుంది. కొన్ని తరగతుల ఆర్థిక కాంట్రాక్ట్లు, పేరు నమోదు మరియు వికేంద్రీకృత మార్పిడిని అమలు చేయడానికి మెటాకాయిన్లు ఉపయోగించబడ్డాయి.
అందువల్ల, సాధారణంగా, ఏకాభిప్రాయ ప్రోటోకాల్ను నిర్మించడానికి రెండు విధానాలు ఉన్నాయి: స్వతంత్ర నెట్వర్క్ను నిర్మించడం మరియు బిట్కాయిన్ పైన ప్రోటోకాల్ను నిర్మించడం. మొదటి విధానం, Namecoin వంటి అప్లికేషన్ల విషయంలో సహేతుకంగా విజయవంతమైనప్పటికీ, అమలు చేయడం కష్టం; ప్రతి వ్యక్తిగత అమలు స్వతంత్ర బ్లాక్చైన్ను బూట్స్ట్రాప్ చేయాలి, అలాగే అవసరమైన అన్ని స్థితి పరివర్తన మరియు నెట్వర్కింగ్ కోడ్ను నిర్మించి పరీక్షించాలి. అదనంగా, వికేంద్రీకృత ఏకాభిప్రాయ సాంకేతికత కోసం అప్లికేషన్ల సమితి పవర్ లా పంపిణీని అనుసరిస్తుందని మేము అంచనా వేస్తున్నాము, ఇక్కడ అత్యధిక సంఖ్యలో అప్లికేషన్లు వాటి స్వంత బ్లాక్చైన్ను సమర్థించడానికి చాలా చిన్నవిగా ఉంటాయి మరియు ఒకదానితో ఒకటి పరస్పర చర్య చేయాల్సిన వికేంద్రీకృత అప్లికేషన్ల (dapp) పెద్ద తరగతులు, ముఖ్యంగా వికేంద్రీకృత స్వయంప్రతిపత్త సంస్థలు ఉన్నాయని మేము గమనిస్తున్నాము.
మరోవైపు, బిట్కాయిన్-ఆధారిత విధానంలో బిట్కాయిన్ యొక్క సరళీకృత చెల్లింపు ధృవీకరణ లక్షణాలను వారసత్వంగా పొందలేదనే లోపం ఉంది. SPV బిట్కాయిన్ కోసం పని చేస్తుంది ఎందుకంటే ఇది బ్లాక్చైన్ లోతును చెల్లుబాటుకు ప్రాక్సీగా ఉపయోగించగలదు; ఒకానొక సమయంలో, లావాదేవీ యొక్క పూర్వీకులు చాలా వెనుకకు వెళ్ళిన తర్వాత, అవి చట్టబద్ధంగా స్థితిలో భాగమని చెప్పడం సురక్షితం. మరోవైపు, బ్లాక్చైన్-ఆధారిత మెటా-ప్రోటోకాల్లు తమ స్వంత ప్రోటోకాల్ల సందర్భంలో చెల్లని లావాదేవీలను చేర్చవద్దని బ్లాక్చైన్ను బలవంతం చేయలేవు. అందువల్ల, పూర్తిగా సురక్షితమైన SPV మెటా-ప్రోటోకాల్ అమలుకు నిర్దిష్ట లావాదేవీలు చెల్లుబాటు అవుతాయో లేదో తెలుసుకోవడానికి బిట్కాయిన్ బ్లాక్చైన్ ప్రారంభం వరకు వెనుకకు స్కాన్ చేయాల్సి ఉంటుంది. ప్రస్తుతం, బిట్కాయిన్-ఆధారిత మెటా-ప్రోటోకాల్ల యొక్క అన్ని "లైట్" అమలులు డేటాను అందించడానికి విశ్వసనీయ సర్వర్పై ఆధారపడతాయి, ముఖ్యంగా క్రిప్టోకరెన్సీ యొక్క ప్రాథమిక ప్రయోజనాల్లో ఒకటి నమ్మకం అవసరాన్ని తొలగించడం అయినప్పుడు ఇది చాలా సబ్ఆప్టిమల్ ఫలితం.
స్క్రిప్టింగ్
ఎలాంటి పొడిగింపులు లేకుండా కూడా, బిట్కాయిన్ ప్రోటోకాల్ వాస్తవానికి "స్మార్ట్ కాంట్రాక్ట్ల" భావన యొక్క బలహీనమైన సంస్కరణను సులభతరం చేస్తుంది. బిట్కాయిన్లోని UTXO కేవలం పబ్లిక్ కీ ద్వారా మాత్రమే కాకుండా, సాధారణ స్టాక్-ఆధారిత ప్రోగ్రామింగ్ భాషలో వ్యక్తీకరించబడిన మరింత సంక్లిష్టమైన స్క్రిప్ట్ ద్వారా కూడా స్వంతం చేసుకోవచ్చు. ఈ నమూనాలో, ఆ UTXOని ఖర్చు చేసే లావాదేవీ స్క్రిప్ట్ను సంతృప్తిపరిచే డేటాను అందించాలి. నిజానికి, ప్రాథమిక పబ్లిక్ కీ యాజమాన్య యంత్రాంగం కూడా స్క్రిప్ట్ ద్వారా అమలు చేయబడుతుంది: స్క్రిప్ట్ దీర్ఘవృత్తాకార వక్రరేఖ సంతకాన్ని ఇన్పుట్గా తీసుకుంటుంది, లావాదేవీ మరియు UTXOని కలిగి ఉన్న చిరునామాకు వ్యతిరేకంగా దాన్ని ధృవీకరిస్తుంది మరియు ధృవీకరణ విజయవంతమైతే 1 ని, లేకపోతే 0 ని అందిస్తుంది. వివిధ అదనపు వినియోగ సందర్భాల కోసం ఇతర, మరింత సంక్లిష్టమైన స్క్రిప్ట్లు ఉన్నాయి. ఉదాహరణకు, ధృవీకరించడానికి ("మల్టీసిగ్") ఇచ్చిన మూడు ప్రైవేట్ కీలలో రెండింటి నుండి సంతకాలు అవసరమయ్యే స్క్రిప్ట్ను ఎవరైనా నిర్మించవచ్చు, ఇది కార్పొరేట్ ఖాతాలు, సురక్షిత పొదుపు ఖాతాలు మరియు కొన్ని వ్యాపారి ఎస్క్రో పరిస్థితులకు ఉపయోగపడే సెటప్. గణన సమస్యలకు పరిష్కారాల కోసం బౌంటీలను చెల్లించడానికి కూడా స్క్రిప్ట్లను ఉపయోగించవచ్చు, మరియు "మీరు ఈ డినామినేషన్ యొక్క Dogecoin లావాదేవీని నాకు పంపినట్లు SPV రుజువును అందించగలిగితే ఈ బిట్కాయిన్ UTXO మీదే" అని చెప్పే స్క్రిప్ట్ను కూడా ఎవరైనా నిర్మించవచ్చు, ఇది ప్రాథమికంగా వికేంద్రీకృత క్రాస్-క్రిప్టోకరెన్సీ మార్పిడిని అనుమతిస్తుంది.
అయినప్పటికీ, బిట్కాయిన్లో అమలు చేయబడిన స్క్రిప్టింగ్ భాషకు అనేక ముఖ్యమైన పరిమితులు ఉన్నాయి:
- ట్యూరింగ్-సంపూర్ణత లేకపోవడం - అంటే, బిట్కాయిన్ స్క్రిప్టింగ్ భాష మద్దతు ఇచ్చే గణన యొక్క పెద్ద ఉపసమితి ఉన్నప్పటికీ, ఇది దాదాపు ప్రతిదానికీ మద్దతు ఇవ్వదు. తప్పిపోయిన ప్రధాన వర్గం లూప్లు. లావాదేవీ ధృవీకరణ సమయంలో అనంతమైన లూప్లను నివారించడానికి ఇది చేయబడుతుంది; సైద్ధాంతికంగా ఇది స్క్రిప్ట్ ప్రోగ్రామర్లకు అధిగమించగల అడ్డంకి, ఎందుకంటే if స్టేట్మెంట్తో అంతర్లీన కోడ్ను చాలాసార్లు పునరావృతం చేయడం ద్వారా ఏదైనా లూప్ను అనుకరించవచ్చు, కానీ ఇది చాలా స్థల-అసమర్థమైన స్క్రిప్ట్లకు దారితీస్తుంది. ఉదాహరణకు, ప్రత్యామ్నాయ దీర్ఘవృత్తాకార వక్రరేఖ సంతకం అల్గారిథమ్ను అమలు చేయడానికి బహుశా 256 పునరావృత గుణకార రౌండ్లు అన్నీ వ్యక్తిగతంగా కోడ్లో చేర్చబడాలి.
- విలువ-అంధత్వం - ఉపసంహరించుకోగల మొత్తంపై సూక్ష్మ-స్థాయి నియంత్రణను అందించడానికి UTXO స్క్రిప్ట్కు మార్గం లేదు. ఉదాహరణకు, ఆరకిల్ కాంట్రాక్ట్ యొక్క ఒక శక్తివంతమైన వినియోగ సందర్భం హెడ్జింగ్ కాంట్రాక్ట్, ఇక్కడ A మరియు B $1000 విలువైన BTC ని ఉంచుతారు మరియు 30 రోజుల తర్వాత స్క్రిప్ట్ $1000 విలువైన BTC ని A కి మరియు మిగిలిన వాటిని B కి పంపుతుంది. దీనికి USD లో 1 BTC విలువను నిర్ణయించడానికి ఆరకిల్ అవసరం, కానీ అప్పుడు కూడా ఇది ఇప్పుడు అందుబాటులో ఉన్న పూర్తిగా కేంద్రీకృత పరిష్కారాల కంటే నమ్మకం మరియు మౌలిక సదుపాయాల ఆవశ్యకత పరంగా భారీ మెరుగుదల. అయినప్పటికీ, UTXOలు అన్నీ-లేదా-ఏమీ కానందున, దీన్ని సాధించడానికి ఏకైక మార్గం వివిధ డినామినేషన్ల యొక్క అనేక UTXOలను కలిగి ఉండటం (ఉదా., 30 వరకు ప్రతి k కి 2k యొక్క ఒక UTXO) మరియు ఏ UTXOని A కి పంపాలి మరియు ఏది B కి పంపాలి అని ఆరకిల్ ఎంచుకునేలా చేయడం అనే చాలా అసమర్థమైన హ్యాక్ ద్వారా మాత్రమే.
- స్థితి లేకపోవడం - UTXO ఖర్చు చేయబడవచ్చు లేదా ఖర్చు చేయబడకపోవచ్చు; బహుళ-దశల కాంట్రాక్ట్లు లేదా అంతకు మించి మరేదైనా అంతర్గత స్థితిని ఉంచే స్క్రిప్ట్లకు అవకాశం లేదు. ఇది బహుళ-దశల ఎంపికల కాంట్రాక్ట్లు, వికేంద్రీకృత మార్పిడి ఆఫర్లు లేదా రెండు-దశల క్రిప్టోగ్రాఫిక్ నిబద్ధత ప్రోటోకాల్లను (సురక్షితమైన గణన బౌంటీల కోసం అవసరం) చేయడం కష్టతరం చేస్తుంది. దీని అర్థం UTXOని కేవలం సరళమైన, వన్-ఆఫ్ కాంట్రాక్ట్లను నిర్మించడానికి మాత్రమే ఉపయోగించవచ్చు మరియు వికేంద్రీకృత సంస్థల వంటి మరింత సంక్లిష్టమైన "స్టేట్ఫుల్" కాంట్రాక్ట్లను కాదు, మరియు మెటా-ప్రోటోకాల్లను అమలు చేయడం కష్టతరం చేస్తుంది. విలువ-అంధత్వంతో కలిపి బైనరీ స్థితి అంటే ఉపసంహరణ పరిమితులు అనే మరొక ముఖ్యమైన అప్లికేషన్ అసాధ్యం అని కూడా అర్థం.
- బ్లాక్చైన్-అంధత్వం - నాన్స్, టైమ్స్టాంప్ మరియు మునుపటి బ్లాక్ హాష్ వంటి బ్లాక్చైన్ డేటాకు UTXOలు అంధంగా ఉంటాయి. ఇది స్క్రిప్టింగ్ భాషకు యాదృచ్ఛికత యొక్క విలువైన మూలాన్ని కోల్పోయేలా చేయడం ద్వారా జూదం మరియు అనేక ఇతర వర్గాలలో అప్లికేషన్లను తీవ్రంగా పరిమితం చేస్తుంది.
అందువల్ల, క్రిప్టోకరెన్సీ పైన అధునాతన అప్లికేషన్లను నిర్మించడానికి మేము మూడు విధానాలను చూస్తున్నాము: కొత్త బ్లాక్చైన్ను నిర్మించడం, బిట్కాయిన్ పైన స్క్రిప్టింగ్ను ఉపయోగించడం మరియు బిట్కాయిన్ పైన మెటా-ప్రోటోకాల్ను నిర్మించడం. కొత్త బ్లాక్చైన్ను నిర్మించడం ఫీచర్ సెట్ను నిర్మించడంలో అపరిమిత స్వేచ్ఛను అనుమతిస్తుంది, కానీ అభివృద్ధి సమయం, బూట్స్ట్రాపింగ్ ప్రయత్నం మరియు భద్రత ఖర్చుతో. స్క్రిప్టింగ్ను ఉపయోగించడం అమలు చేయడం మరియు ప్రామాణీకరించడం సులభం, కానీ దాని సామర్థ్యాలలో చాలా పరిమితం, మరియు మెటా-ప్రోటోకాల్లు సులభం అయినప్పటికీ, స్కేలబిలిటీలో లోపాలతో బాధపడుతున్నాయి. ఎథీరియంతో, అభివృద్ధి సౌలభ్యంలో మరింత పెద్ద లాభాలను అలాగే మరింత బలమైన లైట్ క్లయింట్ లక్షణాలను అందించే ప్రత్యామ్నాయ ఫ్రేమ్వర్క్ను నిర్మించాలని మేము భావిస్తున్నాము, అదే సమయంలో అప్లికేషన్లు ఆర్థిక వాతావరణం మరియు బ్లాక్చైన్ భద్రతను పంచుకోవడానికి అనుమతిస్తుంది.
ఎథీరియం
వికేంద్రీకృత అప్లికేషన్లను (dapps) నిర్మించడానికి ప్రత్యామ్నాయ ప్రోటోకాల్ను సృష్టించడమే ఎథీరియం ఉద్దేశ్యం. వేగవంతమైన అభివృద్ధి సమయం, చిన్న మరియు అరుదుగా ఉపయోగించే అప్లికేషన్లకు భద్రత, మరియు విభిన్న అప్లికేషన్లు అత్యంత సమర్థవంతంగా పరస్పరం వ్యవహరించే సామర్థ్యం ముఖ్యమైన పరిస్థితులపై ప్రత్యేక దృష్టి సారించి, పెద్ద తరగతి వికేంద్రీకృత అప్లికేషన్లకు చాలా ఉపయోగకరంగా ఉంటుందని మేము విశ్వసించే విభిన్న ట్రేడ్ఆఫ్లను ఇది అందిస్తుంది. అంతిమ నైరూప్య పునాది పొరను నిర్మించడం ద్వారా ఎథీరియం దీన్ని చేస్తుంది: అంతర్నిర్మిత ట్యూరింగ్-సంపూర్ణ (Turing-complete) ప్రోగ్రామింగ్ భాషతో కూడిన బ్లాక్చైన్, ఎవరైనా స్మార్ట్ కాంట్రాక్ట్లు మరియు వికేంద్రీకృత అప్లికేషన్లను వ్రాయడానికి అనుమతిస్తుంది, ఇక్కడ వారు యాజమాన్యం, లావాదేవీ ఫార్మాట్లు మరియు స్థితి పరివర్తన ఫంక్షన్ల కోసం వారి స్వంత ఏకపక్ష నియమాలను సృష్టించగలరు. Namecoin యొక్క కనీస వెర్షన్ను రెండు లైన్ల కోడ్లో వ్రాయవచ్చు మరియు కరెన్సీలు మరియు పలుకుబడి సిస్టమ్ల వంటి ఇతర ప్రోటోకాల్లను ఇరవై లైన్ల లోపు నిర్మించవచ్చు. స్మార్ట్ కాంట్రాక్ట్లు, విలువను కలిగి ఉండి మరియు నిర్దిష్ట షరతులు నెరవేరితే మాత్రమే దాన్ని అన్లాక్ చేసే క్రిప్టోగ్రాఫిక్ "బాక్స్లు", ప్లాట్ఫారమ్ పైన కూడా నిర్మించబడతాయి. ట్యూరింగ్-సంపూర్ణత, వాల్యూ-అవేర్నెస్, బ్లాక్చైన్-అవేర్నెస్ మరియు స్థితి యొక్క అదనపు శక్తుల కారణంగా బిట్కాయిన్ స్క్రిప్టింగ్ అందించే దానికంటే ఇవి చాలా ఎక్కువ శక్తిని కలిగి ఉంటాయి.
ఎథీరియం ఖాతాలు
ఎథీరియంలో, స్థితి అనేది "ఖాతాలు" అని పిలువబడే ఆబ్జెక్ట్లతో రూపొందించబడింది, ప్రతి ఖాతా 20-బైట్ల చిరునామాను కలిగి ఉంటుంది మరియు స్థితి పరివర్తనలు ఖాతాల మధ్య విలువ మరియు సమాచారం యొక్క ప్రత్యక్ష బదిలీలు. ఎథీరియం ఖాతా నాలుగు ఫీల్డ్లను కలిగి ఉంటుంది:
- నాన్స్, ప్రతి లావాదేవీ ఒక్కసారి మాత్రమే ప్రాసెస్ చేయబడుతుందని నిర్ధారించుకోవడానికి ఉపయోగించే కౌంటర్
- ఖాతా యొక్క ప్రస్తుత ఈథర్ బ్యాలెన్స్
- ఖాతా యొక్క కాంట్రాక్ట్ కోడ్, ఒకవేళ ఉంటే
- ఖాతా యొక్క స్టోరేజ్ (అప్రమేయంగా ఖాళీగా ఉంటుంది)
"ఈథర్" అనేది ఎథీరియం యొక్క ప్రధాన అంతర్గత క్రిప్టో-ఇంధనం, మరియు లావాదేవీ రుసుము చెల్లించడానికి ఉపయోగించబడుతుంది. సాధారణంగా, రెండు రకాల ఖాతాలు ఉంటాయి: ప్రైవేట్ కీ ద్వారా నియంత్రించబడే బాహ్య యాజమాన్య ఖాతాలు, మరియు వాటి కాంట్రాక్ట్ కోడ్ ద్వారా నియంత్రించబడే కాంట్రాక్ట్ ఖాతాలు. బాహ్య యాజమాన్య ఖాతాకు కోడ్ ఉండదు, మరియు లావాదేవీని సృష్టించడం మరియు సంతకం చేయడం ద్వారా బాహ్య యాజమాన్య ఖాతా నుండి సందేశాలను పంపవచ్చు; కాంట్రాక్ట్ ఖాతాలో, కాంట్రాక్ట్ ఖాతా సందేశాన్ని స్వీకరించిన ప్రతిసారీ దాని కోడ్ యాక్టివేట్ అవుతుంది, ఇది అంతర్గత స్టోరేజ్కు చదవడానికి మరియు వ్రాయడానికి మరియు ఇతర సందేశాలను పంపడానికి లేదా కాంట్రాక్ట్లను సృష్టించడానికి అనుమతిస్తుంది.
ఎథీరియంలోని "కాంట్రాక్ట్లు" "నెరవేర్చబడాలి" లేదా "కట్టుబడి ఉండాలి" అని చూడకూడదని గమనించండి; బదులుగా, అవి ఎథీరియం ఎగ్జిక్యూషన్ వాతావరణంలో నివసించే "స్వయంప్రతిపత్త ఏజెంట్ల" లాంటివి, సందేశం లేదా లావాదేవీ ద్వారా "పోక్" చేయబడినప్పుడు ఎల్లప్పుడూ నిర్దిష్ట కోడ్ను అమలు చేస్తాయి మరియు నిరంతర వేరియబుల్స్ను ట్రాక్ చేయడానికి వాటి స్వంత ఈథర్ బ్యాలెన్స్ మరియు వాటి స్వంత కీ/వాల్యూ స్టోర్పై ప్రత్యక్ష నియంత్రణను కలిగి ఉంటాయి.
సందేశాలు మరియు లావాదేవీలు
బాహ్య యాజమాన్య ఖాతా నుండి పంపాల్సిన సందేశాన్ని నిల్వ చేసే సంతకం చేయబడిన డేటా ప్యాకేజీని సూచించడానికి ఎథీరియంలో "లావాదేవీ" అనే పదం ఉపయోగించబడుతుంది. లావాదేవీలు వీటిని కలిగి ఉంటాయి:
- సందేశం యొక్క గ్రహీత
- పంపినవారిని గుర్తించే సంతకం
- పంపినవారి నుండి గ్రహీతకు బదిలీ చేయాల్సిన ఈథర్ మొత్తం
- ఐచ్ఛిక డేటా ఫీల్డ్
- లావాదేవీ అమలు చేయడానికి అనుమతించబడిన గరిష్ట గణన దశల సంఖ్యను సూచించే
STARTGASవిలువ - ప్రతి గణన దశకు పంపినవారు చెల్లించే రుసుమును సూచించే
GASPRICEవిలువ
మొదటి మూడు ఏ క్రిప్టోకరెన్సీలోనైనా ఆశించే ప్రామాణిక ఫీల్డ్లు. డేటా ఫీల్డ్కు అప్రమేయంగా ఎటువంటి ఫంక్షన్ ఉండదు, కానీ వర్చువల్ మెషీన్ ఒక ఆప్కోడ్ను కలిగి ఉంటుంది, దీనిని ఉపయోగించి కాంట్రాక్ట్ డేటాను యాక్సెస్ చేయగలదు; ఉదాహరణకు, ఒక కాంట్రాక్ట్ ఆన్-బ్లాక్చైన్ డొమైన్ రిజిస్ట్రేషన్ సేవగా పనిచేస్తుంటే, దానికి పంపబడుతున్న డేటాలో రెండు "ఫీల్డ్లు" ఉన్నాయని అది అర్థం చేసుకోవచ్చు, మొదటి ఫీల్డ్ నమోదు చేయాల్సిన డొమైన్ మరియు రెండవ ఫీల్డ్ దాన్ని నమోదు చేయాల్సిన IP చిరునామా. కాంట్రాక్ట్ సందేశ డేటా నుండి ఈ విలువలను చదువుతుంది మరియు వాటిని తగిన విధంగా స్టోరేజ్లో ఉంచుతుంది.
ఎథీరియం యొక్క యాంటీ-డినియల్ ఆఫ్ సర్వీస్ మోడల్కు STARTGAS మరియు GASPRICE ఫీల్డ్లు కీలకం. కోడ్లో ప్రమాదవశాత్తు లేదా శత్రు అనంతమైన లూప్లు లేదా ఇతర గణన వృధాను నిరోధించడానికి, ప్రతి లావాదేవీ అది ఉపయోగించగల కోడ్ అమలు యొక్క ఎన్ని గణన దశలకు పరిమితిని సెట్ చేయడం అవసరం. గణన యొక్క ప్రాథమిక యూనిట్ "గ్యాస్"; సాధారణంగా, ఒక గణన దశకు 1 గ్యాస్ ఖర్చవుతుంది, కానీ కొన్ని ఆపరేషన్లకు ఎక్కువ మొత్తంలో గ్యాస్ ఖర్చవుతుంది ఎందుకంటే అవి గణనపరంగా ఖరీదైనవి లేదా స్థితిలో భాగంగా నిల్వ చేయాల్సిన డేటా మొత్తాన్ని పెంచుతాయి. లావాదేవీ డేటాలోని ప్రతి బైట్కు 5 గ్యాస్ రుసుము కూడా ఉంటుంది. గణన, బ్యాండ్విడ్త్ మరియు స్టోరేజ్తో సహా వారు వినియోగించే ప్రతి వనరుకు దాడి చేసే వ్యక్తి దామాషా ప్రకారం చెల్లించవలసి ఉంటుంది అనేది ఫీజు సిస్టమ్ యొక్క ఉద్దేశ్యం; అందువల్ల, నెట్వర్క్ ఈ వనరులలో దేనినైనా ఎక్కువ మొత్తంలో వినియోగించడానికి దారితీసే ఏదైనా లావాదేవీకి పెరుగుదలకు దాదాపు అనులోమానుపాతంలో గ్యాస్ ఫీజు ఉండాలి.
సందేశాలు
ఇతర కాంట్రాక్ట్లకు "సందేశాలను" పంపే సామర్థ్యం కాంట్రాక్ట్లకు ఉంటుంది. సందేశాలు వర్చువల్ ఆబ్జెక్ట్లు, ఇవి ఎప్పుడూ సీరియలైజ్ చేయబడవు మరియు ఎథీరియం ఎగ్జిక్యూషన్ వాతావరణంలో మాత్రమే ఉంటాయి. సందేశం వీటిని కలిగి ఉంటుంది:
- సందేశం పంపినవారు (అంతర్లీనంగా)
- సందేశం యొక్క గ్రహీత
- సందేశంతో పాటు బదిలీ చేయాల్సిన ఈథర్ మొత్తం
- ఐచ్ఛిక డేటా ఫీల్డ్
- ఒక
STARTGASవిలువ
ముఖ్యంగా, సందేశం అనేది లావాదేవీ లాంటిది, అయితే ఇది బాహ్య నటుడి ద్వారా కాకుండా కాంట్రాక్ట్ ద్వారా ఉత్పత్తి చేయబడుతుంది. ప్రస్తుతం కోడ్ను అమలు చేస్తున్న కాంట్రాక్ట్ CALL ఆప్కోడ్ను అమలు చేసినప్పుడు సందేశం ఉత్పత్తి చేయబడుతుంది, ఇది సందేశాన్ని ఉత్పత్తి చేస్తుంది మరియు అమలు చేస్తుంది. లావాదేవీ వలె, సందేశం గ్రహీత ఖాతా దాని కోడ్ను అమలు చేయడానికి దారితీస్తుంది. అందువల్ల, బాహ్య నటులు చేయగలిగిన విధంగానే కాంట్రాక్ట్లు ఇతర కాంట్రాక్ట్లతో సంబంధాలను కలిగి ఉంటాయి.
లావాదేవీ లేదా కాంట్రాక్ట్ ద్వారా కేటాయించబడిన గ్యాస్ అనుమతి మొత్తం ఆ లావాదేవీ మరియు అన్ని ఉప-అమలుల ద్వారా వినియోగించబడే మొత్తం గ్యాస్కు వర్తిస్తుందని గమనించండి. ఉదాహరణకు, బాహ్య నటుడు A 1000 గ్యాస్తో B కి లావాదేవీని పంపితే, మరియు C కి సందేశం పంపే ముందు B 600 గ్యాస్ను వినియోగిస్తే, మరియు C యొక్క అంతర్గత అమలు తిరిగి వచ్చే ముందు 300 గ్యాస్ను వినియోగిస్తే, అప్పుడు B గ్యాస్ అయిపోయే ముందు మరో 100 గ్యాస్ను ఖర్చు చేయవచ్చు.
ఎథీరియం స్థితి పరివర్తన ఫంక్షన్
ఎథీరియం స్థితి పరివర్తన ఫంక్షన్, APPLY(S,TX) -> S' ఈ క్రింది విధంగా నిర్వచించబడుతుంది:
- లావాదేవీ సరిగ్గా రూపొందించబడిందో లేదో తనిఖీ చేయండి (అంటే, సరైన విలువల సంఖ్యను కలిగి ఉందో లేదో), సంతకం చెల్లుబాటు అవుతుందో లేదో మరియు నాన్స్ పంపినవారి ఖాతాలోని నాన్స్తో సరిపోలుతుందో లేదో తనిఖీ చేయండి. లేకపోతే, ఎర్రర్ను తిరిగి ఇవ్వండి.
- లావాదేవీ రుసుమును
STARTGAS * GASPRICEగా లెక్కించండి మరియు సంతకం నుండి పంపే చిరునామాను నిర్ణయించండి. పంపినవారి ఖాతా బ్యాలెన్స్ నుండి రుసుమును తీసివేయండి మరియు పంపినవారి నాన్స్ను పెంచండి. ఖర్చు చేయడానికి తగినంత బ్యాలెన్స్ లేకపోతే, ఎర్రర్ను తిరిగి ఇవ్వండి. GAS = STARTGASని ప్రారంభించండి మరియు లావాదేవీలోని బైట్లకు చెల్లించడానికి ప్రతి బైట్కు నిర్దిష్ట పరిమాణంలో గ్యాస్ను తీసివేయండి.- పంపినవారి ఖాతా నుండి స్వీకరించే ఖాతాకు లావాదేవీ విలువను బదిలీ చేయండి. స్వీకరించే ఖాతా ఇంకా ఉనికిలో లేకుంటే, దాన్ని సృష్టించండి. స్వీకరించే ఖాతా కాంట్రాక్ట్ అయితే, కాంట్రాక్ట్ కోడ్ను పూర్తయ్యే వరకు లేదా అమలులో గ్యాస్ అయిపోయే వరకు అమలు చేయండి.
- పంపినవారి వద్ద తగినంత డబ్బు లేనందున విలువ బదిలీ విఫలమైతే, లేదా కోడ్ అమలులో గ్యాస్ అయిపోతే, ఫీజుల చెల్లింపు మినహా అన్ని స్థితి మార్పులను రివర్ట్ చేయండి మరియు మైనర్ ఖాతాకు ఫీజులను జోడించండి.
- లేకపోతే, మిగిలిన మొత్తం గ్యాస్ కోసం ఫీజులను పంపినవారికి వాపసు చేయండి మరియు వినియోగించిన గ్యాస్ కోసం చెల్లించిన ఫీజులను మైనర్కు పంపండి.
ఉదాహరణకు, కాంట్రాక్ట్ కోడ్ ఇలా ఉందని అనుకుందాం:
if !self.storage[calldataload(0)]:
self.storage[calldataload(0)] = calldataload(32)
వాస్తవానికి కాంట్రాక్ట్ కోడ్ తక్కువ-స్థాయి EVM కోడ్లో వ్రాయబడిందని గమనించండి; స్పష్టత కోసం ఈ ఉదాహరణ మా ఉన్నత-స్థాయి భాషలలో ఒకటైన Serpent లో వ్రాయబడింది మరియు EVM కోడ్కు కంపైల్ చేయబడుతుంది. కాంట్రాక్ట్ స్టోరేజ్ ఖాళీగా ప్రారంభమవుతుందని అనుకుందాం, మరియు 10 ఈథర్ విలువ, 2000 గ్యాస్, 0.001 ఈథర్ గ్యాస్ప్రైస్ మరియు 64 బైట్ల డేటాతో లావాదేవీ పంపబడుతుంది, ఇందులో 0-31 బైట్లు 2 సంఖ్యను సూచిస్తాయి మరియు 32-63 బైట్లు CHARLIE స్ట్రింగ్ను సూచిస్తాయిfn3. ఈ సందర్భంలో స్థితి పరివర్తన ఫంక్షన్ కోసం ప్రక్రియ క్రింది విధంగా ఉంటుంది:
- లావాదేవీ చెల్లుబాటు అయ్యేలా మరియు సరిగ్గా రూపొందించబడిందో లేదో తనిఖీ చేయండి.
- లావాదేవీ పంపినవారి వద్ద కనీసం 2000 * 0.001 = 2 ఈథర్ ఉందో లేదో తనిఖీ చేయండి. ఉంటే, పంపినవారి ఖాతా నుండి 2 ఈథర్ను తీసివేయండి.
- గ్యాస్ = 2000 ని ప్రారంభించండి; లావాదేవీ 170 బైట్ల పొడవు మరియు బైట్-ఫీజు 5 అని ఊహిస్తే, 850 ని తీసివేయండి, తద్వారా 1150 గ్యాస్ మిగిలి ఉంటుంది.
- పంపినవారి ఖాతా నుండి మరో 10 ఈథర్ను తీసివేయండి మరియు దానిని కాంట్రాక్ట్ ఖాతాకు జోడించండి.
- కోడ్ను అమలు చేయండి. ఈ సందర్భంలో, ఇది చాలా సులభం: ఇది
2సూచిక వద్ద కాంట్రాక్ట్ స్టోరేజ్ ఉపయోగించబడిందో లేదో తనిఖీ చేస్తుంది, లేదని గమనిస్తుంది, కాబట్టి ఇది2సూచిక వద్ద స్టోరేజ్నుCHARLIEవిలువకు సెట్ చేస్తుంది. దీనికి 187 గ్యాస్ పడుతుందని అనుకుందాం, కాబట్టి మిగిలిన గ్యాస్ మొత్తం 1150 - 187 = 963 - పంపినవారి ఖాతాకు 963 * 0.001 = 0.963 ఈథర్ను తిరిగి జోడించండి మరియు ఫలిత స్థితిని తిరిగి ఇవ్వండి.
లావాదేవీని స్వీకరించే ముగింపులో ఎటువంటి కాంట్రాక్ట్ లేకపోతే, మొత్తం లావాదేవీ రుసుము అందించిన GASPRICE ని లావాదేవీ పొడవుతో బైట్లలో గుణించిన దానికి సమానంగా ఉంటుంది మరియు లావాదేవీతో పాటు పంపబడిన డేటా అసంబద్ధంగా ఉంటుంది.
రివర్ట్ల పరంగా సందేశాలు లావాదేవీలకు సమానంగా పనిచేస్తాయని గమనించండి: సందేశం అమలులో గ్యాస్ అయిపోతే, ఆ సందేశం యొక్క అమలు మరియు ఆ అమలు ద్వారా ప్రేరేపించబడిన అన్ని ఇతర అమలులు రివర్ట్ అవుతాయి, కానీ మాతృ అమలులు రివర్ట్ అవ్వాల్సిన అవసరం లేదు. దీని అర్థం ఒక కాంట్రాక్ట్ మరొక కాంట్రాక్ట్ను కాల్ చేయడం "సురక్షితం", ఎందుకంటే A, B ని G గ్యాస్తో కాల్ చేస్తే, A యొక్క అమలు గరిష్టంగా G గ్యాస్ను కోల్పోతుందని హామీ ఇవ్వబడుతుంది. చివరగా, కాంట్రాక్ట్ను సృష్టించే CREATE అనే ఆప్కోడ్ ఉందని గమనించండి; దీని అమలు మెకానిక్స్ సాధారణంగా CALL కి సమానంగా ఉంటాయి, అమలు యొక్క అవుట్పుట్ కొత్తగా సృష్టించబడిన కాంట్రాక్ట్ కోడ్ను నిర్ణయిస్తుంది అనే మినహాయింపుతో.
కోడ్ అమలు
ఎథీరియం కాంట్రాక్ట్లలోని కోడ్ తక్కువ-స్థాయి, స్టాక్-ఆధారిత బైట్కోడ్ భాషలో వ్రాయబడింది, దీనిని "ఎథీరియం వర్చువల్ మెషీన్ కోడ్" లేదా "EVM కోడ్" అని పిలుస్తారు. కోడ్ బైట్ల శ్రేణిని కలిగి ఉంటుంది, ఇక్కడ ప్రతి బైట్ ఒక ఆపరేషన్ను సూచిస్తుంది. సాధారణంగా, కోడ్ అమలు అనేది అనంతమైన లూప్, ఇది ప్రస్తుత ప్రోగ్రామ్ కౌంటర్ వద్ద (ఇది సున్నా వద్ద ప్రారంభమవుతుంది) ఆపరేషన్ను పదేపదే నిర్వహించడం మరియు కోడ్ ముగింపుకు చేరుకునే వరకు లేదా ఎర్రర్ లేదా STOP లేదా RETURN సూచన కనుగొనబడే వరకు ప్రోగ్రామ్ కౌంటర్ను ఒకటి పెంచడం కలిగి ఉంటుంది. డేటాను నిల్వ చేయడానికి ఆపరేషన్లు మూడు రకాల స్థలాలకు యాక్సెస్ను కలిగి ఉంటాయి:
- స్టాక్, విలువలను పుష్ మరియు పాప్ చేయగల లాస్ట్-ఇన్-ఫస్ట్-అవుట్ కంటైనర్
- మెమరీ, అనంతంగా విస్తరించదగిన బైట్ శ్రేణి
- కాంట్రాక్ట్ యొక్క దీర్ఘకాలిక స్టోరేజ్, ఒక కీ/వాల్యూ స్టోర్. గణన ముగిసిన తర్వాత రీసెట్ అయ్యే స్టాక్ మరియు మెమరీ వలె కాకుండా, స్టోరేజ్ దీర్ఘకాలం పాటు కొనసాగుతుంది.
కోడ్ ఇన్కమింగ్ సందేశం యొక్క విలువ, పంపినవారు మరియు డేటాను, అలాగే బ్లాక్ శీర్షిక డేటాను కూడా యాక్సెస్ చేయగలదు మరియు కోడ్ డేటా యొక్క బైట్ శ్రేణిని అవుట్పుట్గా కూడా తిరిగి ఇవ్వగలదు.
EVM కోడ్ యొక్క అధికారిక అమలు నమూనా ఆశ్చర్యకరంగా సులభం. ఎథీరియం వర్చువల్ మెషీన్ నడుస్తున్నప్పుడు, దాని పూర్తి గణన స్థితిని (block_state, transaction, message, code, memory, stack, pc, gas) టపుల్ ద్వారా నిర్వచించవచ్చు, ఇక్కడ block_state అనేది అన్ని ఖాతాలను కలిగి ఉన్న గ్లోబల్ స్థితి మరియు బ్యాలెన్స్లు మరియు స్టోరేజ్ను కలిగి ఉంటుంది. ప్రతి రౌండ్ అమలు ప్రారంభంలో, code యొక్క pcవ బైట్ను తీసుకోవడం ద్వారా ప్రస్తుత సూచన కనుగొనబడుతుంది (లేదా pc >= len(code) అయితే 0), మరియు ప్రతి సూచన టపుల్ను ఎలా ప్రభావితం చేస్తుందనే పరంగా దాని స్వంత నిర్వచనాన్ని కలిగి ఉంటుంది. ఉదాహరణకు, ADD స్టాక్ నుండి రెండు అంశాలను పాప్ చేస్తుంది మరియు వాటి మొత్తాన్ని పుష్ చేస్తుంది, gas ని 1 తగ్గిస్తుంది మరియు pc ని 1 పెంచుతుంది, మరియు SSTORE స్టాక్ నుండి మొదటి రెండు అంశాలను పాప్ చేస్తుంది మరియు మొదటి అంశం ద్వారా పేర్కొనబడిన సూచిక వద్ద కాంట్రాక్ట్ స్టోరేజ్లోకి రెండవ అంశాన్ని చొప్పిస్తుంది. జస్ట్-ఇన్-టైమ్ కంపైలేషన్ ద్వారా ఎథీరియం వర్చువల్ మెషీన్ అమలును ఆప్టిమైజ్ చేయడానికి అనేక మార్గాలు ఉన్నప్పటికీ, ఎథీరియం యొక్క ప్రాథమిక అమలును కొన్ని వందల లైన్ల కోడ్లో చేయవచ్చు.
బ్లాక్చైన్ మరియు మైనింగ్
ఎథీరియం బ్లాక్చైన్ అనేక విధాలుగా బిట్కాయిన్ బ్లాక్చైన్ను పోలి ఉంటుంది, అయినప్పటికీ ఇది కొన్ని తేడాలను కలిగి ఉంది. బ్లాక్చైన్ ఆర్కిటెక్చర్కు సంబంధించి ఎథీరియం మరియు బిట్కాయిన్ మధ్య ఉన్న ప్రధాన వ్యత్యాసం ఏమిటంటే, బిట్కాయిన్ వలె కాకుండా, ఎథీరియం బ్లాక్లు లావాదేవీల జాబితా మరియు అత్యంత ఇటీవలి స్థితి రెండింటి కాపీని కలిగి ఉంటాయి. అది పక్కన పెడితే, బ్లాక్ నంబర్ మరియు క్లిష్టత అనే మరో రెండు విలువలు కూడా బ్లాక్లో నిల్వ చేయబడతాయి. ఎథీరియంలో ప్రాథమిక బ్లాక్ ధృవీకరణ అల్గోరిథం క్రింది విధంగా ఉంటుంది:
- సూచించబడిన మునుపటి బ్లాక్ ఉనికిలో ఉందో లేదో మరియు చెల్లుబాటు అవుతుందో లేదో తనిఖీ చేయండి.
- బ్లాక్ యొక్క టైమ్స్టాంప్ సూచించబడిన మునుపటి బ్లాక్ కంటే ఎక్కువగా ఉందో లేదో మరియు భవిష్యత్తులో 15 నిమిషాల కంటే తక్కువగా ఉందో లేదో తనిఖీ చేయండి
- బ్లాక్ నంబర్, క్లిష్టత, లావాదేవీ రూట్, అంకుల్ రూట్ మరియు గ్యాస్ పరిమితి (వివిధ తక్కువ-స్థాయి ఎథీరియం-నిర్దిష్ట భావనలు) చెల్లుబాటు అవుతాయో లేదో తనిఖీ చేయండి.
- బ్లాక్లోని ప్రూఫ్-ఆఫ్-వర్క్ (PoW) చెల్లుబాటు అవుతుందో లేదో తనిఖీ చేయండి.
- మునుపటి బ్లాక్ ముగింపులో
S[0]స్థితిగా ఉండనివ్వండి. nలావాదేవీలతోTXబ్లాక్ యొక్క లావాదేవీల జాబితాగా ఉండనివ్వండి.0...n-1లోని అన్నిiకోసం,S[i+1] = APPLY(S[i],TX[i])ని సెట్ చేయండి. ఏదైనా అప్లికేషన్లు ఎర్రర్ను తిరిగి ఇస్తే, లేదా ఈ పాయింట్ వరకు బ్లాక్లో వినియోగించబడిన మొత్తం గ్యాస్GASLIMITని మించి ఉంటే, ఎర్రర్ను తిరిగి ఇవ్వండి.S_FINALనిS[n]గా ఉండనివ్వండి, కానీ మైనర్కు చెల్లించిన బ్లాక్ బహుమతిని జోడించండి.S_FINALస్థితి యొక్క మెర్కిల్ వృక్షం రూట్ బ్లాక్ శీర్షికలో అందించబడిన తుది స్థితి రూట్కు సమానంగా ఉందో లేదో తనిఖీ చేయండి. సమానంగా ఉంటే, బ్లాక్ చెల్లుబాటు అవుతుంది; లేకపోతే, అది చెల్లుబాటు కాదు.
ఈ విధానం మొదటి చూపులో అత్యంత అసమర్థమైనదిగా అనిపించవచ్చు, ఎందుకంటే ఇది ప్రతి బ్లాక్తో మొత్తం స్థితిని నిల్వ చేయాలి, కానీ వాస్తవానికి సామర్థ్యం బిట్కాయిన్తో పోల్చదగినదిగా ఉండాలి. కారణం ఏమిటంటే స్థితి ట్రీ నిర్మాణంలో నిల్వ చేయబడుతుంది మరియు ప్రతి బ్లాక్ తర్వాత ట్రీలో ఒక చిన్న భాగాన్ని మాత్రమే మార్చాలి. అందువల్ల, సాధారణంగా, రెండు ప్రక్కనే ఉన్న బ్లాక్ల మధ్య ట్రీలో ఎక్కువ భాగం ఒకేలా ఉండాలి మరియు అందువల్ల డేటాను ఒకసారి నిల్వ చేయవచ్చు మరియు పాయింటర్లను (అంటే, సబ్ట్రీల హాష్లు) ఉపయోగించి రెండుసార్లు సూచించవచ్చు. దీన్ని సాధించడానికి "ప్యాట్రిసియా ట్రీ" అని పిలువబడే ఒక ప్రత్యేక రకమైన ట్రీ ఉపయోగించబడుతుంది, ఇందులో మెర్కిల్ వృక్షం భావనకు సవరణ ఉంటుంది, ఇది నోడ్లను సమర్థవంతంగా చొప్పించడానికి మరియు తొలగించడానికి అనుమతిస్తుంది, కేవలం మార్చడానికి మాత్రమే కాదు. అదనంగా, మొత్తం స్థితి సమాచారం చివరి బ్లాక్లో భాగం కాబట్టి, మొత్తం బ్లాక్చైన్ చరిత్రను నిల్వ చేయవలసిన అవసరం లేదు - ఈ వ్యూహాన్ని బిట్కాయిన్కు వర్తింపజేయగలిగితే, స్థలంలో 5-20 రెట్లు ఆదా అవుతుందని లెక్కించవచ్చు.
భౌతిక హార్డ్వేర్ పరంగా కాంట్రాక్ట్ కోడ్ "ఎక్కడ" అమలు చేయబడుతుంది అనేది సాధారణంగా అడిగే ప్రశ్న. దీనికి సులభమైన సమాధానం ఉంది: కాంట్రాక్ట్ కోడ్ను అమలు చేసే ప్రక్రియ స్థితి పరివర్తన ఫంక్షన్ యొక్క నిర్వచనంలో భాగం, ఇది బ్లాక్ ధృవీకరణ అల్గోరిథంలో భాగం, కాబట్టి లావాదేవీ B బ్లాక్లోకి జోడించబడితే, ఆ లావాదేవీ ద్వారా పుట్టుకొచ్చిన కోడ్ అమలు B బ్లాక్ను డౌన్లోడ్ చేసి ధృవీకరించే అన్ని నోడ్ల ద్వారా, ఇప్పుడు మరియు భవిష్యత్తులో అమలు చేయబడుతుంది.
అప్లికేషన్లు
సాధారణంగా, ఎథీరియం పైన మూడు రకాల అప్లికేషన్లు ఉంటాయి. మొదటి వర్గం ఆర్థిక అప్లికేషన్లు, ఇవి వినియోగదారులకు తమ డబ్బును నిర్వహించడానికి మరియు కాంట్రాక్ట్లలోకి ప్రవేశించడానికి మరింత శక్తివంతమైన మార్గాలను అందిస్తాయి. దీనిలో ఉప-కరెన్సీలు, ఆర్థిక ఉత్పన్నాలు, హెడ్జింగ్ కాంట్రాక్ట్లు, పొదుపు వాలెట్లు, వీలునామాలు మరియు అంతిమంగా కొన్ని రకాల పూర్తి-స్థాయి ఉపాధి కాంట్రాక్ట్లు కూడా ఉంటాయి. రెండవ వర్గం పాక్షిక-ఆర్థిక అప్లికేషన్లు, ఇక్కడ డబ్బు ప్రమేయం ఉంటుంది కానీ జరుగుతున్న పనిలో ద్రవ్యేతర అంశం కూడా ఎక్కువగా ఉంటుంది; గణన సమస్యల పరిష్కారాలకు స్వయంచాలకంగా అమలు అయ్యే బౌంటీలు దీనికి సరైన ఉదాహరణ. చివరగా, ఆన్లైన్ ఓటింగ్ మరియు వికేంద్రీకృత పరిపాలన వంటి అప్లికేషన్లు ఉన్నాయి, ఇవి ఏమాత్రం ఆర్థికపరమైనవి కావు.
టోకెన్ సిస్టమ్లు
ఆన్-బ్లాక్చైన్ టోకెన్ సిస్టమ్లు USD లేదా బంగారం వంటి ఆస్తులను సూచించే ఉప-కరెన్సీల నుండి కంపెనీ స్టాక్లు, స్మార్ట్ ఆస్తిని సూచించే వ్యక్తిగత టోకెన్లు, సురక్షితమైన ఫోర్జరీ చేయలేని కూపన్లు మరియు ప్రోత్సాహక పాయింట్ సిస్టమ్లుగా ఉపయోగించే సాంప్రదాయ విలువతో ఎలాంటి సంబంధం లేని టోకెన్ సిస్టమ్ల వరకు అనేక అప్లికేషన్లను కలిగి ఉన్నాయి. ఎథీరియంలో టోకెన్ సిస్టమ్లను అమలు చేయడం ఆశ్చర్యకరంగా చాలా సులభం. ఇక్కడ అర్థం చేసుకోవాల్సిన ముఖ్యమైన విషయం ఏమిటంటే, కరెన్సీ లేదా టోకెన్ సిస్టమ్ అనేది ప్రాథమికంగా ఒకే ఒక ఆపరేషన్ ఉన్న డేటాబేస్: A నుండి X యూనిట్లను తీసివేసి, B కి X యూనిట్లను ఇవ్వడం, అయితే (i) లావాదేవీకి ముందు A వద్ద కనీసం X యూనిట్లు ఉండాలి మరియు (2) లావాదేవీని A ఆమోదించాలి అనే షరతులతో. టోకెన్ సిస్టమ్ను అమలు చేయడానికి ఈ లాజిక్ను ఒక కాంట్రాక్ట్లో అమలు చేయడం మాత్రమే అవసరం.
Serpent లో టోకెన్ సిస్టమ్ను అమలు చేయడానికి ప్రాథమిక కోడ్ ఈ క్రింది విధంగా ఉంటుంది:
def send(to, value):
if self.storage[msg.sender] >= value:
self.storage[msg.sender] = self.storage[msg.sender] - value
self.storage[to] = self.storage[to] + value
ఇది ప్రాథమికంగా ఈ పత్రంలో పైన వివరించిన "బ్యాంకింగ్ సిస్టమ్" స్థితి పరివర్తన ఫంక్షన్ యొక్క అక్షరాలా అమలు. మొదట కరెన్సీ యూనిట్లను పంపిణీ చేసే ప్రారంభ దశ మరియు కొన్ని ఇతర అసాధారణ సందర్భాల కోసం కొన్ని అదనపు కోడ్ లైన్లను జోడించాల్సి ఉంటుంది, మరియు ఆదర్శవంతంగా ఇతర కాంట్రాక్ట్లు ఒక చిరునామా యొక్క బ్యాలెన్స్ను అడిగి తెలుసుకునేలా ఒక ఫంక్షన్ను జోడించాలి. కానీ దానికి కావలసింది అంతే. సైద్ధాంతికంగా, ఉప-కరెన్సీలుగా పనిచేసే ఎథీరియం-ఆధారిత టోకెన్ సిస్టమ్లు ఆన్చైన్ బిట్కాయిన్-ఆధారిత మెటా-కరెన్సీలలో లేని మరొక ముఖ్యమైన లక్షణాన్ని కలిగి ఉండగలవు: లావాదేవీ రుసుములను నేరుగా ఆ కరెన్సీలోనే చెల్లించగల సామర్థ్యం. దీన్ని అమలు చేసే విధానం ఏమిటంటే, కాంట్రాక్ట్ ఒక ఈథర్ బ్యాలెన్స్ను నిర్వహిస్తుంది, దానితో పంపినవారికి ఫీజు చెల్లించడానికి ఉపయోగించిన ఈథర్ను వాపసు చేస్తుంది, మరియు ఫీజుగా తీసుకునే అంతర్గత కరెన్సీ యూనిట్లను సేకరించి, వాటిని నిరంతరం నడిచే వేలంలో తిరిగి విక్రయించడం ద్వారా ఈ బ్యాలెన్స్ను తిరిగి నింపుతుంది. అందువల్ల వినియోగదారులు తమ ఖాతాలను ఈథర్తో "యాక్టివేట్" చేసుకోవాల్సి ఉంటుంది, కానీ ఒకసారి ఈథర్ ఉన్న తర్వాత అది తిరిగి ఉపయోగించబడుతుంది ఎందుకంటే కాంట్రాక్ట్ ప్రతిసారీ దానిని వాపసు చేస్తుంది.
ఆర్థిక ఉత్పన్నాలు మరియు స్థిర-విలువ కరెన్సీలు
ఆర్థిక ఉత్పన్నాలు అనేవి "స్మార్ట్ కాంట్రాక్ట్" యొక్క అత్యంత సాధారణ అప్లికేషన్, మరియు కోడ్లో అమలు చేయడానికి అత్యంత సులభమైన వాటిలో ఒకటి. ఆర్థిక కాంట్రాక్ట్లను అమలు చేయడంలో ప్రధాన సవాలు ఏమిటంటే, వాటిలో ఎక్కువ వాటికి బాహ్య ధరల సూచిక సూచన అవసరం; ఉదాహరణకు, US డాలర్కు సంబంధించి ఈథర్ (లేదా మరొక క్రిప్టోకరెన్సీ) యొక్క అస్థిరతకు వ్యతిరేకంగా హెడ్జ్ చేసే స్మార్ట్ కాంట్రాక్ట్ చాలా ఆశించదగిన అప్లికేషన్, కానీ ఇలా చేయడానికి కాంట్రాక్ట్కు ETH/USD విలువ ఎంతో తెలిసి ఉండాలి. దీన్ని చేయడానికి సులభమైన మార్గం ఒక నిర్దిష్ట పక్షం (ఉదా., NASDAQ) నిర్వహించే "డేటా ఫీడ్" కాంట్రాక్ట్ ద్వారా, ఆ పక్షం అవసరమైనప్పుడు కాంట్రాక్ట్ను అప్డేట్ చేయగల సామర్థ్యాన్ని కలిగి ఉండేలా రూపొందించబడింది, మరియు ఇతర కాంట్రాక్ట్లు ఆ కాంట్రాక్ట్కు సందేశం పంపడానికి మరియు ధరను అందించే ప్రతిస్పందనను తిరిగి పొందడానికి అనుమతించే ఇంటర్ఫేస్ను అందిస్తుంది.
ఆ కీలకమైన అంశం ఉన్నట్లయితే, హెడ్జింగ్ కాంట్రాక్ట్ ఈ క్రింది విధంగా ఉంటుంది:
- పక్షం A 1000 ఈథర్ను ఇన్పుట్ చేసే వరకు వేచి ఉండండి.
- పక్షం B 1000 ఈథర్ను ఇన్పుట్ చేసే వరకు వేచి ఉండండి.
- డేటా ఫీడ్ కాంట్రాక్ట్ను అడగడం ద్వారా లెక్కించబడిన 1000 ఈథర్ యొక్క USD విలువను నిల్వలో రికార్డ్ చేయండి, ఇది $x అనుకుందాం.
- 30 రోజుల తర్వాత, A కి $x విలువైన ఈథర్ను (కొత్త ధరను పొందడానికి డేటా ఫీడ్ కాంట్రాక్ట్ను మళ్లీ అడగడం ద్వారా లెక్కించబడుతుంది) మరియు మిగిలిన దానిని B కి పంపడానికి కాంట్రాక్ట్ను "తిరిగి యాక్టివేట్" చేయడానికి A లేదా B ని అనుమతించండి.
క్రిప్టో-కామర్స్లో ఇటువంటి కాంట్రాక్ట్కు గణనీయమైన సామర్థ్యం ఉంటుంది. క్రిప్టోకరెన్సీ గురించి ఉదహరించబడిన ప్రధాన సమస్యలలో ఒకటి అది అస్థిరమైనది కావడం; చాలా మంది వినియోగదారులు మరియు వ్యాపారులు క్రిప్టోగ్రాఫిక్ ఆస్తులతో వ్యవహరించే భద్రత మరియు సౌలభ్యాన్ని కోరుకున్నప్పటికీ, వారు ఒకే రోజులో తమ నిధుల విలువలో 23% కోల్పోయే అవకాశాన్ని ఎదుర్కోవడానికి ఇష్టపడకపోవచ్చు. ఇప్పటి వరకు, జారీచేసేవారి మద్దతు ఉన్న ఆస్తులు అత్యంత సాధారణంగా ప్రతిపాదించబడిన పరిష్కారం; దీని వెనుక ఉన్న ఆలోచన ఏమిటంటే, జారీచేసేవారు ఒక ఉప-కరెన్సీని సృష్టిస్తారు, అందులో వారికి యూనిట్లను జారీ చేయడానికి మరియు ఉపసంహరించుకోవడానికి హక్కు ఉంటుంది, మరియు వారికి (ఆఫ్లైన్లో) ఒక నిర్దిష్ట అంతర్లీన ఆస్తి (ఉదా., బంగారం, USD) యొక్క ఒక యూనిట్ను అందించే ఎవరికైనా కరెన్సీ యొక్క ఒక యూనిట్ను అందిస్తారు. క్రిప్టో-ఆస్తి యొక్క ఒక యూనిట్ను తిరిగి పంపే ఎవరికైనా అంతర్లీన ఆస్తి యొక్క ఒక యూనిట్ను అందిస్తానని జారీచేసేవారు వాగ్దానం చేస్తారు. జారీచేసేవారిని విశ్వసించగలిగితే, ఈ యంత్రాంగం ఏదైనా క్రిప్టోగ్రాఫిక్ కాని ఆస్తిని క్రిప్టోగ్రాఫిక్ ఆస్తిగా "ఉన్నతీకరించడానికి" అనుమతిస్తుంది.
అయితే, ఆచరణలో, జారీచేసేవారు ఎల్లప్పుడూ నమ్మదగినవారు కారు, మరియు కొన్ని సందర్భాల్లో ఇటువంటి సేవలు ఉనికిలో ఉండటానికి బ్యాంకింగ్ మౌలిక సదుపాయాలు చాలా బలహీనంగా లేదా చాలా ప్రతికూలంగా ఉంటాయి. ఆర్థిక ఉత్పన్నాలు ఒక ప్రత్యామ్నాయాన్ని అందిస్తాయి. ఇక్కడ, ఒక ఆస్తికి మద్దతు ఇవ్వడానికి నిధులను అందించే ఒకే జారీచేసేవారికి బదులుగా, క్రిప్టోగ్రాఫిక్ రిఫరెన్స్ ఆస్తి (ఉదా., ETH) ధర పెరుగుతుందని పందెం వేసే స్పెక్యులేటర్ల వికేంద్రీకృత మార్కెట్ ఆ పాత్రను పోషిస్తుంది. జారీచేసేవారిలా కాకుండా, స్పెక్యులేటర్లకు తమ ఒప్పందాన్ని ఉల్లంఘించే అవకాశం ఉండదు ఎందుకంటే హెడ్జింగ్ కాంట్రాక్ట్ వారి నిధులను ఎస్క్రో లో ఉంచుతుంది. ఈ విధానం పూర్తిగా వికేంద్రీకృతమైనది కాదని గమనించండి, ఎందుకంటే ధరల సూచికను అందించడానికి ఇప్పటికీ విశ్వసనీయ మూలం అవసరం, అయినప్పటికీ మౌలిక సదుపాయాల అవసరాలను తగ్గించడం (జారీచేసేవారిలా కాకుండా, ధరల ఫీడ్ను జారీ చేయడానికి ఎలాంటి లైసెన్స్లు అవసరం లేదు మరియు దీనిని వాక్ స్వాతంత్ర్యంగా వర్గీకరించవచ్చు) మరియు మోసం జరిగే అవకాశాన్ని తగ్గించడం పరంగా ఇది భారీ మెరుగుదల అని చెప్పవచ్చు.
గుర్తింపు మరియు కీర్తి సిస్టమ్లు
అన్నింటికంటే పురాతనమైన ప్రత్యామ్నాయ క్రిప్టోకరెన్సీ అయిన Namecoin (opens in a new tab), పేరు నమోదు సిస్టమ్ను అందించడానికి బిట్కాయిన్ లాంటి బ్లాక్చైన్ను ఉపయోగించడానికి ప్రయత్నించింది, ఇక్కడ వినియోగదారులు ఇతర డేటాతో పాటు పబ్లిక్ డేటాబేస్లో తమ పేర్లను నమోదు చేసుకోవచ్చు. దీని ప్రధాన ఉపయోగం DNS (opens in a new tab) సిస్టమ్ కోసం ఉదహరించబడింది, ఇది "bitcoin.org" (లేదా, Namecoin విషయంలో, "bitcoin.bit") వంటి డొమైన్ పేర్లను IP చిరునామాకు మ్యాప్ చేస్తుంది. ఇతర ఉపయోగాలలో ఇమెయిల్ ప్రామాణీకరణ మరియు మరింత అధునాతన కీర్తి సిస్టమ్లు ఉన్నాయి. ఎథీరియంలో Namecoin లాంటి పేరు నమోదు సిస్టమ్ను అందించడానికి ప్రాథమిక కాంట్రాక్ట్ ఇక్కడ ఉంది:
def register(name, value):
if !self.storage[name]:
self.storage[name] = value
ఈ కాంట్రాక్ట్ చాలా సులభమైనది; ఇది ఎథీరియం నెట్వర్క్ లోపల ఉన్న ఒక డేటాబేస్, దీనికి డేటాను జోడించవచ్చు, కానీ సవరించలేము లేదా తీసివేయలేము. ఎవరైనా కొంత విలువతో పేరును నమోదు చేసుకోవచ్చు, మరియు ఆ నమోదు శాశ్వతంగా ఉంటుంది. మరింత అధునాతన పేరు నమోదు కాంట్రాక్ట్ ఇతర కాంట్రాక్ట్లు దానిని అడిగి తెలుసుకోవడానికి అనుమతించే "ఫంక్షన్ క్లాజ్"ను కలిగి ఉంటుంది, అలాగే పేరు యొక్క "యజమాని" (అంటే, మొదటిసారి నమోదు చేసుకున్న వ్యక్తి) డేటాను మార్చడానికి లేదా యాజమాన్యాన్ని బదిలీ చేయడానికి ఒక యంత్రాంగాన్ని కలిగి ఉంటుంది. దీని పైన కీర్తి మరియు వెబ్-ఆఫ్-ట్రస్ట్ కార్యాచరణను కూడా జోడించవచ్చు.
వికేంద్రీకృత ఫైల్ నిల్వ
గత కొన్ని సంవత్సరాలుగా, అనేక ప్రసిద్ధ ఆన్లైన్ ఫైల్ నిల్వ స్టార్టప్లు ఉద్భవించాయి, వాటిలో అత్యంత ప్రముఖమైనది డ్రాప్బాక్స్, ఇది వినియోగదారులు తమ హార్డ్ డ్రైవ్ యొక్క బ్యాకప్ను అప్లోడ్ చేయడానికి మరియు నెలవారీ రుసుముకు బదులుగా ఆ బ్యాకప్ను నిల్వ చేసి వినియోగదారుడు దానిని యాక్సెస్ చేయడానికి అనుమతిస్తుంది. అయినప్పటికీ, ఈ సమయంలో ఫైల్ నిల్వ మార్కెట్ కొన్నిసార్లు సాపేక్షంగా అసమర్థంగా ఉంది; అందుబాటులో ఉన్న వివిధ పరిష్కారాలను పరిశీలిస్తే, ముఖ్యంగా ఉచిత కోటాలు లేదా ఎంటర్ప్రైజ్-స్థాయి తగ్గింపులు వర్తించని "అన్కానీ వ్యాలీ" 20-200 GB స్థాయిలో, ప్రధాన స్రవంతి ఫైల్ నిల్వ ఖర్చుల నెలవారీ ధరలు ఎలా ఉన్నాయంటే, మీరు ఒకే నెలలో మొత్తం హార్డ్ డ్రైవ్ ఖర్చు కంటే ఎక్కువ చెల్లిస్తున్నారు. ఎథీరియం కాంట్రాక్ట్లు వికేంద్రీకృత ఫైల్ నిల్వ పర్యావరణ వ్యవస్థ అభివృద్ధికి అనుమతించగలవు, ఇక్కడ వ్యక్తిగత వినియోగదారులు తమ స్వంత హార్డ్ డ్రైవ్లను అద్దెకు ఇవ్వడం ద్వారా తక్కువ మొత్తంలో డబ్బు సంపాదించవచ్చు మరియు ఉపయోగించని స్థలాన్ని ఫైల్ నిల్వ ఖర్చులను మరింత తగ్గించడానికి ఉపయోగించవచ్చు.
అటువంటి పరికరం యొక్క ముఖ్యమైన ఆధారభూతమైన భాగం మనం "వికేంద్రీకృత డ్రాప్బాక్స్ కాంట్రాక్ట్" అని పిలిచేది. ఈ కాంట్రాక్ట్ ఈ క్రింది విధంగా పనిచేస్తుంది. ముందుగా, కావలసిన డేటాను బ్లాక్లుగా విభజించి, గోప్యత కోసం ప్రతి బ్లాక్ను ఎన్క్రిప్ట్ చేసి, దాని నుండి ఒక మెర్కిల్ వృక్షం నిర్మిస్తారు. ఆ తర్వాత, ప్రతి N బ్లాక్లకు, కాంట్రాక్ట్ మెర్కిల్ వృక్షంలో యాదృచ్ఛిక సూచికను ఎంచుకుంటుంది (కాంట్రాక్ట్ కోడ్ నుండి యాక్సెస్ చేయగల మునుపటి బ్లాక్ హాష్ను యాదృచ్ఛికతకు మూలంగా ఉపయోగిస్తుంది), మరియు వృక్షంలోని ఆ నిర్దిష్ట సూచిక వద్ద ఉన్న బ్లాక్ యొక్క యాజమాన్యానికి సరళీకృత చెల్లింపు ధృవీకరణ లాంటి రుజువుతో లావాదేవీని సరఫరా చేసే మొదటి పక్షానికి X ఈథర్ను ఇస్తుంది అనే నియమంతో ఒక కాంట్రాక్ట్ను రూపొందిస్తారు. వినియోగదారుడు తమ ఫైల్ను తిరిగి డౌన్లోడ్ చేసుకోవాలనుకున్నప్పుడు, వారు ఫైల్ను తిరిగి పొందడానికి మైక్రోపేమెంట్ ఛానల్ ప్రోటోకాల్ను (ఉదా., 32 కిలోబైట్లకు 1 సబో చెల్లించడం) ఉపయోగించవచ్చు; అత్యంత ఫీజు-సమర్థవంతమైన విధానం ఏమిటంటే, చెల్లించేవారు లావాదేవీని చివరి వరకు ప్రచురించకుండా, దానికి బదులుగా ప్రతి 32 కిలోబైట్ల తర్వాత అదే నాన్స్తో కొంచెం ఎక్కువ లాభదాయకమైన లావాదేవీతో భర్తీ చేయడం.
ఈ ప్రోటోకాల్ యొక్క ముఖ్యమైన లక్షణం ఏమిటంటే, ఫైల్ను మర్చిపోకూడదని నిర్ణయించుకోవడానికి అనేక యాదృచ్ఛిక నోడ్లను విశ్వసిస్తున్నట్లు అనిపించినప్పటికీ, సీక్రెట్ షేరింగ్ ద్వారా ఫైల్ను అనేక ముక్కలుగా విభజించడం ద్వారా మరియు ప్రతి ముక్క ఇప్పటికీ ఏదో ఒక నోడ్ ఆధీనంలో ఉందో లేదో చూడటానికి కాంట్రాక్ట్లను గమనించడం ద్వారా ఆ ప్రమాదాన్ని దాదాపు సున్నాకి తగ్గించవచ్చు. ఒక కాంట్రాక్ట్ ఇప్పటికీ డబ్బు చెల్లిస్తుంటే, ఎక్కడో ఒకరు ఆ ఫైల్ను ఇంకా నిల్వ చేస్తున్నారని అది క్రిప్టోగ్రాఫిక్ రుజువును అందిస్తుంది.
వికేంద్రీకృత స్వయంప్రతిపత్త సంస్థలు
"వికేంద్రీకృత స్వయంప్రతిపత్త సంస్థ" యొక్క సాధారణ భావన ఏమిటంటే, ఇది ఒక నిర్దిష్ట సభ్యులు లేదా వాటాదారుల సమూహాన్ని కలిగి ఉన్న వర్చువల్ సంస్థ, వీరు బహుశా 67% మెజారిటీతో, సంస్థ యొక్క నిధులను ఖర్చు చేయడానికి మరియు దాని కోడ్ను సవరించడానికి హక్కును కలిగి ఉంటారు. సంస్థ తన నిధులను ఎలా కేటాయించాలో సభ్యులు సమిష్టిగా నిర్ణయిస్తారు. DAO యొక్క నిధులను కేటాయించే పద్ధతులు బౌంటీలు, జీతాల నుండి పనికి ప్రతిఫలం ఇవ్వడానికి అంతర్గత కరెన్సీ వంటి మరింత వినూత్నమైన యంత్రాంగాల వరకు ఉండవచ్చు. ఇది ప్రాథమికంగా సాంప్రదాయ కంపెనీ లేదా లాభాపేక్షలేని సంస్థ యొక్క చట్టపరమైన ఆకృతులను ప్రతిబింబిస్తుంది కానీ అమలు కోసం కేవలం క్రిప్టోగ్రాఫిక్ బ్లాక్చైన్ సాంకేతికతను మాత్రమే ఉపయోగిస్తుంది. ఇప్పటివరకు DAOల చుట్టూ జరిగిన చర్చలో ఎక్కువ భాగం డివిడెండ్ పొందే వాటాదారులు మరియు వర్తకం చేయదగిన షేర్లతో కూడిన "వికేంద్రీకృత స్వయంప్రతిపత్త కార్పొరేషన్" (DAC) యొక్క "పెట్టుబడిదారీ" నమూనా చుట్టూనే ఉంది; దీనికి ప్రత్యామ్నాయంగా, బహుశా "వికేంద్రీకృత స్వయంప్రతిపత్త సంఘం"గా వర్ణించబడే దానిలో, సభ్యులందరికీ నిర్ణయం తీసుకోవడంలో సమాన వాటా ఉంటుంది మరియు ఒక సభ్యుడిని జోడించడానికి లేదా తీసివేయడానికి ఉన్న సభ్యులలో 67% మంది అంగీకరించాల్సి ఉంటుంది. ఒక వ్యక్తికి ఒక సభ్యత్వం మాత్రమే ఉండాలనే నిబంధనను అప్పుడు సమూహం సమిష్టిగా అమలు చేయాల్సి ఉంటుంది.
DAO ని ఎలా కోడ్ చేయాలి అనేదానికి సాధారణ రూపురేఖలు ఈ క్రింది విధంగా ఉన్నాయి. అత్యంత సరళమైన డిజైన్ ఏమిటంటే, మూడింట రెండు వంతుల మంది సభ్యులు మార్పుకు అంగీకరిస్తే మారే స్వయంగా-సవరించుకునే కోడ్. కోడ్ సైద్ధాంతికంగా మార్చలేనిది అయినప్పటికీ, కోడ్ యొక్క భాగాలను వేర్వేరు కాంట్రాక్ట్లలో ఉంచడం ద్వారా మరియు ఏ కాంట్రాక్ట్లను కాల్ చేయాలో వాటి చిరునామాను సవరించదగిన నిల్వలో ఉంచడం ద్వారా దీనిని సులభంగా అధిగమించవచ్చు మరియు వాస్తవానికి మార్చగలిగే సామర్థ్యాన్ని పొందవచ్చు. అటువంటి DAO కాంట్రాక్ట్ యొక్క సరళమైన అమలులో, లావాదేవీలో అందించబడిన డేటా ద్వారా వేరుచేయబడిన మూడు రకాల లావాదేవీలు ఉంటాయి:
- నిల్వ సూచిక
Kవద్ద ఉన్న చిరునామానుVవిలువకు మార్చడానికి సూచికiతో ప్రతిపాదనను నమోదు చేయడానికి[0,i,K,V] - ప్రతిపాదన
iకి అనుకూలంగా ఓటును నమోదు చేయడానికి[1,i] - తగినన్ని ఓట్లు వేయబడితే ప్రతిపాదన
iని ఖరారు చేయడానికి[2,i]
అప్పుడు కాంట్రాక్ట్ వీటిలో ప్రతిదానికీ నిబంధనలను కలిగి ఉంటుంది. ఇది అన్ని ఓపెన్ స్టోరేజ్ మార్పుల రికార్డును, వాటికి ఎవరు ఓటు వేశారో తెలిపే జాబితాతో పాటు నిర్వహిస్తుంది. ఇది సభ్యులందరి జాబితాను కూడా కలిగి ఉంటుంది. ఏదైనా నిల్వ మార్పుకు మూడింట రెండు వంతుల మంది సభ్యులు ఓటు వేసినప్పుడు, ఖరారు చేసే లావాదేవీ ఆ మార్పును అమలు చేయగలదు. మరింత అధునాతనమైన ఆకృతిలో లావాదేవీని పంపడం, సభ్యులను జోడించడం మరియు సభ్యులను తీసివేయడం వంటి ఫీచర్ల కోసం అంతర్నిర్మిత ఓటింగ్ సామర్థ్యం కూడా ఉంటుంది, మరియు లిక్విడ్ డెమోక్రసీ (opens in a new tab) తరహా ఓటు ప్రాతినిధ్యం అప్పగింతను కూడా అందించవచ్చు (అంటే, ఎవరైనా తమ తరపున ఓటు వేయడానికి మరొకరిని నియమించవచ్చు, మరియు ఈ నియామకం బదిలీ చేయదగినది కాబట్టి A, B ని నియమిస్తే మరియు B, C ని నియమిస్తే అప్పుడు C, A యొక్క ఓటును నిర్ణయిస్తుంది). ఈ డిజైన్ DAO ని వికేంద్రీకృత సంఘంగా సేంద్రీయంగా ఎదగడానికి అనుమతిస్తుంది, ఎవరు సభ్యులు అనేదాన్ని ఫిల్టర్ చేసే పనిని చివరికి నిపుణులకు అప్పగించడానికి ప్రజలను అనుమతిస్తుంది, అయితే "ప్రస్తుత సిస్టమ్"లో వలె కాకుండా వ్యక్తిగత సంఘం సభ్యులు తమ అనుబంధాలను మార్చుకున్నప్పుడు నిపుణులు కాలక్రమేణా సులభంగా ఉనికిలోకి రావచ్చు మరియు కనుమరుగవ్వవచ్చు.
వికేంద్రీకృత కార్పొరేషన్ కోసం ఒక ప్రత్యామ్నాయ నమూనా ఉంది, ఇక్కడ ఏ ఖాతాకైనా సున్నా లేదా అంతకంటే ఎక్కువ షేర్లు ఉండవచ్చు, మరియు నిర్ణయం తీసుకోవడానికి మూడింట రెండు వంతుల షేర్లు అవసరం. పూర్తి ఆకృతిలో ఆస్తి నిర్వహణ కార్యాచరణ, షేర్లను కొనుగోలు చేయడానికి లేదా విక్రయించడానికి ఆఫర్ చేసే సామర్థ్యం మరియు ఆఫర్లను అంగీకరించే సామర్థ్యం (ప్రాధాన్యంగా కాంట్రాక్ట్ లోపల ఆర్డర్-మ్యాచింగ్ యంత్రాంగంతో) ఉంటాయి. "బోర్డ్ ఆఫ్ డైరెక్టర్స్" భావనను సాధారణీకరిస్తూ, లిక్విడ్ డెమోక్రసీ తరహాలో ప్రాతినిధ్యం అప్పగింత కూడా ఉంటుంది.
మరిన్ని అప్లికేషన్లు
1. పొదుపు వాలెట్లు. ఆలిస్ తన నిధులను సురక్షితంగా ఉంచుకోవాలనుకుంటుంది అనుకుందాం, కానీ ఆమె తన ప్రైవేట్ కీని కోల్పోతుందేమో లేదా ఎవరైనా హ్యాక్ చేస్తారేమో అని ఆందోళన చెందుతోంది. ఆమె బ్యాంక్ అయిన బాబ్తో ఒక కాంట్రాక్ట్లో ఈథర్ను ఈ క్రింది విధంగా ఉంచుతుంది:
- ఆలిస్ మాత్రమే రోజుకు గరిష్టంగా 1% నిధులను ఉపసంహరించుకోగలదు.
- బాబ్ మాత్రమే రోజుకు గరిష్టంగా 1% నిధులను ఉపసంహరించుకోగలడు, కానీ ఆలిస్ తన కీతో లావాదేవీ చేయడం ద్వారా ఈ సామర్థ్యాన్ని నిలిపివేసే సామర్థ్యాన్ని కలిగి ఉంటుంది.
- ఆలిస్ మరియు బాబ్ ఇద్దరూ కలిసి ఎంతైనా ఉపసంహరించుకోవచ్చు.
సాధారణంగా, ఆలిస్కు రోజుకు 1% సరిపోతుంది, మరియు ఆలిస్ మరింత ఉపసంహరించుకోవాలనుకుంటే ఆమె సహాయం కోసం బాబ్ను సంప్రదించవచ్చు. ఆలిస్ కీ హ్యాక్ చేయబడితే, ఆమె నిధులను కొత్త కాంట్రాక్ట్కు తరలించడానికి బాబ్ వద్దకు వెళుతుంది. ఆమె తన కీని కోల్పోతే, బాబ్ చివరికి నిధులను బయటకు తీస్తాడు. బాబ్ హానికరమైనవాడు అని తేలితే, ఆమె అతని ఉపసంహరణ సామర్థ్యాన్ని నిలిపివేయవచ్చు.
2. పంట బీమా. ఏదైనా ధరల సూచికకు బదులుగా వాతావరణం యొక్క డేటా ఫీడ్ను ఉపయోగించి ఎవరైనా సులభంగా ఆర్థిక ఉత్పన్నాల కాంట్రాక్ట్ను రూపొందించవచ్చు. అయోవాలోని ఒక రైతు అయోవాలో కురిసే వర్షపాతం ఆధారంగా విలోమంగా చెల్లించే డెరివేటివ్ను కొనుగోలు చేస్తే, కరువు వస్తే, రైతుకు స్వయంచాలకంగా డబ్బు అందుతుంది మరియు తగినంత వర్షం కురిస్తే రైతు సంతోషంగా ఉంటాడు ఎందుకంటే వారి పంటలు బాగా పండుతాయి. దీనిని సాధారణంగా ప్రకృతి విపత్తు బీమాకు విస్తరించవచ్చు.
3. వికేంద్రీకృత డేటా ఫీడ్. వ్యత్యాసం కోసం ఆర్థిక కాంట్రాక్ట్ల కోసం, వాస్తవానికి "SchellingCoin (opens in a new tab)" అనే ప్రోటోకాల్ ద్వారా డేటా ఫీడ్ను వికేంద్రీకరించడం సాధ్యమవుతుంది. SchellingCoin ప్రాథమికంగా ఈ క్రింది విధంగా పనిచేస్తుంది: N పక్షాలన్నీ సిస్టమ్లో ఇచ్చిన డేటా విలువను (ఉదా., ETH/USD ధర) ఉంచుతాయి, విలువలు క్రమబద్ధీకరించబడతాయి మరియు 25వ మరియు 75వ పర్సంటైల్ మధ్య ఉన్న ప్రతి ఒక్కరికీ ప్రతిఫలంగా ఒక టోకెన్ లభిస్తుంది. ప్రతి ఒక్కరూ ఇతరులు అందించే సమాధానాన్ని అందించడానికి ప్రోత్సాహకాన్ని కలిగి ఉంటారు, మరియు పెద్ద సంఖ్యలో ఆటగాళ్లు వాస్తవికంగా అంగీకరించగల ఏకైక విలువ స్పష్టమైన డిఫాల్ట్: సత్యం. ఇది సైద్ధాంతికంగా ETH/USD ధర, బెర్లిన్ లోని ఉష్ణోగ్రత లేదా ఒక నిర్దిష్ట కఠినమైన గణన ఫలితంతో సహా ఎన్ని విలువలనైనా అందించగల వికేంద్రీకృత ప్రోటోకాల్ను సృష్టిస్తుంది.
4. స్మార్ట్ మల్టీసిగ్ ఎస్క్రో. బిట్కాయిన్ మల్టీసిగ్ లావాదేవీ కాంట్రాక్ట్లను అనుమతిస్తుంది, ఇక్కడ ఉదాహరణకు, ఇచ్చిన ఐదు కీలలో మూడు నిధులను ఖర్చు చేయగలవు. ఎథీరియం మరింత సూక్ష్మతను అనుమతిస్తుంది; ఉదాహరణకు, ఐదింటిలో నాలుగు కీలు మొత్తాన్ని ఖర్చు చేయగలవు, ఐదింటిలో మూడు కీలు రోజుకు 10% వరకు ఖర్చు చేయగలవు మరియు ఐదింటిలో రెండు కీలు రోజుకు 0.5% వరకు ఖర్చు చేయగలవు. అదనంగా, ఎథీరియం మల్టీసిగ్ అసమకాలికమైనది - రెండు పక్షాలు వేర్వేరు సమయాల్లో బ్లాక్చైన్లో తమ సంతకాలను నమోదు చేయవచ్చు మరియు చివరి సంతకం స్వయంచాలకంగా లావాదేవీని పంపుతుంది.
5. క్లౌడ్ కంప్యూటింగ్. EVM సాంకేతికతను ధృవీకరించదగిన కంప్యూటింగ్ వాతావరణాన్ని సృష్టించడానికి కూడా ఉపయోగించవచ్చు, ఇది వినియోగదారులు ఇతరులను గణనలను నిర్వహించమని అడగడానికి మరియు ఆ తర్వాత ఐచ్ఛికంగా యాదృచ్ఛికంగా ఎంచుకున్న కొన్ని చెక్పాయింట్ల వద్ద గణనలు సరిగ్గా జరిగాయని రుజువులను అడగడానికి అనుమతిస్తుంది. ఇది ఏ వినియోగదారుడైనా తమ డెస్క్టాప్, ల్యాప్టాప్ లేదా ప్రత్యేక సర్వర్తో పాల్గొనగల క్లౌడ్ కంప్యూటింగ్ మార్కెట్ సృష్టికి అనుమతిస్తుంది, మరియు సిస్టమ్ నమ్మదగినదని (అంటే, నోడ్లు లాభదాయకంగా మోసం చేయలేవు) నిర్ధారించడానికి భద్రతా డిపాజిట్లతో పాటు స్పాట్-చెకింగ్ను ఉపయోగించవచ్చు. అటువంటి సిస్టమ్ అన్ని పనులకు తగినది కానప్పటికీ; ఉదాహరణకు, అధిక స్థాయి ఇంటర్-ప్రాసెస్ కమ్యూనికేషన్ అవసరమయ్యే పనులను పెద్ద నోడ్ల క్లౌడ్లో సులభంగా చేయలేము. అయితే, ఇతర పనులను సమాంతరంగా చేయడం చాలా సులభం; SETI@home, folding@home మరియు జెనెటిక్ అల్గారిథమ్ల వంటి ప్రాజెక్ట్లను అటువంటి ప్లాట్ఫారమ్ పైన సులభంగా అమలు చేయవచ్చు.
6. పీర్-టు-పీర్ గ్యాంబ్లింగ్. ఫ్రాంక్ స్టాజానో మరియు రిచర్డ్ క్లేటన్ యొక్క Cyberdice (opens in a new tab) వంటి ఎన్ని పీర్-టు-పీర్ గ్యాంబ్లింగ్ ప్రోటోకాల్లైనా ఎథీరియం బ్లాక్చైన్లో అమలు చేయబడతాయి. అత్యంత సరళమైన గ్యాంబ్లింగ్ ప్రోటోకాల్ వాస్తవానికి తదుపరి బ్లాక్ హాష్పై వ్యత్యాసం కోసం ఒక కాంట్రాక్ట్ మాత్రమే, మరియు మోసం చేసే సామర్థ్యం లేని దాదాపు సున్నా ఫీజులతో గ్యాంబ్లింగ్ సేవలను సృష్టిస్తూ, అక్కడి నుండి మరింత అధునాతన ప్రోటోకాల్లను నిర్మించవచ్చు.
7. ప్రిడిక్షన్ మార్కెట్లు. ఆరకిల్ లేదా SchellingCoin అందించబడితే, ప్రిడిక్షన్ మార్కెట్లను అమలు చేయడం కూడా సులభం, మరియు SchellingCoin తో పాటు ప్రిడిక్షన్ మార్కెట్లు వికేంద్రీకృత సంస్థల కోసం పరిపాలన ప్రోటోకాల్గా ఫ్యూటార్కీ (opens in a new tab) యొక్క మొదటి ప్రధాన స్రవంతి అప్లికేషన్గా నిరూపించబడవచ్చు.
8. ఆన్చైన్ వికేంద్రీకృత మార్కెట్ప్లేస్లు, గుర్తింపు మరియు కీర్తి సిస్టమ్ను ఆధారంగా ఉపయోగిస్తాయి.
title: "ఎథీరియం శ్వేతపత్రం" description: "ఎథీరియంకు పరిచయ పత్రం, 2014లో విటాలిక్ బుటెరిన్ ప్రచురించారు." breadcrumb: "శ్వేతపత్రం" tags:
- "బ్లాక్చైన్"
- "క్రిప్టోకరెన్సీ"
- "స్మార్ట్ కాంట్రాక్ట్"
- "Ethereum"
- "వికేంద్రీకృత"
- "ప్రోటోకాల్"
- "మైనింగ్"
- "ప్రూఫ్-ఆఫ్-వర్క్ (PoW)"
- "ప్రూఫ్-ఆఫ్-స్టేక్ (PoS)"
- "గ్యాస్"
- "EVM"
- "లావాదేవీ"
- "స్థితి"
- "ఖాతా"
- "టోకెన్"
- "dapp"
- "DAO"
- "గూఢలిపి శాస్త్రం"
- "హాష్"
- "మెర్కిల్ వృక్షం"
- "Bitcoin"
- "Namecoin"
- "Colored coins"
- "Metacoins"
- "GHOST"
- "Turing-complete"
- "స్కేలబిలిటీ"
- "ఫీజులు"
- "జారీ"
- "కేంద్రీకరణ"
- "భద్రత"
- "దాడి"
- "ఆరకిల్"
- "మల్టీసిగ్"
- "క్లౌడ్ కంప్యూటింగ్"
- "పీర్-టు-పీర్"
- "ఆర్థిక"
- "గుర్తింపు"
- "డేటా నిల్వ"
- "వికేంద్రీకృత అప్లికేషన్ (dapp)"
- "డిజిటల్ ఆస్తి"
- "లావాదేవీ రుసుము"
- "బ్లాక్ బహుమతి"
- "గ్యాస్ పరిమితి"
- "బ్లాక్ వ్యాప్తి"
- "లైట్ నోడ్"
- "పూర్తి నోడ్"
- "ధృవీకర్త"
- "ASIC"
- "Reddit"
- "Coinbase"
- "Wei"
- "సబో"
- "ఫిన్ని"
- "ఈథర్"
- "ప్రారంభ బ్లాక్"
- "ఆన్చైన్"
- "బైట్కోడ్"
- "ఆప్కోడ్"
- "రివర్ట్"
- "నిబద్ధత"
- "యాదృచ్ఛికత"
- "గోప్యత"
- "ప్రైవేట్ కీ"
- "పబ్లిక్ కీ"
- "డిజిటల్ సంతకం"
- "దీర్ఘవృత్తాకార వక్రరేఖ"
- "ECC"
- "SHA-256"
- "Keccak-256"
- "ECDSA"
- "zk-SNARKs"
- "Mainnet"
- "Sepolia"
- "Holesky"
- "Goerli"
- "MIT"
- "Apache-2.0"
- "Lighthouse"
- "Prysm"
- "Geth"
- "Nethermind"
- "Besu"
- "Teku"
- "Lodestar"
- "Nimbus"
- "Solidity"
- "MetaMask"
- "ERC-20"
- "ERC-721"
- "EIP"
- "BLS"
- "SSTORE"
- "CALL"
- "PUSH"
- "UTXO"
- "DAC"
- "Curve"
- "Base"
- "Go"
- "Wei Dai"
- "బెర్లిన్"
- "బిగ్-ఎండియన్" author: "Vitalik Buterin" lang: te
ఇతర విషయాలు మరియు ఆందోళనలు
సవరించిన GHOST అమలు
"గ్రీడీ హెవీయెస్ట్ అబ్జర్వ్డ్ సబ్ట్రీ" (GHOST) ప్రోటోకాల్ అనేది డిసెంబర్ 2013 (opens in a new tab)లో యోనాటన్ సోంపోలిన్స్కీ మరియు అవీవ్ జోహార్లచే మొదటిసారిగా ప్రవేశపెట్టబడిన ఒక ఆవిష్కరణ. GHOST వెనుక ఉన్న ఉద్దేశ్యం ఏమిటంటే, వేగవంతమైన నిర్ధారణ సమయాలు ఉన్న బ్లాక్చైన్లు ప్రస్తుతం అధిక స్టెయిల్ రేట్ (stale rate) కారణంగా తగ్గిన భద్రతతో బాధపడుతున్నాయి - ఎందుకంటే బ్లాక్లు నెట్వర్క్ ద్వారా వ్యాప్తి చెందడానికి కొంత సమయం తీసుకుంటాయి, మైనర్ A ఒక బ్లాక్ను మైన్ చేసి, ఆపై మైనర్ A యొక్క బ్లాక్ B కి వ్యాప్తి చెందడానికి ముందే మైనర్ B మరొక బ్లాక్ను మైన్ చేస్తే, మైనర్ B యొక్క బ్లాక్ వృధా అవుతుంది మరియు నెట్వర్క్ భద్రతకు దోహదం చేయదు. అంతేకాకుండా, కేంద్రీకరణ సమస్య కూడా ఉంది: మైనర్ A 30% హాష్పవర్తో ఉన్న మైనింగ్ పూల్ అయితే మరియు B కి 10% హాష్పవర్ ఉంటే, A 70% సమయం స్టెయిల్ బ్లాక్ను ఉత్పత్తి చేసే ప్రమాదం ఉంటుంది (ఎందుకంటే మిగిలిన 30% సమయం A చివరి బ్లాక్ను ఉత్పత్తి చేసింది కాబట్టి మైనింగ్ డేటాను వెంటనే పొందుతుంది) అయితే B 90% సమయం స్టెయిల్ బ్లాక్ను ఉత్పత్తి చేసే ప్రమాదం ఉంటుంది. అందువల్ల, స్టెయిల్ రేట్ ఎక్కువగా ఉండటానికి బ్లాక్ విరామం తగినంత తక్కువగా ఉంటే, A దాని పరిమాణం కారణంగా గణనీయంగా మరింత సమర్థవంతంగా ఉంటుంది. ఈ రెండు ప్రభావాలు కలిస్తే, బ్లాక్లను త్వరగా ఉత్పత్తి చేసే బ్లాక్చైన్లు మైనింగ్ ప్రక్రియపై వాస్తవ నియంత్రణను కలిగి ఉండటానికి నెట్వర్క్ హాష్పవర్లో తగినంత పెద్ద శాతాన్ని ఒక మైనింగ్ పూల్ కలిగి ఉండేలా చేసే అవకాశం ఉంది.
సోంపోలిన్స్కీ మరియు జోహార్ వివరించినట్లుగా, ఏ చైన్ "అతి పొడవైనది" అనే గణనలో స్టెయిల్ బ్లాక్లను చేర్చడం ద్వారా నెట్వర్క్ భద్రతా నష్టం యొక్క మొదటి సమస్యను GHOST పరిష్కరిస్తుంది; అంటే, బ్లాక్ యొక్క మాతృక మరియు తదుపరి పూర్వీకులు మాత్రమే కాకుండా, బ్లాక్ యొక్క పూర్వీకుల స్టెయిల్ వారసులు (ఎథీరియం పరిభాషలో, "అంకుల్స్") కూడా ఏ బ్లాక్కు అతిపెద్ద మొత్తం ప్రూఫ్-ఆఫ్-వర్క్ (PoW) మద్దతు ఉందో లెక్కించడానికి జోడించబడతాయి. కేంద్రీకరణ పక్షపాతం యొక్క రెండవ సమస్యను పరిష్కరించడానికి, మేము సోంపోలిన్స్కీ మరియు జోహార్ వివరించిన ప్రోటోకాల్కు మించి వెళ్తాము మరియు స్టెయిల్స్కు బ్లాక్ బహుమతులను కూడా అందిస్తాము: ఒక స్టెయిల్ బ్లాక్ దాని బేస్ ప్రతిఫలంలో 87.5% పొందుతుంది మరియు స్టెయిల్ బ్లాక్ను కలిగి ఉన్న నెఫ్యూ (nephew) మిగిలిన 12.5% పొందుతుంది. అయితే, లావాదేవీ రుసుములు అంకుల్స్కు ఇవ్వబడవు.
ఎథీరియం GHOST యొక్క సరళీకృత సంస్కరణను అమలు చేస్తుంది, ఇది ఏడు స్థాయిల వరకు మాత్రమే వెళుతుంది. ప్రత్యేకించి, ఇది ఈ క్రింది విధంగా నిర్వచించబడింది:
- ఒక బ్లాక్ తప్పనిసరిగా మాతృకను (parent) పేర్కొనాలి మరియు ఇది 0 లేదా అంతకంటే ఎక్కువ అంకుల్స్ను పేర్కొనాలి
- బ్లాక్ B లో చేర్చబడిన అంకుల్ కింది లక్షణాలను కలిగి ఉండాలి:
- ఇది B యొక్క k వ తరం పూర్వీకుడి ప్రత్యక్ష సంతానం అయి ఉండాలి, ఇక్కడ
2 <= k <= 7. - ఇది B యొక్క పూర్వీకుడు కాకూడదు
- అంకుల్ తప్పనిసరిగా చెల్లుబాటు అయ్యే బ్లాక్ శీర్షిక అయి ఉండాలి, కానీ మునుపు ధృవీకరించబడిన లేదా చెల్లుబాటు అయ్యే బ్లాక్ కూడా కానవసరం లేదు
- మునుపటి బ్లాక్లలో చేర్చబడిన అన్ని అంకుల్స్ మరియు అదే బ్లాక్లో చేర్చబడిన అన్ని ఇతర అంకుల్స్ నుండి అంకుల్ భిన్నంగా ఉండాలి (రెండుసార్లు చేర్చబడకూడదు)
- ఇది B యొక్క k వ తరం పూర్వీకుడి ప్రత్యక్ష సంతానం అయి ఉండాలి, ఇక్కడ
- బ్లాక్ B లోని ప్రతి అంకుల్ U కి, B యొక్క మైనర్ దాని కాయిన్బేస్ ప్రతిఫలానికి అదనంగా 3.125% పొందుతుంది మరియు U యొక్క మైనర్ ప్రామాణిక కాయిన్బేస్ ప్రతిఫలంలో 93.75% పొందుతుంది.
7 తరాల వరకు మాత్రమే అంకుల్స్ను చేర్చగల ఈ పరిమిత GHOST సంస్కరణ రెండు కారణాల వల్ల ఉపయోగించబడింది. మొదటిది, అపరిమిత GHOST ఇచ్చిన బ్లాక్కు ఏ అంకుల్స్ చెల్లుబాటు అవుతాయో లెక్కించడంలో చాలా చిక్కులను కలిగి ఉంటుంది. రెండవది, ఎథీరియంలో ఉపయోగించినట్లుగా పరిహారంతో కూడిన అపరిమిత GHOST, పబ్లిక్ దాడి చేసేవారి చైన్పై కాకుండా ప్రధాన చైన్పై మైనింగ్ చేయడానికి మైనర్కు ఉన్న ప్రోత్సాహకాన్ని తొలగిస్తుంది.
రుసుములు
బ్లాక్చైన్లో ప్రచురించబడిన ప్రతి లావాదేవీ దానిని డౌన్లోడ్ చేసి ధృవీకరించాల్సిన వ్యయాన్ని నెట్వర్క్పై విధిస్తుంది కాబట్టి, దుర్వినియోగాన్ని నిరోధించడానికి సాధారణంగా లావాదేవీ రుసుములతో కూడిన కొంత నియంత్రణ యంత్రాంగం అవసరం. బిట్కాయిన్లో ఉపయోగించే డిఫాల్ట్ విధానం ఏమిటంటే, పూర్తిగా స్వచ్ఛంద రుసుములను కలిగి ఉండటం, మైనర్లు గేట్కీపర్లుగా వ్యవహరించడం మరియు డైనమిక్ కనీసాలను సెట్ చేయడంపై ఆధారపడటం. ఈ విధానం బిట్కాయిన్ కమ్యూనిటీలో చాలా సానుకూలంగా స్వీకరించబడింది, ప్రత్యేకించి ఇది "మార్కెట్-ఆధారితమైనది" కాబట్టి, మైనర్లు మరియు లావాదేవీ పంపేవారి మధ్య సరఫరా మరియు డిమాండ్ ధరను నిర్ణయించడానికి అనుమతిస్తుంది. అయితే, ఈ తార్కిక విధానంలో ఉన్న సమస్య ఏమిటంటే, లావాదేవీ ప్రాసెసింగ్ అనేది మార్కెట్ కాదు; లావాదేవీ ప్రాసెసింగ్ను మైనర్ పంపినవారికి అందిస్తున్న సేవగా భావించడం సహజంగా ఆకర్షణీయంగా ఉన్నప్పటికీ, వాస్తవానికి మైనర్ చేర్చే ప్రతి లావాదేవీని నెట్వర్క్లోని ప్రతి నోడ్ ప్రాసెస్ చేయాల్సి ఉంటుంది, కాబట్టి లావాదేవీ ప్రాసెసింగ్ ఖర్చులో ఎక్కువ భాగం మూడవ పక్షాలు భరిస్తాయి మరియు దానిని చేర్చాలా వద్దా అని నిర్ణయం తీసుకునే మైనర్ కాదు. అందువల్ల, ట్రాజెడీ-ఆఫ్-ది-కామన్స్ (tragedy-of-the-commons) సమస్యలు తలెత్తే అవకాశం చాలా ఉంది.
అయితే, మార్కెట్-ఆధారిత యంత్రాంగంలోని ఈ లోపం, ఒక నిర్దిష్ట సరికాని సరళీకృత ఊహను ఇచ్చినప్పుడు, అద్భుతంగా దానంతట అదే రద్దు అవుతుంది. వాదన ఈ క్రింది విధంగా ఉంది. ఇలా అనుకుందాం:
- ఒక లావాదేవీ
kఆపరేషన్లకు దారితీస్తుంది, దానిని చేర్చే ఏ మైనర్కైనాkRప్రతిఫలాన్ని అందిస్తుంది, ఇక్కడRపంపినవారిచే సెట్ చేయబడుతుంది మరియుkమరియుRమైనర్కు ముందుగానే (సుమారుగా) కనిపిస్తాయి. - ఒక ఆపరేషన్ ఏ నోడ్కైనా
Cప్రాసెసింగ్ ఖర్చును కలిగి ఉంటుంది (అంటే, అన్ని నోడ్లు సమాన సామర్థ్యాన్ని కలిగి ఉంటాయి) Nమైనింగ్ నోడ్లు ఉన్నాయి, ప్రతి ఒక్కటి ఖచ్చితంగా సమాన ప్రాసెసింగ్ శక్తిని కలిగి ఉంటాయి (అంటే, మొత్తంలో1/N)- మైనింగ్ చేయని పూర్తి నోడ్లు ఏవీ లేవు.
ఆశించిన ప్రతిఫలం ఖర్చు కంటే ఎక్కువగా ఉంటే మైనర్ లావాదేవీని ప్రాసెస్ చేయడానికి సిద్ధంగా ఉంటాడు. అందువల్ల, మైనర్కు తదుపరి బ్లాక్ను ప్రాసెస్ చేసే అవకాశం 1/N ఉన్నందున ఆశించిన ప్రతిఫలం kR/N, మరియు మైనర్కు ప్రాసెసింగ్ ఖర్చు కేవలం kC. అందువల్ల, మైనర్లు kR/N > kC లేదా R > NC ఉన్న లావాదేవీలను చేర్చుతారు. R అనేది పంపినవారు అందించే ఆపరేషన్-వారీ రుసుము అని గమనించండి, అందువల్ల ఇది లావాదేవీ నుండి పంపినవారు పొందే ప్రయోజనంపై తక్కువ పరిమితి, మరియు NC అనేది ఒక ఆపరేషన్ను ప్రాసెస్ చేయడానికి మొత్తం నెట్వర్క్కు కలిపి అయ్యే ఖర్చు. అందువల్ల, మొత్తం ప్రయోజనం ఖర్చును మించే లావాదేవీలను మాత్రమే చేర్చడానికి మైనర్లకు ప్రోత్సాహం ఉంటుంది.
అయితే, వాస్తవానికి ఆ ఊహల నుండి అనేక ముఖ్యమైన వ్యత్యాసాలు ఉన్నాయి:
- ఇతర ధృవీకరించే నోడ్ల కంటే లావాదేవీని ప్రాసెస్ చేయడానికి మైనర్ ఎక్కువ ఖర్చు చెల్లిస్తాడు, ఎందుకంటే అదనపు ధృవీకరణ సమయం బ్లాక్ వ్యాప్తిని ఆలస్యం చేస్తుంది మరియు తద్వారా బ్లాక్ స్టెయిల్ అయ్యే అవకాశాన్ని పెంచుతుంది.
- మైనింగ్ చేయని పూర్తి నోడ్లు ఉనికిలో ఉన్నాయి.
- ఆచరణలో మైనింగ్ శక్తి పంపిణీ తీవ్ర అసమానతలతో ముగియవచ్చు.
- నెట్వర్క్కు హాని కలిగించడాన్ని తమ ప్రయోజనంగా భావించే స్పెక్యులేటర్లు, రాజకీయ శత్రువులు మరియు ఉన్మాదులు ఉన్నారు, మరియు వారు ఇతర ధృవీకరించే నోడ్లు చెల్లించే ఖర్చు కంటే తమ ఖర్చు చాలా తక్కువగా ఉండేలా తెలివిగా కాంట్రాక్ట్లను ఏర్పాటు చేయగలరు.
(1) మైనర్ తక్కువ లావాదేవీలను చేర్చే ధోరణిని అందిస్తుంది మరియు
(2) NC ని పెంచుతుంది; అందువల్ల, ఈ రెండు ప్రభావాలు కనీసం పాక్షికంగా ఒకదానికొకటి రద్దు చేసుకుంటాయి.ఎలా? (opens in a new tab)
(3) మరియు (4) ప్రధాన సమస్యలు; వాటిని పరిష్కరించడానికి మేము కేవలం ఫ్లోటింగ్ క్యాప్ను (floating cap) ఏర్పాటు చేస్తాము: ఏ బ్లాక్ కూడా దీర్ఘకాలిక ఎక్స్పోనెన్షియల్ మూవింగ్ యావరేజ్ (exponential moving average) కంటే
BLK_LIMIT_FACTOR రెట్లు ఎక్కువ ఆపరేషన్లను కలిగి ఉండకూడదు.
ప్రత్యేకించి:
blk.oplimit = floor((blk.parent.oplimit \* (EMAFACTOR - 1) +
floor(parent.opcount \* BLK\_LIMIT\_FACTOR)) / EMA\_FACTOR)
BLK_LIMIT_FACTOR మరియు EMA_FACTOR అనేవి స్థిరాంకాలు, ఇవి ప్రస్తుతానికి 65536 మరియు 1.5 కు సెట్ చేయబడతాయి, కానీ తదుపరి విశ్లేషణ తర్వాత మారే అవకాశం ఉంది.
బిట్కాయిన్లో పెద్ద బ్లాక్ పరిమాణాలను నిరుత్సాహపరిచే మరో అంశం ఉంది: పెద్దగా ఉండే బ్లాక్లు వ్యాప్తి చెందడానికి ఎక్కువ సమయం తీసుకుంటాయి, తద్వారా అవి స్టెయిల్స్ అయ్యే అవకాశం ఎక్కువగా ఉంటుంది. ఎథీరియంలో, ఎక్కువ గ్యాస్ వినియోగించే బ్లాక్లు కూడా వ్యాప్తి చెందడానికి ఎక్కువ సమయం తీసుకుంటాయి, ఎందుకంటే అవి భౌతికంగా పెద్దవిగా ఉంటాయి మరియు ధృవీకరించడానికి లావాదేవీ స్థితి పరివర్తనలను ప్రాసెస్ చేయడానికి ఎక్కువ సమయం తీసుకుంటాయి. ఈ ఆలస్యం నిరుత్సాహం బిట్కాయిన్లో ఒక ముఖ్యమైన అంశం, కానీ GHOST ప్రోటోకాల్ కారణంగా ఎథీరియంలో ఇది తక్కువ; అందువల్ల, నియంత్రిత బ్లాక్ పరిమితులపై ఆధారపడటం మరింత స్థిరమైన బేస్లైన్ను అందిస్తుంది.
గణన మరియు ట్యూరింగ్-సంపూర్ణత
ఒక ముఖ్యమైన గమనిక ఏమిటంటే ఎథీరియం వర్చువల్ మెషీన్ ట్యూరింగ్-సంపూర్ణమైనది (Turing-complete); అంటే EVM కోడ్ అనంతమైన లూప్లతో సహా ఊహించదగిన ఏ గణననైనా ఎన్కోడ్ చేయగలదు. EVM కోడ్ రెండు విధాలుగా లూపింగ్ను అనుమతిస్తుంది. మొదటిది, ప్రోగ్రామ్ను కోడ్లోని మునుపటి స్థానానికి తిరిగి వెళ్లడానికి అనుమతించే JUMP సూచన ఉంది మరియు షరతులతో కూడిన జంపింగ్ చేయడానికి JUMPI సూచన ఉంది, ఇది while x < 27: x = x * 2 వంటి స్టేట్మెంట్లను అనుమతిస్తుంది. రెండవది, కాంట్రాక్ట్లు ఇతర కాంట్రాక్ట్లను కాల్ చేయగలవు, ఇది రికర్షన్ (recursion) ద్వారా లూపింగ్ను అనుమతించే అవకాశం ఉంది. ఇది సహజంగానే ఒక సమస్యకు దారితీస్తుంది: హానికరమైన వినియోగదారులు మైనర్లను మరియు పూర్తి నోడ్లను అనంతమైన లూప్లోకి ప్రవేశించేలా బలవంతం చేయడం ద్వారా వాటిని మూసివేయగలరా? కంప్యూటర్ సైన్స్లో హాల్టింగ్ ప్రాబ్లమ్ (halting problem) అని పిలువబడే సమస్య కారణంగా ఈ సమస్య తలెత్తుతుంది: సాధారణ సందర్భంలో, ఇచ్చిన ప్రోగ్రామ్ ఎప్పుడైనా ఆగిపోతుందా లేదా అని చెప్పడానికి మార్గం లేదు.
స్థితి పరివర్తన విభాగంలో వివరించినట్లుగా, లావాదేవీ తీసుకోవడానికి అనుమతించబడిన గరిష్ట సంఖ్యలో గణన దశలను సెట్ చేయడం అవసరం ద్వారా మా పరిష్కారం పనిచేస్తుంది మరియు అమలుకు ఎక్కువ సమయం పడితే గణన రివర్ట్ చేయబడుతుంది కానీ రుసుములు ఇప్పటికీ చెల్లించబడతాయి. సందేశాలు కూడా అదే విధంగా పనిచేస్తాయి. మా పరిష్కారం వెనుక ఉన్న ఉద్దేశ్యాన్ని చూపించడానికి, ఈ క్రింది ఉదాహరణలను పరిగణించండి:
- దాడి చేసే వ్యక్తి అనంతమైన లూప్ను అమలు చేసే కాంట్రాక్ట్ను సృష్టిస్తాడు, ఆపై ఆ లూప్ను సక్రియం చేసే లావాదేవీని మైనర్కు పంపుతాడు. మైనర్ లావాదేవీని ప్రాసెస్ చేస్తాడు, అనంతమైన లూప్ను అమలు చేస్తాడు మరియు గ్యాస్ అయిపోయే వరకు వేచి ఉంటాడు. అమలులో గ్యాస్ అయిపోయి సగం వరకు ఆగిపోయినప్పటికీ, లావాదేవీ ఇప్పటికీ చెల్లుబాటు అవుతుంది మరియు ప్రతి గణన దశకు దాడి చేసే వ్యక్తి నుండి మైనర్ ఇప్పటికీ రుసుమును క్లెయిమ్ చేస్తాడు.
- దాడి చేసే వ్యక్తి మైనర్ను చాలా కాలం పాటు గణనను కొనసాగించేలా బలవంతం చేయాలనే ఉద్దేశ్యంతో చాలా పొడవైన అనంతమైన లూప్ను సృష్టిస్తాడు, తద్వారా గణన పూర్తయ్యే సమయానికి మరికొన్ని బ్లాక్లు బయటకు వస్తాయి మరియు రుసుమును క్లెయిమ్ చేయడానికి మైనర్ లావాదేవీని చేర్చడం సాధ్యం కాదు. అయితే, అమలు తీసుకోగల గణన దశల సంఖ్యను పరిమితం చేస్తూ దాడి చేసే వ్యక్తి
STARTGASకోసం ఒక విలువను సమర్పించాల్సి ఉంటుంది, కాబట్టి గణన చాలా ఎక్కువ సంఖ్యలో దశలను తీసుకుంటుందని మైనర్కు ముందుగానే తెలుస్తుంది. - దాడి చేసే వ్యక్తి
send(A,contract.storage[A]); contract.storage[A] = 0వంటి ఏదో ఒక రూపంలో కోడ్ ఉన్న కాంట్రాక్ట్ను చూస్తాడు మరియు మొదటి దశను అమలు చేయడానికి సరిపడా గ్యాస్తో లావాదేవీని పంపుతాడు కానీ రెండవది కాదు (అంటే, ఉపసంహరణ చేయడం కానీ బ్యాలెన్స్ తగ్గనివ్వకపోవడం). కాంట్రాక్ట్ రచయిత అటువంటి దాడుల నుండి రక్షించడం గురించి ఆందోళన చెందాల్సిన అవసరం లేదు, ఎందుకంటే అమలు సగం వరకు ఆగిపోతే మార్పులు రివర్ట్ చేయబడతాయి. - ప్రమాదాన్ని తగ్గించడానికి తొమ్మిది యాజమాన్య డేటా ఫీడ్ల మధ్యస్థాన్ని (median) తీసుకోవడం ద్వారా ఆర్థిక కాంట్రాక్ట్ పనిచేస్తుంది. దాడి చేసే వ్యక్తి డేటా ఫీడ్లలో ఒకదానిని స్వాధీనం చేసుకుంటాడు, ఇది DAO ల విభాగంలో వివరించిన వేరియబుల్-అడ్రస్-కాల్ (variable-address-call) యంత్రాంగం ద్వారా సవరించగలిగేలా రూపొందించబడింది మరియు దానిని అనంతమైన లూప్ను అమలు చేయడానికి మారుస్తాడు, తద్వారా ఆర్థిక కాంట్రాక్ట్ నుండి నిధులను క్లెయిమ్ చేసే ఏవైనా ప్రయత్నాలలో గ్యాస్ అయిపోయేలా బలవంతం చేయడానికి ప్రయత్నిస్తాడు. అయితే, ఈ సమస్యను నివారించడానికి ఆర్థిక కాంట్రాక్ట్ సందేశంపై గ్యాస్ పరిమితిని సెట్ చేయవచ్చు.
ట్యూరింగ్-సంపూర్ణతకు ప్రత్యామ్నాయం ట్యూరింగ్-అసంపూర్ణత (Turing-incompleteness), ఇక్కడ JUMP మరియు JUMPI ఉనికిలో లేవు మరియు ఏ సమయంలోనైనా కాల్ స్టాక్లో ప్రతి కాంట్రాక్ట్ యొక్క ఒక కాపీ మాత్రమే ఉండటానికి అనుమతించబడుతుంది. ఈ సిస్టమ్తో, వివరించిన రుసుము సిస్టమ్ మరియు మా పరిష్కారం యొక్క ప్రభావం చుట్టూ ఉన్న అనిశ్చితులు అవసరం ఉండకపోవచ్చు, ఎందుకంటే కాంట్రాక్ట్ను అమలు చేయడానికి అయ్యే ఖర్చు దాని పరిమాణం ద్వారా పరిమితం చేయబడుతుంది. అదనంగా, ట్యూరింగ్-అసంపూర్ణత అంత పెద్ద పరిమితి కూడా కాదు; మేము అంతర్గతంగా రూపొందించిన అన్ని కాంట్రాక్ట్ ఉదాహరణలలో, ఇప్పటివరకు ఒకదానికి మాత్రమే లూప్ అవసరం, మరియు ఒక-లైన్ కోడ్ను 26 సార్లు పునరావృతం చేయడం ద్వారా ఆ లూప్ను కూడా తీసివేయవచ్చు. ట్యూరింగ్-సంపూర్ణత యొక్క తీవ్రమైన చిక్కులు మరియు పరిమిత ప్రయోజనాన్ని దృష్టిలో ఉంచుకుని, కేవలం ట్యూరింగ్-అసంపూర్ణ భాషను ఎందుకు కలిగి ఉండకూడదు? అయితే వాస్తవానికి, ట్యూరింగ్-అసంపూర్ణత అనేది సమస్యకు సరైన పరిష్కారం కాదు. ఎందుకో చూడటానికి, ఈ క్రింది కాంట్రాక్ట్లను పరిగణించండి:
C0: call(C1); call(C1);
C1: call(C2); call(C2);
C2: call(C3); call(C3);
...
C49: call(C50); call(C50);
C50: (run one step of a program and record the change in storage)
ఇప్పుడు, A కి లావాదేవీని పంపండి. అందువల్ల, 51 లావాదేవీలలో, 250 గణన దశలను తీసుకునే కాంట్రాక్ట్ మనకు ఉంది. ప్రతి కాంట్రాక్ట్తో పాటు అది తీసుకోగల గరిష్ట సంఖ్యలో గణన దశలను పేర్కొనే విలువను నిర్వహించడం ద్వారా మరియు ఇతర కాంట్రాక్ట్లను రికర్సివ్గా కాల్ చేసే కాంట్రాక్ట్ల కోసం దీనిని లెక్కించడం ద్వారా మైనర్లు అటువంటి లాజిక్ బాంబులను ముందుగానే గుర్తించడానికి ప్రయత్నించవచ్చు, కానీ దీనికి ఇతర కాంట్రాక్ట్లను సృష్టించే కాంట్రాక్ట్లను మైనర్లు నిషేధించాల్సి ఉంటుంది (ఎందుకంటే పైన ఉన్న మొత్తం 26 కాంట్రాక్ట్ల సృష్టి మరియు అమలును సులభంగా ఒకే కాంట్రాక్ట్గా మార్చవచ్చు). మరొక సమస్యాత్మక విషయం ఏమిటంటే, సందేశం యొక్క చిరునామా ఫీల్డ్ ఒక వేరియబుల్, కాబట్టి సాధారణంగా ఇచ్చిన కాంట్రాక్ట్ ఏ ఇతర కాంట్రాక్ట్లను ముందుగానే కాల్ చేస్తుందో చెప్పడం కూడా సాధ్యం కాకపోవచ్చు. అందువల్ల, మొత్తంగా, మనకు ఆశ్చర్యకరమైన ముగింపు ఉంది: ట్యూరింగ్-సంపూర్ణతను నిర్వహించడం ఆశ్చర్యకరంగా సులభం, మరియు ఖచ్చితమైన అదే నియంత్రణలు అమలులో ఉంటే తప్ప ట్యూరింగ్-సంపూర్ణత లేకపోవడాన్ని నిర్వహించడం కూడా అంతే ఆశ్చర్యకరంగా కష్టం - కానీ అలాంటప్పుడు ప్రోటోకాల్ను ట్యూరింగ్-సంపూర్ణంగా ఎందుకు ఉండనివ్వకూడదు?
కరెన్సీ మరియు జారీ
ఎథీరియం నెట్వర్క్ దాని స్వంత అంతర్నిర్మిత కరెన్సీ అయిన ఈథర్ను కలిగి ఉంది, ఇది వివిధ రకాల డిజిటల్ ఆస్తుల మధ్య సమర్థవంతమైన మార్పిడిని అనుమతించడానికి ప్రాథమిక ద్రవ్యత పొరను అందించడం మరియు మరీ ముఖ్యంగా, లావాదేవీ రుసుములను చెల్లించడానికి ఒక యంత్రాంగాన్ని అందించడం అనే ద్వంద్వ ప్రయోజనాన్ని అందిస్తుంది. సౌలభ్యం కోసం మరియు భవిష్యత్తులో వాదనలను నివారించడానికి (బిట్కాయిన్లో ప్రస్తుత mBTC/uBTC/satoshi చర్చను చూడండి), డినామినేషన్లు ముందుగా లేబుల్ చేయబడతాయి:
- 1: Wei
- 1012: సబో
- 1015: ఫిన్ని
- 1018: ఈథర్
దీనిని "డాలర్లు" మరియు "సెంట్లు" లేదా "BTC" మరియు "సతోషి" భావన యొక్క విస్తరించిన సంస్కరణగా తీసుకోవాలి. సమీప భవిష్యత్తులో, సాధారణ లావాదేవీల కోసం "ఈథర్", మైక్రో లావాదేవీల కోసం "ఫిన్ని" మరియు రుసుములు మరియు ప్రోటోకాల్ అమలు చుట్టూ ఉన్న సాంకేతిక చర్చల కోసం "సబో" మరియు "Wei" ఉపయోగించబడతాయని మేము ఆశిస్తున్నాము; మిగిలిన డినామినేషన్లు తర్వాత ఉపయోగపడవచ్చు మరియు ఈ సమయంలో క్లయింట్లలో చేర్చబడకూడదు.
జారీ నమూనా ఈ క్రింది విధంగా ఉంటుంది:
- ఈథర్ ఒక BTC కి 1000-2000 ఈథర్ ధర వద్ద కరెన్సీ విక్రయంలో విడుదల చేయబడుతుంది, ఇది ఎథీరియం సంస్థకు నిధులు సమకూర్చడానికి మరియు Mastercoin మరియు NXT వంటి ఇతర ప్లాట్ఫారమ్ల ద్వారా విజయవంతంగా ఉపయోగించబడిన అభివృద్ధికి చెల్లించడానికి ఉద్దేశించిన యంత్రాంగం. ముందుగా కొనుగోలు చేసేవారు పెద్ద డిస్కౌంట్ల నుండి ప్రయోజనం పొందుతారు. విక్రయం నుండి వచ్చిన BTC పూర్తిగా డెవలపర్లకు జీతాలు మరియు బౌంటీలను చెల్లించడానికి ఉపయోగించబడుతుంది మరియు ఎథీరియం మరియు క్రిప్టోకరెన్సీ పర్యావరణ వ్యవస్థలోని వివిధ లాభాపేక్షతో మరియు లాభాపేక్ష లేని ప్రాజెక్ట్లలో పెట్టుబడి పెట్టబడుతుంది.
- విక్రయించిన మొత్తం మొత్తంలో 0.099x (60102216 ETH) ప్రారంభ సహకారులకు పరిహారం చెల్లించడానికి మరియు ప్రారంభ బ్లాక్కు ముందు ETH-ఆధారిత ఖర్చులను చెల్లించడానికి సంస్థకు కేటాయించబడుతుంది.
- విక్రయించిన మొత్తం మొత్తంలో 0.099x దీర్ఘకాలిక నిల్వగా నిర్వహించబడుతుంది.
- ఆ పాయింట్ తర్వాత ఎప్పటికీ సంవత్సరానికి విక్రయించిన మొత్తం మొత్తంలో 0.26x మైనర్లకు కేటాయించబడుతుంది.
| సమూహం | ప్రారంభంలో | 1 సంవత్సరం తర్వాత | 5 సంవత్సరాల తర్వాత |
|---|---|---|---|
| కరెన్సీ యూనిట్లు | 1.198X | 1.458X | 2.498X |
| కొనుగోలుదారులు | 83.5% | 68.6% | 40.0% |
| ప్రీ-సేల్ ఖర్చు చేసిన నిల్వ | 8.26% | 6.79% | 3.96% |
| పోస్ట్-సేల్ ఉపయోగించిన నిల్వ | 8.26% | 6.79% | 3.96% |
| మైనర్లు | 0% | 17.8% | 52.0% |
దీర్ఘకాలిక సరఫరా వృద్ధి రేటు (శాతం)
లీనియర్ కరెన్సీ జారీ ఉన్నప్పటికీ, కాలక్రమేణా బిట్కాయిన్ మాదిరిగానే సరఫరా వృద్ధి రేటు సున్నాకి చేరుకుంటుంది.
పై నమూనాలో రెండు ప్రధాన ఎంపికలు (1) ఎండోమెంట్ పూల్ (endowment pool) ఉనికి మరియు పరిమాణం, మరియు (2) బిట్కాయిన్లో వలె పరిమితం చేయబడిన సరఫరాకు విరుద్ధంగా, శాశ్వతంగా పెరుగుతున్న లీనియర్ సరఫరా ఉనికి. ఎండోమెంట్ పూల్ యొక్క సమర్థన ఈ క్రింది విధంగా ఉంది. ఎండోమెంట్ పూల్ ఉనికిలో లేకపోతే, మరియు అదే ద్రవ్యోల్బణ రేటును అందించడానికి లీనియర్ జారీ 0.217x కి తగ్గించబడితే, ఈథర్ మొత్తం పరిమాణం 16.5% తక్కువగా ఉంటుంది మరియు ప్రతి యూనిట్ 19.8% ఎక్కువ విలువైనదిగా ఉంటుంది. అందువల్ల, సమతౌల్యంలో 19.8% ఎక్కువ ఈథర్ విక్రయంలో కొనుగోలు చేయబడుతుంది, కాబట్టి ప్రతి యూనిట్ మరోసారి మునుపటిలాగే ఖచ్చితంగా విలువైనదిగా ఉంటుంది. అప్పుడు సంస్థ 1.198x ఎక్కువ BTC ని కూడా కలిగి ఉంటుంది, దీనిని రెండు భాగాలుగా విభజించినట్లు పరిగణించవచ్చు: అసలు BTC మరియు అదనపు 0.198x. అందువల్ల, ఈ పరిస్థితి ఎండోమెంట్కు ఖచ్చితంగా సమానం, కానీ ఒక ముఖ్యమైన వ్యత్యాసంతో: సంస్థ పూర్తిగా BTC ని కలిగి ఉంటుంది, కాబట్టి ఈథర్ యూనిట్ విలువకు మద్దతు ఇవ్వడానికి ప్రోత్సహించబడదు.
శాశ్వత లీనియర్ సరఫరా వృద్ధి నమూనా బిట్కాయిన్లో కొందరు చూసే అధిక సంపద కేంద్రీకరణ ప్రమాదాన్ని తగ్గిస్తుంది మరియు వర్తమాన మరియు భవిష్యత్తు యుగాలలో నివసించే వ్యక్తులకు కరెన్సీ యూనిట్లను పొందేందుకు సరసమైన అవకాశాన్ని ఇస్తుంది, అదే సమయంలో ఈథర్ను పొందడానికి మరియు పట్టుకోవడానికి బలమైన ప్రోత్సాహకాన్ని నిలుపుకుంటుంది ఎందుకంటే "సరఫరా వృద్ధి రేటు" శాతంగా కాలక్రమేణా సున్నాకి చేరుకుంటుంది. అజాగ్రత్త, మరణం మొదలైన వాటి కారణంగా కాలక్రమేణా నాణేలు ఎల్లప్పుడూ కోల్పోతాయి కాబట్టి మరియు నాణేల నష్టాన్ని సంవత్సరానికి మొత్తం సరఫరాలో శాతంగా నమూనా చేయవచ్చు కాబట్టి, చలామణిలో ఉన్న మొత్తం కరెన్సీ సరఫరా వాస్తవానికి వార్షిక జారీని నష్ట రేటుతో భాగించగా వచ్చే విలువ వద్ద స్థిరీకరించబడుతుందని మేము సిద్ధాంతీకరిస్తున్నాము (ఉదాహరణకు, 1% నష్ట రేటు వద్ద, సరఫరా 26X కి చేరుకున్న తర్వాత ప్రతి సంవత్సరం 0.26X మైన్ చేయబడుతుంది మరియు 0.26X కోల్పోతుంది, ఇది సమతౌల్యాన్ని సృష్టిస్తుంది).
భవిష్యత్తులో, భద్రత కోసం ఎథీరియం ప్రూఫ్-ఆఫ్-స్టేక్ (PoS) నమూనాకు మారే అవకాశం ఉందని గమనించండి, ఇది జారీ అవసరాన్ని సంవత్సరానికి సున్నా మరియు 0.05X మధ్య ఎక్కడో తగ్గిస్తుంది. ఎథీరియం సంస్థ నిధులను కోల్పోయినప్పుడు లేదా మరేదైనా కారణం వల్ల కనుమరుగైనప్పుడు, మేము ఒక "సామాజిక కాంట్రాక్ట్"ను తెరిచి ఉంచుతాము: ఎథీరియం యొక్క భవిష్యత్తు అభ్యర్థి సంస్కరణను సృష్టించే హక్కు ఎవరికైనా ఉంటుంది, ఒకే షరతు ఏమిటంటే ఈథర్ పరిమాణం గరిష్టంగా 60102216 * (1.198 + 0.26 * n) కి సమానంగా ఉండాలి, ఇక్కడ n అనేది ప్రారంభ బ్లాక్ తర్వాత సంవత్సరాల సంఖ్య. అభివృద్ధికి చెల్లించడానికి PoS-ఆధారిత సరఫరా విస్తరణ మరియు గరిష్టంగా అనుమతించదగిన సరఫరా విస్తరణ మధ్య వ్యత్యాసంలో కొంత లేదా మొత్తాన్ని క్రౌడ్-సెల్ (crowd-sell) చేయడానికి లేదా కేటాయించడానికి సృష్టికర్తలకు స్వేచ్ఛ ఉంది. సామాజిక కాంట్రాక్ట్కు అనుగుణంగా లేని అభ్యర్థి అప్గ్రేడ్లు న్యాయబద్ధంగా కంప్లైంట్ సంస్కరణలుగా ఫోర్క్ చేయబడవచ్చు.
మైనింగ్ కేంద్రీకరణ
బిట్కాయిన్ మైనింగ్ అల్గారిథమ్ బ్లాక్ శీర్షిక యొక్క కొద్దిగా సవరించిన సంస్కరణలపై మైనర్లు SHA256 ని మిలియన్ల కొద్దీ సార్లు పదే పదే లెక్కించడం ద్వారా పనిచేస్తుంది, చివరికి ఒక నోడ్ లక్ష్యం కంటే తక్కువ హాష్ ఉన్న సంస్కరణతో ముందుకు వచ్చే వరకు (ప్రస్తుతం సుమారు 2192). అయితే, ఈ మైనింగ్ అల్గారిథమ్ రెండు రకాల కేంద్రీకరణలకు గురయ్యే అవకాశం ఉంది. మొదటిది, మైనింగ్ పర్యావరణ వ్యవస్థ ASICs (అప్లికేషన్-స్పెసిఫిక్ ఇంటిగ్రేటెడ్ సర్క్యూట్లు) ద్వారా ఆధిపత్యం చెలాయించబడింది, ఇవి బిట్కాయిన్ మైనింగ్ యొక్క నిర్దిష్ట పని కోసం రూపొందించబడిన కంప్యూటర్ చిప్లు మరియు అందువల్ల వేల రెట్లు ఎక్కువ సమర్థవంతమైనవి. దీని అర్థం బిట్కాయిన్ మైనింగ్ ఇకపై అత్యంత వికేంద్రీకృత మరియు సమానత్వ సాధన కాదు, సమర్థవంతంగా పాల్గొనడానికి మిలియన్ల డాలర్ల మూలధనం అవసరం. రెండవది, చాలా మంది బిట్కాయిన్ మైనర్లు వాస్తవానికి స్థానికంగా బ్లాక్ ధృవీకరణను నిర్వహించరు; బదులుగా, వారు బ్లాక్ శీర్షికలను అందించడానికి కేంద్రీకృత మైనింగ్ పూల్పై ఆధారపడతారు. ఈ సమస్య నిస్సందేహంగా అధ్వాన్నంగా ఉంది: ఇది రాసే సమయానికి, మొదటి మూడు మైనింగ్ పూల్స్ పరోక్షంగా బిట్కాయిన్ నెట్వర్క్లోని ప్రాసెసింగ్ పవర్లో దాదాపు 50% నియంత్రిస్తాయి, అయితే ఒక పూల్ లేదా సంకీర్ణం 51% దాడికి ప్రయత్నిస్తే మైనర్లు ఇతర మైనింగ్ పూల్స్కు మారవచ్చు అనే వాస్తవం ద్వారా ఇది తగ్గించబడుతుంది.
ఎథీరియంలో ప్రస్తుత ఉద్దేశ్యం ఏమిటంటే, మైనర్లు స్థితి నుండి యాదృచ్ఛిక డేటాను పొందడం, బ్లాక్చైన్లోని చివరి N బ్లాక్ల నుండి యాదృచ్ఛికంగా ఎంచుకున్న కొన్ని లావాదేవీలను లెక్కించడం మరియు ఫలితం యొక్క హాష్ను తిరిగి ఇవ్వడం అవసరమయ్యే మైనింగ్ అల్గారిథమ్ను ఉపయోగించడం. దీనికి రెండు ముఖ్యమైన ప్రయోజనాలు ఉన్నాయి. మొదటిది, ఎథీరియం కాంట్రాక్ట్లు ఏ రకమైన గణననైనా కలిగి ఉంటాయి, కాబట్టి ఎథీరియం ASIC తప్పనిసరిగా సాధారణ గణన కోసం ASIC అవుతుంది - అంటే, మెరుగైన CPU. రెండవది, మైనింగ్కు మొత్తం బ్లాక్చైన్కు ప్రాప్యత అవసరం, మైనర్లను మొత్తం బ్లాక్చైన్ను నిల్వ చేయడానికి మరియు కనీసం ప్రతి లావాదేవీని ధృవీకరించగల సామర్థ్యాన్ని కలిగి ఉండటానికి బలవంతం చేస్తుంది. ఇది కేంద్రీకృత మైనింగ్ పూల్స్ అవసరాన్ని తొలగిస్తుంది; మైనింగ్ పూల్స్ ఇప్పటికీ ప్రతిఫల పంపిణీ యొక్క యాదృచ్ఛికతను సమం చేసే చట్టబద్ధమైన పాత్రను పోషించగలిగినప్పటికీ, ఈ విధిని కేంద్ర నియంత్రణ లేని పీర్-టు-పీర్ పూల్స్ ద్వారా సమానంగా అందించవచ్చు.
ఈ నమూనా పరీక్షించబడలేదు మరియు కాంట్రాక్ట్ అమలును మైనింగ్ అల్గారిథమ్గా ఉపయోగిస్తున్నప్పుడు కొన్ని తెలివైన ఆప్టిమైజేషన్లను నివారించడంలో దారిలో ఇబ్బందులు ఉండవచ్చు. అయితే, ఈ అల్గారిథమ్ యొక్క ఒక ఆసక్తికరమైన లక్షణం ఏమిటంటే, నిర్దిష్ట ASICs ని అడ్డుకోవడానికి ప్రత్యేకంగా రూపొందించబడిన పెద్ద సంఖ్యలో కాంట్రాక్ట్లను బ్లాక్చైన్లోకి ప్రవేశపెట్టడం ద్వారా ఎవరైనా "బావిలో విషం కలపడానికి" (poison the well) ఇది అనుమతిస్తుంది. ఒకరినొకరు దాడి చేసుకోవడానికి అటువంటి ట్రిక్ను ఉపయోగించడానికి ASIC తయారీదారులకు ఆర్థిక ప్రోత్సాహకాలు ఉన్నాయి. అందువల్ల, మేము అభివృద్ధి చేస్తున్న పరిష్కారం అంతిమంగా పూర్తిగా సాంకేతికమైనది కాకుండా అనుకూల ఆర్థిక మానవ పరిష్కారం.
స్కేలబిలిటీ
ఎథీరియం గురించి ఒక సాధారణ ఆందోళన స్కేలబిలిటీ సమస్య. బిట్కాయిన్ మాదిరిగానే, నెట్వర్క్లోని ప్రతి నోడ్ ద్వారా ప్రతి లావాదేవీని ప్రాసెస్ చేయాల్సిన లోపంతో ఎథీరియం బాధపడుతుంది. బిట్కాయిన్తో, ప్రస్తుత బ్లాక్చైన్ పరిమాణం సుమారు 15 GB వద్ద ఉంది, గంటకు సుమారు 1 MB పెరుగుతుంది. బిట్కాయిన్ నెట్వర్క్ వీసా యొక్క సెకనుకు 2000 లావాదేవీలను ప్రాసెస్ చేస్తే, అది ప్రతి మూడు సెకన్లకు 1 MB పెరుగుతుంది (గంటకు 1 GB, సంవత్సరానికి 8 TB). ఎథీరియం కూడా ఇలాంటి వృద్ధి నమూనాతో బాధపడే అవకాశం ఉంది, బిట్కాయిన్ విషయంలో ఉన్నట్లుగా కేవలం కరెన్సీకి బదులుగా ఎథీరియం బ్లాక్చైన్ పైన అనేక అప్లికేషన్లు ఉంటాయనే వాస్తవం వల్ల ఇది మరింత దిగజారింది, అయితే ఎథీరియం పూర్తి నోడ్లు మొత్తం బ్లాక్చైన్ చరిత్రకు బదులుగా కేవలం స్థితిని మాత్రమే నిల్వ చేయాలనే వాస్తవం ద్వారా మెరుగుపరచబడింది.
ఇంత పెద్ద బ్లాక్చైన్ పరిమాణంతో ఉన్న సమస్య కేంద్రీకరణ ప్రమాదం. బ్లాక్చైన్ పరిమాణం, ఉదాహరణకు, 100 TB కి పెరిగితే, చాలా తక్కువ సంఖ్యలో పెద్ద వ్యాపారాలు మాత్రమే పూర్తి నోడ్లను నడుపుతాయి, సాధారణ వినియోగదారులందరూ లైట్ SPV నోడ్లను ఉపయోగిస్తారు. అటువంటి పరిస్థితిలో, పూర్తి నోడ్లు ఏకమై లాభదాయకమైన పద్ధతిలో మోసం చేయడానికి అంగీకరించవచ్చనే (ఉదాహరణకు, బ్లాక్ బహుమతిని మార్చడం, తమకు తాము BTC ని ఇవ్వడం) సంభావ్య ఆందోళన తలెత్తుతుంది. లైట్ నోడ్లు దీనిని వెంటనే గుర్తించడానికి మార్గం ఉండదు. వాస్తవానికి, కనీసం ఒక నిజాయితీ గల పూర్తి నోడ్ ఉండే అవకాశం ఉంది మరియు కొన్ని గంటల తర్వాత మోసం గురించిన సమాచారం రెడిట్ వంటి ఛానెల్ల ద్వారా బయటకు వస్తుంది, కానీ ఆ సమయానికి చాలా ఆలస్యం అవుతుంది: ఇచ్చిన బ్లాక్లను బ్లాక్లిస్ట్ చేసే ప్రయత్నాన్ని నిర్వహించడం సాధారణ వినియోగదారుల ఇష్టం, ఇది విజయవంతమైన 51% దాడిని ఉపసంహరించుకోవడంతో సమానమైన స్థాయిలో భారీ మరియు అసాధ్యమైన సమన్వయ సమస్య. బిట్కాయిన్ విషయంలో, ఇది ప్రస్తుతం ఒక సమస్య, కానీ ఈ సమస్యను తగ్గించే పీటర్ టాడ్ సూచించిన (opens in a new tab) బ్లాక్చైన్ సవరణ ఉనికిలో ఉంది.
సమీప కాలంలో, ఈ సమస్యను ఎదుర్కోవటానికి ఎథీరియం రెండు అదనపు వ్యూహాలను ఉపయోగిస్తుంది. మొదటిది, బ్లాక్చైన్-ఆధారిత మైనింగ్ అల్గారిథమ్ల కారణంగా, కనీసం ప్రతి మైనర్ పూర్తి నోడ్గా ఉండవలసి వస్తుంది, ఇది పూర్తి నోడ్ల సంఖ్యపై తక్కువ పరిమితిని సృష్టిస్తుంది. రెండవది మరియు మరీ ముఖ్యంగా, ప్రతి లావాదేవీని ప్రాసెస్ చేసిన తర్వాత మేము బ్లాక్చైన్లో ఇంటర్మీడియట్ స్థితి ట్రీ రూట్ను (intermediate state tree root) చేర్చుతాము. బ్లాక్ ధృవీకరణ కేంద్రీకృతమైనప్పటికీ, ఒక నిజాయితీ గల ధృవీకరించే నోడ్ ఉన్నంత కాలం, ధృవీకరణ ప్రోటోకాల్ ద్వారా కేంద్రీకరణ సమస్యను అధిగమించవచ్చు. మైనర్ చెల్లని బ్లాక్ను ప్రచురిస్తే, ఆ బ్లాక్ తప్పుగా ఫార్మాట్ చేయబడి ఉండాలి లేదా స్థితి S[n] తప్పుగా ఉండాలి. S[0] సరైనదని తెలిసినందున, S[i-1] సరైనది అయిన చోట తప్పుగా ఉన్న మొదటి స్థితి S[i] ఏదో ఒకటి ఉండాలి. ధృవీకరించే నోడ్ APPLY(S[i-1],TX[i]) -> S[i] ని ప్రాసెస్ చేయడానికి అవసరమైన ప్యాట్రిసియా ట్రీ (Patricia tree) నోడ్ల ఉపసమితిని కలిగి ఉన్న "చెల్లని రుజువు"తో పాటు సూచిక i ని అందిస్తుంది. గణనలోని ఆ భాగాన్ని అమలు చేయడానికి నోడ్లు ఆ నోడ్లను ఉపయోగించగలవు మరియు రూపొందించబడిన S[i] అందించిన S[i] తో సరిపోలడం లేదని చూడగలవు.
మరొక, మరింత అధునాతనమైన దాడిలో హానికరమైన మైనర్లు అసంపూర్ణ బ్లాక్లను ప్రచురించడం ఉంటుంది, కాబట్టి బ్లాక్లు చెల్లుబాటు అవుతాయా లేదా అని నిర్ణయించడానికి పూర్తి సమాచారం కూడా ఉండదు. దీనికి పరిష్కారం ఛాలెంజ్-రెస్పాన్స్ (challenge-response) ప్రోటోకాల్: ధృవీకరణ నోడ్లు లక్ష్య లావాదేవీ సూచికల రూపంలో "సవాళ్లను" జారీ చేస్తాయి మరియు నోడ్ను స్వీకరించిన తర్వాత, మైనర్ లేదా మరొక ధృవీకర్త అయినా మరొక నోడ్ చెల్లుబాటుకు రుజువుగా ప్యాట్రిసియా నోడ్ల ఉపసమితిని అందించే వరకు లైట్ నోడ్ బ్లాక్ను విశ్వసించనిదిగా పరిగణిస్తుంది.
ముగింపు
ఎథీరియం ప్రోటోకాల్ వాస్తవానికి క్రిప్టోకరెన్సీ యొక్క అప్గ్రేడ్ వెర్షన్గా భావించబడింది, ఇది అత్యంత సాధారణీకరించబడిన ప్రోగ్రామింగ్ భాష ద్వారా ఆన్-బ్లాక్చైన్ ఎస్క్రో, ఉపసంహరణ పరిమితులు, ఆర్థిక కాంట్రాక్ట్లు, గ్యాంబ్లింగ్ మార్కెట్లు మరియు ఇలాంటి అధునాతన లక్షణాలను అందిస్తుంది. ఎథీరియం ప్రోటోకాల్ ఏ అప్లికేషన్లకూ నేరుగా "మద్దతు" ఇవ్వదు, కానీ ట్యూరింగ్-కంప్లీట్ ప్రోగ్రామింగ్ భాష ఉనికిలో ఉండటం వల్ల, ఏ లావాదేవీ రకానికైనా లేదా అప్లికేషన్కైనా సైద్ధాంతికంగా ఏవైనా కాంట్రాక్ట్లను సృష్టించవచ్చని అర్థం. అయితే, ఎథీరియం గురించి మరింత ఆసక్తికరమైన విషయం ఏమిటంటే, ఎథీరియం ప్రోటోకాల్ కేవలం కరెన్సీకి మించి చాలా ముందుకు వెళుతుంది. వికేంద్రీకృత ఫైల్ నిల్వ, వికేంద్రీకృత గణన మరియు వికేంద్రీకృత అంచనా మార్కెట్ల చుట్టూ ఉన్న ప్రోటోకాల్లు, డజన్ల కొద్దీ ఇతర భావనలతో పాటు, కంప్యూటేషనల్ పరిశ్రమ యొక్క సామర్థ్యాన్ని గణనీయంగా పెంచే సామర్థ్యాన్ని కలిగి ఉన్నాయి మరియు మొదటిసారిగా ఆర్థిక పొరను జోడించడం ద్వారా ఇతర పీర్-టు-పీర్ ప్రోటోకాల్లకు భారీ ప్రోత్సాహాన్ని అందిస్తాయి. చివరగా, డబ్బుతో ఏమాత్రం సంబంధం లేని అప్లికేషన్ల యొక్క గణనీయమైన శ్రేణి కూడా ఉంది.
ఎథీరియం ప్రోటోకాల్ ద్వారా అమలు చేయబడిన ఏకపక్ష స్థితి పరివర్తన ఫంక్షన్ భావన ప్రత్యేకమైన సామర్థ్యం ఉన్న ప్లాట్ఫారమ్ను అందిస్తుంది; డేటా నిల్వ, గ్యాంబ్లింగ్ లేదా ఫైనాన్స్లోని నిర్దిష్ట అప్లికేషన్ల శ్రేణి కోసం ఉద్దేశించిన క్లోజ్డ్-ఎండ్, సింగిల్-పర్పస్ ప్రోటోకాల్గా కాకుండా, ఎథీరియం డిజైన్ ద్వారా ఓపెన్-ఎండ్గా ఉంటుంది మరియు రాబోయే సంవత్సరాల్లో పెద్ద సంఖ్యలో ఆర్థిక మరియు ఆర్థికేతర ప్రోటోకాల్లకు పునాది పొరగా సేవ చేయడానికి ఇది చాలా అనుకూలంగా ఉంటుందని మేము నమ్ముతున్నాము.
గమనికలు మరియు తదుపరి పఠనం
గమనికలు
- వాస్తవానికి బిట్కాయిన్ చిరునామా అనేది దీర్ఘవృత్తాకార వక్రరేఖ పబ్లిక్ కీ యొక్క హాష్ అని, పబ్లిక్ కీ కాదని ఒక అవగాహన ఉన్న పాఠకుడు గమనించవచ్చు. అయినప్పటికీ, పబ్కీ (pubkey) హాష్ను పబ్లిక్ కీగా సూచించడం అనేది గూఢలిపి శాస్త్ర పరిభాషలో పూర్తిగా చట్టబద్ధమైనది. ఎందుకంటే బిట్కాయిన్ యొక్క గూఢలిపి శాస్త్రాన్ని అనుకూల డిజిటల్ సంతకం అల్గారిథమ్గా పరిగణించవచ్చు, ఇక్కడ పబ్లిక్ కీ అనేది ECC పబ్కీ యొక్క హాష్ను కలిగి ఉంటుంది, సంతకం అనేది ECC సంతకంతో కలిపిన ECC పబ్కీని కలిగి ఉంటుంది మరియు ధృవీకరణ అల్గారిథమ్లో పబ్లిక్ కీగా అందించబడిన ECC పబ్కీ హాష్తో సంతకంలోని ECC పబ్కీని తనిఖీ చేయడం మరియు ఆపై ECC పబ్కీతో ECC సంతకాన్ని ధృవీకరించడం ఇమిడి ఉంటాయి.
- సాంకేతికంగా, మునుపటి 11 బ్లాక్ల మధ్యగతం (median).
- అంతర్గతంగా, 2 మరియు "CHARLIE" రెండూ సంఖ్యలే, రెండవది బిగ్-ఎండియన్ బేస్ 256 ప్రాతినిధ్యంలో ఉంటుంది. సంఖ్యలు కనీసం 0 మరియు గరిష్టంగా 2256-1 వరకు ఉండవచ్చు.
తదుపరి పఠనం
- అంతర్గత విలువ (opens in a new tab)
- స్మార్ట్ ఆస్తి (opens in a new tab)
- స్మార్ట్ కాంట్రాక్ట్లు (opens in a new tab)
- B-money (opens in a new tab)
- పునర్వినియోగ ప్రూఫ్-ఆఫ్-వర్క్ (opens in a new tab)
- యజమాని అధికారంతో సురక్షితమైన ఆస్తి హక్కులు (opens in a new tab)
- బిట్కాయిన్ శ్వేతపత్రం (opens in a new tab)
- Namecoin (opens in a new tab)
- జూకోస్ ట్రయాంగిల్ (opens in a new tab)
- కలర్డ్ కాయిన్స్ శ్వేతపత్రం (opens in a new tab)
- మాస్టర్కాయిన్ శ్వేతపత్రం (opens in a new tab)
- వికేంద్రీకృత స్వయంప్రతిపత్త సంస్థలు, బిట్కాయిన్ మ్యాగజైన్ (opens in a new tab)
- సరళీకృత చెల్లింపు ధృవీకరణ (opens in a new tab)
- మెర్కిల్ వృక్షాలు (opens in a new tab)
- ప్యాట్రిసియా వృక్షాలు (opens in a new tab)
- GHOST (opens in a new tab)
- స్టోర్జ్ (StorJ) మరియు అటానమస్ ఏజెంట్స్, జెఫ్ గార్జిక్ (opens in a new tab)
- ట్యూరింగ్ ఫెస్టివల్లో స్మార్ట్ ఆస్తిపై మైక్ హెర్న్ (opens in a new tab)
- ఎథీరియం RLP
- ఎథీరియం మెర్కిల్ ప్యాట్రిసియా వృక్షాలు
- మెర్కిల్ సమ్ వృక్షాలపై పీటర్ టాడ్ (opens in a new tab)
శ్వేతపత్రం యొక్క చరిత్ర కోసం, ఈ వికీని (opens in a new tab) చూడండి.
ఎథీరియం, అనేక కమ్యూనిటీ-ఆధారిత, ఓపెన్-సోర్స్ సాఫ్ట్వేర్ ప్రాజెక్ట్ల వలె, దాని ప్రారంభ దశ నుండి అభివృద్ధి చెందింది. ఎథీరియం యొక్క తాజా పరిణామాల గురించి మరియు ప్రోటోకాల్లో మార్పులు ఎలా చేయబడతాయో తెలుసుకోవడానికి, మేము ఈ మార్గదర్శినిని సిఫార్సు చేస్తున్నాము.





