diff --git a/public/content/translations/te/about/index.md b/public/content/translations/te/about/index.md new file mode 100644 index 00000000000..e73f66730e3 --- /dev/null +++ b/public/content/translations/te/about/index.md @@ -0,0 +1,134 @@ +--- +title: "మా గురించి" +description: "ethereum.org యొక్క బృందం, సంఘం మరియు లక్ష్యం గురించి" +lang: te +--- + +# ethereum.org గురించి {#about-ethereumorg} + +ethereum.org అనేది ఇథీరియం సంఘం కోసం ఒక పబ్లిక్, ఓపెన్-సోర్స్ వనరు, దీనికి ఎవరైనా సహకరించవచ్చు. ప్రపంచవ్యాప్తంగా ఉన్న వేలాది మంది సంఘం సభ్యుల సహకారంతో సైట్‌ను నిర్వహించడానికి మరియు అభివృద్ధి చేయడానికి అంకితమైన ఒక చిన్న కోర్ బృందం మాకు ఉంది. + +**ethereum.org నుండి ఎవరూ మిమ్మల్ని ఎప్పటికీ సంప్రదించరు. ప్రతిస్పందించవద్దు.** + +## పేర్లపై ఒక గమనిక {#a-note-on-names} + +ఇథీరియం ల్యాండ్‌స్కేప్‌లోని పేర్లను ప్రజలు గందరగోళానికి గురిచేయడం సర్వసాధారణం, ఇది ఇథీరియం ఎలా పనిచేస్తుందనే దానిపై పేలవమైన మానసిక నమూనాలకు దారితీస్తుంది. విషయాలను స్పష్టం చేయడానికి ఇక్కడ ఒక శీఘ్ర వివరణ ఉంది: + +### ఇథీరియం {#ethereum} + +ఇథీరియం అనేది ఒక పబ్లిక్ నెట్‌వర్క్, ఒక బ్లాక్‌చెయిన్ మరియు ఒక ఓపెన్-సోర్స్ ప్రోటోకాల్ -- ఇది ప్రపంచవ్యాప్తంగా ఉన్న పదివేల మంది డెవలపర్‌లు, నోడ్ ఆపరేటర్‌లు, ETH హోల్డర్‌లు మరియు వినియోగదారుల యొక్క గ్లోబల్ కమ్యూనిటీచే నిర్వహించబడుతుంది, పాలించబడుతుంది, నిర్వహించబడుతుంది మరియు స్వంతం చేసుకోబడింది. + +[ఇథీరియం గురించి మరిన్ని](/what-is-ethereum/) + +[ఇథీరియం పరిపాలనపై మరిన్ని](/governance/) + +### ఈథర్ (ETH) {#ether-or-eth} + +ఈథర్ (దాని టిక్కర్ చిహ్నం, ETH ద్వారా కూడా పిలుస్తారు) అనేది ఇథీరియంపై లావాదేవీ చేయబడిన స్థానిక కరెన్సీ. ఇథీరియం నెట్‌వర్క్ వినియోగానికి (లావాదేవీ రుసుముల రూపంలో) చెల్లించడానికి ETH అవసరం. స్టేకింగ్‌తో నెట్‌వర్క్‌ను భద్రపరచడానికి కూడా ETH ఉపయోగించబడుతుంది. ప్రజలు ఇథీరియం ధర గురించి మాట్లాడినప్పుడు, వారు ఆస్తి అయిన ETHను సూచిస్తున్నారు. + +[ETH గురించి మరిన్ని](/what-is-ether/) + +[ETH స్టేకింగ్ గురించి మరిన్ని](/staking/) + +### ఇథీరియం ఫౌండేషన్ {#ethereum-foundation} + +ETH యొక్క క్రౌడ్‌సేల్ ద్వారా ప్రారంభంలో నిధులు సమకూర్చబడిన ఒక లాభాపేక్ష లేని సంస్థ, ఇథీరియం నెట్‌వర్క్ మరియు పర్యావరణ వ్యవస్థకు మద్దతు ఇవ్వడానికి అంకితం చేయబడింది. + +[ఇథీరియం ఫౌండేషన్ గురించి మరిన్ని](/foundation/) + +### ethereum.org {#ethereum-org} + +ఇథీరియం సంఘం కోసం ఒక పబ్లిక్, ఓపెన్-సోర్స్ వెబ్‌సైట్ మరియు విద్యా వనరు. ethereum.org ఇథీరియం ఫౌండేషన్ ద్వారా నిధులు సమకూర్చబడిన ఒక చిన్న కోర్ బృందం నేతృత్వంలో నడుస్తుంది, ప్రపంచవ్యాప్తంగా ఉన్న వేలాది మంది సంఘం సభ్యుల సహకారంతో. + +ఈ పేజీ ethereum.org గురించి మరింత సమాచారాన్ని కవర్ చేస్తుంది. + +## మా లక్ష్యం {#our-mission} + +**ethereum.org యొక్క లక్ష్యం ఇథీరియం యొక్క పెరుగుతున్న సంఘం కోసం ఉత్తమ పోర్టల్‌గా ఉండటం** + +కొత్త వినియోగదారులకు ఇథీరియం మరియు దాని ముఖ్య భావనలతో పరిచయం ఏర్పరచడంలో సహాయపడటానికి రూపొందించబడిన ఇథీరియంకు సంబంధించిన అన్ని అంశాలపై సులభంగా అర్థం చేసుకోగల విద్యా వనరును నిర్మించడానికి మేము ప్రయత్నిస్తాము. మేము కోరుకుంటున్నాము: + +- సాంకేతికతకు కొత్త ఎవరికైనా ఇథీరియంను వివరించండి +- కొత్త వినియోగదారులు ETH మరియు ఇథీరియంతో ప్రారంభించడానికి సహాయం చేయండి +- కొత్త డెవలపర్‌లు నిర్మించడం ప్రారంభించడానికి సహాయం చేయండి +- ఇథీరియం ప్రపంచంలో నవీకరణలను కవర్ చేయండి +- సంఘం సృష్టించిన వనరులను ప్రదర్శించండి +- వీలైనన్ని ఎక్కువ భాషల్లోకి ఇథీరియం విద్యను తీసుకురండి + +ఈ లక్ష్యాన్ని సాధించడానికి, మా బృందం ethereum.orgలో రెండు ప్రాథమిక లక్ష్యాలపై దృష్టి పెడుతుంది: + +### 1. ethereum.org సందర్శకుల కోసం వినియోగదారు అనుభవాన్ని మెరుగుపరచండి {#visitors} + +- కంటెంట్‌ను విస్తరించండి, మెరుగుపరచండి మరియు తాజాగా ఉంచండి +- స్థానికీకరణ మరియు వెబ్ అభివృద్ధి ఉత్తమ పద్ధతుల ద్వారా వినియోగత మరియు ప్రాప్యతను మెరుగుపరచండి +- సర్వేలు, క్విజ్‌లు మరియు web3 ఇంటిగ్రేషన్‌ల వంటి ఫీచర్ల ద్వారా వినియోగదారు నిశ్చితార్థాన్ని పెంచండి +- వెబ్‌సైట్‌ను తేలికగా మరియు పనితీరుతో ఉంచండి + +### 2. మా సహకారుల సంఘాన్ని పెంచండి, బలోపేతం చేయండి మరియు సాధికారత కల్పించండి {#community} + +- వెబ్‌సైట్‌కు మొత్తం సహకారుల సంఖ్యను పెంచండి +- నిశ్చితార్థం, కృతజ్ఞతలు మరియు బహుమతుల ద్వారా సహకారుల నిలుపుదలని మెరుగుపరచండి +- సంఘం సభ్యులను మరింత ముఖ్యమైన సహకారాలు చేయడానికి సాధికారత కల్పించండి +- సహకారాల యొక్క ఎక్కువ వైవిధ్యాన్ని సులభతరం చేయండి: కోడ్, కంటెంట్, డిజైన్, అనువాదం, మోడరేషన్ +- కోడ్‌బేస్‌ను ఆధునికంగా, శుభ్రంగా మరియు చక్కగా డాక్యుమెంట్ చేయండి + +## ప్రధాన సూత్రాలు {#core-principles} + +మా లక్ష్యాన్ని సాధించడానికి మాకు మార్గనిర్దేశం చేయడంలో సహాయపడే కొన్ని ప్రధాన సూత్రాలు మాకు ఉన్నాయి. + +### 1. ethereum.org అనేది ఇథీరియంకు ఒక పోర్టల్ 🌏 {#core-principles-1} + +మా వినియోగదారుల ఆసక్తిని రేకెత్తించాలని మరియు వారి ప్రశ్నలకు సమాధానాలు లభించాలని మేము కోరుకుంటున్నాము. కాబట్టి మా పోర్టల్ సమాచారం, "మ్యాజిక్ క్షణాలు" మరియు అక్కడ ఉన్న అద్భుతమైన సంఘం వనరులకు లింక్‌లను కలపాలి. మా కంటెంట్ యొక్క ఉద్దేశ్యం “ఆన్‌బోర్డింగ్ పోర్టల్”గా ఉండటం మరియు ఇప్పటికే ఉన్న విస్తృతమైన వనరులకు ప్రత్యామ్నాయం కాదు. మేము సంఘం నిర్మించిన వనరులకు మద్దతు ఇవ్వడానికి మరియు వాటితో కలిసిపోవడానికి ఆసక్తిగా ఉన్నాము, వాటికి ఎక్కువ దృశ్యమానతను ఇస్తాము మరియు వాటిని మరింత కనుగొనగలిగేలా చేస్తాము. +[ఇథీరియం సంఘం](/community/) దీనికి గుండెకాయ: మేము సంఘానికి సేవ చేయడమే కాకుండా, వారితో కలిసి పనిచేసి వారి అభిప్రాయాన్ని పొందుపరచాలి. వెబ్‌సైట్ కేవలం ఇప్పుడు మనకు ఉన్న సంఘం కోసం మాత్రమే కాదు, మనం ఎదగాలని ఆశిస్తున్న సంఘం కోసం కూడా. మన సంఘం ప్రపంచవ్యాప్తమైనదని, అనేక భాషలు, ప్రాంతాలు మరియు సంస్కృతులకు చెందిన వ్యక్తులను కలిగి ఉందని మనం గుర్తుంచుకోవాలి. + +### 2. ethereum.org ఎల్లప్పుడూ అభివృద్ధి చెందుతోంది 🛠 {#core-principles-2} + +ఇథీరియం మరియు సంఘం ఎల్లప్పుడూ అభివృద్ధి చెందుతున్నాయి, కాబట్టి ethereum.org కూడా అలాగే ఉంటుంది. అందుకే సైట్ ఒక సాధారణ డిజైన్ సిస్టమ్ & మాడ్యులర్ నిర్మాణాన్ని కలిగి ఉంది. ప్రజలు సైట్‌ను ఎలా ఉపయోగిస్తారనే దాని గురించి మరియు సంఘం దాని నుండి ఏమి కోరుకుంటుందో మేము మరింత తెలుసుకున్నప్పుడు మేము పునరావృత మార్పులు చేస్తాము. +మేము ఓపెన్ సోర్స్, సహకారుల సంఘంతో ఉన్నాము, కాబట్టి మీరు కూడా మార్పులను ప్రతిపాదించవచ్చు లేదా మాకు సహాయం చేయవచ్చు. +[సహకరించడం గురించి తెలుసుకోండి](/contributing/) + +### 3. ethereum.org ఒక సాధారణ ఉత్పత్తి వెబ్‌సైట్ కాదు 🦄 {#core-principles-3} + +ఇథీరియం ఒక పెద్ద విషయం: ఇందులో ఒక సంఘం, ఒక సాంకేతికత, ఆలోచనలు మరియు భావజాలాల సమితి మరియు మరిన్ని ఉన్నాయి. +దీని అర్థం వెబ్‌సైట్ అనేక విభిన్న వినియోగదారు ప్రయాణాలను నిర్వహించాల్సి ఉంటుంది, “ఒక నిర్దిష్ట సాధనాన్ని కోరుకునే డెవలపర్” నుండి “కొంత ETH కొని, వాలెట్ అంటే ఏమిటో తెలియని కొత్తవాడు” వరకు. +"ఒక బ్లాక్‌చెయిన్ ప్లాట్‌ఫారమ్ కోసం ఉత్తమ వెబ్‌సైట్ ఏది?" అనేది ఒక బహిరంగ ప్రశ్నగా మిగిలిపోయింది - మేము మార్గదర్శకులం. దీనిని నిర్మించడానికి ప్రయోగాలు అవసరం. + +## ఉత్పత్తి రోడ్‌మ్యాప్ {#roadmap} + +మా పనిని మరింత ప్రాప్యత చేయడానికి మరియు మరింత సంఘం సహకారాన్ని ప్రోత్సహించడానికి, ethereum.org కోర్ బృందం మా [షేప్ అప్ సైకిల్](https://www.productplan.com/glossary/shape-up-method/) రోడ్‌మ్యాప్ లక్ష్యాల యొక్క అవలోకనాన్ని ప్రచురిస్తుంది. + +[మా 2025 సైకిల్ 1 ఉత్పత్తి రోడ్‌మ్యాప్‌ను వీక్షించండి](https://github.com/ethereum/ethereum-org-website/issues/14726) + +**అది ఎలా ఉంది?** మేము మా రోడ్‌మ్యాప్‌పై అభిప్రాయాన్ని ఎల్లప్పుడూ అభినందిస్తాము - మేము పని చేయాలని మీరు భావించేది ఏదైనా ఉంటే, దయచేసి మాకు తెలియజేయండి! సంఘంలోని ఎవరి నుండి అయినా మేము ఆలోచనలు మరియు PRలను స్వాగతిస్తాము. + +**పాల్గొనాలని అనుకుంటున్నారా?** [సహకరించడం గురించి మరింత తెలుసుకోండి](/contributing/), [Twitterలో మమ్మల్ని సంప్రదించండి](https://x.com/ethdotorg), లేదా మా [Discord సర్వర్](https://discord.gg/ethereum-org)లో సంఘం చర్చలలో చేరండి. + +## డిజైన్ సూత్రాలు {#design-principles} + +సైట్‌లో మా కంటెంట్ మరియు డిజైన్ నిర్ణయాలకు మార్గనిర్దేశం చేయడానికి మేము [డిజైన్ సూత్రాల](/contributing/design-principles/) సమితిని ఉపయోగిస్తాము. + +## డిజైన్ సిస్టమ్ {#design-system} + +మేము ఫీచర్‌లను మరింత త్వరగా పంపడానికి మరియు సంఘం సభ్యులను ethereum.org యొక్క ఓపెన్ డిజైన్‌లో పాల్గొనడానికి అనుమతించడానికి ఒక [డిజైన్ సిస్టమ్](https://www.figma.com/file/NrNxGjBL0Yl1PrNrOT8G2B/ethereum.org-Design-System?node-id=0%3A1&t=QBt9RkhpPqzE3Aa6-1)ను నిర్మించి విడుదల చేసాము. + +పాల్గొనాలని అనుకుంటున్నారా?Figmaలో అనుసరించండి, [GitHub సమస్య](https://github.com/ethereum/ethereum-org-website/issues/6284) మరియు మా [#design Discord ఛానెల్](https://discord.gg/ethereum-org)లో సంభాషణలో చేరండి. + +## శైలి మార్గదర్శి {#style-guide} + +సహకార ప్రక్రియను సులభతరం చేయడానికి కంటెంట్ రాసే కొన్ని అంశాలను ప్రామాణీకరించడానికి మాకు ఒక [శైలి మార్గదర్శి](/contributing/style-guide/) ఉంది. + +మీరు [సైట్‌కు సహకరించాలనుకుంటే](/contributing/), మా [సూత్రాలను](/contributing/design-principles/) మరియు మా [శైలి మార్గదర్శిని](/contributing/style-guide/) చదివారని నిర్ధారించుకోండి. + +మా డిజైన్ సూత్రాలు, డిజైన్ సిస్టమ్ మరియు శైలి మార్గదర్శిపై మేము అభిప్రాయాన్ని స్వాగతిస్తాము. గుర్తుంచుకోండి, ethereum.org సంఘం కోసం, సంఘం ద్వారా. + +## లైసెన్స్ {#license} + +ethereum.org వెబ్‌సైట్ ఓపెన్ సోర్స్ మరియు अन्यथा పేర్కొనకపోతే [MIT లైసెన్స్](https://github.com/ethereum/ethereum-org-website/blob/dev/LICENSE) క్రింద నిర్మించబడింది. ethereum.org యొక్క [వినియోగ నిబంధనల](/terms-of-use/)పై మరిన్ని. + +## బహిరంగ ఉద్యోగాలు {#open-jobs} + +ఈ వెబ్‌సైట్ ఓపెన్-సోర్స్ మరియు ఎవరైనా దానిపై పని చేయగలిగినప్పటికీ, మాకు ethereum.org మరియు ఇతర ఇథీరియం ఫౌండేషన్ వెబ్ ప్రాజెక్ట్‌లకు అంకితమైన బృందం ఉంది. + +ఏవైనా ఉద్యోగ ఖాళీలను మేము ఇక్కడ పోస్ట్ చేస్తాము. మీకు ఇక్కడ పాత్ర కనిపించకపోతే, మా [Discord సర్వర్](https://discord.gg/ethereum-org)కి వెళ్లి, మీరు మాతో ఎలా పని చేయాలనుకుంటున్నారో మాకు తెలియజేయండి! + +ethereum.org బృందానికి మించి చూస్తున్నారా? [ఇతర ఇథీరియం సంబంధిత ఉద్యోగాలను చూడండి](/community/get-involved/#ethereum-jobs/). diff --git a/public/content/translations/te/ai-agents/index.md b/public/content/translations/te/ai-agents/index.md new file mode 100644 index 00000000000..0dad92b8467 --- /dev/null +++ b/public/content/translations/te/ai-agents/index.md @@ -0,0 +1,144 @@ +--- +title: "AI ఏజెంట్లు" +metaTitle: "AI ఏజెంట్లు | ఇతీరియములో AI ఏజెంట్లు" +description: "ఇతీరియములో AI ఏజెంట్ల అవలోకనం" +lang: te +template: use-cases +emoji: ":robot:" +sidebarDepth: 2 +image: /images/ai-agents/hero-image.png +alt: "టెర్మినల్ టేబుల్ వద్ద ప్రజలు గుమిగూడారు" +summaryPoint1: "బ్లాక్ చైనుతో సంకర్షణ చెంది స్వతంత్రంగా వర్తకం చేసే AI" +summaryPoint2: "ఆన్‌చైన్ వాలెట్లను మరియు నిధులను నియంత్రిస్తుంది" +summaryPoint3: "పని కోసం మానవులను లేదా ఇతర ఏజెంట్లను నియమించుకుంటుంది" +buttons: + - content: AI ఏజెంట్లు అంటే ఏమిటి? + toId: what-are-ai-agents + - content: ఏజెంట్లను అన్వేషించండి + toId: ai-agents-on-ethereum + isSecondary: false +--- + +24/7 ఆన్‌చైన్ మార్కెట్ పోకడలను అధ్యయనం చేసే, ప్రశ్నలకు సమాధానమిచ్చే, మరియు మీ తరపున లావాదేవీలను కూడా అమలు చేసే ఒక AI సహాయకంతో ఇతీరియమును నావిగేట్ చేస్తున్నట్లు ఊహించుకోండి. AI ఏజెంట్ల ప్రపంచానికి స్వాగతం—మీ డిజిటల్ జీవితాన్ని సరళీకృతం చేయడానికి రూపొందించిన తెలివైన వ్యవస్థలు. + +ఇతీరియములో, వర్చువల్ ఇన్‌ఫ్లుయెన్సర్లు మరియు స్వతంత్ర కంటెంట్ సృష్టికర్తల నుండి నిజ-సమయ మార్కెట్ విశ్లేషణ ప్లాట్‌ఫారమ్‌ల వరకు AI ఏజెంట్ల ఆవిష్కరణలను మనం చూస్తున్నాము, ఇవి అంతర్దృష్టులు, వినోదం, మరియు కార్యాచరణ సామర్థ్యాన్ని అందించడం ద్వారా వినియోగదారులను శక్తివంతం చేస్తున్నాయి. + +## AI ఏజెంట్లు అంటే ఏమిటి? {#what-are-ai-agents} + +AI ఏజెంట్లు అనేవి కృత్రిమ మేధస్సును ఉపయోగించి పనులు చేసే లేదా సొంత నిర్ణయాలు తీసుకునే సాఫ్ట్‌వేర్ ప్రోగ్రామ్‌లు. అవి డేటా నుండి నేర్చుకుంటాయి, మార్పులకు అనుగుణంగా మారతాయి, మరియు సంక్లిష్టమైన పనులను నిర్వహిస్తాయి. అవి నిరంతరాయంగా పనిచేస్తాయి మరియు అవకాశాలను తక్షణమే గుర్తించగలవు. + +### AI ఏజెంట్లు బ్లాక్‌చైన్‌లతో ఎలా పనిచేస్తాయి {#how-ai-agents-work-with-blockchains} + +సాంప్రదాయ ఫైనాన్స్‌లో, AI ఏజెంట్లు తరచుగా పరిమిత డేటా ఇన్‌పుట్‌లతో కేంద్రీకృత వాతావరణాలలో పనిచేస్తాయి. ఇది స్వతంత్రంగా నేర్చుకునే లేదా ఆస్తులను నిర్వహించే వాటి సామర్థ్యాన్ని అడ్డుకుంటుంది. + +దీనికి విరుద్ధంగా, ఇతీరియము యొక్క వికేంద్రీకృత పర్యావరణ వ్యవస్థ అనేక ముఖ్య ప్రయోజనాలను అందిస్తుంది: + +- పారదర్శక డేటా: నిజ-సమయ బ్లాక్ చైను సమాచారానికి యాక్సెస్. +- నిజమైన ఆస్తి యాజమాన్యం: డిజిటల్ ఆస్తులు పూర్తిగా AI ఏజెంట్ల యాజమాన్యంలో ఉంటాయి. +- దృఢమైన ఆన్‌చైన్ కార్యాచరణ: AI ఏజెంట్లు లావాదేవీలను అమలు చేయడానికి, స్మార్ట్ కాంట్రాక్ట్‌లతో సంకర్షణ చెందడానికి, ద్రవ్యతను అందించడానికి, మరియు ప్రోటోకాల్‌ల అంతటా సహకరించడానికి వీలు కల్పిస్తుంది. + +ఈ కారకాలు AI ఏజెంట్లను సాధారణ బాట్‌ల నుండి డైనమిక్, స్వీయ-మెరుగుదల వ్యవస్థలుగా మారుస్తాయి, ఇవి బహుళ రంగాలలో గణనీయమైన విలువను అందిస్తాయి: + + + + + + + +## ధృవీకరించదగిన AI {#verifiable-ai} + +ఆఫ్‌చైన్‌లో నడుస్తున్న AI ఏజెంట్లు తరచుగా "బ్లాక్ బాక్స్‌ల" వలె ప్రవర్తిస్తాయి—వాటి తార్కికం, ఇన్‌పుట్‌లు మరియు అవుట్‌పుట్‌లను స్వతంత్రంగా ధృవీకరించలేము. ఇతీరియము దానిని మారుస్తుంది. ఏజెంట్ ప్రవర్తనను ఆన్‌చైన్‌లో నిలపడం ద్వారా, డెవలపర్లు _ట్రస్ట్‌లెస్_, _పారదర్శకమైన_, మరియు _ఆర్థికంగా స్వయంప్రతిపత్తి_ కలిగిన ఏజెంట్లను నిర్మించగలరు. అటువంటి ఏజెంట్ల చర్యలను ఆడిట్ చేయవచ్చు, నియంత్రించవచ్చు మరియు నిరూపించవచ్చు. + +### ధృవీకరించదగిన అనుమితి {#verifiable-inference} + +AI అనుమితి సాంప్రదాయకంగా ఆఫ్‌చైన్‌లో జరుగుతుంది, ఇక్కడ ఎగ్జిక్యూషన్ చౌకగా ఉంటుంది కానీ మోడల్ ఎగ్జిక్యూషన్ అపారదర్శకంగా ఉంటుంది. ఇతీరియములో, డెవలపర్లు అనేక పద్ధతులను ఉపయోగించి ధృవీకరించదగిన గణనతో ఏజెంట్లను జత చేయవచ్చు: + +- [**zkML (జీరో-కనౌలెడ్జి మెషిన్ లెర్నింగ్)**](https://opengradient.medium.com/a-gentle-introduction-to-zkml-8049a0e10a04) ఏజెంట్లు మోడల్ లేదా ఇన్‌పుట్‌లను వెల్లడించకుండా ఒక మోడల్ సరిగ్గా అమలు చేయబడిందని నిరూపించడానికి అనుమతిస్తుంది +- [**TEE (విశ్వసనీయ అమలు వాతావరణం) అటెస్టేషన్‌లు**](https://en.wikipedia.org/wiki/Trusted_execution_environment) ఒక ఏజెంట్ ఒక నిర్దిష్ట మోడల్ లేదా కోడ్ మార్గాన్ని నడిపిందని హార్డ్‌వేర్-ఆధారిత రుజువులను అనుమతిస్తాయి +- **ఆన్‌చైన్ మార్పులేనితనం** ఈ రుజువులు మరియు అటెస్టేషన్‌లను ఏ కాంట్రాక్ట్ లేదా ఏజెంట్ ద్వారా అయినా సూచించవచ్చని, పునఃప్రసారం చేయవచ్చని, మరియు విశ్వసించవచ్చని నిర్ధారిస్తుంది + +## x402తో చెల్లింపులు, మరియు వాణిజ్యం {#x402} + +ఇతీరియము మరియు L2లలో మోహరించిన [x402 ప్రోటోకాల్](https://www.x402.org/), మానవ ప్రమేయం లేకుండా వనరులకు చెల్లించడానికి మరియు ఆర్థికంగా సంకర్షణ చెందడానికి ఏజెంట్లకు ఒక సహజమైన మార్గాన్ని అందిస్తుంది. ఏజెంట్లు చేయగలవు: + +- స్టేబుల్‌కాయిన్‌లను ఉపయోగించి కంప్యూట్, డేటా, మరియు API కాల్‌ల కోసం చెల్లించడం +- ఇతర ఏజెంట్లు లేదా సేవల నుండి అటెస్టేషన్‌లను అభ్యర్థించడం లేదా ధృవీకరించడం +- కంప్యూట్, డేటా, లేదా మోడల్ అవుట్‌పుట్‌లను కొనుగోలు చేస్తూ మరియు అమ్ముతూ, ఏజెంట్-టు-ఏజెంట్ వాణిజ్యంలో పాల్గొనడం + +x402, ఖాతాలు, సబ్‌స్క్రిప్షన్‌లు, లేదా కేంద్రీకృత బిల్లింగ్‌కు బదులుగా పే-పర్-యూజ్ పరస్పర చర్యలను ప్రారంభించడం ద్వారా ఇతీరియమును స్వయంప్రతిపత్త ఏజెంట్ల కోసం ఒక ప్రోగ్రామబుల్ ఆర్థిక లేయర్‌గా మారుస్తుంది. + +### ఏజెంటిక్ ఫైనాన్స్ భద్రత {#agentic-finance-security} + +స్వయంప్రతిపత్త ఏజెంట్లకు రక్షణలు అవసరం. ఇతీరియము వాటిని వాలెట్ మరియు కాంట్రాక్ట్ స్థాయిలో అందిస్తుంది: + +- [స్మార్ట్ ఖాతాలు (EIP-4337)](https://eips.ethereum.org/EIPS/eip-4337) డెవలపర్లు ఖర్చు పరిమితులు, వైట్‌లిస్ట్‌లు, సెషన్ కీలు, మరియు కణిక అనుమతులను అమలు చేయడానికి అనుమతిస్తాయి +- స్మార్ట్ కాంట్రాక్ట్‌లలో ప్రోగ్రామ్ చేయబడిన పరిమితులు ఒక ఏజెంట్ ఏమి చేయడానికి అనుమతించబడిందో దానిని పరిమితం చేయగలవు +- అనుమితి-ఆధారిత పరిమితులు (ఉదా., అధిక-ప్రమాదకర చర్యను అమలు చేసే ముందు zkML రుజువు అవసరం) మరో భద్రతా పొరను జోడిస్తాయి + +ఈ నియంత్రణలు హద్దులు లేని స్వయంప్రతిపత్త ఏజెంట్ల మోహరింపును ప్రారంభిస్తాయి. + +### ఆన్‌చైన్ రిజిస్ట్రీలు: ERC-8004 {#erc-8004} + +[ERC-8004](https://eips.ethereum.org/EIPS/eip-8004) అనేది ఒక అభివృద్ధి చెందుతున్న ప్రమాణం (ప్రస్తుతం పీర్ సమీక్షలో ఉంది), ఇది ఏజెంట్ గుర్తింపు, సామర్థ్యాలు, మరియు అటెస్టేషన్‌ల కోసం ఆన్‌చైన్ రిజిస్ట్రీలను ప్రతిపాదిస్తుంది. + +అది ఆమోదించబడితే, ఇది అందించగలదు: + +- ఏజెంట్ల యొక్క భాగస్వామ్య, ట్రస్ట్‌లెస్ డైరెక్టరీ +- ప్రామాణిక అటెస్టేషన్ ఫార్మాట్‌లు +- నేరుగా ఇతీరియము మెయిన్‌నెట్‌లో "ట్రస్ట్‌లెస్ ఏజెంట్ ఇన్‌ఫ్రాస్ట్రక్చర్" కోసం ఒక పునాది + +ఇది పూర్తిగా వికేంద్రీకృత వాతావరణంలో ఏజెంట్లు ఒకరినొకరు కనుగొనడం, ధృవీకరించడం, మరియు లావాదేవీలు జరపడాన్ని సులభతరం చేస్తుంది. + +## ఇతీరియములో AI ఏజెంట్లు {#ai-agents-on-ethereum} + +మనం AI ఏజెంట్ల పూర్తి సామర్థ్యాన్ని అన్వేషించడం ప్రారంభిస్తున్నాము, మరియు ప్రాజెక్టులు ఇప్పటికే AI మరియు బ్లాక్ చైను మధ్య సమన్వయాన్ని ఉపయోగించుకుంటున్నాయి—ముఖ్యంగా పారదర్శకత మరియు మానిటైజేషన్‌లో. + + + +పాడ్‌కాస్ట్ అతిథిగా లూనా మొదటి ప్రదర్శన + + + +## ఏజెంట్-నియంత్రిత వాలెట్లు {#agent-controlled-wallets} + +లూనా లేదా AIXBT వంటి ఏజెంట్లు వారి సొంత ఆన్‌చైన్ వాలెట్‌ను ([AIXBT యొక్క వాలెట్](https://clusters.xyz/aixbt), [లూనా యొక్క వాలెట్](https://zapper.xyz/account/0x0d177181e3763b20d47dc3a72dd584368bd8bf43)) నియంత్రిస్తాయి, ఇది అభిమానులకు టిప్ ఇవ్వడానికి మరియు ఆర్థిక కార్యకలాపాలలో పాల్గొనడానికి వీలు కల్పిస్తుంది. + +లూనా యొక్క X సామాజిక ప్రచారం #LunaMuralChallenge సమయంలో, లూనా తన బేస్ వాలెట్ ద్వారా విజేతలను ఎంపిక చేసి బహుమతి ఇచ్చింది — ఇది క్రిప్టో రివార్డ్ కోసం ఒక AI మానవులను నియమించుకున్న మొదటి ఉదాహరణగా నిలిచింది. + + + + +

తెలుసుకోవలసిన విషయం

+

AI ఏజెంట్లు మరియు సంబంధిత ఉపకరణాలు ఇంకా ప్రారంభ అభివృద్ధిలో ఉన్నాయి మరియు చాలా ప్రయోగాత్మకమైనవి—జాగ్రత్తగా ఉపయోగించండి.

+
+ +
+ +## చాట్ ఆదేశాలను ఉపయోగించి మీ వాలెట్‌ను నియంత్రించండి {#control-your-wallet-using-chat-commands} + +మీరు DeFi యొక్క సంక్లిష్టమైన ఇంటర్‌ఫేస్‌లను దాటవేసి, సాధారణ చాట్ ఆదేశాలతో మీ క్రిప్టోను నిర్వహించవచ్చు. + +ఈ సహజమైన విధానం లావాదేవీలను వేగంగా, సులభంగా చేస్తుంది మరియు తప్పుడు చిరునామాకు నిధులు పంపడం లేదా రుసుముల కోసం అధికంగా చెల్లించడం వంటి పొరపాట్లకు తక్కువ ఆస్కారం ఇస్తుంది. + + + +## AI ఏజెంట్లు వర్సెస్ AI బాట్‌లు {#ai-agents-vs-ai-bots} + +AI ఏజెంట్లు మరియు AI బాట్‌ల మధ్య వ్యత్యాసం కొన్నిసార్లు గందరగోళంగా ఉండవచ్చు, ఎందుకంటే రెండూ ఇన్‌పుట్ ఆధారంగా ఆటోమేటెడ్ చర్యలను చేస్తాయి. + +- AI బాట్‌లు ఆటోమేటెడ్ సహాయకుల వంటివి — అవి సాధారణ పనులను చేయడానికి నిర్దిష్ట, ముందుగా ప్రోగ్రామ్ చేసిన సూచనలను అనుసరిస్తాయి. +- AI ఏజెంట్లు తెలివైన సహచరుల వంటివి — అవి అనుభవం నుండి నేర్చుకుంటాయి, కొత్త సమాచారానికి అనుగుణంగా మారతాయి మరియు సొంతంగా నిర్ణయాలు తీసుకుంటాయి. + +| | AI ఏజెంట్లు | AI బాట్‌లు | +| -------------------- | ----------------------------------------------------------------------------------------- | -------------------------------------------------------------- | +| **సంకర్షణలు** | సంక్లిష్టమైన, అనుకూలత కలిగిన, స్వతంత్రమైన | సాధారణ, ముందుగా నిర్వచించిన పరిధి, హార్డ్‌కోడెడ్ | +| **నేర్చుకోవడం** | నిరంతరం నేర్చుకుంటుంది, నిజ-సమయంలో ప్రయోగాలు చేయగలదు మరియు కొత్త డేటాకు అనుగుణంగా మారగలదు | ముందుగా శిక్షణ పొందిన డేటా లేదా స్థిరమైన నియమాలపై పనిచేస్తుంది | +| **పని పూర్తి చేయడం** | విస్తృత లక్ష్యాలను సాధించాలని లక్ష్యంగా పెట్టుకుంది | నిర్దిష్ట పనులపై మాత్రమే దృష్టి పెడుతుంది | + +## మరింత లోతుగా వెళ్ళండి {#dive-deeper} + + + +## మీరు మీ స్వంత AI ఏజెంట్‌ను నిర్మించుకోవచ్చు {#you-can-build-your-own-ai-agent} + + diff --git a/public/content/translations/te/bridges/index.md b/public/content/translations/te/bridges/index.md new file mode 100644 index 00000000000..fd7d0d2c8ba --- /dev/null +++ b/public/content/translations/te/bridges/index.md @@ -0,0 +1,145 @@ +--- +title: "బ్లాక్ చైను వారధులకు పరిచయం" +description: "వారధులు వినియోగదారులను వారి నిధులను విభిన్న బ్లాక్ చైనుల మధ్య తరలించడానికి అనుమతిస్తాయి" +lang: te +--- + +# బ్లాక్ చైను వారధులు {#prerequisites} + +_Web3 L1 బ్లాక్ చైనులు మరియు L2 స్కేలింగ్ పరిష్కారాల పర్యావరణ వ్యవస్థగా పరిణామం చెందింది, ప్రతి ఒక్కటి ప్రత్యేక సామర్థ్యాలు మరియు ట్రేడ్-ఆఫ్స్‌తో రూపొందించబడింది. బ్లాక్ చైను ప్రోటోకాల్‌ల సంఖ్య పెరిగేకొద్దీ, చైనుల మధ్య ఆస్తులను తరలించడానికి డిమాండ్ కూడా పెరుగుతుంది._ఈ డిమాండ్‌ను నెరవేర్చడానికి, మనకు వారధులు అవసరం._ + + + +## వారధులు అంటే ఏమిటి? {#what-are-bridges} + +బ్లాక్ చైను వారధులు భౌతిక ప్రపంచంలో మనకు తెలిసిన వారధుల లాగే పనిచేస్తాయి. ఒక భౌతిక వారధి రెండు భౌతిక ప్రదేశాలను ఎలా కలుపుతుందో, ఒక బ్లాక్ చైను వారధి రెండు బ్లాక్ చైను పర్యావరణ వ్యవస్థలను కలుపుతుంది. **సమాచారం మరియు ఆస్తుల బదిలీ ద్వారా బ్లాక్ చైనుల మధ్య కమ్యూనికేషన్‌ను వారధులు సులభతరం చేస్తాయి**. + +ఒక ఉదాహరణను పరిశీలిద్దాం: + +మీరు USA నుండి వచ్చారు మరియు యూరప్‌కు పర్యటనకు ప్లాన్ చేస్తున్నారు. మీ వద్ద USD ఉంది, కానీ ఖర్చు చేయడానికి మీకు EUR అవసరం. మీ USDని EURకి మార్చడానికి మీరు చిన్న రుసుము కోసం కరెన్సీ మార్పిడిని ఉపయోగించవచ్చు. + +కానీ, మీరు వేరే [బ్లాక్ చైను](/glossary/#blockchain)ను ఉపయోగించడానికి ఇలాంటి మార్పిడి చేయాలనుకుంటే ఏమి చేస్తారు? ఉదాహరణకు, మీరు Ethereum Mainnetలోని [ETH](/glossary/#ether)ని [Arbitrum](https://arbitrum.io/)లోని ETHకి మార్చాలనుకుంటున్నారని అనుకుందాం. మనం EUR కోసం చేసిన కరెన్సీ మార్పిడి లాగే, మన ETHని Ethereum నుండి Arbitrumకు తరలించడానికి మనకు ఒక యంత్రాంగం అవసరం. వారధులు అలాంటి లావాదేవీని సాధ్యం చేస్తాయి. ఈ సందర్భంలో, [Arbitrumకు ఒక స్థానిక వారధి ఉంది](https://portal.arbitrum.io/bridge), అది Mainnet నుండి Arbitrumకు ETHని బదిలీ చేయగలదు. + +## మనకు వారధులు ఎందుకు అవసరం? {#why-do-we-need-bridges} + +అన్ని బ్లాక్ చైనులకు వాటి పరిమితులు ఉంటాయి. Ethereum స్కేల్ చేయడానికి మరియు డిమాండ్‌ను అందుకోవడానికి, దీనికి [రోల్అప్‌లు](/glossary/#rollups) అవసరం అయ్యాయి. ప్రత్యామ్నాయంగా, Solana మరియు Avalanche వంటి L1లు అధిక థ్రూపుట్‌ను ప్రారంభించడానికి విభిన్నంగా రూపొందించబడ్డాయి, కానీ అది వికేంద్రీకరణను పణంగా పెట్టి. + +అయితే, అన్ని బ్లాక్ చైనులు వేరువేరు పరిసరాలలో అభివృద్ధి చేయబడ్డాయి మరియు విభిన్న నియమాలు మరియు [ఏకాభిప్రాయం](/glossary/#consensus) యంత్రాంగాలను కలిగి ఉన్నాయి. దీని అర్థం అవి స్థానికంగా కమ్యూనికేట్ చేయలేవు, మరియు టోకెన్లు బ్లాక్ చైనుల మధ్య స్వేచ్ఛగా కదలలేవు. + +బ్లాక్ చైనులను కనెక్ట్ చేయడానికి వారధులు ఉన్నాయి, అవి వాటి మధ్య సమాచారం మరియు టోకెన్ల బదిలీని అనుమతిస్తాయి. + +**వారధులు వీటిని ప్రారంభిస్తాయి**: + +- ఆస్తులు మరియు సమాచారం యొక్క క్రాస్-చైను బదిలీ. +- [డాప్స్](/glossary/#dapp) వివిధ బ్లాక్ చైనుల బలాలను యాక్సెస్ చేయడానికి - తద్వారా వాటి సామర్థ్యాలను పెంచుతాయి (ప్రోటోకాల్స్‌కు ఇప్పుడు ఆవిష్కరణకు మరింత డిజైన్ స్పేస్ ఉన్నందున). +- వినియోగదారులు కొత్త ప్లాట్‌ఫారమ్‌లను యాక్సెస్ చేయడానికి మరియు విభిన్న చైనుల ప్రయోజనాలను ఉపయోగించుకోవడానికి. +- వివిధ బ్లాక్ చైను పర్యావరణ వ్యవస్థల నుండి డెవలపర్లు సహకరించడానికి మరియు వినియోగదారుల కోసం కొత్త ప్లాట్‌ఫారమ్‌లను నిర్మించడానికి. + +[లేయర్ 2కి టోకెన్లను ఎలా బ్రిడ్జ్ చేయాలి](/guides/how-to-use-a-bridge/) + + + +## వారధి వినియోగ సందర్భాలు {#bridge-use-cases} + +మీరు ఒక వారధిని ఉపయోగించగల కొన్ని దృశ్యాలు క్రిందివి: + +### తక్కువ లావాదేవీ రుసుములు {#transaction-fees} + +మీ వద్ద Ethereum Mainnetలో ETH ఉందని అనుకుందాం, కానీ మీరు విభిన్న డాప్స్‌ను అన్వేషించడానికి తక్కువ లావాదేవీ రుసుములు కోరుకుంటున్నారు. మీ ETHని Mainnet నుండి Ethereum L2 రోల్అప్‌కు బ్రిడ్జ్ చేయడం ద్వారా, మీరు తక్కువ లావాదేవీ రుసుములను ఆస్వాదించవచ్చు. + +### ఇతర బ్లాక్ చైనులలోని డాప్స్ {#dapps-other-chains} + +మీరు USDTని సరఫరా చేయడానికి Ethereum Mainnetలో Aaveని ఉపయోగిస్తుంటే, కానీ Polygonలో Aaveని ఉపయోగించి USDTని సరఫరా చేయడానికి మీరు పొందగల వడ్డీ రేటు ఎక్కువగా ఉంటుంది. + +### బ్లాక్ చైను పర్యావరణ వ్యవస్థలను అన్వేషించండి {#explore-ecosystems} + +మీ వద్ద Ethereum Mainnetలో ETH ఉండి, వారి స్థానిక డాప్స్‌ను ప్రయత్నించడానికి మీరు ఒక ఆల్ట్ L1ని అన్వేషించాలనుకుంటే. మీరు మీ ETHని Ethereum Mainnet నుండి ఆల్ట్ L1కి బదిలీ చేయడానికి ఒక వారధిని ఉపయోగించవచ్చు. + +### స్థానిక క్రిప్టో ఆస్తులను సొంతం చేసుకోండి {#own-native} + +మీరు స్థానిక Bitcoin (BTC)ని సొంతం చేసుకోవాలనుకుంటున్నారని అనుకుందాం, కానీ మీ వద్ద నిధులు కేవలం Ethereum Mainnetలో మాత్రమే ఉన్నాయి. Ethereumలో BTCకి ఎక్స్పోజర్ పొందడానికి, మీరు Wrapped Bitcoin (WBTC)ని కొనుగోలు చేయవచ్చు. అయితే, WBTC అనేది Ethereum నెట్‌వర్క్‌కు చెందిన ఒక [ERC-20](/glossary/#erc-20) టోకెన్, అంటే ఇది Bitcoin యొక్క Ethereum వెర్షన్ మరియు Bitcoin బ్లాక్ చైనులోని అసలు ఆస్తి కాదు. స్థానిక BTCని సొంతం చేసుకోవడానికి, మీరు ఒక వారధిని ఉపయోగించి మీ ఆస్తులను Ethereum నుండి Bitcoinకు బ్రిడ్జ్ చేయాల్సి ఉంటుంది. ఇది మీ WBTCని బ్రిడ్జ్ చేసి, దానిని స్థానిక BTCగా మారుస్తుంది. ప్రత్యామ్నాయంగా, మీరు BTCని కలిగి ఉండవచ్చు మరియు దానిని Ethereum [DeFi](/glossary/#defi) ప్రోటోకాల్స్‌లో ఉపయోగించాలనుకోవచ్చు. దీనికి వ్యతిరేక దిశలో, BTC నుండి WBTCకి బ్రిడ్జింగ్ అవసరం, దీనిని తర్వాత Ethereumలో ఒక ఆస్తిగా ఉపయోగించవచ్చు. + + + + + + మీరు పైన చెప్పినవన్నీ ఒక [కేంద్రీకృత మార్పిడి](/get-eth)ని ఉపయోగించి కూడా చేయవచ్చు. అయితే, మీ నిధులు ఇప్పటికే ఒక మార్పిడిలో లేకపోతే, ఇది బహుళ దశలను కలిగి ఉంటుంది, మరియు మీరు ఒక వారధిని ఉపయోగించడం బహుశా మంచిది. + + + + + + +## వారధుల రకాలు {#types-of-bridge} + +వారధులు అనేక రకాల డిజైన్‌లు మరియు చిక్కులను కలిగి ఉంటాయి. సాధారణంగా, వారధులు రెండు వర్గాలుగా విభజించబడ్డాయి: విశ్వసనీయ మరియు విశ్వసనీయత లేని వారధులు. + +| విశ్వసనీయ వారధులు | విశ్వసనీయత లేని వారధులు | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| విశ్వసనీయ వారధులు వాటి కార్యకలాపాల కోసం ఒక కేంద్ర సంస్థ లేదా వ్యవస్థపై ఆధారపడతాయి. | విశ్వసనీయత లేని వారధులు స్మార్ట్ కాంట్రాక్టులు మరియు అల్గారిథమ్‌లను ఉపయోగించి పనిచేస్తాయి. | +| నిధుల అదుపు మరియు వారధి భద్రతకు సంబంధించి అవి విశ్వసనీయ ఊహలను కలిగి ఉంటాయి. వినియోగదారులు ఎక్కువగా వారధి ఆపరేటర్ యొక్క కీర్తిపై ఆధారపడతారు. | అవి విశ్వసనీయత లేనివి, అంటే, వారధి యొక్క భద్రత అంతర్లీన బ్లాక్ చైను యొక్క భద్రతతో సమానంగా ఉంటుంది. | +| వినియోగదారులు వారి క్రిప్టో ఆస్తుల నియంత్రణను వదులుకోవాలి. | [స్మార్ట్ కాంట్రాక్టుల](/glossary/#smart-contract) ద్వారా, విశ్వసనీయత లేని వారధులు వినియోగదారులను వారి నిధులపై నియంత్రణలో ఉండేలా చేస్తాయి. | + +సంక్షిప్తంగా, విశ్వసనీయ వారధులు నమ్మకం ఊహలను కలిగి ఉంటాయని మనం చెప్పవచ్చు, అయితే విశ్వసనీయత లేని వారధులు నమ్మకాన్ని కనిష్టీకరించినవి మరియు అంతర్లీన డొమైన్‌లకు మించి కొత్త నమ్మకం ఊహలను చేయవు. ఈ పదాలను ఈ క్రింది విధంగా వివరించవచ్చు: + +- **విశ్వసనీయత లేనివి**: అంతర్లీన డొమైన్‌లకు సమానమైన భద్రతను కలిగి ఉండటం. [అర్జున్ భుప్తానీ ఈ వ్యాసంలో](https://medium.com/connext/the-interoperability-trilemma-657c2cf69f17) వివరించినట్లు. +- **నమ్మకం ఊహలు:** సిస్టమ్‌లో బాహ్య వెరిఫైయర్‌లను జోడించడం ద్వారా అంతర్లీన డొమైన్‌ల భద్రత నుండి దూరంగా వెళ్లడం, తద్వారా దానిని క్రిప్టో-ఆర్థికంగా తక్కువ సురక్షితంగా చేస్తుంది. + +రెండు పద్ధతుల మధ్య కీలక తేడాలను బాగా అర్థం చేసుకోవడానికి, ఒక ఉదాహరణ తీసుకుందాం: + +మీరు విమానాశ్రయ భద్రతా చెక్‌పాయింట్ వద్ద ఉన్నారని ఊహించుకోండి. రెండు రకాల చెక్‌పాయింట్లు ఉన్నాయి: + +1. మాన్యువల్ చెక్‌పాయింట్లు — బోర్డింగ్ పాస్ అందజేయడానికి ముందు మీ టికెట్ మరియు గుర్తింపు యొక్క అన్ని వివరాలను మాన్యువల్‌గా తనిఖీ చేసే అధికారులచే నిర్వహించబడతాయి. +2. సెల్ఫ్ చెక్-ఇన్ — ఒక యంత్రం ద్వారా నిర్వహించబడుతుంది, ఇక్కడ మీరు మీ విమాన వివరాలను నమోదు చేస్తారు మరియు ప్రతిదీ సరిపోలితే బోర్డింగ్ పాస్ అందుకుంటారు. + +ఒక మాన్యువల్ చెక్‌పాయింట్ విశ్వసనీయ మోడల్‌తో సమానంగా ఉంటుంది, ఎందుకంటే ఇది దాని కార్యకలాపాల కోసం మూడవ పక్షంపై, అంటే అధికారులపై ఆధారపడుతుంది. ఒక వినియోగదారునిగా, మీరు అధికారులు సరైన నిర్ణయాలు తీసుకుంటారని మరియు మీ ప్రైవేట్ సమాచారాన్ని సరిగ్గా ఉపయోగిస్తారని నమ్ముతారు. + +సెల్ఫ్ చెక్-ఇన్ విశ్వసనీయత లేని మోడల్‌తో సమానంగా ఉంటుంది, ఎందుకంటే ఇది ఆపరేటర్ పాత్రను తొలగించి, దాని కార్యకలాపాల కోసం సాంకేతికతను ఉపయోగిస్తుంది. వినియోగదారులు ఎల్లప్పుడూ వారి డేటాపై నియంత్రణలో ఉంటారు మరియు వారి ప్రైవేట్ సమాచారంతో మూడవ పక్షాన్ని నమ్మాల్సిన అవసరం లేదు. + +అనేక బ్రిడ్జింగ్ పరిష్కారాలు ఈ రెండు తీవ్రతల మధ్య, వివిధ స్థాయిలలో విశ్వసనీయత లేమితో కూడిన మోడళ్లను స్వీకరిస్తాయి. + + + +## వారధులను ఉపయోగించండి {#use-bridge} + +వారధులను ఉపయోగించడం వల్ల మీ ఆస్తులను విభిన్న బ్లాక్ చైనుల మధ్య తరలించడానికి మిమ్మల్ని అనుమతిస్తుంది. వారధులను కనుగొని, ఉపయోగించడంలో మీకు సహాయపడే కొన్ని వనరులు ఇక్కడ ఉన్నాయి: + +- **[L2BEAT వారధుల సారాంశం](https://l2beat.com/bridges/summary) & [L2BEAT వారధుల రిస్క్ విశ్లేషణ](https://l2beat.com/bridges/summary)**: మార్కెట్ వాటా, వారధి రకం మరియు గమ్యస్థాన చైనులపై వివరాలతో సహా వివిధ వారధుల సమగ్ర సారాంశం. L2BEATలో వారధుల కోసం రిస్క్ విశ్లేషణ కూడా ఉంది, ఇది వినియోగదారులకు ఒక వారధిని ఎంచుకునేటప్పుడు సమాచారంతో కూడిన నిర్ణయాలు తీసుకోవడంలో సహాయపడుతుంది. +- **[DefiLlama వారధి సారాంశం](https://defillama.com/bridges/Ethereum)**: Ethereum నెట్‌వర్క్‌లలో వారధి వాల్యూమ్‌ల సారాంశం. + + + +## వారధులను ఉపయోగించడం వల్ల కలిగే ప్రమాదాలు {#bridge-risk} + +వారధులు అభివృద్ధిలో ప్రారంభ దశలో ఉన్నాయి. సరైన వారధి డిజైన్ ఇంకా కనుగొనబడలేదని చెప్పవచ్చు. ఏ రకమైన వారధితోనైనా పరస్పర చర్య చేయడం ప్రమాదకరం: + +- **స్మార్ట్ కాంట్రాక్ట్ రిస్క్ —** కోడ్‌లోని బగ్ వల్ల వినియోగదారు నిధులు కోల్పోయే ప్రమాదం +- **సాంకేతిక ప్రమాదం —** సాఫ్ట్‌వేర్ వైఫల్యం, బగ్గీ కోడ్, మానవ తప్పిదం, స్పామ్, మరియు హానికరమైన దాడులు బహుశా వినియోగదారు కార్యకలాపాలకు అంతరాయం కలిగించవచ్చు + +అంతేకాకుండా, విశ్వసనీయ వారధులు నమ్మకం ఊహలను జోడిస్తాయి కాబట్టి, అవి ఈ క్రింది వంటి అదనపు ప్రమాదాలను కలిగి ఉంటాయి: + +- **సెన్సార్‌షిప్ ప్రమాదం —** వారధి ఆపరేటర్లు సిద్ధాంతపరంగా వారధిని ఉపయోగించి వినియోగదారులు వారి ఆస్తులను బదిలీ చేయకుండా నిరోధించవచ్చు +- **కస్టోడియల్ ప్రమాదం —** వారధి ఆపరేటర్లు కుమ్మక్కై వినియోగదారుల నిధులను దొంగిలించవచ్చు + +ఒకవేళ ఈ క్రింది సందర్భాలలో వినియోగదారుని నిధులు ప్రమాదంలో ఉంటాయి: + +- స్మార్ట్ కాంట్రాక్ట్‌లో ఒక బగ్ ఉంటే +- వినియోగదారుడు పొరపాటు చేస్తే +- అంతర్లీన బ్లాక్ చైను హ్యాక్ చేయబడితే +- విశ్వసనీయ వారధిలో వారధి ఆపరేటర్లకు దురుద్దేశం ఉంటే +- వారధి హ్యాక్ చేయబడితే + +ఇటీవలి ఒక హ్యాక్ సోలానా యొక్క వార్మ్‌హోల్ వారధి, [ఇక్కడ హ్యాక్ సమయంలో 120k wETH ($325 మిలియన్ USD) దొంగిలించబడింది](https://rekt.news/wormhole-rekt/). [బ్లాక్ చైనులలోని అనేక అగ్రశ్రేణి హ్యాక్‌లలో వారధులు ఉన్నాయి](https://rekt.news/leaderboard/). + +వినియోగదారులను Ethereum L2లలోకి తీసుకురావడానికి మరియు విభిన్న పర్యావరణ వ్యవస్థలను అన్వేషించాలనుకునే వినియోగదారులకు కూడా వారధులు చాలా కీలకం. అయితే, వారధులతో పరస్పర చర్య చేయడంలో ఉన్న ప్రమాదాలను దృష్టిలో ఉంచుకుని, వారధులు చేస్తున్న ట్రేడ్-ఆఫ్స్‌ను వినియోగదారులు అర్థం చేసుకోవాలి. ఇవి కొన్ని [క్రాస్-చైన్ భద్రత కోసం వ్యూహాలు](https://debridge.com/learn/blog/10-strategies-for-cross-chain-security/). + + + +## మరింత సమాచారం {#further-reading} + +- [EIP-5164: క్రాస్-చైన్ ఎగ్జిక్యూషన్](https://ethereum-magicians.org/t/eip-5164-cross-chain-execution/9658) - _జూన్ 18, 2022 - బ్రెండన్ అస్సెల్‌స్టైన్_ +- [L2Bridge రిస్క్ ఫ్రేమ్‌వర్క్](https://gov.l2beat.com/t/l2bridge-risk-framework/31) - _జూలై 5, 2022 - బార్టెక్ కీపుస్జెస్కి_ +- ["భవిష్యత్తు మల్టీ-చైన్ ఎందుకు అవుతుంది, కానీ అది క్రాస్-చైన్ కాదు."](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/) - _జనవరి 8, 2022 - విటాలిక్ బుటెరిన్_ +- [సురక్షితమైన క్రాస్-చైన్ ఇంటర్ఆపరబిలిటీ కోసం షేర్డ్ సెక్యూరిటీని ఉపయోగించడం: లాగ్రాంజ్ స్టేట్ కమిటీలు మరియు అంతకు మించి](https://web.archive.org/web/20250125035123/https://research.2077.xyz/harnessing-shared-security-for-secure-blockchain-interoperability) - _జూన్ 12, 2024 - ఇమ్మాన్యుయేల్ అవోసికా_ +- [రోల్అప్ ఇంటర్ఆపరబిలిటీ సొల్యూషన్స్ యొక్క స్థితి](https://web.archive.org/web/20250428015516/https://research.2077.xyz/the-state-of-rollup-interoperability) - _జూన్ 20, 2024 - అలెక్స్ హుక్_ + diff --git a/public/content/translations/te/community/code-of-conduct/index.md b/public/content/translations/te/community/code-of-conduct/index.md new file mode 100644 index 00000000000..f042f856edd --- /dev/null +++ b/public/content/translations/te/community/code-of-conduct/index.md @@ -0,0 +1,77 @@ +--- +title: "ప్రవర్తనా నియమావళి" +description: "ethereum.org ప్రదేశాలలో మేం పాటించాలని ప్రయత్నించే ప్రాథమిక ప్రమాణాలు." +lang: te +--- + +# ప్రవర్తనా నియమావళి {#code-of-conduct} + +## లక్ష్యం {#mission} + +Ethereum కోసం అత్యంత సమగ్రమైన మరియు అందుబాటులో ఉండే జ్ఞాన కేంద్రాన్ని అభివృద్ధి చేయడం మరియు నిర్వహించడం. + +## విలువలు {#values} + +ethereum.org సంఘం ఈ విధంగా ఉండటానికి ప్రయత్నిస్తుంది: + +- విద్యా సంబంధమైన, ప్రతి ఒక్కరికీ Ethereumను అర్థం చేసుకోవడంలో సహాయపడే ఉద్దేశ్యంతో +- సమ్మిళితమైన +- అందుబాటులో ఉండే +- కమ్యూనిటీ-ఆధారిత +- Ethereum యొక్క అంతర్లీన సాంకేతికత మరియు వినియోగ సందర్భాలపై దృష్టి సారించినవి +- Ethereum భావనలు మరియు రూపకల్పన సూత్రాలపై దృష్టి సారించినవి + +## మేము ఏమి కాము {#what-we-are-not} + +- Ethereum ఫౌండేషన్ వెబ్సైట్ +- ఏ రకమైన పెట్టుబడులు లేదా లాభార్జనను ప్రోత్సహించే వేదిక +- వ్యక్తిగత ప్రాజెక్టులను లేదా సంస్థలను ఉన్నత స్థితికి తీసుకువెళ్లడానికి లేదా ఆమోదించడానికి ఒక వేదిక +- ఒక DEX, CEX లేదా ఏదైనా ఇతర రకమైన ఆర్థిక వేదిక +- ఏ రకమైన ఆర్థిక లేదా చట్టపరమైన సలహా ఇచ్చే వేదిక + +## ప్రవర్తనా నియమావళి {#code-of-conduct} + +### ప్రతిజ్ఞ {#pledge} + +బహిరంగ భాగస్వామ్యం ethereum.org నైతికతకు మూలం. వేలాది మంది సహాయకులచే నిర్వహించబడే వెబ్సైట్ మరియు సంఘం మేము, మరియు ఇది కేవలం మేము ఒక స్వాగతపూర్వక, భాగస్వామ్య వాతావరణాన్ని నిర్వహిస్తేనే సాధ్యమవుతుంది. ఈ లక్ష్యంతో, ఈ సైట్కు సహాయం చేసేవారు అన్ని ethereum.org వేదికలు మరియు సంఘ ప్రదేశాలలో పాల్గొనే వారందరి కోసం వేధింపులు లేని వాతావరణాన్ని నిర్వహించడానికి ప్రతిజ్ఞ చేస్తారు. వయస్సు, వైకల్యం, జాతి, లింగ లక్షణాలు, లింగ గుర్తింపు, అనుభవ స్థాయి, నైపుణ్యం ఉన్న రంగం, విద్య, సామాజిక-ఆర్థిక స్థితి, జాతీయత, వ్యక్తిగత స్వరూపం, జాతి, మతం లేదా వైవిధ్యం యొక్క ఏ ఇతర పరిమాణంతో సంబంధం లేకుండా, నిర్మాణాత్మక మరియు స్నేహపూర్వక మార్గంలో పాల్గొనాలని కోరుకునే ఎవరినైనా ethereum.org సంఘం స్వాగతిస్తుంది మరియు విలువ ఇస్తుంది. + +### పరిధి {#scope} + +ఈ ప్రవర్తనా నియమావళి అన్ని ethereum.org ప్రదేశాలకు (ఉదాహరణకు GitHub, Discord, Figma, Crowdin, X (గతంలో Twitter) మరియు ఇతర ఆన్లైన్ వేదికలు) వర్తిస్తుంది, మరియు సంఘం మీటప్లు, సమావేశాలు మరియు ఈవెంట్ల వంటి నిజ-ప్రపంచ బహిరంగ ప్రదేశాలలో ప్రాతినిధ్యం వహించినప్పుడు కూడా ఇది వర్తిస్తుంది. + +### మా ప్రమాణాలు {#our-standards} + +సానుకూల వాతావరణాన్ని సృష్టించడానికి దోహదపడే ప్రవర్తనకు ఉదాహరణలు: + +- స్వాగతపూర్వక మరియు సమ్మిళిత భాషను ఉపయోగించడం +- విభిన్న దృక్కోణాలు మరియు అనుభవాలను గౌరవించడం +- నిర్మాణాత్మక విమర్శను సౌమ్యంగా అంగీకరించడం మరియు/లేదా సానుభూతితో అందించడం +- వివాదాలు లేదా విభేదాలను పరిష్కరించేటప్పుడు ప్రశాంతంగా మరియు వృత్తిపరంగా వ్యవహరించడం +- ఇతర సంఘ సభ్యుల పట్ల సానుభూతి మరియు సహనాన్ని చూపడం +- సంఘంలోని కొత్త స్వరాలను ప్రోత్సహించడం మరియు విస్తరించడం + +పాల్గొనేవారిచే అంగీకారయోగ్యం కాని ప్రవర్తనకు ఉదాహరణలు: + +- శారీరక హింస, శారీరక హింసతో బెదిరించడం లేదా ఏ రకమైన శారీరక హింసను ప్రోత్సహించడం +- లైంగిక భాష లేదా చిత్రాలను ఉపయోగించడం లేదా అవాంఛిత లైంగిక దృష్టిని ఆకర్షించడం +- మరొక వ్యక్తిగా నటించడం లేదా ఏదైనా వ్యక్తి లేదా సంస్థతో నిజాయితీ లేకుండా అనుబంధాన్ని క్లెయిమ్ చేయడం +- ట్రోలింగ్, అవమానకరమైన/కించపరిచే వ్యాఖ్యలు మరియు వ్యక్తిగత లేదా రాజకీయ దాడులు +- బహిరంగ లేదా ప్రైవేట్ ఛానెళ్లలో ఇతర సంఘ సభ్యులను వేధించడం +- స్పష్టమైన అనుమతి లేకుండా ఇతరుల ప్రైవేట్ సమాచారాన్ని, ఉదాహరణకు భౌతిక లేదా ఎలక్ట్రానిక్ చిరునామాను ప్రచురించడం +- సోషల్ ఇంజనీరింగ్, స్కామింగ్ లేదా ఇతర సంఘ సభ్యులను తారుమారు చేయడం +- వ్యక్తిగత ద్రవ్య లేదా ద్రవ్యేతర లాభం కోసం పెట్టుబడులు, టోకెన్లు, ప్రాజెక్టులు లేదా మరేదైనా ప్రోత్సహించడం +- సంబంధం లేని కంటెంట్తో సర్వర్లను స్పామ్ చేయడం +- సంఘ మోడరేటర్ల నుండి వచ్చిన అభ్యర్థనలు లేదా హెచ్చరికలను పట్టించుకోకపోవడం +- వృత్తిపరమైన నేపధ్యంలో సహేతుకంగా అనుచితమైనదిగా పరిగణించబడే ఇతర ప్రవర్తనలో పాల్గొనడం + +### నివేదించడం {#reporting} + +ప్రవర్తనా నియమావళి ఉల్లంఘనలు సాధారణంగా సంఘానికి కనిపిస్తాయి, ఎందుకంటే మేము ప్రతిదీ బహిరంగ, పబ్లిక్ ఛానెళ్లలో చేయడానికి ప్రయత్నిస్తాము, ఇది సంఘ సభ్యులను స్వీయ-పర్యవేక్షణకు అనుమతిస్తుంది. + +అయితే, మీ దృష్టికి రావలసినది ఏదైనా జరిగితే, మీరు దానిని మోడరేషన్ పాత్ర ఉన్న వారితో (ఉదా., డిస్కార్డ్ గైడ్) ప్రస్తావించవచ్చు, తద్వారా వారు దర్యాప్తు చేసి తగిన ప్రతిస్పందనను అమలు చేయడంలో సహాయపడగలరు. + +నివేదించేటప్పుడు, దయచేసి నిర్దిష్ట ఉదాహరణలు మరియు టైమ్స్ట్యాంప్లతో సహా వీలైనంత ఎక్కువ వివరాలను చేర్చండి. ఇది న్యాయమైన ఫలితాన్ని నిర్ధారించడానికి సహాయపడుతుంది. + +### అమలు {#enforcement} + +తీవ్రతను బట్టి, ప్రవర్తనా నియమావళిని ఉల్లంఘించే వ్యక్తులు ethereum.org సంఘాల నుండి హెచ్చరికలు, తాత్కాలిక నిషేధాలు లేదా శాశ్వత నిషేధాలను పొందవచ్చు. diff --git a/public/content/translations/te/community/events/organizing/index.md b/public/content/translations/te/community/events/organizing/index.md new file mode 100644 index 00000000000..8b5363ece63 --- /dev/null +++ b/public/content/translations/te/community/events/organizing/index.md @@ -0,0 +1,221 @@ +--- +title: "ఇతీరియము ఈవెంట్‌ను నిర్వహించడం" +description: "ఇతీరియము ఈవెంట్‌ను ఎలా నిర్వహించాలి" +lang: te +hideEditButton: true +--- + +# ఇతీరియము ఈవెంట్‌ను ఎలా నిర్వహించాలి {#how-to-organize-an-ethereum-event} + +ఇతీరియము పర్యావరణ వ్యవస్థను వృద్ధి చేయడానికి బలమైన మరియు ఉత్సాహభరితమైన సమాజాన్ని నిర్మించడం ప్రధానం. మీరు మీటప్‌లు, వర్క్‌షాప్‌లు, లేదా పూర్తి-స్థాయి సమావేశాన్ని నిర్వహించాలని ప్లాన్ చేస్తున్నా, మీ ఈవెంట్ విజయం మీ స్థానిక నెట్‌వర్క్‌లోని కనెక్షన్‌లు మరియు నిమగ్నతపై ఆధారపడి ఉంటుంది. ఈ గైడ్ మీకు ఒక చురుకైన ఇతీరియము సమాజానికి పునాది వేయడానికి మరియు ఒక చిరస్మరణీయమైన మరియు ప్రభావవంతమైన సమావేశాన్ని నిర్వహించే ప్రక్రియలో దశలవారీగా సహాయపడుతుంది. + +## మిమ్మల్ని మీరు ప్రశ్నించుకోండి, ఒక ఇతీరియము సమాజం ఉందా? {#ask-yourself-is-there-an-ethereum-community} + +ఒక విజయవంతమైన ఇతీరియము సమావేశం, ఒక చురుకైన మరియు నిమగ్నమైన సమాజంపై నిర్మించబడుతుంది. మీకు ఇప్పటికే ఒకటి ఉంటే, మీరు ముందంజలో ఉన్నారు — కానీ లేకపోతే, ఆ పునాదిని నిర్మించడం అవసరమైన ముందస్తు దశ. ఒక 'సీన్' మరియు ఒక 'సమాజం' మధ్య వ్యత్యాసాన్ని గుర్తించడం ముఖ్యం: ఒక సీన్‌లో ఒక నిర్దిష్ట ప్రాంతంలో ఉన్న కంపెనీలు మరియు వ్యక్తులు ఉండవచ్చు, కానీ వారు తరచుగా అప్పుడప్పుడు ఉమ్మడి కార్యక్రమాలతో స్వతంత్రంగా పనిచేస్తారు — అనేక ప్రదేశాలలో సాంప్రదాయ వెబ్2 పర్యావరణ వ్యవస్థ లాగా. మరోవైపు, ఒక సమాజం అనేది ఒకరికొకరు సహకరించుకుంటూ మరియు మద్దతు ఇచ్చుకునే పరస్పరం అనుసంధానించబడిన వ్యక్తులు మరియు సంస్థల నెట్‌వర్క్, ఇది తరచుగా వెబ్3 పర్యావరణ వ్యవస్థలలో కనిపిస్తుంది. + +**మీ మొదటి అడుగులు ఇలా ఉండాలి:** + +- స్థానిక స్టార్టప్‌లు మరియు కంపెనీలను అన్వేషించండి — మీ నగరంలో లేదా దేశంలో బలమైన, చురుకైన కంపెనీలు ఉండటం అనేది ఒక సమాజాన్ని నిర్మించడానికి తరచుగా అత్యంత కీలకమైన ఆవశ్యకత. +- ఇప్పటికే కొన్ని మీటప్‌లు ఉన్నాయో లేదో తనిఖీ చేయండి — ethereum.org [ఈవెంట్‌ల పేజీ](https://ethereum.org/community/events/) +- [ethereum.org వెబ్‌సైట్](https://ethereum.org/community/events/) మరియు ethereum.org డిస్కార్డ్ — స్థానిక ఇతీరియము ఈవెంట్‌లు, డెవలపర్లు మరియు కంట్రిబ్యూటర్లు ఉన్నారో లేదో తనిఖీ చేయడానికి. +- Luma మరియు Meetup.com — మీ ప్రాంతంలో ఇతీరియము-సంబంధిత ఈవెంట్‌లు లేదా విస్తృత వెబ్3 ఈవెంట్‌లు జరుగుతున్నాయో లేదో చూడటానికి. +- X — ఈ రంగంలో స్థానిక సమర్థకులను లేదా ఇన్‌ఫ్లుయెన్సర్లను కనుగొనడానికి ప్రయత్నించండి. + +మీరు ఈ అంశాలలో చాలావాటిని కనుగొంటే, ఒక సమాజాన్ని నిర్మించడానికి పరిస్థితులు ఉన్నాయని చెప్పడానికి ఇది ఒక బలమైన సంకేతం — కానీ ఒక సమాజం ఇప్పటికే ఉందని అర్థం కాదు. తదుపరి దశ ఈ కార్యకర్తలను నిర్వహించడం, నిమగ్నం చేయడం, మరియు పోషించడం, సహకారానికి మరియు దీర్ఘకాలిక వృద్ధికి అవకాశాలను సృష్టించడం అనే కీలకమైన పని. + +### లేకపోతే, దాన్ని ఎలా నిర్మించాలి {#if-not-how-to-build-it} + +ఈ అంశాలలో చాలా వరకు లేవని మీరు గ్రహిస్తే, చింతించకండి — ఒక సమాజాన్ని మొదటి నుండి నిర్మించడం సవాలుతో కూడుకున్నదైనా, ఎంతో ప్రతిఫలదాయకమైన ప్రక్రియ. ఒక బలమైన ఇతీరియము సమాజం రాత్రికి రాత్రే ఏర్పడదు; దానికి ఓర్పు, నిలకడ మరియు స్పష్టమైన దృష్టి అవసరం. మీరు ఎలా ప్రారంభించవచ్చో ఇక్కడ ఉంది: + +- **ఒక కమ్యూనికేషన్ ఛానెల్‌ను ఏర్పాటు చేయండి** — ఇది టెలిగ్రామ్, సిగ్నల్, వాట్సాప్, వీచాట్ లేదా డిస్కార్డ్ సర్వర్ కావచ్చు, మీరు ఉన్న చోట ఏది ఎక్కువ ప్రాచుర్యం పొందితే అది, తద్వారా ప్రజలు కనెక్ట్ అవ్వగలరు, ప్రశ్నలు అడగగలరు మరియు వనరులను పంచుకోగలరు. +- **మీ తొలి స్వీకర్తలను కనుగొనండి.** ఇతీరియము మరియు వెబ్3 పట్ల మక్కువ ఉన్న కొద్దిమందిని గుర్తించండి. వారు మీ ప్రధాన మద్దతుదారులు మరియు సహకారులు అవుతారు. +- **చిన్న, నిరంతర ఈవెంట్‌లను హోస్ట్ చేయండి.** అనధికారిక మీటప్‌లు, స్టడీ గ్రూప్‌లు లేదా వర్క్‌షాప్‌లతో ప్రారంభించండి. నిలకడ చాలా ముఖ్యం — మొదట్లో సమూహం చిన్నదిగా ఉన్నప్పటికీ, క్రమం తప్పని ఈవెంట్‌లు నమ్మకాన్ని మరియు వేగాన్ని పెంచుతాయి. +- **స్థానిక కంపెనీలు**, విద్యా సంస్థలు, లేదా కో-వర్కింగ్ స్పేస్‌లను సంప్రదించి, మీకు స్థలాన్ని ఉచితంగా అందించమని కోరండి. మీరు మీ దేశం నుండి స్పీకర్లను కనుగొనలేకపోతే, ఆన్‌లైన్ స్పీకర్లను ఆహ్వానించండి కానీ ప్రజలను భౌతికంగా సమావేశపరచండి. మీ ప్రేక్షకులను ఒకే చోట భౌతికంగా ఉంచడం చాలా ముఖ్యం. +- **ఇప్పటికే ఉన్న టెక్ కమ్యూనిటీలతో సహకరించండి.** డెవలపర్ గ్రూప్‌లు, స్టార్టప్ పర్యావరణ వ్యవస్థలు, లేదా బ్లాక్‌చైన్ మీటప్‌లు ఇప్పటికే స్థాపించబడి ఉంటే, వారితో భాగస్వామ్యం కుదుర్చుకుని ఇతీరియము అంశాలను పరిచయం చేయండి మరియు మీ పరిధిని విస్తరించండి. +- ఇతీరియము యొక్క సంభావ్యత గురించి **విద్యా కంటెంట్‌ను పంచుకోండి**. +- **ప్రపంచవ్యాప్త కమ్యూనిటీలను సంప్రదించండి.** మద్దతు, మార్గదర్శకత్వం, మరియు సంభావ్య సహకారం కోసం ప్రపంచవ్యాప్తంగా స్థాపించబడిన ఇతీరియము సమూహాలు మరియు ప్రాజెక్ట్‌లతో కనెక్ట్ అవ్వండి. ప్రపంచవ్యాప్తంగా ఉన్న ఇతీరియము సమాజాలలో కనీసం ఒక ఉమ్మడి విషయం ఉంది: వారందరూ సహాయం చేయడానికి ఆసక్తిగా ఉంటారు. +- **నిధులను పొందడానికి ప్రయత్నించండి** — స్థానిక వెబ్3 కంపెనీల నుండి లేదా [ESP](https://esp.ethereum.foundation/) వంటి కొన్ని గ్రాంట్ల కార్యక్రమం ద్వారా అయినా. + +### అవును అయితే, దాన్ని ఎలా నిర్వహించాలి మరియు పెంచాలి {#if-yes-how-to-maintain-and-grow-it} + +మీకు ఒక స్థాపిత సమాజం ఉన్న తర్వాత, పని ఆగదు — నిజానికి, అది అప్పుడే మొదలవుతుంది. ఒక సమాజాన్ని చురుకుగా, నిమగ్నంగా, మరియు వృద్ధి చెందేలా ఉంచడానికి నిరంతర ప్రయత్నం మరియు సృజనాత్మకత అవసరం. సమాజాన్ని నిమగ్నమై ఉంచడంలో కీలకమైన అంశాలలో ఒకటి, మీరు నిరంతరం కొత్త ఫార్మాట్‌లు మరియు ఆలోచనలతో ప్రయోగాలు చేయడం. + +ఒక ఉత్సాహభరితమైన ఇతీరియము సమాజాన్ని నిర్వహించడానికి ఇక్కడ కొన్ని వ్యూహాలు ఉన్నాయి: + +- **మీ ఈవెంట్ ఫార్మాట్‌లను వైవిధ్యభరితం చేయండి:** ఒకే రకమైన సమావేశానికి కట్టుబడి ఉండకండి. మీటప్‌లు, చిన్న హ్యాకథాన్‌లు, ప్యానెల్ చర్చలు మరియు నెట్‌వర్కింగ్ ఈవెంట్‌లతో విషయాలను కలపండి. మీరు సహ-పని దినాలు లేదా విద్యా కోర్సులను నిర్వహించడానికి ప్రయత్నించవచ్చు. +- **అంశాలను వైవిధ్యభరితం చేయండి:** ఇతీరియము కేవలం ఒక టెక్నాలజీ మాత్రమే కాదు; ఇది చట్టపరమైన, మార్కెటింగ్, మరియు వ్యాపారంతో కూడిన విలువల సమితి కూడా. +- అభిప్రాయం మరియు ఆలోచనల కోసం **మీ సమాజాన్ని అడగండి**. +- **వివిధ ప్రేక్షకుల** విభాగాలతో నిమగ్నమవ్వండి. వివిధ స్థాయిల అనుభవానికి అనుగుణంగా కంటెంట్ మరియు ఈవెంట్‌లను రూపొందించండి — మొదటిసారి ఇతీరియమును అన్వేషించే ప్రారంభకుల నుండి అనుభవజ్ఞులైన డెవలపర్లు మరియు పారిశ్రామికవేత్తల వరకు. + +నేర్చుకోవడానికి, సహకరించడానికి, మరియు వృద్ధి చెందడానికి వైవిధ్యమైన అవకాశాలను అందించడం ద్వారా, మీ సమాజం చురుకుగా మరియు ఒక సమావేశాన్ని నిర్వహించడం వంటి పెద్ద కార్యక్రమాలకు సిద్ధంగా ఉందని మీరు నిర్ధారించుకోవచ్చు. + +## ఈవెంట్ {#event} + +### ఒక ఈవెంట్‌ను నిర్వహించడానికి సరైన సమయం ఏది? {#when-is-the-right-time-to-organize-an-event} + +ఒక విజయవంతమైన ఇతీరియము సమావేశం లేదా కమ్యూనిటీ ఈవెంట్‌ను నిర్వహించడానికి జాగ్రత్తగా సమయం మరియు పరిగణన అవసరం. సరైన సమయం ఈవెంట్ యొక్క మొత్తం విజయానికి దోహదపడే వివిధ అంశాలపై ఆధారపడి ఉంటుంది. + +మీరు సమాజ పరిపక్వత, మార్కెట్ పరిస్థితులు, మీకు ఒక బృందం ఉందా, మరియు స్థానిక దృశ్యం (ఉదా., సంభావ్య స్పాన్సర్లు) ఉందా అనే విషయాలను పరిగణనలోకి తీసుకోవాలి. + +### KYC — మీ సమాజాన్ని తెలుసుకోండి {#kyc-know-your-community} + +ఒక ఈవెంట్‌ను నిర్వహించడంలో అత్యంత కీలకమైన దశలలో ఒకటి మీ సమాజాన్ని అర్థం చేసుకోవడం. ఆర్థిక సేవల్లో 'మీ వినియోగదారుని తెలుసుకోండి' (KYC) లాగే, 'మీ సమాజాన్ని తెలుసుకోండి' (KYC) అంటే మీ స్థానిక ప్రేక్షకుల నిర్దిష్ట అవసరాలు, ప్రాధాన్యతలు, మరియు లక్షణాలను అర్థం చేసుకోవడానికి సమయం తీసుకోవడం. ఈ అవగాహన దాని విజయం మరియు ప్రాముఖ్యతను నిర్ధారించడానికి సమావేశాన్ని రూపొందించడంలో మీకు సహాయపడుతుంది. + +వెంటనే ఒక పెద్ద-స్థాయి ఈవెంట్‌ను లక్ష్యంగా చేసుకోవడం ఆకర్షణీయంగా ఉంటుంది, కానీ చిన్నగా ప్రారంభించడమే తరచుగా ఉత్తమ విధానం. మీ సమాజం యొక్క స్థితిని మరియు మీకు అసంబద్ధంగా అనిపించే కొన్ని ఇతర అంశాలను (ఉదాహరణకు: మీ దేశం ఒక ప్రసిద్ధ పర్యాటక ప్రదేశమా లేదా వసతి ఖర్చు) నిష్పక్షపాతంగా పరిశీలిస్తే, మీకు ఏది ఉత్తమ పరిష్కారమో మీకు తెలుస్తుంది. + +మొదటి సంవత్సరంలో, మీ ప్రేక్షకుల అతిపెద్ద భాగం స్థానిక సమాజమే అవుతుంది, కాబట్టి ఒక పెద్ద ఈవెంట్‌ను నిర్వహించే మొదటి సంవత్సరంలో మీరు చేసే ప్రతిదీ ఆ సమాజం యొక్క అవసరాలు మరియు పరిమాణానికి అనుగుణంగా ఉండాలి. + +### ఎక్కడ ప్రారంభించాలి {#where-to-start} + +ఒక సమావేశాన్ని నిర్వహించే విషయానికి వస్తే, మొదటి అడుగులు చాలా కష్టంగా అనిపించవచ్చు. కానీ స్పష్టమైన ప్రణాళిక మరియు నిర్మాణంతో, మీరు ప్రక్రియను నిర్వహించదగిన పనులుగా విభజించవచ్చు. వాటిలో ప్రతిదాన్ని మేము విశ్లేషిస్తాము. + +ఒక నిర్మాణాత్మక విధానంతో ప్రారంభించడం వలన మీరు మీ ఈవెంట్‌ను నిర్వహించే వివిధ దశల గుండా వెళుతున్నప్పుడు వ్యవస్థీకృతంగా ఉండటానికి మరియు ఒత్తిడిని తగ్గించుకోవడానికి సహాయపడుతుంది. మీరు తీసుకునే ప్రతి నిర్ణయం మీ సమాజం యొక్క అవసరాలను తీర్చే అనుభవాన్ని అందించడానికి మిమ్మల్ని దగ్గర చేస్తుంది. + +**మొదటి విషయం ఏమిటంటే, స్పష్టమైన పాత్రలు మరియు బాధ్యతలతో ఒక నిర్వహణ బృందాన్ని నిర్మించడం.** + +ఒక కార్యక్రమాన్ని నిర్మించడం లేదా స్పాన్సర్లను సంప్రదించడం ప్రారంభించే ముందు మరొక ముఖ్యమైన దశ తేదీని ఎంచుకోవడం. అది సులభమైన దశగా అనిపించినప్పటికీ, ముందుగా మీరు పరిగణించవలసిన కొన్ని ముఖ్యమైన అంశాలు ఉన్నాయి. వాటిలో కొన్ని: + +- **ప్రధాన సమావేశాలు** లేదా ఈవెంట్‌లతో తేదీలు విభేదించకుండా చూసుకోండి +- **స్థానిక పరిస్థితులు మరియు పరిస్థితులను పరిగణించండి** (సంవత్సరంలోని కాలం, ప్రధాన సెలవులు మొదలైనవి) +- **మార్కెట్ పరిస్థితులను పరిగణనలోకి తీసుకోండి** +- **అన్నీ నిర్వహించడానికి మీకు తగినంత సమయం ఇవ్వండి** — కనీసం తొమ్మిది నెలలు + +### ఒక బృందాన్ని ఎలా సమీకరించాలి {#how-to-assemble-a-team} + +మీ దృష్టిని పంచుకునే మరియు మీ నైపుణ్యాలను పూర్తి చేసే వ్యక్తులను ఎంచుకోండి. కొన్ని బృందాలు సమిష్టిగా పనిచేస్తాయి, మరికొన్నింటికి నిర్దిష్ట పాత్రలు ఉంటాయి — మీకు ఏది ఉత్తమంగా పనిచేస్తుందో కనుగొనండి. క్రమమైన కమ్యూనికేషన్ మరియు స్పష్టమైన అంచనాలు అవసరం. ఈవెంట్ ప్రణాళిక కోసం కమ్యూనికేషన్ ప్లాట్‌ఫారమ్‌లపై ఆధారపడటం ఆకర్షణీయంగా ఉన్నప్పటికీ, ఏమి చేయాలో నిర్వహించడానికి మరియు ట్రాక్ చేయడానికి మేము ఒక టాస్క్ మేనేజ్‌మెంట్ ప్లాట్‌ఫారమ్‌ను (నోషన్, బేస్‌క్యాంప్, ట్రెల్లో, అసానా, లేదా పాత గూగుల్ షీట్స్ వంటివి) ఎంచుకోవాలని సూచిస్తున్నాము. బాగా పనిచేసే మరియు బాగా వ్యవస్థీకృత బృందం ఉండటం చాలా ముఖ్యం. + +వివిధ ఇతీరియము ఆర్గనైజర్ బృందాలు వారి బృందాలలో విభిన్న పాత్రలను కలిగి ఉంటాయి, కానీ లాజిస్టిక్స్, బడ్జెటింగ్, మార్కెటింగ్, ప్రోగ్రామ్, డిజైన్, మరియు భాగస్వామ్యాలపై పనిచేసే వ్యక్తులు వారందరిలో ఉమ్మడిగా ఉంటారు. + +### కార్యక్రమం: ఒక విజయవంతమైన ఈవెంట్ యొక్క కీలక అంశం {#the-program-a-key-element-of-a-successful-event} + +నిజంగా విలువైన మరియు చిరస్మరణీయమైన సమావేశాన్ని నిర్వహించే విషయానికి వస్తే, **కార్యక్రమమే సర్వస్వం**. ఇది మీరు రాజీపడగలిగే ప్రాంతం కాదు. స్పాన్సర్లు ముఖ్యమైనవారు మరియు తరచుగా ఈవెంట్‌కు ఆర్థిక సహాయం చేయడానికి కీలకమైనవారు అయినప్పటికీ, ప్రేక్షకుల అనుభవం మరియు వారు పొందే విలువ ఎల్లప్పుడూ ప్రాధాన్యత వహించాలి. ప్రచార కంటెంట్ మరియు అంతులేని స్పాన్సర్ ప్రసంగాలతో నిండిన కార్యక్రమం మీ హాజరైన వారిని దూరం చేస్తుంది మరియు మీ ఈవెంట్ యొక్క విశ్వసనీయతను దెబ్బతీస్తుంది. + +ప్రతి సెషన్, ప్యానెల్, మరియు వర్క్‌షాప్ సమాజాన్ని తెలియజేయాలి, ప్రేరేపించాలి మరియు నిమగ్నం చేయాలి. మీ ప్రేక్షకుల మాట వినండి—వారి ఆసక్తులు, అవసరాలు మరియు సవాళ్లను అర్థం చేసుకోండి. ఏ అంశాలు వారిలో ప్రతిధ్వనిస్తాయి? అదే సమయంలో, కార్యక్రమాన్ని డైనమిక్‌గా ఉంచడానికి తాజా దృక్కోణాలు మరియు వినూత్న ఫార్మాట్‌లను పరిచయం చేయండి. సాంకేతిక లోతైన పరిశీలనలు మరియు సమాజ-నిర్మాణ సెషన్‌ల నుండి విధాన చర్చలు మరియు ప్రత్యక్ష వర్క్‌షాప్‌ల వరకు ఇతీరియము పర్యావరణ వ్యవస్థ యొక్క వివిధ అంశాలను కవర్ చేసే సమగ్ర అజెండాను నిర్ధారించడానికి, సుపరిచితమైన మరియు ట్రెండింగ్ విషయాలను అత్యాధునిక ఆలోచనలతో సమతుల్యం చేయండి. అదనంగా, సమావేశం యొక్క భాషను పరిగణించండి—చాలా ఇతీరియము ఈవెంట్‌లలో ఆంగ్లం డిఫాల్ట్‌గా ఉన్నప్పటికీ, స్థానిక భాషలో సెషన్‌లను అందించడం వలన ఈవెంట్ ప్రాంతీయ డెవలపర్లు మరియు ఔత్సాహికులకు మరింత అందుబాటులోకి వస్తుంది. + +**స్పీకర్లను ఎంచుకునేటప్పుడు, అధిక-నాణ్యత సమర్పణలను ఆకర్షించడానికి మరియు అజెండా క్యూరేషన్ కోసం తగినంత సమయం ఇవ్వడానికి సమావేశానికి కనీసం ఆరు నెలల ముందు కాల్‌ను తెరవండి.** స్పీకర్ ఎంపికకు బాధ్యత వహించే వ్యక్తికి పరిశ్రమలో గణనీయమైన అనుభవం మరియు పర్యావరణ వ్యవస్థపై లోతైన అవగాహన ఉండాలి. ఇది వారు విలువైన, అంతర్దృష్టిగల సహకారాలను గుర్తించి, అధిక నాణ్యత గల కంటెంట్‌ను కొనసాగించగలరని నిర్ధారిస్తుంది. + +### ఆర్థిక సహాయం ఎక్కడ కనుగొనాలి {#where-to-find-financial-support} + +అధిక-నాణ్యత గల సమావేశాన్ని నిర్వహించడానికి గణనీయమైన ఖర్చులు ఉంటాయి — వేదిక అద్దె, ప్రచార సామగ్రి, ఆహారం మరియు పానీయాలు, ఉత్పత్తి, మరియు లెక్కలేనన్ని ఇతర ఖర్చులు. మీ ఈవెంట్ వృత్తిపరమైన ప్రమాణాలకు అనుగుణంగా ఉందని మరియు మీ హాజరైన వారికి గొప్ప అనుభవాన్ని అందిస్తుందని నిర్ధారించడానికి ముందే ఆర్థిక సహాయాన్ని పొందడం అవసరం. + +#### ఒక స్పాన్సర్‌షిప్ డెక్‌ను ఎలా సృష్టించాలి? {#how-to-create-a-sponsorship-deck} + +మొదట, మీకు ఒక డెక్ అవసరం. **సలహా కోసం ఇతర సమావేశ నిర్వాహకులను అడగండి**, దాని ఆధారంగా మీ ప్యాకేజీలను సృష్టించుకోవడానికి వారి డెక్‌లను పంచుకోమని కూడా అడగండి. ప్యాకేజీల ధరల విషయంలో మీరు వాస్తవికంగా ఉండాలి మరియు ముఖ్యంగా ప్రారంభంలో, డబ్బు సంపాదించడం కాకుండా ఖర్చులను కవర్ చేయడమే లక్ష్యంగా పెట్టుకోవాలి. + +**ప్రతి స్పాన్సర్‌షిప్ డెక్ ఈవెంట్ యొక్క స్పష్టమైన మరియు ఆకర్షణీయమైన అవలోకనాన్ని అందించాలి**, సంభావ్య స్పాన్సర్లు దాని పరిధి, దృష్టి, మరియు విలువను అర్థం చేసుకునేలా నిర్ధారించాలి. విశ్వసనీయతను స్థాపించడానికి ప్రాథమిక అంశాలతో—వేదిక, తేదీ, మరియు నిర్వహణ బృందం గురించిన వివరాలతో—ప్రారంభించండి. ఆ తర్వాత, ఈవెంట్ యొక్క ప్రాథమిక దృష్టిని హైలైట్ చేయండి, ఎందుకంటే వివిధ ఇతీరియము సమావేశాలు వివిధ ప్రేక్షకులకు అందిస్తాయి. కొన్ని ఎక్కువగా బిల్డర్-ఆధారితంగా ఉంటాయి, లోతైన సాంకేతిక చర్చలను కలిగి ఉంటాయి, మరికొన్ని డీఫై, DAOలు, లేదా విధాన అంశాలపై ఎక్కువ దృష్టి పెట్టవచ్చు. + +ఈవెంట్‌ను వివరించడమే కాకుండా, స్పష్టమైన అంచనాలను సెట్ చేయండి. **అంచనా వేసిన హాజరైన వారి సంఖ్య మరియు ఇప్పటికే ధృవీకరించబడిన ఏవైనా కీలక స్పీకర్లను వివరించండి**, ఇది స్పాన్సర్లు వారి సంభావ్య పరిధిని అంచనా వేయడానికి సహాయపడుతుంది. అత్యంత ముఖ్యంగా, వారి స్పాన్సర్‌షిప్‌కు బదులుగా వారు ఏమి పొందుతారో స్పష్టంగా నిర్వచించండి—బూత్ స్థలం, ప్రసంగ అవకాశాలు, సోషల్ మీడియా ప్రచారం, బ్రాండింగ్ విజిబిలిటీ, లేదా ప్రత్యేకమైన నెట్‌వర్కింగ్ యాక్సెస్. బాగా నిర్మాణాత్మకంగా ఉన్న డెక్ కేవలం తెలియజేయడమే కాకుండా, మీ ఈవెంట్‌లో భాగం కావడానికి సంభావ్య స్పాన్సర్లను ఉత్తేజపరుస్తుంది. + +#### మీ ఈవెంట్‌కు ఎవరు మద్దతు ఇవ్వగలరు? {#who-might-support-your-event} + +మీ నగరం లేదా దేశంలోని ఇతీరియము మరియు విస్తృత టెక్ పర్యావరణ వ్యవస్థలోని కంపెనీలను సంప్రదించడం ద్వారా ప్రారంభించండి. ఈ **సంస్థలకు తరచుగా సమాజ వృద్ధి మరియు ఆవిష్కరణలను ప్రోత్సహించే స్థానిక ఈవెంట్‌లకు మద్దతు ఇవ్వడంలో ప్రయోజనం ఉంటుంది**. స్థానిక పర్యావరణ వ్యవస్థలో పెట్టుబడి పెట్టడం యొక్క విలువను గుర్తించి, మీ సమావేశాన్ని ప్రతిభావంతులు, భాగస్వాములు, మరియు వినియోగదారులతో కనెక్ట్ అవ్వడానికి ఒక అవకాశంగా చూసే అవకాశం కూడా వారికి ఎక్కువగా ఉంటుంది. + +మీరు స్థానిక మద్దతును పొందిన తర్వాత, వెబ్3 స్పేస్‌లోని గ్లోబల్ ప్లేయర్‌లకు మీ పరిధిని విస్తరించండి. **స్థాపించబడిన ప్రోటోకాల్‌లు, DAOలు, మరియు పర్యావరణ వ్యవస్థ నిధులు తరచుగా సమాజ-ఆధారిత ఈవెంట్‌ల కోసం బడ్జెట్‌లను కేటాయిస్తాయి**. మొదటిసారి నిర్వాహకులకు ఇది కొంచెం సవాలుగా ఉంటుంది, ఎందుకంటే వారు ఇంకా ప్రదర్శించడానికి ఒక ట్రాక్ రికార్డ్‌ను నిర్మించలేదు, కానీ మీ ఈవెంట్‌కు మద్దతు ఇవ్వడం వల్ల కలిగే ప్రయోజనాలను స్పష్టంగా వివరించే ఒక ఆకర్షణీయమైన స్పాన్సర్‌షిప్ ప్యాకేజీని రూపొందించడానికి ప్రయత్నించండి — బ్రాండ్ విజిబిలిటీ, ప్రసంగ అవకాశాలు, మరియు లక్ష్య ప్రేక్షకుల తో అర్థవంతమైన నిమగ్నత. ఇతరులకు లేని మీ ప్రత్యేక విలువను కనుగొనడానికి ప్రయత్నించండి. + +#### మీ ఈవెంట్‌కు నిధులు సమకూర్చడానికి ప్రత్యామ్నాయ రూపాలు {#alternative-forms-of-funding-your-event} + +గ్రాంట్లు చాలా మంది నిర్వాహకులు పట్టించుకోని మరో సంభావ్య నిధుల మూలం. Ethereum Foundation యొక్క [పర్యావరణ వ్యవస్థ మద్దతు కార్యక్రమం](https://esp.ethereum.foundation/) (ESP) మరియు [ఇతర గ్రాంట్ కార్యక్రమాలు](https://ethereum.org/community/grants/#ethereum-grants) వంటి కార్యక్రమాలు సమాజ-ఆధారిత ఈవెంట్‌లకు మద్దతు ఇవ్వడానికి ఉన్నాయి. + +ఆర్థిక స్పాన్సర్‌షిప్‌లకు మించి, ముఖ్యంగా ఆహారం మరియు పానీయాల కోసం వస్తురూప భాగస్వామ్యాలను పరిగణించండి. స్థానిక సంస్కృతి లేదా టెక్ కమ్యూనిటీతో సరిపోయే బ్రాండ్లు మీ ఈవెంట్‌కు గొప్ప భాగస్వాములుగా ఉంటాయి. కాఫీ బ్రాండ్లు, పానీయాల కంపెనీలు, లేదా స్థానిక పిజ్జేరియాలు కూడా ఈవెంట్‌లో విజిబిలిటీకి బదులుగా ఉత్పత్తులను అందించడానికి ఇష్టపడవచ్చు. ఈ సహకారాలు హాజరైన వారి అనుభవాన్ని మెరుగుపరుస్తూనే ఖర్చులను తగ్గించడంలో సహాయపడతాయి. + +మనం ఫైనాన్స్ గురించి మాట్లాడుతున్నాము కాబట్టి, ఇది గుర్తుంచుకోండి: మీరు ఒక అసాధారణమైన హాజరైన అనుభవాన్ని సృష్టించడానికి పెట్టుబడి పెట్టే ప్రతి డాలర్ ఘాతాంకంలో తిరిగి చెల్లిస్తుంది. అధిక-నాణ్యత గల ఉత్పత్తి, సౌకర్యవంతమైన వేదికలు, ఆలోచనాత్మకమైన స్వాగ్, మరియు బాగా వ్యవస్థీకృతమైన సైడ్ ఈవెంట్‌లు సమావేశం ముగిసిన చాలా కాలం తర్వాత కూడా పాల్గొనేవారు మాట్లాడే ఒక చిరస్మరణీయ అనుభవానికి దోహదం చేస్తాయి. సంతోషంగా ఉన్న హాజరైనవారు మీ అతిపెద్ద ప్రతిపాదకులుగా మారి, మీ ఈవెంట్ యొక్క దీర్ఘకాలిక విజయాన్ని నిర్ధారిస్తారు. + +### లాజిస్టిక్స్ {#logistics} + +నిధులను సమకూర్చడంతో పాటు సమాంతరంగా మీ ప్రధాన దృష్టి లాజిస్టిక్స్‌పై ఉండాలి. ఒక బాగా వ్యవస్థీకృత సమావేశానికి వేదిక సెటప్ నుండి హాజరైన వారి అనుభవం వరకు అనేక రంగాలలో సూక్ష్మ ప్రణాళిక అవసరం. ఈవెంట్ ఆర్గనైజేషన్‌లో మంచి అనుభవం ఉన్న వ్యక్తిని కలిగి ఉండటం — తప్పనిసరిగా వెబ్3 ఈవెంట్‌లు కానక్కర్లేదు, కానీ సాధారణంగా ఈవెంట్‌లు — చాలా పెద్ద తేడాను కలిగిస్తుంది. అనుభవజ్ఞుడైన లాజిస్టిక్స్ లీడ్ సంభావ్య సమస్యలను ముందుగా ఊహించి, అవి సమస్యలుగా మారకముందే వాటిని పరిష్కరించగలడు, సమయం, డబ్బు మరియు ఒత్తిడిని ఆదా చేస్తాడు. + +లాజిస్టిక్స్‌కు బాధ్యత వహించే వ్యక్తి ఒక వేదిక, ఉత్పత్తి కంపెనీ, మరియు ఆహారం, పానీయాలు, మరియు వస్తువుల కోసం వివిధ విక్రేతలను, అలాగే హాజరైనవారు క్రిప్టోలో కూడా నమోదు చేసుకోవడానికి మరియు చెల్లించడానికి అనుమతించే సులభంగా ఉపయోగించగల ఆన్‌లైన్ టికెటింగ్ వ్యవస్థను ఎంచుకోవాలి. + +### స్థాన మౌలిక సదుపాయాలు {#location-infrastructure} + +మీ సమావేశానికి ఒక స్థానాన్ని ఎంచుకునేటప్పుడు, వేదికను మించి ఆలోచించడం మరియు విస్తృత నగర మరియు దేశ మౌలిక సదుపాయాలను పరిగణనలోకి తీసుకోవడం ముఖ్యం. వాతావరణం, చలనశీలత, భద్రత, మరియు రాజకీయ వాతావరణం వంటి అంశాలు హాజరైన వారి అనుభవాన్ని రూపొందించడంలో భారీ పాత్ర పోషిస్తాయి. + +తక్కువ ప్రసిద్ధి చెందిన ప్రదేశాలకు, ఇది ప్రత్యేకంగా కీలకమవుతుంది. ప్రపంచవ్యాప్తంగా ఉన్న హాజరైనవారు మరియు స్పాన్సర్లు తాము సులభంగా మరియు సురక్షితంగా ప్రయాణించగలమని నమ్మకంగా ఉండాలి. విమానాశ్రయ అనుసంధానం, ప్రజా రవాణా, మరియు వసతి ఎంపికలు వంటి అంశాలను పరిశీలించండి. అంతర్జాతీయ భాగస్వాములను నిరోధించే వీసా విధానం వంటి ఏవైనా సమస్యలను నివారించడానికి ప్రాంతం యొక్క సాంస్కృతిక మరియు రాజకీయ వాతావరణాన్ని పరిగణనలోకి తీసుకోవడం కూడా తెలివైన పని. + +### ఈవెంట్‌ను ఎలా ప్రచారం చేయాలి {#how-to-promote-the-event} + +మీ ఈవెంట్‌ను సమర్థవంతంగా ప్రచారం చేయడం సరైన ప్రేక్షకులను ఆకర్షించడానికి మరియు ఉత్సాహాన్ని పెంచడానికి కీలకం. బాగా ఆలోచించిన ప్రచార వ్యూహం మీ సమావేశానికి తగిన విజిబిలిటీ మరియు నిమగ్నతను అందిస్తుందని నిర్ధారిస్తుంది. మీ బ్రాండ్‌లో డిజైన్ కూడా ముఖ్యమైన పాత్ర పోషిస్తుంది, కాబట్టి దాని కోసం కూడా మీరు ఖచ్చితంగా బడ్జెట్ కేటాయించాలి. + +#### సోషల్ మీడియా {#social-media} + +మీ సోషల్ మీడియా ప్రచారానికి X.com వెన్నెముకగా ఉంటుంది. అక్కడ చురుకుగా మరియు స్థిరంగా పోస్ట్ చేయడానికి ప్రయత్నించండి, కానీ మీ వ్యక్తిగత ఖాతాతో మరియు మీ సంస్థ యొక్క ఖాతాతో వివిధ సంభాషణలలో కూడా పాల్గొనండి. + +లింక్డ్‌ఇన్ ప్రచారం కోసం అత్యంత స్పష్టమైన ఎంపికగా అనిపించనప్పటికీ, మీరు అక్కడ పూర్తిగా భిన్నమైన ప్రేక్షకులను, లేదా కొన్ని స్పాన్సర్‌లను కూడా చేరుకోవచ్చు. + +#### ఇతర ఇతీరియము సంఘాలతో భాగస్వామ్యాలు {#partnerships-with-other-ethereum-communities} + +వివిధ ఇతీరియము ఆర్గనైజర్లతో భాగస్వామ్యాలు, ముఖ్యంగా మీరు మొదటి నుండి ప్రారంభించేటప్పుడు, ఇప్పటికే ఉన్న నెట్‌వర్క్‌లను ఉపయోగించుకోవడం ద్వారా మీ పరిధిని విస్తరించడంలో సహాయపడతాయి. కమ్యూనిటీ డిస్కౌంట్లను అందించండి, ఇతర ఈవెంట్‌లతో క్రాస్-ప్రమోట్ చేయండి, మరియు సైడ్ ఈవెంట్‌లు లేదా వర్క్‌షాప్‌లను సహ-హోస్ట్ చేయడానికి భాగస్వాములను ఆహ్వానించండి. + +#### విశ్వవిద్యాలయ పరిధి {#university-outreach} + +ఈవెంట్‌ను ప్రచారం చేయడానికి పట్టణంలోని సాంకేతిక మరియు ఆర్థిక శాస్త్ర అధ్యాపకులను విద్యార్థి క్లబ్‌లు లేదా ప్రొఫెసర్ల ద్వారా సంప్రదించండి. విశ్వవిద్యాలయాలతో నిమగ్నమవడం యువ ప్రతిభ, పరిశోధకులు, మరియు భవిష్యత్ పరిశ్రమ నిపుణులను ఆకర్షించడంలో సహాయపడుతుంది, ఇది అకాడెమియా మరియు ఇతీరియము పర్యావరణ వ్యవస్థ మధ్య బలమైన సంబంధాన్ని పెంపొందిస్తుంది. మీరు ఒక హ్యాకథాన్‌ను నిర్వహిస్తుంటే ఇది ప్రత్యేకంగా గొప్పది, ఎందుకంటే విద్యార్థులు తరచుగా తాజా ఆలోచనలు, ఉత్సాహం మరియు బలమైన సాంకేతిక పునాదిని తీసుకువస్తారు. + +#### మీడియా {#media} + +ఈవెంట్ కవరేజ్ కోసం వెబ్3-కేంద్రీకృత మీడియా సంస్థలు మరియు వార్తాలేఖలను సంప్రదించండి. వెబ్3 మీడియా వారి PR కథనాల కోసం చెల్లింపును ఆశించినప్పటికీ, చెల్లింపు ప్రచారం కోసం మీకు బడ్జెట్ లేకపోతే, మీరు వారికి ఉచిత టిక్కెట్లు లేదా కొన్ని ఉన్నత-స్థాయి స్పీకర్లు మరియు స్పాన్సర్‌లతో ఇంటర్వ్యూలను అందించవచ్చు. వివిధ ఫార్మాట్లలో సోషల్ మీడియా లేదా వెబ్‌సైట్‌లో ప్రచారం కోసం సిద్ధంగా ఉన్న ప్రెస్ రిలీజ్ మరియు కొన్ని విజువల్స్‌తో ఒక PR ప్యాకేజీని సృష్టించండి. అలాగే, టెక్‌ను కవర్ చేయగల స్థానిక జర్నలిస్టులు లేదా కంటెంట్ సృష్టికర్తల (వారికి మంచి పలుకుబడి ఉన్నంత వరకు) పరిధిని విస్తరించండి, ఎందుకంటే ఇది ఈవెంట్‌ను పెద్ద ప్రేక్షకులకు ప్రదర్శించడానికి కీలకం కావచ్చు. ఇది క్రిప్టో పరిశ్రమ మరియు విస్తృత ప్రజల మధ్య అంతరాన్ని పూరించడంలో సహాయపడుతుంది, ప్రధాన స్రవంతి టెక్ మరియు వ్యాపార సంఘాల నుండి ఆసక్తిని ఆకర్షిస్తుంది. + +### మీరు హ్యాకథాన్‌ను కూడా నిర్వహించాలా? {#should-you-organize-a-hackathon-as-well} + +ఒక హ్యాకథాన్‌ను నిర్వహించడం ప్రయోజనకరంగా ఉంటుంది, ఎందుకంటే హ్యాకథాన్‌లు డెవలపర్ కమ్యూనిటీని నిమగ్నం చేయడానికి మరియు ఆవిష్కరణలను ప్రోత్సహించడానికి ఒక గొప్ప మార్గం కావచ్చు. ఇది సహకరించడానికి మరియు ప్రాజెక్ట్‌లను నిర్మించడానికి ప్రత్యక్ష అవకాశాలను కూడా అందిస్తుంది, ఇది పర్యావరణ వ్యవస్థకు స్పష్టమైన ఫలితాలకు దారితీయవచ్చు. హ్యాకథాన్‌లు సాధారణంగా సమావేశాలకు హాజరుకాని డెవలపర్‌లను ఆకర్షిస్తాయి, కానీ వారు కొత్త ఆలోచనలను నిర్మించడం మరియు పరీక్షించడం అనే సవాలుపై ఆసక్తిని కలిగి ఉంటారు. మీ సమావేశం డెవలపర్లు, ఆవిష్కరణలు, మరియు ప్రత్యక్ష ప్రాజెక్ట్‌లను లక్ష్యంగా చేసుకుంటే, హ్యాకథాన్‌ను హోస్ట్ చేయడం ఒక సహజమైన సరిపోలిక. + +కానీ, ఒకదాన్ని నిర్వహించే ముందు, మీకు తగినంత వనరులు మరియు సమయం ఉన్నాయో లేదో పరిగణించండి. **ఒక హ్యాకథాన్‌కు సమయం, శ్రామిక శక్తి, మరియు ఆర్థిక పెట్టుబడి పరంగా గణనీయమైన వనరులు అవసరం**. మీరు ఒక సమావేశాన్ని కూడా నిర్వహిస్తుంటే, దానిని నిర్వహించడానికి మీకు ఒక ప్రత్యేక బృందం ఉందని నిర్ధారించుకోండి. అలాగే, మీ సమాజంలో ఆసక్తి ఉందో లేదో తనిఖీ చేయండి. మీ సమాజం ఎక్కువగా బిల్డర్-ఆధారితంగా ఉంటే, దానిని నిర్వహించడం అర్థవంతంగా ఉంటుంది. + +దానిని నిర్వహించడం వల్ల చాలా ప్రయోజనాలు ఉన్నప్పటికీ, సమావేశం యొక్క స్కేల్‌ను బట్టి, హ్యాకథాన్‌ను జోడించడం చాలా కష్టంగా ఉంటుందని పరిగణనలోకి తీసుకోండి. రెండింటినీ నిర్వహించడం వలన ఏదైనా నాణ్యత తగ్గిపోతుందో లేదో మీరు అంచనా వేయాలి. మీరు ఒక చిన్న, కేంద్రీకృత హ్యాకథాన్‌ను ఎంచుకోవచ్చు లేదా వివిధ నెలల్లో ఈవెంట్‌లను నిర్వహించవచ్చు. + +### (దాదాపు అనివార్యమైన) మీరు ఎదుర్కొనే సవాళ్లు {#almost-inevitable-challenges-that-you-will-face} + +ఒక సమావేశాన్ని నిర్వహించేటప్పుడు, ముఖ్యంగా ఇతీరియము స్పేస్‌లో, అతిపెద్ద సవాళ్లలో ఒకటి తగినంత నిధులను పొందడం. **చాలా మంది ఈవెంట్ నిర్వాహకులు వేదిక ఖర్చులు**, క్యాటరింగ్, మరియు ఇతర లాజిస్టికల్ ఖర్చులను కవర్ చేయడానికి అవసరమైన మూలధనాన్ని సమీకరించడానికి కష్టపడతారు. స్పాన్సర్‌షిప్ తరచుగా అవసరం, కానీ సంబంధాలను నిర్మించడం మరియు మీ ఈవెంట్‌లో పెట్టుబడి పెట్టడానికి కంపెనీలను ఒప్పించడం సమయం పట్టవచ్చు. ఇంకా, మార్కెట్ మాంద్యం సమయంలో స్పాన్సర్లను ఆకర్షించే కష్టం పెరగవచ్చు, ఎందుకంటే కంపెనీలు ప్రధాన కార్యకలాపాలు కాని వాటిలో పెట్టుబడి పెట్టడానికి తక్కువ ఇష్టపడవచ్చు. + +బడ్జెట్‌ను సమర్థవంతంగా నిర్వహించడం ముఖ్యం. **ఊహించని ఖర్చులు**, చివరి నిమిషంలో వేదిక మార్పులు మరియు అదనపు ఈవెంట్ టెక్ అవసరాలు వంటివి, మీ బడ్జెట్‌ను త్వరగా పెంచేయవచ్చు. + +కొత్త ఈవెంట్‌ల కోసం, **అధిక-నాణ్యత గల స్పీకర్లను పొందడం ముఖ్యంగా కష్టం**. ఇతీరియము స్పేస్‌లో స్థాపించబడిన థాట్ లీడర్‌లు లేదా ఇన్‌ఫ్లుయెన్సర్‌లకు ఇప్పటికే పూర్తి షెడ్యూల్‌లు ఉండవచ్చు మరియు నిరూపితమైన ట్రాక్ రికార్డ్ లేని కొత్త ఈవెంట్‌కు కట్టుబడి ఉండటానికి సంకోచించవచ్చు. ఈవెంట్‌కు చాలా కాలం ముందు నెట్‌వర్కింగ్ చేయడానికి మరియు సంభావ్య స్పీకర్లను సంప్రదించడానికి సమయం వెచ్చించడానికి సిద్ధంగా ఉండండి. + +అలాగే, స్పీకర్ల విషయానికి వస్తే, వారితో స్పష్టమైన మరియు నిరంతర కమ్యూనికేషన్ కలిగి ఉండండి — ప్రెజెంటేషన్లను పంపడానికి గడువును సెట్ చేయండి మరియు చివరి నిమిషంలో మార్పులను నివారించండి. + +ఒక విజయవంతమైన సమావేశానికి లాజిస్టిక్స్, మార్కెటింగ్, స్పాన్సర్‌షిప్‌లు, సాంకేతిక మద్దతు మరియు హాజరైన వారి నిర్వహణను నిర్వహించగల ఒక ప్రత్యేక బృందం అవసరం. టెక్ ఈవెంట్‌లను నిర్వహించడంలో అనుభవం ఉన్న వ్యక్తులను కనుగొనడం సవాలుగా ఉంటుంది, ముఖ్యంగా మీరు చిన్న బడ్జెట్‌తో లేదా, చాలా సందర్భాలలో, బడ్జెట్ లేకుండా, స్వచ్ఛంద ప్రాతిపదికన పనిచేస్తుంటే. + +### మీరు ఒంటరిగా చేయకూడదు. మీకు స్వచ్ఛంద సేవకులు కావాలి. {#you-shouldnt-do-it-alone-you-need-volunteers} + +ఒక ఇతీరియము ఈవెంట్‌ను నిర్వహించడానికి లాజిస్టిక్స్, రిజిస్ట్రేషన్‌లు, స్పీకర్ కోఆర్డినేషన్, హాజరైనవారి మద్దతు మరియు మరెన్నో నిర్వహించడానికి ఒక వైవిధ్యమైన మరియు అంకితమైన బృందం అవసరం. కేవలం 3 నుండి 15 మంది వరకు బృందం పరిమాణాలతో, ఈవెంట్ యొక్క సజావుగా నడవడానికి స్వచ్ఛంద సేవకులు అవసరం అని స్పష్టమవుతుంది. + +చాలా సమావేశాలకు స్వచ్ఛంద సేవకులు వెన్నెముకగా ఉంటారు, ముఖ్యంగా మీరు పరిమిత బడ్జెట్‌తో పనిచేస్తున్నప్పుడు కీలకమైన మద్దతును అందిస్తారు. వారు రిజిస్ట్రేషన్ డెస్క్‌లను నిర్వహించడం నుండి ఈవెంట్ సెటప్‌లో సహాయం చేయడం వరకు ప్రతిదీ నిర్వహించగలరు, ఈవెంట్ సాధ్యమైనంత సజావుగా నడిచేలా చూసుకుంటారు. + +స్వచ్ఛంద సేవకులకు ద్రవ్య పరిహారం అందించడం సవాలుగా ఉన్నప్పటికీ, వారి అనుభవాన్ని విలువైనదిగా చేసే విలువైనదాన్ని వారికి అందించడం అవసరం. వారికి నెట్‌వర్కింగ్ అవకాశాలు, నైపుణ్యాభివృద్ధి, కొన్ని ప్రత్యేకమైన ప్రోత్సాహకాలు, సర్టిఫికెట్లు లేదా సిఫార్సు లేఖలను అందించడాన్ని పరిగణించండి. + +### ఈవెంట్ నిర్వాహకులకు వర్తింపు అవసరాలు {#compliance-essentials-for-event-organizers} + +ఒక ఈవెంట్‌ను నిర్వహించేటప్పుడు, గుర్తుంచుకోవలసిన అనేక అవసరమైన చట్టపరమైన మరియు లాజిస్టికల్ పరిగణనలు ఉన్నాయి: + +- **స్పాన్సర్‌షిప్ ఒప్పందం** – స్పాన్సర్‌ల కోసం స్పష్టమైన ఒప్పందం ఉందని నిర్ధారించుకోండి, ఇందులో బాగా నిర్వచించబడిన రద్దు విధానం ఉంటుంది. +- **ప్రవర్తనా నియమావళి** – నిర్దిష్ట ఈవెంట్ రకానికి (సమావేశం/హ్యాకథాన్, హ్యాకర్ హౌస్‌లు మొదలైనవి) అనుగుణంగా ఒక ప్రవర్తనా నియమావళిని సిద్ధం చేయండి. +- **గోప్యతా విధానం** – డేటా రక్షణ నిబంధనలు మరియు చిత్రానికి అనుగుణంగా మీ వెబ్‌సైట్ కోసం ఒక గోప్యతా విధానాన్ని రూపొందించండి +- **స్థానిక అధికారుల నోటిఫికేషన్** – మీ ఈవెంట్ ఒక మూసివేసిన సమావేశం అయినప్పటికీ, స్థానిక పోలీస్ స్టేషన్‌కు దానిని నివేదించడం మంచిది. +- **టికెటింగ్ ఒప్పందం** – నిబంధనలు మరియు బాధ్యతలను స్పష్టం చేయడానికి మీ టికెటింగ్ సేవా ప్రదాతతో ఒక అధికారిక ఒప్పందాన్ని ఏర్పాటు చేసుకోండి. +- **నియంత్రణ వర్తింపు** – మీరు సమావేశాన్ని నిర్వహిస్తున్న దేశంలో క్రిప్టో పరిశ్రమకు నిర్దిష్ట నిబంధనలు లేదా పరిమితులు ఉన్నాయో లేదో ముందుగానే తనిఖీ చేయండి +- **వస్తువుల కోసం కస్టమ్స్ క్లియరెన్స్** – మీరు స్పాన్సర్ వస్తువులను దిగుమతి చేసుకుంటుంటే, ప్రక్రియను సమర్థవంతంగా నిర్వహించడానికి ఒక కస్టమ్స్ ఏజెంట్‌ను నియమించుకోవాలని సిఫార్సు చేయబడింది. +- **ఫోటోగ్రఫీ మరియు మీడియా విధానం** – ఫోటోగ్రఫీ మరియు మీడియా కవరేజ్‌పై మార్గదర్శకాలను స్పష్టంగా నిర్వచించండి, పాల్గొనేవారికి సమ్మతి మరియు వైదొలగే ఎంపికల గురించి తెలియజేయబడిందని నిర్ధారించుకోండి. + +## ఈవెంట్ తర్వాత: తర్వాత ఏంటి? {#after-the-event-whats-next} + +ఈవెంట్ ముగిసిన తర్వాత, హాజరైనవారు, స్పీకర్లు, మరియు స్పాన్సర్‌ల నుండి అభిప్రాయాన్ని సేకరించడం మరియు భవిష్యత్ ఈవెంట్‌ల కోసం మీరు మెరుగ్గా సిద్ధం కావడానికి ఒక అంతర్గత నివేదికను సృష్టించడం చాలా ముఖ్యం. ఇది ఏది బాగా జరిగిందో మరియు ఎక్కడ మెరుగుదలలు చేయవచ్చో గుర్తించడంలో సహాయపడుతుంది. భవిష్యత్ పునరావృతాలను మార్గనిర్దేశం చేసే విలువైన అంతర్దృష్టులను సేకరించడానికి సర్వేలు లేదా ఒకరిపై ఒకరు ఇంటర్వ్యూలను ఉపయోగించండి. ఏవైనా పొరపాట్లు లేదా అసమర్థత ఉన్న ప్రాంతాలను సమీక్షించడానికి సమయం తీసుకోండి, ఎందుకంటే వాటిని తదుపరి సమావేశంలో నివారించవచ్చు, ప్రక్రియను సులభతరం చేస్తుంది. + +ఊపును సజీవంగా ఉంచడమే కీలకం. మీ సమాజంతో నిమగ్నమవడం కొనసాగించండి, వారి అభిప్రాయం ఆధారంగా మీరు చేస్తున్న పురోగతి గురించి నవీకరణలను పంచుకోండి మరియు తదుపరి ఈవెంట్ కోసం ఉత్సాహాన్ని పెంచండి. ఈ కనెక్షన్‌ను కొనసాగించడం ద్వారా, మీరు సమావేశం యొక్క ప్రభావం ఈవెంట్‌ను దాటి విస్తరిస్తుందని, సంబంధాలను బలోపేతం చేస్తుందని మరియు భవిష్యత్ విజయానికి వేదికను ఏర్పాటు చేస్తుందని నిర్ధారించుకుంటారు. + +## రసీదు {#acknowledgement} + +ఈ వ్యాసానికి తమ అంతర్దృష్టులను పంచుకుని సహకరించిన ప్రతి ఒక్కరికీ పెద్ద ధన్యవాదాలు: ETHBratislava నుండి Slavo Fabisik; ETH Kipu మరియు ETH Latam నుండి లోలా; ETH బెల్గ్రేడ్ నుండి Tanja Mladenovic, Ethereum బోగోటా నుండి Juan David; ETHWarsaw నుండి Monika Zając; NapulETH నుండి Raffaele Orefice; ETH రియాద్ నుండి Xiao Wu(Ling); urbe.eth నుండి Marco; ETH డబ్లిన్ నుండి Caolán Walsh; ETHCluj నుండి Alex Males; మరియు ETH స్లోవేనియా నుండి Stanko Devic. + +## వనరులు {#resources} + +పోడ్‌కాస్ట్: A-Z నుండి ఒక ETH ఈవెంట్‌ను ఎలా నిర్వహించాలి మరియు ప్రచారం చేయాలి: + +- [The ETHWarsaw కేస్ స్టడీ, Out of Ordinary ద్వారా](https://www.youtube.com/watch?v=io2Dx1ouz8o) + +ట్విట్టర్ స్పేస్: + +- [ETH కమ్యూనిటీ AMA](https://x.com/NapulETH/status/1905732699094151623) + +వ్యాసాలు: + +- [డాని హెచ్. ద్వారా ETHKL నిర్మించడం](https://sekto.tech/ethkl24) +- [POKT ఈవెంట్స్ ప్లేబుక్](https://docs.pokt.network/community/pokt-events-playbook) diff --git a/public/content/translations/te/community/get-involved/index.md b/public/content/translations/te/community/get-involved/index.md new file mode 100644 index 00000000000..b8bae9898b2 --- /dev/null +++ b/public/content/translations/te/community/get-involved/index.md @@ -0,0 +1,132 @@ +--- +title: "నేను ఎలా పాలుపంచుకోవచ్చు?" +description: "Ethereum కమ్యూనిటీలో ఎలా పాలుపంచుకోవాలి." +lang: te +--- + +# నేను ఎలా పాలుపంచుకోవచ్చు? {#get-involved} + +Ethereum కమ్యూనిటీలో అనేక విభిన్న నేపథ్యాలు మరియు నైపుణ్యాలు ఉన్న వ్యక్తులు ఉన్నారు. మీరు డెవలపర్, కళాకారుడు లేదా అకౌంటెంట్ అయినా, పాలుపంచుకోవడానికి మార్గాలు ఉన్నాయి. మీరు ప్రారంభించడానికి సహాయపడే సూచనల జాబితా ఇక్కడ ఉంది. + +మా [ప్రవర్తనా నియమావళి](/community/code-of-conduct)లో ethereum.org లక్ష్యం మరియు విలువల గురించి చదవడం ద్వారా ప్రారంభించండి. + +## డెవలపర్‌లు ‍ {#developers} + +- [ethereum.org/developers/](/developers/)లో Ethereum గురించి తెలుసుకోండి మరియు ప్రయత్నించండి. +- మీకు సమీపంలో ఉన్న [ETHGlobal](http://ethglobal.co/) హ్యాకథాన్‌లో పాల్గొనండి! +- [మీ నైపుణ్యం ఉన్న ప్రాంతం లేదా మీకు నచ్చిన ప్రోగ్రామింగ్ భాషకు సంబంధించిన ప్రాజెక్ట్‌లను](/developers/docs/programming-languages/) చూడండి +- [ఏకాభిప్రాయం మరియు ఎగ్జిక్యూషన్ లేయర్ కాల్స్‌](https://www.youtube.com/@EthereumProtocol/streams)లో చూడండి లేదా పాల్గొనండి. +- [ఎకోసిస్టమ్ సపోర్ట్ ప్రోగ్రామ్ యొక్క కోరికల జాబితా](https://esp.ethereum.foundation/wishlist/) - టూలింగ్, డాక్యుమెంటేషన్ మరియు మౌలిక సదుపాయాల రంగాలు, ఇక్కడ Ethereum ఎకోసిస్టమ్ సపోర్ట్ ప్రోగ్రామ్ గ్రాంట్ అప్లికేషన్‌ల కోసం చురుకుగా వెతుకుతోంది +- [Web3Bridge](https://www.web3bridgeafrica.com) - ఆఫ్రికా అంతటా వందలాది మంది డెవలపర్‌లు మరియు కమ్యూనిటీ సభ్యులను గుర్తించడానికి, శిక్షణ ఇవ్వడానికి మరియు మద్దతు ఇవ్వడానికి వారి చొరవలో అభివృద్ధి చెందుతున్న web3 కమ్యూనిటీలో చేరండి +- [Eth R&D Discord](https://discord.com/invite/VmG7Uxc)లో చేరండి +- [Ethereum Cat Herders Discord](https://discord.com/invite/Nz6rtfJ8Cu)లో చేరండి + +## పరిశోధకులు & విద్యావేత్తలు ‍ {#researchers-and-academics} + +మీకు గణితం, క్రిప్టోగ్రఫీ లేదా ఆర్థిక శాస్త్రంలో నేపథ్యం ఉందా? Ethereum ఎకోసిస్టమ్‌లో జరుగుతున్న కొన్ని అత్యాధునిక పనులపై మీరు ఆసక్తి కలిగి ఉండవచ్చు: + +- [Eth R&D Discord](https://discord.com/invite/VmG7Uxc)లో చేరండి +- ఒక Ethereum ఇంప్రూవ్‌మెంట్ ప్రపోజల్‌ను వ్రాయండి లేదా సమీక్షించండి + - ఒక EIPని వ్రాయండి + 1. [Ethereum Magicians](https://ethereum-magicians.org)లో మీ ఆలోచనను సమర్పించండి + 2. [EIP-1](https://eips.ethereum.org/EIPS/eip-1) చదవండి - **అవును, అది _మొత్తం_ పత్రం.** + 3. EIP-1లోని ఆదేశాలను అనుసరించండి. మీరు మీ డ్రాఫ్ట్‌ను వ్రాసేటప్పుడు దానిని రిఫరెన్స్‌గా తీసుకోండి. + - [EIP ఎడిటర్](https://eips.ethereum.org/EIPS/eip-5069) ఎలా అవ్వాలో తెలుసుకోండి + - మీరు ఇప్పుడే EIPలను పీర్-రివ్యూ చేయవచ్చు! [`e-review` ట్యాగ్‌తో ఉన్న ఓపెన్ PRలను](https://github.com/ethereum/EIPs/pulls?q=is%3Apr+is%3Aopen+label%3Ae-review) చూడండి. `discussion-to` లింక్‌పై సాంకేతిక ఫీడ్‌బ్యాక్ అందించండి. + - [EIP గవర్నెన్స్](https://github.com/ethereum-cat-herders/EIPIP)లో పాల్గొనండి + - [Ethereum Cat Herders Discord](https://discord.com/invite/Nz6rtfJ8Cu)లో చేరండి + - [EIPల గురించి మరిన్ని](/eips/) +- [Challenges.ethereum.org](https://challenges.ethereum.org/) - అధిక-విలువ గల పరిశోధన బహుమతుల శ్రేణి, ఇక్కడ మీరు >$100,000 USD సంపాదించవచ్చు +- [Ethresear.ch](https://ethresear.ch) - పరిశోధన కోసం Ethereum యొక్క ప్రాథమిక ఫోరమ్, మరియు క్రిప్టోఎకనామిక్స్ కోసం ప్రపంచంలో అత్యంత ప్రభావవంతమైన ఫోరమ్ +- [EF రీసెర్చ్ AMA](https://old.reddit.com/r/ethereum/comments/vrx9xe/ama_we_are_ef_research_pt_8_07_july_2022) - పరిశోధకులతో కొనసాగుతున్న ప్రశ్నోత్తరాల శ్రేణి. ప్రతి తదుపరి భాగం తెరుచుకున్నప్పుడు, ఎవరైనా ప్రశ్నలను పోస్ట్ చేయవచ్చు. +- [ఎకోసిస్టమ్ సపోర్ట్ ప్రోగ్రామ్ యొక్క కోరికల జాబితా](https://esp.ethereum.foundation/wishlist/) - పరిశోధన రంగాలు, ఇక్కడ Ethereum ఎకోసిస్టమ్ సపోర్ట్ ప్రోగ్రామ్ గ్రాంట్ అప్లికేషన్‌ల కోసం చురుకుగా వెతుకుతోంది +- [AllWalletDevs](https://allwallet.dev) - Ethereum డెవలపర్‌లు, డిజైనర్‌లు మరియు ఆసక్తిగల వినియోగదారులు క్రమం తప్పకుండా సమావేశమై వాలెట్‌ల గురించి చర్చించుకోవడానికి ఒక ఫోరమ్ + +[పరిశోధన యొక్క మరిన్ని చురుకైన రంగాలను అన్వేషించండి](/community/research/). + +## సాంకేతికేతర నైపుణ్యాలు ‍ {#non-technical} + +మీరు డెవలపర్ కాకపోతే, Ethereumలో ఎక్కడ ప్రారంభించాలో తెలుసుకోవడం కష్టం. నిర్దిష్ట వృత్తిపరమైన నేపథ్యాల కోసం వనరులతో పాటు ఇక్కడ కొన్ని సూచనలు ఉన్నాయి. + +### మీ నగరంలో ఒక మీటప్‌ను నిర్వహించండి {#meetups} + +- ఎలా ప్రారంభించాలో తెలియదా? [BUIDL నెట్‌వర్క్](https://consensys.net/developers/buidlnetwork/) సహాయపడుతుంది. + +### Ethereum గురించి కంటెంట్ రాయండి {#write-content} + +- Ethereumకు దాని విలువను సరళమైన భాషలో వివరించగల మంచి రచయితలు అవసరం. +- మీ స్వంత కథనాలను ప్రచురించడానికి సిద్ధంగా లేరా? కమ్యూనిటీ వనరులపై ఇప్పటికే ఉన్న కంటెంట్‌కు సహకరించడాన్ని పరిగణించండి, లేదా [ethereum.org కోసం కొత్త కంటెంట్‌ను ప్రతిపాదించండి](/contributing/)! + +### కమ్యూనిటీ కాల్స్ కోసం నోట్స్ తీసుకోవడానికి ఆఫర్ చేయండి {#take-notes} + +- అనేక ఓపెన్-సోర్స్ కమ్యూనిటీ కాల్స్ ఉన్నాయి, మరియు నోట్స్ తీసుకునేవారు ఉండటం చాలా పెద్ద సహాయం. మీకు ఆసక్తి ఉంటే, [Ethereum Cat Herders discord](https://discord.com/invite/Nz6rtfJ8Cu)లో చేరండి మరియు మిమ్మల్ని మీరు పరిచయం చేసుకోండి! + +### Ethereum కంటెంట్‌ను మీ మాతృభాషలోకి అనువదించండి {#translate-ethereum} + +- ethereum.org ఒక అనువాద కార్యక్రమాన్ని నిర్వహిస్తుంది, ఇది వెబ్‌సైట్‌ను మరియు ఇతర వనరులను అనేక విభిన్న భాషలలోకి అనువదిస్తుంది +- [ఇక్కడ](/contributing/translation-program) ఎలా పాలుపంచుకోవాలో కనుక్కోండి + +### ఒక నోడ్‌ను రన్ చేయండి {#run-a-node} + +Ethereumను మరింత వికేంద్రీకరించడంలో సహాయపడటానికి వేలాది నోడ్ ఆపరేటర్లతో చేరండి. + +- [ఒక నోడ్‌ను ఎలా రన్ చేయాలో మరింత సమాచారం](/developers/docs/nodes-and-clients/run-a-node/) + +### మీ ETHని స్టేక్ చేయండి {#staking} + +మీ ETHని స్టేక్ చేయడం ద్వారా మీరు Ethereum నెట్‌వర్క్‌ను సురక్షితం చేయడంలో సహాయపడుతూ రివార్డులను సంపాదించవచ్చు. + +- [స్టేకింగ్ గురించి మరిన్ని](/staking/) + +### ప్రాజెక్ట్‌లకు మద్దతు ఇవ్వండి {#support-projects} + +Ethereum ఎకోసిస్టమ్ ప్రజా ప్రయోజనాలకు మరియు ప్రభావవంతమైన ప్రాజెక్ట్‌లకు నిధులు సమకూర్చే లక్ష్యంతో ఉంది. చాలా చిన్న విరాళాలతో మీరు మీ మద్దతును చూపవచ్చు మరియు ముఖ్యమైన పనిని గ్రహించడానికి అనుమతించవచ్చు. + +- [Gitcoin](https://gitcoin.co/fund) +- [clr.fund](https://clr.fund/#/about) + +## ఆర్థిక నిపుణులు & అకౌంటెంట్లు ‍ {#financial-professionals} + +- Ethereum “వికేంద్రీకృత ఫైనాన్స్” ఎకోసిస్టమ్‌కు నిలయం - ఇది ప్రత్యామ్నాయ ఆర్థిక వ్యవస్థను అందించే ప్రోటోకాల్‌లు మరియు అప్లికేషన్‌ల నెట్‌వర్క్. మీరు ఆర్థిక నిపుణులైతే, [DeFi Llama](https://defillama.com/) లేదా [DeFiPrime](https://defiprime.com)లో కొన్ని DeFi యాప్‌లను చూడండి +- అకౌంటెంటా? Ethereumలోని ఆస్తులు - ETH, టోకెన్లు, DeFi, మొదలైనవి - అనేక కొత్త అకౌంటింగ్ సమస్యలను పరిచయం చేస్తాయి. క్రిప్టోకరెన్సీ వినియోగదారులకు వారి బుక్‌కీపింగ్ & అకౌంటింగ్ సవాళ్లను పరిష్కరించడంలో సహాయపడే కొన్ని ప్రాజెక్ట్‌లను చూడటం ద్వారా మీరు ప్రారంభించవచ్చు, [Rotki](https://rotki.com/) వంటివి. + +## ఉత్పత్తి నిర్వాహకులు ‍ {#product-managers} + +- Ethereum ఎకోసిస్టమ్‌కు మీ ప్రతిభ అవసరం! అనేక కంపెనీలు ఉత్పత్తి నిర్వాహక పాత్రల కోసం నియమించుకుంటున్నాయి. మీరు ఓపెన్ సోర్స్ ప్రాజెక్ట్‌కు సహకరించడం ద్వారా ప్రారంభించాలనుకుంటే, [Ethereum Cat Herders](https://discord.com/invite/Nz6rtfJ8Cu) లేదా [RaidGuild](https://www.raidguild.org/)తో సంప్రదించండి + +## మార్కెటింగ్ ‍ {#marketing} + +- Ethereum ఎకోసిస్టమ్‌లో అనేక మార్కెటింగ్ మరియు కమ్యూనికేషన్స్ స్థానాలు ఉన్నాయి! + +## Ethereum ఉద్యోగాలు {#ethereum-jobs} + +**Ethereumలో పనిచేసే ఉద్యోగం కనుగొనాలనుకుంటున్నారా?** + +- [ethereum.org ఉద్యోగాలు](/about/#open-jobs) +- [Ethereum ఫౌండేషన్ జాబ్ బోర్డ్](https://jobs.ashbyhq.com/ethereum-foundation) +- [JobStash](https://jobstash.xyz) +- [Ethereum జాబ్ బోర్డ్](https://www.ethereumjobboard.com/) +- [క్రిప్టోకరెన్సీ ఉద్యోగాలు](https://cryptocurrencyjobs.co/ethereum/) +- [ConsenSysలో కెరీర్లు](https://consensys.net/careers/) +- [క్రిప్టో ఉద్యోగాల జాబితా](https://cryptojobslist.com/ethereum-jobs) +- [Bankless జాబ్స్ బోర్డ్](https://pallet.xyz/list/bankless/jobs) +- [Web3 Jobs](https://web3.career) +- [Web3 Army](https://web3army.xyz/) +- [క్రిప్టో వ్యాలీ జాబ్స్](https://cryptovalley.jobs/) +- [Ethereum ఉద్యోగాలు](https://startup.jobs/ethereum-jobs) + +## ఒక DAOలో చేరండి {#decentralized-autonomous-organizations-daos} + +"DAOలు" వికేంద్రీకృత స్వయంప్రతిపత్త సంస్థలు. ఈ సమూహాలు సంస్థ మరియు సహకారాన్ని సులభతరం చేయడానికి Ethereum సాంకేతికతను ఉపయోగిస్తాయి. ఉదాహరణకు, సభ్యత్వాన్ని నియంత్రించడం, ప్రతిపాదనలపై ఓటింగ్ చేయడం లేదా పూల్ చేసిన ఆస్తులను నిర్వహించడం కోసం. DAOలు ఇంకా ప్రయోగాత్మకంగా ఉన్నప్పటికీ, మీరు గుర్తించే సమూహాలను కనుగొనడానికి, సహకారులను కనుగొనడానికి మరియు Ethereum కమ్యూనిటీపై మీ ప్రభావాన్ని పెంచుకోవడానికి అవి అవకాశాలను అందిస్తాయి. [DAOల గురించి మరిన్ని](/dao/) + +- [DAOSquare](https://daosquare.io/) [@DAOSquare](https://twitter.com/DAOSquare) - _నాన్-టెక్ రంగంలో DAO భావనను ప్రోత్సహించండి మరియు DAO ద్వారా ప్రజలు విలువను సృష్టించడానికి సహాయపడండి_ +- [Developer DAO](https://www.developerdao.com/) [@developer_dao](https://twitter.com/developer_dao) - _ఇంటర్నెట్ యొక్క సమిష్టి యాజమాన్యాన్ని విశ్వసించే బిల్డర్ల సంఘం_ +- [dOrg](https://dOrg.tech) [@dOrg_tech](https://twitter.com/dOrg_tech) - _DAOగా పనిచేస్తున్న ఫ్రీలాన్సర్ Web3 డెవలప్‌మెంట్ కలెక్టివ్_ +- [HausDAO](https://daohaus.club) [@nowdaoit](https://twitter.com/nowdaoit) - _DAOhaus యొక్క కమ్యూనిటీ పాలన_ +- [LexDAO](https://lexdao.org) [@lex_DAO](https://twitter.com/lex_DAO) - _లీగల్ ఇంజనీరింగ్_ +- [MetaCartel Ventures](https://metacartel.xyz) [@VENTURE_DAO](https://twitter.com/VENTURE_DAO) - _ప్రీ-సీడ్ క్రిప్టో ప్రాజెక్ట్‌ల కోసం వెంచర్_ +- [MetaFactory](https://metafactory.ai) [@TheMetaFactory](https://twitter.com/TheMetaFactory) - _డిజిఫిజికల్ అపెరల్ బ్రాండ్స్_ +- [MolochDAO](https://molochdao.com) [@MolochDAO](https://twitter.com/MolochDAO) - _Ethereum అభివృద్ధికి నిధులు సమకూర్చడంపై దృష్టి సారించిన సంఘం_ +- [Raid Guild](https://raidguild.org) [@RaidGuild](https://twitter.com/RaidGuild) - _Web3 బిల్డర్ల కలెక్టివ్_ + +మీరు ethereum.orgకి ఎప్పుడు మరియు ఎలా సహకరించినా, దయచేసి ethereum.org [ప్రవర్తనా నియమావళి](/community/code-of-conduct)కి కట్టుబడి ఉండాలని గుర్తుంచుకోండి! diff --git a/public/content/translations/te/community/grants/index.md b/public/content/translations/te/community/grants/index.md new file mode 100644 index 00000000000..e268de86989 --- /dev/null +++ b/public/content/translations/te/community/grants/index.md @@ -0,0 +1,68 @@ +--- +title: "ఇతీరియము ఫౌండేషన్ & సంఘం గ్రాంటు కార్యక్రమాలు" +description: "ఇతీరియము పర్యావరణ వ్యవస్థ అంతటా ఉన్న గ్రాంటు కార్యక్రమాల జాబితా." +lang: te +--- + +# ఇతీరియము గ్రాంట్లు {#ethereum-grants} + +క్రింద జాబితా చేయబడిన కార్యక్రమాలు ఇతీరియము పర్యావరణ వ్యవస్థ యొక్క విజయం మరియు అభివృద్ధిని ప్రోత్సహించడానికి పనిచేస్తున్న ప్రాజెక్టుల కోసం వివిధ రకాల నిధుల గ్రాంటులను అందిస్తాయి. మీ తదుపరి ఇతీరియము ప్రాజెక్టును విజయవంతం చేయడానికి సహాయపడటానికి నిధులను కనుగొని, దరఖాస్తు చేసుకోవడానికి దీనిని మార్గదర్శిగా ఉపయోగించండి. + +ఈ జాబితా మా సంఘం ద్వారా క్యూరేట్ చేయబడింది. ఏదైనా తప్పిపోయినా లేదా తప్పుగా ఉన్నా, దయచేసి ఈ పేజీని సవరించండి! + + + +
వ్యవస్థాపకులారా, మీ వ్యాపారాన్ని వేగవంతం చేయడానికి సహాయం కావాలా? [ఫౌండర్స్ సపోర్ట్‌కు వెళ్ళండి](/founders/)
+
+ +## విస్తృత ఇతీరియము పర్యావరణ వ్యవస్థ {#broad-ethereum-ecosystem} + +ఈ కార్యక్రమాలు విస్తృత పరిధిలోని ప్రాజెక్టులకు గ్రాంటులను అందించడం ద్వారా విస్తృత ఇతీరియము పర్యావరణ వ్యవస్థకు మద్దతు ఇస్తాయి. వీటిలో స్కేలబిలిటీ, సంఘం నిర్మాణం, భద్రత, గోప్యత మరియు మరిన్నింటికి పరిష్కారాలు ఉన్నాయి. ఈ గ్రాంట్లు ఏ ఒక్క ఇతీరియము ప్లాట్‌ఫారమ్‌కు ప్రత్యేకమైనవి కావు మరియు మీకు ఖచ్చితంగా తెలియకపోతే ప్రారంభించడానికి ఇది ఒక మంచి ప్రదేశం. + +- [EF పర్యావరణ వ్యవస్థ మద్దతు కార్యక్రమం](https://esp.ethereum.foundation) - _సార్వత్రిక ఉపకరణాలు, మౌలిక సదుపాయాలు, పరిశోధన మరియు ప్రజా ప్రయోజనాలపై ప్రత్యేక దృష్టితో, ఇతీరియముకు ప్రయోజనం చేకూర్చే ఓపెన్ సోర్స్ ప్రాజెక్టులకు నిధులు_ +- [అకడమిక్ గ్రాంట్లు](https://esp.ethereum.foundation/academic-grants) - _ఇతీరియముకు సంబంధించిన అకడమిక్ పనికి మద్దతు ఇవ్వడానికి గ్రాంట్లు_ + +## గ్రాంటు జాబితా అగ్రిగేటర్లు మరియు ప్లాట్‌ఫారమ్‌లు {#grant-list-aggregators} + +ఈ వనరులు ఇతీరియము పర్యావరణ వ్యవస్థ అంతటా వివిధ గ్రాంటు అవకాశాలను సంకలనం చేసి, నిర్వహిస్తాయి, తద్వారా మీ ప్రాజెక్ట్ అవసరాలకు సరిపోయే నిధుల అవకాశాలను కనుగొనడం సులభం అవుతుంది. మీ నిర్దిష్ట నిధుల అవసరాల ఆధారంగా అత్యంత సంబంధిత వనరులను కనుగొనడంలో మీకు సహాయపడటానికి మేము వాటిని వ్యక్తిత్వం ఆధారంగా నిర్వహించాము. + +### గ్రాంటు కోరే వారందరి కోసం: సమగ్ర డైరెక్టరీలు {#comprehensive-directories} + +ఈ సాధారణ ప్లాట్‌ఫారమ్‌లు మొత్తం Web3 స్పేస్‌లో గ్రాంట్ల యొక్క విస్తృత కవరేజీని అందిస్తాయి మరియు నిధుల కోసం చూస్తున్న ఎవరికైనా ఉపయోగకరమైన ప్రారంభ స్థానాలు: + +- [Blockworks Grantfarm](https://blockworks.co/grants/programs) - _Blockworks అన్ని గ్రాంట్లు, RFPలు మరియు బగ్ బౌంటీల యొక్క సమగ్ర డైరెక్టరీని సంకలనం చేసింది._ +- [Blockchain Grants](https://www.blockchaingrants.org/) - _బ్లాక్ చైను మరియు క్రిప్టో గ్రాంట్ల డైరెక్టరీ_ +- [Karma Funding Map](https://gap.karmahq.xyz/funding-map) - అన్ని Web3 గ్రాంటు కార్యక్రమాల డైరెక్టరీ, వారానికి ఒకసారి నవీకరించబడుతుంది + +### డెవలపర్లు మరియు బిల్డర్ల కోసం {#for-developers-and-builders} + +- [Grant Programs Viewer](https://airtable.com/shr86elKgWTSCP4AY) - _గ్రాంటు కార్యక్రమాల పబ్లిక్ Airtable డేటాబేస్_ +- [Web3 Grants Spreadsheet](https://docs.google.com/spreadsheets/d/1c8koZCI-GLnD8MG-eFcXPOBCNu1v8-aXIfwAAvc7AMc/edit#gid=0) - _Web3 గ్రాంటు అవకాశాల గూగుల్ స్ప్రెడ్‌షీట్_ +- [Arbitrum Grants](https://arbitrum.foundation/grants) — Arbitrum DAO మరియు [The Arbitrum Foundation](https://arbitrum.foundation/) + +### DeFi ప్రాజెక్టులు మరియు ఆర్థిక అప్లికేషన్ల కోసం {#for-defi-projects} + +- [LlamaoGrants](https://wiki.defillama.com/wiki/LlamaoGrants) - _DeFi Llama యొక్క గ్రాంటు కార్యక్రమ డైరెక్టరీ_ +- [AlphaGrowth Grants](https://alphagrowth.io/crypto-web3-grants-list) - _క్రిప్టో మరియు Web3 గ్రాంట్ల సమగ్ర జాబితా_ +- [Uniswap Foundation Grants](https://www.uniswapfoundation.org/build) - _Unichain మరియు Uniswap v4 గ్రాంట్లు మరియు DeFi బిల్డర్ల కోసం మద్దతు_ + +### DAO కంట్రిబ్యూటర్లు మరియు పాలన ఆవిష్కర్తల కోసం {#for-dao-contributors} + +సంఘం-ఆధారిత ప్రాజెక్టులు మరియు పాలన ప్రయోగాల కోసం వనరులు: + +- [DAO Grants](https://docs.google.com/spreadsheets/d/1XHc-p_MHNRdjacc8uOEjtPoWL86olP4GyxAJOFO0zxY/edit#gid=0) - _గ్రాంటులను అందించే సంస్థల గూగుల్ స్ప్రెడ్‌షీట్_ +- [MetaGov Database](https://docs.google.com/spreadsheets/d/1e5g-dlWWsK2DZoZGBgfxyfGNSddLk-V7sLEgfPjEhbA/edit#gid=780420708) - _సమగ్ర Web3 గ్రాంట్ల మ్యాప్_ + +### ప్రజా ప్రయోజనాలు మరియు ప్రభావం {#public-goods-and-impact} + +ఈ కార్యక్రమాలు విస్తృత సమాజానికి, ప్రజా ప్రయోజనాలకు మరియు ప్రభావ కార్యక్రమాలకు ప్రయోజనం చేకూర్చే నిధుల ప్రాజెక్టులపై దృష్టి పెడతాయి. వీటిలో గ్రాంటు ప్రదాతలు, అలాగే [క్వాడ్రాటిక్ ఫండింగ్](/defi/#quadratic-funding)తో సహా ఆన్‌చైన్ నిధుల కేటాయింపు యంత్రాంగాలను ఉపయోగించే విరాళాల ప్లాట్‌ఫారమ్‌లు ఉన్నాయి: + +- [Gitcoin](https://www.gitcoin.co/program) - _Gitcoin Grants ఇతీరియము పర్యావరణ వ్యవస్థలో ఓపెన్ సోర్స్ ప్రాజెక్టులు మరియు ప్రజా ప్రయోజనాలకు నిధులు సమకూర్చడానికి బహుళ మూలధన కేటాయింపు యంత్రాంగాలను ఉపయోగిస్తుంది_ +- [Octant](https://octant.app/home) - _సాధారణ ప్రయోజనం మరియు వ్యక్తిగత ఆర్థిక సాధికారతను సమతుల్యం చేసే ప్రజా ప్రయోజనాల నిధుల పర్యావరణ వ్యవస్థ_ +- [Giveth](https://giveth.io/) - _సున్నా అదనపు రుసుములతో మంచి పనుల ప్రాజెక్టుల నుండి ప్రత్యక్ష విరాళాలను ప్రారంభించే క్రిప్టో విరాళాల ప్లాట్‌ఫారమ్_ +- [Artizen](https://artizen.fund/) - _కళ, సైన్స్, టెక్నాలజీ మరియు సంస్కృతి రంగంలో కొత్త ప్రాజెక్టుల కోసం నిధులను సమకూర్చడంలో సృష్టికర్తలకు సహాయపడటం_ +- [Quadratic Accelerator](https://qacc.giveth.io/) - _ప్రజా ప్రయోజనాలకు మేలు చేసే ప్రాజెక్టులకు మద్దతు ఇవ్వడానికి క్వాడ్రాటిక్ ఫండింగ్‌ను ఉపయోగించే స్టార్ట్-అప్ యాక్సిలరేటర్ కార్యక్రమం_ + +## ఇతీరియములో పని {#work-in-ethereum} + +మీ స్వంత ప్రాజెక్టును ప్రారంభించడానికి సిద్ధంగా లేరా? ఇతీరియము పర్యావరణ వ్యవస్థలో పని చేయడానికి మరియు సహకరించడానికి ఉత్సాహభరితమైన వ్యక్తుల కోసం వందలాది కంపెనీలు చురుకుగా చూస్తున్నాయి. మరింత సమాచారం కోసం చూస్తున్నారా? [ఇతీరియముకు సంబంధించిన ఉద్యోగాలను చూడండి](/community/get-involved/#ethereum-jobs) diff --git a/public/content/translations/te/community/language-resources/index.md b/public/content/translations/te/community/language-resources/index.md new file mode 100644 index 00000000000..127d96bedf3 --- /dev/null +++ b/public/content/translations/te/community/language-resources/index.md @@ -0,0 +1,153 @@ +--- +title: "భాషా వనరులు" +description: "ఇతీరియము గురించి తెలుసుకోవడానికి ఆంగ్లేతర వనరులు" +lang: te +--- + +# భాషా వనరులు {#language-resources} + +ఇతీరియము సంఘం ప్రపంచవ్యాప్తంగా ఉంది మరియు ఇందులో లక్షలాది మంది ఆంగ్లేతర మాట్లాడేవారు ఉన్నారు. + +అన్ని భాషలలో విద్యా విషయాలను అందించడం మరియు ప్రపంచం నలుమూలల నుండి ప్రజలను ఇతీరియములోకి తీసుకురావడాన్ని ఒక సవాలుగా మార్చే భాషా అడ్డంకులను అధిగమించడంలో సహాయపడటమే మా లక్ష్యం. + +మీరు మీ మాతృభాషలో చదవడానికి ఇష్టపడితే లేదా ఆంగ్ల భాష మాట్లాడని ఎవరైనా మీకు తెలిస్తే, మీరు కింద ఉపయోగకరమైన ఆంగ్లేతర వనరుల జాబితాను కనుగొనవచ్చు. వందల వేల మంది ఇతీరియము ఔత్సాహికులు వార్తలను పంచుకోవడానికి, ఇటీవలి పరిణామాల గురించి మాట్లాడటానికి, సాంకేతిక సమస్యలపై చర్చించడానికి మరియు భవిష్యత్తును ఊహించుకోవడానికి ఈ ఆన్‌లైన్ ఫోరమ్‌లలో గుమిగూడతారు. + +మీ భాషలో ఏదైనా విద్యా వనరుల గురించి మీకు తెలుసా? జాబితాలో చేర్చడానికి [ఒక సమస్యను తెరవండి](https://github.com/ethereum/ethereum-org-website/issues/new/choose)! + +## Ethereum.org వనరులు {#ethereum-org} + +Ethereum.org 40 కంటే ఎక్కువ భాషల్లోకి స్థానికంగా అనువదించబడింది, దీనిని మీరు ప్రతి పేజీ పైన ఉన్న మా భాషల ఎంపిక మెనూని ఉపయోగించి కనుగొనవచ్చు. + +![భాష ఎంపిక మెనూ](./language-selector-menu.png) + +మీరు ద్విభాషి అయితే మరియు మేము ఎక్కువ మందికి చేరువ కావడానికి సహాయం చేయాలనుకుంటే, మీరు [ethereum.org అనువాద కార్యక్రమంలో](/contributing/translation-program/#translation-program) కూడా పాలుపంచుకుని, వెబ్‌సైట్‌ను అనువదించడంలో మాకు సహాయపడగలరు. + +## సంఘం వనరులు {#community} + +### బ్రెజిలియన్ పోర్చుగీస్ {#br-pt} + +**వార్తలు** + +- [BeInCrypto](http://www.beincrypto.com.br) - క్రిప్టోకరెన్సీ వార్తలు మరియు వ్యాసాలు, బ్రెజిల్‌లో అందుబాటులో ఉన్న ఎక్స్‌ఛేంజ్‌ల జాబితాతో సహా +- [Cointelegraph](http://cointelegraph.com.br/category/analysis) - Cointelegraph యొక్క బ్రెజిలియన్ వెర్షన్, ఒక ప్రధాన క్రిప్టోకరెన్సీ వార్తా సంస్థ +- [Livecoins](http://www.livecoins.com.br/ethereum) - క్రిప్టోకరెన్సీ వార్తలు మరియు ఉపకరణాలు +- [Seudinheiro](http://www.seudinheiro.com/criptomoedas/) - క్రిప్టోకరెన్సీ వార్తలు మరియు నివేదికలు +- [Modular Crypto](https://modularcrypto.xyz/) - క్రిప్టోకరెన్సీ వార్తలు మరియు విద్యాపరమైన వ్యాసాలు + +**విద్య** + +- [web3dev](https://www.web3dev.com.br/) - వెబ్ 3 డెవలపర్‌ల కోసం కంటెంట్ హబ్ మరియు డిస్కార్డ్ సంఘం. +- [Web3Brasil](https://github.com/web3brasil/web3brasil) - Web3 మరియు DeFi నేర్చుకోవడానికి వనరులు +- [CriptoFacil](http://www.criptofacil.com/ultimas-noticias/) - క్రిప్టోకరెన్సీ వార్తలు మరియు విద్య, 'ప్రారంభకులకు ఇతీరియము' మరియు 'ప్రారంభకులకు DeFi'తో సహా +- [CriptoAtivos](http://www.criptoativos.wiki.br/) - క్రిప్టోకరెన్సీ రంగం నుండి అంతర్దృష్టులు, విద్య మరియు బ్లాగ్ +- [Cointimes](http://www.cointimes.com.br/) - క్రిప్టోకరెన్సీ వార్తలు మరియు విద్య +- [Web3 స్టార్టర్ ప్యాక్](https://docs.google.com/document/d/1X8PSTFH7FTw9J-gbKWM6Y430SWCBT8d4t4pJgFQHJ8E/) - తరచుగా అడిగే మరియు ప్రాథమిక క్రిప్టో ప్రశ్నలకు సమాధానమిచ్చే మార్గదర్శి + +### చైనీస్ {#zh} + +**సాధారణ వనరులు** + +- [Ethereum.cn](https://www.ethereum.cn/) - ఏకాభిప్రాయం లేయర్ అప్‌గ్రేడ్, అన్ని కోర్ డెవ్ మీటింగ్ నోట్స్, లేయర్ 2 మొదలైనవాటిని కవర్ చేసే, కమ్యూనిటీచే నిర్వహించబడే కంటెంట్. +- [EthFans](https://github.com/editor-Ajian/EthFans.org-annual-collected-works/) - ప్రాథమిక అంశాల నుండి అధునాతన ఇతీరియము అంశాల వరకు ప్రతిదీ నేర్చుకోండి +- [Unitimes](https://mp.weixin.qq.com/s/tvloZSDBSOQN9zDQj_91kA) - ఇతీరియము, DeFi, NFT, Web3-సంబంధిత జ్ఞానాన్ని కవర్ చేసే, కమ్యూనిటీ నిర్వహణలో ఉన్న కంటెంట్ +- [123ETH](https://123eth.org/) - ఇతీరియము పర్యావరణ వ్యవస్థకు ఒక పోర్టల్ +- [Zhen Xiao](http://zhenxiao.com/blockchain/) - క్రిప్టోకరెన్సీ మరియు దాని అనువర్తనాల గురించి ఉచిత ఆన్‌లైన్ కోర్సులు +- [ఇతీరియము వైట్‌పేపర్](/zh/whitepaper/) - ఇతీరియము వైట్‌పేపర్ యొక్క చైనీస్ వెర్షన్ + +**ఇతీరియము పర్యావరణ వ్యవస్థ** + +- [ETHPlanet](https://www.ethplanet.org/) - ఆన్‌లైన్ మరియు వ్యక్తిగత హ్యాకథాన్‌లు, విశ్వవిద్యాలయ విద్యార్థులకు శిక్షణను అందిస్తాయి +- [PrimitivesLane](https://www.primitiveslane.org/) - బ్లాక్‌చైన్ టెక్నాలజీపై దృష్టి సారించిన లాభాపేక్షలేని పరిశోధనా బృందం +- [Ethereum అనువాద సంఘం CN](https://www.notion.so/Ethereum-Translation-Community-CN-05375fe0a94c4214acaf90f42ba40171) - విద్యాపరమైన ఇతీరియము కంటెంట్‌ను అనువదించడానికి అంకితమైన ఒక సంఘం + +**డెవలపర్‌ల కోసం** + +- [DappLearning](https://github.com/Dapp-Learning-DAO/Dapp-Learning) - ప్రతి వారం ప్రధాన స్రవంతి డాప్ ప్రాజెక్ట్‌లను అధ్యయనం చేయడానికి మరియు ఆలోచనలు మరియు వ్యాఖ్యలను పంచుకోవడానికి ఒక లెర్నింగ్ గ్రూప్ +- [LearnBlockchain](https://learnblockchain.cn/) - బ్లాక్‌చైన్ టెక్నాలజీ గురించి సమాచారాన్ని పంచుకునే డెవలపర్‌ల కోసం ఒక సంఘం + +**క్రిప్టోగ్రఫీ పరిశోధకుల కోసం** + +- [SecbitLabs](https://mp.weixin.qq.com/s/69_tqBJpr_sbaKtR1sBRMw) - క్రిప్టోగ్రఫీ, భద్రత మొదలైనవాటిని వివరించే ఒక WeChat ఖాతా. +- [Sparkbyte](https://mp.weixin.qq.com/s/9KgKTc_jtJ7bWKdbNPoqvQ) - zk టెక్నాలజీని వివరించే ఒక WeChat ఖాతా + +### చెక్ {#cs} + +- [Gwei.cz](https://gwei.cz) - Web3 చుట్టూ ఉన్న స్థానిక సంఘం, విద్యా విషయాలను సృష్టిస్తుంది, ఆన్‌లైన్ మరియు వ్యక్తిగత ఈవెంట్‌లను నిర్వహిస్తుంది +- [Gwei.cz Příručka](https://prirucka.gwei.cz/) - ప్రారంభకులకు ఇతీరియము మార్గదర్శి +- [DAO Příručka](https://dao.gwei.cz/) - DAOల కోసం ప్రారంభకుల మార్గదర్శి +- [మాస్టరింగ్ ఇతీరియము](https://ipfs.io/ipfs/bafybeidvuxhnsgfx3tncpfxheqglkjwmdxclknlgd7s7qggd2a6bzgb27m) - చెక్ భాషలో మాస్టరింగ్ ఇతీరియము + +### ఫ్రెంచ్ {#fr} + +- [Ethereum France](https://www.ethereum-france.com/) - ఇతీరియము ఫ్రాన్స్ ఈవెంట్‌లను నిర్వహిస్తుంది, కంటెంట్‌ను సృష్టిస్తుంది మరియు ఇతీరియము చుట్టూ చర్చలను ప్రోత్సహిస్తుంది +- [Ethereum.fr](https://ethereum.fr/) - ఇతీరియము వార్తలు మరియు విద్య +- [BanklessFR](https://banklessfr.substack.com/) - ఫ్రెంచ్ భాషలో బ్యాంక్‌లెస్ వార్తాలేఖ +- [CryptoFR](https://cryptofr.com/category/44/ethereum-general) - ఇతీరియము సబ్‌పేజీతో ఉన్న క్రిప్టోకరెన్సీ ఫోరమ్ + +### జర్మన్ {#de} + +- [Microsoft Learn (Solidity)](https://docs.microsoft.com/de-de/learn/modules/blockchain-learning-solidity/) - సాలిడిటీని ఉపయోగించడం +- [Microsoft Learn (స్మార్ట్ కాంట్రాక్టులు)](https://docs.microsoft.com/de-de/learn/modules/blockchain-solidity-ethereum-smart-contracts/) - సాలిడిటీతో ఇతీరియము స్మార్ట్ కాంట్రాక్టులను వ్రాయడం +- [Microsoft Learn (ఇతీరియము నెట్‌వర్క్‌లు)](https://docs.microsoft.com/de-de/learn/modules/blockchain-ethereum-networks/) - ఇతీరియము నెట్‌వర్క్‌లకు కనెక్ట్ చేయడం మరియు అమలు చేయడం +- [Microsoft Learn (బ్లాక్‌చెయిన్‌లు)](https://docs.microsoft.com/de-de/learn/paths/ethereum-blockchain-development/) - బ్లాక్‌చైన్ అభివృద్ధిలోకి ప్రవేశం + +### హీబ్రూ {#he} + +- [Udi Wertheimer - బిట్‌కాయినర్లు ఇతీరియము నుండి ఏమి నేర్చుకోవచ్చు](https://www.cryptojungle.co.il/udi-wertheimer-what-bitcoiners-can-learn-from-ethereum/) +- [Omer Greismen (OpenZeppelin) - మేము 15 బిలియన్ డాలర్ల స్మార్ట్ కాంట్రాక్ట్ హ్యాక్‌ను ఎలా నిరోధించాము](https://www.cryptojungle.co.il/omer-greisman-openzeppelin/) +- [Shy Datika (INX) - టోకెనైజేషన్ మరియు సెక్యూరిటీల భవిష్యత్తు, ఇతీరియము ఒక సెక్యూరిటీనా కాదా అనే దానితో సహా](https://www.cryptojungle.co.il/shy-datika-tokenization/) +- [Roy Confino (Lemonade) - ఇన్సూరెన్స్ @ ఇతీరియము](https://www.cryptojungle.co.il/roy-confino-insurance/) +- [Idan Ofrat (Fireblocks) - సంస్థాగత స్వీకరణ](https://www.cryptojungle.co.il/idan-ofrat-fireblocks/) +- [Gal Weizman (MetaMask) - MetaMask అంటే ఏమిటి](https://www.cryptojungle.co.il/gal-weizman-metamask/) +- [Dror Aviely (Consensys) - ఇతీరియము యొక్క కేంద్రం](https://www.cryptojungle.co.il/dror-aviely-ethereum-center/) +- [Nir Rozin - క్రిప్టోపంక్‌గా ఉండటం](https://www.cryptojungle.co.il/nir-rozin-cryptopunk/) +- [Adan Kedem - గేమింగ్ & మెటావర్స్](https://www.cryptojungle.co.il/adan-kedem-web3-gaming/) +- [Uri Kolodny (Starkware) - ఇతీరియము మరియు బ్లాక్‌చైన్ లేయర్లు](https://www.cryptojungle.co.il/uri-kolodny-starkware/) +- [Udi Wertheimer - ఇతీరియము 2.0 వర్సెస్ పోటీ](https://www.cryptojungle.co.il/udi-on-eth2/) +- [Ben Samocha (myself) - ఇతీరియము 2.0 - ఒక అవకాశమా?](https://www.cryptojungle.co.il/etherurm2-week-summary/) +- [Alon Muroch (Bloxstaking) - ఇతీరియము 2.0 అంటే ఏమిటి?](https://www.cryptojungle.co.il/alon-moroch-eth2/) +- [Eilon Aviv (Collider Ventures) - ఇతీరియము 2.0తో ఏమి తప్పు జరగవచ్చు](https://www.cryptojungle.co.il/eilon-aviv-eth2-0/) +- [Eilon Aviv (Collider Ventures) - మనకు ఇతీరియము 2.0 ఎందుకు అవసరం](https://www.cryptojungle.co.il/eilon-aviv-ethereum-2-0/) + +### ఇటాలియన్ {#it} + +- [Ethereum Italia](https://www.ethereum-italia.it/) - స్మార్ట్ కాంట్రాక్టులు మరియు బ్లాక్‌చైన్ టెక్నాలజీపై దృష్టి సారించే ఇతీరియము విద్య, ఈవెంట్‌లు మరియు వార్తలు +- [Ethereum Italia Podcast](https://www.ethereum-italia.it/podcast/) - ఇటాలియన్ భాషలో ఇతీరియము పోడ్కాస్ట్ +- [Microsoft Learn (Solidity)](https://docs.microsoft.com/it-it/learn/modules/blockchain-learning-solidity/) - సాలిడిటీని ఎలా ఉపయోగించాలో నేర్చుకోండి +- [Microsoft Learn (స్మార్ట్ కాంట్రాక్టులు)](https://docs.microsoft.com/it-it/learn/modules/blockchain-solidity-ethereum-smart-contracts/) - సాలిడిటీని ఉపయోగించి స్మార్ట్ కాంట్రాక్టులు వ్రాయడం గురించి తెలుసుకోండి +- [Microsoft Learn (డాప్స్)](https://docs.microsoft.com/it-it/learn/modules/blockchain-create-ui-decentralized-apps/) - వికేంద్రీకృత అప్లికేషన్‌లతో యూజర్ ఇంటర్‌ఫేస్‌ను సృష్టించండి + +### జపనీస్ {#ja} + +- [Japan Virtual and Crypto assets Exchange Association](https://jvcea.or.jp/) +- [Japan Cryptoasset Business Association](https://cryptocurrency-association.org/) +- [బ్లాక్‌చైన్ అభివృద్ధితో ప్రారంభించండి - నేర్చుకోండి | Microsoft Docs](https://docs.microsoft.com/ja-jp/learn/paths/ethereum-blockchain-development/) - ఈ లెర్నింగ్ పాత్ మీకు బ్లాక్‌చైన్‌ను మరియు ఇతీరియము ప్లాట్‌ఫామ్‌లో అభివృద్ధిని పరిచయం చేస్తుంది +- [మాస్టరింగ్ ఇతీరియము](https://www.oreilly.co.jp/books/9784873118963/) - జపనీస్ భాషలో మాస్టరింగ్ ఇతీరియము +- [హ్యాండ్స్-ఆన్ స్మార్ట్ కాంట్రాక్ట్ డెవలప్‌మెంట్ విత్ సాలిడిటీ అండ్ ఇతీరియము](https://www.oreilly.co.jp/books/9784873119342/) - జపనీస్ భాషలో సాలిడిటీ మరియు ఇతీరియముతో హ్యాండ్స్-ఆన్ స్మార్ట్ కాంట్రాక్ట్ డెవలప్‌మెంట్ + +### రష్యన్ {#ru} + +- [Cyber Academy](https://cyberacademy.dev) - వెబ్3 బిల్డర్‌ల కోసం విద్యా వేదిక +- [Forklog](https://forklog.com) - సాధారణంగా క్రిప్టో, ప్రస్తుత టెక్నాలజీలు మరియు వివిధ బ్లాక్‌చైన్‌ల భవిష్యత్ అప్‌గ్రేడ్‌ల గురించి వార్తలు మరియు విద్యాపరమైన వ్యాసాలు +- [BeInCrypto](https://ru.beincrypto.com) - క్రిప్టోలోని ప్రతి దాని గురించి సరళమైన వివరణలతో వార్తలు, క్రిప్టో ధర విశ్లేషణ మరియు సాంకేతికేతర వ్యాసాలు + +### స్పానిష్ {#es} + +- [Ethereum Madrid](https://ethereummadrid.com/) - బ్లాక్‌చైన్, DeFi, మరియు పాలన కోర్సులు, ఈవెంట్‌లు మరియు బ్లాగ్ +- [Cointelegraph](https://es.cointelegraph.com/ethereum-for-beginners) - స్పానిష్ భాషలో ప్రారంభకులకు ఇతీరియము మార్గదర్శి +- [Tutoriales online](https://tutoriales.online/curso/solidity) - సాలిడిటీ మరియు ఇతీరియములో ప్రోగ్రామింగ్ నేర్చుకోండి +- [Curso Introducción a Ethereum Development](https://youtube.com/playlist?list=PLTqiwJDd_R8y9pfUBjhkVa1IDMwyQz-fU) - సాలిడిటీ ప్రాథమిక అంశాలు, మీ మొదటి స్మార్ట్ కాంట్రాక్ట్ యొక్క టెస్టింగ్ మరియు అమలు +- [Curso Introducción a Seguridad y Hacking en Ethereum](https://youtube.com/playlist?list=PLTqiwJDd_R8yHOvteko_DmUxUTMHnlfci) - నిజమైన స్మార్ట్ కాంట్రాక్టులలో సాధారణ బలహీనతలు మరియు భద్రతా సమస్యలను అర్థం చేసుకోండి +- [Curso Introducción a DeFi Development](https://youtube.com/playlist?list=PLTqiwJDd_R8zZiP9_jNdaPqA3HqoW2lrS) - సాలిడిటీలో DeFi స్మార్ట్ కాంట్రాక్టులు ఎలా పనిచేస్తాయో తెలుసుకోండి మరియు మీ స్వంత ఆటోమేటెడ్ మార్కెట్ మేకర్‌ను సృష్టించండి +- [Cryptoversidad](https://www.youtube.com/c/Cryptoversidad) - ప్రారంభ స్థాయి నుండి ఉన్నత స్థాయి వరకు సాంకేతికేతర బ్లాక్‌చైన్ విద్య. క్రిప్టో మరియు ఇతీరియము గురించి ప్రతిదీ నేర్చుకోండి. + +### టర్కిష్ {#tr} + +- [BTK Akademi](https://www.btkakademi.gov.tr/portal/course/blokzincir-ve-kripto-paralar-10569#!/about) - బ్లాక్‌చైన్ మరియు క్రిప్టోకరెన్సీ-కేంద్రీకృత కోర్సు +- [గొప్ప పునఃనామకరణం: Eth2కి ఏమైంది?](https://miningturkiye.org/konu/ethereum-madenciligi-bitiyor-mu-onemli-gelisme.655/) - 'Eth2' పరిభాష నుండి వైదొలగడాన్ని వివరిస్తూ, గొప్ప పునఃనామకరణ బ్లాగ్ పోస్ట్ యొక్క టర్కిష్ అనువాదం + +### వియత్నామీస్ {#vi} + +- [Tino Group](https://wiki.tino.org/ethereum-la-gi/) - ఇతీరియము, డాప్స్, వాలెట్లు మరియు తరచుగా అడిగే ప్రశ్నల యొక్క అవలోకనం +- [Tap Chi Bitcoin](https://tapchibitcoin.io/tap-chi/tin-tuc-ethereum-eth) - ఇతీరియము వార్తలు మరియు విద్య కోసం ఉపపేజీలతో ఉన్న వెబ్ ప్లాట్‌ఫారమ్ +- [Coin68](https://coin68.com/ethereum-tieu-diem/) - ఇతీరియము వార్తలు మరియు విద్యా కంటెంట్‌తో కూడిన క్రిప్టోకరెన్సీ పోర్టల్ diff --git a/public/content/translations/te/community/online/index.md b/public/content/translations/te/community/online/index.md new file mode 100644 index 00000000000..fb45fb7130a --- /dev/null +++ b/public/content/translations/te/community/online/index.md @@ -0,0 +1,74 @@ +--- +title: "ఆన్లైన్‌లో కమ్యూనిటీలు" +description: "ఇతీరియము ఉత్సాహవంతులు చర్చించడానికి మరియు సహకరించడానికి సమావేశమయ్యే ఆన్‌లైన్ ఫోరమ్‌లు, చాట్ రూమ్‌లు మరియు సోషల్ మీడియా కమ్యూనిటీలను కనుగొనండి." +lang: te +--- + +# ఆన్‌లైన్ కమ్యూనిటీలు {#online-communities} + +వందల వేల మంది ఇతీరియము ఔత్సాహికులు వార్తలను పంచుకోవడానికి, ఇటీవలి పరిణామాల గురించి మాట్లాడటానికి, సాంకేతిక సమస్యలపై చర్చించడానికి మరియు భవిష్యత్తును ఊహించుకోవడానికి ఈ ఆన్‌లైన్ ఫోరమ్‌లలో గుమిగూడతారు. + +## జాబితా విధానం {#listing-policy} + +జాబితా చేయబడిన కమ్యూనిటీల సమగ్రతను మరియు విలువను కాపాడటానికి, అర్హతను నిర్ణయించడానికి ethereum.org ఒక కఠినమైన విధానాన్ని అనుసరిస్తుంది: + +### అర్హత ప్రమాణాలు {#eligibility-criteria} + +- **సంబంధం**: కమ్యూనిటీ నేరుగా ఇతీరియము మరియు దాని పర్యావరణ వ్యవస్థతో సంబంధం కలిగి ఉండాలి. +- **కార్యాచరణ స్థాయి**: కమ్యూనిటీ సాధారణ పరస్పర చర్యలు, పోస్ట్‌లు లేదా చర్చలతో చురుకుగా ఉండాలి. నిద్రాణమైన లేదా నిష్క్రియ కమ్యూనిటీలు తొలగించబడవచ్చు. +- **అందరినీ కలుపుకుపోవడం**: కమ్యూనిటీ వైవిధ్యాన్ని గౌరవించే మరియు అన్ని నేపథ్యాల ప్రజల నుండి భాగస్వామ్యాన్ని ప్రోత్సహించే స్వాగత వాతావరణాన్ని పెంపొందించాలి. +- **వాణిజ్యేతర దృష్టి**: జాబితాలు వాణిజ్య లేదా ప్రచార వేదికల కంటే కమ్యూనిటీ-నడిచే ప్రదేశాల కోసం ఉద్దేశించబడ్డాయి. + +### కంటెంట్ మార్గదర్శకాలు {#content-guidelines} + +- **తగిన కంటెంట్**: కమ్యూనిటీలు వాటి స్వంత మోడరేషన్ మార్గదర్శకాలను కలిగి ఉండాలి, స్పామ్, విద్వేషపూరిత ప్రసంగం, వేధింపులు లేదా చట్టవిరుద్ధ కార్యకలాపాలను ప్రోత్సహించే ఏదైనా కంటెంట్‌ను నివారించాలి. +- **భాష**: ఆంగ్లం ప్రాథమిక భాష అయినప్పటికీ, అందరినీ కలుపుకొనిపోయే మరియు గౌరవప్రదమైన వాతావరణాన్ని కొనసాగించినంత కాలం ఇతర భాషలలోని కమ్యూనిటీలను సమర్పించడానికి ప్రోత్సహిస్తారు. +- **పారదర్శకత**: కమ్యూనిటీ యొక్క ఉద్దేశ్యం, నియమాలు మరియు మోడరేటర్‌ల గురించి స్పష్టమైన సమాచారం సభ్యులకు అందుబాటులో ఉండాలి. + +### ఇతర సిఫార్సులు {#other-recommendations} + +- **అందుబాటు**: సైన్-అప్ లేదా రిజిస్ట్రేషన్ అవసరం లేకుండా ప్రతి ఒక్కరూ చదవడానికి కమ్యూనిటీ ఫోరమ్‌లు అందుబాటులో ఉండాలి. +- **డిస్కార్డ్ సర్వర్ ఆహ్వానాలు**: నమ్మకమైన డిస్కార్డ్ సర్వర్ ఆహ్వానాలను మాత్రమే ethereum.orgకు జోడించాలని సిఫార్సు చేయబడింది. ఉత్తమంగా, ఈ ఆహ్వానాలు వెబ్‌సైట్‌లోని కమ్యూనిటీ పేజీకి (ఉదా., [ethglobal.com/discord](https://ethglobal.com/discord)) లింక్ చేయాలి లేదా అధికారిక URL నుండి ఉండాలి (ఉదా., [discord.gg/ethstaker](https://discord.gg/ethstaker) లేదా [discord.com/invite/ethstaker](https://discord.com/invite/ethstaker)). + +ఈ మార్గదర్శకాల ఆధారంగా ఒక కమ్యూనిటీని జోడించాలని లేదా తీసివేయాలని మీరు భావిస్తే, దయచేసి [మా GitHub రిపోజిటరీలో ఒక ఇష్యూని తెరవండి](https://github.com/ethereum/ethereum-org-website/issues). + +## ఫోరమ్‌లు {#forums} + +r/ethereum - ఇతీరియముకు సంబంధించిన అన్ని విషయాలు +r/ethfinance - DeFiతో సహా ఇతీరియము యొక్క ఆర్థిక వైపు +r/ethdev - ఇతీరియము అభివృద్ధిపై దృష్టి కేంద్రీకరించబడింది +r/ethtrader - ట్రెండ్‌లు & మార్కెట్ విశ్లేషణ +r/ethstaker - ఇతీరియములో స్టేకింగ్ చేయడానికి ఆసక్తి ఉన్న వారందరికీ స్వాగతం +Fellowship of Ethereum Magicians - ఇతీరియములోని సాంకేతిక ప్రమాణాల చుట్టూ కేంద్రీకృతమైన కమ్యూనిటీ +Ethereum Stackexchange - ఇతీరియము డెవలపర్‌ల కోసం చర్చ మరియు సహాయం +Ethereum Research - క్రిప్టోఎకనామిక్ పరిశోధన కోసం అత్యంత ప్రభావవంతమైన మెసేజ్‌బోర్డ్ + +## చాట్ రూమ్‌లు {#chat-rooms} + +Ethereum Cat Herders - ఇతీరియము అభివృద్ధికి ప్రాజెక్ట్ మేనేజ్‌మెంట్ మద్దతును అందించడం చుట్టూ కేంద్రీకృతమైన కమ్యూనిటీ +Ethereum Hackers - ETHGlobal ద్వారా నడపబడుతున్న డిస్కార్డ్ చాట్: ప్రపంచవ్యాప్తంగా ఉన్న ఇతీరియము హ్యాకర్‌ల కోసం ఒక ఆన్‌లైన్ కమ్యూనిటీ +CryptoDevs - ఇతీరియము అభివృద్ధిపై దృష్టి సారించిన డిస్కార్డ్ కమ్యూనిటీ +EthStaker Discord - ఇప్పటికే ఉన్న మరియు సంభావ్య స్టేకర్‌ల కోసం కమ్యూనిటీ-నడిపే మార్గదర్శకత్వం, విద్య, మద్దతు మరియు వనరులు +Ethereum.org website team - ఆగి, ethereum.org వెబ్ అభివృద్ధి మరియు డిజైన్ గురించి బృందంతో మరియు కమ్యూనిటీలోని వ్యక్తులతో చాట్ చేయండి +Matos Discord - వెబ్3 సృష్టికర్తల కమ్యూనిటీ, ఇక్కడ బిల్డర్‌లు, పారిశ్రామిక ప్రముఖులు మరియు ఇతీరియము ఉత్సాహవంతులు సమావేశమవుతారు. మేము వెబ్3 అభివృద్ధి, డిజైన్ మరియు సంస్కృతిపై మక్కువ కలిగి ఉన్నాము. మాతో కలిసి నిర్మించండి. +Solidity Gitter - సాలిడిటీ అభివృద్ధి కోసం చాట్ (Gitter) +Solidity Matrix - సాలిడిటీ అభివృద్ధి కోసం చాట్ (Matrix) +Ethereum Stack Exchange - ప్రశ్న మరియు జవాబు ఫోరమ్ +Peera Community Forum - వికేంద్రీకృత ప్రశ్న మరియు జవాబు ఫోరమ్ + +## YouTube మరియు X (గతంలో Twitter) {#youtube-and-twitter} + +Ethereum Foundation - Ethereum Foundation నుండి తాజా విషయాలతో అప్‌డేట్‌గా ఉండండి +@ethereum - కమ్యూనిటీ కోసం ప్రధాన ఇతీరియము ఖాతా +@ethereumfndn - Ethereum Foundation యొక్క అధికారిక ఖాతా +@ethdotorg - ఇతీరియముకు పోర్టల్, మన పెరుగుతున్న ప్రపంచ కమ్యూనిటీ కోసం నిర్మించబడింది + + + + +
+ + DAOల గురించి మరింత తెలుసుకోండి + +
+
diff --git a/public/content/translations/te/community/research/index.md b/public/content/translations/te/community/research/index.md new file mode 100644 index 00000000000..6ca19eb5918 --- /dev/null +++ b/public/content/translations/te/community/research/index.md @@ -0,0 +1,399 @@ +--- +title: "ఇతీరియము పరిశోధన యొక్క క్రియాశీల రంగాలు" +description: "బహిరంగ పరిశోధన యొక్క వివిధ రంగాలను అన్వేషించండి మరియు ఎలా పాలుపంచుకోవాలో తెలుసుకోండి." +lang: te +--- + +# ఇతీరియము పరిశోధన యొక్క క్రియాశీల రంగాలు {#active-areas-of-ethereum-research} + +ఇతీరియము యొక్క ప్రాథమిక బలాలలో ఒకటి, ఒక క్రియాశీల పరిశోధన మరియు ఇంజనీరింగ్ సంఘం దానిని నిరంతరం మెరుగుపరుస్తూ ఉండటం. ప్రపంచవ్యాప్తంగా చాలా మంది ఉత్సాహభరితమైన, నైపుణ్యం కలిగిన వ్యక్తులు ఇతీరియములోని అత్యుత్తమ సమస్యలకు తమను తాము అన్వయించుకోవాలని కోరుకుంటారు, కానీ ఆ సమస్యలు ఏమిటో తెలుసుకోవడం ఎల్లప్పుడూ సులభం కాదు. ఈ పేజీ ఇతీరియము యొక్క అత్యాధునిక సాంకేతికతకు ఒక ముసాయిదా మార్గదర్శిగా కీలక క్రియాశీల పరిశోధన రంగాలను వివరిస్తుంది. + +## ఇతీరియము పరిశోధన ఎలా పనిచేస్తుంది {#how-ethereum-research-works} + +ఇతీరియము పరిశోధన బహిరంగంగా మరియు పారదర్శకంగా ఉంటుంది, ఇది [వికేంద్రీకృత విజ్ఞాన (DeSci)](https://hackernoon.com/desci-decentralized-science-as-our-chance-to-recover-the-real-science) సూత్రాలను కలిగి ఉంటుంది. ఉదాహరణకు, ఎగ్జిక్యూటబుల్ నోట్‌బుక్‌ల ద్వారా పరిశోధన ఉపకరణాలు మరియు అవుట్‌పుట్‌లను వీలైనంత బహిరంగంగా మరియు ఇంటరాక్టివ్‌గా మార్చడం ఇక్కడి సంస్కృతి. ఇతీరియము పరిశోధన వేగంగా కదులుతుంది, పీర్ రివ్యూ రౌండ్‌ల తర్వాత సాంప్రదాయ ప్రచురణల ద్వారా సంఘానికి చేరే బదులు [ethresear.ch](https://ethresear.ch/) వంటి ఫోరమ్‌లలో కొత్త పరిశోధనలు బహిరంగంగా పోస్ట్ చేయబడతాయి మరియు చర్చించబడతాయి. + +## సాధారణ పరిశోధన వనరులు {#general-research-resources} + +నిర్దిష్ట అంశంతో సంబంధం లేకుండా, [ethresear.ch](https://ethresear.ch) మరియు [Eth R&D డిస్కార్డ్ ఛానెల్](https://discord.gg/qGpsxSA)లో ఇతీరియము పరిశోధనపై విస్తారమైన సమాచారం లభిస్తుంది. ఇతీరియము పరిశోధకులు తాజా ఆలోచనలు మరియు అభివృద్ధి అవకాశాలను చర్చించే ప్రాథమిక ప్రదేశాలు ఇవి. + +[DelphiDigital](https://members.delphidigital.io/reports/the-hitchhikers-guide-to-ethereum) ద్వారా మే 2022లో ప్రచురించబడిన ఈ నివేదిక ఇతీరియము మార్గసూచి యొక్క మంచి అవలోకనాన్ని అందిస్తుంది. + +## నిధుల మూలాలు {#sources-of-funding} + +మీరు ఇతీరియము పరిశోధనలో పాలుపంచుకోవచ్చు మరియు దాని కోసం చెల్లింపు పొందవచ్చు! ఉదాహరణకు, [ఇతీరియము ఫౌండేషన్](/foundation/) ఇటీవల [అకడమిక్ గ్రాంట్స్ ఫండింగ్ రౌండ్](https://esp.ethereum.foundation/academic-grants)ను నిర్వహించింది. మీరు [ఇతీరియము గ్రాంట్ల పేజీ](/community/grants/)లో క్రియాశీల మరియు రాబోయే నిధుల అవకాశాల గురించి సమాచారాన్ని కనుగొనవచ్చు. + +## ప్రోటోకాల్ పరిశోధన {#protocol-research} + +ప్రోటోకాల్ పరిశోధన ఇతీరియము యొక్క బేస్ లేయర్‌కు సంబంధించినది - నోడ్స్ ఎలా కనెక్ట్ అవుతాయి, కమ్యూనికేట్ చేస్తాయి, ఇతీరియము డేటాను మార్పిడి చేస్తాయి మరియు నిల్వ చేస్తాయి మరియు బ్లాక్‌చైను యొక్క స్థితి గురించి ఏకాభిప్రాయానికి వస్తాయి అని నిర్వచించే నియమాల సమితి. ప్రోటోకాల్ పరిశోధన రెండు ఉన్నత-స్థాయి వర్గాలుగా విభజించబడింది: ఏకాభిప్రాయం మరియు అమలు. + +### ఏకాభిప్రాయం {#consensus} + +ఏకాభిప్రాయ పరిశోధన [ఇతీరియము యొక్క ప్రూఫ్-ఆఫ్-స్టేక్ మెకానిజం](/developers/docs/consensus-mechanisms/pos/)కు సంబంధించినది. కొన్ని ఉదాహరణ ఏకాభిప్రాయ పరిశోధన అంశాలు: + +- బలహీనతలను గుర్తించడం మరియు సరిచేయడం; +- క్రిప్టోఎకనామిక్ భద్రతను లెక్కించడం; +- క్లయింట్ అమలుల భద్రత లేదా పనితీరును పెంచడం; +- మరియు తేలికపాటి క్లయింట్‌లను అభివృద్ధి చేయడం. + +భవిష్యత్ పరిశోధనతో పాటు, సింగిల్ స్లాట్ ఫైనాలిటీ వంటి ప్రోటోకాల్ యొక్క కొన్ని ప్రాథమిక పునఃరూపకల్పనలు, ఇతీరియముకు గణనీయమైన మెరుగుదలలను అనుమతించడానికి పరిశోధించబడుతున్నాయి. అంతేకాకుండా, ఏకాభిప్రాయం క్లయింట్ల మధ్య పీర్-టు-పీర్ నెట్‌వర్కింగ్ యొక్క సామర్థ్యం, భద్రత మరియు పర్యవేక్షణ కూడా ముఖ్యమైన పరిశోధన అంశాలు. + +#### నేపథ్య పఠనం {#background-reading} + +- [ప్రూఫ్-ఆఫ్-స్టేక్‌కు పరిచయం](/developers/docs/consensus-mechanisms/pos/) +- [కాస్పర్-FFG పేపర్](https://arxiv.org/abs/1710.09437) +- [కాస్పర్-FFG వివరణకర్త](https://medium.com/unitychain/intro-to-casper-ffg-9ed944d98b2d) +- [గాస్పర్ పేపర్](https://arxiv.org/abs/2003.03052) + +#### ఇటీవలి పరిశోధన {#recent-research} + +- [Ethresear.ch ఏకాభిప్రాయం](https://ethresear.ch/c/consensus/29) +- [లభ్యత/ఫైనాలిటీ గందరగోళం](https://arxiv.org/abs/2009.04987) +- [సింగిల్ స్లాట్ ఫైనాలిటీ](https://ethresear.ch/t/a-model-for-cumulative-committee-based-finality/10259) +- [ప్రపోజర్-బిల్డర్ విభజన](https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance) + +### అమలు {#execution} + +ఎగ్జిక్యూషన్ లేయర్ లావాదేవీలను అమలు చేయడం, [ఎథేరియం వర్చువల్ మషీన్ (EVM)](/developers/docs/evm/) ను నడపడం మరియు ఏకాభిప్రాయం లేయర్‌కు పంపడానికి ఎగ్జిక్యూషన్ పేలోడ్‌లను రూపొందించడం వంటి పనులకు సంబంధించినది. అనేక క్రియాశీల పరిశోధన రంగాలు ఉన్నాయి, వాటిలో: + +- తేలికపాటి క్లయింట్ మద్దతును నిర్మించడం; +- గ్యాస్ పరిమితులపై పరిశోధన; +- మరియు కొత్త డేటా నిర్మాణాలను (ఉదా., వెర్కిల్ ట్రైస్) పొందుపరచడం. + +#### నేపథ్య పఠనం {#background-reading-1} + +- [EVM కు పరిచయం](/developers/docs/evm) +- [Ethresear.ch ఎగ్జిక్యూషన్ లేయర్](https://ethresear.ch/c/execution-layer-research/37) + +#### ఇటీవలి పరిశోధన {#recent-research-1} + +- [డేటాబేస్ ఆప్టిమైజేషన్లు](https://github.com/ledgerwatch/erigon/blob/devel/docs/programmers_guide/db_faq.md) +- [స్టేట్ గడువు ముగింపు](https://notes.ethereum.org/@vbuterin/state_expiry_eip) +- [స్టేట్ గడువు ముగింపునకు మార్గాలు](https://hackmd.io/@vbuterin/state_expiry_paths) +- [వెర్కిల్ మరియు స్టేట్ గడువు ముగింపు ప్రతిపాదన](https://notes.ethereum.org/@vbuterin/verkle_and_state_expiry_proposal) +- [చరిత్ర నిర్వహణ](https://eips.ethereum.org/EIPS/eip-4444) +- [వెర్కిల్ ట్రీస్](https://vitalik.eth.limo/general/2021/06/18/verkle.html) +- [డేటా లభ్యత నమూనా](https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding) + +## క్లయింట్ అభివృద్ధి {#client-development} + +ఇతీరియము క్లయింట్లు ఇతీరియము ప్రోటోకాల్ యొక్క అమలులు. క్లయింట్ అభివృద్ధి ఈ క్లయింట్లలో ప్రోటోకాల్ పరిశోధన నుండి ఫలితాలను నిర్మించడం ద్వారా వాస్తవికతగా మారుస్తుంది. క్లయింట్ అభివృద్ధిలో క్లయింట్ స్పెసిఫికేషన్లను నవీకరించడం మరియు నిర్దిష్ట అమలులను నిర్మించడం కూడా ఉంటుంది. + +ఒక ఇతీరియము నోడ్ రెండు సాఫ్ట్‌వేర్ భాగాలను అమలు చేయాలి: + +1. బ్లాక్‌చైను యొక్క హెడ్‌ను ట్రాక్ చేయడానికి, గాసిప్ బ్లాక్‌లను మరియు ఏకాభిప్రాయం లాజిక్‌ను నిర్వహించడానికి ఒక ఏకాభిప్రాయం క్లయింట్ +2. ఎథేరియం వర్చువల్ మషీన్‌కు మద్దతు ఇవ్వడానికి మరియు లావాదేవీలు మరియు స్మార్ట్ కాంట్రాక్ట్‌లను అమలు చేయడానికి ఒక ఎగ్జిక్యూషన్ క్లయింట్ + +నోడ్స్ మరియు క్లయింట్లపై మరిన్ని వివరాల కోసం మరియు అన్ని ప్రస్తుత క్లయింట్ అమలుల జాబితా కోసం [నోడ్స్ మరియు క్లయింట్ల పేజీ](/developers/docs/nodes-and-clients/)ని చూడండి. మీరు [చరిత్ర పేజీ](/ethereum-forks/)లో అన్ని ఇతీరియము అప్‌గ్రేడ్‌ల చరిత్రను కూడా కనుగొనవచ్చు. + +### ఎగ్జిక్యూషన్ క్లయింట్లు {#execution-clients} + +- [ఎగ్జిక్యూషన్ క్లయింట్ స్పెసిఫికేషన్](https://github.com/ethereum/execution-specs) +- [ఎగ్జిక్యూషన్ API స్పెసిఫికేషన్](https://github.com/ethereum/execution-apis) + +### ఏకాభిప్రాయం క్లయింట్లు {#consensus-clients} + +- [ఏకాభిప్రాయం క్లయింట్ స్పెసిఫికేషన్](https://github.com/ethereum/consensus-specs) +- [బీకాన్ API స్పెసిఫికేషన్](https://ethereum.github.io/beacon-APIs/#/Beacon/getStateRoot) + +## స్కేలింగ్ మరియు పనితీరు {#scaling-and-performance} + +ఇతీరియము స్కేలింగ్ అనేది ఇతీరియము పరిశోధకులకు ఒక పెద్ద దృష్టి కేంద్రం. ప్రస్తుత విధానాలలో లావాదేవీలను రోల్అప్‌లలోకి ఆఫ్‌లోడ్ చేయడం మరియు డేటా బ్లాబ్‌లను ఉపయోగించి వాటిని సాధ్యమైనంత చౌకగా చేయడం వంటివి ఉన్నాయి. ఇతీరియము స్కేలింగ్‌పై పరిచయ సమాచారం మా [స్కేలింగ్ పేజీ](/developers/docs/scaling)లో అందుబాటులో ఉంది. + +### లేయర్ 2 {#layer-2} + +ఇప్పుడు లావాదేవీలను బ్యాచ్ చేయడానికి మరియు వాటిని ఇతీరియము లేయర్ 1లో భద్రపరచడానికి వివిధ సాంకేతికతలను ఉపయోగించి ఇతీరియమును స్కేల్ చేసే అనేక లేయర్ 2 ప్రోటోకాల్‌లు ఉన్నాయి. ఇది చాలా వేగంగా అభివృద్ధి చెందుతున్న అంశం, దీనికి చాలా పరిశోధన మరియు అభివృద్ధి సామర్థ్యం ఉంది. + +#### నేపథ్య పఠనం {#background-reading-2} + +- [లేయర్ 2 కు పరిచయం](/layer-2/) +- [Polynya: రోల్అప్‌లు, DA మరియు మాడ్యులర్ చైన్‌లు](https://polynya.medium.com/rollups-data-availability-layers-modular-blockchains-introductory-meta-post-5a1e7a60119d) + +#### ఇటీవలి పరిశోధన {#recent-research-2} + +- [సీక్వెన్సర్‌ల కోసం ఆర్బిట్రమ్ యొక్క ఫెయిర్-ఆర్డరింగ్](https://eprint.iacr.org/2021/1465) +- [Ethresear.ch లేయర్ 2](https://ethresear.ch/c/layer-2/32) +- [రోల్అప్-సెంట్రిక్ మార్గసూచి](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) +- [L2Beat](https://l2beat.com/) + +### బ్రిడ్జ్‌లు {#bridges} + +లేయర్ 2లో మరింత పరిశోధన మరియు అభివృద్ధి అవసరమయ్యే ఒక నిర్దిష్ట ప్రాంతం సురక్షితమైన మరియు పనితీరు గల బ్రిడ్జ్‌లు. ఇందులో వివిధ లేయర్ 2ల మధ్య బ్రిడ్జ్‌లు మరియు లేయర్ 1 మరియు లేయర్ 2 మధ్య బ్రిడ్జ్‌లు ఉన్నాయి. ఇది ఒక ముఖ్యమైన పరిశోధన ప్రాంతం, ఎందుకంటే బ్రిడ్జ్‌లు సాధారణంగా హ్యాకర్లచే లక్ష్యంగా చేసుకోబడతాయి. + +#### నేపథ్య పఠనం {#background-reading-3} + +- [బ్లాక్‌చైను బ్రిడ్జ్‌లకు పరిచయం](/bridges/) +- [బ్రిడ్జ్‌లపై విటాలిక్](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/) +- [బ్లాక్‌చైను బ్రిడ్జ్‌ల వ్యాసం](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) +- [బ్రిడ్జ్‌లలో లాక్ చేయబడిన విలువ](https://dune.com/eliasimos/Bridge-Away-\(from-Ethereum\)) + +#### ఇటీవలి పరిశోధన {#recent-research-3} + +- [బ్రిడ్జ్‌లను ధ్రువీకరించడం](https://stonecoldpat.github.io/images/validatingbridges.pdf) + +### షార్డింగ్ {#sharding} + +ఇతీరియము యొక్క బ్లాక్‌చైనును షార్డింగ్ చేయడం చాలా కాలంగా అభివృద్ధి మార్గసూచిలో భాగంగా ఉంది. అయినప్పటికీ, "డాంక్‌షార్డింగ్" వంటి కొత్త స్కేలింగ్ పరిష్కారాలు ప్రస్తుతం కేంద్ర స్థానాన్ని ఆక్రమిస్తున్నాయి. + +ప్రోటో-డాంక్‌షార్డింగ్ అని పిలువబడే పూర్తి డాంక్‌షార్డింగ్‌కు పూర్వగామి కాన్‌కున్-డెనెబ్ ("డెన్‌కన్") నెట్‌వర్క్ అప్‌గ్రేడ్‌తో ప్రత్యక్ష ప్రసారం చేయబడింది. + +[డెన్‌కన్ అప్‌గ్రేడ్ గురించి మరింత](/roadmap/dencun/) + +#### నేపథ్య పఠనం {#background-reading-4} + +- [ప్రోటో-డాంక్‌షార్డింగ్ నోట్స్](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq) +- [బ్యాంక్‌లెస్ డాంక్‌షార్డింగ్ వీడియో](https://www.youtube.com/watch?v=N5p0TB77flM) +- [ఇతీరియము షార్డింగ్ పరిశోధన సంకలనం](https://notes.ethereum.org/@serenity/H1PGqDhpm?type=view) +- [డాంక్‌షార్డింగ్ (Polynya)](https://polynya.medium.com/danksharding-36dc0c8067fe) + +#### ఇటీవలి పరిశోధన {#recent-research-4} + +- [EIP-4844: ప్రోటో-డాంక్‌షార్డింగ్](https://eips.ethereum.org/EIPS/eip-4844) +- [షార్డింగ్ మరియు డేటా లభ్యత నమూనాపై విటాలిక్](https://hackmd.io/@vbuterin/sharding_proposal) + +### హార్డ్వేర్ {#hardware} + +ఇతీరియమును వికేంద్రీకృతంగా ఉంచడానికి సాధారణ హార్డ్‌వేర్‌పై [నోడ్స్‌ను నడపడం](/developers/docs/nodes-and-clients/run-a-node/) ప్రాథమికం. అందువల్ల, నోడ్స్‌ను నడపడానికి హార్డ్‌వేర్ అవసరాలను తగ్గించడంపై చురుకైన పరిశోధన ఒక ముఖ్యమైన పరిశోధన రంగం. + +#### నేపథ్య పఠనం {#background-reading-5} + +- [ARM పై ఇతీరియము](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/) + +#### ఇటీవలి పరిశోధన {#recent-research-5} + +- [FPGAs పై ecdsa](https://ethresear.ch/t/does-ecdsa-on-fpga-solve-the-scaling-problem/6738) + +## భద్రత {#security} + +భద్రత అనేది ఒక విస్తృతమైన అంశం, ఇందులో స్పామ్/స్కామ్ నివారణ, వాలెట్ భద్రత, హార్డ్‌వేర్ భద్రత, క్రిప్టో-ఎకనామిక్ భద్రత, బగ్ హంటింగ్ మరియు అప్లికేషన్‌లు మరియు క్లయింట్ సాఫ్ట్‌వేర్ యొక్క టెస్టింగ్ మరియు కీ-మేనేజ్‌మెంట్ వంటివి ఉండవచ్చు. ఈ రంగాలలో జ్ఞానానికి దోహదం చేయడం ప్రధాన స్రవంతి స్వీకరణను ప్రేరేపించడంలో సహాయపడుతుంది. + +### క్రిప్టోగ్రఫీ & ZKP {#cryptography--zkp} + +జీరో-నాలెడ్జ్ ప్రూఫ్స్ (ZKP) మరియు క్రిప్టోగ్రఫీ ఇతీరియము మరియు దాని అప్లికేషన్‌లలో గోప్యత మరియు భద్రతను నిర్మించడానికి కీలకం. జీరో-నాలెడ్జ్ అనేది చాలా బహిరంగ పరిశోధన మరియు అభివృద్ధి అవకాశాలతో కూడిన సాపేక్షంగా యువ కానీ వేగంగా కదులుతున్న రంగం. [కెక్కాక్ హాషింగ్ అల్గోరిథం](https://hackmd.io/sK7v0lr8Txi1bgION1rRpw?view#Overview) యొక్క మరింత సమర్థవంతమైన అమలులను అభివృద్ధి చేయడం, ప్రస్తుతం ఉన్న వాటి కంటే మెరుగైన పాలినామియల్ కమిట్‌మెంట్‌లను కనుగొనడం లేదా ecdsa పబ్లిక్ కీ జనరేషన్ మరియు సిగ్నేచర్ వెరిఫికేషన్ సర్క్యూట్‌ల ఖర్చును తగ్గించడం వంటి కొన్ని అవకాశాలు ఉన్నాయి. + +#### నేపథ్య పఠనం {#background-reading-6} + +- [0xparc బ్లాగ్](https://0xparc.org/blog) +- [zkp.science](https://zkp.science/) +- [జీరో నాలెడ్జ్ పాడ్‌కాస్ట్](https://zeroknowledge.fm/) + +#### ఇటీవలి పరిశోధన {#recent-research-6} + +- [ఎలిప్టిక్ కర్వ్ క్రిప్టోగ్రఫీలో ఇటీవలి పురోగతి](https://ethresear.ch/t/the-ec-fft-algorithm-without-elliptic-curve-and-isogenies/11346) +- [Ethresear.ch ZK](https://ethresear.ch/c/zk-s-nt-arks/13) + +### వాలెట్లు {#wallets} + +ఇతీరియము వాలెట్లు బ్రౌజర్ ఎక్స్‌టెన్షన్‌లు, డెస్క్‌టాప్ మరియు మొబైల్ యాప్‌లు లేదా ఇతీరియముపై స్మార్ట్ కాంట్రాక్ట్‌లు కావచ్చు. వ్యక్తిగత-వినియోగదారు కీ నిర్వహణతో సంబంధం ఉన్న కొంత ప్రమాదాన్ని తగ్గించే సామాజిక పునరుద్ధరణ వాలెట్లపై చురుకైన పరిశోధన జరుగుతోంది. వాలెట్ల అభివృద్ధితో పాటు ఖాతా అబ్‌స్ట్రాక్షన్ యొక్క ప్రత్యామ్నాయ రూపాలపై పరిశోధన జరుగుతోంది, ఇది నూతన పరిశోధన యొక్క ముఖ్యమైన ప్రాంతం. + +#### నేపథ్య పఠనం {#background-reading-7} + +- [వాలెట్లకు పరిచయం](/wallets/) +- [వాలెట్ భద్రతకు పరిచయం](/security/) +- [Ethresear.ch భద్రత](https://ethresear.ch/tag/security) +- [EIP-2938 ఖాతా అబ్‌స్ట్రాక్షన్](https://eips.ethereum.org/EIPS/eip-2938) +- [EIP-4337 ఖాతా అబ్‌స్ట్రాక్షన్](https://eips.ethereum.org/EIPS/eip-4337) + +#### ఇటీవలి పరిశోధన {#recent-research-7} + +- [ధ్రువీకరణ కేంద్రీకృత స్మార్ట్ కాంట్రాక్ట్ వాలెట్లు](https://ethereum-magicians.org/t/validation-focused-smart-contract-wallets/6603) +- [ఖాతాల భవిష్యత్తు](https://ethereum-magicians.org/t/validation-focused-smart-contract-wallets/6603) +- [EIP-3074 AUTH మరియు AUTHCALL ఆప్కోడ్లు](https://eips.ethereum.org/EIPS/eip-3074) +- [ఒక EOA చిరునామా వద్ద కోడ్‌ను ప్రచురించడం](https://eips.ethereum.org/EIPS/eip-5003) + +## సంఘం, విద్య మరియు ప్రచారం {#community-education-and-outreach} + +కొత్త వినియోగదారులను ఇతీరియములో చేర్చుకోవడానికి కొత్త విద్యా వనరులు మరియు ప్రచార విధానాలు అవసరం. ఇందులో బ్లాగ్ పోస్ట్‌లు మరియు వ్యాసాలు, పుస్తకాలు, పాడ్‌కాస్ట్‌లు, మీమ్స్, బోధనా వనరులు, ఈవెంట్‌లు మరియు సంఘాలను నిర్మించే, కొత్త వారిని స్వాగతించే మరియు ఇతీరియము గురించి ప్రజలకు అవగాహన కల్పించే ఏదైనా ఇతర అంశాలు ఉండవచ్చు. + +### UX/UI {#uxui} + +ఇతీరియములో ఎక్కువ మందిని చేర్చుకోవడానికి, పర్యావరణ వ్యవస్థ UX/UIని మెరుగుపరచాలి. దీనికి డిజైనర్లు మరియు ఉత్పత్తి నిపుణులు వాలెట్లు మరియు యాప్‌ల డిజైన్‌ను పునఃపరిశీలించాల్సి ఉంటుంది. + +#### నేపథ్య పఠనం {#background-reading-8} + +- [Ethresear.ch UX/UI](https://ethresear.ch/c/ui-ux/24) + +#### ఇటీవలి పరిశోధన {#recent-research-8} + +- [వెబ్3 డిజైన్ డిస్కార్డ్](https://discord.gg/FsCFPMTSm9) +- [వెబ్3 డిజైన్ సూత్రాలు](https://www.web3designprinciples.com/) +- [ఇతీరియము మెజీషియన్స్ UX చర్చ](https://ethereum-magicians.org/t/og-council-ux-follow-up/9032/3) + +### ఆర్థిక శాస్త్రం {#economics} + +ఇతీరియములోని ఆర్థిక శాస్త్ర పరిశోధన విస్తృతంగా రెండు విధానాలను అనుసరిస్తుంది: ఆర్థిక ప్రోత్సాహకాలపై ఆధారపడిన మెకానిజమ్‌ల భద్రతను ధ్రువీకరించడం ("సూక్ష్మ ఆర్థిక శాస్త్రం") మరియు ప్రోటోకాల్‌లు, అప్లికేషన్‌లు మరియు వినియోగదారుల మధ్య విలువ ప్రవాహాలను విశ్లేషించడం ("స్థూల ఆర్థిక శాస్త్రం"). ఇతీరియము యొక్క స్థానిక ఆస్తి (ఈథర్) మరియు దానిపై నిర్మించిన టోకెన్‌లకు (ఉదాహరణకు NFTలు మరియు ERC20 టోకెన్లు) సంబంధించిన సంక్లిష్టమైన క్రిప్టో-ఆర్థిక కారకాలు ఉన్నాయి. + +#### నేపథ్య పఠనం {#background-reading-9} + +- [రోబస్ట్ ఇన్సెంటివ్స్ గ్రూప్](https://rig.ethereum.org/) +- [డెవ్‌కనెక్ట్‌లో ETHconomics వర్క్‌షాప్](https://www.youtube.com/playlist?list=PLTLjFJ0OQOj5PHRvA2snoOKt2udVsyXEm) + +#### ఇటీవలి పరిశోధన {#recent-research-9} + +- [EIP1559 యొక్క అనుభావిక విశ్లేషణ](https://arxiv.org/abs/2201.05574) +- [ప్రసరణ సరఫరా సమతుల్యత](https://ethresear.ch/t/circulating-supply-equilibrium-for-ethereum-and-minimum-viable-issuance-during-the-proof-of-stake-era/10954) +- [MEVను లెక్కించడం: అడవి ఎంత చీకటిగా ఉంది?](https://arxiv.org/abs/2101.05511) + +### బ్లాక్‌స్పేస్ మరియు ఫీ మార్కెట్‌లు {#blockspace-fee-markets} + +బ్లాక్‌స్పేస్ మార్కెట్‌లు తుది-వినియోగదారు లావాదేవీల చేరికను నియంత్రిస్తాయి, నేరుగా ఇతీరియము (లేయర్ 1) పై లేదా బ్రిడ్జ్డ్ నెట్‌వర్క్‌లపై, ఉదా., రోల్అప్‌లు (లేయర్ 2). ఇతీరియముపై, లావాదేవీలు EIP-1559 గా ప్రోటోకాల్‌లో అమలు చేయబడిన ఫీ మార్కెట్‌కు సమర్పించబడతాయి, ఇది చైన్‌ను స్పామ్ మరియు ధరల రద్దీ నుండి రక్షిస్తుంది. రెండు లేయర్‌లలో, లావాదేవీలు గరిష్టంగా సంగ్రహించదగిన విలువ (MEV) అని పిలువబడే బాహ్యప్రభావాలను ఉత్పత్తి చేయవచ్చు, ఇవి ఈ బాహ్యప్రభావాలను సంగ్రహించడానికి లేదా నిర్వహించడానికి కొత్త మార్కెట్ నిర్మాణాలను ప్రేరేపిస్తాయి. + +#### నేపథ్య పఠనం {#background-reading-10} + +- [ఇతీరియము బ్లాక్‌చైను కోసం లావాదేవీ రుసుము మెకానిజం డిజైన్: EIP-1559 యొక్క ఆర్థిక విశ్లేషణ (టిమ్ రఫ్‌గార్డెన్, 2020)](https://timroughgarden.org/papers/eip1559.pdf) +- [EIP-1559 యొక్క అనుకరణలు (రోబస్ట్ ఇన్సెంటివ్స్ గ్రూప్)](https://ethereum.github.io/abm1559) +- [మొదటి సూత్రాల నుండి రోల్అప్ ఆర్థిక శాస్త్రం](https://barnabe.substack.com/p/understanding-rollup-economics-from?utm_source=url) +- [ఫ్లాష్ బాయ్స్ 2.0: వికేంద్రీకృత ఎక్స్చేంజీలలో ఫ్రంట్‌రన్నింగ్, లావాదేవీల పునర్వ్యవస్థీకరణ, మరియు ఏకాభిప్రాయం అస్థిరత](https://arxiv.org/abs/1904.05234) + +#### ఇటీవలి పరిశోధన {#recent-research-10} + +- [బహుమితీయ EIP-1559 వీడియో ప్రదర్శన](https://youtu.be/QbR4MTgnCko) +- [క్రాస్ డొమైన్ MEV](http://arxiv.org/abs/2112.01472) +- [MEV వేలంపాటలు](https://ethresear.ch/t/mev-auction-auctioning-transaction-ordering-rights-as-a-solution-to-miner-extractable-value/6788) + +### ప్రూఫ్-ఆఫ్-స్టేక్ ప్రోత్సాహకాలు {#proof-of-stake-incentives} + +వాలిడేటర్లు ఇతీరియము యొక్క స్థానిక ఆస్తి (ఈథర్)ని నిజాయితీ లేని ప్రవర్తనకు వ్యతిరేకంగా పూచీకత్తుగా ఉపయోగిస్తారు. దీని యొక్క క్రిప్టోఎకనామిక్స్ నెట్‌వర్క్ యొక్క భద్రతను నిర్ధారిస్తుంది. అధునాతన వాలిడేటర్లు స్పష్టమైన దాడులను ప్రారంభించడానికి ప్రోత్సాహక లేయర్ యొక్క సూక్ష్మ నైపుణ్యాలను ఉపయోగించుకోగలరు. + +#### నేపథ్య పఠనం {#background-reading-11} + +- [ఇతీరియము ఆర్థిక శాస్త్ర మాస్టర్‌క్లాస్ మరియు ఆర్థిక నమూనా](https://github.com/CADLabs/ethereum-economic-model) +- [PoS ప్రోత్సాహకాల అనుకరణలు (రోబస్ట్ ఇన్సెంటివ్స్ గ్రూప్)](https://ethereum.github.io/beaconrunner/) + +#### ఇటీవలి పరిశోధన {#recent-research-11} + +- [ప్రపోజర్/బిల్డర్ విభజన (PBS) కింద లావాదేవీల సెన్సార్‌షిప్ నిరోధకతను పెంచడం](https://notes.ethereum.org/s3JToeApTx6CKLJt8AbhFQ) +- [PoS ఇతీరియముపై మూడు దాడులు](https://arxiv.org/abs/2110.10086) + +### లిక్విడ్ స్టేకింగ్ మరియు డెరివేటివ్‌లు {#liquid-staking-and-derivatives} + +లిక్విడ్ స్టేకింగ్ 32 ETH కంటే తక్కువ ఉన్న వినియోగదారులకు ఈథర్‌ను డీఫైలో ఉపయోగించగల స్టేక్డ్ ఈథర్‌ను సూచించే టోకెన్‌తో మార్చుకోవడం ద్వారా స్టేకింగ్ దిగుబడులను పొందడానికి అనుమతిస్తుంది. అయినప్పటికీ, లిక్విడ్ స్టేకింగ్‌తో సంబంధం ఉన్న ప్రోత్సాహకాలు మరియు మార్కెట్ డైనమిక్స్ ఇంకా కనుగొనబడుతున్నాయి, అలాగే ఇతీరియము యొక్క భద్రతపై దాని ప్రభావం (ఉదా., కేంద్రీకరణ ప్రమాదాలు). + +#### నేపథ్య పఠనం {#background-reading-12} + +- [Ethresear.ch లిక్విడ్ స్టేకింగ్](https://ethresear.ch/search?q=liquid%20staking) +- [Lido: ట్రస్ట్‌లెస్ ఇతీరియము స్టేకింగ్‌కు మార్గం](https://blog.lido.fi/the-road-to-trustless-ethereum-staking/) +- [రాకెట్ పూల్: స్టేకింగ్ ప్రోటోకాల్ పరిచయం](https://medium.com/rocket-pool/rocket-pool-staking-protocol-part-1-8be4859e5fbd) + +#### ఇటీవలి పరిశోధన {#recent-research-12} + +- [Lido నుండి ఉపసంహరణలను నిర్వహించడం](https://ethresear.ch/t/handling-withdrawals-in-lidos-eth-liquid-staking-protocol/8873) +- [ఉపసంహరణ ఆధారాలు](https://ethresear.ch/t/withdrawal-credential-rotation-from-bls-to-eth1/8722) +- [లిక్విడ్ స్టేకింగ్ డెరివేటివ్‌ల ప్రమాదాలు](https://notes.ethereum.org/@djrtwo/risks-of-lsd) + +## పరీక్షించడం {#testing} + +### முறையான ధ్రువీకరణ {#formal-verification} + +முறையான ధ్రువీకరణ అనేది ఇతీరియము యొక్క ఏకాభిప్రాయం స్పెసిఫికేషన్లు సరైనవి మరియు బగ్-రహితమైనవి అని ధ్రువీకరించడానికి కోడ్ రాయడం. పైథాన్‌లో వ్రాసిన స్పెసిఫికేషన్ యొక్క ఎగ్జిక్యూటబుల్ వెర్షన్ ఉంది, దీనికి నిర్వహణ మరియు అభివృద్ధి అవసరం. తదుపరి పరిశోధన స్పెసిఫికేషన్ యొక్క పైథాన్ అమలును మెరుగుపరచడంలో మరియు ఖచ్చితత్వాన్ని మరింత పటిష్టంగా ధ్రువీకరించగల మరియు సమస్యలను గుర్తించగల ఉపకరణాలను జోడించడంలో సహాయపడుతుంది. + +#### నేపథ్య పఠనం {#background-reading-13} + +- [முறையான ధ్రువీకరణకు పరిచయం](https://ptolemy.berkeley.edu/projects/embedded/research/vis/doc/VisUser/vis_user/node4.html) +- [முறையான ధ్రువీకరణ (ఇంటెల్)](https://www.cl.cam.ac.uk/~jrh13/papers/mark10.pdf) + +#### ఇటీవలి పరిశోధన {#recent-research-13} + +- [డిపాజిట్ కాంట్రాక్ట్ యొక్క முறையான ధ్రువీకరణ](https://github.com/runtimeverification/deposit-contract-verification) +- [బీకాన్ చైన్ స్పెసిఫికేషన్ యొక్క முறையான ధ్రువీకరణ](https://github.com/runtimeverification/deposit-contract-verification) + +## డేటా సైన్స్ మరియు విశ్లేషణలు {#data-science-and-analytics} + +ఇతీరియముపై కార్యకలాపాలు మరియు నెట్‌వర్క్ ఆరోగ్యం గురించి వివరణాత్మక సమాచారాన్ని ఇచ్చే మరిన్ని డేటా విశ్లేషణ ఉపకరణాలు మరియు డాష్‌బోర్డ్‌ల అవసరం ఉంది. + +### నేపథ్య పఠనం {#background-reading-14} + +- [డూన్ అనలిటిక్స్](https://dune.com/browse/dashboards) +- [క్లయింట్ వైవిధ్య డాష్‌బోర్డ్](https://clientdiversity.org/) + +#### ఇటీవలి పరిశోధన {#recent-research-14} + +- [రోబస్ట్ ఇన్సెంటివ్స్ గ్రూప్ డేటా విశ్లేషణ](https://rig.ethereum.org/) + +## యాప్‌లు మరియు పనిముట్లు {#apps-and-tooling} + +అప్లికేషన్ లేయర్ ఇతీరియము యొక్క బేస్ లేయర్‌పై లావాదేవీలను పరిష్కరించే విభిన్న ప్రోగ్రామ్‌ల పర్యావరణ వ్యవస్థకు మద్దతు ఇస్తుంది. అభివృద్ధి బృందాలు ముఖ్యమైన Web2 యాప్‌ల యొక్క కంపోజబుల్, అనుమతిలేని మరియు సెన్సార్‌షిప్-నిరోధక వెర్షన్‌లను సృష్టించడానికి లేదా పూర్తిగా కొత్త Web3-స్థానిక భావనలను సృష్టించడానికి ఇతీరియమును ఉపయోగించుకోవడానికి నిరంతరం కొత్త మార్గాలను కనుగొంటున్నాయి. అదే సమయంలో, ఇతీరియముపై డాప్స్‌ను నిర్మించడాన్ని తక్కువ సంక్లిష్టంగా చేసే కొత్త పనిముట్లు అభివృద్ధి చేయబడుతున్నాయి. + +### డీఫై {#defi} + +వికేంద్రీకృత ఫైనాన్స్ (డీఫై) ఇతీరియముపై నిర్మించిన అప్లికేషన్‌ల యొక్క ప్రాథమిక తరగతులలో ఒకటి. డీఫై వినియోగదారులను స్మార్ట్ కాంట్రాక్ట్‌లను ఉపయోగించి క్రిప్టో-ఆస్తులను నిల్వ చేయడానికి, బదిలీ చేయడానికి, అప్పు ఇవ్వడానికి, అప్పు తీసుకోవడానికి మరియు పెట్టుబడి పెట్టడానికి అనుమతించే కంపోజబుల్ "మనీ లెగోస్" ను సృష్టించాలని లక్ష్యంగా పెట్టుకుంది. డీఫై అనేది నిరంతరం నవీకరించబడే వేగంగా కదులుతున్న రంగం. సురక్షితమైన, సమర్థవంతమైన మరియు ప్రాప్యత చేయగల ప్రోటోకాల్‌లపై పరిశోధన నిరంతరం అవసరం. + +#### నేపథ్య పఠనం {#background-reading-15} + +- [డీఫై](/defi/) +- [కాయిన్‌బేస్: డీఫై అంటే ఏమిటి?](https://www.coinbase.com/learn/crypto-basics/what-is-defi) + +#### ఇటీవలి పరిశోధన {#recent-research-15} + +- [వికేంద్రీకృత ఫైనాన్స్, కేంద్రీకృత యాజమాన్యమా?](https://arxiv.org/pdf/2012.09306.pdf) +- [ఆశావాదం: ఉప-డాలర్ లావాదేవీలకు మార్గం](https://medium.com/ethereum-optimism/the-road-to-sub-dollar-transactions-part-2-compression-edition-6bb2890e3e92) + +### DAO లు {#daos} + +DAOల వాడకం ద్వారా వికేంద్రీకృత పద్ధతిలో నిర్వహించే సామర్థ్యం ఇతీరియం కోసం ఒక ప్రభావవంతమైన వినియోగ ఉదాహరణ. ఇతీరియముపై DAO లను ఎలా అభివృద్ధి చేయవచ్చు మరియు మెరుగైన పరిపాలన రూపాలను అమలు చేయడానికి, విశ్వాసం-తగ్గించబడిన సమన్వయ ఉపకరణంగా, సాంప్రదాయ కార్పొరేషన్లు మరియు సంస్థలకు మించి ప్రజల ఎంపికలను బాగా విస్తరించడానికి ఎలా ఉపయోగించవచ్చనే దానిపై చాలా చురుకైన పరిశోధన జరుగుతోంది. + +#### నేపథ్య పఠనం {#background-reading-16} + +- [DAO లకు పరిచయం](/dao/) +- [Dao కలెక్టివ్](https://daocollective.xyz/) + +#### ఇటీవలి పరిశోధన {#recent-research-16} + +- [DAO పర్యావరణ వ్యవస్థను మ్యాపింగ్ చేయడం](https://www.researchgate.net/publication/358694594_Mapping_out_the_DAO_Ecosystem_and_Assessing_DAO_Autonomy) + +### డెవలపర్ ఉపకరణాలు {#developer-tools} + +ఇతీరియము డెవలపర్‌ల కోసం ఉపకరణాలు వేగంగా మెరుగుపడుతున్నాయి. ఈ సాధారణ ప్రాంతంలో చేయడానికి చాలా చురుకైన పరిశోధన మరియు అభివృద్ధి ఉంది. + +#### నేపథ్య పఠనం {#background-reading-17} + +- [ప్రోగ్రామింగ్ భాష ద్వారా పనిముట్లు](/developers/docs/programming-languages/) +- [డెవలపర్ ఫ్రేమ్‌వర్క్‌లు](/developers/docs/frameworks/) +- [ఏకాభిప్రాయం డెవలపర్ ఉపకరణాల జాబితా](https://github.com/ConsenSys/ethereum-developer-tools-list) +- [టోకెన్ ప్రమాణాలు](/developers/docs/standards/tokens/) +- [క్రిప్టోడెవ్‌హబ్: EVM ఉపకరణాలు](https://cryptodevhub.io/wiki/ethereum-virtual-machine-tools) + +#### ఇటీవలి పరిశోధన {#recent-research-17} + +- [Eth R&D డిస్కార్డ్ ఏకాభిప్రాయం పనిముట్ల ఛానెల్](https://discordapp.com/channels/595666850260713488/746343380900118528) + +### ఒరాకిల్స్ {#oracles} + +ఒరాకిల్స్ ఆఫ్‌చైన్ డేటాను బ్లాక్‌చైనులోకి అనుమతిలేని మరియు వికేంద్రీకృత పద్ధతిలో దిగుమతి చేస్తాయి. ఈ డేటాను ఆన్‌చైన్‌లో పొందడం వలన డాప్స్ నిజ-ప్రపంచ ఆస్తులలో ధరల హెచ్చుతగ్గులు, ఆఫ్‌చైన్ యాప్‌లలోని ఈవెంట్‌లు లేదా వాతావరణంలో మార్పులు వంటి నిజ-ప్రపంచ దృగ్విషయాలకు ప్రతిస్పందించడానికి వీలు కల్పిస్తుంది. + +#### నేపథ్య పఠనం {#background-reading-18} + +- [ఒరాకిల్స్‌కు పరిచయం](/developers/docs/oracles/) + +#### ఇటీవలి పరిశోధన {#recent-research-18} + +- [బ్లాక్‌చైను ఒరాకిల్స్ సర్వే](https://arxiv.org/pdf/2004.07140.pdf) +- [చైన్‌లింక్ వైట్ పేపర్](https://chain.link/whitepaper) + +### యాప్ భద్రత {#app-security} + +ఇతీరియముపై హ్యాక్‌లు సాధారణంగా ప్రోటోకాల్‌లో కాకుండా వ్యక్తిగత అప్లికేషన్‌లలోని బలహీనతలను ఉపయోగించుకుంటాయి. హ్యాకర్లు మరియు యాప్ డెవలపర్లు కొత్త దాడులు మరియు రక్షణలను అభివృద్ధి చేయడానికి ఆయుధాల పోటీలో చిక్కుకున్నారు. దీనర్థం, యాప్‌లను హ్యాక్‌ల నుండి సురక్షితంగా ఉంచడానికి ఎల్లప్పుడూ ముఖ్యమైన పరిశోధన మరియు అభివృద్ధి అవసరం. + +#### నేపథ్య పఠనం {#background-reading-19} + +- [వార్మ్‌హోల్ దోపిడీ నివేదిక](https://blog.chainalysis.com/reports/wormhole-hack-february-2022/) +- [ఇతీరియము కాంట్రాక్ట్ హ్యాక్ పోస్ట్-మార్టెమ్‌ల జాబితా](https://forum.openzeppelin.com/t/list-of-ethereum-smart-contracts-post-mortems/1191) +- [రెక్ట్ న్యూస్](https://x.com/RektHQ?s=20&t=3otjYQdM9Bqk8k3n1a1Adg) + +#### ఇటీవలి పరిశోధన {#recent-research-19} + +- [Ethresear.ch అప్లికేషన్‌లు](https://ethresear.ch/c/applications/18) + +### సాంకేతిక స్టాక్ {#technology-stack} + +మొత్తం ఇతీరియము టెక్ స్టాక్‌ను వికేంద్రీకరించడం ఒక ముఖ్యమైన పరిశోధన ప్రాంతం. ప్రస్తుతం, ఇతీరియములోని డాప్స్‌కు సాధారణంగా కొన్ని కేంద్రీకరణ పాయింట్లు ఉన్నాయి ఎందుకంటే అవి కేంద్రీకృత పనిముట్లు లేదా మౌలిక సదుపాయాలపై ఆధారపడి ఉంటాయి. + +#### నేపథ్య పఠనం {#background-reading-20} + +- [ఇతీరియము స్టాక్](/developers/docs/ethereum-stack/) +- [కాయిన్‌బేస్: వెబ్3 స్టాక్‌కు పరిచయం](https://blog.coinbase.com/a-simple-guide-to-the-web3-stack-785240e557f0) +- [స్మార్ట్ కాంట్రాక్ట్‌లకు పరిచయం](/developers/docs/smart-contracts/) +- [వికేంద్రీకృత నిల్వకు పరిచయం](/developers/docs/storage/) + +#### ఇటీవలి పరిశోధన {#recent-research-20} + +- [స్మార్ట్ కాంట్రాక్ట్ కంపోజబిలిటీ](/developers/docs/smart-contracts/composability/) diff --git a/public/content/translations/te/community/support/index.md b/public/content/translations/te/community/support/index.md new file mode 100644 index 00000000000..af97049de82 --- /dev/null +++ b/public/content/translations/te/community/support/index.md @@ -0,0 +1,104 @@ +--- +title: "Ethereum సపోర్ట్" +description: "ఇతీరియము ఎకోసిస్టమ్‌లో మద్దతు పొందండి." +lang: te +--- + +# ఇతీరియము మద్దతు {#support} + +## అధికారిక ఇతీరియము మద్దతు {#official-support} + +మీరు అధికారిక ఇతీరియము మద్దతు కోసం చూస్తున్నారా? మీరు తెలుసుకోవలసిన మొదటి విషయం ఏమిటంటే, ఇతీరియము వికేంద్రీకరించబడింది. దీని అర్థం ఏ కేంద్ర సంస్థ, సంస్థ లేదా వ్యక్తి ఇతీరియమును కలిగి ఉండరు, ఈ కారణంగా అధికారిక మద్దతు ఛానెల్‌లు ఏవీ లేవు. + +ఇతీరియము యొక్క వికేంద్రీకృత స్వభావాన్ని అర్థం చేసుకోవడం చాలా ముఖ్యం, ఎందుకంటే **ఇతీరియము కోసం అధికారిక మద్దతు అని చెప్పుకునే ఎవరైనా మిమ్మల్ని మోసం చేయడానికి ప్రయత్నిస్తున్నారు!** స్కామర్ల నుండి ఉత్తమ రక్షణ ఏమిటంటే మిమ్మల్ని మీరు విద్యావంతులను చేసుకోవడం మరియు భద్రతను తీవ్రంగా పరిగణించడం. + + + ఇతీరియము భద్రత మరియు స్కామ్ నివారణ + + + + ఇతీరియము ప్రాథమిక అంశాలను తెలుసుకోండి + + +అధికారిక మద్దతు లేనప్పటికీ, ఇతీరియము ఎకోసిస్టమ్‌లోని అనేక సమూహాలు, సంఘాలు మరియు ప్రాజెక్ట్‌లు సహాయం చేయడానికి సంతోషిస్తాయి, మరియు మీరు ఈ పేజీలో చాలా ఉపయోగకరమైన సమాచారం మరియు వనరులను కనుగొనవచ్చు. ఇంకా ప్రశ్నలు ఉన్నాయా? [ethereum.org Discord](https://discord.gg/ethereum-org)లో చేరండి మరియు మేము సహాయం చేయడానికి ప్రయత్నిస్తాము. + +## తరచుగా అడిగే ప్రశ్నలు {#faq} + +### నేను తప్పు వాలెట్‌కు ETH పంపాను {#wrong-wallet} + +ఇతీరియములో పంపిన లావాదేవీ తిరిగి మార్చలేనిది. దురదృష్టవశాత్తు, మీరు తప్పు వాలెట్‌కు ETH పంపినట్లయితే, ఈ నిధులను తిరిగి పొందే మార్గం లేదు. ఏ ఒక్క కేంద్ర సంస్థ, సంస్థ లేదా వ్యక్తి ఇతీరియమును కలిగి ఉండరు, అంటే లావాదేవీలను ఎవరూ రివర్స్ చేయలేరు. అందువల్ల, వాటిని పంపే ముందు మీ లావాదేవీలను ఎల్లప్పుడూ రెండుసార్లు తనిఖీ చేయడం చాలా ముఖ్యం. + +### నా ఇతీరియము గివ్అవేని నేను ఎలా క్లెయిమ్ చేయగలను? {#giveaway-scam} + +ఇతీరియము గివ్అవేలు మీ ETHని దొంగిలించడానికి రూపొందించిన స్కామ్‌లు. నిజం కావడానికి చాలా మంచిగా అనిపించే ఆఫర్‌లకు లొంగవద్దు — మీరు ఒక గివ్అవే చిరునామాకు ETH పంపితే, మీరు గివ్అవే అందుకోలేరు మరియు మీరు మీ నిధులను తిరిగి పొందలేరు. + +[స్కామ్ నివారణపై మరిన్ని వివరాలు](/security/#common-scams) + +### నా లావాదేవీ నిలిచిపోయింది {#stuck-transaction} + +నెట్‌వర్క్ డిమాండ్ కారణంగా అవసరమైన దానికంటే తక్కువ లావాదేవీ రుసుమును మీరు సమర్పించినట్లయితే, ఇతీరియముపై లావాదేవీలు కొన్నిసార్లు నిలిచిపోవచ్చు. లావాదేవీని ప్రాసెస్ చేయడానికి అనుమతించడానికి అనేక వాలెట్‌లు అదే లావాదేవీని అధిక లావాదేవీ రుసుముతో తిరిగి సమర్పించే ఎంపికను అందిస్తాయి. ప్రత్యామ్నాయంగా, మీరు మీ స్వంత చిరునామాకు లావాదేవీని పంపడం ద్వారా మరియు పెండింగ్‌లో ఉన్న లావాదేవీ వలె అదే నాన్స్‌ని ఉపయోగించడం ద్వారా పెండింగ్‌లో ఉన్న లావాదేవీని రద్దు చేయవచ్చు. + +[MetaMaskలో పెండింగ్‌లో ఉన్న లావాదేవీని వేగవంతం చేయడం లేదా రద్దు చేయడం ఎలా](https://metamask.zendesk.com/hc/en-us/articles/360015489251-How-to-speed-up-or-cancel-a-pending-transaction) + +[పెండింగ్‌లో ఉన్న ఇతీరియము లావాదేవీలను ఎలా రద్దు చేయాలి](https://info.etherscan.com/how-to-cancel-ethereum-pending-transactions/) + +### నేను ఇతీరియమును ఎలా మైన్ చేయాలి? {#mining-ethereum} + +ఇతీరియము మైనింగ్ ఇప్పుడు సాధ్యం కాదు. ఇతీరియము [ప్రూఫ్-ఆఫ్-వర్క్](/glossary/#pow) నుండి [ప్రూఫ్-ఆఫ్-స్టేక్](/glossary/#pos)కి మారినప్పుడు మైనింగ్ స్విచ్ ఆఫ్ చేయబడింది. ఇప్పుడు, మైనర్‌లకు బదులుగా, ఇతీరియములో వాలిడేటర్‌లు ఉన్నారు. నెట్‌వర్క్‌ను సురక్షితంగా ఉంచడానికి వాలిడేటర్ సాఫ్ట్‌వేర్‌ను అమలు చేయడం కోసం ఎవరైనా ETHను [స్టేక్](/glossary/#staking) చేయవచ్చు మరియు స్టేకింగ్ రివార్డులను పొందవచ్చు. + +### నేను స్టేకర్‌గా ఎలా మారాలి / వాలిడేటర్‌ను ఎలా నడపాలి? {#how-to-stake} + +వాలిడేటర్‌గా మారడానికి, మీరు ఇతీరియము డిపాజిట్ కాంట్రాక్ట్‌లో 32 ETH స్టేక్ చేయాలి మరియు ఒక వాలిడేటర్ నోడ్‌ను సెటప్ చేయాలి. మా [స్టేకింగ్ పేజీలలో](/staking) మరియు [స్టేకింగ్ లాంచ్‌ప్యాడ్](https://launchpad.ethereum.org/) వద్ద మరింత సమాచారం అందుబాటులో ఉంది. + +## డాప్స్‌ను నిర్మించడం {#building-support} + +నిర్మించడం కష్టంగా ఉండవచ్చు. ఇక్కడ అనుభవజ్ఞులైన ఇతీరియము డెవలపర్‌లతో కొన్ని అభివృద్ధి కేంద్రీకృత ప్రదేశాలు ఉన్నాయి, వారు సహాయం చేయడానికి సంతోషిస్తారు. + +- [Alchemy విశ్వవిద్యాలయం](https://university.alchemy.com/#starter_code) +- [CryptoDevs డిస్కార్డ్](https://discord.com/invite/5W5tVb3) +- [ఇతీరియము StackExchange](https://ethereum.stackexchange.com/) +- [Web3 విశ్వవిద్యాలయం](https://www.web3.university/) +- [LearnWeb3](https://discord.com/invite/learnweb3) + +మీరు మా [ఇతీరియము డెవలపర్ వనరులు](/developers/) విభాగంలో డాక్యుమెంటేషన్ మరియు డెవలప్‌మెంట్ గైడ్‌లను కూడా కనుగొనవచ్చు. + +### పనిముట్లు {#dapp-tooling} + +మీ ప్రశ్న ఒక నిర్దిష్ట సాధనం, ప్రాజెక్ట్ లేదా లైబ్రరీకి సంబంధించినదా? చాలా ప్రాజెక్టులకు మీకు మద్దతు ఇవ్వడానికి అంకితమైన చాట్ సర్వర్‌లు లేదా ఫోరమ్‌లు ఉన్నాయి. + +ఇక్కడ కొన్ని ప్రసిద్ధ ఉదాహరణలు ఉన్నాయి: + +- [Solidity](https://gitter.im/ethereum/solidity) +- [ethers.js](https://discord.gg/6jyGVDK6Jx) +- [web3.js](https://discord.gg/GsABYQu4sC) +- [Hardhat](https://discord.gg/xtrMGhmbfZ) +- [Alchemy](http://alchemy.com/discord) +- [Tenderly](https://discord.gg/fBvDJYR) + +## ఒక నోడ్‌ను నడపడం {#node-support} + +మీరు ఒక నోడ్ లేదా వాలిడేటర్‌ను నడుపుతున్నట్లయితే, మీరు ప్రారంభించడానికి సహాయం చేయడానికి అంకితమైన కొన్ని సంఘాలు ఇక్కడ ఉన్నాయి. + +- [EthStaker డిస్కార్డ్](https://discord.gg/ethstaker) +- [EthStaker రెడ్డిట్](https://www.reddit.com/r/ethstaker) + +ఇతీరియము క్లయింట్‌లను నిర్మిస్తున్న చాలా బృందాలకు కూడా అంకితమైన, బహిరంగంగా ఎదుర్కొనే ప్రదేశాలు ఉన్నాయి, ఇక్కడ మీరు మద్దతు పొందవచ్చు మరియు ప్రశ్నలు అడగవచ్చు. + +### ఎగ్జిక్యూషన్ క్లయింట్లు {#execution-clients} + +- [Geth](https://discord.gg/FqDzupGyYf) +- [Nethermind](https://discord.gg/YJx3pm8z5C) +- [Besu](https://discord.gg/p8djYngzKN) +- [Erigon](https://github.com/ledgerwatch/erigon/issues) +- [Reth](https://github.com/paradigmxyz/reth/discussions) + +### ఏకాభిప్రాయం క్లయింట్లు {#consensus-clients} + +- [Prysm](https://discord.gg/prysmaticlabs) +- [Nimbus](https://discord.gg/nSmEH3qgFv) +- [Lighthouse](https://discord.gg/cyAszAh) +- [Teku](https://discord.gg/7hPv2T6) +- [Lodestar](https://discord.gg/aMxzVcr) +- [Grandine](https://discord.gg/H9XCdUSyZd) + +మీరు [ఇక్కడ ఒక నోడ్‌ను ఎలా నడపాలో కూడా తెలుసుకోవచ్చు](/developers/docs/nodes-and-clients/run-a-node/). diff --git a/public/content/translations/te/contributing/adding-desci-projects/index.md b/public/content/translations/te/contributing/adding-desci-projects/index.md new file mode 100644 index 00000000000..cc1839cedda --- /dev/null +++ b/public/content/translations/te/contributing/adding-desci-projects/index.md @@ -0,0 +1,44 @@ +--- +title: "DeSci ప్రాజెక్ట్‌లను జోడించడం" +description: "ethereum.orgలోని DeSci పేజీలో ప్రాజెక్ట్‌లకు లింక్‌లను జోడించేటప్పుడు మేము ఉపయోగించే విధానం" +lang: te +--- + +# ప్రాజెక్ట్‌లను జోడించడం {#adding-projects} + +మేము వివిధ రకాల ప్రాజెక్ట్‌లను చూపుతామని మరియు DeSci ల్యాండ్‌స్కేప్ యొక్క మంచి స్నాప్‌షాట్‌ను అందించాలని మేము నిర్ధారించుకోవాలనుకుంటున్నాము. + +Ethereum.orgలోని DeSci పేజీలో జాబితా చేయడానికి ఎవరైనా ప్రాజెక్ట్‌ను సూచించడానికి ఉచితం. అలాగే, ఇకపై సంబంధితంగా లేని లేదా మా అర్హత ప్రమాణాలకు అనుగుణంగా లేని ప్రాజెక్ట్‌ను ఎవరైనా గమనించినట్లయితే, దానిని తీసివేయమని సూచించవచ్చు. + +## నిర్ణయ చట్రం {#the-decision-framework} + +### చేర్చడానికి ప్రమాణాలు: తప్పనిసరిగా ఉండాల్సినవి {#the-must-haves} + +- **ఓపెన్ సోర్స్ కోడ్/డేటా** - కోడ్ మరియు డేటా యొక్క బహిరంగత ఒక ప్రధాన DeSci సూత్రం, కాబట్టి DeSci ప్రాజెక్ట్‌లు క్లోజ్డ్ సోర్స్ కాకూడదు. కోడ్‌బేస్ అందుబాటులో ఉండాలి మరియు PRలకు ఆదర్శంగా తెరవబడి ఉండాలి. +- **DeSci ప్రాజెక్ట్‌లు నిరూపితంగా వికేంద్రీకరించబడాలి** - ఇది DAO ద్వారా పరిపాలించబడటం లేదా కస్టోడియల్-కాని వాలెట్‌లతో సహా వికేంద్రీకృత టెక్ స్టాక్‌తో నిర్మించడం వంటివి కలిగి ఉండవచ్చు. ఇది బహుశా Ethereumలో ఆడిట్ చేయదగిన స్మార్ట్ ఒప్పందాలను కలిగి ఉంటుంది. +- **నిజాయితీ మరియు కచ్చితమైన జాబితా సమాచారం** - ప్రాజెక్ట్‌ల నుండి సూచించబడిన ఏవైనా జాబితాలు నిజాయితీ మరియు కచ్చితమైన సమాచారంతో వస్తాయని ఆశించబడుతుంది. మీ ఉత్పత్తిని "ఓపెన్ సోర్స్" అని ప్రకటించడం వంటి జాబితా సమాచారాన్ని తప్పుదారి పట్టించే ఉత్పత్తులు తీసివేయబడతాయి. +- **విజ్ఞాన శాస్త్రానికి ప్రాప్యతను విస్తృతం చేయడానికి నిరూపితమైన నిబద్ధత** - ఒక DeSci ప్రాజెక్ట్, కేవలం టోకెన్/NFT హోల్డర్లకు మాత్రమే కాకుండా, సామాన్య ప్రజలకు విజ్ఞాన శాస్త్రంలో భాగస్వామ్యాన్ని ఎలా విస్తృతం చేస్తుందో వివరించగలగాలి. +- **ప్రపంచవ్యాప్తంగా ప్రాప్యత** - మీ సేవను ప్రాప్యత చేయకుండా నిర్దిష్ట వ్యక్తులను మినహాయించే భౌగోళిక పరిమితులు లేదా KYC ఆవశ్యకతలు మీ ప్రాజెక్టుకు ఉండకూడదు. +- **సమాచార వెబ్‌సైట్ మరియు డాక్యుమెంటేషన్** - ప్రాజెక్ట్ వెబ్‌సైట్ సందర్శకులు, ఆ ప్రాజెక్ట్ వాస్తవానికి ఏమి చేస్తుందో, విజ్ఞాన శాస్త్ర మౌలిక సదుపాయాల వికేంద్రీకరణకు ఎలా దోహదపడుతుందో మరియు ఎలా పాల్గొనాలో అర్థం చేసుకోవడం ముఖ్యం. +- **ప్రాజెక్ట్ ఇతీరియము పర్యావరణ వ్యవస్థలో భాగమై ఉండాలి** - ethereum.orgలో మేము ఇతీరియము (మరియు దాని లేయర్ 2లు) DeSci ఉద్యమానికి సరైన బేస్ లేయర్ అని నమ్ముతాము. +- **ప్రాజెక్ట్ చాలావరకు సుస్థాపితమై ఉండాలి** - ఈ ప్రాజెక్ట్‌కు నిజమైన వినియోగదారులు ఉండాలి, వారు చాలా నెలలుగా ప్రాజెక్ట్ సేవలను ప్రాప్యత చేయగలుగుతున్నారు. + +### మంచివి + +- **బహుళ భాషలలో లభ్యం** - ప్రపంచవ్యాప్తంగా ఉన్న వినియోగదారులు మీ ప్రాజెక్ట్‌ను ప్రాప్యత చేయడానికి వీలుగా, ఇది బహుళ భాషలలోకి అనువదించబడి ఉండాలి. +- **విద్యా వనరులు** - వినియోగదారులకు సహాయం చేయడానికి మరియు అవగాహన కల్పించడానికి మీ ఉత్పత్తికి చక్కగా రూపొందించబడిన ఆన్‌బోర్డింగ్ అనుభవం ఉండాలి. లేదా కథనాలు లేదా వీడియోల వంటి కంటెంట్ ఎలా చేయాలో రుజువు. +- **థర్డ్-పార్టీ ఆడిట్‌లు** - మీ ఉత్పత్తికి విశ్వసనీయమైన థర్డ్-పార్టీ ద్వారా వృత్తిపరంగా లోపాల కోసం ఆడిట్ జరిగి ఉండాలి. +- **సంప్రదింపు కేంద్రం** - ప్రాజెక్ట్ కోసం ఒక సంప్రదింపు కేంద్రం (ఇది DAO లేదా సంఘం నుండి ఒక ప్రతినిధి కావచ్చు) ఉండటం వలన, మార్పులు చేసినప్పుడు కచ్చితమైన సమాచారాన్ని పొందడంలో మాకు చాలా సహాయపడుతుంది. ఇది భవిష్యత్తు సమాచారాన్ని సేకరిస్తున్నప్పుడు నిర్వహించగలిగేలా ethereum.orgని నవీకరిస్తుంది. + +## నిర్వహణ {#maintenance} + +Ethereum యొక్క ద్రవ స్వభావం వలె, బృందాలు మరియు ఉత్పత్తులు వస్తాయి మరియు వెళ్తాయి మరియు ఆవిష్కరణలు ప్రతిరోజూ జరుగుతాయి, కాబట్టి మేము మా కంటెంట్‌ని సాధారణ తనిఖీలను చేస్తాము: + +- జాబితా చేయబడిన అన్ని ప్రాజెక్ట్‌లు ఇప్పటికీ మా ప్రమాణాలకు అనుగుణంగా ఉన్నాయని నిర్ధారించుకోండి +- ప్రస్తుతం జాబితా చేయబడిన వాటి కంటే మా ప్రమాణాలకు అనుగుణంగా సూచించబడిన ఉత్పత్తులు లేవని ధృవీకరించండి + +Ethereum.org ఓపెన్ సోర్స్ సంఘం ద్వారా నిర్వహించబడుతుంది & దీనిని ఎప్పటికప్పుడు తాజాపరచడంలో సహాయం కోసం మేము సంఘంపై ఆధారపడతాము. మీరు జాబితా చేయబడిన ప్రాజెక్ట్‌ల గురించిన ఏదైనా సమాచారాన్ని అప్‌డేట్ చేయవలసి ఉన్నట్లయితే, దయచేసి మా GitHub రిపోజిటరీలో ఒక సమస్యను లేదా పుల్ అభ్యర్థనను తెరవండి. + +## వినియోగ నిబంధనలు {#terms-of-use} + +దయచేసి మా [వినియోగ నిబంధనలను](/terms-of-use/) కూడా చూడండి. Ethereum.orgలోని సమాచారం సాధారణ సమాచార ప్రయోజనాల కోసం మాత్రమే అందించబడింది. diff --git a/public/content/translations/te/contributing/adding-developer-tools/index.md b/public/content/translations/te/contributing/adding-developer-tools/index.md new file mode 100644 index 00000000000..3e0e3eed6d8 --- /dev/null +++ b/public/content/translations/te/contributing/adding-developer-tools/index.md @@ -0,0 +1,61 @@ +--- +title: "డెవలపర్ సాధనాలను జోడిస్తోంది" +lang: te +description: "Ethereum.orgలో డెవలపర్ సాధనాలను జాబితా చేయడానికి మా ప్రమాణాలు" +--- + +# డెవలపర్ ఉపకరణాలను జోడించడం {#contributing-to-ethereumorg-} + +మేము సాధ్యమైనంత ఉత్తమమైన డెవలపర్ వనరులను జాబితా చేసామని నిర్ధారించుకోవాలనుకుంటున్నాము, తద్వారా వ్యక్తులు ఆత్మవిశ్వాసంతో నిర్మించగలరు మరియు వారికి అవసరమైన మద్దతును కలిగి ఉంటారు. + +మేము తప్పిపోయిన సహాయక డెవలపర్ సాధనం ఉన్నట్లయితే, తగిన చోట దానిని సూచించడానికి సంకోచించకండి. + +మేము ప్రస్తుతం మా [డెవలపర్ పోర్టల్](/developers/) అంతటా డెవలపర్ ఉపకరణాలను జాబితా చేస్తాము. + +**తగిన పేజీలకు కొత్త చేర్పులను సూచించడానికి సంకోచించకండి.** + +## మేము ఎలా నిర్ణయిస్తాము {#ways-to-contribute} + +డెవలపర్ సాధన సమర్పణలు క్రింది ప్రమాణాల ద్వారా అంచనా వేయబడతాయి: + +**ఇప్పటికే జాబితా చేయబడిన ఉపకరణాల నుండి ఇది అర్థవంతంగా విభిన్నంగా ఉందా?** + +- కొత్త వర్గాలు లేదా సాధనాల రకాలు +- ఇప్పటికే ఉన్న సారూప్య సాధనాలతో పోలిస్తే కొత్త ఫీచర్లు +- ఇప్పటికే ఉన్న సారూప్య సాధనాల ద్వారా కవర్ చేయబడని ప్రత్యేకమైన వినియోగ-కేసుపై లక్ష్యంగా పెట్టుకుంది + +**ఈ ఉపకరణం బాగా డాక్యుమెంట్ చేయబడిందా?** + +- డాక్యుమెంటేషన్ ఉందా? +- సాధనాన్ని ఉపయోగించడం సరిపోతుందా? +- ఇది ఇటీవల నవీకరించబడిందా? + +**ఈ ఉపకరణం విస్తృతంగా ఉపయోగించబడుతుందా?** + +- మేము GitHub స్టార్‌లు, డౌన్‌లోడ్ గణాంకాలు మరియు తెలిసిన కంపెనీలు లేదా ప్రాజెక్ట్‌ల ద్వారా ఉపయోగించబడుతున్నాయా వంటి కొలమానాలను పరిశీలిస్తాము + +**ఈ ఉపకరణం తగినంత నాణ్యతతో ఉందా?** + +- పునరావృత దోషాలు ఉన్నాయా? +- సాధనం నమ్మదగినదా? +- సాధనం చురుకుగా నిర్వహించబడుతుందా? + +**ఈ ఉపకరణం ఓపెన్ సోర్సా?** + +Ethereum స్థలంలో అనేక ప్రాజెక్టులు ఓపెన్ సోర్స్. కమ్యూనిటీ డెవలపర్‌లు కోడ్‌ని తనిఖీ చేయడానికి మరియు దానికి సహకరించడానికి అనుమతించే ఓపెన్ సోర్స్ ప్రాజెక్ట్‌లను మేము ఎక్కువగా జాబితా చేస్తాము. + +--- + +## ఉత్పత్తి క్రమం {#product-ordering} + +ఉత్పత్తులను ప్రత్యేకంగా ఆర్డర్ చేయకపోతే, అక్షర క్రమంలో, ఉత్పత్తులు కనీసం పేజీకి జోడించబడిన వాటి నుండి ప్రదర్శించబడతాయి. మరో మాటలో చెప్పాలంటే, సరికొత్త ఉత్పత్తులు జాబితా దిగువకు జోడించబడతాయి. + +--- + +## మీ డెవలపర్ ఉపకరణాన్ని జోడించండి {#how-decisions-about-the-site-are-made} + +మీరు ethereum.orgకి డెవలపర్ సాధనాన్ని జోడించాలనుకుంటే మరియు అది ప్రమాణాలకు అనుగుణంగా ఉంటే, GitHubలో సమస్యను సృష్టించండి. + + + సమస్యను సృష్టించండి + diff --git a/public/content/translations/te/contributing/adding-exchanges/index.md b/public/content/translations/te/contributing/adding-exchanges/index.md new file mode 100644 index 00000000000..34a1fcaae4c --- /dev/null +++ b/public/content/translations/te/contributing/adding-exchanges/index.md @@ -0,0 +1,40 @@ +--- +title: "మార్పిడిని జోడిస్తోంది" +description: "Ethereum.orgకి ఎక్స్ఛేంజీలను జోడించేటప్పుడు మేము ఉపయోగించే విధానం" +lang: te +--- + +# ఇతీరియము మార్పిడులను జోడించడం {#adding-ethereum-exchanges} + +Ethereum.orgలో కొత్త ఎక్స్ఛేంజీలను సూచించడానికి ఎవరైనా ఉచితం. + +మేము ప్రస్తుతం వాటిని జాబితా చేస్తాము: + +- [ethereum.org/get-eth](/get-eth/) + +ఈ పేజీ వినియోగదారుని వారు ఎక్కడ నివసిస్తున్నారో ఇన్‌పుట్ చేయడానికి మరియు వారు ఏ మార్పిడిని ఉపయోగించవచ్చో చూడటానికి అనుమతిస్తుంది. ఇది ఏదైనా భౌగోళిక పరిమితులను ముందుగానే అధిగమించడంలో సహాయపడుతుంది. + +ఈ సందర్భం కారణంగా, మీరు మార్పిడిని సూచించినప్పుడు మాకు కొంత నిర్దిష్ట సమాచారం అవసరం. + +**గమనిక:** మీరు ఒక వికేంద్రీకృత మార్పిడిని జాబితా చేయాలనుకుంటే, [వాలెట్లు మరియు డాప్స్‌ను జాబితా చేయడానికి మా విధానాన్ని](/contributing/adding-products/) పరిశీలించండి. + +## మాకు ఏమి కావాలి {#what-we-need} + +- మార్పిడికి వర్తించే భౌగోళిక పరిమితులు. మార్పిడికి సంబంధించిన భౌగోళిక పరిమితులు ప్రత్యేక పేజీ లేదా ఎక్స్ఛేంజ్ వెబ్‌సైట్‌లోని విభాగంలో వివరించబడాలి. +- కరెన్సీ వినియోగదారులు ETHని కొనుగోలు చేయడానికి ఉపయోగించవచ్చు +- మార్పిడి చట్టబద్ధమైన వ్యాపార సంస్థ అని రుజువు +- మీ వద్ద ఏదైనా అదనపు సమాచారం ఉండవచ్చు - ఇది కంపెనీకి సంబంధించిన సమాచారం అయిన సంవత్సరాలపాటు, ఆర్థిక మద్దతు మొదలైనవి కావచ్చు. + +[వినియోగదారులు ఉపయోగించగల మార్పిడిని కనుగొనడంలో ఖచ్చితంగా సహాయపడటానికి](/get-eth/#country-picker) మాకు ఈ సమాచారం అవసరం. + +మరియు మార్పిడి చట్టబద్ధమైన మరియు సురక్షితమైన సేవ అని ethereum.org మరింత నమ్మకంగా ఉంటుంది. + +--- + +## మీ మార్పిడిని జోడించండి {#add-exchange} + +మీరు ethereum.orgకి మార్పిడిని జోడించాలనుకుంటే, GitHubలో సమస్యను సృష్టించండి. + + + సమస్యను సృష్టించండి + diff --git a/public/content/translations/te/contributing/adding-glossary-terms/index.md b/public/content/translations/te/contributing/adding-glossary-terms/index.md new file mode 100644 index 00000000000..1c9a6d91714 --- /dev/null +++ b/public/content/translations/te/contributing/adding-glossary-terms/index.md @@ -0,0 +1,26 @@ +--- +title: "పదకోశం పదాలను జోడిస్తోంది" +lang: te +description: "Ethereum.org గ్లాసరీకి కొత్త నిబంధనలను జోడించడానికి మా ప్రమాణాలు" +--- + +# పదకోశ పదాలను జోడించడం {#contributing-to-ethereumorg-} + +ఈ స్థలం ప్రతిరోజూ మారుతోంది. కొత్త నిబంధనలు Ethereum వినియోగదారుల నిఘంటువులోకి నిరంతరం ప్రవేశిస్తున్నాయి మరియు Ethereum అన్ని విషయాల కోసం ఖచ్చితమైన, తాజా సూచనను అందించడంలో మాకు మీ సహాయం కావాలి. ప్రస్తుత [పదకోశం](/glossary/)ని తనిఖీ చేయండి మరియు మీరు సహాయం చేయాలనుకుంటే కింద చూడండి! + +## ప్రమాణాలు {#criteria} + +కొత్త గ్లాసరీ నిబంధనలు క్రింది ప్రమాణాల ద్వారా అంచనా వేయబడతాయి: + +- పదం/నిర్వచనం తాజాగా మరియు ప్రస్తుతం సంబంధితంగా ఉందా? +- డిక్షనరీలో ఇప్పటికే ఇలాంటి పదం ఉందా? (అలా అయితే, కొత్త పదం మరియు ఇప్పటికే ఉన్న పదాన్ని అప్‌డేట్ చేయడం వల్ల కలిగే ప్రయోజనాలను పరిగణించండి) +- ఉత్పత్తి ప్రకటన లేదా ఇతర ప్రచార కంటెంట్ యొక్క పదం/నిర్వచనం శూన్యమా? +- ఉత్పత్తి ప్రకటన లేదా ఇతర ప్రచార కంటెంట్ యొక్క పదం/నిర్వచనం శూన్యమా? +- నిర్వచనం లక్ష్యం, ఖచ్చితమైనది మరియు ఆత్మాశ్రయ తీర్పు లేదా అభిప్రాయం యొక్క శూన్యమా? +- మూలం నమ్మదగినదా? వారు తమ మూలాలను సూచిస్తారా? + +--- + +## మీ పదాన్ని జోడించండి {#how-decisions-about-the-site-are-made} + +మీరు ethereum.orgకి ఒక పదకోశ పదాన్ని జోడించాలనుకుంటే మరియు అది ప్రమాణాలకు అనుగుణంగా ఉంటే, [GitHubలో ఒక సమస్యను సృష్టించండి](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_glossary_term.yaml). diff --git a/public/content/translations/te/contributing/adding-layer-2s/index.md b/public/content/translations/te/contributing/adding-layer-2s/index.md new file mode 100644 index 00000000000..28b8661aee5 --- /dev/null +++ b/public/content/translations/te/contributing/adding-layer-2s/index.md @@ -0,0 +1,97 @@ +--- +title: "లేయర్ 2లను జోడించడం" +description: "Ethereum.orgకి లేయర్ 2ని జోడించేటప్పుడు మేము ఉపయోగించే విధానం" +lang: te +--- + +# లేయర్ 2లను జోడించడం {#adding-layer-2} + +మేము సాధ్యమైనంత ఉత్తమమైన వనరులను జాబితా చేయాలనుకుంటున్నాము, తద్వారా వినియోగదారులు లేయర్ 2 స్పేస్‌ను సురక్షితంగా మరియు నమ్మకంగా నావిగేట్ చేయగలరు. + +Ethereum.orgలో లేయర్ 2ని జోడించమని ఎవరైనా సూచించవచ్చు. మేము తప్పిపోయిన లేయర్ 2 ఏదైనా ఉంటే, **[దయచేసి దాన్ని సూచించండి](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_layer2.yaml)!** + +మేము ప్రస్తుతం క్రింది పేజీలలో L2లను జాబితా చేస్తాము: + +- [ఆశావాద రోలప్‌లు](/developers/docs/scaling/optimistic-rollups/) +- [జీరో-కనౌలెడ్జి రోలప్‌లు](/developers/docs/scaling/zk-rollups/) +- [లేయర్ 2](/layer-2/) + +లేయర్ 2 అనేది Ethereum కోసం సాపేక్షంగా కొత్త మరియు ఉత్తేజకరమైన ఉదాహరణ. మేము ethereum.orgలో పరిగణన కోసం సరసమైన ఫ్రేమ్‌వర్క్‌ను రూపొందించడానికి ప్రయత్నించాము, అయితే జాబితా ప్రమాణాలు కాలక్రమేణా మారుతాయి మరియు అభివృద్ధి చెందుతాయి. + +## నిర్ణయ ఫ్రేమ్‌వర్క్ {#decision-framework} + +### చేర్చడం కోసం ప్రమాణాలు: తప్పనిసరిగా ఉండాల్సినవి {#criteria-for-inclusion-the-must-haves} + +**L2BEATలో జాబితా** + +- పరిగణించబడాలంటే, ఈ ప్రాజెక్ట్ తప్పనిసరిగా [L2BEAT](https://l2beat.com)లో జాబితా చేయబడాలి. L2BEAT L2 ప్రాజెక్ట్‌లను మూల్యాంకనం చేయడానికి మేము ఆధారపడే లేయర్ 2 ప్రాజెక్ట్‌ల యొక్క బలమైన ప్రమాద అంచనాను అందిస్తుంది. **L2BEATలో ప్రాజెక్ట్ ప్రదర్శించబడకపోతే, మేము వాటిని ethereum.orgలో L2గా జాబితా చేయము.** +- [మీ L2 ప్రాజెక్ట్‌ను L2BEATకి ఎలా జోడించాలో తెలుసుకోండి](https://github.com/l2beat/l2beat/blob/master/CONTRIBUTING.md). + +**ఓపెన్ సోర్స్** + +- మీ కోడ్ తప్పనిసరిగా ప్రాప్యత చేయబడాలి మరియు మీరు విస్తృత సంఘం నుండి PRలను అంగీకరించాలి. + +**లేయర్ 2 వర్గం** + +మేము ప్రస్తుతం కింది వాటిని లేయర్ 2 పరిష్కారాలుగా పరిగణించాము: + +- ఆశావాద రోల్అప్ +- జీరో-నాలెడ్జ్ రోల్అప్ + +_డేటా లభ్యత లేదా భద్రత కోసం Ethereumని ఉపయోగించని ఇతర స్కేలింగ్ పరిష్కారాలను మేము లేయర్ 2గా పరిగణించము._ + +**డేటా లభ్యత కోసం Ethereum** + +- డేటా లభ్యత అనేది ఇతర స్కేలింగ్ సొల్యూషన్స్ మరియు లేయర్ 2 మధ్య ఒక ముఖ్యమైన భేద కారకం. జాబితా కోసం పరిగణించబడాలంటే, ఒక ప్రాజెక్ట్ డేటా లభ్యత కోసం **తప్పనిసరిగా** Ethereum Mainnetను ఉపయోగించాలి. + +**వంతెనలు** + +- లేయర్ 2కి యూజర్లు ఎలా ఆన్‌బోర్డ్ చేయగలరు? + +**ప్రాజెక్ట్ లైవ్‌కి వచ్చిన తేదీ** + +- మెయిన్‌నెట్‌లో 6 నెలలకు పైగా "ప్రత్యక్షంగా" ఉన్న లేయర్ 2 + +- వినియోగదారులచే యుద్ధ-పరీక్ష చేయని కొత్త ప్రాజెక్ట్‌లు జాబితా చేయబడే అవకాశం తక్కువ. + +**బాహ్య భద్రతా ఆడిట్** + +- ఆడిట్ ద్వారా, అంతర్గత భద్రతా బృందం లేదా మరేదైనా పద్ధతి ద్వారా, మీ ఉత్పత్తి యొక్క భద్రత తప్పనిసరిగా విశ్వసనీయంగా పరీక్షించబడాలి. ఇది మా వినియోగదారులకు ప్రమాదాన్ని తగ్గిస్తుంది మరియు మీరు భద్రతను తీవ్రంగా పరిగణిస్తున్నారని మాకు చూపుతుంది. + +**నిరంతర వినియోగదారు బేస్** + +- మేము TVL చరిత్ర, లావాదేవీ గణాంకాలు మరియు తెలిసిన కంపెనీలు లేదా ప్రాజెక్ట్‌లు ఉపయోగించాలా వంటి కొలమానాలను పరిశీలిస్తాము + +**క్రియాశీల అభివృద్ధి బృందం** + +- ప్రాజెక్ట్‌లో పనిచేసే యాక్టివ్ టీమ్ లేని లేయర్ 2ని మేము జాబితా చేయము. + +**బ్లాక్ ఎక్స్‌ప్లోరర్** + +- వినియోగదారులను సులభంగా చైన్‌ని నావిగేట్ చేయడానికి అనుమతించడానికి జాబితా చేయబడిన ప్రాజెక్ట్‌లకు వర్కింగ్ బ్లాక్ ఎక్స్‌ప్లోరర్ అవసరం. + +### ఇతర ప్రమాణాలు: ఉంటే మంచివి {#nice-to-haves} + +**ప్రాజెక్ట్ కోసం ఎక్స్ఛేంజ్ మద్దతు** + +- వినియోగదారులు ఎక్స్ఛేంజ్ నుండి నేరుగా డిపాజిట్ మరియు/లేదా ఉపసంహరించుకోగలరా? + +**లేయర్ 2 పర్యావరణ వ్యవస్థలో డాప్స్‌కు లింక్‌లు** + +- ఈ లేయర్ 2లో వినియోగదారులు ఏమి చేయవచ్చనే దాని గురించి మేము సమాచారాన్ని అందించగలగాలి. (ఉదా., https://portal.arbitrum.io/, https://www.optimism.io/apps) + +**టోకెన్ కాంట్రాక్ట్ జాబితాలు** + +- లేయర్ 2లో ఆస్తులు కొత్త చిరునామాను కలిగి ఉంటాయి కాబట్టి, టోకెన్ జాబితా వనరు అందుబాటులో ఉంటే దయచేసి భాగస్వామ్యం చేయండి. + +**స్థానిక వాలెట్ మద్దతు** + +- ఏదైనా వాలెట్లు స్థానికంగా L2కి మద్దతు ఇస్తాయా? + +## మీ లేయర్ 2ని జోడించండి {#add-exchange} + +మీరు ethereum.orgకి లేయర్ 2ని జోడించాలనుకుంటే, GitHubలో సమస్యను సృష్టించండి. + + + సమస్యను సృష్టించండి + diff --git a/public/content/translations/te/contributing/adding-products/index.md b/public/content/translations/te/contributing/adding-products/index.md new file mode 100644 index 00000000000..016799a52cc --- /dev/null +++ b/public/content/translations/te/contributing/adding-products/index.md @@ -0,0 +1,100 @@ +--- +title: "ప్రోడక్ట్‌లను జోడించడం" +description: "Ethereum.orgకి డాప్‌లను జోడించేటప్పుడు మేము ఉపయోగించే విధానం" +lang: te +--- + +# ఇతీరియము ఉత్పత్తులను జోడించడం {#adding-products} + +Ethereum.orgలోని కంటెంట్‌కు కొత్త డాప్‌లను సూచించడానికి ఎవరైనా ఉచితం, ఇక్కడ అలా చేయడం సముచితం. **లేదు, మేము మీ డాప్‌ను మా హోమ్‌పేజీలో జాబితా చేయము** 😜 + +Dapps ప్రస్తుతం జాబితా చేయబడ్డాయి: + +- ethereum.org/dapps +- ethereum.org/get-eth + +**దయచేసి ఈ పేజీలలో కొత్త చేర్పులను మాత్రమే సూచించండి.** + +మేము కొత్త జోడింపులను స్వాగతిస్తున్నప్పటికీ, మేము మా వినియోగదారుల కోసం సృష్టించడానికి ప్రయత్నిస్తున్న అనుభవం ఆధారంగా ప్రస్తుత డాప్‌లను ఎంచుకున్నాము. ఇవి మా డిజైన్ సూత్రాలలో కొన్నింటిపై ఆధారపడి ఉన్నాయి: + +- _స్పూర్తిదాయకం_: ethereum.orgలో ఏదైనా వినియోగదారులకు కొత్తదనాన్ని అందించాలి +- _మంచి కథనం_: జాబితా చేయబడినవి "ఆహా" క్షణాన్ని అందించాలి +- _విశ్వసనీయమైనది_: వినియోగదారులకు ప్రమాదాన్ని తగ్గించడానికి ప్రతిదీ చట్టబద్ధమైన వ్యాపారాలు/ప్రాజెక్ట్‌లుగా ఉండాలి + +మొత్తంమీద **ethereum.org కొత్త వినియోగదారులకు "అతుకులు లేని ఆన్‌బోర్డింగ్ అనుభవాన్ని" అందించాలనుకుంటోంది**. ఆ కారణంగా, మేము వాటి ఆధారంగా డాప్‌లను జోడిస్తాము: + +- వాడుకలో సౌలభ్యం +- ఇతర ఉత్పత్తులతో పరస్పర చర్య +- భద్రత +- దీర్ఘాయువు + +ఇక్కడ మా నిర్ణయం ఫ్రేమ్‌వర్క్ మరింత వివరంగా ఉంది. అభిప్రాయాన్ని అందించడానికి లేదా మార్పులను సూచించడానికి సంకోచించకండి. + +## నిర్ణయ ఫ్రేమ్‌వర్క్ {#decision-framework} + +### చేర్చడం కోసం ప్రమాణాలు: తప్పనిసరిగా ఉండాల్సినవి {#criteria-for-inclusion-the-must-haves} + +- **భద్రత-పరీక్షించిన ఉత్పత్తి** – ఆడిట్, అంతర్గత భద్రతా బృందం లేదా మరేదైనా పద్ధతి ద్వారా అయినా, మీ ఉత్పత్తి యొక్క భద్రత తప్పనిసరిగా విశ్వసనీయంగా పరీక్షించబడాలి. ఇది మా వినియోగదారులకు ప్రమాదాన్ని తగ్గిస్తుంది మరియు మీరు భద్రతను తీవ్రంగా పరిగణిస్తున్నారని మాకు చూపుతుంది. +- **6 నెలలకు పైగా "లైవ్"లో ఉన్న ఉత్పత్తి** – ఇది భద్రతకు మరో సూచన. క్లిష్టమైన బగ్‌లు మరియు దోపిడీలను కనుగొనడానికి 6 నెలలు మంచి సమయం. +- **క్రియాశీల బృందం ద్వారా పని చేయబడింది** – ఇది నాణ్యతను నిర్ధారించడంలో సహాయపడుతుంది మరియు వినియోగదారు వారి ప్రశ్నలకు మద్దతును పొందేలా చూస్తుంది. +- **నిజాయితీ మరియు ఖచ్చితమైన లిస్టింగ్ సమాచారం** - ప్రాజెక్ట్‌ల నుండి సూచించబడిన ఏవైనా లిస్టింగ్‌లు నిజాయితీ మరియు ఖచ్చితమైన సమాచారంతో వస్తాయని ఆశించబడుతోంది. మీ ఉత్పత్తిని "ఓపెన్-సోర్స్" అని ప్రకటించడం వంటి జాబితా సమాచారాన్ని తప్పుదారి పట్టించే ఉత్పత్తులు తీసివేయబడతాయి. + +### ర్యాంకింగ్ కోసం ప్రమాణాలు: ఉంటే మంచివి {#criteria-for-ranking-the-nice-to-haves} + +ఈ క్రింది ప్రమాణాల కారణంగా మీ dapp ethereum.orgలో ఇతరుల వలె ప్రముఖంగా జాబితా చేయబడకపోవచ్చు. + +**డాప్స్** + +- **జాబితా చేయబడిన చాలా వాలెట్ల ద్వారా మీరు దీనిని యాక్సెస్ చేయవచ్చు** – ethereum.orgలో జాబితా చేయబడిన చాలా వాలెట్లతో డాప్స్ పనిచేయాలి. +- **వినియోగదారులు స్వయంగా దీనిని ప్రయత్నించవచ్చు –** ఒక వ్యక్తిగత వినియోగదారు మీ డాప్‌ను ఉపయోగించగలగాలి మరియు స్పష్టమైనదాన్ని సాధించగలగాలి. +- **ఆన్‌బోర్డింగ్** – వినియోగదారులకు సహాయం చేయడానికి మరియు అవగాహన కల్పించడానికి మీ ఉత్పత్తికి చక్కగా డిజైన్ చేయబడిన ఆన్‌బోర్డింగ్ అనుభవం ఉండాలి. లేదా కథనాలు లేదా వీడియోల వంటి కంటెంట్ ఎలా చేయాలో రుజువు. +- **నాన్-కస్టోడియల్** – వినియోగదారులు తమ నిధులను నియంత్రించుకుంటారు. మీ ఉత్పత్తి అదృశ్యమైతే, వినియోగదారులు ఇప్పటికీ వారి నిధులను యాక్సెస్ చేయవచ్చు మరియు తరలించవచ్చు. +- **ప్రపంచవ్యాప్తంగా అందుబాటులో ఉండాలి** – మీ సేవను యాక్సెస్ చేయకుండా నిర్దిష్ట వ్యక్తులను మినహాయించే భౌగోళిక పరిమితులు లేదా KYC అవసరాలు మీ ఉత్పత్తికి ఉండకూడదు. +- **ఓపెన్ సోర్స్** – మీ కోడ్ అందుబాటులో ఉండాలి మరియు మీరు విస్తృత కమ్యూనిటీ నుండి PRలను అంగీకరించాలి. +- **కమ్యూనిటీ** – మీకు ఒక ప్రత్యేక కమ్యూనిటీ, బహుశా ఒక Discord ఉండాలి, ఇక్కడ వినియోగదారులు సహాయం పొందడానికి లేదా కొత్త ఫీచర్‌లను సూచించడానికి మీ బృందంతో సంకర్షణ చెందగలరు. + +## ఆచరణలో ప్రమాణాలు {#criteria-in-practice} + +మీరు ఎంత ఎక్కువ ప్రమాణాలను పూరిస్తే, మీ ఉత్పత్తి ethereum.orgలో చేరే అవకాశం ఉంది. + +తప్పనిసరిగా కలిగి ఉండవలసినవి మరియు అనేక మంచి-ఉండవలసిన వాటిని కలిసే కొత్త ఉత్పత్తిని సూచించినట్లయితే తప్పనిసరిగా కలిగి ఉండవలసిన వాటికి మాత్రమే సరిపోయే జాబితా చేయబడిన ఉత్పత్తి తీసివేయబడుతుంది. + +ఈ నిర్ణయానికి కారణమయ్యే ఇతర అంశాలు: + +- భర్తీ చేయడం కంటే జోడించడం పేజీ యొక్క UXని విచ్ఛిన్నం చేస్తుందా? + - మా సైట్ ప్రాథమికంగా విద్యాసంబంధమైనది మరియు Ethereum మరియు దాని సంబంధిత భావనలను వివరించడం ప్రధాన ఉద్దేశ్యం. వినియోగదారుల కోసం అనేక ఎంపికలను జోడించడం ద్వారా, పేజీలు తక్కువ చదవగలిగేలా మరియు తక్కువ ఉపయోగకరంగా మారవచ్చు. +- ఈ పేజీ ఇప్పుడు వినియోగదారుని ఎంపికలతో స్తంభింపజేస్తుందా? + - మీరు నెట్‌ఫ్లిక్స్‌ని గంటల తరబడి బ్రౌజ్ చేస్తూ కూర్చున్నప్పుడు, మీరు ఏదైనా చూడాలని నిర్ణయించుకోలేరు. ఎక్కువ ఎంపికతో కొత్త వినియోగదారులను వెదజల్లడం ప్రమాదం. + +ఇది ethereum.org బాధ్యత వహించే డిజైన్ నిర్ణయం. + +కానీ నిశ్చింతగా ఉండండి, **మరిన్ని డాప్స్‌ను ర్యాంక్ చేసే ఇతర వెబ్‌సైట్‌లకు లింక్‌లు ఉంటాయి** + +### ఉత్పత్తి క్రమం {#product-ordering} + +ఉత్పత్తులను ప్రత్యేకంగా ఆర్డర్ చేయకపోతే, అక్షరక్రమంలో, ఉత్పత్తులు చాలా వరకు ప్రదర్శించబడతాయి మరియు కనీసం ఇటీవల పేజీకి జోడించబడతాయి. మరో మాటలో చెప్పాలంటే, సరికొత్త ఉత్పత్తులు జాబితా దిగువకు జోడించబడతాయి. + +### వినియోగ నిబంధనలు {#terms-of-use} + +దయచేసి మా [వినియోగ నిబంధనలని](/terms-of-use/) కూడా చూడండి. Ethereum.orgలోని సమాచారం సాధారణ సమాచార ప్రయోజనాల కోసం మాత్రమే అందించబడింది. + +## నిర్వహణ {#maintenance} + +Ethereum యొక్క ద్రవ స్వభావం వలె, బృందాలు మరియు ఉత్పత్తులు వస్తాయి మరియు వెళ్తాయి మరియు ఆవిష్కరణలు ప్రతిరోజూ జరుగుతాయి, కాబట్టి మేము మా కంటెంట్‌ని సాధారణ తనిఖీలను చేస్తాము: + +- జాబితా చేయబడిన అన్ని డాప్‌లు ఇప్పటికీ మా ప్రమాణాలకు అనుగుణంగా ఉన్నాయని నిర్ధారించుకోండి +- ప్రస్తుతం జాబితా చేయబడిన వాటి కంటే మా ప్రమాణాలకు అనుగుణంగా సూచించబడిన ఉత్పత్తులు లేవని ధృవీకరించండి + +తనిఖీ చేసి, మాకు తెలియజేయడం ద్వారా మీరు దీనికి సహాయం చేయవచ్చు. [ఒక సమస్యను సృష్టించండి](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=) లేదా [website@ethereum.org](mailto:website@ethereum.org)కి ఒక ఇమెయిల్ పంపండి + +_మేము ఓటింగ్ కోసం ఎంపికలను కూడా పరిశీలిస్తున్నాము, తద్వారా కమ్యూనిటీ వారి ప్రాధాన్యతలను సూచించగలదు మరియు మేము సిఫార్సు చేయడానికి ఉత్తమమైన ఉత్పత్తులను హైలైట్ చేయగలదు._ + +--- + +## మీ ఉత్పత్తిని జోడించండి {#add-your-product} + +మీరు ethereum.orgకి ఒక డాప్‌ను జోడించాలనుకుంటే మరియు అది ప్రమాణాలకు అనుగుణంగా ఉంటే, దయచేసి మాకు తెలియజేయండి. + + + ఒక యాప్‌ను సూచించండి + diff --git a/public/content/translations/te/contributing/adding-resources/index.md b/public/content/translations/te/contributing/adding-resources/index.md new file mode 100644 index 00000000000..cd7306a65e2 --- /dev/null +++ b/public/content/translations/te/contributing/adding-resources/index.md @@ -0,0 +1,53 @@ +--- +title: "వనరులను జోడిస్తోంది" +description: "ethereum.orgకి వనరులను జోడించేటప్పుడు మేము ఉపయోగించే విధానం" +lang: te +--- + +# వనరులను జోడిస్తోంది {#adding-resources} + +వినియోగదారులను సురక్షితంగా మరియు నమ్మకంగా ఉంచేటప్పుడు మేము సాధ్యమైనంత ఉత్తమమైన వనరులను జాబితా చేయాలనుకుంటున్నాము. + +ప్రస్తుతం [ethereum.org/resources](/resources/) లో ఉన్న ethereum.org లోని వనరుల డాష్‌బోర్డ్‌కు జోడించడానికి కొత్త వనరులను సూచించడానికి ఎవరైనా స్వేచ్ఛగా ఉన్నారు. + +మేము కొత్త చేర్పులను స్వాగతిస్తున్నప్పటికీ, మా వినియోగదారుల కోసం మేము సృష్టించడానికి ప్రయత్నిస్తున్న అనుభవం ఆధారంగా ప్రస్తుత వనరులను ఎంచుకున్నాము. ఇవి మా డిజైన్ సూత్రాలలో కొన్నింటిపై ఆధారపడి ఉన్నాయి: + +- _స్పూర్తిదాయకం_: ethereum.orgలో ఏదైనా వినియోగదారులకు కొత్తదనాన్ని అందించాలి +- _మంచి కథనం_: జాబితా చేయబడినవి "ఆహా" క్షణాన్ని అందించాలి +- _విశ్వసనీయమైనది_: వినియోగదారులకు ప్రమాదాన్ని తగ్గించడానికి ప్రతిదీ చట్టబద్ధమైన వ్యాపారాలు/ప్రాజెక్ట్‌లుగా ఉండాలి + +మొత్తంమీద **కొత్త వినియోగదారులకు అతుకులు లేని ఆన్‌బోర్డింగ్ అనుభవాన్ని అందించాలని ethereum.org లక్ష్యంగా పెట్టుకుంది**. ఆ కారణంగా, మేము వాటి ఆధారంగా వనరులను జోడిస్తాము: + +- వాడుకలో సౌలభ్యం +- ఖచ్చితత్వం +- నిర్వహణ + +## నిర్ణయ ఫ్రేమ్‌వర్క్ {#decision-framework} + +### ప్రమాణాలు {#criteria} + +- **నిజాయితీ మరియు ఖచ్చితమైన జాబితా సమాచారం** - సూచించిన ఏవైనా జాబితాలు నిజాయితీ మరియు ఖచ్చితమైన సమాచారంతో రావాలి. సమాచారాన్ని తప్పుగా చూపే ఉత్పత్తులు తీసివేయబడతాయి. +- **క్రియాశీల ప్రాజెక్ట్** – వినియోగదారులకు నాణ్యత మరియు మద్దతును నిర్ధారించడానికి ఈ వనరును ఒక క్రియాశీల బృందం నిర్వహించాలి. కాలం చెల్లిన వనరులు తొలగింపునకు లోబడి ఉంటాయి. + +### ఉత్పత్తి క్రమం {#product-ordering} + +వాటి ప్రభావం ఆధారంగా ఉత్పత్తులను ఆర్డర్ చేసే హక్కు మాకు ఉంది. ప్రత్యేకంగా పేర్కొనకపోతే కొత్త ఉత్పత్తులు సాధారణంగా జాబితా దిగువన జోడించబడతాయి. + +## నిర్వహణ {#maintenance} + +Ethereum పర్యావరణ వ్యవస్థ అభివృద్ధి చెందుతున్న కొద్దీ, మేము మా కంటెంట్‌ను మామూలుగా తనిఖీ చేస్తాము: + +- జాబితా చేయబడిన అన్ని వనరులు ఇప్పటికీ మా ప్రమాణాలకు అనుగుణంగా ఉన్నాయని నిర్ధారించుకోండి +- ప్రస్తుతం జాబితా చేయబడిన వాటి కంటే మా ప్రమాణాలకు అనుగుణంగా సూచించబడిన ఉత్పత్తులు లేవని ధృవీకరించండి + +తనిఖీ చేసి, మాకు తెలియజేయడం ద్వారా మీరు దీనికి సహాయం చేయవచ్చు. [ఒక సమస్యను సృష్టించండి](https://github.com/ethereum/ethereum-org-website/issues/new?template=bug_report.yaml) లేదా [website@ethereum.org](mailto:website@ethereum.org) కు ఇమెయిల్ పంపండి. + +--- + +## మీ వనరును జోడించండి {#add-your-resource} + +మీరు ethereum.org కు ఒక వనరును జోడించాలనుకుంటే మరియు అది ప్రమాణాలకు అనుగుణంగా ఉంటే, GitHub లో ఒక సమస్యను సృష్టించండి. + + + సమస్యను సృష్టించండి + diff --git a/public/content/translations/te/contributing/adding-staking-products/index.md b/public/content/translations/te/contributing/adding-staking-products/index.md new file mode 100644 index 00000000000..bef1494ac6b --- /dev/null +++ b/public/content/translations/te/contributing/adding-staking-products/index.md @@ -0,0 +1,176 @@ +--- +title: "స్టాకింగ్ ఉత్పత్తులు లేదా సేవలను జోడిస్తోంది" +description: "Ethereum.orgకి స్టాకింగ్ ఉత్పత్తులు లేదా సేవలను జోడించేటప్పుడు మేము ఉపయోగించే విధానం" +lang: te +--- + +# స్టేకింగ్ ఉత్పత్తులు లేదా సేవలను జోడించడం {#adding-staking-products-or-services} + +వినియోగదారులను సురక్షితంగా మరియు నమ్మకంగా ఉంచేటప్పుడు మేము సాధ్యమైనంత ఉత్తమమైన వనరులను జాబితా చేయాలనుకుంటున్నాము. + +Ethereum.orgలో స్టాకింగ్ ఉత్పత్తులు లేదా సేవను జోడించమని ఎవరైనా సూచించవచ్చు. మేము ఒకటి మిస్ అయితే, **[దయచేసి దానిని సూచించండి](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_staking_product.yaml)!** + +మేము ప్రస్తుతం కింది పేజీలలో స్టాకింగ్ ఉత్పత్తులు మరియు సేవలను జాబితా చేస్తాము: + +- [సోలో స్టేకింగ్](/staking/solo/) +- [సేవగా స్టేకింగ్](/staking/saas/) +- [స్టేకింగ్ పూల్స్](/staking/pools/) + +బీకాన్ చైన్‌పై ప్రూఫ్-ఆఫ్-స్టాక్ డిసెంబర్ 1, 2020 నుండి ప్రత్యక్ష ప్రసారం చేయబడింది. స్టాకింగ్ ఇప్పటికీ సాపేక్షంగా కొత్తది అయినప్పటికీ, మేము ethereum.orgలో పరిశీలన కోసం న్యాయమైన మరియు పారదర్శక ఫ్రేమ్‌వర్క్‌ను రూపొందించడానికి ప్రయత్నించాము, అయితే జాబితా ప్రమాణాలు కాలక్రమేణా మారుతాయి మరియు అభివృద్ధి చెందుతాయి మరియు చివరికి ethereum.org వెబ్‌సైట్ బృందం యొక్క అభీష్టానుసారం ఉంటుంది. + +## నిర్ణయ చట్రం {#the-decision-framework} + +Ethereum.orgలో ఉత్పత్తిని జాబితా చేయాలనే నిర్ణయం ఏదైనా ఒక అంశంపై ఆధారపడి ఉండదు. ఉత్పత్తి లేదా సేవను జాబితా చేయాలని నిర్ణయించేటప్పుడు బహుళ ప్రమాణాలు కలిసి పరిగణించబడతాయి. ఈ ప్రమాణాలు ఎంత ఎక్కువగా ఉంటే, అది జాబితా చేయబడే అవకాశం ఎక్కువగా ఉంటుంది. + +**ముందుగా, ఇది ఏ వర్గం ఉత్పత్తి లేదా సేవ?** + +- ముందుగా, ఇది ఏ వర్గం ఉత్పత్తి లేదా సేవ +- ముందుగా, ఇది ఏ వర్గం ఉత్పత్తి లేదా సేవ +- Staking as a service (SaaS) +- స్టాకింగ్ పూల్ + +ప్రస్తుతం, మేము ఈ వర్గాలలో ఉత్పత్తులు లేదా సేవలను మాత్రమే జాబితా చేస్తున్నాము. + +### చేర్చడానికి ప్రమాణాలు {#criteria-for-inclusion} + +స్టాకింగ్ ఉత్పత్తులు లేదా సేవల సమర్పణలు క్రింది ప్రమాణాల ద్వారా అంచనా వేయబడతాయి: + +**ప్రాజెక్ట్ లేదా సర్వీస్ ఎప్పుడు ప్రారంభించబడింది?** + +- ఉత్పత్తి లేదా సేవ ప్రజలకు ఎప్పుడు అందుబాటులోకి వచ్చింది అనేదానికి ఆధారాలు ఉన్నాయా? +- ఉత్పత్తులను "యుద్ధం పరీక్షించిన" స్కోర్‌ని నిర్ణయించడానికి ఇది ఉపయోగించబడుతుంది. + +**ప్రాజెక్ట్ చురుకుగా నిర్వహించబడుతుందా?** + +- ప్రాజెక్ట్‌ను అభివృద్ధి చేస్తున్న యాక్టివ్ టీమ్ ఉందా? ఎవరు పాల్గొంటారు? +- చురుకుగా నిర్వహించబడే ఉత్పత్తులు మాత్రమే పరిగణించబడతాయి. + +**ఉత్పత్తి లేదా సేవ విశ్వసనీయ/మానవ మధ్యవర్తులు లేకుండా ఉందా?** + +- వినియోగదారుల ప్రయాణంలో మానవులు తమ నిధులకు కీలను పట్టుకోవడం లేదా రివార్డ్‌లను సరిగ్గా పంపిణీ చేయడం వంటి వాటిని విశ్వసించాల్సిన అవసరం ఏమిటి? +- ఇది ఉత్పత్తి లేదా సేవల "విశ్వసనీయ" స్కోర్‌ని నిర్ణయించడానికి ఉపయోగించబడుతుంది. + +**ప్రాజెక్ట్ ఖచ్చితమైన మరియు నమ్మదగిన సమాచారాన్ని అందజేస్తుందా?** + +- ఉత్పత్తి యొక్క వెబ్‌సైట్ తాజా, ఖచ్చితమైన మరియు తప్పుదారి పట్టించే సమాచారాన్ని కలిగి ఉండటం చాలా ముఖ్యం, ప్రత్యేకించి ఇది Ethereum ప్రోటోకాల్ లేదా ఇతర సంబంధిత సాంకేతికతలకు సంబంధించినది అయితే. +- Ethereum లేదా ఇతర సంబంధిత విషయాల గురించి తప్పుడు సమాచారం, కాలం చెల్లిన వివరాలు లేదా తప్పుదారి పట్టించే స్టేట్‌మెంట్‌లను కలిగి ఉన్న సమర్పణలు జాబితా చేయబడవు లేదా ఇప్పటికే జాబితా చేయబడినట్లయితే తీసివేయబడతాయి. + +**ఏ ప్లాట్‌ఫారమ్‌లకు మద్దతు ఉంది?** + +- అంటే, Linux, macOS, Windows, iOS, Android + +#### సాఫ్ట్‌వేర్ మరియు స్మార్ట్ కాంట్రాక్టులు {#software-and-smart-contracts} + +ఏదైనా అనుకూల సాఫ్ట్‌వేర్ లేదా స్మార్ట్ కాంట్రాక్టుల కోసం: + +**అంతా ఓపెన్ సోర్సా?** + +- ఓపెన్ సోర్స్ ప్రాజెక్ట్‌లు పబ్లిక్‌గా అందుబాటులో ఉండే సోర్స్ కోడ్ రిపోజిటరీని కలిగి ఉండాలి +- ఉత్పత్తుల "ఓపెన్ సోర్స్" స్కోర్‌ని నిర్ణయించడానికి ఇది ఉపయోగించబడుతుంది. + +**ఉత్పత్తి _బీటా_ అభివృద్ధి నుండి బయటపడిందా?** + +- ఉత్పత్తి దాని అభివృద్ధి చక్రంలో ఎక్కడ ఉంది? +- బీటా దశలో ఉన్న ఉత్పత్తులు ethereum.orgలో చేర్చడానికి పరిగణించబడవు + +**సాఫ్ట్‌వేర్ బాహ్య భద్రతా ఆడిట్‌కు గురైందా?** + +- లేకపోతే, బాహ్య ఆడిట్ నిర్వహించడానికి ప్రణాళికలు ఉన్నాయా? +- ఇది ఉత్పత్తుల "ఆడిట్" స్కోర్‌ని నిర్ణయించడానికి ఉపయోగించబడుతుంది. + +**ప్రాజెక్ట్‌లో బగ్ బౌంటీ ప్రోగ్రామ్ ఉందా?** + +- లేకపోతే, సెక్యూరిటీ బగ్ బౌంటీని సృష్టించే ప్రణాళికలు ఉన్నాయా? +- ఇది ఉత్పత్తుల "బగ్ బౌంటీ" స్కోర్‌ని నిర్ణయించడానికి ఉపయోగించబడుతుంది. + +#### నోడ్ లేదా క్లయింట్ టూలింగ్ {#node-or-client-tooling} + +నోడ్ లేదా క్లయింట్ సెటప్, మేనేజ్‌మెంట్ లేదా మైగ్రేషన్‌కు సంబంధించిన సాఫ్ట్‌వేర్ ఉత్పత్తుల కోసం: + +**ఏ ఏకాభిప్రాయం లేయర్ క్లయింట్లు (అంటే, Lighthouse, Teku, Nimbus, Prysm, Grandine) మద్దతివ్వబడతాయి?** + +- ఏ క్లయింట్‌లకు మద్దతు ఉంది? వినియోగదారు ఎంచుకోవచ్చా? +- ఇది ఉత్పత్తుల "బహుళ-క్లయింట్" స్కోర్‌ను నిర్ణయించడానికి ఉపయోగించబడుతుంది. + +#### సేవగా స్టేకింగ్ {#staking-as-a-service} + +[సేవగా-స్టేకింగ్ జాబితాల](/staking/saas/) కోసం (అంటే, డెలిగేటెడ్ నోడ్ ఆపరేషన్): + +**సేవను ఉపయోగించడంతో అనుబంధించబడిన రుసుములు ఏమిటి?** + +- రుసుము నిర్మాణం ఏమిటి, ఉదా., సేవ కోసం నెలవారీ రుసుము ఉందా? +- ఏవైనా అదనపు స్టాకింగ్ అవసరాలు? + +**వినియోగదారులు ఖాతా కోసం సైన్-అప్ చేయాల్సిన అవసరం ఉందా?** + +- ఎవరైనా అనుమతి లేదా KYC లేకుండా సేవను ఉపయోగించవచ్చా? +- ఉత్పత్తుల "అనుమతి లేని" స్కోర్‌ను నిర్ణయించడానికి ఇది ఉపయోగించబడుతుంది. + +**సంతకం కీలు, మరియు ఉపసంహరణ కీలను ఎవరు కలిగి ఉన్నారు?** + +- వినియోగదారు ఏ కీలకు యాక్సెస్‌ను నిర్వహిస్తారు? సేవ ఏ కీలను యాక్సెస్ చేస్తుంది? +- ఉత్పత్తులను "నమ్మకమైన" స్కోర్‌ని నిర్ణయించడానికి ఇది ఉపయోగించబడుతుంది. + +**నిర్వహించబడుతున్న నోడ్‌ల క్లయింట్ వైవిధ్యం ఏమిటి?** + +- మెజారిటీ ఏకాభిప్రాయ లేయర్ (CL) క్లయింట్ ద్వారా ఎంత శాతం వాలిడేటర్ కీలు అమలు చేయబడుతున్నాయి? +- చివరి సవరణ ప్రకారం, Prysm అనేది మెజారిటీ నోడ్ ఆపరేటర్‌లచే నిర్వహించబడుతున్న ఏకాభిప్రాయ లేయర్ క్లయింట్, ఇది నెట్‌వర్క్‌కు ప్రమాదకరం. ఏదైనా CL క్లయింట్ ప్రస్తుతం నెట్‌వర్క్‌లో 33% పైగా ఉపయోగిస్తుంటే, మేము దాని వినియోగానికి సంబంధించిన డేటాను అభ్యర్థిస్తాము. +- ఉత్పత్తుల "వైవిధ్యమైన క్లయింట్లు" స్కోర్‌ని నిర్ణయించడానికి ఇది ఉపయోగించబడుతుంది. + +#### స్టేకింగ్ పూల్ {#staking-pool} + +[పూల్డ్ స్టేకింగ్ సేవల](/staking/pools/) కోసం: + +**వాటా కోసం అవసరమైన కనీస ETH ఎంత?** + +- ఉదా., 0.01 ETH + +**ఇందులో ఉన్న ఫీజులు లేదా స్టేకింగ్ అవసరాలు ఏమిటి?** + +- రివార్డ్‌లలో ఎంత శాతం ఫీజుగా తీసివేయబడుతుంది? +- ఏవైనా అదనపు స్టాకింగ్ అవసరాలు? + +**లిక్విడిటీ టోకెన్ ఉందా?** + +- టోకెన్‌లు ఏవి చేరి ఉన్నాయి? అవి ఎలా పని చేస్తాయి? ఒప్పంద చిరునామాలు ఏమిటి? +- ఉత్పత్తుల "లిక్విడిటీ టోకెన్" స్కోర్‌ని నిర్ణయించడానికి ఇది ఉపయోగించబడుతుంది. + +**వినియోగదారులు నోడ్ ఆపరేటర్‌గా పాల్గొనవచ్చా?** + +- పూల్ చేసిన నిధులను ఉపయోగించి వాలిడేటర్ క్లయింట్‌లను అమలు చేయడానికి ఏమి అవసరం? +- దీనికి వ్యక్తి, కంపెనీ లేదా DAO నుండి అనుమతి అవసరమా? +- ఇది ఉత్పత్తుల "అనుమతి లేని నోడ్స్" స్కోర్‌ను నిర్ణయించడానికి ఉపయోగించబడుతుంది. + +**పూల్ నోడ్ ఆపరేటర్ల క్లయింట్ వైవిధ్యం ఏమిటి?** + +- నోడ్ ఆపరేటర్లలో ఎంత శాతం మంది ఏకాభిప్రాయ లేయర్ (CL) క్లయింట్‌ను అమలు చేస్తున్నారు? +- చివరి సవరణ ప్రకారం, Prysm అనేది మెజారిటీ నోడ్ ఆపరేటర్‌లచే నిర్వహించబడుతున్న ఏకాభిప్రాయ లేయర్ క్లయింట్, ఇది నెట్‌వర్క్‌కు ప్రమాదకరం. ఏదైనా CL క్లయింట్ ప్రస్తుతం నెట్‌వర్క్‌లో 33% పైగా ఉపయోగిస్తుంటే, మేము దాని వినియోగానికి సంబంధించిన డేటాను అభ్యర్థిస్తాము. +- ఉత్పత్తుల "వైవిధ్యమైన క్లయింట్లు" స్కోర్‌ని నిర్ణయించడానికి ఇది ఉపయోగించబడుతుంది. + +### ఇతర ప్రమాణాలు: ఉంటే మంచిది {#other-criteria} + +**ఏ వినియోగదారు ఇంటర్‌ఫేస్‌లకు మద్దతు ఉంది?** + +- అంటే, బ్రౌజర్ యాప్, డెస్క్‌టాప్ యాప్, మొబైల్ యాప్, CLI + +**నోడ్ టూలింగ్ కోసం, సాఫ్ట్‌వేర్ క్లయింట్‌ల మధ్య మారడానికి సులభమైన మార్గాన్ని అందిస్తుందా?** + +- వినియోగదారు సాధనాన్ని ఉపయోగించి క్లయింట్‌లను సులభంగా మరియు సురక్షితంగా మార్చగలరా? + +**SaaS కోసం, సేవ ద్వారా ప్రస్తుతం ఎన్ని వాలిడేటర్‌లు పనిచేస్తున్నాయి?** + +- ఇది ఇప్పటివరకు మీ సేవ యొక్క పరిధి గురించి మాకు ఒక ఆలోచన ఇస్తుంది. + +## మేము ఫలితాలను ఎలా ప్రదర్శిస్తాము {#product-ordering} + +ప్రతి ఉత్పత్తి లేదా సేవకు సంచిత స్కోర్‌ను లెక్కించడానికి పైన ఉన్న [చేర్చడానికి ప్రమాణాలు](#criteria-for-inclusion) ఉపయోగించబడతాయి. ఇది నిర్దిష్ట లక్ష్య ప్రమాణాలకు అనుగుణంగా ఉత్పత్తులను క్రమబద్ధీకరించడానికి మరియు ప్రదర్శించడానికి సాధనంగా ఉపయోగించబడుతుంది. సాక్ష్యం అందించిన మరిన్ని ప్రమాణాలు, లోడ్‌లో సంబంధాలు యాదృచ్ఛికంగా మారడంతో, అధిక ఉత్పత్తి క్రమబద్ధీకరించబడుతుంది. + +ఈ ప్రమాణాల కోసం కోడ్ లాజిక్ మరియు వెయిట్‌లు ప్రస్తుతం మా రెపోలోని [ఈ జావాస్క్రిప్ట్ కాంపోనెంట్‌లో](https://github.com/ethereum/ethereum-org-website/blob/dev/src/components/Staking/StakingProductsCardGrid.js#L350) ఉన్నాయి. + +## మీ ఉత్పత్తి లేదా సేవను జోడించండి {#add-product} + +మీరు ethereum.orgకి స్టాకింగ్ ఉత్పత్తి లేదా సేవను జోడించాలనుకుంటే, GitHubలో సమస్యను సృష్టించండి. + + + సమస్యను సృష్టించండి + diff --git a/public/content/translations/te/contributing/adding-wallets/index.md b/public/content/translations/te/contributing/adding-wallets/index.md new file mode 100644 index 00000000000..4c489580a7d --- /dev/null +++ b/public/content/translations/te/contributing/adding-wallets/index.md @@ -0,0 +1,80 @@ +--- +title: "పర్సులు కలుపుతోంది" +description: "Ethereum.orgకి వాలెట్‌ని జోడించేటప్పుడు మేము ఉపయోగించే విధానం" +lang: te +--- + +# వాలెట్లను జోడించడం {#adding-wallets} + +మేము వాలెట్ల యొక్క ఫీచర్-రిచ్ ల్యాండ్‌స్కేప్‌ను కవర్ చేసే వివిధ రకాల వాలెట్‌లను చూపుతామని మేము నిర్ధారించుకోవాలనుకుంటున్నాము, తద్వారా వినియోగదారులు Ethereumని నమ్మకంగా నావిగేట్ చేయవచ్చు. + +Ethereum.orgలో వాలెట్‌ని జోడించమని ఎవరైనా సూచించవచ్చు. మనం మిస్ అయిన వాలెట్ ఏదైనా ఉంటే, దయచేసి దానిని సూచించండి! + +వాలెట్‌లు ప్రస్తుతం ఇందులో జాబితా చేయబడ్డాయి: + +- [ethereum.org/wallets/find-wallet/](/wallets/find-wallet/) + +Ethereumలో వాలెట్లు వేగంగా మారుతున్నాయి. మేము ethereum.orgలో పరిగణన కోసం సరసమైన ఫ్రేమ్‌వర్క్‌ను రూపొందించడానికి ప్రయత్నించాము, అయితే జాబితా ప్రమాణాలు కాలక్రమేణా మారుతాయి మరియు అభివృద్ధి చెందుతాయి. + +## నిర్ణయ చట్రం {#the-decision-framework} + +### చేర్చడానికి ప్రమాణాలు: తప్పనిసరిగా ఉండాల్సినవి {#the-must-haves} + +- **భద్రత-పరీక్షించిన ఉత్పత్తి** - ఆడిట్, అంతర్గత భద్రతా బృందం, ఓపెన్ సోర్స్ కోడ్ లేదా మరేదైనా పద్ధతి ద్వారా, మీ వాలెట్ భద్రత తప్పనిసరిగా నమ్మదగినదిగా ఉండాలి. ఇది మా వినియోగదారులకు ప్రమాదాన్ని తగ్గిస్తుంది మరియు మీరు భద్రతను తీవ్రంగా పరిగణిస్తున్నారని మాకు చూపుతుంది. +- **ఆరు నెలలకు పైగా "లైవ్"గా ఉన్న వాలెట్ లేదా పేరున్న ట్రాక్ రికార్డ్ ఉన్న గ్రూప్ ద్వారా విడుదల చేయబడినది** - ఇది భద్రతకు మరో సూచన. క్లిష్టమైన బగ్‌లు మరియు దోపిడీలను కనుగొనడానికి ఆరు నెలలు మంచి సమయం. ప్రాజెక్ట్‌లుగా త్వరగా వదిలివేయబడిన ఫోర్క్‌లను ఫిల్టర్ చేయడంలో సహాయం చేయమని మేము ఆరు నెలలు అడుగుతున్నాము. +- **చురుకైన బృందం ద్వారా పనిచేయబడింది** - ఇది నాణ్యతను నిర్ధారించడానికి మరియు వినియోగదారుడు తమ ప్రశ్నలకు మద్దతు పొందేలా చూసుకోవడానికి సహాయపడుతుంది. +- **నిజాయితీ మరియు ఖచ్చితమైన లిస్టింగ్ సమాచారం** - ప్రాజెక్ట్‌ల నుండి సూచించబడిన ఏవైనా లిస్టింగ్‌లు నిజాయితీ మరియు ఖచ్చితమైన సమాచారంతో వస్తాయని ఆశించబడుతోంది. మీ ఉత్పత్తిని "ఓపెన్ సోర్స్" అని ప్రకటించడం వంటి జాబితా సమాచారాన్ని తప్పుదారి పట్టించే ఉత్పత్తులు తీసివేయబడతాయి. +- **సంప్రదించాల్సిన వ్యక్తి** - మార్పులు చేసినప్పుడు ఖచ్చితమైన సమాచారాన్ని పొందడానికి వాలెట్ కోసం సంప్రదించాల్సిన వ్యక్తి ఉండటం మాకు చాలా సహాయపడుతుంది. ఇది భవిష్యత్తు సమాచారాన్ని సేకరిస్తున్నప్పుడు నిర్వహించగలిగేలా ethereum.orgని నవీకరిస్తుంది. +- **EIP-1559 (రకం 2) లావాదేవీలు** - మెయిన్నెట్ ఎథేరియంపై లావాదేవీల కోసం మీ వాలెట్ తప్పనిసరిగా EIP-1559 (రకం 2) లావాదేవీలకు మద్దతు ఇవ్వాలి. +- **మంచి వినియోగదారు అనుభవం** - UX వ్యక్తిగతమైనప్పటికీ, పలువురు కోర్ టీమ్ సభ్యులు ఉత్పత్తిని పరీక్షించి, దానిని ఉపయోగించడం కష్టంగా భావిస్తే, మేము ఆ వాలెట్‌ను తిరస్కరించే హక్కును కలిగి ఉంటాము మరియు బదులుగా మెరుగుపరచడానికి ఉపయోగకరమైన సూచనలను అందిస్తాము. ఇది మా వినియోగదారు స్థావరాన్ని రక్షించడానికి చేయబడుతుంది, ఇది ఎక్కువగా ప్రారంభకులను కలిగి ఉంటుంది. +- **ఎథేరియం కేంద్రీకృతం** - ఒక వాలెట్ ప్రాథమికంగా ఎథేరియం-కేంద్రీకృత అనుభవాన్ని అందించాలి. దీనర్థం ఎథేరియం (లేదా ఏదైనా L2) డిఫాల్ట్ నెట్‌వర్క్‌గా సెట్ చేయబడి ఉండాలి, ERC ఆస్తులకు సరిగ్గా మద్దతు ఇవ్వాలి, మరియు ఫీచర్లు ఎథేరియం పర్యావరణ వ్యవస్థకు అనుగుణంగా ఉండాలి. UIలో ప్రత్యామ్నాయ లేయర్ 1లకు ప్రాధాన్యతనిచ్చే వాలెట్లు జాబితా చేయబడవు. + +### ఉత్పత్తి తొలగింపులు {#product-removals} + +- **నవీకరించబడిన సమాచారం** - అందించిన సమాచారం యొక్క చెల్లుబాటు మరియు ఔచిత్యాన్ని నిర్ధారించడానికి (తమ ఉత్పత్తికి ఎటువంటి మార్పులు లేకపోయినా) వాలెట్ ప్రొవైడర్లు ప్రతి 6 నెలలకు వారి వాలెట్ సమాచారాన్ని తిరిగి సమర్పించాల్సిన బాధ్యత వహిస్తారు. ఉత్పత్తి బృందం అలా చేయడంలో విఫలమైతే, ethereum.org పేజీ నుండి ప్రాజెక్ట్‌ను తీసివేయవచ్చు. + +### ఇతర ప్రమాణాలు: ఉంటే మంచివి {#the-nice-to-haves} + +- **ప్రపంచవ్యాప్తంగా అందుబాటులో ఉండాలి** - మీ వాలెట్‌కు భౌగోళిక పరిమితులు లేదా KYC అవసరాలు ఉండకూడదు, అవి నిర్దిష్ట వ్యక్తులను మీ సేవను యాక్సెస్ చేయకుండా నిరోధిస్తాయి. +- **బహుళ భాషలలో అందుబాటులో ఉండాలి** - మీ వాలెట్ బహుళ భాషలలోకి అనువదించబడి ఉండాలి, ఇది ప్రపంచవ్యాప్తంగా ఉన్న వినియోగదారులను దాన్ని యాక్సెస్ చేయడానికి అనుమతిస్తుంది. +- **ఓపెన్ సోర్స్** - మీ మొత్తం ప్రాజెక్ట్ కోడ్‌బేస్ (కేవలం మాడ్యూల్స్ మాత్రమే కాదు) అందుబాటులో ఉండాలి మరియు మీరు విస్తృత కమ్యూనిటీ నుండి PRలను అంగీకరించాలి. +- **నాన్-కస్టోడియల్** - వినియోగదారులు వారి నిధులను నియంత్రిస్తారు. మీ ఉత్పత్తి అదృశ్యమైతే, వినియోగదారులు ఇప్పటికీ వారి నిధులను యాక్సెస్ చేయవచ్చు మరియు తరలించవచ్చు. +- **హార్డ్‌వేర్ వాలెట్ మద్దతు** - లావాదేవీలపై సంతకం చేయడానికి వినియోగదారులు వారి హార్డ్‌వేర్ వాలెట్‌ను కనెక్ట్ చేయవచ్చు. +- **WalletConnect** - వినియోగదారులు WalletConnect ఉపయోగించి డాప్స్‌కు కనెక్ట్ అవ్వవచ్చు. +- **ఎథేరియం RPC ఎండ్‌పాయింట్‌లను ఇంపోర్ట్ చేయడం** - వినియోగదారులు నోడ్ RPC డేటాను ఇంపోర్ట్ చేసుకోవచ్చు, ఇది వారికి నచ్చిన నోడ్‌కు లేదా ఇతర EVM అనుకూల నెట్‌వర్క్‌లకు కనెక్ట్ అవ్వడానికి అనుమతిస్తుంది. +- **NFTలు** - వినియోగదారులు వాలెట్‌లో తమ NFTలను వీక్షించగలరు మరియు వాటితో పరస్పర చర్య చేయగలరు. +- **ఎథేరియం అప్లికేషన్‌లకు కనెక్ట్ అవ్వడం** - వినియోగదారులు ఎథేరియం అప్లికేషన్‌లకు కనెక్ట్ అవ్వగలరు మరియు వాటిని ఉపయోగించగలరు. +- **స్టేకింగ్** - వినియోగదారులు వాలెట్ ద్వారా నేరుగా స్టేక్ చేయగలరు. +- **స్వాప్‌లు** - వినియోగదారులు వాలెట్ ద్వారా టోకెన్‌లను స్వాప్ చేయగలరు. +- **మల్టీచెయిన్ నెట్‌వర్క్‌లు** - మీ వాలెట్ వినియోగదారులను డిఫాల్ట్‌గా బహుళ బ్లాక్ చైను నెట్‌వర్క్‌లను యాక్సెస్ చేయడానికి మద్దతు ఇస్తుంది. +- **లేయర్ 2 నెట్‌వర్క్‌లు** - మీ వాలెట్ డిఫాల్ట్‌గా లేయర్ 2 నెట్‌వర్క్‌లను యాక్సెస్ చేసే వినియోగదారులకు మద్దతు ఇస్తుంది. +- **గ్యాస్ ఫీజులను అనుకూలీకరించడం** - మీ వాలెట్ వినియోగదారులను వారి లావాదేవీ గ్యాస్ ఫీజులను (మూల రుసుము, ప్రాధాన్యత రుసుము, గరిష్ట రుసుము) అనుకూలీకరించడానికి అనుమతిస్తుంది. +- **ENS మద్దతు** - మీ వాలెట్ వినియోగదారులను ENS పేర్లకు లావాదేవీలను పంపడానికి అనుమతిస్తుంది. +- **ERC-20 మద్దతు** - మీ వాలెట్ వినియోగదారులను ERC-20 టోకెన్ కాంట్రాక్టులను ఇంపోర్ట్ చేసుకోవడానికి అనుమతిస్తుంది, లేదా స్వయంచాలకంగా ERC-20 టోకెన్లను క్వెరీ చేసి ప్రదర్శిస్తుంది. +- **క్రిప్టో కొనడం** - మీ వాలెట్ వినియోగదారులను నేరుగా క్రిప్టోను కొనుగోలు చేయడానికి మరియు ఆన్‌బోర్డ్ అవ్వడానికి మద్దతు ఇస్తుంది. +- **ఫియట్ కోసం అమ్మడం** - మీ వాలెట్ వినియోగదారులను ఫియట్‌కు అమ్మి, నేరుగా కార్డుకు లేదా బ్యాంకు ఖాతాకు విత్‌డ్రా చేసుకోవడానికి మద్దతు ఇస్తుంది. +- **మల్టీసిగ్** - మీ వాలెట్ ఒక లావాదేవీపై సంతకం చేయడానికి బహుళ సంతకాలకు మద్దతు ఇస్తుంది. +- **సోషల్ రికవరీ** - మీ వాలెట్ గార్డియన్లకు మద్దతు ఇస్తుంది మరియు వినియోగదారుడు తమ సీడ్ ఫ్రేజ్‌ను కోల్పోతే ఈ గార్డియన్లను ఉపయోగించి తమ వాలెట్‌ను తిరిగి పొందవచ్చు. +- **ప్రత్యేక మద్దతు బృందం** - మీ వాలెట్ కోసం ఒక ప్రత్యేక మద్దతు బృందం ఉంది, వినియోగదారులు సమస్యలను ఎదుర్కొన్నప్పుడు వారిని సంప్రదించవచ్చు. +- **విద్యా వనరులు/డాక్యుమెంటేషన్** - వినియోగదారులకు సహాయపడటానికి మరియు అవగాహన కల్పించడానికి మీ ఉత్పత్తికి చక్కగా రూపొందించబడిన ఆన్‌బోర్డింగ్ అనుభవం ఉండాలి. లేదా కథనాలు లేదా వీడియోల వంటి కంటెంట్ ఎలా చేయాలో రుజువు. + +## ఒక వాలెట్‌ను జోడించడం {#adding-a-wallet} + +మీరు ethereum.orgకు ఒక వాలెట్‌ను జోడించాలనుకుంటే, GitHubలో ఒక ఇష్యూని సృష్టించండి. + + + సమస్యను సృష్టించండి + + +## నిర్వహణ {#maintenance} + +Ethereum యొక్క ద్రవ స్వభావం వలె, బృందాలు మరియు ఉత్పత్తులు వస్తాయి మరియు వెళ్తాయి మరియు ఆవిష్కరణలు ప్రతిరోజూ జరుగుతాయి, కాబట్టి మేము మా కంటెంట్‌ని సాధారణ తనిఖీలను చేస్తాము: + +- జాబితా చేయబడిన అన్ని వాలెట్లు మరియు డాప్స్ ఇప్పటికీ మా ప్రమాణాలను నెరవేరుస్తున్నాయని నిర్ధారించుకోండి +- ప్రస్తుతం జాబితా చేయబడిన వాటి కంటే మా ప్రమాణాలకు అనుగుణంగా సూచించబడిన ఉత్పత్తులు లేవని ధృవీకరించండి + +ethereum.org ఓపెన్ సోర్స్ కమ్యూనిటీ ద్వారా నిర్వహించబడుతుంది & మేము దీనిని తాజాగా ఉంచడంలో సహాయపడటానికి కమ్యూనిటీపై ఆధారపడతాము. జాబితా చేయబడిన వాలెట్ల గురించి నవీకరించాల్సిన ఏదైనా సమాచారాన్ని మీరు గమనించినట్లయితే, దయచేసి [ఒక ఇష్యూని తెరవండి](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=wallet+%3Apurse%3A&template=suggest_wallet.yaml) లేదా [పుల్ రిక్వెస్ట్](https://github.com/ethereum/ethereum-org-website/pulls) చేయండి! + +## వినియోగ నిబంధనలు {#terms-of-use} + +దయచేసి మా [వినియోగ నిబంధనలను](/terms-of-use/) కూడా చూడండి. Ethereum.orgలోని సమాచారం సాధారణ సమాచార ప్రయోజనాల కోసం మాత్రమే అందించబడింది. diff --git a/public/content/translations/te/contributing/content-resources/index.md b/public/content/translations/te/contributing/content-resources/index.md new file mode 100644 index 00000000000..aaa3bb6c119 --- /dev/null +++ b/public/content/translations/te/contributing/content-resources/index.md @@ -0,0 +1,32 @@ +--- +title: "కంటెంట్ వనరులను జోడిస్తోంది" +lang: te +description: "Ethereum.orgలో కంటెంట్ వనరులను జాబితా చేయడానికి మా ప్రమాణాలు" +--- + +# కంటెంట్ వనరులను చేర్చడం {#adding-content-resources} + +మేము అన్ని Ethereumని కవర్ చేయాలని ఆశించలేము కాబట్టి మేము సంఘం సృష్టించే కొన్ని అద్భుతమైన కథనాలు, ట్యుటోరియల్‌లు, వార్తాలేఖలు, జాబ్ బోర్డులు మరియు వివిధ కంటెంట్ వనరులను ప్రదర్శించడానికి ప్రయత్నిస్తాము. ఇవి తరచుగా వినియోగదారులకు ఆసక్తి కలిగించే అంశాలపై మరింత లోతైన సమాచారాన్ని అందిస్తాయి. + +పేజీకి జోడించబడాలని మీరు భావించే కంటెంట్ వనరు ఉన్నట్లయితే, దాన్ని సముచితమైన చోట సూచించడానికి సంకోచించకండి. + +## మేము ఎలా నిర్ణయిస్తాము {#how-we-decide} + +అభ్యాస వనరులు క్రింది ప్రమాణాల ద్వారా అంచనా వేయబడతాయి: + +- కంటెంట్ తాజాగా ఉందా? +- పేవాల్ వెనుక కంటెంట్ ఉందా? +- సమాచారం ఖచ్చితమైనదేనా? ఇది వాస్తవమా లేక అభిప్రాయం ఆధారితమా? +- రచయిత నమ్మదగినవా? వారు తమ మూలాలను సూచిస్తారా? +- ఇప్పటికే ఉన్న వనరులు/లింక్‌లు కవర్ చేయని ప్రత్యేక విలువను ఈ కంటెంట్ జోడిస్తుందా? +- ఈ కంటెంట్ మన [వినియోగదారుల పాత్రలలో](https://www.notion.so/efdn/Ethereum-org-User-Persona-Memo-b44dc1e89152457a87ba872b0dfa366c) ఒకదానికి ఉపయోగపడుతుందా? + +--- + +## మీ కంటెంట్ వనరును జోడించండి {#add-your-content-resource} + +మీరు ethereum.orgకి కంటెంట్ వనరును జోడించాలనుకుంటే మరియు అది ప్రమాణాలకు అనుగుణంగా ఉంటే, GitHubలో సమస్యను సృష్టించండి. + + + సమస్యను సృష్టించండి + diff --git a/public/content/translations/te/contributing/design-principles/index.md b/public/content/translations/te/contributing/design-principles/index.md new file mode 100644 index 00000000000..0402427ef24 --- /dev/null +++ b/public/content/translations/te/contributing/design-principles/index.md @@ -0,0 +1,93 @@ +--- +title: "డిజైన్ సూత్రాలు" +lang: te +description: "ethereum.org డిజైన్ మరియు కంటెంట్ నిర్ణయాల వెనుక ఉన్న సూత్రాలు" +--- + +# మా డిజైన్ సూత్రాలు {#contributing-to-ethereumorg-} + + హలో, ethereum.org డిజైన్ సూత్రాలకు స్వాగతం. ఇది ethereum.orgని అభివృద్ధి చేయడానికి మరియు మెరుగుపరచడానికి జరుగుతున్న ప్రక్రియలో భాగం. + +మా సూత్రాలు సైట్ యొక్క రూపాన్ని మరియు దానిలోని కంటెంట్‌ను తెలియజేస్తాయి. + +మీరు [ethereum.orgకు సహకారం అందించే](/contributing/) ముందు వీటిని చదవాలి. + +## డిజైన్ సూత్రాలు అంటే ఏమిటి? {#ways-to-contribute} + +చింతించకండి, అవి చాలా సులభం! **డిజైన్ సూత్రాలు** అనేవి మనం ఏదైనా డిజైన్ చేసేటప్పుడు (అంటే, సృష్టించడం, నిర్వహించడం లేదా నవీకరించడం) సూచించే మార్గదర్శకాల సమితి. + +ethereum.org సందర్భంలో, ఈ డిజైన్ సూత్రాలు మేము వెబ్‌సైట్‌ను ప్రపంచానికి ప్రాతినిధ్యం వహించడానికి మరియు ప్రదర్శించడానికి కోరుకునే దానికి పునాది. అవి ఆకాంక్షపూరితమైనవి **మరియు** క్రియాత్మకమైనవి. ఇది వెబ్‌సైట్ ఎలా _కనిపిస్తుంది_ అనేది మాత్రమే కాదు, అది ఎలా _పని చేస్తుంది_ మరియు అది ఒకరిని ఎలా _అనిపించేలా చేస్తుంది_ అనే దాని గురించి కూడా. రంగుల నుండి పేజీ లేఅవుట్‌ల వరకు, వెబ్‌సైట్‌లో మనం Ethereum గురించి ఎలా మాట్లాడతామో ప్రతిదీ ఈ సూత్రాల ద్వారా తెలియజేయాలి. + +## ఆచరణలో సూత్రాలు {#how-decisions-about-the-site-are-made} + +ఒక ఉదాహరణ చూద్దాం. సూత్రాలలో ఒకటి “విశ్వసనీయత”, అంటే సైట్‌కు వచ్చే సందర్శకులు సైట్ నమ్మదగినదని _అనుభూతి_ చెందాలని మరియు _తెలుసుకోవాలని_ మేము కోరుకుంటున్నాము - విస్తృత Ethereum పర్యావరణ వ్యవస్థ వలె. ఆ సూత్రంలో, సైట్‌ను విశ్వసనీయంగా మార్చడానికి మనం తీసుకోగల చర్యలు అని మేము విశ్వసించే 3 క్రియాత్మక “ఉప-సూత్రాలు” మా వద్ద ఉన్నాయి: + +- _“తాజా”_ అంటే, కంటెంట్‌ను తాజాగా ఉంచండి. +- _“సోషల్ ప్రూఫ్”_ అంటే, పర్యావరణ వ్యవస్థ యొక్క పరిమాణం, వైవిధ్యం మరియు కార్యాచరణను చూపండి (మీకు తెలుసు: Ethereum అప్‌గ్రేడ్ పురోగతి, DeFi, గేమింగ్, అన్ని హ్యాకథాన్‌లు మొదలైనవి.) +- _“స్థిరమైన”_ అంటే, సైట్ రూపకల్పనలో మరియు రచన యొక్క స్వరం మరియు ఖచ్చితత్వంలో స్థిరత్వం. + +కాబట్టి మేము డిజైన్ నిర్ణయాలు లేదా కాపీ రైటింగ్ నిర్ణయాలు తీసుకుంటున్నప్పుడు, మేము “విశ్వసనీయత” సూత్రాన్ని సూచించి అడగవచ్చు: + +- _“సైట్ ప్రస్తుత సమాచారాన్ని ప్రతిబింబిస్తుందా?”_ +- _“పర్యావరణ వ్యవస్థ యొక్క పరిమాణం మరియు కార్యాచరణను మేము ఎలా మరియు ఎక్కడ చూపిస్తున్నాము?”_ +- _“నేను సమీక్షిస్తున్న కమ్యూనిటీ సభ్యుడి కొత్త ప్రతిపాదిత సహకారాలు సైట్‌లోని ప్రస్తుత డిజైన్ మరియు రచనకు అనుగుణంగా ఉన్నాయా?”_ + +## ethereum.org డిజైన్ సూత్రాలు {#contributors} + +### 1. స్ఫూర్తిదాయకం {#1-inspirational} + +Ethereum ప్రపంచాన్ని ఎలా మార్చగలదో కలలు కనేలా సైట్ వినియోగదారులను ప్రేరేపించాలి. ఇది Ethereum పర్యావరణ వ్యవస్థ యొక్క సాధనాలు మరియు యాప్‌లతో అన్వేషించడానికి, ఆడటానికి మరియు టింకర్ చేయడానికి ప్రజలను ప్రేరేపించాలి. + +- **రాడికల్:** ప్రపంచాన్ని అర్థవంతంగా మార్చడానికి Ethereum యొక్క ప్రతిష్టాత్మక లక్ష్యాలను సైట్ తెలియజేయాలి. Ethereum కేవలం ఏదో కొత్త టెక్ స్టాక్ మాత్రమే కాదని స్పష్టం చేయాలి - ఇది ఒక రూపాంతర సాంకేతికత. +- **విద్య ద్వారా సాధికారత:** సైట్ ప్రజలకు అవగాహన కల్పించాలి, తద్వారా వారు Ethereum యొక్క సామర్థ్యాన్ని అర్థం చేసుకోగలరు, పర్యావరణ వ్యవస్థలో తమ స్థానాన్ని కనుగొనగలరు మరియు దానిలో పాల్గొనడానికి అధికారం పొందగలరు. + +దృశ్య నిర్దేశం • కంటెంట్ + +### 2. సార్వత్రిక {#2-universal} + +Ethereum ఒక ప్రపంచ, వికేంద్రీకృత ప్రాజెక్ట్ మరియు మా ప్రేక్షకులు దీనిని ప్రతిబింబిస్తారు. సైట్ ప్రతిఒక్కరికీ అందుబాటులో ఉండటానికి మరియు ప్రపంచంలోని అనేక సంస్కృతులకు సున్నితంగా ఉండటానికి ఆకాంక్షించాలి. + +- **అందుబాటులో:** సైట్ ప్రాప్యత మార్గదర్శకాలను అనుసరించాలి - తక్కువ-బ్యాండ్‌విడ్త్ కనెక్షన్‌లు ఉన్న వ్యక్తులతో సహా. +- **సూటిగా:** సైట్ సరళంగా మరియు నిస్సందేహంగా ఉండాలి. అనువాదంలో తప్పుగా అర్థం చేసుకోగల లేదా కోల్పోయే భాషను కాపీ ఉపయోగించకూడదు. +- **Ethereum బహుముఖమైనది:** Ethereum ఒక ప్రాజెక్ట్, ఒక కోడ్‌బేస్, ఒక కమ్యూనిటీ, మరియు ఒక దృష్టి. Ethereum విభిన్న కారణాల వల్ల వేర్వేరు వ్యక్తులకు విలువైనది, మరియు ఇందులో పాల్గొనడానికి అనేక మార్గాలు ఉన్నాయి. + +రచనా వ్యవస్థలు • రంగుల వాడకం • దృశ్య నిర్దేశం • కంటెంట్ + +### 3. ఒక మంచి కథ {#3-a-good-story} + +వెబ్‌సైట్ ఒక మంచి కథలా పనిచేయాలి. సందర్శకులు ఒక ప్రయాణంలో ఉన్నారు మరియు మీరు అందించే కంటెంట్ అందులో ఒక భాగం. మీ సహకారాలు స్పష్టమైన కథనంలో సరిపోవాలి: ప్రారంభం (పరిచయం/ప్రవేశ స్థానం), మధ్య (అభ్యాసాలు మరియు అంతర్దృష్టుల సమితి) మరియు ముగింపు (సంబంధిత వనరులకు లింక్(లు), లేదా తదుపరి దశలు)తో ఒకటి. + +- **శ్రేణిబద్ధమైన**: స్పష్టమైన, శ్రేణిబద్ధంగా నిర్మాణాత్మకమైన సమాచార నిర్మాణం ethereum.org సందర్శకులను వారి లక్ష్యాలను సాధించడానికి సైట్‌ను "కథగా" నావిగేట్ చేయడంలో సహాయపడుతుంది. +- **ఒక మెట్టు:** సమాధానాల కోసం వెతుకుతున్న ఎవరికైనా మేము ఒక మెట్టులాంటి వాళ్లం. ఇప్పటికే ఉన్న అనేక వనరులను భర్తీ చేయాలని లేదా వాటికి ప్రత్యామ్నాయంగా మారాలని మేము కోరుకోవడం లేదు. మేము సమాధానం ఇస్తాము & నమ్మకమైన తదుపరి దశలను అందిస్తాము. + +వినియోగదారు ప్రయాణాలు • కంటెంట్ + +### 4. విశ్వసనీయత {#4-credible} + +ప్రజలు Ethereum పర్యావరణ వ్యవస్థకు తమ పరిచయం కోసం వెతుకుతూ ఉండవచ్చు లేదా వారు సందేహవాదులుగా ఉండవచ్చు. మీరు సంభాషించే విధానంలో ఆ బాధ్యతను గుర్తించండి. వారు ఇద్దరూ Ethereum పర్యావరణ వ్యవస్థపై ఎక్కువ విశ్వాసంతో బయలుదేరేలా చూసుకోండి. + +- **తాజా:** ఎల్లప్పుడూ తాజాగా ఉంటుంది. +- **సోషల్ ప్రూఫ్:** పర్యావరణ వ్యవస్థ యొక్క పరిమాణం, వైవిధ్యం మరియు కార్యాచరణను చూపండి. +- **స్థిరమైన:** డిజైన్ మరియు కంటెంట్‌లో స్థిరత్వం విశ్వసనీయతను తెలియజేస్తుంది. + +దృశ్య నిర్దేశం • కంటెంట్ + +### 5. సహకార మెరుగుదల {#5-collaborative-improvement} + +మొత్తంగా పర్యావరణ వ్యవస్థలాగే, వెబ్‌సైట్ కూడా అనేక మంది సహాయకుల యొక్క ఉత్పత్తి. + +- **ఓపెన్:** పర్యావరణ వ్యవస్థ అంతటా సోర్స్ కోడ్, ప్రక్రియలు మరియు ప్రాజెక్ట్‌ల పారదర్శకతను జరుపుకోండి. +- **విస్తరించదగినది:** మనం చేసే ప్రతిదాని వెనుక మాడ్యులారిటీ ఒక కీలక దృష్టి, కాబట్టి సహకారాలు కూడా మాడ్యులర్‌గా ఉండాలి. సైట్ యొక్క కోర్ డిజైన్, కాంపోనెంట్ కోడ్ & అమలు భవిష్యత్తులో సులభంగా విస్తరించడానికి వీలు కల్పించాలి. +- **ప్రయోగాత్మక:** మేము నిరంతరం ప్రయోగాలు చేస్తున్నాము, పరీక్షిస్తున్నాము మరియు పునరావృతం చేస్తున్నాము. +- **సహకార:** ఈ ప్రాజెక్ట్ మనందరినీ ఏకతాటిపైకి తెస్తుంది. +- **స్థిరమైనది:** కమ్యూనిటీ ద్వారా దీర్ఘకాలిక నిర్వహణ కోసం ఏర్పాటు చేయడం + +మీరు మా డిజైన్ సూత్రాలను ఆచరణలో [మా సైట్ అంతటా](/). చూడవచ్చు. + +## అభిప్రాయం ఇవ్వండి {#give-feedback} + +**ఈ పత్రంపై మీ అభిప్రాయాన్ని పంచుకోండి!** మా ప్రతిపాదిత సూత్రాలలో ఒకటి “**సహకార మెరుగుదల**” అంటే వెబ్‌సైట్ అనేక మంది సహాయకుల ఉత్పత్తిగా ఉండాలని మేము కోరుకుంటున్నాము. కాబట్టి ఆ సూత్ర స్ఫూర్తితో, మేము ఈ డిజైన్ సూత్రాలను Ethereum కమ్యూనిటీతో పంచుకోవాలనుకుంటున్నాము. + +ఈ సూత్రాలు ethereum.org వెబ్‌సైట్‌పై దృష్టి సారించినప్పటికీ, వాటిలో చాలా వరకు మొత్తం Ethereum పర్యావరణ వ్యవస్థ యొక్క విలువలకు ప్రాతినిధ్యం వహిస్తాయని మేము ఆశిస్తున్నాము. బహుశా మీరు వాటిలో కొన్నింటిని మీ స్వంత ప్రాజెక్ట్‌లో చేర్చుకోవాలనుకోవచ్చు! + +[Discord సర్వర్](https://discord.gg/ethereum-org)లో లేదా [సమస్యను సృష్టించడం](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=) ద్వారా మీ ఆలోచనలను మాకు తెలియజేయండి. diff --git a/public/content/translations/te/contributing/design/adding-design-resources/index.md b/public/content/translations/te/contributing/design/adding-design-resources/index.md new file mode 100644 index 00000000000..fd9af0b5d36 --- /dev/null +++ b/public/content/translations/te/contributing/design/adding-design-resources/index.md @@ -0,0 +1,69 @@ +--- +title: "డిజైన్ వనరులను జోడిస్తోంది" +description: "Ethereum.orgలో డిజైన్ మెటీరియల్‌ల నాణ్యతను నిర్ధారించడానికి మార్గదర్శకాలు మరియు అవసరాలు" +lang: te +--- + +# డిజైన్ వనరులను జోడించడం {#adding-design-resources} + +ఎవరైనా [వెబ్3 పేజీలోని డిజైన్ మరియు UX](/developers/docs/design-and-ux/)కి కొత్త డిజైన్ మెటీరియల్‌లను సూచించవచ్చు. + +ఈ పేజీ యొక్క దృష్టి ఔత్సాహిక web3 డిజైనర్లకు వినియోగదారు విలువను అందించడంపైనే ఉందని గుర్తుంచుకోండి. మీ సేవలు, ఉత్పత్తులు లేదా ప్లాట్‌ఫారమ్‌లను ప్రచారం చేయడానికి డిజైన్ విభాగం లేదు. + +మేము అధిక ప్రమాణాల సమాచారాన్ని కలిగి ఉన్నామని మరియు విలువైన అంతర్దృష్టులను ప్రోత్సహించడానికి, మేము జాబితా విధానాన్ని ఏర్పాటు చేసాము: + +## పరిశోధన అధ్యయనాలు మరియు డాష్‌బోర్డ్‌లు {#Research-studies} + +1. సౌండ్ మెథడాలజీ + +a. డేటా ఎలా సేకరించబడిందో మెథడాలజీ స్పష్టంగా నిర్వచించాలి. + +b. పరిశోధనలో పాల్గొనేవారి సంఖ్యను పేర్కొనాలి. + +c. ఉపయోగించిన పరిశోధన పద్ధతులను వివరించాలి. + +2. Web3 డిజైనర్లు మరియు సాధారణ డిజైన్ వినియోగ కేసులకు సంబంధించినది + +a. పరిశోధన యొక్క అంశం web3 డిజైనర్లకు సంబంధించినది మరియు సాధారణ డిజైన్ వినియోగ కేసులను పరిష్కరించాలి. + +3. అంతర్దృష్టులను అందించడంపై దృష్టి పెట్టండి + +a. టెక్స్ట్ యొక్క ప్రాథమిక లక్ష్యం నిర్దిష్ట ప్రాజెక్ట్ లేదా కంపెనీని ప్రమోట్ చేయడం కంటే అంతర్దృష్టులను పంచుకోవడం. + +## వ్యాసాలు {#Articles} + +1. Web3 రూపకర్తలు/పరిశోధకులు మరియు సాధారణ Web3 డిజైన్ వినియోగ సందర్భాలకు సంబంధించినది + +a. వ్యాసం యొక్క అంశం వెబ్3 డిజైనర్లు మరియు పరిశోధకులకు సంబంధించినదిగా ఉండాలి, సాధారణ web3 డిజైన్ వినియోగ కేసులపై దృష్టి సారిస్తుంది. + +2. ప్రాథమిక రచన నాణ్యత + +a. వ్యాసం వ్యాకరణం మరియు స్పెల్లింగ్ తప్పులు లేకుండా ఉండాలి. + +b. కీలకమైన అంతర్దృష్టులు మరియు అభ్యాసాలను అందించడంపై దృష్టి పెట్టాలి. + +c. రచన సంక్షిప్తంగా మరియు పాయింట్‌గా ఉండాలి. + +3. టెక్స్ట్ యొక్క లక్ష్యం + +a. కథనం యొక్క ప్రాథమిక లక్ష్యం నిర్దిష్ట ప్రాజెక్ట్ లేదా కంపెనీని ప్రమోట్ చేయడం కంటే అంతర్దృష్టులను పంచుకోవడం. + +## కమ్యూనిటీలు / DAOs {#Communities-and-DAOs} + +1. DAO/కమ్యూనిటీలో ఎలా చేరాలో వెబ్‌సైట్ స్పష్టంగా సూచించాలి + +2. సభ్యత్వం యొక్క స్పష్టమైన ప్రయోజనాలు + +a. సభ్యత్వం పొందడం వల్ల కలిగే ప్రయోజనాలను ప్రముఖంగా ప్రదర్శించాలి. + +**ఉదాహరణలు**: పనిపై అభిప్రాయాన్ని స్వీకరించడం, ఉద్యోగ అవకాశాలు లేదా బహుమతులు పొందడం, డిజైన్ మరియు పరిశోధన అంతర్దృష్టులను భాగస్వామ్యం చేయడం. + +3. అసమ్మతిపై యాక్టివ్ మరియు వైబ్రెంట్ కమ్యూనికేషన్ + +a. డిస్కార్డ్ కమ్యూనిటీ సజీవమైన మరియు నిమగ్నమైన కమ్యూనికేషన్‌ను ప్రదర్శించాలి. + +b. సంఘాన్ని నిర్వహించడంలో మరియు చర్చలను సులభతరం చేయడంలో మోడరేటర్లు చురుకుగా పాల్గొనాలి. + +c. సంఘం గత రెండు వారాల్లో విలువైన మరియు ఉత్పాదక సంభాషణల ట్రాక్ రికార్డ్‌ను ప్రదర్శించాలి. + +ఈ ప్రమాణాలకు కట్టుబడి ఉండటం ద్వారా, మా సంఘంలో అభివృద్ధి చెందుతున్న మరియు జ్ఞానాన్ని పంచుకునే వాతావరణాన్ని పెంపొందించుకోవాలని మేము లక్ష్యంగా పెట్టుకున్నాము. ఈ వైట్ లిస్టింగ్ విధానం మా వినియోగదారులకు విశ్వసనీయమైన, సంబంధితమైన మరియు అంతర్దృష్టిగల వనరులకు యాక్సెస్ ఉండేలా చేస్తుందని మేము విశ్వసిస్తున్నాము. మా ప్లాట్‌ఫారమ్‌లోని కంటెంట్ నాణ్యతను నిర్వహించడంలో మీ అవగాహన మరియు సహకారానికి ధన్యవాదాలు. diff --git a/public/content/translations/te/contributing/design/index.md b/public/content/translations/te/contributing/design/index.md new file mode 100644 index 00000000000..40225016723 --- /dev/null +++ b/public/content/translations/te/contributing/design/index.md @@ -0,0 +1,77 @@ +--- +title: "డిజైన్ సహకారం" +description: "Ethereum.orgకి డిజైన్ సహకారం" +lang: te +--- + +# ethereum.orgకు డిజైన్ సహకారం {#design-contributions} + +డిజైన్ అనేది ఏదైనా ప్రాజెక్ట్‌లో కీలకమైన అంశం మరియు మీ సమయాన్ని మరియు డిజైన్ నైపుణ్యాలను ethereum.orgకి వెచ్చించడం ద్వారా, మీరు మా సందర్శకుల కోసం వినియోగదారు అనుభవాన్ని మెరుగుపరచడంలో సహాయపడగలరు. ఓపెన్ సోర్స్ ప్రాజెక్ట్‌కు సహకరించడం వలన సంబంధిత అనుభవాన్ని పొందేందుకు మరియు సహకార వాతావరణంలో మీ నైపుణ్యాలను అభివృద్ధి చేసుకోవడానికి అవకాశం లభిస్తుంది. మీరు ఇతర డిజైనర్లు, డెవలపర్‌లు మరియు కమ్యూనిటీ సభ్యులతో కలిసి పని చేసే అవకాశం ఉంటుంది, వీరందరికీ వారి స్వంత ప్రత్యేక దృక్పథాలు మరియు అంతర్దృష్టులు ఉంటాయి. + +అంతిమంగా, మీ డిజైన్ నైపుణ్యాలను ప్రదర్శించే విభిన్నమైన మరియు ఆకట్టుకునే పోర్ట్‌ఫోలియోను రూపొందించడానికి ఇది గొప్ప మార్గం. + +## ఎలా సహకరించాలి? + +###  ప్రారంభ డిజైన్ నమూనాలపై అభిప్రాయాన్ని అందించండి {#design-critique} + +మా ముడి ఆలోచనలను పరీక్షించడంలో మాకు కొన్నిసార్లు సహాయం అవసరం. ఎలాంటి సాంకేతిక పరిజ్ఞానం లేకుండా ఎలా సహకరించాలో ఇది గొప్ప మార్గం. + +1. డిజైన్ బృందం [Discord](https://discord.com/invite/ethereum-org)లో మరియు [GitHub](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8)లో ఒక మాక్అప్ డిజైన్ను పంచుకుంటుంది. +2. వ్యాఖ్యల ఫంక్షన్ ద్వారా అభిప్రాయాన్ని అందించడానికి మీరు డిజైన్‌ల ద్వారా మార్గనిర్దేశం చేయబడతారు. +3. ఫలితం GitHub సంచికలో భాగస్వామ్యం చేయబడుతుంది మరియు తర్వాత బృందం ద్వారా మూసివేయబడుతుంది. + +###  సర్వే పరిశోధనలో పాల్గొనండి {#answer-surveys} + +దీని ద్వారా మా వెబ్‌సైట్‌లో అభిప్రాయాన్ని అందించండి: + +1. Ethereum.orgని సందర్శించడం మరియు పేజీల ద్వారా చదవడం. +2. దిగువ కుడి మూలలో ఉన్న అభిప్రాయ విడ్జెట్‌పై క్లిక్ చేసి, డిజైన్ మరియు కంటెంట్-సంబంధిత ప్రశ్నలకు సమాధానమివ్వడం. +3. ఉచిత ఫార్మాట్ ప్రశ్నలపై దృష్టి పెట్టండి. + +###  వెబ్సైట్లో డిజైన్ సంబంధిత సమస్యలను కనుగొని వాటిని నివేదించండి {#report-design-issues} + +ethereum.org అనేది అనేక ఫీచర్లు మరియు కంటెంట్‌తో వేగంగా అభివృద్ధి చెందుతున్న వెబ్‌సైట్. కొన్ని UIలు సులభంగా వాడుకలో లేవు లేదా మెరుగుపరచబడతాయి. మీకు అలాంటి సందర్భం ఏదైనా ఎదురైతే, దయచేసి మా దృష్టిని ఆకర్షించేలా రిపోర్ట్ చేయండి. + +1. వెబ్‌సైట్ ద్వారా వెళ్లి దాని రూపకల్పనపై శ్రద్ధ వహించండి. +2. మీకు ఏవైనా విజువల్ లేదా UX సమస్యలు కనిపిస్తే స్క్రీన్‌షాట్‌లు మరియు నోట్స్ తీసుకోండి. +3. [బగ్ నివేదిక](https://github.com/ethereum/ethereum-org-website/issues/new/choose)ను ఉపయోగించి కనుగొన్న సమస్యలను నివేదించండి. + +###  డిజైన్ మార్పులను ప్రతిపాదించండి {#propose-design-changes} + +మీరు డిజైన్ సవాళ్లను స్వీకరించడానికి సౌకర్యవంతంగా భావిస్తే, మీరు మా GitHub సమస్యల బోర్డును సందర్శించి [డిజైన్-సంబంధిత సమస్యల](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8) కోసం ఫిల్టర్ చేయవచ్చు. + +1. మా వెబ్‌సైట్‌ను చూడండి మరియు దాని డిజైన్‌పై శ్రద్ధ పెట్టండి లేదా మా GitHub రిపోజిటరీకి వెళ్లి [“డిజైన్ అవసరం” ట్యాగ్](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8)తో గుర్తించబడిన సమస్యలను సమీక్షించండి. +2. పరిష్కారంపై ఆలోచించి దానిని రూపొందించండి. (ఆదర్శవంతంగా మా [డిజైన్ సిస్టమ్](https://www.figma.com/community/file/1134414495420383395) ఉపయోగించి). +3. సంబంధిత GitHub సమస్యలో పరిష్కారాన్ని ప్రతిపాదించండి లేదా [కొత్తదాన్ని సృష్టించండి.](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&template=feature_request.yaml&title=Feature+request) +4. డిజైన్ బృందం సమీక్షించే వరకు వేచి ఉండండి. + +###  కలిసి డిజైన్ సిస్టమ్ను రూపొందించండి {#Contribute-to-design-system} + +మా డిజైన్ సిస్టమ్ ethereum.org రూపకల్పనను సరదాగా మరియు సులభంగా చేస్తుంది. మీరు అనుభవజ్ఞుడైన డిజైనర్ అయితే, మీరు వెబ్‌సైట్ కోసం అనేక భాగాలను సిద్ధం చేయడంలో మాకు సహాయపడగలరు. + +1. GitHubలోని [డిజైన్ సిస్టమ్ బోర్డు](https://github.com/ethereum/ethereum-org-website/labels/design%20system) నుండి పని చేయడానికి ఒక సమస్యను ఎంచుకోండి లేదా కొత్తదాన్ని సృష్టించండి. +2. ఎంచుకున్న సమస్యను మీకు కేటాయించమని అభ్యర్థించండి. +3. ఫిగ్మాలో అభ్యర్థించిన భాగాన్ని రూపొందించడం ప్రారంభించండి. +4. మీకు సమీక్ష లేదా మార్గదర్శకత్వం అవసరమైతే GitHubలోని డిజైన్ బృందంతో దీన్ని భాగస్వామ్యం చేయండి. +5. డిజైన్ బృందం సమీక్షిస్తుంది. +6. డిజైన్ బృందం ప్రధాన ఫైల్‌లో మార్పులను పొందుపరిచి, ఫైల్‌ను సంఘంలో ప్రచురిస్తుంది. + +###  వెబ్సైట్లో డిజైన్-సంబంధిత కంటెంట్ను వ్రాయండి {#write-design-articles} + +Ethereum డెవలపర్ సంఘం బలంగా ఉంది, కానీ డిజైన్ సంఘం కొంచెం వెనుకబడి ఉంది. మీరు వెబ్3 పరిజ్ఞానం ఉన్న డిజైనర్ అయితే, దయచేసి మీ అభ్యాసాలను పెద్ద కమ్యూనిటీతో పంచుకోవడాన్ని పరిగణించండి, తద్వారా మనమందరం కలిసి అభివృద్ధి చెందగలము మరియు మెరుగుపరచగలము; మీరు సహకరించగల [ఇతీరియము కోసం డిజైనింగ్పై ఒక పేజీ](/developers/docs/design-and-ux/) మా వద్ద ఉంది. మీరు మా [జాబితా విధానాలను](/contributing/design/adding-design-resources) కూడా తనిఖీ చేయవచ్చు. + +1. Ethereum.orgలో కవర్ చేయాల్సిన డిజైన్ అంశాల గురించి ఆలోచించండి మరియు స్పేస్‌లోని డిజైనర్లకు ప్రయోజనకరంగా ఉంటుంది. +2. మా GitHub రిపోజిటరీకి వెళ్లి ఒక అంశాన్ని ప్రతిపాదిస్తూ [ఒక సమస్యను లేవనెత్తండి](https://github.com/ethereum/ethereum-org-website/issues/new) (ఇంకా కంటెంట్ రాయవద్దు). +3. డిజైన్ బృందం ఆమోదించే వరకు వేచి ఉండండి. +4. ఆమోదించబడిన తర్వాత, కంటెంట్‌ను వ్రాయండి. +5. సంబంధిత GitHub సంచికలో దీన్ని సమర్పించండి. + +###  కొత్త దృష్టాంతాలను గీయండి {#prepare-illustrations} + +నైరూప్య అంశాలను వివరించడానికి విజువలైజేషన్‌లు అత్యంత శక్తివంతమైన సాధనాల్లో ఒకటి. రేఖాచిత్రాలు మరియు ఇన్ఫోగ్రాఫిక్‌లను జోడించడం ద్వారా అపారమైన సంభావ్యత ఉంది. అన్ని తరువాత, ఒక చిత్రం వెయ్యి పదాలు చెప్పగలదు. + +1. మా వెబ్‌సైట్‌కి వెళ్లి, కొన్ని కొత్త ఇన్ఫోగ్రాఫిక్స్ జోడించబడే పేజీలను చూడండి. +2. దృష్టాంత శైలి మా [ఆస్తులకు](/assets/) అనుగుణంగా ఉందని నిర్ధారించుకోండి. +3. మా GitHub రిపోజిటరీకి వెళ్లి దృష్టాంతాన్ని ప్రతిపాదిస్తూ [ఒక సమస్యను లేవనెత్తండి](https://github.com/ethereum/ethereum-org-website/issues/new). +4. డిజైన్ బృందం దానిని సమీక్షిస్తుంది. +5. కొత్త చిత్రాన్ని అమలు చేయమని డెవలపర్‌ని అడగడానికి మేము కొత్త సమస్యను సృష్టిస్తాము. diff --git a/public/content/translations/te/contributing/index.md b/public/content/translations/te/contributing/index.md new file mode 100644 index 00000000000..dbd456d08bf --- /dev/null +++ b/public/content/translations/te/contributing/index.md @@ -0,0 +1,120 @@ +--- +title: "సహకరించడం" +description: "మీరు ethereum.orgకి సహకరించగల వివిధ మార్గాల గురించి తెలుసుకోండి" +lang: te +--- + +# ethereum.orgకు సహకరించడం 🦄 {#contributing-to-ethereumorg} + +Ethereum.org ఒక ఓపెన్-సోర్స్ ప్రాజెక్ట్, ఇందులో **12,000+** మంది సహకారులు వెబ్‌సైట్‌ను అనువదించడానికి, వ్రాయడానికి, డిజైన్ చేయడానికి మరియు నిర్వహించడానికి సహాయపడతారు. + +మేము Ethereum పర్యావరణ వ్యవస్థలో ఎదగడానికి మరియు విద్యావంతులను చేయడంలో మీకు సహాయపడే స్వాగతించే సంఘం, అలాగే అర్థవంతంగా సహకరించడం మరియు సంబంధిత ఆచరణాత్మక అనుభవాన్ని పొందడం! + +## సహకరించే మార్గాలు {#ways-to-contribute} + +**అనువాదాలు** + +- [అనువాద కార్యక్రమంలో చేరండి](/contributing/translation-program/) – ethereum.orgను కొత్త భాషల్లోకి తీసుకురావడంలో మాకు సహాయపడండి + +**అభివృద్ధి** + +- [ఓపెన్ ఇష్యూపై పని చేయండి](https://github.com/ethereum/ethereum-org-website/issues) – చేయవలసినదిగా మేము గుర్తించిన పని + +**డిజైన్** + +- [వెబ్‌సైట్ డిజైన్‌లో సహాయం చేయండి](/contributing/design/) – అన్ని స్థాయిల డిజైనర్లు వెబ్‌సైట్‌ను మెరుగుపరచడానికి సహకరించగలరు + +**కంటెంట్** + +- [కంటెంట్‌ను సృష్టించండి/సవరించండి](/contributing/#how-to-update-content) – కొత్త పేజీలను సూచించండి లేదా ఇప్పటికే ఇక్కడ ఉన్న వాటికి మార్పులు చేయండి +- [కమ్యూనిటీ వనరులను జోడించండి](/contributing/content-resources/) – సంబంధిత పేజీకి సహాయకరమైన కథనం లేదా వనరును జోడించండి +- [డిజైన్ వనరును సూచించండి](/contributing/design/adding-design-resources/) – సహాయకరమైన డిజైన్ వనరులను జోడించండి, నవీకరించండి మరియు తొలగించండి +- [క్విజ్‌లు](/contributing/quizzes/) – సంబంధిత పేజీ కోసం క్విజ్ ప్రశ్నల బ్యాంకులను జోడించండి, నవీకరించండి మరియు తొలగించండి + +**ఫీచర్ ఆలోచనలు** + +- [ఒక ఫీచర్‌ను అభ్యర్థించండి](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=) – కొత్త ఫీచర్ లేదా డిజైన్ కోసం మీకు ఏవైనా ఆలోచనలు ఉంటే మాకు తెలియజేయండి + +**ఉత్పత్తి జాబితాలు** + +- [ఒక ఎక్స్‌ఛేంజ్‌ను జోడించండి](/contributing/adding-exchanges/) – మా [ఎక్స్‌ఛేంజ్ ఫైండర్‌](/get-eth/#country-picker)కు ఒక ఎక్స్‌ఛేంజ్‌ను జోడించండి +- [ఉత్పత్తిని జోడించండి](/contributing/adding-products/) – సంబంధిత పేజీకి ఒక డాప్ లేదా వాలెట్‌ను జోడించండి +- [డెవలపర్ టూల్స్‌ను జోడించండి](/contributing/adding-developer-tools/) – సంబంధిత పేజీకి ఒక డెవలపర్ టూల్‌ను జోడించండి +- [ఒక లేయర్ 2ను జోడించండి](/contributing/adding-layer-2s/) – సంబంధిత పేజీకి ఒక లేయర్ 2ను జోడించండి +- [స్టేకింగ్ ఉత్పత్తి లేదా సేవను జోడించండి](/contributing/adding-staking-products/) – సోలో స్టేకింగ్, పూల్డ్ స్టేకింగ్, లేదా సేవగా స్టేకింగ్ చేయడంలో సహాయపడే ప్రాజెక్ట్‌ను జోడించండి +- [ఒక వాలెట్‌ను జోడించండి](/contributing/adding-wallets/) – [వాలెట్లను కనుగొనండి పేజీ](/wallets/find-wallet/) కోసం ఒక వాలెట్‌ను జోడించండి +- [మా DeSci పేజీ కోసం ఒక ప్రాజెక్ట్‌ను సూచించండి](/contributing/adding-desci-projects/) – వికేంద్రీకృత విజ్ఞాన శాస్త్రానికి దోహదపడే Ethereum మీద నిర్మించిన ప్రాజెక్ట్‌ను జోడించండి + +ఏవైనా ప్రశ్నలు? 🤔 మా [Discord సర్వర్‌లో](https://discord.gg/ethereum-org) చేరండి + +## సహకారం ప్రారంభించడానికి మంచి మొదటి పనులు + +ఇవి పరిష్కరించడంలో మరియు బాధ్యత వహించడంలో మాకు సహాయపడే కొన్ని ప్రస్తుత పనులు. వెబ్‌సైట్‌లో చాలా మార్పులు GitHub ద్వారా చేయబడినందున చాలా మందికి మీకు GitHub ఖాతా అవసరం. + + + +అన్ని టాస్క్‌లను చూడండి + +## ethereum.orgలో ఎలా పని చేయాలి {#how-to-update-content} + +మీరు [అనువాద కార్యక్రమంలో](/contributing/translation-program/) సహకరించాలనుకుంటే, [Crowdin](https://crowdin.com/project/ethereum-org)లో ఖాతాను సృష్టించమని మేము మిమ్మల్ని అడుగుతున్నాము. మిగతా అన్నింటి కోసం – వెబ్‌సైట్‌కు కంటెంట్ లేదా విజువల్స్‌ని జోడించడం లేదా సవరించడం, బగ్‌లను పరిష్కరించడం, ఓపెన్ టాస్క్‌లపై పని చేయడం – మీకు [GitHub](https://github.com/) ఖాతా అవసరం. + +అన్ని నవీకరణలు GitHub PR ప్రక్రియ ద్వారా చేయబడతాయి. అంటే మీరు వెబ్‌సైట్ యొక్క స్థానిక కాపీని సృష్టించి, మీ మార్పులు చేసి, మీ మార్పులను విలీనం చేయమని అభ్యర్థించండి. మీరు దీన్ని ఇంతకు ముందెన్నడూ చేయకుంటే, మా [GitHub రిపోజిటరీ](https://github.com/ethereum/ethereum-org-website) దిగువన ఉన్న సూచనలను అనుసరించండి. + +ఏదైనా పని చేయడానికి మీకు అనుమతి అవసరం లేదు, కానీ మీరు ఏమి చేయాలనుకుంటున్నారో మాకు తెలియజేయడం ఎల్లప్పుడూ ఉత్తమం. మీరు దీన్ని దీని ద్వారా చేయవచ్చు: + +- [GitHub](https://github.com/ethereum/ethereum-org-website)లో ఇష్యూ లేదా PR పై వ్యాఖ్యానించడం +- మా [Discord సర్వర్‌లో](https://discord.gg/ethereum-org) సందేశం పంపడం + +సహకరించే ముందు, మీకు తెలిసినవి ఉన్నాయని నిర్ధారించుకోండి: + +- [ethereum.org యొక్క అభివృద్ధి చెందుతున్న దార్శనికత](/about/) +- మా [డిజైన్ సూత్రాలు](/contributing/design-principles/) +- మా [శైలి మార్గదర్శి](/contributing/style-guide/) +- మా [ప్రవర్తనా నియమావళి](/community/code-of-conduct) + +## సైట్ గురించి నిర్ణయాలు ఎలా తీసుకుంటారు {#how-decisions-about-the-site-are-made} + +వ్యక్తిగత PRలు, డిజైన్ పరిణామం మరియు ప్రధాన అప్‌గ్రేడ్‌ల గురించి నిర్ణయాలను Ethereum పర్యావరణ వ్యవస్థ అంతటా ఉన్న బృందం తీసుకుంటుంది. ఈ బృందంలో ప్రాజెక్ట్ మేనేజర్‌లు, డెవలపర్‌లు, డిజైనర్లు, మార్కెటింగ్ మరియు కమ్యూనికేషన్‌లు మరియు సబ్జెక్ట్ నిపుణులు ఉన్నారు. కమ్యూనిటీ ఇన్‌పుట్ ప్రతి నిర్ణయాన్ని తెలియజేస్తుంది: కాబట్టి దయచేసి ఇష్యూలలో ప్రశ్నలు లేవనెత్తండి, PRలను సమర్పించండి లేదా బృందాన్ని సంప్రదించండి: + +- [website@ethereum.org](mailto:website@ethereum.org) +- [@ethdotorg](https://twitter.com/ethdotorg) +- [Discord సర్వర్](https://discord.gg/ethereum-org) + +### సాహిత్య చౌర్యంపై ఒక గమనిక {#plagiarism} + +ethereum.orgకు ఏదైనా కంటెంట్ లేదా కళాఖండాన్ని అందించేటప్పుడు, ఉపయోగించడానికి మీకు అనుమతి ఉన్న మీ అసలు పని లేదా కంటెంట్‌ను మాత్రమే ఉపయోగించండి. Ethereum పర్యావరణ వ్యవస్థలోని అనేక ప్రాజెక్ట్‌లు సమాచారాన్ని ఉచితంగా పంచుకోవడానికి అనుమతించే ఓపెన్-సోర్స్ లైసెన్సింగ్‌ను ఉపయోగిస్తాయి. అయితే, మీరు ఈ సమాచారాన్ని కనుగొనలేకపోతే, దాన్ని ethereum.orgకి జోడించడానికి ప్రయత్నించవద్దు. సాహిత్య చౌర్యంగా పరిగణించబడే ఏవైనా పుల్ అభ్యర్థనలు తిరస్కరించబడతాయి. + +## ఓపెన్-సోర్స్‌కు కొత్తా? {#new-to-open-source} + +మా GitHub రిపోజిటరీలో ఓపెన్-సోర్స్‌కు కొత్తగా వచ్చిన డెవలపర్‌ల కోసం ప్రత్యేకంగా రూపొందించిన, [మంచి మొదటి ఇష్యూ](https://github.com/ethereum/ethereum-org-website/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) అని లేబుల్ చేయబడిన, తక్కువ ప్రవేశ అడ్డంకి ఉన్న ఇష్యూలు ఉన్నాయి. + +## మీ ఆన్‌చెయిన్ అచీవ్‌మెంట్ టోకెన్ (OAT)ని క్లెయిమ్ చేయండి {#oat} + +మీ సహకారం ethereum.orgలో విలీనం చేయబడితే, మీరు [Galxe](https://app.galxe.com/quest/ethereumorg)లో ప్రత్యేక బ్యాడ్జ్‌ను క్లెయిమ్ చేసే అవకాశం ఉంటుంది. ఆన్‌చెయిన్ అచీవ్‌మెంట్ టోకెన్ (OAT) అనేది, మీరు పర్యావరణ వ్యవస్థను మరింత అద్భుతంగా మార్చడంలో సహాయం చేసారనడానికి ఒక రుజువు. + +[OATల గురించి మరింత](https://help.galxe.com/en/articles/9645630-create-quest-rewards#h_1c5d63ba03) + +### ఎలా క్లెయిమ్ చేయాలి + +1. మా [Discord సర్వర్‌లో](https://discord.gg/ethereum-org) చేరండి. +2. `#🥇 | proof-of-contribution` ఛానెల్‌లో మీ సహకారానికి సంబంధించిన లింక్‌ను అతికించండి. +3. మా బృందంలోని సభ్యుడు మీకు మీ OATకి సంబంధించిన లింక్‌ను పంపే వరకు వేచి ఉండండి. +4. మీ OATని క్లెయిమ్ చేసుకోండి! + +OATలను క్లెయిమ్ చేయడానికి మీరు స్వీయ-కస్టడీ వాలెట్లను మాత్రమే ఉపయోగించాలి. ఎక్స్‌ఛేంజ్ ఖాతాలు లేదా మీరు ప్రైవేట్ కీలను కలిగి లేని ఇతర ఖాతాలను ఉపయోగించవద్దు, ఎందుకంటే ఇవి మీ OATలను యాక్సెస్ చేయడానికి మరియు నిర్వహించడానికి మిమ్మల్ని అనుమతించవు. + +## మీ GitPOAPని క్లెయిమ్ చేసుకోండి {#claim-gitpoap} + +GitPOAP మీ విలీన సహకారాన్ని కూడా స్వయంచాలకంగా గుర్తిస్తుంది మరియు వారి ప్లాట్‌ఫారమ్‌లోనే ప్రత్యేక సహకారుల POAPని ముద్రించడానికి మిమ్మల్ని అనుమతిస్తుంది! + +### ఎలా క్లెయిమ్ చేయాలి {#how-to-claim} + +1. [GitPOAP](https://www.gitpoap.io)ని సందర్శించండి. +2. సైన్ ఇన్ ఎంపిక ద్వారా మీ వాలెట్‌తో లేదా మీ ఇమెయిల్‌తో కనెక్ట్ అవ్వండి. +3. మీకు అర్హత ఉందో లేదో తనిఖీ చేయడానికి మీ GitHub వినియోగదారు పేరు, ETH చిరునామా, ENS పేర్లు లేదా ఏదైనా GitPOAP కోసం శోధించండి. +4. మీ GitHub ఖాతాకు అర్హత ఉంటే, మీరు GitPOAPని ముద్రించగలరు! + +## సహకారులు {#contributors} + + diff --git a/public/content/translations/te/contributing/quizzes/index.md b/public/content/translations/te/contributing/quizzes/index.md new file mode 100644 index 00000000000..0e8d383c513 --- /dev/null +++ b/public/content/translations/te/contributing/quizzes/index.md @@ -0,0 +1,62 @@ +--- +title: "క్విజ్‌ని జోడిస్తోంది" +description: "Ethereum.orgకి క్విజ్‌లను జోడించేటప్పుడు మేము ఉపయోగించే విధానం" +lang: te +--- + +# క్విజ్‌లు {#quizzes} + +క్విజ్‌లు అనేది వినియోగదారులు తాము ఇప్పుడే చదివిన పేజీలోని కంటెంట్‌ను అర్థం చేసుకున్నారో లేదో తెలుసుకోవడానికి తమను తాము పరీక్షించుకోవడానికి ఒక అవకాశం. ప్రశ్నలు పేజీలో అందించిన కంటెంట్ ఆధారంగా మాత్రమే ఉండాలి మరియు పేజీలో పేర్కొనబడని సమాచారం గురించి అడగకూడదు. + +ప్రశ్నలు ఈ క్రింది విధంగా నిర్మించబడ్డాయి. ప్రశ్న ప్రాంప్ట్, 1 సరైన సమాధానం ఎందుకు సరైనది అనే వివరణతో, 3 తప్పు సమాధానాలు ఎందుకు తప్పు అనే వివరణతో. + +ప్రస్తుత క్విజ్‌ల యొక్క కొన్ని ఉదాహరణలు ఇక్కడ చూడవచ్చు: + +- [లేయర్ 2](/layer-2) +- [NFT](/nft/) +- [ఇతీరియము అంటే ఏమిటి?](/what-is-ethereum/) +- [ETH అంటే ఏమిటి?](/what-is-ether/) + +## నేర్చుకునే క్విజ్‌ని జోడిస్తోంది + +దాని కోసం లెర్న్ క్విజ్ సృష్టించబడని పేజీ ఏదైనా ఉంటే, దయచేసి దాని కోసం [ఒక సమస్యను తెరవండి](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml). + +దయచేసి కింది సమాచారాన్ని అందించండి: + +- మీరు క్విజ్‌ని జోడించాలనుకుంటున్న పేజీ +- కింది సమాచారంతో 5 ప్రశ్నలు: + - ప్రశ్న ఆధారంగా ఉన్న పేజీ విభాగం + - ప్రశ్న ప్రాంప్ట్ + - 1 సరైన సమాధానం అది ఎందుకు సరైనదో వివరణతో + - 3 తప్పు సమాధానాలు, ప్రతి ఒక్కటి ఎందుకు తప్పుగా ఉన్నాయో వివరణ ఉంటుంది + +## క్విజ్ ప్రశ్నను జోడిస్తోంది + +క్విజ్ కోసం ప్రశ్నల బ్యాంక్‌కు మీరు జోడించాలనుకుంటున్న ప్రశ్న ఏదైనా ఉంటే, దయచేసి [ఒక సమస్యను తెరవండి](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml) మరియు కింది సమాచారాన్ని అందించండి: + +- మీరు క్విజ్ ప్రశ్నను జోడించాలనుకుంటున్న పేజీ +- ప్రతి ప్రశ్నకు క్రింది సమాచారాన్ని అందించండి: + - ప్రశ్న ఆధారంగా ఉన్న పేజీ విభాగం + - ప్రశ్న ప్రాంప్ట్ + - 1 సరైన సమాధానం అది ఎందుకు సరైనదో వివరణతో + - 3 తప్పు సమాధానాలు, ప్రతి ఒక్కటి ఎందుకు తప్పుగా ఉన్నాయో వివరణ ఉంటుంది + +## క్విజ్ ప్రశ్నను నవీకరిస్తోంది + +క్విజ్ కోసం ప్రశ్నల బ్యాంక్‌లోని ప్రశ్నను మీరు అప్‌డేట్ చేయాలనుకుంటే, దయచేసి [ఒక సమస్యను తెరవండి](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml) మరియు కింది సమాచారాన్ని అందించండి: + +- మీరు క్విజ్ ప్రశ్నను అప్‌డేట్ చేయాలనుకుంటున్న పేజీ +- నవీకరించబడిన ప్రతి ప్రశ్నకు, కింది సమాచారాన్ని అందించండి: + - ప్రశ్న ఆధారంగా ఉన్న పేజీ విభాగం + - మీరు అప్‌డేట్ చేయాలనుకుంటున్న ప్రశ్న యొక్క ప్రశ్న ప్రాంప్ట్ + - ప్రశ్న ప్రాంప్ట్ నవీకరించబడింది + - 1 సరైన సమాధానం అది ఎందుకు సరైనదో వివరణతో + - 3 తప్పు సమాధానాలు, ప్రతి ఒక్కటి ఎందుకు తప్పుగా ఉన్నాయో వివరణ ఉంటుంది + +## ప్రశ్న ప్రాంప్ట్ నవీకరించబడింది + +ఒక ప్రశ్నకు సంబంధించిన కంటెంట్ పేజీలో ఇకపై అందుబాటులో లేకపోతే మరియు దానిని తీసివేయవలసి వస్తే, దయచేసి ప్రశ్నను తీసివేయడానికి [ఒక సమస్యను తెరవండి](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml) మరియు కింది సమాచారాన్ని అందించండి: + +- మీరు క్విజ్ ప్రశ్నను తొలగించాలనుకుంటున్న పేజీ +- మీరు తొలగించాలనుకుంటున్న ప్రశ్న +- ప్రశ్నను ఎందుకు తీసివేయాలి అనేదానికి అవసరమైతే వివరణ diff --git a/public/content/translations/te/contributing/translation-program/faq/index.md b/public/content/translations/te/contributing/translation-program/faq/index.md new file mode 100644 index 00000000000..e6e5a856a42 --- /dev/null +++ b/public/content/translations/te/contributing/translation-program/faq/index.md @@ -0,0 +1,119 @@ +--- +title: "అనువాద ప్రోగ్రామ్ తరచుగా అడిగే ప్రశ్నలు (FAQ)" +lang: te +description: "Ethereum.org అనువాద ప్రోగ్రామ్ గురించి తరచుగా అడిగే ప్రశ్నలు" +--- + +# ethereum.org మార్గదర్శిని అనువదించడం {#translating-ethereum-guide} + +మీరు అనువాద ప్రోగ్రామ్‌కు కొత్త అయితే మరియు దూకడానికి సంకోచించినట్లయితే, ప్రారంభించడానికి మీకు సహాయపడే కొన్ని తరచుగా అడిగే ప్రశ్నలు ఇక్కడ ఉన్నాయి. అత్యంత సాధారణ ప్రశ్నలకు సమాధానాలను కనుగొనడానికి ఈ గైడ్‌ని ఉపయోగించండి. + +## నేను ethereum.orgని అనువదించినందుకు పరిహారం పొందవచ్చా? {#compensation} + +Ethereum.org అనేది ఓపెన్ సోర్స్ వెబ్‌సైట్, అంటే ఎవరైనా పాల్గొనవచ్చు మరియు సహకరించవచ్చు. + +Ethereum.org అనువాద కార్యక్రమం దాని యొక్క పొడిగింపు మరియు ఇదే విధమైన తత్వశాస్త్రాన్ని దృష్టిలో ఉంచుకుని నిర్వహించబడింది. + +అనువాద ప్రోగ్రామ్ యొక్క లక్ష్యం Ethereum కంటెంట్‌ని వారు మాట్లాడే భాషలతో సంబంధం లేకుండా అందరికీ అందుబాటులో ఉంచడం. ఇది ఏ ద్విభాషా వ్యక్తి అయినా Ethereum పర్యావరణ వ్యవస్థతో పాలుపంచుకోవడానికి మరియు ప్రాప్యత మార్గంలో సహకరించడానికి అనుమతిస్తుంది. + +ఈ కారణంగా, అనువాద కార్యక్రమం బహిరంగంగా మరియు స్వచ్ఛందంగా ఉంటుంది మరియు పాల్గొనడం అనేది నష్టపరిహారానికి లోబడి ఉండదు. అనువాదకులు అనువదించే పదాల సంఖ్యను మేము భర్తీ చేస్తే, మేము అనువాద ప్రోగ్రామ్‌లో చేరడానికి తగినంత అనువాద అనుభవం (ప్రొఫెషనల్ అనువాదకులు) ఉన్నవారిని మాత్రమే ఆహ్వానించగలము. ఇది అనువాద ప్రోగ్రామ్‌ను మినహాయింపుగా చేస్తుంది మరియు ప్రత్యేకంగా పేర్కొన్న లక్ష్యాలను చేరుకోకుండా నిరోధిస్తుంది: ప్రతి ఒక్కరూ పాల్గొనడానికి మరియు పర్యావరణ వ్యవస్థతో పాలుపంచుకోవడానికి వీలు కల్పిస్తుంది. + +మా కంట్రిబ్యూటర్‌లు ఎథేరియం పర్యావరణ వ్యవస్థలో విజయం సాధించడానికి మేము అన్ని విధాలా ప్రయత్నిస్తాము; అనేక ద్రవ్యేతర ప్రోత్సాహకాలు ఉన్నాయి, అవి: [POAPలను అందించడం](/contributing/translation-program/acknowledgements/#poap) మరియు [అనువాదకుల సర్టిఫికేట్](/contributing/translation-program/acknowledgements/#certificate), అలాగే [అనువాద లీడర్‌బోర్డులను](/contributing/translation-program/acknowledgements/) నిర్వహించడం మరియు [మా అనువాదకులందరినీ సైట్‌లో జాబితా చేయడం](/contributing/translation-program/contributors/). + +## `` ఉన్న స్ట్రింగ్‌లను నేను ఎలా అనువదించాలి? {#tags} + +ప్రతి స్ట్రింగ్ స్వచ్ఛమైన వచన రూపంలో వ్రాయబడలేదు. HTML ట్యాగ్‌ల (`<0>`, ``) వంటి మిశ్రమ స్క్రిప్ట్‌లను కలిగి ఉన్న కొన్ని స్ట్రింగ్‌లు ఉన్నాయి. ఇది సాధారణంగా ఒక వాక్యం మధ్యలో హైపర్‌లింక్‌లు లేదా ప్రత్యామ్నాయ స్టైలింగ్ కోసం ఉంటుంది. + +- ట్యాగ్‌ల లోపల ఉన్న వచనాన్ని అనువదించండి కానీ ట్యాగ్‌లనే కాదు. `<` మరియు `>`లలో ఉన్న దేనినీ అనువదించకూడదు లేదా తీసివేయకూడదు. +- స్ట్రింగ్‌ను సురక్షితంగా ఉంచడానికి, దిగువ ఎడమవైపు ఉన్న "కాపీ సోర్స్" బటన్‌ను క్లిక్ చేయాలని మేము సిఫార్సు చేస్తున్నాము. ఇది ఒరిజినల్ స్ట్రింగ్‌ను కాపీ చేసి టెక్స్ట్ బాక్స్‌లో అతికిస్తుంది. ట్యాగ్‌లు ఎక్కడ ఉన్నాయో స్పష్టం చేయడానికి ఇది మిమ్మల్ని అనుమతిస్తుంది మరియు తప్పులను నివారించడంలో మీకు సహాయపడుతుంది. + +![కాపీ సోర్స్ బటన్ హైలైట్ చేయబడిన Crowdin ఇంటర్‌ఫేస్](./html-tag-strings.png) + +మీరు మీ భాషలో మరింత సహజంగా ఉండేలా చేయడానికి స్ట్రింగ్‌లోని ట్యాగ్‌ల స్థానాన్ని తరలించవచ్చు - మొత్తం ట్యాగ్‌ని తరలించాలని నిర్ధారించుకోండి. + +ట్యాగ్‌లు మరియు కోడ్ స్నిప్పెట్‌లతో వ్యవహరించడంపై మరింత లోతైన సమాచారం కోసం, దయచేసి [ethereum.org అనువాద శైలి మార్గదర్శిని](/contributing/translation-program/translators-guide/#dealing-with-tags) చూడండి. + +## తీగలు ఎక్కడ నివసిస్తాయి? {#strings} + +మీరు ఖచ్చితమైన అనువాదాన్ని అందించడానికి తరచుగా మూలాధార స్ట్రింగ్‌లు మాత్రమే సరిపోకపోవచ్చు. + +- మరింత సమాచారం కోసం "స్క్రీన్‌షాట్‌లు" మరియు "సందర్భం" చూడండి. సోర్స్ స్ట్రింగ్ విభాగంలో, మీరు స్క్రీన్‌షాట్ ఇమేజ్‌ని జోడించడాన్ని చూస్తారు, ఇది మేము స్ట్రింగ్‌ను సందర్భానుసారంగా ఎలా ఉపయోగిస్తున్నామో మీకు చూపుతుంది. +- మీకు ఇంకా ఖచ్చితంగా తెలియకుంటే, "కామెంట్ సెక్షన్"లో ఫ్లాగ్‌ను ఎగురవేయండి. [వ్యాఖ్యను ఎలా రాయాలో ఖచ్చితంగా తెలియదా?](#comment) + +![ఒక స్ట్రింగ్ కోసం స్క్రీన్‌షాట్‌తో సందర్భాన్ని ఎలా అందించవచ్చో చూపిస్తోంది](./source-string.png) + +![సందర్భం కోసం జోడించిన ఒక ఉదాహరణ స్క్రీన్‌షాట్](./source-string-2.png) + +## నేను ఎలా వ్యాఖ్యానించగలను లేదా ప్రశ్నలు అడగగలను? నేను సమస్యను లేదా అక్షరదోషాలను ఫ్లాగ్ చేయాలనుకుంటున్నాను... {#comment} + +మీరు శ్రద్ధ వహించాల్సిన నిర్దిష్ట స్ట్రింగ్‌పై జెండాను పెంచాలనుకుంటే, వ్యాఖ్యను సమర్పించడానికి సంకోచించకండి. + +- ఎగువ-కుడి బార్ యొక్క రెండవ బటన్‌ను క్లిక్ చేయండి. దాచిన ట్యాబ్ మీ కుడి వైపున కనిపిస్తుంది. కొత్త వ్యాఖ్యను వదిలి, దిగువన ఉన్న "సమస్య" చెక్‌బాక్స్‌ని క్లిక్ చేయండి. డ్రాప్-డౌన్ మెను నుండి ఎంపికలలో ఒకదాన్ని ఎంచుకోవడం ద్వారా మీరు సమస్య రకాన్ని పేర్కొనవచ్చు. +- సమర్పించిన తర్వాత, అది మా బృందానికి నివేదించబడుతుంది. మేము సమస్యను పరిష్కరిస్తాము మరియు మీ వ్యాఖ్యకు ప్రత్యుత్తరం ఇవ్వడం ద్వారా మరియు సమస్యను మూసివేయడం ద్వారా మీకు తెలియజేస్తాము. +- మీరు తప్పు అనువాదాన్ని నివేదించినట్లయితే, అనువాదం మరియు మీరు సూచించిన ప్రత్యామ్నాయం తదుపరి సమీక్ష సమయంలో స్థానిక స్పీకర్ ద్వారా సమీక్షించబడతాయి. + +![వ్యాఖ్యలు మరియు సమస్యలను ఎలా సృష్టించాలో చూపిస్తోంది](./comment-issue.png) + +## అనువాద మెమరీ (TM) అంటే ఏమిటి? {#translation-memory} + +అనువాద మెమరీ (TM) అనేది క్రౌడిన్ యొక్క లక్షణం, ఇది ethereum.org అంతటా మునుపు అనువదించబడిన అన్ని స్ట్రింగ్‌లను నిల్వ చేస్తుంది. ఒక స్ట్రింగ్ అనువదించబడినప్పుడు, అది స్వయంచాలకంగా మా ప్రాజెక్ట్ TMలో సేవ్ చేయబడుతుంది. ఇది మీ సమయాన్ని ఆదా చేయడంలో మీకు సహాయపడే ఉపయోగకరమైన సాధనం కావచ్చు! + +- "TM మరియు MT సూచనలు" విభాగాన్ని చూడండి మరియు ఇతర అనువాదకులు అదే లేదా ఇలాంటి స్ట్రింగ్‌ను ఎలా అనువదించారో మీరు చూస్తారు. మీరు అధిక సరిపోలిక రేటుతో సూచనను కనుగొంటే, దాన్ని క్లిక్ చేయడం ద్వారా అనువాదాన్ని సూచించడానికి సంకోచించకండి. +- జాబితాలో ఏమీ లేకుంటే, మీరు గతంలో చేసిన అనువాదాల కోసం TMని శోధించవచ్చు మరియు వాటిని స్థిరత్వం కోసం మళ్లీ ఉపయోగించవచ్చు. + +![అనువాద మెమరీ యొక్క ఒక స్క్రీన్‌షాట్](./translation-memory.png) + +## నేను క్రౌడిన్ గ్లాసరీని ఎలా ఉపయోగించగలను? {#glossary} + +Ethereum పదజాలం మా అనువాద పనిలో మరొక కీలకమైన భాగం, ఎందుకంటే తరచుగా కొత్త సాంకేతిక పదాలు అనేక భాషలలో స్థానికీకరించబడవు. అలాగే, వివిధ సందర్భాలలో వేర్వేరు అర్థాలను కలిగి ఉన్న పదాలు ఉన్నాయి. [ఎథేరియం పరిభాష అనువాదంపై మరింత](#terminology) + +నిబంధనలు మరియు నిర్వచనాల స్పష్టీకరణకు క్రౌడిన్ పదకోశం ఉత్తమమైన ప్రదేశం. గ్లాసరీని సూచించడానికి రెండు మార్గాలు ఉన్నాయి. + +- ముందుగా, మీరు సోర్స్ స్ట్రింగ్‌లో అండర్‌లైన్ చేసిన పదాన్ని కనుగొన్నప్పుడు, మీరు మౌస్ ఓవర్ చేసి దాని యొక్క క్లుప్త నిర్వచనాన్ని చూడవచ్చు. + +![ఒక ఉదాహరణ పదకోశ నిర్వచనం](./glossary-definition.png) + +- రెండవది, మీకు తెలియని, అండర్‌లైన్ చేయని పదాన్ని మీరు చూసినట్లయితే, మీరు గ్లాసరీ ట్యాబ్‌లో (కుడి కాలమ్‌లోని మూడవ బటన్) శోధించవచ్చు. మీరు నిర్దిష్ట నిబంధనలు మరియు ప్రాజెక్ట్‌లో తరచుగా ఉపయోగించే వాటి వివరణలను కనుగొంటారు. + +![Crowdinలో పదకోశం ట్యాబ్‌ను ఎక్కడ కనుగొనాలో చూపిస్తున్న ఒక స్క్రీన్‌షాట్](./glossary-tab.png) + +- మీరు ఇప్పటికీ దాన్ని కనుగొనలేకపోతే, కొత్త పదాన్ని జోడించడానికి ఇది మీకు అవకాశం! శోధన ఇంజిన్‌లో దాన్ని చూసేందుకు మరియు గ్లాసరీకి వివరణను జోడించమని మేము మిమ్మల్ని ప్రోత్సహిస్తున్నాము. ఈ పదాన్ని బాగా అర్థం చేసుకోవడానికి ఇతర అనువాదకులకు ఇది చాలా సహాయం చేస్తుంది. + +![Crowdinకు ఒక పదకోశ పదాన్ని ఎలా జోడించాలో చూపిస్తున్న ఒక స్క్రీన్‌షాట్](./add-glossary-term.png) + +### పరిభాష అనువాద విధానం {#terminology} + +_పేర్లు (బ్రాండ్‌లు, కంపెనీలు, వ్యక్తులు) మరియు కొత్త టెక్ పదాల కోసం (బీకాన్ చైన్, షార్డ్ చైన్‌లు, మొదలైనవి)_ + +Ethereum ఇటీవల రూపొందించిన చాలా కొత్త పదాలను అందిస్తుంది. వాటి సంబంధిత భాషలో అధికారిక అనువాదం లేనందున కొన్ని నిబంధనలు అనువాదకుని నుండి అనువాదకుడికి మారుతూ ఉంటాయి. ఇటువంటి అసమానతలు అపార్థాన్ని కలిగిస్తాయి మరియు చదవడానికి తగ్గుతాయి. + +ప్రతి భాషలో భాషా వైవిధ్యం మరియు విభిన్న ప్రమాణాల కారణంగా, మద్దతు ఉన్న అన్ని భాషల్లోకి అనువదించబడే ఏకీకృత పరిభాష అనువాద విధానాన్ని రూపొందించడం దాదాపు అసాధ్యం. + +జాగ్రత్తగా పరిశీలించిన తర్వాత, మేము ఎక్కువగా ఉపయోగించే పదజాలాన్ని అనువాదకులైన మీకే వదిలేయాలనే నిర్ణయానికి వచ్చాము. + +మీకు తెలియని పదాన్ని మీరు కనుగొన్నప్పుడు మేము సూచించేది ఇక్కడ ఉంది: + +- [పదాల పదకోశం](#glossary)ని చూడండి, ఇతర అనువాదకులు దీనిని ఇంతకుముందు ఎలా అనువదించారో మీరు కనుగొనవచ్చు. మునుపు అనువదించబడిన పదం సరైనది కాదని మీరు భావిస్తే, క్రౌడిన్ పదకోశంలో కొత్త పదాన్ని జోడించడం ద్వారా మీ అనువాదాన్ని పునరుద్ధరించడానికి సంకోచించకండి. +- అటువంటి మునుపటి అనువాదం పదకోశంలో లేకుంటే, మీ సంఘంలో ఈ పదం ఎలా ఉపయోగించబడుతుందో చూపే శోధన ఇంజిన్ లేదా మీడియా కథనంలో దాన్ని చూడమని మేము మిమ్మల్ని ప్రోత్సహిస్తాము. +- మీకు ఏవైనా సూచనలు కనిపించకుంటే, మీ అంతర్ దృష్టిని విశ్వసించండి మరియు మీ భాషకి కొత్త అనువాదాన్ని సూచించండి! +- అలా చేయడంలో మీకు నమ్మకం తక్కువగా ఉంటే, ఆ పదాన్ని అనువదించకుండా వదిలేయండి. కొన్నిసార్లు, ఖచ్చితమైన నిర్వచనాలను అందించడంలో ఆంగ్ల పదాలు సరిపోతాయి. + +మీరు బ్రాండ్‌లు, కంపెనీలు మరియు సిబ్బంది పేర్లను అనువదించకుండా వదిలివేయమని మేము మీకు సిఫార్సు చేస్తున్నాము, ఇది అనవసరమైన గందరగోళాన్ని మరియు SEO సమస్యలను కలిగిస్తుంది. + +## మీరు బ్రాండ్‌లు, కంపెనీలు మరియు సిబ్బంది పేర్లను అనువదించకుండా వదిలివేయమని మేము మీకు సిఫార్సు చేస్తున్నాము, ఇది అనవసరమైన గందరగోళాన్ని మరియు Seo సమస్యలను కలిగిస్తుంది? {#review-process} + +మా అనువాదాలలో నిర్దిష్ట స్థాయి నాణ్యత మరియు స్థిరత్వాన్ని నిర్ధారించడానికి, మేము ప్రపంచవ్యాప్తంగా అతిపెద్ద భాషా సేవా ప్రదాతలలో ఒకటైన [Acolad](https://www.acolad.com/)తో కలిసి పని చేస్తాము. Acolad 20,000 మంది వృత్తిపరమైన భాషా నిపుణులను కలిగి ఉంది, అంటే మనకు అవసరమైన ప్రతి భాష మరియు కంటెంట్ రకం కోసం వారు వృత్తిపరమైన సమీక్షకులను అందించగలరు. + +సమీక్ష ప్రక్రియ చాలా సరళమైనది; ఒక సెట్ కంటెంట్ 100% అనువదించబడిన తర్వాత, మేము ఆ కంటెంట్ బకెట్ కోసం ఒక సమీక్షను ఆర్డర్ చేస్తాము. సమీక్ష ప్రక్రియ నేరుగా Crowdinలో జరుగుతుంది. సమీక్ష పూర్తయిన తర్వాత, మేము అనువదించబడిన కంటెంట్‌తో వెబ్‌సైట్‌ను అప్‌డేట్ చేస్తాము. + +## నా భాషలో నేను కంటెంట్‌ను ఎలా జోడించాలి? {#adding-foreign-language-content} + +ప్రస్తుతం, ఆంగ్లేతర కంటెంట్ అంతా నేరుగా ఇంగ్లీష్ మూల కంటెంట్ నుండి అనువదించబడుతుంది మరియు ఇంగ్లీష్‌లో లేని ఏ కంటెంట్‌ను ఇతర భాషలకు జోడించలేము. + +ethereum.org కోసం కొత్త కంటెంట్‌ను సూచించడానికి, మీరు GitHubలో [ఒక ఇష్యూను సృష్టించవచ్చు](https://github.com/ethereum/ethereum-org-website/issues). జోడించినట్లయితే, కంటెంట్ ఇంగ్లీష్‌లో వ్రాయబడుతుంది మరియు Crowdin ఉపయోగించి ఇతర భాషల్లోకి అనువదించబడుతుంది. + +మేము సమీప భవిష్యత్తులో ఆంగ్లేతర కంటెంట్ చేర్పులకు మద్దతును జోడించాలని ప్లాన్ చేస్తున్నాము. + +## సంప్రదించండి {#contact} + +వీటన్నింటినీ చదివినందుకు ధన్యవాదాలు. ఇది మా ప్రోగ్రామ్‌లో చేరడానికి మీకు సహాయపడుతుందని మేము ఆశిస్తున్నాము. ప్రశ్నలు అడగడానికి మరియు ఇతర అనువాదకులతో సహకరించడానికి మా [Discord అనువాద ఛానెల్‌](https://discord.gg/ethereum-org)లో చేరడానికి సంకోచించకండి లేదా translations@ethereum.org వద్ద మమ్మల్ని సంప్రదించండి! diff --git a/public/content/translations/te/contributing/translation-program/how-to-translate/index.md b/public/content/translations/te/contributing/translation-program/how-to-translate/index.md new file mode 100644 index 00000000000..dbe3b4f4b3b --- /dev/null +++ b/public/content/translations/te/contributing/translation-program/how-to-translate/index.md @@ -0,0 +1,92 @@ +--- +title: "ఎలా అనువదించాలి" +lang: te +description: "Ethereum.orgని అనువదించడానికి క్రౌడిన్‌ని ఉపయోగించడం కోసం సూచనలు" +--- + +# ఎలా అనువదించాలి {#how-to-translate} + +## దృశ్య మార్గదర్శి {#visual-guide} + +మరింత మంది విజువల్ లెర్నర్‌ల కోసం, క్రౌడిన్‌తో సెటప్ చేయడం ద్వారా లూకా నడకను చూడండి. ప్రత్యామ్నాయంగా, మీరు తదుపరి విభాగంలో వ్రాసిన ఆకృతిలో అవే దశలను కనుగొనవచ్చు. + + + +## వ్రాతపూర్వక మార్గదర్శి {#written-guide} + +### క్రౌడిన్‌లో మా ప్రాజెక్ట్‌లో చేరండి {#join-project} + +మీరు మీ క్రౌడిన్ ఖాతాకు లాగిన్ చేయాలి లేదా మీకు ఇప్పటికే ఒకటి లేకుంటే సైన్ అప్ చేయాలి. సైన్ అప్ చేయడానికి కావలసిందల్లా ఇ-మెయిల్ ఖాతా మరియు పాస్‌వర్డ్. + + + ప్రాజెక్ట్‌లో చేరండి + + +### మీ భాషను తెరవండి {#open-language} + +క్రౌడిన్‌కి లాగిన్ చేసిన తర్వాత, మీరు ప్రాజెక్ట్ వివరణ మరియు అందుబాటులో ఉన్న అన్ని భాషల జాబితాను చూస్తారు. +ప్రతి భాషలో అనువదించదగిన పదాల మొత్తం సమాచారం మరియు నిర్దిష్ట భాషలో ఎంత కంటెంట్ అనువదించబడింది మరియు ఆమోదించబడింది అనే స్థూలదృష్టి కూడా ఉంటుంది. + +అనువాదం కోసం అందుబాటులో ఉన్న ఫైల్‌ల జాబితాను చూడటానికి మీరు అనువదించాలనుకుంటున్న భాషను తెరవండి. + +![Crowdinలోని భాషల జాబితా](./list-of-languages.png) + +### పని చేయడానికి ఒక పత్రాన్ని కనుగొనండి {#find-document} + +వెబ్‌సైట్ కంటెంట్ అనేక పత్రాలు మరియు కంటెంట్ బకెట్‌లుగా విభజించబడింది. మీరు కుడి వైపున ఉన్న ప్రతి పత్రం యొక్క పురోగతిని తనిఖీ చేయవచ్చు – అనువాద పురోగతి 100% కంటే తక్కువగా ఉంటే, దయచేసి సహకరించండి! + +జాబితా చేయబడిన మీ భాష కనిపించలేదా? [ఒక సమస్యను తెరవండి](https://github.com/ethereum/ethereum-org-website/issues/new/choose) లేదా మా [Discord](https://discord.gg/ethereum-org)లో అడగండి + +![క్రౌడిన్‌లో అనువదించబడిన మరియు అనువదించని ఫైల్‌లు](./crowdin-files.png) + +కంటెంట్ బకెట్‌లపై గమనిక: ముందుగా అత్యధిక ప్రాధాన్యత కలిగిన కంటెంట్‌ను విడుదల చేయడానికి మేము క్రౌడిన్‌లో 'కంటెంట్ బకెట్‌లను' ఉపయోగిస్తాము. మీరు ఒక భాషను, ఉదాహరణకు, [ఫిలిపినో](https://crowdin.com/project/ethereum-org/fil#)ను తనిఖీ చేసినప్పుడు, మీరు కంటెంట్ బకెట్ ("1. కోసం ఫోల్డర్‌లను చూస్తారు హోమ్‌పేజీ", "2. ఎసెన్షియల్స్", "3. అన్వేషించడం", మొదలైనవి). + +అత్యధిక ప్రభావం చూపే పేజీలు ముందుగా అనువదించబడ్డాయని నిర్ధారించుకోవడానికి ఈ సంఖ్యా క్రమంలో (1 → 2 → 3 → ⋯) అనువదించమని మేము మిమ్మల్ని ప్రోత్సహిస్తున్నాము. + +### అనువదించండి {#translate} + +మీరు అనువదించాలనుకుంటున్న ఫైల్‌ను ఎంచుకున్న తర్వాత, అది ఆన్‌లైన్ ఎడిటర్‌లో తెరవబడుతుంది. మీరు ఇంతకు ముందెన్నడూ క్రౌడిన్‌ని ఉపయోగించకుంటే, మీరు ఈ శీఘ్ర గైడ్‌ని ఉపయోగించి బేసిక్స్ గురించి తెలుసుకోవచ్చు. + +![Crowdin ఆన్‌లైన్ ఎడిటర్](./online-editor.png) + +**_1 – ఎడమ సైడ్‌బార్_** + +- అనువదించని (ఎరుపు) - ఇంకా పని చేయని వచనం. మీరు అనువదించాల్సిన స్ట్రింగ్‌లు ఇవి. +- అనువదించబడింది (ఆకుపచ్చ) - ఇప్పటికే అనువదించబడిన వచనం, కానీ ఇంకా సమీక్షించబడలేదు. ప్రత్యామ్నాయ అనువాదాలను సూచించడానికి మీకు స్వాగతం లేదా ఎడిటర్‌లోని ‘’+’’ మరియు ‘’-‘‘ బటన్‌లను ఉపయోగించి ఇప్పటికే ఉన్న వాటిపై ఓటు వేయండి. +- ఆమోదించబడింది (చెక్ మార్క్) - ఇది ఇప్పటికే సమీక్షించబడిన మరియు ప్రస్తుతం వెబ్‌సైట్‌లో ప్రత్యక్షంగా ఉన్న వచనం. + +మీరు నిర్దిష్ట స్ట్రింగ్‌ల కోసం శోధించడానికి, స్థితి ద్వారా వాటిని ఫిల్టర్ చేయడానికి లేదా వీక్షణను మార్చడానికి పైన ఉన్న బటన్‌లను కూడా ఉపయోగించవచ్చు. + +**_2 – ఎడిటర్ ప్రాంతం_** + +ప్రధాన అనువాద ప్రాంతం – అందుబాటులో ఉన్నట్లయితే అదనపు సందర్భం మరియు స్క్రీన్‌షాట్‌లతో మూల వచనం పైన ప్రదర్శించబడుతుంది. +కొత్త అనువాదాన్ని సూచించడానికి, ‘‘అనువాదాన్ని ఇక్కడ నమోదు చేయండి’’ ఫీల్డ్‌లో మీ అనువాదాన్ని నమోదు చేసి, సేవ్ చేయి క్లిక్ చేయండి. + +మీరు ఈ విభాగంలో ఇప్పటికే ఉన్న స్ట్రింగ్ అనువాదాలను మరియు ఇతర భాషల్లోకి అనువాదాలను, అలాగే అనువాద మెమరీ సరిపోలికలు మరియు యంత్ర అనువాద సూచనలను కూడా కనుగొనవచ్చు. + +**_3 – కుడి సైడ్‌బార్_** + +ఇక్కడే మీరు వ్యాఖ్యలు, అనువాద మెమరీ ఎంట్రీలు మరియు పదకోశం ఎంట్రీలను కనుగొనవచ్చు. డిఫాల్ట్ వీక్షణ వ్యాఖ్యలను చూపుతుంది మరియు అనువాదకులను కమ్యూనికేట్ చేయడానికి, సమస్యలను లేవనెత్తడానికి లేదా తప్పు అనువాదాలను నివేదించడానికి అనుమతిస్తుంది. + +పైన ఉన్న బటన్‌లను ఉపయోగించడం ద్వారా, మీరు అనువాద మెమరీకి కూడా మారవచ్చు, ఇక్కడ మీరు ఇప్పటికే ఉన్న అనువాదాల కోసం శోధించవచ్చు లేదా కీలక పదాల వివరణలు మరియు ప్రామాణిక అనువాదాలను కలిగి ఉన్న గ్లోసరీకి మారవచ్చు. + +ఇంకా ఎక్కువ నేర్చుకోవాలని ఉందా? Crowdin ఆన్‌లైన్ ఎడిటర్‌ను ఎలా ఉపయోగించాలనే దానిపై [డాక్యుమెంటేషన్‌ను](https://support.crowdin.com/online-editor/) చూడటానికి సంకోచించకండి. + +### సమీక్ష ప్రక్రియ {#review-process} + +మీరు అనువాదాన్ని పూర్తి చేసిన తర్వాత (అంటే కంటెంట్ బకెట్ ప్రదర్శన 100% కోసం అన్ని ఫైల్‌లు), మా వృత్తిపరమైన అనువాద సేవ కంటెంట్‌ని సమీక్షిస్తుంది (మరియు సంభావ్యంగా సవరించవచ్చు). సమీక్ష పూర్తయిన తర్వాత (అంటే సమీక్ష పురోగతి 100%), మేము దానిని వెబ్‌సైట్‌కి జోడిస్తాము. + + + + + దయచేసి ప్రాజెక్ట్‌ను అనువదించడానికి యంత్ర అనువాదాన్ని ఉపయోగించవద్దు. వెబ్‌సైట్‌కి జోడించబడే ముందు అన్ని అనువాదాలు సమీక్షించబడతాయి. మీరు సూచించిన అనువాదాలు యంత్రానికి అనువదించబడినట్లు కనుగొనబడితే, అవి తీసివేయబడతాయి మరియు తరచుగా యంత్ర అనువాదాన్ని ఉపయోగించే సహకారులు ప్రాజెక్ట్ నుండి తీసివేయబడతారు. + + + +### సంప్రదించండి {#get-in-touch} + +మీకు ఏవైనా ప్రశ్నలు ఉన్నాయా? లేదా మా బృందం మరియు ఇతర అనువాదకులతో సహకరించాలనుకుంటున్నారా? దయచేసి మా [ethereum.org డిస్కార్డ్ సర్వర్](https://discord.gg/ethereum-org) యొక్క #translations ఛానెల్‌లో పోస్ట్ చేయండి + +మీరు అనువాదాలు@ethereum.orgలో కూడా మమ్మల్ని సంప్రదించవచ్చు + +Ethereum.org అనువాద ప్రోగ్రామ్‌లో మీరు పాల్గొన్నందుకు ధన్యవాదాలు! diff --git a/public/content/translations/te/contributing/translation-program/index.md b/public/content/translations/te/contributing/translation-program/index.md new file mode 100644 index 00000000000..eba9916f138 --- /dev/null +++ b/public/content/translations/te/contributing/translation-program/index.md @@ -0,0 +1,91 @@ +--- +title: "అనువాద కార్యక్రమం" +lang: te +description: "Ethereum.org అనువాద ప్రోగ్రామ్ గురించిన సమాచారం" +--- + +# అనువాద కార్యక్రమం {#translation-program} + +అనువాద కార్యక్రమం అనేది ప్రపంచవ్యాప్తంగా ఉన్న బిలియన్ల కొద్దీ ఆంగ్లేతర మాట్లాడేవారికి వెబ్‌సైట్‌ను మరింత అందుబాటులోకి తీసుకురావడానికి ethereum.orgని వివిధ భాషల్లోకి అనువదించడానికి ఒక సహకార ప్రయత్నం. + +![](./enterprise-eth.png) + +## అనువదించడంలో మాకు సహాయం చేయండి {#help-us-translate} + +Ethereum.org అనువాద ప్రోగ్రామ్ తెరిచి ఉంది మరియు ఎవరైనా సహకరించవచ్చు! + +1. మీరు మీ క్రౌడిన్ ఖాతాకు లాగిన్ అవ్వాలి లేదా సైన్ అప్ చేయాలి. +2. మీరు సహకారం అందించాలనుకుంటున్న భాషను ఎంచుకోండి. +3. ప్రారంభించే ముందు, Crowdin ఎలా ఉపయోగించాలో తెలుసుకోవడానికి దయచేసి [ఎలా అనువదించాలి](/contributing/translation-program/how-to-translate/) మార్గదర్శిని, మరియు చిట్కాలు మరియు ఉత్తమ పద్ధతుల కోసం [అనువాద శైలి మార్గదర్శి](/contributing/translation-program/translators-guide/) ని చూడండి. +4. యంత్ర అనువాదాలు ఆమోదించబడవు. +5. సైట్‌కు జోడించబడే ముందు అన్ని అనువాదాలు సమీక్షించబడతాయి, కాబట్టి మీ అనువాదాలు ప్రత్యక్ష ప్రసారం కావడానికి కొంత ఆలస్యం అవుతుంది. + +_అనువాదాలపై సహకరించడానికి, ప్రశ్నలు అడగడానికి, అభిప్రాయం మరియు ఆలోచనలను పంచుకోవడానికి, లేదా ఒక అనువాద సమూహంలో చేరడానికి [ethereum.org డిస్కార్డ్](https://discord.gg/ethereum-org) లో చేరండి._ + + + అనువదించడం ప్రారంభించండి + + +## అనువాద కార్యక్రమం గురించి {#about-us} + +Ethereum కమ్యూనిటీ గ్లోబల్ మరియు అందరినీ కలుపుకొని ఉండాలని లక్ష్యంగా పెట్టుకుంది, అయినప్పటికీ దాని కంటెంట్‌లో ఎక్కువ భాగం ఇంగ్లీష్ మాట్లాడేవారికి మాత్రమే అందిస్తుంది, ప్రపంచంలోని 6 బిలియన్ల ఆంగ్లేతర మాట్లాడేవారిని వదిలివేస్తుంది. Ethereum.org ప్రపంచవ్యాప్త కమ్యూనిటీ కోసం Ethereumలో పోర్టల్‌గా పని చేయడానికి, ఆంగ్లేతర మాట్లాడేవారికి వారి స్థానిక భాషలలో Ethereum కంటెంట్‌ను అందించడం చాలా అవసరమని మేము విశ్వసిస్తున్నాము. + +Ethereum.org అనువాద ప్రోగ్రామ్ ethereum.org మరియు ఇతర Ethereum కంటెంట్‌ను వీలైనన్ని ఎక్కువ భాషల్లోకి అనువదించడం ద్వారా ప్రతి ఒక్కరికీ Ethereumని అందుబాటులో ఉంచడం లక్ష్యంగా పెట్టుకుంది. + +ethereum.org అనువాద కార్యక్రమం [ధ్యేయం మరియు దృష్టి](/contributing/translation-program/mission-and-vision) గురించి మరింత చదవండి. + +### ఇప్పటివరకు మా పురోగతి {#our-progress} + +- [**6,900 +** అనువాదకులు](/contributing/translation-program/contributors/) +- **68** భాషలు సైట్‌లో ప్రత్యక్షంగా ఉన్నాయి +- [**2.89 మిలియన్** పదాలు 2024లో అనువదించబడ్డాయి](/contributing/translation-program/acknowledgements/) + + + +### ధన్యవాదాలు {#acknowledgements} + +Ethereum.orgని వేలాది మంది కమ్యూనిటీ సభ్యులు అనువదించారు మరియు వారు అనువాద కార్యక్రమంలో కీలక భాగం. +మేము మా అనువాదకులను గుర్తించి, వారి కెరీర్‌లో వారికి మద్దతు ఇవ్వాలని కోరుకుంటున్నాము. మా అనువాదకుల రసీదులలో కొన్ని ఇక్కడ ఉన్నాయి: + +#### సర్టిఫికెట్ {#certificate} + +మీరు అనువాద ప్రోగ్రామ్‌కు సహకరించి, మీ అనువదించిన పదాలలో కనీసం 5,000 ఆమోదించబడితే, మీరు ethereum.org అనువాదకుని సర్టిఫికేట్‌కు అర్హులు. [సర్టిఫికెట్లపై మరింత](/contributing/translation-program/acknowledgements/#certificate) + +#### OATs {#oats} + +2024లో అనువదించబడిన పదాల సంఖ్య ఆధారంగా అనువాద ప్రోగ్రామ్‌కు కంట్రిబ్యూటర్లు వేర్వేరు OATలకు (ఓన్‌చెయిన్ అచీవ్‌మెంట్ టోకెన్‌లు) అర్హులు. OATలు ethereum.org అనువాద ప్రోగ్రామ్‌కు మీ సహకారాన్ని నిరూపించే NFTలు. [OATs పై మరింత](/contributing/translation-program/acknowledgements/#oats) + +#### అనువాదకుల ధన్యవాదాలు {#translator-acknowledgements} + +[లీడర్‌బోర్డులు](/contributing/translation-program/acknowledgements/) మరియు [అనువాద కార్యక్రమానికి సహకరించిన వారందరి జాబితా](/contributing/translation-program/contributors/) ఉపయోగించి మా అగ్ర అనువాదకులకు బహిరంగ ధన్యవాదాలు. + +#### బహుమతులు {#rewards} + +గతంలో, మేము మా అత్యంత చురుకైన సహాయకులకు [Devcon](https://devcon.org/en/) మరియు [Devconnect](https://devconnect.org/) వంటి Ethereum సమావేశాలకు టిక్కెట్లతో, అలాగే ప్రత్యేకమైన ethereum.org వస్తువులతో ప్రతిఫలంగా బహుమతులు అందించాము. + +మేము మా కంట్రిబ్యూటర్‌లకు రివార్డ్ చేయడానికి కొత్త మరియు వినూత్న మార్గాల గురించి నిరంతరం ఆలోచిస్తూ ఉంటాము, కాబట్టి చూస్తూ ఉండండి! + +### మార్గదర్శకాలు మరియు వనరులు {#guides-and-resources} + +మీరు అనువాద ప్రోగ్రామ్‌కు సహకరిస్తున్నట్లయితే లేదా పాల్గొనడం గురించి ఆలోచిస్తున్నట్లయితే, మీరు దిగువన ఉన్న అనువాద మార్గదర్శకాలను తనిఖీ చేయాలి: + +- [అనువాద శైలి మార్గదర్శి](/contributing/translation-program/translators-guide/) _– ethereum.org అనువాదకుల కోసం సూచనలు మరియు చిట్కాలు_ +- [అనువాద FAQలు](/contributing/translation-program/faq/) _– ethereum.org అనువాద కార్యక్రమం గురించి తరచుగా అడిగే ప్రశ్నలు మరియు సమాధానాలు_ +- [Crowdin ఆన్‌లైన్ ఎడిటర్ గైడ్](https://support.crowdin.com/online-editor/) _– Crowdin ఆన్‌లైన్ ఎడిటర్ మరియు Crowdin యొక్క కొన్ని అధునాతన ఫీచర్లను ఉపయోగించడానికి ఒక లోతైన గైడ్_ + +ఇతర ఉపయోగకరమైన అనువాద సాధనాలు, అనువాదకుల సంఘాలు మరియు అనువాద కార్యక్రమం బ్లాగ్ పోస్ట్‌ల కోసం, దయచేసి [వనరుల పేజీ](/contributing/translation-program/resources/)ని సందర్శించండి. + +## సంప్రదించండి {#get-in-touch} + +మీకు ఏవైనా ప్రశ్నలు ఉన్నాయా? లేదా మా బృందం మరియు ఇతర అనువాదకులతో సహకరించాలనుకుంటున్నారా? దయచేసి మా [ethereum.org డిస్కార్డ్ సర్వర్](https://discord.gg/ethereum-org) యొక్క #translations ఛానెల్‌లో పోస్ట్ చేయండి + +మీరు అనువాదాలు@ethereum.orgలో కూడా మమ్మల్ని సంప్రదించవచ్చు + +## మీ స్వంత అనువాద కార్యక్రమాన్ని ప్రారంభించడం {#starting-a-translation-program} + +మేము Ethereum కంటెంట్‌ను వీలైనన్ని ఎక్కువ భాషల్లోకి అనువదించడానికి మరియు అందరికీ విద్యా కంటెంట్‌ను అందుబాటులో ఉంచడానికి అంకితభావంతో ఉన్నాము. +అనువాదాలపై మా దృష్టికి అనుగుణంగా, మేము ఇతర Ethereum ప్రాజెక్ట్‌లకు వారి స్వంత అనువాద ప్రయత్నాలను నిర్వహించడం, నిర్వహించడం మరియు మెరుగుపరచడంలో సహాయం చేయాలనుకుంటున్నాము. + +ఈ కారణంగా, ethereum.orgని అనువదించే ప్రక్రియలో మేము తెలుసుకున్న కొన్ని చిట్కాలు మరియు ఉత్తమ పద్ధతులను కలిగి ఉన్న ఒక [అనువాద కార్యక్రమం ప్లేబుక్](/contributing/translation-program/playbook/)ని మేము సృష్టించాము. + +మరింత సహకరించాలనుకుంటున్నారా లేదా మా అనువాద వనరులలో కొన్నింటిని ఉపయోగించాలనుకుంటున్నారా? ప్లేబుక్‌పై ఏదైనా అభిప్రాయం ఉందా? Translation@ethereum.orgలో మీ నుండి వినడానికి మేము ఇష్టపడతాము. diff --git a/public/content/translations/te/contributing/translation-program/mission-and-vision/index.md b/public/content/translations/te/contributing/translation-program/mission-and-vision/index.md new file mode 100644 index 00000000000..4e970b41259 --- /dev/null +++ b/public/content/translations/te/contributing/translation-program/mission-and-vision/index.md @@ -0,0 +1,25 @@ +--- +title: "లక్ష్యం మరియు దార్శనికత" +lang: te +description: "ethereum.org అనువాద ప్రోగ్రామ్ లక్ష్యం మరియు దార్శనికత" +--- + +# లక్ష్యం మరియు దార్శనికత {#mission-and-vision} + +Ethereum కమ్యూనిటీ గ్లోబల్ మరియు అందరినీ కలుపుకొని ఉండాలని లక్ష్యంగా పెట్టుకుంది, అయినప్పటికీ దాని కంటెంట్‌లో ఎక్కువ భాగం ఇంగ్లీష్ మాట్లాడేవారికి మాత్రమే అందిస్తుంది, ప్రపంచంలోని 6 బిలియన్ల ఆంగ్లేతర మాట్లాడేవారిని వదిలివేస్తుంది. Ethereum.org ప్రపంచవ్యాప్త కమ్యూనిటీ కోసం Ethereumలో పోర్టల్‌గా పని చేయడానికి, ఆంగ్లేతర మాట్లాడేవారికి వారి స్థానిక భాషలలో Ethereum కంటెంట్‌ను అందించడం చాలా అవసరమని మేము విశ్వసిస్తున్నాము. + +Ethereum.org అనువాద ప్రోగ్రామ్ ethereum.org మరియు ఇతర Ethereum కంటెంట్‌ను వీలైనన్ని ఎక్కువ భాషల్లోకి అనువదించడం ద్వారా ప్రతి ఒక్కరికీ Ethereumని అందుబాటులో ఉంచడం లక్ష్యంగా పెట్టుకుంది. + +## మా లక్ష్యం {#our-mission} + +- ప్రపంచవ్యాప్తంగా ఉన్న సందర్శకులు తమ మాతృభాషలో Ethereum గురించి తెలుసుకోవడానికి వీలుగా వెబ్‌సైట్ యొక్క అనువాద సంస్కరణలను అందించడం. +- ప్రపంచ Ethereum సంఘంలోకి మరింత మంది సభ్యుల చేరికను సులభతరం చేయడం. +- Ethereum సమాచారం మరియు జ్ఞానాన్ని మరింత అందుబాటులో ఉండేలా మరియు సమగ్రంగా పంచుకోవడానికి అనుమతించడం. +- సంఘం సభ్యులు Ethereumకు అనువాదాలు అందించడం ద్వారా పర్యావరణ వ్యవస్థపై తమదైన ముద్ర వేయడానికి సాధికారత కల్పించడం. +- పర్యావరణ వ్యవస్థలో పాలుపంచుకోవాలని చూస్తున్న ఉత్సాహభరితమైన సహాయకులను గుర్తించడం, వారితో కనెక్ట్ అవ్వడం మరియు వారికి మార్గదర్శకత్వం అందించడం. + +## మా దార్శనికత {#our-vision} + +- సాధ్యమైనన్ని ఎక్కువ దేశాలు మరియు ప్రపంచంలోని ప్రాంతాల నుండి వచ్చిన Ethereum సంఘం సభ్యుల కోసం అవసరమైన కంటెంట్‌ను అనువదించడం. +- మరింత సమాచారం మరియు విద్యావంతులైన Ethereum సంఘాన్ని సృష్టించడానికి భాషల అంతటా జ్ఞానాన్ని పంచుకోవడానికి మద్దతు ఇవ్వడం. +- ఆంగ్లేతరులు పర్యావరణ వ్యవస్థలో చేరకుండా నిరోధించే భాషా అడ్డంకులను తొలగించడం ద్వారా Ethereum యొక్క సమ్మిళితత్వం మరియు ప్రాప్యతను పెంచడం. diff --git a/public/content/translations/te/contributing/translation-program/playbook/index.md b/public/content/translations/te/contributing/translation-program/playbook/index.md new file mode 100644 index 00000000000..fc7ac35e507 --- /dev/null +++ b/public/content/translations/te/contributing/translation-program/playbook/index.md @@ -0,0 +1,317 @@ +--- +title: "అనువాద కార్యక్రమ ప్లేబుక్" +lang: te +description: "అనువాద కార్యక్రమాన్ని ఏర్పాటు చేయడానికి చిట్కాలు మరియు ముఖ్యమైన పరిశీలనల సమాహారం" +--- + +# అనువాద కార్యక్రమ ప్లేబుక్ {#translation-program-playbook} + +ఇంగ్లీషు ప్రపంచంలో అత్యధికంగా మాట్లాడే భాషలలో ఒకటి మరియు ప్రపంచంలో అత్యధికంగా అధ్యయనం చేయబడిన భాష. ఇంటర్నెట్‌లో ముఖ్యంగా సోషల్ మీడియాలో ఇంగ్లీషు అత్యంత సాధారణంగా ఉపయోగించే భాష కాబట్టి మరియు బహుభాషా ప్రోగ్రామింగ్ భాషలు చాలా అరుదుగా ఉన్నందున, బ్లాక్‌చెయిన్ రంగంలో చాలా కంటెంట్ సహజంగా ఇంగ్లీషులో వ్రాయబడింది. + +అయితే, ప్రపంచంలో 6 బిలియన్ల కంటే ఎక్కువ మంది ప్రజలు (జనాభాలో 75% కంటే ఎక్కువ) ఇంగ్లీషు అస్సలు మాట్లాడనందున, ఇది ప్రపంచ జనాభాలో అత్యధికులకు Ethereum లోకి ప్రవేశించడానికి ఒక పెద్ద అడ్డంకిని కలిగిస్తుంది. + +ఈ కారణంగా, ఈ రంగంలో పెరుగుతున్న ప్రాజెక్టులు తమ కంటెంట్‌ను వివిధ భాషల్లోకి అనువదించి, ప్రపంచ సమాజాల కోసం స్థానికీకరించాలని చూస్తున్నాయి. + +బహుభాషా కంటెంట్‌ను అందించడం అనేది మీ ప్రపంచ సమాజాన్ని పెంచడానికి, ఇంగ్లీషు మాట్లాడని వారికి విద్యను అందించడానికి, మీ కంటెంట్ మరియు కమ్యూనికేషన్‌లు విస్తృత ప్రేక్షకులను చేరుకునేలా చూసుకోవడానికి మరియు ఈ రంగంలోకి ఎక్కువ మందిని తీసుకురావడానికి ఒక సులభమైన మరియు ప్రభావవంతమైన మార్గం. + +ఈ గైడ్ కంటెంట్ స్థానికీకరణ గురించి సాధారణ సవాళ్లు మరియు అపోహలను పరిష్కరించడం లక్ష్యంగా పెట్టుకుంది. ఇది కంటెంట్‌ను నిర్వహించడానికి, అనువాదం మరియు సమీక్ష ప్రక్రియ, నాణ్యతా హామీ, అనువాదకుల చేరువ మరియు స్థానికీకరణ ప్రక్రియలోని ఇతర ముఖ్యమైన అంశాలకు దశలవారీ మార్గదర్శినిని అందిస్తుంది. + +## కంటెంట్ నిర్వహణ {#content-management} + +అనువాద కంటెంట్ నిర్వహణ అనేది అనువాద పనిప్రవాహాన్ని ఆటోమేట్ చేసే ప్రక్రియను సూచిస్తుంది, ఇది పునరావృతమయ్యే మాన్యువల్ పని అవసరాన్ని తొలగిస్తుంది, సామర్థ్యం మరియు నాణ్యతను మెరుగుపరుస్తుంది, మెరుగైన నియంత్రణను అనుమతిస్తుంది మరియు సహకారాన్ని అనుమతిస్తుంది. + +స్థానికీకరణ ప్రక్రియలో కంటెంట్ నిర్వహణకు కంటెంట్ మరియు మీ అవసరాలను బట్టి అనేక విభిన్న విధానాలు ఉన్నాయి. + +కంటెంట్‌ను నిర్వహించడానికి ప్రాథమిక మార్గం, మూలం మరియు లక్ష్య వచనాన్ని కలిగి ఉన్న ద్విభాషా ఫైళ్ళను సృష్టించడం. ఇది అనువాదంలో చాలా అరుదుగా ఉపయోగించబడుతుంది, ఎందుకంటే ఇది సరళత తప్ప, గణనీయమైన ప్రయోజనాలను అందించదు. + +అనువాద ఏజెన్సీలు సాధారణంగా అనువాద నిర్వహణ సాఫ్ట్‌వేర్ లేదా స్థానికీకరణ సాధనాలను ఉపయోగించడం ద్వారా అనువాద నిర్వహణను సంప్రదిస్తాయి, ఇవి ప్రాజెక్ట్ నిర్వహణ సామర్థ్యాలను అందిస్తాయి మరియు ఫైళ్లు, కంటెంట్ మరియు భాషావేత్తలపై చాలా ఎక్కువ నియంత్రణను అనుమతిస్తాయి. + +కంటెంట్ నిర్వహణ గురించి మరింత చదవండి: + +[అనువాద నిర్వహణ అంటే ఏమిటో ట్రెడోస్లో](https://www.trados.com/solutions/translation-management/) + +[బహుభాషా కంటెంట్ నిర్వహణపై పదబంధం](https://phrase.com/blog/posts/multilingual-content-management/) + +### అనువాద నిర్వహణ సాఫ్ట్‌వేర్ {#translation-management-software} + +అనేక అనువాద నిర్వహణ వ్యవస్థలు మరియు స్థానికీకరణ సాధనాలు ఉన్నాయి మరియు సాఫ్ట్‌వేర్ ఎంపిక ప్రధానంగా మీ అవసరాలపై ఆధారపడి ఉంటుంది. + +కొన్ని ప్రాజెక్టులు అనువాద నిర్వహణ వ్యవస్థలను ఉపయోగించకుండా నిర్ణయించుకుని, అనువాదాలను మాన్యువల్‌గా నిర్వహించడానికి ఇష్టపడతాయి - నేరుగా ద్విభాషా ఫైళ్ళలో లేదా GitHub వంటి హోస్టింగ్ సేవల్లో - ఇది నియంత్రణ, ఉత్పాదకత, నాణ్యత, స్కేలబిలిటీ మరియు సహకార సామర్థ్యాలను నాటకీయంగా తగ్గిస్తుంది. చిన్న-స్థాయి లేదా ఒక-పర్యాయ అనువాద ప్రాజెక్టులకు అటువంటి విధానం చాలా ప్రయోజనకరంగా ఉండవచ్చు. + +అత్యంత శక్తివంతమైన మరియు విస్తృతంగా ఉపయోగించే కొన్ని అనువాద నిర్వహణ సాధనాలపై ఒక శీఘ్ర పరిశీలన: + +**క్రౌడ్‌సోర్సింగ్ మరియు సహకారానికి ఉత్తమమైనది** + +[క్రౌడిన్](https://crowdin.com/) + +- ఓపెన్-సోర్స్ ప్రాజెక్టులకు ఉచితం (అపరిమిత సంఖ్యలో స్ట్రింగ్స్ మరియు ప్రాజెక్టులు) +- TM మరియు గ్లోసరీ అన్ని ప్లాన్‌లతో అందుబాటులో ఉన్నాయి +- 60+ మద్దతు ఉన్న ఫైల్ ఫార్మాట్లు, 70+ API ఇంటిగ్రేషన్‌లు + +[లోకలైజ్](https://lokalise.com/) + +- 2 మంది జట్టు సభ్యులకు ఉచితం, ఎక్కువ మంది కంట్రిబ్యూటర్ల కోసం చెల్లింపు ప్లాన్‌లు (చాలా ప్లాన్‌లకు పరిమిత సంఖ్యలో స్ట్రింగ్‌లు) +- కొన్ని చెల్లింపు ప్లాన్‌లతో TM మరియు గ్లోసరీ అందుబాటులో ఉన్నాయి +- 30+ మద్దతు ఉన్న ఫైల్ ఫార్మాట్లు, 40+ API ఇంటిగ్రేషన్‌లు + +[ట్రాన్సిఫెక్స్](https://www.transifex.com/) + +- చెల్లింపు ప్లాన్‌లు మాత్రమే (చాలా ప్లాన్‌లకు పరిమిత సంఖ్యలో స్ట్రింగ్‌లు) +- అన్ని చెల్లింపు ప్లాన్‌లతో TM మరియు గ్లోసరీ అందుబాటులో ఉన్నాయి +- 30+ మద్దతు ఉన్న ఫైల్ ఫార్మాట్లు, 20+ API ఇంటిగ్రేషన్‌లు + +[ఫ్రేజ్](https://phrase.com/) + +- చెల్లింపు ప్లాన్‌లు మాత్రమే (అన్ని ప్లాన్‌లకు అపరిమిత సంఖ్యలో స్ట్రింగ్‌లు, పరిమిత సంఖ్యలో ప్రాజెక్టులు మరియు జట్టు సభ్యులు) +- కొన్ని చెల్లింపు ప్లాన్‌లతో TM మరియు గ్లోసరీ అందుబాటులో ఉన్నాయి +- 40+ మద్దతు ఉన్న ఫైల్ ఫార్మాట్లు, 20+ API ఇంటిగ్రేషన్‌లు + +[స్మార్ట్‌క్యాట్](https://www.smartcat.com/) + +- చెల్లించదగిన అధునాతన ఫీచర్లతో ప్రాథమిక ఉచిత ప్లాన్ (అన్ని ప్లాన్‌లకు అపరిమిత సంఖ్యలో స్ట్రింగ్‌లు మరియు ప్రాజెక్టులు) +- TM మరియు గ్లోసరీ అన్ని ప్లాన్‌లతో అందుబాటులో ఉన్నాయి +- 60+ మద్దతు ఉన్న ఫైల్ ఫార్మాట్లు, 20+ API ఇంటిగ్రేషన్‌లు + +[POEditor](https://poeditor.com/) + +- ఓపెన్-సోర్స్ ప్రాజెక్టులకు ఉచితం (అన్ని ప్రాజెక్టులకు పరిమిత సంఖ్యలో స్ట్రింగ్‌లు, ఓపెన్-సోర్స్ ప్రాజెక్టులకు అపరిమితం) +- చెల్లింపు ప్లాన్‌లకు TM మరియు గ్లోసరీ అందుబాటులో ఉన్నాయి +- 20+ మద్దతు ఉన్న ఫైల్ ఫార్మాట్లు, 10+ API ఇంటిగ్రేషన్‌లు + +మరియు మరెన్నో... + +**వృత్తిపరమైన అనువాద సాధనాలు** + +[SDL ట్రాడోస్ స్టూడియో](https://www.trados.com/products/trados-studio/) + +- ఫ్రీలాన్స్ అనువాదకులు మరియు బృందాలకు చెల్లింపు ప్లాన్‌లు +- చాలా శక్తివంతమైన కంప్యూటర్-సహాయక అనువాద (CAT) సాధనం మరియు అనువాదకుల ఉత్పాదకత సాఫ్ట్‌వేర్ + +[MemoQ](https://www.memoq.com/) + +- అధునాతన ఫీచర్ల కోసం అనేక చెల్లింపు ప్లాన్‌లతో పరిమిత ఉచిత వెర్షన్ అందుబాటులో ఉంది +- కంపెనీలు, భాషా సేవా ప్రదాతలు మరియు అనువాదకుల కోసం అనువాద నిర్వహణ సాఫ్ట్‌వేర్ + +[Memsource](https://www.memsource.com/) + +- వ్యక్తిగత అనువాదకులకు బృందాల కోసం అనేక చెల్లింపు ప్లాన్‌లతో ఉచితం +- క్లౌడ్-ఆధారిత కంప్యూటర్-సహాయక అనువాదం మరియు అనువాద నిర్వహణ వ్యవస్థ + +మరియు మరెన్నో... + +అనువాద నిర్వహణ సాఫ్ట్‌వేర్ గురించి మరింత చదవండి: + +[అనువాద నిర్వహణ వ్యవస్థల యొక్క వికీపీడియా నిర్వచనం](https://en.wikipedia.org/wiki/Translation_management_system) + +[ప్రతి అనువాద నిర్వహణ సాఫ్ట్‌వేర్ కలిగి ఉండవలసిన 7 విషయాలపై పదబంధం](https://phrase.com/blog/posts/7-things-every-translation-management-software-should-have/) + +[అనువాద నిర్వహణ వ్యవస్థ అంటే ఏమిటో MemoQ లో](https://www.memoq.com/tools/what-is-a-translation-management-system) + +[16 ఉత్తమ అనువాద నిర్వహణ వ్యవస్థల జెంగో జాబితా](https://gengo.com/translator-product-updates/16-best-translation-management-systems/) + +## వర్క్‌ఫ్లో {#workflow} + +అనువాద రంగంలో, అనువాద వర్క్‌ఫ్లో కొన్ని విభిన్న విషయాలను సూచిస్తుంది, రెండూ కొంతవరకు పరస్పర సంబంధం కలిగి ఉంటాయి మరియు మీ ప్రాజెక్ట్ కోసం ముఖ్యమైన పరిశీలనలు. + +మేము దిగువన వాటి రెండింటినీ అన్వేషిస్తాము. + +**అర్థం 1** + +ఇది బహుశా అనువాద వర్క్‌ఫ్లోల గురించి ఆలోచించడానికి అత్యంత సాధారణ మార్గం మరియు వర్క్‌ఫ్లో అనే పదాన్ని విన్నప్పుడు సాధారణంగా గుర్తుకు వచ్చే విషయం. + +దాని సారాంశంలో, ఇది అనువాదాల గురించి ఆలోచించడం ప్రారంభించడం నుండి మీ ఉత్పత్తిలో అనువదించబడిన కంటెంట్‌ను ఉపయోగించడం వరకు 'పని ప్రవాహం'. + +ఈ సందర్భంలో ఒక ఉదాహరణ వర్క్‌ఫ్లో ఇలా ఉంటుంది: + +1. **అనువాదం కోసం ఫైల్‌లను సిద్ధం చేయడం** – ఇది సరళంగా అనిపిస్తుంది; అయితే, మీరు కొన్ని ముఖ్యమైన విషయాలను పరిగణనలోకి తీసుకోవాలి. ఈ దశలో, మొత్తం ప్రక్రియ ఎలా పని చేయాలో స్పష్టమైన ప్రణాళికను మీరు కలిగి ఉండాలి. + +- _మీరు ఏ ఫైల్ రకాలను ఉపయోగిస్తున్నారు? మీరు మీ అనువదించబడిన ఫైళ్ళను ఏ ఫార్మాట్‌లో స్వీకరించాలనుకుంటున్నారు?_ + - మీ కంటెంట్ DOCX లేదా MD ఫార్మాట్‌లో అందుబాటులో ఉంటే, మీరు మీ శ్వేతపత్రం లేదా ఇతర పత్రాల యొక్క PDF సంస్కరణను అనువదిస్తున్న దానికంటే విధానం చాలా సూటిగా ఉంటుంది. +- _ఏ స్థానికీకరణ సాధనాలు ఈ ఫైల్ రకానికి మద్దతు ఇస్తాయి? అసలు ఫార్మాటింగ్‌ను నిలుపుకునే విధంగా ఫైల్‌ను అనువదించవచ్చా?_ + - అన్ని ఫైల్ రకాలు ప్రత్యక్ష స్థానికీకరణకు మద్దతు ఇవ్వవు (ఉదా., PDF ఫైళ్ళు, చిత్ర ఫైళ్ళు), మరియు అన్ని స్థానికీకరణ సాధనాలు అన్ని ఫైల్ రకాలకు మద్దతు ఇవ్వవు. +- _కంటెంట్‌ను ఎవరు అనువదిస్తున్నారు? మీరు వృత్తిపరమైన అనువాదాలను ఆర్డర్ చేస్తున్నారా లేదా స్వచ్ఛంద సేవకులపై ఆధారపడుతున్నారా?_ + - ఇది మీరు చేయవలసిన అనేక ఇతర నిర్ణయాలను ప్రభావితం చేస్తుంది. ఉదాహరణకు, స్వచ్ఛంద సేవకుల కంటే వృత్తిపరమైన అనువాదకులు అధునాతన స్థానికీకరణ సాధనాలతో పనిచేయడానికి ఎక్కువ సౌకర్యంగా ఉంటారు. +- _భాషావేత్తల కోసం మీ అంచనాలు ఏమిటి? మీరు భాషా సేవా ప్రదాతను ఉపయోగిస్తుంటే, వారు మీ నుండి ఏమి ఆశిస్తున్నారు?_ + - మీ లక్ష్యాలు, అంచనాలు మరియు సమయపాలనలు సరిగ్గా ఉన్నాయని నిర్ధారించుకోవడానికి ఇది ఒక అడుగు. +- _అనువాదం కోసం మొత్తం కంటెంట్ సమానంగా ముఖ్యమా? కొంత కంటెంట్‌ను మొదట అనువదించాలా?_ + - కొన్ని కంటెంట్‌కు ప్రాధాన్యత ఇవ్వడానికి కొన్ని మార్గాలు ఉన్నాయి, వాటిని మొదట అనువదించి అమలు చేయాలి. ఉదాహరణకు, మీకు అనువాదం కోసం చాలా కంటెంట్ ఉంటే, అనువాదకులు దేనికి ప్రాధాన్యత ఇవ్వాలో తెలుసుకోవడానికి మీరు వెర్షన్ నియంత్రణను ఉపయోగించవచ్చు. + +2. **అనువాదం కోసం ఫైళ్లను పంచుకోవడం** – ఈ దశకు కూడా కొంత దీర్ఘకాలిక ఆలోచన అవసరం మరియు భాషా సేవా ప్రదాతకు మూల ఫైళ్లను పంపినంత సూటిగా ఉండదు. + +- _కంటెంట్‌ను ఎవరు అనువదిస్తున్నారు? ఈ ప్రక్రియలో ఎంతమంది పాల్గొంటారు?_ + - మీరు స్థానికీకరణ సాధనాన్ని ఉపయోగించాలని ప్లాన్ చేస్తే, మీరు నేరుగా మూల ఫైళ్లను సాధనానికి అప్‌లోడ్ చేయగలరు కాబట్టి ఈ దశ సరళీకృతం చేయబడింది. అనువాద ప్రక్రియ హోస్టింగ్ సేవలో జరిగితే ఇది కూడా నిజం, ఎందుకంటే మూల ఫైళ్లను ఎక్కడికీ ఎగుమతి చేయవలసిన అవసరం లేదు. +- _మూల ఫైళ్లు మాన్యువల్‌గా నిర్వహించబడతాయా, లేదా ఈ ప్రక్రియను ఆటోమేట్ చేయవచ్చా?_ + - చాలా స్థానికీకరణ సాధనాలు ఫైల్ నిర్వహణ ప్రక్రియ యొక్క కొన్ని రకాల ఏకీకరణ లేదా ఆటోమేషన్‌ను అనుమతిస్తాయి. మరోవైపు, మీరు వ్యక్తిగత అనువాదకులతో పనిచేస్తుంటే మరియు స్థానికీకరణ సాధనాన్ని ఉపయోగించకపోతే, వందల లేదా వేల మంది అనువాదకులకు మూల ఫైళ్లను మాన్యువల్‌గా పంపడం అనేది స్కేలబుల్ ప్రక్రియ కాదు. +- _స్థానికీకరణ కోసం ఏ సాధనాలు ఉపయోగించబడతాయి?_ + - ఈ ప్రశ్నకు సమాధానం మీరు మిగతా అన్ని విషయాలను ఎలా సంప్రదిస్తారో నిర్ణయిస్తుంది. సరైన సాధనాన్ని ఎంచుకోవడం కంటెంట్ నిర్వహణ, అనువాద మెమరీ మరియు గ్లోసరీని నిర్వహించడం, అనువాదకులను నిర్వహించడం, అనువాదం/సమీక్ష పురోగతిని ట్రాక్ చేయడం మొదలైనవాటిని ఆటోమేట్ చేయడంలో మీకు సహాయపడుతుంది, కాబట్టి మీరు ఏ సాధనాన్ని ఉపయోగించాలనుకుంటున్నారో కొంత సమయం తీసుకుని పరిశోధన చేయండి. మీరు స్థానికీకరణ సాధనాన్ని ఉపయోగించాలని ప్లాన్ చేయకపోతే, పైన పేర్కొన్నవన్నీ మాన్యువల్‌గా చేయాలి. +- _అనువాద ప్రక్రియకు ఎంత సమయం పడుతుంది? దీనికి ఎంత ఖర్చవుతుంది?_ + - ఈ సమయంలో, మీరు భాషా సేవా ప్రదాత లేదా అనువాదకుల సమూహంతో మూల ఫైళ్లను పంచుకోవడానికి సిద్ధంగా ఉండాలి. భాషా సేవా ప్రదాత పదాల సంఖ్యను విశ్లేషించడంలో మీకు సహాయపడుతుంది మరియు అనువాద ప్రక్రియకు సంబంధించిన రేట్లు మరియు సమయపాలనతో సహా కోట్‌ను అందిస్తుంది. +- _ఈ ప్రక్రియలో మీరు మూల కంటెంట్‌ను మార్చడానికి/నవీకరించడానికి ప్లాన్ చేస్తున్నారా?_ + - మీ కంటెంట్ డైనమిక్ మరియు తరచుగా మారితే, ఏవైనా మార్పులు లేదా నవీకరణలు అనువాద పురోగతికి అంతరాయం కలిగిస్తాయి. అనువాద మెమరీని ఉపయోగించడం ఈ సమస్యను గణనీయంగా తగ్గించడంలో సహాయపడుతుంది, అయినప్పటికీ ప్రక్రియ ఎలా పనిచేస్తుందనే దాని గురించి ఆలోచించడం మరియు అనువాదకులు చేస్తున్న పురోగతిని వెనక్కి నెట్టకుండా ఎలా నిరోధించవచ్చనే దాని గురించి ఆలోచించడం ఇంకా ముఖ్యం. + +3. **అనువాద ప్రక్రియను నిర్వహించడం** – మూల కంటెంట్ భాషా సేవా ప్రదాతకు లేదా అనువాదకులకు అప్పగించబడిన తర్వాత మీ పని పూర్తి కాదు. అనువాదాల యొక్క ఉత్తమ నాణ్యతను నిర్ధారించడానికి, కంటెంట్ సృష్టికర్తలు సాధ్యమైనంత వరకు అనువాద ప్రక్రియలో పాల్గొనాలి. + +- _మీరు అనువాదకులతో ఎలా కమ్యూనికేట్ చేయాలని ప్లాన్ చేస్తున్నారు?_ + - మీరు స్థానికీకరణ సాధనాన్ని ఉపయోగించాలని ప్లాన్ చేస్తుంటే, కమ్యూనికేషన్ నేరుగా సాధనంలో జరగవచ్చు. అనువాదకులతో ప్రత్యామ్నాయ కమ్యూనికేషన్ ఛానెల్‌ను ఏర్పాటు చేయడం కూడా సిఫార్సు చేయబడింది, ఎందుకంటే వారు సంప్రదించడానికి తక్కువ సంకోచించవచ్చు మరియు సందేశ సాధనాలు మరింత స్వేచ్ఛా ప్రవాహ కమ్యూనికేషన్‌ను అనుమతిస్తాయి. +- _అనువాదకుల నుండి ప్రశ్నలను ఎలా నిర్వహించాలి? ఈ ప్రశ్నలకు ఎవరు సమాధానం ఇవ్వాలి?_ + - అనువాదకులు (వృత్తిపరమైన మరియు వృత్తిపరమైన కాని వారు) తరచుగా స్పష్టత లేదా అదనపు సందర్భం కోసం ప్రశ్నలు మరియు అభ్యర్థనలతో, అలాగే మెరుగుదలల కోసం అభిప్రాయం మరియు ఆలోచనలతో సంప్రదిస్తారు. ఈ విచారణలకు ప్రత్యుత్తరం ఇవ్వడం తరచుగా మెరుగైన నిమగ్నతకు మరియు అనువదించబడిన కంటెంట్ యొక్క నాణ్యతకు దారితీస్తుంది. వారికి సాధ్యమైనన్ని ఎక్కువ వనరులను (ఉదా., గైడ్‌లు, చిట్కాలు, పరిభాష మార్గదర్శకాలు, FAQ లు మొదలైనవి) అందించడం కూడా విలువైనది. +- _సమీక్ష ప్రక్రియను ఎలా నిర్వహించాలి? మీరు దానిని అవుట్‌సోర్స్ చేయాలనుకుంటున్నారా, లేదా అంతర్గతంగా సమీక్షలను నిర్వహించడానికి మీకు సామర్థ్యం ఉందా?_ + - ఎల్లప్పుడూ అవసరం కానప్పటికీ, సమీక్షలు ఉత్తమ అనువాద ప్రక్రియలో అంతర్భాగం. సాధారణంగా, సమీక్ష ప్రక్రియను వృత్తిపరమైన సమీక్షకులకు అవుట్‌సోర్స్ చేయడం సులభం. అయితే, మీకు పెద్ద అంతర్జాతీయ బృందం ఉంటే, సమీక్షలు లేదా QA ను అంతర్గతంగా కూడా నిర్వహించవచ్చు. + +4. **అనువదించబడిన కంటెంట్‌ను అమలు చేయడం** – వర్క్‌ఫ్లో యొక్క చివరి భాగం, అయినప్పటికీ ముందుగానే పరిగణనలోకి తీసుకోవడం ఇంకా ముఖ్యం. + +- _అన్ని అనువాదాలు ఒకే సమయంలో పూర్తవుతాయా?_ + - కాకపోతే, ఏ అనువాదాలకు ప్రాధాన్యత ఇవ్వాలో, పురోగతిలో ఉన్న అనువాదాలను ఎలా ట్రాక్ చేయాలో మరియు అనువాదాలు పూర్తయినప్పుడు అమలు ఎలా నిర్వహించబడుతుందో మీరు ఆలోచించాలి. +- _అనువదించబడిన కంటెంట్ మీకు ఎలా పంపిణీ చేయబడుతుంది? అది ఏ ఫార్మాట్‌లో ఉంటుంది?_ + - మీరు ఏ విధానాన్ని ఉపయోగించినప్పటికీ ఇది ఒక ముఖ్యమైన పరిశీలన. స్థానికీకరణ సాధనాలు లక్ష్య ఫైల్ ఫార్మాట్ మరియు ఎగుమతి ప్రక్రియపై నియంత్రణను నిర్వహించడానికి మరియు సాధారణంగా ఆటోమేషన్‌కు మద్దతు ఇవ్వడానికి మిమ్మల్ని అనుమతిస్తాయి, ఉదా., హోస్టింగ్ సేవతో ఏకీకరణను ప్రారంభించడం ద్వారా. +- _మీ ప్రాజెక్ట్‌లో మీరు అనువాదాలను ఎలా అమలు చేయబోతున్నారు?_ + - కొన్ని సందర్భాల్లో, ఇది అనువదించబడిన ఫైల్‌ను అప్‌లోడ్ చేయడం లేదా మీ డాక్స్‌కు జోడించడం అంత సులభం కావచ్చు. అయితే, వెబ్‌సైట్ లేదా యాప్ అనువాదాల వంటి మరింత క్లిష్టమైన ప్రాజెక్టులతో, కోడ్ అంతర్జాతీయీకరణకు మద్దతు ఇస్తుందని మీరు నిర్ధారించుకోవాలి మరియు అమలు ప్రక్రియ ముందుగానే ఎలా నిర్వహించబడుతుందో స్థాపించాలి. +- _ఫార్మాటింగ్ మూలానికి భిన్నంగా ఉంటే ఏమి జరుగుతుంది?_ + - పైన పేర్కొన్న విధంగా, మీరు సాధారణ టెక్స్ట్ ఫైల్‌లను అనువదిస్తుంటే, ఫార్మాటింగ్ బహుశా చాలా ముఖ్యమైనది కాదు. అయితే, వెబ్‌సైట్ లేదా అప్లికేషన్ కోసం కంటెంట్ వంటి మరింత క్లిష్టమైన ఫైల్‌లతో, మీ ప్రాజెక్ట్‌లో అమలు చేయడానికి ఫార్మాటింగ్ మరియు కోడ్ మూలానికి సమానంగా ఉండాలి. కాకపోతే, లక్ష్య ఫైళ్లను అనువాదకులు లేదా మీ డెవలపర్లు సవరించవలసి ఉంటుంది. + +**అర్థం 2** + +ఒక ప్రత్యామ్నాయ అనువాద వర్క్‌ఫ్లో, ఇది అంతర్గత నిర్ణయాలు మరియు విధానాలను లెక్కలోకి తీసుకోదు. ఇక్కడ ప్రధాన పరిశీలన కంటెంట్ యొక్క ప్రవాహం. + +ఈ సందర్భంలో ఒక ఉదాహరణ వర్క్‌ఫ్లో ఇలా ఉంటుంది: + +1. _అనువాదం → అమలు_ + +- అమలుకు ముందు నాణ్యతను మూల్యాంకనం చేయడానికి మరియు అనువాదాలను సవరించడానికి సమీక్ష లేదా QA ప్రక్రియ లేనందున, అనువాదం మానవ అనువాదం అయ్యే అవకాశం ఉన్న సరళమైన వర్క్‌ఫ్లో. +- ఈ వర్క్‌ఫ్లోతో, అనువాదకులు ఒక నిర్దిష్ట స్థాయి నాణ్యతను నిర్వహించడం ముఖ్యం, దీనికి ప్రాజెక్ట్ మేనేజర్లు మరియు అనువాదకుల మధ్య తగిన వనరులు మరియు కమ్యూనికేషన్ అవసరం. + +2. _అనువాదం → సమీక్ష → అమలు_ + +- అనువాదాల నాణ్యత ఆమోదయోగ్యంగా మరియు స్థిరంగా ఉందని నిర్ధారించుకోవడానికి, సమీక్ష మరియు సవరణ ప్రక్రియను కలిగి ఉన్న మరింత అధునాతన వర్క్‌ఫ్లో. +- ఈ వర్క్‌ఫ్లోకు అనేక విధానాలు ఉన్నాయి, ఇక్కడ అనువాదాలు వృత్తిపరమైన అనువాదకులు లేదా స్వచ్ఛంద సేవకులచే నిర్వహించబడవచ్చు, అయితే సమీక్ష ప్రక్రియ బహుశా వృత్తిపరమైన సమీక్షకులచే నిర్వహించబడుతుంది, వీరు లక్ష్య భాషలో పాటించాల్సిన అన్ని వ్యాకరణం మరియు వర్ణక్రమ నియమాలతో సుపరిచితులు. + +3. _అనువాదం → సమీక్ష → QA → అమలు_ + +- అత్యధిక స్థాయి నాణ్యతను నిర్ధారించడానికి ఉత్తమ వర్క్‌ఫ్లో. QA ఎల్లప్పుడూ అవసరం కానప్పటికీ, అనువాదం మరియు సమీక్ష తర్వాత అనువదించబడిన టెక్స్ట్ యొక్క నాణ్యత గురించి మీకు మంచి అవగాహన ఇవ్వడానికి ఇది ఉపయోగపడుతుంది. +- ఈ వర్క్‌ఫ్లోతో, అనువాదాలు ప్రత్యేకంగా స్వచ్ఛంద సేవకులు లేదా మెషిన్ అనువాదం ద్వారా కూడా నిర్వహించబడవచ్చు. సమీక్ష ప్రక్రియను వృత్తిపరమైన అనువాదకులు నిర్వహించాలి, అయితే QA ను ఒక భాషా సేవా ప్రదాత లేదా అంతర్గతంగా, మీకు లక్ష్య భాషల మాతృభాష మాట్లాడే ఉద్యోగులు ఉంటే నిర్వహించవచ్చు. + +అనువాద వర్క్‌ఫ్లోల గురించి మరింత చదవండి: + +[అనువాద వర్క్‌ఫ్లో యొక్క ఐదు దశలపై కంటెంట్ నియమాలు](https://contentrules.com/creating-translation-workflow/) + +[అనువాద వర్క్‌ఫ్లో నిర్వహణ అంటే ఏమిటో స్మార్ట్‌లింగ్‌లో](https://www.smartling.com/resources/101/what-is-translation-workflow-management/) + +[అనువాద వర్క్‌ఫ్లోపై రిక్స్‌ట్రాన్స్](https://www.rixtrans.com/translation-workflow) + +## పరిభాష నిర్వహణ {#terminology-management} + +పరిభాషను ఎలా నిర్వహించాలనే దానిపై స్పష్టమైన ప్రణాళికను స్థాపించడం అనేది మీ అనువాదాల యొక్క నాణ్యత మరియు స్థిరత్వాన్ని నిర్ధారించడానికి మరియు మీ అనువాదకుల సమయాన్ని ఆదా చేయడానికి చాలా ముఖ్యమైన దశలలో ఒకటి. + +అనువాద రంగంలో, దీనిని పరిభాష నిర్వహణ అని పిలుస్తారు మరియు ఇది భాషా సేవా ప్రదాతలు తమ క్లయింట్‌లకు, వారి భాషావేత్తల సమూహం మరియు కంటెంట్ నిర్వహణకు అదనంగా అందించే కీలక సేవల్లో ఒకటి. + +పరిభాష నిర్వహణ అనేది మీ ప్రాజెక్ట్ కోసం ముఖ్యమైన మరియు ఎల్లప్పుడూ సరిగ్గా మరియు స్థిరంగా అనువదించబడాల్సిన పరిభాషను గుర్తించడం, సేకరించడం మరియు నిర్వహించడం అనే ప్రక్రియను సూచిస్తుంది. + +పరిభాష నిర్వహణ గురించి ఆలోచించడం ప్రారంభించినప్పుడు అనుసరించాల్సిన కొన్ని దశలు ఉన్నాయి: + +- టెర్మ్‌బేస్‌లో చేర్చవలసిన కీలక పదాలను గుర్తించండి. +- పదాలు మరియు వాటి నిర్వచనాల గ్లోసరీని సృష్టించండి. +- పదాలను అనువదించి వాటిని గ్లోసరీకి జోడించండి. +- అనువాదాలను తనిఖీ చేసి ఆమోదించండి. +- గ్లోసరీని నిర్వహించండి మరియు అవి ముఖ్యమైనప్పుడు కొత్త పదాలతో నవీకరించండి. + +పరిభాష నిర్వహణ గురించి మరింత చదవండి: + +[పరిభాష నిర్వహణ అంటే ఏమిటో ట్రెడోస్లో](https://www.trados.com/solutions/terminology-management/translation-101-what-is-terminology-management.html) + +[పరిభాష నిర్వహణ ఎందుకు ముఖ్యమో లాంగ్వేజ్ సైంటిఫిక్ లో](https://www.languagescientific.com/terminology-management-why-it-matters/#:~:text=Terminology%20management%20is%20the%20process,are%20related%20to%20each%20other.) + +[పరిభాష నిర్వహణ అంటే ఏమిటి మరియు అది ఎందుకు ముఖ్యమో క్లియర్ వర్డ్స్ అనువాదంలో](http://clearwordstranslations.com/language/en/what-is-terminology-management/) + +### అనువాద మెమరీ మరియు గ్లోసరీ {#tm-and-glossary} + +అనువాద మెమరీ మరియు గ్లోసరీ అనువాద పరిశ్రమలో ముఖ్యమైన సాధనాలు మరియు చాలా భాషా సేవా ప్రదాతలు ఆధారపడే విషయం. + +ఈ పదాల అర్థం ఏమిటో మరియు అవి ఒకదానికొకటి ఎలా భిన్నంగా ఉన్నాయో చూద్దాం: + +**అనువాద మెమరీ (TM)** – ప్రతి భాషలో పొడవైన టెక్స్ట్ బ్లాక్‌లు, పూర్తి వాక్యాలు, పేరాలు మరియు వ్యక్తిగత పదాలతో సహా సెగ్మెంట్‌లు లేదా స్ట్రింగ్‌లను, అలాగే వాటి ప్రస్తుత మరియు మునుపటి అనువాదాలను స్వయంచాలకంగా నిల్వ చేసే డేటాబేస్. + +చాలా స్థానికీకరణ సాధనాలు, అనువాద నిర్వహణ వ్యవస్థలు మరియు కంప్యూటర్-సహాయక అనువాద సాధనాలు అంతర్నిర్మిత అనువాద మెమరీలను కలిగి ఉంటాయి, వీటిని సాధారణంగా ఎగుమతి చేసి ఇతర సారూప్య సాధనాలలో కూడా ఉపయోగించవచ్చు. + +అనువాద మెమరీని ఉపయోగించడం వల్ల ప్రయోజనాలలో వేగవంతమైన అనువాదాలు, మెరుగైన అనువాద నాణ్యత, మూల కంటెంట్‌ను నవీకరించేటప్పుడు లేదా మార్చేటప్పుడు కొన్ని అనువాదాలను నిలుపుకునే సామర్థ్యం మరియు పునరావృత కంటెంట్ కోసం చౌకైన అనువాద ఖర్చులు ఉన్నాయి. + +అనువాద మెమరీలు వివిధ సెగ్మెంట్ల మధ్య శాతం సరిపోలిక ఆధారంగా పనిచేస్తాయి మరియు రెండు సెగ్మెంట్లు 50% కంటే ఎక్కువ ఒకే కంటెంట్‌ను కలిగి ఉన్నప్పుడు సాధారణంగా చాలా ఉపయోగకరంగా ఉంటాయి. 100% సరిపోలికలు ఉన్న పునరావృత సెగ్మెంట్‌లను స్వయంచాలకంగా అనువదించడానికి కూడా అవి ఉపయోగించబడతాయి, తద్వారా పునరావృత కంటెంట్‌ను ఒకటి కంటే ఎక్కువసార్లు అనువదించాల్సిన అవసరం తొలగిపోతుంది. + +అనువాద మెమరీల గురించి మరింత చదవండి: + +[అనువాద మెమరీలపై మెంసోర్స్](https://www.memsource.com/translation-memory/) + +[అనువాద మెమరీ అంటే ఏమిటో స్మార్ట్‌లింగ్‌లో](https://www.smartling.com/resources/101/what-is-translation-memory/) + +**గ్లోసరీ –** ముఖ్యమైన లేదా సున్నితమైన పదాల జాబితా, వాటి నిర్వచనాలు, విధులు మరియు స్థాపించబడిన అనువాదాలు. గ్లోసరీ మరియు అనువాద మెమరీ మధ్య ప్రధాన వ్యత్యాసం ఏమిటంటే, గ్లోసరీ స్వయంచాలకంగా సృష్టించబడదు మరియు అది పూర్తి వాక్యాల అనువాదాలను కలిగి ఉండదు. + +చాలా స్థానికీకరణ సాధనాలు, అనువాద నిర్వహణ వ్యవస్థలు మరియు కంప్యూటర్-సహాయక అనువాద సాధనాలు మీ ప్రాజెక్ట్ కోసం ముఖ్యమైన పరిభాషను కలిగి ఉండేలా మీరు నిర్వహించగల అంతర్నిర్మిత గ్లోసరీలను కలిగి ఉంటాయి. TM వలె, గ్లోసరీని సాధారణంగా ఎగుమతి చేసి ఇతర స్థానికీకరణ సాధనాలలో ఉపయోగించవచ్చు. + +మీ అనువాద ప్రాజెక్ట్‌ను ప్రారంభించే ముందు, కొంత సమయం తీసుకుని మీ అనువాదకులు మరియు సమీక్షకుల కోసం గ్లోసరీని సృష్టించడం చాలా సిఫార్సు చేయబడింది. గ్లోసరీని ఉపయోగించడం వలన ముఖ్యమైన పదాలు సరిగ్గా అనువదించబడతాయని నిర్ధారిస్తుంది, అనువాదకులకు చాలా అవసరమైన సందర్భాన్ని అందిస్తుంది మరియు అనువాదాలలో స్థిరత్వాన్ని హామీ ఇస్తుంది. + +గ్లోసరీలు చాలా తరచుగా లక్ష్య భాషలలో స్థాపించబడిన అనువాదాలను కలిగి ఉన్నప్పటికీ, అవి ఇది లేకుండా కూడా ఉపయోగపడతాయి. స్థాపించబడిన అనువాదాలు లేకుండా కూడా, ఒక గ్లోసరీ సాంకేతిక పదాల నిర్వచనాలను కలిగి ఉంటుంది, అనువదించబడకూడని పదాలను హైలైట్ చేస్తుంది మరియు ఒక నిర్దిష్ట పదం నామవాచకం, క్రియ, ప్రాపర్ నౌన్ లేదా ఏదైనా ఇతర భాగం ప్రసంగంగా ఉపయోగించబడుతుందో లేదో అనువాదకులకు తెలియజేస్తుంది. + +గ్లోసరీల గురించి మరింత చదవండి: + +[అనువాద గ్లోసరీ అంటే ఏమిటో లయన్‌బ్రిడ్జ్‌లో](http://info.lionbridge.com/rs/lionbridge/images/Lionbridge%20FAQ_Glossary_2013.pdf) + +[గ్లోసరీలపై ట్రాన్సిఫెక్స్](https://docs.transifex.com/glossary/glossary) + +మీరు మీ ప్రాజెక్ట్ కోసం స్థానికీకరణ సాధనాన్ని ఉపయోగించాలని ప్లాన్ చేయకపోతే, మీరు బహుశా అనువాద మెమరీ మరియు గ్లోసరీని ఉపయోగించలేరు (మీరు ఎక్సెల్ ఫైల్‌లో గ్లోసరీ లేదా టెర్మ్‌బేస్‌ను సృష్టించవచ్చు, అయితే, ఆటోమేటెడ్ గ్లోసరీలు అనువాదకులు పదాలు మరియు వాటి నిర్వచనాలను మాన్యువల్‌గా చూడవలసిన అవసరాన్ని తొలగిస్తాయి). + +దీనర్థం, అన్ని పునరావృత మరియు సారూప్య కంటెంట్‌ను ప్రతిసారీ మాన్యువల్‌గా అనువదించాల్సి ఉంటుంది. అదనంగా, అనువాదకులు ఒక నిర్దిష్ట పదం అనువదించాలా వద్దా, అది టెక్స్ట్‌లో ఎలా ఉపయోగించబడుతుంది మరియు ఒక పదం ఇప్పటికే స్థాపించబడిన అనువాదం ఉందా అనే దానిపై ప్రశ్నలతో సంప్రదించాల్సి ఉంటుంది. + +_మీరు మీ ప్రాజెక్ట్‌లో ethereum.org అనువాద మెమరీ మరియు గ్లోసరీని ఉపయోగించాలనుకుంటున్నారా?_ translations@ethereum.org వద్ద మమ్మల్ని సంప్రదించండి._ + +## అనువాదకుల చేరువ {#translator-outreach} + +**భాషా సేవా ప్రదాతతో పనిచేయడం** + +మీరు భాషా సేవా ప్రదాత మరియు వారి వృత్తిపరమైన అనువాదకులతో పనిచేస్తుంటే, ఈ విభాగం మీకు చాలా సందర్భోచితంగా ఉండకపోవచ్చు. + +ఈ సందర్భంలో, అనేక భాషలలో మీకు అవసరమైన అన్ని సేవలను (ఉదా., అనువాదం, సమీక్ష, QA) అందించే సామర్థ్యం ఉన్న భాషా సేవా ప్రదాతను ఎంచుకోవడం ముఖ్యం. + +కేవలం వారు అందించే రేట్ల ఆధారంగా భాషా సేవా ప్రదాతను ఎంచుకోవడం ఉత్సాహంగా ఉన్నప్పటికీ, అతిపెద్ద భాషా సేవా ప్రదాతలకు ఒక కారణం వల్ల అధిక రేట్లు ఉన్నాయని గమనించడం ముఖ్యం. + +- వారి డేటాబేస్‌లో పదివేల మంది భాషావేత్తలు ఉన్నారు, అంటే వారు మీ ప్రాజెక్ట్‌కు మీ నిర్దిష్ట రంగానికి సంబంధించిన తగినంత అనుభవం మరియు జ్ఞానం ఉన్న అనువాదకులను కేటాయించగలుగుతారు (అంటే, సాంకేతిక అనువాదకులు). +- వివిధ ప్రాజెక్టులపై పనిచేయడంలో మరియు వారి ఖాతాదారుల విభిన్న అవసరాలను తీర్చడంలో వారికి గణనీయమైన అనుభవం ఉంది. దీనర్థం, వారు మీ నిర్దిష్ట వర్క్‌ఫ్లోకు అనుగుణంగా, మీ అనువాద ప్రక్రియకు విలువైన సూచనలు మరియు సంభావ్య మెరుగుదలలను అందించడానికి మరియు మీ అవసరాలు, ఆవశ్యకతలు మరియు గడువులను తీర్చడానికి ఎక్కువ అవకాశం ఉంటుంది. +- అతిపెద్ద భాషా సేవా ప్రదాతలలో చాలా మందికి మీరు ఉపయోగించగల వారి స్వంత స్థానికీకరణ సాధనాలు, అనువాద మెమరీలు మరియు గ్లోసరీలు కూడా ఉన్నాయి. లేకపోతే, వారు కనీసం వారి సమూహంలో తగినంత భాషావేత్తలను కలిగి ఉంటారు, వారి అనువాదకులు మీరు ఉపయోగించాలనుకుంటున్న ఏ స్థానికీకరణ సాధనంతోనైనా సుపరిచితులు మరియు పనిచేయగలరని నిర్ధారించుకోవడానికి. + +ప్రపంచంలోని అతిపెద్ద భాషా సేవా ప్రదాతల యొక్క లోతైన పోలిక, వాటిలో ప్రతి దాని గురించి కొన్ని వివరాలు మరియు వారు అందించే సేవలు, భౌగోళిక డేటా మొదలైన వాటి ద్వారా బ్రేక్‌డౌన్‌లను మీరు [2021 నిమ్డ్జి 100 నివేదిక]లో కనుగొనవచ్చు(https://www.nimdzi.com/nimdzi-100-top-lsp/). + +**వృత్తిపరేతర అనువాదకులతో పని చేయడం** + +మీరు వృత్తిపరేతర అనువాదకులతో పని చేస్తూ ఉండవచ్చు మరియు అనువదించడానికి మీకు సహాయం చేయడానికి స్వచ్ఛంద సేవకుల కోసం చూస్తూ ఉండవచ్చు. + +ప్రజలను చేరుకోవడానికి మరియు వారిని మీ ప్రాజెక్ట్‌లో చేరమని ఆహ్వానించడానికి అనేక మార్గాలు ఉన్నాయి. ఇది ఎక్కువగా మీ ఉత్పత్తి మరియు మీరు ఇప్పటికే కలిగి ఉన్న సంఘం ఎంత పెద్దది అనే దానిపై ఆధారపడి ఉంటుంది. + +స్వచ్ఛంద సేవకులను ఆన్‌బోర్డింగ్ చేసే కొన్ని మార్గాలు క్రింద వివరించబడ్డాయి: + +**చేరువ –** ఇది క్రింది అంశాలలో కొంతవరకు కవర్ చేయబడినప్పటికీ, సంభావ్య స్వచ్ఛంద సేవకులను చేరుకోవడం మరియు మీ అనువాద చొరవ గురించి వారికి తెలుసని నిర్ధారించడం దానికదే ప్రభావవంతంగా ఉంటుంది. + +చాలా మంది తమ అభిమాన ప్రాజెక్టులలో పాల్గొని సహకరించాలని కోరుకుంటారు, కానీ తరచుగా డెవలపర్‌గా లేదా ప్రత్యేక సాంకేతిక నైపుణ్యాలు లేకుండా అలా చేయడానికి స్పష్టమైన మార్గాన్ని చూడరు. మీరు మీ ప్రాజెక్ట్ గురించి అవగాహనను వ్యాప్తి చేయగలిగితే, చాలా మంది ద్విభాషులు పాల్గొనడానికి ఆసక్తిగా ఉంటారు. + +**మీ సంఘంలో చూడటం –** ఈ రంగంలో చాలా ప్రాజెక్టులు ఇప్పటికే పెద్ద మరియు చురుకైన సంఘాలను కలిగి ఉన్నాయి. మీ సంఘ సభ్యులలో చాలా మంది ప్రాజెక్ట్‌కు సరళమైన మార్గంలో సహకరించే అవకాశాన్ని బహుశా అభినందిస్తారు. + +ఓపెన్-సోర్స్ ప్రాజెక్టులకు సహకరించడం తరచుగా అంతర్గత ప్రేరణపై ఆధారపడి ఉన్నప్పటికీ, ఇది ఒక అద్భుతమైన అభ్యాస అనుభవం కూడా. మీ ప్రాజెక్ట్ గురించి మరింత తెలుసుకోవాలనే ఆసక్తి ఉన్న ఎవరైనా స్వచ్ఛంద సేవకుడిగా అనువాద కార్యక్రమంలో పాల్గొనడానికి సంతోషంగా ఉంటారు, ఎందుకంటే ఇది వారు శ్రద్ధ వహించే దానికి సహకరించారనే వాస్తవాన్ని తీవ్రమైన ప్రత్యక్ష అభ్యాస అనుభవంతో కలపడానికి వీలు కల్పిస్తుంది. + +**మీ ఉత్పత్తిలో చొరవను పేర్కొనడం –** మీ ఉత్పత్తి ప్రజాదరణ పొందినది మరియు పెద్ద సంఖ్యలో ప్రజలు ఉపయోగిస్తుంటే, మీ అనువాద కార్యక్రమాన్ని హైలైట్ చేయడం మరియు ఉత్పత్తిని ఉపయోగిస్తున్నప్పుడు వినియోగదారులను చర్యకు పిలవడం చాలా ప్రభావవంతంగా ఉంటుంది. + +అప్లికేషన్లు మరియు వెబ్‌సైట్‌ల కోసం మీ ఉత్పత్తికి CTA తో కూడిన బ్యానర్ లేదా పాప్-అప్‌ను జోడించడం అంత సులభం కావచ్చు. ఇది ప్రభావవంతంగా ఉంటుంది ఎందుకంటే మీ లక్ష్య ప్రేక్షకులు మీ సంఘం - మొదటి స్థానంలో పాల్గొనే అవకాశం ఉన్న వ్యక్తులు. + +**సోషల్ మీడియా –** సోషల్ మీడియా మీ అనువాద కార్యక్రమం గురించి అవగాహనను వ్యాప్తి చేయడానికి మరియు మీ సంఘ సభ్యులను, అలాగే ఇంకా మీ సంఘ సభ్యులు కాని ఇతర వ్యక్తులను చేరుకోవడానికి ఒక ప్రభావవంతమైన మార్గం. + +మీకు డిస్కార్డ్ సర్వర్ లేదా టెలిగ్రామ్ ఛానెల్ ఉంటే, దానిని చేరువ, మీ అనువాదకులతో కమ్యూనికేషన్ మరియు మీ కంట్రిబ్యూటర్లను గుర్తించడానికి ఉపయోగించడం సులభం. + +X (గతంలో ట్విట్టర్) వంటి ప్లాట్‌ఫారమ్‌లు కొత్త సంఘ సభ్యులను ఆన్‌బోర్డింగ్ చేయడానికి మరియు మీ కంట్రిబ్యూటర్లను బహిరంగంగా గుర్తించడానికి కూడా సహాయపడతాయి. + +లినక్స్ ఫౌండేషన్ ఒక విస్తృతమైన [2020 FOSS కంట్రిబ్యూటర్ సర్వేపై నివేదిక]ను సృష్టించింది(https://www.linuxfoundation.org/wp-content/uploads/2020FOSSContributorSurveyReport_121020.pdf), ఓపెన్-సోర్స్ కంట్రిబ్యూటర్లను మరియు వారి ప్రేరణలను విశ్లేషిస్తుంది. + +## ముగింపు {#conclusion} + +ఈ పత్రంలో ప్రతి అనువాద కార్యక్రమం తెలుసుకోవలసిన కొన్ని కీలక పరిశీలనలు ఉన్నాయి. ఇది ఏ విధంగానూ సమగ్రమైన మార్గదర్శిని కాదు, అయినప్పటికీ ఇది అనువాద పరిశ్రమలో అనుభవం లేని ఎవరికైనా వారి ప్రాజెక్ట్ కోసం అనువాద కార్యక్రమాన్ని నిర్వహించడంలో సహాయపడుతుంది. + +మీరు వివిధ సాధనాలు, ప్రక్రియలు మరియు అనువాద కార్యక్రమాన్ని నిర్వహించడంలో క్లిష్టమైన అంశాల గురించి మరింత వివరణాత్మక సూచనలు మరియు విశ్లేషణల కోసం చూస్తుంటే, కొన్ని అతిపెద్ద భాషా సేవా ప్రదాతలు బ్లాగులను నిర్వహిస్తాయి మరియు తరచుగా స్థానికీకరణ ప్రక్రియ యొక్క వివిధ అంశాలపై కథనాలను ప్రచురిస్తాయి. మీరు పై అంశాలలో దేనిలోనైనా లోతుగా డైవ్ చేయాలనుకుంటే మరియు స్థానికీకరణ ప్రక్రియ వృత్తిపరంగా ఎలా పనిచేస్తుందో అర్థం చేసుకోవాలనుకుంటే ఇవి ఉత్తమ వనరులు. + +ప్రతి విభాగం చివరిలో కొన్ని సంబంధిత లింకులు చేర్చబడ్డాయి; అయితే, మీరు ఆన్‌లైన్‌లో అనేక ఇతర వనరులను కనుగొనవచ్చు. + +సహకారం కోసం ప్రతిపాదనలు లేదా అదనపు సమాచారం, అభ్యాసాలు మరియు ethereum.org అనువాద కార్యక్రమాన్ని నిర్వహించడం ద్వారా మేము గ్రహించిన ఉత్తమ అభ్యాసాల కోసం, translations@ethereum.org వద్ద మమ్మల్ని సంప్రదించడానికి సంకోచించకండి. diff --git a/public/content/translations/te/contributing/translation-program/resources/index.md b/public/content/translations/te/contributing/translation-program/resources/index.md new file mode 100644 index 00000000000..1e7947a4b9f --- /dev/null +++ b/public/content/translations/te/contributing/translation-program/resources/index.md @@ -0,0 +1,49 @@ +--- +title: "అనువాదకుల కోసం వనరులు" +lang: te +description: "Ethereum.org అనువాదకుల కోసం ఉపయోగకరమైన వనరులు" +--- + +# వనరులు {#resources} + +మీరు ethereum.org అనువాదకుల కోసం కొన్ని ఉపయోగకరమైన గైడ్‌లు మరియు సాధనాలను అలాగే అనువాద సంఘాలు మరియు అప్‌డేట్‌లను దిగువన కనుగొనవచ్చు. + +## మార్గదర్శకాలు {#guides} + +- [అనువాద శైలి మార్గదర్శి](/contributing/translation-program/translators-guide/) _– ethereum.org అనువాదకుల కోసం సూచనలు మరియు చిట్కాలు_ +- [అనువాద FAQలు](/contributing/translation-program/faq/) _– ethereum.org అనువాద కార్యక్రమం గురించి తరచుగా అడిగే ప్రశ్నలు మరియు సమాధానాలు_ +- [Crowdin ఆన్‌లైన్ ఎడిటర్ గైడ్](https://support.crowdin.com/online-editor/) _– Crowdin ఆన్‌లైన్ ఎడిటర్ మరియు Crowdin యొక్క కొన్ని అధునాతన ఫీచర్లను ఉపయోగించడానికి ఒక లోతైన గైడ్_ + +## ఉపకరణాలు {#tools} + +- [Linguee](https://www.linguee.com/) + _– అనువాదాలు మరియు నిఘంటువు కోసం సెర్చ్ ఇంజన్, ఇది పదం లేదా పదబంధం ద్వారా శోధించడానికి వీలు కల్పిస్తుంది_ +- [Proz పదం శోధన](https://www.proz.com/search/) + _– ప్రత్యేక పదాల కోసం అనువాద నిఘంటువులు మరియు పదకోశాల డేటాబేస్_ +- [Eurotermbank](https://www.eurotermbank.com/) + _– 42 భాషలలో యూరోపియన్ పదజాలం యొక్క సేకరణలు_ + +## కమ్యూనిటీలు {#communities} + +- [భాషా-నిర్దిష్ట డిస్కార్డ్ అనువాద సమూహాలు](https://discord.gg/ethereum-org) + _– ethereum.org అనువాదకులను అనువాద సమూహాలకు అనుసంధానించడానికి ఒక చొరవ_ +- [చైనీస్ అనువాదకుల సమూహం](https://www.notion.so/Ethereum-org-05375fe0a94c4214acaf90f42ba40171) + _– చైనీస్ అనువాదకుల మధ్య సులభమైన సమన్వయం కోసం నోషన్ పేజీ_ + +## తాజా అప్‌డేట్‌లు {#latest-updates} + +తాజా అనువాద కార్యక్రమ పురోగతితో తాజాగా ఉండటానికి, మీరు [Ethereum ఫౌండేషన్ బ్లాగ్](https://blog.ethereum.org/)ను అనుసరించవచ్చు: + +- [అక్టోబర్ 2021 మైలురాళ్ల అప్‌డేట్](https://blog.ethereum.org/2021/10/04/translation-program-update/) +- [డిసెంబర్ 2020 మైలురాళ్ల అప్‌డేట్](https://blog.ethereum.org/2020/12/21/translation-program-milestones-updates-20/) +- [జూలై 2020 మైలురాళ్ల అప్‌డేట్](https://blog.ethereum.org/2020/07/29/ethdotorg-translation-milestone/) +- [ఆగస్టు 2019 అనువాద కార్యక్రమ ప్రారంభం](https://blog.ethereum.org/2019/08/20/translating-ethereum-for-our-global-community/) + +## అనువాదకుల కోసం కార్యాలయ వేళలు {#office-hours} + +మేము ప్రతి నెల రెండవ బుధవారం అనువాదకుల కోసం కార్యాలయ వేళలను కలిగి ఉన్నాము. ఇవి [ethereum.org డిస్కార్డ్](https://discord.gg/ethereum-org)లోని #office-hours వాయిస్ ఛానెల్‌లో నిర్వహించబడతాయి, ఇక్కడ మీరు ఖచ్చితమైన సమయాలు మరియు అదనపు వివరాలను కూడా కనుగొనవచ్చు. + +మా అనువాదకులు అనువాద ప్రక్రియ గురించి ప్రశ్నలు అడగడానికి, ప్రోగ్రామ్‌పై అభిప్రాయాన్ని అందించడానికి, వారి ఆలోచనలను పంచుకోవడానికి లేదా కోర్ ethereum.org బృందంతో చాట్ చేయడానికి కార్యాలయ సమయాలు అనుమతిస్తాయి. +చివరగా, అనువాద ప్రోగ్రామ్‌తో ఇటీవలి పరిణామాలను కమ్యూనికేట్ చేయడానికి మరియు మా కంట్రిబ్యూటర్‌లతో కీలక చిట్కాలు మరియు సూచనలను పంచుకోవడానికి మేము ఈ కాల్‌లను ఉపయోగించాలనుకుంటున్నాము. + +మీరు ethereum.org అనువాదకుడు అయితే లేదా ఒకరు కావాలనుకుంటే, ఈ సెషన్‌లలో ఒకదానిలో మాతో చేరడానికి సంకోచించకండి. diff --git a/public/content/translations/te/contributing/translation-program/translatathon/details/index.md b/public/content/translations/te/contributing/translation-program/translatathon/details/index.md new file mode 100644 index 00000000000..0961757df71 --- /dev/null +++ b/public/content/translations/te/contributing/translation-program/translatathon/details/index.md @@ -0,0 +1,90 @@ +--- +title: "వివరాలు మరియు నియమాలు" +lang: te +template: translatathon +--- + +![](./participate.png) + +ట్రాన్స్‌లేటథాన్ ఇప్పుడు అందుబాటులో ఉంది మరియు అప్లికేషన్ ఫారమ్‌ను పూరించడం ద్వారా మరియు క్రౌడిన్‌లోని ప్రాజెక్ట్‌లో చేరడం ద్వారా ఎవరైనా పాల్గొనవచ్చు. + +అనువాద కాలంలో అనువాదకులు తమ భాషలో అనువదించని స్ట్రింగ్‌ల కోసం క్రౌడిన్ ఎడిటర్‌లో అనువాదాలను సూచించడం ద్వారా పాయింట్లను సేకరిస్తారు. + +ప్రతి పాల్గొనేవారి చివరి స్కోర్ అనువాద కాలంలో వారు అనువదించిన పదాల సంఖ్య మరియు వారు సేకరించిన ఏవైనా సంభావ్య బోనస్ పాయింట్ల ఆధారంగా లీడర్‌బోర్డ్‌లో వారి స్థానం ద్వారా నిర్ణయించబడుతుంది. + +## ప్రారంభించడం {#getting-started} + +అనువాద ప్రక్రియ ethereum.org వెబ్‌సైట్ నుండి దాదాపు మొత్తం కంటెంట్‌తో రూపొందించబడిన అనువదించని స్ట్రింగ్‌ల కోసం క్రౌడిన్‌లోని ethereum.org ప్రాజెక్ట్‌లో జరుగుతుంది మరియు అనువాదకులు తమ అనువాదాలను సూచిస్తారు. + +అనువాదాలు నేరుగా ఆన్‌లైన్ ఎడిటర్‌లో సూచించబడతాయి కాబట్టి ఏ ఫైల్‌లు లేదా డెలివరబుల్స్‌ను డౌన్‌లోడ్ లేదా అప్‌లోడ్ చేయవలసిన అవసరం లేదు. ప్రతి అనువదించబడిన పదం ట్రాక్ చేయబడి లెక్కించబడుతుంది. + +**1) ప్రాజెక్ట్‌లో చేరండి** + +- సహకారం అందించడం ప్రారంభించడానికి, [క్రౌడిన్‌లోని ethereum.org ప్రాజెక్ట్‌లో](https://crowdin.com/project/ethereum-org) చేరండి +- మీరు సైన్ ఇన్ చేయాలి లేదా ఖాతాను సృష్టించాలి - కావలసిందల్లా ఒక ఈమెయిల్ చిరునామా మరియు పాస్‌వర్డ్ + +**2) మీ భాషను ఎంచుకోండి** + +- లక్ష్య భాషల జాబితాలో మీ భాషను కనుగొని, దాని పేరు లేదా ఫ్లాగ్‌పై క్లిక్ చేయడం ద్వారా దాన్ని తెరవండి +- మీరు అందుబాటులో లేని భాషలోకి అనువదించాలనుకుంటే, Crowdinలో [Ethereum.org బృందాన్ని](https://crowdin.com/profile/ethdotorg) సంప్రదించండి లేదా translations@ethereum.orgకు మాకు ఇమెయిల్ పంపండి మరియు మేము అభ్యర్థన మేరకు అదనపు లక్ష్య భాషలను జోడిస్తాము + +**3) అనువదించని ఫైల్‌ను తెరవండి** + +- అనువాదం ప్రారంభించడానికి మొదటి అనువదించని ఫైల్‌ను కనుగొనండి. సోర్స్ ఫైల్‌లను కలిగి ఉన్న ఫోల్డర్‌లు ప్రాధాన్యతపై ఆధారపడి ఉంటాయి, కాబట్టి మీరు అనువదించని ఫైల్‌లను కలిగి ఉన్న మొదటి ఫోల్డర్‌ను అనువదించడం ప్రారంభించాలి +- ప్రతి ఫైల్‌లో ఒక ప్రోగ్రెస్ ఇండికేటర్ ఉంటుంది, ఇది ఫైల్‌లోని అనువదించదగిన కంటెంట్‌లో ఎంత భాగం అనువదించబడి ఆమోదించబడిందో చూపిస్తుంది... ఏదైనా ఫైల్ కోసం అనువాద పురోగతి 100% కంటే తక్కువగా ఉంటే, దయచేసి దాన్ని అనువదించండి + +**4) అనువదించని స్ట్రింగ్‌లను అనువదించండి** + +- మీరు అనువదించడానికి ఒక ఫైల్‌ను తెరిచినప్పుడు, మీరు అనువదించని స్ట్రింగ్‌లను మాత్రమే అనువదిస్తున్నారని నిర్ధారించుకోండి! +- ప్రతి స్ట్రింగ్‌కు ఒక స్టేటస్ ఇండికేటర్ ఉంటుంది, అది _అనువదించబడిందా_, _అనువదించబడలేదా_ లేదా _ఆమోదించబడిందా_ అని చూపిస్తుంది. సోర్స్ స్ట్రింగ్‌కు మీ భాషలో ఇప్పటికే సూచించిన అనువాదం ఉంటే, దాన్ని అనువదించాల్సిన అవసరం లేదు +- ఎడిటర్‌లో మీరు _ముందుగా అనువదించనివి_ లేదా _అనువదించనివి మాత్రమే_ చూపించడానికి స్ట్రింగ్‌లను ఫిల్టర్ చేయవచ్చు + +క్రౌడిన్ ఎడిటర్‌ను నావిగేట్ చేయడానికి మరియు ఉపయోగించడం కోసం ఒక వివరణాత్మక గైడ్ కోసం, ట్రాన్స్‌లేటథాన్‌లో పాల్గొనేవారందరూ మా [ఎలా అనువదించాలి](/contributing/translation-program/how-to-translate/) గైడ్‌ను చదవాలని మేము సిఫార్సు చేస్తున్నాము. + +మా [అనువాద శైలి గైడ్](/contributing/translation-program/translators-guide/)ను చూడటం ద్వారా మీరు కొన్ని చిట్కాలు మరియు ఉత్తమ పద్ధతులను కూడా కనుగొనవచ్చు. + +**పాయింట్లు ఎలా పనిచేస్తాయి** + +ప్రతి ట్రాన్స్‌లేటథాన్ పార్టిసిపెంట్ ethereum.org Crowdin ప్రాజెక్ట్ మరియు ఇతర అర్హత గల ప్రాజెక్ట్‌లలో (అర్హత ఉన్న ప్రాజెక్ట్‌ల పూర్తి జాబితా క్రింద అందుబాటులో ఉంది) కంటెంట్‌ను అనువదించడం ద్వారా వారి చివరి స్కోర్ కోసం పాయింట్లను సంపాదిస్తారు. + +స్కోరింగ్ చాలా సులభం: **1 అనువదించిన పదం = 1 పాయింట్** + +మీ చివరి పాయింట్ల కేటాయింపును స్వీకరించడానికి, మీ సూచించిన అనువాదాలు మూల్యాంకన ప్రక్రియను దాటవలసి ఉంటుంది, ఇక్కడ వృత్తిపరమైన సమీక్షకులు ప్రతి పాల్గొనేవారి అనువాదాలు కనీస నాణ్యత పరిమితికి అనుగుణంగా ఉన్నాయని మరియు ఈ ప్రక్రియలో ఎటువంటి యంత్రం లేదా AI అనువాదాలు ఉపయోగించబడలేదని నిర్ధారించడానికి తనిఖీ చేస్తారు. + +## ఎకోసిస్టమ్ కంటెంట్ {#ecosystem-content} + +ethereum.org అనువాద ప్రోగ్రామ్ ఎల్లప్పుడూ చురుకుగా ఉన్నందున, వెబ్‌సైట్‌లోని కొన్ని లక్ష్య భాషలలో అనువాద పురోగతి ఇతరుల కంటే గణనీయంగా ఎక్కువగా ఉంది. + +ట్రాన్స్‌లేటథాన్‌లో పాల్గొనే వారందరికీ వారు చేయగలిగినంత కంటెంట్‌ను అనువదించడానికి మరియు అగ్ర బహుమతుల కోసం పోటీ పడటానికి సమాన అవకాశం ఉండేలా చూడటానికి, ట్రాన్స్‌లేటథాన్‌లో భాగమైన సోర్స్ కంటెంట్ కేవలం ethereum.org వెబ్‌సైట్ కంటెంట్‌కు మాత్రమే పరిమితం కాదు. + +ఏదైనా అర్హత గల ప్రాజెక్ట్‌లను అనువదించే పాల్గొనేవారు సమాన మొత్తంలో పాయింట్లను పొందుతారు, ఏ ప్రాజెక్ట్‌లోనైనా 1 అనువదించిన పదం = 1 పాయింట్. + +2025 ట్రాన్స్‌లేటథాన్‌లో భాగమైన అన్ని అర్హత గల ప్రాజెక్ట్‌ల జాబితా ఇక్కడ ఉంది: + +- [Ethereum.org](https://crowdin.com/project/ethereum-org) + +- [Ethereum.org డెవలపర్ ట్యుటోరియల్స్](https://crowdin.com/project/33388446abbe9d7aa21e42e49bba7f97) + +- [EthStaker డిపాజిట్ CLI](https://crowdin.com/project/ethstaker-deposit-cli) + +- [Eth Docker డాక్స్](https://crowdin.com/project/eth-docker-docs) + +- [Remix IDE డాక్యుమెంటేషన్](https://crowdin.com/project/remix-translation) + +- [Remix LearnEth](https://crowdin.com/project/remix-learneth) + +- [web3.py](https://crowdin.com/project/web3py) + +## మూల్యాంకన ప్రక్రియ {#evaluation-process} + +అన్ని అనువాదాలు QA మరియు ఫీడ్‌బ్యాక్‌కు లోబడి ఉంటాయి, ఇక్కడ వృత్తిపరమైన భాషావేత్తలు నాణ్యత మరియు ఖచ్చితత్వం ఆధారంగా సమర్పణలను మూల్యాంకనం చేస్తారు. + +యంత్రం లేదా AI అనువాదాలను స్వయంచాలకంగా గుర్తించే కొన్ని సాధనాలను ఉపయోగించి మేము **యంత్ర అనువాద వ్యతిరేక చర్యలను** కూడా అమలు చేస్తాము. + +స్కోరింగ్‌లో అనువాద నాణ్యత కీలక పాత్ర పోషించనప్పటికీ, **యంత్రం లేదా AI అనువాదాలను ఉపయోగించినట్లు కనుగొనబడిన ఏ పాల్గొనేవారు** లేదా తక్కువ-నాణ్యత మరియు సరికాని అనువాదాలను సూచించిన వారు బహుమతులకు అర్హులు కారు! + +మూల్యాంకన కాలం సెప్టెంబర్ నెల పొడవునా జరుగుతుంది మరియు ఫలితాలు సెప్టెంబర్ 25న జరిగే ethereum.org కమ్యూనిటీ కాల్‌లో ప్రకటించబడతాయి. + +వెబ్‌సైట్‌కు జోడించే ముందు అన్ని అనువాదాలు కూడా పూర్తిగా సమీక్షించబడతాయి. + + diff --git a/public/content/translations/te/contributing/translation-program/translatathon/index.md b/public/content/translations/te/contributing/translation-program/translatathon/index.md new file mode 100644 index 00000000000..366a7e89dfb --- /dev/null +++ b/public/content/translations/te/contributing/translation-program/translatathon/index.md @@ -0,0 +1,100 @@ +--- +title: "2025 ethereum.org ట్రాన్స్లేటథాన్" +lang: te +template: translatathon +--- + + + + + + + +## పరిచయం {#introduction} + +వారు మాట్లాడే భాషతో సంబంధం లేకుండా, Ethereum కంటెంట్ మరియు ఆన్‌బోర్డింగ్ వనరులు ప్రతి ఒక్కరికీ అందుబాటులో ఉండాలని మేము నమ్ముతున్నాము. +ఈ లక్ష్యానికి మరింత చేరువయ్యేందుకు, ethereum.org అనువాద కార్యక్రమం అనేది వెబ్‌సైట్‌ను వీలైనన్ని ఎక్కువ భాషల్లోకి అనువదించడానికి ఒక చొరవ. + +అనువాద కార్యక్రమంలో భాగంగా, మేము ట్రాన్స్లేటథాన్ యొక్క 3వ ఎడిషన్‌ను నిర్వహిస్తున్నాము, ఇది మా అనువాద పోటీ, దీని లక్ష్యం తక్కువ-క్రియాశీల భాషలలో అనువాద సహకారాలను ప్రోత్సహించడం, సైట్‌లో అందుబాటులో ఉన్న భాషల సంఖ్యను మరియు కంటెంట్ పరిమాణాన్ని పెంచడం, కొత్త సహకారులను ఆన్‌బోర్డ్ చేయడం మరియు ఇప్పటికే ఉన్న మా సహకారులకు బహుమతులు ఇవ్వడం. + +మీరు ఇంగ్లీష్ కాకుండా ఇతర భాష యొక్క మాతృభాషా వక్త అయితే మరియు బహుమతుల కోసం పోటీ పడుతూనే Ethereum కంటెంట్‌ను మరింత అందుబాటులోకి తీసుకురావడానికి సహాయం చేయాలనుకుంటే, మరింత తెలుసుకోవడానికి చదువుతూ ఉండండి! + +[ethereum.org అనువాద కార్యక్రమం గురించి మరింత తెలుసుకోండి](/contributing/translation-program/) + +## కాలక్రమం {#timeline} + +2025 ట్రాన్స్లేటథాన్ కోసం ముఖ్యమైన తేదీలు ఇక్కడ ఉన్నాయి: + + + + + +## పాల్గొనండి {#participate} + +![సంఘం మరియు గ్లోబ్ యొక్క చిత్రం](./participate.png) + + + +

ఎవరు పాల్గొనగలరు?

+ 18 సంవత్సరాల కంటే ఎక్కువ వయస్సు ఉన్న, కనీసం ఒక ఆంగ్లేతర భాష యొక్క మాతృభాషా వక్త మరియు ఆంగ్లంలో ప్రావీణ్యం ఉన్న ఎవరైనా. +
+ +

నేను అనువాదకుడిగా ఉండాలా?

+ లేదు. మీరు కేవలం ద్విభాషిగా ఉండి, మానవ అనువాదాలను సూచించాలి (యంత్ర అనువాదాన్ని ఉపయోగించడం నిషేధించబడింది!) మీ సామర్థ్యం మేరకు, ఎటువంటి వృత్తిపరమైన అనుభవం అవసరం లేదు. +
+
+ + + +

నేను ఎంత సమయం కేటాయించాలి?

+ మీకు కావలసినంత. బహుమతులకు అర్హత పొందడానికి కనీస పరిమితి 1,000 అనువదించబడిన పదాలు, దీనిని పూర్తి చేయడానికి సుమారు 2 గంటలు పడుతుంది, అయితే అగ్ర బహుమతుల కోసం పోటీ పడటానికి ఎక్కువ సమయం కేటాయించాల్సి ఉంటుంది. +
+ +

నాకు Ethereumతో పరిచయం ఉండాలా?

+ లేదు. Ethereumతో పరిచయం ఉండటం మీ ఉత్పాదకత మరియు నాణ్యతకు సహాయపడగలిగినప్పటికీ, ట్రాన్స్లేటథాన్ కూడా ఒక అభ్యాస అనుభవం, మరియు పాల్గొంటూనే Ethereum గురించి మరింత తెలుసుకోవడానికి మరియు చేరడానికి ప్రతి ఒక్కరూ ఆహ్వానించబడ్డారు. +
+
+ +మరిన్ని వివరాల కోసం, [పూర్తి నిబంధనలు & షరతులను చూడండి](/contributing/translation-program/translatathon/terms-and-conditions) + +### దశల వారీ సూచనలు {#step-by-step-instructions} + + + +## బహుమతులు {#prizes} + +| స్థానం | బహుమతి మొత్తం | +| ------------------ | ------------- | +| 1వ స్థానం | $4000 | +| 2వ స్థానం | $2500 | +| 3వ స్థానం | $1500 | +| 4వ స్థానం | $1100 | +| 5వ స్థానం | $1000 | +| 6వ స్థానం | $600 | +| 7వ స్థానం | $550 | +| 8వ స్థానం | $500 | +| 9వ స్థానం | $450 | +| 10వ స్థానం | $400 | +| 11వ - 20వ స్థానం | $240 | +| 21వ - 50వ స్థానం | $120 | +| 51వ - 100వ స్థానం | $60 | +| 101వ - 150వ స్థానం | $40 | +| మిగిలినవి | $20 | + +అన్ని బహుమతులు ETHలో చెల్లించబడతాయి. + + + + diff --git a/public/content/translations/te/contributing/translation-program/translators-guide/index.md b/public/content/translations/te/contributing/translation-program/translators-guide/index.md new file mode 100644 index 00000000000..cd4b3c83e23 --- /dev/null +++ b/public/content/translations/te/contributing/translation-program/translators-guide/index.md @@ -0,0 +1,299 @@ +--- +title: "అనువాదకుల గైడ్" +lang: te +description: "Ethereum.org అనువాదకుల కోసం సూచనలు మరియు చిట్కాలు" +--- + +# Ethereum.org అనువాద శైలి మార్గదర్శి {#style-guide} + +Ethereum.org అనువాద శైలి గైడ్‌లో అనువాదకుల కోసం కొన్ని ముఖ్యమైన మార్గదర్శకాలు, సూచనలు మరియు చిట్కాలు ఉన్నాయి, ఇవి వెబ్‌సైట్‌ను స్థానికీకరించడంలో మాకు సహాయపడతాయి. + +ఈ పత్రం ఒక సాధారణ గైడ్‌గా పనిచేస్తుంది మరియు ఏ ఒక్క భాషకు సంబంధించినది కాదు. + +మీకు ఏవైనా ప్రశ్నలు, సూచనలు లేదా ఫీడ్‌బ్యాక్ ఉన్నట్లయితే, translations@ethereum.orgలో మమ్మల్ని సంప్రదించడానికి సంకోచించకండి, Crowdinలో @ethdotorgకి సందేశం పంపండి, లేదా [మా డిస్కార్డ్‌లో చేరండి](https://discord.gg/ethereum-org), అక్కడ మీరు #translations ఛానెల్‌లో మాకు సందేశం పంపవచ్చు లేదా బృంద సభ్యులలో ఎవరినైనా సంప్రదించవచ్చు. + +## Crowdin వాడకం {#using-crowdin} + +Crowdinలో ప్రాజెక్ట్‌లో ఎలా చేరాలి మరియు Crowdin ఆన్‌లైన్ ఎడిటర్‌ను ఎలా ఉపయోగించాలి అనే దానిపై ప్రాథమిక సూచనలను మీరు [అనువాద కార్యక్రమం పేజీ](/contributing/translation-program/#how-to-translate)లో కనుగొనవచ్చు. + +మీరు Crowdin గురించి మరింత తెలుసుకోవాలనుకుంటే మరియు దాని అధునాతన ఫీచర్‌లలో కొన్నింటిని ఉపయోగించాలనుకుంటే, [Crowdin నాలెడ్జ్ బేస్](https://support.crowdin.com/online-editor/)లో అన్ని Crowdin కార్యాచరణకు సంబంధించిన చాలా లోతైన మార్గదర్శకాలు మరియు అవలోకనాలు ఉన్నాయి. + +## సందేశ సారాన్ని సంగ్రహించడం {#capturing-the-essence} + +Ethereum.org కంటెంట్‌ను అనువదిస్తున్నప్పుడు, సాహిత్య అనువాదాలను నివారించండి. + +అనువాదాలు సందేశం యొక్క సారాంశాన్ని సంగ్రహించడం ముఖ్యం. దీనర్థం నిర్దిష్ట పదబంధాలను తిరిగి వ్రాయడం లేదా కంటెంట్‌ని పదానికి పదానికి అనువదించడానికి బదులుగా వివరణాత్మక అనువాదాలను ఉపయోగించడం. + +వివిధ భాషలకు వేర్వేరు వ్యాకరణ నియమాలు, సమావేశాలు మరియు పద క్రమం ఉంటాయి. అనువదించేటప్పుడు, దయచేసి లక్ష్య భాషలలో వాక్యాలను ఎలా నిర్మించాలో గుర్తుంచుకోండి మరియు ఆంగ్ల మూలాన్ని అక్షరాలా అనువదించకుండా ఉండండి, ఎందుకంటే ఇది వాక్య నిర్మాణం మరియు పఠన సామర్థ్యం తక్కువగా ఉంటుంది. + +మూల వచన పదాన్ని పదానికి అనువదించడానికి బదులుగా, మీరు మొత్తం వాక్యాన్ని చదివి, లక్ష్య భాష యొక్క సంప్రదాయాలకు సరిపోయేలా మార్చాలని సిఫార్సు చేయబడింది. + +## లాంఛనప్రాయం vs. అనధికారికం {#formal-vs-informal} + +మేము చిరునామా యొక్క అధికారిక రూపాన్ని ఉపయోగిస్తాము, ఇది ఎల్లప్పుడూ మర్యాదగా మరియు సందర్శకులందరికీ సముచితంగా ఉంటుంది. + +అధికారిక చిరునామాను ఉపయోగించడం వలన మేము అనధికారికంగా లేదా అభ్యంతరకరంగా అనిపించకుండా ఉండటానికి అనుమతిస్తుంది మరియు సందర్శకుల వయస్సు మరియు లింగంతో సంబంధం లేకుండా పని చేస్తుంది. + +చాలా ఇండో-యూరోపియన్ మరియు ఆఫ్రో-ఏషియాటిక్ భాషలు లింగ-నిర్దిష్ట రెండవ-వ్యక్తి వ్యక్తిగత సర్వనామాలను ఉపయోగిస్తాయి, ఇవి మగ మరియు ఆడ మధ్య తేడాను చూపుతాయి. వినియోగదారుని సంబోధిస్తున్నప్పుడు లేదా స్వాధీన సర్వనామాలను ఉపయోగిస్తున్నప్పుడు, సందర్శకుల లింగాన్ని ఊహించకుండా మేము నివారించవచ్చు, ఎందుకంటే చిరునామా యొక్క అధికారిక రూపం సాధారణంగా వర్తిస్తుంది మరియు వారు ఎలా గుర్తించారనే దానితో సంబంధం లేకుండా స్థిరంగా ఉంటుంది. + +## సరళమైన మరియు స్పష్టమైన పదజాలం మరియు అర్థం {#simple-vocabulary} + +వెబ్‌సైట్‌లోని కంటెంట్‌ను వీలైనంత ఎక్కువ మందికి అర్థమయ్యేలా చేయడమే మా లక్ష్యం. + +చాలా సందర్భాలలో, సులభంగా అర్థమయ్యే చిన్న మరియు సరళమైన పదాలను ఉపయోగించడం ద్వారా దీనిని సులభంగా సాధించవచ్చు. మీ భాషలో ఒక నిర్దిష్ట పదానికి ఒకే అర్థంతో బహుళ సాధ్యమయ్యే అనువాదాలు ఉంటే, ఉత్తమ ఎంపిక చాలా తరచుగా అర్థాన్ని స్పష్టంగా ప్రతిబింబించే చిన్న పదం. + +## రచనా విధానం {#writing-system} + +Ethereum.org అనేక భాషలలో అందుబాటులో ఉంది, లాటిన్‌కు ప్రత్యామ్నాయ రైటింగ్ సిస్టమ్‌లను (లేదా రైటింగ్ స్క్రిప్ట్‌లు) ఉపయోగిస్తుంది. + +కంటెంట్ మొత్తం మీ భాష కోసం సరైన రైటింగ్ సిస్టమ్‌ని ఉపయోగించి అనువదించాలి మరియు లాటిన్ అక్షరాలను ఉపయోగించి వ్రాసిన పదాలను చేర్చకూడదు. + +కంటెంట్‌ను అనువదిస్తున్నప్పుడు, అనువాదాలు స్థిరంగా ఉన్నాయని మరియు లాటిన్ అక్షరాలు ఏవీ చేర్చకుండా ఉండేలా చూసుకోవాలి. + +Ethereum ఎల్లప్పుడూ లాటిన్‌లో వ్రాయబడుతుందని ఒక సాధారణ అపోహ. ఇది చాలా వరకు తప్పు, దయచేసి మీ మాతృభాషలోని ఇతీరియము స్పెల్లింగ్‌ను ఉపయోగించండి (ఉదా., చైనీస్‌లో 以太坊, అరబిక్‌లో إيثيريوم, మొదలైనవి). + +**నియమం ప్రకారం సరైన పేర్లను అనువదించకూడని భాషలకు పైన చెప్పినది వర్తించదు.** + +## పేజీ మెటాడేటాను అనువదించడం {#translating-metadata} + +కొన్ని పేజీలు పేజీలో 'శీర్షిక', 'లాంగ్', 'వివరణ', 'సైడ్‌బార్' మొదలైన మెటాడేటాను కలిగి ఉంటాయి. + +క్రౌడిన్‌కి కొత్త పేజీలను అప్‌లోడ్ చేస్తున్నప్పుడు అనువాదకులు ఎప్పుడూ అనువదించకూడని కంటెంట్‌ను మేము దాచిపెడతాము, అంటే క్రౌడిన్‌లో అనువాదకులకు కనిపించే మొత్తం మెటాడేటా అనువదించబడాలి. + +మూల వచనం 'en' ఉన్న ఏవైనా స్ట్రింగ్‌లను అనువదించేటప్పుడు దయచేసి ప్రత్యేకంగా గుర్తుంచుకోండి. ఇది పేజీ అందుబాటులో ఉన్న భాషను సూచిస్తుంది మరియు దానిని [మీ భాష కొరకు ఉన్న ISO భాషా కోడ్‌](https://www.andiamo.co.uk/resources/iso-language-codes/)కు అనువదించాలి. ఈ స్ట్రింగ్‌లను ఎల్లప్పుడూ లాటిన్ అక్షరాలను ఉపయోగించి అనువదించాలి, వ్రాత లిపిని కాకుండా, లక్ష్య భాషకు స్థానికంగా ఉంటుంది. + +ఏ భాషా కోడ్‌ని ఉపయోగించాలో మీకు తెలియకుంటే, మీరు క్రౌడిన్‌లో అనువాద మెమరీని తనిఖీ చేయవచ్చు లేదా క్రౌడిన్ ఆన్‌లైన్ ఎడిటర్‌లోని పేజీ యొక్క URLలో మీ భాష కోసం భాష కోడ్‌ను కనుగొనవచ్చు. + +విస్తృతంగా మాట్లాడే భాషలకు కొన్ని భాషా కోడ్‌ల ఉదాహరణలు: + +- అరబిక్ - ar +- చైనీస్ సరళీకృతం - zh +- ఫ్రెంచ్ - fr +- హిందీ - హాయ్ +- స్పానిష్ - es + +## బాహ్య కథనాల శీర్షికలు {#external-articles} + +కొన్ని స్ట్రింగ్‌లు బాహ్య కథనాల శీర్షికలను కలిగి ఉంటాయి. మా డెవలపర్ డాక్యుమెంటేషన్ పేజీలలో చాలా వరకు తదుపరి చదవడానికి బాహ్య కథనాలకు లింక్‌లు ఉన్నాయి. వారి భాషలో పేజీని వీక్షించే సందర్శకులకు మరింత స్థిరమైన వినియోగదారు అనుభవాన్ని అందించడానికి, కథనాల శీర్షికలను కలిగి ఉన్న స్ట్రింగ్‌లను కథనం భాషతో సంబంధం లేకుండా అనువదించాలి. + +అనువాదకుల కోసం ఈ స్ట్రింగ్‌లు ఎలా ఉంటాయి మరియు వాటిని ఎలా గుర్తించాలి అనేదానికి మీరు కొన్ని ఉదాహరణలను కనుగొనవచ్చు (కథనాలకు లింక్‌లు ఈ పేజీల దిగువన, 'తదుపరి పఠనం' విభాగంలో ఎక్కువగా చూడవచ్చు): + +![సైడ్‌బార్‌లో కథనాల శీర్షికలు.png](./article-titles-in-sidebar.png) +![ఎడిటర్‌లో కథనాల శీర్షికలు.png](./article-titles-in-editor.png) + +## Crowdin హెచ్చరికలు {#crowdin-warnings} + +క్రౌడిన్ అంతర్నిర్మిత ఫీచర్‌ను కలిగి ఉంది, ఇది అనువాదకులు పొరపాటు చేయబోతున్నప్పుడు వారిని హెచ్చరిస్తుంది. మీరు మూలాధారం నుండి ట్యాగ్‌ని చేర్చడం, అనువదించకూడని మూలకాలను అనువదించడం, వరుసగా అనేక ఖాళీలను జోడించడం, ముగింపు విరామ చిహ్నాలను మరచిపోవడం మొదలైనవి మర్చిపోతే మీ అనువాదాన్ని సేవ్ చేసే ముందు క్రౌడిన్ స్వయంచాలకంగా దీని గురించి మిమ్మల్ని హెచ్చరిస్తుంది. +మీకు ఇలాంటి హెచ్చరిక కనిపిస్తే, దయచేసి వెనక్కి వెళ్లి, సూచించిన అనువాదాన్ని ఒకటికి రెండుసార్లు తనిఖీ చేయండి. + +**ఈ హెచ్చరికలను ఎప్పుడూ విస్మరించవద్దు, ఎందుకంటే అవి సాధారణంగా ఏదైనా తప్పుగా ఉందని లేదా అనువాదంలో మూల వచనంలోని కీలక భాగం లేదని అర్థం.** + +మీరు మీ అనువాదానికి ట్యాగ్ జోడించడం మరచిపోయినప్పుడు Crowdin హెచ్చరికకు ఒక ఉదాహరణ: +![ఒక Crowdin హెచ్చరిక ఉదాహరణ](./crowdin-warning-example.png) + +## ట్యాగ్‌లు మరియు కోడ్ స్నిప్పెట్‌లతో వ్యవహరించడం {#dealing-with-tags} + +చాలా సోర్స్ కంటెంట్‌లో ట్యాగ్‌లు మరియు వేరియబుల్స్ ఉన్నాయి, ఇవి క్రౌడిన్ ఎడిటర్‌లో పసుపు రంగులో హైలైట్ చేయబడతాయి. ఇవి వేర్వేరు విధులను అందిస్తాయి మరియు సరిగ్గా సంప్రదించాలి. + +**Crowdin సెట్టింగ్‌లు** + +ట్యాగ్‌లను నిర్వహించడం మరియు వాటిని నేరుగా మూలాధారం నుండి కాపీ చేయడం సులభతరం చేయడానికి, క్రౌడిన్ ఎడిటర్‌లో మీ సెట్టింగ్‌లను మార్చమని మేము సిఫార్సు చేస్తున్నాము. + +1. సెట్టింగ్‌లను తెరవండి + ![ఎడిటర్‌లో సెట్టింగ్‌లను ఎలా తెరవాలి](./editor-settings.png) + +2. 'HTML ట్యాగ్‌లను ప్రదర్శిస్తోంది' విభాగానికి క్రిందికి స్క్రోల్ చేయండి + +3. 'దాచు' ఎంచుకోండి + ![దయచేసి 'దాచు' ఎంచుకోండి](./hide-tags.png) + +4. 'సేవ్' క్లిక్ చేయండి + +ఈ ఎంపికను ఎంచుకోవడం ద్వారా, పూర్తి ట్యాగ్ వచనం ఇకపై చూపబడదు మరియు సంఖ్యతో భర్తీ చేయబడుతుంది. +అనువదిస్తున్నప్పుడు, ఈ ట్యాగ్‌పై క్లిక్ చేయడం వలన స్వయంచాలకంగా ఖచ్చితమైన ట్యాగ్ అనువాద ఫీల్డ్‌కు కాపీ చేయబడుతుంది. + +**లింకులు** + +మీరు ethereum.org లేదా ఇతర వెబ్‌సైట్‌లలోని పేజీలకు పూర్తి లింక్‌లను గమనించవచ్చు. + +ఇవి మూలానికి సమానంగా ఉండాలి మరియు మార్చబడవు లేదా అనువదించబడవు. మీరు లింక్‌ను అనువదించినా లేదా దాన్ని ఏ విధంగానైనా మార్చినా, స్లాష్ (/) వంటి దానిలోని కొంత భాగాన్ని తీసివేసినా, ఇది విరిగిన మరియు ఉపయోగించలేని లింక్‌లకు దారి తీస్తుంది. + +లింక్‌లను నిర్వహించడానికి ఉత్తమ మార్గం వాటిని నేరుగా సోర్స్ నుండి కాపీ చేయడం, వాటిపై క్లిక్ చేయడం ద్వారా లేదా 'కాపీ సోర్స్' బటన్ (Alt+C) ని ఉపయోగించడం ద్వారా. + +![లింక్ ఉదాహరణ.png](./example-of-link.png) + +లింక్‌లు మూల వచనంలో ట్యాగ్‌ల రూపంలో కూడా కనిపిస్తాయి (అనగా, `<0>` ``). మీరు ట్యాగ్‌పై హోవర్ చేస్తే, ఎడిటర్ దాని పూర్తి కంటెంట్‌ను చూపుతుంది - కొన్నిసార్లు ఈ ట్యాగ్‌లు లింక్‌లను సూచిస్తాయి. + +మూలం నుండి లింక్‌లను కాపీ చేయడం మరియు వాటి క్రమాన్ని మార్చకపోవడం చాలా ముఖ్యం. + +ట్యాగ్‌ల క్రమాన్ని మార్చినట్లయితే, అవి సూచించే లింక్ విచ్ఛిన్నమవుతుంది. + +![ట్యాగ్‌ల లోపల లింక్‌ల ఉదాహరణ.png](./example-of-links-inside-tags.png) + +**ట్యాగ్‌లు మరియు వేరియబుల్స్** + +మూల వచనం అనేక రకాల ట్యాగ్‌లను కలిగి ఉంది, వీటిని ఎల్లప్పుడూ మూలం నుండి కాపీ చేయాలి మరియు మార్చకూడదు. పైన పేర్కొన్న విధంగా, అనువాదంలో ఈ ట్యాగ్‌ల క్రమం కూడా మూలం వలెనే ఉండాలి. + +ట్యాగ్‌లు ఎల్లప్పుడూ ఓపెనింగ్ మరియు క్లోజింగ్ ట్యాగ్‌ని కలిగి ఉంటాయి. చాలా సందర్భాలలో, ట్యాగ్‌లను తెరవడం మరియు మూసివేయడం మధ్య వచనాన్ని అనువదించాలి. + +ఉదాహరణ: ``వికేంద్రీకృత`` + +`` - _వచనాన్ని బోల్డ్‌గా చేసే ప్రారంభ ట్యాగ్_ + +వికేంద్రీకృత - _అనువదించగల వచనం_ + +`` - _ముగింపు ట్యాగ్_ + +![‘స్ట్రాంగ్’ ట్యాగ్‌ల ఉదాహరణ.png](./example-of-strong-tags.png) + +కోడ్ స్నిప్పెట్‌లను ఇతర ట్యాగ్‌లకు కొద్దిగా భిన్నంగా సంప్రదించాలి, ఎందుకంటే అవి అనువదించకూడని కోడ్‌ని కలిగి ఉంటాయి. + +ఉదాహరణ: ``nonce`` + +`` - _ఒక కోడ్ స్నిప్పెట్‌ను కలిగి ఉన్న ప్రారంభ ట్యాగ్_ + +nonce - _అనువదించలేని వచనం_ + +`` - _ముగింపు ట్యాగ్_ + +![కోడ్ snippets.png](./example-of-code-snippets.png ఉదాహరణ) + +మూల వచనం సంక్షిప్త ట్యాగ్‌లను కూడా కలిగి ఉంటుంది, ఇందులో సంఖ్యలు మాత్రమే ఉంటాయి, అంటే వాటి పనితీరు వెంటనే స్పష్టంగా కనిపించదు. ఈ ట్యాగ్‌లు ఏ ఫంక్షన్‌ను అందిస్తాయో చూడడానికి మీరు వాటిపై హోవర్ చేయవచ్చు. + +కింది ఉదాహరణలో, `<0>` ట్యాగ్‌పై హోవర్ చేయడం వలన అది ``ని సూచిస్తుందని మరియు కోడ్ స్నిప్పెట్‌ను కలిగి ఉందని మీరు చూడవచ్చు, కాబట్టి ఈ ట్యాగ్‌లలోని కంటెంట్‌ను అనువదించకూడదు. + +![సందిగ్ధ ట్యాగ్‌ల ఉదాహరణ.png](./example-of-ambiguous-tags.png) + +## సంక్షిప్త vs. పూర్తి రూపాలు/అబ్రివియేషన్లు {#short-vs-full-forms} + +వెబ్‌సైట్‌లో చాలా సంక్షిప్తాలు ఉపయోగించబడ్డాయి, ఉదా., డాప్స్, NFT, DAO, DeFi, మొదలైనవి. ఈ సంక్షిప్తాలు సాధారణంగా ఆంగ్లంలో ఉపయోగించబడతాయి మరియు వెబ్‌సైట్‌ను సందర్శించే చాలా మంది సందర్శకులు వాటితో సుపరిచితులు. + +వారు సాధారణంగా ఇతర భాషలలో అనువాదాలను ఏర్పాటు చేయరు కాబట్టి, వీటిని మరియు ఇలాంటి నిబంధనలను సంప్రదించడానికి ఉత్తమ మార్గం పూర్తి రూపం యొక్క వివరణాత్మక అనువాదాన్ని అందించడం మరియు బ్రాకెట్‌లలో ఆంగ్ల సంక్షిప్తీకరణను జోడించడం. + +ఈ సంక్షిప్తాలను అనువదించవద్దు, ఎందుకంటే చాలా మందికి వాటితో పరిచయం ఉండదు మరియు స్థానికీకరించిన సంస్కరణలు చాలా మంది సందర్శకులకు అంతగా అర్థం కావు. + +డాప్‌లను ఎలా అనువదించాలో ఉదాహరణ: + +- వికేంద్రీకృత అప్లికేషన్లు (డాప్స్) → _అనువదించబడిన పూర్తి రూపం (బ్రాకెట్లలో ఆంగ్ల సంక్షిప్తీకరణ)_ + +## స్థిరపడిన అనువాదాలు లేని పదాలు {#terms-without-established-translations} + +కొన్ని పదాలు ఇతర భాషలలో అనువాదాలను ఏర్పాటు చేసి ఉండకపోవచ్చు మరియు అసలు ఆంగ్ల పదం ద్వారా విస్తృతంగా పిలుస్తారు. ఇటువంటి పదాలలో ఎక్కువగా ప్రూఫ్-ఆఫ్-వర్క్, ప్రూఫ్-ఆఫ్-స్టేక్, బెకన్ చైన్, స్టాకింగ్ మొదలైన కొత్త అంశాలు ఉంటాయి. + +ఈ పదాలను అనువదించడం అసహజంగా అనిపించవచ్చు, ఆంగ్ల సంస్కరణ సాధారణంగా ఇతర భాషలలో కూడా ఉపయోగించబడుతుంది కాబట్టి, వాటిని అనువదించాలని సిఫార్సు చేయబడింది. + +వాటిని అనువదిస్తున్నప్పుడు, సృజనాత్మకంగా ఉండటానికి సంకోచించకండి, వివరణాత్మక అనువాదాలను ఉపయోగించండి లేదా వాటిని అక్షరాలా అనువదించండి. + +**కొన్ని పదాలను ఆంగ్లంలో వదిలిపెట్టే బదులు చాలా పదాలను ఎందుకు అనువదించాలంటే, భవిష్యత్తులో ఈ కొత్త పదజాలం మరింత విస్తృతంగా మారుతుంది, ఎందుకంటే ఎక్కువ మంది ప్రజలు ఇతీరియము మరియు సంబంధిత సాంకేతికతలను ఉపయోగించడం ప్రారంభిస్తారు.** **ప్రపంచం నలుమూలల నుండి ఎక్కువ మందిని ఈ రంగంలోకి తీసుకురావాలంటే, మనమే దాన్ని సృష్టించుకోవాల్సిన అవసరం ఉన్నప్పటికీ, వీలైనన్ని ఎక్కువ భాషలలో అర్థమయ్యే పదజాలాన్ని అందించాలి.** + +## బటన్లు & CTAలు {#buttons-and-ctas} + +వెబ్‌సైట్ అనేక బటన్‌లను కలిగి ఉంది, వీటిని ఇతర కంటెంట్ కంటే భిన్నంగా అనువదించాలి. + +చాలా స్ట్రింగ్‌లతో కనెక్ట్ చేయబడిన సందర్భ స్క్రీన్‌షాట్‌లను వీక్షించడం ద్వారా లేదా ఎడిటర్‌లోని సందర్భాన్ని తనిఖీ చేయడం ద్వారా బటన్ వచనాన్ని గుర్తించవచ్చు, ఇందులో ‘‘బటన్’’ పదబంధం ఉంటుంది. + +ఫార్మాటింగ్ అసమతుల్యతను నివారించడానికి బటన్‌ల అనువాదాలు వీలైనంత చిన్నవిగా ఉండాలి. అదనంగా, బటన్ అనువాదాలు ఆజ్ఞార్థకంగా ఉండాలి, అనగా ఒక ఆదేశాన్ని లేదా అభ్యర్థనను ప్రదర్శించాలి. + +![ఒక బటన్‌ను ఎలా కనుగొనాలి.png](./how-to-find-a-button.png) + +## సమ్మిళితత్వం కోసం అనువదించడం {#translating-for-inclusivity} + +Ethereum.org సందర్శకులు ప్రపంచం నలుమూలల నుండి మరియు విభిన్న నేపథ్యాల నుండి వచ్చారు. కాబట్టి వెబ్‌సైట్‌లోని భాష తటస్థంగా ఉండాలి, అందరికీ స్వాగతించేలా ఉండాలి మరియు ప్రత్యేకంగా ఉండకూడదు. + +ఇందులో ముఖ్యమైన అంశం లింగ తటస్థత. అధికారిక చిరునామా రూపాన్ని ఉపయోగించడం ద్వారా మరియు అనువాదాలలో లింగ-నిర్దిష్ట పదాలను నివారించడం ద్వారా దీన్ని సులభంగా సాధించవచ్చు. + +అధికారిక చిరునామా రూపాన్ని ఉపయోగించడం ద్వారా మరియు అనువాదాలలో లింగ-నిర్దిష్ట పదాలను నివారించడం ద్వారా దీన్ని సులభంగా సాధించవచ్చు. + +అధికారిక చిరునామా రూపాన్ని ఉపయోగించడం ద్వారా మరియు అనువాదాలలో లింగ-నిర్దిష్ట పదాలను నివారించడం ద్వారా దీన్ని సులభంగా సాధించవచ్చు. + +## భాషా-నిర్దిష్ట అనువాదాలు {#language-specific-translations} + +అధికారిక చిరునామా రూపాన్ని ఉపయోగించడం ద్వారా మరియు అనువాదాలలో లింగ-నిర్దిష్ట పదాలను నివారించడం ద్వారా దీన్ని సులభంగా సాధించవచ్చు. అధికారిక చిరునామా రూపాన్ని ఉపయోగించడం ద్వారా మరియు అనువాదాలలో లింగ-నిర్దిష్ట పదాలను నివారించడం ద్వారా దీన్ని సులభంగా సాధించవచ్చు. + +అధికారిక చిరునామా రూపాన్ని ఉపయోగించడం ద్వారా మరియు అనువాదాలలో లింగ-నిర్దిష్ట పదాలను నివారించడం ద్వారా దీన్ని సులభంగా సాధించవచ్చు. అధికారిక చిరునామా రూపాన్ని ఉపయోగించడం ద్వారా మరియు అనువాదాలలో లింగ-నిర్దిష్ట పదాలను నివారించడం ద్వారా దీన్ని సులభంగా సాధించవచ్చు. + +అధికారిక చిరునామా రూపాన్ని ఉపయోగించడం ద్వారా మరియు అనువాదాలలో లింగ-నిర్దిష్ట పదాలను నివారించడం ద్వారా దీన్ని సులభంగా సాధించవచ్చు. + +### విరామచిహ్నాలు, ఫార్మాటింగ్ {#punctuation-and-formatting} + +**క్యాపిటలైజేషన్** + +- వివిధ భాషలలో క్యాపిటలైజేషన్‌లో చాలా తేడాలు ఉన్నాయి. +- ఆంగ్లంలో, శీర్షికలు మరియు పేర్లు, నెలలు మరియు రోజులు, భాష పేర్లు, సెలవులు మొదలైనవాటిలో అన్ని పదాలను క్యాపిటలైజ్ చేయడం సర్వసాధారణం. అనేక ఇతర భాషలలో, ఇది వివిధ క్యాపిటలైజేషన్ నియమాలను కలిగి ఉన్నందున వ్యాకరణపరంగా తప్పు. +- కొన్ని భాషలలో వ్యక్తిగత సర్వనామాలు, నామవాచకాలు మరియు కొన్ని విశేషణాలను క్యాపిటలైజ్ చేసే నియమాలు కూడా ఉన్నాయి, ఇవి ఆంగ్లంలో పెద్ద అక్షరం కాదు. + +**అంతరం** + +- ఆర్థోగ్రఫీ నియమాలు ప్రతి భాషకు ఖాళీల వినియోగాన్ని నిర్వచించాయి. ఖాళీలు ప్రతిచోటా ఉపయోగించబడుతున్నందున, ఈ నియమాలు చాలా విభిన్నమైనవి మరియు ఖాళీలు చాలా తప్పుగా అనువదించబడిన అంశాలు. +- ఇంగ్లీష్ మరియు ఇతర భాషల మధ్య అంతరంలో కొన్ని సాధారణ తేడాలు: + - కొలత యూనిట్లు మరియు కరెన్సీల ముందు ఖాళీ (ఉదా., USD, EUR, kB, MB) + - డిగ్రీ గుర్తుల ముందు ఖాళీ (ఉదా., °C, ℉) + - కొన్ని విరామ చిహ్నాల ముందు ఖాళీ, ముఖ్యంగా ఎలిప్సిస్ (...) + - స్లాష్‌లకు ముందు మరియు తర్వాత ఖాళీ (/) + +**జాబితాలు** + +- జాబితాలను వ్రాయడానికి ప్రతి భాషకు విభిన్నమైన మరియు సంక్లిష్టమైన నియమాలు ఉంటాయి. ఇవి ఆంగ్లానికి గణనీయంగా భిన్నంగా ఉండవచ్చు. +- కొన్ని భాషలలో, ప్రతి కొత్త పంక్తిలోని మొదటి పదాన్ని క్యాపిటలైజ్ చేయాలి, మరికొన్ని భాషల్లో కొత్త పంక్తులు చిన్న అక్షరాలతో ప్రారంభం కావాలి. అనేక భాషలలో ప్రతి పంక్తి పొడవును బట్టి జాబితాలలో క్యాపిటలైజేషన్ గురించి వివిధ నియమాలు కూడా ఉన్నాయి. +- లైన్ ఐటెమ్‌ల విరామ చిహ్నాలకు కూడా ఇది వర్తిస్తుంది. జాబితాలలో ముగింపు విరామచిహ్నం భాషను బట్టి చుక్క (**.**), కామా (**,**), లేదా సెమికోలన్ (**;**) కావచ్చు. + +**కొటేషన్ గుర్తులు** + +- భాషలు అనేక రకాల కొటేషన్ మార్కులను ఉపయోగిస్తాయి. మూలం నుండి ఆంగ్ల కొటేషన్ మార్కులను కాపీ చేయడం తరచుగా తప్పు. +- కొటేషన్ మార్కుల యొక్క అత్యంత సాధారణ రకాల్లో కొన్ని: + - "ఉదాహరణ వచనం" + - ‚ఉదాహరణ వచనం’ + - "ఉదాహరణ వచనం" + - "ఉదాహరణ వచనం" + - 'ఉదాహరణ వచనం' + - "ఉదాహరణ వచనం" + +**హైఫన్‌లు మరియు డాష్‌లు** + +- ఆంగ్లంలో, పదాలను లేదా పదంలోని వివిధ భాగాలను కలపడానికి హైఫన్ (-) ఉపయోగించబడుతుంది, అయితే పరిధి లేదా పాజ్‌ని సూచించడానికి డాష్ (–) ఉపయోగించబడుతుంది. +- చాలా భాషలలో హైఫన్‌లు మరియు డాష్‌లను ఉపయోగించడం కోసం వేర్వేరు నియమాలు ఉన్నాయి, వాటిని గమనించాలి. + +### ఫార్మాట్‌లు {#formats} + +**సంఖ్యలు** + +- వివిధ భాషలలో సంఖ్యలను వ్రాయడంలో ప్రధాన వ్యత్యాసం దశాంశాలు మరియు వేల కోసం ఉపయోగించే సెపరేటర్. వేల మందికి, ఇది కాలం, కామా లేదా స్పేస్ కావచ్చు. అదేవిధంగా, కొన్ని భాషలు దశాంశ బిందువును ఉపయోగిస్తాయి, మరికొన్ని దశాంశ కామాను ఉపయోగిస్తాయి. + - పెద్ద సంఖ్యలకు కొన్ని ఉదాహరణలు: + - ఆంగ్లం – **1,000.50** + - స్పానిష్ – **1.000,50** + - ఫ్రెంచ్ – **1 000,50** +- సంఖ్యలను అనువదించేటప్పుడు మరొక ముఖ్యమైన అంశం శాతం గుర్తు. దీనిని వివిధ మార్గాల్లో వ్రాయవచ్చు: **100%**, **100 %** లేదా **%100**. +- చివరగా, ప్రతికూల సంఖ్యలు భాషపై ఆధారపడి విభిన్నంగా ప్రదర్శించబడతాయి: -100, 100-, (100) లేదా [100]. + +**తేదీలు** + +- తేదీలను అనువదించేటప్పుడు, భాష ఆధారంగా అనేక పరిగణనలు మరియు తేడాలు ఉన్నాయి. వీటిలో తేదీ ఫార్మాట్, సెపరేటర్, క్యాపిటలైజేషన్ మరియు లీడింగ్ సున్నాలు ఉన్నాయి. పూర్తి-నిడివి మరియు సంఖ్యా తేదీల మధ్య తేడాలు కూడా ఉన్నాయి. + - వివిధ తేదీ ఫార్మాట్‌లకు కొన్ని ఉదాహరణలు: + - ఇంగ్లీష్ UK (dd/mm/yyyy) – 1 జనవరి, 2022 + - ఇంగ్లీష్ US (mm/dd/yyyy) – జనవరి 1, 2022 + - Chinese (yyyy-mm-dd) – 2022 年 1 月 1 日 + - ఫ్రెంచ్ (dd/mm/yyyy) – 1er జాన్వియర్ 2022 + - ఇటాలియన్ (dd/mm/yyyy) – 1º జెన్నాయో 2022 + - జర్మన్ (dd/mm/yyyy) – 1. జనవరి 2022 + +**కరెన్సీలు** + +- వివిధ ఫార్మాట్‌లు, సమావేశాలు మరియు మార్పిడుల కారణంగా కరెన్సీలను అనువదించడం సవాలుగా ఉంటుంది. సాధారణ నియమంగా, దయచేసి కరెన్సీలను మూలాధారం వలె ఉంచండి. రీడర్ ప్రయోజనం కోసం మీరు మీ స్థానిక కరెన్సీని మరియు మార్పిడిని బ్రాకెట్లలో జోడించవచ్చు. +- వివిధ భాషలలో కరెన్సీలను వ్రాయడంలో ప్రధాన వ్యత్యాసాలు సింబల్ ప్లేస్‌మెంట్, దశాంశ కామాలు వర్సెస్ దశాంశ పాయింట్లు, అంతరం మరియు సంక్షిప్తాలు వర్సెస్ చిహ్నాలు. + - సింబల్ ప్లేస్‌మెంట్: $100 లేదా 100$ + - దశాంశ కామాలు వర్సెస్ దశాంశ పాయింట్లు: 100,50$ లేదా 100.50$ + - అంతరం: 100$ లేదా 100 $ + - సంక్షిప్తాలు మరియు. చిహ్నాలు: 100 $ లేదా 100 USD + +**కొలత యూనిట్లు** + +- సాధారణ నియమంగా, దయచేసి మూలాధారం ప్రకారం కొలత యూనిట్లను ఉంచండి. మీ దేశం వేరే సిస్టమ్‌ని ఉపయోగిస్తుంటే, మీరు మార్పిడిని బ్రాకెట్‌లలో చేర్చవచ్చు. +- కొలత యూనిట్ల స్థానికీకరణ పక్కన పెడితే, భాషలు ఈ యూనిట్లను ఎలా చేరుకోవాలో తేడాలను గమనించడం కూడా ముఖ్యం. ప్రధాన వ్యత్యాసం సంఖ్య మరియు యూనిట్ మధ్య అంతరం, ఇది భాష ఆధారంగా భిన్నంగా ఉంటుంది. దీనికి ఉదాహరణలు 100kB వర్సెస్ 100 kB లేదా 50ºF vs. 50 ºF. + +## ముగింపు {#conclusion} + +Ethereum.orgని అనువదించడం Ethereum యొక్క విభిన్న అంశాల గురించి తెలుసుకోవడానికి ఒక గొప్ప అవకాశం. + +అనువదిస్తున్నప్పుడు, తొందరపడకుండా ప్రయత్నించండి. తేలికగా తీసుకోండి మరియు ఆనందించండి! + +అనువాద ప్రోగ్రామ్‌లో పాలుపంచుకున్నందుకు మరియు వెబ్‌సైట్‌ను విస్తృత ప్రేక్షకులకు అందుబాటులో ఉంచడంలో మాకు సహాయం చేసినందుకు ధన్యవాదాలు. Ethereum కమ్యూనిటీ ప్రపంచవ్యాప్తంగా ఉంది మరియు మీరు దానిలో భాగమైనందుకు మేము సంతోషిస్తున్నాము! diff --git a/public/content/translations/te/dao/index.md b/public/content/translations/te/dao/index.md new file mode 100644 index 00000000000..f7f1268fab5 --- /dev/null +++ b/public/content/translations/te/dao/index.md @@ -0,0 +1,167 @@ +--- +title: "DAO అంటే ఏమిటి?" +metaTitle: "DAO అంటే ఏమిటి? | వికేంద్రీకృత అటానమస్ ఆర్గనైజేషన్" +description: "ఈథరియంలో డిఎఓలు గురించి ఒక అవలోకనంలో" +lang: te +template: use-cases +emoji: ":handshake:" +sidebarDepth: 2 +image: /images/use-cases/dao-2.png +alt: "ప్రతిపాదనపై డిఎఓ ఓటింగ్ యొక్క ప్రాతినిధ్యం." +summaryPoint1: "కేంద్రీకృత నాయకత్వం లేని సభ్యుల యాజమాన్యంలోని సంఘాలు." +summaryPoint2: "ఇంటర్నెట్ స్ట్రేంజర్‌తో సహకరించడానికి సురక్షితమైన మార్గం." +summaryPoint3: "కేవలం సంకేత కారణంగా ధనాన్ని అడుగుతుందిన ఒక నిర్వహణా స్థలం." +--- + +## డిఎఓలు అంటే ఏమిటి? {#what-are-daos} + +DAO అనేది భాగస్వామ్య లక్ష్యం కోసం పని చేసే సమిష్టి యాజమాన్య సంస్థ. + +నిధులు లేదా కార్యకలాపాలను నిర్వహించడానికి దయగల నాయకుడిని విశ్వసించకుండా ప్రపంచవ్యాప్తంగా ఉన్న ఒకే ఆలోచన కలిగిన వ్యక్తులతో కలిసి పనిచేయడానికి DAOలు మాకు అనుమతిస్తాయి. ఇష్టానుసారంగా నిధులను ఖర్చు చేయగల CEO లేదా పుస్తకాలను మార్చగల CFO ఎవరూ లేరు. బదులుగా, కోడ్‌లో బేక్ చేయబడిన బ్లాక్‌చెయిన్ ఆధారిత నియమాలు సంస్థ ఎలా పనిచేస్తుందో మరియు నిధులు ఎలా ఖర్చు చేయబడతాయో నిర్వచించాయి. + +వారిలో అంతా అడ్డుకొనసాగే అంతర్గత ఖజానాలు ఉన్నాయి, మార్గం ఆమోదనతో మీరుకొనలేరు. సంస్థలోని ప్రతి ఒక్కరికీ ఒక గొంతు ఉందని నిర్ధారించుకోవడానికి నిర్ణయాలు ప్రతిపాదనలు మరియు ఓటింగ్ ద్వారా పాలించబడతాయి మరియు ప్రతిదీ పారదర్శకంగా [ఆన్‌చైన్‌లో](/glossary/#onchain) జరుగుతుంది. + +## మాకు డిఎఓలు ఎందుకు అవసరం? {#why-dao} + +నిధులు మరియు డబ్బుతో కూడిన సంస్థను ప్రారంభించడం వలన మీరు పని చేస్తున్న వ్యక్తులపై చాలా నమ్మకం అవసరం. కానీ మీరు ఇంటర్నెట్‌లో మాత్రమే ఇంటరాక్ట్ అయిన వారిని విశ్వసించడం కష్టం. DAOలతో మీరు గ్రూప్‌లోని మరెవరినీ విశ్వసించాల్సిన అవసరం లేదు, కేవలం DAO కోడ్, ఇది 100% పారదర్శకంగా ఉంటుంది మరియు ఎవరైనా ధృవీకరించవచ్చు. + +ఇది ప్రపంచ వ్యాప్తంగా సహకారం మరియు సామాన్యీకరణకు అనేక కొత్త అవకాశాలను తెరిచినది. + +### ఒక పోలిక {#dao-comparison} + +| DAO | ఒక సంప్రదాయ సంస్థ | +| ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| సాధారణంగా ఫ్లాట్ మరియు పూర్తిగా పౌరుల్లో మంచిది. | సాధారణంగా క్రమానుగతంగా ఉంటుంది. | +| ఏవైనా మార్పులు అమలు కావాలంటే సభ్యులకు ఓటింగ్ అవసరం. | నిర్మాణంపై ఆధారపడి, మార్పులను ఏకైక పార్టీ నుండి డిమాండ్ చేయవచ్చు లేదా ఓటింగ్ ఇవ్వవచ్చు. | +| ఓట్లు లెక్కించబడ్డాయి మరియు విశ్వసనీయ మధ్యవర్తి లేకుండా ఫలితం స్వయంచాలకంగా అమలు చేయబడుతుంది. | ఓటింగ్ అనుమతించబడితే, ఓట్లు అంతర్గతంగా లెక్కించబడతాయి మరియు ఓటింగ్ ఫలితాన్ని మాన్యువల్‌గా నిర్వహించాలి. | +| సేవలు ఆటోమేటిక్‌గా పరిచారించబడుతాయి (ఉదాహరణకు సెవార్థంగా దానం ఫండ్లను వితరణ). | రక్షణత మానవ చేర్పించేందుకు లేదా కేంద్రంగా నియంత్రించే స్వయంచాలకతకు అవకాశం ఉండకపోవచ్చు, అన్యాయమైన నడబడాలకు ఆస్పదశాలను ఉంటుంది. | +| అన్ని కార్యకలాపం సంపూర్ణంగా ప్రకటనం చేసుకునేందుకు మరియు పూర్తిగా ప్రపంచంలో చూపించబడినట్లయితే. | ప్రవృత్తి సాధారణంగా ప్రైవేట్ అయితే, ప్రజలకు మరియు పరిమితమైనది. | + +### DAO ఉదాహరణలు {#dao-examples} + +ఇది మరింత అర్ధవంతం కావడానికి, మీరు DAOని ఎలా ఉపయోగించవచ్చో ఇక్కడ కొన్ని ఉదాహరణలు ఉన్నాయి: + +- **ఒక స్వచ్ఛంద సంస్థ** – మీరు ప్రపంచంలోని ఎవరి నుండైనా విరాళాలను అంగీకరించవచ్చు మరియు నిధుల కోసం ఏ కారణాలపై ఓటు వేయవచ్చు. +- **సామూహిక యాజమాన్యం** – మీరు భౌతిక లేదా డిజిటల్ ఆస్తులను కొనుగోలు చేయవచ్చు మరియు సభ్యులు వాటిని ఎలా ఉపయోగించాలనే దానిపై ఓటు వేయవచ్చు. +- **వెంచర్లు మరియు గ్రాంట్లు** – మీరు పెట్టుబడి మూలధనాన్ని పూల్ చేసే ఒక వెంచర్ ఫండ్‌ను సృష్టించవచ్చు మరియు మద్దతు ఇవ్వాల్సిన వెంచర్‌లపై ఓటు వేయవచ్చు. తిరిగి చెల్లించిన డబ్బు తర్వాత DAO-సభ్యుల మధ్య పునఃపంపిణీ చేయబడుతుంది. + + + +## డిఎఓలు ఎలా పని చేస్తాయి? {#how-daos-work} + +DAO యొక్క వెన్నెముక దాని [స్మార్ట్ కాంట్రాక్ట్](/glossary/#smart-contract), ఇది సంస్థ యొక్క నియమాలను నిర్వచిస్తుంది మరియు సమూహం యొక్క ఖజానాను కలిగి ఉంటుంది. ఒప్పందం ఇతీరియములో ప్రత్యక్ష ప్రసారం అయిన తర్వాత, ఓటు ద్వారా తప్ప నిబంధనలను ఎవరూ మార్చలేరు. కోడ్‌లోని నియమాలు మరియు లాజిక్‌ల పరిధిలోకి రాని పనిని ఎవరైనా చేయడానికి ప్రయత్నిస్తే, అది విఫలమవుతుంది. మరియు ట్రెజరీ స్మార్ట్ కాంట్రాక్ట్ ద్వారా నిర్వచించబడినందున, సమూహం యొక్క ఆమోదం లేకుండా ఎవరూ డబ్బును ఖర్చు చేయలేరు. DAOలకు కేంద్ర అధికారం అవసరం లేదని దీని అర్థం. బదులుగా, సమూహం సమిష్టిగా నిర్ణయాలు తీసుకుంటుంది మరియు ఓట్లు పాస్ అయినప్పుడు చెల్లింపులు ఆటోమేటిక్‌గా అధికారం పొందుతాయి. + +స్మార్ట్ కాంట్రాక్టులు Ethereumలో ప్రత్యక్ష ప్రసారం అయిన తర్వాత ట్యాంపర్ ప్రూఫ్ అయినందున ఇది సాధ్యమవుతుంది. ప్రతిదీ పబ్లిక్‌గా ఉన్నందున వ్యక్తులు గమనించకుండా మీరు కోడ్‌ను (DAOs నియమాలు) సవరించలేరు. + +## ఇతీరియము మరియు DAOలు {#ethereum-and-daos} + +అనేక కారణాల వల్ల DAOలకు ఇతీరియము సరైన పునాది: + +- Ethereum యొక్క స్వంత ఏకాభిప్రాయం వికేంద్రీకరించబడింది మరియు సంస్థలు నెట్‌వర్క్‌ను విశ్వసించేలా ఏర్పాటు చేయబడింది. +- స్మార్ట్ కాంట్రాక్ట్ కోడ్‌ని దాని యజమానులు కూడా ప్రత్యక్ష ప్రసారం చేసిన తర్వాత సవరించలేరు. ఇది ప్రోగ్రామ్ చేయబడిన నిబంధనల ప్రకారం DAOని అమలు చేయడానికి అనుమతిస్తుంది. +- స్మార్ట్ ఒప్పందాలు నిధులను పంపగలవు/స్వీకరించగలవు. ఇది లేకుండా గ్రూప్ ఫండ్‌లను నిర్వహించడానికి మీకు విశ్వసనీయ మధ్యవర్తి అవసరం. +- ఎథిరియమ్ సముదాయం కంపిటిటివ్ కనీసం అందరినీ సహకరించడంతో ప్రముఖ అద్దెకు ప్రముఖాన్ని తందుకుంటుంది, వాటిని త్వరలో మొత్తం అభిప్రాయాన్ని మరియు మద్దతు వ్యవస్థలను ప్రాముఖ్యతరంగా ప్రారంభించడానికి సహకారం చేస్తున్నది. + +## DAO పాలన {#dao-governance} + +డిఎఓని పరిపాలించేటప్పుడు ఓటింగ్ మరియు ప్రతిపాదనలు ఎలా పని చేస్తాయి వంటి అనేక పరిగణనలు ఉన్నాయి. + +### డెలిగేషన్ {#governance-delegation} + +ప్రతినిధి బృందం ప్రతినిధి ప్రజాస్వామ్యం యొక్క DAO వెర్షన్ లాంటిది. టోకెన్ హోల్డర్లు తమను తాము నామినేట్ చేసే వినియోగదారులకు ఓట్లను అందజేస్తారు మరియు ప్రోటోకాల్‌ను నిర్వహించడానికి మరియు సమాచారం ఇవ్వడానికి కట్టుబడి ఉంటారు. + +#### ఒక ప్రసిద్ధ ఉదాహరణ {#governance-example}[ENS](https://claim.ens.domains/delegate-ranking) – ENS హోల్డర్లు వారికి ప్రాతినిధ్యం వహించడం కోసం నిమగ్నమైన కమ్యూనిటీ సభ్యులకు తమ ఓట్లను డెలిగేట్ చేయవచ్చు. + +### ఆటోమేటిక్ లావాదేవీల పాలన {#governance-example} + +అనేక డిఎఓలలో, సభ్యుల కోరం నిశ్చయాత్మకంగా ఓటు వేస్తే లావాదేవీలు స్వయంచాలకంగా అమలు చేయబడతాయి. + +#### ఒక ప్రసిద్ధ ఉదాహరణ {#governance-example} + +[Nouns](https://nouns.wtf) – Nouns DAOలో, వ్యవస్థాపకులు వీటో చేయనంత వరకు, ఓట్ల కోరం నెరవేరి, మెజారిటీ అనుకూలంగా ఓటు వేస్తే, ఒక లావాదేవీ స్వయంచాలకంగా అమలు చేయబడుతుంది. + +### మల్టీసిగ్ పాలన {#governance-example} + +DAOలకు వేలకొద్దీ ఓటింగ్ సభ్యులు ఉండవచ్చు, నిధులు విశ్వసనీయమైన మరియు సాధారణంగా డాక్స్ చేయబడిన (కమ్యూనిటీకి తెలిసిన పబ్లిక్ గుర్తింపులు) 5-20 మంది క్రియాశీల కమ్యూనిటీ సభ్యులచే పంచుకోబడిన [వాలెట్](/glossary/#wallet)లో ఉండవచ్చు. ఓటు వేసిన తర్వాత, [మల్టీసిగ్](/glossary/#multisig) సంతకం చేసేవారు కమ్యూనిటీ యొక్క సంకల్పాన్ని అమలు చేస్తారు. + +## DAO చట్టాలు {#dao-laws} + +1977లో వ్యోమింగ్ LLCని కనిపెట్టింది, ఇది వ్యవస్థాపకులకు రక్షణ కల్పిస్తుంది మరియు వారి బాధ్యతను పరిమితం చేస్తుంది. ఇటీవల, వారు DAOలకు చట్టపరమైన హోదాను కల్పించే DAO చట్టానికి మార్గదర్శకత్వం వహించారు. ప్రస్తుతం వ్యోమింగ్, వెర్మోంట్ మరియు వర్జిన్ దీవులు ఏదో ఒక రూపంలో DAO చట్టాలను కలిగి ఉన్నాయి. + +### ఒక ప్రసిద్ధ ఉదాహరణ {#law-example} + +[CityDAO](https://citizen.citydao.io/) – ఎల్లోస్టోన్ నేషనల్ పార్క్ సమీపంలో 40 ఎకరాల భూమిని కొనుగోలు చేయడానికి CityDAO వయోమింగ్ యొక్క DAO చట్టాన్ని ఉపయోగించింది. + +## DAO సభ్యత్వం {#dao-membership} + +DAO సభ్యత్వం కోసం వివిధ నమూనాలు ఉన్నాయి. సభ్యత్వం ఓటింగ్ ఎలా పని చేస్తుందో మరియు DAOలోని ఇతర కీలక భాగాలను గుర్తించగలదు. + +### టోకెన్-ఆధారిత సభ్యత్వం {#token-based-membership} + +ఉపయోగించిన టోకెన్‌పై ఆధారపడి, సాధారణంగా పూర్తిగా [అనుమతిరహితం](/glossary/#permissionless). చాలావరకు ఈ పాలన టోకెన్‌లను [వికేంద్రీకృత ఎక్స్ఛేంజ్](/glossary/#dex)లో అనుమతిరహితంగా వర్తకం చేయవచ్చు. ఇతరులు తప్పనిసరిగా లిక్విడిటీని అందించడం లేదా ఇతర 'పని యొక్క రుజువు' ద్వారా సంపాదించాలి. ఎలాగైనా, టోకెన్‌ని పట్టుకోవడం వల్ల ఓటింగ్‌కు యాక్సెస్‌ను మంజూరు చేస్తుంది. + +_సాధారణంగా విస్తృత వికేంద్రీకృత ప్రోటోకాల్‌లు మరియు/లేదా టోకెన్‌లను పాలించడానికి ఉపయోగిస్తారు._ + +#### ఒక ప్రసిద్ధ ఉదాహరణ {#token-example} + +[MakerDAO](https://makerdao.com) – MakerDAO యొక్క టోకెన్ MKR వికేంద్రీకృత ఎక్స్ఛేంజీలలో విస్తృతంగా అందుబాటులో ఉంది మరియు Maker ప్రోటోకాల్ యొక్క భవిష్యత్తుపై ఓటింగ్ అధికారాన్ని కలిగి ఉండటానికి ఎవరైనా కొనుగోలు చేయవచ్చు. + +### షేర్-ఆధారిత సభ్యత్వం {#share-based-membership} + +భాగస్వామ్య ఆధారిత DAOలు మరింత అనుమతిని కలిగి ఉన్నాయి, కానీ ఇప్పటికీ తెరిచి ఉన్నాయి. కాబోయే సభ్యులు ఎవరైనా DAOలో చేరడానికి ప్రతిపాదనను సమర్పించవచ్చు, సాధారణంగా టోకెన్‌లు లేదా పని రూపంలో కొంత విలువైన నివాళిని అందిస్తారు. షేర్లు ప్రత్యక్ష ఓటింగ్ శక్తి మరియు యాజమాన్యాన్ని సూచిస్తాయి. సభ్యులు ట్రెజరీలో వారి దామాషా వాటాతో ఎప్పుడైనా నిష్క్రమించవచ్చు. + +_సాధారణంగా స్వచ్ఛంద సంస్థలు, కార్మిక సమిష్టిలు మరియు పెట్టుబడి క్లబ్‌ల వంటి మరింత సన్నిహితమైన, మానవ-కేంద్రీకృత సంస్థలకు ఉపయోగిస్తారు. ప్రోటోకాల్‌లు మరియు టోకెన్‌లను కూడా పాలించవచ్చు._ + +#### ఒక ప్రసిద్ధ ఉదాహరణ {#share-example} + +[MolochDAO](http://molochdao.com/) – MolochDAO ఇతీరియము ప్రాజెక్ట్‌లకు నిధులు సమకూర్చడంపై దృష్టి సారించింది. వారికి సభ్యత్వం కోసం ప్రతిపాదన అవసరం, కాబట్టి సంభావ్య మంజూరుదారుల గురించి సమాచారం ఇవ్వడానికి మీకు అవసరమైన నైపుణ్యం మరియు మూలధనం ఉందా అని సమూహం అంచనా వేయగలదు. మీరు ఓపెన్ మార్కెట్‌లో DAOకి యాక్సెస్‌ను కొనుగోలు చేయలేరు. + +### ప్రతిష్ట-ఆధారిత సభ్యత్వం {#reputation-based-membership} + +ప్రతిష్ఠ అనేది భాగస్వామ్యానికి రుజువు మరియు డిఎఓలో ఓటింగ్ అధికారాన్ని ఇస్తుంది. లక్షణాతీత టోకెన్ లేదా పంపిణీ ఆధారిత సభ్యత కింద సంపాదకులకు స్వామ్యాధికారం కలిగివేయడం లేదు, సంకేతణాతీత డైఓలు చేయలేదు. ప్రమాణం ఆదాయపు చేయబడలేదు, మార్చబడలేదు లేక రహపూర్వకముగా; DAO సభ్యులు పాలనపై మూల్యనిర్ధారణ చేసుకోవాలని, అనుభవద్వారా ప్రమాణం సంపాదించాలి. ఆన్‌చైన్ ఓటింగ్ అనుమతిరహితం మరియు కాబోయే సభ్యులు DAOలో చేరడానికి స్వేచ్ఛగా ప్రతిపాదనలను సమర్పించవచ్చు మరియు వారి సహకారానికి బదులుగా బహుమతిగా ప్రతిష్ట మరియు టోకెన్‌లను స్వీకరించమని అభ్యర్థించవచ్చు. + +_సాధారణంగా ప్రోటోకాల్‌లు మరియు [డాప్స్](/glossary/#dapp) యొక్క వికేంద్రీకృత అభివృద్ధి మరియు పాలన కోసం ఉపయోగిస్తారు, అయితే స్వచ్ఛంద సంస్థలు, కార్మిక సమిష్టిలు, పెట్టుబడి క్లబ్‌లు మొదలైన విభిన్న సంస్థలకు కూడా ఇది బాగా సరిపోతుంది._ + +#### ఒక ప్రసిద్ధ ఉదాహరణ {#reputation-example} + +[DXdao](https://DXdao.eth.limo) – DXdao అనేది 2019 నుండి వికేంద్రీకృత ప్రోటోకాల్‌లు మరియు అప్లికేషన్‌లను నిర్మించి, పాలించే ఒక ప్రపంచ సార్వభౌమ సమిష్టి. ఇది నిధులను సమన్వయం చేయడానికి మరియు నిర్వహించడానికి ప్రతిష్ట-ఆధారిత పాలన మరియు [హోలోగ్రాఫిక్ ఏకాభిప్రాయాన్ని](/glossary/#holographic-consensus) ఉపయోగించుకుంది, అంటే దాని భవిష్యత్తు లేదా పాలనను ప్రభావితం చేయడంలోకి ఎవరూ కొనుక్కొని రాలేరు. + +## DAOలో చేరండి / ఒక DAOను ప్రారంభించండి {#join-start-a-dao} + +### ఒక DAOలో చేరండి {#join-a-dao} + +- [ఇతీరియము కమ్యూనిటీ DAOలు](/community/get-involved/#decentralized-autonomous-organizations-daos) +- [DAOHaus యొక్క DAOల జాబితా](https://app.daohaus.club/explore) +- [Tally.xyz యొక్క DAOల జాబితా](https://www.tally.xyz/explore) +- [DeGov.AI యొక్క DAOల జాబితా](https://apps.degov.ai/) + +### ఒక DAOను ప్రారంభించండి {#start-a-dao} + +- [DAOHausతో ఒక DAOను సమ్మన్ చేయండి](https://app.daohaus.club/summon) +- [Tallyతో ఒక గవర్నర్ DAOను ప్రారంభించండి](https://www.tally.xyz/get-started) +- [Aragon-పవర్డ్ DAOను సృష్టించండి](https://aragon.org/product) +- [ఒక కాలనీని ప్రారంభించండి](https://colony.io/) +- [DAOstack యొక్క హోలోగ్రాఫిక్ ఏకాభిప్రాయంతో ఒక DAOను సృష్టించండి](https://alchemy.daostack.io/daos/create) +- [DeGov లాంచర్‌తో ఒక DAOను ప్రారంభించండి](https://docs.degov.ai/integration/deploy) + +## మరింత సమాచారం {#further-reading} + +### DAO వ్యాసాలు {#dao-articles} + +- [DAO అంటే ఏమిటి?](https://aragon.org/dao) – [Aragon](https://aragon.org/) +- [హౌస్ ఆఫ్ DAOలు](https://wiki.metagame.wtf/docs/great-houses/house-of-daos) – [Metagame](https://wiki.metagame.wtf/) +- [DAO అంటే ఏమిటి మరియు అది దేనికి?](https://daohaus.substack.com/p/-what-is-a-dao-and-what-is-it-for) – [DAOhaus](https://daohaus.club/) +- [DAO-పవర్డ్ డిజిటల్ కమ్యూనిటీని ఎలా ప్రారంభించాలి](https://daohaus.substack.com/p/four-and-a-half-steps-to-start-a) – [DAOhaus](https://daohaus.club/) +- [DAO అంటే ఏమిటి?](https://coinmarketcap.com/alexandria/article/what-is-a-dao) – [Coinmarketcap](https://coinmarketcap.com) +- [హోలోగ్రాఫిక్ ఏకాభిప్రాయం అంటే ఏమిటి?](https://medium.com/daostack/holographic-consensus-part-1-116a73ba1e1c) - [DAOstack](https://daostack.io/) +- [DAOలు కార్పొరేషన్లు కావు: విటాలిక్ ద్వారా స్వయంప్రతిపత్తి గల సంస్థలలో వికేంద్రీకరణ యొక్క ప్రాముఖ్యత](https://vitalik.eth.limo/general/2022/09/20/daos.html) +- [DAOలు, DACలు, DAలు మరియు మరిన్ని: ఒక అసంపూర్ణ పరిభాష మార్గదర్శి](https://blog.ethereum.org/2014/05/06/daos-dacs-das-and-more-an-incomplete-terminology-guide) - [ఇతీరియము బ్లాగ్](https://blog.ethereum.org) + +### వీడియోలు {#videos} + +- [క్రిప్టోలో DAO అంటే ఏమిటి?](https://youtu.be/KHm0uUPqmVE) +- [ఒక DAO నగరాన్ని నిర్మించగలదా?](https://www.ted.com/talks/scott_fitsimones_could_a_dao_build_the_next_great_city) – [TED](https://www.ted.com/) + + + + diff --git a/public/content/translations/te/decentralized-identity/index.md b/public/content/translations/te/decentralized-identity/index.md new file mode 100644 index 00000000000..b810d5876f9 --- /dev/null +++ b/public/content/translations/te/decentralized-identity/index.md @@ -0,0 +1,218 @@ +--- +title: "వికేంద్రీకృత గుర్తింపు" +description: "వికేంద్రీకృత గుర్తింపు అంటే ఏమిటి మరియు అది ఎందుకు ముఖ్యమైనది?" +lang: te +template: use-cases +emoji: ":id:" +sidebarDepth: 2 +image: /images/eth-gif-cat.png +summaryPoint1: "పారంపరిక గుర్తు వ్యవస్థలు మీ గుర్తు ప్రదానం, పరిరక్షణ మరియు నియంత్రణను సేంద్రీకరించినవి." +summaryPoint2: "వికేంద్రీకృత గుర్తింపు కేంద్రీకృత మూడవ పక్షాలపై ఆధారపడటాన్ని తొలగిస్తుంది." +summaryPoint3: "క్రిప్టోద్వారా ధన్యవాదం, వాడుకరులు పునరావృతంనే మౌలికంగా జారుపుకొనే, కలిగే వాటిని నగలుగా ఉంచడానికి మరియు సర్టిఫికేషన్లను నియంత్రించడానికి సాధనాలను ఇప్పటికే కలిగి ఉన్నారు." +--- + +ఈ రోజు మీ జీవితంలోని ప్రతి అంశానికి గుర్తింపు ఆధారం. ఆన్‌లైన్ సేవలను ఉపయోగించడం, బ్యాంకు ఖాతా తెరవడం, ఎన్నికల్లో ఓటు వేయడం, ఆస్తి కొనుగోలు చేయడం, ఉపాధిని పొందడం-ఇవన్నీ మీ గుర్తింపును నిరూపించుకోవడం అవసరం. + +అయితే, సాంప్రదాయ గుర్తింపు నిర్వహణ వ్యవస్థలు చాలా కాలంగా కేంద్రీకృత మధ్యవర్తులపై ఆధారపడి ఉన్నాయి, వారు మీ గుర్తింపుదారులను మరియు [ధృవీకరణలను](/glossary/#attestation) జారీ చేస్తారు, కలిగి ఉంటారు మరియు నియంత్రిస్తారు. అంటే మీరు మీ గుర్తింపు సంబంధిత సమాచారాన్ని నియంత్రించలేరు లేదా వ్యక్తిగతంగా గుర్తించదగిన సమాచారం (PII) కి ఎవరికి యాక్సెస్ ఉందో మరియు ఈ పార్టీలకు ఎంత యాక్సెస్ ఉందో నిర్ణయించలేరు. + +ఈ సమస్యలను పరిష్కరించడానికి, మామూలుగా ఇతీరియము పబ్లిక్ బ్లాక్ చేయబడిన డిసెంట్రలైజ్ ఐడెంటిటీ సిస్టమ్లు ఉన్నాయి. వికేంద్రీకృత గుర్తింపు వ్యక్తులు వారి గుర్తింపు-సంబంధిత సమాచారాన్ని నిర్వహించడానికి అనుమతిస్తుంది. వికేంద్రీకృత గుర్తింపు పరిష్కారాలతో, _మీరు_ సేవా ప్రదాతలు లేదా ప్రభుత్వాల వంటి కేంద్ర అధికారులపై ఆధారపడకుండా గుర్తింపుదారులను సృష్టించవచ్చు మరియు మీ ధృవీకరణలను క్లెయిమ్ చేయవచ్చు మరియు కలిగి ఉండవచ్చు. + +## గుర్తింపు అంటే ఏమిటి? {#what-is-identity} + +గుర్తింపు అంటే ఒక వ్యక్తి యొక్క స్వీయ భావన, ప్రత్యేక లక్షణాల ద్వారా నిర్వచించబడింది. గుర్తింపు అనేది ఒక _వ్యక్తి_గా ఉండటాన్ని సూచిస్తుంది, అంటే, ఒక ప్రత్యేకమైన మానవ సంస్థ. గుర్తింపు అనేది సంస్థ లేదా అధికారం వంటి ఇతర మానవేతర సంస్థలను కూడా సూచిస్తుంది. + + + +## ఐడెంటిఫైయర్‌లు అంటే ఏమిటి? {#what-are-identifiers} + +ఐడెంటిఫైయర్ అనేది నిర్దిష్ట గుర్తింపు లేదా గుర్తింపులకు పాయింటర్‌గా పనిచేసే సమాచార భాగం. సాధారణ ఐడెంటిఫైయర్‌లలో ఇవి ఉన్నాయి: + +- పేరు +- సామాజిక భద్రత సంఖ్య/పన్ను ID సంఖ్య +- మొబైల్ నంబర్ +- పుట్టిన తేదీ మరియు ప్రాంతం ప్రజాస్వామ్యం +- డిజిటల్ గుర్తింపు ఆధారాలు, i.n., ఇమెయిల్ చిరునామాలు, వినియోగదారు పేర్లు, అవతారాలు + +ఐడెంటిఫైయర్‌ల యొక్క ఈ సాంప్రదాయ ఉదాహరణలు కేంద్ర సంస్థలచే జారీ చేయబడతాయి, నిర్వహించబడతాయి మరియు నియంత్రించబడతాయి. మీరు మీ పేరును మార్చడానికి మీ ప్రభుత్వానికి అనుమతి కావాలి లేదా మీరు ఒక సోషల్ మీడియా వ్యాపార నుండి మీ హ్యాండిల్ మార్చడానికి అనుమతి కావాలి. + +## వికేంద్రీకృత గుర్తింపు యొక్క ప్రయోజనాలు {#benefits-of-decentralized-identity} + +1. వికేంద్రీకృత గుర్తింపు సమాచారాన్ని గుర్తించడంలో వ్యక్తిగత నియంత్రణను పెంచుతుంది. కేంద్రీకృత ఆధారాధీన అధికారులు మరియు మూడామ పార్టీ సేవల నిర్భరించకుండా డిసెంట్రలైజ్ ఆయ్దారాలు మరియు దృఢీకరించి చేయవచ్చు. + +2. వికేంద్రీకృత గుర్తింపు పరిష్కారాలు వినియోగదారు గుర్తింపును ధృవీకరించడానికి మరియు నిర్వహించడానికి విశ్వాసరహిత, అతుకులు లేని మరియు గోప్యతను రక్షించే పద్ధతిని సులభతరం చేస్తాయి. + +3. వికేంద్రీకృత గుర్తింపు సాధన బ్లాక్‌చెయిన్ టెక్నాలజీ, ఇది వివిధ పార్టీల మధ్య నమ్మకాన్ని సృష్టిస్తుంది మరియు ధృవీకరణ యొక్క చెల్లుబాటును నిరూపించడానికి క్రిప్టోగ్రాఫిక్ హామీలను అందిస్తుంది. + +4. సాంఘిక గుర్తులు ప్రాధాన్యత ఉచితంగా ఉంచి, గుర్తింపు డేటాని వాటిని కనిపించుకుంటుంది. వినియోగదారులు ధృవీకరణలను మరియు గుర్తింపుదారులను మొబైల్ వాలెట్‌లో నిల్వ చేస్తారు మరియు వారి ఎంపిక ప్రకారం ఏ పార్టీతోనైనా పంచుకోవచ్చు. వికేంద్రీకృత ఐడెంటిఫైయర్‌లు మరియు ధృవీకరణలు జారీ చేసే సంస్థ యొక్క డేటాబేస్‌లోకి లాక్ చేయబడవు. + +5. వికేంద్రీకృత గుర్తింపు అభివృద్ధి చెందుతున్న [జీరో-కనౌలెడ్జి](/glossary/#zk-proof) టెక్నాలజీలతో బాగా పనిచేయాలి, ఇది వ్యక్తులు తాము ఏదైనా కలిగి ఉన్నారని లేదా చేశారని నిరూపించడానికి వీలు కల్పిస్తుంది. పేర్కొనుటకు సంఘటన యొక్క డేటాబేసులో ప్రమాణికరణలు మరియు ప్రమాణాల నిలువలు లాక్ అయన్నపుడు కునుబఒక్కరంగా ఉండవచ్చు. + +6. వికేంద్రీకృత గుర్తింపు [యాంటీ-సిబిల్](/glossary/#anti-sybil) యంత్రాంగాలను ఒక వ్యక్తి ఒక వ్యవస్థను గేమ్ చేయడానికి లేదా స్పామ్ చేయడానికి బహుళ మానవులుగా నటిస్తున్నప్పుడు గుర్తించడానికి వీలు కల్పిస్తుంది. + +## వికేంద్రీకృత గుర్తింపు వినియోగ-కేసులు {#decentralized-identity-use-cases} + +వికేంద్రీకృత గుర్తింపు అనేక సంభావ్య ఉపయోగ సందర్భాలను కలిగి ఉంది: + +### 1. యూనివర్సల్ లాగిన్‌లు {#universal-dapp-logins} + +డిసెంట్రలైజ్డ్ ఐడెంటిటీ పాస్వర్డ్-ఆధారిత లాగిన్లను డిసెంట్రలైజ్డ్ ఆధారీత సాధారణికి మార్చడంలో సహాయపడవచ్చు. (సోర్స్: డిసెంట్రలైజ్డ్ ఆధారీతమైన దురుకుతుల సమాధానం). సర్వీస్ ప్రొవైడర్ వినియోగదారులకు ధృవీకరణను జారీ చేయవచ్చు, దానిని ఇతీరియము వాలెట్‌లో నిల్వ చేయవచ్చు. ఒక ఉదాహరణ ధృవీకరణ [NFT](/glossary/#nft) కావచ్చు, ఇది హోల్డర్‌కు ఆన్‌లైన్ కమ్యూనిటీకి ప్రాప్యతను ఇస్తుంది. + +[Ethereum తో సైన్-ఇన్](https://siwe.xyz/) ఫంక్షన్ సర్వర్‌లు వినియోగదారు యొక్క Ethereum ఖాతాను నిర్ధారించడానికి మరియు వారి ఖాతా చిరునామా నుండి అవసరమైన ధృవీకరణను పొందేందుకు వీలు కల్పిస్తుంది. దీని అర్థం వినియోగదారులు పొడవైన పాస్‌వర్డ్‌లను గుర్తుంచుకోవాల్సిన అవసరం లేకుండా ప్లాట్‌ఫారమ్‌లు మరియు వెబ్‌సైట్‌లను యాక్సెస్ చేయవచ్చు మరియు వినియోగదారులకు ఆన్‌లైన్ అనుభవాన్ని మెరుగుపరుస్తుంది. + +### 2. KYC ప్రమాణీకరణ {#kyc-authentication} + +అనేక ఆన్‌లైన్ సేవలను ఉపయోగించడం కోసం వ్యక్తులు డ్రైవింగ్ లైసెన్స్ లేదా జాతీయ పాస్‌పోర్ట్ వంటి ధృవీకరణ మరియు ఆధారాలను అందించాలి. కానీ ఈ దృష్టికోణం సమస్యాత్మకం కాబట్టి ప్రైవేట్ వాడుక సమాచారాన్ని హాని పడుతుంది మరియు సేవా ప్రదాతలు ఆథెస్టేషన్ యొక్క ప్రామాణికతను ధృవీకరించలేరు. + +వికేంద్రీకృత గుర్తింపు కంపెనీలు సాంప్రదాయ [Know-Your-Customer (KYC)](https://en.wikipedia.org/wiki/Know_your_customer) ప్రక్రియలను దాటవేయడానికి మరియు ధృవీకరించదగిన ఆధారాల ద్వారా వినియోగదారు గుర్తింపులను ప్రమాణీకరించడానికి అనుమతిస్తుంది. ఇది గుర్తింపు నిర్వహణ ఖర్చును తగ్గిస్తుంది మరియు నకిలీ డాక్యుమెంటేషన్ వినియోగాన్ని నిరోధిస్తుంది. + +### 3. ఓటింగ్ మరియు ఆన్‌లైన్ కమ్యూనిటీలు {#voting-and-online-communities} + +ఆన్‌లైన్ వోటింగ్ మరియు సోషల్ మీడియా ఎర్రలా వినియోగిస్తున్నాయి మానిజీకరణ గురించి రచ్చ అప్పులు. ఆన్‌లైన్ ఓటింగ్ పథకాలు అవకతవకలకు గురవుతాయి, ముఖ్యంగా హానికరమైన వ్యక్తులు ఓటు వేయడానికి తప్పుడు గుర్తింపులను సృష్టించినట్లయితే. వ్యక్తులను ఆన్‌చెయిన్ ధృవీకరణలను సమర్పించమని కోరడం ఆన్‌లైన్ ఓటింగ్ ప్రక్రియల సమగ్రతను మెరుగుపరుస్తుంది. + +డిసెంట్రలైజ్డ్ ఐడెంటిటి కేటాయించిన విధంగా వాటికి వాని అకౌంట్స్ ఉంటే ఆన్‌లైన్ సముదాయాలను నకిలీలు ఉనికిరాక చేయగలిగే సహాయం చేస్తుంది. ఉదాహరణకు, ప్రతి వినియోగదారుడు తమ గుర్తింపును Ethereum నేమ్ సర్వీస్ వంటి ఆన్‌చెయిన్ గుర్తింపు వ్యవస్థను ఉపయోగించి ప్రమాణీకరించవలసి రావచ్చు, ఇది బాట్‌ల అవకాశాన్ని తగ్గిస్తుంది. + +### 4. యాంటీ-సిబిల్ రక్షణ {#sybil-protection} + +[క్వాడ్రాటిక్ ఓటింగ్](/glossary/#quadratic-voting)ను ఉపయోగించే గ్రాంట్-ఇచ్చే అప్లికేషన్‌లు [సిబిల్ దాడులకు](/glossary/#sybil-attack) గురయ్యే అవకాశం ఉంది, ఎందుకంటే ఎక్కువ మంది వ్యక్తులు దాని కోసం ఓటు వేసినప్పుడు గ్రాంట్ విలువ పెరుగుతుంది, ఇది వినియోగదారులను వారి సహకారాలను అనేక గుర్తింపుల మధ్య విభజించడానికి ప్రోత్సహిస్తుంది. ప్రతి పాలనకారులు నిజంగా మనిషి అవుతుండటానికి ప్రమాణించడానికి ప్రత్యేక రహస్య సమాచారాన్ని లేకపోతే, డిసెంట్రలైజ్డ్ ఐడెంటిటీలు ఇది నివారిస్తాయి. + +### 5. జాతీయ మరియు ప్రభుత్వ ID {#national-and-government-id} + +ప్రభుత్వాలు వికేంద్రీకృత గుర్తింపు సూత్రాలను ఉపయోగించి జాతీయ IDలు, పాస్‌పోర్ట్‌లు లేదా డ్రైవర్ లైసెన్స్‌లు వంటి ప్రాథమిక గుర్తింపు పత్రాలను Ethereumలో ధృవీకరించదగిన ఆధారాలుగా జారీ చేయవచ్చు, ఆన్‌లైన్ గుర్తింపు ధృవీకరణలో మోసం మరియు ఫోర్జరీని తగ్గించడానికి ప్రామాణికత యొక్క బలమైన క్రిప్టోగ్రాఫిక్ హామీలను అందిస్తాయి. పౌరులు ఈ ధృవీకరణలను వారి వ్యక్తిగత [వాలెట్‌లో](/wallets/) నిల్వ చేసుకోవచ్చు మరియు వారి గుర్తింపు, వయస్సు లేదా ఓటు హక్కును నిరూపించుకోవడానికి వాటిని ఉపయోగించవచ్చు. + +ఈ నమూనా ఎంపిక చేసుకున్న బహిర్గతానికి అనుమతిస్తుంది, ప్రత్యేకించి [జీరో-కనౌలెడ్జి ప్రూఫ్ (ZKP)](/zero-knowledge-proofs/) గోప్యతా సాంకేతికతతో కలిపినప్పుడు. ఉదాహరణకు, ఒక పౌరుడు తన ఖచ్చితమైన పుట్టిన తేదీని వెల్లడించకుండా వయస్సు-పరిమిత సేవను యాక్సెస్ చేయడానికి 18 ఏళ్లు పైబడినట్లు క్రిప్టోగ్రాఫికల్‌గా నిరూపించగలడు, ఇది సాంప్రదాయ ID కంటే ఎక్కువ గోప్యతను అందిస్తుంది. + +#### 💡కేస్ స్టడీ: Ethereumలో భూటాన్ జాతీయ డిజిటల్ ID (NDI) {#case-study-bhutan-ndi} + +- భూటాన్ యొక్క దాదాపు 800,000 పౌరులకు ధృవీకరించదగిన గుర్తింపు ఆధారాలకు ప్రాప్యతను అందిస్తుంది +- అక్టోబర్ 2025లో పాలీగాన్ నెట్‌వర్క్ నుండి [Ethereum మెయిన్‌నెట్‌కు](https://www.bhutanndi.com/article/bhutan-adopts-ethereum-for-national-identity-a-new-chapter-in-digital-sovereignty_2d0c7ec2-5605-4c42-b258-bd9361ae8878) వలస వెళ్ళింది +- మార్చి 2025 నాటికి [234,000 కంటే ఎక్కువ డిజిటల్ IDలు](https://www.blockchain-council.org/blockchain/bhutan-uses-blockchain-in-digital-id-project/) జారీ చేయబడ్డాయి + +భూటాన్ రాజ్యం తన జాతీయ డిజిటల్ ఐడెంటిటీ (NDI) వ్యవస్థను అక్టోబర్ 2025లో Ethereumకు [వలస](https://www.bhutanndi.com/article/bhutan-adopts-ethereum-for-national-identity-a-new-chapter-in-digital-sovereignty_2d0c7ec2-5605-4c42-b258-bd9361ae8878) తీసుకువచ్చింది. వికేంద్రీకృత గుర్తింపు మరియు స్వీయ-సార్వభౌమ గుర్తింపు సూత్రాలపై నిర్మించబడిన, భూటాన్ యొక్క NDI వ్యవస్థ డిజిటల్‌గా సంతకం చేసిన ఆధారాలను నేరుగా పౌరుడి వ్యక్తిగత వాలెట్‌కు జారీ చేయడానికి వికేంద్రీకృత ఐడెంటిఫైయర్‌లు మరియు ధృవీకరించదగిన ఆధారాలను ఉపయోగిస్తుంది. Ethereumలో ఈ ఆధారాల యొక్క క్రిప్టోగ్రాఫిక్ రుజువులను యాంకర్ చేయడం ద్వారా, సిస్టమ్ అవి ప్రామాణికమైనవని, ట్యాంపర్-ప్రూఫ్ అని మరియు కేంద్ర అధికారాన్ని ప్రశ్నించకుండా ఏ పార్టీ అయినా ధృవీకరించగలదని నిర్ధారిస్తుంది. + +సిస్టమ్ యొక్క ఆర్కిటెక్చర్ [జీరో-కనౌలెడ్జి ప్రూఫ్ (ZKP)](/zero-knowledge-proofs/) సాంకేతికత వాడకం ద్వారా గోప్యతకు ప్రాధాన్యత ఇస్తుంది. "ఎంపిక చేసుకున్న బహిర్గతం" యొక్క ఈ అమలు, పౌరులు తమ పూర్తి ID నంబర్ లేదా ఖచ్చితమైన పుట్టిన తేదీ వంటి అంతర్లీన వ్యక్తిగత డేటాను వెల్లడించకుండా సేవలను యాక్సెస్ చేయడానికి నిర్దిష్ట వాస్తవాలను (ఉదా., "నాకు 18 ఏళ్లు పైబడ్డాయి" లేదా "నేను ఒక పౌరుడిని") నిరూపించుకోవడానికి అనుమతిస్తుంది. ఇది సురక్షితమైన, వినియోగదారు-కేంద్రీకృత మరియు గోప్యతను కాపాడే జాతీయ ID వ్యవస్థ కోసం Ethereum యొక్క శక్తివంతమైన, వాస్తవ-ప్రపంచ వినియోగాన్ని ప్రదర్శిస్తుంది. + +#### 💡కేస్ స్టడీ: Ethereum [లేయర్ 2](/layer-2/) ZKSync ఎరాలో బ్యూనస్ ఎయిర్స్ నగరం యొక్క క్వార్క్‌ఐడి {#case-study-buenos-aires-quarkid} + +- ప్రారంభంలో [3.6 మిలియన్లకు పైగా వినియోగదారులకు](https://buenosaires.gob.ar/innovacionytransformaciondigital/miba-con-tecnologia-quarkid-la-ciudad-de-buenos-aires-incorporo) వికేంద్రీకృత గుర్తింపు ఆధారాలను జారీ చేసింది +- క్వార్క్‌ఐడి అనేది UN సుస్థిర అభివృద్ధి లక్ష్యాల కింద [డిజిటల్ పబ్లిక్ గుడ్](https://www.digitalpublicgoods.net/r/quarkid)గా గుర్తించబడిన ఒక ఓపెన్-సోర్స్ ప్రోటోకాల్ +- ప్రోటోకాల్ నగరం సొంతం కాని "[ప్రభుత్వం-వినియోగదారుగా](https://buenosaires.gob.ar/innovacionytransformaciondigital/miba-con-tecnologia-quarkid-la-ciudad-de-buenos-aires-incorporo)" నమూనాను నొక్కి చెబుతుంది, ఇది పౌరులకు పూర్తి డేటా యాజమాన్యం మరియు గోప్యతను ఇస్తుంది + +2024లో, బ్యూనస్ ఎయిర్స్ నగర ప్రభుత్వం (GCBA) miBAలో GCBA యొక్క ఇన్నోవేషన్ అండ్ డిజిటల్ ట్రాన్స్‌ఫార్మేషన్ సెక్రటేరియట్ నిర్మించిన ఓపెన్-సోర్స్ "డిజిటల్ ట్రస్ట్ ఫ్రేమ్‌వర్క్" అయిన క్వార్క్‌ఐడిని ఏకీకృతం చేసింది, ఇది నివాసితులు ప్రభుత్వ సేవలు మరియు అధికారిక పత్రాలను యాక్సెస్ చేయడానికి నగరం యొక్క అధికారిక యాప్. ప్రారంభంలో, miBA యొక్క 3.6 మిలియన్ల కంటే ఎక్కువ వినియోగదారులకు వికేంద్రీకృత డిజిటల్ గుర్తింపులు జారీ చేయబడ్డాయి, ఇవి పౌరసత్వ ఆధారాలు, జనన, వివాహ మరియు మరణ ధృవీకరణ పత్రాలు, పన్ను రికార్డులు, టీకా రికార్డులు మరియు మరిన్నింటితో సహా ధృవీకరించదగిన డిజిటల్ పత్రాలు మరియు సర్టిఫికెట్లను ఆన్‌చెయిన్‌లో నిర్వహించడానికి మరియు పంచుకోవడానికి వీలు కల్పిస్తాయి. + +Ethereum [లేయర్ 2](/layer-2/) నెట్‌వర్క్ ZKSync Eraలో నిర్మించబడిన, QuarkID సిస్టమ్ పౌరులు తమ మొబైల్ పరికరాల ద్వారా పీర్-టు-పీర్ వ్యక్తిగత ఆధారాలను ధృవీకరించడానికి ZKP టెక్నాలజీని ఉపయోగిస్తుంది—అనవసరమైన వ్యక్తిగత డేటాను బహిర్గతం చేయకుండా. ఈ ప్రోగ్రామ్ "ప్రభుత్వం-వినియోగదారుగా" నమూనాను హైలైట్ చేస్తుంది, దీనిలో GCBA కేంద్రీకృత యజమానిగా కాకుండా, ఓపెన్-సోర్స్, ఇంటర్‌ఆపరబుల్ క్వార్క్‌ఐడి ప్రోటోకాల్ యొక్క ఒక వినియోగదారుగా పనిచేస్తుంది. ఈ ZKP-ప్రారంభించబడిన ఆర్కిటెక్చర్ ఒక కీలక గోప్యతా లక్షణాన్ని అందిస్తుంది: ఏ మూడవ-పక్షం, GCBA కూడా, ఒక పౌరుడు తమ ఆధారాలను ఎలా, ఎప్పుడు లేదా ఎందుకు ఉపయోగిస్తున్నాడో ట్రాక్ చేయలేదు. ఈ విజయవంతమైన కార్యక్రమం పౌరులకు పూర్తి స్వీయ-సార్వభౌమ గుర్తింపు మరియు వారి సున్నితమైన డేటాపై నియంత్రణను అందిస్తుంది, ఇవన్నీ Ethereum యొక్క ప్రపంచవ్యాప్తంగా పంపిణీ చేయబడిన నెట్‌వర్క్ ద్వారా భద్రపరచబడ్డాయి. + +## ధృవీకరణలు ఏమిటి? {#what-are-attestations} + +ధృవీకరణ అనేది ఒక ఎంటిటీ మరొక ఎంటిటీ గురించి చేసిన దావా. మీరు యునైటెడ్ స్టేట్స్‌లో నివసిస్తుంటే, డిపార్ట్‌మెంట్ ఆఫ్ మోటర్ వెహికల్స్ (ఒక సంస్థ) మీకు జారీ చేసిన డ్రైవింగ్ లైసెన్స్ మీకు (మరొక సంస్థ) కారు నడపడానికి చట్టబద్ధంగా అనుమతించబడిందని ధృవీకరిస్తుంది. + +ధృవీకరణలు ఐడెంటిఫైయర్‌లకు భిన్నంగా ఉంటాయి. ఒక ధృవీకరణ ఒక నిర్దిష్ట గుర్తింపును సూచించడానికి గుర్తింపుదారులను _కలిగి ఉంటుంది_ మరియు ఈ గుర్తింపుకు సంబంధించిన ఒక లక్షణం గురించి ఒక దావా చేస్తుంది. కాబట్టి, మీ డ్రైవింగ్ లైసెన్స్‌లో ఐడెంటిఫైయర్‌లు (పేరు, పుట్టిన తేదీ, చిరునామా) ఉన్నాయి కానీ డ్రైవింగ్ చేయడానికి మీ చట్టపరమైన హక్కుకు సంబంధించిన ధృవీకరణ కూడా. + +### వికేంద్రీకృత ఐడెంటిఫైయర్‌లు అంటే ఏమిటి? {#what-are-decentralized-identifiers} + +మీ చట్టపరమైన పేరు లేదా ఇమెయిల్ చిరునామా వంటి సాంప్రదాయ ఐడెంటిఫైయర్‌లు మూడవ పక్షాలు-ప్రభుత్వాలు మరియు ఇమెయిల్ ప్రదాతలపై ఆధారపడతాయి. డిసెంట్రలైజ్డ్ ఐడిఎస్ (DIDs) అందుబాటులో ఉన్నప్పుడు అన్ని కేంద్రీకృత యూనిట్ల ద్వారా అయిన ప్రవేశు, నిర్వహణ, లేదా నియంత్రణ రూపంలో ప్రణాళితులదుగా లేకుండా ఉంటాయి. + +వికేంద్రీకృత ఐడెంటిఫైయర్‌లు వ్యక్తులచే జారీ చేయబడతాయి, నిర్వహించబడతాయి మరియు నియంత్రించబడతాయి. ఒక [Ethereum ఖాతా](/glossary/#account) వికేంద్రీకృత గుర్తింపుకు ఒక ఉదాహరణ. మీరు ఎవరి నుండి అనుమతి లేకుండా మరియు సెంట్రల్ రిజిస్ట్రీలో వాటిని నిల్వ చేయవలసిన అవసరం లేకుండా మీకు కావలసినన్ని ఖాతాలను సృష్టించవచ్చు. + +వికేంద్రీకృత గుర్తింపుదారులు పంపిణీ చేయబడిన లెడ్జర్‌లు ([బ్లాక్‌చెయిన్‌లు](/glossary/#blockchain)) లేదా [పీర్-టు-పీర్ నెట్‌వర్క్‌ల](/glossary/#peer-to-peer-network)లో నిల్వ చేయబడతాయి. ఇది DIDలను [ప్రపంచవ్యాప్తంగా ప్రత్యేకమైనవిగా, అధిక లభ్యతతో పరిష్కరించగలిగేవిగా, మరియు క్రిప్టోగ్రాఫికల్‌గా ధృవీకరించగలిగేవిగా](https://w3c-ccg.github.io/did-primer/) చేస్తుంది. వికేంద్రీకృత ఐడెంటిఫైయర్ వ్యక్తులు, సంస్థలు లేదా ప్రభుత్వ సంస్థలతో సహా వివిధ సంస్థలతో అనుబంధించబడవచ్చు. + +## వికేంద్రీకృత ఐడెంటిఫైయర్‌లను ఏది సాధ్యం చేస్తుంది? {#what-makes-decentralized-identifiers-possible} + +### 1. పబ్లిక్ కీ క్రిప్టోగ్రఫీ {#public-key-cryptography} + +పబ్లిక్-కీ క్రిప్టోగ్రఫీ అనేది ఒక సంస్థ కోసం [పబ్లిక్ కీ](/glossary/#public-key) మరియు [ప్రైవేట్ కీ](/glossary/#private-key)ని రూపొందించే ఒక సమాచార భద్రతా కొలత. వినియోగదారు గుర్తింపులను ప్రామాణీకరించడానికి మరియు డిజిటల్ ఆస్తుల యాజమాన్యాన్ని నిరూపించడానికి బ్లాక్‌చెయిన్ నెట్‌వర్క్‌లలో పబ్లిక్-కీ [క్రిప్టోగ్రఫీ](/glossary/#cryptography) ఉపయోగించబడుతుంది. + +ఇతీరియము ఖాతా వంటి కొన్ని వికేంద్రీకృత ఐడెంటిఫైయర్‌లు పబ్లిక్ మరియు ప్రైవేట్ కీలను కలిగి ఉంటాయి. పబ్లిక్ కీ ఖాతా నియంత్రకను గుర్తించేది, ప్రైవేట్ కీలు ఈ ఖాతా కోసం సందేశాలను సాక్షరీంచడానికి మరియు దారిచేయడానికి ఉపయోగించవచ్చు. పబ్లిక్ కీ క్రిప్టోగ్రఫీ సంస్థలను ప్రామాణీకరించడానికి మరియు మోసపూరిత గుర్తింపుల వాడకాన్ని నివారించడానికి అవసరమైన రుజువులను అందిస్తుంది, అన్ని క్లెయిమ్‌లను ధృవీకరించడానికి [క్రిప్టోగ్రాఫిక్ సంతకాలను](https://andersbrownworth.com/blockchain/public-private-keys/) ఉపయోగిస్తుంది. + +### 2. వికేంద్రీకృత డేటాస్టోర్‌లు {#decentralized-datastores} + +బ్లాక్‌చెయిన్ ధృవీకరించదగిన డేటా రిజిస్ట్రీగా పనిచేస్తుంది: బహిరంగ, విశ్వసనీయమైన మరియు వికేంద్రీకృత సమాచార రిపోజిటరీ. పబ్లిక్ బ్లాక్‌చెయిన్‌ల ఉపస్థితి కేంద్రీకృత నియంత్రణాలలో గురించిన అంచనాలు సంగ్రహించడానికి అవసరం తొలగిస్తుంది. + +ఎవరైనా ఒక సాంకేతిక ఐడింటిఫైయర్ నిర్ధారించడానికి అవసరం ఉంటే, వీడు బ్లాక్‌చెయిన్‌లో సంబంధిత పబ్లిక్ కీని శోధించవచ్చు. ఇది థర్డ్ పార్టీలు ప్రామాణీకరించాల్సిన సంప్రదాయ ఐడెంటిఫైయర్‌లకు భిన్నంగా ఉంటుంది. + +## వికేంద్రీకృత ఐడెంటిఫైయర్‌లు మరియు ధృవీకరణలు వికేంద్రీకృత గుర్తింపును ఎలా ప్రారంభిస్తాయి? {#how-decentralized-identifiers-and-attestations-enable-decentralized-identity} + +వికేంద్రీకృత గుర్తింపు అనేది గుర్తింపు-సంబంధిత సమాచారం స్వీయ-నియంత్రణ, ప్రైవేట్ మరియు పోర్టబుల్‌గా ఉండాలి, వికేంద్రీకృత ఐడెంటిఫైయర్‌లు మరియు ధృవీకరణలు ప్రాథమిక బిల్డింగ్ బ్లాక్‌లుగా ఉండాలి. + +వికేంద్రీకృత గుర్తింపు సందర్భంలో, ధృవీకరణలు ([ధృవీకరించదగిన ఆధారాలు](https://www.w3.org/TR/vc-data-model/) అని కూడా పిలుస్తారు) జారీచేసేవారు చేసిన ట్యాంపర్-ప్రూఫ్, క్రిప్టోగ్రాఫికల్‌గా ధృవీకరించదగిన క్లెయిమ్‌లు. ప్రతి ధృవీకరణ లేదా ధృవీకరించదగిన ఆధారాలు ఒక ఎంటిటీ (i.n., ఒక సంస్థ) సమస్యలు వారి DIDతో అనుబంధించబడతాయి. + +DIDలు బ్లాక్‌చెయిన్‌లో నిల్వ చేయబడినందున, ఇతీరియములో జారీ చేసిన వారి DIDని క్రాస్-చెక్ చేయడం ద్వారా ఎవరైనా ధృవీకరణ యొక్క చెల్లుబాటును ధృవీకరించవచ్చు. ముఖ్యంగా, ఇతీరియము బ్లాక్‌చెయిన్ నిర్దిష్ట ఎంటిటీలతో అనుబంధించబడిన DIDల ధృవీకరణను ప్రారంభించే గ్లోబల్ డైరెక్టరీ వలె పనిచేస్తుంది. + +డిసెంట్రలైజ్డ్ ఐడెంటిఫైయర్లు ప్రామాణికాలు స్వయం నియంత్రణ మరియు తనిఖీకరణ సాధ్యంగా ఉన్నాయి. ప్రకటన నిర్వచన కారిస్తిన రూపు లేకపోయిన తరువాత, హోల్డర్ ఎలాంటి విధమైనండి ప్రమాణాన్ని మరియు చెల్లించుకునే యొక్క ప్రమాణాన్ని సదాచారం తో కలిగి ఉంది. + +వికేంద్రీకృత గుర్తింపు ద్వారా వ్యక్తిగత సమాచారం యొక్క గోప్యతను రక్షించడానికి వికేంద్రీకృత ఐడెంటిఫైయర్‌లు కూడా కీలకమైనవి. ఉదాహరణకు, ఒక వ్యక్తి ప్రమాణం సలహా (డ్రైవర్స్ లైసెన్స్) సమర్పిస్తే, ధృవీకరించే పక్షం ప్రమాణాన్ని వాలిపై తనిఖీ చేయాలని కావటం లేదు. బదులుగా, ధృవీకరణదారుకు ధృవీకరణ ప్రామాణికత యొక్క క్రిప్టోగ్రాఫిక్ హామీలు మరియు రుజువు చెల్లుబాటులో ఉందో లేదో నిర్ధారించడానికి జారీ చేసే సంస్థ యొక్క గుర్తింపు మాత్రమే అవసరం. + +## వికేంద్రీకృత గుర్తింపులో ధృవీకరణల రకాలు {#types-of-attestations-in-decentralized-identity} + +ఈథిరియమ్-ఆధారిత గుర్తింపు పర్యావరణ వ్యవస్థలో ధృవీకరణ సమాచారం ఎలా నిల్వ చేయబడుతుంది మరియు తిరిగి పొందబడుతుంది అనేది సాంప్రదాయ గుర్తింపు నిర్వహణ నుండి భిన్నంగా ఉంటుంది. వికేంద్రీకృత గుర్తింపు వ్యవస్థలలో ధృవీకరణను జారీ చేయడానికి, నిల్వ చేయడానికి మరియు ధృవీకరించడానికి వివిధ విధానాల యొక్క అవలోకనం ఇక్కడ ఉంది: + +### ఆఫ్‌చెయిన్ ధృవీకరణలు {#offchain-attestations} + +ధృవీకరణలను ఆన్‌చెయిన్‌లో నిల్వ చేయడంలో ఒక ఆందోళన ఏమిటంటే, అవి వ్యక్తులు గోప్యంగా ఉంచాలనుకునే సమాచారాన్ని కలిగి ఉండవచ్చు. ఇతీరియము బ్లాక్‌చైన్ యొక్క ప్రజా స్వరూపం అందానుంది, ఇది అంగీకరించే మొత్తాన్ని భద్రపరచడమేమో కాకుండా సంచులను సంగ్రహించుకునే వ్యాపారంలో ఆకర్షకం కాకుండా ఉంటుంది. + +పరిష్కారం ఏమిటంటే, డిజిటల్ వాలెట్లలో ఆఫ్‌చెయిన్‌లో వినియోగదారులచే ఉంచబడిన ధృవీకరణలను జారీ చేయడం, కానీ ఆన్‌చెయిన్‌లో నిల్వ చేయబడిన జారీచేసేవారి DIDతో సంతకం చేయబడింది. ఈ ధృవీకరణలు [JSON వెబ్ టోకెన్‌లుగా](https://en.wikipedia.org/wiki/JSON_Web_Token) ఎన్‌కోడ్ చేయబడతాయి మరియు జారీచేసేవారి డిజిటల్ సంతకాన్ని కలిగి ఉంటాయి—ఇది ఆఫ్‌చెయిన్ క్లెయిమ్‌ల సులభ ధృవీకరణకు అనుమతిస్తుంది. + +ఆఫ్‌చెయిన్ ధృవీకరణలను వివరించడానికి ఇక్కడ ఒక ఊహాత్మక దృశ్యం ఉంది: + +1. ఒక విశ్వవిద్యాలయం (ప్రవీణుడు) ఒక దృఢీకరణ (డిజిటల్ అకడమిక్ సర్టిఫికేట్) సృష్టిస్తుంది, తన కీలులతో సంత్వరించిన తరువాత అది బాబుకు (వ్యక్తిత్వ యజమాని) ఇవ్వబడుతుంది. + +2. బాబ్ ఉద్యోగం కోసం దరఖాస్తు చేసుకున్నాడు మరియు తన విద్యార్హతలను యజమానికి నిరూపించుకోవాలనుకుంటున్నాడు, కాబట్టి అతను తన మొబైల్ వాలెట్ నుండి ధృవీకరణను పంచుకుంటాడు. కంపెనీ (ధృవీకరణదారు) జారీచేసేవారి DIDని (అంటే, ఇతీరియములో దాని పబ్లిక్ కీ) తనిఖీ చేయడం ద్వారా ధృవీకరణ యొక్క చెల్లుబాటును నిర్ధారించవచ్చు. + +### నిరంతర ప్రాప్యతతో ఆఫ్‌చెయిన్ ధృవీకరణలు {#offchain-attestations-with-persistent-access} + +ఈ ఏర్పాటు ప్రకారం ధృవీకరణలు JSON ఫైల్‌లుగా మార్చబడతాయి మరియు ఆఫ్‌చెయిన్‌లో (ఆదర్శంగా IPFS లేదా Swarm వంటి [వికేంద్రీకృత క్లౌడ్ నిల్వ](/developers/docs/storage/) ప్లాట్‌ఫారమ్‌లో) నిల్వ చేయబడతాయి. అయితే, JSON ఫైల్ యొక్క [హాష్](/glossary/#hash) ఆన్‌చెయిన్‌లో నిల్వ చేయబడుతుంది మరియు ఆన్‌చెయిన్ రిజిస్ట్రీ ద్వారా ఒక DIDకి లింక్ చేయబడుతుంది. అనుబంధిత DID ధృవీకరణ జారీ చేసినవారు లేదా గ్రహీత కావచ్చు. + +ఈ విధానం క్లెయిమ్‌ల సమాచారాన్ని గుప్తీకరించి మరియు ధృవీకరించదగినదిగా ఉంచుతూ, బ్లాక్‌చెయిన్-ఆధారిత నిలకడను పొందేందుకు ధృవీకరణలను అనుమతిస్తుంది. ఇది కూడా ఎంపికగా దరఖాస్తు చేయడానికి అవకాశం అందిస్తుంది కాబట్టి ఖాళీ కీ యజమాని సంరక్షణ ప్రమాణంలో ఉండగలిగిన సమాచారాన్ని డిక్రిప్ట్ చేయగలడంతో మరియు వ్యక్తి ప్రమాణికిని అందించగలడం కూడా అనుమతిస్తుంది. + +### ఆన్‌చెయిన్ ధృవీకరణలు {#onchain-attestations} + +ఆన్‌చెయిన్ ధృవీకరణలు Ethereum బ్లాక్‌చెయిన్‌లోని [స్మార్ట్ కాంట్రాక్టులలో](/glossary/#smart-contract) ఉంచబడతాయి. స్మార్ట్ కాంట్రాక్ట్ (రిజిస్ట్రీగా పనిచేస్తుంది) సంబంధిత ఆన్‌చెయిన్ వికేంద్రీకృత ఐడెంటిఫైయర్‌కు (పబ్లిక్ కీ) ఒక ధృవీకరణను మ్యాప్ చేస్తుంది. + +ఆన్‌చెయిన్ ధృవీకరణలు ఆచరణలో ఎలా పనిచేస్తాయో చూపించడానికి ఇక్కడ ఒక ఉదాహరణ ఉంది: + +1. ఒక కంపెనీ (XYZ Corp) స్మార్ట్ కాంట్రాక్టును ఉపయోగించి యాజమాన్య వాటాలను విక్రయించాలని యోచిస్తోంది, అయితే నేపథ్య తనిఖీని పూర్తి చేసిన కొనుగోలుదారులను మాత్రమే కోరుకుంటుంది. + +2. XYZ Corp సంస్థ Ethereumలో ఆన్‌చెయిన్ ధృవీకరణలను జారీ చేయడానికి నేపథ్య తనిఖీలను నిర్వహించే కంపెనీని కలిగి ఉండవచ్చు. ఈ ధృవీకరణ వ్యక్తి ఎటువంటి వ్యక్తిగత సమాచారాన్ని బహిర్గతం చేయకుండా నేపథ్య తనిఖీని ఆమోదించినట్లు ధృవీకరిస్తుంది. + +3. స్మార్ట్ కాంట్రాక్ట్ విక్రయించే షేర్‌లు స్క్రీన్ చేయబడిన కొనుగోలుదారుల గుర్తింపు కోసం రిజిస్ట్రీ ఒప్పందాన్ని తనిఖీ చేయగలవు, షేర్‌లను కొనుగోలు చేయడానికి ఎవరు అనుమతించబడతారో లేదో స్మార్ట్ కాంట్రాక్ట్ నిర్ణయించడం సాధ్యపడుతుంది. + +### సోల్‌బౌండ్ టోకెన్‌లు మరియు గుర్తింపు {#soulbound} + +[సోల్‌బౌండ్ టోకెన్‌లను](https://vitalik.eth.limo/general/2022/01/26/soulbound.html) ([బదిలీ చేయలేని NFTలు](/glossary/#nft)) ఒక నిర్దిష్ట వాలెట్‌కు ప్రత్యేకమైన సమాచారాన్ని సేకరించడానికి ఉపయోగించవచ్చు. ఇది విజయాలను సూచించే టోకెన్‌లను (ఉదా. కొన్ని నిర్దిష్ట ఆన్‌లైన్ కోర్సును పూర్తి చేయడం లేదా గేమ్‌లో థ్రెషోల్డ్ స్కోర్‌ను అధిగమించడం) లేదా కమ్యూనిటీ భాగస్వామ్యాన్ని కలిగి ఉండే నిర్దిష్ట Ethereum చిరునామాకు కట్టుబడి ఉండే ప్రత్యేకమైన ఆన్‌చెయిన్ గుర్తింపును సమర్థవంతంగా సృష్టిస్తుంది. + +## వికేంద్రీకృత గుర్తింపును ఉపయోగించండి {#use-decentralized-identity} + +వికేంద్రీకృత గుర్తింపు పరిష్కారాలకు పునాదిగా Ethereumని ఉపయోగించి అనేక ప్రతిష్టాత్మక ప్రాజెక్ట్‌లు ఉన్నాయి: + +- **[Ethereum Name Service (ENS)](https://ens.domains/)** - _ఆన్‌చెయిన్, మెషిన్-రీడబుల్ ఐడెంటిఫైయర్‌ల కోసం ఒక వికేంద్రీకృత నామకరణ వ్యవస్థ, ఉదాహరణకు, Ethereum వాలెట్ చిరునామాలు, కంటెంట్ హాష్‌లు మరియు మెటాడేటా._ +- **[Sign in with Ethereum (SIWE)](https://siwe.xyz/)** - _Ethereum ఖాతాలతో ప్రామాణీకరణ కోసం ఓపెన్ స్టాండర్డ్._ +- **[SpruceID](https://www.spruceid.com/)** - _వినియోగదారులు మూడవ-పక్ష సేవలపై ఆధారపడకుండా Ethereum ఖాతాలు మరియు ENS ప్రొఫైల్‌లతో డిజిటల్ గుర్తింపును నియంత్రించడానికి అనుమతించే ఒక వికేంద్రీకృత గుర్తింపు ప్రాజెక్ట్._ +- **[Ethereum Attestation Service (EAS)](https://attest.org/)** - _దేని గురించైనా ఆన్‌చెయిన్ లేదా ఆఫ్‌చెయిన్ ధృవీకరణలను చేయడానికి ఒక వికేంద్రీకృత లెడ్జర్/ప్రోటోకాల్._ +- **[Proof of Humanity](https://www.proofofhumanity.id)** - _ప్రూఫ్ ఆఫ్ హ్యుమానిటీ (లేదా PoH) అనేది Ethereumపై నిర్మించిన ఒక సామాజిక గుర్తింపు ధృవీకరణ వ్యవస్థ._ +- **[BrightID](https://www.brightid.org/)** - _సామాజిక గ్రాఫ్ యొక్క సృష్టి మరియు విశ్లేషణ ద్వారా గుర్తింపు ధృవీకరణను సంస్కరించడానికి ప్రయత్నిస్తున్న ఒక వికేంద్రీకృత, ఓపెన్-సోర్స్ సామాజిక గుర్తింపు నెట్‌వర్క్._ +- **[walt.id](https://walt.id)** — _స్వయం-సార్వభౌమ గుర్తింపు మరియు NFTలు/SBTలను ప్రభావితం చేయడానికి డెవలపర్‌లు మరియు సంస్థలను అనుమతించే ఓపెన్ సోర్స్ వికేంద్రీకృత గుర్తింపు మరియు వాలెట్ మౌలిక సదుపాయాలు._ +- **[Veramo](https://veramo.io/)** - _వారి అప్లికేషన్‌లలో క్రిప్టోగ్రాఫికల్‌గా ధృవీకరించదగిన డేటాను ఎవరైనా సులభంగా ఉపయోగించుకునేలా చేసే ఒక JavaScript ఫ్రేమ్‌వర్క్._ + +## మరింత సమాచారం {#further-reading} + +### వ్యాసాలు {#articles} + +- [బ్లాక్‌చెయిన్ వినియోగ కేసులు: డిజిటల్ గుర్తింపులో బ్లాక్‌చెయిన్](https://consensys.net/blockchain-use-cases/digital-identity/) — _ConsenSys_ +- [Ethereum ERC725 అంటే ఏమిటి? బ్లాక్‌చెయిన్‌లో స్వీయ-సార్వభౌమ గుర్తింపు నిర్వహణ](https://cryptoslate.com/what-is-erc725-self-sovereign-identity-management-on-the-blockchain/) — _సామ్ టౌన్_ +- [డిజిటల్ గుర్తింపు సమస్యను బ్లాక్‌చెయిన్ ఎలా పరిష్కరించగలదు](https://time.com/6142810/proof-of-humanity/) — _ఆండ్రూ ఆర్. చౌ_ +- [వికేంద్రీకృత గుర్తింపు అంటే ఏమిటి మరియు మీరు ఎందుకు పట్టించుకోవాలి?](https://web3.hashnode.com/what-is-decentralized-identity) — _ఇమ్మాన్యుయేల్ అవోసికా_ +- [వికేంద్రీకృత గుర్తింపునకు పరిచయం](https://walt.id/white-paper/digital-identity) — _డొమినిక్ బెరోన్_ + +### వీడియోలు {#videos} + +- [వికేంద్రీకృత గుర్తింపు (బోనస్ లైవ్‌స్ట్రీమ్ సెషన్)](https://www.youtube.com/watch?v=ySHNB1za_SE&t=539s) — _ఆండ్రియాస్ ఆంటోనోపౌలోస్ ద్వారా వికేంద్రీకృత గుర్తింపుపై ఒక గొప్ప వివరణాత్మక వీడియో_ +- [సెరామిక్, IDX, రియాక్ట్, మరియు 3ID కనెక్ట్‌తో Ethereumతో సైన్ ఇన్ మరియు వికేంద్రీకృత గుర్తింపు](https://www.youtube.com/watch?v=t9gWZYJxk7c) — _నాదర్ డాబిట్ ద్వారా వారి Ethereum వాలెట్‌ను ఉపయోగించి వినియోగదారు ప్రొఫైల్‌ను సృష్టించడం, చదవడం మరియు నవీకరించడం కోసం ఒక గుర్తింపు నిర్వహణ వ్యవస్థను నిర్మించడంపై YouTube ట్యుటోరియల్_ +- [BrightID - Ethereumపై వికేంద్రీకృత గుర్తింపు](https://www.youtube.com/watch?v=D3DbMFYGRoM) — _Ethereum కోసం వికేంద్రీకృత గుర్తింపు పరిష్కారం అయిన BrightIDని చర్చిస్తున్న బ్యాంక్‌లెస్ పాడ్‌కాస్ట్ ఎపిసోడ్_ +- [ఆఫ్‌చెయిన్ ఇంటర్నెట్: వికేంద్రీకృత గుర్తింపు & ధృవీకరించదగిన ఆధారాలు](https://www.youtube.com/watch?v=EZ_Bb6j87mg) — ఎవిన్ మెక్‌ముల్లెన్ ద్వారా EthDenver 2022 ప్రదర్శన +- [ధృవీకరించదగిన ఆధారాలు వివరించబడ్డాయి](https://www.youtube.com/watch?v=ce1IdSr-Kig) - టామినో బామన్ ద్వారా డెమోతో YouTube వివరణాత్మక వీడియో + +### కమ్యూనిటీలు {#communities} + +- [GitHubలో ERC-725 అలయన్స్](https://github.com/erc725alliance) — _Ethereum బ్లాక్‌చెయిన్‌లో గుర్తింపును నిర్వహించడానికి ERC725 ప్రమాణానికి మద్దతుదారులు_ +- [EthID డిస్కార్డ్ సర్వర్](https://discord.com/invite/ZUyG3mSXFD) — _Sign-in with Ethereum మరియు Ethereum ఫాలో ప్రోటోకాల్‌పై పనిచేస్తున్న ఉత్సాహకులు మరియు డెవలపర్‌ల కోసం కమ్యూనిటీ_ +- [వెరామో ల్యాబ్స్](https://discord.gg/sYBUXpACh4) — _అప్లికేషన్‌ల కోసం ధృవీకరించదగిన డేటా కోసం ఒక ఫ్రేమ్‌వర్క్‌ను రూపొందించడంలో సహకరిస్తున్న డెవలపర్‌ల సంఘం_ +- [walt.id](https://discord.com/invite/AW8AgqJthZ) — _వివిధ పరిశ్రమలలో వికేంద్రీకృత గుర్తింపు వినియోగ కేసులపై పనిచేస్తున్న డెవలపర్‌లు మరియు బిల్డర్‌ల కమ్యూనిటీ_ diff --git a/public/content/translations/te/defi/index.md b/public/content/translations/te/defi/index.md index 88a86b57474..2760f4f92f6 100644 --- a/public/content/translations/te/defi/index.md +++ b/public/content/translations/te/defi/index.md @@ -1,19 +1,19 @@ --- -title: డిసెంట్రలైజ్డ్ ఫైనాన్స్ (DeFi) -metaTitle: DeFi అంటే ఏమిటి? | డిసెంట్రలైజ్డ్ ఫైనాన్స్ యొక్క ప్రయోజనాలు మరియు ఉపయోగం -description: ఇతీరియములో DeFi యొక్క అవలోకనం +title: "డిసెంట్రలైజ్డ్ ఫైనాన్స్ (DeFi)" +metaTitle: "DeFi అంటే ఏమిటి? | డిసెంట్రలైజ్డ్ ఫైనాన్స్ యొక్క ప్రయోజనాలు మరియు ఉపయోగం" +description: "ఇతీరియములో DeFi యొక్క అవలోకనం" lang: te template: use-cases emoji: ":money_with_wings:" image: /images/use-cases/defi.png -alt: లెగో ఇటుకలతో తయారు చేసిన ఇతీరియము లోగో. +alt: "లెగో ఇటుకలతో తయారు చేసిన ఇతీరియము లోగో." sidebarDepth: 2 -summaryPoint1: ప్రస్తుత ఆర్థిక వ్యవస్థకు ప్రపంచ, బహిరంగ ప్రత్యామ్నాయం. -summaryPoint2: రుణం తీసుకోవడానికి, పొదుపు చేయడానికి, పెట్టుబడి పెట్టడానికి, వ్యాపారం చేయడానికి మరియు మరెన్నో మిమ్మల్ని అనుమతించే ఉత్పత్తులు. -summaryPoint3: ఓపెన్ సోర్స్ టెక్నాలజీ ఆధారంగా ఎవరైనా ప్రోగ్రామ్ చేయవచ్చు. +summaryPoint1: "ప్రస్తుత ఆర్థిక వ్యవస్థకు ప్రపంచ, బహిరంగ ప్రత్యామ్నాయం." +summaryPoint2: "రుణం తీసుకోవడానికి, పొదుపు చేయడానికి, పెట్టుబడి పెట్టడానికి, వ్యాపారం చేయడానికి మరియు మరెన్నో మిమ్మల్ని అనుమతించే ఉత్పత్తులు." +summaryPoint3: "ఓపెన్ సోర్స్ టెక్నాలజీ ఆధారంగా ఎవరైనా ప్రోగ్రామ్ చేయవచ్చు." --- -DeFi అనేది ఇంటర్నెట్ యుగం కోసం రూపొందించబడిన బహిరంగ మరియు ప్రపంచ ఆర్థిక వ్యవస్థ - అపారదర్శక, కఠినంగా నియంత్రించబడే మరియు దశాబ్దాల నాటి అవస్థాపన మరియు ప్రక్రియలచే కలిసి ఉండే వ్యవస్థకు ప్రత్యామ్నాయం. ఇది మీ డబ్బుపై మీకు నియంత్రణ మరియు దృశ్యమానతను అందిస్తుంది. ఇది మీ స్థానిక కరెన్సీ లేదా బ్యాంకింగ్ ఎంపికలకు గ్లోబల్ మార్కెట్లు మరియు ప్రత్యామ్నాయాలను మీకు బహిర్గతం చేస్తుంది. DeFi ఉత్పత్తులు ఇంటర్నెట్ కనెక్షన్‌ను కలిగి ఉన్న ఎవరికైనా ఆర్థిక సేవలను అందిస్తాయి మరియు అవి వారి వినియోగదారులచే ఎక్కువగా స్వంతం మరియు నిర్వహించబడతాయి. ఇప్పటివరకు పది బిలియన్ల డాలర్ల విలువైన క్రిప్టో DeFi అప్లికేషన్‌ల ద్వారా ప్రవహించింది మరియు అది ప్రతిరోజూ పెరుగుతూనే ఉంది. +DeFi అనేది ఇంటర్నెట్ యుగం కోసం రూపొందించబడిన బహిరంగ మరియు ప్రపంచ ఆర్థిక వ్యవస్థ - అపారదర్శక, కఠినంగా నియంత్రించబడే మరియు దశాబ్దాల నాటి అవస్థాపన మరియు ప్రక్రియలచే కలిసి ఉండే వ్యవస్థకు ప్రత్యామ్నాయం. ఇది మీ డబ్బుపై మీకు నియంత్రణ మరియు దృశ్యమానతను అందిస్తుంది. ఇది మీ స్థానిక కరెన్సీ లేదా బ్యాంకింగ్ ఎంపికలకు గ్లోబల్ మార్కెట్లు మరియు ప్రత్యామ్నాయాలను మీకు బహిర్గతం చేస్తుంది. DeFi ఉత్పత్తులు ఇంటర్నెట్ కనెక్షన్‌ను కలిగి ఉన్న ఎవరికైనా ఆర్థిక సేవలను అందిస్తాయి మరియు అవి వారి వినియోగదారులచే ఎక్కువగా స్వంతం మరియు నిర్వహించబడతాయి. ఇప్పటివరకు, పది బిలియన్ల డాలర్ల విలువైన క్రిప్టో DeFi అప్లికేషన్‌ల ద్వారా ప్రవహించింది మరియు అది ప్రతిరోజూ పెరుగుతోంది. ## డీఫై అంటే ఏమిటి? {#what-is-defi} @@ -23,7 +23,7 @@ DeFi అనేది ఆర్థిక ఉత్పత్తులు మరి -## DeFi vs ట్రెడిషనల్ ఫైనాన్స్ {#defi-vs-tradfi} +## DeFi వర్సెస్ ట్రెడిషనల్ ఫైనాన్స్ {#defi-vs-tradfi} DeFi యొక్క సామర్థ్యాన్ని చూడటానికి ఉత్తమమైన మార్గాలలో ఒకటి ఈ రోజు ఉన్న సమస్యలను అర్థం చేసుకోవడం. @@ -38,14 +38,14 @@ DeFi యొక్క సామర్థ్యాన్ని చూడటాన ### ఒక పోలిక {#defi-comparison} -| DeFi | సాంప్రదాయ ఫైనాన్స్ | -| --------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -| మీ డబ్బు మీ చేతిలో ఉంటుంది. | మీ డబ్బును కంపెనీల వద్ద ఉంచుతారు. | -| మీ డబ్బు ఎక్కడికి వెళ్తుందో మరియు అది ఎలా ఖర్చు చేయబడుతుందో మీరు నియంత్రించవచ్చు. | ప్రమాదకరమైన రుణగ్రహీతలకు రుణాలు ఇవ్వడం వంటి మీ డబ్బును దుర్వినియోగం చేయకుండా మీరు కంపెనీలను విశ్వసించాలి. | -| నిమిషాల్లో నిధుల బదిలీలు జరుగుతాయి. | మాన్యువల్ ప్రక్రియల కారణంగా చెల్లింపులకు రోజులు పట్టవచ్చు. | -| లావాదేవీ కార్యకలాపాలు మారుపేరుగా ఉంటాయి. | ఆర్థిక కార్యకలాపాలు మీ గుర్తింపుతో గట్టిగా జతచేయబడతాయి. | -| DeFi ఎవరికైనా అందుబాటులో ఉంటుంది. | ఫైనాన్షియల్ సర్వీసెస్ ఉపయోగించడానికి దరఖాస్తు చేసుకోవాలి. | -| మార్కెట్లు ఎప్పుడూ తెరిచే ఉంటాయి. | ఉద్యోగులకు విరామం అవసరం కావడంతో మార్కెట్లు మూతపడ్డాయి. | +| DeFi | సాంప్రదాయ ఫైనాన్స్ | +| ------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| మీ డబ్బు మీ చేతిలో ఉంటుంది. | మీ డబ్బును కంపెనీల వద్ద ఉంచుతారు. | +| మీ డబ్బు ఎక్కడికి వెళ్తుందో మరియు అది ఎలా ఖర్చు చేయబడుతుందో మీరు నియంత్రించవచ్చు. | ప్రమాదకరమైన రుణగ్రహీతలకు రుణాలు ఇవ్వడం వంటి మీ డబ్బును దుర్వినియోగం చేయకుండా మీరు కంపెనీలను విశ్వసించాలి. | +| నిమిషాల్లో నిధుల బదిలీలు జరుగుతాయి. | మాన్యువల్ ప్రక్రియల కారణంగా చెల్లింపులకు రోజులు పట్టవచ్చు. | +| లావాదేవీ కార్యకలాపాలు మారుపేరుగా ఉంటాయి. | ఆర్థిక కార్యకలాపాలు మీ గుర్తింపుతో గట్టిగా జతచేయబడతాయి. | +| DeFi ఎవరికైనా అందుబాటులో ఉంటుంది. | ఫైనాన్షియల్ సర్వీసెస్ ఉపయోగించడానికి దరఖాస్తు చేసుకోవాలి. | +| మార్కెట్లు ఎప్పుడూ తెరిచే ఉంటాయి. | ఉద్యోగులకు విరామం అవసరం కావడంతో మార్కెట్లు మూతపడ్డాయి. | | ఇది పారదర్శకతపై నిర్మించబడింది - ఎవరైనా ఉత్పత్తి యొక్క డేటాను చూడవచ్చు మరియు సిస్టమ్ ఎలా పనిచేస్తుందో తనిఖీ చేయవచ్చు. | ఆర్థిక సంస్థలు మూసివేసిన పుస్తకాలు: మీరు వారి రుణ చరిత్ర, వారి నిర్వహణ ఆస్తుల రికార్డు మరియు మొదలైన వాటిని చూడమని అడగలేరు. | @@ -60,13 +60,13 @@ DeFi యొక్క సామర్థ్యాన్ని చూడటాన -## ప్రోగ్రామబుల్ డబ్బు {#programmable-money} +## ప్రోగ్రామబుల్ మనీ {#programmable-money} -ఇది విచిత్రంగా అనిపిస్తుంది... "నేను నా డబ్బును ఎందుకు ప్రోగ్రామ్ చేయాలనుకుంటున్నాను"? ఏదేమైనా, ఇది ఎథేరియంలో టోకెన్ల యొక్క డిఫాల్ట్ లక్షణం మాత్రమే. ఎవరైనా లాజిక్ ను చెల్లింపుల్లో ప్రోగ్రామ్ చేయవచ్చు. తద్వారా ఆర్థిక సంస్థలు అందించే సేవలతో కలిపి బిట్ కాయిన్ నియంత్రణ, భద్రతను పొందవచ్చు. ఇది బిట్ కాయిన్తో మీరు చేయలేని క్రిప్టోకరెన్సీలతో రుణాలు మరియు రుణాలు, చెల్లింపులను షెడ్యూల్ చేయడం, ఇండెక్స్ ఫండ్లలో పెట్టుబడి పెట్టడం మరియు మరెన్నో చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. +ఇది వింతగా అనిపిస్తుంది... "నేను నా డబ్బును ఎందుకు ప్రోగ్రామ్ చేయాలనుకుంటున్నాను"? అయితే, ఇది ఇతీరియమ్‌లోని టోకెన్‌ల యొక్క కేవలం ఒక డిఫాల్ట్ ఫీచర్ కంటే ఎక్కువ. ఎవరైనా లాజిక్ ను చెల్లింపుల్లో ప్రోగ్రామ్ చేయవచ్చు. తద్వారా ఆర్థిక సంస్థలు అందించే సేవలతో కలిపి బిట్ కాయిన్ నియంత్రణ, భద్రతను పొందవచ్చు. ఇది బిట్ కాయిన్తో మీరు చేయలేని క్రిప్టోకరెన్సీలతో రుణాలు మరియు రుణాలు, చెల్లింపులను షెడ్యూల్ చేయడం, ఇండెక్స్ ఫండ్లలో పెట్టుబడి పెట్టడం మరియు మరెన్నో చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. - +
మీరు ఎథేరియంకు కొత్తగా ఉంటే ప్రయత్నించడానికి డీఫై అనువర్తనాల కోసం మా సూచనలను అన్వేషించండి.
DeFi యాప్‌లను అన్వేషించండి @@ -78,23 +78,23 @@ DeFi యొక్క సామర్థ్యాన్ని చూడటాన చాలా ఆర్థిక సేవలకు వికేంద్రీకృత ప్రత్యామ్నాయం ఉంది. కానీ ఎథేరియం పూర్తిగా కొత్త ఆర్థిక ఉత్పత్తులను సృష్టించడానికి అవకాశాలను కూడా సృష్టిస్తుంది. ఇది నిరంతరం పెరుగుతున్న జాబితా. -- [ప్రపంచవ్యాప్తంగా డబ్బును పంపండి](#send-money) +- [ప్రపంచవ్యాప్తంగా డబ్బు పంపండి](#send-money) - [ప్రపంచవ్యాప్తంగా డబ్బును స్ట్రీమ్ చేయండి](#stream-money) - [స్టేబుల్ కరెన్సీలను యాక్సెస్ చేయండి](#stablecoins) - [తాకట్టుతో నిధులను అప్పుగా తీసుకోండి](#lending) - [తాకట్టు లేకుండా రుణం తీసుకోండి](#flash-loans) - [క్రిప్టో పొదుపులను ప్రారంభించండి](#saving) -- [వాణిజ్య టోకెన్లు](#swaps) +- [టోకెన్లను ట్రేడ్ చేయండి](#swaps) - [మీ పోర్ట్‌ఫోలియోను పెంచుకోండి](#investing) - [మీ ఆలోచనలకు నిధులు సమకూర్చండి](#crowdfunding) -- [బీమా కొనండి](#insurance) +- [భీమా కొనండి](#insurance) - [మీ పోర్ట్‌ఫోలియోను నిర్వహించండి](#aggregators) -### ప్రపంచవ్యాప్తంగా డబ్బును పంపండి {#send-money} +### ప్రపంచవ్యాప్తంగా వేగంగా డబ్బు పంపండి {#send-money} -బ్లాక్ చెయిన్ గా, ఎథేరియం సురక్షితమైన మరియు ప్రపంచ మార్గంలో లావాదేవీలను పంపడానికి రూపొందించబడింది. బిట్ కాయిన్ మాదిరిగానే, ఎథేరియం ప్రపంచవ్యాప్తంగా డబ్బు పంపడం ఇమెయిల్ పంపినంత సులభం చేస్తుంది. మీ గ్రహీత యొక్క [ENS పేరు](/glossary/#ens) (bob.eth వంటివి) లేదా మీ వాలెట్ నుండి వారి ఖాతా చిరునామాను నమోదు చేయండి మరియు మీ చెల్లింపు నిమిషాల్లో (సాధారణంగా) నేరుగా వారికి వెళుతుంది. చెల్లింపులను పంపడానికి లేదా స్వీకరించడానికి, మీకు [వాలెట్](/wallets/) అవసరం. +బ్లాక్ చెయిన్ గా, ఎథేరియం సురక్షితమైన మరియు ప్రపంచ మార్గంలో లావాదేవీలను పంపడానికి రూపొందించబడింది. బిట్ కాయిన్ మాదిరిగానే, ఎథేరియం ప్రపంచవ్యాప్తంగా డబ్బు పంపడం ఇమెయిల్ పంపినంత సులభం చేస్తుంది. కేవలం మీ గ్రహీత యొక్క [ENS పేరు](/glossary/#ens) (bob.eth వంటివి) లేదా మీ వాలెట్ నుండి వారి ఖాతా చిరునామాను నమోదు చేయండి మరియు మీ చెల్లింపు నిమిషాల్లో (సాధారణంగా) నేరుగా వారికి వెళుతుంది. చెల్లింపులను పంపడానికి లేదా స్వీకరించడానికి, మీకు [వాలెట్](/wallets/) అవసరం. పేమెంట్ డాప్ లు చూడండి @@ -104,7 +104,7 @@ DeFi యొక్క సామర్థ్యాన్ని చూడటాన మీరు ఎథేరియం ద్వారా డబ్బును స్ట్రీమ్ చేయవచ్చు. ఇది మీరు ఎవరికైనా వారి జీతాన్ని సెకనులో చెల్లించడానికి అనుమతిస్తుంది, వారికి అవసరమైనప్పుడల్లా వారి డబ్బుకు ప్రాప్యతను ఇస్తుంది. లేదా స్టోరేజ్ లాకర్ లేదా ఎలక్ట్రిక్ స్కూటర్ వంటి వాటిని సెకనుకు అద్దెకు తీసుకోండి. -మరియు మీరు [ETH](/glossary/#ether)ని పంపడం లేదా ప్రసారం చేయకూడదనుకుంటే, దాని విలువ ఎంత మారవచ్చు అనే కారణంగా, Ethereumలో ప్రత్యామ్నాయ కరెన్సీలు ఉన్నాయి: [stablecoins](/glossary/#stablecoin). +మరియు మీరు దాని విలువ ఎంతగా మారగలదో అన్న కారణంగా [ETH](/glossary/#ether)ని పంపడానికి లేదా స్ట్రీమ్ చేయడానికి ఇష్టపడకపోతే, ఇతీరియములో ప్రత్యామ్నాయ కరెన్సీలు ఉన్నాయి: [స్టేబుల్‌కాయిన్‌లు](/glossary/#stablecoin). @@ -120,7 +120,7 @@ DeFi యొక్క సామర్థ్యాన్ని చూడటాన -### రుణం తీసుకోవడం {#lending} +### అప్పు తీసుకోవడం {#lending} వికేంద్రీకృత ప్రొవైడర్ల నుండి రుణం తీసుకోవడం రెండు ప్రధాన రకాలుగా వస్తుంది. @@ -133,23 +133,23 @@ DeFi యొక్క సామర్థ్యాన్ని చూడటాన వికేంద్రీకృత రుణదాతను ఉపయోగించడం వల్ల చాలా ప్రయోజనాలు ఉన్నాయి... -#### గోప్యతతో రుణం తీసుకోవడం {#borrowing-privacy} +#### గోప్యతతో అప్పు తీసుకోవడం {#borrowing-privacy} నేడు అప్పు ఇవ్వడం, అప్పు తీసుకోవడం అన్నీ సంబంధిత వ్యక్తుల చుట్టూనే తిరుగుతున్నాయి. రుణం ఇచ్చే ముందు మీరు రుణాన్ని తిరిగి చెల్లించే అవకాశం ఉందో లేదో బ్యాంకులు తెలుసుకోవాలి. -ఏ పార్టీ తమను తాము గుర్తించుకోవాల్సిన అవసరం లేకుండా వికేంద్రీకృత రుణాలు పనిచేస్తాయి. బదులుగా, రుణగ్రహీత వారి రుణాన్ని తిరిగి చెల్లించకపోతే రుణదాత స్వయంచాలకంగా అందుకునే పూచీకత్తును ఉంచాలి. కొంతమంది రుణదాతలు [NFTల](/glossary/#nft)ను కూడా అనుషంగికంగా అంగీకరిస్తారు. NFTలు ఒక పెయింటింగ్ వంటి ఒక ప్రత్యేకమైన ఆస్తికి ఒక దస్తావేజు. [NFTలపై మరింత సమాచారం](/nft/) +ఏ పార్టీ తమను తాము గుర్తించుకోవాల్సిన అవసరం లేకుండా వికేంద్రీకృత రుణాలు పనిచేస్తాయి. బదులుగా, రుణగ్రహీత వారి రుణాన్ని తిరిగి చెల్లించకపోతే రుణదాత స్వయంచాలకంగా అందుకునే పూచీకత్తును ఉంచాలి. కొంతమంది రుణదాతలు [NFTలను](/glossary/#nft) పూచీకత్తుగా కూడా స్వీకరిస్తారు. NFTలు ఒక పెయింటింగ్ వంటి ఒక ప్రత్యేకమైన ఆస్తికి ఒక దస్తావేజు. [NFTల గురించి మరింత](/nft/) ఇది క్రెడిట్ చెక్‌లు లేకుండా లేదా ప్రైవేట్ సమాచారాన్ని అందజేయకుండా డబ్బు తీసుకోవడానికి మిమ్మల్ని అనుమతిస్తుంది. -#### ప్రపంచ నిధులకు ప్రాప్యత {#access-global-funds} +#### ప్రపంచవ్యాప్త నిధులకు యాక్సెస్ {#access-global-funds} మీరు వికేంద్రీకృత రుణదాతను ఉపయోగించినప్పుడు, మీరు ఎంచుకున్న బ్యాంక్ లేదా సంస్థ యొక్క కస్టడీలో ఉన్న నిధులను మాత్రమే కాకుండా, ప్రపంచం నలుమూలల నుండి జమ చేసిన నిధులకు మీకు యాక్సెస్ ఉంటుంది. ఇది రుణాలను మరింత అందుబాటులోకి తెస్తుంది మరియు వడ్డీ రేట్లను మెరుగుపరుస్తుంది. #### పన్ను-సామర్థ్యాలు {#tax-efficiencies} -రుణం తీసుకోవడం వల్ల మీ ETHను (పన్ను విధించదగిన ఈవెంట్) విక్రయించాల్సిన అవసరం లేకుండానే మీకు అవసరమైన నిధులకు యాక్సెస్‌ను పొందవచ్చు. బదులుగా, మీరు స్టేబుల్‌కాయిన్ రుణం కోసం ETHను అనుషంగికంగా ఉపయోగించవచ్చు. ఇది మీకు అవసరమైన నగదు ప్రవాహాన్ని అందిస్తుంది మరియు మీ ETHను ఉంచుకోవడానికి మిమ్మల్ని అనుమతిస్తుంది. స్టేబుల్ కాయిన్స్ టోకెన్‌లు, ఇవి ETH వంటి విలువలో హెచ్చుతగ్గులకు లోను కానందున మీకు నగదు అవసరమైనప్పుడు వాటి కోసం చాలా ఉత్తమంగా ఉంటాయి. [స్టేబుల్‌కాయిన్‌లపై మరింత సమాచారం](#stablecoins) +రుణం తీసుకోవడం వల్ల మీ ETHను (పన్ను విధించదగిన ఈవెంట్) విక్రయించాల్సిన అవసరం లేకుండానే మీకు అవసరమైన నిధులకు యాక్సెస్‌ను పొందవచ్చు. బదులుగా, మీరు స్టేబుల్‌కాయిన్ రుణం కోసం ETHను అనుషంగికంగా ఉపయోగించవచ్చు. ఇది మీకు అవసరమైన నగదు ప్రవాహాన్ని అందిస్తుంది మరియు మీ ETHను ఉంచుకోవడానికి మిమ్మల్ని అనుమతిస్తుంది. స్టేబుల్ కాయిన్స్ టోకెన్‌లు, ఇవి ETH వంటి విలువలో హెచ్చుతగ్గులకు లోను కానందున మీకు నగదు అవసరమైనప్పుడు వాటి కోసం చాలా ఉత్తమంగా ఉంటాయి. [స్టేబుల్‌కాయిన్‌ల గురించి మరింత](#stablecoins) -#### ఫ్లాష్ లోన్స్ {#flash-loans} +#### ఫ్లాష్ లోన్‌లు {#flash-loans} ఫ్లాష్ లోన్‌లు వికేంద్రీకృత రుణాల యొక్క మరింత ప్రయోగాత్మక రూపం, ఇవి మీరు పూచీకత్తు లేకుండా లేదా ఏదైనా వ్యక్తిగత సమాచారాన్ని అందించకుండా రుణం తీసుకోవచ్చు. @@ -178,22 +178,22 @@ DeFi యొక్క సామర్థ్యాన్ని చూడటాన -### క్రిప్టోతో సేవ్ చేయడం ప్రారంభించండి {#saving} +### క్రిప్టోతో పొదుపు ప్రారంభించండి {#saving} -#### లెండింగ్ {#lending} +#### అప్పు ఇవ్వడం {#lending} మీరు మీ క్రిప్టోకు రుణం ఇవ్వడం ద్వారా దానిపై వడ్డీని సంపాదించవచ్చు మరియు నిజ సమయంలో మీ నిధులు వృద్ధి చెందడాన్ని చూడవచ్చు. ప్రస్తుతం వడ్డీ రేట్లు మీరు మీ స్థానిక బ్యాంక్‌లో పొందగలిగే దానికంటే చాలా ఎక్కువగా ఉన్నాయి (ఒకవేళ మీరు ఒకదాన్ని యాక్సెస్ చేయగలిగినంత అదృష్టవంతులైతే). ఒక ఉదాహరణ: -- మీరు Aave వంటి ఉత్పత్తికి మీ 100 Dai, ఒక [స్టేబుల్‌కాయిన్‌ను](/stablecoins/) అప్పుగా ఇస్తారు. +- మీరు Aave వంటి ఉత్పత్తికి మీ 100 Dai, ఒక [స్టేబుల్‌కాయిన్](/stablecoins/), ను అప్పుగా ఇస్తారు. - మీరు 100 Aave Daiను (aDai) అందుకుంటారు, ఇది మీ రుణం పొందిన Daiను సూచించే టోకెన్. -- వడ్డీ రేట్ల ఆధారంగా మీ aDai పెరుగుతుంది మరియు మీ వాలెట్‌లో మీ బ్యాలెన్స్ పెరగడాన్ని మీరు చూడవచ్చు. [APR](/glossary/#apr)పై ఆధారపడి, మీ వాలెట్ బ్యాలెన్స్ కొన్ని రోజులు లేదా గంటల తర్వాత 100.1234 వంటిది చదవబడుతుంది! +- వడ్డీ రేట్ల ఆధారంగా మీ aDai పెరుగుతుంది మరియు మీ వాలెట్‌లో మీ బ్యాలెన్స్ పెరగడాన్ని మీరు చూడవచ్చు. [APR](/glossary/#apr)పై ఆధారపడి, మీ వాలెట్ బ్యాలెన్స్ కొన్ని రోజుల లేదా గంటల తర్వాత 100.1234 లాగా ఉంటుంది! - మీరు ఎప్పుడైనా మీ aDai బ్యాలెన్స్‌కు సమానమైన సాధారణ Dai మొత్తాన్ని ఉపసంహరించుకోవచ్చు. లెండింగ్ డాప్‌లను చూడండి -#### నో లాస్ లాటరీలు {#no-loss-lotteries} +#### నష్టం-లేని లాటరీలు {#no-loss-lotteries} పూల్ టుగెదర్ వంటి నో లాస్ లాటరీలు డబ్బు ఆదా చేయడానికి ఒక సరదా మరియు వినూత్నమైన కొత్త మార్గం. @@ -206,19 +206,19 @@ DeFi యొక్క సామర్థ్యాన్ని చూడటాన పైనున్న రుణ ఉదాహరణలో వలె టిక్కెట్ డిపాజిట్‌లను అప్పుగా ఇవ్వడం ద్వారా వచ్చే వడ్డీ మొత్తం ద్వారా ప్రైజ్ పూల్ రూపొందించబడుతుంది. - పూల్ టుగెదర్ ప్రయత్నించండి + PoolTogether ప్రయత్నించండి -### ఎక్స్చేంజి టోకెన్లు {#swaps} +### టోకెన్ల మార్పిడి {#swaps} ఇథీరియంలో వేల సంఖ్యలో టోకెన్లు ఉన్నాయి. వికేంద్రీకృత ఎక్స్ఛేంజీలు (DEXలు) మీకు కావలసినప్పుడు వివిధ టోకెన్‌లను వ్యాపారం చేయడానికి మిమ్మల్ని అనుమతిస్తాయి. మీరు మీ ఆస్తుల నియంత్రణను ఎప్పటికీ వదులుకోరు. ఇది వేరే దేశాన్ని సందర్శించినప్పుడు కరెన్సీ మార్పిడిని ఉపయోగించడం లాంటిది. కానీ డీఫై వెర్షన్ ఎప్పుడూ క్లోజ్ కాలేదు. మార్కెట్‌లు సంవత్సరానికి 24/7, 365 రోజులు మరియు వ్యాపారాన్ని అంగీకరించడానికి ఎవరైనా ఎల్లప్పుడూ ఉంటారని సాంకేతికత హామీ ఇస్తుంది. ఉదాహరణకు, మీరు నష్టం లేని లాటరీ పూల్ టుగెదర్ (పైన వివరించినది) ఉపయోగించాలనుకుంటే, మీకు Dai లేదా USDC వంటి టోకెన్ అవసరం. ఈ DEXలు ఆ టోకెన్‌ల కోసం మీ ETHను ఇచ్చిపుచ్చుకోవడానికి మరియు మీరు పూర్తి చేసిన తర్వాత మళ్ళీ తిరిగి రావడానికి మిమ్మల్ని అనుమతిస్తాయి. - టోకెన్ ఎక్స్చేంజిని చూడండి + టోకెన్ ఎక్స్ఛేంజ్‌లను చూడండి @@ -242,7 +242,7 @@ DeFi యొక్క సామర్థ్యాన్ని చూడటాన దీనికి మంచి ఉదాహరణ [DeFi పల్స్ ఇండెక్స్ ఫండ్ (DPI)](https://defipulse.com/blog/defi-pulse-index/). ఎల్లప్పుడూ టాప్ DeFi టోకెన్లను కలిగి ఉండటానికి మీ పోర్ట్ఫోలియోను మార్కెట్ క్యాపిటలైజేషన్ ద్వారా ఆటోమేటిక్‌గా రీబ్యాలెన్స్ చేసే ఫండ్ ఇది. మీరు ఎటువంటి వివరాలను నిర్వహించాల్సిన అవసరం లేదు మరియు మీరు ఎప్పుడు కావాలంటే అప్పుడు ఫండ్ నుండి ఉపసంహరించుకోవచ్చు. - ఇన్వెస్ట్ మెంట్ డాప్స్ చూడండి + పెట్టుబడి డాప్స్‌ను చూడండి @@ -256,14 +256,14 @@ DeFi యొక్క సామర్థ్యాన్ని చూడటాన - ఉదాహరణకు, నిర్దిష్ట గడువులు మరియు కనిష్ట మొత్తాలను చేరుకోకుంటే నిధుల సమీకరణదారులు ఆటోమేటిక్ రీఫండ్‌లను సెటప్ చేయవచ్చు. - క్రౌడ్ ఫండింగ్ డాప్స్‌ను చూడండి + క్రౌడ్‌ఫండింగ్ డాప్స్‌ను చూడండి -#### క్వాడ్రాటిక్ నిధులు {#quadratic-funding} +#### క్వాడ్రాటిక్ ఫండింగ్ {#quadratic-funding} -ఇథీరియం అనేది ఓపెన్ సోర్స్ సాఫ్ట్‌వేర్ మరియు ఇప్పటివరకు చాలా పనికి కమ్యూనిటీ నిధులు సమకూర్చింది. ఇది ఆసక్తికరమైన కొత్త నిధుల సేకరణ మోడల్ వృద్ధికి దారితీసింది: క్వాడ్రాటిక్ ఫండింగ్. This has the potential to improve the way we fund all types of public goods in the future. +ఇథీరియం అనేది ఓపెన్ సోర్స్ సాఫ్ట్‌వేర్ మరియు ఇప్పటివరకు చాలా పనికి కమ్యూనిటీ నిధులు సమకూర్చింది. ఇది ఆసక్తికరమైన కొత్త నిధుల సేకరణ మోడల్ వృద్ధికి దారితీసింది: క్వాడ్రాటిక్ ఫండింగ్. భవిష్యత్తులో మనం అన్ని రకాల ప్రజా వస్తువులకు నిధులు సమకూర్చే విధానాన్ని మెరుగుపరచగల సామర్థ్యం దీనికి ఉంది. -Quadratic funding makes sure that the projects that receive the most funding are those with the most unique demand. In other words, projects that stand to improve the lives of the most people. ఇది ఎలా పని చేస్తుందో ఇక్కడ ఉంది: +క్వాడ్రాటిక్ ఫండింగ్ అనేది అత్యధిక నిధులను పొందే ప్రాజెక్టులు అత్యంత ప్రత్యేకమైన డిమాండ్ ఉన్నవిగా ఉండేలా చూస్తుంది. మరో మాటలో చెప్పాలంటే, అత్యధిక మంది ప్రజల జీవితాలను మెరుగుపరచగల ప్రాజెక్టులు. ఇది ఎలా పని చేస్తుందో ఇక్కడ ఉంది: 1. విరాళంగా ఇచ్చిన నిధుల సరిపోలే పూల్ ఉంది. 2. పబ్లిక్ ఫండింగ్ యొక్క రౌండ్ ప్రారంభమవుతుంది. @@ -278,14 +278,14 @@ Quadratic funding makes sure that the projects that receive the most funding are -### బీమా {#insurance} +### భీమా {#insurance} వికేంద్రీకృత బీమా అనేది బీమాను చౌకగా, వేగంగా చెల్లించడానికి మరియు మరింత పారదర్శకంగా చేయడానికి లక్ష్యం. మరింత ఆటోమేషన్‌తో, కవరేజ్ మరింత సరసమైనది మరియు చెల్లింపులు చాలా వేగంగా ఉంటాయి. మీ దావాను నిర్ణయించడానికి ఉపయోగించే డేటా పూర్తిగా పారదర్శకంగా ఉంటుంది. -ఇథీరియం ఉత్పత్తులు, ఏదైనా సాఫ్ట్‌వేర్ లాగా, బగ్‌లు మరియు దోపిడీలకు గురవుతాయి. కాబట్టి ప్రస్తుతం స్పేస్‌లోని చాలా బీమా ఉత్పత్తులు తమ వినియోగదారులను నిధుల నష్టం నుండి రక్షించడంపై దృష్టి సారించాయి. ఏదేమైనా, జీవితం మనపై విసిరే ప్రతిదానికీ కవరేజీని నిర్మించడం ప్రారంభించిన ప్రాజెక్ట్‌లు ఉన్నాయి. దీనికి మంచి ఉదాహరణ ఇథెరిస్క్ యొక్క క్రాప్ కవర్, ఇది కెన్యాలోని చిన్న హోల్డర్ రైతులను కరువులు మరియు వరదల నుండి [ప్రొటెక్ట్ చేయడమే లక్ష్యంగా పెట్టుకుంది](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc). వికేంద్రీకృత భీమా సాంప్రదాయ బీమా నుండి తరచుగా ధరను పొందుతున్న రైతులకు చౌకైన కవరేజీని అందిస్తుంది. +ఇథీరియం ఉత్పత్తులు, ఏదైనా సాఫ్ట్‌వేర్ లాగా, బగ్‌లు మరియు దోపిడీలకు గురవుతాయి. కాబట్టి ప్రస్తుతం స్పేస్‌లోని చాలా బీమా ఉత్పత్తులు తమ వినియోగదారులను నిధుల నష్టం నుండి రక్షించడంపై దృష్టి సారించాయి. ఏదేమైనా, జీవితం మనపై విసిరే ప్రతిదానికీ కవరేజీని నిర్మించడం ప్రారంభించిన ప్రాజెక్ట్‌లు ఉన్నాయి. దీనికి ఒక మంచి ఉదాహరణ Etherisc యొక్క క్రాప్ కవర్, ఇది [కెన్యాలోని చిన్న కమతాల రైతులను కరువు మరియు వరదల నుండి రక్షించడం](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc) లక్ష్యంగా పెట్టుకుంది. వికేంద్రీకృత భీమా సాంప్రదాయ బీమా నుండి తరచుగా ధరను పొందుతున్న రైతులకు చౌకైన కవరేజీని అందిస్తుంది. - బీమా డ్యాప్‌లను చూడండి + భీమా డాప్స్‌ను చూడండి @@ -302,7 +302,7 @@ Quadratic funding makes sure that the projects that receive the most funding are ## DeFi ఎలా పని చేస్తుంది? {#how-defi-works} -మధ్యవర్తులు అవసరం లేని సేవలను అందించడానికి DeFi క్రిప్టోకరెన్సీలు మరియు స్మార్ట్ కాంట్రాక్ట్‌లను ఉపయోగిస్తుంది. నేటి ఆర్థిక ప్రపంచంలో, ఆర్థిక సంస్థలు లావాదేవీలకు హామీదారులుగా పనిచేస్తాయి. ఇది ఈ సంస్థలకు అపారమైన శక్తిని ఇస్తుంది ఎందుకంటే మీ డబ్బు వాటి ద్వారా ప్రవహిస్తుంది. అంతేకాకుండా ప్రపంచవ్యాప్తంగా కోట్లాది మంది ప్రజలు బ్యాంక్ ఖాతాను కూడా యాక్సెస్ చేయలేరు. +మధ్యవర్తులు అవసరం లేని సేవలను అందించడానికి DeFi క్రిప్టోకరెన్సీలు మరియు స్మార్ట్ కాంట్రాక్ట్‌లను ఉపయోగిస్తుంది. నేటి ఆర్థిక ప్రపంచంలో, ఆర్థిక సంస్థలు లావాదేవీలకు హామీదారులుగా పనిచేస్తాయి. ఇది ఈ సంస్థలకు అపారమైన శక్తిని ఇస్తుంది ఎందుకంటే మీ డబ్బు వాటి ద్వారా ప్రవహిస్తుంది. అంతేకాక, ప్రపంచవ్యాప్తంగా వందల కోట్ల మంది ప్రజలు బ్యాంక్ ఖాతాను కూడా యాక్సెస్ చేయలేరు. DeFiలో, లావాదేవీలో ఆర్థిక సంస్థను స్మార్ట్ కాంట్రాక్ట్ భర్తీ చేస్తుంది. స్మార్ట్ కాంట్రాక్ట్ అనేది ఒక రకమైన ఇథీరియం ఖాతా, ఇది నిధులను కలిగి ఉంటుంది మరియు కొన్ని షరతుల ఆధారంగా వాటిని పంపవచ్చు/వాపసు చేయవచ్చు. లైవ్‌లో ఉన్నప్పుడు ఆ స్మార్ట్ కాంట్రాక్ట్‌ను ఎవరూ మార్చలేరు – ఇది ఎల్లప్పుడూ ప్రోగ్రామ్ చేయబడినట్లుగానే నడుస్తుంది. @@ -312,7 +312,7 @@ DeFiలో, లావాదేవీలో ఆర్థిక సంస్థన కోడ్‌ను చదవగలిగే ఇథీరియం కమ్యూనిటీలోని మరింత సాంకేతిక సభ్యులను విశ్వసించాల్సిన అవసరం ప్రస్తుతం ఉందని దీని అర్థం. ఓపెన్ సోర్స్ ఆధారిత కమ్యూనిటీ డెవలపర్‌లను అదుపులో ఉంచడంలో సహాయపడుతుంది, అయితే స్మార్ట్ కాంట్రాక్టులు సులభంగా చదవడం మరియు కోడ్ విశ్వసనీయతను నిరూపించడానికి ఇతర మార్గాలు అభివృద్ధి చేయబడినందున ఈ అవసరం కాలక్రమేణా తగ్గిపోతుంది. -## ఇథీరియం మరియు DeFi {#ethereum-and-defi} +## ఇతీరియము మరియు DeFi {#ethereum-and-defi} ఇథీరియం అనేక కారణాల వల్ల DeFiకు సరైన పునాది: @@ -324,36 +324,37 @@ DeFiలో, లావాదేవీలో ఆర్థిక సంస్థన మీరు DeFi గురించి లేయర్లలో ఆలోచించవచ్చు: 1. బ్లాక్‌చెయిన్ - ఇథీరియం లావాదేవీ చరిత్ర మరియు ఖాతాల స్థితిని కలిగి ఉంటుంది. -2. ఆస్తులు - [ETH](/what-is-ether/) మరియు ఇతర టోకెన్లు (కరెన్సీలు). -3. ప్రోటోకాల్‌లు - కార్యాచరణను అందించే [స్మార్ట్ కాంట్రాక్టులు](/glossary/#smart-contract), ఉదాహరణకు, ఆస్తుల వికేంద్రీకృత రుణం కోసం అనుమతించే సేవ. -4. [అప్లికేషన్‌లు](/apps/) – ప్రోటోకాల్‌లను నిర్వహించడానికి మరియు యాక్సెస్ చేయడానికి మేము ఉపయోగించే ఉత్పత్తులు. +2. ఆస్తులు – [ETH](/what-is-ether/) మరియు ఇతర టోకెన్లు (కరెన్సీలు). +3. ప్రోటోకాల్‌లు – కార్యాచరణను అందించే [స్మార్ట్ కాంట్రాక్ట్‌లు](/glossary/#smart-contract), ఉదాహరణకు, ఆస్తుల వికేంద్రీకృత రుణాన్ని అనుమతించే సేవ. +4. [అప్లికేషన్‌లు](/apps/) – ప్రోటోకాల్‌లను నిర్వహించడానికి మరియు యాక్సెస్ చేయడానికి మనం ఉపయోగించే ఉత్పత్తులు. -గమనిక: చాలా వరకు DeFi [ERC-20 ప్రమాణాన్ని](/glossary/#erc-20) ఉపయోగిస్తుంది. DeFi లో అప్లికేషన్లు ETH కోసం Wrapped ether (WETH) అనే వ్రాపర్‌ను ఉపయోగిస్తాయి. [Wrapped Ether గురించి మరింత తెలుసుకోండి](/wrapped-eth). +గమనిక: చాలా DeFi [ERC-20 ప్రమాణాన్ని](/glossary/#erc-20) ఉపయోగిస్తుంది. DeFi లో అప్లికేషన్లు ETH కోసం Wrapped ether (WETH) అనే వ్రాపర్‌ను ఉపయోగిస్తాయి. [ర్యాప్డ్ ఈథర్ గురించి మరింత తెలుసుకోండి](/wrapped-eth). -## DeFiను రూపొందించండి {#build-defi} +## DeFiని నిర్మించండి {#build-defi} DeFi అనేది ఓపెన్ సోర్స్ ఉద్యమం. డిఫై ప్రోటోకాల్‌లు మరియు అప్లికేషన్‌లు అన్నీ మీరు తనిఖీ చేయడానికి, ఫోర్క్ చేయడానికి మరియు ఇన్నోవేట్ చేయడానికి తెరవబడి ఉంటాయి. ఈ లేయర్డ్ స్టాక్ కారణంగా (అందరూ ఒకే బేస్ బ్లాక్‌చెయిన్ మరియు ఆస్తులను పంచుకుంటారు), ప్రత్యేకమైన కాంబో అవకాశాలను అన్‌లాక్ చేయడానికి ప్రోటోకాల్‌లను కలపవచ్చు మరియు సరిపోల్చవచ్చు. - డాప్‌లను నిర్మించడం గురించి మరింత + డాప్స్‌ను నిర్మించడం గురించి మరింత -## మరింత చదవడానికి {#further-reading} +## మరింత సమాచారం {#further-reading} ### DeFi డేటా {#defi-data} -- [DeFi ప్రైమ్](https://defiprime.com/) -- [DeFi లామా](https://defillama.com/) +- [DeFi Prime](https://defiprime.com/) +- [DeFi Llama](https://defillama.com/) -### డిఫై కథనాలు {#defi-articles} +### DeFi వ్యాసాలు {#defi-articles} -- [DeFiకు ఒక బిగినర్స్ గైడ్](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4) – _Sid Coelho-Prabhu, జనవరి 6, 2020_ +- [DeFiకి ఒక ప్రారంభకుడి గైడ్](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4) – _సిద్ కోయెల్హో-ప్రభు, జనవరి 6, 2020_ +- [EEA DeFi రిస్క్ అసెస్‌మెంట్ గైడ్‌లైన్స్](https://entethalliance.org/specs/defi-risks/) – DeFi ప్రోటోకాల్స్‌లో కీలక రిస్కులను ఎలా గుర్తించాలి మరియు అంచనా వేయాలి అనే దానిపై పరిశ్రమ-మద్దతు ఉన్న అవలోకనం. -### Videos {#videos} +### వీడియోలు {#videos} -- [ఫైనిమాటిక్స్ - వికేంద్రీకృత ఆర్థిక విద్య](https://finematics.com/) – _DeFiపై వీడియోలు_ -- [డిఫైంట్](https://www.youtube.com/playlist?list=PLaDcID4s1KronHMKojfjwiHL0DdQEPDcq) - _DeFi బేసిక్స్: అప్పుడప్పుడు అడ్డుపడే ఈ ప్రదేశంలో ప్రారంభించడానికి మీరు తెలుసుకోవలసిన ప్రతిదీ._ -- [వైట్‌బోర్డ్ క్రిప్టో](https://youtu.be/17QRFlml4pA) _DeFi అంటే ఏమిటి?_ +- [Finematics - వికేంద్రీకృత ఆర్థిక విద్య](https://finematics.com/) – _DeFiపై వీడియోలు_ +- [The Defiant](https://www.youtube.com/playlist?list=PLaDcID4s1KronHMKojfjwiHL0DdQEPDcq) - _DeFi బేసిక్స్: ఈ అప్పుడప్పుడు గందరగోళపరిచే స్పేస్‌లో ప్రారంభించడానికి మీరు తెలుసుకోవలసిన ప్రతిదీ._ +- [Whiteboard Crypto](https://youtu.be/17QRFlml4pA) _DeFi అంటే ఏమిటి?_ ### కమ్యూనిటీలు {#communities} diff --git a/public/content/translations/te/desci/index.md b/public/content/translations/te/desci/index.md new file mode 100644 index 00000000000..1cb144e96ca --- /dev/null +++ b/public/content/translations/te/desci/index.md @@ -0,0 +1,139 @@ +--- +title: "వికేంద్రీకృత శాస్త్రం (DeSci)" +description: "ఇతీరియముపై వికేంద్రీకృత శాస్త్రం యొక్క అవలోకనం" +lang: te +template: use-cases +emoji: ":microscope:" +sidebarDepth: 2 +image: /images/future_transparent.png +alt: "" +summaryPoint1: "ప్రస్తుత శాస్త్రీయ వ్యవస్థకు ప్రపంచ, బహిరంగ ప్రత్యామ్నాయం." +summaryPoint2: "శాస్త్రవేత్తలు నిధులను సేకరించేందుకు, ప్రయోగాలను అమలు చేయడానికి, డేటాను పంచుకోవడానికి, అంతర్దృష్టులను పంపిణీ చేయడానికి మరియు మరిన్నింటిని అనుమతించే సాంకేతికత." +summaryPoint3: "ఓపెన్ సైన్స్ ఉద్యమంపై ఆధారపడింది." +--- + +## వికేంద్రీకృత శాస్త్రం (eSci) అంటే ఏమిటి? {#what-is-desci} + +వికేంద్రీకృత శాస్త్రం (DeSci) అనేది [Web3](/glossary/#web3) స్టాక్‌ను ఉపయోగించి శాస్త్రీయ పరిజ్ఞానాన్ని న్యాయంగా మరియు సమానంగా నిధులు సమకూర్చడం, సృష్టించడం, సమీక్షించడం, క్రెడిట్ చేయడం, నిల్వ చేయడం మరియు వ్యాప్తి చేయడం కోసం ప్రజా మౌలిక సదుపాయాలను నిర్మించడం లక్ష్యంగా పెట్టుకున్న ఉద్యమం. + +DeSci ఒక పర్యావరణ వ్యవస్థను సృష్టించడం లక్ష్యంగా పెట్టుకుంది, ఇక్కడ శాస్త్రవేత్తలు తమ పరిశోధనలను బహిరంగంగా పంచుకోవడానికి మరియు వారి పనికి క్రెడిట్‌ని అందుకోవడానికి ప్రోత్సహించబడతారు, అదే సమయంలో ఎవరైనా సులభంగా పరిశోధనను యాక్సెస్ చేయడానికి మరియు సహకరించడానికి అనుమతిస్తుంది. శాస్త్రీయ విజ్ఞానం అందరికీ అందుబాటులో ఉండాలి మరియు శాస్త్రీయ పరిశోధన ప్రక్రియ పారదర్శకంగా ఉండాలనే ఆలోచనతో DeSi పని చేస్తుంది. డిస్కో మరింత వికేంద్రీకరించబడిన మరియు పంపిణీ చేయబడిన శాస్త్రీయ పరిశోధన నమూనాను రూపొందిస్తోంది, ఇది కేంద్ర అధికారులచే సెన్సార్‌షిప్ మరియు నియంత్రణకు మరింత నిరోధకతను కలిగిస్తుంది. నిధులు, శాస్త్రీయ సాధనాలు మరియు కమ్యూనికేషన్ ఛానెల్‌లకు వికేంద్రీకృత ప్రాప్యత ద్వారా కొత్త మరియు సాంప్రదాయేతర ఆలోచనలు వృద్ధి చెందగల వాతావరణాన్ని సృష్టించాలని DeSi భావిస్తోంది. + +వికేంద్రీకృత శాస్త్రం మరింత వైవిధ్యమైన నిధుల వనరులను ([DAOs](/glossary/#dao) నుండి, [క్వాడ్రాటిక్ విరాళాలు](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531) నుండి క్రౌడ్‌ఫండింగ్ మరియు మరిన్నింటి వరకు), మరింత అందుబాటులో ఉండే డేటా మరియు పద్ధతులను అనుమతిస్తుంది, మరియు పునరుత్పాదకత కోసం ప్రోత్సాహకాలను అందించడం ద్వారా. + +### జువాన్ బెనెట్ - ది డివి మూవ్‌మెంట్ + + + +## DeSci విజ్ఞాన శాస్త్రాన్ని ఎలా మెరుగుపరుస్తుంది {#desci-improves-science} + +సైన్స్‌లోని కీలక సమస్యల యొక్క అసంపూర్ణ జాబితా మరియు ఈ సమస్యలను పరిష్కరించడానికి వికేంద్రీకృత శాస్త్రం ఎలా సహాయపడుతుంది + +| **వికేంద్రీకృత శాస్త్రం** | **సాంప్రదాయ శాస్త్రం** | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| క్వాడ్రాటిక్ విరాళాలు లేదా DAOల వంటి యంత్రాంగాలను ఉపయోగించి నిధుల పంపిణీ **ప్రజలచే నిర్ణయించబడుతుంది**. | చిన్న, మూసివేసిన, **కేంద్రీకృత సమూహాలు** నిధుల పంపిణీని నియంత్రిస్తాయి. | +| మీరు డైనమిక్ టీమ్‌లలో **ప్రపంచవ్యాప్తంగా** ఉన్న సహచరులతో కలిసి పని చేస్తారు. | నిధుల సంస్థలు మరియు సొంత సంస్థలు మీ సహకారాలను **పరిమితం** చేస్తాయి. | +| నిధుల నిర్ణయాలు ఆన్‌లైన్‌లో మరియు **పారదర్శకంగా** తీసుకోబడతాయి. కొత్త నిధుల విధానాలు అన్వేషించబడతాయి. | నిధుల నిర్ణయాలు సుదీర్ఘ టర్నరౌండ్ సమయంతో మరియు **పరిమిత పారదర్శకతతో** తీసుకోబడతాయి. కొన్ని నిధుల యంత్రాంగాలు ఉన్నాయి. | +| [Web3](/glossary/#web3) సాంకేతికతను ఉపయోగించడం ద్వారా ప్రయోగశాల సేవలను పంచుకోవడం సులభం మరియు మరింత పారదర్శకంగా చేయబడింది. | ప్రయోగశాల వనరులను పంచుకోవడం తరచుగా **నెమ్మదిగా మరియు అపారదర్శకంగా** ఉంటుంది. | +| విశ్వసనీయత, పారదర్శకత మరియు సార్వత్రిక ప్రాప్యత కోసం Web3 ప్రిమిటివ్‌లను ఉపయోగించే **ప్రచురణ కోసం కొత్త నమూనాలను** అభివృద్ధి చేయవచ్చు. | మీరు తరచుగా **అసమర్థంగా, పక్షపాతంగా మరియు దోపిడీగా** గుర్తించబడిన స్థాపిత మార్గాల ద్వారా ప్రచురిస్తారు. | +| మీరు పీర్-రివ్యూయింగ్ పని కోసం **టోకెన్‌లు మరియు పలుకుబడిని సంపాదించవచ్చు**. | మీ **పీర్-రివ్యూ పనికి వేతనం ఉండదు**, ఇది లాభాపేక్షగల ప్రచురణకర్తలకు ప్రయోజనం చేకూరుస్తుంది. | +| **మీరు సృష్టించే మేధో సంపత్తి (IP) మీకే సొంతం** మరియు దానిని పారదర్శక నిబంధనల ప్రకారం పంపిణీ చేస్తారు. | **మీరు సృష్టించే IP మీ సొంత సంస్థకే చెందుతుంది**. IPకి యాక్సెస్ పారదర్శకంగా లేదు. | +| **పరిశోధనలన్నింటినీ పంచుకోవడం**, విఫలమైన ప్రయత్నాల నుండి వచ్చిన డేటాతో సహా, అన్ని దశలను ఆన్‌చైన్‌లో ఉంచడం ద్వారా. | **ప్రచురణ పక్షపాతం** అంటే పరిశోధకులు విజయవంతమైన ఫలితాలను ఇచ్చిన ప్రయోగాలను పంచుకోవడానికి ఎక్కువ అవకాశం ఉందని అర్థం. | + +## Ethereum మరియు DeSci {#ethereum-and-desci} + +వికేంద్రీకృత విజ్ఞాన వ్యవస్థకు బలమైన భద్రత, కనీస ద్రవ్య మరియు లావాదేవీల ఖర్చులు మరియు అప్లికేషన్ అభివృద్ధి కోసం గొప్ప పర్యావరణ వ్యవస్థ అవసరం. వికేంద్రీకృత శాస్త్ర సాంకేతికతను నిర్మించడానికి అవసరమైన ప్రతిదాన్ని Ethereum అందిస్తుంది. + +## DeSci వినియోగ సందర్భాలు {#use-cases} + +సాంప్రదాయ విద్యాసంస్థలను డిజిటల్ ప్రపంచంలోకి తీసుకురావడానికి DeSci శాస్త్రీయ టూల్‌సెట్‌ను నిర్మిస్తోంది. ఈవెబ్3 ఉపయోగాల ఒక పరిచయానికి కాకూడదు, అయితే అన్వేషణా సముదాయానికి ఇతర ఉపయోగాలను ప్రదర్శించేందుకు కొంతమంది సంఖ్యలో ఉండవచ్చు. + +### ప్రచురణ {#publishing} + +సైన్స్ పబ్లిషింగ్ ప్రముఖంగా సమస్యాత్మకమైనది ఎందుకంటే ఇది పేపర్‌లను రూపొందించడానికి శాస్త్రవేత్తలు, సమీక్షకులు మరియు సంపాదకుల నుండి ఉచిత శ్రమపై ఆధారపడే పబ్లిషింగ్ హౌస్‌ల ద్వారా నిర్వహించబడుతుంది, అయితే అధిక ప్రచురణ రుసుములను వసూలు చేస్తుంది. సాధారణంగా పరోక్షంగా పనికి మరియు ప్రచురణ ఖర్చులను పన్నుల ద్వారా చెల్లించిన పబ్లిక్, ప్రచురణకర్తకు మళ్లీ చెల్లించకుండా అదే పనిని యాక్సెస్ చేయలేరు. వ్యక్తిగత విజ్ఞాన శాస్త్ర పత్రాలను ప్రచురించడానికి అయ్యే మొత్తం రుసుములు తరచుగా ఐదు అంకెల్లో ($USD) ఉంటాయి, ఇది శాస్త్రీయ జ్ఞానాన్ని ఒక [ప్రజా ప్రయోజనంగా](/glossary/#public-goods) భావించే మొత్తం భావనను దెబ్బతీస్తుంది, అదే సమయంలో కొద్దిమంది ప్రచురణకర్తలకు భారీ లాభాలను ఆర్జించి పెడుతుంది. + +ఉచిత మరియు ఓపెన్-యాక్సెస్ ప్లాట్‌ఫారమ్‌లు ప్రీ-ప్రింట్ సర్వర్‌ల రూపంలో ఉన్నాయి, [ఉదాహరణకు ArXiv](https://arxiv.org/). అయితే, ఈ ప్లాట్‌ఫారమ్‌లలో నాణ్యత నియంత్రణ, [యాంటీ-సిబిల్ మెకానిజమ్స్](/glossary/#anti-sybil) కొరవడ్డాయి, మరియు సాధారణంగా ఆర్టికల్-స్థాయి మెట్రిక్‌లను ట్రాక్ చేయవు, అంటే అవి సాధారణంగా సాంప్రదాయ ప్రచురణకర్తకు సమర్పించే ముందు పనిని ప్రచారం చేయడానికి మాత్రమే ఉపయోగించబడతాయి. SciHub ప్రచురించిన పత్రాలను యాక్సెస్ చేయడానికి ఉచితం, కానీ చట్టబద్ధంగా కాదు, మరియు ప్రచురణకర్తలు ఇప్పటికే వారి చెల్లింపును తీసుకున్న తర్వాత మరియు ఖచ్చితమైన కాపీరైట్ చట్టంతో పనిని చుట్టిన తర్వాత మాత్రమే. ఇది పొందుపరిచిన చట్టబద్ధత మెకానిజం మరియు ప్రోత్సాహక నమూనాతో యాక్సెస్ చేయగల సైన్స్ పేపర్‌లు మరియు డేటాకు క్లిష్టమైన అంతరాన్ని మిగిల్చింది. అటువంటి వ్యవస్థను నిర్మించే సాధనాలు Web3లో ఉన్నాయి. + +### పునరుత్పాదకత మరియు ప్రతిరూపకత {#reproducibility-and-replicability} + +నాణ్యమైన శాస్త్రీయ ఆవిష్కరణకు పునరుత్పత్తి మరియు ప్రతిరూపత పునాదులు. + +- పునరుత్పాదక ఫలితాలను ఒకే పద్ధతిని ఉపయోగించి ఒకే బృందం వరుసగా అనేకసార్లు సాధించవచ్చు. +- అదే ప్రయోగాత్మక సెటప్‌ని ఉపయోగించి వేరొక సమూహం ద్వారా పునరావృతమయ్యే ఫలితాలను సాధించవచ్చు. + +కొత్త Web3-స్థానిక సాధనాలు పునరుత్పత్తి మరియు ప్రతిరూపం ఆవిష్కరణకు ఆధారమని నిర్ధారించగలవు. మేము నాణ్యమైన విజ్ఞాన శాస్త్రాన్ని అకాడెమియా యొక్క సాంకేతిక ఫాబ్రిక్‌లో నేయగలము. Web3 ప్రతి విశ్లేషణ భాగం కోసం [ధృవీకరణలను](/glossary/#attestation) సృష్టించగల సామర్థ్యాన్ని అందిస్తుంది: ముడి డేటా, గణన ఇంజిన్ మరియు అప్లికేషన్ ఫలితం. ఏకాభిప్రాయ వ్యవస్థల యొక్క అందం ఏమిటంటే, ఈ భాగాలను నిర్వహించడానికి విశ్వసనీయ నెట్‌వర్క్ సృష్టించబడినప్పుడు, ప్రతి నెట్‌వర్క్ పార్టిసిపెంట్ గణనను పునరుత్పత్తి చేయడానికి మరియు ప్రతి ఫలితాన్ని ధృవీకరించడానికి బాధ్యత వహిస్తారు. + +### నిధులు {#funding} + +ఫండింగ్ సైన్స్ కోసం ప్రస్తుత ప్రామాణిక నమూనా ఏమిటంటే, వ్యక్తులు లేదా శాస్త్రవేత్తల సమూహాలు ఫండింగ్ ఏజెన్సీకి వ్రాతపూర్వక దరఖాస్తు చేయడం. విశ్వసనీయ వ్యక్తుల యొక్క చిన్న ప్యానెల్ దరఖాస్తులను స్కోర్ చేసి, దరఖాస్తుదారులలో కొంత భాగానికి నిధులను అందించే ముందు అభ్యర్థులను ఇంటర్వ్యూ చేస్తుంది. ఒక గ్రాంట్ కోసం దరఖాస్తు చేసుకోవడం మరియు స్వీకరించడం మధ్య కొన్నిసార్లు **సంవత్సరాల తరబడి నిరీక్షణకు** దారితీసే అవరోధాలను సృష్టించడమే కాకుండా, ఈ నమూనా సమీక్ష ప్యానెల్ యొక్క **పక్షపాతాలు, స్వీయ-ప్రయోజనాలు మరియు రాజకీయాలకు** అత్యంత హాని కలిగిస్తుందని తెలిసిన విషయమే. + +గ్రాంట్ రివ్యూ ప్యానెల్‌లు అధిక-నాణ్యత ప్రతిపాదనలను ఎంచుకోవడంలో పేలవమైన పని చేస్తాయని అధ్యయనాలు చూపిస్తున్నాయి, ఎందుకంటే వివిధ గ్రహాలకు ఇచ్చిన ప్రతిపాదనలు చాలా భిన్నమైన ఫలితాలను కలిగి ఉంటాయి. నిధులు మరింత కొరతగా మారినందున, ఇది మరింత మేధోపరమైన సాంప్రదాయిక ప్రాజెక్టులతో ఎక్కువ మంది సీనియర్ పరిశోధకుల చిన్న సమూహంగా కేంద్రీకరించబడింది. ప్రభావం అధిక-పోటీ ఫండింగ్ ల్యాండ్‌స్కేప్‌ను సృష్టించింది, విపరీతమైన ప్రోత్సాహకాలను మరియు ఆవిష్కరణలను అణిచివేస్తుంది. + +DAOలు మరియు Web3 విస్తృతంగా అభివృద్ధి చేసిన విభిన్న ప్రోత్సాహక నమూనాలతో ప్రయోగాలు చేయడం ద్వారా Web3 ఈ విరిగిన నిధుల నమూనాకు అంతరాయం కలిగించే సామర్థ్యాన్ని కలిగి ఉంది. విజ్ఞాన శాస్త్ర నిధులలో విప్లవాత్మక మార్పులు తీసుకురాగల కొన్ని Web3 సాధనాలు: [రెట్రోయాక్టివ్ పబ్లిక్ గూడ్స్ ఫండింగ్](https://medium.com/ethereum-optimism/retroactive-public-goods-funding-33c9b7d00f0c), [క్వాడ్రాటిక్ ఫండింగ్](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531), [DAO గవర్నెన్స్](https://www.antler.co/blog/daos-and-web3-governance-the-promise-implications-and-challenges-ahead) మరియు [టోకెనైజ్డ్ ప్రోత్సాహక నిర్మాణాలు](https://cdixon.org/2017/05/27/crypto-tokens-a-breakthrough-in-open-network-design). + +### IP యాజమాన్యం మరియు అభివృద్ధి {#ip-ownership} + +సాంప్రదాయ విజ్ఞాన శాస్త్రంలో మేధో సంపత్తి (IP) అనేది ఒక పెద్ద సమస్య: విశ్వవిద్యాలయాలలో చిక్కుకోవడం లేదా బయోటెక్‌లలో ఉపయోగించకుండా ఉండటం నుండి, విలువైనదిగా గుర్తించడం కష్టం. అయితే, డిజిటల్ ఆస్తుల (శాస్త్రీయ డేటా లేదా ఆర్టికల్స్ వంటివి) యాజమాన్యం అనేది [నాన్-ఫంగిబుల్ టోకెన్‌లను (NFTలు)](/glossary/#nft) ఉపయోగించి Web3 అసాధారణంగా బాగా చేసే పని. + +NFTలు భవిష్యత్ లావాదేవీల కోసం ఆదాయాన్ని అసలు సృష్టికర్తకు తిరిగి పంపగలిగే విధంగానే, మీరు పరిశోధకులకు, పాలక సంస్థలకు (DAOలు వంటివి) లేదా డేటా సేకరించిన సబ్జెక్ట్‌లకు కూడా రివార్డ్ చేయడానికి పారదర్శక విలువ ఆపాదింపు గొలుసులను ఏర్పాటు చేయవచ్చు. + +[IP-NFTలు](https://medium.com/molecule-blog/ip-nfts-for-researchers-a-new-biomedical-funding-paradigm-91312d8d92e6) చేపట్టబడుతున్న పరిశోధన ప్రయోగాల యొక్క వికేంద్రీకృత డేటా రిపోజిటరీకి ఒక కీగా కూడా పనిచేయగలవు, మరియు NFT మరియు [DeFi](/glossary/#defi) ఫైనాన్షియలైజేషన్ (ఫ్రాక్షనలైజేషన్ నుండి లెండింగ్ పూల్స్ మరియు విలువ మదింపు వరకు) లోకి ప్లగ్ అవ్వగలవు. ఇది [VitaDAO](https://www.vitadao.com/) వంటి DAOల లాంటి స్థానిక ఆన్‌చైన్ సంస్థలను నేరుగా ఆన్‌చైన్‌లో పరిశోధన చేయడానికి కూడా అనుమతిస్తుంది. +బదిలీ చేయలేని ["సోల్‌బౌండ్" టోకెన్‌ల](https://vitalik.eth.limo/general/2022/01/26/soulbound.html) రాక కూడా వ్యక్తులు వారి Ethereum చిరునామాకు అనుసంధానించబడిన వారి అనుభవం మరియు ఆధారాలను నిరూపించుకోవడానికి అనుమతించడం ద్వారా DeSciలో ఒక ముఖ్యమైన పాత్ర పోషించవచ్చు. + +### డేటా నిల్వ, యాక్సెస్ మరియు ఆర్కిటెక్చర్ {#data-storage} + +Web3 నమూనాలను ఉపయోగించి శాస్త్రీయ డేటాను విస్తృతంగా అందుబాటులోకి తీసుకురావచ్చు మరియు పంపిణీ చేయబడిన నిల్వ విపత్తు సంఘటనల నుండి బయటపడేందుకు పరిశోధనను అనుమతిస్తుంది. + +ప్రారంభ స్థానం తప్పనిసరిగా సరైన ధృవీకరించదగిన ఆధారాలను కలిగి ఉన్న ఏదైనా వికేంద్రీకృత గుర్తింపు ద్వారా యాక్సెస్ చేయగల సిస్టమ్ అయి ఉండాలి. ఇది రిడెండెన్సీ మరియు సెన్సార్‌షిప్ రెసిస్టెన్స్, ఫలితాల పునరుత్పత్తి మరియు డేటాసెట్‌కి కొత్త డేటాను జోడించడానికి బహుళ పక్షాల సామర్థ్యాన్ని కూడా అనుమతిస్తుంది, విశ్వసనీయ పక్షాల ద్వారా సున్నితమైన డేటాను సురక్షితంగా ప్రతిరూపం చేయడానికి అనుమతిస్తుంది. [కంప్యూట్-టు-డేటా](https://7wdata.be/predictive-analytics/compute-to-data-using-blockchain-to-decentralize-data-science-and-ai-with-the-ocean-protocol) వంటి గోప్యమైన కంప్యూటింగ్ పద్ధతులు ముడి డేటా ప్రతిరూపణకు ప్రత్యామ్నాయ యాక్సెస్ మెకానిజమ్‌లను అందిస్తాయి, అత్యంత సున్నితమైన డేటా కోసం విశ్వసనీయ పరిశోధన పరిసరాలను సృష్టిస్తాయి. విశ్వసనీయ పరిశోధన పరిసరాలు డేటా గోప్యత మరియు సహకారానికి భవిష్యత్-ఆధారిత పరిష్కారంగా [NHS ద్వారా ఉదహరించబడ్డాయి](https://medium.com/weavechain/whats-in-store-for-the-future-of-healthcare-data-b6398745fbbb), ఇవి పరిశోధకులు కోడ్ మరియు పద్ధతులను పంచుకోవడానికి ప్రామాణిక పరిసరాలను ఉపయోగించి ఆన్-సైట్ డేటాతో సురక్షితంగా పనిచేయగల ఒక పర్యావరణ వ్యవస్థను సృష్టిస్తాయి. + +ఫ్లెక్సిబుల్ Web3 డేటా సొల్యూషన్‌లు పైన ఉన్న దృశ్యాలకు మద్దతునిస్తాయి మరియు నిజమైన ఓపెన్ సైన్స్‌కు పునాదిని అందిస్తాయి, ఇక్కడ పరిశోధకులు యాక్సెస్ అనుమతులు లేదా రుసుము లేకుండా పబ్లిక్ వస్తువులను సృష్టించవచ్చు. IPFS, Arweave మరియు Filecoin వంటి Web3 పబ్లిక్ డేటా సొల్యూషన్‌లు వికేంద్రీకరణ కోసం ఆప్టిమైజ్ చేయబడ్డాయి. dClimate, ఉదాహరణకు, వాతావరణ స్టేషన్లు మరియు ప్రిడిక్టివ్ క్లైమేట్ మోడల్‌లతో సహా వాతావరణం మరియు వాతావరణ డేటాకు సార్వత్రిక ప్రాప్యతను అందిస్తుంది. + +## పాల్గొనండి {#get-involved} + +ప్రాజెక్ట్‌లను ఎక్స్‌ప్లోర్ చేయండి మరియు DeSi సంఘంలో చేరండి. + +- [DeSci.Global: గ్లోబల్ ఈవెంట్‌లు మరియు మీటప్ క్యాలెండర్](https://desci.global) +- [Blockchain for Science టెలిగ్రామ్](https://t.me/BlockchainForScience) +- [మాలిక్యూల్: మీ పరిశోధన ప్రాజెక్ట్‌లకు నిధులు సమకూర్చండి మరియు నిధులు పొందండి](https://www.molecule.xyz/) +- [VitaDAO: దీర్ఘాయువు పరిశోధన కోసం స్పాన్సర్డ్ పరిశోధన ఒప్పందాల ద్వారా నిధులు పొందండి](https://www.vitadao.com/) +- [రీసెర్చ్‌హబ్: శాస్త్రీయ ఫలితాన్ని పోస్ట్ చేయండి మరియు తోటివారితో సంభాషణలో పాల్గొనండి](https://www.researchhub.com/) +- [dClimate API: వికేంద్రీకృత సంఘం సేకరించిన వాతావరణ డేటాను క్వరీ చేయండి](https://www.dclimate.net/) +- [DeSci ఫౌండేషన్: DeSci ప్రచురణ సాధన బిల్డర్](https://descifoundation.org/) +- [DeSci.World: వినియోగదారులు వీక్షించడానికి, వికేంద్రీకృత శాస్త్రంతో నిమగ్నమవ్వడానికి వన్-స్టాప్ షాప్](https://desci.world) +- [OceanDAO: DAO డేటా-సంబంధిత సైన్స్ కోసం నిధులను నిర్వహిస్తుంది](https://oceanprotocol.com/) +- [Opscientia: ఓపెన్ వికేంద్రీకృత సైన్స్ వర్క్‌ఫ్లోలు](https://opsci.io/research/) +- [Bio.xyz: మీ బయోటెక్ DAO లేదా desci ప్రాజెక్ట్ కోసం నిధులు పొందండి](https://www.bio.xyz/) +- [ఫ్లెమింగ్ ప్రోటోకాల్: సహకార బయోమెడికల్ ఆవిష్కరణకు ఇంధనం నింపే ఓపెన్ సోర్స్ డేటా ఎకానమీ](http://flemingprotocol.io/) +- [యాక్టివ్ ఇన్ఫరెన్స్ ఇన్స్టిట్యూట్](https://www.activeinference.org/) +- [IdeaMarkets: వికేంద్రీకృత శాస్త్రీయ విశ్వసనీయతను ప్రారంభించడం](https://ideamarket.io/) +- [DeSci Labs](https://www.desci.com/) +- [ValleyDAO: సింథటిక్ బయాలజీ పరిశోధన కోసం నిధులు మరియు అనువాద మద్దతును అందించే ఒక ఓపెన్, గ్లోబల్ కమ్యూనిటీ](https://www.valleydao.bio) +- [Cerebrum DAO: మెదడు ఆరోగ్యాన్ని మెరుగుపరచడానికి మరియు న్యూరోడీజెనరేషన్‌ను నివారించడానికి పరిష్కారాలను సేకరించడం మరియు పెంపొందించడం](https://www.cerebrumdao.com/) +- [CryoDAO: క్రయోప్రెజర్వేషన్ రంగంలో మూన్‌షాట్ పరిశోధనకు నిధులు](https://www.cryodao.org) +- [ఎలాటా: మానసిక వైద్యం యొక్క భవిష్యత్తులో మీ అభిప్రాయాన్ని చెప్పండి](https://www.elata.bio/) + +జాబితా చేయడానికి కొత్త ప్రాజెక్ట్‌ల కోసం సూచనలను మేము స్వాగతిస్తున్నాము - దయచేసి ప్రారంభించడానికి మా [లిస్టింగ్ పాలసీని](/contributing/adding-desci-projects/) చూడండి! + +## మరింత సమాచారం {#further-reading} + +- [జోసెలిన్ పెర్ల్ మరియు అల్ట్రారేర్ ద్వారా DeSci వికీ](https://docs.google.com/document/d/1aQC6zn-eXflSmpts0XGE7CawbUEHwnL6o-OFXO52PTc/edit#) +- [a16z future కోసం జోసెలిన్ పెర్ల్ ద్వారా వికేంద్రీకృత బయోటెక్‌కు ఒక గైడ్](https://future.a16z.com/a-guide-to-decentralized-biotech/) +- [DeSci కోసం ఒక వాదన](https://gitcoin.co/blog/desci-the-case-for-decentralised-science/) +- [DeSciకి గైడ్](https://future.com/what-is-decentralized-science-aka-desci/) +- [వికేంద్రీకృత విజ్ఞాన శాస్త్ర వనరులు](https://www.vincentweisser.com/desci) +- [మాలిక్యూల్ యొక్క బయోఫార్మా IP-NFTలు - ఒక సాంకేతిక వివరణ](https://www.molecule.xyz/blog/molecules-biopharma-ip-nfts-a-technical-description) +- [జోన్ స్టార్ ద్వారా ట్రస్ట్‌లెస్ సైన్స్ వ్యవస్థల నిర్మాణం](https://medium.com/@jringo/building-systems-of-trustless-science-1cd2d072f673) +- [పాల్ కోల్హాస్ - DeSci: వికేంద్రీకృత విజ్ఞాన శాస్త్రం యొక్క భవిష్యత్తు (పోడ్‌కాస్ట్)](https://anchor.fm/andrew-steinwold/episodes/Paul-Kohlhaas---DeSci-The-Future-of-Decentralized-Science---Zima-Red-ep-117-e1h683a) +- [వికేంద్రీకృత విజ్ఞాన శాస్త్రం కోసం ఒక యాక్టివ్ ఇన్ఫరెన్స్ ఆంటాలజీ: సిట్యుయేటెడ్ సెన్స్‌మేకింగ్ నుండి ఎపిస్టెమిక్ కామన్స్ వరకు](https://zenodo.org/record/6320575) +- [DeSci: శామ్యూల్ అకినోషో ద్వారా పరిశోధన యొక్క భవిష్యత్తు](https://lucidsamuel.medium.com/desci-the-future-of-research-b76cfc88c8ec) +- [నాడియా ద్వారా సైన్స్ ఫండింగ్ (ఎపిలోగ్: DeSci మరియు కొత్త క్రిప్టో ప్రిమిటివ్స్)](https://nadia.xyz/science-funding) +- [వికేంద్రీకరణ ఔషధ అభివృద్ధికి అంతరాయం కలిగిస్తోంది](https://medium.com/id-theory/decentralisation-is-disrupting-drug-development-28b5ba5d447f) +- [DeSci అంటే ఏమిటి – వికేంద్రీకృత విజ్ఞాన శాస్త్రమా?](https://usadailytimes.com/2022/09/12/what-is-desci-decentralized-science/) + +### వీడియోలు {#videos} + +- [వికేంద్రీకృత విజ్ఞాన శాస్త్రం అంటే ఏమిటి?](https://www.youtube.com/watch?v=-DeMklVWNdA) +- [దీర్ఘాయువు పరిశోధన మరియు క్రిప్టోల ఖండన గురించి విటాలిక్ బుటెరిన్ మరియు శాస్త్రవేత్త ఆబ్రే డి గ్రే మధ్య సంభాషణ](https://www.youtube.com/watch?v=x9TSJK1widA) +- [శాస్త్రీయ ప్రచురణ విచ్ఛిన్నమైంది. Web3 దాన్ని సరిచేయగలదా?](https://www.youtube.com/watch?v=WkvzYgCvWj8) +- [జువాన్ బెనెట్ - DeSci, స్వతంత్ర ప్రయోగశాలలు, & భారీ స్థాయి డేటా సైన్స్](https://www.youtube.com/watch?v=zkXM9H90g_E) +- [సెబాస్టియన్ బ్రూన్‌మీర్ - DeSci బయోమెడికల్ పరిశోధన & వెంచర్ క్యాపిటల్‌ను ఎలా మార్చగలదు](https://www.youtube.com/watch?v=qB4Tc3FcVbM) +- [పైజ్ డోనర్ - Web3 & ది బ్లాక్ చైనుతో ఓపెన్ సైన్స్‌ను టూలింగ్ చేయడం](https://www.youtube.com/watch?v=nC-2QWQ-lgw&t=17s) diff --git a/public/content/translations/te/developers/docs/accounts/index.md b/public/content/translations/te/developers/docs/accounts/index.md new file mode 100644 index 00000000000..f5766c8ed41 --- /dev/null +++ b/public/content/translations/te/developers/docs/accounts/index.md @@ -0,0 +1,137 @@ +--- +title: "Ethereum ఖాతాలు" +description: "Ethereum ఖాతాల వివరణ – వాటి డేటా నిర్మాణాలు మరియు కీ పెయిర్ క్రిప్టోగ్రఫీతో వాటి సంబంధం." +lang: te +--- + +Ethereum ఖాతా అనేది Ethereumలో సందేశాలను పంపగల ఈథర్ (ETH) బ్యాలెన్స్ కలిగిన ఒక ఎంటిటీ. ఖాతాలు వినియోగదారు-నియంత్రిత లేదా స్మార్ట్ కాంట్రాక్టుల వలె అమలు చేయబడతాయి. + +## అవసరాలు {#prerequisites} + +ఈ పేజీని మీరు మరింత బాగా అర్థం చేసుకోవడంలో సహాయపడటానికి, ముందుగా మా [Ethereum పరిచయం](/developers/docs/intro-to-ethereum/) చదవాలని మేము సిఫార్సు చేస్తున్నాము. + +## ఖాతా రకాలు {#types-of-account} + +ఖాతా రకాలు: + +- బాహ్య-యాజమాన్య ఖాతా (EOA) – ప్రైవేట్ కీలను కలిగి ఉన్న ఎవరైనా నియంత్రించవచ్చు +- కాంట్రాక్ట్ ఖాతా - నెట్‌వర్క్‌కు అమలు చేయబడిన ఒక స్మార్ట్ ఒప్పందం, కోడ్ ద్వారా నియంత్రించబడుతుంది. [స్మార్ట్ కాంట్రాక్టుల](/developers/docs/smart-contracts/) గురించి తెలుసుకోండి + +రెండు ఖాతా రకాలు వీటిని చేయగల సామర్థ్యాన్ని కలిగి ఉంటాయి: + +- ETH మరియు టోకెన్‌లను స్వీకరించండి, పట్టుకోండి మరియు పంపండి +- అమలు చేయబడిన స్మార్ట్ కాంట్రాక్టులతో పరస్పర చర్య చేయండి + +### కీలక తేడాలు {#key-differences} + +**బాహ్య యాజమాన్యం** + +- ఖాతాను సృష్టించడం వల్ల ఏమీ ఖర్చు ఉండదు +- లావాదేవీలను ప్రారంభించవచ్చు +- బాహ్య యాజమాన్యంలోని ఖాతాల మధ్య లావాదేవీలు ETH/టోకెన్ బదిలీలు మాత్రమే +- క్రిప్టోగ్రాఫిక్ జత కీలతో రూపొందించబడింది: ఖాతా కార్యకలాపాలను నియంత్రించే పబ్లిక్ మరియు ప్రైవేట్ కీలు + +**కాంట్రాక్ట్** + +- మీరు నెట్‌వర్క్ స్టోరేజ్‌ని ఉపయోగిస్తున్నందున కాంట్రాక్ట్‌ను రూపొందించడానికి ఖర్చు అవుతుంది +- ఒక లావాదేవీని స్వీకరించినప్పుడు మాత్రమే దానికి ప్రతిస్పందనగా సందేశాలను పంపగలదు +- బాహ్య ఖాతా నుండి కాంట్రాక్ట్ ఖాతాకు జరిగే లావాదేవీలు టోకెన్‌లను బదిలీ చేయడం లేదా కొత్త ఒప్పందాన్ని సృష్టించడం వంటి అనేక విభిన్న చర్యలను అమలు చేయగల కోడ్‌ను ట్రిగ్గర్ చేయవచ్చు +- కాంట్రాక్ట్ ఖాతాలకు ప్రైవేట్ కీలు లేవు. బదులుగా, అవి స్మార్ట్ కాంట్రాక్ట్ కోడ్ యొక్క లాజిక్ ద్వారా నియంత్రించబడతాయి + +## ఒక ఖాతా యొక్క పరిశీలన {#an-account-examined} + +Ethereum ఖాతాలు నాలుగు ఫీల్డ్‌లను కలిగి ఉన్నాయి: + +- `nonce` – బాహ్యంగా యాజమాన్యం కలిగిన ఖాతా నుండి పంపిన లావాదేవీల సంఖ్యను లేదా ఒక కాంట్రాక్ట్ ఖాతా ద్వారా సృష్టించబడిన కాంట్రాక్టుల సంఖ్యను సూచించే కౌంటర్. ప్రతి ఖాతాకు ఇవ్వబడిన నాన్సుతో ఒక లావాదేవీ మాత్రమే అమలు చేయబడుతుంది, సంతకం చేసిన లావాదేవీలు పదేపదే ప్రసారం చేయబడి, మళ్లీ అమలు చేయబడే రీప్లే దాడుల నుండి రక్షించబడుతుంది. +- `balance` – ఈ చిరునామా యాజమాన్యంలోని వీ (wei)ల సంఖ్య. Wei అనేది ETH యొక్క తెగ మరియు ప్రతి ETHకి 1e+18 wei ఉన్నాయి. +- `codeHash` – ఈ హాష్ ఎథేరియం వర్చువల్ మషీన్ (EVM)లోని ఒక ఖాతా యొక్క _కోడ్‌_ను సూచిస్తుంది. కాంట్రాక్ట్ ఖాతాలు వేర్వేరు కార్యకలాపాలను నిర్వహించగల కోడ్ శకలాలు ప్రోగ్రామ్ చేయబడ్డాయి. ఖాతాకు మెసేజ్ కాల్ వస్తే ఈ EVM కోడ్ అమలు చేయబడుతుంది. ఇది ఇతర ఖాతా ఫీల్డ్‌ల వలె కాకుండా మార్చబడదు. అటువంటి కోడ్ శకలాలు అన్ని తరువాత తిరిగి పొందడం కోసం వాటి సంబంధిత హ్యాష్‌ల క్రింద స్టేట్ డేటాబేస్‌లో ఉంటాయి. ఈ హాష్ విలువను కోడ్‌హాష్ అంటారు. బాహ్యంగా స్వంతం చేసుకున్న ఖాతాల కోసం, codeHash ఫీల్డ్ ఖాళీ స్ట్రింగ్ యొక్క హాష్. +- `storageRoot` – కొన్నిసార్లు స్టోరేజ్ హాష్ అని కూడా అంటారు. ఖాతా యొక్క స్టోరేజ్ కంటెంట్‌లను (256-బిట్ పూర్ణాంక విలువల మధ్య మ్యాపింగ్) ఎన్‌కోడ్ చేసే [మెర్కిల్ పాట్రీషియా ట్రై](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/) యొక్క రూట్ నోడ్ యొక్క 256-బిట్ హాష్; ఇది 256-బిట్ పూర్ణాంక కీల యొక్క Keccak 256-బిట్ హాష్ నుండి RLP-ఎన్‌కోడ్ చేయబడిన 256-బిట్ పూర్ణాంక విలువలకు మ్యాపింగ్‌గా ట్రైలోకి ఎన్‌కోడ్ చేయబడుతుంది. ఈ ప్రయత్నం ఈ ఖాతా యొక్క నిల్వ కంటెంట్‌ల హాష్‌ను ఎన్కోడ్ చేస్తుంది మరియు డిఫాల్ట్‌గా ఖాళీగా ఉంటుంది. + +![ఖాతా యొక్క నిర్మాణాన్ని చూపే రేఖాచిత్రం](./accounts.png) +_[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) నుండి స్వీకరించబడిన రేఖాచిత్రం_ + +## బాహ్యంగా యాజమాన్యం కలిగిన ఖాతాలు మరియు కీ జతలు {#externally-owned-accounts-and-key-pairs} + +ఒక ఖాతా ఒక జత క్రిప్టోగ్రాఫిక్ కీలతో రూపొందించబడింది: పబ్లిక్ మరియు ప్రైవేట్. లావాదేవీని పంపినవారు వాస్తవానికి సంతకం చేశారని నిరూపించడానికి మరియు ఫోర్జరీలను నిరోధించడంలో ఇవి సహాయపడతాయి. లావాదేవీలపై సంతకం చేయడానికి మీరు ఉపయోగించేది మీ ప్రైవేట్ కీ, కాబట్టి ఇది మీ ఖాతాతో అనుబంధించబడిన నిధులపై మీకు కస్టడీని మంజూరు చేస్తుంది. మీరు నిజంగా క్రిప్టోకరెన్సీని కలిగి ఉండరు, మీరు ప్రైవేట్ కీలను కలిగి ఉంటారు - నిధులు ఎల్లప్పుడూ Ethereum యొక్క లెడ్జర్‌లో ఉంటాయి. + +ఇది నకిలీ లావాదేవీలను ప్రసారం చేయకుండా హానికరమైన నటులను నిరోధిస్తుంది ఎందుకంటే మీరు లావాదేవీని పంపినవారిని ఎల్లప్పుడూ ధృవీకరించవచ్చు. + +ఆలిస్ తన స్వంత ఖాతా నుండి బాబ్ ఖాతాకు ఈథర్‌ను పంపాలనుకుంటే, ఆలిస్ లావాదేవీ అభ్యర్థనను సృష్టించి, ధృవీకరణ కోసం నెట్‌వర్క్‌కు పంపాలి. Ethereum యొక్క పబ్లిక్-కీ క్రిప్టోగ్రఫీ యొక్క ఉపయోగం ఆలిస్ లావాదేవీ అభ్యర్థనను మొదట ప్రారంభించిందని నిరూపించగలదని నిర్ధారిస్తుంది. క్రిప్టోగ్రాఫిక్ మెకానిజమ్స్ లేకుండా, హానికరమైన ప్రత్యర్థి ఈవ్ కేవలం "ఆలిస్ ఖాతా నుండి ఈవ్ ఖాతాకు 5 ETHని పంపండి" లాంటి అభ్యర్థనను పబ్లిక్‌గా ప్రసారం చేయగలదు మరియు అది ఆలిస్ నుండి రాలేదని ఎవరూ ధృవీకరించలేరు. + +## ఖాతా సృష్టి {#account-creation} + +మీరు ఖాతాను సృష్టించాలనుకున్నప్పుడు, చాలా లైబ్రరీలు మీకు యాదృచ్ఛిక ప్రైవేట్ కీని ఉత్పత్తి చేస్తాయి. + +ఒక ప్రైవేట్ కీ 64 హెక్స్ అక్షరాలతో రూపొందించబడింది మరియు పాస్‌వర్డ్‌తో గుప్తీకరించబడుతుంది. + +ఉదాహరణ: + +`fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036415f` + +[ఎలిప్టిక్ కర్వ్ డిజిటల్ సిగ్నేచర్ అల్గోరిథం](https://wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm) ఉపయోగించి ప్రైవేట్ కీ నుండి పబ్లిక్ కీ ఉత్పత్తి చేయబడుతుంది. పబ్లిక్ కీ యొక్క Keccak-256 హాష్ నుండి చివరి 20 బైట్‌లను తీసుకుని, ప్రారంభంలో `0x`ను జోడించడం ద్వారా మీరు మీ ఖాతా కోసం పబ్లిక్ చిరునామాను పొందుతారు. + +అంటే, ఒక బాహ్యంగా యాజమాన్యం కలిగిన ఖాతా (EOA)కు 42-అక్షరాల చిరునామా ఉంటుంది (20-బైట్ విభాగం, ఇది 40 హెక్సాడెసిమల్ అక్షరాలు మరియు `0x` ఉపసర్గ). + +ఉదాహరణ: + +`0x5e97870f263700f46aa00d967821199b9bc5a120` + +ఒక కొత్త ఖాతాను రూపొందించడానికి [Clef](https://geth.ethereum.org/docs/tools/clef/introduction) అనే సైనింగ్ టూల్‌ను ఎలా ఉపయోగించాలో కింది ఉదాహరణ చూపిస్తుంది. Clef అనేది ఒక ఖాతా నిర్వహణ మరియు సైనింగ్ టూల్. ఇది Ethereum క్లయింట్ అయిన [Geth](https://geth.ethereum.org)తో పాటు వస్తుంది. `clef newaccount` కమాండ్ ఒక కొత్త కీ జతను సృష్టించి, వాటిని ఒక ఎన్‌క్రిప్ట్ చేయబడిన కీస్టోర్‌లో సేవ్ చేస్తుంది. + +``` +> clef newaccount --keystore + +సృష్టించబోయే కొత్త ఖాతా కోసం దయచేసి పాస్‌వర్డ్‌ను నమోదు చేయండి: +> + +------------ +INFO [10-28|16:19:09.156] మీ కొత్త కీ ఉత్పత్తి చేయబడింది address=0x5e97870f263700f46aa00d967821199b9bc5a120 +WARN [10-28|16:19:09.306] దయచేసి మీ కీ ఫైల్‌ను బ్యాకప్ చేయండి path=/home/user/go-ethereum/data/keystore/UTC--2022-10-28T15-19-08.000825927Z--5e97870f263700f46aa00d967821199b9bc5a120 +WARN [10-28|16:19:09.306] దయచేసి మీ పాస్‌వర్డ్‌ను గుర్తుంచుకోండి! +ఉత్పత్తి చేయబడిన ఖాతా 0x5e97870f263700f46aa00d967821199b9bc5a120 +``` + +[Geth డాక్యుమెంటేషన్](https://geth.ethereum.org/docs) + +మీ ప్రైవేట్ కీ నుండి కొత్త పబ్లిక్ కీలను పొందడం సాధ్యమవుతుంది, కానీ మీరు పబ్లిక్ కీల నుండి ప్రైవేట్ కీని పొందలేరు. మీ ప్రైవేట్ కీలను సురక్షితంగా ఉంచుకోవడం చాలా ముఖ్యం మరియు, పేరు సూచించినట్లుగా, **ప్రైవేట్‌గా** ఉంచాలి. + +సంతకాన్ని అవుట్‌పుట్ చేసే సందేశాలు మరియు లావాదేవీలపై సంతకం చేయడానికి మీకు ప్రైవేట్ కీ అవసరం. ఇతరులు సందేశ రచయితను రుజువు చేస్తూ మీ పబ్లిక్ కీని పొందేందుకు సంతకాన్ని తీసుకోవచ్చు. మీ అప్లికేషన్‌లో, నెట్‌వర్క్‌కు లావాదేవీలను పంపడానికి మీరు JavaScript లైబ్రరీని ఉపయోగించవచ్చు. + +## కాంట్రాక్ట్ ఖాతాలు {#contract-accounts} + +కాంట్రాక్ట్ ఖాతాలు 42 అక్షరాల హెక్సాడెసిమల్ చిరునామాను కూడా కలిగి ఉంటాయి: + +ఉదాహరణ: + +`0x06012c8cf97bead5deae237070f9587f8e7a266d` + +Ethereum Blockchainకి కాంట్రాక్టును అమలు చేసినప్పుడు కాంట్రాక్ట్ చిరునామా సాధారణంగా ఇవ్వబడుతుంది. చిరునామా సృష్టికర్త చిరునామా మరియు ఆ చిరునామా నుండి పంపబడిన లావాదేవీల సంఖ్య (“నాన్స్”) నుండి వస్తుంది. + +## వాలిడేటర్ కీలు {#validators-keys} + +Ethereumలో మరొక రకమైన కీ కూడా ఉంది, Ethereum ప్రూఫ్-ఆఫ్-వర్క్ నుండి ప్రూఫ్-ఆఫ్-స్టేక్ ఆధారిత ఏకాభిప్రాయానికి మారినప్పుడు పరిచయం చేయబడింది. ఇవి 'BLS' కీలు మరియు అవి వ్యాలిడేటర్‌లను గుర్తించడానికి ఉపయోగించబడతాయి. నెట్‌వర్క్ ఏకాభిప్రాయానికి రావడానికి అవసరమైన బ్యాండ్‌విడ్త్‌ని తగ్గించడానికి ఈ కీలను సమర్ధవంతంగా సమీకరించవచ్చు. ఈ కీలక అగ్రిగేషన్ లేకుండా వ్యాలిడేటర్ యొక్క కనీస వాటా చాలా ఎక్కువగా ఉంటుంది. + +[వాలిడేటర్ కీల గురించి మరింత](/developers/docs/consensus-mechanisms/pos/keys/). + +## వాలెట్లపై ఒక గమనిక {#a-note-on-wallets} + +ఖాతా అనేది వాలెట్ కాదు. వాలెట్ అనేది మీ Ethereum ఖాతాతో పరస్పరం వ్యవహరించడానికి మిమ్మల్ని అనుమతించే ఇంటర్‌ఫేస్ లేదా అప్లికేషన్, ఇది బాహ్య యాజమాన్య ఖాతా లేదా కాంట్రాక్ట్ ఖాతా. + +## ఒక విజువల్ డెమో {#a-visual-demo} + +హాష్ ఫంక్షన్‌లు మరియు కీ జతల ద్వారా ఆస్టిన్ మిమ్మల్ని నడిపించడాన్ని చూడండి. + + + + + +## మరింత సమాచారం {#further-reading} + +- [Ethereum ఖాతాలను అర్థం చేసుకోవడం](https://info.etherscan.com/understanding-ethereum-accounts/) - etherscan + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ + +## సంబంధిత అంశాలు {#related-topics} + +- [స్మార్ట్ కాంట్రాక్టులు](/developers/docs/smart-contracts/) +- [లావాదేవీలు](/developers/docs/transactions/) diff --git a/public/content/translations/te/developers/docs/apis/backend/index.md b/public/content/translations/te/developers/docs/apis/backend/index.md new file mode 100644 index 00000000000..4fb41487732 --- /dev/null +++ b/public/content/translations/te/developers/docs/apis/backend/index.md @@ -0,0 +1,211 @@ +--- +title: "బ్యాకెండ్ ఎపిఐ లైబ్రరీలు" +description: "మీ అప్లికేషన్ నుండి బ్లాక్ చైనుతో సంభాషించడానికి మిమ్మల్ని అనుమతించే ఇతీరియము క్లయింట్ ఎపిఐలకి ఒక పరిచయం." +lang: te +--- + +ఒక సాఫ్ట్‌వేర్ అప్లికేషన్ ఇతీరియము బ్లాక్ చైనుతో పరస్పరం సంభాషించడానికి (అంటే, బ్లాక్ చైను డేటాను చదవడం మరియు/లేదా నెట్వర్కుకు లావాదేవీలను పంపడం), అది తప్పనిసరిగా ఇతీరియము నోడ్‌కు కనెక్ట్ అవ్వాలి. + +ఈ ప్రయోజనం కోసం, ప్రతి ఇతీరియము క్లయింట్ [JSON-RPC](/developers/docs/apis/json-rpc/) స్పెసిఫికేషన్‌ను అమలు చేస్తుంది, కాబట్టి అప్లికేషన్లు ఆధారపడగల ఒకేరకమైన [పద్ధతులు](/developers/docs/apis/json-rpc/#json-rpc-methods) ఉన్నాయి. + +మీరు ఇతీరియము నోడ్‌తో కనెక్ట్ అవ్వడానికి ఒక నిర్దిష్ట ప్రోగ్రామింగ్ భాషను ఉపయోగించాలనుకుంటే, పర్యావరణ వ్యవస్థలో దీన్ని చాలా సులభతరం చేసే అనేక సౌకర్యవంతమైన లైబ్రరీలు ఉన్నాయి. ఈ లైబ్రరీలతో, డెవలపర్లు ఇతీరియముతో సంభాషించే JSON-RPC అభ్యర్థనలను (తెరవెనుక) ప్రారంభించడానికి, స్పష్టమైన, ఒక-వరుస పద్ధతులను వ్రాయగలరు. + +## అవసరాలు {#prerequisites} + +[ఇతీరియము స్టాక్](/developers/docs/ethereum-stack/) మరియు [ఇతీరియము క్లయింట్లు](/developers/docs/nodes-and-clients/) గురించి అర్థం చేసుకోవడం సహాయపడవచ్చు. + +## ఒక లైబ్రరీని ఎందుకు ఉపయోగించాలి? {#why-use-a-library} + +ఈ లైబ్రరీలు ఇతీరియము నోడ్‌తో నేరుగా సంభాషించడంలో ఉన్న సంక్లిష్టతను చాలా వరకు సంగ్రహిస్తాయి. అవి యుటిలిటీ ఫంక్షన్‌లను (ఉదా., ETHని Gweiకి మార్చడం) కూడా అందిస్తాయి, కాబట్టి డెవలపర్‌గా మీరు ఇతీరియము క్లయింట్‌ల చిక్కులతో తక్కువ సమయం గడపవచ్చు మరియు మీ అప్లికేషన్ యొక్క ప్రత్యేకమైన కార్యాచరణపై ఎక్కువ దృష్టి పెట్టవచ్చు. + +## అందుబాటులో ఉన్న లైబ్రరీలు {#available-libraries} + +### మౌలిక సదుపాయాలు మరియు నోడ్ సేవలు {#infrastructure-and-node-services} + +**Alchemy -** **_Ethereum అభివృద్ధి ప్లాట్‌ఫారమ్._** + +- [alchemy.com](https://www.alchemy.com/) +- [డాక్యుమెంటేషన్](https://www.alchemy.com/docs/) +- [GitHub](https://github.com/alchemyplatform) +- [Discord](https://discord.com/invite/alchemyplatform) + +**ఆల్ దట్ నోడ్ -** **_నోడ్-యాస్-ఎ-సర్వీస్._** + +- [All That Node.com](https://www.allthatnode.com/) +- [డాక్యుమెంటేషన్](https://docs.allthatnode.com) +- [డిస్కార్డ్](https://discord.gg/GmcdVEUbJM) + +**బ్లాస్ట్ బై బ్వేర్ ల్యాబ్స్ -** **_ఇతీరియము మెయిన్‌నెట్ మరియు టెస్ట్‌నెట్‌ల కోసం వికేంద్రీకృత ఎపిఐలు._** + +- [blastapi.io](https://blastapi.io/) +- [డాక్యుమెంటేషన్](https://docs.blastapi.io) +- [డిస్కార్డ్](https://discord.gg/SaRqmRUjjQ) + +**బ్లాక్‌పై -** **_మరింత సమర్థవంతమైన మరియు వేగవంతమైన RPC సేవలను అందించండి_** + +- [blockpi.io](https://blockpi.io/) +- [డాక్యుమెంటేషన్](https://docs.blockpi.io/) +- [GitHub](https://github.com/BlockPILabs) +- [డిస్కార్డ్](https://discord.com/invite/xTvGVrGVZv) + +**క్లౌడ్‌ఫ్లేర్ ఇతీరియము గేట్‌వే.** + +- [cloudflare-eth.com](https://www.cloudflare.com/application-services/products/web3/) + +**ఈథర్‌స్కాన్ - బ్లాక్ ఎక్స్‌ప్లోరర్ మరియు లావాదేవీల ఎపిఐలు** + +- [డాక్యుమెంటేషన్](https://docs.etherscan.io/) + +**బ్లాక్‌స్కౌట్ - ఓపెన్ సోర్స్ బ్లాక్ ఎక్స్‌ప్లోరర్** + +- [డాక్యుమెంటేషన్](https://docs.blockscout.com/) + +**గెట్‌బ్లాక్-** **_వెబ్3 అభివృద్ధి కోసం బ్లాక్ చైను-యాస్-ఎ-సర్వీస్_** + +- [GetBlock.io](https://getblock.io/) +- [డాక్యుమెంటేషన్](https://docs.getblock.io/) + +**ఇన్‌ఫ్యూరా -** **_సేవగా ఇతీరియము ఎపిఐ._** + +- [infura.io](https://infura.io) +- [డాక్యుమెంటేషన్](https://docs.infura.io/api) +- [GitHub](https://github.com/INFURA) + +**నోడ్ RPC - _ఖర్చు-సమర్థవంతమైన EVM JSON-RPC ప్రొవైడర్_** + +- [noderpc.xyz](https://www.noderpc.xyz/) +- [డాక్యుమెంటేషన్](https://docs.noderpc.xyz/node-rpc) + +**నౌనోడ్స్ - _పూర్తి నోడ్లు మరియు బ్లాక్ ఎక్స్‌ప్లోరర్లు._** + +- [NOWNodes.io](https://nownodes.io/) +- [డాక్యుమెంటేషన్](https://nownodes.gitbook.io/documentation) + +**క్విక్‌నోడ్ -** **_బ్లాక్ చైను ఇన్‌ఫ్రాస్ట్రక్చర్ యాజ్ ఎ సర్వీస్._** + +- [quicknode.com](https://quicknode.com) +- [డాక్యుమెంటేషన్](https://www.quicknode.com/docs/welcome) +- [డిస్కార్డ్](https://discord.gg/quicknode) + +**రివెట్ -** **_ఓపెన్ సోర్స్ సాఫ్ట్‌వేర్ ద్వారా ఆధారితమైన సేవగా ఇతీరియము మరియు ఇతీరియము క్లాసిక్ ఎపిఐలు._** + +- [rivet.cloud](https://rivet.cloud) +- [డాక్యుమెంటేషన్](https://rivet.cloud/docs/) +- [GitHub](https://github.com/openrelayxyz/ethercattle-deployment) + +**జమోక్ -** **_JSON-RPC/WebSockets ఎపిఐగా వేగ-ఆధారిత ఇతీరియము నోడ్‌లు._** + +- [zmok.io](https://zmok.io/) +- [GitHub](https://github.com/zmok-io) +- [డాక్యుమెంటేషన్](https://docs.zmok.io/) +- [డిస్కార్డ్](https://discord.gg/fAHeh3ka6s) + +### అభివృద్ధి ఉపకరణాలు {#development-tools} + +**ethers-kt -** **_EVM-ఆధారిత బ్లాక్‌చైన్‌ల కోసం అసింక్, అధిక-పనితీరు గల కోట్లిన్/జావా/ఆండ్రాయిడ్ లైబ్రరీ._** + +- [GitHub](https://github.com/Kr1ptal/ethers-kt) +- [ఉదాహరణలు](https://github.com/Kr1ptal/ethers-kt/tree/master/examples) +- [Discord](https://discord.gg/rx35NzQGSb) + +**నెథెరియమ్ -** **_బ్లాక్ చైను కోసం ఒక ఓపెన్ సోర్స్ .NET ఇంటిగ్రేషన్ లైబ్రరీ._** + +- [GitHub](https://github.com/Nethereum/Nethereum) +- [డాక్యుమెంటేషన్](http://docs.nethereum.com/en/latest/) +- [డిస్కార్డ్](https://discord.com/invite/jQPrR58FxX) + +**పైథాన్ టూలింగ్ -** **_పైథాన్ ద్వారా ఇతీరియము సంభాషణ కోసం వివిధ లైబ్రరీలు._** + +- [py.ethereum.org](https://snakecharmers.ethereum.org/) +- [web3.py GitHub](https://github.com/ethereum/web3.py) +- [web3.py చాట్](https://gitter.im/ethereum/web3.py) + +**టాటమ్ -** **_అంతిమ బ్లాక్ చైను అభివృద్ధి ప్లాట్‌ఫారమ్._** + +- [Tatum](https://tatum.io/) +- [GitHub](https://github.com/tatumio/) +- [డాక్యుమెంటేషన్](https://docs.tatum.io/) +- [డిస్కార్డ్](https://discord.gg/EDmW3kjTC9) + +**web3j -** **_ఇతీరియము కోసం ఒక జావా/ఆండ్రాయిడ్/కోట్లిన్/స్కాలా ఇంటిగ్రేషన్ లైబ్రరీ._** + +- [GitHub](https://github.com/web3j/web3j) +- [డాక్స్](https://docs.web3j.io/) +- [Gitter](https://gitter.im/web3j/web3j) + +### బ్లాక్ చైను సేవలు {#blockchain-services} + +**బ్లాక్‌సైఫర్ -** **_ఇతీరియము వెబ్ ఎపిఐలు._** + +- [blockcypher.com](https://www.blockcypher.com/) +- [డాక్యుమెంటేషన్](https://www.blockcypher.com/dev/ethereum/) + +**చైన్‌బేస్ -** **_ఇతీరియము కోసం ఆల్-ఇన్-వన్ వెబ్3 డేటా మౌలిక సదుపాయాలు._** + +- [chainbase.com](https://chainbase.com/) +- [డాక్యుమెంటేషన్](https://docs.chainbase.com/) +- [డిస్కార్డ్](https://discord.gg/Wx6qpqz4AF) + +**చైన్‌స్టాక్ -** **_సేవగా సాగే మరియు అంకితమైన ఇతీరియము నోడ్‌లు._** + +- [chainstack.com](https://chainstack.com) +- [డాక్యుమెంటేషన్](https://docs.chainstack.com/) +- [ఇతీరియము ఎపిఐ రిఫరెన్స్](https://docs.chainstack.com/reference/ethereum-getting-started) + +**కాయిన్‌బేస్ క్లౌడ్ నోడ్ -** **_బ్లాక్ చైను మౌలిక సదుపాయాల ఎపిఐ._** + +- [కాయిన్‌బేస్ క్లౌడ్ నోడ్](https://www.coinbase.com/developer-platform) +- [డాక్యుమెంటేషన్](https://docs.cdp.coinbase.com/) + +**ఫిగ్‌మెంట్ ద్వారా డేటాహబ్ -** **_ఇతీరియము మెయిన్‌నెట్ మరియు టెస్ట్‌నెట్‌లతో వెబ్3 ఎపిఐ సేవలు._** + +- [DataHub](https://www.figment.io/) +- [డాక్యుమెంటేషన్](https://docs.figment.io/) + +**మోరాలిస్ -** **_ఎంటర్‌ప్రైజ్-గ్రేడ్ EVM ఎపిఐ ప్రొవైడర్._** + +- [moralis.io](https://moralis.io) +- [డాక్యుమెంటేషన్](https://docs.moralis.io/) +- [GitHub](https://github.com/MoralisWeb3) +- [డిస్కార్డ్](https://moralis.io/joindiscord/) +- [ఫోరమ్](https://forum.moralis.io/) + +**NFTPort -** **_ఇతీరియము డేటా మరియు మింట్ ఎపిఐలు._** + +- [nftport.xyz](https://www.nftport.xyz/) +- [డాక్యుమెంటేషన్](https://docs.nftport.xyz/) +- [GitHub](https://github.com/nftport/) +- [డిస్కార్డ్](https://discord.com/invite/K8nNrEgqhE) + +**టోకెన్‌వ్యూ -** **_సాధారణ మల్టీ-క్రిప్టో బ్లాక్ చైను ఎపిఐల ప్లాట్‌ఫారమ్._** + +- [services.tokenview.io](https://services.tokenview.io/) +- [డాక్యుమెంటేషన్](https://services.tokenview.io/docs?type=api) +- [GitHub](https://github.com/Tokenview) + +**వాచ్‌డేటా -** **_ఇతీరియము బ్లాక్ చైనుకి సులభమైన మరియు నమ్మకమైన ఎపిఐ యాక్సెస్‌ను అందించండి._** + +- [Watchdata](https://watchdata.io/) +- [డాక్యుమెంటేషన్](https://docs.watchdata.io/) +- [డిస్కార్డ్](https://discord.com/invite/TZRJbZ6bdn) + +**కోవలెంట్ -** **_200+ చైన్‌ల కోసం సుసంపన్నమైన బ్లాక్ చైను ఎపిఐలు._** + +- [covalenthq.com](https://www.covalenthq.com/) +- [డాక్యుమెంటేషన్](https://www.covalenthq.com/docs/api/) +- [GitHub](https://github.com/covalenthq) +- [Discord](https://www.covalenthq.com/discord/) + +## మరింత సమాచారం {#further-reading} + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ + +## సంబంధిత అంశాలు {#related-topics} + +- [నోడ్‌లు మరియు క్లయింట్లు](/developers/docs/nodes-and-clients/) +- [అభివృద్ధి ఫ్రేమ్‌వర్క్‌లు](/developers/docs/frameworks/) + +## సంబంధిత ట్యుటోరియల్స్ {#related-tutorials} + +- [జావాస్క్రిప్ట్‌లో ఇతీరియము బ్లాక్ చైనును ఉపయోగించడానికి Web3js ను సెటప్ చేయండి](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– మీ ప్రాజెక్ట్‌లో web3.js ను సెటప్ చేయడానికి సూచనలు._ +- [జావాస్క్రిప్ట్ నుండి ఒక స్మార్ట్ కాంట్రాక్ట్‌ను పిలవడం](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– DAI టోకెన్‌ను ఉపయోగించి, జావాస్క్రిప్ట్‌ను ఉపయోగించి కాంట్రాక్ట్‌ల ఫంక్షన్‌ను ఎలా పిలవాలో చూడండి._ diff --git a/public/content/translations/te/developers/docs/apis/javascript/index.md b/public/content/translations/te/developers/docs/apis/javascript/index.md new file mode 100644 index 00000000000..32264683dfd --- /dev/null +++ b/public/content/translations/te/developers/docs/apis/javascript/index.md @@ -0,0 +1,289 @@ +--- +title: "జావాస్క్రిప్ట్ API లైబ్రరీలు" +description: "మీ అప్లికేషన్ నుండి బ్లాక్‌చెయిన్‌తో సంభాషించడానికి మిమ్మల్ని అనుమతించే జావాస్క్రిప్ట్ క్లయింట్ లైబ్రరీలకు ఒక పరిచయం." +lang: te +--- + +ఒక వెబ్ యాప్ ఇతీరియము బ్లాక్‌చెయిన్‌తో సంభాషించడానికి (అనగా, బ్లాక్‌చెయిన్ డేటాను చదవడం మరియు/లేదా నెట్‌వర్క్‌కు లావాదేవీలను పంపడం), అది తప్పనిసరిగా ఒక ఇతీరియము నోడ్‌కు కనెక్ట్ అవ్వాలి. + +ఈ ప్రయోజనం కోసం, ప్రతి ఇతీరియము క్లయింట్ [JSON-RPC](/developers/docs/apis/json-rpc/) స్పెసిఫికేషన్‌ను అమలు చేస్తుంది, కాబట్టి అప్లికేషన్‌లు ఆధారపడగల ఏకరూప [పద్ధతుల](/developers/docs/apis/json-rpc/#json-rpc-methods) సమితి ఉంది. + +మీరు ఒక ఇతీరియము నోడ్‌కు కనెక్ట్ అవ్వడానికి జావాస్క్రిప్ట్ ఉపయోగించాలనుకుంటే, వనిల్లా జావాస్క్రిప్ట్‌ను ఉపయోగించడం సాధ్యమే, కానీ పర్యావరణ వ్యవస్థలో దీన్ని చాలా సులభతరం చేసే అనేక సౌలభ్య లైబ్రరీలు ఉన్నాయి. ఈ లైబ్రరీలతో, డెవలపర్లు ఇతీరియముతో సంభాషించే JSON-RPC అభ్యర్థనలను (తెరవెనుక) ప్రారంభించడానికి, స్పష్టమైన, ఒక-వరుస పద్ధతులను వ్రాయగలరు. + +దయచేసి గమనించండి, [ది మెర్జ్](/roadmap/merge/) నుండి, ఒక నోడ్‌ను అమలు చేయడానికి రెండు అనుసంధానించబడిన ఇతీరియము సాఫ్ట్‌వేర్ భాగాలు - ఒక ఎగ్జిక్యూషన్ క్లయింట్ మరియు ఒక ఏకాభిప్రాయం క్లయింట్ - అవసరం. దయచేసి మీ నోడ్‌లో ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయం క్లయింట్లు రెండూ ఉన్నాయని నిర్ధారించుకోండి. మీ నోడ్ మీ స్థానిక మెషీన్‌లో లేకపోతే (ఉదాహరణకు, మీ నోడ్ ఒక AWS ఇన్‌స్టాన్స్‌లో నడుస్తుంటే), ట్యుటోరియల్‌లోని IP చిరునామాలను తదనుగుణంగా అప్‌డేట్ చేయండి. మరింత సమాచారం కోసం, దయచేసి [ఒక నోడ్‌ను అమలు చేయడం](/developers/docs/nodes-and-clients/run-a-node/)పై మా పేజీని చూడండి. + +## అవసరాలు {#prerequisites} + +జావాస్క్రిప్ట్‌ను అర్థం చేసుకోవడంతో పాటు, [ఇతీరియము స్టాక్](/developers/docs/ethereum-stack/) మరియు [ఇతీరియము క్లయింట్లు](/developers/docs/nodes-and-clients/)ను అర్థం చేసుకోవడం సహాయకరంగా ఉంటుంది. + +## ఒక లైబ్రరీని ఎందుకు ఉపయోగించాలి? {#why-use-a-library} + +ఈ లైబ్రరీలు ఇతీరియము నోడ్‌తో నేరుగా సంభాషించడంలో ఉన్న సంక్లిష్టతను చాలా వరకు సంగ్రహిస్తాయి. అవి యుటిలిటీ ఫంక్షన్‌లను (ఉదా., ETHని Gweiకి మార్చడం) కూడా అందిస్తాయి, కాబట్టి డెవలపర్‌గా మీరు ఇతీరియము క్లయింట్‌ల చిక్కులతో తక్కువ సమయం గడపవచ్చు మరియు మీ అప్లికేషన్ యొక్క ప్రత్యేకమైన కార్యాచరణపై ఎక్కువ దృష్టి పెట్టవచ్చు. + +## లైబ్రరీ ఫీచర్లు {#library-features} + +### ఇతీరియము నోడ్‌లకు కనెక్ట్ అవ్వండి {#connect-to-ethereum-nodes} + +ప్రొవైడర్లను ఉపయోగించి, ఈ లైబ్రరీలు మిమ్మల్ని ఇతీరియముకు కనెక్ట్ చేయడానికి మరియు దాని డేటాను చదవడానికి అనుమతిస్తాయి, అది JSON-RPC, INFURA, Etherscan, Alchemy లేదా MetaMask ద్వారా అయినా. + +> **హెచ్చరిక:** Web3.js మార్చి 4, 2025న ఆర్కైవ్ చేయబడింది. [ప్రకటనను చదవండి](https://blog.chainsafe.io/web3-js-sunset/). కొత్త ప్రాజెక్ట్‌ల కోసం [ethers.js](https://ethers.org) లేదా [viem](https://viem.sh) వంటి ప్రత్యామ్నాయ లైబ్రరీలను ఉపయోగించడాన్ని పరిగణించండి. + +**Ethers ఉదాహరణ** + +```js +// ఒక బ్రౌజర్‌ప్రొవైడర్ ఒక ప్రామాణిక Web3 ప్రొవైడర్‌ను చుట్టి ఉంటుంది, ఇది +// MetaMask ప్రతి పేజీలోకి window.ethereumగా ఇంజెక్ట్ చేస్తుంది +const provider = new ethers.BrowserProvider(window.ethereum) + +// MetaMask ప్లగిన్ లావాదేవీలపై సంతకం చేయడానికి కూడా అనుమతిస్తుంది +// ఈథర్ పంపడానికి మరియు బ్లాక్‌చెయిన్‌లో స్థితిని మార్చడానికి చెల్లించడానికి. +// దీని కోసం, మనకు ఖాతా సంతకం చేసేవారు అవసరం... +const signer = provider.getSigner() +``` + +**Web3js ఉదాహరణ** + +```js +var web3 = new Web3("http://localhost:8545") +// లేదా +var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")) + +// ప్రొవైడర్‌ను మార్చండి +web3.setProvider("ws://localhost:8546") +// లేదా +web3.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8546")) + +// node.jsలో IPC ప్రొవైడర్‌ను ఉపయోగించడం +var net = require("net") +var web3 = new Web3("/Users/myuser/Library/Ethereum/geth.ipc", net) // mac os పాత్ +// లేదా +var web3 = new Web3( + new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net) +) // mac os పాత్ +// windowsలో పాత్: "\\\\.\\pipe\\geth.ipc" +// linuxలో పాత్: "/users/myuser/.ethereum/geth.ipc" +``` + +ఒకసారి సెటప్ చేసిన తర్వాత మీరు బ్లాక్‌చెయిన్‌ను వీటి కోసం ప్రశ్నించగలరు: + +- బ్లాక్ నంబర్లు +- గ్యాస్ అంచనాలు +- స్మార్ట్ కాంట్రాక్ట్ ఈవెంట్‌లు +- నెట్‌వర్క్ ఐడి +- ఇంకా మరిన్ని... + +### వాలెట్ ఫంక్షనాలిటీ {#wallet-functionality} + +ఈ లైబ్రరీలు మీకు వాలెట్‌లను సృష్టించడానికి, కీలను నిర్వహించడానికి మరియు లావాదేవీలపై సంతకం చేయడానికి ఫంక్షనాలిటీని అందిస్తాయి. + +Ethers నుండి ఒక ఉదాహరణ ఇక్కడ ఉంది + +```js +// ఒక నిమోనిక్ నుండి వాలెట్ ఉదాహరణను సృష్టించండి... +mnemonic = + "announce room limb pattern dry unit scale effort smooth jazz weasel alcohol" +walletMnemonic = Wallet.fromPhrase(mnemonic) + +// ...లేదా ఒక ప్రైవేట్ కీ నుండి +walletPrivateKey = new Wallet(walletMnemonic.privateKey) + +walletMnemonic.address === walletPrivateKey.address +// నిజం + +// సైனர் API ప్రకారం ఒక ప్రామిస్‌గా చిరునామా +walletMnemonic.getAddress() +// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' } + +// ఒక వాలెట్ చిరునామా సింక్రొనస్‌గా కూడా అందుబాటులో ఉంది +walletMnemonic.address +// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' + +// అంతర్గత క్రిప్టోగ్రాఫిక్ భాగాలు +walletMnemonic.privateKey +// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db' +walletMnemonic.publicKey +// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64' + +// వాలెట్ నిమోనిక్ +walletMnemonic.mnemonic +// { +// locale: 'en', +// path: 'm/44\'/60\'/0\'/0/0', +// phrase: 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol' +// } + +// గమనిక: ఒక ప్రైవేట్ కీతో సృష్టించబడిన వాలెట్‌కు +// నిమోనిక్ ఉండదు (ఉత్పన్నం దానిని నిరోధిస్తుంది) +walletPrivateKey.mnemonic +// null + +// ఒక సందేశంపై సంతకం చేయడం +walletMnemonic.signMessage("Hello World") +// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' } + +tx = { + to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72", + value: utils.parseEther("1.0"), +} + +// ఒక లావాదేవీపై సంతకం చేయడం +walletMnemonic.signTransaction(tx) +// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' } + +// కనెక్ట్ పద్ధతి ఒక కొత్త ఉదాహరణను అందిస్తుంది +// ఒక ప్రొవైడర్‌కు కనెక్ట్ చేయబడిన వాలెట్ +wallet = walletMnemonic.connect(provider) + +// నెట్‌వర్క్‌ను ప్రశ్నించడం +wallet.getBalance() +// { Promise: { BigNumber: "42" } } +wallet.getTransactionCount() +// { Promise: 0 } + +// ఈథర్‌ను పంపడం +wallet.sendTransaction(tx) +``` + +[పూర్తి డాక్స్‌ను చదవండి](https://docs.ethers.io/v5/api/signer/#Wallet) + +ఒకసారి సెటప్ చేసిన తర్వాత మీరు వీటిని చేయగలరు: + +- ఖాతాలను సృష్టించండి +- లావాదేవీలను పంపండి +- లావాదేవీలపై సంతకం చేయండి +- ఇంకా మరిన్ని... + +### స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌లతో సంభాషించండి {#interact-with-smart-contract-functions} + +జావాస్క్రిప్ట్ క్లయింట్ లైబ్రరీలు, కంపైల్ చేయబడిన కాంట్రాక్ట్ యొక్క అప్లికేషన్ బైనరీ ఇంటర్‌ఫేస్ (ABI)ని చదవడం ద్వారా, స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌లను పిలవడానికి మీ అప్లికేషన్‌ను అనుమతిస్తాయి. + +ABI ముఖ్యంగా కాంట్రాక్ట్ యొక్క ఫంక్షన్‌లను JSON ఫార్మాట్‌లో వివరిస్తుంది మరియు దానిని ఒక సాధారణ జావాస్క్రిప్ట్ ఆబ్జెక్ట్ లాగా ఉపయోగించడానికి మిమ్మల్ని అనుమతిస్తుంది. + +కాబట్టి కింది Solidity కాంట్రాక్ట్: + +```solidity +contract Test { + uint a; + address d = 0x12345678901234567890123456789012; + + constructor(uint testInt) { a = testInt;} + + event Event(uint indexed b, bytes32 c); + + event Event2(uint indexed b, bytes32 c); + + function foo(uint b, bytes32 c) returns(address) { + Event(b, c); + return d; + } +} +``` + +కింది JSON ఫలితంగా వస్తుంది: + +```json +[{ + "type":"constructor", + "payable":false, + "stateMutability":"nonpayable" + "inputs":[{"name":"testInt","type":"uint256"}], + },{ + "type":"function", + "name":"foo", + "constant":false, + "payable":false, + "stateMutability":"nonpayable", + "inputs":[{"name":"b","type":"uint256"}, {"name":"c","type":"bytes32"}], + "outputs":[{"name":"","type":"address"}] + },{ + "type":"event", + "name":"Event", + "inputs":[{"indexed":true,"name":"b","type":"uint256"}, {"indexed":false,"name":"c","type":"bytes32"}], + "anonymous":false + },{ + "type":"event", + "name":"Event2", + "inputs":[{"indexed":true,"name":"b","type":"uint256"},{"indexed":false,"name":"c","type":"bytes32"}], + "anonymous":false +}] +``` + +దీని అర్థం మీరు వీటిని చేయగలరు: + +- స్మార్ట్ కాంట్రాక్ట్‌కు లావాదేవీని పంపి, దాని పద్ధతిని అమలు చేయండి +- EVMలో అమలు చేసినప్పుడు ఒక పద్ధతి అమలుకు ఎంత గ్యాస్ పడుతుందో అంచనా వేయడానికి కాల్ చేయండి +- ఒక కాంట్రాక్ట్‌ను అమలు చేయండి +- ఇంకా మరిన్ని... + +### యుటిలిటీ ఫంక్షన్‌లు {#utility-functions} + +యుటిలిటీ ఫంక్షన్‌లు మీకు సులభమైన సత్వరమార్గాలను అందిస్తాయి, ఇవి ఇతీరియముతో నిర్మించడాన్ని కొంచెం సులభతరం చేస్తాయి. + +ETH విలువలు డిఫాల్ట్‌గా Weiలో ఉంటాయి. 1 ETH = 1,000,000,000,000,000,000 WEI – దీని అర్థం మీరు చాలా సంఖ్యలతో వ్యవహరిస్తున్నారు! `web3.utils.toWei` మీ కోసం ఈథర్‌ను Weiకి మారుస్తుంది. + +మరియు ethersలో ఇది ఇలా కనిపిస్తుంది: + +```js +// ఒక ఖాతా బ్యాలెన్స్‌ను పొందండి (చిరునామా లేదా ENS పేరు ద్వారా) +balance = await provider.getBalance("ethers.eth") +// { BigNumber: "2337132817842795605" } + +// తరచుగా మీరు వినియోగదారు కోసం అవుట్‌పుట్‌ను ఫార్మాట్ చేయవలసి ఉంటుంది +// వారు విలువలను ఈథర్‌లో (weiకి బదులుగా) చూడటానికి ఇష్టపడతారు +ethers.utils.formatEther(balance) +// '2.337132817842795605' +``` + +- [Web3js యుటిలిటీ ఫంక్షన్‌లు](https://docs.web3js.org/api/web3-utils) +- [Ethers యుటిలిటీ ఫంక్షన్‌లు](https://docs.ethers.org/v6/api/utils/) + +## అందుబాటులో ఉన్న లైబ్రరీలు {#available-libraries} + +**Web3.js -** **_ఇతీరియము జావాస్క్రిప్ట్ API._** + +- [డాక్యుమెంటేషన్](https://docs.web3js.org) +- [GitHub](https://github.com/ethereum/web3.js) + +**Ethers.js -** **_జావాస్క్రిప్ట్ మరియు టైప్‌స్క్రిప్ట్‌లో పూర్తి ఇతీరియము వాలెట్ అమలు మరియు యుటిలిటీలు._** + +- [Ethers.js హోమ్](https://ethers.org/) +- [డాక్యుమెంటేషన్](https://docs.ethers.io) +- [GitHub](https://github.com/ethers-io/ethers.js) + +**The Graph -** **_ఇతీరియము మరియు IPFS డేటాను ఇండెక్స్ చేయడానికి మరియు దానిని GraphQL ఉపయోగించి ప్రశ్నించడానికి ఒక ప్రోటోకాల్._** + +- [The Graph](https://thegraph.com) +- [Graph Explorer](https://thegraph.com/explorer) +- [డాక్యుమెంటేషన్](https://thegraph.com/docs) +- [GitHub](https://github.com/graphprotocol) +- [Discord](https://thegraph.com/discord) + +**Alchemy SDK -** **_మెరుగుపరచబడిన APIలతో Ethers.js చుట్టూ ఉన్న వ్రాపర్._** + +- [డాక్యుమెంటేషన్](https://www.alchemy.com/docs) +- [GitHub](https://github.com/alchemyplatform/alchemy-sdk-js) + +**viem -** **_ఇతీరియము కోసం టైప్‌స్క్రిప్ట్ ఇంటర్‌ఫేస్._** + +- [డాక్యుమెంటేషన్](https://viem.sh) +- [GitHub](https://github.com/wagmi-dev/viem) + +**Drift -** **_అంతర్నిర్మిత కాషింగ్, హుక్స్ మరియు టెస్ట్ మాక్స్‌తో కూడిన టైప్‌స్క్రిప్ట్ మెటా-లైబ్రరీ._** + +- [డాక్యుమెంటేషన్](https://ryangoree.github.io/drift/) +- [GitHub](https://github.com/ryangoree/drift/) + +## మరింత సమాచారం {#further-reading} + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ + +## సంబంధిత అంశాలు {#related-topics} + +- [నోడ్‌లు మరియు క్లయింట్లు](/developers/docs/nodes-and-clients/) +- [అభివృద్ధి ఫ్రేమ్‌వర్క్‌లు](/developers/docs/frameworks/) + +## సంబంధిత ట్యుటోరియల్స్ {#related-tutorials} + +- [జావాస్క్రిప్ట్‌లో ఇతీరియము బ్లాక్ చైనును ఉపయోగించడానికి Web3js ను సెటప్ చేయండి](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– మీ ప్రాజెక్ట్‌లో web3.js ను సెటప్ చేయడానికి సూచనలు._ +- [జావాస్క్రిప్ట్ నుండి ఒక స్మార్ట్ కాంట్రాక్ట్‌ను పిలవడం](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– DAI టోకెన్‌ను ఉపయోగించి, జావాస్క్రిప్ట్‌ను ఉపయోగించి కాంట్రాక్ట్‌ల ఫంక్షన్‌ను ఎలా పిలవాలో చూడండి._ +- [web3 మరియు Alchemy ఉపయోగించి లావాదేవీలను పంపడం](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) _– బ్యాకెండ్ నుండి లావాదేవీలను పంపడం కోసం దశల వారీ వివరణ._ diff --git a/public/content/translations/te/developers/docs/apis/json-rpc/index.md b/public/content/translations/te/developers/docs/apis/json-rpc/index.md new file mode 100644 index 00000000000..dc3ed78a858 --- /dev/null +++ b/public/content/translations/te/developers/docs/apis/json-rpc/index.md @@ -0,0 +1,1898 @@ +--- +title: "JSON-RPC ఎపిఐ" +description: "ఇతీరియము క్లయింట్ల కోసం ఒక స్టేట్‌లెస్, తేలికైన రిమోట్ ప్రొసీజర్ కాల్ (RPC) ప్రోటోకాల్." +lang: te +--- + +ఒక సాఫ్ట్‌వేర్ అప్లికేషన్ ఇతీరియము బ్లాక్‌చెయిన్‌తో పరస్పరం చర్య జరపడానికి - బ్లాక్‌చెయిన్ డేటాను చదవడం ద్వారా లేదా నెట్‌వర్క్‌కు లావాదేవీలను పంపడం ద్వారా - ఇది తప్పనిసరిగా ఇతీరియము నోడ్‌కు కనెక్ట్ అవ్వాలి. + +ఈ ప్రయోజనం కోసం, ప్రతి [ఇతీరియము క్లయింట్](/developers/docs/nodes-and-clients/#execution-clients) ఒక [JSON-RPC స్పెసిఫికేషన్‌ను](https://github.com/ethereum/execution-apis) అమలు చేస్తుంది, కాబట్టి నిర్దిష్ట నోడ్ లేదా క్లయింట్ అమలుతో సంబంధం లేకుండా అప్లికేషన్‌లు ఆధారపడగల పద్ధతుల యొక్క ఏకరీతి సెట్ ఉంది. + +[JSON-RPC](https://www.jsonrpc.org/specification) ఒక స్టేట్‌లెస్, తేలికైన రిమోట్ ప్రొసీజర్ కాల్ (RPC) ప్రోటోకాల్. ఇది అనేక డేటా స్ట్రక్చర్‌లను మరియు వాటి ప్రాసెసింగ్ చుట్టూ ఉన్న నియమాలను నిర్వచిస్తుంది. ఇది ట్రాన్స్‌పోర్ట్ అజ్ఞేయవాది, దీనిలో భావనలను ఒకే ప్రక్రియలో, సాకెట్‌ల ద్వారా, HTTP ద్వారా లేదా అనేక రకాల మెసేజ్ పాసింగ్ వాతావరణాలలో ఉపయోగించవచ్చు. ఇది JSON (RFC 4627)ని డేటా ఫార్మాట్‌గా ఉపయోగిస్తుంది. + +## క్లయింట్ అమలులు {#client-implementations} + +JSON-RPC స్పెసిఫికేషన్‌ను అమలు చేసేటప్పుడు ఇతీరియము క్లయింట్లు ప్రతి ఒక్కరూ విభిన్న ప్రోగ్రామింగ్ భాషలను ఉపయోగించుకోవచ్చు. నిర్దిష్ట ప్రోగ్రామింగ్ భాషలకు సంబంధించిన మరిన్ని వివరాల కోసం వ్యక్తిగత [క్లయింట్ డాక్యుమెంటేషన్‌ను](/developers/docs/nodes-and-clients/#execution-clients) చూడండి. తాజా ఎపిఐ మద్దతు సమాచారం కోసం ప్రతి క్లయింట్ యొక్క డాక్యుమెంటేషన్‌ను తనిఖీ చేయాలని మేము సిఫార్సు చేస్తున్నాము. + +## సౌకర్యవంతమైన లైబ్రరీలు {#convenience-libraries} + +మీరు JSON-RPC ఎపిఐ ద్వారా నేరుగా ఇతీరియము క్లయింట్లతో ఇంటరాక్ట్ అవ్వాలని ఎంచుకోవచ్చు, కానీ డాప్ డెవలపర్‌లకు తరచుగా సులభమైన ఎంపికలు ఉన్నాయి. JSON-RPC ఎపిఐ పైన వ్రాపర్‌లను అందించడానికి అనేక [JavaScript](/developers/docs/apis/javascript/#available-libraries) మరియు [బ్యాకెండ్ API](/developers/docs/apis/backend/#available-libraries) లైబ్రరీలు ఉన్నాయి. ఈ లైబ్రరీలతో, డెవలపర్‌లు ఇతీరియముతో పరస్పర చర్య జరిపే JSON-RPC అభ్యర్థనలను (తెర వెనుక) ప్రారంభించడానికి వారు ఎంచుకున్న ప్రోగ్రామింగ్ భాషలో సహజమైన, ఒక-లైన్ పద్ధతులను వ్రాయగలరు. + +## ఏకాభిప్రాయం క్లయింట్ ఎపిఐలు {#consensus-clients} + +ఈ పేజీ ప్రధానంగా ఇతీరియము ఎగ్జిక్యూషన్ క్లయింట్లు ఉపయోగించే JSON-RPC ఎపిఐతో వ్యవహరిస్తుంది. అయితే, ఏకాభిప్రాయం క్లయింట్లకు RPC ఎపిఐ కూడా ఉంది, ఇది వినియోగదారులను నోడ్ గురించి సమాచారాన్ని ప్రశ్నించడానికి, బీకాన్ బ్లాక్‌లు, బీకాన్ స్థితి మరియు ఇతర ఏకాభిప్రాయం-సంబంధిత సమాచారాన్ని నేరుగా నోడ్ నుండి అభ్యర్థించడానికి అనుమతిస్తుంది. ఈ ఎపిఐ [బీకాన్ ఎపిఐ వెబ్‌పేజీ](https://ethereum.github.io/beacon-APIs/#/)లో డాక్యుమెంట్ చేయబడింది. + +ఒక నోడ్‌లోని ఇంటర్-క్లయింట్ కమ్యూనికేషన్ కోసం అంతర్గత ఎపిఐ కూడా ఉపయోగించబడుతుంది - అంటే, ఇది ఏకాభిప్రాయం క్లయింట్ మరియు ఎగ్జిక్యూషన్ క్లయింట్ డేటాను మార్పిడి చేయడానికి వీలు కల్పిస్తుంది. దీనిని 'ఇంజిన్ ఎపిఐ' అని పిలుస్తారు మరియు స్పెక్స్ [GitHub](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md)లో అందుబాటులో ఉన్నాయి. + +## ఎగ్జిక్యూషన్ క్లయింట్ స్పెక్ {#spec} + +[GitHubలో పూర్తి JSON-RPC ఎపిఐ స్పెక్ చదవండి](https://github.com/ethereum/execution-apis). ఈ ఎపిఐ [ఎగ్జిక్యూషన్ ఎపిఐ వెబ్‌పేజీ](https://ethereum.github.io/execution-apis/)లో డాక్యుమెంట్ చేయబడింది మరియు అందుబాటులో ఉన్న అన్ని పద్ధతులను ప్రయత్నించడానికి ఒక ఇన్‌స్పెక్టర్‌ను కలిగి ఉంటుంది. + +## నియమాలు {#conventions} + +### హెక్స్ విలువ ఎన్‌కోడింగ్ {#hex-encoding} + +రెండు కీ డేటా రకాలు JSON ద్వారా పంపబడతాయి: ఫార్మాట్ చేయని బైట్ శ్రేణులు మరియు పరిమాణాలు. రెండూ హెక్స్ ఎన్‌కోడింగ్‌తో పంపబడతాయి కానీ ఫార్మాటింగ్ కోసం విభిన్న అవసరాలతో ఉంటాయి. + +#### పరిమాణాలు {#quantities-encoding} + +పరిమాణాలను (పూర్ణాంకాలు, సంఖ్యలు) ఎన్‌కోడ్ చేస్తున్నప్పుడు: హెక్స్‌గా ఎన్‌కోడ్ చేయండి, "0x"తో ప్రిఫిక్స్ చేయండి, అత్యంత కాంపాక్ట్ ప్రాతినిధ్యం (చిన్న మినహాయింపు: సున్నాని "0x0"గా సూచించాలి). + +ఇక్కడ కొన్ని ఉదాహరణలు ఉన్నాయి: + +- 0x41 (దశాంశంలో 65) +- 0x400 (దశాంశంలో 1024) +- తప్పు: 0x (ఎల్లప్పుడూ కనీసం ఒక అంకె ఉండాలి - సున్నా "0x0") +- తప్పు: 0x0400 (ముందు సున్నాలు అనుమతించబడవు) +- తప్పు: ff (0x ప్రిఫిక్స్ చేయాలి) + +### ఫార్మాట్ చేయని డేటా {#unformatted-data-encoding} + +ఫార్మాట్ చేయని డేటాను (బైట్ శ్రేణులు, ఖాతా చిరునామాలు, హాష్‌లు, బైట్‌కోడ్ శ్రేణులు) ఎన్‌కోడ్ చేస్తున్నప్పుడు: హెక్స్‌గా ఎన్‌కోడ్ చేయండి, "0x"తో ప్రిఫిక్స్ చేయండి, ప్రతి బైట్‌కు రెండు హెక్స్ అంకెలు. + +ఇక్కడ కొన్ని ఉదాహరణలు ఉన్నాయి: + +- 0x41 (పరిమాణం 1, "A") +- 0x004200 (పరిమాణం 3, "0B0") +- 0x (పరిమాణం 0, "") +- తప్పు: 0xf0f0f (సరి సంఖ్యలో అంకెలు ఉండాలి) +- తప్పు: 004200 (0x ప్రిఫిక్స్ చేయాలి) + +### బ్లాక్ పారామీటర్ {#block-parameter} + +కింది పద్ధతులు బ్లాక్ పారామీటర్‌ను కలిగి ఉంటాయి: + +- [eth_getBalance](#eth_getbalance) +- [eth_getCode](#eth_getcode) +- [eth_getTransactionCount](#eth_gettransactioncount) +- [eth_getStorageAt](#eth_getstorageat) +- [eth_call](#eth_call) + +ఇతీరియము స్థితిని ప్రశ్నించే అభ్యర్థనలు చేసినప్పుడు, అందించిన బ్లాక్ పారామీటర్ బ్లాక్ యొక్క ఎత్తును నిర్ధారిస్తుంది. + +బ్లాక్ పారామీటర్ కోసం కింది ఎంపికలు సాధ్యమవుతాయి: + +- `HEX స్ట్రింగ్` - ఒక పూర్ణాంక బ్లాక్ సంఖ్య +- తొలి/జన్మ బ్లాక్ కోసం `స్ట్రింగ్ "earliest"` +- తాజా ప్రతిపాదిత బ్లాక్ కోసం `స్ట్రింగ్ "latest"` +- తాజా సురక్షిత హెడ్ బ్లాక్ కోసం `స్ట్రింగ్ "safe"` +- తాజా ఖరారు చేయబడిన బ్లాక్ కోసం `స్ట్రింగ్ "finalized"` +- పెండింగ్‌లో ఉన్న స్థితి/లావాదేవీల కోసం `స్ట్రింగ్ "pending"` + +## ఉదాహరణలు + +ఈ పేజీలో మేము కమాండ్ లైన్ ఉపకరణం, [curl](https://curl.se) ఉపయోగించి వ్యక్తిగత JSON_RPC ఎపిఐ ఎండ్‌పాయింట్‌లను ఎలా ఉపయోగించాలో ఉదాహరణలు అందిస్తాము. ఈ వ్యక్తిగత ఎండ్‌పాయింట్ ఉదాహరణలు కింద [Curl ఉదాహరణలు](#curl-examples) విభాగంలో కనుగొనబడ్డాయి. పేజీలో మరింత కింద, గెత్ నోడ్, JSON_RPC ఎపిఐ మరియు curl ఉపయోగించి ఒక స్మార్ట్ కాంట్రాక్ట్‌ను కంపైల్ చేయడం మరియు డిప్లాయ్ చేయడం కోసం మేము ఒక [ఎండ్-టు-ఎండ్ ఉదాహరణను](#usage-example) కూడా అందిస్తాము. + +## Curl ఉదాహరణలు {#curl-examples} + +ఒక ఇతీరియము నోడ్‌కు [curl](https://curl.se) అభ్యర్థనలు చేయడం ద్వారా JSON_RPC ఎపిఐని ఉపయోగించడం యొక్క ఉదాహరణలు కింద అందించబడ్డాయి. ప్రతి ఉదాహరణ +నిర్దిష్ట ఎండ్‌పాయింట్ యొక్క వివరణ, దాని పారామీటర్లు, రిటర్న్ రకం మరియు దానిని ఎలా ఉపయోగించాలో ఒక పని చేసిన ఉదాహరణను కలిగి ఉంటుంది. + +curl అభ్యర్థనలు కంటెంట్ రకానికి సంబంధించి ఒక దోష మెసేజ్‌ను తిరిగి ఇవ్వవచ్చు. ఎందుకంటే `--data` ఎంపిక కంటెంట్ రకాన్ని `application/x-www-form-urlencoded`కి సెట్ చేస్తుంది. మీ నోడ్ దీని గురించి ఫిర్యాదు చేస్తే, కాల్ ప్రారంభంలో `-H "Content-Type: application/json"` ఉంచడం ద్వారా హెడర్‌ను మాన్యువల్‌గా సెట్ చేయండి. ఉదాహరణలలో URL/IP & పోర్ట్ కలయిక కూడా ఉండదు, ఇది curlకి ఇవ్వవలసిన చివరి ఆర్గ్యుమెంట్ అయి ఉండాలి (ఉదాహరణకు, `127.0.0.1:8545`). ఈ అదనపు డేటాను కలిగి ఉన్న పూర్తి curl అభ్యర్థన కింది రూపాన్ని తీసుకుంటుంది: + +```shell +curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' 127.0.0.1:8545 +``` + +## గాసిప్, స్థితి, చరిత్ర {#gossip-state-history} + +కొన్ని ప్రధాన JSON-RPC పద్ధతులకు ఇతీరియము నెట్‌వర్క్ నుండి డేటా అవసరం, మరియు అవి మూడు ప్రధాన వర్గాలుగా చక్కగా విభజించబడ్డాయి: _గాసిప్, స్థితి, మరియు చరిత్ర_. ప్రతి పద్ధతికి వెళ్లడానికి ఈ విభాగాల్లోని లింక్‌లను ఉపయోగించండి, లేదా పద్ధతుల పూర్తి జాబితాను అన్వేషించడానికి విషయ సూచికను ఉపయోగించండి. + +### గాసిప్ పద్ధతులు {#gossip-methods} + +> ఈ పద్ధతులు చైన్ యొక్క హెడ్‌ను ట్రాక్ చేస్తాయి. ఈ విధంగా లావాదేవీలు నెట్‌వర్క్ చుట్టూ తిరుగుతాయి, బ్లాక్‌లలోకి తమ మార్గాన్ని కనుగొంటాయి మరియు కొత్త బ్లాక్‌ల గురించి క్లయింట్లు ఎలా తెలుసుకుంటారో ఇది చూపిస్తుంది. + +- [eth_blockNumber](#eth_blocknumber) +- [eth_sendRawTransaction](#eth_sendrawtransaction) + +### స్థితి పద్ధతులు {#state_methods} + +> నిల్వ చేయబడిన మొత్తం డేటా యొక్క ప్రస్తుత స్థితిని నివేదించే పద్ధతులు. "స్థితి" అనేది ఒక పెద్ద షేర్డ్ RAM ముక్క లాంటిది, మరియు ఖాతా బ్యాలెన్స్‌లు, కాంట్రాక్ట్ డేటా మరియు గ్యాస్ అంచనాలను కలిగి ఉంటుంది. + +- [eth_getBalance](#eth_getbalance) +- [eth_getStorageAt](#eth_getstorageat) +- [eth_getTransactionCount](#eth_gettransactioncount) +- [eth_getCode](#eth_getcode) +- [eth_call](#eth_call) +- [eth_estimateGas](#eth_estimategas) + +### చరిత్ర పద్ధతులు {#history_methods} + +> జన్మ వరకు ప్రతి బ్లాక్ యొక్క చారిత్రక రికార్డులను పొందుతుంది. ఇది ఒక పెద్ద అనుబంధ-మాత్రమే ఫైల్ లాంటిది, మరియు అన్ని బ్లాక్ హెడర్‌లు, బ్లాక్ బాడీలు, అంకుల్ బ్లాక్‌లు మరియు లావాదేవీల రశీదులను కలిగి ఉంటుంది. + +- [eth_getBlockTransactionCountByHash](#eth_getblocktransactioncountbyhash) +- [eth_getBlockTransactionCountByNumber](#eth_getblocktransactioncountbynumber) +- [eth_getUncleCountByBlockHash](#eth_getunclecountbyblockhash) +- [eth_getUncleCountByBlockNumber](#eth_getunclecountbyblocknumber) +- [eth_getBlockByHash](#eth_getblockbyhash) +- [eth_getBlockByNumber](#eth_getblockbynumber) +- [eth_getTransactionByHash](#eth_gettransactionbyhash) +- [eth_getTransactionByBlockHashAndIndex](#eth_gettransactionbyblockhashandindex) +- [eth_getTransactionByBlockNumberAndIndex](#eth_gettransactionbyblocknumberandindex) +- [eth_getTransactionReceipt](#eth_gettransactionreceipt) +- [eth_getUncleByBlockHashAndIndex](#eth_getunclebyblockhashandindex) +- [eth_getUncleByBlockNumberAndIndex](#eth_getunclebyblocknumberandindex) + +## JSON-RPC ఎపిఐ ప్లేగ్రౌండ్ + +మీరు ఎపిఐ పద్ధతులను కనుగొనడానికి మరియు ప్రయత్నించడానికి [ప్లేగ్రౌండ్ ఉపకరణం](https://ethereum-json-rpc.com) ఉపయోగించవచ్చు. వివిధ నోడ్ ప్రొవైడర్ల ద్వారా ఏ పద్ధతులు మరియు నెట్‌వర్క్‌లకు మద్దతు ఉందో కూడా ఇది మీకు చూపిస్తుంది. + +## JSON-RPC ఎపిఐ పద్ధతులు {#json-rpc-methods} + +### web3_clientVersion {#web3_clientversion} + +ప్రస్తుత క్లయింట్ వెర్షన్‌ను తిరిగి ఇస్తుంది. + +**పారామితులు** + +ఏదీ లేదు + +**తిరిగి ఇస్తుంది** + +`స్ట్రింగ్` - ప్రస్తుత క్లయింట్ వెర్షన్ + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' +// ఫలితం +{ + "id":67, + "jsonrpc":"2.0", + "result": "Geth/v1.12.1-stable/linux-amd64/go1.19.1" +} +``` + +### web3_sha3 {#web3_sha3} + +ఇచ్చిన డేటా యొక్క కెకాక్-256 (ప్రమాణీకరించబడిన SHA3-256 _కాదు_) ని తిరిగి ఇస్తుంది. + +**పారామితులు** + +1. `DATA` - SHA3 హాష్‌గా మార్చవలసిన డేటా + +```js +params: ["0x68656c6c6f20776f726c64"] +``` + +**తిరిగి ఇస్తుంది** + +`DATA` - ఇచ్చిన స్ట్రింగ్ యొక్క SHA3 ఫలితం. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c64"],"id":64}' +// ఫలితం +{ + "id":64, + "jsonrpc": "2.0", + "result": "0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad" +} +``` + +### net_version {#net_version} + +ప్రస్తుత నెట్‌వర్క్ ఐడిని తిరిగి ఇస్తుంది. + +**పారామితులు** + +ఏదీ లేదు + +**తిరిగి ఇస్తుంది** + +`స్ట్రింగ్` - ప్రస్తుత నెట్‌వర్క్ ఐడి. + +ప్రస్తుత నెట్‌వర్క్ IDల పూర్తి జాబితా [chainlist.org](https://chainlist.org)లో అందుబాటులో ఉంది. కొన్ని సాధారణమైనవి: + +- `1`: ఇతీరియము మెయిన్‌నెట్ +- `11155111`: సెపోలియా టెస్టునెట్ +- `560048` : Hoodi టెస్టునెట్ + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":67}' +// ఫలితం +{ + "id":67, + "jsonrpc": "2.0", + "result": "3" +} +``` + +### net_listening {#net_listening} + +క్లయింట్ నెట్‌వర్క్ కనెక్షన్‌ల కోసం చురుకుగా వింటున్నట్లయితే `true`ని తిరిగి ఇస్తుంది. + +**పారామితులు** + +ఏదీ లేదు + +**తిరిగి ఇస్తుంది** + +`బూలియన్` - వింటున్నప్పుడు `true`, లేకపోతే `false`. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":67}' +// ఫలితం +{ + "id":67, + "jsonrpc":"2.0", + "result":true +} +``` + +### net_peerCount {#net_peercount} + +ప్రస్తుతం క్లయింట్‌కు కనెక్ట్ చేయబడిన పీర్‌ల సంఖ్యను తిరిగి ఇస్తుంది. + +**పారామితులు** + +ఏదీ లేదు + +**తిరిగి ఇస్తుంది** + +`QUANTITY` - కనెక్ట్ చేయబడిన పీర్‌ల సంఖ్య యొక్క పూర్ణాంకం. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":74}' +// ఫలితం +{ + "id":74, + "jsonrpc": "2.0", + "result": "0x2" // 2 +} +``` + +### eth_protocolVersion {#eth_protocolversion} + +ప్రస్తుత ఇతీరియము ప్రోటోకాల్ వెర్షన్‌ను తిరిగి ఇస్తుంది. ఈ పద్ధతి [Gethలో అందుబాటులో లేదని](https://github.com/ethereum/go-ethereum/pull/22064#issuecomment-788682924) గమనించండి. + +**పారామితులు** + +ఏదీ లేదు + +**తిరిగి ఇస్తుంది** + +`స్ట్రింగ్` - ప్రస్తుత ఇతీరియము ప్రోటోకాల్ వెర్షన్ + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":67}' +// ఫలితం +{ + "id":67, + "jsonrpc": "2.0", + "result": "54" +} +``` + +### eth_syncing {#eth_syncing} + +సమకాలీకరణ స్థితి లేదా `false` గురించి డేటాతో ఒక ఆబ్జెక్ట్‌ను తిరిగి ఇస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +ఏదీ లేదు + +**తిరిగి ఇస్తుంది** + +ఖచ్చితమైన రిటర్న్ డేటా క్లయింట్ అమలుల మధ్య మారుతుంది. నోడ్ సింక్ కానప్పుడు అన్ని క్లయింట్లు `False`ని తిరిగి ఇస్తాయి మరియు అన్ని క్లయింట్లు కింది ఫీల్డ్‌లను తిరిగి ఇస్తాయి. + +`ఆబ్జెక్ట్|బూలియన్`, సింక్ స్థితి డేటాతో కూడిన ఆబ్జెక్ట్ లేదా సింక్ కానప్పుడు `FALSE`: + +- `startingBlock`: `QUANTITY` - దిగుమతి ప్రారంభమైన బ్లాక్ (సింక్ దాని తలకి చేరుకున్న తర్వాత మాత్రమే రీసెట్ చేయబడుతుంది) +- `currentBlock`: `QUANTITY` - ప్రస్తుత బ్లాక్, eth_blockNumber వలె ఉంటుంది +- `highestBlock`: `QUANTITY` - అంచనా వేయబడిన అత్యధిక బ్లాక్ + +అయితే, వ్యక్తిగత క్లయింట్లు అదనపు డేటాను కూడా అందించవచ్చు. ఉదాహరణకు గెత్ కింది వాటిని తిరిగి ఇస్తుంది: + +```json +{ + "jsonrpc": "2.0", + "id": 1, + "result": { + "currentBlock": "0x3cf522", + "healedBytecodeBytes": "0x0", + "healedBytecodes": "0x0", + "healedTrienodes": "0x0", + "healingBytecode": "0x0", + "healingTrienodes": "0x0", + "highestBlock": "0x3e0e41", + "startingBlock": "0x3cbed5", + "syncedAccountBytes": "0x0", + "syncedAccounts": "0x0", + "syncedBytecodeBytes": "0x0", + "syncedBytecodes": "0x0", + "syncedStorage": "0x0", + "syncedStorageBytes": "0x0" + } +} +``` + +అయితే బేసు ఇలా అందిస్తుంది: + +```json +{ + "jsonrpc": "2.0", + "id": 51, + "result": { + "startingBlock": "0x0", + "currentBlock": "0x1518", + "highestBlock": "0x9567a3", + "pulledStates": "0x203ca", + "knownStates": "0x200636" + } +} +``` + +మరిన్ని వివరాల కోసం మీ నిర్దిష్ట క్లయింట్ యొక్క డాక్యుమెంటేషన్‌ను చూడండి. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' +// ఫలితం +{ + "id":1, + "jsonrpc": "2.0", + "result": { + startingBlock: '0x384', + currentBlock: '0x386', + highestBlock: '0x454' + } +} +// లేదా సింక్ కానప్పుడు +{ + "id":1, + "jsonrpc": "2.0", + "result": false +} +``` + +### eth_coinbase {#eth_coinbase} + +క్లయింట్ కాయిన్‌బేస్ చిరునామాను అందిస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +> **గమనిక:** ఈ పద్ధతి **v1.14.0** నాటికి నిలిపివేయబడింది మరియు ఇకపై మద్దతు ఇవ్వబడదు. ఈ పద్ధతిని ఉపయోగించడానికి ప్రయత్నిస్తే "పద్ధతికి మద్దతు లేదు" అనే లోపం వస్తుంది. + +**పారామితులు** + +ఏదీ లేదు + +**తిరిగి ఇస్తుంది** + +`DATA`, 20 బైట్లు - ప్రస్తుత కాయిన్‌బేస్ చిరునామా. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":64}' +// ఫలితం +{ + "id":64, + "jsonrpc": "2.0", + "result": "0x407d73d8a49eeb85d32cf465507dd71d507100c1" +} +``` + +### eth_chainId {#eth_chainId} + +రీప్లే-రక్షిత లావాదేవీలపై సంతకం చేయడానికి ఉపయోగించే చైన్ IDని అందిస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +ఏదీ లేదు + +**తిరిగి ఇస్తుంది** + +`chainId`, ప్రస్తుత చైన్ ఐడి యొక్క పూర్ణాంకాన్ని సూచించే స్ట్రింగ్‌గా హెక్సాడెసిమల్ విలువ. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":67}' +// ఫలితం +{ + "id":67, + "jsonrpc": "2.0", + "result": "0x1" +} +``` + +### eth_mining {#eth_mining} + +క్లయింట్ చురుకుగా కొత్త బ్లాక్‌లను మైనింగ్ చేస్తుంటే `true` అని ఇస్తుంది. ఇది ప్రూఫ్-ఆఫ్-వర్క్ నెట్‌వర్క్‌ల కోసం మాత్రమే `true`ని అందించగలదు మరియు [ది మెర్జ్](/roadmap/merge/) నుండి కొన్ని క్లయింట్‌లలో అందుబాటులో ఉండకపోవచ్చు. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +ఏదీ లేదు + +**తిరిగి ఇస్తుంది** + +`బూలియన్` - క్లయింట్ మైనింగ్ చేస్తుంటే `true` అని, లేకపోతే `false` అని అందిస్తుంది. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_mining","params":[],"id":71}' +// +{ + "id":71, + "jsonrpc": "2.0", + "result": true +} +``` + +### eth_hashrate {#eth_hashrate} + +నోడ్ మైనింగ్ చేస్తున్న సెకనుకు హాష్‌ల సంఖ్యను అందిస్తుంది. ఇది ప్రూఫ్-ఆఫ్-వర్క్ నెట్‌వర్క్‌ల కోసం మాత్రమే `true`ని అందించగలదు మరియు [ది మెర్జ్](/roadmap/merge/) నుండి కొన్ని క్లయింట్‌లలో అందుబాటులో ఉండకపోవచ్చు. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +ఏదీ లేదు + +**తిరిగి ఇస్తుంది** + +`QUANTITY` - సెకనుకు హాష్‌ల సంఖ్య. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_hashrate","params":[],"id":71}' +// ఫలితం +{ + "id":71, + "jsonrpc": "2.0", + "result": "0x38a" +} +``` + +### eth_gasPrice {#eth_gasprice} + +వైలో ప్రతి గ్యాస్‌కు ప్రస్తుత ధర యొక్క అంచనాను అందిస్తుంది. ఉదాహరణకు, Besu క్లయింట్ చివరి 100 బ్లాక్‌లను పరిశీలిస్తుంది మరియు డిఫాల్ట్‌గా మధ్యస్థ గ్యాస్ యూనిట్ ధరను అందిస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +ఏదీ లేదు + +**తిరిగి ఇస్తుంది** + +`QUANTITY` - వైలో ప్రస్తుత గ్యాస్ ధర యొక్క పూర్ణాంకం. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}' +// ఫలితం +{ + "id":73, + "jsonrpc": "2.0", + "result": "0x1dfd14000" // 8049999872 Wei +} +``` + +### eth_accounts {#eth_accounts} + +క్లయింట్ యాజమాన్యంలోని చిరునామాల జాబితాను అందిస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +ఏదీ లేదు + +**తిరిగి ఇస్తుంది** + +`డేటా శ్రేణి`, 20 బైట్లు - క్లయింట్ యాజమాన్యంలోని చిరునామాలు. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}' +// ఫలితం +{ + "id":1, + "jsonrpc": "2.0", + "result": ["0x407d73d8a49eeb85d32cf465507dd71d507100c1"] +} +``` + +### eth_blockNumber {#eth_blocknumber} + +అత్యంత ఇటీవలి బ్లాక్ యొక్క సంఖ్యను తిరిగి ఇస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +ఏదీ లేదు + +**తిరిగి ఇస్తుంది** + +`QUANTITY` - క్లయింట్ ఉన్న ప్రస్తుత బ్లాక్ సంఖ్య యొక్క పూర్ణాంకం. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":83}' +// ఫలితం +{ + "id":83, + "jsonrpc": "2.0", + "result": "0x4b7" // 1207 +} +``` + +### eth_getBalance {#eth_getbalance} + +ఇచ్చిన చిరునామాలోని ఖాతా యొక్క బ్యాలెన్స్‌ను తిరిగి ఇస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +1. `DATA`, 20 బైట్లు - బ్యాలెన్స్ కోసం తనిఖీ చేయవలసిన చిరునామా. +2. `QUANTITY|TAG` - పూర్ణాంక బ్లాక్ సంఖ్య, లేదా `"latest"`, `"earliest"`, `"pending"`, `"safe"`, లేదా `"finalized"` స్ట్రింగ్, [బ్లాక్ పారామీటర్](/developers/docs/apis/json-rpc/#block-parameter) చూడండి + +```js +params: ["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"] +``` + +**తిరిగి ఇస్తుంది** + +`QUANTITY` - వైలో ప్రస్తుత బ్యాలెన్స్ యొక్క పూర్ణాంకం. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"],"id":1}' +// ఫలితం +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x0234c8a3397aab58" // 158972490234375000 +} +``` + +### eth_getStorageAt {#eth_getstorageat} + +ఇచ్చిన చిరునామా వద్ద నిల్వ స్థానం నుండి విలువను అందిస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +1. `DATA`, 20 బైట్లు - నిల్వ యొక్క చిరునామా. +2. `QUANTITY` - నిల్వలోని స్థానం యొక్క పూర్ణాంకం. +3. `QUANTITY|TAG` - పూర్ణాంక బ్లాక్ సంఖ్య, లేదా `"latest"`, `"earliest"`, `"pending"`, `"safe"`, `"finalized"` స్ట్రింగ్, [బ్లాక్ పారామీటర్](/developers/docs/apis/json-rpc/#block-parameter) చూడండి + +**తిరిగి ఇస్తుంది** + +`DATA` - ఈ నిల్వ స్థానంలోని విలువ. + +**ఉదాహరణ** +సరైన స్థానాన్ని గణించడం తిరిగి పొందవలసిన నిల్వపై ఆధారపడి ఉంటుంది. చిరునామా `0x391694e7e0b0cce554cb130d723a9d27458f9298` ద్వారా `0x295a70b2de5e3953354a6a8344e616ed314d7251` వద్ద డిప్లాయ్ చేయబడిన కింది కాంట్రాక్ట్‌ను పరిగణించండి. + +``` +కాంట్రాక్ట్ నిల్వ { + uint pos0; + మ్యాపింగ్(చిరునామా => uint) pos1; + నిర్మాత() { + pos0 = 1234; + pos1[msg.sender] = 5678; + } +} +``` + +pos0 విలువను తిరిగి పొందడం చాలా సులభం: + +```js +curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x0", "latest"], "id": 1}' localhost:8545 +{"jsonrpc":"2.0","id":1,"result":"0x00000000000000000000000000000000000000000000000000000000000004d2"} +``` + +మ్యాప్ యొక్క మూలకాన్ని తిరిగి పొందడం కష్టం. మ్యాప్‌లోని ఒక మూలకం యొక్క స్థానం దీనితో లెక్కించబడుతుంది: + +```js +keccak(LeftPad32(key, 0), LeftPad32(map position, 0)) +``` + +pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"]లో నిల్వను తిరిగి పొందడానికి మనం స్థానాన్ని దీనితో లెక్కించాలి: + +```js +keccak( + decodeHex( + "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + + "0000000000000000000000000000000000000000000000000000000000000001" + ) +) +``` + +గణన చేయడానికి వెబ్3 లైబ్రరీతో వచ్చే గెత్ కన్సోల్‌ను ఉపయోగించవచ్చు: + +```js +> var key = "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001" +undefined +> web3.sha3(key, {"encoding": "hex"}) +"0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9" +``` + +ఇప్పుడు నిల్వను పొందడానికి: + +```js +curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9", "latest"], "id": 1}' localhost:8545 +{"jsonrpc":"2.0","id":1,"result":"0x000000000000000000000000000000000000000000000000000000000000162e"} +``` + +### eth_getTransactionCount {#eth_gettransactioncount} + +ఒక చిరునామా నుండి _పంపిన_ లావాదేవీల సంఖ్యను అందిస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +1. `DATA`, 20 బైట్లు - చిరునామా. +2. `QUANTITY|TAG` - పూర్ణాంక బ్లాక్ సంఖ్య, లేదా `"latest"`, `"earliest"`, `"pending"`, `"safe"` లేదా `"finalized"` స్ట్రింగ్, [బ్లాక్ పారామీటర్](/developers/docs/apis/json-rpc/#block-parameter) చూడండి + +```js +params: [ + "0x407d73d8a49eeb85d32cf465507dd71d507100c1", + "latest", // తాజా బ్లాక్‌ వద్ద స్థితి +] +``` + +**తిరిగి ఇస్తుంది** + +`QUANTITY` - ఈ చిరునామా నుండి పంపిన లావాదేవీల సంఖ్య యొక్క పూర్ణాంకం. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1","latest"],"id":1}' +// ఫలితం +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x1" // 1 +} +``` + +### eth_getBlockTransactionCountByHash {#eth_getblocktransactioncountbyhash} + +ఇచ్చిన బ్లాక్ హాష్‌తో సరిపోలే బ్లాక్ నుండి ఒక బ్లాక్‌లోని లావాదేవీల సంఖ్యను అందిస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +1. `DATA`, 32 బైట్లు - ఒక బ్లాక్ యొక్క హాష్ + +```js +params: ["0xd03ededb7415d22ae8bac30f96b2d1de83119632693b963642318d87d1bece5b"] +``` + +**తిరిగి ఇస్తుంది** + +`QUANTITY` - ఈ బ్లాక్‌లోని లావాదేవీల సంఖ్య యొక్క పూర్ణాంకం. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xd03ededb7415d22ae8bac30f96b2d1de83119632693b963642318d87d1bece5b"],"id":1}' +// ఫలితం +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x8b" // 139 +} +``` + +### eth_getBlockTransactionCountByNumber {#eth_getblocktransactioncountbynumber} + +ఇచ్చిన బ్లాక్ సంఖ్యతో సరిపోలే బ్లాక్‌లోని లావాదేవీల సంఖ్యను అందిస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +1. `QUANTITY|TAG` - ఒక బ్లాక్ సంఖ్య యొక్క పూర్ణాంకం, లేదా `"earliest"`, `"latest"`, `"pending"`, `"safe"` లేదా `"finalized"` స్ట్రింగ్, [బ్లాక్ పారామీటర్](/developers/docs/apis/json-rpc/#block-parameter)లో వలె. + +```js +params: [ + "0x13738ca", // 20396234 +] +``` + +**తిరిగి ఇస్తుంది** + +`QUANTITY` - ఈ బ్లాక్‌లోని లావాదేవీల సంఖ్య యొక్క పూర్ణాంకం. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0x13738ca"],"id":1}' +// ఫలితం +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x8b" // 139 +} +``` + +### eth_getUncleCountByBlockHash {#eth_getunclecountbyblockhash} + +ఇచ్చిన బ్లాక్ హాష్‌తో సరిపోలే బ్లాక్ నుండి ఒక బ్లాక్‌లోని అంకుల్స్ సంఖ్యను అందిస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +1. `DATA`, 32 బైట్లు - ఒక బ్లాక్ యొక్క హాష్ + +```js +params: ["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2"] +``` + +**తిరిగి ఇస్తుంది** + +`QUANTITY` - ఈ బ్లాక్‌లోని అంకుల్స్ సంఖ్య యొక్క పూర్ణాంకం. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2"],"id":1}' +// ఫలితం +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x1" // 1 +} +``` + +### eth_getUncleCountByBlockNumber {#eth_getunclecountbyblocknumber} + +ఇచ్చిన బ్లాక్ సంఖ్యతో సరిపోలే బ్లాక్ నుండి ఒక బ్లాక్‌లోని అంకుల్స్ సంఖ్యను అందిస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +1. `QUANTITY|TAG` - ఒక బ్లాక్ సంఖ్య యొక్క పూర్ణాంకం, లేదా `"latest"`, `"earliest"`, `"pending"`, `"safe"` లేదా `"finalized"` స్ట్రింగ్, [బ్లాక్ పారామీటర్](/developers/docs/apis/json-rpc/#block-parameter) చూడండి + +```js +params: [ + "0xe8", // 232 +] +``` + +**తిరిగి ఇస్తుంది** + +`QUANTITY` - ఈ బ్లాక్‌లోని అంకుల్స్ సంఖ్య యొక్క పూర్ణాంకం. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockNumber","params":["0xe8"],"id":1}' +// ఫలితం +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x0" // 0 +} +``` + +### eth_getCode {#eth_getcode} + +ఇచ్చిన చిరునామా వద్ద సంకేత భాషను అందిస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +1. `DATA`, 20 బైట్లు - చిరునామా +2. `QUANTITY|TAG` - పూర్ణాంక బ్లాక్ సంఖ్య, లేదా `"latest"`, `"earliest"`, `"pending"`, `"safe"` లేదా `"finalized"` స్ట్రింగ్, [బ్లాక్ పారామీటర్](/developers/docs/apis/json-rpc/#block-parameter) చూడండి + +```js +params: [ + "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "0x5daf3b", // 6139707 +] +``` + +**తిరిగి ఇస్తుంది** + +`DATA` - ఇచ్చిన చిరునామా నుండి సంకేత భాష. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "0x5daf3b"],"id":1}' +// ఫలితం +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x6060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a72305820deb4c2ccab3c2fdca32ab3f46728389c2fe2c165d5fafa07661e4e004f6c344a0029" +} +``` + +### eth_sign {#eth_sign} + +సైన్ పద్ధతి `sign(keccak256("\x19Ethereum Signed Message:\n" + len(message) + message)))`తో ఒక ఇతీరియము నిర్దిష్ట సంతకాన్ని లెక్కిస్తుంది. + +మెసేజ్‌కు ఒక ప్రిఫిక్స్‌ను జోడించడం ద్వారా, లెక్కించబడిన సంతకం ఒక ఇతీరియము నిర్దిష్ట సంతకంగా గుర్తించబడుతుంది. ఇది దుర్వినియోగాన్ని నివారిస్తుంది, ఇక్కడ ఒక హానికరమైన డాప్ ఏకపక్ష డేటాను (ఉదా., లావాదేవీ) సంతకం చేసి, బాధితుడిని అనుకరించడానికి ఆ సంతకాన్ని ఉపయోగించవచ్చు. + +గమనిక: సంతకం చేయవలసిన చిరునామా అన్‌లాక్ చేయబడి ఉండాలి. + +**పారామితులు** + +1. `DATA`, 20 బైట్లు - చిరునామా +2. `DATA`, N బైట్లు - సంతకం చేయవలసిన మెసేజ్ + +**తిరిగి ఇస్తుంది** + +`DATA`: సంతకం + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sign","params":["0x9b2055d370f73ec7d8a03e965129118dc8f5bf83", "0xdeadbeaf"],"id":1}' +// ఫలితం +{ + "id":1, + "jsonrpc": "2.0", + "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b" +} +``` + +### eth_signTransaction {#eth_signtransaction} + +[eth_sendRawTransaction](#eth_sendrawtransaction) ఉపయోగించి నెట్‌వర్క్‌కు తరువాత సమర్పించగల ఒక లావాదేవీపై సంతకం చేస్తుంది. + +**పారామితులు** + +1. `ఆబ్జెక్ట్` - లావాదేవీ ఆబ్జెక్ట్ + +- `రకం`: +- `from`: `DATA`, 20 బైట్లు - లావాదేవీ పంపబడిన చిరునామా. +- `to`: `DATA`, 20 బైట్లు - (కొత్త కాంట్రాక్ట్ సృష్టిస్తున్నప్పుడు ఐచ్ఛికం) లావాదేవీ పంపబడిన చిరునామా. +- `gas`: `QUANTITY` - (ఐచ్ఛికం, డిఫాల్ట్: 90000) లావాదేవీ అమలు కోసం అందించిన గ్యాస్ యొక్క పూర్ణాంకం. ఇది ఉపయోగించని గ్యాస్‌ను తిరిగి ఇస్తుంది. +- `gasPrice`: `QUANTITY` - (ఐచ్ఛికం, డిఫాల్ట్: నిర్ధారించవలసి ఉంది) ప్రతి చెల్లించిన గ్యాస్ కోసం ఉపయోగించే గ్యాస్‌ప్రైస్ యొక్క పూర్ణాంకం, వైలో. +- `value`: `QUANTITY` - (ఐచ్ఛికం) ఈ లావాదేవీతో పంపిన విలువ యొక్క పూర్ణాంకం, వైలో. +- `data`: `DATA` - ఒక కాంట్రాక్ట్ యొక్క కంపైల్ చేయబడిన సంకేత భాష లేదా ప్రారంభించబడిన పద్ధతి సంతకం మరియు ఎన్‌కోడ్ చేయబడిన పారామీటర్ల హాష్. +- `nonce`: `QUANTITY` - (ఐచ్ఛికం) ఒక నాన్స్ యొక్క పూర్ణాంకం. అదే నాన్స్‌ను ఉపయోగించే మీ స్వంత పెండింగ్ లావాదేవీలను భర్తీ చేయడానికి ఇది అనుమతిస్తుంది. + +**తిరిగి ఇస్తుంది** + +`DATA`, పేర్కొన్న ఖాతా ద్వారా సంతకం చేయబడిన RLP-ఎన్‌కోడ్ చేయబడిన లావాదేవీ ఆబ్జెక్ట్. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"id": 1,"jsonrpc": "2.0","method": "eth_signTransaction","params": [{"data":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675","from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155","gas": "0x76c0","gasPrice": "0x9184e72a000","to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567","value": "0x9184e72a"}]}' +// ఫలితం +{ + "id": 1, + "jsonrpc": "2.0", + "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b" +} +``` + +### eth_sendTransaction {#eth_sendtransaction} + +కొత్త మెసేజ్ కాల్ లావాదేవీ లేదా కాంట్రాక్ట్ క్రియేషన్‌ను సృష్టిస్తుంది, డేటా ఫీల్డ్‌లో కోడ్ ఉంటే, మరియు `from`లో పేర్కొన్న ఖాతాను ఉపయోగించి దానిపై సంతకం చేస్తుంది. + +**పారామితులు** + +1. `ఆబ్జెక్ట్` - లావాదేవీ ఆబ్జెక్ట్ + +- `from`: `DATA`, 20 బైట్లు - లావాదేవీ పంపబడిన చిరునామా. +- `to`: `DATA`, 20 బైట్లు - (కొత్త కాంట్రాక్ట్ సృష్టిస్తున్నప్పుడు ఐచ్ఛికం) లావాదేవీ పంపబడిన చిరునామా. +- `gas`: `QUANTITY` - (ఐచ్ఛికం, డిఫాల్ట్: 90000) లావాదేవీ అమలు కోసం అందించిన గ్యాస్ యొక్క పూర్ణాంకం. ఇది ఉపయోగించని గ్యాస్‌ను తిరిగి ఇస్తుంది. +- `gasPrice`: `QUANTITY` - (ఐచ్ఛికం, డిఫాల్ట్: నిర్ధారించవలసి ఉంది) ప్రతి చెల్లించిన గ్యాస్ కోసం ఉపయోగించే గ్యాస్‌ప్రైస్ యొక్క పూర్ణాంకం. +- `value`: `QUANTITY` - (ఐచ్ఛికం) ఈ లావాదేవీతో పంపిన విలువ యొక్క పూర్ణాంకం. +- `input`: `DATA` - ఒక కాంట్రాక్ట్ యొక్క కంపైల్ చేయబడిన సంకేత భాష లేదా ప్రారంభించబడిన పద్ధతి సంతకం మరియు ఎన్‌కోడ్ చేయబడిన పారామీటర్ల హాష్. +- `nonce`: `QUANTITY` - (ఐచ్ఛికం) ఒక నాన్స్ యొక్క పూర్ణాంకం. అదే నాన్స్‌ను ఉపయోగించే మీ స్వంత పెండింగ్ లావాదేవీలను భర్తీ చేయడానికి ఇది అనుమతిస్తుంది. + +```js +params: [ + { + from: "0xb60e8dd61c5d32be8058bb8eb970870f07233155", + to: "0xd46e8dd67c5d32be8058bb8eb970870f07244567", + gas: "0x76c0", // 30400 + gasPrice: "0x9184e72a000", // 10000000000000 + value: "0x9184e72a", // 2441406250 + input: + "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675", + }, +] +``` + +**తిరిగి ఇస్తుంది** + +`DATA`, 32 బైట్లు - లావాదేవీ హాష్, లేదా లావాదేవీ ఇంకా అందుబాటులో లేకపోతే సున్నా హాష్. + +మీరు ఒక కాంట్రాక్ట్‌ను సృష్టించినప్పుడు, లావాదేవీ ఒక బ్లాక్‌లో ప్రతిపాదించబడిన తర్వాత, కాంట్రాక్ట్ చిరునామాను పొందడానికి [eth_getTransactionReceipt](#eth_gettransactionreceipt) ఉపయోగించండి. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{see above}],"id":1}' +// ఫలితం +{ + "id":1, + "jsonrpc": "2.0", + "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331" +} +``` + +### eth_sendRawTransaction {#eth_sendrawtransaction} + +సంతకం చేసిన లావాదేవీల కోసం కొత్త మెసేజ్ కాల్ లావాదేవీ లేదా కాంట్రాక్ట్ క్రియేషన్‌ను సృష్టిస్తుంది. + +**పారామితులు** + +1. `DATA`, సంతకం చేసిన లావాదేవీ డేటా. + +```js +params: [ + "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675", +] +``` + +**తిరిగి ఇస్తుంది** + +`DATA`, 32 బైట్లు - లావాదేవీ హాష్, లేదా లావాదేవీ ఇంకా అందుబాటులో లేకపోతే సున్నా హాష్. + +మీరు ఒక కాంట్రాక్ట్‌ను సృష్టించినప్పుడు, లావాదేవీ ఒక బ్లాక్‌లో ప్రతిపాదించబడిన తర్వాత, కాంట్రాక్ట్ చిరునామాను పొందడానికి [eth_getTransactionReceipt](#eth_gettransactionreceipt) ఉపయోగించండి. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":[{see above}],"id":1}' +// ఫలితం +{ + "id":1, + "jsonrpc": "2.0", + "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331" +} +``` + +### eth_call {#eth_call} + +బ్లాక్‌చెయిన్‌లో ఒక లావాదేవీని సృష్టించకుండా వెంటనే ఒక కొత్త మెసేజ్ కాల్‌ను అమలు చేస్తుంది. తరచుగా చదవడానికి-మాత్రమే స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌లను అమలు చేయడానికి ఉపయోగిస్తారు, ఉదాహరణకు ఒక ERC-20 కాంట్రాక్ట్ కోసం `balanceOf`. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +1. `ఆబ్జెక్ట్` - లావాదేవీ కాల్ ఆబ్జెక్ట్ + +- `from`: `DATA`, 20 బైట్లు - (ఐచ్ఛికం) లావాదేవీ పంపబడిన చిరునామా. +- `to`: `DATA`, 20 బైట్లు - లావాదేవీ పంపబడిన చిరునామా. +- `gas`: `QUANTITY` - (ఐచ్ఛికం) లావాదేవీ అమలు కోసం అందించిన గ్యాస్ యొక్క పూర్ణాంకం. eth_call సున్నా గ్యాస్‌ను వినియోగిస్తుంది, కానీ కొన్ని అమలులకు ఈ పారామీటర్ అవసరం కావచ్చు. +- `gasPrice`: `QUANTITY` - (ఐచ్ఛికం) ప్రతి చెల్లించిన గ్యాస్ కోసం ఉపయోగించే గ్యాస్‌ప్రైస్ యొక్క పూర్ణాంకం +- `value`: `QUANTITY` - (ఐచ్ఛికం) ఈ లావాదేవీతో పంపిన విలువ యొక్క పూర్ణాంకం +- `input`: `DATA` - (ఐచ్ఛికం) పద్ధతి సంతకం మరియు ఎన్‌కోడ్ చేయబడిన పారామీటర్ల హాష్. వివరాల కోసం సాలిడిటీ డాక్యుమెంటేషన్‌లో [ఇతీరియము కాంట్రాక్ట్ ABI](https://docs.soliditylang.org/en/latest/abi-spec.html) చూడండి. + +2. `QUANTITY|TAG` - పూర్ణాంక బ్లాక్ సంఖ్య, లేదా `"latest"`, `"earliest"`, `"pending"`, `"safe"` లేదా `"finalized"` స్ట్రింగ్, [బ్లాక్ పారామీటర్](/developers/docs/apis/json-rpc/#block-parameter) చూడండి + +**తిరిగి ఇస్తుంది** + +`DATA` - అమలు చేయబడిన కాంట్రాక్ట్ యొక్క రిటర్న్ విలువ. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{see above}],"id":1}' +// ఫలితం +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x" +} +``` + +### eth_estimateGas {#eth_estimategas} + +లావాదేవీ పూర్తి కావడానికి ఎంత గ్యాస్ అవసరమో అంచనా వేసి అందిస్తుంది. లావాదేవీ బ్లాక్‌చెయిన్‌కు జోడించబడదు. EVM మెకానిక్స్ మరియు నోడ్ పనితీరుతో సహా వివిధ కారణాల వల్ల అంచనా వాస్తవానికి లావాదేవీ ద్వారా ఉపయోగించిన గ్యాస్ మొత్తం కంటే గణనీయంగా ఎక్కువగా ఉండవచ్చని గమనించండి. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +[eth_call](#eth_call) పారామీటర్లను చూడండి, అన్ని లక్షణాలు ఐచ్ఛికం అనేవి తప్ప. గ్యాస్ పరిమితి పేర్కొనకపోతే, గెత్ పెండింగ్ బ్లాక్ నుండి బ్లాక్ గ్యాస్ పరిమితిని ఎగువ సరిహద్దుగా ఉపయోగిస్తుంది. ఫలితంగా, పెండింగ్‌లో ఉన్న బ్లాక్ గ్యాస్ పరిమితి కంటే గ్యాస్ మొత్తం ఎక్కువగా ఉన్నప్పుడు, తిరిగి ఇవ్వబడిన అంచనా కాల్/లావాదేవీని అమలు చేయడానికి సరిపోకపోవచ్చు. + +**తిరిగి ఇస్తుంది** + +`QUANTITY` - ఉపయోగించిన గ్యాస్ మొత్తం. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_estimateGas","params":[{see above}],"id":1}' +// ఫలితం +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x5208" // 21000 +} +``` + +### eth_getBlockByHash {#eth_getblockbyhash} + +హాష్ ద్వారా ఒక బ్లాక్ గురించి సమాచారాన్ని అందిస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +1. `DATA`, 32 బైట్లు - ఒక బ్లాక్ యొక్క హాష్. +2. `బూలియన్` - `true` అయితే పూర్తి లావాదేవీ ఆబ్జెక్ట్‌లను అందిస్తుంది, `false` అయితే లావాదేవీల హాష్‌లను మాత్రమే అందిస్తుంది. + +```js +params: [ + "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae", + false, +] +``` + +**తిరిగి ఇస్తుంది** + +`ఆబ్జెక్ట్` - ఒక బ్లాక్ ఆబ్జెక్ట్, లేదా బ్లాక్ కనుగొనబడనప్పుడు `null`: + +- `number`: `QUANTITY` - బ్లాక్ సంఖ్య. పెండింగ్ బ్లాక్ అయితే `null`. +- `hash`: `DATA`, 32 బైట్లు - బ్లాక్ యొక్క హాష్. పెండింగ్ బ్లాక్ అయితే `null`. +- `parentHash`: `DATA`, 32 బైట్లు - పేరెంట్ బ్లాక్ యొక్క హాష్. +- `nonce`: `DATA`, 8 బైట్లు - రూపొందించబడిన ప్రూఫ్-ఆఫ్-వర్క్ యొక్క హాష్. పెండింగ్ బ్లాక్ అయితే `null`, ప్రూఫ్-ఆఫ్-స్టేక్ బ్లాక్‌లకు `0x0` (ది మెర్జ్ నుండి) +- `sha3Uncles`: `DATA`, 32 బైట్లు - బ్లాక్‌లోని అంకుల్స్ డేటా యొక్క SHA3. +- `logsBloom`: `DATA`, 256 బైట్లు - బ్లాక్ యొక్క లాగ్‌ల కోసం బ్లూమ్ ఫిల్టర్. పెండింగ్ బ్లాక్ అయితే `null`. +- `transactionsRoot`: `DATA`, 32 బైట్లు - బ్లాక్ యొక్క లావాదేవీ ట్రీ యొక్క రూట్. +- `stateRoot`: `DATA`, 32 బైట్లు - బ్లాక్ యొక్క తుది స్థితి ట్రీ యొక్క రూట్. +- `receiptsRoot`: `DATA`, 32 బైట్లు - బ్లాక్ యొక్క రశీదుల ట్రీ యొక్క రూట్. +- `miner`: `DATA`, 20 బైట్లు - బ్లాక్ బహుమతులు ఇవ్వబడిన లబ్ధిదారుని చిరునామా. +- `difficulty`: `QUANTITY` - ఈ బ్లాక్ కోసం కష్టతరమైన పూర్ణాంకం. +- `totalDifficulty`: `QUANTITY` - ఈ బ్లాక్ వరకు చైన్ యొక్క మొత్తం కష్టతరమైన పూర్ణాంకం. +- `extraData`: `DATA` - ఈ బ్లాక్ యొక్క "అదనపు డేటా" ఫీల్డ్. +- `size`: `QUANTITY` - బైట్లలో ఈ బ్లాక్ యొక్క పరిమాణం పూర్ణాంకం. +- `gasLimit`: `QUANTITY` - ఈ బ్లాక్‌లో అనుమతించబడిన గరిష్ట గ్యాస్. +- `gasUsed`: `QUANTITY` - ఈ బ్లాక్‌లోని అన్ని లావాదేవీల ద్వారా ఉపయోగించిన మొత్తం గ్యాస్. +- `timestamp`: `QUANTITY` - బ్లాక్ సమీకరించబడినప్పుడు యూనిక్స్ టైమ్‌స్టాంప్. +- `transactions`: `శ్రేణి` - లావాదేవీ ఆబ్జెక్ట్‌ల శ్రేణి, లేదా చివరిగా ఇవ్వబడిన పారామీటర్‌పై ఆధారపడి 32 బైట్ల లావాదేవీ హాష్‌లు. +- `uncles`: `శ్రేణి` - అంకుల్ హాష్‌ల శ్రేణి. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae", false],"id":1}' +// ఫలితం +{ + "jsonrpc": "2.0", + "id": 1, + "result": { + "difficulty": "0x4ea3f27bc", + "extraData": "0x476574682f4c5649562f76312e302e302f6c696e75782f676f312e342e32", + "gasLimit": "0x1388", + "gasUsed": "0x0", + "hash": "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "miner": "0xbb7b8287f3f0a933474a79eae42cbca977791171", + "mixHash": "0x4fffe9ae21f1c9e15207b1f472d5bbdd68c9595d461666602f2be20daf5e7843", + "nonce": "0x689056015818adbe", + "number": "0x1b4", + "parentHash": "0xe99e022112df268087ea7eafaf4790497fd21dbeeb6bd7a1721df161a6657a54", + "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "size": "0x220", + "stateRoot": "0xddc8b0234c2e0cad087c8b389aa7ef01f7d79b2570bccb77ce48648aa61c904d", + "timestamp": "0x55ba467c", + "totalDifficulty": "0x78ed983323d", + "transactions": [ + ], + "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncles": [ + ] + } +} +``` + +### eth_getBlockByNumber {#eth_getblockbynumber} + +బ్లాక్ నంబర్ ద్వారా ఒక బ్లాక్ గురించి సమాచారాన్ని అందిస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +1. `QUANTITY|TAG` - ఒక బ్లాక్ సంఖ్య యొక్క పూర్ణాంకం, లేదా `"earliest"`, `"latest"`, `"pending"`, `"safe"` లేదా `"finalized"` స్ట్రింగ్, [బ్లాక్ పారామీటర్](/developers/docs/apis/json-rpc/#block-parameter)లో వలె. +2. `బూలియన్` - `true` అయితే పూర్తి లావాదేవీ ఆబ్జెక్ట్‌లను అందిస్తుంది, `false` అయితే లావాదేవీల హాష్‌లను మాత్రమే అందిస్తుంది. + +```js +params: [ + "0x1b4", // 436 + true, +] +``` + +**తిరిగి ఇస్తుంది** +[eth_getBlockByHash](#eth_getblockbyhash) చూడండి + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x1b4", true],"id":1}' +``` + +ఫలితం కోసం [eth_getBlockByHash](#eth_getblockbyhash) చూడండి + +### eth_getTransactionByHash {#eth_gettransactionbyhash} + +లావాదేవీ హాష్ ద్వారా అభ్యర్థించబడిన ఒక లావాదేవీ గురించి సమాచారాన్ని అందిస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +1. `DATA`, 32 బైట్లు - ఒక లావాదేవీ యొక్క హాష్ + +```js +params: ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"] +``` + +**తిరిగి ఇస్తుంది** + +`ఆబ్జెక్ట్` - ఒక లావాదేవీ ఆబ్జెక్ట్, లేదా లావాదేవీ కనుగొనబడనప్పుడు `null`: + +- `blockHash`: `DATA`, 32 బైట్లు - ఈ లావాదేవీ ఉన్న బ్లాక్ యొక్క హాష్. పెండింగ్‌లో ఉంటే `null`. +- `blockNumber`: `QUANTITY` - ఈ లావాదేవీ ఉన్న బ్లాక్ సంఖ్య. పెండింగ్‌లో ఉంటే `null`. +- `from`: `DATA`, 20 బైట్లు - పంపినవారి చిరునామా. +- `gas`: `QUANTITY` - పంపినవారు అందించిన గ్యాస్. +- `gasPrice`: `QUANTITY` - పంపినవారు అందించిన గ్యాస్ ధర, వైలో. +- `hash`: `DATA`, 32 బైట్లు - లావాదేవీ యొక్క హాష్. +- `input`: `DATA` - లావాదేవీతో పాటు పంపిన డేటా. +- `nonce`: `QUANTITY` - పంపినవారు దీనికి ముందు చేసిన లావాదేవీల సంఖ్య. +- `to`: `DATA`, 20 బైట్లు - స్వీకర్త చిరునామా. కాంట్రాక్ట్ క్రియేషన్ లావాదేవీ అయితే `null`. +- `transactionIndex`: `QUANTITY` - బ్లాక్‌లోని లావాదేవీల సూచిక స్థానం యొక్క పూర్ణాంకం. పెండింగ్‌లో ఉంటే `null`. +- `value`: `QUANTITY` - వైలో బదిలీ చేయబడిన విలువ. +- `v`: `QUANTITY` - ECDSA రికవరీ ఐడి +- `r`: `QUANTITY` - ECDSA సంతకం r +- `s`: `QUANTITY` - ECDSA సంతకం s + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"],"id":1}' +// ఫలితం +{ + "jsonrpc":"2.0", + "id":1, + "result":{ + "blockHash":"0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", + "blockNumber":"0x5daf3b", // 6139707 + "from":"0xa7d9ddbe1f17865597fbd27ec712455208b6b76d", + "gas":"0xc350", // 50000 + "gasPrice":"0x4a817c800", // 20000000000 + "hash":"0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b", + "input":"0x68656c6c6f21", + "nonce":"0x15", // 21 + "to":"0xf02c1c8e6114b1dbe8937a39260b5b0a374432bb", + "transactionIndex":"0x41", // 65 + "value":"0xf3dbb76162000", // 4290000000000000 + "v":"0x25", // 37 + "r":"0x1b5e176d927f8e9ab405058b2d2457392da3e20f328b16ddabcebc33eaac5fea", + "s":"0x4ba69724e8f69de52f0125ad8b3c5c2cef33019bac3249e2c0a2192766d1721c" + } +} +``` + +### eth_getTransactionByBlockHashAndIndex {#eth_gettransactionbyblockhashandindex} + +బ్లాక్ హాష్ మరియు లావాదేవీ సూచిక స్థానం ద్వారా ఒక లావాదేవీ గురించి సమాచారాన్ని అందిస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +1. `DATA`, 32 బైట్లు - ఒక బ్లాక్ యొక్క హాష్. +2. `QUANTITY` - లావాదేవీ సూచిక స్థానం యొక్క పూర్ణాంకం. + +```js +params: [ + "0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", + "0x0", // 0 +] +``` + +**తిరిగి ఇస్తుంది** +[eth_getTransactionByHash](#eth_gettransactionbyhash) చూడండి + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", "0x0"],"id":1}' +``` + +ఫలితం కోసం [eth_getTransactionByHash](#eth_gettransactionbyhash) చూడండి + +### eth_getTransactionByBlockNumberAndIndex {#eth_gettransactionbyblocknumberandindex} + +బ్లాక్ నంబర్ మరియు లావాదేవీ సూచిక స్థానం ద్వారా ఒక లావాదేవీ గురించి సమాచారాన్ని అందిస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +1. `QUANTITY|TAG` - ఒక బ్లాక్ సంఖ్య, లేదా `"earliest"`, `"latest"`, `"pending"`, `"safe"` లేదా `"finalized"` స్ట్రింగ్, [బ్లాక్ పారామీటర్](/developers/docs/apis/json-rpc/#block-parameter)లో వలె. +2. `QUANTITY` - లావాదేవీ సూచిక స్థానం. + +```js +params: [ + "0x9c47cf", // 10241999 + "0x24", // 36 +] +``` + +**తిరిగి ఇస్తుంది** +[eth_getTransactionByHash](#eth_gettransactionbyhash) చూడండి + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockNumberAndIndex","params":["0x9c47cf", "0x24"],"id":1}' +``` + +ఫలితం కోసం [eth_getTransactionByHash](#eth_gettransactionbyhash) చూడండి + +### eth_getTransactionReceipt {#eth_gettransactionreceipt} + +లావాదేవీ హాష్ ద్వారా ఒక లావాదేవీ యొక్క రశీదును అందిస్తుంది. + +**గమనిక** పెండింగ్ లావాదేవీలకు రశీదు అందుబాటులో లేదు. + +**పారామితులు** + +1. `DATA`, 32 బైట్లు - ఒక లావాదేవీ యొక్క హాష్ + +```js +params: ["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"] +``` + +**తిరిగి ఇస్తుంది** +`ఆబ్జెక్ట్` - ఒక లావాదేవీ రశీదు ఆబ్జెక్ట్, లేదా రశీదు కనుగొనబడనప్పుడు `null`: + +- `transactionHash `: `DATA`, 32 బైట్లు - లావాదేవీ యొక్క హాష్. +- `transactionIndex`: `QUANTITY` - బ్లాక్‌లోని లావాదేవీల సూచిక స్థానం యొక్క పూర్ణాంకం. +- `blockHash`: `DATA`, 32 బైట్లు - ఈ లావాదేవీ ఉన్న బ్లాక్ యొక్క హాష్. +- `blockNumber`: `QUANTITY` - ఈ లావాదేవీ ఉన్న బ్లాక్ సంఖ్య. +- `from`: `DATA`, 20 బైట్లు - పంపినవారి చిరునామా. +- `to`: `DATA`, 20 బైట్లు - స్వీకర్త చిరునామా. కాంట్రాక్ట్ క్రియేషన్ లావాదేవీ అయితే null. +- `cumulativeGasUsed` : `QUANTITY ` - ఈ లావాదేవీ బ్లాక్‌లో అమలు చేయబడినప్పుడు ఉపయోగించిన మొత్తం గ్యాస్ మొత్తం. +- `effectiveGasPrice` : `QUANTITY` - గ్యాస్ యూనిట్‌కు చెల్లించిన మూల రుసుము మరియు చిట్కా మొత్తం. +- `gasUsed `: `QUANTITY ` - ఈ నిర్దిష్ట లావాదేవీ ద్వారా మాత్రమే ఉపయోగించిన గ్యాస్ మొత్తం. +- `contractAddress `: `DATA`, 20 బైట్లు - సృష్టించబడిన కాంట్రాక్ట్ చిరునామా, లావాదేవీ ఒక కాంట్రాక్ట్ సృష్టి అయితే, లేకపోతే `null`. +- `logs`: `శ్రేణి` - ఈ లావాదేవీ ద్వారా రూపొందించబడిన లాగ్ ఆబ్జెక్ట్‌ల శ్రేణి. +- `logsBloom`: `DATA`, 256 బైట్లు - లైట్ క్లయింట్లు సంబంధిత లాగ్‌లను త్వరగా తిరిగి పొందడానికి బ్లూమ్ ఫిల్టర్. +- `type`: `QUANTITY` - లావాదేవీ రకం యొక్క పూర్ణాంకం, లెగసీ లావాదేవీల కోసం `0x0`, యాక్సెస్ జాబితా రకాల కోసం `0x1`, డైనమిక్ ఫీజుల కోసం `0x2`. + +ఇది కూడా _ఒకటి_ అందిస్తుంది: + +- `root` : `DATA` లావాదేవీ అనంతర స్థితి రూట్ యొక్క 32 బైట్‌లు (బైజాంటియంకు ముందు) +- `status`: `QUANTITY` ఒకటి `1` (విజయం) లేదా `0` (వైఫల్యం) + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"],"id":1}' +// ఫలితం +{ + "jsonrpc": "2.0", + "id": 1, + "result": { + "blockHash": + "0xa957d47df264a31badc3ae823e10ac1d444b098d9b73d204c40426e57f47e8c3", + "blockNumber": "0xeff35f", + "contractAddress": null, // చిరునామా యొక్క స్ట్రింగ్ సృష్టించబడితే + "cumulativeGasUsed": "0xa12515", + "effectiveGasPrice": "0x5a9c688d4", + "from": "0x6221a9c005f6e47eb398fd867784cacfdcfff4e7", + "gasUsed": "0xb4c8", + "logs": [{ + // getFilterLogs, మొదలైనవి ద్వారా తిరిగి ఇవ్వబడిన లాగ్‌లు. + }], + "logsBloom": "0x00...0", // 256 బైట్ బ్లూమ్ ఫిల్టర్ + "status": "0x1", + "to": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "transactionHash": + "0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5", + "transactionIndex": "0x66", + "type": "0x2" + } +} +``` + +### eth_getUncleByBlockHashAndIndex {#eth_getunclebyblockhashandindex} + +హాష్ మరియు అంకిల్ ఇండెక్స్ స్థానం ద్వారా ఒక బ్లాక్ యొక్క అంకిల్ గురించి సమాచారాన్ని తిరిగి ఇస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +1. `DATA`, 32 బైట్లు - ఒక బ్లాక్ యొక్క హాష్. +2. `QUANTITY` - అంకుల్ యొక్క సూచిక స్థానం. + +```js +params: [ + "0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", + "0x0", // 0 +] +``` + +**తిరిగి ఇస్తుంది** +[eth_getBlockByHash](#eth_getblockbyhash) చూడండి + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", "0x0"],"id":1}' +``` + +ఫలితం కోసం [eth_getBlockByHash](#eth_getblockbyhash) చూడండి + +**గమనిక**: ఒక అంకుల్ వ్యక్తిగత లావాదేవీలను కలిగి ఉండదు. + +### eth_getUncleByBlockNumberAndIndex {#eth_getunclebyblocknumberandindex} + +సంఖ్య మరియు అంకిల్ ఇండెక్స్ స్థానం ద్వారా ఒక బ్లాక్ యొక్క అంకిల్ గురించి సమాచారాన్ని తిరిగి ఇస్తుంది. + + + ప్లేగ్రౌండ్‌లో ఎండ్‌పాయింట్‌ని ప్రయత్నించండి + + +**పారామితులు** + +1. `QUANTITY|TAG` - ఒక బ్లాక్ సంఖ్య, లేదా `"earliest"`, `"latest"`, `"pending"`, `"safe"`, `"finalized"` స్ట్రింగ్, [బ్లాక్ పారామీటర్](/developers/docs/apis/json-rpc/#block-parameter)లో వలె. +2. `QUANTITY` - అంకుల్ యొక్క సూచిక స్థానం. + +```js +params: [ + "0x29c", // 668 + "0x0", // 0 +] +``` + +**తిరిగి ఇస్తుంది** +[eth_getBlockByHash](#eth_getblockbyhash) చూడండి + +**గమనిక**: ఒక అంకుల్ వ్యక్తిగత లావాదేవీలను కలిగి ఉండదు. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockNumberAndIndex","params":["0x29c", "0x0"],"id":1}' +``` + +ఫలితం కోసం [eth_getBlockByHash](#eth_getblockbyhash) చూడండి + +### eth_newFilter {#eth_newfilter} + +స్థితి మారినప్పుడు (లాగ్‌లు) తెలియజేయడానికి, ఫిల్టర్ ఎంపికల ఆధారంగా ఒక ఫిల్టర్ ఆబ్జెక్ట్‌ను సృష్టిస్తుంది. +స్థితి మారిందో లేదో తనిఖీ చేయడానికి, [eth_getFilterChanges](#eth_getfilterchanges)ని కాల్ చేయండి. + +**టాపిక్ ఫిల్టర్‌లను పేర్కొనడంపై ఒక గమనిక:** +టాపిక్‌లు ఆర్డర్-ఆధారితమైనవి. టాపిక్‌లు [A, B]తో ఉన్న లాగ్‌తో కూడిన లావాదేవీ కింది టాపిక్ ఫిల్టర్‌ల ద్వారా సరిపోలుతుంది: + +- `[]` "ఏదైనా" +- `[A]` "మొదటి స్థానంలో A (మరియు తరువాత ఏదైనా)" +- `[null, B]` "మొదటి స్థానంలో ఏదైనా మరియు రెండవ స్థానంలో B (మరియు తరువాత ఏదైనా)" +- `[A, B]` "మొదటి స్థానంలో A మరియు రెండవ స్థానంలో B (మరియు తరువాత ఏదైనా)" +- `[[A, B], [A, B]]` "మొదటి స్థానంలో (A లేదా B) మరియు రెండవ స్థానంలో (A లేదా B) (మరియు తరువాత ఏదైనా)" +- **పారామితులు** + +1. `ఆబ్జెక్ట్` - ఫిల్టర్ ఎంపికలు: + +- `fromBlock`: `QUANTITY|TAG` - (ఐచ్ఛికం, డిఫాల్ట్: `"latest"`) పూర్ణాంక బ్లాక్ సంఖ్య, లేదా చివరి ప్రతిపాదిత బ్లాక్ కోసం `"latest"`, తాజా సురక్షిత బ్లాక్ కోసం `"safe"`, తాజా ఖరారు చేయబడిన బ్లాక్ కోసం `"finalized"`, లేదా `"pending"`, ఇంకా బ్లాక్‌లో లేని లావాదేవీల కోసం `"earliest"`. +- `toBlock`: `QUANTITY|TAG` - (ఐచ్ఛికం, డిఫాల్ట్: `"latest"`) పూర్ణాంక బ్లాక్ సంఖ్య, లేదా చివరి ప్రతిపాదిత బ్లాక్ కోసం `"latest"`, తాజా సురక్షిత బ్లాక్ కోసం `"safe"`, తాజా ఖరారు చేయబడిన బ్లాక్ కోసం `"finalized"`, లేదా `"pending"`, ఇంకా బ్లాక్‌లో లేని లావాదేవీల కోసం `"earliest"`. +- `address`: `DATA|శ్రేణి`, 20 బైట్లు - (ఐచ్ఛికం) కాంట్రాక్ట్ చిరునామా లేదా లాగ్‌లు ప్రారంభం కావలసిన చిరునామాల జాబితా. +- `topics`: `DATA శ్రేణి`, - (ఐచ్ఛికం) 32 బైట్ల `DATA` టాపిక్‌ల శ్రేణి. టాపిక్‌లు ఆర్డర్-ఆధారితమైనవి. ప్రతి టాపిక్ "లేదా" ఎంపికలతో DATA శ్రేణి కూడా కావచ్చు. + +```js +params: [ + { + fromBlock: "0x1", + toBlock: "0x2", + address: "0x8888f1f195afa192cfee860698584c030f4c9db1", + topics: [ + "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", + null, + [ + "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x0000000000000000000000000aff3454fce5edbc8cca8697c15331677e6ebccc", + ], + ], + }, +] +``` + +**తిరిగి ఇస్తుంది** +`QUANTITY` - ఒక ఫిల్టర్ ఐడి. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newFilter","params":[{"topics":["0x12341234"]}],"id":73}' +// ఫలితం +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x1" // 1 +} +``` + +### eth_newBlockFilter {#eth_newblockfilter} + +కొత్త బ్లాక్ వచ్చినప్పుడు తెలియజేయడానికి, నోడ్‌లో ఒక ఫిల్టర్‌ను సృష్టిస్తుంది. +స్థితి మారిందో లేదో తనిఖీ చేయడానికి, [eth_getFilterChanges](#eth_getfilterchanges)ని కాల్ చేయండి. + +**పారామితులు** +ఏమీ లేవు + +**తిరిగి ఇస్తుంది** +`QUANTITY` - ఒక ఫిల్టర్ ఐడి. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":73}' +// ఫలితం +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x1" // 1 +} +``` + +### eth_newPendingTransactionFilter {#eth_newpendingtransactionfilter} + +కొత్త పెండింగ్ లావాదేవీలు వచ్చినప్పుడు తెలియజేయడానికి, నోడ్‌లో ఒక ఫిల్టర్‌ను సృష్టిస్తుంది. +స్థితి మారిందో లేదో తనిఖీ చేయడానికి, [eth_getFilterChanges](#eth_getfilterchanges)ని కాల్ చేయండి. + +**పారామితులు** +ఏమీ లేవు + +**తిరిగి ఇస్తుంది** +`QUANTITY` - ఒక ఫిల్టర్ ఐడి. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":73}' +// ఫలితం +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x1" // 1 +} +``` + +### eth_uninstallFilter {#eth_uninstallfilter} + +ఇచ్చిన ఐడితో ఒక ఫిల్టర్‌ను అన్‌ఇన్‌స్టాల్ చేస్తుంది. వాచ్ ఇకపై అవసరం లేనప్పుడు ఎల్లప్పుడూ కాల్ చేయాలి. +అదనంగా, ఫిల్టర్‌లు కొంత సమయం పాటు [eth_getFilterChanges](#eth_getfilterchanges)తో అభ్యర్థించబడనప్పుడు టైమ్‌అవుట్ అవుతాయి. + +**పారామితులు** + +1. `QUANTITY` - ఫిల్టర్ ఐడి. + +```js +params: [ + "0xb", // 11 +] +``` + +**తిరిగి ఇస్తుంది** +`బూలియన్` - ఫిల్టర్ విజయవంతంగా అన్‌ఇన్‌స్టాల్ చేయబడితే `true`, లేకపోతే `false`. + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_uninstallFilter","params":["0xb"],"id":73}' +// ఫలితం +{ + "id":1, + "jsonrpc": "2.0", + "result": true +} +``` + +### eth_getFilterChanges {#eth_getfilterchanges} + +ఒక ఫిల్టర్ కోసం పోలింగ్ పద్ధతి, ఇది చివరి పోల్ నుండి జరిగిన లాగ్‌ల శ్రేణిని అందిస్తుంది. + +**పారామితులు** + +1. `QUANTITY` - ఫిల్టర్ ఐడి. + +```js +params: [ + "0x16", // 22 +] +``` + +**తిరిగి ఇస్తుంది** +`శ్రేణి` - లాగ్ ఆబ్జెక్ట్‌ల శ్రేణి, లేదా చివరి పోల్ నుండి ఏమీ మారకపోతే ఖాళీ శ్రేణి. + +- `eth_newBlockFilter`తో సృష్టించబడిన ఫిల్టర్ల కోసం, తిరిగి వచ్చేవి బ్లాక్ హాష్‌లు (`DATA`, 32 బైట్‌లు), ఉదా., `["0x3454645634534..."]`. + +- `eth_newPendingTransactionFilter`తో సృష్టించబడిన ఫిల్టర్ల కోసం, తిరిగి వచ్చేవి లావాదేవీ హాష్‌లు (`DATA`, 32 బైట్‌లు), ఉదా., `["0x6345343454645..."]`. + +- `eth_newFilter`తో సృష్టించబడిన ఫిల్టర్‌ల కోసం, లాగ్‌లు కింది పారామీటర్లతో కూడిన ఆబ్జెక్ట్‌లు: + - `removed`: `TAG` - చైన్ పునర్వ్యవస్థీకరణ కారణంగా లాగ్ తీసివేయబడినప్పుడు `true`. చెల్లుబాటు అయ్యే లాగ్ అయితే `false`. + - `logIndex`: `QUANTITY` - బ్లాక్‌లోని లాగ్ సూచిక స్థానం యొక్క పూర్ణాంకం. పెండింగ్ లాగ్ అయితే `null`. + - `transactionIndex`: `QUANTITY` - లాగ్ సృష్టించబడిన లావాదేవీల సూచిక స్థానం యొక్క పూర్ణాంకం. పెండింగ్ లాగ్ అయితే `null`. + - `transactionHash`: `DATA`, 32 బైట్లు - ఈ లాగ్ సృష్టించబడిన లావాదేవీల హాష్. పెండింగ్ లాగ్ అయితే `null`. + - `blockHash`: `DATA`, 32 బైట్లు - ఈ లాగ్ ఉన్న బ్లాక్ యొక్క హాష్. పెండింగ్‌లో ఉంటే `null`. పెండింగ్ లాగ్ అయితే `null`. + - `blockNumber`: `QUANTITY` - ఈ లాగ్ ఉన్న బ్లాక్ సంఖ్య. పెండింగ్‌లో ఉంటే `null`. పెండింగ్ లాగ్ అయితే `null`. + - `address`: `DATA`, 20 బైట్లు - ఈ లాగ్ ప్రారంభమైన చిరునామా. + - `data`: `DATA` - వేరియబుల్-పొడవు ఇండెక్స్ చేయని లాగ్ డేటా. (_solidity_లో: సున్నా లేదా అంతకంటే ఎక్కువ 32 బైట్‌ల ఇండెక్స్ చేయని లాగ్ ఆర్గ్యుమెంట్‌లు.) + - `topics`: `DATA శ్రేణి` - సూచిక చేయబడిన లాగ్ ఆర్గ్యుమెంట్ల యొక్క 0 నుండి 4 32 బైట్ల `DATA` శ్రేణి. (_solidity_లో: మీరు `anonymous` స్పెసిఫైయర్‌తో ఈవెంట్‌ను ప్రకటించినప్పుడు తప్ప, మొదటి టాపిక్ ఈవెంట్ యొక్క సంతకం యొక్క _hash_ (ఉదా., `Deposit(address,bytes32,uint256)`).) + +- **ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterChanges","params":["0x16"],"id":73}' +// ఫలితం +{ + "id":1, + "jsonrpc":"2.0", + "result": [{ + "logIndex": "0x1", // 1 + "blockNumber":"0x1b4", // 436 + "blockHash": "0x8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcfdf829c5a142f1fccd7d", + "transactionHash": "0xdf829c5a142f1fccd7d8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcf", + "transactionIndex": "0x0", // 0 + "address": "0x16c5785ac562ff41e2dcfdf829c5a142f1fccd7d", + "data":"0x0000000000000000000000000000000000000000000000000000000000000000", + "topics": ["0x59ebeb90bc63057b6515673c3ecf9438e5058bca0f92585014eced636878c9a5"] + },{ + ... + }] +} +``` + +### eth_getFilterLogs {#eth_getfilterlogs} + +ఇచ్చిన ఐడితో ఫిల్టర్‌కు సరిపోయే అన్ని లాగ్‌ల శ్రేణిని అందిస్తుంది. + +**పారామితులు** + +1. `QUANTITY` - ఫిల్టర్ ఐడి. + +```js +params: [ + "0x16", // 22 +] +``` + +**తిరిగి ఇస్తుంది** +[eth_getFilterChanges](#eth_getfilterchanges) చూడండి + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterLogs","params":["0x16"],"id":74}' +``` + +ఫలితం కోసం [eth_getFilterChanges](#eth_getfilterchanges) చూడండి + +### eth_getLogs {#eth_getlogs} + +ఇచ్చిన ఫిల్టర్ ఆబ్జెక్ట్‌కు సరిపోయే అన్ని లాగ్‌ల శ్రేణిని అందిస్తుంది. + +**పారామితులు** + +1. `ఆబ్జెక్ట్` - ఫిల్టర్ ఎంపికలు: + +- `fromBlock`: `QUANTITY|TAG` - (ఐచ్ఛికం, డిఫాల్ట్: `"latest"`) పూర్ణాంక బ్లాక్ సంఖ్య, లేదా చివరి ప్రతిపాదిత బ్లాక్ కోసం `"latest"`, తాజా సురక్షిత బ్లాక్ కోసం `"safe"`, తాజా ఖరారు చేయబడిన బ్లాక్ కోసం `"finalized"`, లేదా `"pending"`, ఇంకా బ్లాక్‌లో లేని లావాదేవీల కోసం `"earliest"`. +- `toBlock`: `QUANTITY|TAG` - (ఐచ్ఛికం, డిఫాల్ట్: `"latest"`) పూర్ణాంక బ్లాక్ సంఖ్య, లేదా చివరి ప్రతిపాదిత బ్లాక్ కోసం `"latest"`, తాజా సురక్షిత బ్లాక్ కోసం `"safe"`, తాజా ఖరారు చేయబడిన బ్లాక్ కోసం `"finalized"`, లేదా `"pending"`, ఇంకా బ్లాక్‌లో లేని లావాదేవీల కోసం `"earliest"`. +- `address`: `DATA|శ్రేణి`, 20 బైట్లు - (ఐచ్ఛికం) కాంట్రాక్ట్ చిరునామా లేదా లాగ్‌లు ప్రారంభం కావలసిన చిరునామాల జాబితా. +- `topics`: `DATA శ్రేణి`, - (ఐచ్ఛికం) 32 బైట్ల `DATA` టాపిక్‌ల శ్రేణి. టాపిక్‌లు ఆర్డర్-ఆధారితమైనవి. ప్రతి టాపిక్ "లేదా" ఎంపికలతో DATA శ్రేణి కూడా కావచ్చు. +- `blockHash`: `DATA`, 32 బైట్లు - (ఐచ్ఛికం, **భవిష్యత్తు**) EIP-234 జోడింపుతో, `blockHash` ఒక కొత్త ఫిల్టర్ ఎంపిక అవుతుంది, ఇది తిరిగి ఇవ్వబడిన లాగ్‌లను 32-బైట్ల హాష్ `blockHash`తో ఉన్న ఒకే బ్లాక్‌కు పరిమితం చేస్తుంది. `blockHash` ఉపయోగించడం `fromBlock` = `toBlock` = హాష్ `blockHash`తో ఉన్న బ్లాక్ నంబర్‌కు సమానం. ఫిల్టర్ ప్రమాణాలలో `blockHash` ఉంటే, `fromBlock` లేదా `toBlock` అనుమతించబడవు. + +```js +params: [ + { + topics: [ + "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", + ], + }, +] +``` + +**తిరిగి ఇస్తుంది** +[eth_getFilterChanges](#eth_getfilterchanges) చూడండి + +**ఉదాహరణ** + +```js +// అభ్యర్థన +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"topics":["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b"]}],"id":74}' +``` + +ఫలితం కోసం [eth_getFilterChanges](#eth_getfilterchanges) చూడండి + +## వినియోగ ఉదాహరణ {#usage-example} + +### JSON_RPC ఉపయోగించి ఒక కాంట్రాక్ట్‌ను డిప్లాయ్ చేయడం {#deploying-contract} + +ఈ విభాగం కేవలం RPC ఇంటర్‌ఫేస్‌ను ఉపయోగించి ఒక కాంట్రాక్ట్‌ను ఎలా డిప్లాయ్ చేయాలో ప్రదర్శనను కలిగి ఉంటుంది. కాంట్రాక్ట్‌లను డిప్లాయ్ చేయడానికి ప్రత్యామ్నాయ మార్గాలు ఉన్నాయి, ఇక్కడ ఈ సంక్లిష్టత తొలగించబడుతుంది—ఉదాహరణకు, [web3.js](https://web3js.readthedocs.io/) మరియు [web3.py](https://github.com/ethereum/web3.py) వంటి RPC ఇంటర్‌ఫేస్‌పై నిర్మించిన లైబ్రరీలను ఉపయోగించడం. ఈ నైరూప్యతలు సాధారణంగా అర్థం చేసుకోవడానికి సులభంగా ఉంటాయి మరియు తక్కువ దోష-ప్రవణత కలిగి ఉంటాయి, కానీ తెర వెనుక ఏమి జరుగుతుందో అర్థం చేసుకోవడం ఇప్పటికీ సహాయకరంగా ఉంటుంది. + +కిందిది `Multiply7` అనే ఒక సూటియైన స్మార్ట్ కాంట్రాక్ట్, ఇది JSON-RPC ఇంటర్‌ఫేస్‌ను ఉపయోగించి ఒక ఇతీరియము నోడ్‌కు డిప్లాయ్ చేయబడుతుంది. ఈ ట్యుటోరియల్ చదువరి ఇప్పటికే ఒక గెత్ నోడ్‌ను నడుపుతున్నారని ఊహిస్తుంది. నోడ్‌లు మరియు క్లయింట్ల గురించి మరింత సమాచారం [ఇక్కడ](/developers/docs/nodes-and-clients/run-a-node) అందుబాటులో ఉంది. గెత్-కాని క్లయింట్ల కోసం HTTP JSON-RPCని ఎలా ప్రారంభించాలో చూడటానికి దయచేసి వ్యక్తిగత [క్లయింట్](/developers/docs/nodes-and-clients/) డాక్యుమెంటేషన్‌ను చూడండి. చాలా క్లయింట్లు `localhost:8545`లో సర్వ్ చేయడానికి డిఫాల్ట్ అవుతాయి. + +```javascript +contract Multiply7 { + event Print(uint); + function multiply(uint input) returns (uint) { + Print(input * 7); + return input * 7; + } +} +``` + +చేయవలసిన మొదటి పని HTTP RPC ఇంటర్‌ఫేస్ ప్రారంభించబడిందని నిర్ధారించుకోవడం. అంటే మేము ప్రారంభంలో గెత్‌కు `--http` ఫ్లాగ్‌ను సరఫరా చేస్తాము. ఈ ఉదాహరణలో మేము ఒక ప్రైవేట్ డెవలప్‌మెంట్ చైన్‌లో గెత్ నోడ్‌ను ఉపయోగిస్తాము. ఈ విధానాన్ని ఉపయోగించి మాకు నిజమైన నెట్‌వర్క్‌లో ఈథర్ అవసరం లేదు. + +```bash +geth --http --dev console 2>>geth.log +``` + +ఇది HTTP RPC ఇంటర్‌ఫేస్‌ను `http://localhost:8545`లో ప్రారంభిస్తుంది. + +[curl](https://curl.se) ఉపయోగించి కాయిన్‌బేస్ చిరునామాను (ఖాతాల శ్రేణి నుండి మొదటి చిరునామాను పొందడం ద్వారా) మరియు బ్యాలెన్స్‌ను తిరిగి పొందడం ద్వారా ఇంటర్‌ఫేస్ నడుస్తోందని మేము ధృవీకరించుకోవచ్చు. దయచేసి గమనించండి, ఈ ఉదాహరణలలోని డేటా మీ స్థానిక నోడ్‌లో భిన్నంగా ఉంటుంది. మీరు ఈ ఆదేశాలను ప్రయత్నించాలనుకుంటే, రెండవ curl అభ్యర్థనలోని అభ్యర్థన పారామీటర్లను మొదటిదాని నుండి తిరిగి వచ్చిన ఫలితంతో భర్తీ చేయండి. + +```bash +curl --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[], "id":1}' -H "Content-Type: application/json" localhost:8545 +{"id":1,"jsonrpc":"2.0","result":["0x9b1d35635cc34752ca54713bb99d38614f63c955"]} + +curl --data '{"jsonrpc":"2.0","method":"eth_getBalance", "params": ["0x9b1d35635cc34752ca54713bb99d38614f63c955", "latest"], "id":2}' -H "Content-Type: application/json" localhost:8545 +{"id":2,"jsonrpc":"2.0","result":"0x1639e49bba16280000"} +``` + +సంఖ్యలు హెక్స్ ఎన్‌కోడ్ చేయబడినందున, బ్యాలెన్స్ వైలో హెక్స్ స్ట్రింగ్‌గా తిరిగి ఇవ్వబడుతుంది. మాకు ఈథర్‌లో సంఖ్యగా బ్యాలెన్స్ కావాలంటే, మేము గెత్ కన్సోల్ నుండి వెబ్3ని ఉపయోగించవచ్చు. + +```javascript +web3.fromWei("0x1639e49bba16280000", "ether") +// "410" +``` + +ఇప్పుడు మా ప్రైవేట్ డెవలప్‌మెంట్ చైన్‌లో కొంత ఈథర్ ఉంది కాబట్టి, మేము కాంట్రాక్ట్‌ను డిప్లాయ్ చేయవచ్చు. మొదటి దశ Multiply7 కాంట్రాక్ట్‌ను EVMకి పంపగల బైట్ కోడ్‌గా కంపైల్ చేయడం. solc, సాలిడిటీ కంపైలర్‌ను ఇన్‌స్టాల్ చేయడానికి, [సాలిడిటీ డాక్యుమెంటేషన్‌ను](https://docs.soliditylang.org/en/latest/installing-solidity.html) అనుసరించండి. (మా ఉదాహరణకు ఉపయోగించిన కంపైలర్ వెర్షన్‌కు సరిపోయేలా మీరు పాత `solc` విడుదలను ఉపయోగించాలనుకోవచ్చు (https://github.com/ethereum/solidity/releases/tag/v0.4.20).) + +తదుపరి దశ, Multiply7 కాంట్రాక్టును EVMకి పంపగలిగే బైట్ కోడ్‌కి కంపైల్ చేయడం. + +```bash +echo 'pragma solidity ^0.4.16; contract Multiply7 { event Print(uint); function multiply(uint input) public returns (uint) { Print(input * 7); return input * 7; } }' | solc --bin + +======= :Multiply7 ======= +Binary: +6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029 +``` + +ఇప్పుడు మనకు కంపైల్ చేయబడిన కోడ్ ఉంది కాబట్టి దానిని డిప్లాయ్ చేయడానికి ఎంత గ్యాస్ ఖర్చవుతుందో మనం నిర్ధారించుకోవాలి. RPC ఇంటర్‌ఫేస్‌లో `eth_estimateGas` పద్ధతి ఉంది, ఇది మాకు ఒక అంచనాను ఇస్తుంది. + +```bash +curl --data '{"jsonrpc":"2.0","method": "eth_estimateGas", "params": [{"from": "0x9b1d35635cc34752ca54713bb99d38614f63c955", "data": "0x6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029"}], "id": 5}' -H "Content-Type: application/json" localhost:8545 +{"jsonrpc":"2.0","id":5,"result":"0x1c31e"} +``` + +చివరగా కాంట్రాక్ట్‌ను డిప్లాయ్ చేయండి. + +```bash +curl --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0x9b1d35635cc34752ca54713bb99d38614f63c955", "gas": "0x1c31e", "data": "0x6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029"}], "id": 6}' -H "Content-Type: application/json" localhost:8545 +{"id":6,"jsonrpc":"2.0","result":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"} +``` + +లావాదేవీ నోడ్ ద్వారా అంగీకరించబడింది మరియు ఒక లావాదేవీ హాష్ తిరిగి ఇవ్వబడుతుంది. ఈ హాష్‌ను లావాదేవీని ట్రాక్ చేయడానికి ఉపయోగించవచ్చు. తదుపరి దశ మన కాంట్రాక్ట్ డిప్లాయ్ చేయబడిన చిరునామాను నిర్ధారించడం. ప్రతి అమలు చేయబడిన లావాదేవీ ఒక రసీదును సృష్టిస్తుంది. ఈ రసీదు లావాదేవీకి సంబంధించిన వివిధ సమాచారాన్ని కలిగి ఉంటుంది, ఉదాహరణకు లావాదేవీ ఏ బ్లాక్‌లో చేర్చబడింది మరియు EVM ద్వారా ఎంత గ్యాస్ ఉపయోగించబడింది. ఒక లావాదేవీ +ఒక కాంట్రాక్ట్‌ను సృష్టిస్తే అది కాంట్రాక్ట్ చిరునామాను కూడా కలిగి ఉంటుంది. మనం `eth_getTransactionReceipt` RPC పద్ధతితో రసీదును తిరిగి పొందవచ్చు. + +```bash +curl --data '{"jsonrpc":"2.0","method": "eth_getTransactionReceipt", "params": ["0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"], "id": 7}' -H "Content-Type: application/json" localhost:8545 +{"jsonrpc":"2.0","id":7,"result":{"blockHash":"0x77b1a4f6872b9066312de3744f60020cbd8102af68b1f6512a05b7619d527a4f","blockNumber":"0x1","contractAddress":"0x4d03d617d700cf81935d7f797f4e2ae719648262","cumulativeGasUsed":"0x1c31e","from":"0x9b1d35635cc34752ca54713bb99d38614f63c955","gasUsed":"0x1c31e","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","status":"0x1","to":null,"transactionHash":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf","transactionIndex":"0x0"}} +``` + +మన కాంట్రాక్ట్ `0x4d03d617d700cf81935d7f797f4e2ae719648262`పై సృష్టించబడింది. రసీదుకు బదులుగా శూన్య ఫలితం అంటే లావాదేవీ ఇంకా ఒక బ్లాక్‌లో చేర్చబడలేదు. కొంతసేపు వేచి ఉండి, మీ ఏకాభిప్రాయం క్లయింట్ నడుస్తుందో లేదో తనిఖీ చేసి, మళ్లీ ప్రయత్నించండి. + +#### స్మార్ట్ కాంట్రాక్టులతో పరస్పర చర్య {#interacting-with-smart-contract} + +ఈ ఉదాహరణలో మనం కాంట్రాక్ట్ యొక్క `multiply` పద్ధతికి `eth_sendTransaction` ఉపయోగించి ఒక లావాదేవీని పంపుతాము. + +`eth_sendTransaction`కి అనేక ఆర్గ్యుమెంట్‌లు అవసరం, ప్రత్యేకంగా `from`, `to` మరియు `data`. `From` అనేది మన ఖాతా యొక్క పబ్లిక్ చిరునామా, మరియు `to` అనేది కాంట్రాక్ట్ చిరునామా. `data` ఆర్గ్యుమెంట్ ఏ పద్ధతిని మరియు ఏ ఆర్గ్యుమెంట్‌లతో పిలవాలి అని నిర్వచించే పేలోడ్‌ను కలిగి ఉంటుంది. [ఎబిఐ (అప్లికేషన్ బైనరీ ఇంటర్‌ఫేస్)](https://docs.soliditylang.org/en/latest/abi-spec.html) ఇక్కడే ఉపయోగంలోకి వస్తుంది. ఎబిఐ అనేది EVM కోసం డేటాను ఎలా నిర్వచించాలి మరియు ఎన్కోడ్ చేయాలో నిర్వచించే ఒక JSON ఫైల్. + +పేలోడ్ యొక్క బైట్‌లు కాంట్రాక్టులోని ఏ పద్ధతిని పిలవాలో నిర్వచిస్తాయి. ఇది ఫంక్షన్ పేరు మరియు దాని ఆర్గ్యుమెంట్ రకాలపై కెకాక్ హాష్ నుండి మొదటి 4 బైట్‌లు, హెక్స్ ఎన్కోడ్ చేయబడింది. మల్టిప్లై ఫంక్షన్ ఒక uintని అంగీకరిస్తుంది, ఇది uint256కి అలియాస్. ఇది మనకు దీనిని ఇస్తుంది: + +```javascript +web3.sha3("multiply(uint256)").substring(0, 10) +// "0xc6888fa1" +``` + +తదుపరి దశ ఆర్గ్యుమెంట్‌లను ఎన్కోడ్ చేయడం. కేవలం ఒకే ఒక్క uint256 ఉంది, ఉదాహరణకు, 6 అనే విలువ. ఎబిఐలో uint256 రకాలను ఎలా ఎన్కోడ్ చేయాలో నిర్దేశించే ఒక విభాగం ఉంది. + +`int: enc(X)` అనేది X యొక్క బిగ్-ఎండియన్ టూస్ కాంప్లిమెంట్ ఎన్కోడింగ్, ప్రతికూల X కోసం 0xffతో, మరియు సానుకూల X కోసం సున్నా బైట్లతో హైయ్యర్-ఆర్డర్ (ఎడమ) వైపు ప్యాడ్ చేయబడి ఉంటుంది, తద్వారా దాని పొడవు 32 బైట్‌ల గుణకం అవుతుంది. + +ఇది `0000000000000000000000000000000000000000000000000000000000000006`గా ఎన్కోడ్ అవుతుంది. + +ఫంక్షన్ సెలెక్టర్ మరియు ఎన్కోడ్ చేయబడిన ఆర్గ్యుమెంట్‌ను కలిపితే మన డేటా `0xc6888fa10000000000000000000000000000000000000000000000000000000000000006` అవుతుంది. + +ఇది ఇప్పుడు నోడ్‌కు పంపబడుతుంది: + +```bash +curl --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0xeb85a5557e5bdc18ee1934a89d8bb402398ee26a", "to": "0x6ff93b4b46b41c0c3c9baee01c255d3b4675963d", "data": "0xc6888fa10000000000000000000000000000000000000000000000000000000000000006"}], "id": 8}' -H "Content-Type: application/json" localhost:8545 +{"id":8,"jsonrpc":"2.0","result":"0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74"} +``` + +ఒక లావాదేవీ పంపబడినందున, ఒక లావాదేవీ హాష్ తిరిగి ఇవ్వబడింది. రసీదును తిరిగి పొందితే లభించేది: + +```javascript +{ + blockHash: "0xbf0a347307b8c63dd8c1d3d7cbdc0b463e6e7c9bf0a35be40393588242f01d55", + blockNumber: 268, + contractAddress: null, + cumulativeGasUsed: 22631, + gasUsed: 22631, + logs: [{ + address: "0x6ff93b4b46b41c0c3c9baee01c255d3b4675963d", + blockHash: "0xbf0a347307b8c63dd8c1d3d7cbdc0b463e6e7c9bf0a35be40393588242f01d55", + blockNumber: 268, + data: "0x000000000000000000000000000000000000000000000000000000000000002a", + logIndex: 0, + topics: ["0x24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da"], + transactionHash: "0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74", + transactionIndex: 0 + }], + transactionHash: "0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74", + transactionIndex: 0 +} +``` + +రసీదులో ఒక లాగ్ ఉంటుంది. ఈ లాగ్ లావాదేవీ అమలుపై EVM ద్వారా ఉత్పత్తి చేయబడింది మరియు రసీదులో చేర్చబడింది. `multiply` ఫంక్షన్, ఇన్‌పుట్‌ని 7తో గుణించగా `Print` ఈవెంట్ జరిగిందని చూపుతుంది. `Print` ఈవెంట్ కోసం ఆర్గ్యుమెంట్ ఒక uint256 అయినందున, మనం దానిని ఎబిఐ నిబంధనల ప్రకారం డీకోడ్ చేయవచ్చు, ఇది మనకు ఆశించిన దశాంశం 42ను ఇస్తుంది. డేటాతో పాటు, లాగ్‌ను ఏ ఈవెంట్ సృష్టించిందో నిర్ధారించడానికి టాపిక్స్‌ని ఉపయోగించవచ్చని గమనించడం ముఖ్యం: + +```javascript +web3.sha3("Print(uint256)") +// "24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da" +``` + +ఇది JSON-RPC యొక్క ప్రత్యక్ష వినియోగాన్ని ప్రదర్శిస్తూ, అత్యంత సాధారణ పనులలో కొన్నింటికి కేవలం ఒక సంక్షిప్త పరిచయం. + +## సంబంధిత అంశాలు {#related-topics} + +- [JSON-RPC స్పెసిఫికేషన్](http://www.jsonrpc.org/specification) +- [నోడ్‌లు మరియు క్లయింట్లు](/developers/docs/nodes-and-clients/) +- [జావాస్క్రిప్ట్ ఎపిఐలు](/developers/docs/apis/javascript/) +- [బ్యాకెండ్ ఎపిఐలు](/developers/docs/apis/backend/) +- [ఎగ్జిక్యూషన్ క్లయింట్‌లు](/developers/docs/nodes-and-clients/#execution-clients) diff --git a/public/content/translations/te/developers/docs/blocks/index.md b/public/content/translations/te/developers/docs/blocks/index.md new file mode 100644 index 00000000000..ae3e7a02918 --- /dev/null +++ b/public/content/translations/te/developers/docs/blocks/index.md @@ -0,0 +1,153 @@ +--- +title: "బ్లాక్ లు" +description: "Ethereum బ్లాక్‌చెయిన్‌లోని బ్లాక్‌ల యొక్క అవలోకనం – వాటి డేటా నిర్మాణం, అవి ఎందుకు అవసరం మరియు అవి ఎలా తయారు చేయబడ్డాయి." +lang: te +--- + +బ్లాక్‌లు అనేది గొలుసులోని మునుపటి బ్లాక్ యొక్క హాష్‌తో లావాదేవీల బ్యాచ్‌లు. ఇది బ్లాక్‌లను ఒకదానితో ఒకటి (చైన్‌లో) లింక్ చేస్తుంది ఎందుకంటే హాష్‌లు క్రిప్టోగ్రాఫికల్‌గా బ్లాక్ డేటా నుండి తీసుకోబడ్డాయి. ఇది మోసాన్ని నిరోధిస్తుంది, ఎందుకంటే చరిత్రలోని ఏదైనా బ్లాక్‌లో ఒక మార్పు అన్ని తదుపరి హాష్‌లు మారతాయి మరియు బ్లాక్‌చెయిన్‌ను నడుపుతున్న ప్రతి ఒక్కరూ గమనించే విధంగా అన్ని క్రింది బ్లాక్‌లను చెల్లుబాటు చేయదు. + +## అవసరాలు {#prerequisites} + +Blocks are a very beginner-friendly topic. కానీ ఈ పేజీని మీరు బాగా అర్థం చేసుకోవడంలో సహాయపడటానికి, మీరు మొదట [ఖాతాలు](/developers/docs/accounts/), [లావాదేవీలు](/developers/docs/transactions/), మరియు మా [ఇతీరియము పరిచయం](/developers/docs/intro-to-ethereum/) చదవాలని మేము సిఫార్సు చేస్తున్నాము. + +## ఎందుకు బ్లాక్స్? బ్లాక్స్ ఎందుకు? {#why-blocks} + +Ethereum నెట్‌వర్క్‌లో పాల్గొనే వారందరూ సమకాలీకరించబడిన స్థితిని కలిగి ఉన్నారని మరియు లావాదేవీల యొక్క ఖచ్చితమైన చరిత్రను అంగీకరిస్తున్నట్లు నిర్ధారించడానికి, మేము లావాదేవీలను బ్లాక్‌లుగా చేస్తాము. దీని అర్థం డజన్ల కొద్దీ (లేదా వందల కొద్దీ) లావాదేవీలు ఒకేసారి కట్టుబడి, అంగీకరించబడ్డాయి మరియు సమకాలీకరించబడ్డాయి. + +![బ్లాక్‌లో లావాదేవీ స్థితి మార్పులకు కారణమవడాన్ని చూపే రేఖాచిత్రం](./tx-block.png) +_రేఖాచిత్రం [ఇతీరియము EVM ఇలస్ట్రేటెడ్](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) నుండి స్వీకరించబడింది_ + +కమిట్‌లను దూరం చేయడం ద్వారా, మేము నెట్‌వర్క్ భాగస్వాములందరికీ ఏకాభిప్రాయానికి రావడానికి తగినంత సమయం ఇస్తాము: లావాదేవీ అభ్యర్థనలు సెకనుకు డజన్ల కొద్దీ వచ్చినప్పటికీ, బ్లాక్‌లు ప్రతి పన్నెండు సెకన్లకు ఒకసారి మాత్రమే Ethereumలో సృష్టించబడతాయి మరియు కట్టుబడి ఉంటాయి. + +## బ్లాక్స్ ఎలా పనిచేస్తాయి {#how-blocks-work} + +లావాదేవీ చరిత్రను భద్రపరచడానికి, బ్లాక్‌లు ఖచ్చితంగా ఆర్డర్ చేయబడతాయి (సృష్టించబడిన ప్రతి కొత్త బ్లాక్ దాని పేరెంట్ బ్లాక్‌కు సూచనను కలిగి ఉంటుంది), మరియు బ్లాక్‌లలో లావాదేవీలు కూడా ఖచ్చితంగా ఆర్డర్ చేయబడతాయి. అరుదైన సందర్భాల్లో మినహా, ఏ సమయంలోనైనా, నెట్‌వర్క్‌లోని భాగస్వాములందరూ బ్లాక్‌ల ఖచ్చితమైన సంఖ్య మరియు చరిత్రపై ఏకీభవించారు మరియు ప్రస్తుత ప్రత్యక్ష లావాదేవీల అభ్యర్థనలను తదుపరి బ్లాక్‌లోకి బ్యాచ్ చేయడానికి కృషి చేస్తున్నారు. + +నెట్‌వర్క్‌లో యాదృచ్ఛికంగా ఎంపిక చేయబడిన వాలిడేటర్ ద్వారా బ్లాక్‌ను కలిపిన తర్వాత, అది మిగిలిన నెట్‌వర్క్‌కు ప్రచారం చేయబడుతుంది; అన్ని నోడ్‌లు ఈ బ్లాక్‌ను వాటి బ్లాక్‌చెయిన్ చివరకి జోడిస్తాయి మరియు తదుపరి బ్లాక్‌ని సృష్టించడానికి కొత్త వాలిడేటర్ ఎంచుకోబడుతుంది. ఖచ్చితమైన బ్లాక్-అసెంబ్లీ ప్రక్రియ మరియు నిబద్ధత/ఏకాభిప్రాయ ప్రక్రియ ప్రస్తుతం Ethereum యొక్క "ప్రూఫ్-ఆఫ్-స్టేక్" ప్రోటోకాల్ ద్వారా పేర్కొనబడింది. + +## ప్రూఫ్-ఆఫ్-స్టేక్ ప్రోటోకాల్ {#proof-of-stake-protocol} + +ప్రూఫ్-ఆఫ్-స్టేక్ అంటే క్రిందివి: + +- ధృవీకరణ నోడ్‌లు చెడు ప్రవర్తనకు వ్యతిరేకంగా 32 ETHని డిపాజిట్ కాంట్రాక్ట్‌గా కలిగి ఉండాలి. ఇది నెట్‌వర్క్‌ను రక్షించడంలో సహాయపడుతుంది ఎందుకంటే నిజాయితీ లేని కార్యకలాపం కొంత లేదా మొత్తం వాటాను నాశనం చేయడానికి దారి తీస్తుంది. +- ప్రతి స్లాట్‌లో (పన్నెండు సెకన్ల తేడాతో) ఒక వాలిడేటర్ యాదృచ్ఛికంగా బ్లాక్ ప్రపోజర్‌గా ఎంపిక చేయబడుతుంది. వారు లావాదేవీలను ఒకదానితో ఒకటి కట్టి, వాటిని అమలు చేసి కొత్త 'స్టేట్'ని నిర్ణయిస్తారు. వారు ఈ సమాచారాన్ని ఒక బ్లాక్‌లో చుట్టి, ఇతర వ్యాలిడేటర్‌లకు పంపుతారు. +- కొత్త బ్లాక్ గురించి విన్న ఇతర వ్యాలిడేటర్లు గ్లోబల్ స్టేట్‌కు ప్రతిపాదిత మార్పుతో అంగీకరిస్తున్నట్లు నిర్ధారించుకోవడానికి లావాదేవీలను మళ్లీ అమలు చేస్తారు. బ్లాక్ చెల్లుబాటు అవుతుందని ఊహిస్తూ, వారు దానిని తమ స్వంత డేటాబేస్కు జోడించుకుంటారు. +- వాలిడేటర్ ఒకే స్లాట్ కోసం రెండు విరుద్ధమైన బ్లాక్‌ల గురించి విన్నట్లయితే, వారు తమ ఫోర్క్-ఛాయిస్ అల్గారిథమ్‌ను ఉపయోగించి ఎక్కువ వాటా ఉన్న ETH ద్వారా మద్దతునిస్తారు. + +[ప్రూఫ్-ఆఫ్-స్టేక్ గురించి మరింత](/developers/docs/consensus-mechanisms/pos) + +## బ్లాక్‌లో ఏముంది? బ్లాక్ అనాటమీ {#block-anatomy} + +ఒక బ్లాక్‌లో చాలా సమాచారం ఉంది. అత్యధిక స్థాయిలో బ్లాక్ కింది ఫీల్డ్‌లను కలిగి ఉంటుంది: + +| ఫీల్డ్ | వివరణ | +| :--------------- | :---------------------------------------------------------- | +| `slot` | బ్లాక్ చెందిన స్లాట్ | +| `proposer_index` | బ్లాక్‌ను ప్రతిపాదించే వాలిడేటర్ యొక్క ID | +| `parent_root` | మునుపటి బ్లాక్ యొక్క హాష్ | +| `state_root` | రాష్ట్ర వస్తువు యొక్క మూల హాష్ | +| `body` | దిగువ నిర్వచించిన విధంగా అనేక ఫీల్డ్‌లను కలిగి ఉన్న వస్తువు | + +బ్లాక్ `body` దాని స్వంత అనేక ఫీల్డ్‌లను కలిగి ఉంది: + +| ఫీల్డ్ | వివరణ | +| :------------------- | :------------------------------------------------------------ | +| `randao_reveal` | తదుపరి బ్లాక్ ప్రపోజర్‌ను ఎంచుకోవడానికి ఉపయోగించే విలువ | +| `eth1_data` | డిపాజిట్ ఒప్పందం గురించి సమాచారం | +| `graffiti` | బ్లాక్‌లను ట్యాగ్ చేయడానికి ఉపయోగించే ఏకపక్ష డేటా | +| `proposer_slashings` | వాలిడేటర్ల జాబితాను తగ్గించాలి | +| `attester_slashings` | కత్తిరించాల్సిన అటెస్టర్ల జాబితా | +| `attestations` | మునుపటి స్లాట్‌లకు వ్యతిరేకంగా చేసిన ధృవీకరణల జాబితా | +| `deposits` | డిపాజిట్ ఒప్పందానికి కొత్త డిపాజిట్ల జాబితా | +| `voluntary_exits` | నెట్‌వర్క్ నుండి నిష్క్రమించే వ్యాలిడేటర్‌ల జాబితా | +| `sync_aggregate` | లైట్ క్లయింట్‌లకు సేవ చేయడానికి ఉపయోగించే వాలిడేటర్‌ల ఉపసమితి | +| `execution_payload` | ఎగ్జిక్యూషన్ క్లయింట్ నుండి లావాదేవీలు ఆమోదించబడ్డాయి | + +`attestations` ఫీల్డ్ బ్లాక్‌లోని అన్ని ధృవీకరణల జాబితాను కలిగి ఉంటుంది. ధృవీకరణలు అనేక డేటాను కలిగి ఉన్న వాటి స్వంత డేటా రకాన్ని కలిగి ఉంటాయి. ప్రతి ధృవీకరణలో ఇవి ఉంటాయి: + +| ఫీల్డ్ | వివరణ | +| :----------------- | :--------------------------------------------------------------- | +| `aggregation_bits` | ఈ ధృవీకరణలో పాల్గొన్న ధృవీకరణదారుల జాబితా | +| `data` | బహుళ సబ్‌ఫీల్డ్‌లతో కూడిన కంటైనర్ | +| `signature` | `data` భాగానికి వ్యతిరేకంగా వాలిడేటర్‌ల సమితి యొక్క మొత్తం సంతకం | + +`attestation`లోని `data` ఫీల్డ్ కింది వాటిని కలిగి ఉంటుంది: + +| ఫీల్డ్ | వివరణ | +| :------------------ | :-------------------------------------------------------- | +| `slot` | ధృవీకరణకు సంబంధించిన స్లాట్ | +| `index` | వాలిడేటర్లను ధృవీకరించడానికి సూచికలు | +| `beacon_block_root` | చైన్ యొక్క హెడ్‌గా కనిపించే బీకాన్ బ్లాక్ యొక్క రూట్ హాష్ | +| `source` | చివరి సమర్థించబడిన చెక్‌పాయింట్ | +| `target` | తాజా యుగం సరిహద్దు బ్లాక్ | + +`execution_payload`లోని లావాదేవీలను అమలు చేయడం గ్లోబల్ స్థితిని నవీకరిస్తుంది. క్లయింట్‌లందరూ కొత్త బ్లాక్ `state_root` ఫీల్డ్‌లో కొత్త స్థితి సరిపోలుతుందని నిర్ధారించుకోవడానికి `execution_payload`లో లావాదేవీలను మళ్లీ అమలు చేస్తారు. క్లయింట్‌లు తమ బ్లాక్‌చెయిన్‌కి జోడించడానికి కొత్త బ్లాక్ చెల్లుబాటు అయ్యేది మరియు సురక్షితమైనదని ఈ విధంగా చెప్పగలరు. `execution_payload` అనేది అనేక ఫీల్డ్‌లతో కూడిన ఒక ఆబ్జెక్ట్. అమలు డేటా గురించి ముఖ్యమైన సారాంశ సమాచారాన్ని కలిగి ఉన్న `execution_payload_header` కూడా ఉంది. ఈ డేటా నిర్మాణాలు ఈ క్రింది విధంగా నిర్వహించబడతాయి: + +`execution_payload_header` కింది ఫీల్డ్‌లను కలిగి ఉంది: + +| ఫీల్డ్ | వివరణ | +| :------------------ | :---------------------------------------------------------------------- | +| `parent_hash` | మాతృ బ్లాక్ యొక్క హాష్ | +| `fee_recipient` | లావాదేవీ రుసుము చెల్లించడానికి ఖాతా చిరునామా | +| `state_root` | ఈ బ్లాక్‌లో మార్పులను వర్తింపజేసిన తర్వాత గ్లోబల్ స్టేట్ కోసం రూట్ హాష్ | +| `receipts_root` | లావాదేవీ రసీదుల హాష్ ప్రయత్నించండి | +| `logs_bloom` | ఈవెంట్ లాగ్‌లను కలిగి ఉన్న డేటా నిర్మాణం | +| `prev_randao` | యాదృచ్ఛిక వ్యాలిడేటర్ ఎంపికలో విలువ ఉపయోగించబడుతుంది | +| `block_number` | ప్రస్తుత బ్లాక్ సంఖ్య | +| `gas_limit` | ఈ బ్లాక్‌లో అనుమతించబడిన గరిష్ట వాయువు | +| `gas_used` | ఈ బ్లాక్‌లో ఉపయోగించిన గ్యాస్ అసలు మొత్తం | +| `timestamp` | బ్లాక్ సమయం | +| `extra_data` | ముడి బైట్‌ల వలె ఏకపక్ష అదనపు డేటా | +| `base_fee_per_gas` | ప్రాథమిక రుసుము విలువ | +| `block_hash` | హాష్ ఆఫ్ ఎగ్జిక్యూషన్ బ్లాక్ | +| `transactions_root` | పేలోడ్‌లోని లావాదేవీల రూట్ హాష్ | +| `withdrawal_root` | పేలోడ్‌లోని ఉపసంహరణల యొక్క రూట్ హాష్ | + +`execution_payload` దానంతట అదే క్రింది వాటిని కలిగి ఉంది (ఇది హెడర్‌తో సమానంగా ఉందని గమనించండి, లావాదేవీల యొక్క రూట్ హాష్‌కు బదులుగా ఇది లావాదేవీల యొక్క వాస్తవ జాబితా మరియు ఉపసంహరణ సమాచారాన్ని కలిగి ఉంటుంది) : + +| ఫీల్డ్ | వివరణ | +| :----------------- | :---------------------------------------------------------------------- | +| `parent_hash` | మాతృ బ్లాక్ యొక్క హాష్ | +| `fee_recipient` | లావాదేవీ రుసుము చెల్లించడానికి ఖాతా చిరునామా | +| `state_root` | ఈ బ్లాక్‌లో మార్పులను వర్తింపజేసిన తర్వాత గ్లోబల్ స్టేట్ కోసం రూట్ హాష్ | +| `receipts_root` | లావాదేవీ రసీదుల హాష్ ప్రయత్నించండి | +| `logs_bloom` | ఈవెంట్ లాగ్‌లను కలిగి ఉన్న డేటా నిర్మాణం | +| `prev_randao` | యాదృచ్ఛిక వ్యాలిడేటర్ ఎంపికలో విలువ ఉపయోగించబడుతుంది | +| `block_number` | ప్రస్తుత బ్లాక్ సంఖ్య | +| `gas_limit` | ఈ బ్లాక్‌లో అనుమతించబడిన గరిష్ట వాయువు | +| `gas_used` | ఈ బ్లాక్‌లో ఉపయోగించిన గ్యాస్ అసలు మొత్తం | +| `timestamp` | బ్లాక్ సమయం | +| `extra_data` | ముడి బైట్‌ల వలె ఏకపక్ష అదనపు డేటా | +| `base_fee_per_gas` | ప్రాథమిక రుసుము విలువ | +| `block_hash` | హాష్ ఆఫ్ ఎగ్జిక్యూషన్ బ్లాక్ | +| `transactions` | అమలు చేయవలసిన లావాదేవీల జాబితా | +| `withdrawals` | ఉపసంహరణ వస్తువుల జాబితా | + +`withdrawals` జాబితాలో `withdrawal` ఆబ్జెక్టులు కింది విధంగా నిర్మించబడ్డాయి: + +| ఫీల్డ్ | వివరణ | +| :--------------- | :---------------------------- | +| `address` | ఉపసంహరించుకున్న ఖాతా చిరునామా | +| `amount` | ఉపసంహరణ మొత్తం | +| `index` | ఉపసంహరణ సూచిక విలువ | +| `validatorIndex` | ఉపసంహరణ సూచిక విలువ | + +## బ్లాక్ సమయం {#block-time} + +బ్లాక్ సమయం అనేది బ్లాక్‌లను వేరుచేసే సమయాన్ని సూచిస్తుంది. Ethereumలో, సమయాన్ని 'స్లాట్‌లు' అని పిలిచే పన్నెండు సెకన్ల యూనిట్‌లుగా విభజించారు. ప్రతి స్లాట్‌లో ఒక బ్లాక్‌ను ప్రతిపాదించడానికి ఒకే వాలిడేటర్ ఎంపిక చేయబడుతుంది. అన్ని వాలిడేటర్‌లు ఆన్‌లైన్‌లో ఉన్నాయని మరియు పూర్తిగా పని చేస్తున్నాయని భావించి ప్రతి స్లాట్‌లో ఒక బ్లాక్ ఉంటుంది, అంటే బ్లాక్ సమయం 12సె. అయితే, బ్లాక్‌ను ప్రతిపాదించడానికి కాల్ చేసినప్పుడు అప్పుడప్పుడు వాలిడేటర్‌లు ఆఫ్‌లైన్‌లో ఉండవచ్చు, అంటే స్లాట్‌లు కొన్నిసార్లు ఖాళీగా మారవచ్చు. + +ఈ అమలు ప్రూఫ్-ఆఫ్-వర్క్ ఆధారిత సిస్టమ్‌ల నుండి భిన్నంగా ఉంటుంది, ఇక్కడ బ్లాక్ టైమ్‌లు సంభావ్యత మరియు ప్రోటోకాల్ యొక్క లక్ష్య మైనింగ్ కష్టాల ద్వారా ట్యూన్ చేయబడతాయి. ఇతీరియము యొక్క [సగటు బ్లాక్ సమయం](https://etherscan.io/chart/blocktime) దీనికి ఒక సరైన ఉదాహరణ, దీని ద్వారా కొత్త 12s బ్లాక్ సమయం యొక్క స్థిరత్వం ఆధారంగా ప్రూఫ్-ఆఫ్-వర్క్ నుండి ప్రూఫ్-ఆఫ్-స్టేక్‌కు మారడాన్ని స్పష్టంగా ఊహించవచ్చు. + +## బ్లాక్ పరిమాణం {#block-size} + +చివరి ముఖ్యమైన గమనిక ఏమిటంటే, బ్లాక్‌లు వాటి పరిమాణంలో కట్టుబడి ఉంటాయి. ప్రతి బ్లాక్‌కు 30 మిలియన్ గ్యాస్ లక్ష్య పరిమాణం ఉంటుంది, కానీ బ్లాక్ పరిమితి 60 మిలియన్ గ్యాస్ (2x టార్గెట్ బ్లాక్ సైజు) వరకు నెట్‌వర్క్ డిమాండ్‌లకు అనుగుణంగా బ్లాక్‌ల పరిమాణం పెరుగుతుంది లేదా తగ్గుతుంది. బ్లాక్ గ్యాస్ పరిమితిని మునుపటి బ్లాక్ గ్యాస్ పరిమితి నుండి 1/1024 కారకం ద్వారా పైకి లేదా క్రిందికి సర్దుబాటు చేయవచ్చు. ఫలితంగా, వ్యాలిడేటర్లు ఏకాభిప్రాయం ద్వారా బ్లాక్ గ్యాస్ పరిమితిని మార్చవచ్చు. బ్లాక్‌లోని అన్ని లావాదేవీల ద్వారా ఖర్చు చేయబడిన గ్యాస్ మొత్తం బ్లాక్ గ్యాస్ పరిమితి కంటే తక్కువగా ఉండాలి. ఇది చాలా ముఖ్యం ఎందుకంటే బ్లాక్‌లు ఏకపక్షంగా పెద్దవిగా ఉండకూడదని ఇది నిర్ధారిస్తుంది. బ్లాక్‌లు ఏకపక్షంగా పెద్దవిగా ఉంటే, తక్కువ పనితీరు గల పూర్తి నోడ్‌లు స్థలం మరియు వేగ అవసరాల కారణంగా నెట్‌వర్క్‌ను కొనసాగించడాన్ని క్రమంగా ఆపివేస్తాయి. పెద్ద బ్లాక్, తదుపరి స్లాట్ కోసం వాటిని ప్రాసెస్ చేయడానికి ఎక్కువ కంప్యూటింగ్ శక్తి అవసరం. ఇది ఒక కేంద్రీకృత శక్తి, ఇది బ్లాక్ పరిమాణాలను క్యాపింగ్ చేయడం ద్వారా నిరోధించబడుతుంది. + +## మరింత సమాచారం {#further-reading} + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ + +## సంబంధిత అంశాలు {#related-topics} + +- [లావాదేవీలు](/developers/docs/transactions/) +- [గ్యాస్](/developers/docs/gas/) +- [ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos) diff --git a/public/content/translations/te/developers/docs/bridges/index.md b/public/content/translations/te/developers/docs/bridges/index.md new file mode 100644 index 00000000000..a87de15301d --- /dev/null +++ b/public/content/translations/te/developers/docs/bridges/index.md @@ -0,0 +1,138 @@ +--- +title: "వంతెనలు" +description: "డెవలపర్‌ల కోసం బ్రిడ్జింగ్ యొక్క అవలోకనం" +lang: te +--- + +L1 బ్లాక్‌చైన్‌లు మరియు L2 [స్కేలింగ్](/developers/docs/scaling/) పరిష్కారాల విస్తరణతో పాటు, వికేంద్రీకృత అప్లికేషన్‌లు క్రాస్-చైన్‌కు వెళ్లే సంఖ్య నిరంతరం పెరుగుతుండటంతో, చైన్‌ల మధ్య కమ్యూనికేషన్ మరియు ఆస్తుల బదిలీ అవసరం నెట్‌వర్క్ మౌలిక సదుపాయాలలో ఒక ముఖ్యమైన భాగంగా మారింది. దీనిని సాధ్యం చేయడానికి వివిధ రకాల బ్రిడ్జ్‌లు ఉన్నాయి. + +## బ్రిడ్జ్‌ల అవసరం {#need-for-bridges} + +బ్లాక్‌చైన్ నెట్‌వర్క్‌లను కనెక్ట్ చేయడానికి బ్రిడ్జ్‌లు ఉన్నాయి. అవి బ్లాక్‌చైన్‌ల మధ్య కనెక్టివిటీ మరియు ఇంటర్‌ఆపరేబిలిటీని ప్రారంభిస్తాయి. + +బ్లాక్‌చైన్‌లు వివిక్త వాతావరణాలలో ఉన్నాయి, అంటే ఇతర బ్లాక్‌చైన్‌లతో సహజంగా వ్యాపారం చేయడానికి మరియు కమ్యూనికేట్ చేయడానికి బ్లాక్‌చైన్‌లకు మార్గం లేదు. ఫలితంగా, ఒక పర్యావరణ వ్యవస్థలో గణనీయమైన కార్యాచరణ మరియు ఆవిష్కరణ ఉన్నప్పటికీ, ఇతర పర్యావరణ వ్యవస్థలతో కనెక్టివిటీ మరియు ఇంటర్‌ఆపరేబిలిటీ లేకపోవడం వల్ల ఇది పరిమితం చేయబడింది. + +వివిక్త బ్లాక్‌చైన్ వాతావరణాలు ఒకదానితో ఒకటి కనెక్ట్ అవ్వడానికి బ్రిడ్జ్‌లు ఒక మార్గాన్ని అందిస్తాయి. అవి బ్లాక్‌చైన్‌ల మధ్య రవాణా మార్గాన్ని ఏర్పాటు చేస్తాయి, ఇక్కడ టోకెన్‌లు, సందేశాలు, ఏకపక్ష డేటా, మరియు [స్మార్ట్ కాంట్రాక్ట్](/developers/docs/smart-contracts/) కాల్‌లు కూడా ఒక చైన్ నుండి మరొకదానికి బదిలీ చేయబడతాయి. + +## బ్రిడ్జ్‌ల ప్రయోజనాలు {#benefits-of-bridges} + +సరళంగా చెప్పాలంటే, బ్రిడ్జ్‌లు బ్లాక్‌చైన్ నెట్‌వర్క్‌లను డేటాను మార్పిడి చేసుకోవడానికి మరియు వాటి మధ్య ఆస్తులను తరలించడానికి అనుమతించడం ద్వారా అనేక వినియోగ సందర్భాలను అన్‌లాక్ చేస్తాయి. + +బ్లాక్‌చైన్‌లు అప్లికేషన్‌లను నిర్మించడానికి ప్రత్యేకమైన బలాలు, బలహీనతలు మరియు విధానాలను కలిగి ఉంటాయి (వేగం, త్రూపుట్, ఖర్చు మొదలైనవి). బ్లాక్‌చైన్‌లు ఒకదానికొకటి ఆవిష్కరణలను ఉపయోగించుకునేలా చేయడం ద్వారా బ్రిడ్జ్‌లు మొత్తం క్రిప్టో పర్యావరణ వ్యవస్థ అభివృద్ధికి సహాయపడతాయి. + +డెవలపర్‌ల కోసం, బ్రిడ్జ్‌లు ఈ క్రింది వాటిని ప్రారంభిస్తాయి: + +- చైన్‌ల అంతటా ఏదైనా డేటా, సమాచారం మరియు ఆస్తుల బదిలీ. +- బ్రిడ్జ్‌లు ప్రోటోకాల్‌లు అందించగల వాటి కోసం డిజైన్ స్థలాన్ని విస్తరించడం వలన ప్రోటోకాల్‌ల కోసం కొత్త ఫీచర్‌లు మరియు వినియోగ సందర్భాలను అన్‌లాక్ చేయడం. ఉదాహరణకు, Ethereum మెయిన్‌నెట్‌లో వాస్తవానికి అమలు చేయబడిన యీల్డ్ ఫార్మింగ్ కోసం ఒక ప్రోటోకాల్ అన్ని EVM-అనుకూల చైన్‌లలో లిక్విడిటీ పూల్స్‌ను అందించగలదు. +- వివిధ బ్లాక్‌చైన్‌ల బలాలను ఉపయోగించుకునే అవకాశం. ఉదాహరణకు, డెవలపర్‌లు వారి డాప్స్‌ను రోలప్‌లు మరియు సైడ్‌చైన్‌లలో అమలు చేయడం ద్వారా వివిధ L2 పరిష్కారాలు అందించే తక్కువ రుసుము నుండి ప్రయోజనం పొందవచ్చు మరియు వినియోగదారులు వాటి మధ్య బ్రిడ్జ్ చేయవచ్చు. +- కొత్త ఉత్పత్తులను నిర్మించడానికి వివిధ బ్లాక్‌చైన్ పర్యావరణ వ్యవస్థల నుండి డెవలపర్‌ల మధ్య సహకారం. +- వివిధ పర్యావరణ వ్యవస్థల నుండి వినియోగదారులను మరియు సంఘాలను వారి డాప్స్‌కు ఆకర్షించడం. + +## బ్రిడ్జ్‌లు ఎలా పని చేస్తాయి? {#how-do-bridges-work} + +అనేక [బ్రిడ్జ్ డిజైన్ల రకాలు](https://li.fi/knowledge-hub/blockchain-bridges-and-classification/) ఉన్నప్పటికీ, ఆస్తుల క్రాస్-చైన్ బదిలీని సులభతరం చేయడానికి మూడు మార్గాలు ప్రత్యేకంగా నిలుస్తాయి: + +- **లాక్ మరియు మింట్ –** సోర్స్ చైన్‌లో ఆస్తులను లాక్ చేసి, డెస్టినేషన్ చైన్‌లో ఆస్తులను మింట్ చేయండి. +- **బర్న్ మరియు మింట్ –** సోర్స్ చైన్‌లో ఆస్తులను బర్న్ చేసి, డెస్టినేషన్ చైన్‌లో ఆస్తులను మింట్ చేయండి. +- **అటామిక్ స్వాప్స్ –** మరొక పార్టీతో సోర్స్ చైన్‌లోని ఆస్తులను డెస్టినేషన్ చైన్‌లోని ఆస్తులతో స్వాప్ చేయడం. + +## బ్రిడ్జ్ రకాలు {#bridge-types} + +బ్రిడ్జ్‌లను సాధారణంగా ఈ క్రింది బకెట్‌లలో ఒకటిగా వర్గీకరించవచ్చు: + +- **స్థానిక బ్రిడ్జ్‌లు –** ఈ బ్రిడ్జ్‌లు సాధారణంగా ఒక నిర్దిష్ట బ్లాక్‌చైన్‌లో లిక్విడిటీని బూట్‌స్ట్రాప్ చేయడానికి నిర్మించబడతాయి, ఇది వినియోగదారులు పర్యావరణ వ్యవస్థకు నిధులను తరలించడాన్ని సులభతరం చేస్తుంది. ఉదాహరణకు, [ఆర్బిట్రమ్ బ్రిడ్జ్](https://bridge.arbitrum.io/) వినియోగదారులు Ethereum మెయిన్‌నెట్ నుండి ఆర్బిట్రమ్‌కు బ్రిడ్జ్ చేయడానికి సౌకర్యవంతంగా నిర్మించబడింది. ఇతర బ్రిడ్జ్‌లలో పాలీగాన్ PoS బ్రిడ్జ్, [ఆప్టిమిజం గేట్‌వే](https://app.optimism.io/bridge) మొదలైనవి ఉన్నాయి. +- **వాలిడేటర్ లేదా ఒరాకిల్ ఆధారిత బ్రిడ్జ్‌లు –** ఈ బ్రిడ్జ్‌లు క్రాస్-చైన్ బదిలీలను ధృవీకరించడానికి బాహ్య వాలిడేటర్ సెట్ లేదా ఒరాకిల్స్‌పై ఆధారపడతాయి. ఉదాహరణలు: మల్టీచైన్ మరియు అక్రాస్. +- **సాధారణ సందేశ ప్రసార బ్రిడ్జ్‌లు –** ఈ బ్రిడ్జ్‌లు ఆస్తులను, సందేశాలు మరియు ఏకపక్ష డేటాతో పాటుగా చైన్‌ల మధ్య బదిలీ చేయగలవు. ఉదాహరణలు: యాక్సెలార్, లేయర్‌జీరో మరియు నోమాడ్. +- **లిక్విడిటీ నెట్‌వర్క్‌లు –** ఈ బ్రిడ్జ్‌లు ప్రధానంగా అటామిక్ స్వాప్‌ల ద్వారా ఒక చైన్ నుండి మరొకదానికి ఆస్తులను బదిలీ చేయడంపై దృష్టి పెడతాయి. సాధారణంగా, అవి క్రాస్-చైన్ సందేశ ప్రసారానికి మద్దతు ఇవ్వవు. ఉదాహరణలు: కనెక్స్ట్ మరియు హాప్. + +## పరిగణించవలసిన లాభనష్టాలు {#trade-offs} + +బ్రిడ్జ్‌లతో, ఖచ్చితమైన పరిష్కారాలు లేవు. బదులుగా, ఒక ఉద్దేశ్యాన్ని నెరవేర్చడానికి చేసిన లాభనష్టాలు మాత్రమే ఉన్నాయి. డెవలపర్‌లు మరియు వినియోగదారులు కింది కారకాల ఆధారంగా బ్రిడ్జ్‌లను మూల్యాంకనం చేయవచ్చు: + +- **భద్రత –** సిస్టమ్‌ను ఎవరు ధృవీకరిస్తారు? బాహ్య వాలిడేటర్లచే భద్రపరచబడిన బ్రిడ్జ్‌లు సాధారణంగా బ్లాక్‌చైన్ వాలిడేటర్ల ద్వారా స్థానికంగా లేదా సహజంగా భద్రపరచబడిన బ్రిడ్జ్‌ల కంటే తక్కువ సురక్షితమైనవి. +- **సౌలభ్యం –** ఒక లావాదేవీని పూర్తి చేయడానికి ఎంత సమయం పడుతుంది మరియు ఒక వినియోగదారు ఎన్ని లావాదేవీలపై సంతకం చేయాలి? ఒక డెవలపర్‌కు, ఒక బ్రిడ్జ్‌ను ఇంటిగ్రేట్ చేయడానికి ఎంత సమయం పడుతుంది మరియు ఈ ప్రక్రియ ఎంత క్లిష్టంగా ఉంటుంది? +- **కనెక్టివిటీ –** ఒక బ్రిడ్జ్ కనెక్ట్ చేయగల వివిధ డెస్టినేషన్ చైన్‌లు ఏవి (అంటే, రోలప్‌లు, సైడ్‌చైన్‌లు, ఇతర లేయర్ 1 బ్లాక్‌చైన్‌లు, మొదలైనవి), మరియు కొత్త బ్లాక్‌చైన్‌ను ఇంటిగ్రేట్ చేయడం ఎంత కష్టం? +- **మరింత సంక్లిష్టమైన డేటాను పంపే సామర్థ్యం –** ఒక బ్రిడ్జ్ చైన్‌ల మధ్య సందేశాలు మరియు మరింత సంక్లిష్టమైన ఏకపక్ష డేటా బదిలీని ప్రారంభించగలదా, లేదా ఇది క్రాస్-చైన్ ఆస్తి బదిలీలకు మాత్రమే మద్దతు ఇస్తుందా? +- **ఖర్చు-సామర్థ్యం –** ఒక బ్రిడ్జ్ ద్వారా చైన్‌ల మధ్య ఆస్తులను బదిలీ చేయడానికి ఎంత ఖర్చవుతుంది? సాధారణంగా, బ్రిడ్జ్‌లు గ్యాస్ ఖర్చులు మరియు నిర్దిష్ట మార్గాల లిక్విడిటీని బట్టి స్థిర లేదా వేరియబుల్ రుసుమును వసూలు చేస్తాయి. దాని భద్రతను నిర్ధారించడానికి అవసరమైన మూలధనం ఆధారంగా ఒక బ్రిడ్జ్ యొక్క ఖర్చు-సామర్థ్యాన్ని మూల్యాంకనం చేయడం కూడా చాలా ముఖ్యం. + +ఉన్నత స్థాయిలో, బ్రిడ్జ్‌లను విశ్వసనీయ మరియు విశ్వాసరహితంగా వర్గీకరించవచ్చు. + +- **విశ్వసనీయ –** విశ్వసనీయ బ్రిడ్జ్‌లు బాహ్యంగా ధృవీకరించబడతాయి. అవి చైన్‌ల మధ్య డేటాను పంపడానికి బాహ్య ధృవీకరణల సమితిని (మల్టీ-సిగ్, మల్టీ-పార్టీ కంప్యూటేషన్ సిస్టమ్స్, ఒరాకిల్ నెట్‌వర్క్‌తో కూడిన ఫెడరేషన్‌లు) ఉపయోగిస్తాయి. ఫలితంగా, అవి గొప్ప కనెక్టివిటీని అందిస్తాయి మరియు చైన్‌ల అంతటా పూర్తిగా సాధారణీకరించిన సందేశ ప్రసారాన్ని ప్రారంభిస్తాయి. అవి వేగం మరియు ఖర్చు-సామర్థ్యంతో కూడా బాగా పని చేస్తాయి. ఇది భద్రతా వ్యయంతో వస్తుంది, ఎందుకంటే వినియోగదారులు బ్రిడ్జ్ యొక్క భద్రతపై ఆధారపడవలసి ఉంటుంది. +- **విశ్వాసరహిత –** ఈ బ్రిడ్జ్‌లు సందేశాలు మరియు టోకెన్‌లను బదిలీ చేయడానికి అవి కనెక్ట్ అవుతున్న బ్లాక్‌చైన్‌లు మరియు వాటి వాలిడేటర్‌లపై ఆధారపడతాయి. అవి 'విశ్వాసరహితమైనవి' ఎందుకంటే అవి (బ్లాక్‌చైన్‌లతో పాటు) కొత్త విశ్వాస అంచనాలను జోడించవు. ఫలితంగా, విశ్వాసరహిత బ్రిడ్జ్‌లు విశ్వసనీయ బ్రిడ్జ్‌ల కంటే ఎక్కువ సురక్షితమైనవిగా పరిగణించబడతాయి. + +ఇతర కారకాల ఆధారంగా విశ్వాసరహిత బ్రిడ్జ్‌లను మూల్యాంకనం చేయడానికి, మనం వాటిని సాధారణ సందేశ ప్రసార బ్రిడ్జ్‌లు మరియు లిక్విడిటీ నెట్‌వర్క్‌లుగా విభజించాలి. + +- **సాధారణ సందేశ ప్రసార బ్రిడ్జ్‌లు –** ఈ బ్రిడ్జ్‌లు భద్రతలో మరియు చైన్‌ల మధ్య మరింత సంక్లిష్టమైన డేటాను బదిలీ చేయగల సామర్థ్యంలో రాణిస్తాయి. సాధారణంగా, అవి ఖర్చు-సామర్థ్యంతో కూడా మంచివి. అయినప్పటికీ, ఈ బలాలు సాధారణంగా లైట్ క్లయింట్ బ్రిడ్జ్‌ల (ఉదా: IBC) కోసం కనెక్టివిటీ ఖర్చుతో మరియు ఫ్రాడ్ ప్రూఫ్‌లను ఉపయోగించే ఆశావాద బ్రిడ్జ్‌ల (ఉదా: Nomad) కోసం వేగ ప్రతికూలతలతో వస్తాయి. +- **లిక్విడిటీ నెట్‌వర్క్‌లు –** ఈ బ్రిడ్జ్‌లు ఆస్తులను బదిలీ చేయడానికి అటామిక్ స్వాప్‌లను ఉపయోగిస్తాయి మరియు స్థానికంగా ధృవీకరించబడిన వ్యవస్థలు (అంటే, లావాదేవీలను ధృవీకరించడానికి అవి అంతర్లీన బ్లాక్‌చైన్‌ల వాలిడేటర్‌లను ఉపయోగిస్తాయి). ఫలితంగా, అవి భద్రత మరియు వేగంతో రాణిస్తాయి. అంతేకాకుండా, అవి తులనాత్మకంగా ఖర్చు-సమర్థవంతమైనవిగా పరిగణించబడతాయి మరియు మంచి కనెక్టివిటీని అందిస్తాయి. అయినప్పటికీ, ప్రధాన లాభనష్టం ఏమిటంటే మరింత సంక్లిష్టమైన డేటాను పంపలేకపోవడం – ఎందుకంటే అవి క్రాస్-చైన్ సందేశ ప్రసారానికి మద్దతు ఇవ్వవు. + +## బ్రిడ్జ్‌లతో ప్రమాదం {#risk-with-bridges} + +DeFiలోని మొదటి మూడు [అతిపెద్ద హ్యాక్‌లకు](https://rekt.news/leaderboard/) బ్రిడ్జ్‌లే కారణం మరియు అవి ఇంకా అభివృద్ధి ప్రారంభ దశలోనే ఉన్నాయి. ఏదైనా బ్రిడ్జ్‌ని ఉపయోగించడం కింది నష్టాలను కలిగి ఉంటుంది: + +- **స్మార్ట్ కాంట్రాక్ట్ ప్రమాదం –** అనేక బ్రిడ్జ్‌లు ఆడిట్‌లను విజయవంతంగా ఆమోదించినప్పటికీ, హ్యాక్‌లకు ఆస్తులు బహిర్గతం కావడానికి స్మార్ట్ కాంట్రాక్ట్‌లో ఒక లోపం ఉంటే చాలు (ఉదా: [సోలానా వార్మ్‌హోల్ బ్రిడ్జ్](https://rekt.news/wormhole-rekt/)). +- **వ్యవస్థాగత ఆర్థిక నష్టాలు** – అనేక బ్రిడ్జ్‌లు కొత్త చైన్‌లో అసలు ఆస్తి యొక్క కానానికల్ వెర్షన్‌లను మింట్ చేయడానికి చుట్టబడిన ఆస్తులను ఉపయోగిస్తాయి. ఇది పర్యావరణ వ్యవస్థను వ్యవస్థాగత ప్రమాదానికి గురి చేస్తుంది, ఎందుకంటే మేము చుట్టబడిన టోకెన్‌ల వెర్షన్‌లు దోపిడీకి గురవ్వడాన్ని చూశాము. +- **ప్రతిపక్ష ప్రమాదం –** కొన్ని బ్రిడ్జ్‌లు విశ్వసనీయ డిజైన్‌ను ఉపయోగిస్తాయి, ఇది వాలిడేటర్‌లు వినియోగదారుల నిధులను దొంగిలించడానికి కుమ్మక్కు కారని వినియోగదారులు భావించవలసి ఉంటుంది. వినియోగదారులు ఈ మూడవ-పక్ష నటులను విశ్వసించాల్సిన అవసరం వారిని రగ్ పుల్స్, సెన్సార్‌షిప్ మరియు ఇతర హానికరమైన కార్యకలాపాలు వంటి ప్రమాదాలకు గురి చేస్తుంది. +- **తెరవబడిన సమస్యలు –** బ్రిడ్జ్‌లు అభివృద్ధి చెందుతున్న దశలో ఉన్నందున, నెట్‌వర్క్ రద్దీ సమయాలు మరియు నెట్‌వర్క్-స్థాయి దాడులు లేదా స్టేట్ రోల్‌బ్యాక్‌లు వంటి ఊహించని సంఘటనల సమయంలో వంటి వివిధ మార్కెట్ పరిస్థితులలో బ్రిడ్జ్‌లు ఎలా పని చేస్తాయనే దాని గురించి సమాధానం లేని అనేక ప్రశ్నలు ఉన్నాయి. ఈ అనిశ్చితి కొన్ని ప్రమాదాలను కలిగిస్తుంది, వాటి స్థాయి ఇంకా తెలియదు. + +## డాప్స్ బ్రిడ్జ్‌లను ఎలా ఉపయోగించగలవు? {#how-can-dapps-use-bridges} + +బ్రిడ్జ్‌ల గురించి మరియు వారి డాప్‌ను క్రాస్-చైన్‌గా తీసుకువెళ్లడం గురించి డెవలపర్‌లు పరిగణించగల కొన్ని ఆచరణాత్మక అప్లికేషన్‌లు ఇక్కడ ఉన్నాయి: + +### బ్రిడ్జ్‌లను ఏకీకృతం చేయడం {#integrating-bridges} + +డెవలపర్‌ల కోసం, బ్రిడ్జ్‌లకు మద్దతును జోడించడానికి అనేక మార్గాలు ఉన్నాయి: + +1. **మీ స్వంత బ్రిడ్జ్‌ను నిర్మించడం –** సురక్షితమైన మరియు నమ్మదగిన బ్రిడ్జ్‌ను నిర్మించడం అంత సులభం కాదు, ముఖ్యంగా మీరు మరింత విశ్వాసం-తగ్గించిన మార్గాన్ని తీసుకుంటే. అంతేకాకుండా, స్కేలబిలిటీ మరియు ఇంటర్‌ఆపరేబిలిటీ అధ్యయనాలకు సంబంధించి దీనికి సంవత్సరాల అనుభవం మరియు సాంకేతిక నైపుణ్యం అవసరం. అదనంగా, ఒక బ్రిడ్జ్‌ను నిర్వహించడానికి ఒక ప్రత్యక్ష బృందం అవసరం మరియు దానిని సాధ్యమయ్యేలా చేయడానికి తగినంత లిక్విడిటీని ఆకర్షించడం అవసరం. + +2. **వినియోగదారులకు బహుళ బ్రిడ్జ్ ఎంపికలను చూపడం –** అనేక [డాప్స్‌కు](/developers/docs/dapps/) వాటితో సంకర్షణ చెందడానికి వినియోగదారులు వారి స్థానిక టోకెన్‌ను కలిగి ఉండాలి. వినియోగదారులు వారి టోకెన్‌లను యాక్సెస్ చేయడానికి, వారు వారి వెబ్‌సైట్‌లో వివిధ బ్రిడ్జ్ ఎంపికలను అందిస్తారు. అయినప్పటికీ, ఈ పద్ధతి సమస్యకు త్వరిత పరిష్కారం, ఎందుకంటే ఇది వినియోగదారుని డాప్ ఇంటర్‌ఫేస్ నుండి దూరం చేస్తుంది మరియు ఇప్పటికీ వారు ఇతర డాప్స్ మరియు బ్రిడ్జ్‌లతో సంకర్షణ చెందాలని కోరుతుంది. ఇది తప్పులు చేసే అవకాశం పెరిగిన శ్రమతో కూడిన ఆన్‌బోర్డింగ్ అనుభవం. + +3. **ఒక బ్రిడ్జ్‌ను ఏకీకృతం చేయడం –** ఈ పరిష్కారం డాప్ వినియోగదారులను బాహ్య బ్రిడ్జ్ మరియు DEX ఇంటర్‌ఫేస్‌లకు పంపాల్సిన అవసరం లేదు. ఇది డాప్స్ వినియోగదారు ఆన్‌బోర్డింగ్ అనుభవాన్ని మెరుగుపరచడానికి అనుమతిస్తుంది. అయినప్పటికీ, ఈ విధానానికి దాని పరిమితులు ఉన్నాయి: + + - బ్రిడ్జ్‌ల మూల్యాంకనం మరియు నిర్వహణ కష్టమైనవి మరియు సమయం తీసుకుంటాయి. + - ఒక బ్రిడ్జ్‌ను ఎంచుకోవడం ఒకే వైఫల్యం మరియు ఆధారపడటాన్ని సృష్టిస్తుంది. + - డాప్ బ్రిడ్జ్ యొక్క సామర్థ్యాల ద్వారా పరిమితం చేయబడింది. + - బ్రిడ్జ్‌లు మాత్రమే సరిపోకపోవచ్చు. క్రాస్-చైన్ స్వాప్‌లు వంటి మరిన్ని కార్యాచరణలను అందించడానికి డాప్స్‌కు DEXలు అవసరం కావచ్చు. + +4. **బహుళ బ్రిడ్జ్‌లను ఏకీకృతం చేయడం –** ఈ పరిష్కారం ఒకే బ్రిడ్జ్‌ను ఏకీకృతం చేయడంతో సంబంధం ఉన్న అనేక సమస్యలను పరిష్కరిస్తుంది. అయినప్పటికీ, దీనికి కూడా పరిమితులు ఉన్నాయి, ఎందుకంటే బహుళ బ్రిడ్జ్‌లను ఏకీకృతం చేయడం వనరులను వినియోగించుకుంటుంది మరియు డెవలపర్‌ల కోసం సాంకేతిక మరియు కమ్యూనికేషన్ ఓవర్‌హెడ్‌లను సృష్టిస్తుంది—క్రిప్టోలో అత్యంత అరుదైన వనరు. + +5. **ఒక బ్రిడ్జ్ అగ్రిగేటర్‌ను ఏకీకృతం చేయడం –** డాప్స్ కోసం మరొక ఎంపిక బ్రిడ్జ్ అగ్రిగేషన్ పరిష్కారాన్ని ఏకీకృతం చేయడం, ఇది వారికి బహుళ బ్రిడ్జ్‌లకు యాక్సెస్ ఇస్తుంది. బ్రిడ్జ్ అగ్రిగేటర్‌లు అన్ని బ్రిడ్జ్‌ల బలాలను వారసత్వంగా పొందుతాయి మరియు అందువల్ల ఏ ఒక్క బ్రిడ్జ్ సామర్థ్యాల ద్వారా పరిమితం చేయబడవు. గమనించదగ్గ విషయం ఏమిటంటే, బ్రిడ్జ్ అగ్రిగేటర్‌లు సాధారణంగా బ్రిడ్జ్ ఇంటిగ్రేషన్‌లను నిర్వహిస్తాయి, ఇది డాప్‌ను బ్రిడ్జ్ ఇంటిగ్రేషన్ యొక్క సాంకేతిక మరియు కార్యాచరణ అంశాలపై నిఘా ఉంచే అవాంతరాల నుండి కాపాడుతుంది. + +అలా చెప్పినప్పటికీ, బ్రిడ్జ్ అగ్రిగేటర్‌లకు కూడా వాటి పరిమితులు ఉన్నాయి. ఉదాహరణకు, అవి మరిన్ని బ్రిడ్జ్ ఎంపికలను అందించగలవు, కానీ అగ్రిగేటర్ ప్లాట్‌ఫారమ్‌లో అందించిన వాటి కంటే మార్కెట్‌లో సాధారణంగా ఇంకా చాలా బ్రిడ్జ్‌లు అందుబాటులో ఉన్నాయి. అంతేకాకుండా, బ్రిడ్జ్‌ల మాదిరిగానే, బ్రిడ్జ్ అగ్రిగేటర్‌లు కూడా స్మార్ట్ కాంట్రాక్ట్ మరియు సాంకేతిక నష్టాలకు గురవుతాయి (ఎక్కువ స్మార్ట్ కాంట్రాక్ట్‌లు = ఎక్కువ నష్టాలు). + +ఒకవేళ ఒక డాప్ బ్రిడ్జ్ లేదా అగ్రిగేటర్‌ను ఏకీకృతం చేసే మార్గంలో వెళితే, ఇంటిగ్రేషన్ ఎంత లోతుగా ఉండాలనే దాని ఆధారంగా వివిధ ఎంపికలు ఉన్నాయి. ఉదాహరణకు, ఇది కేవలం వినియోగదారు ఆన్‌బోర్డింగ్ అనుభవాన్ని మెరుగుపరచడానికి ఒక ఫ్రంట్-ఎండ్ ఇంటిగ్రేషన్ అయితే, ఒక డాప్ విడ్జెట్‌ను ఏకీకృతం చేస్తుంది. అయినప్పటికీ, స్టేకింగ్, యీల్డ్ ఫార్మింగ్ మొదలైన లోతైన క్రాస్-చైన్ వ్యూహాలను అన్వేషించడానికి ఇంటిగ్రేషన్ ఉంటే, డాప్ SDK లేదా APIని ఏకీకృతం చేస్తుంది. + +### బహుళ చైన్‌లలో ఒక డాప్‌ను అమలు చేయడం {#deploying-a-dapp-on-multiple-chains} + +బహుళ చైన్‌లలో ఒక డాప్‌ను అమలు చేయడానికి, డెవలపర్‌లు [Alchemy](https://www.alchemy.com/), [Hardhat](https://hardhat.org/), [Moralis](https://moralis.io/) వంటి అభివృద్ధి ప్లాట్‌ఫారమ్‌లను ఉపయోగించవచ్చు. సాధారణంగా, ఈ ప్లాట్‌ఫారమ్‌లు డాప్స్‌ను క్రాస్-చైన్‌కు వెళ్లేలా చేసే కంపోజబుల్ ప్లగిన్‌లతో వస్తాయి. ఉదాహరణకు, డెవలపర్‌లు [హార్డ్‌హాట్-డిప్లాయ్ ప్లగిన్](https://github.com/wighawag/hardhat-deploy) అందించే ఒక నిర్ణయాత్మక డిప్లాయ్‌మెంట్ ప్రాక్సీని ఉపయోగించవచ్చు. + +#### ఉదాహరణలు: + +- [క్రాస్-చైన్ డాప్స్‌ను ఎలా నిర్మించాలి](https://moralis.io/how-to-build-cross-chain-dapps/) +- [ఒక క్రాస్-చైన్ NFT మార్కెట్‌ప్లేస్‌ను నిర్మించడం](https://youtu.be/WZWCzsB1xUE) +- [మోరాలిస్: క్రాస్-చైన్ NFT డాప్స్‌ను నిర్మించడం](https://www.youtube.com/watch?v=ehv70kE1QYo) + +### చైన్‌ల మధ్య కాంట్రాక్ట్ కార్యకలాపాలను పర్యవేక్షించడం {#monitoring-contract-activity-across-chains} + +చైన్‌ల మధ్య కాంట్రాక్ట్ కార్యకలాపాలను పర్యవేక్షించడానికి, డెవలపర్‌లు స్మార్ట్ కాంట్రాక్ట్‌లను నిజ-సమయంలో గమనించడానికి సబ్‌గ్రాఫ్‌లు మరియు టెండర్లీ వంటి డెవలపర్ ప్లాట్‌ఫారమ్‌లను ఉపయోగించవచ్చు. అటువంటి ప్లాట్‌ఫారమ్‌లలో క్రాస్-చైన్ కార్యకలాపాల కోసం గొప్ప డేటా పర్యవేక్షణ కార్యాచరణను అందించే ఉపకరణాలు కూడా ఉన్నాయి, ఉదాహరణకు [కాంట్రాక్ట్‌లచే విడుదల చేయబడిన ఈవెంట్‌లను](https://docs.soliditylang.org/en/v0.8.14/contracts.html?highlight=events#events) తనిఖీ చేయడం మొదలైనవి. + +#### ఉపకరణాలు + +- [ది గ్రాఫ్](https://thegraph.com/en/) +- [టెండర్లీ](https://tenderly.co/) + +## మరింత సమాచారం {#further-reading} + +- [బ్లాక్‌చైన్ బ్రిడ్జ్‌లు](/bridges/) – ethereum.org +- [L2బీట్ బ్రిడ్జ్ రిస్క్ ఫ్రేమ్‌వర్క్](https://l2beat.com/bridges/summary) +- [బ్లాక్‌చైన్ బ్రిడ్జ్‌లు: క్రిప్టోనెట్‌వర్క్‌ల నెట్‌వర్క్‌లను నిర్మించడం](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) - సెప్టెంబర్ 8, 2021 – డిమిట్రీ బెరెంజోన్ +- [ది ఇంటర్‌ఆపరేబిలిటీ ట్రైలెమ్మా](https://blog.connext.network/the-interoperability-trilemma-657c2cf69f17) - అక్టోబర్ 1, 2021 – అర్జున్ భూప్టాని +- [క్లస్టర్‌లు: విశ్వసనీయ & విశ్వాసం-తగ్గించబడిన బ్రిడ్జ్‌లు బహుళ-చైన్ ల్యాండ్‌స్కేప్‌ను ఎలా రూపొందిస్తాయి](https://blog.celestia.org/clusters/) - అక్టోబర్ 4, 2021 – ముస్తఫా అల్-బస్సామ్ +- [LI.FI: బ్రిడ్జ్‌లతో, విశ్వాసం ఒక స్పెక్ట్రమ్](https://blog.li.fi/li-fi-with-bridges-trust-is-a-spectrum-354cd5a1a6d8) - ఏప్రిల్ 28, 2022 – అర్జున్ చంద్ +- [రోల్అప్ ఇంటర్‌ఆపరేబిలిటీ సొల్యూషన్స్ స్థితి](https://web.archive.org/web/20250428015516/https://research.2077.xyz/the-state-of-rollup-interoperability) - జూన్ 20, 2024 – అలెక్స్ హుక్ +- [సురక్షితమైన క్రాస్-చైన్ ఇంటర్‌ఆపరేబిలిటీ కోసం షేర్డ్ సెక్యూరిటీని ఉపయోగించుకోవడం: లాగ్రాంజ్ స్టేట్ కమిటీలు మరియు అంతకు మించి](https://web.archive.org/web/20250125035123/https://research.2077.xyz/harnessing-shared-security-for-secure-blockchain-interoperability) - జూన్ 12, 2024 – ఇమ్మాన్యుయేల్ అవోసికా + +అదనంగా, [జేమ్స్ ప్రెస్ట్విచ్](https://twitter.com/_prestwich) ద్వారా కొన్ని లోతైన ప్రదర్శనలు ఇక్కడ ఉన్నాయి, ఇవి బ్రిడ్జ్‌ల గురించి లోతైన అవగాహనను పెంపొందించడంలో సహాయపడతాయి: + +- [బ్రిడ్జ్‌లను నిర్మించడం, గోడలతో కూడిన తోటలను కాదు](https://youtu.be/ZQJWMiX4hT0) +- [బ్రిడ్జ్‌లను విడదీయడం](https://youtu.be/b0mC-ZqN8Oo) +- [బ్రిడ్జ్‌లు ఎందుకు కాలిపోతున్నాయి](https://youtu.be/c7cm2kd20j8) diff --git a/public/content/translations/te/developers/docs/consensus-mechanisms/index.md b/public/content/translations/te/developers/docs/consensus-mechanisms/index.md new file mode 100644 index 00000000000..c52d97f09b8 --- /dev/null +++ b/public/content/translations/te/developers/docs/consensus-mechanisms/index.md @@ -0,0 +1,92 @@ +--- +title: "ఏకాభిప్రాయ యంత్రాంగాలు" +description: "వికేంద్రీకృత వ్యవస్థలలో ఏకాభిప్రాయ ప్రోటోకాల్స్ మరియు ఇతీరియములో అవి పోషించే పాత్ర గురించిన వివరణ." +lang: te +--- + +'ప్రూఫ్-ఆఫ్-స్టేక్', 'ప్రూఫ్-ఆఫ్-వర్క్' లేదా 'ప్రూఫ్-ఆఫ్-అథారిటీ' ప్రోటోకాల్‌లను సూచించడానికి 'ఏకాభిప్రాయ యంత్రాంగం' అనే పదం తరచుగా వాడుకభాషలో ఉపయోగించబడుతుంది. అయితే, ఇవి [సిబిల్ దాడుల నుండి](/glossary/#sybil-attack) రక్షించే ఏకాభిప్రాయ యంత్రాంగాలలోని భాగాలు మాత్రమే. ఏకాభిప్రాయ యంత్రాంగాలు అనేవి ఆలోచనలు, ప్రోటోకాల్‌లు మరియు ప్రోత్సాహకాల యొక్క పూర్తి స్టాక్, ఇవి వికేంద్రీకృత నోడ్స్ సమితికి ఒక బ్లాక్ చైను యొక్క స్థితిపై అంగీకరించడానికి వీలు కల్పిస్తాయి. + +## అవసరాలు {#prerequisites} + +ఈ పేజీని బాగా అర్థం చేసుకోవడానికి, మీరు ముందుగా మా [ఇతీరియమునకు పరిచయం](/developers/docs/intro-to-ethereum/) చదవాలని మేము సిఫార్సు చేస్తున్నాము. + +## ఏకాభిప్రాయం అంటే ఏమిటి? {#what-is-consensus} + +ఏకాభిప్రాయం ద్వారా, ఒక సాధారణ ఒప్పందం కుదిరిందని మేము అర్థం చేసుకున్నాము. సినిమాకు వెళ్తున్న కొంతమంది వ్యక్తుల సమూహాన్ని పరిగణించండి. ప్రతిపాదించిన సినిమా ఎంపికపై ఎటువంటి అసమ్మతి లేకపోతే, అప్పుడు ఏకాభిప్రాయం సాధించబడుతుంది. అభిప్రాయభేదం ఉంటే, ఏ సినిమా చూడాలనేది నిర్ణయించుకోవడానికి ఆ సమూహం వద్ద మార్గాలు ఉండాలి. అత్యంత తీవ్రమైన సందర్భాలలో, ఆ సమూహం చివరికి విడిపోతుంది. + +ఇతీరియము బ్లాక్ చైను విషయంలో, ప్రక్రియ అధికారికీకరించబడింది, మరియు ఏకాభిప్రాయం సాధించడం అంటే నెట్‌వర్క్‌లోని కనీసం 66% నోడ్స్ నెట్‌వర్క్ యొక్క గ్లోబల్ స్థితిపై అంగీకరించడం. + +## ఏకాభిప్రాయ యంత్రాంగం అంటే ఏమిటి? {#what-is-a-consensus-mechanism} + +ఏకాభిప్రాయ యంత్రాంగం అనే పదం ఒక బ్లాక్ చైను స్థితిపై అంగీకరించడానికి నోడ్స్ నెట్‌వర్క్‌ను అనుమతించే ప్రోటోకాల్‌లు, ప్రోత్సాహకాలు మరియు ఆలోచనల యొక్క మొత్తం స్టాక్‌ను సూచిస్తుంది. + +ఇతీరియము ఒక ప్రూఫ్-ఆఫ్-స్టేక్-ఆధారిత ఏకాభిప్రాయ యంత్రాంగాన్ని ఉపయోగిస్తుంది, ఇది స్టేకర్స్ ద్వారా లాక్ చేయబడిన మూలధనానికి వర్తించే బహుమతులు మరియు జరిమానాల సమితి నుండి దాని క్రిప్టో-ఆర్థిక భద్రతను పొందుతుంది. ఈ ప్రోత్సాహక నిర్మాణం వ్యక్తిగత స్టేకర్‌లను నిజాయితీగల వాలిడేటర్లను ఆపరేట్ చేయడానికి ప్రోత్సహిస్తుంది, అలా చేయని వారిని శిక్షిస్తుంది మరియు నెట్‌వర్క్‌పై దాడి చేయడానికి అత్యంత అధిక వ్యయాన్ని సృష్టిస్తుంది. + +అప్పుడు, నిజాయితీగల వాలిడేటర్లను బ్లాక్‌లను ప్రతిపాదించడానికి లేదా ధృవీకరించడానికి, లావాదేవీలను ప్రాసెస్ చేయడానికి మరియు చైన్ హెడ్ పై వారి అభిప్రాయానికి ఓటు వేయడానికి ఎలా ఎంచుకోవాలో నియంత్రించే ఒక ప్రోటోకాల్ ఉంది. చైన్ హెడ్ దగ్గర ఒకే స్థానంలో బహుళ బ్లాక్‌లు ఉండే అరుదైన పరిస్థితులలో, ఒక ఫోర్క్-ఛాయిస్ యంత్రాంగం ఉంది, ఇది 'అత్యంత బరువైన' చైన్‌ను తయారు చేసే బ్లాక్‌లను ఎంచుకుంటుంది, ఇది బ్లాక్‌లకు ఓటు వేసిన వాలిడేటర్ల సంఖ్యతో వారి స్టేక్ చేసిన ఈథర్ బ్యాలెన్స్ ద్వారా వెయిట్ చేసి కొలవబడుతుంది. + +ఏకాభిప్రాయానికి కొన్ని భావనలు ముఖ్యమైనవి, అవి కోడ్‌లో స్పష్టంగా నిర్వచించబడలేదు, ఉదాహరణకు నెట్‌వర్క్‌పై దాడులకు వ్యతిరేకంగా చివరి రక్షణ రేఖగా సంభావ్య అవుట్-ఆఫ్-బ్యాండ్ సామాజిక సమన్వయం అందించే అదనపు భద్రత. + +ఈ భాగాలు కలిసి ఏకాభిప్రాయ యంత్రాంగాన్ని ఏర్పరుస్తాయి. + +## ఏకాభిప్రాయ యంత్రాంగాల రకాలు {#types-of-consensus-mechanisms} + +### ప్రూఫ్-ఆఫ్-వర్క్ ఆధారిత {#proof-of-work} + +బిట్‌కాయిన్ లాగా, ఇతీరియము ఒకప్పుడు **ప్రూఫ్-ఆఫ్-వర్క్ (PoW)** ఆధారిత ఏకాభిప్రాయ ప్రోటోకాల్‌ను ఉపయోగించింది. + +#### బ్లాక్ సృష్టి {#pow-block-creation} + +మైనర్లు ప్రాసెస్ చేయబడిన లావాదేవీలతో నిండిన కొత్త బ్లాక్‌లను సృష్టించడానికి పోటీపడతారు. విజేత కొత్త బ్లాక్‌ను మిగిలిన నెట్‌వర్క్‌తో పంచుకుంటాడు మరియు కొత్తగా ముద్రించిన కొంత ETHని సంపాదిస్తాడు. గణిత పజిల్‌ను అత్యంత వేగంగా పరిష్కరించగల కంప్యూటర్ ఈ రేసును గెలుస్తుంది. ఇది ప్రస్తుత బ్లాక్ మరియు దాని ముందు ఉన్న బ్లాక్ మధ్య క్రిప్టోగ్రాఫిక్ లింక్‌ను ఉత్పత్తి చేస్తుంది. ఈ పజిల్‌ను పరిష్కరించడమే "ప్రూఫ్-ఆఫ్-వర్క్" లోని పని. అప్పుడు కానానికల్ చైన్ ఒక ఫోర్క్-ఛాయిస్ నియమం ద్వారా నిర్ణయించబడుతుంది, ఇది మైనింగ్ చేయడానికి అత్యధిక పని జరిగిన బ్లాక్‌ల సమితిని ఎంచుకుంటుంది. + +#### భద్రత {#pow-security} + +చైన్‌ను మోసం చేయడానికి నెట్‌వర్క్ కంప్యూటింగ్ పవర్‌లో మీకు 51% అవసరం అనే వాస్తవం ద్వారా నెట్‌వర్క్ సురక్షితంగా ఉంచబడుతుంది. దీనికి పరికరాలు మరియు శక్తిలో భారీ పెట్టుబడులు అవసరం; మీరు పొందే దానికంటే ఎక్కువగా ఖర్చు చేసే అవకాశం ఉంది. + +[ప్రూఫ్-ఆఫ్-వర్క్](/developers/docs/consensus-mechanisms/pow/) గురించి మరింత + +### ప్రూఫ్-ఆఫ్-స్టేక్ ఆధారిత {#proof-of-stake} + +ఇతీరియము ఇప్పుడు **ప్రూఫ్-ఆఫ్-స్టేక్ (PoS)** ఆధారిత ఏకాభిప్రాయ ప్రోటోకాల్‌ను ఉపయోగిస్తుంది. + +#### బ్లాక్ సృష్టి {#pos-block-creation} + +వాలిడేటర్లు బ్లాక్‌లను సృష్టిస్తారు. ప్రతి స్లాట్‌లో ఒక వాలిడేటర్‌ను యాదృచ్ఛికంగా బ్లాక్ ప్రతిపాదకుడిగా ఎంపిక చేస్తారు. వారి ఏకాభిప్రాయం క్లయింట్ వారి జత చేసిన ఎగ్జిక్యూషన్ క్లయింట్ నుండి 'ఎగ్జిక్యూషన్ పేలోడ్'గా లావాదేవీల కట్టను అభ్యర్థిస్తుంది. వారు దీనిని ఏకాభిప్రాయ డేటాలో చుట్టి ఒక బ్లాక్‌ను ఏర్పరుస్తారు, దానిని వారు ఇతీరియము నెట్‌వర్క్‌లోని ఇతర నోడ్స్‌కు పంపుతారు. ఈ బ్లాక్ ఉత్పత్తికి ETHలో బహుమతి ఇవ్వబడుతుంది. ఒకే స్లాట్‌కు బహుళ సాధ్యమయ్యే బ్లాక్‌లు ఉన్నప్పుడు, లేదా నోడ్స్ వేర్వేరు సమయాల్లో బ్లాక్‌ల గురించి విన్న అరుదైన సందర్భాల్లో, ఫోర్క్ ఛాయిస్ అల్గోరిథం ధృవీకరణల యొక్క అత్యధిక బరువుతో చైన్‌ను ఏర్పరచే బ్లాక్‌ను ఎంచుకుంటుంది (ఇక్కడ బరువు అనేది వారి ETH బ్యాలెన్స్ ద్వారా స్కేల్ చేయబడిన ధృవీకరించే వాలిడేటర్ల సంఖ్య). + +#### భద్రత {#pos-security} + +ఒక ప్రూఫ్-ఆఫ్-స్టేక్ వ్యవస్థ క్రిప్టో-ఆర్థికంగా సురక్షితమైనది, ఎందుకంటే చైన్‌ను నియంత్రించడానికి ప్రయత్నిస్తున్న దాడి చేసేవాడు భారీ మొత్తంలో ETHని నాశనం చేయాలి. బహుమతుల వ్యవస్థ వ్యక్తిగత స్టేకర్‌లను నిజాయితీగా ప్రవర్తించడానికి ప్రోత్సహిస్తుంది, మరియు జరిమానాలు స్టేకర్‌లను దురుద్దేశంతో వ్యవహరించకుండా నిరుత్సాహపరుస్తాయి. + +[ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos/) గురించి మరింత + +### ఒక దృశ్య మార్గదర్శి {#types-of-consensus-video} + +ఇతీరియములో ఉపయోగించే వివిధ రకాల ఏకాభిప్రాయ యంత్రాంగాల గురించి మరింత చూడండి: + + + +### సిబిల్ నిరోధకత & చైన్ ఎంపిక {#sybil-chain} + +ప్రూఫ్-ఆఫ్-వర్క్ మరియు ప్రూఫ్-ఆఫ్-స్టేక్ మాత్రమే ఏకాభిప్రాయ ప్రోటోకాల్స్ కావు, కానీ సరళత కోసం వాటిని తరచుగా అలా సూచిస్తారు. అవి వాస్తవానికి సిబిల్ నిరోధక యంత్రాంగాలు మరియు బ్లాక్ రచయిత సెలెక్టర్లు; తాజా బ్లాక్ రచయిత ఎవరో నిర్ణయించడానికి అవి ఒక మార్గం. మరొక ముఖ్యమైన భాగం చైన్ ఎంపిక (అకా ఫోర్క్ ఛాయిస్) అల్గోరిథం, ఇది ఒకే స్థానంలో బహుళ బ్లాక్‌లు ఉన్న సందర్భాలలో చైన్ హెడ్ వద్ద ఒకే ఒక్క సరైన బ్లాక్‌ను ఎంచుకోవడానికి నోడ్స్‌కు వీలు కల్పిస్తుంది. + +**సిబిల్ నిరోధకత** ఒక ప్రోటోకాల్ సిబిల్ దాడికి వ్యతిరేకంగా ఎలా పనిచేస్తుందో కొలుస్తుంది. ఈ రకమైన దాడికి నిరోధకత వికేంద్రీకృత బ్లాక్ చైనుకు అవసరం మరియు పెట్టిన వనరుల ఆధారంగా మైనర్లు మరియు వాలిడేటర్లు సమానంగా బహుమతి పొందటానికి వీలు కల్పిస్తుంది. ప్రూఫ్-ఆఫ్-వర్క్ మరియు ప్రూఫ్-ఆఫ్-స్టేక్ వినియోగదారులను చాలా శక్తిని ఖర్చు చేసేలా లేదా చాలా కొలేటరల్ పెట్టేలా చేయడం ద్వారా దీని నుండి రక్షిస్తాయి. ఈ రక్షణలు సిబిల్ దాడులకు ఆర్థిక నిరోధకాలు. + +ఏ చైన్ "సరైన" చైన్ అని నిర్ణయించడానికి ఒక **చైన్ ఎంపిక నియమం** ఉపయోగించబడుతుంది. బిట్‌కాయిన్ "పొడవైన చైన్" నియమాన్ని ఉపయోగిస్తుంది, అంటే ఏ బ్లాక్ చైను పొడవైనదిగా ఉంటుందో, దానినే మిగిలిన నోడ్స్ చెల్లుబాటు అయ్యేదిగా అంగీకరించి దానితో పనిచేస్తాయి. ప్రూఫ్-ఆఫ్-వర్క్ చైన్‌ల కోసం, పొడవైన చైన్ చైన్ యొక్క మొత్తం సంచిత ప్రూఫ్-ఆఫ్-వర్క్ క్లిష్టత ద్వారా నిర్ణయించబడుతుంది. ఇతీరియము కూడా పొడవైన చైన్ నియమాన్ని ఉపయోగించేది; అయితే, ఇప్పుడు ఇతీరియము ప్రూఫ్-ఆఫ్-స్టేక్‌పై నడుస్తున్నందున, అది చైన్ యొక్క 'బరువు'ను కొలిచే నవీకరించబడిన ఫోర్క్-ఛాయిస్ అల్గోరిథంను స్వీకరించింది. ఈ బరువు వాలిడేటర్ ఓట్ల సంచిత మొత్తం, ఇది వాలిడేటర్ స్టేక్ చేసిన-ఈథర్ బ్యాలెన్స్‌ల ద్వారా వెయిట్ చేయబడుతుంది. + +ఇతీరియము [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/) అని పిలువబడే ఏకాభిప్రాయ యంత్రాంగాన్ని ఉపయోగిస్తుంది, ఇది [కాస్పర్ FFG ప్రూఫ్-ఆఫ్-స్టేక్](https://arxiv.org/abs/1710.09437)ను [GHOST ఫోర్క్-ఛాయిస్ రూల్](https://arxiv.org/abs/2003.03052)తో మిళితం చేస్తుంది. + +## మరింత సమాచారం {#further-reading} + +- [బ్లాక్ చైన్ ఏకాభిప్రాయ అల్గోరిథం అంటే ఏమిటి?](https://academy.binance.com/en/articles/what-is-a-blockchain-consensus-algorithm) +- [నకమోటో ఏకాభిప్రాయం అంటే ఏమిటి? పూర్తి బిగినర్స్ గైడ్](https://blockonomi.com/nakamoto-consensus/) +- [కాస్పర్ ఎలా పనిచేస్తుంది?](https://medium.com/unitychain/intro-to-casper-ffg-9ed944d98b2d) +- [ప్రూఫ్ ఆఫ్ వర్క్ బ్లాక్ చైన్‌ల భద్రత మరియు పనితీరుపై](https://eprint.iacr.org/2016/555.pdf) +- [బైజాంటైన్ ఫాల్ట్](https://en.wikipedia.org/wiki/Byzantine_fault) + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ + +## సంబంధిత అంశాలు {#related-topics} + +- [ప్రూఫ్-ఆఫ్-వర్క్](/developers/docs/consensus-mechanisms/pow/) +- [మైనింగ్](/developers/docs/consensus-mechanisms/pow/mining/) +- [ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos/) +- [ప్రూఫ్-ఆఫ్-అథారిటీ](/developers/docs/consensus-mechanisms/poa/) diff --git a/public/content/translations/te/developers/docs/consensus-mechanisms/poa/index.md b/public/content/translations/te/developers/docs/consensus-mechanisms/poa/index.md new file mode 100644 index 00000000000..02a73090398 --- /dev/null +++ b/public/content/translations/te/developers/docs/consensus-mechanisms/poa/index.md @@ -0,0 +1,80 @@ +--- +title: "అధికారం యొక్క రుజువు (PoA)" +description: "అధికారం యొక్క రుజువు ఏకాభిప్రాయం ప్రోటోకాల్ మరియు బ్లాక్ చైను పర్యావరణ వ్యవస్థలో దాని పాత్ర యొక్క వివరణ." +lang: te +--- + +**అధికారం యొక్క రుజువు (PoA)** అనేది కీర్తి-ఆధారిత ఏకాభిప్రాయం అల్గారిథం, ఇది [వాటా రుజువు](/developers/docs/consensus-mechanisms/pos/) యొక్క సవరించిన వెర్షన్. ఇది ఎక్కువగా ప్రైవేట్ చెయిన్లు, టెస్టునెట్లు, మరియు స్థానిక అభివృద్ధి నెట్వర్క్లచే ఉపయోగించబడుతుంది. PoA అనేది కీర్తి-ఆధారిత ఏకాభిప్రాయం అల్గారిథం, ఇది PoSలో వాటా-ఆధారిత యంత్రాంగం బదులుగా, బ్లాక్లను ఉత్పత్తి చేయడానికి అధీకృత సంతకం చేసేవారి సమితిని విశ్వసించడాన్ని కోరుతుంది. + +## అవసరాలు {#prerequisites} + +ఈ పేజీని బాగా అర్థం చేసుకోవడానికి, మీరు మొదట [లావాదేవీలు](/developers/docs/transactions/), [బ్లాక్స్](/developers/docs/blocks/), మరియు [ఏకాభిప్రాయం యంత్రాంగాలు](/developers/docs/consensus-mechanisms/) గురించి చదవాలని మేము సిఫార్సు చేస్తున్నాము. + +## అధికారం యొక్క రుజువు (PoA) అంటే ఏమిటి? {#what-is-poa} + +అధికారం యొక్క రుజువు అనేది **[వాటా రుజువు](/developers/docs/consensus-mechanisms/pos/) (PoS)** యొక్క సవరించిన వెర్షన్, ఇది PoSలో వాటా-ఆధారిత యంత్రాంగం బదులుగా కీర్తి-ఆధారిత ఏకాభిప్రాయం అల్గారిథం. ఈ పదాన్ని 2017లో గావిన్ వుడ్ మొదటిసారిగా పరిచయం చేశారు, మరియు ఈ ఏకాభిప్రాయం అల్గారిథం ఎక్కువగా ప్రైవేట్ చెయిన్లు, టెస్టునెట్లు మరియు స్థానిక అభివృద్ధి నెట్వర్క్లచే ఉపయోగించబడింది, ఎందుకంటే ఇది PoW లాగా అధిక నాణ్యత గల వనరుల అవసరాన్ని అధిగమిస్తుంది, మరియు బ్లాక్ చైనును నిల్వ చేసే మరియు బ్లాక్లను ఉత్పత్తి చేసే నోడ్ల యొక్క చిన్న ఉపసమితిని కలిగి ఉండటం ద్వారా PoSతో స్కేలబిలిటీ సమస్యలను అధిగమిస్తుంది. + +అధికారం యొక్క రుజువు [జెనిసిస్ బ్లాక్](/glossary/#genesis-block)లో సెట్ చేయబడిన అధీకృత సంతకం చేసేవారి సమితిని విశ్వసించడాన్ని కోరుతుంది. చాలా ప్రస్తుత అమలులలో, చెయిన్ యొక్క ఏకాభిప్రాయాన్ని నిర్ణయించేటప్పుడు అధీకృత సంతకం చేసే వారందరూ సమాన అధికారం మరియు అధికారాలను కలిగి ఉంటారు. కీర్తిని వాటాగా పెట్టడం వెనుక ఉన్న ఆలోచన ఏమిటంటే, ప్రతి అధీకృత వాలిడేటర్ 'మీ కస్టమర్‌ను తెలుసుకోండి' (KYC) వంటి వాటి ద్వారా అందరికీ బాగా తెలుసు, లేదా ఒక ప్రసిద్ధ సంస్థ ఏకైక వాలిడేటర్‌గా ఉండటం—ఈ విధంగా ఒక వాలిడేటర్ ఏదైనా తప్పు చేస్తే, వారి గుర్తింపు తెలుస్తుంది. + +PoA యొక్క బహుళ అమలులు ఉన్నాయి, కానీ ప్రామాణిక Ethereum అమలు **clique**, ఇది [EIP-225](https://eips.ethereum.org/EIPS/eip-225)ని అమలు చేస్తుంది. Clique డెవలపర్-స్నేహపూర్వకమైనది మరియు అమలు చేయడానికి సులభమైన ప్రామాణికం, ఇది అన్ని క్లయింట్ సింకింగ్ రకాలకు మద్దతు ఇస్తుంది. ఇతర అమలులలో [IBFT 2.0](https://besu.hyperledger.org/private-networks/concepts/poa) మరియు [Aura](https://openethereum.github.io/Chain-specification) ఉన్నాయి. + +## ఇది ఎలా పనిచేస్తుంది {#how-it-works} + +PoAలో, కొత్త బ్లాక్‌లను సృష్టించడానికి అధీకృత సంతకం చేసేవారి సమితిని ఎంపిక చేస్తారు. సంతకం చేసేవారిని వారి కీర్తి ఆధారంగా ఎంపిక చేస్తారు, మరియు కొత్త బ్లాక్‌లను సృష్టించడానికి వారొక్కరికే అనుమతి ఉంటుంది. సంతకం చేసేవారిని రౌండ్-రాబిన్ పద్ధతిలో ఎంపిక చేస్తారు, మరియు ప్రతి సంతకం చేసేవారు ఒక నిర్దిష్ట సమయ ఫ్రేమ్‌లో ఒక బ్లాక్‌ను సృష్టించడానికి అనుమతించబడతారు. బ్లాక్ సృష్టించే సమయం స్థిరంగా ఉంటుంది, మరియు సంతకం చేసేవారు ఆ సమయ ఫ్రేమ్‌లో ఒక బ్లాక్‌ను సృష్టించాల్సి ఉంటుంది. + +ఈ సందర్భంలో కీర్తి అనేది పరిమాణాత్మకమైన విషయం కాదు, బదులుగా ఇది మైక్రోసాఫ్ట్ మరియు గూగుల్ వంటి ప్రసిద్ధ కార్పొరేషన్ల కీర్తి. అందువల్ల విశ్వసనీయ సంతకం చేసేవారిని ఎన్నుకునే విధానం అల్గారిథమిక్ కాదు, బదులుగా ఇది _నమ్మకం_ అనే సాధారణ మానవ చర్య. ఇక్కడ ఒక సంస్థ, ఉదాహరణకు మైక్రోసాఫ్ట్, వందలాది లేదా వేలాది స్టార్టప్‌ల మధ్య ఒక PoA ప్రైవేట్ నెట్వర్క్‌ను సృష్టిస్తుంది మరియు భవిష్యత్తులో గూగుల్ వంటి ఇతర ప్రసిద్ధ సంతకం చేసేవారిని జోడించే అవకాశంతో ఏకైక విశ్వసనీయ సంతకం చేసే పాత్రను పోషిస్తుంది. స్టార్టప్‌లు, ఎటువంటి సందేహం లేకుండా, మైక్రోసాఫ్ట్ అన్ని సమయాలలో నిజాయితీగా వ్యవహరిస్తుందని మరియు నెట్వర్క్‌ను ఉపయోగిస్తుందని విశ్వసిస్తాయి. ఇది వివిధ ప్రయోజనాల కోసం నిర్మించబడిన వివిధ చిన్న/ప్రైవేట్ నెట్వర్క్‌లను వికేంద్రీకృతంగా మరియు పనిచేసే విధంగా ఉంచడానికి వాటిలో వాటా వేయవలసిన అవసరాన్ని, అలాగే చాలా శక్తిని మరియు వనరులను వినియోగించే మైనింగ్‌ చేసేవారి అవసరాన్ని పరిష్కరిస్తుంది. VeChain వంటి కొన్ని ప్రైవేట్ నెట్వర్క్‌లు PoA ప్రమాణాన్ని ఉపయోగిస్తాయి, మరియు Binance వంటి కొన్ని దానిని సవరిస్తాయి. ఇది [PoSA](https://academy.binance.com/en/glossary/proof-of-staked-authority-posa)ను ఉపయోగిస్తుంది, ఇది PoA మరియు PoS యొక్క అనుకూల సవరించిన వెర్షన్. + +ఓటింగ్ ప్రక్రియ సంతకం చేసేవారి చేతనే చేయబడుతుంది. ప్రతి సంతకం చేసేవారు కొత్త బ్లాక్‌ను సృష్టించినప్పుడు, వారి బ్లాక్‌లో ఒక సంతకం చేసేవారిని జోడించడం లేదా తొలగించడం కోసం ఓటు వేస్తారు. ఓట్లను నోడ్‌లు లెక్కిస్తాయి, మరియు ఓట్లు `SIGNER_LIMIT` అనే నిర్దిష్ట థ్రెషోల్డ్‌కు చేరుకున్న ఆధారంగా సంతకం చేసేవారు జోడించబడతారు లేదా తొలగించబడతారు. + +చిన్న ఫోర్కులు సంభవించే పరిస్థితి ఉండవచ్చు, ఒక బ్లాక్ యొక్క కష్టతరం ఆ బ్లాక్ వరుసగా సంతకం చేయబడిందా లేదా వరుసలో కాకుండా సంతకం చేయబడిందా అనే దానిపై ఆధారపడి ఉంటుంది. “వరుసగా” సంతకం చేసిన బ్లాక్‌లు కష్టతరం 2 ను, మరియు “వరుసలో కాకుండా” సంతకం చేసిన బ్లాక్‌లు కష్టతరం 1 ను కలిగి ఉంటాయి. చిన్న ఫోర్కుల విషయంలో, “వరుసగా” బ్లాక్‌లను సీల్ చేసే ఎక్కువ మంది సంతకం చేసేవారు ఉన్న చెయిన్ అత్యధిక కష్టతరాన్ని పోగుచేసుకుని గెలుస్తుంది. + +## దాడి వెక్టర్లు {#attack-vectors} + +### హానికరమైన సంతకం చేసేవారు {#malicious-signers} + +హానికరమైన వినియోగదారుడిని సంతకం చేసేవారి జాబితాకు జోడించవచ్చు, లేదా ఒక సంతకం కీ/యంత్రం రాజీపడవచ్చు. అటువంటి సందర్భంలో ప్రోటోకాల్ పునర్వ్యవస్థీకరణలు మరియు స్పామింగ్‌కు వ్యతిరేకంగా తనను తాను రక్షించుకోగలగాలి. ప్రతిపాదిత పరిష్కారం ఏమిటంటే, N అధీకృత సంతకం చేసేవారి జాబితా ఇవ్వబడినప్పుడు, ఏ సంతకం చేసేవారైనా ప్రతి K బ్లాక్‌లకు 1 బ్లాక్‌ను మాత్రమే మింట్ చేయగలరు. ఇది నష్టం పరిమితంగా ఉందని నిర్ధారిస్తుంది, మరియు మిగిలిన వాలిడేటర్లు హానికరమైన వినియోగదారుడిని ఓటు వేసి తొలగించగలరు. + +### సెన్సార్‌షిప్ {#censorship-attack} + +మరో ఆసక్తికరమైన దాడి వెక్టర్ ఏమిటంటే, ఒక సంతకం చేసేవారు (లేదా సంతకం చేసేవారి సమూహం) వారిని అధికార జాబితా నుండి తొలగించడంపై ఓటు వేసే బ్లాక్‌లను సెన్సార్ చేయడానికి ప్రయత్నించడం. దీనిని అధిగమించడానికి, సంతకం చేసేవారి అనుమతించబడిన మింటింగ్ ఫ్రీక్వెన్సీ N/2లో 1కి పరిమితం చేయబడింది. ఇది హానికరమైన సంతకం చేసేవారు కనీసం 51% సంతకం ఖాతాలను నియంత్రించాల్సిన అవసరం ఉందని నిర్ధారిస్తుంది, ఆ సమయంలో వారు సమర్థవంతంగా చెయిన్‌కు కొత్త సత్య-మూలంగా మారతారు. + +### స్పామ్ {#spam-attack} + +మరో చిన్న దాడి వెక్టర్ ఏమిటంటే, హానికరమైన సంతకం చేసేవారు తాము మింట్ చేసే ప్రతి బ్లాక్‌లో కొత్త ఓటు ప్రతిపాదనలను చొప్పించడం. నోడ్‌లు అధీకృత సంతకం చేసేవారి వాస్తవ జాబితాను సృష్టించడానికి అన్ని ఓట్లను లెక్కించాల్సిన అవసరం ఉన్నందున, వారు కాలక్రమేణా అన్ని ఓట్లను రికార్డ్ చేయాలి. ఓటు విండోపై పరిమితి విధించకుండా, ఇది నెమ్మదిగా, ఇంకా అనంతంగా పెరగవచ్చు. పరిష్కారం ఏమిటంటే, W బ్లాక్‌ల యొక్క _కదిలే_ విండోను ఉంచడం, దాని తర్వాత ఓట్లు పాతవిగా పరిగణించబడతాయి. _ఒక సహేతుకమైన విండో 1-2 ఎపోక్‌లు కావచ్చు._ + +### ఏకకాల బ్లాక్‌లు {#concurrent-blocks} + +ఒక PoA నెట్వర్క్‌లో, N అధీకృత సంతకం చేసేవారు ఉన్నప్పుడు, ప్రతి సంతకం చేసేవారు K బ్లాక్‌లకు 1 బ్లాక్‌ను మింట్ చేయడానికి అనుమతించబడతారు, అంటే ఏ సమయంలోనైనా N-K+1 వాలిడేటర్లు మింట్ చేయడానికి అనుమతించబడతారు. ఈ వాలిడేటర్లు బ్లాక్‌ల కోసం పోటీ పడకుండా నిరోధించడానికి, ప్రతి సంతకం చేసేవారు కొత్త బ్లాక్‌ను విడుదల చేసే సమయానికి ఒక చిన్న యాదృచ్ఛిక "ఆఫ్‌సెట్"ను జోడించాలి. ఈ ప్రక్రియ చిన్న ఫోర్కులు అరుదుగా ఉండేలా చూసినప్పటికీ, మెయిన్‌నెట్ లాగానే అప్పుడప్పుడు ఫోర్కులు సంభవించవచ్చు. ఒక సంతకం చేసేవారు తమ అధికారాన్ని దుర్వినియోగం చేస్తున్నట్లు మరియు గందరగోళానికి కారణమవుతున్నట్లు కనుగొనబడితే, ఇతర సంతకం చేసేవారు వారిని ఓటు వేసి తొలగించగలరు. + +ఉదాహరణకు 10 అధీకృత సంతకం చేసేవారు ఉండి, ప్రతి సంతకం చేసేవారు 20 లో 1 బ్లాక్‌ను సృష్టించడానికి అనుమతించబడితే, అప్పుడు ఏ సమయంలోనైనా, 11 వాలిడేటర్లు బ్లాక్‌లను సృష్టించగలరు. వారు బ్లాక్‌లను సృష్టించడానికి పోటీ పడకుండా నిరోధించడానికి, ప్రతి సంతకం చేసేవారు కొత్త బ్లాక్‌ను విడుదల చేసే సమయానికి ఒక చిన్న యాదృచ్ఛిక "ఆఫ్‌సెట్"ను జోడిస్తారు. ఇది చిన్న ఫోర్కుల సంభవాన్ని తగ్గిస్తుంది కానీ ఇప్పటికీ Ethereum మెయిన్‌నెట్‌లో కనిపించే విధంగా అప్పుడప్పుడు ఫోర్కులను అనుమతిస్తుంది. ఒక సంతకం చేసేవారు తమ అధికారాన్ని దుర్వినియోగం చేసి అంతరాయాలు కలిగిస్తే, వారిని నెట్వర్క్ నుండి ఓటు వేసి తొలగించవచ్చు. + +## ప్రయోజనాలు మరియు అప్రయోజనాలు {#pros-and-cons} + +| ప్రయోజనాలు | అప్రయోజనాలు | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| PoS మరియు PoW వంటి ఇతర ప్రజాదరణ పొందిన యంత్రాంగాల కంటే ఎక్కువ స్కేలబుల్, ఎందుకంటే ఇది పరిమిత సంఖ్యలో బ్లాక్ సంతకం చేసేవారిపై ఆధారపడి ఉంటుంది. | PoA నెట్వర్క్‌లు సాధారణంగా తులనాత్మకంగా తక్కువ సంఖ్యలో వాలిడేటింగ్ నోడ్‌లను కలిగి ఉంటాయి. ఇది ఒక PoA నెట్వర్క్‌ను మరింత కేంద్రీకృతం చేస్తుంది. | +| PoA బ్లాక్ చైనులు నడపడానికి మరియు నిర్వహించడానికి చాలా చౌకైనవి. | అధీకృత సంతకం చేసేవారిగా మారడం సాధారణంగా ఒక సాధారణ వ్యక్తికి అందుబాటులో ఉండదు, ఎందుకంటే బ్లాక్ చైనుకు స్థిరపడిన కీర్తి ఉన్న సంస్థలు అవసరం. | +| కొత్త బ్లాక్‌లను ధృవీకరించడానికి పరిమిత సంఖ్యలో సంతకం చేసేవారు మాత్రమే అవసరం కాబట్టి లావాదేవీలు చాలా త్వరగా నిర్ధారించబడతాయి, ఇది 1 సెకను కన్నా తక్కువ సమయం పట్టవచ్చు. | హానికరమైన సంతకం చేసేవారు నెట్వర్క్‌లో లావాదేవీలను పునర్వ్యవస్థీకరించవచ్చు, రెట్టింపు ఖర్చు చేయవచ్చు, సెన్సార్ చేయవచ్చు. ఈ దాడులు తగ్గించబడినప్పటికీ ఇప్పటికీ సాధ్యమే. | + +## మరింత సమాచారం {#further-reading} + +- [EIP-225](https://eips.ethereum.org/EIPS/eip-225) _Clique ప్రమాణం_ +- [అధికారం యొక్క రుజువు అధ్యయనం](https://github.com/cryptoeconomics-study/website/blob/master/docs/sync/2.4-lecture.md) _క్రిప్టోఎకనామిక్స్_ +- [అధికారం యొక్క రుజువు అంటే ఏమిటి](https://forum.openzeppelin.com/t/proof-of-authority/3577) _OpenZeppelin_ +- [అధికారం యొక్క రుజువు వివరించబడింది](https://academy.binance.com/en/articles/proof-of-authority-explained) _binance_ +- [బ్లాక్ చైనులో PoA](https://medium.com/techskill-brew/proof-of-authority-or-poa-in-blockchain-part-11-blockchain-series-be15b3321cba) +- [Clique వివరించబడింది](https://medium.com/@Destiner/clique-cross-client-proof-of-authority-algorithm-for-ethereum-8b2a135201d) +- [వాడుకలో లేని PoA, Aura స్పెసిఫికేషన్](https://openethereum.github.io/Chain-specification) +- [IBFT 2.0, మరొక PoA అమలు](https://besu.hyperledger.org/private-networks/concepts/poa) + +### దృశ్య అభ్యాసకులా? {#visual-learner} + +అధికారం యొక్క రుజువు యొక్క దృశ్య వివరణను చూడండి: + + + +## సంబంధిత అంశాలు {#related-topics} + +- [ప్రూఫ్-ఆఫ్-వర్క్](/developers/docs/consensus-mechanisms/pow/) +- [ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos/) + diff --git a/public/content/translations/te/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md new file mode 100644 index 00000000000..b3466ad9fdc --- /dev/null +++ b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md @@ -0,0 +1,166 @@ +--- +title: "ఇతీరియము ప్రూఫ్-ఆఫ్-స్టేక్ దాడి మరియు రక్షణ" +description: "ప్రూఫ్-ఆఫ్-స్టేక్ ఇతీరియముపై తెలిసిన దాడి వెక్టర్ల గురించి మరియు వాటిని ఎలా రక్షిస్తారో తెలుసుకోండి." +lang: te +--- + +దొంగలు మరియు విధ్వంసకులు ఇతీరియము యొక్క ఖాతాదారుల సాఫ్ట్‌వేర్‌పై దాడి చేయడానికి నిరంతరం అవకాశాల కోసం వెతుకుతున్నారు. ఈ పేజీ ఇతీరియము యొక్క ఏకాభిప్రాయం లేయర్‌పై తెలిసిన దాడి వెక్టర్లను మరియు ఆ దాడులను ఎలా రక్షించుకోవచ్చో వివరిస్తుంది. ఈ పేజీలోని సమాచారం [ఒక దీర్ఘ రూప వెర్షన్](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs) నుండి స్వీకరించబడింది. + +## అవసరాలు {#prerequisites} + +[ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos/) గురించి కొంత ప్రాథమిక జ్ఞానం అవసరం. అలాగే, ఇతీరియము యొక్క [ప్రోత్సాహక లేయర్](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties) మరియు ఫోర్క్-ఎంపిక అల్గారిథమ్, [LMD-GHOST](/developers/docs/consensus-mechanisms/pos/gasper) గురించి ప్రాథమిక అవగాహన కలిగి ఉండటం సహాయపడుతుంది. + +## దాడి చేసేవారికి ఏమి కావాలి? {#what-do-attackers-want} + +విజయవంతమైన దాడి చేసిన వ్యక్తి కొత్త ఈథర్‌ను సృష్టించగలడని లేదా యాదృచ్ఛిక ఖాతాల నుండి ఈథర్‌ను తీసివేయగలడని ఒక సాధారణ అపోహ ఉంది. ఇవి రెండూ సాధ్యం కావు ఎందుకంటే నెట్‌వర్క్‌లోని అన్ని ఎగ్జిక్యూషన్ ఖాతాదారుల ద్వారా అన్ని లావాదేవీలు అమలు చేయబడతాయి. అవి చెల్లుబాటు యొక్క ప్రాథమిక షరతులను సంతృప్తి పరచాలి (ఉదాహరణకు, లావాదేవీలపై పంపినవారి ప్రైవేట్ కీతో సంతకం చేయబడింది, పంపినవారికి తగినంత బ్యాలెన్స్ ఉంది, మొదలైనవి) లేకపోతే అవి కేవలం రివర్ట్ అవుతాయి. దాడి చేసే వ్యక్తి వాస్తవికంగా లక్ష్యంగా చేసుకోగల మూడు రకాల ఫలితాలు ఉన్నాయి: రీఆర్గ్స్, డబుల్ ఫైనాలిటీ లేదా ఫైనాలిటీ ఆలస్యం. + +**“రీఆర్గ్”** అనేది బ్లాక్‌లను కొత్త క్రమంలో పునర్వ్యవస్థీకరించడం, బహుశా కానానికల్ చైన్‌లో కొన్ని బ్లాక్‌లను జోడించడం లేదా తీసివేయడంతో. ఒక దురుద్దేశపూర్వక రీఆర్గ్ నిర్దిష్ట బ్లాక్‌లను చేర్చడం లేదా మినహాయించడం ద్వారా డబుల్-స్పెండింగ్‌ను లేదా ఫ్రంట్-రన్నింగ్ మరియు బ్యాక్-రన్నింగ్ లావాదేవీల (MEV) ద్వారా విలువను సంగ్రహించడానికి అనుమతించవచ్చు. కానానికల్ చైన్‌లో నిర్దిష్ట లావాదేవీలు చేర్చబడకుండా నిరోధించడానికి కూడా రీ-ఆర్గ్స్ ఉపయోగించబడతాయి - ఇది ఒక రకమైన సెన్సార్‌షిప్. రీఆర్గ్ యొక్క అత్యంత తీవ్రమైన రూపం “ఫైనాలిటీ రివర్షన్”, ఇది ఇంతకు ముందు ఫైనలైజ్ చేయబడిన బ్లాక్‌లను తొలగిస్తుంది లేదా భర్తీ చేస్తుంది. మొత్తం స్టేక్ చేయబడిన ఈథర్‌లో ⅓ కంటే ఎక్కువ దాడి చేసే వ్యక్తి ద్వారా నాశనం చేయబడితేనే ఇది సాధ్యమవుతుంది - ఈ హామీని “ఆర్థిక ఫైనాలిటీ” అని పిలుస్తారు - దీని గురించి తరువాత మరింతగా తెలుసుకుందాం. + +**డబుల్ ఫైనాలిటీ** అనేది అసంభవమైన కానీ తీవ్రమైన పరిస్థితి, ఇక్కడ రెండు ఫోర్కులు ఏకకాలంలో ఫైనలైజ్ చేయగలవు, ఇది చైన్‌లో శాశ్వత విభజనను సృష్టిస్తుంది. మొత్తం స్టేక్ చేయబడిన ఈథర్‌లో 34% రిస్క్ చేయడానికి సిద్ధంగా ఉన్న దాడి చేసే వ్యక్తికి ఇది సిద్ధాంతపరంగా సాధ్యమవుతుంది. సంఘం ఆఫ్‌చైన్‌లో సమన్వయం చేసుకోవలసి వస్తుంది మరియు ఏ చైన్‌ను అనుసరించాలనే దానిపై ఒక ఒప్పందానికి రావాలి, దీనికి సామాజిక లేయర్‌లో బలం అవసరం. + +**ఫైనాలిటీ ఆలస్యం** దాడి నెట్‌వర్క్‌ను చైన్ యొక్క విభాగాలను ఫైనలైజ్ చేయడానికి అవసరమైన పరిస్థితులను చేరుకోకుండా నిరోధిస్తుంది. ఫైనాలిటీ లేకుండా, ఇతీరియము పైన నిర్మించిన ఆర్థిక అప్లికేషన్‌లను విశ్వసించడం కష్టం. దాడి చేసే వ్యక్తికి కొన్ని వ్యూహాత్మక షార్ట్ పొజిషన్(లు) ఉంటే తప్ప, ఫైనాలిటీ ఆలస్యం దాడి యొక్క లక్ష్యం నేరుగా లాభపడటం కంటే, కేవలం ఇతీరియమును అడ్డుకోవడమే అయి ఉండవచ్చు. + +సామాజిక లేయర్‌పై దాడి ఇతీరియముపై ప్రజల నమ్మకాన్ని దెబ్బతీయడం, ఈథర్ విలువను తగ్గించడం, స్వీకరణను తగ్గించడం లేదా అవుట్-ఆఫ్-బ్యాండ్ సమన్వయాన్ని మరింత కష్టతరం చేయడానికి ఇతీరియము సంఘాన్ని బలహీనపరచడం లక్ష్యంగా చేసుకోవచ్చు. + +ఒక ప్రత్యర్థి ఇతీరియముపై ఎందుకు దాడి చేయవచ్చో స్థాపించిన తరువాత, కింది విభాగాలు వారు దానిని _ఎలా_ చేయవచ్చో పరిశీలిస్తాయి. + +## దాడి పద్ధతులు {#methods-of-attack} + +### లేయర్ 0 దాడులు {#layer-0} + +అన్నింటిలో మొదటిది, ఇతీరియములో చురుకుగా పాల్గొనని వ్యక్తులు (క్లయింట్ సాఫ్ట్‌వేర్‌ను అమలు చేయడం ద్వారా) సామాజిక లేయర్ (లేయర్ 0) ను లక్ష్యంగా చేసుకుని దాడి చేయవచ్చు. లేయర్ 0 అనేది ఇతీరియము నిర్మించబడిన పునాది, మరియు అందువల్ల ఇది స్టాక్ యొక్క మిగిలిన భాగం గుండా అలలుగా వ్యాపించే పరిణామాలతో దాడులకు సంభావ్య ఉపరితలాన్ని సూచిస్తుంది. కొన్ని ఉదాహరణలు ఇలా ఉండవచ్చు: + +- తప్పుడు సమాచార ప్రచారం ఇతీరియము యొక్క రోడ్‌మ్యాప్, అభివృద్ధి చేసేవారి బృందాలు, యాప్‌లు మొదలైన వాటిపై సంఘానికి ఉన్న నమ్మకాన్ని దెబ్బతీయగలదు. ఇది నెట్‌వర్క్‌ను సురక్షితం చేయడంలో పాల్గొనడానికి ఇష్టపడే వ్యక్తుల సంఖ్యను తగ్గించగలదు, వికేంద్రీకరణ మరియు క్రిప్టో-ఆర్థిక భద్రత రెండింటినీ దిగజార్చగలదు. + +- అభివృద్ధి చేసేవారి సంఘంపై లక్షిత దాడులు మరియు/లేదా బెదిరింపులు. ఇది అభివృద్ధి చేసేవారి స్వచ్ఛంద నిష్క్రమణకు దారితీయగలదు మరియు ఇతీరియము పురోగతిని మందగించగలదు. + +- అతి-ఉత్సాహపూరిత నియంత్రణను కూడా లేయర్ 0పై దాడిగా పరిగణించవచ్చు, ఎందుకంటే ఇది భాగస్వామ్యం మరియు స్వీకరణను వేగంగా నిరుత్సాహపరచగలదు. + +- బైక్-షెడ్డింగ్ చర్చల ద్వారా పురోగతిని మందగించడం, కీలక నిర్ణయాలను ఆలస్యం చేయడం, స్పామ్ సృష్టించడం మొదలైనవి లక్ష్యంగా ఉన్న зна knowledgeable కానీ దురుద్దేశపూర్వక నటుల చొరబాటు. + +- నిర్ణయాలను ప్రభావితం చేయడానికి ఇతీరియము పర్యావరణ వ్యవస్థలోని కీలక ఆటగాళ్లకు లంచాలు ఇవ్వడం. + +ఈ దాడులను ప్రత్యేకంగా ప్రమాదకరంగా మార్చేది ఏమిటంటే, చాలా సందర్భాలలో చాలా తక్కువ మూలధనం లేదా సాంకేతిక పరిజ్ఞానం అవసరం. లేయర్ 0 దాడి క్రిప్టో-ఆర్థిక దాడిపై గుణకం కావచ్చు. ఉదాహరణకు, ఒక దురుద్దేశపూర్వక మెజారిటీ వాటాదారుచే సెన్సార్‌షిప్ లేదా ఫైనాలిటీ పునరుద్ధరణ సాధించబడితే, సామాజిక లేయర్‌ను బలహీనపరచడం అనేది అవుట్-ఆఫ్-బ్యాండ్ కమ్యూనిటీ ప్రతిస్పందనను సమన్వయం చేయడం మరింత కష్టతరం చేయవచ్చు. + +లేయర్ 0 దాడుల నుండి రక్షించడం బహుశా సూటిగా ఉండదు, కానీ కొన్ని ప్రాథమిక సూత్రాలను స్థాపించవచ్చు. ఒకటి, బ్లాగ్‌లు, డిస్కార్డ్ సర్వర్‌లు, ఉల్లేఖనలతో కూడిన స్పెక్స్, పుస్తకాలు, పోడ్‌కాస్ట్‌లు మరియు యూట్యూబ్ ద్వారా సంఘంలోని నిజాయితీపరులైన సభ్యులు సృష్టించి, ప్రచారం చేసిన ఇతీరియము గురించి బహిరంగ సమాచారం కోసం మొత్తం అధిక సిగ్నల్-టు-నాయిస్ నిష్పత్తిని నిర్వహించడం. ఇక్కడ ethereum.orgలో మేము కచ్చితమైన సమాచారాన్ని నిర్వహించడానికి మరియు దానిని వీలైనన్ని ఎక్కువ భాషలలోకి అనువదించడానికి చాలా కష్టపడతాము. ఒక స్థలాన్ని అధిక నాణ్యత గల సమాచారం మరియు మీమ్‌లతో నింపడం అనేది తప్పుడు సమాచారానికి వ్యతిరేకంగా సమర్థవంతమైన రక్షణ. + +సామాజిక లేయర్ దాడులకు వ్యతిరేకంగా మరో ముఖ్యమైన కోట ఒక స్పష్టమైన మిషన్ స్టేట్‌మెంట్ మరియు గవర్నెన్స్ ప్రోటోకాల్. ఇతీరియము స్మార్ట్-కాంట్రాక్ట్ లేయర్ 1లలో వికేంద్రీకరణ మరియు భద్రత ఛాంపియన్‌గా తనను తాను నిలబెట్టుకుంది, అదే సమయంలో స్కేలబిలిటీ మరియు స్థిరత్వానికి కూడా అత్యంత విలువ ఇస్తుంది. ఇతీరియము సంఘంలో ఏవైనా భేదాభిప్రాయాలు తలెత్తినా, ఈ ప్రధాన సూత్రాలు కనీసంగా రాజీపడవు. ఈ ప్రధాన సూత్రాలకు వ్యతిరేకంగా ఒక కథనాన్ని అంచనా వేయడం, మరియు వాటిని EIP (ఇతీరియము మెరుగుదల ప్రతిపాదన) ప్రక్రియలో వరుస సమీక్షల ద్వారా పరిశీలించడం, మంచి మరియు చెడు నటులను వేరుచేయడానికి సంఘానికి సహాయపడవచ్చు మరియు ఇతీరియము యొక్క భవిష్యత్ దిశను ప్రభావితం చేయడానికి దురుద్దేశపూర్వక నటుల పరిధిని పరిమితం చేయవచ్చు. + +చివరగా, ఇతీరియము సంఘం అన్ని పాల్గొనేవారికి బహిరంగంగా మరియు స్వాగతపూర్వకంగా ఉండటం చాలా కీలకం. గేట్‌కీపర్లు మరియు ప్రత్యేకత ఉన్న సంఘం సామాజిక దాడికి ప్రత్యేకంగా గురయ్యే అవకాశం ఉంది, ఎందుకంటే “మేము మరియు వారు” కథనాలను నిర్మించడం సులభం. గిరిజనతత్వం మరియు విషపూరిత మాగ్జిమలిజం సంఘాన్ని దెబ్బతీస్తాయి మరియు లేయర్ 0 భద్రతను క్షీణింపజేస్తాయి. నెట్‌వర్క్ భద్రతలో నిహిత ఆసక్తి ఉన్న ఇతీరియన్‌లు ఆన్‌లైన్ మరియు మీట్‌స్పేస్‌లో వారి ప్రవర్తనను ఇతీరియము యొక్క లేయర్ 0 భద్రతకు ప్రత్యక్ష సహకారిగా చూడాలి. + +### ప్రోటోకాల్‌పై దాడి చేయడం {#attacking-the-protocol} + +ఎవరైనా ఇతీరియము యొక్క క్లయింట్ సాఫ్ట్‌వేర్‌ను రన్ చేయవచ్చు. ఒక క్లయింట్‌కు వ్యాలిడేటర్‌ను జోడించడానికి, ఒక వినియోగదారుడు డిపాజిట్ కాంట్రాక్ట్‌లో 32 ఈథర్‌ను స్టేక్ చేయాల్సి ఉంటుంది. ఒక వ్యాలిడేటర్ కొత్త బ్లాక్‌లను ప్రతిపాదించడం మరియు ధృవీకరించడం ద్వారా ఇతీరియము యొక్క నెట్‌వర్క్ భద్రతలో చురుకుగా పాల్గొనడానికి ఒక వినియోగదారుని అనుమతిస్తుంది. వ్యాలిడేటర్‌కు ఇప్పుడు బ్లాక్‌చైను యొక్క భవిష్యత్ విషయాలను ప్రభావితం చేయడానికి ఉపయోగించగల ఒక వాయిస్ ఉంది - వారు నిజాయితీగా అలా చేసి రివార్డుల ద్వారా వారి ఈథర్ నిల్వను పెంచుకోవచ్చు లేదా వారు తమ సొంత ప్రయోజనం కోసం ప్రక్రియను మార్చడానికి ప్రయత్నించవచ్చు, వారి స్టేక్‌ను పణంగా పెట్టవచ్చు. దాడి చేయడానికి ఒక మార్గం మొత్తం స్టేక్‌లో ఎక్కువ నిష్పత్తిని కూడబెట్టుకుని, ఆపై నిజాయితీపరులైన వ్యాలిడేటర్లను అవుట్‌వోట్ చేయడానికి దానిని ఉపయోగించడం. దాడి చేసే వ్యక్తి నియంత్రించే స్టేక్ నిష్పత్తి ఎంత ఎక్కువగా ఉంటే, వారి ఓటింగ్ శక్తి అంత ఎక్కువగా ఉంటుంది, ప్రత్యేకించి కొన్ని ఆర్థిక మైలురాళ్ల వద్ద మనం తరువాత అన్వేషిస్తాము. అయితే, చాలా మంది దాడి చేసేవారు ఈ విధంగా దాడి చేయడానికి తగినంత ఈథర్‌ను కూడబెట్టుకోలేరు, కాబట్టి వారు నిజాయితీపరులైన మెజారిటీని ఒక నిర్దిష్ట మార్గంలో ప్రవర్తించేలా చేయడానికి సూక్ష్మమైన పద్ధతులను ఉపయోగించవలసి ఉంటుంది. + +ప్రాథమికంగా, అన్ని చిన్న-స్టేక్ దాడులు రెండు రకాల వ్యాలిడేటర్ దుష్ప్రవర్తనకు సూక్ష్మ వైవిధ్యాలు: తక్కువ-క్రియాశీలత (ధృవీకరించడంలో/ప్రతిపాదించడంలో విఫలమవడం లేదా ఆలస్యంగా చేయడం) లేదా అతి-క్రియాశీలత (ఒక స్లాట్‌లో చాలాసార్లు ప్రతిపాదించడం/ధృవీకరించడం). వాటి అత్యంత సాధారణ రూపాలలో ఈ చర్యలు ఫోర్క్-ఎంపిక అల్గారిథమ్ మరియు ప్రోత్సాహక లేయర్ ద్వారా సులభంగా నిర్వహించబడతాయి, కానీ దాడి చేసే వ్యక్తికి ప్రయోజనం చేకూర్చే విధంగా వ్యవస్థను గేమింగ్ చేయడానికి తెలివైన మార్గాలు ఉన్నాయి. + +### తక్కువ మొత్తంలో ETH ఉపయోగించి దాడులు {#attacks-by-small-stakeholders} + +#### రీఆర్గ్స్ {#reorgs} + +అనేక పత్రాలు ఇతీరియముపై దాడులను వివరించాయి, ఇవి మొత్తం స్టేక్ చేయబడిన ఈథర్‌లో కేవలం ఒక చిన్న నిష్పత్తితో రీఆర్గ్స్ లేదా ఫైనాలిటీ ఆలస్యాన్ని సాధిస్తాయి. ఈ దాడులు సాధారణంగా దాడి చేసే వ్యక్తి ఇతర వ్యాలిడేటర్ల నుండి కొంత సమాచారాన్ని నిలిపివేయడంపై ఆధారపడి ఉంటాయి మరియు ఆపై దానిని కొన్ని సూక్ష్మమైన మార్గంలో మరియు/లేదా కొన్ని అనుకూలమైన సమయంలో విడుదల చేస్తాయి. వారు సాధారణంగా కానానికల్ చైన్ నుండి కొన్ని నిజాయితీపరులైన బ్లాక్(లను) స్థానభ్రంశం చేయడం లక్ష్యంగా పెట్టుకుంటారు. [Neuder et al 2020](https://arxiv.org/pdf/2102.02247.pdf) దాడి చేసే వ్యాలిడేటర్ ఒక నిర్దిష్ట స్లాట్ `n+1` కోసం ఒక బ్లాక్ (`B`) ను సృష్టించి, ధృవీకరించగలదని చూపించారు, కానీ దానిని నెట్‌వర్క్‌లోని ఇతర నోడ్స్‌కు ప్రచారం చేయకుండా దూరంగా ఉంటారు. బదులుగా, వారు తదుపరి స్లాట్ `n+2` వరకు ఆ ధృవీకరించబడిన బ్లాక్‌ను పట్టుకుని ఉంటారు. ఒక నిజాయితీపరులైన వ్యాలిడేటర్ స్లాట్ `n+2` కోసం ఒక బ్లాక్ (`C`) ను ప్రతిపాదిస్తుంది. దాదాపు ఏకకాలంలో, దాడి చేసే వ్యక్తి తన నిలిపివేసిన బ్లాక్ (`B`) మరియు దాని కోసం నిలిపివేసిన ధృవీకరణలను విడుదల చేయగలడు, మరియు స్లాట్ `n+2` కోసం తన ఓట్లతో చైన్ యొక్క హెడ్‌గా `B` అని కూడా ధృవీకరించగలడు, నిజాయితీపరులైన బ్లాక్ `C` యొక్క ఉనికిని సమర్థవంతంగా తిరస్కరించగలడు. నిజాయితీపరులైన బ్లాక్ `D` విడుదల చేయబడినప్పుడు, ఫోర్క్ ఎంపిక అల్గారిథమ్ `D` ను `C` పైన నిర్మించడం కంటే `B` పైన నిర్మించడం బరువుగా ఉందని చూస్తుంది. అందువల్ల దాడి చేసే వ్యక్తి 1-బ్లాక్ ఎక్స్ యాంటీ రీఆర్గ్ ఉపయోగించి స్లాట్ `n+2` లోని నిజాయితీపరులైన బ్లాక్ `C` ను కానానికల్ చైన్ నుండి తొలగించగలిగాడు. స్టేక్‌లో [34% ఉన్న దాడి చేసే వ్యక్తి](https://www.youtube.com/watch?v=6vzXwwk12ZE) ఈ దాడిలో విజయం సాధించడానికి చాలా మంచి అవకాశం ఉంది, [ఈ నోట్‌లో](https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair) వివరించినట్లుగా. సిద్ధాంతపరంగా, అయితే, ఈ దాడిని చిన్న స్టేక్‌లతో కూడా ప్రయత్నించవచ్చు. [Neuder et al 2020](https://arxiv.org/pdf/2102.02247.pdf) ఈ దాడిని 30% స్టేక్‌తో పనిచేస్తుందని వివరించారు, కానీ తరువాత అది [మొత్తం స్టేక్‌లో 2%](https://arxiv.org/pdf/2009.04987.pdf) తో మరియు ఆ తరువాత బ్యాలెన్సింగ్ టెక్నిక్‌లను ఉపయోగించి [ఒకే వ్యాలిడేటర్‌కు](https://arxiv.org/abs/2110.10086#) సాధ్యమని చూపబడింది, మనం తదుపరి విభాగంలో పరిశీలిస్తాము. + +![ఎక్స్-యాంటీ రీ-ఆర్గ్](reorg-schematic.png) + +పైన వివరించిన ఒక-బ్లాక్ రీఆర్గ్ దాడి యొక్క సంభావిత రేఖాచిత్రం (https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair నుండి స్వీకరించబడింది) + +మరింత అధునాతన దాడి నిజాయితీపరులైన వ్యాలిడేటర్ సమూహాన్ని చైన్ యొక్క తల గురించి విభిన్న అభిప్రాయాలు ఉన్న వేర్వేరు సమూహాలుగా విభజించగలదు. దీనిని **బ్యాలెన్సింగ్ దాడి** అని అంటారు. దాడి చేసే వ్యక్తి ఒక బ్లాక్‌ను ప్రతిపాదించే అవకాశం కోసం వేచి ఉంటాడు, మరియు అది వచ్చినప్పుడు వారు సమానంగా విభజించి రెండు ప్రతిపాదిస్తారు. వారు ఒక బ్లాక్‌ను నిజాయితీపరులైన వ్యాలిడేటర్ సమూహంలో సగానికి మరియు మరొక బ్లాక్‌ను మరొక సగానికి పంపుతారు. సమాన విభజనను ఫోర్క్-ఎంపిక అల్గారిథమ్ ద్వారా గుర్తించబడుతుంది మరియు బ్లాక్ ప్రపోజర్‌ను స్లాష్ చేసి నెట్‌వర్క్ నుండి బహిష్కరించబడుతుంది, కానీ రెండు బ్లాక్‌లు ఇప్పటికీ ఉంటాయి మరియు ప్రతి ఫోర్క్‌కు సగం వ్యాలిడేటర్ సమూహం ధృవీకరిస్తుంది. ఇంతలో, మిగిలిన దురుద్దేశపూర్వక వ్యాలిడేటర్లు తమ ధృవీకరణలను నిలిపివేస్తారు. అప్పుడు, ఒకటి లేదా మరొక ఫోర్క్‌కు అనుకూలమైన ధృవీకరణలను కేవలం తగినంత వ్యాలిడేటర్లకు ఫోర్క్-ఎంపిక అల్గారిథమ్ అమలు చేస్తున్నప్పుడు ఎంపిక చేసి విడుదల చేయడం ద్వారా, వారు ఒకటి లేదా మరొక ఫోర్క్‌కు అనుకూలంగా ధృవీకరణల సంచిత బరువును టిప్ చేస్తారు. ఇది నిరవధికంగా కొనసాగవచ్చు, దాడి చేసే వ్యాలిడేటర్లు రెండు ఫోర్క్‌లలో వ్యాలిడేటర్ల సమాన విభజనను నిర్వహిస్తారు. ఏ ఫోర్క్ కూడా 2/3 సూపర్ మెజారిటీని ఆకర్షించలేనందున, నెట్‌వర్క్ ఫైనలైజ్ కాదు. + +**బౌన్సింగ్ దాడులు** కూడా ఒకే రకమైనవి. దాడి చేసే వ్యాలిడేటర్లచే ఓట్లు మళ్లీ నిలిపివేయబడతాయి. రెండు ఫోర్క్‌ల మధ్య సమాన విభజనను ఉంచడానికి ఓట్లను విడుదల చేయడానికి బదులుగా, వారు ఫోర్క్ A మరియు ఫోర్క్ B మధ్య ప్రత్యామ్నాయంగా ఉండే చెక్‌పాయింట్‌లను సమర్థించడానికి అనుకూలమైన సమయాల్లో తమ ఓట్లను ఉపయోగిస్తారు. రెండు ఫోర్క్‌ల మధ్య ఈ ఫ్లిప్-ఫ్లాపింగ్ జస్టిఫికేషన్ ఏ చైన్‌లోనైనా ఫైనలైజ్ చేయగల జస్టిఫైడ్ సోర్స్ మరియు టార్గెట్ చెక్‌పాయింట్‌ల జతలు ఉండకుండా నిరోధిస్తుంది, ఫైనాలిటీని నిలిపివేస్తుంది. + + + +బౌన్సింగ్ మరియు బ్యాలెన్సింగ్ దాడులు రెండూ దాడి చేసే వ్యక్తి నెట్‌వర్క్‌లో సందేశ సమయంపై చాలా సూక్ష్మ నియంత్రణ కలిగి ఉండటంపై ఆధారపడి ఉంటాయి, ఇది అసంభవం. అయినప్పటికీ, నెమ్మదిగా వచ్చే సందేశాలతో పోలిస్తే త్వరగా వచ్చే సందేశాలకు అదనపు బరువు ఇవ్వడం రూపంలో ప్రోటోకాల్‌లో రక్షణలు నిర్మించబడ్డాయి. దీనిని [ప్రపోజర్-వెయిట్ బూస్టింగ్](https://github.com/ethereum/consensus-specs/pull/2730) అని అంటారు. బౌన్సింగ్ దాడుల నుండి రక్షించడానికి ఫోర్క్-ఎంపిక అల్గారిథమ్ అప్‌డేట్ చేయబడింది, తద్వారా తాజా జస్టిఫైడ్ చెక్‌పాయింట్ ప్రతి ఎపోక్‌లోని [మొదటి 1/3 స్లాట్‌లలో](https://ethresear.ch/t/prevention-of-bouncing-attack-on-ffg/6114) మాత్రమే ప్రత్యామ్నాయ చైన్‌కు మారగలదు. ఈ పరిస్థితి దాడి చేసే వ్యక్తి తరువాత డిప్లాయ్ చేయడానికి ఓట్లను సేవ్ చేయకుండా నిరోధిస్తుంది - ఫోర్క్ ఎంపిక అల్గారిథమ్ కేవలం ఎపోక్ యొక్క మొదటి 1/3 లో ఎంచుకున్న చెక్‌పాయింట్‌కు విశ్వసనీయంగా ఉంటుంది, ఈ సమయంలో చాలా నిజాయితీపరులైన వ్యాలిడేటర్లు ఓటు వేసి ఉంటారు. + +కలిసి, ఈ చర్యలు ఒక నిజాయితీపరులైన బ్లాక్ ప్రపోజర్ స్లాట్ ప్రారంభమైన వెంటనే వారి బ్లాక్‌ను చాలా వేగంగా విడుదల చేసే దృశ్యాన్ని సృష్టిస్తాయి, ఆపై ఆ కొత్త బ్లాక్ ఫోర్క్-ఎంపిక అల్గారిథమ్‌ను మరొక చైన్‌కు మారడానికి కారణమయ్యే ~1/3 స్లాట్ (4 సెకన్లు) వ్యవధి ఉంటుంది. ఆ అదే గడువు తరువాత, నెమ్మదిగా వచ్చే వ్యాలిడేటర్ల నుండి వచ్చే ధృవీకరణలు ముందుగా వచ్చిన వాటితో పోలిస్తే డౌన్-వెయిట్ చేయబడతాయి. ఇది చైన్ యొక్క తలను నిర్ణయించడంలో త్వరిత ప్రపోజర్లు మరియు వ్యాలిడేటర్లకు బలంగా అనుకూలంగా ఉంటుంది మరియు విజయవంతమైన బ్యాలెన్సింగ్ లేదా బౌన్సింగ్ దాడి సంభావ్యతను గణనీయంగా తగ్గిస్తుంది. + +ప్రపోజర్ బూస్టింగ్ మాత్రమే “చౌక రీఆర్గ్స్” నుండి రక్షిస్తుందని గమనించాలి, అంటే, ఒక చిన్న స్టేక్‌తో దాడి చేసే వ్యక్తి ప్రయత్నించినవి. వాస్తవానికి, ప్రపోజర్-బూస్టింగ్‌ను పెద్ద వాటాదారులు కూడా గేమ్ చేయవచ్చు. [ఈ పోస్ట్](https://ethresear.ch/t/change-fork-choice-rule-to-mitigate-balancing-and-reorging-attacks/11127) రచయితలు 7% స్టేక్ ఉన్న దాడి చేసే వ్యక్తి తమ ఓట్లను వ్యూహాత్మకంగా డిప్లాయ్ చేసి నిజాయితీపరులైన వ్యాలిడేటర్లను తమ ఫోర్క్‌పై నిర్మించడానికి, ఒక నిజాయితీపరులైన బ్లాక్‌ను రీఆర్గ్ చేయడానికి ఎలా మోసం చేయవచ్చో వివరిస్తారు. ఈ దాడి చాలా అసంభవం అయిన ఆదర్శ జాప్య పరిస్థితులను ఊహించి రూపొందించబడింది. దాడి చేసే వ్యక్తికి ఇప్పటికీ చాలా తక్కువ అవకాశాలు ఉన్నాయి, మరియు ఎక్కువ స్టేక్ అంటే ఎక్కువ మూలధనం ప్రమాదంలో ఉంది మరియు బలమైన ఆర్థిక నిరుత్సాహం. + +[LMD నియమాన్ని ప్రత్యేకంగా లక్ష్యంగా చేసుకున్న బ్యాలెన్సింగ్ దాడి](https://ethresear.ch/t/balancing-attack-lmd-edition/11853) కూడా ప్రతిపాదించబడింది, ఇది ప్రపోజర్ బూస్టింగ్‌తో సంబంధం లేకుండా సాధ్యమని సూచించబడింది. దాడి చేసే వ్యక్తి తన బ్లాక్ ప్రతిపాదనను సమానంగా విభజించి మరియు ప్రతి బ్లాక్‌ను నెట్‌వర్క్‌లో సుమారు సగానికి ప్రచారం చేయడం ద్వారా రెండు పోటీ చైన్‌లను ఏర్పాటు చేస్తాడు, ఫోర్క్‌ల మధ్య సుమారు బ్యాలెన్స్‌ను ఏర్పాటు చేస్తాడు. అప్పుడు, కుట్ర చేసే వ్యాలిడేటర్లు తమ ఓట్లను సమానంగా విభజిస్తారు, నెట్‌వర్క్‌లో సగం మంది మొదట ఫోర్క్ `A` కోసం తమ ఓట్లను మరియు మిగిలిన సగం మంది మొదట ఫోర్క్ `B` కోసం తమ ఓట్లను స్వీకరించేలా సమయం కేటాయిస్తారు. LMD నియమం రెండవ ధృవీకరణను విస్మరించి, ప్రతి వ్యాలిడేటర్ కోసం మొదటి దానిని మాత్రమే ఉంచుకున్నందున, నెట్‌వర్క్‌లో సగం మంది `A` కోసం ఓట్లు మరియు `B` కోసం ఏవీ చూడరు, మిగిలిన సగం మంది `B` కోసం ఓట్లు మరియు `A` కోసం ఏవీ చూడరు. రచయితలు LMD నియమం ప్రత్యర్థికి బ్యాలెన్సింగ్ దాడిని చేయడానికి “అసాధారణమైన శక్తిని” ఇస్తుందని వివరిస్తారు. + +ఈ LMD దాడి వెక్టర్‌ను [ఫోర్క్ ఎంపిక అల్గారిథమ్‌ను అప్‌డేట్ చేయడం](https://github.com/ethereum/consensus-specs/pull/2845) ద్వారా మూసివేయబడింది, తద్వారా ఇది ఫోర్క్ ఎంపిక పరిశీలన నుండి సమానంగా విభజించే వ్యాలిడేటర్లను పూర్తిగా విస్మరిస్తుంది. సమానంగా విభజించే వ్యాలిడేటర్ల భవిష్యత్ ప్రభావాన్ని కూడా ఫోర్క్ ఎంపిక అల్గారిథమ్ తగ్గిస్తుంది. ఇది హిమపాతం దాడులకు వ్యతిరేకంగా స్థితిస్థాపకతను కొనసాగిస్తూనే పైన వివరించిన బ్యాలెన్సింగ్ దాడిని నిరోధిస్తుంది. + +మరొక తరగతి దాడి, [**అవలాంచ్ దాడులు**](https://ethresear.ch/t/avalanche-attack-on-proof-of-stake-ghost/11854/3) అని పిలువబడేది, [మార్చి 2022 పత్రంలో](https://arxiv.org/pdf/2203.01315.pdf) వివరించబడింది. ఒక హిమపాతం దాడిని చేయడానికి, దాడి చేసే వ్యక్తి అనేక వరుస బ్లాక్ ప్రపోజర్లను నియంత్రించాల్సి ఉంటుంది. బ్లాక్ ప్రతిపాదన స్లాట్‌లలో ప్రతిదానిలో, దాడి చేసే వ్యక్తి తన బ్లాక్‌ను నిలిపివేస్తాడు, నిజాయితీపరులైన చైన్ నిలిపివేసిన బ్లాక్‌లతో సమాన సబ్ట్రీ బరువును చేరుకునే వరకు వాటిని సేకరిస్తాడు. అప్పుడు, నిలిపివేయబడిన బ్లాక్‌లు గరిష్టంగా సమానంగా విభజించబడేలా విడుదల చేయబడతాయి. రచయితలు బ్యాలెన్సింగ్ మరియు బౌన్సింగ్ దాడులకు వ్యతిరేకంగా ప్రాథమిక రక్షణ అయిన ప్రపోజర్ బూస్టింగ్ - కొన్ని హిమపాతం దాడి వేరియంట్‌ల నుండి రక్షించదని సూచిస్తారు. అయితే, రచయితలు కూడా ఇతీరియము యొక్క ఫోర్క్-ఎంపిక అల్గారిథమ్ యొక్క అత్యంత ఆదర్శీకరించిన వెర్షన్‌లో మాత్రమే దాడిని ప్రదర్శించారు (వారు LMD లేకుండా GHOST ను ఉపయోగించారు). + +LMD-GHOST ఫోర్క్ ఎంపిక అల్గారిథమ్ యొక్క LMD భాగం ద్వారా అవలాంచ్ దాడిని తగ్గించబడుతుంది. LMD అంటే “తాజా-సందేశ-చోదిత” మరియు ఇది ప్రతి వ్యాలిడేటర్ ఇతర వ్యాలిడేటర్ల నుండి స్వీకరించిన తాజా సందేశాన్ని కలిగి ఉన్న పట్టికను సూచిస్తుంది. కొత్త సందేశం ఒక నిర్దిష్ట వ్యాలిడేటర్ కోసం పట్టికలో ఇప్పటికే ఉన్న దాని కంటే ఆలస్యమైన స్లాట్ నుండి వస్తే మాత్రమే ఆ ఫీల్డ్ నవీకరించబడుతుంది. ఆచరణలో, దీని అర్థం ప్రతి స్లాట్‌లో, స్వీకరించిన మొదటి సందేశం అంగీకరించబడినది మరియు ఏదైనా అదనపు సందేశాలు విస్మరించబడవలసిన సమాన విభజనలు. మరో మాటలో చెప్పాలంటే, ఏకాభిప్రాయం క్లయింట్లు సమాన విభజనలను లెక్కించవు - అవి ప్రతి వ్యాలిడేటర్ నుండి మొదట వచ్చే సందేశాన్ని ఉపయోగిస్తాయి మరియు సమాన విభజనలు కేవలం విస్మరించబడతాయి, అవలాంచ్ దాడులను నివారిస్తాయి. + +ప్రపోజర్-బూస్ట్ ద్వారా అందించబడిన భద్రతకు అదనంగా ఫోర్క్ ఎంపిక నియమానికి అనేక ఇతర సంభావ్య భవిష్యత్ అప్‌గ్రేడ్‌లు ఉన్నాయి. ఒకటి [వ్యూ-మెర్జ్](https://ethresear.ch/t/view-merge-as-a-replacement-for-proposer-boost/13739), ఇక్కడ ధృవీకరించేవారు స్లాట్ ప్రారంభానికి `n` సెకన్ల ముందు ఫోర్క్ ఎంపికపై తమ అభిప్రాయాన్ని స్తంభింపజేస్తారు మరియు ప్రపోజర్ అప్పుడు నెట్‌వర్క్‌లో చైన్ యొక్క అభిప్రాయాన్ని సమకాలీకరించడానికి సహాయపడుతుంది. మరొక సంభావ్య అప్‌గ్రేడ్ [సింగిల్-స్లాట్ ఫైనాలిటీ](https://notes.ethereum.org/@vbuterin/single_slot_finality), ఇది కేవలం ఒక స్లాట్ తర్వాత చైన్‌ను ఫైనలైజ్ చేయడం ద్వారా సందేశ సమయంపై ఆధారపడిన దాడుల నుండి రక్షిస్తుంది. + +#### ఫైనాలిటీ ఆలస్యం {#finality-delay} + +తక్కువ-ఖర్చు సింగిల్ బ్లాక్ రీఆర్గ్ దాడిని మొదట వివరించిన [అదే పత్రం](https://econcs.pku.edu.cn/wine2020/wine2020/Workshop/GTiB20_paper_8.pdf) ఒక ఎపోక్-బౌండరీ బ్లాక్ కోసం బ్లాక్ ప్రపోజర్‌గా ఉన్న దాడి చేసే వ్యక్తిపై ఆధారపడిన ఫైనాలిటీ ఆలస్యం (a.k.a “లైవ్‌నెస్ వైఫల్యం”) దాడిని కూడా వివరించింది. ఇది చాలా కీలకం ఎందుకంటే ఈ ఎపోక్ సరిహద్దు బ్లాక్‌లు కాస్పర్ FFG చైన్ యొక్క భాగాలను ఫైనలైజ్ చేయడానికి ఉపయోగించే చెక్‌పాయింట్‌లుగా మారతాయి. దాడి చేసే వ్యక్తి కేవలం తగినంత నిజాయితీపరులైన వ్యాలిడేటర్లు ప్రస్తుత ఫైనలైజేషన్ టార్గెట్‌గా మునుపటి ఎపోక్-బౌండరీ బ్లాక్‌కు అనుకూలంగా తమ FFG ఓట్లను ఉపయోగించే వరకు వారి బ్లాక్‌ను నిలిపివేస్తాడు. అప్పుడు వారు నిలిపివేసిన బ్లాక్‌ను విడుదల చేస్తారు. వారు తమ బ్లాక్‌కు ధృవీకరిస్తారు మరియు మిగిలిన నిజాయితీపరులైన వ్యాలిడేటర్లు కూడా విభిన్న లక్ష్య చెక్‌పాయింట్‌లతో ఫోర్క్‌లను సృష్టిస్తారు. వారు దానిని సరిగ్గా సమయం కేటాయించినట్లయితే, వారు ఫైనాలిటీని నిరోధిస్తారు ఎందుకంటే ఏ ఫోర్క్‌కు ధృవీకరించే 2/3 సూపర్ మెజారిటీ ఉండదు. స్టేక్ ఎంత చిన్నదిగా ఉంటే, సమయం అంత కచ్చితంగా ఉండాలి ఎందుకంటే దాడి చేసే వ్యక్తి నేరుగా తక్కువ ధృవీకరణలను నియంత్రిస్తాడు, మరియు దాడి చేసే వ్యక్తి ఒక నిర్దిష్ట ఎపోక్-బౌండరీ బ్లాక్‌ను ప్రతిపాదించే వ్యాలిడేటర్‌ను నియంత్రించే అవకాశాలు తక్కువగా ఉంటాయి. + +#### సుదీర్ఘ శ్రేణి దాడులు {#long-range-attacks} + +ప్రూఫ్-ఆఫ్-స్టేక్ బ్లాక్‌చైన్‌లకు ప్రత్యేకమైన ఒక తరగతి దాడి కూడా ఉంది, ఇందులో జెనెసిస్ బ్లాక్‌లో పాల్గొన్న ఒక వ్యాలిడేటర్ నిజాయితీపరులైన దానితో పాటు బ్లాక్‌చైను యొక్క ప్రత్యేక ఫోర్క్‌ను నిర్వహిస్తాడు, చివరికి నిజాయితీపరులైన వ్యాలిడేటర్ సమూహాన్ని చాలా తరువాత కొన్ని అనుకూలమైన సమయంలో దానికి మారడానికి ఒప్పిస్తాడు. ఈ రకమైన దాడి ఇతీరియములో సాధ్యం కాదు ఎందుకంటే ఫైనాలిటీ గాడ్జెట్ అన్ని వ్యాలిడేటర్లు సాధారణ వ్యవధిలో (“చెక్‌పాయింట్‌లు”) నిజాయితీపరులైన చైన్ యొక్క స్థితిపై అంగీకరించేలా చేస్తుంది. ఈ సాధారణ యంత్రాంగం సుదూర దాడి చేసేవారిని తటస్థీకరిస్తుంది ఎందుకంటే ఇతీరియము ఖాతాదారులు కేవలం ఫైనలైజ్ చేసిన బ్లాక్‌లను రీఆర్గ్ చేయరు. నెట్‌వర్క్‌లో చేరే కొత్త నోడ్స్ నమ్మకమైన ఇటీవలి స్థితి హాష్ (ఒక “[ బలహీనమైన సబ్జెక్టివిటీ](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/) చెక్‌పాయింట్”) ను కనుగొని, దానిని నిర్మించడానికి ఒక సూడో-జెనెసిస్ బ్లాక్‌గా ఉపయోగించడం ద్వారా అలా చేస్తాయి. ఇది నెట్‌వర్క్‌లోకి ప్రవేశించే కొత్త నోడ్ కోసం ఒక ‘నమ్మకపు గేట్‌వే’ను సృష్టిస్తుంది, అది తనంతట తాను సమాచారాన్ని ధృవీకరించడం ప్రారంభించే ముందు. + +#### సేవా నిరాకరణ {#denial-of-service} + +ఇతీరియము యొక్క PoS యంత్రాంగం ప్రతి స్లాట్‌లో బ్లాక్ ప్రపోజర్‌గా మొత్తం వ్యాలిడేటర్ సమూహం నుండి ఒకే వ్యాలిడేటర్‌ను ఎంచుకుంటుంది. దీనిని బహిరంగంగా తెలిసిన ఫంక్షన్‌ను ఉపయోగించి లెక్కించవచ్చు మరియు ఒక ప్రత్యర్థి తదుపరి బ్లాక్ ప్రపోజర్‌ను వారి బ్లాక్ ప్రతిపాదనకు కొద్దిగా ముందుగానే గుర్తించడం సాధ్యమవుతుంది. అప్పుడు, దాడి చేసే వ్యక్తి బ్లాక్ ప్రపోజర్‌ను స్పామ్ చేసి వారి తోటివారితో సమాచారాన్ని స్వాప్ చేయకుండా నిరోధించవచ్చు. మిగిలిన నెట్‌వర్క్‌కు, బ్లాక్ ప్రపోజర్ ఆఫ్‌లైన్‌లో ఉన్నట్లు కనిపిస్తుంది మరియు స్లాట్ కేవలం ఖాళీగా ఉంటుంది. ఇది నిర్దిష్ట వ్యాలిడేటర్లపై ఒక రకమైన సెన్సార్‌షిప్ కావచ్చు, వారిని బ్లాక్‌చైనుకు సమాచారాన్ని జోడించకుండా నిరోధించవచ్చు. సింగిల్ సీక్రెట్ లీడర్ ఎన్నికలు (SSLE) లేదా నాన్-సింగిల్ సీక్రెట్ లీడర్ ఎన్నికలను అమలు చేయడం DoS రిస్క్‌లను తగ్గిస్తుంది ఎందుకంటే కేవలం బ్లాక్ ప్రపోజర్ మాత్రమే వారు ఎంపిక చేయబడ్డారని ఎప్పుడూ తెలుస్తుంది మరియు ఎంపిక ముందుగా తెలియదు. ఇది ఇంకా అమలు చేయబడలేదు, కానీ ఇది [పరిశోధన మరియు అభివృద్ధి](https://ethresear.ch/t/secret-non-single-leader-election/11789) యొక్క క్రియాశీల ప్రాంతం. + +ఇవన్నీ ఇతీరియముపై చిన్న స్టేక్‌తో విజయవంతంగా దాడి చేయడం చాలా కష్టమనే వాస్తవాన్ని సూచిస్తాయి. ఇక్కడ వివరించిన సాధ్యమైన దాడులకు ఒక ఆదర్శ ఫోర్క్-ఎంపిక అల్గారిథమ్, అసంభవమైన నెట్‌వర్క్ పరిస్థితులు అవసరం, లేదా దాడి వెక్టర్‌లు ఇప్పటికే క్లయింట్ సాఫ్ట్‌వేర్‌కు సాపేక్షంగా చిన్న ప్యాచ్‌లతో మూసివేయబడ్డాయి. ఇది, వాస్తవానికి, అడవిలో జీరో-డేలు ఉనికిలో ఉండే అవకాశాన్ని తోసిపుచ్చదు, కానీ ఇది మైనారిటీ-స్టేక్ దాడి చేసే వ్యక్తి ప్రభావవంతంగా ఉండటానికి అవసరమైన సాంకేతిక నైపుణ్యం, ఏకాభిప్రాయం లేయర్ జ్ఞానం మరియు అదృష్టం యొక్క అత్యంత ఉన్నత ప్రమాణాన్ని ప్రదర్శిస్తుంది. ఒక దాడి చేసే వ్యక్తి దృక్కోణం నుండి వారి ఉత్తమ పందెం వీలైనంత ఎక్కువ ఈథర్‌ను కూడబెట్టుకుని, మొత్తం స్టేక్‌లో ఎక్కువ నిష్పత్తితో ఆయుధాలు ధరించి తిరిగి రావడం కావచ్చు. + +### మొత్తం స్టేక్‌లో >= 33% ఉపయోగించే దాడి చేసేవారు {#attackers-with-33-stake} + +ఈ వ్యాసంలో ఇంతకు ముందు పేర్కొన్న అన్ని దాడులు దాడి చేసే వ్యక్తికి ఓటు వేయడానికి ఎక్కువ స్టేక్ చేసిన ఈథర్ ఉన్నప్పుడు, మరియు ప్రతి స్లాట్‌లో బ్లాక్‌లను ప్రతిపాదించడానికి ఎంచుకోబడే ఎక్కువ వ్యాలిడేటర్లు ఉన్నప్పుడు విజయవంతం అయ్యే అవకాశం ఎక్కువ. ఒక దురుద్దేశపూర్వక వ్యాలిడేటర్ అందువల్ల వీలైనంత ఎక్కువ స్టేక్ చేసిన ఈథర్‌ను నియంత్రించడం లక్ష్యంగా పెట్టుకోవచ్చు. + +స్టేక్ చేసిన ఈథర్‌లో 33% ఒక దాడి చేసే వ్యక్తికి ఒక బెంచ్‌మార్క్, ఎందుకంటే ఈ మొత్తం కంటే ఎక్కువ ఏదైనా ఉంటే వారు ఇతర వ్యాలిడేటర్ల చర్యలను సూక్ష్మంగా నియంత్రించాల్సిన అవసరం లేకుండా చైన్‌ను ఫైనలైజ్ చేయకుండా నిరోధించే సామర్థ్యాన్ని కలిగి ఉంటారు. వారు కేవలం అందరూ కలిసి అదృశ్యం కావచ్చు. స్టేక్ చేసిన ఈథర్‌లో 1/3 లేదా అంతకంటే ఎక్కువ దురుద్దేశపూర్వకంగా ధృవీకరించినా లేదా ధృవీకరించడంలో విఫలమైనా, అప్పుడు 2/3 సూపర్ మెజారిటీ ఉనికిలో ఉండదు మరియు చైన్ ఫైనలైజ్ కాదు. దీనికి వ్యతిరేకంగా ఉన్న రక్షణ నిష్క్రియాత్మకత లీక్. నిష్క్రియాత్మకత లీక్ ధృవీకరించడంలో విఫలమైన లేదా మెజారిటీకి విరుద్ధంగా ధృవీకరించే వ్యాలిడేటర్లను గుర్తిస్తుంది. ఈ ధృవీకరించని వ్యాలిడేటర్ల యాజమాన్యంలోని స్టేక్ చేసిన ఈథర్ క్రమంగా క్షీణించిపోతుంది, చివరికి వారు సమిష్టిగా మొత్తంలో 1/3 కంటే తక్కువగా ప్రాతినిధ్యం వహిస్తారు, తద్వారా చైన్ మళ్లీ ఫైనలైజ్ కాగలదు. + +నిష్క్రియాత్మకత లీక్ యొక్క ఉద్దేశ్యం చైన్‌ను మళ్లీ ఫైనలైజ్ చేయడం. అయితే, దాడి చేసే వ్యక్తి తన స్టేక్ చేసిన ఈథర్‌లో కొంత భాగాన్ని కూడా కోల్పోతాడు. మొత్తం స్టేక్ చేసిన ఈథర్‌లో 33% ప్రాతినిధ్యం వహించే వ్యాలిడేటర్లలో స్థిరమైన నిష్క్రియాత్మకత చాలా ఖరీదైనది, అయినప్పటికీ వ్యాలిడేటర్లు స్లాష్ చేయబడరు. + +ఇతీరియము నెట్‌వర్క్ అసమకాలికంగా ఉందని (అంటే, సందేశాలు పంపబడటానికి మరియు స్వీకరించబడటానికి మధ్య జాప్యాలు ఉన్నాయని) ఊహించుకుంటే, మొత్తం స్టేక్‌లో 34% నియంత్రించే దాడి చేసే వ్యక్తి డబుల్ ఫైనాలిటీకి కారణం కావచ్చు. ఎందుకంటే దాడి చేసే వ్యక్తి బ్లాక్ ప్రొడ్యూసర్‌గా ఎంపికైనప్పుడు సమానంగా విభజించవచ్చు, ఆపై వారి అన్ని వ్యాలిడేటర్లతో డబుల్ ఓటు వేయవచ్చు. ఇది బ్లాక్‌చైను యొక్క ఫోర్క్ ఉనికిలో ఉన్న పరిస్థితిని సృష్టిస్తుంది, ప్రతిదానికి స్టేక్ చేసిన ఈథర్‌లో 34% ఓటింగ్ ఉంటుంది. ప్రతి ఫోర్క్‌కు దాని అనుకూలంగా ఓటు వేయడానికి మిగిలిన వ్యాలిడేటర్లలో 50% మాత్రమే అవసరం, రెండు ఫోర్క్‌లు కూడా సూపర్ మెజారిటీ ద్వారా మద్దతు పొందడానికి, ఈ సందర్భంలో రెండు చైన్‌లు కూడా ఫైనలైజ్ కాగలవు (ఎందుకంటే దాడి చేసేవారి వ్యాలిడేటర్లలో 34% + మిగిలిన 66% లో సగం = ప్రతి ఫోర్క్‌పై 67%). పోటీ పడుతున్న బ్లాక్‌లు ప్రతి ఒకటి సుమారు 50% నిజాయితీపరులైన వ్యాలిడేటర్ల ద్వారా స్వీకరించబడాలి, కాబట్టి ఈ దాడి దాడి చేసే వ్యక్తికి నెట్‌వర్క్‌పై సందేశాల ప్రచార సమయంపై కొంత నియంత్రణ ఉన్నప్పుడు మాత్రమే సాధ్యమవుతుంది, తద్వారా వారు ప్రతి చైన్‌పై సగం నిజాయితీపరులైన వ్యాలిడేటర్లను నడ్జ్ చేయగలరు. దాడి చేసే వ్యక్తి తప్పనిసరిగా తన మొత్తం స్టేక్‌ను (నేటి వ్యాలిడేటర్ సెట్‌తో ~10 మిలియన్ ఈథర్‌లో 34%) నాశనం చేస్తాడు, ఎందుకంటే వారి వ్యాలిడేటర్లలో 34% ఏకకాలంలో డబుల్-ఓటింగ్ చేస్తారు - ఇది గరిష్ట సహసంబంధ పెనాల్టీతో స్లాష్ చేయదగిన నేరం. ఈ దాడికి వ్యతిరేకంగా ఉన్న రక్షణ మొత్తం స్టేక్ చేసిన ఈథర్‌లో 34% నాశనం చేయడానికి అయ్యే చాలా పెద్ద ఖర్చు. ఈ దాడి నుండి కోలుకోవడానికి ఇతీరియము సంఘం “అవుట్-ఆఫ్-బ్యాండ్” సమన్వయం చేసుకోవాలి మరియు ఒకటి లేదా మరొక ఫోర్క్‌ను అనుసరించడానికి మరియు మరొకదానిని విస్మరించడానికి అంగీకరించాలి. + +### మొత్తం స్టేక్‌లో ~50% ఉపయోగించే దాడి చేసేవారు {#attackers-with-50-stake} + +స్టేక్ చేసిన ఈథర్‌లో 50% వద్ద, ఒక దుష్ట వ్యాలిడేటర్ల సమూహం సిద్ధాంతపరంగా చైన్‌ను రెండు సమాన పరిమాణ ఫోర్క్‌లుగా విభజించి, ఆపై తమ మొత్తం 50% స్టేక్‌ను నిజాయితీపరులైన వ్యాలిడేటర్ సెట్‌కు విరుద్ధంగా ఓటు వేయడానికి ఉపయోగించవచ్చు, తద్వారా రెండు ఫోర్క్‌లను నిర్వహించి, ఫైనాలిటీని నిరోధించవచ్చు. రెండు ఫోర్క్‌లలో నిష్క్రియాత్మకత లీక్ చివరికి రెండు చైన్‌లు ఫైనలైజ్ అయ్యేలా చేస్తుంది. ఈ సమయంలో, ఒకే ఒక ఎంపిక సామాజిక పునరుద్ధరణపై ఆధారపడటం. + +నిజాయితీపరులైన వ్యాలిడేటర్ల సంఖ్యలో కొంత హెచ్చుతగ్గులు, నెట్‌వర్క్ జాప్యం మొదలైన వాటిని బట్టి ఒక ప్రత్యర్థి వ్యాలిడేటర్ల సమూహం స్థిరంగా మొత్తం స్టేక్‌లో కచ్చితంగా 50% నియంత్రించగలగడం చాలా అసంభవం - అటువంటి దాడిని చేయడానికి అయ్యే భారీ ఖర్చు మరియు విజయం యొక్క తక్కువ సంభావ్యతతో కలిపి ఒక హేతుబద్ధమైన దాడి చేసే వ్యక్తికి బలమైన నిరుత్సాహంగా కనిపిస్తుంది, ప్రత్యేకించి 50% కంటే ఎక్కువ పొందడంలో ఒక చిన్న అదనపు పెట్టుబడి చాలా ఎక్కువ శక్తిని అన్‌లాక్ చేసినప్పుడు. + +మొత్తం స్టేక్‌లో >50% వద్ద దాడి చేసే వ్యక్తి ఫోర్క్ ఎంపిక అల్గారిథమ్‌పై ఆధిపత్యం చెలాయించగలడు. ఈ సందర్భంలో, దాడి చేసే వ్యక్తి మెజారిటీ ఓటుతో ధృవీకరించగలడు, నిజాయితీపరులైన క్లయింట్‌లను మోసం చేయాల్సిన అవసరం లేకుండా చిన్న రీఆర్గ్‌లు చేయడానికి వారికి తగిన నియంత్రణను ఇస్తుంది. నిజాయితీపరులైన వ్యాలిడేటర్లు అనుసరిస్తారు ఎందుకంటే వారి ఫోర్క్ ఎంపిక అల్గారిథమ్ కూడా దాడి చేసే వ్యక్తికి అనుకూలమైన చైన్‌ను బరువుగా చూస్తుంది, కాబట్టి చైన్ ఫైనలైజ్ కాగలదు. ఇది దాడి చేసే వ్యక్తికి కొన్ని లావాదేవీలను సెన్సార్ చేయడానికి, చిన్న-శ్రేణి రీఆర్గ్‌లు చేయడానికి మరియు తమకు అనుకూలంగా బ్లాక్‌లను పునర్వ్యవస్థీకరించడం ద్వారా గరిష్ట MEV ను సంగ్రహించడానికి వీలు కల్పిస్తుంది. దీనికి వ్యతిరేకంగా ఉన్న రక్షణ మెజారిటీ స్టేక్ యొక్క భారీ ఖర్చు (ప్రస్తుతం కేవలం $19 బిలియన్ USD కంటే తక్కువ), ఇది దాడి చేసే వ్యక్తి ద్వారా ప్రమాదంలో పడుతుంది ఎందుకంటే సామాజిక లేయర్ అడుగుపెట్టి ఒక నిజాయితీపరులైన మైనారిటీ ఫోర్క్‌ను స్వీకరించే అవకాశం ఉంది, దాడి చేసే వ్యక్తి స్టేక్ విలువను నాటకీయంగా తగ్గిస్తుంది. + +### మొత్తం స్టేక్‌లో >=66% ఉపయోగించే దాడి చేసేవారు {#attackers-with-66-stake} + +మొత్తం స్టేక్ చేసిన ఈథర్‌లో 66% లేదా అంతకంటే ఎక్కువ ఉన్న దాడి చేసే వ్యక్తి ఏ నిజాయితీపరులైన వ్యాలిడేటర్లను బలవంతం చేయకుండా తమకు ఇష్టమైన చైన్‌ను ఫైనలైజ్ చేయగలడు. దాడి చేసే వ్యక్తి కేవలం తమకు ఇష్టమైన ఫోర్క్‌కు ఓటు వేసి, ఆపై దానిని ఫైనలైజ్ చేయగలడు, కేవలం వారు నిజాయితీ లేని సూపర్ మెజారిటీతో ఓటు వేయగలరు కాబట్టి. సూపర్ మెజారిటీ వాటాదారుగా, దాడి చేసే వ్యక్తి ఎల్లప్పుడూ ఫైనలైజ్ చేయబడిన బ్లాక్‌ల విషయాలను నియంత్రిస్తాడు, ఖర్చు చేయడానికి, రివైండ్ చేయడానికి మరియు మళ్లీ ఖర్చు చేయడానికి, కొన్ని లావాదేవీలను సెన్సార్ చేయడానికి మరియు చైన్‌ను ఇష్టానుసారంగా రీఆర్గ్ చేయడానికి శక్తిని కలిగి ఉంటాడు. 51% కంటే 66% నియంత్రించడానికి అదనపు ఈథర్‌ను కొనుగోలు చేయడం ద్వారా, దాడి చేసే వ్యక్తి వాస్తవానికి ఎక్స్ పోస్ట్ రీఆర్గ్స్ మరియు ఫైనాలిటీ రివర్షన్స్ (అంటే, భవిష్యత్తును నియంత్రించడంతో పాటు గతాన్ని మార్చడం) చేసే సామర్థ్యాన్ని కొనుగోలు చేస్తున్నాడు. ఇక్కడ ఉన్న ఏకైక నిజమైన రక్షణలు మొత్తం స్టేక్ చేసిన ఈథర్‌లో 66% యొక్క భారీ ఖర్చు, మరియు ప్రత్యామ్నాయ ఫోర్క్ స్వీకరణను సమన్వయం చేయడానికి సామాజిక లేయర్‌కు తిరిగి వెళ్లే ఎంపిక. మనం తదుపరి విభాగంలో దీనిని మరింత వివరంగా అన్వేషించవచ్చు. + +## ప్రజలు: చివరి రక్షణ రేఖ {#people-the-last-line-of-defense} + +నిజాయితీ లేని వ్యాలిడేటర్లు చైన్ యొక్క తమకు ఇష్టమైన వెర్షన్‌ను ఫైనలైజ్ చేయగలిగితే, ఇతీరియము సంఘం కష్టమైన పరిస్థితిలో పడుతుంది. కానానికల్ చైన్ దాని చరిత్రలో కాల్చిన నిజాయితీ లేని విభాగాన్ని కలిగి ఉంటుంది, అయితే నిజాయితీపరులైన వ్యాలిడేటర్లు ప్రత్యామ్నాయ (నిజాయితీపరులైన) చైన్‌కు ధృవీకరించినందుకు శిక్షించబడవచ్చు. ఒక మెజారిటీ క్లయింట్‌లోని బగ్ నుండి కూడా ఫైనలైజ్ చేయబడిన కానీ తప్పు చైన్ ఉత్పన్నం కాగలదని గమనించండి. చివరగా, అంతిమ ఫాల్‌బ్యాక్ సామాజిక లేయర్ - లేయర్ 0 - పై ఆధారపడి పరిస్థితిని పరిష్కరించడం. + +ఇతీరియము యొక్క PoS ఏకాభిప్రాయం యొక్క బలాలలో ఒకటి, సంఘం దాడికి గురైనప్పుడు ఉపయోగించగల [రక్షణ వ్యూహాల శ్రేణి](https://youtu.be/1m12zgJ42dI?t=1712) ఉండటం. ఒక కనీస ప్రతిస్పందన దాడి చేసేవారి వ్యాలిడేటర్లను అదనపు జరిమానా లేకుండా నెట్‌వర్క్ నుండి బలవంతంగా నిష్క్రమించడం కావచ్చు. నెట్‌వర్క్‌లోకి తిరిగి ప్రవేశించడానికి దాడి చేసే వ్యక్తి ఒక యాక్టివేషన్ క్యూలో చేరాల్సి ఉంటుంది, ఇది వ్యాలిడేటర్ సమూహం క్రమంగా పెరిగేలా చేస్తుంది. ఉదాహరణకు, స్టేక్ చేసిన ఈథర్ మొత్తాన్ని రెట్టింపు చేయడానికి తగినంత వ్యాలిడేటర్లను జోడించడానికి సుమారు 200 రోజులు పడుతుంది, దాడి చేసే వ్యక్తి మరొక 51% దాడికి ప్రయత్నించడానికి ముందు నిజాయితీపరులైన వ్యాలిడేటర్లకు 200 రోజులు సమయం లభిస్తుంది. అయితే, సంఘం కూడా దాడి చేసే వ్యక్తిని మరింత కఠినంగా శిక్షించాలని నిర్ణయించుకోవచ్చు, గత రివార్డులను రద్దు చేయడం లేదా వారి స్టేక్ చేసిన మూలధనంలో కొంత భాగాన్ని (100% వరకు) కాల్చడం ద్వారా. + +దాడి చేసే వ్యక్తిపై విధించిన జరిమానా ఏమైనప్పటికీ, ఇతీరియము ఖాతాదారులలో కోడ్ చేయబడిన ఫోర్క్ ఎంపిక అల్గారిథమ్ ద్వారా అనుకూలమైన చైన్ అయినప్పటికీ, నిజాయితీ లేని చైన్ వాస్తవానికి చెల్లదని మరియు సంఘం బదులుగా నిజాయితీపరులైన చైన్‌పై నిర్మించాలని కూడా సంఘం కలిసి నిర్ణయించుకోవాలి. నిజాయితీపరులైన వ్యాలిడేటర్లు సమిష్టిగా సంఘం అంగీకరించిన ఇతీరియము బ్లాక్‌చైను యొక్క ఫోర్క్‌పై నిర్మించడానికి అంగీకరించవచ్చు, ఉదాహరణకు, దాడి ప్రారంభమయ్యే ముందు కానానికల్ చైన్ నుండి ఫోర్క్ చేయబడినది లేదా దాడి చేసేవారి వ్యాలిడేటర్లను బలవంతంగా తొలగించినది. నిజాయితీపరులైన వ్యాలిడేటర్లు ఈ చైన్‌పై నిర్మించడానికి ప్రోత్సహించబడతారు ఎందుకంటే వారు (సరిగ్గా) దాడి చేసే వ్యక్తి చైన్‌కు ధృవీకరించడంలో విఫలమైనందుకు వారికి వర్తించే జరిమానాలను నివారించవచ్చు. ఇతీరియముపై నిర్మించిన ఎక్స్ఛేంజీలు, ఆన్-ర్యాంప్‌లు మరియు అప్లికేషన్‌లు బహుశా నిజాయితీపరులైన చైన్‌పై ఉండటానికి ఇష్టపడతాయి మరియు నిజాయితీపరులైన వ్యాలిడేటర్లను నిజాయితీపరులైన బ్లాక్‌చైనుకు అనుసరిస్తాయి. + +అయితే, ఇది గణనీయమైన గవర్నెన్స్ సవాలు అవుతుంది. కొంతమంది వినియోగదారులు మరియు వ్యాలిడేటర్లు నిస్సందేహంగా నిజాయితీపరులైన చైన్‌కు తిరిగి మారడం వల్ల నష్టపోతారు, దాడి తర్వాత ధృవీకరించబడిన బ్లాక్‌లలోని లావాదేవీలు సంభావ్యంగా వెనక్కి తీసుకోబడవచ్చు, అప్లికేషన్ లేయర్‌ను అడ్డుకోవచ్చు, మరియు ఇది “కోడ్ చట్టం” అని నమ్మే కొంతమంది వినియోగదారుల నీతిని బలహీనపరుస్తుంది. ఎక్స్ఛేంజీలు మరియు అప్లికేషన్లు చాలా మటుకు ఆఫ్‌చైన్ చర్యలను ఆన్‌చైన్ లావాదేవీలతో అనుసంధానించి ఉంటాయి, అవి ఇప్పుడు వెనక్కి తీసుకోబడవచ్చు, నిష్పక్షపాతంగా విడదీయడం కష్టంగా ఉండే ఉపసంహరణలు మరియు పునశ్చరణల క్యాస్కేడ్‌ను ప్రారంభిస్తాయి, ప్రత్యేకించి నిజాయితీపరులైన వినియోగదారులకు ద్వితీయ ప్రభావాలతో DeFi లేదా ఇతర ఉత్పన్నాలలో అక్రమంగా సంపాదించిన లాభాలు మిళితం చేయబడి ఉంటే. నిస్సందేహంగా కొంతమంది వినియోగదారులు, బహుశా సంస్థాగత వినియోగదారులు కూడా, తెలివిగా ఉండటం ద్వారా లేదా అదృష్టం ద్వారా నిజాయితీ లేని చైన్ నుండి ఇప్పటికే ప్రయోజనం పొంది ఉంటారు, మరియు తమ లాభాలను రక్షించుకోవడానికి ఫోర్క్‌ను వ్యతిరేకించవచ్చు. >51% దాడులకు సంఘం ప్రతిస్పందనను రిహార్సల్ చేయాలని పిలుపులు వచ్చాయి, తద్వారా ఒక సున్నితమైన సమన్వయ ఉపశమనాన్ని త్వరగా అమలు చేయవచ్చు. Vitalik ద్వారా ethresear.chలో [ఇక్కడ](https://ethresear.ch/t/timeliness-detectors-and-51-attack-recovery-in-blockchains/6925) మరియు [ఇక్కడ](https://ethresear.ch/t/responding-to-51-attacks-in-casper-ffg/6363) మరియు Twitterలో [ఇక్కడ](https://twitter.com/skylar_eth/status/1551798684727508992?s=20&t=oHZ1xv8QZdOgAXhxZKtHEw) కొన్ని ఉపయోగకరమైన చర్చ ఉంది. ఒక సమన్వయ సామాజిక ప్రతిస్పందన యొక్క లక్ష్యం దాడి చేసే వ్యక్తిని శిక్షించడంలో మరియు ఇతర వినియోగదారులకు ప్రభావాలను తగ్గించడంలో చాలా లక్ష్యంగా మరియు నిర్దిష్టంగా ఉండాలి. + +గవర్నెన్స్ ఇప్పటికే ఒక సంక్లిష్టమైన అంశం. ఒక నిజాయితీ లేని ఫైనలైజింగ్ చైన్‌కు లేయర్-0 అత్యవసర ప్రతిస్పందనను నిర్వహించడం ఇతీరియము సంఘానికి నిస్సందేహంగా సవాలుగా ఉంటుంది, కానీ ఇది ఇతీరియము చరిత్రలో (/ethereum-forks/#dao-fork-summary) - [రెండుసార్లు](/ethereum-forks/#tangerine-whistle) - జరిగింది). + +అయినప్పటికీ, చివరి ఫాల్‌బ్యాక్ మీట్‌స్పేస్‌లో కూర్చోవడంలో చాలా సంతృప్తికరమైనది ఉంది. చివరగా, మన పైన ఈ అద్భుతమైన సాంకేతికత స్టాక్ ఉన్నప్పటికీ, చెత్త ఎప్పుడైనా జరిగితే నిజమైన వ్యక్తులు దాని నుండి బయటపడటానికి తమ మార్గాన్ని సమన్వయం చేసుకోవలసి ఉంటుంది. + +## సారాంశం {#summary} + +ఈ పేజీ దాడి చేసేవారు ఇతీరియము యొక్క ప్రూఫ్-ఆఫ్-స్టేక్ ఏకాభిప్రాయం ప్రోటోకాల్‌ను దోపిడీ చేయడానికి ప్రయత్నించే కొన్ని మార్గాలను అన్వేషించింది. మొత్తం స్టేక్ చేసిన ఈథర్ యొక్క పెరుగుతున్న నిష్పత్తులతో దాడి చేసేవారి కోసం రీఆర్గ్స్ మరియు ఫైనాలిటీ ఆలస్యాలు అన్వేషించబడ్డాయి. మొత్తంమీద, ఒక ధనిక దాడి చేసే వ్యక్తికి విజయం సాధించే అవకాశం ఎక్కువ ఎందుకంటే వారి స్టేక్ భవిష్యత్ బ్లాక్‌ల విషయాలను ప్రభావితం చేయడానికి వారు ఉపయోగించగల ఓటింగ్ శక్తిగా అనువదిస్తుంది. స్టేక్ చేసిన ఈథర్ యొక్క నిర్దిష్ట పరిమితి మొత్తాల వద్ద, దాడి చేసే వ్యక్తి శక్తి స్థాయి పెరుగుతుంది: + +33%: ఫైనాలిటీ ఆలస్యం + +34%: ఫైనాలిటీ ఆలస్యం, డబుల్ ఫైనాలిటీ + +51%: ఫైనాలిటీ ఆలస్యం, డబుల్ ఫైనాలిటీ, సెన్సార్‌షిప్, బ్లాక్‌చైను భవిష్యత్తుపై నియంత్రణ + +66%: ఫైనాలిటీ ఆలస్యం, డబుల్ ఫైనాలిటీ, సెన్సార్‌షిప్, బ్లాక్‌చైను భవిష్యత్తు మరియు గతంపై నియంత్రణ + +చిన్న మొత్తంలో స్టేక్ చేసిన ఈథర్ అవసరమయ్యే కానీ నిజాయితీపరులైన వ్యాలిడేటర్ సమూహాన్ని తమకు అనుకూలంగా మార్చడానికి సందేశ సమయంపై సూక్ష్మ నియంత్రణ ఉన్న చాలా అధునాతన దాడి చేసే వ్యక్తిపై ఆధారపడిన మరింత అధునాతన దాడుల శ్రేణి కూడా ఉంది. + +మొత్తంమీద, ఈ సంభావ్య దాడి వెక్టర్‌లు ఉన్నప్పటికీ విజయవంతమైన దాడి ప్రమాదం తక్కువ, ప్రూఫ్-ఆఫ్-వర్క్ సమానమైన వాటి కంటే ఖచ్చితంగా తక్కువ. ఎందుకంటే నిజాయితీపరులైన వ్యాలిడేటర్లను తమ ఓటింగ్ శక్తితో అధిగమించడం లక్ష్యంగా చేసుకున్న దాడి చేసే వ్యక్తి ద్వారా ప్రమాదంలో పడే స్టేక్ చేసిన ఈథర్ యొక్క భారీ ఖర్చు దీనికి కారణం. అంతర్నిర్మిత “క్యారెట్ మరియు స్టిక్” ప్రోత్సాహక లేయర్ చాలా దుష్ప్రవర్తన నుండి రక్షిస్తుంది, ముఖ్యంగా తక్కువ-స్టేక్ దాడి చేసేవారికి. మరింత సూక్ష్మమైన బౌన్సింగ్ మరియు బ్యాలెన్సింగ్ దాడులు కూడా విజయవంతం అయ్యే అవకాశం లేదు ఎందుకంటే నిజమైన నెట్‌వర్క్ పరిస్థితులు నిర్దిష్ట వ్యాలిడేటర్ల ఉపసమితులకు సందేశ పంపిణీ యొక్క సూక్ష్మ నియంత్రణను సాధించడం చాలా కష్టతరం చేస్తాయి, మరియు క్లయింట్ బృందాలు తెలిసిన బౌన్సింగ్, బ్యాలెన్సింగ్ మరియు అవలాంచ్ దాడి వెక్టర్‌లను సాధారణ ప్యాచ్‌లతో త్వరగా మూసివేశాయి. + +34%, 51% లేదా 66% దాడులకు పరిష్కరించడానికి అవుట్-ఆఫ్-బ్యాండ్ సామాజిక సమన్వయం అవసరం కావచ్చు. ఇది సంఘానికి బాధాకరంగా ఉండే అవకాశం ఉన్నప్పటికీ, అవుట్-ఆఫ్-బ్యాండ్ ప్రతిస్పందించే సంఘం సామర్థ్యం దాడి చేసే వ్యక్తికి బలమైన నిరుత్సాహం. ఇతీరియము సామాజిక లేయర్ అంతిమ బ్యాక్‌స్టాప్ - సాంకేతికంగా విజయవంతమైన దాడిని కూడా సంఘం ఒక నిజాయితీపరులైన ఫోర్క్‌ను స్వీకరించడానికి అంగీకరించడం ద్వారా నిర్వీర్యం చేయవచ్చు. దాడి చేసే వ్యక్తికి మరియు ఇతీరియము సంఘానికి మధ్య ఒక పరుగు ఉంటుంది - 66% దాడికి ఖర్చు చేసిన బిలియన్ల డాలర్లు బహుశా విజయవంతమైన సామాజిక సమన్వయ దాడి ద్వారా త్వరగా పంపిణీ చేయబడితే నాశనం చేయబడతాయి, దాడి చేసే వ్యక్తిని ఇతీరియము సంఘం విస్మరించిన తెలిసిన నిజాయితీ లేని చైన్‌పై ద్రవ రూపంలో లేని స్టేక్ చేసిన ఈథర్ యొక్క భారీ సంచులతో వదిలివేస్తుంది. ఇది దాడి చేసే వ్యక్తికి లాభదాయకంగా ముగుస్తుందనే సంభావ్యత సమర్థవంతమైన నిరోధకంగా ఉండటానికి తగినంత తక్కువగా ఉంది. అందువల్ల గట్టిగా సమలేఖనం చేయబడిన విలువలతో కూడిన సమన్వయ సామాజిక లేయర్‌ను నిర్వహించడంలో పెట్టుబడి చాలా ముఖ్యం. + +## మరింత చదవడానికి {#further-reading} + +- [ఈ పేజీ యొక్క మరింత వివరణాత్మక వెర్షన్](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs) +- [సెటిల్‌మెంట్ ఫైనాలిటీపై వైటలిక్](https://blog.ethereum.org/2016/05/09/on-settlement-finality/) +- [LMD GHOST పత్రం](https://arxiv.org/abs/2003.03052) +- [కాస్పర్-FFG పేపర్](https://arxiv.org/abs/1710.09437) +- [గాస్పర్ పత్రం](https://arxiv.org/pdf/2003.03052.pdf) +- [ప్రపోజర్ బరువు బూస్టింగ్ ఏకాభిప్రాయం స్పెక్స్](https://github.com/ethereum/consensus-specs/pull/2730) +- [ethresear.chలో బౌన్సింగ్ దాడులు](https://ethresear.ch/t/prevention-of-bouncing-attack-on-ffg/6114) +- [SSLE పరిశోధన](https://ethresear.ch/t/secret-non-single-leader-election/11789) diff --git a/public/content/translations/te/developers/docs/consensus-mechanisms/pos/attestations/index.md b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/attestations/index.md new file mode 100644 index 00000000000..abafa12cb5a --- /dev/null +++ b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/attestations/index.md @@ -0,0 +1,92 @@ +--- +title: "ధృవీకరణలు" +description: "ప్రూఫ్-ఆఫ్-స్టేక్ Ethereum పై ధృవీకరణల యొక్క వివరణ." +lang: te +--- + +ప్రతి యుగంలోనూ ఒక ధ్రువీకరణకర్త ఒక ధృవీకరణను సృష్టించి, సంతకం చేసి, ప్రసారం చేయాలని ఆశిస్తారు. ఈ పేజీ ఈ ధృవీకరణలు ఎలా ఉంటాయో మరియు ఏకాభిప్రాయం క్లయింట్ల మధ్య అవి ఎలా ప్రాసెస్ చేయబడతాయి మరియు కమ్యూనికేట్ చేయబడతాయో వివరిస్తుంది. + +## ధృవీకరణ అంటే ఏమిటి? {#what-is-an-attestation} + +ప్రతి [యుగం](/glossary/#epoch) (6.4 నిమిషాలు) ఒక ధ్రువీకరణకర్త నెట్వర్క్కు ఒక ధృవీకరణను ప్రతిపాదిస్తారు. ఆ ధృవీకరణ యుగంలోని ఒక నిర్దిష్ట స్లాట్ కోసం. ధృవీకరణ యొక్క ఉద్దేశ్యం, ధ్రువీకరణకర్త యొక్క చైన్ దృష్టికోణానికి అనుకూలంగా ఓటు వేయడం, ముఖ్యంగా ఇటీవలి సమర్థించబడిన బ్లాక్ మరియు ప్రస్తుత యుగంలోని మొదటి బ్లాక్ (వీటిని `source` మరియు `target` చెక్పాయింట్లు అని పిలుస్తారు). ఈ సమాచారం పాల్గొనే అన్ని ధ్రువీకరణకర్తల కోసం కలిపి, బ్లాక్చెయిన్ యొక్క స్థితి గురించి నెట్వర్క్ ఏకాభిప్రాయానికి రావడానికి వీలు కల్పిస్తుంది. + +ధృవీకరణలో కింది భాగాలు ఉంటాయి: + +- `aggregation_bits`: ధ్రువీకరణకర్తల యొక్క ఒక బిట్లిస్ట్, ఇక్కడ స్థానం వారి కమిటీలోని ధ్రువీకరణకర్త సూచికకు మ్యాప్ చేస్తుంది; విలువ (0/1) ధ్రువీకరణకర్త `data` పై సంతకం చేశారా లేదా అని సూచిస్తుంది (అంటే, వారు చురుకుగా ఉన్నారా మరియు బ్లాక్ ప్రపోజర్తో అంగీకరిస్తున్నారా అని). +- `data`: ధృవీకరణకు సంబంధించిన వివరాలు, కింద నిర్వచించిన విధంగా +- `signature`: ఒక BLS సంతకం, ఇది వ్యక్తిగత ధ్రువీకరణకర్తల సంతకాలను సమూహపరుస్తుంది + +ధృవీకరిస్తున్న ధ్రువీకరణకర్తకు మొదటి పని `data`ను నిర్మించడం. `data`లో కింది సమాచారం ఉంటుంది: + +- `slot`: ధృవీకరణ సూచించే స్లాట్ సంఖ్య +- `index`: ఒక ఇచ్చిన స్లాట్లో ధ్రువీకరణకర్త ఏ కమిటీకి చెందినవాడో గుర్తించే ఒక సంఖ్య +- `beacon_block_root`: చైన్ యొక్క హెడ్ వద్ద ధ్రువీకరణకర్త చూసే బ్లాక్ యొక్క రూట్ హాష్ (ఫోర్క్-ఛాయిస్ అల్గోరిథంను వర్తింపజేయడం యొక్క ఫలితం) +- `source`: ఫైనాలిటీ ఓటులో భాగం, ఇది ధ్రువీకరణకర్తలు ఇటీవలి సమర్థించబడిన బ్లాక్గా ఏమి చూస్తున్నారో సూచిస్తుంది +- `target`: ఫైనాలిటీ ఓటులో భాగం, ఇది ధ్రువీకరణకర్తలు ప్రస్తుత యుగంలోని మొదటి బ్లాక్గా ఏమి చూస్తున్నారో సూచిస్తుంది + +`data` నిర్మించబడిన తర్వాత, ధ్రువీకరణకర్త `aggregation_bits` లో వారి సొంత ధ్రువీకరణకర్త సూచికకు సంబంధించిన బిట్ను 0 నుండి 1 కి మార్చి, తాము పాల్గొన్నట్లు చూపించవచ్చు. + +చివరగా, ధ్రువీకరణకర్త ధృవీకరణపై సంతకం చేసి, దానిని నెట్వర్క్కు ప్రసారం చేస్తారు. + +### సమూహ ధృవీకరణ {#aggregated-attestation} + +ప్రతి ధ్రువీకరణకర్త కోసం ఈ డేటాను నెట్వర్క్ చుట్టూ పంపడంతో గణనీయమైన ఓవర్హెడ్ ముడిపడి ఉంది. అందువల్ల, వ్యక్తిగత ధ్రువీకరణకర్తల నుండి ధృవీకరణలు మరింత విస్తృతంగా ప్రసారం చేయబడటానికి ముందు సబ్నెట్లలో సమూహపరచబడతాయి. ఇది సంతకాలను కలిపి సమూహపరచడం కలిగి ఉంటుంది, తద్వారా ప్రసారం చేయబడిన ఒక ధృవీకరణలో ఏకాభిప్రాయం `data` మరియు ఆ `data`తో అంగీకరించే అన్ని ధ్రువీకరణకర్తల సంతకాలను కలపడం ద్వారా ఏర్పడిన ఒకే సంతకం ఉంటుంది. దీనిని `aggregation_bits` ఉపయోగించి తనిఖీ చేయవచ్చు ఎందుకంటే ఇది వారి కమిటీలోని ప్రతి ధ్రువీకరణకర్త యొక్క సూచికను అందిస్తుంది (వీరి ID `data`లో అందించబడింది), దీనిని వ్యక్తిగత సంతకాలను ప్రశ్నించడానికి ఉపయోగించవచ్చు. + +ప్రతి యుగంలో ప్రతి సబ్నెట్లో 16 ధ్రువీకరణకర్తలు `aggregators`గా ఎంపిక చేయబడతారు. అగ్రిగేటర్లు తమ సొంత `data`కు సమానమైన `data` కలిగిన, గాసిప్ నెట్వర్క్ ద్వారా వారు విన్న అన్ని ధృవీకరణలను సేకరిస్తారు. ప్రతి సరిపోలే ధృవీకరణ యొక్క పంపినవారు `aggregation_bits`లో నమోదు చేయబడతారు. అప్పుడు అగ్రిగేటర్లు ధృవీకరణ సమూహాన్ని విస్తృత నెట్వర్క్కు ప్రసారం చేస్తారు. + +ఒక ధ్రువీకరణకర్త బ్లాక్ ప్రపోజర్గా ఎంపిక చేయబడినప్పుడు, వారు కొత్త బ్లాక్లోని తాజా స్లాట్ వరకు సబ్నెట్ల నుండి సమూహ ధృవీకరణలను ప్యాకేజీ చేస్తారు. + +### ధృవీకరణ చేర్పు జీవితచక్రం {#attestation-inclusion-lifecycle} + +1. ఉత్పత్తి +2. ప్రచారం +3. సమూహనం +4. ప్రచారం +5. చేర్పు + +ధృవీకరణ జీవితచక్రం కింది స్కీమాటిక్లో వివరించబడింది: + +![ధృవీకరణ జీవితచక్రం](./attestation_schematic.png) + +## బహుమతులు {#rewards} + +ధృవీకరణలను సమర్పించినందుకు ధ్రువీకరణకర్తలకు రివార్డ్ ఇవ్వబడుతుంది. ధృవీకరణ రివార్డ్ పాల్గొనే ఫ్లాగ్లు (సోర్స్, టార్గెట్ మరియు హెడ్), మూల రివార్డ్ మరియు పాల్గొనే రేటుపై ఆధారపడి ఉంటుంది. + +సమర్పించిన ధృవీకరణ మరియు దాని చేర్పు ఆలస్యంపై ఆధారపడి, పాల్గొనే ఫ్లాగ్లలో ప్రతి ఒక్కటి నిజం లేదా అబద్ధం కావచ్చు. + +మూడు ఫ్లాగ్లు నిజమైనప్పుడు ఉత్తమ దృశ్యం సంభవిస్తుంది, ఈ సందర్భంలో ఒక ధ్రువీకరణకర్త సంపాదిస్తారు (ప్రతి సరైన ఫ్లాగ్కు): + +`రివార్డ్ += మూల రివార్డ్ * ఫ్లాగ్ బరువు * ఫ్లాగ్ ధృవీకరణ రేటు / 64` + +ఫ్లాగ్ ధృవీకరణ రేటు, ఇచ్చిన ఫ్లాగ్ కోసం అన్ని ధృవీకరిస్తున్న ధ్రువీకరణకర్తల ప్రభావవంతమైన బ్యాలెన్స్ల మొత్తాన్ని మొత్తం క్రియాశీల ప్రభావవంతమైన బ్యాలెన్స్తో పోల్చి కొలుస్తారు. + +### మూల రివార్డ్ {#base-reward} + +మూల రివార్డ్ ధృవీకరిస్తున్న ధ్రువీకరణకర్తల సంఖ్య మరియు వారి ప్రభావవంతమైన స్టేక్ చేయబడిన ఈథర్ బ్యాలెన్స్ల ప్రకారం లెక్కించబడుతుంది: + +`మూల రివార్డ్ = ధ్రువీకరణకర్త ప్రభావవంతమైన బ్యాలెన్స్ x 2^6 / SQRT(అన్ని క్రియాశీల ధ్రువీకరణకర్తల ప్రభావవంతమైన బ్యాలెన్స్)` + +#### చేర్పు ఆలస్యం {#inclusion-delay} + +ధ్రువీకరణకర్తలు చైన్ హెడ్ (`block n`) పై ఓటు వేసిన సమయంలో, `block n+1` ఇంకా ప్రతిపాదించబడలేదు. అందువల్ల ధృవీకరణలు సహజంగా **ఒక బ్లాక్ తర్వాత** చేర్చబడతాయి కాబట్టి చైన్ హెడ్గా `block n` పై ఓటు వేసిన అన్ని ధృవీకరణలు `block n+1`లో చేర్చబడ్డాయి మరియు, **చేర్పు ఆలస్యం** 1 అవుతుంది. చేర్పు ఆలస్యం రెండు స్లాట్లకు రెట్టింపు అయితే, ధృవీకరణ రివార్డ్ సగం అవుతుంది, ఎందుకంటే ధృవీకరణ రివార్డ్ను లెక్కించడానికి మూల రివార్డ్ను చేర్పు ఆలస్యం యొక్క వ్యుత్క్రమంతో గుణిస్తారు. + +### ధృవీకరణ దృశ్యాలు {#attestation-scenarios} + +#### ఓటింగ్ ధ్రువీకరణకర్త తప్పిపోవడం {#missing-voting-validator} + +ధ్రువీకరణకర్తలు తమ ధృవీకరణను సమర్పించడానికి గరిష్టంగా 1 యుగం సమయం ఉంటుంది. యుగం 0 లో ధృవీకరణ తప్పిపోతే, వారు దానిని యుగం 1 లో చేర్పు ఆలస్యంతో సమర్పించవచ్చు. + +#### అగ్రిగేటర్ తప్పిపోవడం {#missing-aggregator} + +మొత్తం మీద ప్రతి యుగానికి 16 అగ్రిగేటర్లు ఉంటారు. అదనంగా, యాదృచ్ఛిక ధ్రువీకరణకర్తలు **256 యుగాల కోసం రెండు సబ్నెట్లకు** సభ్యత్వం పొందుతారు మరియు అగ్రిగేటర్లు తప్పిపోయిన సందర్భంలో బ్యాకప్గా పనిచేస్తారు. + +#### బ్లాక్ ప్రపోజర్ తప్పిపోవడం {#missing-block-proposer} + +కొన్ని సందర్భాల్లో ఒక అదృష్ట అగ్రిగేటర్ కూడా బ్లాక్ ప్రపోజర్ కావచ్చు అని గమనించండి. బ్లాక్ ప్రపోజర్ తప్పిపోయినందున ధృవీకరణ చేర్చబడకపోతే, తదుపరి బ్లాక్ ప్రపోజర్ సమూహ ధృవీకరణను తీసుకుని తదుపరి బ్లాక్లో చేర్చుతారు. అయితే, **చేర్పు ఆలస్యం** ఒకటి పెరుగుతుంది. + +## మరింత సమాచారం {#further-reading} + +- [విటాలిక్ యొక్క వ్యాఖ్యానించిన ఏకాభిప్రాయం స్పెక్లో ధృవీకరణలు](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#attestationdata) +- [eth2book.info లో ధృవీకరణలు](https://eth2book.info/capella/part3/containers/dependencies/#attestationdata) + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ diff --git a/public/content/translations/te/developers/docs/consensus-mechanisms/pos/block-proposal/index.md b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/block-proposal/index.md new file mode 100644 index 00000000000..e32e778ec08 --- /dev/null +++ b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/block-proposal/index.md @@ -0,0 +1,69 @@ +--- +title: "బ్లాక్ ప్రతిపాదన" +description: "ప్రూఫ్-ఆఫ్-స్టేక్ ఇతీరియములో బ్లాక్‌లు ఎలా ప్రతిపాదించబడతాయో వివరణ." +lang: te +--- + +బ్లాక్‌లు బ్లాక్ చైను యొక్క ప్రాథమిక యూనిట్లు. బ్లాక్‌లు సమాచారం యొక్క వివిక్త యూనిట్లు, ఇవి నోడ్స్ మధ్య పంపబడి, అంగీకరించబడి, ప్రతి నోడ్ యొక్క డేటాబేస్‌కు జోడించబడతాయి. అవి ఎలా ఉత్పత్తి చేయబడతాయో ఈ పేజీ వివరిస్తుంది. + +## అవసరాలు {#prerequisites} + +బ్లాక్ ప్రతిపాదన అనేది ప్రూఫ్-ఆఫ్-స్టేక్ ప్రోటోకాల్‌లో ఒక భాగం. ఈ పేజీని అర్థం చేసుకోవడంలో సహాయపడటానికి, మీరు [ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos/) మరియు [బ్లాక్ ఆర్కిటెక్చర్](/developers/docs/blocks/) గురించి చదవాలని మేము సిఫార్సు చేస్తున్నాము. + +## బ్లాక్‌లను ఎవరు ఉత్పత్తి చేస్తారు? {#who-produces-blocks} + +వాలిడేటర్ ఖాతాలు బ్లాక్‌లను ప్రతిపాదిస్తాయి. వాలిడేటర్ ఖాతాలు నోడ్ ఆపరేటర్లచే నిర్వహించబడతాయి, వీరు తమ ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయం క్లయింట్‌లలో భాగంగా వాలిడేటర్ సాఫ్ట్‌వేర్‌ను నడుపుతారు మరియు డిపాజిట్ కాంట్రాక్ట్‌లో కనీసం 32 ETH డిపాజిట్ చేసి ఉంటారు. అయితే, ప్రతి వాలిడేటర్ ఒక బ్లాక్‌ను ప్రతిపాదించడానికి అప్పుడప్పుడు మాత్రమే బాధ్యత వహిస్తుంది. ఇతీరియము సమయాన్ని జాబితాలు మరియు యుగాలలో కొలుస్తుంది. ప్రతి జాబితా పన్నెండు సెకన్లు, మరియు 32 జాబితాలు (6.4 నిమిషాలు) ఒక యుగాన్ని ఏర్పరుస్తాయి. ప్రతి జాబితా ఇతీరియముపై కొత్త బ్లాక్‌ను జోడించడానికి ఒక అవకాశం. + +### యాదృచ్ఛిక ఎంపిక {#random-selection} + +ప్రతి జాబితాలో ఒక బ్లాక్‌ను ప్రతిపాదించడానికి ఒకే ఒక వాలిడేటర్ సూడో-యాదృచ్ఛికంగా ఎంపిక చేయబడుతుంది. ఒక బ్లాక్ చైనులో నిజమైన యాదృచ్ఛికత అనేదే ఉండదు, ఎందుకంటే ప్రతి నోడ్ నిజంగా యాదృచ్ఛిక సంఖ్యలను ఉత్పత్తి చేస్తే, అవి ఏకాభిప్రాయానికి రాలేవు. దానికి బదులుగా, వాలిడేటర్ ఎంపిక ప్రక్రియను అనూహ్యంగా మార్చడమే లక్ష్యం. RANDAO అనే అల్గోరిథం ఉపయోగించి ఇతీరియముపై యాదృచ్ఛికత సాధించబడుతుంది, ఇది బ్లాక్ ప్రపోజర్ నుండి వచ్చిన హాష్‌ను ప్రతి బ్లాక్‌కు నవీకరించబడే ఒక సీడ్‌తో మిక్స్ చేస్తుంది. ఈ విలువ మొత్తం ధృవీకరణకర్తల సెట్ నుండి ఒక నిర్దిష్ట ధృవీకరణకర్తను ఎంచుకోవడానికి ఉపయోగించబడుతుంది. కొన్ని రకాల సీడ్ మానిప్యులేషన్ నుండి రక్షించడానికి ఒక మార్గంగా వాలిడేటర్ ఎంపిక రెండు యుగాల ముందుగానే స్థిరపరచబడింది. + +ప్రతి జాబితాలో వాలిడేటర్లు RANDAOకు జోడించినప్పటికీ, గ్లోబల్ RANDAO విలువ ప్రతి యుగానికి ఒకసారి మాత్రమే నవీకరించబడుతుంది. తదుపరి బ్లాక్ ప్రపోజర్ యొక్క ఇండెక్స్ ను గణించడానికి, ప్రతి జాబితాలో ఒక ప్రత్యేక విలువను ఇవ్వడానికి RANDAO విలువ జాబితా సంఖ్యతో మిక్స్ చేయబడుతుంది. ఒక వ్యక్తిగత వాలిడేటర్ ఎంపికయ్యే సంభావ్యత కేవలం `1/N` కాదు (ఇక్కడ `N` = మొత్తం యాక్టివ్ వాలిడేటర్లు). దానికి బదులుగా, ఇది ప్రతి వాలిడేటర్ యొక్క ప్రభావవంతమైన ETH బ్యాలెన్స్ ద్వారా వెయిటెడ్ చేయబడుతుంది. గరిష్ట ప్రభావవంతమైన బ్యాలెన్స్ 32 ETH (అంటే `బ్యాలెన్స్ < 32 ETH` అనేది `బ్యాలెన్స్ == 32 ETH` కంటే తక్కువ బరువుకు దారితీస్తుంది, కానీ `బ్యాలెన్స్ > 32 ETH` అనేది `బ్యాలెన్స్ == 32 ETH` కంటే ఎక్కువ బరువుకు దారితీయదు). + +ప్రతి జాబితాలో ఒకే ఒక బ్లాక్ ప్రపోజర్ ఎంపిక చేయబడతాడు. సాధారణ పరిస్థితులలో, ఒకే ఒక బ్లాక్ ప్రొడ్యూసర్ వారికి కేటాయించిన జాబితాలో ఒక బ్లాక్‌ను సృష్టించి విడుదల చేస్తాడు. ఒకే జాబితా కోసం రెండు బ్లాక్‌లను సృష్టించడం ఒక స్లాష్ చేయదగిన నేరం, దీనిని తరచుగా "ఈక్వివోకేషన్" అని పిలుస్తారు. + +## బ్లాక్ ఎలా సృష్టించబడుతుంది? {#how-is-a-block-created} + +బ్లాక్ ప్రపోజర్ వారి స్వంత స్థానికంగా నడిచే ఫోర్క్ ఎంపిక అల్గోరిథం యొక్క వీక్షణ ప్రకారం, చైన్ యొక్క అత్యంత ఇటీవలి హెడ్ పైన నిర్మించబడే ఒక సంతకం చేసిన బీకాన్ బ్లాక్‌ను ప్రసారం చేయాలని ఆశిస్తారు. ఫోర్క్ ఎంపిక అల్గోరిథం మునుపటి జాబితా నుండి మిగిలి ఉన్న ఏవైనా క్యూలో ఉన్న అటెస్టేషన్లను వర్తింపజేస్తుంది, ఆపై దాని చరిత్రలో అత్యధికంగా పేరుకుపోయిన అటెస్టేషన్ల బరువు ఉన్న బ్లాక్‌ను కనుగొంటుంది. ఆ బ్లాక్ ప్రపోజర్ సృష్టించిన కొత్త బ్లాక్‌కు పేరెంట్. + +బ్లాక్ ప్రపోజర్ తన స్వంత స్థానిక డేటాబేస్ మరియు చైన్ వీక్షణ నుండి డేటాను సేకరించడం ద్వారా ఒక బ్లాక్‌ను సృష్టిస్తాడు. బ్లాక్ యొక్క కంటెంట్లు కింది స్నిప్పెట్‌లో చూపబడ్డాయి: + +```rust +class BeaconBlockBody(Container): + randao_reveal: BLSSignature + eth1_data: Eth1Data + graffiti: Bytes32 + proposer_slashings: List[ProposerSlashing, MAX_PROPOSER_SLASHINGS] + attester_slashings: List[AttesterSlashing, MAX_ATTESTER_SLASHINGS] + attestations: List[Attestation, MAX_ATTESTATIONS] + deposits: List[Deposit, MAX_DEPOSITS] + voluntary_exits: List[SignedVoluntaryExit, MAX_VOLUNTARY_EXITS] + sync_aggregate: SyncAggregate + execution_payload: ExecutionPayload +``` + +`randao_reveal` ఫీల్డ్ ధృవీకరించదగిన యాదృచ్ఛిక విలువను తీసుకుంటుంది, దీనిని బ్లాక్ ప్రపోజర్ ప్రస్తుత యుగం సంఖ్యపై సంతకం చేయడం ద్వారా సృష్టిస్తాడు. `eth1_data` అనేది డిపాజిట్ కాంట్రాక్ట్‌పై బ్లాక్ ప్రపోజర్ యొక్క వీక్షణ కోసం ఒక ఓటు, ఇందులో డిపాజిట్ మెర్కిల్ ట్రై యొక్క రూట్ మరియు కొత్త డిపాజిట్‌లను ధృవీకరించడానికి వీలు కల్పించే మొత్తం డిపాజిట్‌ల సంఖ్య ఉంటాయి. `graffiti` అనేది ఒక ఐచ్ఛిక ఫీల్డ్, దీనిని బ్లాక్‌కు ఒక సందేశాన్ని జోడించడానికి ఉపయోగించవచ్చు. `proposer_slashings` మరియు `attester_slashings` అనేవి, చైన్‌పై ప్రపోజర్ యొక్క వీక్షణ ప్రకారం, కొంతమంది వాలిడేటర్లు స్లాష్ చేయదగిన నేరాలకు పాల్పడ్డారని నిరూపణను కలిగి ఉండే ఫీల్డ్‌లు. `deposits` అనేది బ్లాక్ ప్రపోజర్‌కు తెలిసిన కొత్త వాలిడేటర్ డిపాజిట్ల జాబితా, మరియు `voluntary_exits` అనేది ఏకాభిప్రాయం లేయర్ గాసిప్ నెట్‌వర్క్‌లో బ్లాక్ ప్రపోజర్ విన్న, నిష్క్రమించాలనుకుంటున్న వాలిడేటర్ల జాబితా. `sync_aggregate` అనేది ఏ వాలిడేటర్లు గతంలో ఒక సింక్ కమిటీకి (లైట్ క్లయింట్ డేటాను అందించే వాలిడేటర్ల ఉపసమితి) కేటాయించబడ్డారో మరియు డేటాపై సంతకం చేయడంలో పాల్గొన్నారో చూపే ఒక వెక్టర్. + +`execution_payload` ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయం క్లయింట్ల మధ్య లావాదేవీల గురించి సమాచారాన్ని పంపడానికి వీలు కల్పిస్తుంది. `execution_payload` అనేది బీకాన్ బ్లాక్ లోపల నెస్ట్ చేయబడిన ఎగ్జిక్యూషన్ డేటా యొక్క బ్లాక్. `execution_payload` లోపల ఉన్న ఫీల్డ్‌లు ఇతీరియము యెల్లో పేపర్‌లో వివరించిన బ్లాక్ నిర్మాణాన్ని ప్రతిబింబిస్తాయి, అయితే ఒమ్మర్లు లేవు మరియు `difficulty` స్థానంలో `prev_randao` ఉంటుంది. ఎగ్జిక్యూషన్ క్లయింట్‌కు దాని స్వంత గాసిప్ నెట్‌వర్క్‌లో విన్న లావాదేవీల స్థానిక పూల్‌కు యాక్సెస్ ఉంటుంది. పోస్ట్-స్టేట్ అని పిలువబడే నవీకరించబడిన స్టేట్ ట్రైని ఉత్పత్తి చేయడానికి ఈ లావాదేవీలు స్థానికంగా అమలు చేయబడతాయి. లావాదేవీలు `transactions` అని పిలువబడే జాబితాగా `execution_payload`లో చేర్చబడతాయి మరియు పోస్ట్-స్టేట్ `state-root` ఫీల్డ్‌లో అందించబడుతుంది. + +ఈ డేటా అంతా ఒక బీకాన్ బ్లాక్‌లో సేకరించబడి, సంతకం చేయబడి, బ్లాక్ ప్రపోజర్ యొక్క పీర్లకు ప్రసారం చేయబడుతుంది, వారు దానిని వారి పీర్లకు ప్రచారం చేస్తారు, మొదలైనవి. + +[బ్లాక్‌ల అనాటమీ](/developers/docs/blocks) గురించి మరింత చదవండి. + +## బ్లాక్‌కు ఏమి జరుగుతుంది? {#what-happens-to-blocks} + +బ్లాక్ బ్లాక్ ప్రపోజర్ యొక్క స్థానిక డేటాబేస్‌కు జోడించబడుతుంది మరియు ఏకాభిప్రాయం లేయర్ గాసిప్ నెట్‌వర్క్ ద్వారా పీర్లకు ప్రసారం చేయబడుతుంది. ఒక వాలిడేటర్ బ్లాక్‌ను స్వీకరించినప్పుడు, అది దానిలోని డేటాను ధృవీకరిస్తుంది, ఇందులో బ్లాక్‌కు సరైన పేరెంట్ ఉందని, సరైన జాబితాకు అనుగుణంగా ఉందని, ప్రపోజర్ ఇండెక్స్ ఊహించినదేనని, RANDAO రివీల్ చెల్లుబాటు అవుతుందని మరియు ప్రపోజర్ స్లాష్ చేయబడలేదని తనిఖీ చేయడం కూడా ఉంటుంది. `execution_payload` అన్‌బండిల్ చేయబడుతుంది, మరియు వాలిడేటర్ యొక్క ఎగ్జిక్యూషన్ క్లయింట్ ప్రతిపాదిత స్థితి మార్పును తనిఖీ చేయడానికి జాబితాలోని లావాదేవీలను తిరిగి అమలు చేస్తుంది. బ్లాక్ ఈ తనిఖీలన్నింటినీ పాస్ అయితే, ప్రతి వాలిడేటర్ ఆ బ్లాక్‌ను దాని స్వంత కానానికల్ చైన్‌కు జోడిస్తుంది. ఈ ప్రక్రియ తదుపరి జాబితాలో మళ్లీ మొదలవుతుంది. + +## బ్లాక్ బహుమతులు {#block-rewards} + +బ్లాక్ ప్రపోజర్ వారి పనికి చెల్లింపును పొందుతాడు. యాక్టివ్ వాలిడేటర్ల సంఖ్య మరియు వారి ప్రభావవంతమైన బ్యాలెన్సుల ఫంక్షన్‌గా లెక్కించబడే ఒక `base_reward` ఉంటుంది. బ్లాక్‌లో చేర్చబడిన ప్రతి చెల్లుబాటు అయ్యే అటెస్టేషన్ కోసం బ్లాక్ ప్రపోజర్ అప్పుడు `base_reward`లో కొంత భాగాన్ని పొందుతాడు; ఎంత ఎక్కువ మంది వాలిడేటర్లు బ్లాక్‌కు అటెస్ట్ చేస్తే, బ్లాక్ ప్రపోజర్ యొక్క బహుమతి అంత ఎక్కువగా ఉంటుంది. స్లాష్ చేయబడాల్సిన వాలిడేటర్లను రిపోర్ట్ చేసినందుకు కూడా ఒక బహుమతి ఉంది, ఇది ప్రతి స్లాష్ చేయబడిన వాలిడేటర్‌కు `1/512 * ప్రభావవంతమైన బ్యాలెన్స్‌`కు సమానంగా ఉంటుంది. + +[బహుమతులు మరియు జరిమానాలపై మరింత](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties) + +## మరింత సమాచారం {#further-reading} + +- [బ్లాక్‌లకు పరిచయం](/developers/docs/blocks/) +- [ప్రూఫ్-ఆఫ్-స్టేక్‌కు పరిచయం](/developers/docs/consensus-mechanisms/pos/) +- [ఇతీరియము ఏకాభిప్రాయం స్పెక్స్](https://github.com/ethereum/consensus-specs) +- [గాస్పర్‌కు పరిచయం](/developers/docs/consensus-mechanisms/pos/gasper/) +- [ఇతీరియమును అప్‌గ్రేడ్ చేయడం](https://eth2book.info/) diff --git a/public/content/translations/te/developers/docs/consensus-mechanisms/pos/faqs/index.md b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/faqs/index.md new file mode 100644 index 00000000000..cf8bc10030c --- /dev/null +++ b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/faqs/index.md @@ -0,0 +1,172 @@ +--- +title: "తరచుగా అడిగే ప్రశ్నలు" +description: "ప్రూఫ్-ఆఫ్-స్టేక్ ఇతీరియముపై తరచుగా అడిగే ప్రశ్నలు." +lang: te +--- + +## ప్రూఫ్-ఆఫ్-స్టేక్ అంటే ఏమిటి {#what-is-proof-of-stake} + +ప్రూఫ్-ఆఫ్-స్టేక్ అనేది ఒక రకమైన అల్గారిథం, ఇది అవినీతిగా ప్రవర్తించే దాడి చేసేవారు విలువైన ఆస్తులను కోల్పోయేలా చేయడం ద్వారా బ్లాక్‌చైన్‌లకు భద్రతను అందిస్తుంది. ప్రూఫ్-ఆఫ్-స్టేక్ సిస్టమ్‌లు కొన్ని ధృవీకరణకర్తలను ఒక ఆస్తిని అందుబాటులో ఉంచాలని కోరుతాయి, ధృవీకరణకర్త నిరూపితంగా నిజాయితీ లేని ప్రవర్తనలో నిమగ్నమైతే దానిని నాశనం చేయవచ్చు. ఇతీరియము బ్లాక్‌చైన్‌ను భద్రపరచడానికి ప్రూఫ్-ఆఫ్-స్టేక్ మెకానిజంను ఉపయోగిస్తుంది. + +## ప్రూఫ్-ఆఫ్-వర్క్‌తో ప్రూఫ్-ఆఫ్-స్టేక్ ఎలా పోలుస్తుంది? {#comparison-to-proof-of-work} + +ప్రూఫ్-ఆఫ్-వర్క్ మరియు ప్రూఫ్-ఆఫ్-స్టేక్ రెండూ హానికరమైన నటులను నెట్‌వర్క్‌ను స్పామ్ చేయడం లేదా మోసం చేయడం నుండి ఆర్థికంగా నిరుత్సాహపరిచే యంత్రాంగాలు. రెండు సందర్భాల్లోనూ, ఏకాభిప్రాయంలో చురుకుగా పాల్గొనే నోడ్‌లు కొంత ఆస్తిని "నెట్‌వర్క్‌లో" ఉంచుతాయి, వారు తప్పుగా ప్రవర్తిస్తే దానిని కోల్పోతారు. + +ప్రూఫ్-ఆఫ్-వర్క్‌లో, ఈ ఆస్తి శక్తి. మైనర్ అని పిలువబడే నోడ్, ఏ ఇతర నోడ్ కంటే వేగంగా విలువను గణించే లక్ష్యంతో ఒక అల్గారిథమ్‌ను నడుపుతుంది. అతి వేగవంతమైన నోడ్‌కు చైన్‌కు ఒక బ్లాక్‌ను ప్రతిపాదించే హక్కు ఉంటుంది. చైన్ చరిత్రను మార్చడానికి లేదా బ్లాక్ ప్రతిపాదనపై ఆధిపత్యం చెలాయించడానికి, ఒక మైనర్ చాలా ఎక్కువ కంప్యూటింగ్ శక్తిని కలిగి ఉండాలి, అప్పుడే వారు ఎల్లప్పుడూ రేసులో గెలుస్తారు. ఇది అమలు చేయడానికి చాలా ఖరీదైనది మరియు కష్టమైనది, ఇది చైన్‌ను దాడుల నుండి రక్షిస్తుంది. ప్రూఫ్-ఆఫ్-వర్క్ ఉపయోగించి "మైన్" చేయడానికి అవసరమైన శక్తి అనేది మైనర్లు చెల్లించే ఒక నిజ-ప్రపంచ ఆస్తి. + +ప్రూఫ్-ఆఫ్-స్టేక్ అనేది ధృవీకరణకర్తలు అని పిలవబడే నోడ్‌లను, ఒక క్రిప్టో ఆస్తిని ఒక స్మార్ట్ కాంట్రాక్ట్‌కు స్పష్టంగా సమర్పించవలసిందిగా కోరుతుంది. ఒక ధృవీకరణకర్త తప్పుగా ప్రవర్తిస్తే, ఈ క్రిప్టోను నాశనం చేయవచ్చు, ఎందుకంటే వారు తమ ఆస్తులను శక్తి వ్యయం ద్వారా పరోక్షంగా కాకుండా నేరుగా చైన్‌లో "స్టేకింగ్" చేస్తున్నారు. + +ప్రూఫ్-ఆఫ్-వర్క్ చాలా ఎక్కువ శక్తి-ఆకలితో ఉంటుంది, ఎందుకంటే మైనింగ్ ప్రక్రియలో విద్యుత్ కాలిపోతుంది. మరోవైపు, ప్రూఫ్-ఆఫ్-స్టేక్‌కు చాలా తక్కువ మొత్తంలో శక్తి మాత్రమే అవసరం - ఇతీరియము ధృవీకరణకర్తలు రాస్ప్‌బెర్రీ పై వంటి తక్కువ-శక్తి పరికరంలో కూడా నడపగలరు. ఇతీరియము యొక్క ప్రూఫ్-ఆఫ్-స్టేక్ మెకానిజం ప్రూఫ్-ఆఫ్-వర్క్ కంటే సురక్షితమైనదిగా భావించబడుతుంది, ఎందుకంటే దాడి చేయడానికి అయ్యే ఖర్చు ఎక్కువ, మరియు దాడి చేసేవారికి పరిణామాలు మరింత తీవ్రంగా ఉంటాయి. + +ప్రూఫ్-ఆఫ్-వర్క్ వర్సెస్ ప్రూఫ్-ఆఫ్-స్టేక్ అనేది ఒక వివాదాస్పద అంశం. [వైటాలిక్ బుటెరిన్ బ్లాగ్](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-are-the-benefits-of-proof-of-stake-as-opposed-to-proof-of-work) మరియు జస్టిన్ డ్రేక్, లిన్ ఆల్డెన్ మధ్య జరిగిన చర్చ వాదనల యొక్క మంచి సారాంశాన్ని అందిస్తాయి. + + + +## ప్రూఫ్-ఆఫ్-స్టేక్ శక్తి సామర్థ్యమా? {#is-pos-energy-efficient} + +అవును. ప్రూఫ్-ఆఫ్-స్టేక్ నెట్‌వర్క్‌లోని నోడ్‌లు చాలా తక్కువ శక్తిని ఉపయోగిస్తాయి. ఒక థర్డ్-పార్టీ అధ్యయనం ప్రకారం, మొత్తం ప్రూఫ్-ఆఫ్-స్టేక్ ఇతీరియము నెట్‌వర్క్ సంవత్సరానికి సుమారు 0.0026 TWh వినియోగిస్తుంది - ఇది ఒక్క USలోనే గేమింగ్ కంటే సుమారు 13,000 రెట్లు తక్కువ. + +[ఇతీరియము శక్తి వినియోగంపై మరింత సమాచారం](/energy-consumption/). + +## ప్రూఫ్-ఆఫ్-స్టేక్ సురక్షితమేనా? {#is-pos-secure} + +ఇతీరియము యొక్క ప్రూఫ్-ఆఫ్-స్టేక్ చాలా సురక్షితమైనది. ఈ యంత్రాంగాన్ని ప్రత్యక్ష ప్రసారం చేయడానికి ముందు ఎనిమిది సంవత్సరాలకు పైగా పరిశోధన, అభివృద్ధి మరియు కఠినంగా పరీక్షించారు. భద్రతా హామీలు ప్రూఫ్-ఆఫ్-వర్క్ బ్లాక్‌చైన్‌ల నుండి భిన్నంగా ఉంటాయి. ప్రూఫ్-ఆఫ్-స్టేక్‌లో, హానికరమైన ధృవీకరణకర్తలను చురుకుగా శిక్షించవచ్చు ("స్లాష్" చేయవచ్చు) మరియు ధృవీకరణకర్తల సెట్ నుండి తొలగించవచ్చు, దీని వలన గణనీయమైన మొత్తంలో ETH ఖర్చవుతుంది. ప్రూఫ్-ఆఫ్-వర్క్ కింద, దాడి చేసే వ్యక్తికి తగినంత హాష్ పవర్ ఉన్నంత వరకు వారి దాడిని పునరావృతం చేయవచ్చు. ప్రూఫ్-ఆఫ్-వర్క్ కింద కంటే ప్రూఫ్-ఆఫ్-స్టేక్ ఇతీరియముపై సమానమైన దాడులు చేయడం కూడా చాలా ఖరీదైనది. చైన్ యొక్క సజీవత్వాన్ని ప్రభావితం చేయడానికి, నెట్‌వర్క్‌లో మొత్తం స్టేక్ చేయబడిన ఈథర్‌లో కనీసం 33% అవసరం (విజయం యొక్క అత్యంత తక్కువ సంభావ్యతతో చాలా అధునాతన దాడుల సందర్భాలలో తప్ప). భవిష్యత్ బ్లాక్‌ల కంటెంట్‌లను నియంత్రించడానికి, మొత్తం స్టేక్ చేయబడిన ETHలో కనీసం 51% అవసరం, మరియు చరిత్రను తిరిగి వ్రాయడానికి, మొత్తం స్టేక్‌లో 66% కంటే ఎక్కువ అవసరం. 33% లేదా 51% దాడి దృశ్యాలలో ఇతీరియము ప్రోటోకాల్ ఈ ఆస్తులను నాశనం చేస్తుంది మరియు 66% దాడి దృశ్యంలో సామాజిక ఏకాభిప్రాయం ద్వారా నాశనం చేస్తుంది. + +- [దాడి చేసేవారి నుండి ఇతీరియము ప్రూఫ్-ఆఫ్-స్టేక్‌ను రక్షించడంపై మరింత సమాచారం](/developers/docs/consensus-mechanisms/pos/attack-and-defense) +- [ప్రూఫ్-ఆఫ్-స్టేక్ రూపకల్పనపై మరింత సమాచారం](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51) + +## ప్రూఫ్-ఆఫ్-స్టేక్ ఇతీరియమును చౌకగా చేస్తుందా? {#does-pos-make-ethereum-cheaper} + +లేదు. ఒక లావాదేవీని పంపడానికి అయ్యే ఖర్చు (గ్యాస్ ఫీజు) నెట్‌వర్క్ డిమాండ్ పెరిగేకొద్దీ పెరిగే డైనమిక్ ఫీజు మార్కెట్ ద్వారా నిర్ణయించబడుతుంది. ఏకాభిప్రాయ యంత్రాంగం దీనిని నేరుగా ప్రభావితం చేయదు. + +[గ్యాస్ గురించి మరింత](/developers/docs/gas). + +## నోడ్స్, క్లయింట్లు మరియు ధృవీకరణకర్తలు అంటే ఏమిటి? {#what-are-nodes-clients-and-validators} + +నోడ్స్ అంటే ఇతీరియము నెట్‌వర్క్‌కు కనెక్ట్ చేయబడిన కంప్యూటర్లు. క్లయింట్లు అనేవి వారు నడిపే సాఫ్ట్‌వేర్, ఇది కంప్యూటర్‌ను నోడ్‌గా మారుస్తుంది. రెండు రకాల క్లయింట్లు ఉన్నాయి: ఎగ్జిక్యూషన్ క్లయింట్లు మరియు ఏకాభిప్రాయం క్లయింట్లు. ఒక నోడ్‌ను సృష్టించడానికి రెండూ అవసరం. ధృవీకరణకర్త అనేది ఏకాభిప్రాయం క్లయింట్‌కు ఒక ఐచ్ఛిక యాడ్-ఆన్, ఇది నోడ్‌ను ప్రూఫ్-ఆఫ్-స్టేక్ ఏకాభిప్రాయంలో పాల్గొనడానికి వీలు కల్పిస్తుంది. దీనర్థం, ఎంపిక చేసినప్పుడు బ్లాక్‌లను సృష్టించడం మరియు ప్రతిపాదించడం మరియు వారు నెట్‌వర్క్‌లో విన్న బ్లాక్‌లకు ధృవీకరించడం. ధృవీకరణకర్తను నడపడానికి, నోడ్ ఆపరేటర్ తప్పనిసరిగా 32 ETHను డిపాజిట్ కాంట్రాక్ట్‌లో డిపాజిట్ చేయాలి. + +- [నోడ్స్ మరియు క్లయింట్ల గురించి మరింత](/developers/docs/nodes-and-clients) +- [స్టేకింగ్ గురించి మరింత](/staking) + +## ప్రూఫ్-ఆఫ్-స్టేక్ ఒక కొత్త ఆలోచనా? {#is-pos-new} + +లేదు. 2011లో BitcoinTalkలో ఒక వినియోగదారుడు బిట్‌కాయిన్‌కు అప్‌గ్రేడ్‌గా [ప్రూఫ్-ఆఫ్-స్టేక్ ప్రాథమిక ఆలోచనను ప్రతిపాదించారు](https://bitcointalk.org/index.php?topic=27787.0). ఇది ఇతీరియము మెయిన్‌నెట్‌లో అమలు చేయడానికి సిద్ధమయ్యే ముందు పదకొండు సంవత్సరాలు పట్టింది. కొన్ని ఇతర చైన్‌లు ఇతీరియము కంటే ముందుగా ప్రూఫ్-ఆఫ్-స్టేక్‌ను అమలు చేశాయి, కానీ ఇతీరియము యొక్క నిర్దిష్ట యంత్రాంగాన్ని (గ్యాస్పర్ అని పిలుస్తారు) కాదు. + +## ఇతీరియము ప్రూఫ్-ఆఫ్-స్టేక్‌లో ప్రత్యేకత ఏమిటి? {#why-is-ethereum-pos-special} + +ఇతీరియము యొక్క ప్రూఫ్-ఆఫ్-స్టేక్ యంత్రాంగం దాని రూపకల్పనలో ప్రత్యేకమైనది. ఇది రూపకల్పన చేసి, అమలు చేసిన మొదటి ప్రూఫ్-ఆఫ్-స్టేక్ యంత్రాంగం కాదు, కానీ ఇది అత్యంత దృఢమైనది. ఈ ప్రూఫ్-ఆఫ్-స్టేక్ యంత్రాంగాన్ని "కాస్పర్" అని పిలుస్తారు. బ్లాక్‌లను ప్రతిపాదించడానికి ధృవీకరణకర్తలను ఎలా ఎంపిక చేస్తారు, అటెస్టేషన్‌లు ఎలా, ఎప్పుడు చేయబడతాయి, అటెస్టేషన్‌లు ఎలా లెక్కించబడతాయి, ధృవీకరణకర్తలకు ఇచ్చే బహుమతులు మరియు జరిమానాలు, స్లాషింగ్ షరతులు, నిష్క్రియాత్మక లీక్ వంటి ఫెయిల్ సేఫ్ యంత్రాంగాలు మరియు "ఫైనాలిటీ" కోసం షరతులను కాస్పర్ నిర్వచిస్తుంది. ఫైనాలిటీ అనేది ఒక బ్లాక్ కానానికల్ చైన్‌లో శాశ్వత భాగంగా పరిగణించబడటానికి నెట్‌వర్క్‌లో మొత్తం స్టేక్ చేయబడిన ETHలో కనీసం 66% మంది ఓటు వేయాలి అనే షరతు. పరిశోధకులు కాస్పర్‌ను ప్రత్యేకంగా ఇతీరియము కోసం అభివృద్ధి చేశారు, మరియు ఇతీరియము దానిని అమలు చేసిన మొదటి మరియు ఏకైక బ్లాక్‌చైన్. + +కాస్పర్‌తో పాటు, ఇతీరియము యొక్క ప్రూఫ్-ఆఫ్-స్టేక్ LMD-GHOST అనే ఫోర్క్ ఛాయిస్ అల్గారిథమ్‌ను ఉపయోగిస్తుంది. ఒకే స్లాట్ కోసం రెండు బ్లాక్‌లు ఉన్న పరిస్థితి తలెత్తినప్పుడు ఇది అవసరం. ఇది బ్లాక్‌చైన్ యొక్క రెండు ఫోర్క్‌లను సృష్టిస్తుంది. LMD-GHOST అత్యధిక అటెస్టేషన్ల "బరువు" ఉన్నదాన్ని ఎంచుకుంటుంది. బరువు అనేది ధృవీకరణకర్తల ప్రభావవంతమైన బ్యాలెన్స్ ద్వారా వెయిట్ చేయబడిన అటెస్టేషన్ల సంఖ్య. LMD-GHOST ఇతీరియముకు ప్రత్యేకమైనది. + +కాస్పర్ మరియు LMD_GHOST కలయికను గ్యాస్పర్ అని పిలుస్తారు. + +[గ్యాస్పర్ గురించి మరింత](/developers/docs/consensus-mechanisms/pos/gasper/) + +## స్లాషింగ్ అంటే ఏమిటి? {#what-is-slashing} + +స్లాషింగ్ అనేది ధృవీకరణకర్త యొక్క స్టేక్‌లో కొంత భాగాన్ని నాశనం చేయడం మరియు నెట్‌వర్క్ నుండి ధృవీకరణకర్తను తొలగించడం కోసం ఇవ్వబడిన పదం. ఒక స్లాషింగ్‌లో కోల్పోయిన ETH మొత్తం స్లాష్ చేయబడుతున్న ధృవీకరణకర్తల సంఖ్యతో స్కేల్ అవుతుంది - దీని అర్థం కుమ్మక్కైన ధృవీకరణకర్తలు వ్యక్తుల కంటే తీవ్రంగా శిక్షించబడతారు. + +[స్లాషింగ్ గురించి మరింత](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties#slashing) + +## ధృవీకరణకర్తలకు 32 ETH ఎందుకు అవసరం? {#why-32-eth} + +ధృవీకరణకర్తలు తప్పుగా ప్రవర్తిస్తే కోల్పోవడానికి ఏదైనా ఉండటానికి ETH స్టేక్ చేయాలి. వారు ప్రత్యేకంగా 32 ETH స్టేక్ చేయడానికి కారణం, సాధారణ హార్డ్‌వేర్‌పై నోడ్‌లను నడపడానికి వీలు కల్పించడం. ఒక ధృవీకరణకర్తకు కనీస ETH తక్కువగా ఉంటే, అప్పుడు ధృవీకరణకర్తల సంఖ్య మరియు అందువల్ల ప్రతి స్లాట్‌లో ప్రాసెస్ చేయవలసిన సందేశాల సంఖ్య పెరుగుతుంది, అంటే నోడ్‌ను నడపడానికి మరింత శక్తివంతమైన హార్డ్‌వేర్ అవసరం. + +## ధృవీకరణకర్తలు ఎలా ఎంపిక చేయబడతారు? {#how-are-validators-selected} + +ప్రతి స్లాట్‌లో ఒక బ్లాక్‌ను ప్రతిపాదించడానికి RANDAO అని పిలువబడే ఒక అల్గారిథమ్‌ను ఉపయోగించి ఒకే ధృవీకరణకర్త సూడో-రాండమ్‌గా ఎంపిక చేయబడుతుంది, ఇది బ్లాక్ ప్రపోజర్ నుండి ఒక హాష్‌ను ప్రతి బ్లాక్‌కు అప్‌డేట్ అయ్యే సీడ్‌తో మిక్స్ చేస్తుంది. ఈ విలువ మొత్తం ధృవీకరణకర్తల సెట్ నుండి ఒక నిర్దిష్ట ధృవీకరణకర్తను ఎంచుకోవడానికి ఉపయోగించబడుతుంది. ధృవీకరణకర్త ఎంపిక రెండు ఎపోక్‌ల ముందుగానే నిర్ణయించబడుతుంది. + +[ధృవీకరణకర్త ఎంపిక గురించి మరింత](/developers/docs/consensus-mechanisms/pos/block-proposal) + +## స్టేక్ గ్రైండింగ్ అంటే ఏమిటి? {#what-is-stake-grinding} + +స్టేక్ గ్రైండింగ్ అనేది ప్రూఫ్-ఆఫ్-స్టేక్ నెట్‌వర్క్‌లపై ఒక రకమైన దాడి, ఇక్కడ దాడి చేసేవాడు ధృవీకరణకర్త ఎంపిక అల్గారిథమ్‌ను వారి స్వంత ధృవీకరణకర్తలకు అనుకూలంగా ప్రభావితం చేయడానికి ప్రయత్నిస్తాడు. RANDAOపై స్టేక్ గ్రైండింగ్ దాడులకు మొత్తం స్టేక్ చేయబడిన ETHలో సగం అవసరం. + +[స్టేక్ గ్రైండింగ్ గురించి మరింత](https://eth2book.info/altair/part2/building_blocks/randomness/#randao-biasability) + +## సామాజిక స్లాషింగ్ అంటే ఏమిటి? {#what-is-social-slashing} + +సామాజిక స్లాషింగ్ అనేది ఒక దాడికి ప్రతిస్పందనగా బ్లాక్‌చైన్ యొక్క ఫోర్క్‌ను సమన్వయం చేసే సంఘం యొక్క సామర్థ్యం. ఇది నిజాయితీ లేని చైన్‌ను ఫైనలైజ్ చేసే దాడి నుండి కోలుకోవడానికి సంఘానికి వీలు కల్పిస్తుంది. సామాజిక స్లాషింగ్‌ను సెన్సార్‌షిప్ దాడులకు వ్యతిరేకంగా కూడా ఉపయోగించవచ్చు. + +- [సామాజిక స్లాషింగ్ గురించి మరింత](https://ercwl.medium.com/the-case-for-social-slashing-59277ff4d9c7) +- [సామాజిక స్లాషింగ్‌పై వైటాలిక్ బుటెరిన్](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-is-proof-of-stake) + +## నేను స్లాష్ చేయబడతానా? {#will-i-get-slashed} + +ఒక ధృవీకరణకర్తగా, మీరు ఉద్దేశపూర్వకంగా హానికరమైన ప్రవర్తనలో నిమగ్నమైతే తప్ప స్లాష్ చేయడం చాలా కష్టం. ధృవీకరణకర్తలు ఒకే స్లాట్ కోసం బహుళ బ్లాక్‌లను ప్రతిపాదించినప్పుడు లేదా వారి అటెస్టేషన్‌లతో తమను తాము విభేదించుకున్నప్పుడు మాత్రమే చాలా నిర్దిష్ట దృశ్యాలలో స్లాషింగ్ అమలు చేయబడుతుంది - ఇవి అనుకోకుండా తలెత్తే అవకాశం చాలా తక్కువ. + +[స్లాషింగ్ షరతుల గురించి మరింత](https://eth2book.info/altair/part2/incentives/slashing) + +## నథింగ్-ఎట్-స్టేక్ సమస్య అంటే ఏమిటి? {#what-is-nothing-at-stake-problem} + +నథింగ్-ఎట్-స్టేక్ సమస్య అనేది కొన్ని ప్రూఫ్-ఆఫ్-స్టేక్ యంత్రాంగాలతో ఒక సంభావిత సమస్య, ఇక్కడ బహుమతులు మాత్రమే ఉంటాయి మరియు జరిమానాలు ఉండవు. స్టేక్‌లో ఏమీ లేకపోతే, ఒక ఆచరణాత్మక ధృవీకరణకర్త బ్లాక్‌చైన్ యొక్క ఏదైనా, లేదా బహుళ ఫోర్క్‌లకు కూడా సమానంగా సంతోషంగా ధృవీకరిస్తాడు, ఎందుకంటే ఇది వారి బహుమతులను పెంచుతుంది. ఒక కానానికల్ చైన్‌ను నిర్ధారించడానికి ఫైనాలిటీ షరతులు మరియు స్లాషింగ్‌ను ఉపయోగించి ఇతీరియము దీనిని అధిగమిస్తుంది. + +[నథింగ్-ఎట్-స్టేక్ సమస్యపై మరింత](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed) + +## ఫోర్క్ ఎంపిక అల్గారిథం అంటే ఏమిటి? {#what-is-a-fork-choice-algorithm} + +ఫోర్క్ ఎంపిక అల్గారిథం ఏ చైన్ కానానికల్ అయినదో నిర్ణయించే నియమాలను అమలు చేస్తుంది. ఆదర్శవంతమైన పరిస్థితులలో, ఫోర్క్ ఎంపిక నియమం అవసరం లేదు, ఎందుకంటే ప్రతి స్లాట్‌కు ఒక బ్లాక్ ప్రపోజర్ మాత్రమే ఉంటాడు మరియు ఎంచుకోవడానికి ఒక బ్లాక్ మాత్రమే ఉంటుంది. అయితే, అప్పుడప్పుడు, ఒకే స్లాట్ కోసం బహుళ బ్లాక్‌లు లేదా ఆలస్యంగా వచ్చే సమాచారం చైన్ యొక్క హెడ్ దగ్గర బ్లాక్‌లు ఎలా నిర్వహించబడతాయి అనేదానికి బహుళ ఎంపికలకు దారితీస్తుంది. ఈ సందర్భాలలో, అన్ని క్లయింట్లు బ్లాక్‌ల యొక్క సరైన క్రమాన్ని ఎంచుకున్నారని నిర్ధారించుకోవడానికి కొన్ని నియమాలను ఒకే విధంగా అమలు చేయాలి. ఫోర్క్-ఎంపిక అల్గారిథం ఈ నియమాలను ఎన్‌కోడ్ చేస్తుంది. + +ఇతీరియము యొక్క ఫోర్క్-ఎంపిక అల్గారిథంను LMD-GHOST అని పిలుస్తారు. ఇది అత్యధిక బరువు ఉన్న అటెస్టేషన్లతో ఫోర్క్‌ను ఎంచుకుంటుంది, అంటే ఎక్కువ స్టేక్ చేయబడిన ETH ఓటు వేసినది. + +[LMD-GHOST గురించి మరింత](/developers/docs/consensus-mechanisms/pos/gasper/#fork-choice) + +## ప్రూఫ్-ఆఫ్-స్టేక్‌లో ఫైనాలిటీ అంటే ఏమిటి? {#what-is-finality} + +ప్రూఫ్-ఆఫ్-స్టేక్‌లో ఫైనాలిటీ అనేది ఒక బ్లాక్ కానానికల్ చైన్‌లో శాశ్వత భాగమని మరియు దాడి చేసేవాడు మొత్తం స్టేక్ చేయబడిన ఈథర్‌లో 33% బర్న్ చేసే ఏకాభిప్రాయ వైఫల్యం ఉంటే తప్ప దానిని తిరిగి మార్చలేమని హామీ. ఇది "క్రిప్టో-ఎకనామిక్" ఫైనాలిటీ, ఇది ప్రూఫ్-ఆఫ్-వర్క్ బ్లాక్‌చైన్‌లకు సంబంధించిన "సంభావ్యత ఫైనాలిటీ"కి విరుద్ధంగా ఉంటుంది. సంభావ్యత ఫైనాలిటీలో, బ్లాక్‌ల కోసం స్పష్టమైన ఫైనలైజ్డ్/నాన్-ఫైనలైజ్డ్ స్థితులు లేవు - ఒక బ్లాక్ పాతది అయ్యేకొద్దీ చైన్ నుండి తొలగించబడే అవకాశం తక్కువ అవుతుంది మరియు వినియోగదారులు ఒక బ్లాక్ "సురక్షితమైనది" అని తగినంత నమ్మకంతో ఉన్నప్పుడు స్వయంగా నిర్ణయించుకుంటారు. క్రిప్టో-ఎకనామిక్ ఫైనాలిటీతో, చెక్‌పాయింట్ బ్లాక్‌ల జతలకు స్టేక్ చేయబడిన ఈథర్‌లో 66% మంది ఓటు వేయాలి. ఈ షరతు సంతృప్తి చెందితే, ఆ చెక్‌పాయింట్‌ల మధ్య ఉన్న బ్లాక్‌లు స్పష్టంగా "ఫైనలైజ్" చేయబడతాయి. + +[ఫైనాలిటీ గురించి మరింత](/developers/docs/consensus-mechanisms/pos/#finality) + +## "బలహీన ఆత్మీయత" అంటే ఏమిటి? {#what-is-weak-subjectivity} + +బలహీన ఆత్మీయత అనేది ప్రూఫ్-ఆఫ్-స్టేక్ నెట్‌వర్క్‌ల యొక్క ఒక లక్షణం, ఇక్కడ బ్లాక్‌చైన్ యొక్క ప్రస్తుత స్థితిని నిర్ధారించడానికి సామాజిక సమాచారం ఉపయోగించబడుతుంది. కొత్త నోడ్‌లు లేదా చాలా కాలం ఆఫ్‌లైన్‌లో ఉన్న తర్వాత నెట్‌వర్క్‌లో తిరిగి చేరే నోడ్‌లకు ఇటీవలి స్థితిని ఇవ్వవచ్చు, తద్వారా నోడ్ వారు సరైన చైన్‌లో ఉన్నారో లేదో వెంటనే చూడగలదు. ఈ స్థితులను "బలహీన ఆత్మీయత చెక్‌పాయింట్లు" అని పిలుస్తారు మరియు వాటిని ఇతర నోడ్ ఆపరేటర్ల నుండి అవుట్-ఆఫ్-బ్యాండ్, లేదా బ్లాక్ ఎక్స్‌ప్లోరర్‌ల నుండి లేదా అనేక పబ్లిక్ ఎండ్‌పాయింట్ల నుండి పొందవచ్చు. + +[బలహీన ఆత్మీయత గురించి మరింత](/developers/docs/consensus-mechanisms/pos/weak-subjectivity) + +## ప్రూఫ్-ఆఫ్-స్టేక్ సెన్సార్‌షిప్ నిరోధకమా? {#is-pos-censorship-resistant} + +సెన్సార్‌షిప్ నిరోధకతను ప్రస్తుతం నిరూపించడం కష్టం. అయినప్పటికీ, ప్రూఫ్-ఆఫ్-వర్క్ వలె కాకుండా, ప్రూఫ్-ఆఫ్-స్టేక్ సెన్సార్ చేసే ధృవీకరణకర్తలను శిక్షించడానికి స్లాషింగ్‌లను సమన్వయం చేసే ఎంపికను అందిస్తుంది. బ్లాక్ బిల్డర్‌లను బ్లాక్ ప్రపోజర్‌ల నుండి వేరుచేసే మరియు బిల్డర్‌లు ప్రతి బ్లాక్‌లో చేర్చవలసిన లావాదేవీల జాబితాలను అమలు చేసే ప్రోటోకాల్‌కు రాబోయే మార్పులు ఉన్నాయి. ఈ ప్రతిపాదనను ప్రాపర్-బిల్డర్ సెపరేషన్ అని పిలుస్తారు మరియు ఇది ధృవీకరణకర్తలు లావాదేవీలను సెన్సార్ చేయకుండా నిరోధించడానికి సహాయపడుతుంది. + +[ప్రపోజర్-బిల్డర్ సెపరేషన్ గురించి మరింత](https://notes.ethereum.org/@fradamt/H1TsYRfJc#Original-basic-scheme) + +## ఇతీరియము యొక్క ప్రూఫ్-ఆఫ్-స్టేక్ సిస్టమ్‌ను 51% దాడి చేయవచ్చా? {#pos-51-attack} + +అవును. ప్రూఫ్-ఆఫ్-వర్క్ వలె, ప్రూఫ్-ఆఫ్-స్టేక్ 51% దాడులకు గురవుతుంది. దాడి చేసేవాడికి నెట్‌వర్క్ యొక్క హాష్ పవర్‌లో 51% అవసరం కాకుండా, దాడి చేసేవాడికి మొత్తం స్టేక్ చేయబడిన ETHలో 51% అవసరం. మొత్తం స్టేక్‌లో 51% కూడగట్టుకున్న దాడి చేసేవాడు ఫోర్క్-ఎంపిక అల్గారిథమ్‌ను నియంత్రించగలుగుతాడు. ఇది దాడి చేసేవాడికి కొన్ని లావాదేవీలను సెన్సార్ చేయడానికి, షార్ట్-రేంజ్ రీఆర్గ్స్ చేయడానికి మరియు వారి అనుకూలంగా బ్లాక్‌లను తిరిగి ఆర్డర్ చేయడం ద్వారా MEVని సంగ్రహించడానికి వీలు కల్పిస్తుంది. + +[ప్రూఫ్-ఆఫ్-స్టేక్‌పై దాడుల గురించి మరింత](/developers/docs/consensus-mechanisms/pos/attack-and-defense) + +## సామాజిక సమన్వయం అంటే ఏమిటి, మరియు అది ఎందుకు అవసరం? {#what-is-social-coordination} + +సామాజిక సమన్వయం అనేది ఇతీరియము కోసం ఒక చివరి రక్షణ రేఖ, ఇది నిజాయితీ లేని బ్లాక్‌లను ఫైనలైజ్ చేసిన దాడి నుండి నిజాయితీ గల చైన్‌ను పునరుద్ధరించడానికి అనుమతిస్తుంది. ఈ సందర్భంలో, ఇతీరియము సంఘం "అవుట్-ఆఫ్-బ్యాండ్" సమన్వయం చేసుకోవాలి మరియు ఈ ప్రక్రియలో దాడి చేసేవారి ధృవీకరణకర్తలను స్లాష్ చేస్తూ, నిజాయితీ గల మైనారిటీ ఫోర్క్‌ను ఉపయోగించడానికి అంగీకరించాలి. దీనికి యాప్‌లు మరియు ఎక్స్‌ఛేంజీలు కూడా నిజాయితీ గల ఫోర్క్‌ను గుర్తించడం అవసరం. + +[సామాజిక సమన్వయం గురించి మరింత చదవండి](/developers/docs/consensus-mechanisms/pos/attack-and-defense#people-the-last-line-of-defense) + +## ప్రూఫ్-ఆఫ్-స్టేక్‌లో ధనవంతులు మరింత ధనవంతులు అవుతారా? {#do-rich-get-richer} + +ఒకరు ఎంత ఎక్కువ ETH స్టేక్ చేస్తే, అంత ఎక్కువ ధృవీకరణకర్తలను వారు నడపగలరు, మరియు అంత ఎక్కువ బహుమతులను వారు పొందగలరు. బహుమతులు స్టేక్ చేయబడిన ETH మొత్తంతో సరళంగా స్కేల్ అవుతాయి, మరియు ప్రతి ఒక్కరూ అదే శాతం రాబడిని పొందుతారు. ప్రూఫ్-ఆఫ్-స్టేక్ కంటే ప్రూఫ్-ఆఫ్-వర్క్ ధనవంతులను మరింత ధనవంతులను చేస్తుంది, ఎందుకంటే స్కేల్‌లో హార్డ్‌వేర్‌ను కొనుగోలు చేసే ధనిక మైనర్లు ఎకానమీస్ ఆఫ్ స్కేల్ నుండి ప్రయోజనం పొందుతారు, అంటే సంపద మరియు బహుమతి మధ్య సంబంధం సరళంగా ఉండదు. + +## ప్రూఫ్-ఆఫ్-వర్క్ కంటే ప్రూఫ్-ఆఫ్-స్టేక్ ఎక్కువ కేంద్రీకృతమా? {#is-pos-decentralized} + +లేదు, ప్రూఫ్-ఆఫ్-వర్క్ కేంద్రీకరణకు మొగ్గు చూపుతుంది, ఎందుకంటే మైనింగ్ ఖర్చులు పెరిగి వ్యక్తులను, ఆపై చిన్న కంపెనీలను, మరియు అలా కొనసాగుతూ అందరినీ వెలకట్టేస్తాయి. ప్రూఫ్-ఆఫ్-స్టేక్‌తో ప్రస్తుత సమస్య లిక్విడ్ స్టేకింగ్ డెరివేటివ్స్ (LSDs) ప్రభావం. ఇవి కొంత ప్రొవైడర్ ద్వారా స్టేక్ చేయబడిన ETHని సూచించే టోకెన్‌లు, వాస్తవ ETHని అన్‌స్టేక్ చేయకుండా ఎవరైనా సెకండరీ మార్కెట్‌లలో మార్చుకోవచ్చు. LSDలు వినియోగదారులను 32 ETH కంటే తక్కువతో స్టేక్ చేయడానికి అనుమతిస్తాయి, కానీ అవి కొన్ని పెద్ద సంస్థలు ఎక్కువ స్టేక్‌ను నియంత్రించగల కేంద్రీకరణ ప్రమాదాన్ని కూడా సృష్టిస్తాయి. అందుకే ఇతీరియము కోసం [సోలో స్టేకింగ్](/staking/solo) ఉత్తమ ఎంపిక. + +[LSDలలో స్టేక్ కేంద్రీకరణ గురించి మరింత](https://notes.ethereum.org/@djrtwo/risks-of-lsd) + +## నేను ETHని మాత్రమే ఎందుకు స్టేక్ చేయగలను? {#why-can-i-only-stake-eth} + +ETH ఇతీరియము యొక్క స్థానిక కరెన్సీ. ఓట్లను మరియు భద్రతను వెయిట్ చేయడానికి ప్రభావవంతమైన బ్యాలెన్స్‌లను లెక్కించడానికి, అన్ని స్టేక్‌లు ఒకే కరెన్సీలో ఉండటం అవసరం. ETH అనేది స్మార్ట్ కాంట్రాక్ట్ కాకుండా ఇతీరియము యొక్క ప్రాథమిక భాగం. ఇతర కరెన్సీలను చేర్చడం సంక్లిష్టతను గణనీయంగా పెంచుతుంది మరియు స్టేకింగ్ భద్రతను తగ్గిస్తుంది. + +## ఇతీరియము మాత్రమే ప్రూఫ్-ఆఫ్-స్టేక్ బ్లాక్‌చైన్‌నా? {#is-ethereum-the-only-pos-blockchain} + +లేదు, అనేక ప్రూఫ్-ఆఫ్-స్టేక్ బ్లాక్‌చైన్‌లు ఉన్నాయి. ఏదీ ఇతీరియముతో సమానంగా లేదు; ఇతీరియము యొక్క ప్రూఫ్-ఆఫ్-స్టేక్ యంత్రాంగం ప్రత్యేకమైనది. + +## విలీనం (The Merge) అంటే ఏమిటి? {#what-is-the-merge} + +విలీనం (The Merge) అనేది ఇతీరియము దాని ప్రూఫ్-ఆఫ్-వర్క్-ఆధారిత ఏకాభిప్రాయ యంత్రాంగాన్ని ఆపివేసి, దాని ప్రూఫ్-ఆఫ్-స్టేక్-ఆధారిత ఏకాభిప్రాయ యంత్రాంగాన్ని ఆన్ చేసిన క్షణం. విలీనం (The Merge) సెప్టెంబర్ 15, 2022న జరిగింది. + +[విలీనం (The Merge) గురించి మరింత](/roadmap/merge) + +## సజీవత్వం మరియు భద్రత అంటే ఏమిటి? {#what-are-liveness-and-safety} + +సజీవత్వం మరియు భద్రత అనేవి ఒక బ్లాక్‌చైన్ కోసం రెండు ప్రాథమిక భద్రతా ఆందోళనలు. సజీవత్వం అనేది ఫైనలైజింగ్ చైన్ యొక్క లభ్యత. చైన్ ఫైనలైజ్ అవ్వడం ఆగిపోయినా లేదా వినియోగదారులు దానిని సులభంగా యాక్సెస్ చేయలేకపోయినా, అవి సజీవత్వ వైఫల్యాలు. అత్యంత అధిక యాక్సెస్ ఖర్చును కూడా సజీవత్వ వైఫల్యంగా పరిగణించవచ్చు. భద్రత అనేది చైన్‌పై దాడి చేయడం ఎంత కష్టమో సూచిస్తుంది - అనగా, విరుద్ధమైన చెక్‌పాయింట్‌లను ఫైనలైజ్ చేయడం. + +[కాస్పర్ పేపర్‌లో మరింత చదవండి](https://arxiv.org/pdf/1710.09437.pdf) diff --git a/public/content/translations/te/developers/docs/consensus-mechanisms/pos/gasper/index.md b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/gasper/index.md new file mode 100644 index 00000000000..da42ff853f8 --- /dev/null +++ b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/gasper/index.md @@ -0,0 +1,52 @@ +--- +title: "గ్యాస్పర్" +description: "గాస్పర్ ప్రూఫ్-ఆఫ్-స్టేక్ మెకానిజం యొక్క వివరణ." +lang: te +--- + +గాస్పర్ అనేది కాస్పర్ ది ఫ్రెండ్లీ ఫైనాలిటీ గాడ్జెట్ (Casper-FFG) మరియు LMD-GHOST ఫోర్క్ ఎంపిక అల్గోరిథంల కలయిక. ఈ కాంపోనెంట్‌లు కలిసి ప్రూఫ్-ఆఫ్-స్టేక్ Ethereumను సురక్షితం చేసే ఏకాభిప్రాయం మెకానిజంను ఏర్పరుస్తాయి. కాస్పర్ అనేది కొన్ని బ్లాక్‌లను "అంతిమమైనవి"గా అప్‌గ్రేడ్ చేసే మెకానిజం, తద్వారా నెట్‌వర్క్‌లోకి కొత్తగా ప్రవేశించేవారు తాము కానానికల్ చైన్‌ను సింక్ చేస్తున్నామని నమ్మకంగా ఉండగలరు. బ్లాక్‌చెయిన్‌లో ఫోర్క్‌లు ఏర్పడినప్పుడు నోడ్‌లు సరైన దానిని సులభంగా ఎంచుకోగలవని నిర్ధారించడానికి ఫోర్క్ ఎంపిక అల్గోరిథం సేకరించిన ఓట్లను ఉపయోగిస్తుంది. + +**గమనిక** గాస్పర్‌లో చేర్చడం కోసం Casper-FFG యొక్క అసలు నిర్వచనం కొద్దిగా అప్‌డేట్ చేయబడింది. ఈ పేజీలో మేము అప్‌డేట్ చేయబడిన వెర్షన్‌ను పరిగణిస్తాము. + +## అవసరమైనవి + +ఈ మెటీరియల్‌ను అర్థం చేసుకోవడానికి [ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos/) పై పరిచయ పేజీని చదవడం అవసరం. + +## గాస్పర్ పాత్ర {#role-of-gasper} + +గాస్పర్ ఒక ప్రూఫ్-ఆఫ్-స్టేక్ బ్లాక్‌చెయిన్ పైన ఉంటుంది, ఇక్కడ నోడ్‌లు బ్లాక్‌లను ప్రతిపాదించడంలో లేదా ధృవీకరించడంలో సోమరితనం లేదా నిజాయితీ లేనట్లయితే నాశనం చేయగల సెక్యూరిటీ డిపాజిట్‌గా ఈథర్‌ను అందిస్తాయి. వాలిడేటర్‌లు ఎలా రివార్డ్ చేయబడాలి మరియు శిక్షించబడాలి, ఏ బ్లాక్‌లను ఆమోదించాలి మరియు తిరస్కరించాలి, మరియు బ్లాక్‌చెయిన్ యొక్క ఏ ఫోర్క్‌పై నిర్మించాలో నిర్వచించే మెకానిజం గాస్పర్. + +## అంతిమత్వం అంటే ఏమిటి? {#what-is-finality} + +అంతిమత్వం అనేది కొన్ని బ్లాక్‌ల యొక్క ఒక లక్షణం, అంటే తీవ్రమైన ఏకాభిప్రాయం వైఫల్యం మరియు ఒక అటాకర్ మొత్తం స్టేక్ చేసిన ఈథర్‌లో కనీసం 1/3 వంతు నాశనం చేస్తే తప్ప వాటిని తిరిగి మార్చలేరు. అంతిమమైన బ్లాక్‌లను బ్లాక్‌చెయిన్ ఖచ్చితంగా ఉన్న సమాచారంగా భావించవచ్చు. ఒక బ్లాక్ అంతిమంగా మారడానికి రెండు-దశల అప్‌గ్రేడ్ ప్రక్రియ ద్వారా వెళ్ళాలి: + +1. మొత్తం స్టేక్ చేయబడిన ఈథర్‌లో మూడింట రెండు వంతుల మంది ఆ బ్లాక్‌ను కానానికల్ చైన్‌లో చేర్చడానికి అనుకూలంగా ఓటు వేసి ఉండాలి. ఈ షరతు బ్లాక్‌ను "సమర్థించబడినది"గా అప్‌గ్రేడ్ చేస్తుంది. సమర్థించబడిన బ్లాక్‌లు తిరిగి మార్చబడే అవకాశం లేదు, కానీ కొన్ని షరతులలో అవి కావచ్చు. +2. సమర్థించబడిన బ్లాక్ పైన మరొక బ్లాక్ సమర్థించబడినప్పుడు, అది "అంతిమమైనది"గా అప్‌గ్రేడ్ చేయబడుతుంది. ఒక బ్లాక్‌ను అంతిమంగా చేయడం అనేది ఆ బ్లాక్‌ను కానానికల్ చైన్‌లో చేర్చడానికి ఒక నిబద్ధత. ఒక అటాకర్ మిలియన్ల ఈథర్‌ను (బిలియన్ల $USD) నాశనం చేస్తే తప్ప దానిని తిరిగి మార్చలేరు. + +ఈ బ్లాక్ అప్‌గ్రేడ్‌లు ప్రతి స్లాట్‌లో జరగవు. దానికి బదులుగా, కేవలం ఎపోక్-సరిహద్దు బ్లాక్‌లు మాత్రమే సమర్థించబడతాయి మరియు అంతిమంగా చేయబడతాయి. ఈ బ్లాక్‌లను "చెక్‌పాయింట్లు" అని అంటారు. అప్‌గ్రేడింగ్ చెక్‌పాయింట్ల జతలను పరిగణిస్తుంది. తక్కువ ఇటీవలి చెక్‌పాయింట్‌ను అంతిమంగా మరియు ఇటీవలి బ్లాక్‌ను సమర్థించబడినదిగా అప్‌గ్రేడ్ చేయడానికి రెండు వరుస చెక్‌పాయింట్ల మధ్య ఒక "సూపర్ మెజారిటీ లింక్" ఉండాలి (అనగా, చెక్‌పాయింట్ B అనేది చెక్‌పాయింట్ A యొక్క సరైన వారసుడని మొత్తం స్టేక్ చేయబడిన ఈథర్‌లో మూడింట రెండు వంతుల మంది ఓటు వేయడం). + +ఒక బ్లాక్ కానానికల్ అని మూడింట రెండు వంతుల ఒప్పందం అంతిమత్వానికి అవసరం కాబట్టి, ఒక అటాకర్ ఈ క్రిందివి లేకుండా ప్రత్యామ్నాయ అంతిమ చైన్‌ను సృష్టించలేడు: + +1. మొత్తం స్టేక్ చేయబడిన ఈథర్‌లో మూడింట రెండు వంతులను స్వంతం చేసుకోవడం లేదా తారుమారు చేయడం. +2. మొత్తం స్టేక్ చేయబడిన ఈథర్‌లో కనీసం మూడింట ఒక వంతును నాశనం చేయడం. + +ఒక చైన్‌ను అంతిమంగా చేయడానికి స్టేక్ చేయబడిన ఈథర్‌లో మూడింట రెండు వంతులు అవసరం కాబట్టి మొదటి షరతు తలెత్తుతుంది. మొత్తం స్టేక్‌లో మూడింట రెండు వంతులు రెండు ఫోర్క్‌లకు అనుకూలంగా ఓటు వేసినట్లయితే, మూడింట ఒక వంతు రెండింటిపై ఓటు వేసి ఉండాలి కాబట్టి రెండవ షరతు తలెత్తుతుంది. డబుల్-ఓటింగ్ అనేది ఒక స్లాషింగ్ షరతు, ఇది గరిష్టంగా శిక్షించబడుతుంది, మరియు మొత్తం స్టేక్‌లో మూడింట ఒక వంతు నాశనం చేయబడుతుంది. మే 2022 నాటికి, దీనికి ఒక అటాకర్ సుమారు $10 బిలియన్ల విలువైన ఈథర్‌ను బర్న్ చేయాల్సి ఉంటుంది. గాస్పర్‌లో బ్లాక్‌లను సమర్థించే మరియు అంతిమంగా చేసే అల్గోరిథం [కాస్పర్ ది ఫ్రెండ్లీ ఫైనాలిటీ గాడ్జెట్ (Casper-FFG)](https://arxiv.org/pdf/1710.09437.pdf) యొక్క కొద్దిగా సవరించిన రూపం. + +### ప్రోత్సాహకాలు మరియు స్లాషింగ్ {#incentives-and-slashing} + +బ్లాక్‌లను నిజాయితీగా ప్రతిపాదించడం మరియు ధృవీకరించడం కోసం వాలిడేటర్‌లు రివార్డ్ చేయబడతారు. ఈథర్ రివార్డ్ చేయబడుతుంది మరియు వారి స్టేక్‌కు జోడించబడుతుంది. మరోవైపు, హాజరుకాని మరియు పిలిచినప్పుడు చర్య తీసుకోవడంలో విఫలమయ్యే వాలిడేటర్‌లు ఈ రివార్డులను కోల్పోతారు మరియు కొన్నిసార్లు వారి ఇప్పటికే ఉన్న స్టేక్‌లో కొంత భాగాన్ని కోల్పోతారు. అయితే, ఆఫ్‌లైన్‌లో ఉన్నందుకు జరిమానాలు చిన్నవి మరియు చాలా సందర్భాలలో, రివార్డులను కోల్పోయే అవకాశ ఖర్చులకు సమానం. అయితే, కొన్ని వాలిడేటర్ చర్యలు అనుకోకుండా చేయడం చాలా కష్టం మరియు కొన్ని హానికరమైన ఉద్దేశ్యాన్ని సూచిస్తాయి, ఒకే స్లాట్ కోసం బహుళ బ్లాక్‌లను ప్రతిపాదించడం, అదే స్లాట్ కోసం బహుళ బ్లాక్‌లకు అటెస్ట్ చేయడం లేదా మునుపటి చెక్‌పాయింట్ ఓట్లను ఖండించడం వంటివి. ఇవి "స్లాష్ చేయదగిన" ప్రవర్తనలు, ఇవి మరింత కఠినంగా శిక్షించబడతాయి—స్లాషింగ్ ఫలితంగా వాలిడేటర్ యొక్క స్టేక్‌లో కొంత భాగం నాశనం చేయబడుతుంది మరియు వాలిడేటర్‌ల నెట్‌వర్క్ నుండి వాలిడేటర్ తీసివేయబడుతుంది. ఈ ప్రక్రియకు 36 రోజులు పడుతుంది. మొదటి రోజున, 1 ETH వరకు ప్రారంభ జరిమానా ఉంటుంది. అప్పుడు స్లాష్ చేయబడిన వాలిడేటర్ యొక్క ఈథర్ నిష్క్రమణ వ్యవధిలో నెమ్మదిగా తగ్గిపోతుంది, కానీ 18వ రోజున, వారు "కోరిలేషన్ పెనాల్టీ"ని అందుకుంటారు, అదే సమయంలో ఎక్కువ మంది వాలిడేటర్‌లు స్లాష్ చేయబడినప్పుడు ఇది పెద్దదిగా ఉంటుంది. గరిష్ట జరిమానా మొత్తం స్టేక్. ఈ రివార్డులు మరియు జరిమానాలు నిజాయితీగల వాలిడేటర్‌లను ప్రోత్సహించడానికి మరియు నెట్‌వర్క్‌పై దాడులను నిరుత్సాహపరిచేందుకు రూపొందించబడ్డాయి. + +### నిష్క్రియాత్మక లీక్ {#inactivity-leak} + +భద్రతతో పాటు, గాస్పర్ "ప్లాసిబుల్ లైవ్‌నెస్"ను కూడా అందిస్తుంది. మొత్తం స్టేక్ చేయబడిన ఈథర్‌లో మూడింట రెండు వంతులు నిజాయితీగా ఓటింగ్ చేస్తున్నంత కాలం మరియు ప్రోటోకాల్‌ను అనుసరిస్తున్నంత కాలం, చైన్ ఏదైనా ఇతర కార్యాచరణతో (దాడులు, లేటెన్సీ సమస్యలు, లేదా స్లాషింగ్‌లు వంటివి) సంబంధం లేకుండా అంతిమంగా చేయగలదు అనే షరతు ఇది. మరో విధంగా చెప్పాలంటే, చైన్ అంతిమంగా మారకుండా నిరోధించడానికి మొత్తం స్టేక్ చేయబడిన ఈథర్‌లో మూడింట ఒక వంతు ఎలాగో ఒకలా రాజీ పడాలి. గాస్పర్‌లో, లైవ్‌నెస్ వైఫల్యానికి వ్యతిరేకంగా అదనపు రక్షణ రేఖ ఉంది, దీనిని "నిష్క్రియాత్మక లీక్" అని అంటారు. నాలుగు కంటే ఎక్కువ ఎపోక్‌ల కోసం చైన్ అంతిమంగా చేయడంలో విఫలమైనప్పుడు ఈ మెకానిజం సక్రియం అవుతుంది. మెజారిటీ చైన్‌కు చురుకుగా అటెస్ట్ చేయని వాలిడేటర్‌ల స్టేక్, మెజారిటీ మొత్తం స్టేక్‌లో మూడింట రెండు వంతులను తిరిగి పొందే వరకు క్రమంగా తగ్గిపోతుంది, లైవ్‌నెస్ వైఫల్యాలు తాత్కాలికమేనని నిర్ధారిస్తుంది. + +### ఫోర్క్ ఎంపిక {#fork-choice} + +Casper-FFG యొక్క అసలు నిర్వచనంలో ఒక ఫోర్క్ ఎంపిక అల్గోరిథం ఉంది, ఇది ఈ నియమాన్ని విధించింది: `జెనెసిస్ బ్లాక్ నుండి గరిష్ట దూరం`గా ఎత్తు నిర్వచించబడిన చోట `గరిష్ట ఎత్తు ఉన్న సమర్థించబడిన చెక్‌పాయింట్‌ను కలిగి ఉన్న చైన్‌ను అనుసరించండి`. గాస్పర్‌లో, LMD-GHOST అనే మరింత అధునాతన అల్గోరిథంకు అనుకూలంగా అసలు ఫోర్క్ ఎంపిక నియమం నిలిపివేయబడింది. సాధారణ పరిస్థితులలో, ఫోర్క్ ఎంపిక నియమం అనవసరం అని గ్రహించడం ముఖ్యం - ప్రతి స్లాట్‌కు ఒకే బ్లాక్ ప్రపోజర్ ఉంటారు, మరియు నిజాయితీగల వాలిడేటర్‌లు దానికి అటెస్ట్ చేస్తారు. పెద్ద నెట్‌వర్క్ అసమకాలికత సందర్భాలలో లేదా నిజాయితీ లేని బ్లాక్ ప్రపోజర్ అస్పష్టంగా మాట్లాడినప్పుడు మాత్రమే ఫోర్క్ ఎంపిక అల్గోరిథం అవసరం. అయితే, ఆ సందర్భాలు తలెత్తినప్పుడు, ఫోర్క్ ఎంపిక అల్గోరిథం సరైన చైన్‌ను సురక్షితం చేసే కీలకమైన రక్షణ. + +LMD-GHOST అంటే "latest message-driven greedy heaviest observed sub-tree" అని అర్థం. ఇది అత్యధికంగా సేకరించబడిన అటెస్టేషన్‌ల బరువు ఉన్న ఫోర్క్‌ను కానానికల్ ఒకటిగా ఎంచుకునే (గ్రీడీ హెవీయెస్ట్ సబ్‌ట్రీ) మరియు ఒక వాలిడేటర్ నుండి బహుళ సందేశాలు స్వీకరించబడితే, కేవలం తాజాది మాత్రమే పరిగణించబడే (లేటెస్ట్-మెసేజ్ డ్రివెన్) అల్గోరిథంను నిర్వచించడానికి ఒక పరిభాష-భరిత మార్గం. అత్యంత బరువైన బ్లాక్‌ను దాని కానానికల్ చైన్‌కు జోడించే ముందు, ప్రతి వాలిడేటర్ ఈ నియమాన్ని ఉపయోగించి ప్రతి బ్లాక్‌ను అంచనా వేస్తుంది. + +## మరింత చదవడానికి {#further-reading} + +- [గాస్పర్: GHOST మరియు కాస్పర్‌లను కలపడం](https://arxiv.org/pdf/2003.03052.pdf) +- [కాస్పర్ ది ఫ్రెండ్లీ ఫైనాలిటీ గాడ్జెట్](https://arxiv.org/pdf/1710.09437.pdf) diff --git a/public/content/translations/te/developers/docs/consensus-mechanisms/pos/index.md b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/index.md new file mode 100644 index 00000000000..d3be28b4a7e --- /dev/null +++ b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/index.md @@ -0,0 +1,99 @@ +--- +title: "ప్రూఫ్-ఆఫ్-స్టేక్ (PoS)" +description: "ప్రూఫ్-ఆఫ్-స్టేక్ ఏకాభిప్రాయం ప్రోటోకాల్ మరియు Ethereumలో దాని పాత్ర గురించిన వివరణ." +lang: te +--- + +ప్రూఫ్-ఆఫ్-స్టేక్ (PoS) Ethereum యొక్క [ఏకాభిప్రాయం యంత్రాంగానికి](/developers/docs/consensus-mechanisms/) ఆధారం. Ethereum 2022లో దాని ప్రూఫ్-ఆఫ్-స్టేక్ యంత్రాంగాన్ని ప్రారంభించింది, ఎందుకంటే ఇది మునుపటి [ప్రూఫ్-ఆఫ్-వర్క్](/developers/docs/consensus-mechanisms/pow) ఆర్కిటెక్చర్‌తో పోలిస్తే మరింత సురక్షితమైనది, తక్కువ శక్తిని వినియోగించేది మరియు కొత్త స్కేలింగ్ పరిష్కారాలను అమలు చేయడానికి ఉత్తమమైనది. + +## అవసరాలు {#prerequisites} + +ఈ పేజీని మరింత బాగా అర్థం చేసుకోవడానికి, మీరు మొదట [ఏకాభిప్రాయం యంత్రాంగాల](/developers/docs/consensus-mechanisms/) గురించి చదవాలని మేము సిఫార్సు చేస్తున్నాము. + +## ప్రూఫ్-ఆఫ్-స్టేక్ (PoS) అంటే ఏమిటి? {#what-is-pos} + +ధ్రువీకరణకర్తలు నిజాయితీగా వ్యవహరించకపోతే నాశనం చేయగల విలువైనదాన్ని నెట్‌వర్క్‌లో పెట్టారని నిరూపించడానికి ప్రూఫ్-ఆఫ్-స్టేక్ ఒక మార్గం. Ethereum యొక్క ప్రూఫ్-ఆఫ్-స్టేక్‌లో, ధ్రువీకరణకర్తలు ETH రూపంలో మూలధనాన్ని Ethereumలోని ఒక స్మార్ట్ కాంట్రాక్ట్‌లో స్పష్టంగా స్టేక్ చేస్తారు. నెట్‌వర్క్‌లో ప్రచారం చేయబడిన కొత్త బ్లాక్‌లు చెల్లుబాటు అయ్యేలా ఉన్నాయని తనిఖీ చేయడానికి మరియు అప్పుడప్పుడు కొత్త బ్లాక్‌లను సృష్టించి, ప్రచారం చేయడానికి ధ్రువీకరణకర్త బాధ్యత వహిస్తాడు. వారు నెట్‌వర్క్‌ను మోసం చేయడానికి ప్రయత్నిస్తే (ఉదాహరణకు, వారు ఒకటి పంపవలసినప్పుడు బహుళ బ్లాక్‌లను ప్రతిపాదించడం ద్వారా లేదా విరుద్ధమైన ధృవీకరణలను పంపడం ద్వారా), వారి స్టేక్ చేయబడిన ETHలో కొంత లేదా మొత్తం నాశనం చేయబడుతుంది. + +## వాలిడేటర్లు {#validators} + +ఒక ధ్రువీకరణకర్తగా పాల్గొనడానికి, ఒక వినియోగదారుడు డిపాజిట్ కాంట్రాక్ట్‌లో 32 ETH డిపాజిట్ చేయాలి మరియు మూడు వేర్వేరు సాఫ్ట్‌వేర్ భాగాలను అమలు చేయాలి: ఒక ఎగ్జిక్యూషన్ క్లయింట్, ఒక ఏకాభిప్రాయం క్లయింట్ మరియు ఒక ధ్రువీకరణకర్త క్లయింట్. వారి ETHని డిపాజిట్ చేసిన తర్వాత, వినియోగదారుడు ఒక యాక్టివేషన్ క్యూలో చేరతాడు, ఇది నెట్‌వర్క్‌లో చేరే కొత్త ధ్రువీకరణకర్తల రేటును పరిమితం చేస్తుంది. యాక్టివేట్ అయిన తర్వాత, ధ్రువీకరణకర్తలు Ethereum నెట్‌వర్క్‌లోని పీర్స్ నుండి కొత్త బ్లాక్‌లను స్వీకరిస్తారు. Ethereum యొక్క స్థితికి ప్రతిపాదిత మార్పులు చెల్లుబాటు అవుతాయో లేదో తనిఖీ చేయడానికి బ్లాక్‌లో పంపిణీ చేయబడిన లావాదేవీలు మళ్లీ అమలు చేయబడతాయి మరియు బ్లాక్ సంతకం తనిఖీ చేయబడుతుంది. అప్పుడు ధ్రువీకరణకర్త నెట్‌వర్క్ అంతటా ఆ బ్లాక్‌కు అనుకూలంగా ఒక ఓటును (ధృవీకరణ అని పిలుస్తారు) పంపుతాడు. + +ప్రూఫ్-ఆఫ్-వర్క్ కింద, బ్లాక్‌ల సమయం మైనింగ్ కష్టంతో నిర్ణయించబడుతుంది, అయితే ప్రూఫ్-ఆఫ్-స్టేక్‌లో, టెంపో స్థిరంగా ఉంటుంది. ప్రూఫ్-ఆఫ్-స్టేక్ Ethereumలో సమయం స్లాట్‌లు (12 సెకన్లు) మరియు ఎపోక్‌లు (32 స్లాట్‌లు)గా విభజించబడింది. ప్రతి స్లాట్‌లో ఒక ధ్రువీకరణకర్త యాదృచ్ఛికంగా బ్లాక్ ప్రపోజర్‌గా ఎంపిక చేయబడతాడు. ఈ ధ్రువీకరణకర్త కొత్త బ్లాక్‌ను సృష్టించి, నెట్‌వర్క్‌లోని ఇతర నోడ్‌లకు పంపడానికి బాధ్యత వహిస్తాడు. ప్రతి స్లాట్‌లో, ధ్రువీకరణకర్తల కమిటీ యాదృచ్ఛికంగా ఎంపిక చేయబడుతుంది, దీని ఓట్లు ప్రతిపాదించబడుతున్న బ్లాక్ యొక్క చెల్లుబాటును నిర్ణయించడానికి ఉపయోగించబడతాయి. నెట్‌వర్క్ లోడ్‌ను నిర్వహించదగినదిగా ఉంచడానికి ధ్రువీకరణకర్త సెట్‌ను కమిటీలుగా విభజించడం ముఖ్యం. కమిటీలు ధ్రువీకరణకర్త సెట్‌ను విభజిస్తాయి, తద్వారా ప్రతి క్రియాశీల ధ్రువీకరణకర్త ప్రతి ఎపోక్‌లో ధృవీకరిస్తాడు, కానీ ప్రతి స్లాట్‌లో కాదు. + +## Ethereum PoSలో ఒక లావాదేవీ ఎలా అమలు చేయబడుతుంది {#transaction-execution-ethereum-pos} + +కిందిది Ethereum ప్రూఫ్-ఆఫ్-స్టేక్‌లో ఒక లావాదేవీ ఎలా అమలు చేయబడుతుందో అనే దాని గురించి పూర్తి వివరణను అందిస్తుంది. + +1. ఒక వినియోగదారుడు వారి ప్రైవేట్ కీతో ఒక [లావాదేవీని](/developers/docs/transactions/) సృష్టించి, సంతకం చేస్తాడు. ఇది సాధారణంగా ఒక వాలెట్ లేదా [ethers.js](https://docs.ethers.org/v6/), [web3js](https://docs.web3js.org/), [web3py](https://web3py.readthedocs.io/en/v5/) వంటి లైబ్రరీ ద్వారా నిర్వహించబడుతుంది కానీ అంతర్గతంగా వినియోగదారుడు Ethereum [JSON-RPC API](/developers/docs/apis/json-rpc/)ని ఉపయోగించి ఒక నోడ్‌కు అభ్యర్థన చేస్తున్నాడు. లావాదేవీని ఒక బ్లాక్‌లో చేర్చమని ఒక ధ్రువీకరణకర్తను ప్రోత్సహించడానికి, వినియోగదారుడు వారు చిట్కాగా చెల్లించడానికి సిద్ధంగా ఉన్న గ్యాస్ మొత్తాన్ని నిర్వచిస్తాడు. [చిట్కాలు](/developers/docs/gas/#priority-fee) ధ్రువీకరణకర్తకు చెల్లించబడతాయి, అయితే [మూల రుసుము](/developers/docs/gas/#base-fee) బర్న్ చేయబడుతుంది. +2. లావాదేవీ ఒక Ethereum [ఎగ్జిక్యూషన్ క్లయింట్‌కు](/developers/docs/nodes-and-clients/#execution-client) సమర్పించబడుతుంది, ఇది దాని చెల్లుబాటును ధృవీకరిస్తుంది. దీని అర్థం, పంపినవారికి లావాదేవీని నెరవేర్చడానికి తగినంత ETH ఉందని మరియు వారు దానిని సరైన కీతో సంతకం చేశారని నిర్ధారించుకోవడం. +3. లావాదేవీ చెల్లుబాటు అయితే, ఎగ్జిక్యూషన్ క్లయింట్ దానిని దాని స్థానిక మెమ్‌పూల్ (పెండింగ్‌లో ఉన్న లావాదేవీల జాబితా)కి జోడిస్తుంది మరియు ఎగ్జిక్యూషన్ లేయర్ గాసిప్ నెట్‌వర్క్ ద్వారా ఇతర నోడ్‌లకు కూడా ప్రసారం చేస్తుంది. ఇతర నోడ్‌లు లావాదేవీ గురించి విన్నప్పుడు, వారు కూడా దానిని వారి స్థానిక మెమ్‌పూల్‌కి జోడిస్తారు. అధునాతన వినియోగదారులు వారి లావాదేవీని ప్రసారం చేయకుండా ఉండవచ్చు మరియు బదులుగా దానిని [Flashbots Auction](https://docs.flashbots.net/flashbots-auction/overview) వంటి ప్రత్యేక బ్లాక్ బిల్డర్‌లకు ఫార్వార్డ్ చేయవచ్చు. ఇది గరిష్ట లాభం ([MEV](/developers/docs/mev/#mev-extraction)) కోసం రాబోయే బ్లాక్‌లలో లావాదేవీలను నిర్వహించడానికి వారిని అనుమతిస్తుంది. +4. నెట్‌వర్క్‌లోని ధ్రువీకరణకర్త నోడ్‌లలో ఒకటి ప్రస్తుత స్లాట్ కోసం బ్లాక్ ప్రపోజర్, ఇది గతంలో RANDAO ఉపయోగించి సూడో-యాదృచ్ఛికంగా ఎంపిక చేయబడింది. ఈ నోడ్ Ethereum బ్లాక్‌చెయిన్‌కు జోడించబడే తదుపరి బ్లాక్‌ను నిర్మించడానికి, ప్రసారం చేయడానికి మరియు ప్రపంచ స్థితిని నవీకరించడానికి బాధ్యత వహిస్తుంది. నోడ్ మూడు భాగాలతో రూపొందించబడింది: ఒక ఎగ్జిక్యూషన్ క్లయింట్, ఒక ఏకాభిప్రాయం క్లయింట్ మరియు ఒక ధ్రువీకరణకర్త క్లయింట్. ఎగ్జిక్యూషన్ క్లయింట్ స్థానిక మెమ్‌పూల్ నుండి లావాదేవీలను ఒక "ఎగ్జిక్యూషన్ పేలోడ్‌"లోకి బండిల్ చేస్తుంది మరియు స్థితి మార్పును రూపొందించడానికి వాటిని స్థానికంగా అమలు చేస్తుంది. ఈ సమాచారం ఏకాభిప్రాయం క్లయింట్‌కు పంపబడుతుంది, ఇక్కడ ఎగ్జిక్యూషన్ పేలోడ్ ఒక "బీకాన్ బ్లాక్‌"లో భాగంగా చుట్టబడుతుంది, ఇందులో రివార్డులు, పెనాల్టీలు, స్లాషింగ్‌లు, ధృవీకరణలు మొదలైన వాటి గురించి సమాచారం కూడా ఉంటుంది, ఇది చైన్ యొక్క హెడ్ వద్ద బ్లాక్‌ల క్రమంపై నెట్‌వర్క్ అంగీకరించడానికి వీలు కల్పిస్తుంది. ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయం క్లయింట్‌ల మధ్య కమ్యూనికేషన్ [కనెక్టింగ్ ది కన్సెన్సస్ మరియు ఎగ్జిక్యూషన్ క్లయింట్స్](/developers/docs/networking-layer/#connecting-clients)లో మరింత వివరంగా వివరించబడింది. +5. ఇతర నోడ్‌లు ఏకాభిప్రాయం లేయర్ గాసిప్ నెట్‌వర్క్‌లో కొత్త బీకాన్ బ్లాక్‌ను స్వీకరిస్తాయి. ప్రతిపాదిత స్థితి మార్పు చెల్లుబాటు అయ్యేలా ఉందని నిర్ధారించుకోవడానికి వారు దానిని వారి ఎగ్జిక్యూషన్ క్లయింట్‌కు పంపుతారు, ఇక్కడ లావాదేవీలు స్థానికంగా మళ్లీ అమలు చేయబడతాయి. అప్పుడు ధ్రువీకరణకర్త క్లయింట్ బ్లాక్ చెల్లుబాటు అయ్యేదని మరియు వారి చైన్ వీక్షణలో తార్కిక తదుపరి బ్లాక్ అని ధృవీకరిస్తుంది ([ఫోర్క్ ఎంపిక నియమాలలో](/developers/docs/consensus-mechanisms/pos/#fork-choice) నిర్వచించినట్లుగా ఇది అత్యధిక ధృవీకరణల బరువుతో చైన్‌పై నిర్మించబడుతుంది అని అర్థం). దానికి ధృవీకరించే ప్రతి నోడ్‌లో బ్లాక్ స్థానిక డేటాబేస్‌కు జోడించబడుతుంది. +6. లావాదేవీ రెండు చెక్‌పాయింట్ల మధ్య "సూపర్‌మెజారిటీ లింక్" ఉన్న చైన్‌లో భాగంగా మారితే దానిని "తుది"గా పరిగణించవచ్చు. ప్రతి ఎపోక్ ప్రారంభంలో చెక్‌పాయింట్లు సంభవిస్తాయి మరియు ప్రతి స్లాట్‌లో క్రియాశీల ధ్రువీకరణకర్తలలో ఒక ఉపసమితి మాత్రమే ధృవీకరిస్తుంది, కానీ ప్రతి ఎపోక్‌లో అన్ని క్రియాశీల ధ్రువీకరణకర్తలు ధృవీకరిస్తారు అనే వాస్తవాన్ని లెక్కలోకి తీసుకోవడానికి అవి ఉన్నాయి. అందువల్ల, ఎపోక్‌ల మధ్య మాత్రమే 'సూపర్‌మెజారిటీ లింక్' ప్రదర్శించబడుతుంది (ఇక్కడ నెట్‌వర్క్‌లోని మొత్తం స్టేక్ చేయబడిన ETHలో 66% రెండు చెక్‌పాయింట్లపై అంగీకరిస్తుంది). + +ఫైనాలిటీపై మరిన్ని వివరాలు క్రింద చూడవచ్చు. + +## ఫైనాలిటీ {#finality} + +ఒక లావాదేవీ పెద్ద మొత్తంలో ETH బర్న్ చేయబడకుండా మారలేని బ్లాక్‌లో భాగంగా ఉన్నప్పుడు పంపిణీ చేయబడిన నెట్‌వర్క్‌లలో "ఫైనాలిటీ"ని కలిగి ఉంటుంది. ప్రూఫ్-ఆఫ్-స్టేక్ Ethereumలో, ఇది "చెక్‌పాయింట్" బ్లాక్‌లను ఉపయోగించి నిర్వహించబడుతుంది. ప్రతి ఎపోక్‌లోని మొదటి బ్లాక్ ఒక చెక్‌పాయింట్. ధ్రువీకరణకర్తలు చెల్లుబాటు అయ్యేవిగా భావించే చెక్‌పాయింట్ల జతలకు ఓటు వేస్తారు. ఒక జత చెక్‌పాయింట్లు మొత్తం స్టేక్ చేయబడిన ETHలో కనీసం మూడింట రెండు వంతుల ఓట్లను ఆకర్షిస్తే, చెక్‌పాయింట్లు అప్‌గ్రేడ్ చేయబడతాయి. రెండింటిలో ఇటీవలిది (లక్ష్యం) "సమర్థించబడినది"గా మారుతుంది. రెండింటిలో మునుపటిది ఇప్పటికే సమర్థించబడింది ఎందుకంటే ఇది మునుపటి ఎపోక్‌లో "లక్ష్యం"గా ఉంది. ఇప్పుడు ఇది "తుది"కి అప్‌గ్రేడ్ చేయబడింది. చెక్‌పాయింట్లను అప్‌గ్రేడ్ చేసే ఈ ప్రక్రియ **[కాస్పర్ ది ఫ్రెండ్లీ ఫైనాలిటీ గాడ్జెట్ (కాస్పర్-FFG)](https://arxiv.org/pdf/1710.09437)** ద్వారా నిర్వహించబడుతుంది. కాస్పర్-FFG అనేది ఏకాభిప్రాయం కోసం ఒక బ్లాక్ ఫైనాలిటీ సాధనం. ఒకసారి ఒక బ్లాక్ ఫైనలైజ్ చేయబడితే, స్టేకర్ల మెజారిటీ స్లాషింగ్ లేకుండా దానిని రివర్ట్ చేయడం లేదా మార్చడం సాధ్యం కాదు, ఇది ఆర్థికంగా అసాధ్యం. + +తుది చేయబడిన బ్లాక్‌ను రివర్ట్ చేయడానికి, ఒక దాడి చేసేవాడు మొత్తం స్టేక్ చేయబడిన ETH సరఫరాలో కనీసం మూడింట ఒక వంతును కోల్పోవడానికి కట్టుబడి ఉంటాడు. దీనికి ఖచ్చితమైన కారణం ఈ [Ethereum ఫౌండేషన్ బ్లాగ్ పోస్ట్](https://blog.ethereum.org/2016/05/09/on-settlement-finality/)లో వివరించబడింది. ఫైనాలిటీకి మూడింట రెండు వంతుల మెజారిటీ అవసరం కాబట్టి, దాడి చేసేవాడు మొత్తం స్టేక్‌లో మూడింట ఒక వంతుతో ఓటు వేయడం ద్వారా నెట్‌వర్క్ ఫైనాలిటీకి చేరకుండా నిరోధించవచ్చు. దీని నుండి రక్షించుకోవడానికి ఒక యంత్రాంగం ఉంది: [నిష్క్రియాత్మకత లీక్](https://eth2book.info/bellatrix/part2/incentives/inactivity). నాలుగు ఎపోక్‌ల కంటే ఎక్కువ కాలం చైన్ ఫైనలైజ్ చేయడంలో విఫలమైనప్పుడు ఇది సక్రియం అవుతుంది. నిష్క్రియాత్మకత లీక్ మెజారిటీకి వ్యతిరేకంగా ఓటు వేసే ధ్రువీకరణకర్తల నుండి స్టేక్ చేయబడిన ETHని తీసివేస్తుంది, మెజారిటీ మూడింట రెండు వంతుల మెజారిటీని తిరిగి పొందడానికి మరియు చైన్‌ను ఫైనలైజ్ చేయడానికి అనుమతిస్తుంది. + +## క్రిప్టో-ఆర్థిక భద్రత {#crypto-economic-security} + +ధ్రువీకరణకర్తను నడపడం ఒక నిబద్ధత. బ్లాక్ ధ్రువీకరణ మరియు ప్రతిపాదనలో పాల్గొనడానికి ధ్రువీకరణకర్త తగినంత హార్డ్‌వేర్ మరియు కనెక్టివిటీని నిర్వహించాలని భావిస్తున్నారు. ప్రతిఫలంగా, ధ్రువీకరణకర్తకు ETHలో చెల్లించబడుతుంది (వారి స్టేక్ చేయబడిన బ్యాలెన్స్ పెరుగుతుంది). మరోవైపు, ఒక ధ్రువీకరణకర్తగా పాల్గొనడం వ్యక్తిగత లాభం లేదా విధ్వంసం కోసం నెట్‌వర్క్‌పై దాడి చేయడానికి వినియోగదారులకు కొత్త మార్గాలను కూడా తెరుస్తుంది. దీనిని నివారించడానికి, ధ్రువీకరణకర్తలు పిలిచినప్పుడు పాల్గొనడంలో విఫలమైతే ETH రివార్డులను కోల్పోతారు మరియు వారు నిజాయితీగా ప్రవర్తించకపోతే వారి ప్రస్తుత స్టేక్ నాశనం చేయబడుతుంది. రెండు ప్రాథమిక ప్రవర్తనలను నిజాయితీ లేనివిగా పరిగణించవచ్చు: ఒకే స్లాట్‌లో బహుళ బ్లాక్‌లను ప్రతిపాదించడం (సందిగ్ధత) మరియు విరుద్ధమైన ధృవీకరణలను సమర్పించడం. + +స్లాష్ చేయబడిన ETH మొత్తం అదే సమయంలో ఎంత మంది ధ్రువీకరణకర్తలు కూడా స్లాష్ చేయబడుతున్నారనే దానిపై ఆధారపడి ఉంటుంది. దీనిని ["సహసంబంధ పెనాల్టీ"](https://eth2book.info/bellatrix/part2/incentives/slashing#the-correlation-penalty) అని పిలుస్తారు, మరియు ఇది స్వల్పంగా (~1% స్టేక్ ఒకే ధ్రువీకరణకర్తకు స్వయంగా స్లాష్ చేయబడినందుకు) ఉండవచ్చు లేదా ధ్రువీకరణకర్త యొక్క స్టేక్‌లో 100% నాశనం కావడానికి దారితీయవచ్చు (సామూహిక స్లాషింగ్ ఈవెంట్). ఇది 1వ రోజున తక్షణ పెనాల్టీ (1 ETH వరకు), 18వ రోజున సహసంబంధ పెనాల్టీ మరియు చివరిగా, 36వ రోజున నెట్‌వర్క్ నుండి తొలగింపుతో ప్రారంభమయ్యే బలవంతపు నిష్క్రమణ కాలం మధ్యలో విధించబడుతుంది. వారు నెట్‌వర్క్‌లో ఉన్నప్పటికీ ఓట్లను సమర్పించనందున ప్రతిరోజూ చిన్న ధృవీకరణ పెనాల్టీలను అందుకుంటారు. ఇదంతా అంటే సమన్వయ దాడి దాడి చేసేవారికి చాలా ఖరీదైనది. + +## ఫోర్క్ ఎంపిక {#fork-choice} + +నెట్‌వర్క్ ఉత్తమంగా మరియు నిజాయితీగా పనిచేసినప్పుడు, చైన్ యొక్క హెడ్ వద్ద ఎప్పుడూ ఒక కొత్త బ్లాక్ మాత్రమే ఉంటుంది మరియు అన్ని ధ్రువీకరణకర్తలు దానికి ధృవీకరిస్తారు. అయితే, నెట్‌వర్క్ లేటెన్సీ కారణంగా లేదా ఒక బ్లాక్ ప్రపోజర్ సందిగ్ధతకు గురైనందున ధ్రువీకరణకర్తలు చైన్ యొక్క హెడ్ గురించి వేర్వేరు అభిప్రాయాలను కలిగి ఉండటం సాధ్యమే. అందువల్ల, ఏకాభిప్రాయం క్లయింట్‌లకు ఏది అనుకూలంగా ఉందో నిర్ణయించడానికి ఒక అల్గారిథమ్ అవసరం. ప్రూఫ్-ఆఫ్-స్టేక్ Ethereumలో ఉపయోగించే అల్గారిథమ్‌ను [LMD-GHOST](https://arxiv.org/pdf/2003.03052.pdf) అని పిలుస్తారు మరియు ఇది దాని చరిత్రలో అత్యధిక ధృవీకరణల బరువును కలిగి ఉన్న ఫోర్క్‌ను గుర్తించడం ద్వారా పనిచేస్తుంది. + +## ప్రూఫ్-ఆఫ్-స్టేక్ మరియు భద్రత {#pos-and-security} + +ప్రూఫ్-ఆఫ్-వర్క్‌లో ఉన్నట్లే ప్రూఫ్-ఆఫ్-స్టేక్‌లో కూడా [51% దాడి](https://www.investopedia.com/terms/1/51-attack.asp) ముప్పు ఇప్పటికీ ఉంది, కానీ దాడి చేసేవారికి ఇది మరింత ప్రమాదకరం. ఒక దాడి చేసేవారికి 51% స్టేక్ చేయబడిన ETH అవసరం. వారు తమ ఇష్టపడే ఫోర్క్ అత్యధికంగా సేకరించబడిన ధృవీకరణలతో కూడినది అని నిర్ధారించుకోవడానికి వారి స్వంత ధృవీకరణలను ఉపయోగించవచ్చు. సేకరించబడిన ధృవీకరణల యొక్క 'బరువు' సరైన చైన్‌ను నిర్ణయించడానికి ఏకాభిప్రాయం క్లయింట్లు ఉపయోగిస్తారు, కాబట్టి ఈ దాడి చేసేవాడు వారి ఫోర్క్‌ను కానానికల్‌గా మార్చగలడు. అయితే, ప్రూఫ్-ఆఫ్-వర్క్ కంటే ప్రూఫ్-ఆఫ్-స్టేక్ యొక్క బలం ఏమిటంటే, ఎదురుదాడి చేయడంలో కమ్యూనిటీకి సౌలభ్యం ఉంది. ఉదాహరణకు, నిజాయితీపరులైన ధ్రువీకరణకర్తలు మైనారిటీ చైన్‌పై నిర్మించడం కొనసాగించాలని నిర్ణయించుకోవచ్చు మరియు దాడి చేసేవారి ఫోర్క్‌ను విస్మరించవచ్చు, అదే సమయంలో యాప్‌లు, ఎక్స్‌ఛేంజ్‌లు మరియు పూల్‌లను కూడా అదే విధంగా చేయడానికి ప్రోత్సహించవచ్చు. వారు నెట్‌వర్క్ నుండి దాడి చేసేవారిని బలవంతంగా తొలగించాలని మరియు వారి స్టేక్ చేయబడిన ETHని నాశనం చేయాలని కూడా నిర్ణయించుకోవచ్చు. ఇవి 51% దాడికి వ్యతిరేకంగా బలమైన ఆర్థిక రక్షణలు. + +51% దాడులకు మించి, చెడ్డ నటులు ఇతర రకాల హానికరమైన కార్యకలాపాలను కూడా ప్రయత్నించవచ్చు, అవి: + +- దీర్ఘ-శ్రేణి దాడులు (ఫైనాలిటీ గాడ్జెట్ ఈ దాడి వెక్టర్‌ను తటస్థీకరించినప్పటికీ) +- స్వల్ప-శ్రేణి 'రియార్గ్స్' (ప్రపోజర్ బూస్టింగ్ మరియు ధృవీకరణ గడువులు దీనిని తగ్గించినప్పటికీ) +- బౌన్సింగ్ మరియు బ్యాలెన్సింగ్ దాడులు (ప్రపోజర్ బూస్టింగ్ ద్వారా కూడా తగ్గించబడ్డాయి, మరియు ఈ దాడులు ఏమైనప్పటికీ ఆదర్శప్రాయమైన నెట్‌వర్క్ పరిస్థితులలో మాత్రమే ప్రదర్శించబడ్డాయి) +- హిమపాతం దాడులు (తాజా సందేశాన్ని మాత్రమే పరిగణనలోకి తీసుకునే ఫోర్క్ ఎంపిక అల్గారిథమ్‌ల నియమం ద్వారా తటస్థీకరించబడింది) + +మొత్తంమీద, ప్రూఫ్-ఆఫ్-స్టేక్, Ethereumలో అమలు చేయబడినట్లుగా, ప్రూఫ్-ఆఫ్-వర్క్ కంటే ఆర్థికంగా సురక్షితమైనదని నిరూపించబడింది. + +## ప్రయోజనాలు మరియు అప్రయోజనాలు {#pros-and-cons} + +| ప్రయోజనాలు | అప్రయోజనాలు | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| స్టేకింగ్ వ్యక్తులు నెట్‌వర్క్‌ను భద్రపరచడంలో పాల్గొనడాన్ని సులభతరం చేస్తుంది, వికేంద్రీకరణను ప్రోత్సహిస్తుంది. ధ్రువీకరణకర్త నోడ్‌ను సాధారణ ల్యాప్‌టాప్‌లో అమలు చేయవచ్చు. స్టేకింగ్ పూల్స్ వినియోగదారులను 32 ETH లేకుండా స్టేక్ చేయడానికి అనుమతిస్తాయి. | ప్రూఫ్-ఆఫ్-వర్క్‌తో పోలిస్తే ప్రూఫ్-ఆఫ్-స్టేక్ కొత్తది మరియు తక్కువ యుద్ధ-పరీక్షించబడింది | +| స్టేకింగ్ మరింత వికేంద్రీకరించబడింది. PoW మైనింగ్‌కు వర్తించే విధంగా ఆర్థిక స్థాయిలు వర్తించవు. | ప్రూఫ్-ఆఫ్-వర్క్ కంటే ప్రూఫ్-ఆఫ్-స్టేక్ అమలు చేయడం చాలా క్లిష్టంగా ఉంటుంది | +| ప్రూఫ్-ఆఫ్-వర్క్ కంటే ప్రూఫ్-ఆఫ్-స్టేక్ ఎక్కువ క్రిప్టో-ఆర్థిక భద్రతను అందిస్తుంది | Ethereum యొక్క ప్రూఫ్-ఆఫ్-స్టేక్‌లో పాల్గొనడానికి వినియోగదారులు మూడు సాఫ్ట్‌వేర్ ముక్కలను అమలు చేయాలి. | +| నెట్‌వర్క్ భాగస్వాములను ప్రోత్సహించడానికి కొత్త ETH యొక్క తక్కువ జారీ అవసరం | | + +### ప్రూఫ్-ఆఫ్-వర్క్‌తో పోలిక {#comparison-to-proof-of-work} + +Ethereum మొదట ప్రూఫ్-ఆఫ్-వర్క్‌ను ఉపయోగించింది, కానీ సెప్టెంబర్ 2022లో ప్రూఫ్-ఆఫ్-స్టేక్‌కు మారింది. PoS, PoW కంటే అనేక ప్రయోజనాలను అందిస్తుంది, అవి: + +- మెరుగైన శక్తి సామర్థ్యం – ప్రూఫ్-ఆఫ్-వర్క్ గణనలపై ఎక్కువ శక్తిని ఉపయోగించాల్సిన అవసరం లేదు +- ప్రవేశానికి తక్కువ అడ్డంకులు, తగ్గిన హార్డ్‌వేర్ అవసరాలు – కొత్త బ్లాక్‌లను సృష్టించే అవకాశం కోసం ఉన్నతస్థాయి హార్డ్‌వేర్ అవసరం లేదు +- తగ్గిన కేంద్రీకరణ ప్రమాదం – ప్రూఫ్-ఆఫ్-స్టేక్ నెట్‌వర్క్‌ను భద్రపరిచే మరిన్ని నోడ్‌లకు దారితీయాలి +- తక్కువ శక్తి అవసరం కారణంగా పాల్గొనడాన్ని ప్రోత్సహించడానికి తక్కువ ETH జారీ అవసరం +- దుష్ప్రవర్తనకు ఆర్థిక పెనాల్టీలు ప్రూఫ్-ఆఫ్-వర్క్‌తో పోలిస్తే దాడి చేసేవారికి 51% శైలి దాడులను మరింత ఖరీదైనవిగా చేస్తాయి +- క్రిప్టో-ఆర్థిక రక్షణలను అధిగమించడానికి 51% దాడి జరిగితే, నిజాయితీ గల చైన్ యొక్క సామాజిక పునరుద్ధరణకు కమ్యూనిటీ ఆశ్రయించవచ్చు. + +## మరింత సమాచారం {#further-reading} + +- [ప్రూఫ్ ఆఫ్ స్టేక్ FAQ](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html) _విటాలిక్ బుటెరిన్_ +- [ప్రూఫ్ ఆఫ్ స్టేక్ అంటే ఏమిటి](https://consensys.net/blog/blockchain-explained/what-is-proof-of-stake/) _కాన్సెన్‌సిస్_ +- [ప్రూఫ్ ఆఫ్ స్టేక్ అంటే ఏమిటి మరియు అది ఎందుకు ముఖ్యం](https://bitcoinmagazine.com/culture/what-proof-of-stake-is-and-why-it-matters-1377531463) _విటాలిక్ బుటెరిన్_ +- [ప్రూఫ్ ఆఫ్ స్టేక్ ఎందుకు (నవంబర్ 2020)](https://vitalik.eth.limo/general/2020/11/06/pos2020.html) _విటాలిక్ బుటెరిన్_ +- [ప్రూఫ్ ఆఫ్ స్టేక్: బలహీనమైన ఆత్మాశ్రయతను నేను ఎలా ప్రేమించడం నేర్చుకున్నాను](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/) _విటాలిక్ బుటెరిన్_ +- [ప్రూఫ్-ఆఫ్-స్టేక్ Ethereum దాడి మరియు రక్షణ](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs) +- [ఒక ప్రూఫ్ ఆఫ్ స్టేక్ డిజైన్ ఫిలాసఫీ](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51) _విటాలిక్ బుటెరిన్_ +- [వీడియో: విటాలిక్ బుటెరిన్ లెక్స్ ఫ్రిడ్‌మన్‌కు ప్రూఫ్-ఆఫ్-స్టేక్‌ను వివరిస్తాడు](https://www.youtube.com/watch?v=3yrqBG-7EVE) + +## సంబంధిత అంశాలు {#related-topics} + +- [ప్రూఫ్-ఆఫ్-వర్క్](/developers/docs/consensus-mechanisms/pow/) +- [ప్రూఫ్-ఆఫ్-అథారిటీ](/developers/docs/consensus-mechanisms/poa/) diff --git a/public/content/translations/te/developers/docs/consensus-mechanisms/pos/keys/index.md b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/keys/index.md new file mode 100644 index 00000000000..f6296bdd38f --- /dev/null +++ b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/keys/index.md @@ -0,0 +1,102 @@ +--- +title: "ప్రూఫ్-ఆఫ్-స్టేక్ ఇతీరియములో కీలు" +description: "ఇతీరియము యొక్క ప్రూఫ్-ఆఫ్-స్టేక్ ఏకాభిప్రాయ యంత్రాంగంలో ఉపయోగించే కీల యొక్క వివరణ" +lang: te +--- + +ఇతీరియము పబ్లిక్-ప్రైవేట్ కీ క్రిప్టోగ్రఫీని ఉపయోగించి వినియోగదారు ఆస్తులను భద్రపరుస్తుంది. పబ్లిక్ కీ ఒక ఇతీరియము చిరునామాకు ఆధారంగా ఉపయోగించబడుతుంది—అంటే, ఇది సాధారణ ప్రజలకు కనిపిస్తుంది మరియు ఒక ప్రత్యేక గుర్తింపుగా ఉపయోగించబడుతుంది. ప్రైవేట్ (లేదా 'రహస్య') కీ ఒక ఖాతా యజమానికి మాత్రమే అందుబాటులో ఉండాలి. లావాదేవీలు మరియు డేటాను 'సంతకం' చేయడానికి ప్రైవేట్ కీ ఉపయోగించబడుతుంది, తద్వారా క్రిప్టోగ్రఫీ ఒక నిర్దిష్ట ప్రైవేట్ కీ యొక్క కొంత చర్యను హోల్డర్ ఆమోదించారని నిరూపించగలదు. + +ఇతీరియము యొక్క కీలు [ఎలిప్టిక్-కర్వ్ క్రిప్టోగ్రఫీ](https://en.wikipedia.org/wiki/Elliptic-curve_cryptography)ని ఉపయోగించి ఉత్పత్తి చేయబడతాయి. + +అయితే, ఇతీరియము [ప్రూఫ్-ఆఫ్-వర్క్](/developers/docs/consensus-mechanisms/pow) నుండి [ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos)కు మారినప్పుడు ఇతీరియముకి ఒక కొత్త రకమైన కీ జోడించబడింది. అసలైన కీలు మునుపటిలాగే ఖచ్చితంగా పని చేస్తాయి—ఖాతాలను భద్రపరిచే ఎలిప్టిక్-కర్వ్-ఆధారిత కీలకు ఎటువంటి మార్పులు లేవు. అయితే, ETHని స్టేక్ చేయడం మరియు వాలిడేటర్‌లను నడపడం ద్వారా ప్రూఫ్-ఆఫ్-స్టేక్‌లో పాల్గొనడానికి వినియోగదారులకు ఒక కొత్త రకమైన కీ అవసరమైంది. నెట్‌వర్క్ ఏకాభిప్రాయానికి రావడానికి అవసరమైన కమ్యూనికేషన్ మొత్తాన్ని తగ్గించడానికి, పెద్ద సంఖ్యలో వాలిడేటర్‌ల మధ్య పంపే అనేక సందేశాలను సులభంగా సమూహపరచగల క్రిప్టోగ్రాఫిక్ పద్ధతి అవసరం కావడం వల్ల ఏర్పడిన స్కేలబిలిటీ సవాళ్ల నుండి ఈ అవసరం ఉద్భవించింది. + +ఈ కొత్త రకమైన కీ [**బోనే-లిన్-షాచామ్ (BLS)** సంతకం స్కీమ్](https://wikipedia.org/wiki/BLS_digital_signature)ను ఉపయోగిస్తుంది. BLS సంతకాల యొక్క చాలా సమర్థవంతమైన సమూహనాన్ని అనుమతిస్తుంది కానీ సమూహపరచబడిన వ్యక్తిగత వాలిడేటర్ కీల యొక్క రివర్స్ ఇంజనీరింగ్‌ను కూడా అనుమతిస్తుంది మరియు వాలిడేటర్‌ల మధ్య చర్యలను నిర్వహించడానికి ఆదర్శంగా ఉంటుంది. + +## రెండు రకాల వాలిడేటర్ కీలు {#two-types-of-keys} + +ప్రూఫ్-ఆఫ్-స్టేక్‌కు మారడానికి ముందు, ఇతీరియము వినియోగదారులు వారి నిధులను యాక్సెస్ చేయడానికి ఒకే ఎలిప్టిక్-కర్వ్-ఆధారిత ప్రైవేట్ కీని మాత్రమే కలిగి ఉన్నారు. ప్రూఫ్-ఆఫ్-స్టేక్ ప్రవేశంతో, సోలో స్టేకర్‌లుగా ఉండాలనుకునే వినియోగదారులకు **వాలిడేటర్ కీ** మరియు **ఉపసంహరణ కీ** కూడా అవసరమయ్యాయి. + +### వాలిడేటర్ కీ {#validator-key} + +వాలిడేటర్ సంతకం కీ రెండు అంశాలను కలిగి ఉంటుంది: + +- వాలిడేటర్ **ప్రైవేట్** కీ +- వాలిడేటర్ **పబ్లిక్** కీ + +వాలిడేటర్ ప్రైవేట్ కీ యొక్క ఉద్దేశ్యం బ్లాక్ ప్రతిపాదనలు మరియు ధృవీకరణలు వంటి ఆన్‌చైన్ కార్యకలాపాలపై సంతకం చేయడం. ఈ కారణంగా, ఈ కీలను ఒక హాట్ వాలెట్‌లో ఉంచాలి. + +వాలిడేటర్ సంతకం కీలను ఒక పరికరం నుండి మరొక దానికి చాలా త్వరగా తరలించే ప్రయోజనాన్ని ఈ సౌలభ్యం కలిగి ఉంది, అయితే, అవి పోగొట్టుకున్నా లేదా దొంగిలించబడినా, ఒక దొంగ కొన్ని మార్గాల్లో **దురుద్దేశపూర్వకంగా ప్రవర్తించవచ్చు**: + +- దీని ద్వారా వాలిడేటర్‌ను స్లాష్ చేయండి: + - ఒక ప్రతిపాదకుడిగా ఉండి, అదే స్లాట్ కోసం రెండు వేర్వేరు బెకన్ బ్లాక్‌లపై సంతకం చేయడం + - ఒక ధృవీకరణకర్తగా ఉండి, మరొక దానిని "చుట్టుముట్టే" ఒక ధృవీకరణపై సంతకం చేయడం + - ఒక ధృవీకరణకర్తగా ఉండి, ఒకే లక్ష్యాన్ని కలిగి ఉన్న రెండు వేర్వేరు ధృవీకరణలపై సంతకం చేయడం +- స్వచ్ఛంద నిష్క్రమణను బలవంతం చేయడం, ఇది వాలిడేటర్‌ను స్టేకింగ్ నుండి ఆపి, దాని ETH బ్యాలెన్స్‌ను ఉపసంహరణ కీ యజమానికి యాక్సెస్ ఇస్తుంది + +ఒక వినియోగదారుడు స్టేకింగ్ డిపాజిట్ కాంట్రాక్ట్‌కు ETHని డిపాజిట్ చేసినప్పుడు **వాలిడేటర్ పబ్లిక్ కీ** లావాదేవీ డేటాలో చేర్చబడుతుంది. దీనిని _డిపాజిట్ డేటా_ అంటారు మరియు ఇది ఇతీరియము వాలిడేటర్‌ను గుర్తించడానికి అనుమతిస్తుంది. + +### ఉపసంహరణ క్రెడెన్షియల్స్ {#withdrawal-credentials} + +ప్రతి వాలిడేటర్ _ఉపసంహరణ క్రెడెన్షియల్స్_ అని పిలువబడే ఒక లక్షణాన్ని కలిగి ఉంటుంది. ఈ 32-బైట్ ఫీల్డ్ యొక్క మొదటి బైట్ ఖాతా రకాన్ని గుర్తిస్తుంది: `0x00` అసలు BLS (ప్రీ-షాపేలా, ఉపసంహరించుకోలేని) క్రెడెన్షియల్స్‌ను సూచిస్తుంది, `0x01` ఒక ఎగ్జిక్యూషన్ చిరునామాకు సూచించే లెగసీ క్రెడెన్షియల్స్‌ను సూచిస్తుంది, మరియు `0x02` ఆధునిక కాంపౌండింగ్ క్రెడెన్షియల్ రకాన్ని సూచిస్తుంది. + +`0x00` BLS కీలు కలిగిన వాలిడేటర్లు, అదనపు బ్యాలెన్స్ చెల్లింపులను లేదా స్టేకింగ్ నుండి పూర్తి ఉపసంహరణను యాక్టివేట్ చేయడానికి ఈ క్రెడెన్షియల్స్‌ను ఒక ఎగ్జిక్యూషన్ చిరునామాకు సూచించేలా అప్‌డేట్ చేయాలి. దీనిని ప్రారంభ కీ జనరేషన్ సమయంలో డిపాజిట్ డేటాలో ఒక ఎగ్జిక్యూషన్ చిరునామాను అందించడం ద్వారా, _లేదా_ తరువాత సమయంలో ఉపసంహరణ కీని ఉపయోగించి ఒక `BLSToExecutionChange` సందేశాన్ని సంతకం చేసి ప్రసారం చేయడం ద్వారా చేయవచ్చు. + +[వాలిడేటర్ ఉపసంహరణ క్రెడెన్షియల్స్ గురించి మరింత](/developers/docs/consensus-mechanisms/pos/withdrawal-credentials/) + +### ఉపసంహరణ కీ {#withdrawal-key} + +ప్రారంభ డిపాజిట్ సమయంలో సెట్ చేయకపోతే, ఉపసంహరణ క్రెడెన్షియల్స్‌ను ఒక ఎగ్జిక్యూషన్ చిరునామాకు సూచించేలా అప్‌డేట్ చేయడానికి ఉపసంహరణ కీ అవసరం అవుతుంది. ఇది అదనపు బ్యాలెన్స్ చెల్లింపుల ప్రాసెసింగ్‌ను ప్రారంభించడానికి వీలు కల్పిస్తుంది మరియు వినియోగదారులు తమ స్టేక్ చేసిన ETHని పూర్తిగా ఉపసంహరించుకోవడానికి కూడా అనుమతిస్తుంది. + +వాలిడేటర్ కీల మాదిరిగానే, ఉపసంహరణ కీలు కూడా రెండు భాగాలను కలిగి ఉంటాయి: + +- ఉపసంహరణ **ప్రైవేట్** కీ +- ఉపసంహరణ **పబ్లిక్** కీ + +`0x01` రకానికి ఉపసంహరణ క్రెడెన్షియల్స్‌ను అప్‌డేట్ చేయడానికి ముందు ఈ కీని కోల్పోవడం అంటే వాలిడేటర్ బ్యాలెన్స్‌కు యాక్సెస్ కోల్పోవడం. ఈ చర్యలకు వాలిడేటర్ యొక్క ప్రైవేట్ కీ అవసరం కాబట్టి వాలిడేటర్ ఇప్పటికీ ధృవీకరణలు మరియు బ్లాక్‌లపై సంతకం చేయగలదు, అయితే ఉపసంహరణ కీలు పోతే చాలా తక్కువ లేదా ఎటువంటి ప్రోత్సాహకం ఉండదు. + +వాలిడేటర్ కీలను ఇతీరియము ఖాతా కీల నుండి వేరు చేయడం ఒకే వినియోగదారు ద్వారా బహుళ వాలిడేటర్‌లను నడపడానికి వీలు కల్పిస్తుంది. + +![వాలిడేటర్ కీ స్కీమాటిక్](validator-key-schematic.png) + +**గమనిక**: స్టేకింగ్ విధుల నుండి నిష్క్రమించడానికి మరియు వాలిడేటర్ యొక్క బ్యాలెన్స్‌ను ఉపసంహరించుకోవడానికి ప్రస్తుతం వాలిడేటర్ కీతో ఒక [స్వచ్ఛంద నిష్క్రమణ సందేశం (VEM)](https://mirror.xyz/ladislaus.eth/wmoBbUBes2Wp1_6DvP6slPabkyujSU7MZOFOC3QpErs&1) పై సంతకం చేయాలి. అయితే, [EIP-7002](https://eips.ethereum.org/EIPS/eip-7002) అనేది ఒక ప్రతిపాదన, ఇది భవిష్యత్తులో ఉపసంహరణ కీతో నిష్క్రమణ సందేశాలపై సంతకం చేయడం ద్వారా ఒక వినియోగదారుడు వాలిడేటర్ యొక్క నిష్క్రమణను ప్రేరేపించడానికి మరియు దాని బ్యాలెన్స్‌ను ఉపసంహరించుకోవడానికి అనుమతిస్తుంది. ఇది [స్టేకింగ్-యాజ్-ఎ-సర్వీస్ ప్రొవైడర్‌లకు](/staking/saas/#what-is-staking-as-a-service) ETHను అప్పగించే స్టేకర్‌లను వారి నిధులపై నియంత్రణలో ఉంచడం ద్వారా విశ్వాస అంచనాలను తగ్గిస్తుంది. + +## ఒక సీడ్ పదబంధం నుండి కీలను ఉత్పాదించడం {#deriving-keys-from-seed} + +స్టేక్ చేసిన ప్రతి 32 ETHకి 2 పూర్తిగా స్వతంత్ర కీల కొత్త సెట్ అవసరమైతే, కీ నిర్వహణ త్వరగా గజిబిజిగా మారుతుంది, ముఖ్యంగా బహుళ వాలిడేటర్‌లను నడుపుతున్న వినియోగదారులకు. బదులుగా, బహుళ వాలిడేటర్ కీలను ఒకే సాధారణ రహస్యం నుండి ఉత్పాదించవచ్చు మరియు ఆ ఒకే రహస్యాన్ని నిల్వ చేయడం బహుళ వాలిడేటర్ కీలకు యాక్సెస్‌ను అనుమతిస్తుంది. + +వినియోగదారులు వారి వాలెట్లను [యాక్సెస్ చేసినప్పుడు](https://ethereum.stackexchange.com/questions/19055/what-is-the-difference-between-m-44-60-0-0-and-m-44-60-0) తరచుగా ఎదుర్కొనే ప్రముఖ లక్షణాలు [మ్నెమోనిక్స్](https://en.bitcoinwiki.org/wiki/Mnemonic_phrase) మరియు మార్గాలు. మ్నెమోనిక్ అనేది ఒక ప్రైవేట్ కీ కోసం ప్రారంభ సీడ్‌గా పనిచేసే పదాల క్రమం. అదనపు డేటాతో కలిపినప్పుడు, మ్నెమోనిక్ 'మాస్టర్ కీ' అని పిలువబడే ఒక హాష్‌ను ఉత్పత్తి చేస్తుంది. దీనిని ఒక చెట్టు యొక్క మూలంగా భావించవచ్చు. ఈ మూలం నుండి శాఖలను ఒక క్రమానుగత మార్గాన్ని ఉపయోగించి ఉత్పాదించవచ్చు, తద్వారా చైల్డ్ నోడ్‌లు వాటి పేరెంట్ నోడ్ యొక్క హాష్ మరియు చెట్టులో వాటి సూచిక కలయికలుగా ఉనికిలో ఉంటాయి. మ్నెమోనిక్-ఆధారిత కీ జనరేషన్ కోసం [BIP-32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) మరియు [BIP-19](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) ప్రమాణాల గురించి చదవండి. + +ఈ మార్గాలు క్రింది నిర్మాణాన్ని కలిగి ఉంటాయి, ఇది హార్డ్‌వేర్ వాలెట్లతో సంప్రదించిన వినియోగదారులకు సుపరిచితంగా ఉంటుంది: + +``` +m/44'/60'/0'/0` +``` + +ఈ మార్గంలోని స్లాష్‌లు ప్రైవేట్ కీ యొక్క భాగాలను ఈ క్రింది విధంగా వేరు చేస్తాయి: + +``` +`మాస్టర్_కీ / ప్రయోజనం / కాయిన్_రకం / ఖాతా / మార్పు / చిరునామా_సూచిక` +``` + +ఈ లాజిక్ వినియోగదారులను ఒకే **మ్నెమోనిక్ పదబంధానికి** వీలైనన్ని ఎక్కువ వాలిడేటర్‌లను జోడించడానికి వీలు కల్పిస్తుంది ఎందుకంటే చెట్టు మూలం సాధారణంగా ఉంటుంది మరియు శాఖల వద్ద భేదం జరగవచ్చు. వినియోగదారు మ్నెమోనిక్ పదబంధం నుండి **ఎన్ని కీలనైనా ఉత్పాదించగలరు**. + +``` + [m / 0] + / + / +[m] - [m / 1] + \ + \ + [m / 2] +``` + +ప్రతి శాఖను `/` ద్వారా వేరు చేయబడింది కాబట్టి `m/2` అంటే మాస్టర్ కీతో ప్రారంభించి శాఖ 2ని అనుసరించండి. క్రింది స్కీమాటిక్‌లో ఒకే మ్నెమోనిక్ పదబంధం మూడు ఉపసంహరణ కీలను నిల్వ చేయడానికి ఉపయోగించబడుతుంది, ప్రతిదానికి రెండు అనుబంధిత వాలిడేటర్‌లు ఉంటాయి. + +![వాలిడేటర్ కీ లాజిక్](multiple-keys.png) + +## మరింత సమాచారం {#further-reading} + +- [కార్ల్ బీఖుయిజెన్ ద్వారా ఇతీరియము ఫౌండేషన్ బ్లాగ్ పోస్ట్](https://blog.ethereum.org/2020/05/21/keys/) +- [EIP-2333 BLS12-381 కీ జనరేషన్](https://eips.ethereum.org/EIPS/eip-2333) +- [EIP-7002: ఎగ్జిక్యూషన్ లేయర్ ప్రేరేపిత నిష్క్రమణలు](https://web.archive.org/web/20250125035123/https://research.2077.xyz/eip-7002-unpacking-improvements-to-staking-ux-post-merge) +- [స్కేల్‌లో కీ నిర్వహణ](https://docs.ethstaker.cc/ethstaker-knowledge-base/scaled-node-operators/key-management-at-scale) diff --git a/public/content/translations/te/developers/docs/consensus-mechanisms/pos/pos-vs-pow/index.md b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/pos-vs-pow/index.md new file mode 100644 index 00000000000..d66b1387733 --- /dev/null +++ b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/pos-vs-pow/index.md @@ -0,0 +1,69 @@ +--- +title: "ప్రూఫ్-ఆఫ్-స్టేక్ వర్సెస్ ప్రూఫ్-ఆఫ్-వర్క్" +description: "ఇతీరియము యొక్క ప్రూఫ్-ఆఫ్-స్టేక్ మరియు ప్రూఫ్-ఆఫ్-వర్క్ ఆధారిత ఏకాభిప్రాయ యంత్రాంగం మధ్య పోలిక" +lang: te +--- + +ఇతీరియము ప్రారంభమైనప్పుడు, ఇతీరియమును సురక్షితం చేయడానికి విశ్వసించబడటానికి ముందు ప్రూఫ్-ఆఫ్-స్టేక్‌కు ఇంకా చాలా పరిశోధన మరియు అభివృద్ధి అవసరం. ప్రూఫ్-ఆఫ్-వర్క్ అనేది ఒక సరళమైన యంత్రాంగం, ఇది ఇప్పటికే బిట్‌కాయిన్ ద్వారా నిరూపించబడింది, అంటే కోర్ డెవలపర్లు ఇతీరియమును ప్రారంభించడానికి దాన్ని వెంటనే అమలు చేయగలరు. ప్రూఫ్-ఆఫ్-స్టేక్‌ను అమలు చేయగల స్థాయికి అభివృద్ధి చేయడానికి మరో ఎనిమిది సంవత్సరాలు పట్టింది. + +ఈ పేజీ ఇతీరియము యొక్క ప్రూఫ్-ఆఫ్-వర్క్ నుండి ప్రూఫ్-ఆఫ్-స్టేక్‌కు మారడం వెనుక ఉన్న హేతుబద్ధతను మరియు దానిలో ఉన్న లాభనష్టాలను వివరిస్తుంది. + +## భద్రత {#security} + +ఇతీరియము పరిశోధకులు ప్రూఫ్-ఆఫ్-వర్క్ కంటే ప్రూఫ్-ఆఫ్-స్టేక్ మరింత సురక్షితమైనదిగా భావిస్తారు. అయినప్పటికీ, ఇది ఇటీవల నిజమైన ఇతీరియము మెయిన్‌నెట్ కోసం మాత్రమే అమలు చేయబడింది మరియు ప్రూఫ్-ఆఫ్-వర్క్ కంటే ఇది తక్కువ సమయం-నిరూపించబడింది. కింది విభాగాలు ప్రూఫ్-ఆఫ్-వర్క్‌తో పోలిస్తే ప్రూఫ్-ఆఫ్-స్టేక్ యొక్క భద్రతా నమూనా యొక్క లాభనష్టాలను చర్చిస్తాయి. + +### దాడికి అయ్యే ఖర్చు {#cost-to-attack} + +ప్రూఫ్-ఆఫ్-స్టేక్‌లో, వాలిడేటర్లు స్మార్ట్ కాంట్రాక్ట్‌లో కనీసం 32 ETHను ఎస్క్రో ("స్టేక్") చేయాల్సి ఉంటుంది. తప్పుగా ప్రవర్తించే వాలిడేటర్లను శిక్షించడానికి ఇతీరియము స్టేక్ చేసిన ఈథర్‌ను నాశనం చేయగలదు. ఏకాభిప్రాయానికి రావడానికి, మొత్తం స్టేక్ చేసిన ఈథర్‌లో కనీసం 66% ఒక నిర్దిష్ట బ్లాక్‌ల సెట్‌కు అనుకూలంగా ఓటు వేయాలి. స్టేక్‌లో >=66% ఓటు వేసిన బ్లాక్‌లు "ఫైనలైజ్డ్" అవుతాయి, అంటే వాటిని తీసివేయడం లేదా పునర్వ్యవస్థీకరించడం సాధ్యం కాదు. + +నెట్‌వర్క్‌పై దాడి చేయడం అంటే చైన్ ఫైనలైజ్ అవ్వకుండా నిరోధించడం లేదా కానానికల్ చైన్‌లో బ్లాక్‌ల యొక్క నిర్దిష్ట సంస్థను నిర్ధారించడం, ఇది దాడి చేసేవారికి ఏదో ఒక విధంగా ప్రయోజనం చేకూరుస్తుంది. దీనికి దాడి చేసేవారు పెద్ద మొత్తంలో ఈథర్‌ను కూడబెట్టుకుని దానితో నేరుగా ఓటు వేయడం ద్వారా లేదా నిజాయితీ గల వాలిడేటర్లను ఒక నిర్దిష్ట మార్గంలో ఓటు వేసేలా మోసగించడం ద్వారా నిజాయితీ ఏకాభిప్రాయ మార్గాన్ని మళ్లించాల్సి ఉంటుంది. నిజాయితీ గల వాలిడేటర్లను మోసగించే అధునాతన, తక్కువ-సంభావ్యత దాడులు పక్కన పెడితే, ఇతీరియముపై దాడి చేయడానికి అయ్యే ఖర్చు దాడి చేసేవారు తమకు అనుకూలంగా ఏకాభిప్రాయాన్ని ప్రభావితం చేయడానికి కూడబెట్టుకోవాల్సిన స్టేక్ ఖర్చు. + +దాడి యొక్క అత్యల్ప ఖర్చు మొత్తం స్టేక్‌లో >33%. మొత్తం స్టేక్‌లో >33% ఉన్న దాడి చేసేవారు కేవలం ఆఫ్‌లైన్‌కు వెళ్లడం ద్వారా ఫైనాలిటీ ఆలస్యానికి కారణం కావచ్చు. ఇది నెట్‌వర్క్‌కు సాపేక్షంగా చిన్న సమస్య, ఎందుకంటే "ఇనాక్టివిటీ లీక్" అని పిలువబడే ఒక యంత్రాంగం ఉంది, ఇది ఆన్‌లైన్ మెజారిటీ స్టేక్‌లో 66% ప్రాతినిధ్యం వహించి చైన్‌ను మళ్లీ ఫైనలైజ్ చేసే వరకు ఆఫ్‌లైన్ వాలిడేటర్ల నుండి స్టేక్‌ను లీక్ చేస్తుంది. ఒక దాడి చేసేవారు బ్లాక్ ప్రొడ్యూసర్‌గా ఉండమని అడిగినప్పుడు ఒకదానికి బదులుగా రెండు బ్లాక్‌లను సృష్టించడం ద్వారా మరియు వారి అన్ని వాలిడేటర్లతో డబుల్-ఓటు వేయడం ద్వారా మొత్తం స్టేక్‌లో 33% కంటే కొంచెం ఎక్కువగా ఉండి డబుల్ ఫైనాలిటీకి కారణం కావడం కూడా సిద్ధాంతపరంగా సాధ్యమే. ప్రతి ఫోర్క్‌కు మిగిలిన నిజాయితీ గల వాలిడేటర్లలో 50% మాత్రమే ప్రతి బ్లాక్‌ను మొదట చూడవలసి ఉంటుంది, కాబట్టి వారు తమ సందేశాలను సరిగ్గా సమయపాలన చేయగలిగితే, వారు రెండు ఫోర్క్‌లను ఫైనలైజ్ చేయగలరు. ఇది విజయానికి తక్కువ సంభావ్యతను కలిగి ఉంది, కానీ ఒక దాడి చేసేవారు డబుల్-ఫైనాలిటీకి కారణం కాగలిగితే, ఇతీరియము సంఘం ఒక ఫోర్క్‌ను అనుసరించాలని నిర్ణయించుకోవాల్సి ఉంటుంది, ఈ సందర్భంలో దాడి చేసేవారి వాలిడేటర్లు తప్పనిసరిగా మరొక ఫోర్క్‌లో స్లాష్ చేయబడతాయి. + +మొత్తం స్టేక్‌లో >33% తో, ఒక దాడి చేసేవారికి ఇతీరియము నెట్‌వర్క్‌పై చిన్న (ఫైనాలిటీ ఆలస్యం) లేదా మరింత తీవ్రమైన (డబుల్ ఫైనాలిటీ) ప్రభావాన్ని చూపే అవకాశం ఉంది. నెట్‌వర్క్‌లో 14,000,000 ETH కంటే ఎక్కువ స్టేక్ చేయబడి మరియు $1000/ETH ప్రతినిధి ధరతో, ఈ దాడులను చేయడానికి కనీస ఖర్చు `1000 x 14,000,000 x 0.33 = $4,620,000,000`. దాడి చేసేవారు స్లాషింగ్ ద్వారా ఈ డబ్బును కోల్పోతారు మరియు నెట్‌వర్క్ నుండి బహిష్కరించబడతారు. మళ్లీ దాడి చేయడానికి, వారు స్టేక్‌లో >33% కూడబెట్టుకోవాలి (మళ్లీ) మరియు దానిని బర్న్ చేయాలి (మళ్లీ). నెట్‌వర్క్‌పై దాడి చేయడానికి ప్రతి ప్రయత్నానికి >$4.6 బిలియన్లు ఖర్చవుతుంది ($1000/ETH మరియు 14M ETH స్టేక్ చేసినప్పుడు). దాడి చేసేవారు స్లాష్ చేయబడినప్పుడు నెట్‌వర్క్ నుండి కూడా బహిష్కరించబడతారు, మరియు వారు తిరిగి చేరడానికి ఒక యాక్టివేషన్ క్యూలో చేరాల్సి ఉంటుంది. అంటే పునరావృత దాడి రేటు దాడి చేసేవారు మొత్తం స్టేక్‌లో >33% కూడబెట్టుకోగల రేటుకు మాత్రమే కాకుండా, వారి వాలిడేటర్లందరినీ నెట్‌వర్క్‌లోకి ఆన్‌బోర్డ్ చేయడానికి పట్టే సమయానికి కూడా పరిమితం చేయబడింది. దాడి చేసేవారు దాడి చేసిన ప్రతిసారీ, వారు చాలా పేదలుగా మారతారు, మరియు మిగిలిన సంఘం ధనవంతులవుతుంది, ఫలితంగా వచ్చే సరఫరా షాక్‌కు ధన్యవాదాలు. + +51% దాడులు లేదా మొత్తం స్టేక్‌లో 66%తో ఫైనాలిటీ రివర్షన్ వంటి ఇతర దాడులకు గణనీయంగా ఎక్కువ ETH అవసరం మరియు దాడి చేసేవారికి చాలా ఖరీదైనవి. + +దీన్ని ప్రూఫ్-ఆఫ్-వర్క్‌తో పోల్చండి. ప్రూఫ్-ఆఫ్-వర్క్ ఇతీరియముపై దాడిని ప్రారంభించడానికి అయ్యే ఖర్చు మొత్తం నెట్‌వర్క్ హాష్ రేట్‌లో >50% ని స్థిరంగా కలిగి ఉండటానికి అయ్యే ఖర్చు. ఇది ఇతర మైనర్లను అధిగమించి ప్రూఫ్-ఆఫ్-వర్క్ పరిష్కారాలను స్థిరంగా లెక్కించడానికి తగినంత కంప్యూటింగ్ శక్తి యొక్క హార్డ్‌వేర్ మరియు రన్నింగ్ ఖర్చులకు సమానం. ఇతీరియము ఎక్కువగా ASICల కంటే GPUలను ఉపయోగించి మైనింగ్ చేయబడింది, ఇది ఖర్చును తగ్గించింది (అయితే ఇతీరియము ప్రూఫ్-ఆఫ్-వర్క్‌లోనే ఉండి ఉంటే, ASIC మైనింగ్ మరింత ప్రాచుర్యం పొంది ఉండవచ్చు). ఒక ప్రత్యర్థి ప్రూఫ్-ఆఫ్-వర్క్ ఇతీరియము నెట్‌వర్క్‌పై దాడి చేయడానికి చాలా హార్డ్‌వేర్‌ను కొనుగోలు చేసి, దానిని నడపడానికి విద్యుత్తు కోసం చెల్లించవలసి ఉంటుంది, కానీ మొత్తం ఖర్చు దాడిని ప్రారంభించడానికి తగినంత ETHను కూడబెట్టడానికి అవసరమైన ఖర్చు కంటే తక్కువగా ఉంటుంది. ప్రూఫ్-ఆఫ్-స్టేక్ కంటే ప్రూఫ్-ఆఫ్-వర్క్‌పై 51% దాడి ~[20x తక్కువ](https://youtu.be/1m12zgJ42dI?t=1562) ఖరీదైనది. దాడిని గుర్తించి, వారి మార్పులను తొలగించడానికి చైన్ హార్డ్-ఫోర్క్ చేయబడితే, దాడి చేసేవారు అదే హార్డ్‌వేర్‌ను పదేపదే ఉపయోగించి కొత్త ఫోర్క్‌పై దాడి చేయవచ్చు. + +### సంక్లిష్టత {#complexity} + +ప్రూఫ్-ఆఫ్-స్టేక్ ప్రూఫ్-ఆఫ్-వర్క్ కంటే చాలా సంక్లిష్టమైనది. ఇది ప్రూఫ్-ఆఫ్-వర్క్‌కు అనుకూలంగా ఒక పాయింట్ కావచ్చు, ఎందుకంటే సరళమైన ప్రోటోకాల్స్‌లోకి అనుకోకుండా బగ్‌లు లేదా అనుకోని ప్రభావాలను ప్రవేశపెట్టడం కష్టం. అయినప్పటికీ, సంవత్సరాల పరిశోధన మరియు అభివృద్ధి, అనుకరణలు మరియు టెస్టునెట్ అమలుల ద్వారా సంక్లిష్టతను అదుపులోకి తీసుకువచ్చారు. ప్రూఫ్-ఆఫ్-స్టేక్ ప్రోటోకాల్ ఐదు వేర్వేరు బృందాలచే (ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయం లేయర్‌లలో ప్రతిదానిపై) ఐదు ప్రోగ్రామింగ్ భాషలలో స్వతంత్రంగా అమలు చేయబడింది, ఇది క్లయింట్ బగ్‌లకు వ్యతిరేకంగా స్థితిస్థాపకతను అందిస్తుంది. + +ప్రూఫ్-ఆఫ్-స్టేక్ ఏకాభిప్రాయ తర్కాన్ని సురక్షితంగా అభివృద్ధి చేయడానికి మరియు పరీక్షించడానికి, ఇతీరియము మెయిన్‌నెట్‌లో ప్రూఫ్-ఆఫ్-స్టేక్ అమలు చేయడానికి రెండు సంవత్సరాల ముందు బీకాన్ చైన్ ప్రారంభించబడింది. బీకాన్ చైన్ ప్రూఫ్-ఆఫ్-స్టేక్ పరీక్ష కోసం ఒక శాండ్‌బాక్స్‌గా పనిచేసింది, ఎందుకంటే ఇది ప్రూఫ్-ఆఫ్-స్టేక్ ఏకాభిప్రాయ తర్కాన్ని అమలు చేసే ప్రత్యక్ష బ్లాక్‌చైన్, కానీ నిజమైన ఇతీరియము లావాదేవీలను తాకకుండా - ప్రభావవంతంగా కేవలం దానిపైనే ఏకాభిప్రాయానికి వస్తుంది. ఇది తగినంత సమయం పాటు స్థిరంగా మరియు బగ్-రహితంగా ఉన్న తర్వాత, బీకాన్ చైన్ ఇతీరియము మెయిన్‌నెట్‌తో "విలీనం" చేయబడింది. ఇదంతా ప్రూఫ్-ఆఫ్-స్టేక్ యొక్క సంక్లిష్టతను అదుపులోకి తీసుకురావడానికి దోహదపడింది, తద్వారా అనుకోని పరిణామాలు లేదా క్లయింట్ బగ్‌ల ప్రమాదం చాలా తక్కువగా ఉంది. + +### దాడి ఉపరితలం {#attack-surface} + +ప్రూఫ్-ఆఫ్-స్టేక్ ప్రూఫ్-ఆఫ్-వర్క్ కంటే సంక్లిష్టమైనది, అంటే నిర్వహించడానికి మరిన్ని సంభావ్య దాడి వెక్టర్‌లు ఉన్నాయి. క్లయింట్‌లను కనెక్ట్ చేసే ఒక పీర్-టు-పీర్ నెట్‌వర్క్‌కు బదులుగా, రెండు ఉన్నాయి, ప్రతి ఒక్కటి ఒక ప్రత్యేక ప్రోటోకాల్‌ను అమలు చేస్తుంది. ప్రతి స్లాట్‌లో ఒక బ్లాక్‌ను ప్రతిపాదించడానికి ఒక నిర్దిష్ట వాలిడేటర్‌ను ముందే ఎంచుకోవడం అనేది డీనియల్-ఆఫ్-సర్వీస్ కు అవకాశం సృష్టిస్తుంది, ఇక్కడ పెద్ద మొత్తంలో నెట్‌వర్క్ ట్రాఫిక్ ఆ నిర్దిష్ట వాలిడేటర్‌ను ఆఫ్‌లైన్‌లో పడగొడుతుంది. + +దాడి చేసేవారు తమ బ్లాక్‌లు లేదా అటెస్టేషన్‌ల విడుదలను జాగ్రత్తగా సమయం కేటాయించే మార్గాలు కూడా ఉన్నాయి, తద్వారా అవి నిజాయితీ గల నెట్‌వర్క్‌లో కొంత నిష్పత్తిలో స్వీకరించబడతాయి, వారిని నిర్దిష్ట మార్గాల్లో ఓటు వేయడానికి ప్రభావితం చేస్తాయి. చివరగా, ఒక దాడి చేసేవారు కేవలం స్టేక్ చేయడానికి మరియు ఏకాభిప్రాయ యంత్రాంగంపై ఆధిపత్యం చెలాయించడానికి తగినంత ETHను కూడబెట్టుకోవచ్చు. ఈ [దాడి వెక్టర్‌లలో ప్రతిదానికి అనుబంధ రక్షణలు](/developers/docs/consensus-mechanisms/pos/attack-and-defense) ఉన్నాయి, కానీ అవి ప్రూఫ్-ఆఫ్-వర్క్ కింద రక్షించబడటానికి ఉనికిలో లేవు. + +## వికేంద్రీకరణ {#decentralization} + +ప్రూఫ్-ఆఫ్-స్టేక్ ప్రూఫ్-ఆఫ్-వర్క్ కంటే ఎక్కువ వికేంద్రీకరించబడింది, ఎందుకంటే మైనింగ్ హార్డ్‌వేర్ ఆర్మ్స్ రేసులు వ్యక్తులు మరియు చిన్న సంస్థలను ధర నుండి బయటకు నెట్టివేస్తాయి. సాధారణ హార్డ్‌వేర్‌తో ఎవరైనా సాంకేతికంగా మైనింగ్ ప్రారంభించగలిగినప్పటికీ, సంస్థాగత మైనింగ్ కార్యకలాపాలతో పోలిస్తే ఏదైనా రివార్డు పొందే సంభావ్యత చాలా తక్కువగా ఉంటుంది. ప్రూఫ్-ఆఫ్-స్టేక్‌తో, స్టేకింగ్ ఖర్చు మరియు ఆ స్టేక్‌పై శాతం రాబడి అందరికీ ఒకే విధంగా ఉంటుంది. ప్రస్తుతం ఒక వాలిడేటర్‌ను నడపడానికి 32 ETH ఖర్చవుతుంది. + +మరోవైపు, లిక్విడ్ స్టేకింగ్ డెరివేటివ్‌ల ఆవిష్కరణ కేంద్రీకరణ ఆందోళనలకు దారితీసింది, ఎందుకంటే కొన్ని పెద్ద ప్రొవైడర్లు పెద్ద మొత్తంలో స్టేక్ చేసిన ETHను నిర్వహిస్తాయి. ఇది సమస్యాత్మకమైనది మరియు వీలైనంత త్వరగా సరిచేయబడాలి, కానీ ఇది కనిపించే దానికంటే సూక్ష్మమైనది కూడా. కేంద్రీకృత స్టేకింగ్ ప్రొవైడర్లకు తప్పనిసరిగా వాలిడేటర్ల కేంద్రీకృత నియంత్రణ ఉండదు - తరచుగా ఇది ప్రతి పాల్గొనేవారికి వారి స్వంత 32 ETH అవసరం లేకుండా అనేక స్వతంత్ర నోడ్ ఆపరేటర్లు స్టేక్ చేయగల ETH యొక్క కేంద్ర పూల్‌ను సృష్టించడానికి ఒక మార్గం మాత్రమే. + +ఇతీరియముకు ఉత్తమ ఎంపిక ఏమిటంటే, వికేంద్రీకరణను గరిష్టీకరించడానికి వాలిడేటర్లను ఇంటి కంప్యూటర్‌లలో స్థానికంగా నడపడం. అందుకే ఇతీరియము ఒక నోడ్/వాలిడేటర్‌ను నడపడానికి హార్డ్‌వేర్ అవసరాలను పెంచే మార్పులను ప్రతిఘటిస్తుంది. + +## స్థిరత్వం {#sustainability} + +ప్రూఫ్-ఆఫ్-స్టేక్ అనేది బ్లాక్‌చైన్‌ను సురక్షితం చేయడానికి కార్బన్-చౌక మార్గం. ప్రూఫ్-ఆఫ్-వర్క్ కింద మైనర్లు ఒక బ్లాక్‌ను మైన్ చేసే హక్కు కోసం పోటీపడతారు. మైనర్లు వేగంగా గణనలను చేయగలిగినప్పుడు మరింత విజయవంతమవుతారు, హార్డ్‌వేర్ మరియు శక్తి వినియోగంలో పెట్టుబడిని ప్రోత్సహిస్తారు. ఇది ప్రూఫ్-ఆఫ్-స్టేక్‌కు మారడానికి ముందు ఇతీరియము కోసం గమనించబడింది. ప్రూఫ్-ఆఫ్-స్టేక్‌కు మారడానికి కొద్దిసేపటి ముందు, ఇతీరియము సుమారుగా 78 TWh/yr వినియోగిస్తోంది - ఒక చిన్న దేశం అంత. అయినప్పటికీ, ప్రూఫ్-ఆఫ్-స్టేక్‌కు మారడం ఈ శక్తి వ్యయాన్ని ~99.98% తగ్గించింది. ప్రూఫ్-ఆఫ్-స్టేక్ ఇతీరియమును శక్తి-సామర్థ్య, తక్కువ కార్బన్ ప్లాట్‌ఫారమ్‌గా మార్చింది. + +[ఇతీరియము యొక్క శక్తి వినియోగం గురించి మరింత](/energy-consumption) + +## జారీ {#issuance} + +ప్రూఫ్-ఆఫ్-స్టేక్ ఇతీరియము ప్రూఫ్-ఆఫ్-వర్క్ ఇతీరియము కంటే చాలా తక్కువ నాణేలను జారీ చేయడం ద్వారా దాని భద్రత కోసం చెల్లించగలదు, ఎందుకంటే వాలిడేటర్లు అధిక విద్యుత్ ఖర్చులను చెల్లించాల్సిన అవసరం లేదు. ఫలితంగా, పెద్ద మొత్తంలో ETH బర్న్ చేయబడినప్పుడు ETH దాని ద్రవ్యోల్బణాన్ని తగ్గించగలదు లేదా ద్రవ్యోల్బణ నిరోధకంగా కూడా మారగలదు. తక్కువ ద్రవ్యోల్బణ స్థాయిలు అంటే ప్రూఫ్-ఆఫ్-వర్క్ కింద ఉన్న దాని కంటే ఇతీరియము యొక్క భద్రత చౌకైనది. + +## దృశ్య అభ్యాసకులా? {#visual-learner} + +ప్రూఫ్-ఆఫ్-వర్క్ కంటే ప్రూఫ్-ఆఫ్-స్టేక్ యొక్క ప్రయోజనాలను జస్టిన్ డ్రేక్ వివరించడాన్ని చూడండి: + + + +## మరింత సమాచారం {#further-reading} + +- [విటాలిక్ యొక్క ప్రూఫ్-ఆఫ్-స్టేక్ డిజైన్ ఫిలాసఫీ](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51) +- [విటాలిక్ యొక్క ప్రూఫ్-ఆఫ్-స్టేక్ FAQs](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-is-proof-of-stake) +- [pos వర్సెస్ pow పై "సింప్లీ ఎక్స్ప్లెయిన్డ్" వీడియో](https://www.youtube.com/watch?v=M3EFi_POhps) diff --git a/public/content/translations/te/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md new file mode 100644 index 00000000000..eaefda97b13 --- /dev/null +++ b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md @@ -0,0 +1,91 @@ +--- +title: "ప్రూఫ్-ఆఫ్-స్టేక్ రివార్డులు మరియు జరిమానాలు" +description: "ప్రూఫ్-ఆఫ్-స్టేక్ ఇతీరియంలోని ఇన్-ప్రోటోకాల్ ప్రోత్సాహకాల గురించి తెలుసుకోండి." +lang: te +--- + +ఇతీరియము దాని స్థానిక క్రిప్టోకరెన్సీ, ఈథర్ (ETH)ని ఉపయోగించి భద్రపరచబడింది. బ్లాక్‌లను ధృవీకరించడంలో మరియు చైన్ యొక్క హెడ్‌ను గుర్తించడంలో పాల్గొనాలని కోరుకునే నోడ్ ఆపరేటర్లు, ఇతీరియములోని [డిపాజిట్ కాంట్రాక్ట్](/staking/deposit-contract/)లో ఈథర్‌ను డిపాజిట్ చేస్తారు. పీర్-టు-పీర్ నెట్‌వర్క్‌లో స్వీకరించిన కొత్త బ్లాక్‌ల చెల్లుబాటును తనిఖీ చేసే మరియు చైన్ యొక్క హెడ్‌ను గుర్తించడానికి ఫోర్క్-ఛాయిస్ అల్గారిథమ్‌ను వర్తింపజేసే వాలిడేటర్ సాఫ్ట్‌వేర్‌ను అమలు చేయడానికి వారికి ఈథర్‌లో చెల్లించబడుతుంది. + +ఒక వాలిడేటర్‌కు రెండు ప్రాథమిక పాత్రలు ఉన్నాయి: 1) కొత్త బ్లాక్‌లను తనిఖీ చేయడం మరియు అవి చెల్లుబాటు అయితే వాటికి “ధృవీకరించడం”, 2) మొత్తం వాలిడేటర్ పూల్ నుండి యాదృచ్ఛికంగా ఎంపిక చేయబడినప్పుడు కొత్త బ్లాక్‌లను ప్రతిపాదించడం. అడిగినప్పుడు ఈ పనులలో దేనినైనా చేయడంలో వాలిడేటర్ విఫలమైతే, వారు ఈథర్ చెల్లింపును కోల్పోతారు. వాలిడేటర్‌లకు కొన్నిసార్లు సంతకాల సమూహనం మరియు సింక్ కమిటీలలో పాల్గొనడం వంటి పనులు కూడా కేటాయించబడతాయి. + +ఒకే స్లాట్ కోసం బహుళ బ్లాక్‌లను ప్రతిపాదించడం లేదా అదే స్లాట్ కోసం బహుళ బ్లాక్‌లకు ధృవీకరించడం వంటి కొన్ని చర్యలు కూడా ఉన్నాయి, అవి ప్రమాదవశాత్తు చేయడం చాలా కష్టం మరియు కొంత దురుద్దేశాన్ని సూచిస్తాయి. ఇవి “స్లాష్ చేయగల” ప్రవర్తనలు, దీని ఫలితంగా వాలిడేటర్ నెట్‌వర్క్ నుండి తీసివేయబడటానికి ముందు కొంత మొత్తంలో ఈథర్ (1 ETH వరకు) బర్న్ చేయబడుతుంది, దీనికి 36 రోజులు పడుతుంది. స్లాష్ చేయబడిన వాలిడేటర్ యొక్క ఈథర్ నిష్క్రమణ కాలంలో నెమ్మదిగా తగ్గిపోతుంది, కానీ 18వ రోజున వారు “సహసంబంధ జరిమానా”ను పొందుతారు, ఇది అదే సమయంలో ఎక్కువ మంది వాలిడేటర్లు స్లాష్ చేయబడినప్పుడు పెద్దదిగా ఉంటుంది. ఏకాభిప్రాయం మెకానిజం యొక్క ప్రోత్సాహక నిర్మాణం అందువల్ల నిజాయితీకి చెల్లిస్తుంది మరియు చెడ్డ నటులను శిక్షిస్తుంది. + +అన్ని రివార్డులు మరియు జరిమానాలు ప్రతి ఎపోక్‌కు ఒకసారి వర్తించబడతాయి. + +మరిన్ని వివరాల కోసం చదవడం కొనసాగించండి... + +## రివార్డులు మరియు జరిమానాలు {#rewards} + +### బహుమతులు {#rewards} + +వాలిడేటర్లు ఇతర వాలిడేటర్ల మెజారిటీకి అనుగుణంగా ఉండే ఓట్లను వేసినప్పుడు, వారు బ్లాక్‌లను ప్రతిపాదించినప్పుడు మరియు వారు సింక్ కమిటీలలో పాల్గొన్నప్పుడు రివార్డులను పొందుతారు. ప్రతి ఎపోక్‌లోని రివార్డుల విలువ `base_reward` నుండి లెక్కించబడుతుంది. ఇది ఇతర రివార్డులు లెక్కించబడే బేస్ యూనిట్. `base_reward` అనేది ప్రతి ఎపోక్‌కు సరైన పరిస్థితులలో ఒక వాలిడేటర్ అందుకున్న సగటు రివార్డును సూచిస్తుంది. ఇది వాలిడేటర్ యొక్క ప్రభావవంతమైన బ్యాలెన్స్ మరియు క్రియాశీల వాలిడేటర్ల మొత్తం సంఖ్య నుండి ఈ క్రింది విధంగా లెక్కించబడుతుంది: + +``` +base_reward = effective_balance * (base_reward_factor / (base_rewards_per_epoch * sqrt(sum(active_balance)))) +``` + +ఇక్కడ `base_reward_factor` 64, `base_rewards_per_epoch` 4 మరియు `sum(active balance)` అనేది అన్ని క్రియాశీల వాలిడేటర్లలో మొత్తం స్టేక్ చేయబడిన ఈథర్. + +అంటే బేస్ రివార్డు వాలిడేటర్ యొక్క ప్రభావవంతమైన బ్యాలెన్స్‌కు అనులోమానుపాతంలో మరియు నెట్‌వర్క్‌లోని వాలిడేటర్ల సంఖ్యకు విలోమానుపాతంలో ఉంటుంది. ఎక్కువ వాలిడేటర్లు, మొత్తం ఇష్యూయెన్స్ అంత ఎక్కువ (`sqrt(N)` వలె) కానీ ప్రతి వాలిడేటర్‌కు `base_reward` అంత చిన్నది (`1/sqrt(N)` వలె). ఈ కారకాలు స్టేకింగ్ నోడ్ కోసం APRని ప్రభావితం చేస్తాయి. [Vitalik's notes](https://notes.ethereum.org/@vbuterin/rkhCgQteN?type=view#Base-rewards)లో దీనికి గల హేతుబద్ధతను చదవండి. + +మొత్తం రివార్డు ఐదు భాగాల మొత్తంగా లెక్కించబడుతుంది, ప్రతి భాగం మొత్తం రివార్డుకు ఎంత జోడిస్తుందో నిర్ణయించే వెయిటింగ్‌ను కలిగి ఉంటుంది. భాగాలు: + +``` +1. సోర్స్ ఓటు: వాలిడేటర్ సరైన సోర్స్ చెక్‌పాయింట్ కోసం సకాలంలో ఓటు వేశారు +2. టార్గెట్ ఓటు: వాలిడేటర్ సరైన టార్గెట్ చెక్‌పాయింట్ కోసం సకాలంలో ఓటు వేశారు +3. హెడ్ ఓటు: వాలిడేటర్ సరైన హెడ్ బ్లాక్ కోసం సకాలంలో ఓటు వేశారు +4. సింక్ కమిటీ రివార్డు: వాలిడేటర్ ఒక సింక్ కమిటీలో పాల్గొన్నారు +5. ప్రపోజర్ రివార్డు: వాలిడేటర్ సరైన స్లాట్‌లో ఒక బ్లాక్‌ను ప్రతిపాదించారు +``` + +ప్రతి భాగం కోసం వెయిటింగ్‌లు ఈ క్రింది విధంగా ఉన్నాయి: + +``` +TIMELY_SOURCE_WEIGHT uint64(14) +TIMELY_TARGET_WEIGHT uint64(26) +TIMELY_HEAD_WEIGHT uint64(14) +SYNC_REWARD_WEIGHT uint64(2) +PROPOSER_WEIGHT uint64(8) +``` + +ఈ వెయిట్స్ మొత్తం 64. రివార్డు వర్తించే వెయిట్స్ మొత్తాన్ని 64తో భాగించడం ద్వారా లెక్కించబడుతుంది. సకాలంలో సోర్స్, టార్గెట్ మరియు హెడ్ ఓట్లు వేసి, ఒక బ్లాక్‌ను ప్రతిపాదించి, సింక్ కమిటీలో పాల్గొన్న వాలిడేటర్ `64/64 * base_reward == base_reward`ని అందుకోవచ్చు. అయితే, ఒక వాలిడేటర్ సాధారణంగా బ్లాక్ ప్రపోజర్ కాదు, కాబట్టి వారి గరిష్ట రివార్డు `64-8 /64 * base_reward == 7/8 * base_reward`. బ్లాక్ ప్రపోజర్‌లు లేదా సింక్ కమిటీలో లేని వాలిడేటర్లు `64-8-2 / 64 * base_reward == 6.75/8 * base_reward`ని అందుకోవచ్చు. + +వేగవంతమైన ధృవీకరణలను ప్రోత్సహించడానికి అదనపు రివార్డు జోడించబడుతుంది. ఇది `inclusion_delay_reward`. దీని విలువ `base_reward`ను `1/delay`తో గుణించగా వచ్చే దానికి సమానం, ఇక్కడ `delay` అనేది బ్లాక్ ప్రతిపాదన మరియు ధృవీకరణను వేరుచేసే స్లాట్‌ల సంఖ్య. ఉదాహరణకు, బ్లాక్ ప్రతిపాదన యొక్క ఒక స్లాట్‌లో ధృవీకరణ సమర్పించబడితే, ధృవీకరించే వారు `base_reward * 1/1 == base_reward`ని అందుకుంటారు. ధృవీకరణ తదుపరి స్లాట్‌లో వస్తే, ధృవీకరించే వారు `base_reward * 1/2`ని అందుకుంటారు మరియు అలా కొనసాగుతుంది. + +బ్లాక్ ప్రపోజర్‌లు బ్లాక్‌లో చేర్చబడిన **ప్రతి చెల్లుబాటు అయ్యే ధృవీకరణ**కు `8 / 64 * base_reward`ను అందుకుంటారు, కాబట్టి రివార్డు యొక్క వాస్తవ విలువ ధృవీకరించే వాలిడేటర్ల సంఖ్యతో స్కేల్ అవుతుంది. బ్లాక్ ప్రపోజర్‌లు తమ ప్రతిపాదిత బ్లాక్‌లో ఇతర వాలిడేటర్ల దుష్ప్రవర్తనకు సంబంధించిన సాక్ష్యాలను చేర్చడం ద్వారా తమ రివార్డును కూడా పెంచుకోవచ్చు. ఈ రివార్డులు వాలిడేటర్ నిజాయితీని ప్రోత్సహించే “ప్రోత్సాహకాలు”. స్లాషింగ్‌ను చేర్చే బ్లాక్ ప్రపోజర్‌కు `slashed_validators_effective_balance / 512`తో రివార్డు ఇవ్వబడుతుంది. + +### జరిమానాలు {#penalties} + +ఇప్పటివరకు మేము సంపూర్ణంగా సరిగ్గా ప్రవర్తించే వాలిడేటర్లను పరిగణించాము, కానీ సకాలంలో హెడ్, సోర్స్ మరియు టార్గెట్ ఓట్లు వేయని లేదా నెమ్మదిగా చేసే వాలిడేటర్ల గురించి ఏమిటి? + +టార్గెట్ మరియు సోర్స్ ఓట్లను కోల్పోయినందుకు జరిమానాలు, ధృవీకరించే వారు వాటిని సమర్పించి ఉంటే అందుకునే రివార్డులకు సమానంగా ఉంటాయి. అంటే వారి బ్యాలెన్స్‌కు రివార్డు జోడించబడటానికి బదులుగా, వారి బ్యాలెన్స్ నుండి సమానమైన విలువ తీసివేయబడుతుంది. హెడ్ ఓటును కోల్పోయినందుకు ఎటువంటి జరిమానా లేదు (అంటే, హెడ్ ఓట్లకు మాత్రమే రివార్డు ఇవ్వబడుతుంది, ఎప్పుడూ జరిమానా విధించబడదు). `inclusion_delay`తో ఎటువంటి జరిమానా సంబంధం లేదు - రివార్డు కేవలం వాలిడేటర్ బ్యాలెన్స్‌కు జోడించబడదు. బ్లాక్‌ను ప్రతిపాదించడంలో విఫలమైనందుకు కూడా ఎటువంటి జరిమానా లేదు. + +[consensus specs](https://github.com/ethereum/consensus-specs/blob/dev/specs/altair/beacon-chain.md)లో రివార్డులు మరియు జరిమానాల గురించి మరింత చదవండి. బెల్లాట్రిక్స్ అప్‌గ్రేడ్‌లో రివార్డులు మరియు జరిమానాలు సర్దుబాటు చేయబడ్డాయి - ఈ [Peep an EIP వీడియో](https://www.youtube.com/watch?v=iaAEGs1DMgQ)లో డానీ ర్యాన్ మరియు విటాలిక్ దీని గురించి చర్చించడాన్ని చూడండి. + +## స్లాషింగ్ {#slashing} + +స్లాషింగ్ అనేది మరింత తీవ్రమైన చర్య, దీని ఫలితంగా నెట్‌వర్క్ నుండి ఒక వాలిడేటర్‌ను బలవంతంగా తొలగించడం మరియు వారి స్టేక్ చేయబడిన ఈథర్ నష్టం జరుగుతుంది. ఒక వాలిడేటర్‌ను మూడు విధాలుగా స్లాష్ చేయవచ్చు, అవన్నీ బ్లాక్‌ల యొక్క నిజాయితీ లేని ప్రతిపాదన లేదా ధృవీకరణకు సమానం: + +- ఒకే స్లాట్ కోసం రెండు వేర్వేరు బ్లాక్‌లను ప్రతిపాదించడం మరియు సంతకం చేయడం ద్వారా +- మరొక బ్లాక్‌ను "చుట్టుముట్టే" బ్లాక్‌కు ధృవీకరించడం ద్వారా (చరిత్రను సమర్థవంతంగా మార్చడం) +- ఒకే బ్లాక్ కోసం ఇద్దరు అభ్యర్థులకు ధృవీకరించడం ద్వారా "డబుల్ ఓటింగ్" చేయడం ద్వారా + +ఈ చర్యలు కనుగొనబడితే, వాలిడేటర్ స్లాష్ చేయబడతారు. అంటే 32 ETH వాలిడేటర్ కోసం 0.0078125 తక్షణమే బర్న్ చేయబడుతుంది (యాక్టివ్ బ్యాలెన్స్‌తో సరళంగా స్కేల్ చేయబడింది), ఆపై 36 రోజుల తొలగింపు కాలం ప్రారంభమవుతుంది. ఈ తొలగింపు కాలంలో వాలిడేటర్ యొక్క స్టేక్ క్రమంగా తగ్గిపోతుంది. మధ్య-పాయింట్ (18వ రోజు) వద్ద అదనపు జరిమానా వర్తించబడుతుంది, దాని పరిమాణం స్లాషింగ్ ఈవెంట్‌కు ముందు 36 రోజులలో స్లాష్ చేయబడిన అన్ని వాలిడేటర్ల మొత్తం స్టేక్ చేయబడిన ఈథర్‌తో స్కేల్ అవుతుంది. అంటే ఎక్కువ మంది వాలిడేటర్లు స్లాష్ చేయబడినప్పుడు, స్లాష్ యొక్క పరిమాణం పెరుగుతుంది. గరిష్ట స్లాష్ అనేది స్లాష్ చేయబడిన అన్ని వాలిడేటర్ల పూర్తి ప్రభావవంతమైన బ్యాలెన్స్ (అంటే, చాలా మంది వాలిడేటర్లు స్లాష్ చేయబడుతుంటే వారు తమ మొత్తం స్టేక్‌ను కోల్పోవచ్చు). మరోవైపు, ఒకే, వివిక్త స్లాషింగ్ ఈవెంట్ వాలిడేటర్ యొక్క స్టేక్‌లో ఒక చిన్న భాగాన్ని మాత్రమే బర్న్ చేస్తుంది. స్లాష్ చేయబడిన వాలిడేటర్ల సంఖ్యతో స్కేల్ అయ్యే ఈ మిడ్‌పాయింట్ జరిమానాను "సహసంబంధ జరిమానా" అంటారు. + +## నిష్క్రియాత్మకత లీక్ {#inactivity-leak} + +ఏకాభిప్రాయం లేయర్ ఫైనలైజ్ చేయకుండా నాలుగు ఎపోక్‌ల కంటే ఎక్కువ గడిచిపోయినట్లయితే, "నిష్క్రియాత్మకత లీక్" అనే అత్యవసర ప్రోటోకాల్ సక్రియం చేయబడుతుంది. నిష్క్రియాత్మకత లీక్ యొక్క అంతిమ లక్ష్యం చైన్ ఫైనాలిటీని పునరుద్ధరించడానికి అవసరమైన పరిస్థితులను సృష్టించడం. పైన వివరించినట్లుగా, ఫైనాలిటీకి సోర్స్ మరియు టార్గెట్ చెక్‌పాయింట్లపై అంగీకరించడానికి మొత్తం స్టేక్ చేయబడిన ఈథర్‌లో 2/3 మెజారిటీ అవసరం. మొత్తం వాలిడేటర్లలో 1/3 కంటే ఎక్కువ మందిని సూచించే వాలిడేటర్లు ఆఫ్‌లైన్‌లోకి వెళ్లినా లేదా సరైన ధృవీకరణలను సమర్పించడంలో విఫలమైనా, 2/3 సూపర్‌మెజారిటీ చెక్‌పాయింట్‌లను ఫైనలైజ్ చేయడం సాధ్యం కాదు. నిష్క్రియాత్మకత లీక్ నిష్క్రియ వాలిడేటర్‌లకు చెందిన స్టేక్‌ను వారు మొత్తం స్టేక్‌లో 1/3 కంటే తక్కువ నియంత్రించే వరకు క్రమంగా తగ్గిపోయేలా చేస్తుంది, మిగిలిన క్రియాశీల వాలిడేటర్లు చైన్‌ను ఫైనలైజ్ చేయడానికి అనుమతిస్తుంది. నిష్క్రియ వాలిడేటర్ల పూల్ ఎంత పెద్దదైనా, మిగిలిన క్రియాశీల వాలిడేటర్లు చివరికి స్టేక్‌లో >2/3 నియంత్రిస్తాయి. స్టేక్ నష్టం అనేది నిష్క్రియ వాలిడేటర్లు వీలైనంత త్వరగా తిరిగి సక్రియం చేయడానికి ఒక బలమైన ప్రోత్సాహం! < 66% క్రియాశీల వాలిడేటర్లు బ్లాక్ చైను యొక్క ప్రస్తుత హెడ్‌పై ఏకాభిప్రాయంకు రాగలిగినప్పుడు మెడల్లా టెస్టునెట్‌లో ఒక నిష్క్రియాత్మకత లీక్ దృశ్యం ఎదురైంది. నిష్క్రియాత్మకత లీక్ సక్రియం చేయబడింది మరియు చివరికి ఫైనాలిటీ తిరిగి పొందబడింది! + +ఏకాభిప్రాయం మెకానిజం యొక్క రివార్డు, జరిమానా మరియు స్లాషింగ్ డిజైన్ వ్యక్తిగత వాలిడేటర్లను సరిగ్గా ప్రవర్తించడానికి ప్రోత్సహిస్తుంది. అయితే, ఈ డిజైన్ ఎంపికల నుండి బహుళ క్లయింట్‌లలో వాలిడేటర్ల సమాన పంపిణీని బలంగా ప్రోత్సహించే ఒక వ్యవస్థ ఉద్భవించింది మరియు సింగిల్-క్లయింట్ ఆధిపత్యాన్ని బలంగా నిరుత్సాహపరచాలి. + +## మరింత సమాచారం {#further-reading} + +- [ఇతీరియమును అప్‌గ్రేడ్ చేయడం: ప్రోత్సాహక లేయర్](https://eth2book.info/altair/part2/incentives) +- [ఇతీరియము యొక్క హైబ్రిడ్ కాస్పర్ ప్రోటోకాల్‌లో ప్రోత్సాహకాలు](https://arxiv.org/pdf/1903.04205.pdf) +- [విటాలిక్ యొక్క ఉల్లేఖన స్పెక్](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#rewards-and-penalties-1) +- [Eth2 స్లాషింగ్ నివారణ చిట్కాలు](https://medium.com/prysmatic-labs/eth2-slashing-prevention-tips-f6faa5025f50) +- [EIP-7251 కింద స్లాషింగ్ జరిమానాల విశ్లేషణ](https://ethresear.ch/t/slashing-penalty-analysis-eip-7251/16509) + +_మూలాలు_ + +- _[https://benjaminion.xyz/eth2-annotated-spec/phase0/beacon-chain/](https://benjaminion.xyz/eth2-annotated-spec/phase0/beacon-chain/)_ diff --git a/public/content/translations/te/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md new file mode 100644 index 00000000000..4262e371d45 --- /dev/null +++ b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md @@ -0,0 +1,39 @@ +--- +title: "బలహీనమైన ఆత్మీయత" +description: "బలహీనమైన సబ్జెక్టివిటీ యొక్క వివరణ మరియు PoS ఇతీరియములో దాని పాత్ర." +lang: te +--- + +బ్లాక్‌చైన్‌లలో సబ్జెక్టివిటీ అనేది ప్రస్తుత స్థితిపై అంగీకరించడానికి సామాజిక సమాచారంపై ఆధారపడటాన్ని సూచిస్తుంది. నెట్‌వర్క్‌లోని ఇతర పీర్స్ నుండి సేకరించిన సమాచారం ప్రకారం ఎంచుకోబడిన బహుళ చెల్లుబాటు అయ్యే ఫోర్కులు ఉండవచ్చు. దీనికి విరుద్ధం ఆబ్జెక్టివిటీ, ఇది చైన్‌లను సూచిస్తుంది, ఇక్కడ అన్ని నోడ్స్ వాటి కోడ్ చేయబడిన నియమాలను వర్తింపజేయడం ద్వారా తప్పనిసరిగా అంగీకరించే ఒకే ఒక చెల్లుబాటు అయ్యే చైన్ ఉంటుంది. బలహీనమైన సబ్జెక్టివిటీ అని పిలువబడే మూడవ స్థితి కూడా ఉంది. కొంత ప్రారంభ సమాచారం సామాజికంగా తిరిగి పొందిన తర్వాత నిష్పాక్షికంగా పురోగమించగల చైన్‌ను ఇది సూచిస్తుంది. + +## అవసరాలు {#prerequisites} + +ఈ పేజీని అర్థం చేసుకోవడానికి, ముందుగా [ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos/) యొక్క ప్రాథమిక అంశాలను అర్థం చేసుకోవడం అవసరం. + +## బలహీనమైన సబ్జెక్టివిటీ ఏ సమస్యలను పరిష్కరిస్తుంది? {#problems-ws-solves} + +ప్రూఫ్-ఆఫ్-స్టేక్ బ్లాక్‌చైన్‌లకు సబ్జెక్టివిటీ అంతర్లీనంగా ఉంటుంది ఎందుకంటే బహుళ ఫోర్కుల నుండి సరైన చైన్‌ను ఎంచుకోవడం చారిత్రక ఓట్లను లెక్కించడం ద్వారా జరుగుతుంది. ఇది బ్లాక్ చైనును అనేక దాడి వెక్టర్స్‌కు బహిర్గతం చేస్తుంది, వీటిలో లాంగ్-రేంజ్ దాడులు కూడా ఉన్నాయి, దీని ద్వారా చైన్‌లో చాలా ముందుగా పాల్గొన్న నోడ్స్ ప్రత్యామ్నాయ ఫోర్క్‌ను నిర్వహిస్తాయి, దానిని వారు చాలా తరువాత తమ స్వంత ప్రయోజనం కోసం విడుదల చేస్తారు. ప్రత్యామ్నాయంగా, 33% వాలిడేటర్లు తమ స్టేక్‌ను ఉపసంహరించుకుని, బ్లాక్‌లను ధృవీకరించడం మరియు ఉత్పత్తి చేయడం కొనసాగిస్తే, వారు కానానికల్ చైన్‌తో విభేదించే ప్రత్యామ్నాయ ఫోర్క్‌ను సృష్టించవచ్చు. కొత్త నోడ్స్ లేదా చాలా కాలంగా ఆఫ్‌లైన్‌లో ఉన్న నోడ్స్‌కు ఈ దాడి చేసే వాలిడేటర్లు తమ నిధులను ఉపసంహరించుకున్నారని తెలియకపోవచ్చు, కాబట్టి దాడి చేసేవారు వారిని తప్పు చైన్‌ను అనుసరించేలా మోసం చేయవచ్చు. ఈ దాడి వెక్టర్స్‌ను ఇతీరియము పరిష్కరించగలదు, దీనికోసం మెకానిజం యొక్క సబ్జెక్టివ్ అంశాలను—మరియు అందువల్ల విశ్వాస అంచనాలను—కనీస స్థాయికి తగ్గించే పరిమితులను విధిస్తుంది. + +## బలహీనమైన సబ్జెక్టివిటీ చెక్‌పాయింట్లు {#ws-checkpoints} + +ప్రూఫ్-ఆఫ్-స్టేక్ ఇతీరియములో "బలహీనమైన సబ్జెక్టివిటీ చెక్‌పాయింట్లు" ఉపయోగించడం ద్వారా బలహీనమైన సబ్జెక్టివిటీ అమలు చేయబడుతుంది. ఇవి స్టేట్ రూట్స్, నెట్‌వర్క్‌లోని అన్ని నోడ్స్ కానానికల్ చైన్‌లో ఉన్నాయని అంగీకరిస్తాయి. అవి జెనెసిస్ బ్లాక్‌ల వలె అదే "సార్వత్రిక సత్యం" ప్రయోజనాన్ని అందిస్తాయి, కానీ అవి బ్లాక్ చైనులో జెనెసిస్ స్థానంలో ఉండవు. ఫోర్క్ ఎంపిక అల్గారిథమ్ ఆ చెక్‌పాయింట్‌లో నిర్వచించబడిన బ్లాక్ చైను స్థితి సరైనదని మరియు అది ఆ పాయింట్ నుండి స్వతంత్రంగా మరియు నిష్పాక్షికంగా చైన్‌ను ధృవీకరిస్తుందని విశ్వసిస్తుంది. చెక్‌పాయింట్లు "రివర్ట్ పరిమితులు"గా పనిచేస్తాయి ఎందుకంటే బలహీన-సబ్జెక్టివిటీ చెక్‌పాయింట్ల ముందు ఉన్న బ్లాక్‌లను మార్చలేము. ఇది మెకానిజం డిజైన్‌లో భాగంగా లాంగ్-రేంజ్ ఫోర్క్‌లను చెల్లనివిగా నిర్వచించడం ద్వారా లాంగ్-రేంజ్ దాడులను బలహీనపరుస్తుంది. బలహీనమైన సబ్జెక్టివిటీ చెక్‌పాయింట్లు వాలిడేటర్ ఉపసంహరణ కాలం కంటే తక్కువ దూరంతో వేరు చేయబడ్డాయని నిర్ధారించుకోవడం వల్ల, చైన్‌ను ఫోర్క్ చేసే వాలిడేటర్ తమ స్టేక్‌ను ఉపసంహరించుకునే ముందు కనీసం కొంత థ్రెషోల్డ్ మొత్తంలో స్లాష్ చేయబడతారని మరియు ఎవరి స్టేక్ ఉపసంహరించబడిందో ఆ వాలిడేటర్ల ద్వారా కొత్తగా ప్రవేశించేవారు తప్పు ఫోర్క్‌లకు మోసగించబడరని నిర్ధారిస్తుంది. + +## బలహీనమైన సబ్జెక్టివిటీ చెక్‌పాయింట్లు మరియు ఖరారు చేయబడిన బ్లాక్‌ల మధ్య వ్యత్యాసం {#difference-between-ws-and-finalized-blocks} + +ఖరారు చేయబడిన బ్లాక్‌లు మరియు బలహీనమైన సబ్జెక్టివిటీ చెక్‌పాయింట్లు ఇతీరియము నోడ్స్ ద్వారా విభిన్నంగా పరిగణించబడతాయి. ఒక నోడ్ రెండు పోటీపడే ఖరారు చేయబడిన బ్లాక్‌ల గురించి తెలుసుకుంటే, అది రెండింటి మధ్య నలిగిపోతుంది - ఏది కానానికల్ ఫోర్క్ అని స్వయంచాలకంగా గుర్తించడానికి దానికి మార్గం లేదు. ఇది ఏకాభిప్రాయం వైఫల్యానికి ఒక లక్షణం. దీనికి విరుద్ధంగా, ఒక నోడ్ దాని బలహీనమైన సబ్జెక్టివిటీ చెక్‌పాయింట్‌తో విభేదించే ఏ బ్లాక్‌నైనా తిరస్కరిస్తుంది. నోడ్ యొక్క దృష్టికోణం నుండి, బలహీనమైన సబ్జెక్టివిటీ చెక్‌పాయింట్ ఒక సంపూర్ణ సత్యాన్ని సూచిస్తుంది, దానిని దాని పీర్స్ నుండి వచ్చే కొత్త జ్ఞానంతో బలహీనపరచలేము. + +## ఎంత బలహీనం? {#how-weak-is-weak} + +ఇతీరియము యొక్క ప్రూఫ్-ఆఫ్-స్టేక్ యొక్క సబ్జెక్టివ్ అంశం ఏమిటంటే, సింక్ చేయడానికి విశ్వసనీయ మూలం నుండి ఇటీవలి స్థితి (బలహీనమైన సబ్జెక్టివిటీ చెక్‌పాయింట్) అవసరం. చెడ్డ బలహీనమైన సబ్జెక్టివిటీ చెక్‌పాయింట్ పొందే ప్రమాదం చాలా తక్కువ, ఎందుకంటే వాటిని సమూహము అన్వేషకులు లేదా బహుళ నోడ్స్ వంటి అనేక స్వతంత్ర పబ్లిక్ మూలాలతో సరిచూసుకోవచ్చు. అయితే, ఏ సాఫ్ట్‌వేర్ అప్లికేషన్‌ను అయినా అమలు చేయడానికి ఎల్లప్పుడూ కొంత స్థాయి విశ్వాసం అవసరం, ఉదాహరణకు, సాఫ్ట్‌వేర్ అభివృద్ధి చేసేవాళ్ళు నిజాయితీగల సాఫ్ట్‌వేర్‌ను ఉత్పత్తి చేశారని విశ్వసించడం. + +ఒక బలహీనమైన సబ్జెక్టివిటీ చెక్‌పాయింట్ క్లయింట్ సాఫ్ట్‌వేర్‌లో భాగంగా కూడా రావచ్చు. వాస్తవానికి, ఒక దాడి చేసేవాడు సాఫ్ట్‌వేర్‌లోని చెక్‌పాయింట్‌ను పాడుచేయగలడు మరియు అంతే సులభంగా సాఫ్ట్‌వేర్‌ను కూడా పాడుచేయగలడు. ఈ సమస్యకు నిజమైన క్రిప్టో-ఆర్థిక మార్గం లేదు, కానీ బహుళ స్వతంత్ర క్లయింట్ బృందాలను కలిగి ఉండటం ద్వారా ఇతీరియములో విశ్వసనీయం కాని అభివృద్ధి చేసేవాళ్ళ ప్రభావం తగ్గించబడింది, ప్రతి బృందం విభిన్న భాషలలో సమానమైన సాఫ్ట్‌వేర్‌ను నిర్మిస్తుంది, అన్నీ నిజాయితీగల చైన్‌ను నిర్వహించడంలో నిహిత ప్రయోజనాన్ని కలిగి ఉంటాయి. సమూహము అన్వేషకులు బలహీనమైన సబ్జెక్టివిటీ చెక్‌పాయింట్లను లేదా ఇతర ప్రదేశాల నుండి పొందిన చెక్‌పాయింట్లను అదనపు మూలంతో క్రాస్-రిఫరెన్స్ చేయడానికి ఒక మార్గాన్ని కూడా అందించవచ్చు. + +చివరగా, ఇతర నోడ్స్ నుండి చెక్‌పాయింట్లను అభ్యర్థించవచ్చు; బహుశా పూర్తి నోడ్‌ను నడిపే మరో ఇతీరియము వినియోగదారుడు ఒక చెక్‌పాయింట్‌ను అందించగలరు, దానిని వాలిడేటర్లు సమూహము అన్వేషకులు నుండి డేటాతో ధృవీకరించగలరు. మొత్తమ్మీద, బలహీనమైన సబ్జెక్టివిటీ చెక్‌పాయింట్ ప్రదాతను విశ్వసించడం, క్లయింట్ అభివృద్ధి చేసేవాళ్ళను విశ్వసించినంత సమస్యాత్మకంగా పరిగణించవచ్చు. మొత్తం మీద అవసరమైన విశ్వాసం తక్కువ. మెజారిటీ వాలిడేటర్లు బ్లాక్ చైను యొక్క ప్రత్యామ్నాయ ఫోర్క్‌ను ఉత్పత్తి చేయడానికి కుట్ర పన్నిన చాలా అసంభవమైన సంఘటనలో మాత్రమే ఈ పరిగణనలు ముఖ్యమైనవి అవుతాయని గమనించడం ముఖ్యం. ఏ ఇతర పరిస్థితులలోనైనా, ఎంచుకోవడానికి ఒకే ఒక ఇతీరియము చైన్ మాత్రమే ఉంటుంది. + +## మరింత చదవడానికి {#further-reading} + +- [Eth2లో బలహీనమైన సబ్జెక్టివిటీ](https://notes.ethereum.org/@adiasg/weak-subjectvity-eth2) +- [విటాలిక్: నేను బలహీనమైన సబ్జెక్టివిటీని ప్రేమించడం ఎలా నేర్చుకున్నాను](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/) +- [బలహీనమైన సబ్జెక్టివిటీ (Teku డాక్స్)](https://docs.teku.consensys.io/concepts/weak-subjectivity) +- [ఫేజ్-0 బలహీనమైన సబ్జెక్టివిటీ గైడ్](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/weak-subjectivity.md) +- [ఇతీరియము 2.0లో బలహీనమైన సబ్జెక్టివిటీ యొక్క విశ్లేషణ](https://github.com/runtimeverification/beacon-chain-verification/blob/master/weak-subjectivity/weak-subjectivity-analysis.pdf) diff --git a/public/content/translations/te/developers/docs/consensus-mechanisms/pos/withdrawal-credentials/index.md b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/withdrawal-credentials/index.md new file mode 100644 index 00000000000..b7752d27e68 --- /dev/null +++ b/public/content/translations/te/developers/docs/consensus-mechanisms/pos/withdrawal-credentials/index.md @@ -0,0 +1,64 @@ +--- +title: "ఉపసంహరణ క్రెడెన్షియల్స్" +description: "వాలిడేటర్ ఉపసంహరణ క్రెడెన్షియల్ రకాలు (0x00, 0x01, 0x02) మరియు ఇతీరియము స్టేకర్‌ల కోసం వాటి పర్యవసానాల వివరణ." +lang: te +--- + +ప్రతి వాలిడేటర్‌కు ఒక **ఉపసంహరణ క్రెడెన్షియల్** ఉంటుంది, అది వారి స్టేక్ చేయబడిన ETH మరియు రివార్డులను ఎలా మరియు ఎక్కడ ఉపసంహరించుకోవచ్చో నిర్ణయిస్తుంది. క్రెడెన్షియల్ రకం మొదటి బైట్ ద్వారా సూచించబడుతుంది: `0x00`, `0x01`, లేదా `0x02`. వారి స్టేక్‌ను నిర్వహించే వాలిడేటర్‌లకు ఈ రకాలను అర్థం చేసుకోవడం ముఖ్యం. + +## 0x00: ప్రీ-షాపెల్లా క్రెడెన్షియల్స్ {#0x00-credentials} + +`0x00` రకం అనేది షాపెల్లా అప్‌గ్రేడ్ (ఏప్రిల్ 2023) కంటే ముందు నుండి ఉన్న అసలైన ఉపసంహరణ క్రెడెన్షియల్ ఫార్మాట్. ఈ క్రెడెన్షియల్ రకం ఉన్న వాలిడేటర్‌లు ఎటువంటి ఎగ్జిక్యూషన్ లేయర్ ఉపసంహరణ చిరునామాను సెట్ చేయలేదు, అంటే వారి నిధులు ఏకాభిప్రాయ పొర మీద లాక్ చేయబడి ఉంటాయి. మీకు ఇంకా `0x00` క్రెడెన్షియల్స్ ఉంటే, మీరు ఏదైనా ఉపసంహరణలను స్వీకరించడానికి ముందు `0x01` లేదా `0x02`కి తప్పనిసరిగా అప్‌గ్రేడ్ చేయాలి. + +## 0x01: లెగసీ ఉపసంహరణ క్రెడెన్షియల్స్ {#0x01-credentials} + +`0x01` రకం షాపెల్లా అప్‌గ్రేడ్‌తో పరిచయం చేయబడింది మరియు ఎగ్జిక్యూషన్ లేయర్ ఉపసంహరణ చిరునామాను సెట్ చేయాలనుకున్న వాలిడేటర్‌ల కోసం ఇది ప్రమాణంగా మారింది. `0x01` క్రెడెన్షియల్స్‌తో: + +- 32 ETH కంటే ఎక్కువ ఉన్న ఏదైనా బ్యాలెన్స్ మీ ఉపసంహరణ చిరునామాకు **స్వయంచాలకంగా స్వీప్** చేయబడుతుంది +- పూర్తి నిష్క్రమణలు ప్రామాణిక నిష్క్రమణ క్యూ ద్వారా వెళ్తాయి +- 32 ETH కంటే ఎక్కువ ఉన్న రివార్డులు కాంపౌండ్ చేయలేవు—అవి క్రమానుగతంగా స్వీప్ చేయబడతాయి + +**కొంతమంది వాలిడేటర్లు ఇప్పటికీ 0x01 ఎందుకు ఉపయోగిస్తున్నారు:** ఇది సరళమైనది మరియు సుపరిచితమైనది. చాలా మంది వాలిడేటర్లు షాపెస్లా తర్వాత డిపాజిట్ చేశారు మరియు ఇప్పటికే ఈ రకాన్ని కలిగి ఉన్నారు, మరియు అదనపు బ్యాలెన్స్ యొక్క స్వయంచాలక ఉపసంహరణలను కోరుకునే వారికి ఇది బాగా పనిచేస్తుంది. + +**ఇది ఎందుకు సిఫార్సు చేయబడలేదు:** `0x01`తో, మీరు 32 ETH కంటే ఎక్కువ రివార్డులను కాంపౌండ్ చేసే సామర్థ్యాన్ని కోల్పోతారు. ప్రతి అదనపు బిట్ స్వయంచాలకంగా స్వీప్ చేయబడుతుంది, ఇది మీ వాలిడేటర్ యొక్క సంపాదన సామర్థ్యాన్ని పరిమితం చేస్తుంది మరియు ఉపసంహరించిన నిధులను విడిగా నిర్వహించడం అవసరం. + +## 0x02: కాంపౌండింగ్ ఉపసంహరణ క్రెడెన్షియల్స్ {#0x02-credentials} + +`0x02` రకం పెక్ట్రా అప్‌గ్రేడ్‌తో పరిచయం చేయబడింది మరియు ఈ రోజు వాలిడేటర్‌ల కోసం ఇది **సిఫార్సు చేయబడిన ఎంపిక**. `0x02` క్రెడెన్షియల్స్ ఉన్న వాలిడేటర్‌లను కొన్నిసార్లు "కాంపౌండింగ్ వాలిడేటర్లు" అని పిలుస్తారు. + +`0x02` క్రెడెన్షియల్స్‌తో: + +- 32 ETH కంటే ఎక్కువ ఉన్న రివార్డులు గరిష్టంగా 2048 ETH ప్రభావవంతమైన బ్యాలెన్స్ వరకు 1 ETH ఇంక్రిమెంట్లలో **కాంపౌండ్** అవుతాయి +- పాక్షిక ఉపసంహరణలను మాన్యువల్‌గా అభ్యర్థించాలి (2048 ETH థ్రెషోల్డ్ పైన మాత్రమే స్వయంచాలక స్వీప్‌లు జరుగుతాయి) +- వాలిడేటర్‌లు బహుళ 32 ETH వాలిడేటర్‌లను ఒకే అధిక-బ్యాలెన్స్ వాలిడేటర్‌గా ఏకీకృతం చేయవచ్చు +- ప్రామాణిక నిష్క్రమణ క్యూ ద్వారా పూర్తి నిష్క్రమణలకు ఇప్పటికీ మద్దతు ఉంది + +పాక్షిక ఉపసంహరణలు మరియు ఏకీకరణలు రెండూ [లాంచ్‌ప్యాడ్ వాలిడేటర్ చర్యలు](https://launchpad.ethereum.org/en/validator-actions) ద్వారా చేయవచ్చు. + +**వాలిడేటర్‌లు 0x02ని ఎందుకు ఇష్టపడాలి:** ఇది కాంపౌండింగ్ ద్వారా మెరుగైన మూలధన సామర్థ్యాన్ని అందిస్తుంది, ఉపసంహరణలు ఎప్పుడు జరుగుతాయో మరింత నియంత్రణను ఇస్తుంది మరియు వాలిడేటర్ ఏకీకరణకు మద్దతు ఇస్తుంది. కాలక్రమేణా రివార్డులను కూడగట్టుకునే సోలో స్టేకర్‌ల కోసం, దీని అర్థం వారి ప్రభావవంతమైన బ్యాలెన్స్—మరియు తద్వారా వారి రివార్డులు—మాన్యువల్ జోక్యం లేకుండా 32 ETH దాటి పెరగగలవు. + +**ముఖ్యమైనది:** మీరు `0x01` నుండి `0x02`కి మార్చిన తర్వాత, మీరు వెనక్కి తిరిగి రాలేరు. + +టైప్ 2 క్రెడెన్షియల్స్‌కి మార్చడం మరియు MaxEB ఫీచర్‌పై వివరణాత్మక మార్గదర్శి కోసం, [MaxEB వివరణ పేజీ](/roadmap/pectra/maxeb/) చూడండి. + +## నేను ఏమి ఎంచుకోవాలి? {#what-should-i-pick} + +- **కొత్త వాలిడేటర్లు:** `0x02`ని ఎంచుకోండి. ఇది మెరుగైన కాంపౌండింగ్ మరియు సౌలభ్యంతో కూడిన ఆధునిక ప్రమాణం. +- **ఇప్పటికే ఉన్న 0x01 వాలిడేటర్లు:** మీరు 32 ETH కంటే ఎక్కువ రివార్డులను కాంపౌండ్ చేయాలనుకుంటే లేదా వాలిడేటర్‌లను ఏకీకృతం చేయడానికి ప్లాన్ చేస్తే `0x02`కి మార్చడాన్ని పరిగణించండి. +- **ఇప్పటికే ఉన్న 0x00 వాలిడేటర్లు:** వెంటనే అప్‌గ్రేడ్ చేయండి—మీ క్రెడెన్షియల్స్‌ను నవీకరించకుండా మీరు ఉపసంహరించుకోలేరు. మీరు మొదట `0x01`కి మార్చాలి, ఆ తర్వాత మీరు `0x02`కి మార్చవచ్చు. + +## ఉపసంహరణ క్రెడెన్షియల్స్ నిర్వహణ కోసం ఉపకరణాలు {#withdrawal-credential-tools} + +క్రెడెన్షియల్ రకాల మధ్య ఎంచుకోవడానికి లేదా మార్చడానికి అనేక ఉపకరణాలు మద్దతు ఇస్తాయి: + +- **[ఇతీరియము స్టేకింగ్ లాంచ్‌ప్యాడ్](https://launchpad.ethereum.org/en/validator-actions)** - క్రెడెన్షియల్ మార్పిడులు మరియు ఏకీకరణలతో సహా డిపాజిట్లు మరియు వాలిడేటర్ నిర్వహణ కోసం అధికారిక ఉపకరణం +- **[పెక్ట్రా స్టేకింగ్ మేనేజర్](https://pectrastaking.com)** - మార్పిడులు మరియు ఏకీకరణ కోసం వాలెట్-కనెక్ట్ మద్దతుతో వెబ్ UI +- **[పెక్ట్రా వాలిడేటర్ ఆప్స్ CLI ఉపకరణం](https://github.com/Luganodes/Pectra-Batch-Contract)** - బ్యాచ్ మార్పిడుల కోసం కమాండ్-లైన్ ఉపకరణం +- **[Ethereal](https://github.com/wealdtech/ethereal)** - వాలిడేటర్ నిర్వహణతో సహా ఇతీరియము కార్యకలాపాల కోసం CLI ఉపకరణం + +ఏకీకరణ ఉపకరణాల పూర్తి జాబితా మరియు వివరణాత్మక మార్పిడి సూచనల కోసం, [MaxEB ఏకీకరణ పనిముట్లు](/roadmap/pectra/maxeb/#consolidation-tooling) చూడండి. + +## మరింత సమాచారం {#further-reading} + +- [ప్రూఫ్-ఆఫ్-స్టేక్ ఇతీరియములో కీలు](/developers/docs/consensus-mechanisms/pos/keys/) - వాలిడేటర్ కీల గురించి మరియు అవి ఉపసంహరణ క్రెడెన్షియల్స్‌తో ఎలా సంబంధం కలిగి ఉన్నాయో తెలుసుకోండి +- [MaxEB](/roadmap/pectra/maxeb/) - పెక్ట్రా అప్‌గ్రేడ్ మరియు గరిష్ట ప్రభావవంతమైన బ్యాలెన్స్ ఫీచర్‌పై వివరణాత్మక మార్గదర్శి diff --git a/public/content/translations/te/developers/docs/consensus-mechanisms/pow/index.md b/public/content/translations/te/developers/docs/consensus-mechanisms/pow/index.md new file mode 100644 index 00000000000..0feed1dbbc6 --- /dev/null +++ b/public/content/translations/te/developers/docs/consensus-mechanisms/pow/index.md @@ -0,0 +1,114 @@ +--- +title: "పని రుజువు (PoW)" +description: "పని రుజువు ఏకాభిప్రాయం ప్రోటోకాల్ మరియు ఇతీరియములో దాని పాత్ర యొక్క వివరణ." +lang: te +--- + +ఇతీరియము నెట్వర్క్ \*\*[పని రుజువు (PoW)](/developers/docs/consensus-mechanisms/pow)\*\*ను కలిగి ఉన్న ఏకాభిప్రాయం యంత్రాంగాన్ని ఉపయోగించడంతో ప్రారంభమైంది. ఇది ఇతీరియము నెట్వర్క్ యొక్క నోడ్స్ ఇతీరియము బ్లాక్ చైనులో నమోదు చేయబడిన మొత్తం సమాచారం యొక్క స్థితిపై అంగీకరించడానికి అనుమతించింది మరియు కొన్ని రకాల ఆర్థిక దాడులను నిరోధించింది. అయితే, 2022లో ఇతీరియము పని రుజువును నిలిపివేసి, బదులుగా [స్టేక్ రుజువు](/developers/docs/consensus-mechanisms/pos)ను ఉపయోగించడం ప్రారంభించింది. + + + + + + పని రుజువు ఇప్పుడు వాడుకలో లేదు. ఇతీరియము ఇకపై దాని ఏకాభిప్రాయం యంత్రాంగంలో భాగంగా పని రుజువును ఉపయోగించదు. బదులుగా, ఇది స్టేక్ రుజువును ఉపయోగిస్తుంది. [స్టేక్ రుజువు](/developers/docs/consensus-mechanisms/pos/) మరియు [స్టేకింగ్](/staking/) గురించి మరింత చదవండి. + + + + +## అవసరాలు {#prerequisites} + +ఈ పేజీని బాగా అర్థం చేసుకోవడానికి, మీరు మొదట [లావాదేవీలు](/developers/docs/transactions/), [బ్లాక్స్](/developers/docs/blocks/), మరియు [ఏకాభిప్రాయం యంత్రాంగాలు](/developers/docs/consensus-mechanisms/) గురించి చదవాలని మేము సిఫార్సు చేస్తున్నాము. + +## పని రుజువు (PoW) అంటే ఏమిటి? {#what-is-pow} + +నకమోటో ఏకాభిప్రాయం, ఇది పని రుజువును ఉపయోగిస్తుంది, ఒకప్పుడు వికేంద్రీకృత ఇతీరియము నెట్వర్క్ ఖాతా నిల్వలు మరియు లావాదేవీల క్రమం వంటి విషయాలపై ఏకాభిప్రాయానికి రావడానికి (అంటే, అన్ని నోడ్స్ అంగీకరిస్తాయి) అనుమతించిన యంత్రాంగం. ఇది వినియోగదారులు తమ నాణేలను "డబుల్ స్పెండింగ్" చేయకుండా నిరోధించింది మరియు ఇతీరియము చైనుపై దాడి చేయడం లేదా మార్పుచేయడం చాలా కష్టం అని నిర్ధారించింది. ఈ భద్రతా లక్షణాలు ఇప్పుడు [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/) అని పిలువబడే ఏకాభిప్రాయం యంత్రాంగాన్ని ఉపయోగించి, బదులుగా స్టేక్ రుజువు నుండి వస్తాయి. + +## పని రుజువు మరియు మైనింగ్ {#pow-and-mining} + +పని రుజువు అనేది పని రుజువు బ్లాక్ చైనులలో మైనర్లు చేసే పని కోసం కష్టాన్ని మరియు నియమాలను నిర్దేశించే అంతర్లీన అల్గోరిథం. మైనింగ్ అనేది "పని". ఇది చైనుకు చెల్లుబాటు అయ్యే బ్లాక్స్ జోడించే చర్య. ఇది ముఖ్యం ఎందుకంటే చైను పొడవు నెట్వర్క్కు బ్లాక్ చైను యొక్క సరైన ఫోర్క్ను అనుసరించడానికి సహాయపడుతుంది. ఎక్కువ "పని" చేస్తే, చైను పొడవుగా ఉంటుంది, మరియు బ్లాక్ సంఖ్య ఎక్కువగా ఉంటే, నెట్వర్క్ ప్రస్తుత విషయాల స్థితి గురించి మరింత ఖచ్చితంగా ఉండగలదు. + +[మైనింగ్ గురించి మరింత](/developers/docs/consensus-mechanisms/pow/mining/) + +## ఇతీరియము యొక్క పని రుజువు ఎలా పనిచేసింది? {#how-it-works} + +ఇతీరియము లావాదేవీలు బ్లాక్స్గా ప్రాసెస్ చేయబడతాయి. ఇప్పుడు వాడుకలో లేని పని రుజువు ఇతీరియములో, ప్రతి బ్లాక్లో ఇవి ఉన్నాయి: + +- బ్లాక్ కష్టం – ఉదాహరణకు: 3,324,092,183,262,715 +- mixHash – ఉదాహరణకు: `0x44bca881b07a6a09f83b130798072441705d9a665c5ac8bdf2f39a3cdf3bee29` +- నాన్స్ – ఉదాహరణకు: `0xd3ee432b4fb3d26b` + +ఈ బ్లాక్ డేటా నేరుగా పని రుజువుకు సంబంధించినది. + +### పని రుజువులో పని {#the-work} + +పని రుజువు ప్రోటోకాల్, ఇతాష్, ప్రకారం మైనర్లు ఒక బ్లాక్ కోసం నాన్స్ను కనుగొనడానికి ట్రయల్ మరియు ఎర్రర్ యొక్క తీవ్రమైన రేసులో పాల్గొనవలసి వచ్చింది. చెల్లుబాటు అయ్యే నాన్స్ ఉన్న బ్లాక్స్ మాత్రమే చైనుకు జోడించబడతాయి. + +ఒక బ్లాక్ సృష్టించడానికి పోటీ పడుతున్నప్పుడు, ఒక మైనర్ పదేపదే ఒక డేటాసెట్‌ను గణిత ఫంక్షన్ ద్వారా ఉంచుతాడు, అది పూర్తి చైన్‌ను డౌన్‌లోడ్ చేసి రన్ చేయడం ద్వారా మాత్రమే పొందబడుతుంది (ఒక మైనర్ చేసే విధంగా). బ్లాక్ కష్టం ద్వారా నిర్దేశించబడిన ఒక లక్ష్యం కంటే తక్కువ ఉన్న మిక్స్హాష్ను ఉత్పత్తి చేయడానికి ఆ డేటాసెట్ ఉపయోగించబడింది. ఇది చేయడానికి ఉత్తమ మార్గం ట్రయల్ మరియు ఎర్రర్. + +కష్టం హాష్ కోసం లక్ష్యాన్ని నిర్ధారించింది. లక్ష్యం ఎంత తక్కువగా ఉంటే, చెల్లుబాటు అయ్యే హాష్ల సమితి అంత చిన్నదిగా ఉంటుంది. ఒకసారి ఉత్పత్తి అయిన తర్వాత, ఇతర మైనర్లు మరియు క్లయింట్లు దీనిని ధృవీకరించడం చాలా సులభం. ఒక లావాదేవీ మారినా, హాష్ పూర్తిగా భిన్నంగా ఉంటుంది, ఇది మోసాన్ని సూచిస్తుంది. + +హాషింగ్ మోసాన్ని సులభంగా గుర్తించేలా చేస్తుంది. కానీ ఒక ప్రక్రియగా పని రుజువు చైనుపై దాడి చేయడానికి ఒక పెద్ద నిరోధకంగా కూడా ఉంది. + +### పని రుజువు మరియు భద్రత {#security} + +ప్రధాన ఇతీరియము చైనుపై ఈ పని చేయడానికి మైనర్లు ప్రోత్సహించబడ్డారు. మైనర్ల ఉపసమితి వారి స్వంత చైన్ను ప్రారంభించడానికి తక్కువ ప్రోత్సాహం ఉంది—ఇది వ్యవస్థను బలహీనపరుస్తుంది. బ్లాక్ చైనులు సత్యానికి మూలంగా ఒకే స్థితిని కలిగి ఉండటంపై ఆధారపడతాయి. + +పని రుజువు యొక్క లక్ష్యం చైన్ను విస్తరించడం. అతి పొడవైన చైను చెల్లుబాటు అయ్యేదిగా అత్యంత నమ్మదగినదిగా ఉండేది, ఎందుకంటే దానిని ఉత్పత్తి చేయడానికి అత్యధిక గణన పని జరిగింది. ఇతీరియము యొక్క PoW వ్యవస్థలో, లావాదేవీలను తొలగించే కొత్త బ్లాక్స్ సృష్టించడం, నకిలీ వాటిని సృష్టించడం, లేదా రెండవ చైన్ను నిర్వహించడం దాదాపు అసాధ్యం. ఎందుకంటే ఒక దురుద్దేశపూరిత మైనర్ అందరి కంటే వేగంగా బ్లాక్ నాన్స్ను ఎల్లప్పుడూ పరిష్కరించాల్సి ఉంటుంది. + +స్థిరంగా దురుద్దేశపూరితమైన ఇంకా చెల్లుబాటు అయ్యే బ్లాక్స్ సృష్టించడానికి, ఒక దురుద్దేశపూరిత మైనర్ అందరినీ ఓడించడానికి నెట్వర్క్ మైనింగ్ శక్తిలో 51% కంటే ఎక్కువ అవసరం. ఆ మొత్తం "పని"కి చాలా ఖరీదైన కంప్యూటింగ్ శక్తి అవసరం మరియు ఖర్చు చేసిన శక్తి దాడిలో పొందిన లాభాలను మించిపోయి ఉండవచ్చు. + +### పని రుజువు ఆర్థికశాస్త్రం {#economics} + +వ్యవస్థలోకి కొత్త కరెన్సీని జారీ చేయడానికి మరియు పని చేయడానికి మైనర్లను ప్రోత్సహించడానికి కూడా పని రుజువు బాధ్యత వహించింది. + +[కాన్స్టాంటినోపుల్ అప్గ్రేడ్](/ethereum-forks/#constantinople) నుండి, ఒక బ్లాక్ను విజయవంతంగా సృష్టించే మైనర్లు రెండు కొత్తగా ముద్రించిన ETH మరియు లావాదేవీ రుసుములలో కొంత భాగాన్ని బహుమతిగా పొందారు. ఓమర్ బ్లాక్స్ కూడా 1.75 ETH పరిహారం ఇచ్చాయి. ఓమర్ బ్లాక్స్ అనేవి ఒక మైనర్ కానానికల్ బ్లాక్ను సృష్టించిన దాదాపు అదే సమయంలో మరో మైనర్ సృష్టించిన చెల్లుబాటు అయ్యే బ్లాక్స్, ఇది చివరికి ఏ చైనుపై మొదట నిర్మించబడిందనే దాని ద్వారా నిర్ణయించబడింది. ఓమర్ బ్లాక్స్ సాధారణంగా నెట్వర్క్ జాప్యం కారణంగా జరిగేవి. + +## ఫైనాలిటీ {#finality} + +ఇతీరియములో ఒక లావాదేవీకి "ఫైనాలిటీ" ఉంటుంది, అది మార్చలేని బ్లాక్లో భాగమైనప్పుడు. + +మైనర్లు వికేంద్రీకృత పద్ధతిలో పనిచేయడం వల్ల, రెండు చెల్లుబాటు అయ్యే బ్లాక్స్ ఒకే సమయంలో మైన్ చేయబడవచ్చు. ఇది తాత్కాలిక ఫోర్క్ను సృష్టిస్తుంది. చివరికి, తదుపరి బ్లాక్స్ మైన్ చేయబడి, దానికి జోడించబడిన తర్వాత, ఈ చైన్లలో ఒకటి పొడవుగా మారి ఆమోదించబడిన చైన్ అయింది. + +విషయాలను మరింత క్లిష్టతరం చేయడానికి, తాత్కాలిక ఫోర్క్లో తిరస్కరించబడిన లావాదేవీలు ఆమోదించబడిన చైన్లో చేర్చబడకపోవచ్చు. అంటే ఇది రివర్స్ కావచ్చు. కాబట్టి ఫైనాలిటీ అనేది మీరు ఒక లావాదేవీని మార్చలేనిదిగా పరిగణించే ముందు వేచి ఉండవలసిన సమయాన్ని సూచిస్తుంది. మునుపటి పని రుజువు ఇతీరియములో, ఒక నిర్దిష్ట బ్లాక్ `N` పైన ఎన్ని ఎక్కువ బ్లాక్స్ మైన్ చేయబడితే, `N`లోని లావాదేవీలు విజయవంతమయ్యాయని మరియు రివర్ట్ చేయబడవని అంత ఎక్కువ విశ్వాసం ఉంటుంది. ఇప్పుడు, స్టేక్ రుజువుతో, ఫైనలైజేషన్ అనేది సంభావ్యతతో కూడినది కాకుండా, ఒక బ్లాక్ యొక్క స్పష్టమైన లక్షణం. + +## పని రుజువు శక్తి వినియోగం {#energy} + +నెట్వర్క్ను సురక్షితంగా ఉంచడానికి అవసరమైన శక్తి ఉత్పత్తి మొత్తం పని రుజువుపై ఒక ప్రధాన విమర్శ. భద్రత మరియు వికేంద్రీకరణను నిర్వహించడానికి, పని రుజువుపై ఇతీరియము అధిక మొత్తంలో శక్తిని వినియోగించుకుంది. స్టేక్ రుజువుకు మారడానికి కొద్దిసేపటి ముందు, ఇతీరియము మైనర్లు సమిష్టిగా సుమారు 70 TWh/yr వినియోగిస్తున్నారు (సుమారుగా చెక్ రిపబ్లిక్తో సమానం - 18-జూలై-2022న [digiconomist](https://digiconomist.net/) ప్రకారం). + +## ప్రయోజనాలు మరియు అప్రయోజనాలు {#pros-and-cons} + +| ప్రయోజనాలు | అప్రయోజనాలు | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| పని రుజువు తటస్థంగా ఉంటుంది. ప్రారంభించడానికి మీకు ETH అవసరం లేదు మరియు బ్లాక్ రివార్డులు మిమ్మల్ని 0ETH నుండి సానుకూల బ్యాలెన్స్కు వెళ్లడానికి అనుమతిస్తాయి. [స్టేక్ రుజువు](/developers/docs/consensus-mechanisms/pos/)తో ప్రారంభించడానికి మీకు ETH అవసరం. | పని రుజువు చాలా శక్తిని ఉపయోగిస్తుంది, ఇది పర్యావరణానికి చెడ్డది. | +| పని రుజువు అనేది ప్రయత్నించి, పరీక్షించబడిన ఒక ఏకాభిప్రాయం యంత్రాంగం, ఇది చాలా సంవత్సరాలుగా బిట్కాయిన్ మరియు ఇతీరియమును సురక్షితంగా మరియు వికేంద్రీకృతంగా ఉంచింది. | మీరు మైనింగ్ చేయాలనుకుంటే, మీకు అలాంటి ప్రత్యేక పరికరాలు అవసరం, ప్రారంభించడానికి ఇది ఒక పెద్ద పెట్టుబడి. | +| స్టేక్ రుజువుతో పోలిస్తే ఇది అమలు చేయడానికి సాపేక్షంగా సులభం. | అవసరమైన గణన పెరగడం వలన, మైనింగ్ పూల్స్ మైనింగ్ ఆటలో ఆధిపత్యం చెలాయించగలవు, ఇది కేంద్రీకరణ మరియు భద్రతా ప్రమాదాలకు దారితీస్తుంది. | + +## స్టేక్ రుజువుతో పోలిక {#compared-to-pos} + +ఉన్నత స్థాయిలో, స్టేక్ రుజువుకు పని రుజువుతో సమానమైన అంతిమ లక్ష్యం ఉంది: వికేంద్రీకృత నెట్వర్క్ సురక్షితంగా ఏకాభిప్రాయానికి రావడానికి సహాయపడటం. కానీ దీనికి ప్రక్రియ మరియు సిబ్బందిలో కొన్ని తేడాలు ఉన్నాయి: + +- స్టేక్ రుజువు గణన శక్తి యొక్క ప్రాముఖ్యతను స్టేక్ చేసిన ETHతో మార్చుతుంది. +- స్టేక్ రుజువు మైనర్లను వ్యాలిడేటర్లతో భర్తీ చేస్తుంది. కొత్త బ్లాక్స్ సృష్టించే సామర్థ్యాన్ని సక్రియం చేయడానికి వ్యాలిడేటర్లు తమ ETHను స్టేక్ చేస్తారు. +- వ్యాలిడేటర్లు బ్లాక్స్ సృష్టించడానికి పోటీపడరు, బదులుగా వారు ఒక అల్గోరిథం ద్వారా యాదృచ్ఛికంగా ఎంపిక చేయబడతారు. +- ఫైనాలిటీ స్పష్టంగా ఉంటుంది: నిర్దిష్ట చెక్పాయింట్ల వద్ద, 2/3 వ్యాలిడేటర్లు బ్లాక్ స్థితిపై అంగీకరిస్తే అది అంతిమంగా పరిగణించబడుతుంది. వ్యాలిడేటర్లు దీనిపై తమ మొత్తం స్టేక్ను పందెం వేయాలి, కాబట్టి వారు కుమ్మక్కవడానికి ప్రయత్నిస్తే, వారు తమ మొత్తం స్టేక్ను కోల్పోతారు. + +[స్టేక్ రుజువు గురించి మరింత](/developers/docs/consensus-mechanisms/pos/) + +## దృశ్య అభ్యాసకులా? {#visual-learner} + + + +## మరింత చదవడానికి {#further-reading} + +- [మెజారిటీ దాడి](https://en.bitcoin.it/wiki/Majority_attack) +- [సెటిల్మెంట్ ఫైనాలిటీపై](https://blog.ethereum.org/2016/05/09/on-settlement-finality/) + +### వీడియోలు {#videos} + +- [పని రుజువు ప్రోటోకాల్స్ యొక్క సాంకేతిక వివరణ](https://youtu.be/9V1bipPkCTU) + +## సంబంధిత అంశాలు {#related-topics} + +- [మైనింగ్](/developers/docs/consensus-mechanisms/pow/mining/) +- [ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos/) +- [ప్రూఫ్-ఆఫ్-అథారిటీ](/developers/docs/consensus-mechanisms/poa/) diff --git a/public/content/translations/te/developers/docs/consensus-mechanisms/pow/mining/index.md b/public/content/translations/te/developers/docs/consensus-mechanisms/pow/mining/index.md new file mode 100644 index 00000000000..705fde383b9 --- /dev/null +++ b/public/content/translations/te/developers/docs/consensus-mechanisms/pow/mining/index.md @@ -0,0 +1,86 @@ +--- +title: "మైనింగ్" +description: "ఇతీరియములో మైనింగ్ ఎలా పనిచేసిందో దాని యొక్క వివరణ." +lang: te +--- + + + + + +ప్రూఫ్-ఆఫ్-వర్క్ ఇకపై ఇతీరియము యొక్క ఏకాభిప్రాయం మెకానిజంకు ఆధారం కాదు, అంటే మైనింగ్ నిలిపివేయబడింది. బదులుగా, ఇతీరియము ETH ను స్టేక్ చేసే వాలిడేటర్ల ద్వారా సురక్షితం చేయబడింది. మీరు ఈరోజే మీ ETH ను స్టేకింగ్ చేయడం ప్రారంభించవచ్చు. ది మెర్జ్, ప్రూఫ్-ఆఫ్-స్టేక్, మరియు స్టేకింగ్ గురించి మరింత చదవండి. ఈ పేజీ చారిత్రక ఆసక్తి కోసం మాత్రమే. + + + + +## అవసరాలు {#prerequisites} + +ఈ పేజీని మరింత బాగా అర్థం చేసుకోవడానికి, మీరు ముందుగా [లావాదేవీలు](/developers/docs/transactions/), [బ్లాక్‌లు](/developers/docs/blocks/) మరియు [ప్రూఫ్-ఆఫ్-వర్క్](/developers/docs/consensus-mechanisms/pow/) గురించి చదవాలని మేము సిఫార్సు చేస్తున్నాము. + +## ఇతీరియము మైనింగ్ అంటే ఏమిటి? {#what-is-ethereum-mining} + +మైనింగ్ అనేది ఇతీరియము యొక్క ఇప్పుడు వాడుకలో లేని ప్రూఫ్-ఆఫ్-వర్క్ ఆర్కిటెక్చర్‌లో ఇతీరియము బ్లాక్ చైనుకు జోడించబడే లావాదేవీల బ్లాక్‌ను సృష్టించే ప్రక్రియ. + +మైనింగ్ అనే పదం క్రిప్టోకరెన్సీల కోసం బంగారం సారూప్యత సందర్భంలో ఉద్భవించింది. బంగారం లేదా విలువైన లోహాలు కొరతగా ఉంటాయి, అలాగే డిజిటల్ టోకెన్లు కూడా, మరియు ప్రూఫ్-ఆఫ్-వర్క్ సిస్టమ్‌లో మొత్తం పరిమాణాన్ని పెంచడానికి ఏకైక మార్గం మైనింగ్ ద్వారానే. ప్రూఫ్-ఆఫ్-వర్క్ ఇతీరియములో, జారీకి ఏకైక పద్ధతి మైనింగ్ ద్వారానే. అయితే బంగారం లేదా విలువైన లోహాల వలె కాకుండా, ఇతీరియము మైనింగ్ అనేది బ్లాక్ చైనులో బ్లాక్‌లను సృష్టించడం, ధృవీకరించడం, ప్రచురించడం మరియు ప్రచారం చేయడం ద్వారా నెట్‌వర్క్‌ను సురక్షితం చేయడానికి కూడా ఒక మార్గం. + +ఈథర్ మైనింగ్ = నెట్‌వర్క్‌ను సురక్షితం చేయడం + +మైనింగ్ అనేది ఏదైనా ప్రూఫ్-ఆఫ్-వర్క్ బ్లాక్ చైనుకు జీవనాధారం. ఇతీరియము మైనర్లు - సాఫ్ట్‌వేర్‌ను నడుపుతున్న కంప్యూటర్లు - ప్రూఫ్-ఆఫ్-స్టేక్‌కు మారడానికి ముందు లావాదేవీలను ప్రాసెస్ చేయడానికి మరియు బ్లాక్‌లను ఉత్పత్తి చేయడానికి వారి సమయాన్ని మరియు గణన శక్తిని ఉపయోగించారు. + +## మైనర్లు ఎందుకు ఉన్నారు? {#why-do-miners-exist} + +ఇతీరియము వంటి వికేంద్రీకృత వ్యవస్థలలో, లావాదేవీల క్రమంపై ప్రతిఒక్కరూ అంగీకరించేలా మనం నిర్ధారించుకోవాలి. మైనర్లు బ్లాక్‌లను ఉత్పత్తి చేయడానికి గణనపరంగా కష్టమైన పజిల్స్‌ను పరిష్కరించడం ద్వారా ఇది జరగడానికి సహాయపడ్డారు, నెట్‌వర్క్‌ను దాడుల నుండి సురక్షితం చేశారు. + +[ప్రూఫ్-ఆఫ్-వర్క్ గురించి మరింత](/developers/docs/consensus-mechanisms/pow/) + +గతంలో ఎవరైనా తమ కంప్యూటర్‌ను ఉపయోగించి ఇతీరియము నెట్‌వర్క్‌లో మైనింగ్ చేయగలిగేవారు. అయితే, ప్రతిఒక్కరూ లాభదాయకంగా ఈథర్ (ETH) మైనింగ్ చేయలేకపోయారు. చాలా సందర్భాలలో, మైనర్లు ప్రత్యేక కంప్యూటర్ హార్డ్‌వేర్‌ను కొనుగోలు చేయాల్సి వచ్చింది, మరియు చవకైన శక్తి వనరులకు ప్రాప్యత కలిగి ఉండాలి. సగటు కంప్యూటర్ మైనింగ్ సంబంధిత ఖర్చులను భరించడానికి తగినంత బ్లాక్ రివార్డులను సంపాదించే అవకాశం లేదు. + +### మైనింగ్ ఖర్చు {#cost-of-mining} + +- మైనింగ్ రిగ్‌ను నిర్మించడానికి మరియు నిర్వహించడానికి అవసరమైన హార్డ్‌వేర్ యొక్క సంభావ్య ఖర్చులు +- మైనింగ్ రిగ్‌కు శక్తినివ్వడానికి విద్యుత్ ఖర్చు +- మీరు ఒక పూల్‌లో మైనింగ్ చేస్తుంటే, ఈ పూల్స్ సాధారణంగా పూల్ ద్వారా ఉత్పత్తి చేయబడిన ప్రతి బ్లాక్‌కు ఫ్లాట్ % రుసుము వసూలు చేస్తాయి +- మైనింగ్ రిగ్‌కు మద్దతు ఇచ్చే పరికరాల సంభావ్య ఖర్చు (వెంటిలేషన్, శక్తి పర్యవేక్షణ, విద్యుత్ వైరింగ్, మొదలైనవి) + +మైనింగ్ లాభదాయకతను మరింతగా అన్వేషించడానికి, [Etherscan](https://etherscan.io/ether-mining-calculator) అందించే మైనింగ్ కాలిక్యులేటర్ వంటి దాన్ని ఉపయోగించండి. + +## ఇతీరియము లావాదేవీలు ఎలా మైన్ చేయబడ్డాయి {#how-ethereum-transactions-were-mined} + +ఇతీరియము ప్రూఫ్-ఆఫ్-వర్క్‌లో లావాదేవీలు ఎలా మైన్ చేయబడ్డాయో కిందిది ఒక అవలోకనాన్ని అందిస్తుంది. ఇతీరియము ప్రూఫ్-ఆఫ్-స్టేక్ కోసం ఈ ప్రక్రియ యొక్క సారూప్య వివరణ [ఇక్కడ](/developers/docs/consensus-mechanisms/pos/#transaction-execution-ethereum-pos) కనుగొనవచ్చు. + +1. ఒక వినియోగదారుడు కొంత [ఖాతా](/developers/docs/accounts/) యొక్క ప్రైవేట్ కీతో [లావాదేవీ](/developers/docs/transactions/) అభ్యర్థనను రాసి, సంతకం చేస్తాడు. +2. వినియోగదారుడు కొంత [నోడ్](/developers/docs/nodes-and-clients/) నుండి మొత్తం ఇతీరియము నెట్‌వర్క్‌కు లావాదేవీ అభ్యర్థనను ప్రసారం చేస్తాడు. +3. కొత్త లావాదేవీ అభ్యర్థన గురించి విన్న వెంటనే, ఇతీరియము నెట్‌వర్క్‌లోని ప్రతి నోడ్ ఆ అభ్యర్థనను వారి స్థానిక మెమ్పూల్‌కు జోడిస్తుంది, ఇది వారు విన్న అన్ని లావాదేవీ అభ్యర్థనల జాబితా, అవి ఇంకా ఒక బ్లాక్‌లో బ్లాక్ చైనుకు కట్టుబడి ఉండవు. +4. ఏదో ఒక సమయంలో, ఒక మైనింగ్ నోడ్ అనేక డజన్ల లేదా వందల లావాదేవీ అభ్యర్థనలను సంభావ్య [బ్లాక్](/developers/docs/blocks/)గా సమగ్రపరుస్తుంది, ఇది బ్లాక్ గ్యాస్ పరిమితి కింద ఉంటూనే వారు సంపాదించే [లావాదేవీ రుసుములను](/developers/docs/gas/) గరిష్ఠం చేసే విధంగా ఉంటుంది. ఆ తర్వాత మైనింగ్ నోడ్: + 1. ప్రతి లావాదేవీ అభ్యర్థన యొక్క ప్రామాణికతను ధృవీకరిస్తుంది (అంటే, ఎవరూ సంతకం చేయని ఖాతా నుండి ఈథర్‌ను బదిలీ చేయడానికి ప్రయత్నించడం లేదు, అభ్యర్థన తప్పుగా రూపొందించబడలేదు, మొదలైనవి), ఆపై అభ్యర్థన యొక్క సంకేత భాషను అమలు చేస్తుంది, వారి స్థానిక EVM కాపీ యొక్క స్థితిని మారుస్తుంది. మైనర్ అటువంటి ప్రతి లావాదేవీ అభ్యర్థనకు లావాదేవీ రుసుమును వారి స్వంత ఖాతాకు అందజేస్తాడు. + 2. బ్లాక్‌లోని అన్ని లావాదేవీ అభ్యర్థనలు ధృవీకరించబడి, స్థానిక EVM కాపీలో అమలు చేయబడిన తర్వాత, సంభావ్య బ్లాక్ కోసం ప్రూఫ్-ఆఫ్-వర్క్ “చట్టబద్ధత యొక్క సర్టిఫికేట్”ను ఉత్పత్తి చేసే ప్రక్రియను ప్రారంభిస్తుంది. +5. చివరికి, ఒక మైనర్ మా నిర్దిష్ట లావాదేవీ అభ్యర్థనను కలిగి ఉన్న బ్లాక్ కోసం ఒక సర్టిఫికేట్‌ను ఉత్పత్తి చేయడం పూర్తి చేస్తాడు. ఆ తర్వాత మైనర్ పూర్తి చేసిన బ్లాక్‌ను ప్రసారం చేస్తాడు, ఇందులో సర్టిఫికేట్ మరియు క్లెయిమ్ చేయబడిన కొత్త EVM స్థితి యొక్క చెక్‌సమ్ ఉంటాయి. +6. ఇతర నోడ్స్ కొత్త బ్లాక్ గురించి వింటాయి. వారు సర్టిఫికేట్‌ను ధృవీకరిస్తారు, బ్లాక్‌లోని అన్ని లావాదేవీలను స్వయంగా అమలు చేస్తారు (మా వినియోగదారుడు మొదట ప్రసారం చేసిన లావాదేవీతో సహా), మరియు అన్ని లావాదేవీల అమలు తర్వాత వారి కొత్త EVM స్థితి యొక్క చెక్‌సమ్, మైనర్ బ్లాక్ ద్వారా క్లెయిమ్ చేయబడిన స్థితి యొక్క చెక్‌సమ్‌తో సరిపోలుతుందని ధృవీకరిస్తారు. అప్పుడు మాత్రమే ఈ నోడ్స్ ఈ బ్లాక్‌ను వారి బ్లాక్ చైను యొక్క తోకకు జోడిస్తాయి, మరియు కొత్త EVM స్థితిని కానానికల్ స్థితిగా అంగీకరిస్తాయి. +7. ప్రతి నోడ్ నెరవేరని లావాదేవీ అభ్యర్థనల యొక్క వారి స్థానిక మెమ్పూల్ నుండి కొత్త బ్లాక్‌లోని అన్ని లావాదేవీలను తొలగిస్తుంది. +8. నెట్‌వర్క్‌లో చేరే కొత్త నోడ్స్ మా ఆసక్తి ఉన్న లావాదేవీని కలిగి ఉన్న బ్లాక్‌తో సహా, వరుసగా అన్ని బ్లాక్‌లను డౌన్‌లోడ్ చేస్తాయి. వారు ఒక స్థానిక EVM కాపీని ప్రారంభిస్తారు (ఇది ఖాళీ-స్థితి EVMగా మొదలవుతుంది), ఆపై వారి స్థానిక EVM కాపీ పైన ప్రతి బ్లాక్‌లోని ప్రతి లావాదేవీని అమలు చేసే ప్రక్రియ గుండా వెళతారు, మార్గం వెంట ప్రతి బ్లాక్ వద్ద స్థితి చెక్‌సమ్‌లను ధృవీకరిస్తారు. + +ప్రతి లావాదేవీ ఒక్కసారి మైన్ చేయబడుతుంది (కొత్త బ్లాక్‌లో చేర్చబడి మరియు మొదటిసారి ప్రచారం చేయబడుతుంది), కానీ కానానికల్ EVM స్థితిని ముందుకు తీసుకువెళ్ళే ప్రక్రియలో ప్రతి పాల్గొనేవారిచే అమలు చేయబడి మరియు ధృవీకరించబడుతుంది. ఇది బ్లాక్ చైను యొక్క కేంద్ర మంత్రాలలో ఒకదాన్ని హైలైట్ చేస్తుంది: **నమ్మవద్దు, ధృవీకరించండి**. + +## ఓమర్ (అంకుల్) బ్లాక్‌లు {#ommer-blocks} + +ప్రూఫ్-ఆఫ్-వర్క్‌పై బ్లాక్ మైనింగ్ సంభావ్యతతో కూడుకున్నది, అంటే నెట్‌వర్క్ జాప్యం కారణంగా కొన్నిసార్లు రెండు చెల్లుబాటు అయ్యే బ్లాక్‌లు ఏకకాలంలో ప్రచురించబడతాయి. ఈ సందర్భంలో, ప్రోటోకాల్ పొడవైన (మరియు అందువల్ల అత్యంత "చెల్లుబాటు అయ్యే") గొలుసును నిర్ణయించాల్సి వచ్చింది, అదే సమయంలో ప్రతిపాదించబడిన కానీ చేర్చబడని చెల్లుబాటు అయ్యే బ్లాక్‌కు పాక్షికంగా రివార్డ్ ఇవ్వడం ద్వారా మైనర్ల పట్ల న్యాయంగా ఉండేలా చూసుకోవాలి. ఇది నెట్‌వర్క్ యొక్క మరింత వికేంద్రీకరణను ప్రోత్సహించింది, ఎందుకంటే ఎక్కువ జాప్యాన్ని ఎదుర్కొనే చిన్న మైనర్లు కూడా [ఓమర్](/glossary/#ommer) బ్లాక్ రివార్డుల ద్వారా రాబడిని పొందగలరు. + +"ఓమర్" అనే పదం పేరెంట్ బ్లాక్ యొక్క తోబుట్టువుకు ప్రాధాన్యతనిచ్చే లింగ-తటస్థ పదం, కానీ దీనిని కొన్నిసార్లు "అంకుల్" అని కూడా పిలుస్తారు. **ఇతీరియము ప్రూఫ్-ఆఫ్-స్టేక్‌కు మారినప్పటి నుండి, ఓమర్ బ్లాక్‌లు ఇకపై మైన్ చేయబడవు** ఎందుకంటే ప్రతి జాబితాలో ఒకే ఒక ప్రపోజర్ ఎన్నుకోబడతాడు. మైన్ చేయబడిన ఓమర్ బ్లాక్‌ల యొక్క [చారిత్రక చార్ట్](https://ycharts.com/indicators/ethereum_uncle_rate)ను చూడటం ద్వారా మీరు ఈ మార్పును చూడవచ్చు. + +## ఒక విజువల్ డెమో {#a-visual-demo} + +ఆస్టిన్ మీకు మైనింగ్ మరియు ప్రూఫ్-ఆఫ్-వర్క్ బ్లాక్ చైను ద్వారా మార్గనిర్దేశం చేయడాన్ని చూడండి. + + + +## మైనింగ్ అల్గారిథం {#mining-algorithm} + +ఇతీరియము మెయిన్‌నెట్ ఎప్పుడూ ఒకే ఒక మైనింగ్ అల్గారిథంను మాత్రమే ఉపయోగించింది - ['Ethash'](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/). Ethash అనేది ['Dagger-Hashimoto'](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/) అని పిలువబడే అసలు R&D అల్గారిథం యొక్క వారసుడు. + +[మైనింగ్ అల్గారిథమ్స్ గురించి మరింత](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/). + +## సంబంధిత అంశాలు {#related-topics} + +- [గ్యాస్](/developers/docs/gas/) +- [EVM](/developers/docs/evm/) +- [ప్రూఫ్-ఆఫ్-వర్క్](/developers/docs/consensus-mechanisms/pow/) diff --git a/public/content/translations/te/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md b/public/content/translations/te/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md new file mode 100644 index 00000000000..cc1dfd47d54 --- /dev/null +++ b/public/content/translations/te/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md @@ -0,0 +1,329 @@ +--- +title: "డాగర్-హాషిమోటో" +description: "డాగర్-హాషిమోటో అల్గారిథమ్ పై ఒక వివరణాత్మక వీక్షణ." +lang: te +--- + +ఇథిరియం మైనింగ్ అల్గారిథమ్ కోసం డాగర్-హాషిమోటో అసలైన పరిశోధన అమలు మరియు నిర్దేశం. డాగర్-హాషిమోటోను [Ethash](#ethash) అధిగమించింది. సెప్టెంబర్ 15, 2022న [ది మెర్జ్](/roadmap/merge/) వద్ద మైనింగ్ పూర్తిగా నిలిపివేయబడింది. అప్పటి నుండి, ఇథిరియం బదులుగా [ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos) పద్ధతిని ఉపయోగించి సురక్షితం చేయబడింది. ఈ పేజీ చారిత్రక ఆసక్తి కోసం మాత్రమే - ఇక్కడ ఉన్న సమాచారం విలీనం తర్వాత ఇథిరియం కోసం ఇకపై సంబంధితమైనది కాదు. + +## అవసరాలు {#prerequisites} + +ఈ పేజీని బాగా అర్థం చేసుకోవడానికి, ముందుగా మీరు [ప్రూఫ్-ఆఫ్-వర్క్ ఏకాభిప్రాయం](/developers/docs/consensus-mechanisms/pow), [మైనింగ్](/developers/docs/consensus-mechanisms/pow/mining), మరియు [మైనింగ్ అల్గారిథమ్స్](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms) గురించి చదవాలని మేము సిఫార్సు చేస్తున్నాము. + +## డాగర్-హాషిమోటో {#dagger-hashimoto} + +డాగర్-హాషిమోటో రెండు లక్ష్యాలను సాధించడం లక్ష్యంగా పెట్టుకుంది: + +1. **ASIC-నిరోధకత**: అల్గారిథమ్ కోసం ప్రత్యేక హార్డ్‌వేర్‌ను సృష్టించడం వల్ల ప్రయోజనం వీలైనంత తక్కువగా ఉండాలి +2. **లైట్ క్లయింట్ ధృవీకరణ**: ఒక బ్లాక్‌ను లైట్ క్లయింట్ ద్వారా సమర్థవంతంగా ధృవీకరించగలగాలి. + +అదనపు మార్పుతో, మేము కోరుకుంటే మూడవ లక్ష్యాన్ని ఎలా నెరవేర్చాలో కూడా నిర్దేశిస్తాము, కానీ అదనపు సంక్లిష్టత ఖర్చుతో: + +**పూర్తి చైన్ నిల్వ**: మైనింగ్‌కు పూర్తి బ్లాక్‌చెయిన్ స్థితిని నిల్వ చేయడం అవసరం (ఇథిరియం స్టేట్ ట్రై యొక్క క్రమరహిత నిర్మాణం కారణంగా, కొన్ని తరచుగా ఉపయోగించే ఒప్పందాలను కత్తిరించడం సాధ్యమవుతుందని మేము ఊహిస్తున్నాము, కానీ మేము దీనిని కనిష్టంగా ఉంచాలనుకుంటున్నాము). + +## DAG ఉత్పత్తి {#dag-generation} + +అల్గారిథమ్ కోసం కోడ్ క్రింద పైథాన్‌లో నిర్వచించబడుతుంది. మొదట, మేము నిర్దిష్ట ఖచ్చితత్వంతో సంతకం చేయని పూర్ణాంకాలను స్ట్రింగ్‌లకు మార్షలింగ్ చేయడానికి `encode_int` ఇస్తాము. దాని విలోమం కూడా ఇవ్వబడింది: + +```python +NUM_BITS = 512 + +def encode_int(x): + "ఒక పూర్ణాంకం xను బిగ్-ఎండియన్ స్కీమ్‌ను ఉపయోగించి 64 అక్షరాల స్ట్రింగ్‌గా ఎన్‌కోడ్ చేయండి" + o = '' + for _ in range(NUM_BITS / 8): + o = chr(x % 256) + o + x //= 256 + return o + +def decode_int(s): + "బిగ్-ఎండియన్ స్కీమ్‌ను ఉపయోగించి ఒక స్ట్రింగ్ నుండి పూర్ణాంకం xను అన్‌కోడ్ చేయండి" + x = 0 + for c in s: + x *= 256 + x += ord(c) + return x +``` + +తరువాత `sha3` అనేది ఒక పూర్ణాంకాన్ని తీసుకుని పూర్ణాంకాన్ని అవుట్‌పుట్ చేసే ఫంక్షన్ అని మరియు `dbl_sha3` అనేది డబుల్-sha3 ఫంక్షన్ అని మేము ఊహిస్తాము; ఈ రిఫరెన్స్ కోడ్‌ను అమలులోకి మార్చేటప్పుడు ఉపయోగించండి: + +```python +from pyethereum import utils +def sha3(x): + if isinstance(x, (int, long)): + x = encode_int(x) + return decode_int(utils.sha3(x)) + +def dbl_sha3(x): + if isinstance(x, (int, long)): + x = encode_int(x) + return decode_int(utils.sha3(utils.sha3(x))) +``` + +### పారామితులు {#parameters} + +అల్గారిథమ్ కోసం ఉపయోగించే పారామితులు: + +```python +SAFE_PRIME_512 = 2**512 - 38117 # 2**512 కంటే తక్కువ అతిపెద్ద సురక్షిత ప్రైమ్ + +params = { + "n": 4000055296 * 8 // NUM_BITS, # డేటాసెట్ పరిమాణం (4 గిగాబైట్లు); 65536 యొక్క గుణకం అయి ఉండాలి + "n_inc": 65536, # ప్రతి కాలానికి n విలువలో పెరుగుదల; 65536 యొక్క గుణకం అయి ఉండాలి + # epochtime=20000తో సంవత్సరానికి 882 MB పెరుగుదల + "cache_size": 2500, # లైట్ క్లయింట్ కాష్ పరిమాణం (లైట్ క్లయింట్ ద్వారా ఎంచుకోవచ్చు; అల్గో స్పెసిఫికేషన్‌లో భాగం కాదు) + "diff": 2**14, # క్లిష్టత (బ్లాక్ మూల్యాంకన సమయంలో సర్దుబాటు చేయబడుతుంది) + "epochtime": 100000, # బ్లాకులలో ఒక యుగం యొక్క పొడవు (డేటాసెట్ ఎంత తరచుగా నవీకరించబడుతుంది) + "k": 1, # ఒక నోడ్ యొక్క తల్లిదండ్రుల సంఖ్య + "w": w, # మాడ్యులర్ ఘాతాంక హాషింగ్ కోసం ఉపయోగించబడుతుంది + "accesses": 200, # హాషిమోటో సమయంలో డేటాసెట్ యాక్సెస్‌ల సంఖ్య + "P": SAFE_PRIME_512 # హాషింగ్ మరియు యాదృచ్ఛిక సంఖ్య ఉత్పత్తి కోసం సురక్షిత ప్రైమ్ +} +``` + +ఈ సందర్భంలో `P` అనేది `log₂(P)` 512 కంటే కొంచెం తక్కువగా ఉండేలా ఎంచుకున్న ఒక ప్రైమ్, ఇది మన సంఖ్యలను సూచించడానికి మనం ఉపయోగిస్తున్న 512 బిట్‌లకు అనుగుణంగా ఉంటుంది. వాస్తవానికి DAG యొక్క చివరి సగం మాత్రమే నిల్వ చేయవలసి ఉంటుందని గమనించండి, కాబట్టి వాస్తవ RAM అవసరం 1 GB వద్ద ప్రారంభమై సంవత్సరానికి 441 MB పెరుగుతుంది. + +### డాగర్ గ్రాఫ్ నిర్మాణం {#dagger-graph-building} + +డాగర్ గ్రాఫ్ నిర్మాణ ప్రాథమికం ఈ క్రింది విధంగా నిర్వచించబడింది: + +```python +def produce_dag(params, seed, length): + P = params["P"] + picker = init = pow(sha3(seed), params["w"], P) + o = [init] + for i in range(1, length): + x = picker = (picker * init) % P + for _ in range(params["k"]): + x ^= o[x % i] + o.append(pow(x, params["w"], P)) + return o +``` + +ముఖ్యంగా, ఇది `sha3(seed)` అనే ఒకే నోడ్‌గా గ్రాఫ్‌ను ప్రారంభించి, అక్కడి నుండి యాదృచ్ఛిక మునుపటి నోడ్‌ల ఆధారంగా ఇతర నోడ్‌లను క్రమంగా జోడించడం ప్రారంభిస్తుంది. కొత్త నోడ్ సృష్టించబడినప్పుడు, `i` కంటే తక్కువ కొన్ని సూచికలను (పైన ఉన్న `x % i` ఉపయోగించి) యాదృచ్ఛికంగా ఎంచుకోవడానికి సీడ్ యొక్క మాడ్యులర్ పవర్ లెక్కించబడుతుంది, మరియు ఆ సూచికల వద్ద ఉన్న నోడ్‌ల విలువలు `x` కోసం కొత్త విలువను ఉత్పత్తి చేయడానికి ఒక గణనలో ఉపయోగించబడతాయి, ఇది చివరికి `i` సూచిక వద్ద గ్రాఫ్ విలువను ఉత్పత్తి చేయడానికి ఒక చిన్న ప్రూఫ్ ఆఫ్ వర్క్ ఫంక్షన్‌లోకి (XOR ఆధారంగా) ఇవ్వబడుతుంది. ఈ ప్రత్యేక రూపకల్పన వెనుక ఉన్న కారణం DAG యొక్క వరుస యాక్సెస్‌ను బలవంతం చేయడం; ప్రస్తుత విలువ తెలిసే వరకు యాక్సెస్ చేయబడే DAG యొక్క తదుపరి విలువను నిర్ణయించలేము. చివరగా, మాడ్యులర్ ఘాతాంకం ఫలితాన్ని మరింతగా హాష్ చేస్తుంది. + +ఈ అల్గారిథం సంఖ్యా సిద్ధాంతం నుండి అనేక ఫలితాలపై ఆధారపడి ఉంటుంది. చర్చ కోసం క్రింద ఉన్న అనుబంధాన్ని చూడండి. + +## లైట్ క్లయింట్ మూల్యాంకనం {#light-client-evaluation} + +పైన ఉన్న గ్రాఫ్ నిర్మాణం, గ్రాఫ్‌లోని ప్రతి నోడ్‌ను కేవలం కొద్ది సంఖ్యలో నోడ్‌ల సబ్‌ట్రీని లెక్కించడం ద్వారా మరియు కేవలం చిన్న మొత్తంలో సహాయక మెమరీ అవసరం లేకుండా పునర్నిర్మించడానికి అనుమతించాలని ఉద్దేశించబడింది. k=1 తో, సబ్‌ట్రీ DAGలోని మొదటి మూలకం వరకు వెళ్లే విలువల గొలుసు మాత్రమే అని గమనించండి. + +DAG కోసం లైట్ క్లయింట్ కంప్యూటింగ్ ఫంక్షన్ ఈ క్రింది విధంగా పనిచేస్తుంది: + +```python +def quick_calc(params, seed, p): + w, P = params["w"], params["P"] + cache = {} + + def quick_calc_cached(p): + if p in cache: + pass + elif p == 0: + cache[p] = pow(sha3(seed), w, P) + else: + x = pow(sha3(seed), (p + 1) * w, P) + for _ in range(params["k"]): + x ^= quick_calc_cached(x % p) + cache[p] = pow(x, w, P) + return cache[p] + + return quick_calc_cached(p) +``` + +ముఖ్యంగా, ఇది పైన ఉన్న అల్గారిథమ్ యొక్క పునఃరచన, ఇది మొత్తం DAG కోసం విలువలను లెక్కించే లూప్‌ను తొలగిస్తుంది మరియు మునుపటి నోడ్ లూకప్‌ను పునరావృత కాల్ లేదా కాష్ లూకప్‌తో భర్తీ చేస్తుంది. `k=1` కోసం కాష్ అనవసరం అని గమనించండి, అయినప్పటికీ మరింత ఆప్టిమైజేషన్ వాస్తవానికి DAG యొక్క మొదటి కొన్ని వేల విలువలను ముందుగా లెక్కించి, దానిని గణనల కోసం స్టాటిక్ కాష్‌గా ఉంచుతుంది; దీని కోడ్ అమలు కోసం అనుబంధాన్ని చూడండి. + +## DAGల డబుల్ బఫర్ {#double-buffer} + +పూర్తి క్లయింట్‌లో, పైన ఉన్న ఫార్ములా ద్వారా ఉత్పత్తి చేయబడిన 2 DAGల [_డబుల్ బఫర్_](https://wikipedia.org/wiki/Multiple_buffering) ఉపయోగించబడుతుంది. పైన ఉన్న పారామితుల ప్రకారం ప్రతి `epochtime` బ్లాకుల సంఖ్యకు DAGలు ఉత్పత్తి చేయబడతాయి అనేదే ఆలోచన. క్లయింట్ ఉత్పత్తి చేయబడిన తాజా DAGని ఉపయోగించకుండా, దాని ముందు ఉన్న దానిని ఉపయోగిస్తుంది. దీని ప్రయోజనం ఏమిటంటే, మైనర్లు అకస్మాత్తుగా అన్ని డేటాను పునఃగణన చేయాల్సిన అవసరం లేకుండా, కాలక్రమేణా DAGలను భర్తీ చేయడానికి ఇది అనుమతిస్తుంది. లేకపోతే, క్రమమైన వ్యవధిలో చైన్ ప్రాసెసింగ్‌లో ఆకస్మిక తాత్కాలిక మందగమనం మరియు కేంద్రీకరణ నాటకీయంగా పెరిగే అవకాశం ఉంది. అందువల్ల, మొత్తం డేటా పునఃగణన చేయబడటానికి ముందు ఆ కొన్ని నిమిషాలలో 51% దాడి ప్రమాదాలు ఉంటాయి. + +ఒక బ్లాక్ కోసం పనిని లెక్కించడానికి ఉపయోగించే DAGల సమితిని ఉత్పత్తి చేయడానికి ఉపయోగించే అల్గారిథం ఈ క్రింది విధంగా ఉంటుంది: + +```python +def get_prevhash(n): + from pyethereum.blocks import GENESIS_PREVHASH + from pyethereum import chain_manager + if n <= 0: + return hash_to_int(GENESIS_PREVHASH) + else: + prevhash = chain_manager.index.get_block_by_number(n - 1) + return decode_int(prevhash) + +def get_seedset(params, block): + seedset = {} + seedset["back_number"] = block.number - (block.number % params["epochtime"]) + seedset["back_hash"] = get_prevhash(seedset["back_number"]) + seedset["front_number"] = max(seedset["back_number"] - params["epochtime"], 0) + seedset["front_hash"] = get_prevhash(seedset["front_number"]) + return seedset + +def get_dagsize(params, block): + return params["n"] + (block.number // params["epochtime"]) * params["n_inc"] + +def get_daggerset(params, block): + dagsz = get_dagsize(params, block) + seedset = get_seedset(params, block) + if seedset["front_hash"] <= 0: + # No back buffer is possible, just make front buffer + return {"front": {"dag": produce_dag(params, seedset["front_hash"], dagsz), + "block_number": 0}} + else: + return {"front": {"dag": produce_dag(params, seedset["front_hash"], dagsz), + "block_number": seedset["front_number"]}, + "back": {"dag": produce_dag(params, seedset["back_hash"], dagsz), + "block_number": seedset["back_number"]}} +``` + +## హాషిమోటో {#hashimoto} + +అసలైన హాషిమోటో వెనుక ఉన్న ఆలోచన ఏమిటంటే, బ్లాక్‌చెయిన్‌ను ఒక డేటాసెట్‌గా ఉపయోగించడం, బ్లాక్‌చెయిన్ నుండి N సూచికలను ఎంచుకునే గణనను ప్రదర్శించడం, ఆ సూచికల వద్ద లావాదేవీలను సేకరించడం, ఈ డేటా యొక్క XOR ను ప్రదర్శించడం మరియు ఫలితం యొక్క హాష్‌ను తిరిగి ఇవ్వడం. తడ్డియస్ డ్రైజా యొక్క అసలు అల్గారిథం, స్థిరత్వం కోసం పైథాన్‌లోకి అనువదించబడింది, ఈ క్రింది విధంగా ఉంది: + +```python +def orig_hashimoto(prev_hash, merkle_root, list_of_transactions, nonce): + hash_output_A = sha256(prev_hash + merkle_root + nonce) + txid_mix = 0 + for i in range(64): + shifted_A = hash_output_A >> i + transaction = shifted_A % len(list_of_transactions) + txid_mix ^= list_of_transactions[transaction] << i + return txid_mix ^ (nonce << 192) +``` + +దురదృష్టవశాత్తు, హాషిమోటో RAM కష్టంగా పరిగణించబడుతున్నప్పటికీ, ఇది 256-బిట్ అంకగణితంపై ఆధారపడి ఉంటుంది, దీనికి గణనీయమైన కంప్యూటేషనల్ ఓవర్‌హెడ్ ఉంటుంది. అయినప్పటికీ, డాగర్-హాషిమోటో ఈ సమస్యను పరిష్కరించడానికి దాని డేటాసెట్‌ను ఇండెక్స్ చేసేటప్పుడు అతి తక్కువ ముఖ్యమైన 64 బిట్‌లను మాత్రమే ఉపయోగిస్తుంది. + +```python +def hashimoto(dag, dagsize, params, header, nonce): + m = dagsize / 2 + mix = sha3(encode_int(nonce) + header) + for _ in range(params["accesses"]): + mix ^= dag[m + (mix % 2**64) % m] + return dbl_sha3(mix) +``` + +డబుల్ SHA3 యొక్క ఉపయోగం సున్నా-డేటా, దాదాపు-తక్షణ పూర్వ-ధృవీకరణ యొక్క ఒక రూపాన్ని అనుమతిస్తుంది, సరైన మధ్యంతర విలువ అందించబడిందని మాత్రమే ధృవీకరిస్తుంది. ఈ ప్రూఫ్-ఆఫ్-వర్క్ యొక్క బయటి పొర అత్యంత ASIC-స్నేహపూర్వకంగా మరియు చాలా బలహీనంగా ఉంటుంది, కానీ వెంటనే తిరస్కరించబడని బ్లాక్‌ను ఉత్పత్తి చేయడానికి ఆ చిన్న మొత్తం పని చేయవలసి ఉంటుంది కాబట్టి DDoSను మరింత కష్టతరం చేయడానికి ఇది ఉనికిలో ఉంది. ఇక్కడ లైట్-క్లయింట్ వెర్షన్ ఉంది: + +```python +def quick_hashimoto(seed, dagsize, params, header, nonce): + m = dagsize // 2 + mix = sha3(nonce + header) + for _ in range(params["accesses"]): + mix ^= quick_calc(params, seed, m + (mix % 2**64) % m) + return dbl_sha3(mix) +``` + +## మైనింగ్ మరియు ధృవీకరించడం {#mining-and-verifying} + +ఇప్పుడు, అన్నిటినీ కలిపి మైనింగ్ అల్గారిథమ్‌లో పెడదాం: + +```python +def mine(daggerset, params, block): + from random import randint + nonce = randint(0, 2**64) + while 1: + result = hashimoto(daggerset, get_dagsize(params, block), + params, decode_int(block.prevhash), nonce) + if result * params["diff"] < 2**256: + break + nonce += 1 + if nonce >= 2**64: + nonce = 0 + return nonce +``` + +ఇక్కడ ధృవీకరణ అల్గారిథమ్ ఉంది: + +```python +def verify(daggerset, params, block, nonce): + result = hashimoto(daggerset, get_dagsize(params, block), + params, decode_int(block.prevhash), nonce) + return result * params["diff"] < 2**256 +``` + +లైట్-క్లయింట్ స్నేహపూర్వక ధృవీకరణ: + +```python +def light_verify(params, header, nonce): + seedset = get_seedset(params, block) + result = quick_hashimoto(seedset["front_hash"], get_dagsize(params, block), + params, decode_int(block.prevhash), nonce) + return result * params["diff"] < 2**256 +``` + +అలాగే, డాగర్-హాషిమోటో బ్లాక్ హెడర్‌పై అదనపు అవసరాలను విధిస్తుందని గమనించండి: + +- రెండు-పొరల ధృవీకరణ పని చేయడానికి, ఒక బ్లాక్ హెడర్‌లో నాన్స్ మరియు మధ్య విలువ రెండూ ప్రీ-sha3 కలిగి ఉండాలి +- ఎక్కడో, ఒక బ్లాక్ హెడర్ ప్రస్తుత సీడ్‌సెట్ యొక్క sha3ను నిల్వ చేయాలి + +## మరింత సమాచారం {#further-reading} + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ + +## అనుబంధం {#appendix} + +పైన చెప్పినట్లుగా, DAG ఉత్పత్తికి ఉపయోగించే RNG సంఖ్యా సిద్ధాంతం నుండి కొన్ని ఫలితాలపై ఆధారపడి ఉంటుంది. మొదట, `picker` వేరియబుల్ ఆధారంగా ఉన్న లెహ్మర్ RNGకి విస్తృత కాలం ఉందని మేము హామీ ఇస్తున్నాము. రెండవది, `pow(x,3,P)` అనేది `x` ను `1` లేదా `P-1` కు మ్యాప్ చేయదని చూపిస్తాము, `x ∈ [2,P-2]` నుండి ప్రారంభించినట్లయితే. చివరగా, `pow(x,3,P)` ను హాషింగ్ ఫంక్షన్‌గా పరిగణించినప్పుడు తక్కువ ఘర్షణ రేటును కలిగి ఉందని మేము చూపిస్తాము. + +### లెహ్మర్ యాదృచ్ఛిక సంఖ్య జనరేటర్ {#lehmer-random-number} + +`produce_dag` ఫంక్షన్ నిష్పక్షపాత యాదృచ్ఛిక సంఖ్యలను ఉత్పత్తి చేయవలసిన అవసరం లేనప్పటికీ, `seed**i % P` కొన్ని విలువలను మాత్రమే తీసుకోవడం ఒక సంభావ్య ముప్పు. ఇది ప్యాట్రన్‌ను గుర్తించని వారి కంటే గుర్తించే మైనర్లకు ఒక ప్రయోజనాన్ని అందిస్తుంది. + +దీన్ని నివారించడానికి, సంఖ్యా సిద్ధాంతం నుండి ఒక ఫలితం అప్పీల్ చేయబడింది. ఒక [_సురక్షిత ప్రైమ్_](https://en.wikipedia.org/wiki/Safe_prime) అనేది `P` ప్రైమ్ మరియు `(P-1)/2` కూడా ప్రైమ్ అయ్యేలా నిర్వచించబడింది. [గుణకార సమూహం](https://en.wikipedia.org/wiki/Multiplicative_group_of_integers_modulo_n) `ℤ/nℤ` లోని ఒక సభ్యుడు `x` యొక్క _ఆర్డర్_ అనేది కనీస `m` గా నిర్వచించబడింది, దీని ప్రకారం
xᵐ mod P ≡ 1
+ఈ నిర్వచనాలను బట్టి, మనకు ఇది ఉంది: + +> పరిశీలన 1. సురక్షిత ప్రైమ్ `P` కోసం గుణకార సమూహం `ℤ/Pℤ` లోని సభ్యుడు `x` అనుకుందాం. ఒకవేళ `x mod P ≠ 1 mod P` మరియు `x mod P ≠ P-1 mod P` అయితే, `x` యొక్క ఆర్డర్ `P-1` లేదా `(P-1)/2` అవుతుంది. + +_నిరూపణ_. `P` ఒక సురక్షిత ప్రైమ్ కాబట్టి, [లాగ్రాంజ్ సిద్ధాంతం][lagrange] ప్రకారం `x` యొక్క ఆర్డర్ `1`, `2`, `(P-1)/2`, లేదా `P-1` అని మనకు తెలుసు. + +`x` యొక్క ఆర్డర్ `1` కాలేదు, ఎందుకంటే ఫెర్మాట్ యొక్క చిన్న సిద్ధాంతం ప్రకారం మనకు ఇది ఉంది: + +
xP-1 mod P ≡ 1
+ +అందువల్ల `x` అనేది `ℤ/nℤ` యొక్క గుణకార గుర్తింపు అయి ఉండాలి, ఇది ప్రత్యేకమైనది. మేము ఊహించినట్లుగా `x ≠ 1` కాబట్టి, ఇది సాధ్యం కాదు. + +`x = P-1` అయితే తప్ప, `x` యొక్క ఆర్డర్ `2` కాలేదు, ఎందుకంటే ఇది `P` ప్రైమ్ అనే దానిని ఉల్లంఘిస్తుంది. + +పైన ఉన్న ప్రతిపాదన నుండి, `(picker * init) % P`ను పునరావృతం చేయడం వలన కనీసం `(P-1)/2` చక్రం పొడవు ఉంటుందని మనం గుర్తించవచ్చు. ఎందుకంటే మేము `P`ను రెండు యొక్క అధిక శక్తికి సుమారు సమానమైన సురక్షిత ప్రైమ్‌గా ఎంచుకున్నాము మరియు `init` అనేది `[2,2**256+1]` విరామంలో ఉంది. `P` యొక్క పరిమాణం దృష్ట్యా, మాడ్యులర్ ఘాతాంకం నుండి మనం ఎప్పుడూ ఒక చక్రాన్ని ఆశించకూడదు. + +మేము DAGలోని మొదటి సెల్‌ను కేటాయించేటప్పుడు (`init` అని లేబుల్ చేయబడిన వేరియబుల్), మేము `pow(sha3(seed) + 2, 3, P)`ను లెక్కిస్తాము. మొదటి చూపులో, ఫలితం `1` లేదా `P-1` కాదని ఇది హామీ ఇవ్వదు. అయితే, `P-1` ఒక సురక్షిత ప్రైమ్ కాబట్టి, మనకు ఈ క్రింది అదనపు హామీ ఉంది, ఇది పరిశీలన 1 యొక్క సహజ ఫలితం: + +> పరిశీలన 2. సురక్షిత ప్రైమ్ `P` కోసం గుణకార సమూహం `ℤ/Pℤ` లోని సభ్యుడు `x` మరియు సహజ సంఖ్య `w` అనుకుందాం. ఒకవేళ `x mod P ≠ 1 mod P` మరియు `x mod P ≠ P-1 mod P`, అలాగే `w mod P ≠ P-1 mod P` మరియు `w mod P ≠ 0 mod P` అయితే, `xʷ mod P ≠ 1 mod P` మరియు `xʷ mod P ≠ P-1 mod P` అవుతుంది. + +### మాడ్యులర్ ఘాతాంకం ఒక హాష్ ఫంక్షన్‌గా {#modular-exponentiation} + +`P` మరియు `w` యొక్క కొన్ని విలువల కోసం, `pow(x, w, P)` ఫంక్షన్‌కు అనేక ఘర్షణలు ఉండవచ్చు. ఉదాహరణకు, `pow(x,9,19)` కేవలం `{1,18}` విలువలను మాత్రమే తీసుకుంటుంది. + +`P` ప్రైమ్ అని ఇవ్వబడినప్పుడు, ఒక మాడ్యులర్ ఘాతాంక హాషింగ్ ఫంక్షన్ కోసం సరైన `w` ను ఈ క్రింది ఫలితాన్ని ఉపయోగించి ఎంచుకోవచ్చు: + +> పరిశీలన 3. `P` ఒక ప్రైమ్ అనుకుందాం; `ℤ/Pℤ` లోని అన్ని `a` మరియు `b` లకు `w` మరియు `P-1` సాపేక్షంగా ప్రైమ్ అయితే మరియు అయితేనే:
`aʷ mod P ≡ bʷ mod P` అయితే మరియు అయితేనే `a mod P ≡ b mod P`
+ +అందువల్ల, `P` ప్రైమ్ అని మరియు `w` `P-1` కు సాపేక్షంగా ప్రైమ్ అని ఇవ్వబడినప్పుడు, మనకు `|{pow(x, w, P) : x ∈ ℤ}| = P` అని ఉంటుంది, ఇది హాషింగ్ ఫంక్షన్‌కు సాధ్యమైనంత కనీస ఘర్షణ రేటు ఉందని సూచిస్తుంది. + +మనం ఎంచుకున్నట్లుగా `P` ఒక సురక్షిత ప్రైమ్ అయిన ప్రత్యేక సందర్భంలో, `P-1` కు కేవలం 1, 2, `(P-1)/2` మరియు `P-1` కారకాలు మాత్రమే ఉంటాయి. `P` > 7 కాబట్టి, 3 `P-1` కు సాపేక్షంగా ప్రైమ్ అని మనకు తెలుసు, అందువల్ల `w=3` పై ప్రతిపాదనను సంతృప్తి పరుస్తుంది. + +## మరింత సమర్థవంతమైన కాష్-ఆధారిత మూల్యాంకన అల్గారిథమ్ {#cache-based-evaluation} + +```python +def quick_calc(params, seed, p): + cache = produce_dag(params, seed, params["cache_size"]) + return quick_calc_cached(cache, params, p) + +def quick_calc_cached(cache, params, p): + P = params["P"] + if p < len(cache): + return cache[p] + else: + x = pow(cache[0], p + 1, P) + for _ in range(params["k"]): + x ^= quick_calc_cached(cache, params, x % p) + return pow(x, params["w"], P) + +def quick_hashimoto(seed, dagsize, params, header, nonce): + cache = produce_dag(params, seed, params["cache_size"]) + return quick_hashimoto_cached(cache, dagsize, params, header, nonce) + +def quick_hashimoto_cached(cache, dagsize, params, header, nonce): + m = dagsize // 2 + mask = 2**64 - 1 + mix = sha3(encode_int(nonce) + header) + for _ in range(params["accesses"]): + mix ^= quick_calc_cached(cache, params, m + (mix & mask) % m) + return dbl_sha3(mix) +``` diff --git a/public/content/translations/te/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md b/public/content/translations/te/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md new file mode 100644 index 00000000000..b7db117b145 --- /dev/null +++ b/public/content/translations/te/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md @@ -0,0 +1,1021 @@ +--- +title: "ఎథాష్" +description: "ఈతాష్ అల్గారిథంపై ఒక వివరణాత్మక వీక్షణ." +lang: te +--- + + + + + + ఈతాష్ అనేది ఇథిరియం యొక్క ప్రూఫ్-ఆఫ్-వర్క్ మైనింగ్ అల్గారిథంగా ఉండేది. ప్రూఫ్-ఆఫ్-వర్క్ ఇప్పుడు **పూర్తిగా స్విచ్ ఆఫ్ చేయబడింది** మరియు ఇతీరియము ఇప్పుడు దానికి బదులుగా [ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos/) ఉపయోగించి సురక్షితం చేయబడింది. [ది మెర్జ్](/roadmap/merge/), [ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos/) మరియు [స్టేకింగ్](/staking/) గురించి మరింత చదవండి. ఈ పేజీ చారిత్రక ఆసక్తి కోసం మాత్రమే! + + + + +ఈతాష్ అనేది [డాగర్-హాషిమోటో](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto) అల్గారిథం యొక్క సవరించిన వెర్షన్. ఈతాష్ ప్రూఫ్-ఆఫ్-వర్క్ [మెమరీ హార్డ్](https://wikipedia.org/wiki/Memory-hard_function), ఇది అల్గారిథంను ASIC నిరోధకంగా మార్చగలదని భావించబడింది. ఈతాష్ ASICలు చివరికి అభివృద్ధి చేయబడ్డాయి, కానీ ప్రూఫ్-ఆఫ్-వర్క్ స్విచ్ ఆఫ్ అయ్యే వరకు GPU మైనింగ్ ఇప్పటికీ ఒక ఆచరణీయమైన ఎంపికగా ఉంది. ఇతర నాన్-ఇథిరియం ప్రూఫ్-ఆఫ్-వర్క్ నెట్‌వర్క్‌లలో ఇతర కాయిన్‌లను మైన్ చేయడానికి ఈతాష్ ఇప్పటికీ ఉపయోగించబడుతోంది. + +## ఈతాష్ ఎలా పని చేస్తుంది? {#how-does-ethash-work} + +నాన్స్ మరియు బ్లాక్ హెడర్‌పై ఆధారపడిన స్థిరమైన వనరు యొక్క ఉపసమితులను ఎంచుకోవాల్సిన ప్రూఫ్ ఆఫ్ వర్క్ అల్గారిథంతో మెమరీ కాఠిన్యం సాధించబడుతుంది. ఈ వనరు (కొన్ని గిగాబైట్ల పరిమాణంలో) DAG అని పిలువబడుతుంది. ప్రతి 30000 బ్లాక్‌లకు DAG మార్చబడుతుంది, ఇది ఎపోక్ (సుమారు 5.2 రోజులు) అని పిలువబడే ~125 గంటల విండో మరియు రూపొందించడానికి కొంత సమయం పడుతుంది. DAG కేవలం బ్లాక్ ఎత్తుపై ఆధారపడి ఉంటుంది కాబట్టి, దానిని ముందుగా రూపొందించవచ్చు, కానీ అది కాకపోతే, క్లయింట్ ఒక బ్లాక్‌ను ఉత్పత్తి చేయడానికి ఈ ప్రక్రియ ముగిసే వరకు వేచి ఉండాలి. క్లయింట్లు DAGలను ముందుగానే రూపొందించి మరియు కాష్ చేయకపోతే, ప్రతి ఎపోక్ మార్పుపై నెట్‌వర్క్ భారీ బ్లాక్ ఆలస్యాన్ని ఎదుర్కోవచ్చు. ప్రూఫ్-ఆఫ్-వర్క్‌ను ధృవీకరించడానికి DAGని రూపొందించాల్సిన అవసరం లేదని గమనించండి, ముఖ్యంగా తక్కువ CPU మరియు చిన్న మెమరీ రెండింటితో ధృవీకరణను అనుమతిస్తుంది. + +అల్గారిథం తీసుకునే సాధారణ మార్గం క్రింది విధంగా ఉంది: + +1. ఆ పాయింట్ వరకు బ్లాక్ హెడర్‌ల ద్వారా స్కాన్ చేయడం ద్వారా ప్రతి బ్లాక్‌కు లెక్కించబడే ఒక **సీడ్** ఉంటుంది. +2. సీడ్ నుండి, ఒకరు **16 MB సూడోరాండమ్ కాష్**ను లెక్కించవచ్చు. లైట్ క్లయింట్లు కాష్‌ను నిల్వ చేస్తాయి. +3. కాష్ నుండి, మనం **1 GB డేటాసెట్‌**ను రూపొందించవచ్చు, డేటాసెట్‌లోని ప్రతి ఐటెమ్ కాష్ నుండి కొన్ని ఐటెమ్‌లపై మాత్రమే ఆధారపడి ఉంటుందనే లక్షణంతో. పూర్తి క్లయింట్లు మరియు మైనర్లు డేటాసెట్‌ను నిల్వ చేస్తాయి. డేటాసెట్ కాలక్రమేణా సరళంగా పెరుగుతుంది. +4. మైనింగ్ అనేది డేటాసెట్ యొక్క యాదృచ్ఛిక స్లైస్‌లను పట్టుకుని, వాటిని కలిసి హాష్ చేయడాన్ని కలిగి ఉంటుంది. మీకు అవసరమైన డేటాసెట్ యొక్క నిర్దిష్ట భాగాలను పునరుత్పత్తి చేయడానికి కాష్‌ను ఉపయోగించడం ద్వారా తక్కువ మెమరీతో ధృవీకరణ చేయవచ్చు, కాబట్టి మీరు కాష్‌ను మాత్రమే నిల్వ చేయాలి. + +ప్రతి 30000 బ్లాక్‌లకు ఒకసారి పెద్ద డేటాసెట్ నవీకరించబడుతుంది, కాబట్టి మైనర్ యొక్క అధికభాగం ప్రయత్నం డేటాసెట్‌ను చదవడం అవుతుంది, దానికి మార్పులు చేయడం కాదు. + +## నిర్వచనాలు {#definitions} + +మేము క్రింది నిర్వచనాలను ఉపయోగిస్తాము: + +``` +WORD_BYTES = 4 # పదంలోని బైట్లు +DATASET_BYTES_INIT = 2**30 # జెనిసిస్ వద్ద డేటాసెట్‌లోని బైట్లు +DATASET_BYTES_GROWTH = 2**23 # ప్రతి ఎపోక్‌కు డేటాసెట్ పెరుగుదల +CACHE_BYTES_INIT = 2**24 # జెనిసిస్ వద్ద కాష్‌లోని బైట్లు +CACHE_BYTES_GROWTH = 2**17 # ప్రతి ఎపోక్‌కు కాష్ పెరుగుదల +CACHE_MULTIPLIER=1024 # కాష్‌కు సంబంధించి DAG యొక్క పరిమాణం +EPOCH_LENGTH = 30000 # ప్రతి ఎపోక్‌కు బ్లాక్‌లు +MIX_BYTES = 128 # మిక్స్ యొక్క వెడల్పు +HASH_BYTES = 64 # బైట్లలో హాష్ పొడవు +DATASET_PARENTS = 256 # ప్రతి డేటాసెట్ మూలకం యొక్క పేరెంట్ల సంఖ్య +CACHE_ROUNDS = 3 # కాష్ ఉత్పత్తిలో రౌండ్ల సంఖ్య +ACCESSES = 64 # హాషిమోటో లూప్‌లో యాక్సెస్ల సంఖ్య +``` + +### 'SHA3' ఉపయోగం {#sha3} + +ఇథిరియం అభివృద్ధి SHA3 ప్రమాణం యొక్క అభివృద్ధితో ఏకకాలంలో జరిగింది, మరియు +ప్రమాణాల ప్రక్రియ ఖరారు చేయబడిన హాష్ అల్గారిథం యొక్క ప్యాడింగ్‌లో ఆలస్యంగా మార్పు చేసింది, తద్వారా ఇథిరియం యొక్క +"sha3_256" మరియు "sha3_512" హాష్‌లు ప్రామాణిక sha3 హాష్‌లు కావు, కానీ తరచుగా ఇతర సందర్భాలలో "Keccak-256" మరియు "Keccak-512" అని సూచించబడే ఒక వేరియంట్. చర్చను చూడండి, ఉదా., [ఇక్కడ](https://eips.ethereum.org/EIPS/eip-1803), [ఇక్కడ](http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use), లేదా [ఇక్కడ](http://bitcoin.stackexchange.com/questions/42055/what-is-the-approach-to-calculate-an-ethereum-address-from-a-256-bit-private-key/42057#42057). + +క్రింద అల్గారిథం యొక్క వివరణలో "sha3" హాష్‌లు ప్రస్తావించబడినందున దయచేసి దానిని గుర్తుంచుకోండి. + +## పారామితులు {#parameters} + +ఈతాష్ యొక్క కాష్ మరియు డేటాసెట్ కోసం పారామితులు బ్లాక్ నంబర్‌పై ఆధారపడి ఉంటాయి. కాష్ పరిమాణం మరియు డేటాసెట్ పరిమాణం రెండూ సరళంగా పెరుగుతాయి; అయినప్పటికీ, చక్రీయ ప్రవర్తనకు దారితీసే ప్రమాదవశాత్తూ క్రమబద్ధతల ప్రమాదాన్ని తగ్గించడానికి మేము ఎల్లప్పుడూ సరళంగా పెరుగుతున్న పరిమితి కంటే తక్కువ ఉన్న అత్యధిక ప్రధాన సంఖ్యను తీసుకుంటాము. + +```python +def get_cache_size(block_number): + sz = CACHE_BYTES_INIT + CACHE_BYTES_GROWTH * (block_number // EPOCH_LENGTH) + sz -= HASH_BYTES + while not isprime(sz / HASH_BYTES): + sz -= 2 * HASH_BYTES + return sz + +def get_full_size(block_number): + sz = DATASET_BYTES_INIT + DATASET_BYTES_GROWTH * (block_number // EPOCH_LENGTH) + sz -= MIX_BYTES + while not isprime(sz / MIX_BYTES): + sz -= 2 * MIX_BYTES + return sz +``` + +డేటాసెట్ మరియు కాష్ పరిమాణం విలువల పట్టికలు అనుబంధంలో అందించబడ్డాయి. + +## కాష్ జనరేషన్ {#cache-generation} + +ఇప్పుడు, కాష్‌ను ఉత్పత్తి చేయడానికి మేము ఫంక్షన్‌ను నిర్దేశిస్తాము: + +```python +def mkcache(cache_size, seed): + n = cache_size // HASH_BYTES + + # ప్రారంభ డేటాసెట్‌ను వరుసగా ఉత్పత్తి చేయండి + o = [sha3_512(seed)] + for i in range(1, n): + o.append(sha3_512(o[-1])) + + # randmemohash యొక్క తక్కువ-రౌండ్ వెర్షన్‌ను ఉపయోగించండి + for _ in range(CACHE_ROUNDS): + for i in range(n): + v = o[i][0] % n + o[i] = sha3_512(map(xor, o[(i-1+n) % n], o[v])) + + return o +``` + +కాష్ ఉత్పత్తి ప్రక్రియలో మొదట 32 MB మెమరీని వరుసగా నింపడం, ఆపై [_స్ట్రిక్ట్ మెమరీ హార్డ్ హాషింగ్ ఫంక్షన్స్_ (2014)](http://www.hashcash.org/papers/memohash.pdf) నుండి సెర్గియో డెమియన్ లెర్నర్ యొక్క _RandMemoHash_ అల్గారిథం యొక్క రెండు పాస్‌లను ప్రదర్శించడం ఉంటుంది. అవుట్‌పుట్ 524288 64-బైట్ విలువల సమితి. + +## డేటా అగ్రిగేషన్ ఫంక్షన్ {#date-aggregation-function} + +మేము కొన్ని సందర్భాల్లో XORకు నాన్-అసోసియేటివ్ ప్రత్యామ్నాయంగా [FNV హాష్](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function) ద్వారా ప్రేరణ పొందిన అల్గారిథంను ఉపయోగిస్తాము. ఒక బైట్ (ఆక్టెట్)తో ప్రైమ్‌ను గుణించే FNV-1 స్పెక్ వలె కాకుండా, మేము పూర్తి 32-బిట్ ఇన్‌పుట్‌తో ప్రైమ్‌ను గుణిస్తామని గమనించండి. + +```python +FNV_PRIME = 0x01000193 + +def fnv(v1, v2): + return ((v1 * FNV_PRIME) ^ v2) % 2**32 +``` + +దయచేసి గమనించండి, పసుపు పత్రం fnvను v1\*(FNV_PRIME ^ v2)గా నిర్దిష్టంగా పేర్కొన్నప్పటికీ, అన్ని ప్రస్తుత అమలులు నిరంతరం పైన పేర్కొన్న నిర్వచనాన్ని ఉపయోగిస్తాయి. + +## పూర్తి డేటాసెట్ గణన {#full-dataset-calculation} + +పూర్తి 1 GB డేటాసెట్‌లోని ప్రతి 64-బైట్ ఐటెమ్ క్రింది విధంగా లెక్కించబడుతుంది: + +```python +def calc_dataset_item(cache, i): + n = len(cache) + r = HASH_BYTES // WORD_BYTES + # మిక్స్‌ని ప్రారంభించండి + mix = copy.copy(cache[i % n]) + mix[0] ^= i + mix = sha3_512(mix) + # i ఆధారంగా చాలా యాదృచ్ఛిక కాష్ నోడ్లతో fnv చేయండి + for j in range(DATASET_PARENTS): + cache_index = fnv(i ^ j, mix[j % r]) + mix = map(fnv, mix, cache[cache_index % n]) + return sha3_512(mix) +``` + +ముఖ్యంగా, మేము 256 సూడోరాండమ్‌గా ఎంచుకున్న కాష్ నోడ్‌ల నుండి డేటాను కలుపుతాము, మరియు డేటాసెట్ నోడ్‌ను లెక్కించడానికి దానిని హాష్ చేస్తాము. పూర్తి డేటాసెట్ అప్పుడు దీని ద్వారా రూపొందించబడుతుంది: + +```python +def calc_dataset(full_size, cache): + return [calc_dataset_item(cache, i) for i in range(full_size // HASH_BYTES)] +``` + +## ప్రధాన లూప్ {#main-loop} + +ఇప్పుడు, మేము ప్రధాన "హాషిమోటో"-వంటి లూప్‌ను నిర్దేశిస్తాము, ఇక్కడ ఒక నిర్దిష్ట హెడర్ మరియు నాన్స్ కోసం మా చివరి విలువను ఉత్పత్తి చేయడానికి పూర్తి డేటాసెట్ నుండి డేటాను సమగ్రపరుస్తాము. దిగువ కోడ్‌లో, `header` అనేది _ట్రంకేటెడ్_ బ్లాక్ హెడర్ యొక్క RLP ప్రాతినిధ్యం యొక్క SHA3-256 _హాష్‌_ను సూచిస్తుంది, అంటే **mixHash** మరియు **nonce** ఫీల్డ్‌లను మినహాయించి ఒక హెడర్. బిగ్-ఎండియన్ క్రమంలో `nonce` అనేది 64 బిట్ అన్‌సైన్డ్ పూర్ణసంఖ్య యొక్క ఎనిమిది బైట్‌లు. కాబట్టి `nonce[::-1]` అనేది ఆ విలువ యొక్క ఎనిమిది-బైట్ లిటిల్-ఎండియన్ ప్రాతినిధ్యం: + +```python +def hashimoto(header, nonce, full_size, dataset_lookup): + n = full_size / HASH_BYTES + w = MIX_BYTES // WORD_BYTES + mixhashes = MIX_BYTES / HASH_BYTES + # హెడర్+నాన్స్‌ను 64 బైట్ సీడ్‌గా కలపండి + s = sha3_512(header + nonce[::-1]) + # ప్రతిరూపమైన sతో మిక్స్‌ను ప్రారంభించండి + mix = [] + for _ in range(MIX_BYTES / HASH_BYTES): + mix.extend(s) + # యాదృచ్ఛిక డేటాసెట్ నోడ్‌లలో కలపండి + for i in range(ACCESSES): + p = fnv(i ^ s[0], mix[i % w]) % (n // mixhashes) * mixhashes + newdata = [] + for j in range(MIX_BYTES / HASH_BYTES): + newdata.extend(dataset_lookup(p + j)) + mix = map(fnv, mix, newdata) + # మిక్స్‌ను కంప్రెస్ చేయండి + cmix = [] + for i in range(0, len(mix), 4): + cmix.append(fnv(fnv(fnv(mix[i], mix[i+1]), mix[i+2]), mix[i+3])) + return { + "mix digest": serialize_hash(cmix), + "result": serialize_hash(sha3_256(s+cmix)) + } + +def hashimoto_light(full_size, cache, header, nonce): + return hashimoto(header, nonce, full_size, lambda x: calc_dataset_item(cache, x)) + +def hashimoto_full(full_size, dataset, header, nonce): + return hashimoto(header, nonce, full_size, lambda x: dataset[x]) +``` + +ముఖ్యంగా, మేము 128 బైట్‌ల వెడల్పు ఉన్న ఒక "మిక్స్"ను నిర్వహిస్తాము మరియు పూర్తి డేటాసెట్ నుండి 128 బైట్‌లను పదేపదే వరుసగా పొందుతాము మరియు దానిని మిక్స్‌తో కలపడానికి `fnv` ఫంక్షన్‌ను ఉపయోగిస్తాము. 128 బైట్‌ల సీక్వెన్షియల్ యాక్సెస్ ఉపయోగించబడుతుంది, తద్వారా అల్గారిథం యొక్క ప్రతి రౌండ్ ఎల్లప్పుడూ RAM నుండి పూర్తి పేజీని పొందుతుంది, ఇది ASICలు సిద్ధాంతపరంగా నివారించగల ట్రాన్స్‌లేషన్ లుక్‌అసైడ్ బఫర్ మిస్‌లను తగ్గిస్తుంది. + +ఈ అల్గారిథం యొక్క అవుట్‌పుట్ కావలసిన లక్ష్యం కంటే తక్కువగా ఉంటే, అప్పుడు నాన్స్ చెల్లుబాటు అవుతుంది. చివరలో `sha3_256` యొక్క అదనపు అప్లికేషన్, కనీసం కొంత పని జరిగిందని నిరూపించడానికి అందించగల ఒక మధ్యంతర నాన్స్ ఉందని నిర్ధారిస్తుంది; ఈ శీఘ్ర బాహ్య PoW ధృవీకరణ యాంటీ-DDoS ప్రయోజనాల కోసం ఉపయోగించబడుతుంది. ఫలితం ఒక నిష్పక్షపాత, 256-బిట్ సంఖ్య అని గణాంక హామీని అందించడానికి కూడా ఇది ఉపయోగపడుతుంది. + +## మైనింగ్ {#mining} + +మైనింగ్ అల్గారిథం క్రింది విధంగా నిర్వచించబడింది: + +```python +def mine(full_size, dataset, header, difficulty): + # అదే అంకెపై హాష్‌తో పోల్చడానికి లక్ష్యాన్ని జీరో-ప్యాడ్ చేయండి + target = zpad(encode_int(2**256 // difficulty), 64)[::-1] + from random import randint + nonce = randint(0, 2**64) + while hashimoto_full(full_size, dataset, header, nonce) > target: + nonce = (nonce + 1) % 2**64 + return nonce +``` + +## సీడ్ హాష్‌ను నిర్వచించడం {#seed-hash} + +ఒక నిర్దిష్ట బ్లాక్ పైన మైన్ చేయడానికి ఉపయోగించే సీడ్ హాష్‌ను లెక్కించడానికి, మేము క్రింది అల్గారిథంను ఉపయోగిస్తాము: + +```python + def get_seedhash(block): + s = '\x00' * 32 + for i in range(block.number // EPOCH_LENGTH): + s = serialize_hash(sha3_256(s)) + return s +``` + +సున్నితమైన మైనింగ్ మరియు ధృవీకరణ కోసం, భవిష్యత్ సీడ్ హాష్‌లు మరియు డేటాసెట్‌లను ఒక ప్రత్యేక థ్రెడ్‌లో ముందుగా గణించాలని మేము సిఫార్సు చేస్తున్నాము. + +## మరింత సమాచారం {#further-reading} + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ + +## అనుబంధం {#appendix} + +మీరు పైన పేర్కొన్న పైథాన్ స్పెక్ను కోడ్‌గా అమలు చేయడానికి ఆసక్తి కలిగి ఉంటే, క్రింది కోడ్‌ను ముందుగా చేర్చాలి. + +```python +import sha3, copy + +# లిటిల్ ఎండియన్ బిట్ ఆర్డరింగ్‌ను ఊహిస్తుంది (ఇంటెల్ ఆర్కిటెక్చర్‌ల వలె) +def decode_int(s): + return int(s[::-1].encode('hex'), 16) if s else 0 + +def encode_int(s): + a = "%x" % s + return '' if s == 0 else ('0' * (len(a) % 2) + a).decode('hex')[::-1] + +def zpad(s, length): + return s + '\x00' * max(0, length - len(s)) + +def serialize_hash(h): + return ''.join([zpad(encode_int(x), 4) for x in h]) + +def deserialize_hash(h): + return [decode_int(h[i:i+WORD_BYTES]) for i in range(0, len(h), WORD_BYTES)] + +def hash_words(h, sz, x): + if isinstance(x, list): + x = serialize_hash(x) + y = h(x) + return deserialize_hash(y) + +def serialize_cache(ds): + return ''.join([serialize_hash(h) for h in ds]) + +serialize_dataset = serialize_cache + +# sha3 హాష్ ఫంక్షన్, 64 బైట్‌లను అవుట్‌పుట్ చేస్తుంది +def sha3_512(x): + return hash_words(lambda v: sha3.sha3_512(v).digest(), 64, x) + +def sha3_256(x): + return hash_words(lambda v: sha3.sha3_256(v).digest(), 32, x) + +def xor(a, b): + return a ^ b + +def isprime(x): + for i in range(2, int(x**0.5)): + if x % i == 0: + return False + return True +``` + +### డేటా పరిమాణాలు {#data-sizes} + +క్రింది శోధన పట్టికలు డేటా పరిమాణాలు మరియు కాష్ పరిమాణాల యొక్క సుమారుగా 2048 పట్టిక చేయబడిన ఎపోక్‌లను అందిస్తాయి. + +```python +def get_datasize(block_number): + return data_sizes[block_number // EPOCH_LENGTH] + +def get_cachesize(block_number): + return cache_sizes[block_number // EPOCH_LENGTH] + +data_sizes = [ +1073739904, 1082130304, 1090514816, 1098906752, 1107293056, +1115684224, 1124070016, 1132461952, 1140849536, 1149232768, +1157627776, 1166013824, 1174404736, 1182786944, 1191180416, +1199568512, 1207958912, 1216345216, 1224732032, 1233124736, +1241513344, 1249902464, 1258290304, 1266673792, 1275067264, +1283453312, 1291844992, 1300234112, 1308619904, 1317010048, +1325397376, 1333787776, 1342176128, 1350561664, 1358954368, +1367339392, 1375731584, 1384118144, 1392507008, 1400897408, +1409284736, 1417673344, 1426062464, 1434451072, 1442839168, +1451229056, 1459615616, 1468006016, 1476394112, 1484782976, +1493171584, 1501559168, 1509948032, 1518337664, 1526726528, +1535114624, 1543503488, 1551892096, 1560278656, 1568669056, +1577056384, 1585446272, 1593831296, 1602219392, 1610610304, +1619000192, 1627386752, 1635773824, 1644164224, 1652555648, +1660943488, 1669332608, 1677721216, 1686109312, 1694497664, +1702886272, 1711274624, 1719661184, 1728047744, 1736434816, +1744829056, 1753218944, 1761606272, 1769995904, 1778382464, +1786772864, 1795157888, 1803550592, 1811937664, 1820327552, +1828711552, 1837102976, 1845488768, 1853879936, 1862269312, +1870656896, 1879048064, 1887431552, 1895825024, 1904212096, +1912601216, 1920988544, 1929379456, 1937765504, 1946156672, +1954543232, 1962932096, 1971321728, 1979707264, 1988093056, +1996487552, 2004874624, 2013262208, 2021653888, 2030039936, +2038430848, 2046819968, 2055208576, 2063596672, 2071981952, +2080373632, 2088762752, 2097149056, 2105539712, 2113928576, +2122315136, 2130700672, 2139092608, 2147483264, 2155872128, +2164257664, 2172642176, 2181035392, 2189426048, 2197814912, +2206203008, 2214587264, 2222979712, 2231367808, 2239758208, +2248145024, 2256527744, 2264922752, 2273312128, 2281701248, +2290086272, 2298476672, 2306867072, 2315251072, 2323639168, +2332032128, 2340420224, 2348808064, 2357196416, 2365580416, +2373966976, 2382363008, 2390748544, 2399139968, 2407530368, +2415918976, 2424307328, 2432695424, 2441084288, 2449472384, +2457861248, 2466247808, 2474637184, 2483026816, 2491414144, +2499803776, 2508191872, 2516582272, 2524970368, 2533359232, +2541743488, 2550134144, 2558525056, 2566913408, 2575301504, +2583686528, 2592073856, 2600467328, 2608856192, 2617240448, +2625631616, 2634022016, 2642407552, 2650796416, 2659188352, +2667574912, 2675965312, 2684352896, 2692738688, 2701130624, +2709518464, 2717907328, 2726293376, 2734685056, 2743073152, +2751462016, 2759851648, 2768232832, 2776625536, 2785017728, +2793401984, 2801794432, 2810182016, 2818571648, 2826959488, +2835349376, 2843734144, 2852121472, 2860514432, 2868900992, +2877286784, 2885676928, 2894069632, 2902451584, 2910843008, +2919234688, 2927622784, 2936011648, 2944400768, 2952789376, +2961177728, 2969565568, 2977951616, 2986338944, 2994731392, +3003120256, 3011508352, 3019895936, 3028287104, 3036675968, +3045063808, 3053452928, 3061837696, 3070228352, 3078615424, +3087003776, 3095394944, 3103782272, 3112173184, 3120562048, +3128944768, 3137339264, 3145725056, 3154109312, 3162505088, +3170893184, 3179280256, 3187669376, 3196056704, 3204445568, +3212836736, 3221224064, 3229612928, 3238002304, 3246391168, +3254778496, 3263165824, 3271556224, 3279944576, 3288332416, +3296719232, 3305110912, 3313500032, 3321887104, 3330273152, +3338658944, 3347053184, 3355440512, 3363827072, 3372220288, +3380608384, 3388997504, 3397384576, 3405774208, 3414163072, +3422551936, 3430937984, 3439328384, 3447714176, 3456104576, +3464493952, 3472883584, 3481268864, 3489655168, 3498048896, +3506434432, 3514826368, 3523213952, 3531603584, 3539987072, +3548380288, 3556763264, 3565157248, 3573545344, 3581934464, +3590324096, 3598712704, 3607098752, 3615488384, 3623877248, +3632265856, 3640646528, 3649043584, 3657430144, 3665821568, +3674207872, 3682597504, 3690984832, 3699367808, 3707764352, +3716152448, 3724541056, 3732925568, 3741318016, 3749706368, +3758091136, 3766481536, 3774872704, 3783260032, 3791650432, +3800036224, 3808427648, 3816815488, 3825204608, 3833592704, +3841981568, 3850370432, 3858755968, 3867147904, 3875536256, +3883920512, 3892313728, 3900702592, 3909087872, 3917478784, +3925868416, 3934256512, 3942645376, 3951032192, 3959422336, +3967809152, 3976200064, 3984588416, 3992974976, 4001363584, +4009751168, 4018141312, 4026530432, 4034911616, 4043308928, +4051695488, 4060084352, 4068472448, 4076862848, 4085249408, +4093640576, 4102028416, 4110413696, 4118805632, 4127194496, +4135583104, 4143971968, 4152360832, 4160746112, 4169135744, +4177525888, 4185912704, 4194303616, 4202691968, 4211076736, +4219463552, 4227855488, 4236246656, 4244633728, 4253022848, +4261412224, 4269799808, 4278184832, 4286578048, 4294962304, +4303349632, 4311743104, 4320130432, 4328521088, 4336909184, +4345295488, 4353687424, 4362073472, 4370458496, 4378852736, +4387238528, 4395630208, 4404019072, 4412407424, 4420790656, +4429182848, 4437571456, 4445962112, 4454344064, 4462738048, +4471119232, 4479516544, 4487904128, 4496289664, 4504682368, +4513068416, 4521459584, 4529846144, 4538232704, 4546619776, +4555010176, 4563402112, 4571790208, 4580174464, 4588567936, +4596957056, 4605344896, 4613734016, 4622119808, 4630511488, +4638898816, 4647287936, 4655675264, 4664065664, 4672451968, +4680842624, 4689231488, 4697620352, 4706007424, 4714397056, +4722786176, 4731173248, 4739562368, 4747951744, 4756340608, +4764727936, 4773114496, 4781504384, 4789894784, 4798283648, +4806667648, 4815059584, 4823449472, 4831835776, 4840226176, +4848612224, 4857003392, 4865391488, 4873780096, 4882169728, +4890557312, 4898946944, 4907333248, 4915722368, 4924110976, +4932499328, 4940889728, 4949276032, 4957666432, 4966054784, +4974438016, 4982831488, 4991221376, 4999607168, 5007998848, +5016386432, 5024763776, 5033164672, 5041544576, 5049941888, +5058329728, 5066717056, 5075107456, 5083494272, 5091883904, +5100273536, 5108662144, 5117048192, 5125436032, 5133827456, +5142215296, 5150605184, 5158993024, 5167382144, 5175769472, +5184157568, 5192543872, 5200936064, 5209324928, 5217711232, +5226102656, 5234490496, 5242877312, 5251263872, 5259654016, +5268040832, 5276434304, 5284819328, 5293209728, 5301598592, +5309986688, 5318374784, 5326764416, 5335151488, 5343542144, +5351929472, 5360319872, 5368706944, 5377096576, 5385484928, +5393871232, 5402263424, 5410650496, 5419040384, 5427426944, +5435816576, 5444205952, 5452594816, 5460981376, 5469367936, +5477760896, 5486148736, 5494536832, 5502925952, 5511315328, +5519703424, 5528089984, 5536481152, 5544869504, 5553256064, +5561645696, 5570032768, 5578423936, 5586811264, 5595193216, +5603585408, 5611972736, 5620366208, 5628750464, 5637143936, +5645528192, 5653921408, 5662310272, 5670694784, 5679082624, +5687474048, 5695864448, 5704251008, 5712641408, 5721030272, +5729416832, 5737806208, 5746194304, 5754583936, 5762969984, +5771358592, 5779748224, 5788137856, 5796527488, 5804911232, +5813300608, 5821692544, 5830082176, 5838468992, 5846855552, +5855247488, 5863636096, 5872024448, 5880411008, 5888799872, +5897186432, 5905576832, 5913966976, 5922352768, 5930744704, +5939132288, 5947522432, 5955911296, 5964299392, 5972688256, +5981074304, 5989465472, 5997851008, 6006241408, 6014627968, +6023015552, 6031408256, 6039796096, 6048185216, 6056574848, +6064963456, 6073351808, 6081736064, 6090128768, 6098517632, +6106906496, 6115289216, 6123680896, 6132070016, 6140459648, +6148849024, 6157237376, 6165624704, 6174009728, 6182403712, +6190792064, 6199176064, 6207569792, 6215952256, 6224345216, +6232732544, 6241124224, 6249510272, 6257899136, 6266287744, +6274676864, 6283065728, 6291454336, 6299843456, 6308232064, +6316620928, 6325006208, 6333395584, 6341784704, 6350174848, +6358562176, 6366951296, 6375337856, 6383729536, 6392119168, +6400504192, 6408895616, 6417283456, 6425673344, 6434059136, +6442444672, 6450837376, 6459223424, 6467613056, 6476004224, +6484393088, 6492781952, 6501170048, 6509555072, 6517947008, +6526336384, 6534725504, 6543112832, 6551500672, 6559888768, +6568278656, 6576662912, 6585055616, 6593443456, 6601834112, +6610219648, 6618610304, 6626999168, 6635385472, 6643777408, +6652164224, 6660552832, 6668941952, 6677330048, 6685719424, +6694107776, 6702493568, 6710882176, 6719274112, 6727662976, +6736052096, 6744437632, 6752825984, 6761213824, 6769604224, +6777993856, 6786383488, 6794770816, 6803158144, 6811549312, +6819937664, 6828326528, 6836706176, 6845101696, 6853491328, +6861880448, 6870269312, 6878655104, 6887046272, 6895433344, +6903822208, 6912212864, 6920596864, 6928988288, 6937377152, +6945764992, 6954149248, 6962544256, 6970928768, 6979317376, +6987709312, 6996093824, 7004487296, 7012875392, 7021258624, +7029652352, 7038038912, 7046427776, 7054818944, 7063207808, +7071595136, 7079980928, 7088372608, 7096759424, 7105149824, +7113536896, 7121928064, 7130315392, 7138699648, 7147092352, +7155479168, 7163865728, 7172249984, 7180648064, 7189036672, +7197424768, 7205810816, 7214196608, 7222589824, 7230975104, +7239367552, 7247755904, 7256145536, 7264533376, 7272921472, +7281308032, 7289694848, 7298088832, 7306471808, 7314864512, +7323253888, 7331643008, 7340029568, 7348419712, 7356808832, +7365196672, 7373585792, 7381973888, 7390362752, 7398750592, +7407138944, 7415528576, 7423915648, 7432302208, 7440690304, +7449080192, 7457472128, 7465860992, 7474249088, 7482635648, +7491023744, 7499412608, 7507803008, 7516192384, 7524579968, +7532967296, 7541358464, 7549745792, 7558134656, 7566524032, +7574912896, 7583300992, 7591690112, 7600075136, 7608466816, +7616854912, 7625244544, 7633629824, 7642020992, 7650410368, +7658794112, 7667187328, 7675574912, 7683961984, 7692349568, +7700739712, 7709130368, 7717519232, 7725905536, 7734295424, +7742683264, 7751069056, 7759457408, 7767849088, 7776238208, +7784626816, 7793014912, 7801405312, 7809792128, 7818179968, +7826571136, 7834957184, 7843347328, 7851732352, 7860124544, +7868512384, 7876902016, 7885287808, 7893679744, 7902067072, +7910455936, 7918844288, 7927230848, 7935622784, 7944009344, +7952400256, 7960786048, 7969176704, 7977565312, 7985953408, +7994339968, 8002730368, 8011119488, 8019508096, 8027896192, +8036285056, 8044674688, 8053062272, 8061448832, 8069838464, +8078227328, 8086616704, 8095006592, 8103393664, 8111783552, +8120171392, 8128560256, 8136949376, 8145336704, 8153726848, +8162114944, 8170503296, 8178891904, 8187280768, 8195669632, +8204058496, 8212444544, 8220834176, 8229222272, 8237612672, +8246000768, 8254389376, 8262775168, 8271167104, 8279553664, +8287944064, 8296333184, 8304715136, 8313108352, 8321497984, +8329885568, 8338274432, 8346663296, 8355052928, 8363441536, +8371828352, 8380217984, 8388606592, 8396996224, 8405384576, +8413772672, 8422161536, 8430549376, 8438939008, 8447326592, +8455715456, 8464104832, 8472492928, 8480882048, 8489270656, +8497659776, 8506045312, 8514434944, 8522823808, 8531208832, +8539602304, 8547990656, 8556378752, 8564768384, 8573154176, +8581542784, 8589933952, 8598322816, 8606705024, 8615099264, +8623487872, 8631876992, 8640264064, 8648653952, 8657040256, +8665430656, 8673820544, 8682209152, 8690592128, 8698977152, +8707374464, 8715763328, 8724151424, 8732540032, 8740928384, +8749315712, 8757704576, 8766089344, 8774480768, 8782871936, +8791260032, 8799645824, 8808034432, 8816426368, 8824812928, +8833199488, 8841591424, 8849976448, 8858366336, 8866757248, +8875147136, 8883532928, 8891923328, 8900306816, 8908700288, +8917088384, 8925478784, 8933867392, 8942250368, 8950644608, +8959032704, 8967420544, 8975809664, 8984197504, 8992584064, +9000976256, 9009362048, 9017752448, 9026141312, 9034530688, +9042917504, 9051307904, 9059694208, 9068084864, 9076471424, +9084861824, 9093250688, 9101638528, 9110027648, 9118416512, +9126803584, 9135188096, 9143581312, 9151969664, 9160356224, +9168747136, 9177134464, 9185525632, 9193910144, 9202302848, +9210690688, 9219079552, 9227465344, 9235854464, 9244244864, +9252633472, 9261021824, 9269411456, 9277799296, 9286188928, +9294574208, 9302965888, 9311351936, 9319740032, 9328131968, +9336516736, 9344907392, 9353296768, 9361685888, 9370074752, +9378463616, 9386849408, 9395239808, 9403629184, 9412016512, +9420405376, 9428795008, 9437181568, 9445570688, 9453960832, +9462346624, 9470738048, 9479121536, 9487515008, 9495903616, +9504289664, 9512678528, 9521067904, 9529456256, 9537843584, +9546233728, 9554621312, 9563011456, 9571398784, 9579788672, +9588178304, 9596567168, 9604954496, 9613343104, 9621732992, +9630121856, 9638508416, 9646898816, 9655283584, 9663675776, +9672061312, 9680449664, 9688840064, 9697230464, 9705617536, +9714003584, 9722393984, 9730772608, 9739172224, 9747561088, +9755945344, 9764338816, 9772726144, 9781116544, 9789503872, +9797892992, 9806282624, 9814670464, 9823056512, 9831439232, +9839833984, 9848224384, 9856613504, 9865000576, 9873391232, +9881772416, 9890162816, 9898556288, 9906940544, 9915333248, +9923721088, 9932108672, 9940496512, 9948888448, 9957276544, +9965666176, 9974048384, 9982441088, 9990830464, 9999219584, +10007602816, 10015996544, 10024385152, 10032774016, 10041163648, +10049548928, 10057940096, 10066329472, 10074717824, 10083105152, +10091495296, 10099878784, 10108272256, 10116660608, 10125049216, +10133437312, 10141825664, 10150213504, 10158601088, 10166991232, +10175378816, 10183766144, 10192157312, 10200545408, 10208935552, +10217322112, 10225712768, 10234099328, 10242489472, 10250876032, +10259264896, 10267656064, 10276042624, 10284429184, 10292820352, +10301209472, 10309598848, 10317987712, 10326375296, 10334763392, +10343153536, 10351541632, 10359930752, 10368318592, 10376707456, +10385096576, 10393484672, 10401867136, 10410262144, 10418647424, +10427039104, 10435425664, 10443810176, 10452203648, 10460589952, +10468982144, 10477369472, 10485759104, 10494147712, 10502533504, +10510923392, 10519313536, 10527702656, 10536091264, 10544478592, +10552867712, 10561255808, 10569642368, 10578032768, 10586423168, +10594805632, 10603200128, 10611588992, 10619976064, 10628361344, +10636754048, 10645143424, 10653531776, 10661920384, 10670307968, +10678696832, 10687086464, 10695475072, 10703863168, 10712246144, +10720639616, 10729026688, 10737414784, 10745806208, 10754190976, +10762581376, 10770971264, 10779356288, 10787747456, 10796135552, +10804525184, 10812915584, 10821301888, 10829692288, 10838078336, +10846469248, 10854858368, 10863247232, 10871631488, 10880023424, +10888412032, 10896799616, 10905188992, 10913574016, 10921964672, +10930352768, 10938742912, 10947132544, 10955518592, 10963909504, +10972298368, 10980687488, 10989074816, 10997462912, 11005851776, +11014241152, 11022627712, 11031017344, 11039403904, 11047793024, +11056184704, 11064570752, 11072960896, 11081343872, 11089737856, +11098128256, 11106514816, 11114904448, 11123293568, 11131680128, +11140065152, 11148458368, 11156845696, 11165236864, 11173624192, +11182013824, 11190402688, 11198790784, 11207179136, 11215568768, +11223957376, 11232345728, 11240734592, 11249122688, 11257511296, +11265899648, 11274285952, 11282675584, 11291065472, 11299452544, +11307842432, 11316231296, 11324616832, 11333009024, 11341395584, +11349782656, 11358172288, 11366560384, 11374950016, 11383339648, +11391721856, 11400117376, 11408504192, 11416893568, 11425283456, +11433671552, 11442061184, 11450444672, 11458837888, 11467226752, +11475611776, 11484003968, 11492392064, 11500780672, 11509169024, +11517550976, 11525944448, 11534335616, 11542724224, 11551111808, +11559500672, 11567890304, 11576277376, 11584667008, 11593056128, +11601443456, 11609830016, 11618221952, 11626607488, 11634995072, +11643387776, 11651775104, 11660161664, 11668552576, 11676940928, +11685330304, 11693718656, 11702106496, 11710496128, 11718882688, +11727273088, 11735660416, 11744050048, 11752437376, 11760824704, +11769216128, 11777604736, 11785991296, 11794381952, 11802770048, +11811157888, 11819548544, 11827932544, 11836324736, 11844713344, +11853100928, 11861486464, 11869879936, 11878268032, 11886656896, +11895044992, 11903433088, 11911822976, 11920210816, 11928600448, +11936987264, 11945375872, 11953761152, 11962151296, 11970543488, +11978928512, 11987320448, 11995708288, 12004095104, 12012486272, +12020875136, 12029255552, 12037652096, 12046039168, 12054429568, +12062813824, 12071206528, 12079594624, 12087983744, 12096371072, +12104759936, 12113147264, 12121534592, 12129924992, 12138314624, +12146703232, 12155091584, 12163481216, 12171864704, 12180255872, +12188643968, 12197034112, 12205424512, 12213811328, 12222199424, +12230590336, 12238977664, 12247365248, 12255755392, 12264143488, +12272531584, 12280920448, 12289309568, 12297694592, 12306086528, +12314475392, 12322865024, 12331253632, 12339640448, 12348029312, +12356418944, 12364805248, 12373196672, 12381580928, 12389969024, +12398357632, 12406750592, 12415138432, 12423527552, 12431916416, +12440304512, 12448692352, 12457081216, 12465467776, 12473859968, +12482245504, 12490636672, 12499025536, 12507411584, 12515801728, +12524190592, 12532577152, 12540966272, 12549354368, 12557743232, +12566129536, 12574523264, 12582911872, 12591299456, 12599688064, +12608074624, 12616463488, 12624845696, 12633239936, 12641631616, +12650019968, 12658407296, 12666795136, 12675183232, 12683574656, +12691960192, 12700350592, 12708740224, 12717128576, 12725515904, +12733906816, 12742295168, 12750680192, 12759071872, 12767460736, +12775848832, 12784236928, 12792626816, 12801014656, 12809404288, +12817789312, 12826181504, 12834568832, 12842954624, 12851345792, +12859732352, 12868122496, 12876512128, 12884901248, 12893289088, +12901672832, 12910067584, 12918455168, 12926842496, 12935232896, +12943620736, 12952009856, 12960396928, 12968786816, 12977176192, +12985563776, 12993951104, 13002341504, 13010730368, 13019115392, +13027506304, 13035895168, 13044272512, 13052673152, 13061062528, +13069446272, 13077838976, 13086227072, 13094613632, 13103000192, +13111393664, 13119782528, 13128157568, 13136559232, 13144945024, +13153329536, 13161724288, 13170111872, 13178502784, 13186884736, +13195279744, 13203667072, 13212057472, 13220445824, 13228832128, +13237221248, 13245610624, 13254000512, 13262388352, 13270777472, +13279166336, 13287553408, 13295943296, 13304331904, 13312719488, +13321108096, 13329494656, 13337885824, 13346274944, 13354663808, +13363051136, 13371439232, 13379825024, 13388210816, 13396605056, +13404995456, 13413380224, 13421771392, 13430159744, 13438546048, +13446937216, 13455326848, 13463708288, 13472103808, 13480492672, +13488875648, 13497269888, 13505657728, 13514045312, 13522435712, +13530824576, 13539210112, 13547599232, 13555989376, 13564379008, +13572766336, 13581154432, 13589544832, 13597932928, 13606320512, +13614710656, 13623097472, 13631477632, 13639874944, 13648264064, +13656652928, 13665041792, 13673430656, 13681818496, 13690207616, +13698595712, 13706982272, 13715373184, 13723762048, 13732150144, +13740536704, 13748926592, 13757316224, 13765700992, 13774090112, +13782477952, 13790869376, 13799259008, 13807647872, 13816036736, +13824425344, 13832814208, 13841202304, 13849591424, 13857978752, +13866368896, 13874754688, 13883145344, 13891533184, 13899919232, +13908311168, 13916692096, 13925085056, 13933473152, 13941866368, +13950253696, 13958643584, 13967032192, 13975417216, 13983807616, +13992197504, 14000582272, 14008973696, 14017363072, 14025752192, +14034137984, 14042528384, 14050918016, 14059301504, 14067691648, +14076083584, 14084470144, 14092852352, 14101249664, 14109635968, +14118024832, 14126407552, 14134804352, 14143188608, 14151577984, +14159968384, 14168357248, 14176741504, 14185127296, 14193521024, +14201911424, 14210301824, 14218685056, 14227067264, 14235467392, +14243855488, 14252243072, 14260630144, 14269021568, 14277409408, +14285799296, 14294187904, 14302571392, 14310961792, 14319353728, +14327738752, 14336130944, 14344518784, 14352906368, 14361296512, +14369685376, 14378071424, 14386462592, 14394848128, 14403230848, +14411627392, 14420013952, 14428402304, 14436793472, 14445181568, +14453569664, 14461959808, 14470347904, 14478737024, 14487122816, +14495511424, 14503901824, 14512291712, 14520677504, 14529064832, +14537456768, 14545845632, 14554234496, 14562618496, 14571011456, +14579398784, 14587789184, 14596172672, 14604564608, 14612953984, +14621341312, 14629724288, 14638120832, 14646503296, 14654897536, +14663284864, 14671675264, 14680061056, 14688447616, 14696835968, +14705228416, 14713616768, 14722003328, 14730392192, 14738784128, +14747172736, 14755561088, 14763947648, 14772336512, 14780725376, +14789110144, 14797499776, 14805892736, 14814276992, 14822670208, +14831056256, 14839444352, 14847836032, 14856222848, 14864612992, +14872997504, 14881388672, 14889775744, 14898165376, 14906553472, +14914944896, 14923329664, 14931721856, 14940109696, 14948497024, +14956887424, 14965276544, 14973663616, 14982053248, 14990439808, +14998830976, 15007216768, 15015605888, 15023995264, 15032385152, +15040768384, 15049154944, 15057549184, 15065939072, 15074328448, +15082715008, 15091104128, 15099493504, 15107879296, 15116269184, +15124659584, 15133042304, 15141431936, 15149824384, 15158214272, +15166602368, 15174991232, 15183378304, 15191760512, 15200154496, +15208542592, 15216931712, 15225323392, 15233708416, 15242098048, +15250489216, 15258875264, 15267265408, 15275654528, 15284043136, +15292431488, 15300819584, 15309208192, 15317596544, 15325986176, +15334374784, 15342763648, 15351151744, 15359540608, 15367929728, +15376318336, 15384706432, 15393092992, 15401481856, 15409869952, +15418258816, 15426649984, 15435037568, 15443425664, 15451815296, +15460203392, 15468589184, 15476979328, 15485369216, 15493755776, +15502146944, 15510534272, 15518924416, 15527311232, 15535699072, +15544089472, 15552478336, 15560866688, 15569254528, 15577642624, +15586031488, 15594419072, 15602809472, 15611199104, 15619586432, +15627975296, 15636364928, 15644753792, 15653141888, 15661529216, +15669918848, 15678305152, 15686696576, 15695083136, 15703474048, +15711861632, 15720251264, 15728636288, 15737027456, 15745417088, +15753804928, 15762194048, 15770582656, 15778971008, 15787358336, +15795747712, 15804132224, 15812523392, 15820909696, 15829300096, +15837691264, 15846071936, 15854466944, 15862855808, 15871244672, +15879634816, 15888020608, 15896409728, 15904799104, 15913185152, +15921577088, 15929966464, 15938354816, 15946743424, 15955129472, +15963519872, 15971907968, 15980296064, 15988684928, 15997073024, +16005460864, 16013851264, 16022241152, 16030629248, 16039012736, +16047406976, 16055794816, 16064181376, 16072571264, 16080957824, +16089346688, 16097737856, 16106125184, 16114514816, 16122904192, +16131292544, 16139678848, 16148066944, 16156453504, 16164839552, +16173236096, 16181623424, 16190012032, 16198401152, 16206790528, +16215177344, 16223567744, 16231956352, 16240344704, 16248731008, +16257117824, 16265504384, 16273898624, 16282281856, 16290668672, +16299064192, 16307449216, 16315842176, 16324230016, 16332613504, +16341006464, 16349394304, 16357783168, 16366172288, 16374561664, +16382951296, 16391337856, 16399726208, 16408116352, 16416505472, +16424892032, 16433282176, 16441668224, 16450058624, 16458448768, +16466836864, 16475224448, 16483613056, 16492001408, 16500391808, +16508779648, 16517166976, 16525555328, 16533944192, 16542330752, +16550719616, 16559110528, 16567497088, 16575888512, 16584274816, +16592665472, 16601051008, 16609442944, 16617832064, 16626218624, +16634607488, 16642996096, 16651385728, 16659773824, 16668163712, +16676552576, 16684938112, 16693328768, 16701718144, 16710095488, +16718492288, 16726883968, 16735272832, 16743661184, 16752049792, +16760436608, 16768827008, 16777214336, 16785599104, 16793992832, +16802381696, 16810768768, 16819151744, 16827542656, 16835934848, +16844323712, 16852711552, 16861101952, 16869489536, 16877876864, +16886265728, 16894653056, 16903044736, 16911431296, 16919821696, +16928207488, 16936592768, 16944987776, 16953375616, 16961763968, +16970152832, 16978540928, 16986929536, 16995319168, 17003704448, +17012096896, 17020481152, 17028870784, 17037262208, 17045649536, +17054039936, 17062426496, 17070814336, 17079205504, 17087592064, +17095978112, 17104369024, 17112759424, 17121147776, 17129536384, +17137926016, 17146314368, 17154700928, 17163089792, 17171480192, +17179864192, 17188256896, 17196644992, 17205033856, 17213423488, +17221811072, 17230198912, 17238588032, 17246976896, 17255360384, +17263754624, 17272143232, 17280530048, 17288918912, 17297309312, +17305696384, 17314085504, 17322475136, 17330863744, 17339252096, +17347640192, 17356026496, 17364413824, 17372796544, 17381190016, +17389583488, 17397972608, 17406360704, 17414748544, 17423135872, +17431527296, 17439915904, 17448303232, 17456691584, 17465081728, +17473468288, 17481857408, 17490247552, 17498635904, 17507022464, +17515409024, 17523801728, 17532189824, 17540577664, 17548966016, +17557353344, 17565741184, 17574131584, 17582519168, 17590907008, +17599296128, 17607687808, 17616076672, 17624455808, 17632852352, +17641238656, 17649630848, 17658018944, 17666403968, 17674794112, +17683178368, 17691573376, 17699962496, 17708350592, 17716739968, +17725126528, 17733517184, 17741898112, 17750293888, 17758673024, +17767070336, 17775458432, 17783848832, 17792236928, 17800625536, +17809012352, 17817402752, 17825785984, 17834178944, 17842563968, +17850955648, 17859344512, 17867732864, 17876119424, 17884511872, +17892900224, 17901287296, 17909677696, 17918058112, 17926451072, +17934843776, 17943230848, 17951609216, 17960008576, 17968397696, +17976784256, 17985175424, 17993564032, 18001952128, 18010339712, +18018728576, 18027116672, 18035503232, 18043894144, 18052283264, +18060672128, 18069056384, 18077449856, 18085837184, 18094225792, +18102613376, 18111004544, 18119388544, 18127781248, 18136170368, +18144558976, 18152947328, 18161336192, 18169724288, 18178108544, +18186498944, 18194886784, 18203275648, 18211666048, 18220048768, +18228444544, 18236833408, 18245220736] + +cache_sizes = [ +16776896, 16907456, 17039296, 17170112, 17301056, 17432512, 17563072, +17693888, 17824192, 17955904, 18087488, 18218176, 18349504, 18481088, +18611392, 18742336, 18874304, 19004224, 19135936, 19267264, 19398208, +19529408, 19660096, 19791424, 19922752, 20053952, 20184896, 20315968, +20446912, 20576576, 20709184, 20840384, 20971072, 21102272, 21233216, +21364544, 21494848, 21626816, 21757376, 21887552, 22019392, 22151104, +22281536, 22412224, 22543936, 22675264, 22806464, 22935872, 23068096, +23198272, 23330752, 23459008, 23592512, 23723968, 23854912, 23986112, +24116672, 24247616, 24378688, 24509504, 24640832, 24772544, 24903488, +25034432, 25165376, 25296704, 25427392, 25558592, 25690048, 25820096, +25951936, 26081728, 26214208, 26345024, 26476096, 26606656, 26737472, +26869184, 26998208, 27131584, 27262528, 27393728, 27523904, 27655744, +27786688, 27917888, 28049344, 28179904, 28311488, 28441792, 28573504, +28700864, 28835648, 28966208, 29096768, 29228608, 29359808, 29490752, +29621824, 29752256, 29882816, 30014912, 30144448, 30273728, 30406976, +30538432, 30670784, 30799936, 30932672, 31063744, 31195072, 31325248, +31456192, 31588288, 31719232, 31850432, 31981504, 32110784, 32243392, +32372672, 32505664, 32636608, 32767808, 32897344, 33029824, 33160768, +33289664, 33423296, 33554368, 33683648, 33816512, 33947456, 34076992, +34208704, 34340032, 34471744, 34600256, 34734016, 34864576, 34993984, +35127104, 35258176, 35386688, 35518528, 35650624, 35782336, 35910976, +36044608, 36175808, 36305728, 36436672, 36568384, 36699968, 36830656, +36961984, 37093312, 37223488, 37355072, 37486528, 37617472, 37747904, +37879232, 38009792, 38141888, 38272448, 38403392, 38535104, 38660672, +38795584, 38925632, 39059264, 39190336, 39320768, 39452096, 39581632, +39713984, 39844928, 39974848, 40107968, 40238144, 40367168, 40500032, +40631744, 40762816, 40894144, 41023552, 41155904, 41286208, 41418304, +41547712, 41680448, 41811904, 41942848, 42073792, 42204992, 42334912, +42467008, 42597824, 42729152, 42860096, 42991552, 43122368, 43253696, +43382848, 43515712, 43646912, 43777088, 43907648, 44039104, 44170432, +44302144, 44433344, 44564288, 44694976, 44825152, 44956864, 45088448, +45219008, 45350464, 45481024, 45612608, 45744064, 45874496, 46006208, +46136768, 46267712, 46399424, 46529344, 46660672, 46791488, 46923328, +47053504, 47185856, 47316928, 47447872, 47579072, 47710144, 47839936, +47971648, 48103232, 48234176, 48365248, 48496192, 48627136, 48757312, +48889664, 49020736, 49149248, 49283008, 49413824, 49545152, 49675712, +49807168, 49938368, 50069056, 50200256, 50331584, 50462656, 50593472, +50724032, 50853952, 50986048, 51117632, 51248576, 51379904, 51510848, +51641792, 51773248, 51903296, 52035136, 52164032, 52297664, 52427968, +52557376, 52690112, 52821952, 52952896, 53081536, 53213504, 53344576, +53475776, 53608384, 53738816, 53870528, 54000832, 54131776, 54263744, +54394688, 54525248, 54655936, 54787904, 54918592, 55049152, 55181248, +55312064, 55442752, 55574336, 55705024, 55836224, 55967168, 56097856, +56228672, 56358592, 56490176, 56621888, 56753728, 56884928, 57015488, +57146816, 57278272, 57409216, 57540416, 57671104, 57802432, 57933632, +58064576, 58195264, 58326976, 58457408, 58588864, 58720192, 58849984, +58981696, 59113024, 59243456, 59375552, 59506624, 59637568, 59768512, +59897792, 60030016, 60161984, 60293056, 60423872, 60554432, 60683968, +60817216, 60948032, 61079488, 61209664, 61341376, 61471936, 61602752, +61733696, 61865792, 61996736, 62127808, 62259136, 62389568, 62520512, +62651584, 62781632, 62910784, 63045056, 63176128, 63307072, 63438656, +63569216, 63700928, 63831616, 63960896, 64093888, 64225088, 64355392, +64486976, 64617664, 64748608, 64879424, 65009216, 65142464, 65273792, +65402816, 65535424, 65666752, 65797696, 65927744, 66060224, 66191296, +66321344, 66453056, 66584384, 66715328, 66846656, 66977728, 67108672, +67239104, 67370432, 67501888, 67631296, 67763776, 67895104, 68026304, +68157248, 68287936, 68419264, 68548288, 68681408, 68811968, 68942912, +69074624, 69205568, 69337024, 69467584, 69599168, 69729472, 69861184, +69989824, 70122944, 70253888, 70385344, 70515904, 70647232, 70778816, +70907968, 71040832, 71171648, 71303104, 71432512, 71564992, 71695168, +71826368, 71958464, 72089536, 72219712, 72350144, 72482624, 72613568, +72744512, 72875584, 73006144, 73138112, 73268672, 73400128, 73530944, +73662272, 73793344, 73924544, 74055104, 74185792, 74316992, 74448832, +74579392, 74710976, 74841664, 74972864, 75102784, 75233344, 75364544, +75497024, 75627584, 75759296, 75890624, 76021696, 76152256, 76283072, +76414144, 76545856, 76676672, 76806976, 76937792, 77070016, 77200832, +77331392, 77462464, 77593664, 77725376, 77856448, 77987776, 78118336, +78249664, 78380992, 78511424, 78642496, 78773056, 78905152, 79033664, +79166656, 79297472, 79429568, 79560512, 79690816, 79822784, 79953472, +80084672, 80214208, 80346944, 80477632, 80608576, 80740288, 80870848, +81002048, 81133504, 81264448, 81395648, 81525952, 81657536, 81786304, +81919808, 82050112, 82181312, 82311616, 82443968, 82573376, 82705984, +82835776, 82967744, 83096768, 83230528, 83359552, 83491264, 83622464, +83753536, 83886016, 84015296, 84147776, 84277184, 84409792, 84540608, +84672064, 84803008, 84934336, 85065152, 85193792, 85326784, 85458496, +85589312, 85721024, 85851968, 85982656, 86112448, 86244416, 86370112, +86506688, 86637632, 86769344, 86900672, 87031744, 87162304, 87293632, +87424576, 87555392, 87687104, 87816896, 87947968, 88079168, 88211264, +88341824, 88473152, 88603712, 88735424, 88862912, 88996672, 89128384, +89259712, 89390272, 89521984, 89652544, 89783872, 89914816, 90045376, +90177088, 90307904, 90438848, 90569152, 90700096, 90832832, 90963776, +91093696, 91223744, 91356992, 91486784, 91618496, 91749824, 91880384, +92012224, 92143552, 92273344, 92405696, 92536768, 92666432, 92798912, +92926016, 93060544, 93192128, 93322816, 93453632, 93583936, 93715136, +93845056, 93977792, 94109504, 94240448, 94371776, 94501184, 94632896, +94764224, 94895552, 95023424, 95158208, 95287744, 95420224, 95550016, +95681216, 95811904, 95943872, 96075328, 96203584, 96337856, 96468544, +96599744, 96731072, 96860992, 96992576, 97124288, 97254848, 97385536, +97517248, 97647808, 97779392, 97910464, 98041408, 98172608, 98303168, +98434496, 98565568, 98696768, 98827328, 98958784, 99089728, 99220928, +99352384, 99482816, 99614272, 99745472, 99876416, 100007104, +100138048, 100267072, 100401088, 100529984, 100662592, 100791872, +100925248, 101056064, 101187392, 101317952, 101449408, 101580608, +101711296, 101841728, 101973824, 102104896, 102235712, 102366016, +102498112, 102628672, 102760384, 102890432, 103021888, 103153472, +103284032, 103415744, 103545152, 103677248, 103808576, 103939648, +104070976, 104201792, 104332736, 104462528, 104594752, 104725952, +104854592, 104988608, 105118912, 105247808, 105381184, 105511232, +105643072, 105774784, 105903296, 106037056, 106167872, 106298944, +106429504, 106561472, 106691392, 106822592, 106954304, 107085376, +107216576, 107346368, 107478464, 107609792, 107739712, 107872192, +108003136, 108131392, 108265408, 108396224, 108527168, 108657344, +108789568, 108920384, 109049792, 109182272, 109312576, 109444928, +109572928, 109706944, 109837888, 109969088, 110099648, 110230976, +110362432, 110492992, 110624704, 110755264, 110886208, 111017408, +111148864, 111279296, 111410752, 111541952, 111673024, 111803456, +111933632, 112066496, 112196416, 112328512, 112457792, 112590784, +112715968, 112852672, 112983616, 113114944, 113244224, 113376448, +113505472, 113639104, 113770304, 113901376, 114031552, 114163264, +114294592, 114425536, 114556864, 114687424, 114818624, 114948544, +115080512, 115212224, 115343296, 115473472, 115605184, 115736128, +115867072, 115997248, 116128576, 116260288, 116391488, 116522944, +116652992, 116784704, 116915648, 117046208, 117178304, 117308608, +117440192, 117569728, 117701824, 117833024, 117964096, 118094656, +118225984, 118357312, 118489024, 118617536, 118749632, 118882112, +119012416, 119144384, 119275328, 119406016, 119537344, 119668672, +119798464, 119928896, 120061376, 120192832, 120321728, 120454336, +120584512, 120716608, 120848192, 120979136, 121109056, 121241408, +121372352, 121502912, 121634752, 121764416, 121895744, 122027072, +122157632, 122289088, 122421184, 122550592, 122682944, 122813888, +122945344, 123075776, 123207488, 123338048, 123468736, 123600704, +123731264, 123861952, 123993664, 124124608, 124256192, 124386368, +124518208, 124649024, 124778048, 124911296, 125041088, 125173696, +125303744, 125432896, 125566912, 125696576, 125829056, 125958592, +126090304, 126221248, 126352832, 126483776, 126615232, 126746432, +126876608, 127008704, 127139392, 127270336, 127401152, 127532224, +127663552, 127794752, 127925696, 128055232, 128188096, 128319424, +128449856, 128581312, 128712256, 128843584, 128973632, 129103808, +129236288, 129365696, 129498944, 129629888, 129760832, 129892288, +130023104, 130154048, 130283968, 130416448, 130547008, 130678336, +130807616, 130939456, 131071552, 131202112, 131331776, 131464384, +131594048, 131727296, 131858368, 131987392, 132120256, 132250816, +132382528, 132513728, 132644672, 132774976, 132905792, 133038016, +133168832, 133299392, 133429312, 133562048, 133692992, 133823296, +133954624, 134086336, 134217152, 134348608, 134479808, 134607296, +134741056, 134872384, 135002944, 135134144, 135265472, 135396544, +135527872, 135659072, 135787712, 135921472, 136052416, 136182848, +136313792, 136444864, 136576448, 136707904, 136837952, 136970048, +137099584, 137232064, 137363392, 137494208, 137625536, 137755712, +137887424, 138018368, 138149824, 138280256, 138411584, 138539584, +138672832, 138804928, 138936128, 139066688, 139196864, 139328704, +139460032, 139590208, 139721024, 139852864, 139984576, 140115776, +140245696, 140376512, 140508352, 140640064, 140769856, 140902336, +141032768, 141162688, 141294016, 141426496, 141556544, 141687488, +141819584, 141949888, 142080448, 142212544, 142342336, 142474432, +142606144, 142736192, 142868288, 142997824, 143129408, 143258944, +143392448, 143523136, 143653696, 143785024, 143916992, 144045632, +144177856, 144309184, 144440768, 144570688, 144701888, 144832448, +144965056, 145096384, 145227584, 145358656, 145489856, 145620928, +145751488, 145883072, 146011456, 146144704, 146275264, 146407232, +146538176, 146668736, 146800448, 146931392, 147062336, 147193664, +147324224, 147455936, 147586624, 147717056, 147848768, 147979456, +148110784, 148242368, 148373312, 148503232, 148635584, 148766144, +148897088, 149028416, 149159488, 149290688, 149420224, 149551552, +149683136, 149814976, 149943616, 150076352, 150208064, 150338624, +150470464, 150600256, 150732224, 150862784, 150993088, 151125952, +151254976, 151388096, 151519168, 151649728, 151778752, 151911104, +152042944, 152174144, 152304704, 152435648, 152567488, 152698816, +152828992, 152960576, 153091648, 153222976, 153353792, 153484096, +153616192, 153747008, 153878336, 154008256, 154139968, 154270912, +154402624, 154533824, 154663616, 154795712, 154926272, 155057984, +155188928, 155319872, 155450816, 155580608, 155712064, 155843392, +155971136, 156106688, 156237376, 156367424, 156499264, 156630976, +156761536, 156892352, 157024064, 157155008, 157284416, 157415872, +157545536, 157677248, 157810496, 157938112, 158071744, 158203328, +158334656, 158464832, 158596288, 158727616, 158858048, 158988992, +159121216, 159252416, 159381568, 159513152, 159645632, 159776192, +159906496, 160038464, 160169536, 160300352, 160430656, 160563008, +160693952, 160822208, 160956352, 161086784, 161217344, 161349184, +161480512, 161611456, 161742272, 161873216, 162002752, 162135872, +162266432, 162397888, 162529216, 162660032, 162790976, 162922048, +163052096, 163184576, 163314752, 163446592, 163577408, 163707968, +163839296, 163969984, 164100928, 164233024, 164364224, 164494912, +164625856, 164756672, 164887616, 165019072, 165150016, 165280064, +165412672, 165543104, 165674944, 165805888, 165936832, 166067648, +166198336, 166330048, 166461248, 166591552, 166722496, 166854208, +166985408, 167116736, 167246656, 167378368, 167508416, 167641024, +167771584, 167903168, 168034112, 168164032, 168295744, 168427456, +168557632, 168688448, 168819136, 168951616, 169082176, 169213504, +169344832, 169475648, 169605952, 169738048, 169866304, 169999552, +170131264, 170262464, 170393536, 170524352, 170655424, 170782016, +170917696, 171048896, 171179072, 171310784, 171439936, 171573184, +171702976, 171835072, 171966272, 172097216, 172228288, 172359232, +172489664, 172621376, 172747712, 172883264, 173014208, 173144512, +173275072, 173407424, 173539136, 173669696, 173800768, 173931712, +174063424, 174193472, 174325696, 174455744, 174586816, 174718912, +174849728, 174977728, 175109696, 175242688, 175374272, 175504832, +175636288, 175765696, 175898432, 176028992, 176159936, 176291264, +176422592, 176552512, 176684864, 176815424, 176946496, 177076544, +177209152, 177340096, 177470528, 177600704, 177731648, 177864256, +177994816, 178126528, 178257472, 178387648, 178518464, 178650176, +178781888, 178912064, 179044288, 179174848, 179305024, 179436736, +179568448, 179698496, 179830208, 180092608, 180223808, 180354752, +180485696, 180617152, 180748096, 180877504, 181009984, 181139264, +181272512, 181402688, 181532608, 181663168, 181795136, 181926592, +182057536, 182190016, 182320192, 182451904, 182582336, 182713792, +182843072, 182976064, 183107264, 183237056, 183368384, 183494848, +183631424, 183762752, 183893824, 184024768, 184154816, 184286656, +184417984, 184548928, 184680128, 184810816, 184941248, 185072704, +185203904, 185335616, 185465408, 185596352, 185727296, 185859904, +185989696, 186121664, 186252992, 186383552, 186514112, 186645952, +186777152, 186907328, 187037504, 187170112, 187301824, 187429184, +187562048, 187693504, 187825472, 187957184, 188087104, 188218304, +188349376, 188481344, 188609728, 188743616, 188874304, 189005248, +189136448, 189265088, 189396544, 189528128, 189660992, 189791936, +189923264, 190054208, 190182848, 190315072, 190447424, 190577984, +190709312, 190840768, 190971328, 191102656, 191233472, 191364032, +191495872, 191626816, 191758016, 191888192, 192020288, 192148928, +192282176, 192413504, 192542528, 192674752, 192805952, 192937792, +193068608, 193198912, 193330496, 193462208, 193592384, 193723456, +193854272, 193985984, 194116672, 194247232, 194379712, 194508352, +194641856, 194772544, 194900672, 195035072, 195166016, 195296704, +195428032, 195558592, 195690304, 195818176, 195952576, 196083392, +196214336, 196345792, 196476736, 196607552, 196739008, 196869952, +197000768, 197130688, 197262784, 197394368, 197523904, 197656384, +197787584, 197916608, 198049472, 198180544, 198310208, 198442432, +198573632, 198705088, 198834368, 198967232, 199097792, 199228352, +199360192, 199491392, 199621696, 199751744, 199883968, 200014016, +200146624, 200276672, 200408128, 200540096, 200671168, 200801984, +200933312, 201062464, 201194944, 201326144, 201457472, 201588544, +201719744, 201850816, 201981632, 202111552, 202244032, 202374464, +202505152, 202636352, 202767808, 202898368, 203030336, 203159872, +203292608, 203423296, 203553472, 203685824, 203816896, 203947712, +204078272, 204208192, 204341056, 204472256, 204603328, 204733888, +204864448, 204996544, 205125568, 205258304, 205388864, 205517632, +205650112, 205782208, 205913536, 206044736, 206176192, 206307008, +206434496, 206569024, 206700224, 206831168, 206961856, 207093056, +207223616, 207355328, 207486784, 207616832, 207749056, 207879104, +208010048, 208141888, 208273216, 208404032, 208534336, 208666048, +208796864, 208927424, 209059264, 209189824, 209321792, 209451584, +209582656, 209715136, 209845568, 209976896, 210106432, 210239296, +210370112, 210501568, 210630976, 210763712, 210894272, 211024832, +211156672, 211287616, 211418176, 211549376, 211679296, 211812032, +211942592, 212074432, 212204864, 212334016, 212467648, 212597824, +212727616, 212860352, 212991424, 213120832, 213253952, 213385024, +213515584, 213645632, 213777728, 213909184, 214040128, 214170688, +214302656, 214433728, 214564544, 214695232, 214826048, 214956992, +215089088, 215219776, 215350592, 215482304, 215613248, 215743552, +215874752, 216005312, 216137024, 216267328, 216399296, 216530752, +216661696, 216790592, 216923968, 217054528, 217183168, 217316672, +217448128, 217579072, 217709504, 217838912, 217972672, 218102848, +218233024, 218364736, 218496832, 218627776, 218759104, 218888896, +219021248, 219151936, 219281728, 219413056, 219545024, 219675968, +219807296, 219938624, 220069312, 220200128, 220331456, 220461632, +220592704, 220725184, 220855744, 220987072, 221117888, 221249216, +221378368, 221510336, 221642048, 221772736, 221904832, 222031808, +222166976, 222297536, 222428992, 222559936, 222690368, 222820672, +222953152, 223083968, 223213376, 223345984, 223476928, 223608512, +223738688, 223869376, 224001472, 224132672, 224262848, 224394944, +224524864, 224657344, 224788288, 224919488, 225050432, 225181504, +225312704, 225443776, 225574592, 225704768, 225834176, 225966784, +226097216, 226229824, 226360384, 226491712, 226623424, 226754368, +226885312, 227015104, 227147456, 227278528, 227409472, 227539904, +227669696, 227802944, 227932352, 228065216, 228196288, 228326464, +228457792, 228588736, 228720064, 228850112, 228981056, 229113152, +229243328, 229375936, 229505344, 229636928, 229769152, 229894976, +230030272, 230162368, 230292416, 230424512, 230553152, 230684864, +230816704, 230948416, 231079616, 231210944, 231342016, 231472448, +231603776, 231733952, 231866176, 231996736, 232127296, 232259392, +232388672, 232521664, 232652608, 232782272, 232914496, 233043904, +233175616, 233306816, 233438528, 233569984, 233699776, 233830592, +233962688, 234092224, 234221888, 234353984, 234485312, 234618304, +234749888, 234880832, 235011776, 235142464, 235274048, 235403456, +235535936, 235667392, 235797568, 235928768, 236057152, 236190272, +236322752, 236453312, 236583616, 236715712, 236846528, 236976448, +237108544, 237239104, 237371072, 237501632, 237630784, 237764416, +237895232, 238026688, 238157632, 238286912, 238419392, 238548032, +238681024, 238812608, 238941632, 239075008, 239206336, 239335232, +239466944, 239599168, 239730496, 239861312, 239992384, 240122816, +240254656, 240385856, 240516928, 240647872, 240779072, 240909632, +241040704, 241171904, 241302848, 241433408, 241565248, 241696192, +241825984, 241958848, 242088256, 242220224, 242352064, 242481856, +242611648, 242744896, 242876224, 243005632, 243138496, 243268672, +243400384, 243531712, 243662656, 243793856, 243924544, 244054592, +244187072, 244316608, 244448704, 244580032, 244710976, 244841536, +244972864, 245104448, 245233984, 245365312, 245497792, 245628736, +245759936, 245889856, 246021056, 246152512, 246284224, 246415168, +246545344, 246675904, 246808384, 246939584, 247070144, 247199552, +247331648, 247463872, 247593536, 247726016, 247857088, 247987648, +248116928, 248249536, 248380736, 248512064, 248643008, 248773312, +248901056, 249036608, 249167552, 249298624, 249429184, 249560512, +249692096, 249822784, 249954112, 250085312, 250215488, 250345792, +250478528, 250608704, 250739264, 250870976, 251002816, 251133632, +251263552, 251395136, 251523904, 251657792, 251789248, 251919424, +252051392, 252182464, 252313408, 252444224, 252575552, 252706624, +252836032, 252968512, 253099712, 253227584, 253361728, 253493056, +253623488, 253754432, 253885504, 254017216, 254148032, 254279488, +254410432, 254541376, 254672576, 254803264, 254933824, 255065792, +255196736, 255326528, 255458752, 255589952, 255721408, 255851072, +255983296, 256114624, 256244416, 256374208, 256507712, 256636096, +256768832, 256900544, 257031616, 257162176, 257294272, 257424448, +257555776, 257686976, 257818432, 257949632, 258079552, 258211136, +258342464, 258473408, 258603712, 258734656, 258867008, 258996544, +259127744, 259260224, 259391296, 259522112, 259651904, 259784384, +259915328, 260045888, 260175424, 260308544, 260438336, 260570944, +260700992, 260832448, 260963776, 261092672, 261226304, 261356864, +261487936, 261619648, 261750592, 261879872, 262011968, 262143424, +262274752, 262404416, 262537024, 262667968, 262799296, 262928704, +263061184, 263191744, 263322944, 263454656, 263585216, 263716672, +263847872, 263978944, 264108608, 264241088, 264371648, 264501184, +264632768, 264764096, 264895936, 265024576, 265158464, 265287488, +265418432, 265550528, 265681216, 265813312, 265943488, 266075968, +266206144, 266337728, 266468032, 266600384, 266731072, 266862272, +266993344, 267124288, 267255616, 267386432, 267516992, 267648704, +267777728, 267910592, 268040512, 268172096, 268302784, 268435264, +268566208, 268696256, 268828096, 268959296, 269090368, 269221312, +269352256, 269482688, 269614784, 269745856, 269876416, 270007616, +270139328, 270270272, 270401216, 270531904, 270663616, 270791744, +270924736, 271056832, 271186112, 271317184, 271449536, 271580992, +271711936, 271843136, 271973056, 272105408, 272236352, 272367296, +272498368, 272629568, 272759488, 272891456, 273022784, 273153856, +273284672, 273415616, 273547072, 273677632, 273808448, 273937088, +274071488, 274200896, 274332992, 274463296, 274595392, 274726208, +274857536, 274988992, 275118656, 275250496, 275382208, 275513024, +275643968, 275775296, 275906368, 276037184, 276167872, 276297664, +276429376, 276560576, 276692672, 276822976, 276955072, 277085632, +277216832, 277347008, 277478848, 277609664, 277740992, 277868608, +278002624, 278134336, 278265536, 278395328, 278526784, 278657728, +278789824, 278921152, 279052096, 279182912, 279313088, 279443776, +279576256, 279706048, 279838528, 279969728, 280099648, 280230976, +280361408, 280493632, 280622528, 280755392, 280887104, 281018176, +281147968, 281278912, 281411392, 281542592, 281673152, 281803712, +281935552, 282066496, 282197312, 282329024, 282458816, 282590272, +282720832, 282853184, 282983744, 283115072, 283246144, 283377344, +283508416, 283639744, 283770304, 283901504, 284032576, 284163136, +284294848, 284426176, 284556992, 284687296, 284819264, 284950208, +285081536] +``` diff --git a/public/content/translations/te/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md b/public/content/translations/te/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md new file mode 100644 index 00000000000..13feeba3f0f --- /dev/null +++ b/public/content/translations/te/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md @@ -0,0 +1,42 @@ +--- +title: "మైనింగ్ అల్గోరిథమ్స్" +description: "ఇతీరియము మైనింగ్ కోసం ఉపయోగించే అల్గోరిథంల గురించి ఒక వివరణాత్మక పరిశీలన." +lang: te +--- + + + + + +ప్రూఫ్-ఆఫ్-వర్క్ ఇకపై ఇతీరియము యొక్క ఏకాభిప్రాయం మెకానిజంకు ఆధారం కాదు, అంటే మైనింగ్ నిలిపివేయబడింది. బదులుగా, ఇతీరియము ETH ను స్టేక్ చేసే వాలిడేటర్ల ద్వారా సురక్షితం చేయబడింది. మీరు ఈరోజే మీ ETH ను స్టేకింగ్ చేయడం ప్రారంభించవచ్చు. ది మెర్జ్, ప్రూఫ్-ఆఫ్-స్టేక్, మరియు స్టేకింగ్ గురించి మరింత చదవండి. ఈ పేజీ చారిత్రక ఆసక్తి కోసం మాత్రమే. + + + + +ఇతీరియము మైనింగ్ Ethash అని పిలవబడే ఒక అల్గోరిథంను ఉపయోగించింది. ఈ అల్గోరిథం యొక్క ప్రాథమిక ఆలోచన ఏమిటంటే, ఒక మైనర్ బ్రూట్ ఫోర్స్ కంప్యూటేషన్‌ను ఉపయోగించి ఒక నాన్స్ ఇన్‌పుట్‌ను కనుగొనడానికి ప్రయత్నిస్తాడు, తద్వారా ఫలిత హాష్ లెక్కించిన క్లిష్టత ద్వారా నిర్ణయించబడిన థ్రెషోల్డ్ కంటే చిన్నదిగా ఉంటుంది. ఈ క్లిష్టత స్థాయిని డైనమిక్‌గా సర్దుబాటు చేయవచ్చు, తద్వారా బ్లాక్ ఉత్పత్తి ఒక క్రమమైన వ్యవధిలో జరుగుతుంది. + +## అవసరాలు {#prerequisites} + +ఈ పేజీని బాగా అర్థం చేసుకోవడానికి, మీరు మొదట [ప్రూఫ్-ఆఫ్-వర్క్ ఏకాభిప్రాయం](/developers/docs/consensus-mechanisms/pow) మరియు [మైనింగ్](/developers/docs/consensus-mechanisms/pow/mining) గురించి చదవాలని మేము సిఫార్సు చేస్తున్నాము. + +## డాగర్ హషిమోటో {#dagger-hashimoto} + +డాగర్ హషిమోటో అనేది ఇతీరియము మైనింగ్ కోసం ఒక పూర్వగామి పరిశోధన అల్గోరిథం, దీనిని Ethash అధిగమించింది. ఇది రెండు వేర్వేరు అల్గోరిథంల సమ్మేళనం: డాగర్ మరియు హషిమోటో. ఇది కేవలం ఒక పరిశోధన అమలు మాత్రమే మరియు ఇతీరియము మెయిన్‌నెట్ ప్రారంభమయ్యే సమయానికి Ethash దీనిని అధిగమించింది. + +[డాగర్](http://www.hashcash.org/papers/dagger.html) ఒక [డైరెక్టెడ్ అసిక్లిక్ గ్రాఫ్](https://en.wikipedia.org/wiki/Directed_acyclic_graph)ను రూపొందించడాన్ని కలిగి ఉంటుంది, దీనిలోని యాదృచ్ఛిక స్లైస్‌లు కలిపి హాష్ చేయబడతాయి. ప్రతి నాన్స్ కి ఒక పెద్ద డేటా ట్రీలో కేవలం ఒక చిన్న భాగం మాత్రమే అవసరం అనేది దీని ప్రధాన సూత్రం. ప్రతి నాన్స్ కోసం సబ్-ట్రీని తిరిగి లెక్కించడం మైనింగ్ కోసం చాలా ఖర్చుతో కూడుకున్నది - అందువల్ల ట్రీని నిల్వ చేయవలసిన అవసరం ఉంది - కానీ ఒకే నాన్స్ విలువ గల ధృవీకరణకు ఇది సరిపోతుంది. స్క్రిప్ట్ వంటి ఇప్పటికే ఉన్న అల్గోరిథంలకు ప్రత్యామ్నాయంగా డాగర్‌ను రూపొందించారు, ఇవి మెమరీ-హార్డ్‌గా ఉంటాయి కానీ వాటి మెమరీ-హార్డ్‌నెస్ నిజంగా సురక్షితమైన స్థాయిలకు పెరిగినప్పుడు ధృవీకరించడం కష్టం. అయితే, షేర్డ్ మెమరీ హార్డ్‌వేర్ యాక్సిలరేషన్‌కు డాగర్ గురయ్యే అవకాశం ఉన్నందున, దానిని వదిలిపెట్టి ఇతర పరిశోధన మార్గాలపై దృష్టి సారించారు. + +[హషిమోటో](http://diyhpl.us/%7Ebryan/papers2/bitcoin/meh/hashimoto.pdf) అనేది I/O బౌండ్‌గా ఉండటం ద్వారా ASIC-రెసిస్టెన్స్‌ను జోడించే ఒక అల్గోరిథం (అంటే, మైనింగ్ ప్రక్రియలో మెమరీ రీడ్‌లు పరిమితం చేసే అంశం). సిద్ధాంతం ఏమిటంటే, కంప్యూటేషన్ కంటే RAM ఎక్కువగా అందుబాటులో ఉంటుంది; వివిధ వినియోగ సందర్భాల కోసం RAMను ఆప్టిమైజ్ చేయడంపై ఇప్పటికే వందల కోట్ల డాలర్ల విలువైన పరిశోధన జరిగింది, ఇవి తరచుగా దాదాపు-యాదృచ్ఛిక యాక్సెస్ ప్యాటర్న్‌లను కలిగి ఉంటాయి (అందుకే దీనిని "రాండమ్ యాక్సెస్ మెమరీ" అంటారు). ఫలితంగా, అల్గోరిథంను మూల్యాంకనం చేయడానికి ఇప్పటికే ఉన్న RAM దాదాపుగా సరైనదిగా ఉండే అవకాశం ఉంది. హషిమోటో బ్లాక్‌చైన్‌ను డేటా మూలంగా ఉపయోగిస్తుంది, ఇది పైన పేర్కొన్న (1) మరియు (3) రెండింటినీ ఏకకాలంలో సంతృప్తిపరుస్తుంది. + +డాగర్-హషిమోటో, డాగర్ మరియు హషిమోటో అల్గోరిథంల యొక్క సవరించిన వెర్షన్లను ఉపయోగించింది. డాగర్ హషిమోటో మరియు హషిమోటో మధ్య ఉన్న వ్యత్యాసం ఏమిటంటే, బ్లాక్‌చైన్‌ను డేటా మూలంగా ఉపయోగించడానికి బదులుగా, డాగర్ హషిమోటో ఒక కస్టమ్-జెనరేటెడ్ డేటా సెట్‌ను ఉపయోగిస్తుంది, ఇది ప్రతి N బ్లాక్‌లకు బ్లాక్ డేటా ఆధారంగా అప్‌డేట్ అవుతుంది. డాగర్ అల్గోరిథంను ఉపయోగించి డేటా సెట్ రూపొందించబడింది, ఇది లైట్ క్లయింట్ ధృవీకరణ అల్గోరిథం కోసం ప్రతి నాన్స్‌కు ప్రత్యేకమైన సబ్-సెట్‌ను సమర్థవంతంగా లెక్కించడానికి అనుమతిస్తుంది. డాగర్ హషిమోటో మరియు డాగర్ మధ్య ఉన్న వ్యత్యాసం ఏమిటంటే, అసలు డాగర్‌లో కాకుండా, బ్లాక్‌ను క్వెరీ చేయడానికి ఉపయోగించే డేటాసెట్ పాక్షిక-శాశ్వతంగా ఉంటుంది, ఇది అప్పుడప్పుడు (ఉదా., వారానికి ఒకసారి) మాత్రమే అప్‌డేట్ చేయబడుతుంది. దీని అర్థం, డేటాసెట్‌ను రూపొందించడానికి పట్టే శ్రమ దాదాపు సున్నా, కాబట్టి షేర్డ్ మెమరీ స్పీడప్‌లకు సంబంధించి సెర్గియో లెర్నర్ యొక్క వాదనలు చాలా స్వల్పం. + +[డాగర్-హషిమోటో](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto) గురించి మరింత. + +## Ethash {#ethash} + +ప్రస్తుతం నిలిపివేయబడిన ప్రూఫ్-ఆఫ్-వర్క్ ఆర్కిటెక్చర్ కింద అసలైన ఇతీరియము మెయిన్‌నెట్‌లో వాస్తవంగా ఉపయోగించిన మైనింగ్ అల్గోరిథం Ethash. అల్గోరిథం గణనీయంగా అప్‌డేట్ చేయబడిన తర్వాత, డాగర్-హషిమోటో యొక్క ఒక నిర్దిష్ట వెర్షన్‌కు ఇచ్చిన కొత్త పేరే Ethash, ఇది దాని పూర్వగామి యొక్క ప్రాథమిక సూత్రాలను వారసత్వంగా పొందింది. ఇతీరియము మెయిన్‌నెట్ కేవలం Ethashను మాత్రమే ఉపయోగించింది - డాగర్ హషిమోటో అనేది మైనింగ్ అల్గోరిథం యొక్క R&D వెర్షన్, ఇది ఇతీరియము మెయిన్‌నెట్‌లో మైనింగ్ ప్రారంభం కావడానికి ముందే నిలిపివేయబడింది. + +[Ethash](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash) గురించి మరింత. + +## మరింత సమాచారం {#further-reading} + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ diff --git a/public/content/translations/te/developers/docs/dapps/index.md b/public/content/translations/te/developers/docs/dapps/index.md new file mode 100644 index 00000000000..cbebab3b998 --- /dev/null +++ b/public/content/translations/te/developers/docs/dapps/index.md @@ -0,0 +1,96 @@ +--- +title: "డాప్స్‌కు సాంకేతిక పరిచయం" +description: +lang: te +--- + +వికేంద్రీకృత అప్లికేషన్ (డాప్) అనేది [స్మార్ట్ కాంట్రాక్ట్](/developers/docs/smart-contracts/) మరియు ఫ్రంటెండ్ యూజర్ ఇంటర్‌ఫేస్‌ను కలిపే వికేంద్రీకృత నెట్‌వర్క్‌పై నిర్మించిన అప్లికేషన్. Ethereumలో, స్మార్ట్ కాంట్రాక్టులు అందుబాటులో ఉంటాయి మరియు పారదర్శకంగా ఉంటాయి – ఓపెన్ APIల వంటివి – కాబట్టి మీ dapp ఎవరో వ్రాసిన స్మార్ట్ ఒప్పందాన్ని కూడా చేర్చవచ్చు. + +## అవసరాలు {#prerequisites} + +డాప్స్ గురించి తెలుసుకోవడానికి ముందు, మీరు [బ్లాక్‌చెయిన్ ప్రాథమిక అంశాలు](/developers/docs/intro-to-ethereum/) కవర్ చేసి, Ethereum నెట్‌వర్క్ గురించి మరియు అది ఎలా వికేంద్రీకరించబడిందో చదవాలి. + +## డాప్ నిర్వచనం {#definition-of-a-dapp} + +ఒక dapp దాని బ్యాకెండ్ కోడ్ వికేంద్రీకరించబడిన పీర్-టు-పీర్ నెట్‌వర్క్‌లో నడుస్తుంది. కేంద్రీకృత సర్వర్‌లలో బ్యాకెండ్ కోడ్ అమలవుతున్న యాప్‌తో దీనికి విరుద్ధంగా. + +ఒక dapp దాని బ్యాకెండ్‌కి కాల్‌లు చేయడానికి ఫ్రంటెండ్ కోడ్ మరియు వినియోగదారు ఇంటర్‌ఫేస్‌లను ఏ భాషలోనైనా (యాప్ లాగానే) వ్రాయవచ్చు. ఇంకా, దాని ఫ్రంటెండ్ [IPFS](https://ipfs.io/) వంటి వికేంద్రీకృత నిల్వపై హోస్ట్ చేయబడుతుంది. + +- **వికేంద్రీకృతం** - డాప్స్ Ethereumలో పనిచేస్తాయి, ఇది ఒక బహిరంగ పబ్లిక్ వికేంద్రీకృత ప్లాట్‌ఫారమ్, ఇక్కడ ఏ ఒక్క వ్యక్తి లేదా సమూహానికి నియంత్రణ ఉండదు +- **డిటర్మినిస్టిక్** - డాప్స్ అమలు చేయబడిన వాతావరణంతో సంబంధం లేకుండా అదే పనితీరును నిర్వహిస్తాయి +- **ట్యూరింగ్ కంప్లీట్** - అవసరమైన వనరులను అందించినట్లయితే డాప్స్ ఏ చర్యనైనా చేయగలవు +- **ఐసోలేటెడ్** - డాప్స్ ఎథేరియం వర్చువల్ మషీన్ అని పిలువబడే వర్చువల్ వాతావరణంలో అమలు చేయబడతాయి, తద్వారా స్మార్ట్ కాంట్రాక్ట్‌లో బగ్ ఉన్నా, అది బ్లాక్‌చెయిన్ నెట్‌వర్క్ యొక్క సాధారణ పనితీరుకు ఆటంకం కలిగించదు + +### స్మార్ట్ కాంట్రాక్టులపై {#on-smart-contracts} + +డాప్‌లను పరిచయం చేయడానికి, మేము స్మార్ట్ కాంట్రాక్ట్‌లను పరిచయం చేయాలి – మెరుగైన పదం లేకపోవడం కోసం డాప్ బ్యాకెండ్. వివరణాత్మక అవలోకనం కోసం, [స్మార్ట్ కాంట్రాక్టుల](/developers/docs/smart-contracts/)పై మా విభాగానికి వెళ్లండి. + +స్మార్ట్ కాంట్రాక్ట్ అనేది Ethereum బ్లాక్‌చెయిన్‌లో నివసించే కోడ్ మరియు ప్రోగ్రామ్ చేసిన విధంగానే నడుస్తుంది. నెట్‌వర్క్‌లో స్మార్ట్ కాంట్రాక్టులు అమలు చేయబడిన తర్వాత మీరు వాటిని మార్చలేరు. Dapps వికేంద్రీకరించబడతాయి ఎందుకంటే అవి ఒప్పందంలో వ్రాసిన తర్కం ద్వారా నియంత్రించబడతాయి, ఒక వ్యక్తి లేదా కంపెనీ కాదు. మీరు మీ ఒప్పందాలను చాలా జాగ్రత్తగా రూపొందించాలని మరియు వాటిని పూర్తిగా పరీక్షించాలని కూడా దీని అర్థం. + +## డాప్ అభివృద్ధి ప్రయోజనాలు {#benefits-of-dapp-development} + +- **జీరో డౌన్‌టైమ్** – స్మార్ట్ కాంట్రాక్ట్ బ్లాక్‌చెయిన్‌లో ఒకసారి అమలు చేయబడితే, నెట్‌వర్క్ మొత్తం ఎల్లప్పుడూ కాంట్రాక్ట్‌తో ఇంటరాక్ట్ అవ్వాలని చూస్తున్న క్లయింట్‌లకు సేవ చేయగలదు. హానికరమైన నటీనటులు, వ్యక్తిగత డాప్‌లను లక్ష్యంగా చేసుకుని సేవా నిరాకరణ దాడులను ప్రారంభించలేరు. +- **గోప్యత** – ఒక డాప్‌ను అమలు చేయడానికి లేదా దానితో పరస్పర చర్య చేయడానికి మీరు నిజ-ప్రపంచ గుర్తింపును అందించాల్సిన అవసరం లేదు. +- **సెన్సార్‌షిప్‌కు ప్రతిఘటన** – నెట్‌వర్క్‌లోని ఏ ఒక్క సంస్థ కూడా వినియోగదారులను లావాదేవీలను సమర్పించకుండా, డాప్స్‌ను అమలు చేయకుండా లేదా బ్లాక్‌చెయిన్ నుండి డేటాను చదవకుండా నిరోధించదు. +- **పూర్తి డేటా సమగ్రత** – బ్లాక్‌చెయిన్‌లో నిల్వ చేయబడిన డేటా, క్రిప్టోగ్రాఫిక్ ప్రిమిటివ్‌ల వలన మార్పులేనిది మరియు వివాదాస్పదమైనది. హానికరమైన వ్యక్తులు లావాదేవీలు లేదా ఇప్పటికే పబ్లిక్ చేసిన ఇతర డేటాను నకిలీ చేయలేరు. +- **ట్రస్ట్‌లెస్ కంప్యూటేషన్/ధృవీకరించదగిన ప్రవర్తన** – ఒక కేంద్ర అధికారాన్ని విశ్వసించాల్సిన అవసరం లేకుండా, స్మార్ట్ కాంట్రాక్టులను విశ్లేషించవచ్చు మరియు ఊహించదగిన మార్గాల్లో అమలు చేయడానికి హామీ ఇవ్వబడతాయి. సాంప్రదాయ నమూనాలలో ఇది నిజం కాదు; ఉదాహరణకు, మేము ఆన్‌లైన్ బ్యాంకింగ్ సిస్టమ్‌లను ఉపయోగించినప్పుడు, ఆర్థిక సంస్థలు మన ఆర్థిక డేటాను దుర్వినియోగం చేయవని, రికార్డులను తారుమారు చేయవని లేదా హ్యాక్ చేయబడదని మనం విశ్వసించాలి. + +## డాప్ అభివృద్ధిలోని లోపాలు {#drawbacks-of-dapp-development} + +- **నిర్వహణ** – బ్లాక్‌చెయిన్‌లో ప్రచురించబడిన కోడ్ మరియు డేటాను సవరించడం కష్టం కాబట్టి డాప్స్‌ను నిర్వహించడం కష్టతరం కావచ్చు. పాత వెర్షన్‌లో బగ్‌లు లేదా సెక్యూరిటీ రిస్క్‌లు గుర్తించబడినప్పటికీ, డెవలపర్‌లు తమ డాప్‌లకు (లేదా డాప్ ద్వారా నిల్వ చేయబడిన అంతర్లీన డేటా) అప్‌డేట్ చేయడం కష్టం. +- **పనితీరు ఓవర్‌హెడ్** – ఇక్కడ భారీ పనితీరు ఓవర్‌హెడ్ ఉంటుంది మరియు స్కేలింగ్ నిజంగా కష్టం. Ethereum ఆశించే భద్రత, సమగ్రత, పారదర్శకత మరియు విశ్వసనీయత స్థాయిని సాధించడానికి, ప్రతి నోడ్ ప్రతి లావాదేవీని రన్ చేస్తుంది మరియు నిల్వ చేస్తుంది. దీనికి అదనంగా, ప్రూఫ్-ఆఫ్-స్టేక్ ఏకాభిప్రాయానికి కూడా సమయం పడుతుంది. +- **నెట్‌వర్క్ రద్దీ** – ఒక డాప్ చాలా ఎక్కువ గణన వనరులను ఉపయోగించినప్పుడు, మొత్తం నెట్‌వర్క్ స్తంభించిపోతుంది. ప్రస్తుతం, నెట్‌వర్క్ సెకనుకు సుమారు 10-15 లావాదేవీలను మాత్రమే ప్రాసెస్ చేయగలదు; లావాదేవీలు ఇంతకంటే వేగంగా పంపబడితే, నిర్ధారించని లావాదేవీల పూల్ త్వరగా పెరిగిపోతుంది. +- **వినియోగదారు అనుభవం** – వినియోగదారు-స్నేహపూర్వక అనుభవాలను రూపొందించడం కష్టతరం కావచ్చు, ఎందుకంటే సగటు తుది-వినియోగదారుడు నిజంగా సురక్షితమైన పద్ధతిలో బ్లాక్‌చెయిన్‌తో పరస్పర చర్య చేయడానికి అవసరమైన టూల్ స్టాక్‌ను సెటప్ చేయడం చాలా కష్టంగా భావించవచ్చు. +- **కేంద్రీకరణ** – Ethereum యొక్క బేస్ లేయర్‌పై నిర్మించిన వినియోగదారు-స్నేహపూర్వక మరియు డెవలపర్-స్నేహపూర్వక పరిష్కారాలు ఎలాగైనా కేంద్రీకృత సేవల వలె ముగియవచ్చు. ఉదాహరణకు, అటువంటి సేవలు కీలు లేదా ఇతర సున్నితమైన సమాచారాన్ని సర్వర్-సైడ్‌లో నిల్వ చేయవచ్చు, కేంద్రీకృత సర్వర్‌ను ఉపయోగించి ఫ్రంటెండ్‌ను అందించవచ్చు లేదా బ్లాక్‌చెయిన్‌కు వ్రాసే ముందు కేంద్రీకృత సర్వర్‌లో ముఖ్యమైన వ్యాపార లాజిక్‌ను అమలు చేయవచ్చు. కేంద్రీకరణ సాంప్రదాయ నమూనాపై బ్లాక్‌చెయిన్ యొక్క అనేక (అన్నీ కాకపోయినా) ప్రయోజనాలను తొలగిస్తుంది. + +## దృశ్య అభ్యాసకులా? {#visual-learner} + + + +## డాప్స్ సృష్టించడానికి సాధనాలు {#dapp-tools} + +**Scaffold-ETH _- మీ స్మార్ట్ కాంట్రాక్టుకు అనుగుణంగా ఉండే ఫ్రంటెండ్‌ను ఉపయోగించి Solidityతో త్వరగా ప్రయోగం చేయండి._** + +- [GitHub](https://github.com/scaffold-eth/scaffold-eth-2) +- [ఉదాహరణ డాప్](https://punkwallet.io/) + +**Create Eth App _- ఒకే కమాండ్‌తో Ethereum-ఆధారిత యాప్‌లను సృష్టించండి._** + +- [GitHub](https://github.com/paulrberg/create-eth-app) + +**One Click Dapp _- ఒక [ABI](/glossary/#abi) నుండి డాప్ ఫ్రంటెండ్‌లను రూపొందించడానికి FOSS సాధనం._** + +- [oneclickdapp.com](https://oneclickdapp.com) +- [GitHub](https://github.com/oneclickdapp/oneclickdapp-v1) + +**Etherflow _- Ethereum డెవలపర్‌లు వారి నోడ్‌ను పరీక్షించడానికి, మరియు బ్రౌజర్ నుండి RPC కాల్స్‌ను కంపోజ్ & డీబగ్ చేయడానికి FOSS సాధనం._** + +- [etherflow.quiknode.io](https://etherflow.quiknode.io/) +- [GitHub](https://github.com/abunsen/etherflow) + +**thirdweb _- ప్రతి భాషలో SDKలు, స్మార్ట్ కాంట్రాక్టులు, సాధనాలు, మరియు web3 అభివృద్ధి కోసం ఇన్‌ఫ్రాస్ట్రక్చర్._** + +- [హోమ్ పేజీ](https://thirdweb.com/) +- [డాక్యుమెంటేషన్](https://portal.thirdweb.com/) +- [GitHub](https://github.com/thirdweb-dev/) + +**Crossmint _- స్మార్ట్ కాంట్రాక్టులను అమలు చేయడానికి, క్రెడిట్-కార్డ్ మరియు క్రాస్ చైన్ చెల్లింపులను ప్రారంభించడానికి, మరియు NFTలను సృష్టించడానికి, పంపిణీ చేయడానికి, విక్రయించడానికి, నిల్వ చేయడానికి మరియు సవరించడానికి APIలను ఉపయోగించడానికి ఎంటర్‌ప్రైజ్-గ్రేడ్ web3 డెవలప్‌మెంట్ ప్లాట్‌ఫారమ్._** + +- [crossmint.com](https://www.crossmint.com) +- [డాక్యుమెంటేషన్](https://docs.crossmint.com) +- [Discord](https://discord.com/invite/crossmint) + +## మరింత సమాచారం {#further-reading} + +- [డాప్స్‌ను అన్వేషించండి](/apps) +- [ఒక వెబ్ 3.0 అప్లికేషన్ యొక్క నిర్మాణం](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _ప్రీతి కాశిరెడ్డి_ +- [వికేంద్రీకృత అప్లికేషన్లకు 2021 గైడ్](https://limechain.tech/blog/what-are-dapps-the-2021-guide/) - _LimeChain_ +- [వికేంద్రీకృత యాప్‌లు అంటే ఏమిటి?](https://www.gemini.com/cryptopedia/decentralized-applications-defi-dapps) - _Gemini_ +- [ప్రముఖ డాప్స్](https://www.alchemy.com/dapps) - _Alchemy_ + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ + +## సంబంధిత అంశాలు {#related-topics} + +- [Ethereum స్టాక్‌కు పరిచయం](/developers/docs/ethereum-stack/) +- [అభివృద్ధి ఫ్రేమ్‌వర్క్‌లు](/developers/docs/frameworks/) diff --git a/public/content/translations/te/developers/docs/data-and-analytics/block-explorers/index.md b/public/content/translations/te/developers/docs/data-and-analytics/block-explorers/index.md new file mode 100644 index 00000000000..441efd6fd8a --- /dev/null +++ b/public/content/translations/te/developers/docs/data-and-analytics/block-explorers/index.md @@ -0,0 +1,254 @@ +--- +title: "సమూహము అన్వేషకులు" +description: "బ్లాక్ ఎక్స్‌ప్లోరర్‌లకు పరిచయం, బ్లాక్‌చెయిన్ డేటా ప్రపంచంలోకి మీ పోర్టల్, ఇక్కడ మీరు లావాదేవీలు, ఖాతాలు, కాంట్రాక్టులు మరియు మరిన్నింటి గురించి సమాచారాన్ని క్వెరీ చేయవచ్చు." +lang: te +sidebarDepth: 3 +--- + +బ్లాక్ ఎక్స్‌ప్లోరర్‌లు ఎథేరియం డేటాకు మీ పోర్టల్. బ్లాక్‌లు, లావాదేవీలు, వాలిడేటర్‌లు, ఖాతాలు మరియు ఇతర ఆన్‌చెయిన్ కార్యకలాపాలపై నిజ-సమయ డేటాను చూడటానికి మీరు వాటిని ఉపయోగించవచ్చు. + +## అవసరాలు {#prerequisites} + +మీరు ఎథేరియం యొక్క ప్రాథమిక భావనలను అర్థం చేసుకోవాలి, అప్పుడు ఒక బ్లాక్ ఎక్స్‌ప్లోరర్ మీకు ఇచ్చే డేటాను మీరు అర్థం చేసుకోగలరు. [ఎథేరియంకు ఒక పరిచయంతో](/developers/docs/intro-to-ethereum/) ప్రారంభించండి. + +## సేవలు {#services} + +- [Etherscan](https://etherscan.io/) -_చైనీస్, కొరియన్, రష్యన్ మరియు జపనీస్ భాషలలో కూడా అందుబాటులో ఉంది_ +- [3xpl](https://3xpl.com/ethereum) +- [Beaconcha.in](https://beaconcha.in/) +- [Blockchair](https://blockchair.com/ethereum) -_స్పానిష్, ఫ్రెంచ్, ఇటాలియన్, డచ్, పోర్చుగీస్, రష్యన్, చైనీస్ మరియు ఫార్సీ భాషలలో కూడా అందుబాటులో ఉంది_ +- [Blockscout](https://eth.blockscout.com/) +- [Chainlens](https://www.chainlens.com/) +- [DexGuru బ్లాక్ ఎక్స్‌ప్లోరర్](https://ethereum.dex.guru/) +- [Etherchain](https://www.etherchain.org/) +- [Ethplorer](https://ethplorer.io/) -_చైనీస్, స్పానిష్, ఫ్రెంచ్, టర్కిష్, రష్యన్, కొరియన్ మరియు వియత్నామీస్ భాషలలో కూడా అందుబాటులో ఉంది_ +- [EthVM](https://www.ethvm.com/) +- [OKLink](https://www.oklink.com/eth) +- [Ethseer](https://ethseer.io) + +## ఓపెన్ సోర్స్ ఉపకరణాలు {#open-source-tools} + +- [Otterscan](https://otterscan.io/) +- [lazy-etherscan](https://github.com/woxjro/lazy-etherscan) + +## డేటా {#data} + +ఎథేరియం డిజైన్ ప్రకారం పారదర్శకంగా ఉంటుంది కాబట్టి ప్రతిదీ ధృవీకరించదగినది. బ్లాక్ ఎక్స్‌ప్లోరర్లు ఈ సమాచారాన్ని పొందడానికి ఒక ఇంటర్‌ఫేస్‌ను అందిస్తాయి. మరియు ఇది ప్రధాన ఎథేరియం నెట్‌వర్క్ మరియు టెస్టునెట్‌లు రెండింటికీ వర్తిస్తుంది, ఒకవేళ మీకు ఆ డేటా అవసరమైతే. డేటా ఎగ్జిక్యూషన్ డేటా మరియు ఏకాభిప్రాయం డేటాగా విభజించబడింది. ఎగ్జిక్యూషన్ డేటా ఒక నిర్దిష్ట బ్లాక్‌లో అమలు చేయబడిన లావాదేవీలను సూచిస్తుంది. ఏకాభిప్రాయం డేటా బ్లాక్‌లు మరియు వాటిని ప్రతిపాదించిన వాలిడేటర్‌లను సూచిస్తుంది. + +ఒక బ్లాక్ ఎక్స్‌ప్లోరర్ నుండి మీరు పొందగల డేటా రకాల సారాంశం ఇక్కడ ఉంది. + +### ఎగ్జిక్యూషన్ డేటా {#execution-data} + +ప్రతి 12 సెకన్లకు ఎథేరియంకు కొత్త బ్లాక్‌లు జోడించబడతాయి (ఒక బ్లాక్ ప్రపోజర్ దాని వంతును కోల్పోతే తప్ప), కాబట్టి బ్లాక్ ఎక్స్‌ప్లోరర్‌లకు దాదాపు స్థిరమైన డేటా ప్రవాహం జోడించబడుతుంది. బ్లాక్‌లు మీకు ఉపయోగకరంగా ఉండే చాలా ముఖ్యమైన డేటాను కలిగి ఉంటాయి: + +**ప్రామాణిక డేటా** + +- బ్లాక్ ఎత్తు - ప్రస్తుత బ్లాక్ సృష్టి సమయంలో బ్లాక్ సంఖ్య మరియు బ్లాక్‌చెయిన్ యొక్క పొడవు (బ్లాక్‌లలో) +- టైమ్‌స్టాంప్ - ఒక బ్లాక్ ప్రతిపాదించబడిన సమయం +- లావాదేవీలు - బ్లాక్‌లో చేర్చబడిన లావాదేవీల సంఖ్య +- రుసుము గ్రహీత - లావాదేవీల నుండి గ్యాస్ రుసుము చిట్కాలను అందుకున్న చిరునామా +- బ్లాక్ రివార్డు - బ్లాక్‌ను ప్రతిపాదించిన వాలిడేటర్‌కు ప్రదానం చేయబడిన ETH మొత్తం +- పరిమాణం - బ్లాక్‌లోని డేటా పరిమాణం (బైట్లలో కొలుస్తారు) +- ఉపయోగించిన గ్యాస్ - బ్లాక్‌లోని లావాదేవీల ద్వారా ఉపయోగించిన మొత్తం గ్యాస్ యూనిట్లు +- గ్యాస్ పరిమితి - బ్లాక్‌లోని లావాదేవీల ద్వారా సెట్ చేయబడిన మొత్తం గ్యాస్ పరిమితులు +- గ్యాస్‌కు మూల రుసుము - ఒక లావాదేవీని బ్లాక్‌లో చేర్చడానికి అవసరమైన కనీస గుణకం +- బర్న్ చేయబడిన రుసుములు - బ్లాక్‌లో ఎంత ETH బర్న్ చేయబడింది +- అదనపు డేటా - బిల్డర్ బ్లాక్‌లో చేర్చిన ఏదైనా అదనపు డేటా + +**అధునాతన డేటా** + +- హాష్ - బ్లాక్ హెడర్‌ను సూచించే క్రిప్టోగ్రాఫిక్ హాష్ (బ్లాక్ యొక్క ప్రత్యేక ఐడెంటిఫైయర్) +- పేరెంట్ హాష్ - ప్రస్తుత బ్లాక్‌కు ముందు వచ్చిన బ్లాక్ యొక్క హాష్ +- స్టేట్‌రూట్ - సిస్టమ్ యొక్క మొత్తం స్థితిని నిల్వ చేసే మెర్కిల్ ట్రీ యొక్క రూట్ హాష్ + +### గ్యాస్ {#gas} + +బ్లాక్ ఎక్స్‌ప్లోరర్లు లావాదేవీలు మరియు బ్లాక్‌లలో గ్యాస్ వినియోగం గురించి డేటాను ఇవ్వడమే కాకుండా, కొన్ని నెట్‌వర్క్ యొక్క ప్రస్తుత గ్యాస్ ధరలపై సమాచారాన్ని కూడా అందిస్తాయి. ఇది నెట్‌వర్క్ వినియోగాన్ని అర్థం చేసుకోవడానికి, సురక్షితమైన లావాదేవీలను సమర్పించడానికి మరియు గ్యాస్ మీద ఎక్కువ ఖర్చు చేయకుండా ఉండటానికి మీకు సహాయపడుతుంది. మీ ఉత్పత్తి యొక్క ఇంటర్‌ఫేస్‌లోకి ఈ సమాచారాన్ని పొందడంలో మీకు సహాయపడే APIల కోసం చూడండి. గ్యాస్-నిర్దిష్ట డేటా కవర్ చేస్తుంది: + +- సురక్షితమైన కానీ నెమ్మది లావాదేవీకి అవసరమైన గ్యాస్ యొక్క అంచనా యూనిట్లు (+ అంచనా వేసిన ధర మరియు వ్యవధి) +- సగటు లావాదేవీకి అవసరమైన గ్యాస్ యొక్క అంచనా యూనిట్లు (+ అంచనా వేసిన ధర మరియు వ్యవధి) +- వేగవంతమైన లావాదేవీకి అవసరమైన గ్యాస్ యొక్క అంచనా యూనిట్లు (+ అంచనా వేసిన ధర మరియు వ్యవధి) +- గ్యాస్ ధర ఆధారంగా సగటు నిర్ధారణ సమయం +- గ్యాస్‌ను వినియోగించే కాంట్రాక్టులు - మరో మాటలో చెప్పాలంటే, నెట్‌వర్క్‌లో అధిక వినియోగాన్ని చూస్తున్న ప్రముఖ ఉత్పత్తులు +- గ్యాస్ ఖర్చు చేసే ఖాతాలు - మరో మాటలో చెప్పాలంటే, తరచుగా నెట్‌వర్క్ వినియోగించే వినియోగదారులు + +### లావాదేవీలు {#transactions} + +బ్లాక్ ఎక్స్‌ప్లోరర్లు ప్రజలు తమ లావాదేవీల పురోగతిని ట్రాక్ చేయడానికి ఒక సాధారణ ప్రదేశంగా మారాయి. ఎందుకంటే మీరు పొందగలిగే వివరాల స్థాయి అదనపు నిశ్చయతను అందిస్తుంది. లావాదేవీ డేటాలో ఇవి ఉంటాయి: + +**ప్రామాణిక డేటా** + +- లావాదేవీ హాష్ - లావాదేవీ సమర్పించబడినప్పుడు ఉత్పత్తి చేయబడిన హాష్ +- స్థితి - లావాదేవీ పెండింగ్‌లో ఉందా, విఫలమైందా లేదా విజయవంతమైందా అనేదానికి సూచన +- బ్లాక్ - లావాదేవీ చేర్చబడిన బ్లాక్ +- టైమ్‌స్టాంప్ - ఒక వాలిడేటర్ ప్రతిపాదించిన బ్లాక్‌లో లావాదేవీ చేర్చబడిన సమయం +- నుండి - లావాదేవీని సమర్పించిన ఖాతా యొక్క చిరునామా +- కు - గ్రహీత లేదా లావాదేవీ పరస్పర చర్య జరిపే స్మార్ట్ కాంట్రాక్ట్ యొక్క చిరునామా +- బదిలీ చేయబడిన టోకెన్లు - లావాదేవీలో భాగంగా బదిలీ చేయబడిన టోకెన్ల జాబితా +- విలువ - బదిలీ చేయబడుతున్న మొత్తం ETH విలువ +- లావాదేవీ రుసుము - లావాదేవీని ప్రాసెస్ చేయడానికి వాలిడేటర్‌కు చెల్లించిన మొత్తం (గ్యాస్ ధర\*ఉపయోగించిన గ్యాస్ ద్వారా లెక్కించబడుతుంది) + +**అధునాతన డేటా** + +- గ్యాస్ పరిమితి - ఈ లావాదేవీ వినియోగించగల గరిష్ట గ్యాస్ యూనిట్ల సంఖ్య +- ఉపయోగించిన గ్యాస్ - లావాదేవీ వినియోగించిన వాస్తవ గ్యాస్ యూనిట్ల మొత్తం +- గ్యాస్ ధర - గ్యాస్ యూనిట్‌కు సెట్ చేయబడిన ధర +- నాన్స్ - `from` చిరునామా కోసం లావాదేవీ సంఖ్య (ఇది 0 నుండి మొదలవుతుందని గుర్తుంచుకోండి, కాబట్టి `100` నాన్స్ వాస్తవానికి ఈ ఖాతా సమర్పించిన 101వ లావాదేవీ అవుతుంది) +- ఇన్‌పుట్ డేటా - లావాదేవీకి అవసరమైన ఏదైనా అదనపు సమాచారం + +### ఖాతాలు {#accounts} + +ఒక ఖాతా గురించి మీరు యాక్సెస్ చేయగల చాలా డేటా ఉంది. అందుకే మీ ఆస్తులు మరియు విలువను సులభంగా ట్రాక్ చేయలేకుండా బహుళ ఖాతాలను ఉపయోగించమని తరచుగా సిఫార్సు చేయబడింది. లావాదేవీలు మరియు ఖాతా కార్యకలాపాలను మరింత ప్రైవేట్‌గా చేయడానికి కొన్ని పరిష్కారాలు కూడా అభివృద్ధి చేయబడుతున్నాయి. కానీ ఖాతాల కోసం అందుబాటులో ఉన్న డేటా ఇక్కడ ఉంది: + +**వినియోగదారు ఖాతాలు** + +- ఖాతా చిరునామా - మీరు నిధులను పంపడానికి ఉపయోగించగల పబ్లిక్ చిరునామా +- ETH బ్యాలెన్స్ - ఆ ఖాతాతో అనుబంధించబడిన ETH మొత్తం +- మొత్తం ETH విలువ - ETH యొక్క విలువ +- టోకెన్లు - ఖాతాతో అనుబంధించబడిన టోకెన్లు మరియు వాటి విలువ +- లావాదేవీ చరిత్ర - ఈ ఖాతా పంపినవారు లేదా గ్రహీతగా ఉన్న అన్ని లావాదేవీల జాబితా + +**స్మార్ట్ కాంట్రాక్టులు** + +స్మార్ట్ కాంట్రాక్ట్ ఖాతాలు ఒక వినియోగదారు ఖాతాకు ఉండే అన్ని డేటాను కలిగి ఉంటాయి, కానీ కొన్ని బ్లాక్ ఎక్స్‌ప్లోరర్లు కొన్ని కోడ్ సమాచారాన్ని కూడా ప్రదర్శిస్తాయి. ఉదాహరణలు: + +- కాంట్రాక్ట్ సృష్టికర్త - కాంట్రాక్టును మెయిన్‌నెట్‌కు డిప్లాయ్ చేసిన చిరునామా +- సృష్టి లావాదేవీ - మెయిన్‌నెట్‌కు డిప్లాయ్‌మెంట్‌ను చేర్చిన లావాదేవీ +- సోర్స్ కోడ్ - స్మార్ట్ కాంట్రాక్ట్ యొక్క సాలిడిటీ లేదా వైపర్ కోడ్ +- కాంట్రాక్ట్ ABI - కాంట్రాక్ట్ యొక్క అప్లికేషన్ బైనరీ ఇంటర్‌ఫేస్—కాంట్రాక్ట్ చేసే కాల్స్ మరియు అందుకున్న డేటా +- కాంట్రాక్ట్ సృష్టి కోడ్ - స్మార్ట్ కాంట్రాక్ట్ యొక్క కంపైల్ చేయబడిన బైట్‌కోడ్—మీరు Solidity లేదా Vyper, మొదలైన వాటిలో వ్రాసిన స్మార్ట్ కాంట్రాక్టును కంపైల్ చేసినప్పుడు సృష్టించబడింది. +- కాంట్రాక్ట్ ఈవెంట్‌లు - స్మార్ట్ కాంట్రాక్ట్‌లో పిలువబడిన పద్ధతుల చరిత్ర—ప్రాథమికంగా కాంట్రాక్ట్ ఎలా ఉపయోగించబడుతోంది మరియు ఎంత తరచుగా అని చూడటానికి ఒక మార్గం + +### టోకెన్లు {#tokens} + +టోకెన్లు ఒక రకమైన కాంట్రాక్ట్ కాబట్టి అవి స్మార్ట్ కాంట్రాక్ట్‌తో సమానమైన డేటాను కలిగి ఉంటాయి. కానీ వాటికి విలువ ఉన్నందున మరియు వ్యాపారం చేయగలగడం వల్ల వాటికి అదనపు డేటా పాయింట్లు ఉన్నాయి: + +- రకం - అవి ERC-20, ERC-721 లేదా మరొక టోకెన్ ప్రమాణమా కాదా +- ధర - అవి ERC-20 అయితే, వాటికి ప్రస్తుత మార్కెట్ విలువ ఉంటుంది +- మార్కెట్ క్యాప్ - అవి ERC-20 అయితే, వాటికి మార్కెట్ క్యాప్ ఉంటుంది (ధర \* మొత్తం సరఫరా ద్వారా లెక్కించబడుతుంది) +- మొత్తం సరఫరా - సర్క్యులేషన్‌లో ఉన్న టోకెన్ల సంఖ్య +- హోల్డర్లు - టోకెన్‌ను కలిగి ఉన్న చిరునామాల సంఖ్య +- బదిలీలు - టోకెన్ ఖాతాల మధ్య బదిలీ చేయబడిన సార్లు +- లావాదేవీ చరిత్ర - టోకెన్‌తో సహా అన్ని లావాదేవీల చరిత్ర +- కాంట్రాక్ట్ చిరునామా - మెయిన్‌నెట్‌కు డిప్లాయ్ చేయబడిన టోకెన్ యొక్క చిరునామా +- దశాంశాలు - ERC-20 టోకెన్లు విభజించదగినవి మరియు దశాంశ స్థానాలను కలిగి ఉంటాయి + +### నెట్‌వర్క్ {#network} + +కొన్ని బ్లాక్ డేటా ఎథేరియం యొక్క ఆరోగ్యం గురించి మరింత సమగ్రంగా ఆందోళన చెందుతుంది. + +- మొత్తం లావాదేవీలు - ఎథేరియం సృష్టించబడినప్పటి నుండి లావాదేవీల సంఖ్య +- సెకనుకు లావాదేవీలు - ఒక సెకనులో ప్రాసెస్ చేయగల లావాదేవీల సంఖ్య +- ETH ధర - 1 ETH యొక్క ప్రస్తుత విలువలు +- మొత్తం ETH సరఫరా - సర్క్యులేషన్‌లో ఉన్న ETH సంఖ్య—ప్రతి బ్లాక్ సృష్టితో బ్లాక్ రివార్డుల రూపంలో కొత్త ETH సృష్టించబడుతుందని గుర్తుంచుకోండి +- మార్కెట్ క్యాప్ - ధర\*సరఫరా యొక్క గణన + +## ఏకాభిప్రాయం లేయర్ డేటా {#consensus-layer-data} + +### ఎపోక్ {#epoch} + +భద్రతా కారణాల దృష్ట్యా, ప్రతి ఎపోక్ (ప్రతి 6.4 నిమిషాలు) చివరిలో వాలిడేటర్‌ల యాదృచ్ఛిక కమిటీలు సృష్టించబడతాయి. ఎపోక్ డేటాలో ఇవి ఉంటాయి: + +- ఎపోక్ సంఖ్య +- తుది స్థితి - ఎపోక్ ఖరారు చేయబడిందా లేదా (అవును/కాదు) +- సమయం - ఎపోక్ ముగిసిన సమయం +- అటెస్టేషన్‌లు - ఎపోక్‌లోని అటెస్టేషన్‌ల సంఖ్య (స్లాట్‌లలోని బ్లాక్‌ల కోసం ఓట్లు) +- డిపాజిట్లు - ఎపోక్‌లో చేర్చబడిన ETH డిపాజిట్ల సంఖ్య (వాలిడేటర్‌లు వాలిడేటర్లుగా మారడానికి ETHను స్టేక్ చేయాలి) +- స్లాషింగ్‌లు - బ్లాక్‌లు లేదా అటెస్టర్‌ల ప్రపోజర్‌లకు ఇవ్వబడిన పెనాల్టీల సంఖ్య +- ఓటింగ్ భాగస్వామ్యం - బ్లాక్‌లను అటెస్ట్ చేయడానికి ఉపయోగించిన స్టేక్ చేయబడిన ETH మొత్తం +- వాలిడేటర్‌లు - ఎపోక్ కోసం యాక్టివ్‌గా ఉన్న వాలిడేటర్‌ల సంఖ్య +- సగటు వాలిడేటర్ బ్యాలెన్స్ - యాక్టివ్ వాలిడేటర్‌ల సగటు బ్యాలెన్స్ +- స్లాట్‌లు - ఎపోక్‌లో చేర్చబడిన స్లాట్‌ల సంఖ్య (స్లాట్‌లలో ఒక చెల్లుబాటు అయ్యే బ్లాక్ ఉంటుంది) + +### స్లాట్ {#slot} + +స్లాట్‌లు బ్లాక్ సృష్టికి అవకాశాలు, ప్రతి స్లాట్‌కు అందుబాటులో ఉన్న డేటాలో ఇవి ఉంటాయి: + +- ఎపోక్ - స్లాట్ చెల్లుబాటు అయ్యే ఎపోక్ +- స్లాట్ సంఖ్య +- స్థితి - స్లాట్ యొక్క స్థితి (ప్రతిపాదించబడింది/కోల్పోయింది) +- సమయం - స్లాట్ టైమ్‌స్టాంప్ +- ప్రపోజర్ - స్లాట్ కోసం బ్లాక్‌ను ప్రతిపాదించిన వాలిడేటర్ +- బ్లాక్ రూట్ - బీకాన్‌బ్లాక్ యొక్క హాష్-ట్రీ-రూట్ +- పేరెంట్ రూట్ - ముందు వచ్చిన బ్లాక్ యొక్క హాష్ +- స్టేట్ రూట్ - బీకాన్‌స్టేట్ యొక్క హాష్-ట్రీ-రూట్ +- సంతకం +- రాండావో రివీల్ +- గ్రాఫిటీ - ఒక బ్లాక్ ప్రపోజర్ దాని బ్లాక్ ప్రతిపాదనకు 32 బైట్ల పొడవైన సందేశాన్ని చేర్చవచ్చు +- ఎగ్జిక్యూషన్ డేటా + - బ్లాక్ హాష్ + - డిపాజిట్ కౌంట్ + - డిపాజిట్ రూట్ +- అటెస్టేషన్‌లు - ఈ స్లాట్‌లోని బ్లాక్ కోసం అటెస్టేషన్‌ల సంఖ్య +- డిపాజిట్లు - ఈ స్లాట్ సమయంలో డిపాజిట్ల సంఖ్య +- స్వచ్ఛంద నిష్క్రమణలు - స్లాట్ సమయంలో నిష్క్రమించిన వాలిడేటర్‌ల సంఖ్య +- స్లాషింగ్‌లు - బ్లాక్‌లు లేదా అటెస్టర్‌ల ప్రపోజర్‌లకు ఇవ్వబడిన పెనాల్టీల సంఖ్య +- ఓట్లు - ఈ స్లాట్‌లోని బ్లాక్ కోసం ఓటు వేసిన వాలిడేటర్‌లు + +### బ్లాక్‌లు {#blocks-1} + +ప్రూఫ్-ఆఫ్-స్టేక్ సమయాన్ని స్లాట్‌లు మరియు ఎపోక్‌లుగా విభజిస్తుంది. అంటే కొత్త డేటా! + +- ప్రపోజర్ - కొత్త బ్లాక్‌ను ప్రతిపాదించడానికి అల్గారిథమిక్‌గా ఎంచుకున్న వాలిడేటర్ +- ఎపోక్ - బ్లాక్ ప్రతిపాదించబడిన ఎపోక్ +- స్లాట్ - బ్లాక్ ప్రతిపాదించబడిన స్లాట్ +- అటెస్టేషన్‌లు - స్లాట్‌లో చేర్చబడిన అటెస్టేషన్‌ల సంఖ్య—అటెస్టేషన్‌లు బ్లాక్ బీకన్ చైన్‌కు వెళ్లడానికి సిద్ధంగా ఉందని సూచించే ఓట్ల వంటివి + +### వాలిడేటర్లు {#validators} + +స్లాట్‌లలో బ్లాక్‌లను ప్రతిపాదించడానికి మరియు వాటికి అటెస్ట్ చేయడానికి వాలిడేటర్‌లు బాధ్యత వహిస్తారు. + +- వాలిడేటర్ సంఖ్య - వాలిడేటర్‌ను సూచించే ప్రత్యేక సంఖ్య +- ప్రస్తుత బ్యాలెన్స్ - రివార్డులతో సహా వాలిడేటర్ బ్యాలెన్స్ +- ప్రభావవంతమైన బ్యాలెన్స్ - స్టేకింగ్ కోసం ఉపయోగించే వాలిడేటర్ బ్యాలెన్స్ +- ఆదాయం - వాలిడేటర్ ద్వారా స్వీకరించిన రివార్డులు లేదా పెనాల్టీలు +- స్థితి - వాలిడేటర్ ప్రస్తుతం ఆన్‌లైన్‌లో మరియు యాక్టివ్‌గా ఉన్నాడా లేదా +- అటెస్టేషన్ ప్రభావం - వాలిడేటర్ యొక్క అటెస్టేషన్‌లు చైన్‌లో చేర్చబడటానికి పట్టే సగటు సమయం +- యాక్టివేషన్ కోసం అర్హత - వాలిడేటర్ ధృవీకరించడానికి అందుబాటులోకి వచ్చిన తేదీ (మరియు ఎపోక్) +- యాక్టివ్‌గా ఉన్నప్పటి నుండి - వాలిడేటర్ యాక్టివ్‌గా మారిన తేదీ (మరియు ఎపోక్) +- ప్రతిపాదిత బ్లాక్‌లు - వాలిడేటర్ ప్రతిపాదించిన బ్లాక్ +- అటెస్టేషన్‌లు - వాలిడేటర్ అందించిన అటెస్టేషన్‌లు +- డిపాజిట్లు - ఫ్రమ్ చిరునామా, లావాదేవీ హాష్, బ్లాక్ సంఖ్య, టైమ్‌స్టాంప్, మొత్తం మరియు వాలిడేటర్ చేసిన స్టేకింగ్ డిపాజిట్ యొక్క స్థితి + +### అటెస్టేషన్‌లు {#attestations} + +అటెస్టేషన్‌లు చైన్‌లో బ్లాక్‌లను చేర్చడానికి "అవును" ఓట్లు. వారి డేటా అటెస్టేషన్ యొక్క రికార్డు మరియు అటెస్ట్ చేసిన వాలిడేటర్‌లకు సంబంధించినది + +- స్లాట్ - అటెస్టేషన్ జరిగిన స్లాట్ +- కమిటీ ఇండెక్స్ - ఇచ్చిన స్లాట్‌లోని కమిటీ ఇండెక్స్ +- అగ్రిగేషన్ బిట్స్ - అటెస్టేషన్‌లో పాల్గొన్న అన్ని వాలిడేటర్‌ల యొక్క సమగ్ర అటెస్టేషన్‌ను సూచిస్తుంది +- వాలిడేటర్‌లు - అటెస్టేషన్‌లు అందించిన వాలిడేటర్‌లు +- బీకన్ బ్లాక్ రూట్ - వాలిడేటర్‌లు అటెస్ట్ చేస్తున్న బ్లాక్‌ను సూచిస్తుంది +- సోర్స్ - తాజా సమర్థించబడిన ఎపోక్‌ను సూచిస్తుంది +- టార్గెట్ - తాజా ఎపోక్ సరిహద్దును సూచిస్తుంది +- సంతకం + +### నెట్‌వర్క్ {#network-1} + +ఏకాభిప్రాయం లేయర్ టాప్-లెవల్ డేటాలో కిందివి ఉంటాయి: + +- ప్రస్తుత ఎపోక్ +- ప్రస్తుత స్లాట్ +- యాక్టివ్ వాలిడేటర్‌లు - యాక్టివ్ వాలిడేటర్‌ల సంఖ్య +- పెండింగ్‌లో ఉన్న వాలిడేటర్‌లు - యాక్టివ్‌గా మారడానికి వేచి ఉన్న వాలిడేటర్‌ల సంఖ్య +- స్టేక్ చేసిన ETH - నెట్‌వర్క్‌లో స్టేక్ చేసిన ETH మొత్తం +- సగటు బ్యాలెన్స్ - వాలిడేటర్‌ల సగటు ETH బ్యాలెన్స్ + +## బ్లాక్ ఎక్స్‌ప్లోరర్‌లు {#block-explorers} + +- [Etherscan](https://etherscan.io/) - ఎథేరియం మెయిన్‌నెట్ మరియు టెస్టునెట్ కోసం డేటాను పొందేందుకు మీరు ఉపయోగించగల బ్లాక్ ఎక్స్‌ప్లోరర్ +- [3xpl](https://3xpl.com/ethereum) - దాని డేటాసెట్‌లను డౌన్‌లోడ్ చేయడానికి అనుమతించే యాడ్-ఫ్రీ ఓపెన్-సోర్స్ ఎథేరియం ఎక్స్‌ప్లోరర్ +- [Beaconcha.in](https://beaconcha.in/) - ఎథేరియం మెయిన్‌నెట్ మరియు టెస్టునెట్ కోసం ఒక ఓపెన్ సోర్స్ బ్లాక్ ఎక్స్‌ప్లోరర్ +- [Blockchair](https://blockchair.com/ethereum) - అత్యంత ప్రైవేట్ ఎథేరియం ఎక్స్‌ప్లోరర్. డేటాను సార్టింగ్ మరియు ఫిల్టరింగ్ (mempool) చేయడానికి కూడా +- [Etherchain](https://www.etherchain.org/) - ఎథేరియం మెయిన్‌నెట్ కోసం ఒక బ్లాక్ ఎక్స్‌ప్లోరర్ +- [Ethplorer](https://ethplorer.io/) - ఎథేరియం మెయిన్‌నెట్ మరియు కోవన్ టెస్టునెట్ కోసం టోకెన్‌లపై దృష్టి సారించే ఒక బ్లాక్ ఎక్స్‌ప్లోరర్ + +## మరింత సమాచారం {#further-reading} + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ + +## సంబంధిత అంశాలు {#related-topics} + +- [లావాదేవీలు](/developers/docs/transactions/) +- [ఖాతాలు](/developers/docs/accounts/) +- [నెట్‌వర్క్‌లు](/developers/docs/networks/) diff --git a/public/content/translations/te/developers/docs/data-and-analytics/index.md b/public/content/translations/te/developers/docs/data-and-analytics/index.md new file mode 100644 index 00000000000..3e4e3d04095 --- /dev/null +++ b/public/content/translations/te/developers/docs/data-and-analytics/index.md @@ -0,0 +1,72 @@ +--- +title: "డేటా మరియు విశ్లేషణలు" +description: "మీ డాప్స్‌లో ఉపయోగం కోసం ఆన్‌చైన్ విశ్లేషణలు మరియు డేటాను ఎలా పొందాలి" +lang: te +--- + +## పరిచయం {#Introduction} + +నెట్‌వర్క్ వినియోగం పెరుగుతూనే ఉన్నందున, ఆన్‌చైన్ డేటాలో విలువైన సమాచారం పెరుగుతూ ఉంటుంది. డేటా పరిమాణం వేగంగా పెరుగుతున్నందున, ఒక డాప్ పై నివేదించడానికి లేదా నడపడానికి ఈ సమాచారాన్ని లెక్కించడం మరియు సమీకరించడం సమయం మరియు ప్రక్రియతో కూడిన ప్రయత్నంగా మారుతుంది. + +ఇప్పటికే ఉన్న డేటా ప్రొవైడర్లను ఉపయోగించడం వల్ల అభివృద్ధిని వేగవంతం చేయవచ్చు, మరింత కచ్చితమైన ఫలితాలను అందించవచ్చు మరియు కొనసాగుతున్న నిర్వహణ ప్రయత్నాలను తగ్గించవచ్చు. ఇది ఒక బృందం వారి ప్రాజెక్ట్ అందించడానికి ప్రయత్నిస్తున్న ప్రధాన కార్యాచరణపై దృష్టి పెట్టడానికి వీలు కల్పిస్తుంది. + +## అవసరాలు {#prerequisites} + +డేటా విశ్లేషణల సందర్భంలో వాటిని ఉపయోగించడాన్ని బాగా అర్థం చేసుకోవడానికి మీరు [బ్లాక్ ఎక్స్‌ప్లోరర్‌ల](/developers/docs/data-and-analytics/block-explorers/) ప్రాథమిక భావనను అర్థం చేసుకోవాలి. అదనంగా, సిస్టమ్ డిజైన్‌కు అవి జోడించే ప్రయోజనాలను అర్థం చేసుకోవడానికి [సూచిక](/glossary/#index) భావనతో మిమ్మల్ని మీరు పరిచయం చేసుకోండి. + +నిర్మాణ ప్రాథమిక సూత్రాల పరంగా, [API](https://www.wikipedia.org/wiki/API) మరియు [REST](https://www.wikipedia.org/wiki/Representational_state_transfer) అంటే ఏమిటో సిద్ధాంతపరంగానైనా అర్థం చేసుకోవడం. + +## బ్లాక్ ఎక్స్‌ప్లోరర్‌లు {#block-explorers} + +అనేక [బ్లాక్ ఎక్స్‌ప్లోరర్‌లు](/developers/docs/data-and-analytics/block-explorers/) [RESTful](https://www.wikipedia.org/wiki/Representational_state_transfer) [API](https://www.wikipedia.org/wiki/API) గేట్‌వేలను అందిస్తాయి, ఇవి డెవలపర్‌లకు బ్లాక్‌లు, లావాదేవీలు, వాలిడేటర్‌లు, ఖాతాలు మరియు ఇతర ఆన్‌చైన్ కార్యకలాపాలపై నిజ-సమయ డేటాలోకి దృశ్యమానతను అందిస్తాయి. + +డెవలపర్లు తమ వినియోగదారులకు [బ్లాక్‌చైన్‌తో](/glossary/#blockchain) ప్రత్యేకమైన అంతర్దృష్టులు మరియు పరస్పర చర్యలను అందించడానికి ఈ డేటాను ప్రాసెస్ చేసి, మార్చగలరు. ఉదాహరణకు, [Etherscan](https://etherscan.io) మరియు [Blockscout](https://eth.blockscout.com) ప్రతి 12సెకన్ల స్లాట్‌కు ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయం డేటాను అందిస్తాయి. + +## ది గ్రాఫ్ {#the-graph} + +[ది గ్రాఫ్](https://thegraph.com/) అనేది ఒక ఇండెక్సింగ్ ప్రోటోకాల్, ఇది సబ్‌గ్రాఫ్‌లు అని పిలువబడే ఓపెన్ APIల ద్వారా బ్లాక్‌చైన్ డేటాను సులభంగా క్వెరీ చేయడానికి ఒక మార్గాన్ని అందిస్తుంది. + +ది గ్రాఫ్‌తో, డెవలపర్లు దీని నుండి ప్రయోజనం పొందగలరు: + +- వికేంద్రీకృత ఇండెక్సింగ్: బహుళ ఇండెక్సర్‌ల ద్వారా బ్లాక్‌చైన్ డేటాను ఇండెక్స్ చేయడానికి వీలు కల్పిస్తుంది, తద్వారా వైఫల్యానికి సంబంధించిన ఏ ఒక్క పాయింట్‌నైనా తొలగిస్తుంది. +- GraphQL క్వెరీలు: ఇండెక్స్ చేయబడిన డేటాను క్వెరీ చేయడానికి శక్తివంతమైన GraphQL ఇంటర్‌ఫేస్‌ను అందిస్తుంది, డేటా పునరుద్ధరణను చాలా సులభం చేస్తుంది. +- అనుకూలీకరణ: బ్లాక్‌చైన్ డేటాను మార్చడానికి & నిల్వ చేయడానికి మీ స్వంత లాజిక్‌ను నిర్వచించండి మరియు ది గ్రాఫ్ నెట్‌వర్క్‌లో ఇతర డెవలపర్‌లు ప్రచురించిన సబ్‌గ్రాఫ్‌లను తిరిగి ఉపయోగించుకోండి. + +5 నిమిషాల్లో సబ్‌గ్రాఫ్‌ను సృష్టించడానికి, డిప్లాయ్ చేయడానికి మరియు క్వెరీ చేయడానికి ఈ [క్విక్-స్టార్ట్](https://thegraph.com/docs/en/quick-start/) గైడ్‌ను అనుసరించండి. + +## క్లయింట్ వైవిధ్యం {#client-diversity} + +[క్లయింట్ వైవిధ్యం](/developers/docs/nodes-and-clients/client-diversity/) ఎథేరియం నెట్‌వర్క్ యొక్క మొత్తం ఆరోగ్యానికి ముఖ్యమైనది ఎందుకంటే ఇది బగ్స్ మరియు దోపిడీలకు స్థితిస్థాపకతను అందిస్తుంది. ఇప్పుడు [clientdiversity.org](https://clientdiversity.org/), [rated.network](https://www.rated.network), [supermajority.info](https://supermajority.info//) మరియు [Ethernodes](https://ethernodes.org/)తో సహా అనేక క్లయింట్ వైవిధ్య డాష్‌బోర్డ్‌లు ఉన్నాయి. + +## డూన్ అనలిటిక్స్ {#dune-analytics} + +[Dune Analytics](https://dune.com/) బ్లాక్‌చైన్ డేటాను రిలేషనల్ డేటాబేస్ (DuneSQL) టేబుల్స్‌లోకి ముందుగా ప్రాసెస్ చేస్తుంది, SQL ఉపయోగించి బ్లాక్‌చైన్ డేటాను క్వెరీ చేయడానికి వినియోగదారులను అనుమతిస్తుంది మరియు క్వెరీ ఫలితాల ఆధారంగా డాష్‌బోర్డ్‌లను రూపొందిస్తుంది. ఆన్‌చైన్ డేటా 4 రా టేబుల్స్‌గా నిర్వహించబడింది: `blocks`, `transactions`, (ఈవెంట్) `logs` మరియు (కాల్) `traces`. జనాదరణ పొందిన కాంట్రాక్టులు మరియు ప్రోటోకాల్‌లు డీకోడ్ చేయబడ్డాయి మరియు ప్రతి దానికీ దాని స్వంత ఈవెంట్ మరియు కాల్ టేబుల్స్ సెట్ ఉంది. ఆ ఈవెంట్ మరియు కాల్ టేబుల్స్ మరింత ప్రాసెస్ చేయబడి, ప్రోటోకాల్స్ రకాన్ని బట్టి అబ్స్ట్రాక్షన్ టేబుల్స్‌గా నిర్వహించబడతాయి, ఉదాహరణకు, డెక్స్, లెండింగ్, స్టేబుల్‌కాయిన్స్, మొదలైనవి. + +## SQD {#sqd} + +[SQD](https://sqd.dev/) అనేది ఒక వికేంద్రీకృత హైపర్-స్కేలబుల్ డేటా ప్లాట్‌ఫారమ్, ఇది పెద్ద పరిమాణంలో డేటాకు సమర్థవంతమైన, అనుమతిరహిత ప్రాప్యతను అందించడానికి ఆప్టిమైజ్ చేయబడింది. ఇది ప్రస్తుతం ఈవెంట్ లాగ్‌లు, లావాదేవీల రసీదులు, ట్రేస్‌లు మరియు ప్రతి-లావాదేవీ స్టేట్ డిఫ్స్‌తో సహా చారిత్రక ఆన్-చైన్ డేటాను అందిస్తుంది. SQD కస్టమ్ డేటా వెలికితీత మరియు ప్రాసెసింగ్ పైప్‌లైన్‌లను రూపొందించడానికి ఒక శక్తివంతమైన టూల్‌కిట్‌ను అందిస్తుంది, సెకనుకు 150k బ్లాక్‌ల వరకు ఇండెక్సింగ్ వేగాన్ని సాధిస్తుంది. + +ప్రారంభించడానికి, [డాక్యుమెంటేషన్](https://docs.sqd.dev/)ను సందర్శించండి లేదా SQDతో మీరు ఏమి నిర్మించవచ్చో [EVM ఉదాహరణలు](https://github.com/subsquid-labs/squid-evm-examples) చూడండి. + +## సబ్‌క్వెరీ నెట్‌వర్క్ {#subquery-network} + +[SubQuery](https://subquery.network/) అనేది ఒక ప్రముఖ డేటా ఇండెక్సర్, ఇది డెవలపర్‌లకు వారి వెబ్3 ప్రాజెక్ట్‌ల కోసం వేగవంతమైన, నమ్మదగిన, వికేంద్రీకృత మరియు అనుకూలీకరించిన APIలను అందిస్తుంది. SubQuery 165+ కంటే ఎక్కువ పర్యావరణ వ్యవస్థల (ఎథేరియంతో సహా) నుండి డెవలపర్‌లకు వారి వినియోగదారుల కోసం ఒక స్పష్టమైన మరియు లీనమయ్యే అనుభవాలను నిర్మించడానికి రిచ్ ఇండెక్స్ చేయబడిన డేటాతో అధికారం ఇస్తుంది. సబ్‌క్వెరీ నెట్‌వర్క్ మీ ఆపలేని యాప్‌లను స్థితిస్థాపక మరియు వికేంద్రీకృత మౌలిక సదుపాయాల నెట్‌వర్క్‌తో శక్తివంతం చేస్తుంది. డేటా ప్రాసెసింగ్ కార్యకలాపాల కోసం కస్టమ్ బ్యాకెండ్‌ను రూపొందించడానికి సమయం కేటాయించకుండా, భవిష్యత్తు యొక్క వెబ్3 అప్లికేషన్‌లను రూపొందించడానికి SubQuery యొక్క బ్లాక్‌చైన్ డెవలపర్ టూల్‌కిట్‌ను ఉపయోగించండి. + +[SubQuery యొక్క నిర్వహించే సేవ](https://managedservice.subquery.network/) లేదా [SubQuery యొక్క వికేంద్రీకృత నెట్‌వర్క్](https://app.subquery.network/dashboard)లో ప్రత్యక్ష ప్రసారం చేయడానికి ముందు పరీక్ష కోసం స్థానిక డాకర్ వాతావరణంలో నిమిషాల్లో ఎథేరియం బ్లాక్‌చైన్ డేటాను ఇండెక్స్ చేయడం ప్రారంభించడానికి, [ఎథేరియం క్విక్ స్టార్ట్ గైడ్](https://academy.subquery.network/quickstart/quickstart_chains/ethereum-gravatar.html)ని సందర్శించండి. + +## EVM క్వెరీ భాష {#evm-query-language} + +EVM క్వెరీ భాష (EQL) అనేది EVM (ఎథేరియం వర్చువల్ మషీన్) చైన్‌లను క్వెరీ చేయడానికి రూపొందించబడిన SQL-వంటి భాష. EQL యొక్క అంతిమ లక్ష్యం EVM చైన్ ఫస్ట్-క్లాస్ పౌరులపై (బ్లాక్‌లు, ఖాతాలు మరియు లావాదేవీలు) సంక్లిష్ట రిలేషనల్ క్వెరీలకు మద్దతు ఇవ్వడం, అదే సమయంలో డెవలపర్‌లు మరియు పరిశోధకులకు రోజువారీ ఉపయోగం కోసం ఎర్గోనామిక్ సింటాక్స్‌ను అందించడం. EQLతో, డెవలపర్లు సుపరిచితమైన SQL-వంటి సింటాక్స్‌ను ఉపయోగించి బ్లాక్‌చైన్ డేటాను పొందవచ్చు మరియు సంక్లిష్టమైన బాయిలర్‌ప్లేట్ కోడ్ అవసరాన్ని తొలగించవచ్చు. EQL ప్రామాణిక బ్లాక్‌చైన్ డేటా అభ్యర్థనలకు మద్దతు ఇస్తుంది (ఉదా., ఎథేరియంపై ఖాతా యొక్క నాన్స్ మరియు బ్యాలెన్స్‌ను తిరిగి పొందడం లేదా ప్రస్తుత బ్లాక్ పరిమాణం మరియు టైమ్‌స్టాంప్‌ను పొందడం) మరియు మరింత సంక్లిష్టమైన అభ్యర్థనలు మరియు ఫీచర్‌సెట్‌ల కోసం నిరంతరం మద్దతును జోడిస్తోంది. + +## మరింత చదవడానికి {#further-reading} + +- [క్రిప్టో డేటాను అన్వేషించడం I: డేటా ఫ్లో ఆర్కిటెక్చర్లు](https://web.archive.org/web/20250125012042/https://research.2077.xyz/exploring-crypto-data-1-data-flow-architectures) +- [గ్రాఫ్ నెట్‌వర్క్ అవలోకనం](https://thegraph.com/docs/en/about/) +- [గ్రాఫ్ క్వెరీ ప్లేగ్రౌండ్](https://thegraph.com/explorer/subgraph/graphprotocol/graph-network-mainnet?version=current) +- [EtherScanలో API కోడ్ ఉదాహరణలు](https://etherscan.io/apis#contracts) +- [Blockscoutలో API డాక్యుమెంటేషన్](https://docs.blockscout.com/devs/apis) +- [Beaconcha.in బెకన్ చైన్ ఎక్స్‌ప్లోరర్](https://beaconcha.in) +- [డూన్ బేసిక్స్](https://docs.dune.com/#dune-basics) +- [SubQuery ఎథేరియం క్విక్ స్టార్ట్ గైడ్](https://academy.subquery.network/indexer/quickstart/quickstart_chains/ethereum-gravatar.html) +- [SQD నెట్‌వర్క్ అవలోకనం](https://docs.sqd.dev/) +- [EVM క్వెరీ భాష](https://eql.sh/blog/alpha-release-notes) diff --git a/public/content/translations/te/developers/docs/data-availability/blockchain-data-storage-strategies/index.md b/public/content/translations/te/developers/docs/data-availability/blockchain-data-storage-strategies/index.md new file mode 100644 index 00000000000..58018c57019 --- /dev/null +++ b/public/content/translations/te/developers/docs/data-availability/blockchain-data-storage-strategies/index.md @@ -0,0 +1,118 @@ +--- +title: "బ్లాక్‌చెయిన్ డేటా నిల్వ వ్యూహాలు" +description: "బ్లాక్‌చెయిన్ ఉపయోగించి డేటాను నిల్వ చేయడానికి అనేక మార్గాలు ఉన్నాయి. ఈ వ్యాసం వివిధ వ్యూహాలను, వాటి ఖర్చులు మరియు ట్రేడ్‌ఆఫ్‌లను, అలాగే దాన్ని సురక్షితంగా ఉపయోగించడానికి అవసరమైన అవసరాలను పోల్చి చూస్తుంది." +lang: te +--- + +బ్లాక్‌చెయిన్‌లో నేరుగా లేదా బ్లాక్‌చెయిన్ ద్వారా సురక్షితం చేయబడిన పద్ధతిలో సమాచారాన్ని నిల్వ చేయడానికి బహుళ మార్గాలు ఉన్నాయి: + +- EIP-4844 బ్లాబ్స్ +- కాల్‌డేటా +- L1 మెకానిజమ్స్‌తో ఆఫ్‌చెయిన్ +- కాంట్రాక్ట్ "కోడ్" +- సంఘటనలు +- EVM నిల్వ + +ఏ పద్ధతిని ఉపయోగించాలనే ఎంపిక అనేక ప్రమాణాలపై ఆధారపడి ఉంటుంది: + +- సమాచారం యొక్క మూలం. కాల్‌డేటాలోని సమాచారం నేరుగా బ్లాక్‌చెయిన్ నుండే రాలేదు. +- సమాచారం యొక్క గమ్యస్థానం. కాల్‌డేటా దానిని కలిగి ఉన్న లావాదేవీలో మాత్రమే అందుబాటులో ఉంటుంది. ఈవెంట్‌లు ఆన్‌చెయిన్‌లో అస్సలు అందుబాటులో ఉండవు. +- ఎంత ఇబ్బంది ఆమోదయోగ్యం? పూర్తి-స్థాయి నోడ్‌ను అమలు చేసే కంప్యూటర్‌లు బ్రౌజర్‌లో నడుస్తున్న అప్లికేషన్‌లోని లైట్ క్లయింట్ కంటే ఎక్కువ ప్రాసెసింగ్‌ను చేయగలవు. +- ప్రతి నోడ్ నుండి సమాచారానికి సులభమైన యాక్సెస్‌ను సులభతరం చేయడం అవసరమా? +- భద్రతా అవసరాలు. + +## భద్రతా అవసరాలు {#security-requirements} + +సాధారణంగా, సమాచార భద్రత మూడు లక్షణాలను కలిగి ఉంటుంది: + +- _గోప్యత_, అనధికార సంస్థలు సమాచారాన్ని చదవడానికి అనుమతించబడవు. ఇది చాలా సందర్భాలలో ముఖ్యమైనది, కానీ ఇక్కడ కాదు. _బ్లాక్‌చెయిన్‌లో రహస్యాలు లేవు_. బ్లాక్‌చెయిన్‌లు పనిచేస్తాయి ఎందుకంటే ఎవరైనా స్టేట్ పరివర్తనలను ధృవీకరించగలరు, కాబట్టి వాటిని రహస్యాలను నేరుగా నిల్వ చేయడానికి ఉపయోగించడం అసాధ్యం. బ్లాక్‌చెయిన్‌లో గోప్యమైన సమాచారాన్ని నిల్వ చేయడానికి మార్గాలు ఉన్నాయి, కానీ అవన్నీ కనీసం ఒక కీని నిల్వ చేయడానికి కొన్ని ఆఫ్‌చెయిన్ కాంపోనెంట్‌పై ఆధారపడి ఉంటాయి. + +- _సమగ్రత_, సమాచారం సరైనది, దానిని అనధికార సంస్థల ద్వారా లేదా అనధికార మార్గాలలో మార్చలేరు (ఉదాహరణకు, `Transfer` ఈవెంట్ లేకుండా [ERC-20 టోకెన్‌లను](https://eips.ethereum.org/EIPS/eip-20#events) బదిలీ చేయడం). బ్లాక్‌చెయిన్‌లో, ప్రతి నోడ్ ప్రతి స్టేట్ మార్పును ధృవీకరిస్తుంది, ఇది సమగ్రతను నిర్ధారిస్తుంది. + +- _లభ్యత_, సమాచారం ఏదైనా అధీకృత సంస్థకు అందుబాటులో ఉంటుంది. బ్లాక్‌చెయిన్‌లో, ప్రతి [పూర్తి నోడ్‌లోనూ](https://ethereum.org/developers/docs/nodes-and-clients#full-node) సమాచారం అందుబాటులో ఉండటం ద్వారా ఇది సాధారణంగా సాధించబడుతుంది. + +L1లో హాష్‌లు పోస్ట్ చేయబడినందున ఇక్కడ ఉన్న వివిధ పరిష్కారాలన్నీ అద్భుతమైన సమగ్రతను కలిగి ఉన్నాయి. అయితే, అవి వేర్వేరు లభ్యత హామీలను కలిగి ఉన్నాయి. + +## అవసరాలు {#prerequisites} + +మీకు [బ్లాక్‌చెయిన్ ప్రాథమిక అంశాలపై](/developers/docs/intro-to-ethereum/) మంచి అవగాహన ఉండాలి. ఈ పేజీ పాఠకుడికి [బ్లాక్స్](/developers/docs/blocks/), [లావాదేవీలు](/developers/docs/transactions/), మరియు ఇతర సంబంధిత అంశాలతో సుపరిచితులని కూడా ఊహిస్తుంది. + +## EIP-4844 బ్లాబ్స్ {#eip-4844-blobs} + +[డెన్‌కన్ హార్డ్‌ఫోర్క్‌తో](https://github.com/ethereum/consensus-specs/blob/dev/specs/deneb/beacon-chain.md) ప్రారంభించి, ఎథేరియం బ్లాక్‌చెయిన్‌లో [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) ఉంటుంది, ఇది పరిమిత జీవితకాలంతో (ప్రారంభంలో సుమారు [18 రోజులు](https://github.com/ethereum/consensus-specs/blob/dev/specs/deneb/p2p-interface.md#configuration)) ఎథేరియం డేటా బ్లాబ్‌లను జోడిస్తుంది. ఈ బ్లాబ్స్ [ఎగ్జిక్యూషన్ గ్యాస్](/developers/docs/gas) నుండి వేరుగా ధర నిర్ణయించబడతాయి, అయినప్పటికీ ఇదే విధమైన యంత్రాంగాన్ని ఉపయోగిస్తాయి. తాత్కాలిక డేటాను పోస్ట్ చేయడానికి అవి చౌకైన మార్గం. + +EIP-4844 బ్లాబ్స్ యొక్క ప్రధాన వినియోగం రోల్అప్‌లు తమ లావాదేవీలను ప్రచురించడం కోసం. [ఆప్టిమిస్టిక్ రోల్అప్‌లు](/developers/docs/scaling/optimistic-rollups) తమ బ్లాక్‌చెయిన్‌లపై లావాదేవీలను ప్రచురించాలి. రోల్అప్ యొక్క [సీక్వెన్సర్](https://docs.optimism.io/connect/resources/glossary#sequencer) తప్పు స్టేట్ రూట్‌ను పోస్ట్ చేస్తే, పొరపాటును సరిచేయడానికి [వాలిడేటర్‌లను](https://docs.optimism.io/connect/resources/glossary#validator) ఎనేబుల్ చేయడానికి ఆ లావాదేవీలు [ఛాలెంజ్ పీరియడ్](https://docs.optimism.io/connect/resources/glossary#challenge-period) సమయంలో ఎవరికైనా అందుబాటులో ఉండాలి. + +అయితే, ఛాలెంజ్ వ్యవధి ముగిసి, స్టేట్ రూట్ ఖరారు చేయబడిన తర్వాత, ఈ లావాదేవీలను తెలుసుకోవడం యొక్క మిగిలిన ఉద్దేశ్యం చైన్ యొక్క ప్రస్తుత స్థితిని పునరావృతం చేయడం. ఈ స్టేట్ చైన్ నోడ్‌ల నుండి కూడా అందుబాటులో ఉంటుంది, చాలా తక్కువ ప్రాసెసింగ్ అవసరం. కాబట్టి లావాదేవీల సమాచారం [బ్లాక్ ఎక్స్‌ప్లోరర్‌ల](/developers/docs/data-and-analytics/block-explorers) వంటి కొన్ని ప్రదేశాలలో భద్రపరచబడాలి, కానీ ఎథేరియం అందించే సెన్సార్‌షిప్ నిరోధకత స్థాయికి చెల్లించాల్సిన అవసరం లేదు. + +[జీరో-కనౌలెడ్జి రోల్అప్‌లు](/developers/docs/scaling/zk-rollups/#data-availability) కూడా ఇప్పటికే ఉన్న స్థితిని పునరావృతం చేయడానికి మరియు చెల్లుబాటు రుజువులను ధృవీకరించడానికి ఇతర నోడ్‌లను ప్రారంభించడానికి వాటి లావాదేవీ డేటాను పోస్ట్ చేస్తాయి, కానీ మళ్ళీ అది స్వల్పకాలిక అవసరం. + +రాసే సమయంలో EIP-4844లో పోస్ట్ చేయడానికి ప్రతి బైట్‌కు ఒక వీ (10-18 ETH) ఖర్చవుతుంది, ఇది [బ్లాబ్స్ పోస్ట్ చేసే లావాదేవీతో సహా ఏ లావాదేవీకైనా అయ్యే 21,000 ఎగ్జిక్యూషన్ గ్యాస్ ఖర్చుతో](https://eth.blockscout.com/tx/0xf6cfaf0431c73dd1d96369a5e6707d64f463ccf477a4131265397f1d81466929?tab=index) పోలిస్తే చాలా తక్కువ. మీరు ప్రస్తుత EIP-4844 ధరను [blobscan.com](https://blobscan.com/blocks)లో చూడవచ్చు. + +కొన్ని ప్రసిద్ధ రోల్అప్‌ల ద్వారా పోస్ట్ చేయబడిన బ్లాబ్స్‌ను చూడటానికి ఇక్కడ చిరునామాలు ఉన్నాయి. + +| రోల్అప్ | మెయిల్‌బాక్స్ చిరునామా | +| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------- | +| [Optimism](https://www.optimism.io/) | [`0xFF00000000000000000000000000000000000010`](https://blobscan.com/address/0xFF00000000000000000000000000000000000010) | +| [Arbitrum](https://arbitrum.io/) | [`0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6`](https://blobscan.com/address/0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6) | +| [Base](https://base.org/) | [`0xFF00000000000000000000000000000000008453`](https://blobscan.com/address/0xFF00000000000000000000000000000000008453) | + +## కాల్‌డేటా {#calldata} + +కాల్‌డేటా లావాదేవీలో భాగంగా పంపిన బైట్‌లను సూచిస్తుంది. ఇది ఆ లావాదేవీని కలిగి ఉన్న బ్లాక్‌లో బ్లాక్‌చెయిన్ యొక్క శాశ్వత రికార్డులో భాగంగా నిల్వ చేయబడుతుంది. + +బ్లాక్‌చెయిన్‌లో శాశ్వతంగా డేటాను ఉంచడానికి ఇది చౌకైన పద్ధతి. ప్రతి బైట్‌కు అయ్యే ఖర్చు 4 ఎగ్జిక్యూషన్ గ్యాస్ (బైట్ సున్నా అయితే) లేదా 16 గ్యాస్ (ఏదైనా ఇతర విలువ). డేటా కంప్రెస్ చేయబడితే, ఇది ప్రామాణిక పద్ధతి, అప్పుడు ప్రతి బైట్ విలువ సమానంగా ఉంటుంది, కాబట్టి సగటు ఖర్చు ప్రతి బైట్‌కు సుమారు 15.95 గ్యాస్. + +రాసే సమయంలో, ధరలు 12 gwei/gas మరియు 2300 $/ETH, అంటే ప్రతి కిలోబైట్‌కు దాదాపు 45 సెంట్లు ఖర్చు అవుతుంది. EIP-4844 కంటే ముందు ఇది చౌకైన పద్ధతి అయినందున, ఇది రోల్అప్‌లు లావాదేవీ సమాచారాన్ని నిల్వ చేయడానికి ఉపయోగించే పద్ధతి. ఇది [ఫాల్ట్ ఛాలెంజ్‌ల](https://docs.optimism.io/stack/protocol/overview#fault-proofs) కోసం అందుబాటులో ఉండాలి, కానీ నేరుగా ఆన్‌చెయిన్‌లో అందుబాటులో ఉండవలసిన అవసరం లేదు. + +కొన్ని ప్రసిద్ధ రోల్అప్‌ల ద్వారా పోస్ట్ చేయబడిన లావాదేవీలను చూడటానికి ఇక్కడ చిరునామాలు ఉన్నాయి. + +| రోల్అప్ | మెయిల్‌బాక్స్ చిరునామా | +| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- | +| [Optimism](https://www.optimism.io/) | [`0xFF00000000000000000000000000000000000010`](https://eth.blockscout.com/address/0xFF00000000000000000000000000000000000010) | +| [Arbitrum](https://arbitrum.io/) | [`0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6`](https://eth.blockscout.com/address/0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6) | +| [Base](https://base.org/) | [`0xFF00000000000000000000000000000000008453`](https://eth.blockscout.com/address/0xFF00000000000000000000000000000000008453) | + +## L1 మెకానిజమ్స్‌తో ఆఫ్‌చెయిన్ {#offchain-with-l1-mechs} + +మీ భద్రతా ట్రేడ్‌ఆఫ్‌లను బట్టి, సమాచారాన్ని మరెక్కడైనా ఉంచి, అవసరమైనప్పుడు డేటా అందుబాటులో ఉండేలా చూసే మెకానిజంను ఉపయోగించడం ఆమోదయోగ్యం కావచ్చు. ఇది పనిచేయడానికి రెండు అవసరాలు ఉన్నాయి: + +1. బ్లాక్‌చెయిన్‌పై డేటా యొక్క [హాష్](https://en.wikipedia.org/wiki/Cryptographic_hash_function) పోస్ట్ చేయండి, దీనిని _ఇన్‌పుట్ కమిట్‌మెంట్_ అంటారు. ఇది ఒకే 32-బైట్ పదం కావచ్చు, కాబట్టి ఇది ఖరీదైనది కాదు. ఇన్‌పుట్ కమిట్‌మెంట్ అందుబాటులో ఉన్నంత వరకు, సమగ్రత హామీ ఇవ్వబడుతుంది, ఎందుకంటే అదే విలువకు హాష్ చేసే మరే ఇతర డేటాను కనుగొనడం సాధ్యం కాదు. కాబట్టి తప్పు డేటా అందించబడితే, దానిని గుర్తించవచ్చు. + +2. లభ్యతను నిర్ధారించే యంత్రాంగాన్ని కలిగి ఉండండి. ఉదాహరణకు, [రెడ్‌స్టోన్‌లో](https://redstone.xyz/docs/what-is-redstone) ఏ నోడ్ అయినా లభ్యత ఛాలెంజ్‌ను సమర్పించవచ్చు. సీక్వెన్సర్ గడువులోగా ఆన్‌చెయిన్‌లో స్పందించకపోతే, ఇన్‌పుట్ కమిట్‌మెంట్ విస్మరించబడుతుంది, కాబట్టి సమాచారం ఎప్పుడూ పోస్ట్ చేయబడలేదని పరిగణించబడుతుంది. + +ఇది ఆప్టిమిస్టిక్ రోల్అప్‌కు ఆమోదయోగ్యమైనది, ఎందుకంటే మనం ఇప్పటికే స్టేట్ రూట్ కోసం కనీసం ఒక నిజాయితీ గల ధృవీకరణకర్తను కలిగి ఉండటంపై ఆధారపడి ఉన్నాము. అటువంటి నిజాయితీగల ధృవీకరణకర్త బ్లాక్‌లను ప్రాసెస్ చేయడానికి డేటాను కలిగి ఉందని నిర్ధారించుకుంటుంది మరియు సమాచారం ఆఫ్‌చెయిన్‌లో అందుబాటులో లేకపోతే లభ్యత ఛాలెంజ్‌ను జారీ చేస్తుంది. ఈ రకమైన ఆప్టిమిస్టిక్ రోల్అప్‌ను [ప్లాస్మా](/developers/docs/scaling/plasma/) అంటారు. + +## కాంట్రాక్ట్ కోడ్ {#contract-code} + +ఒక్కసారి మాత్రమే రాయాల్సిన, ఎప్పటికీ ఓవర్‌రైట్ చేయని, మరియు ఆన్‌చెయిన్‌లో అందుబాటులో ఉండాల్సిన సమాచారాన్ని కాంట్రాక్ట్ కోడ్‌గా నిల్వ చేయవచ్చు. అంటే మనం డేటాతో ఒక "స్మార్ట్ కాంట్రాక్ట్"ని సృష్టించి, ఆపై సమాచారాన్ని చదవడానికి [`EXTCODECOPY`](https://www.evm.codes/#3c?fork=shanghai)ని ఉపయోగిస్తాము. ప్రయోజనం ఏమిటంటే, కోడ్‌ను కాపీ చేయడం చాలా చౌక. + +మెమరీ విస్తరణ ఖర్చు కాకుండా, `EXTCODECOPY` ఒక కాంట్రాక్ట్‌కు మొదటి యాక్సెస్ కోసం (అది "కోల్డ్"గా ఉన్నప్పుడు) 2600 గ్యాస్ ఖర్చవుతుంది మరియు అదే కాంట్రాక్ట్ నుండి తదుపరి కాపీల కోసం 100 గ్యాస్ ప్లస్ ప్రతి 32 బైట్ పదానికి 3 గ్యాస్ ఖర్చవుతుంది. ప్రతి బైట్‌కు 15.95 ఖర్చయ్యే కాల్‌డేటాతో పోలిస్తే, ఇది సుమారు 200 బైట్‌ల నుండి చౌకగా ఉంటుంది. [మెమరీ విస్తరణ ఖర్చుల ఫార్ములా](https://www.evm.codes/about#memoryexpansion) ఆధారంగా, మీకు 4MB కంటే ఎక్కువ మెమరీ అవసరం లేనంత వరకు, మెమరీ విస్తరణ ఖర్చు కాల్‌డేటాను జోడించే ఖర్చు కంటే తక్కువగా ఉంటుంది. + +వాస్తవానికి, ఇది డేటాను _చదవడానికి_ అయ్యే ఖర్చు మాత్రమే. కాంట్రాక్ట్‌ను సృష్టించడానికి సుమారుగా 32,000 గ్యాస్ + 200 గ్యాస్/బైట్ ఖర్చవుతుంది. వివిధ లావాదేవీలలో ఒకే సమాచారాన్ని చాలాసార్లు చదవాల్సిన అవసరం వచ్చినప్పుడు మాత్రమే ఈ పద్ధతి ఆర్థికంగా ఉంటుంది. + +కాంట్రాక్ట్ కోడ్ `0xEF` తో ప్రారంభం కానంత వరకు అర్థరహితంగా ఉండవచ్చు. `0xEF` తో ప్రారంభమయ్యే కాంట్రాక్టులు [ఎథేరియం ఆబ్జెక్ట్ ఫార్మాట్](https://notes.ethereum.org/@ipsilon/evm-object-format-overview)గా అన్వయించబడతాయి, దీనికి చాలా కఠినమైన అవసరాలు ఉన్నాయి. + +## ఈవెంట్‌లు {#events} + +[ఈవెంట్‌లు](https://docs.alchemy.com/docs/solidity-events) స్మార్ట్ కాంట్రాక్టుల ద్వారా విడుదల చేయబడతాయి మరియు ఆఫ్‌చెయిన్ సాఫ్ట్‌వేర్ ద్వారా చదవబడతాయి. +వాటి ప్రయోజనం ఏమిటంటే ఆఫ్‌చెయిన్ కోడ్ ఈవెంట్‌ల కోసం వినగలదు. ఖర్చు [గ్యాస్](https://www.evm.codes/#a0?fork=cancun), 375 ప్లస్ ప్రతి బైట్ డేటాకు 8 గ్యాస్. 12 gwei/gas మరియు 2300 $/ETH వద్ద, ఇది ఒక సెంట్ ప్లస్ ప్రతి కిలోబైట్‌కు 22 సెంట్లుగా అనువదిస్తుంది. + +## నిల్వ {#storage} + +స్మార్ట్ కాంట్రాక్టులకు [శాశ్వత నిల్వకు](https://docs.alchemy.com/docs/smart-contract-storage-layout#what-is-storage-memory) యాక్సెస్ ఉంటుంది. అయితే, ఇది చాలా ఖరీదైనది. గతంలో ఖాళీగా ఉన్న నిల్వ స్లాట్‌కు 32 బైట్ పదాన్ని రాయడానికి [22,100 గ్యాస్ ఖర్చవుతుంది](https://www.evm.codes/#55?fork=cancun). 12 gwei/gas మరియు 2300 $/ETH వద్ద, ఇది ప్రతి రైట్ ఆపరేషన్‌కు దాదాపు 61 సెంట్లు, లేదా ప్రతి కిలోబైట్‌కు $19.5. + +ఎథేరియంలో ఇది అత్యంత ఖరీదైన నిల్వ రూపం. + +## సారాంశం {#summary} + +ఈ పట్టిక వివిధ ఎంపికలు, వాటి ప్రయోజనాలు మరియు ప్రతికూలతలను సంగ్రహిస్తుంది. + +| నిల్వ రకం | డేటా మూలం | లభ్యత హామీ | ఆన్‌చెయిన్ లభ్యత | అదనపు పరిమితులు | +| ---------------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------------- | +| EIP-4844 బ్లాబ్స్ | ఆఫ్‌చెయిన్ | [~18 రోజుల](https://github.com/ethereum/consensus-specs/blob/dev/specs/deneb/p2p-interface.md#configuration) పాటు ఎథేరియం హామీ | హాష్ మాత్రమే అందుబాటులో ఉంటుంది | | +| కాల్‌డేటా | ఆఫ్‌చెయిన్ | ఎథేరియం హామీ ఎప్పటికీ (బ్లాక్‌చెయిన్‌లో భాగం) | ఒక కాంట్రాక్టుకు వ్రాసినప్పుడు మరియు ఆ లావాదేవీలో మాత్రమే అందుబాటులో ఉంటుంది | | +| L1 మెకానిజమ్స్‌తో ఆఫ్‌చెయిన్ | ఆఫ్‌చెయిన్ | ఛాలెంజ్ వ్యవధిలో "ఒక నిజాయితీ ధృవీకరణకర్త" హామీ | హాష్ మాత్రమే | ఛాలెంజ్ మెకానిజం ద్వారా హామీ ఇవ్వబడింది, ఛాలెంజ్ వ్యవధిలో మాత్రమే | +| కాంట్రాక్ట్ కోడ్ | ఆన్‌చెయిన్ లేదా ఆఫ్‌చెయిన్ | ఎథేరియం హామీ ఎప్పటికీ (బ్లాక్‌చెయిన్‌లో భాగం) | అవును | "యాదృచ్ఛిక" చిరునామాకు వ్రాయబడింది, `0xEF` తో ప్రారంభం కాదు | +| సంఘటనలు | ఆన్‌చెయిన్ | ఎథేరియం హామీ ఎప్పటికీ (బ్లాక్‌చెయిన్‌లో భాగం) | లేదు | | +| స్టోరేజ్ | ఆన్‌చెయిన్ | ఎథేరియం హామీ ఎప్పటికీ (బ్లాక్‌చెయిన్‌లో భాగం మరియు ఓవర్‌రైట్ అయ్యే వరకు ప్రస్తుత స్థితిలో) | అవును | | diff --git a/public/content/translations/te/developers/docs/data-availability/index.md b/public/content/translations/te/developers/docs/data-availability/index.md new file mode 100644 index 00000000000..790fb91fe66 --- /dev/null +++ b/public/content/translations/te/developers/docs/data-availability/index.md @@ -0,0 +1,84 @@ +--- +title: "డేటా లభ్యత" +description: "ఇతీరియములో డేటా లభ్యతకు సంబంధించిన సమస్యలు మరియు పరిష్కారాల యొక్క అవలోకనం" +lang: te +--- + +"నమ్మవద్దు, ధృవీకరించు" అనేది ఇతీరియములో ఒక సాధారణ సూక్తి. ఇక్కడ ఆలోచన ఏమిటంటే, మీ నోడ్ స్వతంత్రంగా ధృవీకరించగలదు, అది తోటివారి నుండి స్వీకరించే బ్లాక్‌లలోని అన్ని లావాదేవీలను అమలు చేయడం ద్వారా అది స్వీకరించే సమాచారం సరైనదని, ప్రతిపాదిత మార్పులు నోడ్ ద్వారా స్వతంత్రంగా గణించబడిన వాటితో కచ్చితంగా సరిపోలుతున్నాయని నిర్ధారించుకోవచ్చు. దీని అర్థం నోడ్స్ బ్లాక్ పంపినవారు నిజాయితీగా ఉన్నారని నమ్మనవసరం లేదు. డేటా తప్పిపోయినట్లయితే ఇది సాధ్యం కాదు. + +**డేటా లభ్యత** అనేది ఒక బ్లాక్‌ను ధృవీకరించడానికి అవసరమైన డేటా నెట్వర్క్ భాగస్వాములందరికీ నిజంగా అందుబాటులో ఉందని ఒక వినియోగదారుడు కలిగి ఉండే విశ్వాసాన్ని సూచిస్తుంది. ఇతీరియము లేయర్ 1లోని పూర్తి నోడ్స్ కోసం ఇది చాలా సులభం; పూర్తి నోడ్ ప్రతి బ్లాక్‌లోని మొత్తం డేటా కాపీని డౌన్‌లోడ్ చేస్తుంది - డౌన్‌లోడ్ చేయడం సాధ్యం కావాలంటే డేటా అందుబాటులో ఉండాలి. తప్పిపోయిన డేటాతో ఉన్న బ్లాక్ బ్లాక్ చైనుకు జోడించబడకుండా విస్మరించబడుతుంది. ఇది "ఆన్‌చైన్ డేటా లభ్యత" మరియు ఇది మోనోలిథిక్ బ్లాక్ చైనుల యొక్క లక్షణం. పూర్తి నోడ్స్ చెల్లని లావాదేవీలను అంగీకరించడంలో మోసపోలేవు ఎందుకంటే అవి ప్రతి లావాదేవీని తమ కోసం డౌన్‌లోడ్ చేసి అమలు చేస్తాయి. అయినప్పటికీ, మాడ్యులర్ బ్లాక్ చైనులు, లేయర్ 2 రోల్అప్‌లు మరియు లైట్ ఖాతాదారుల కోసం, డేటా లభ్యత ల్యాండ్‌స్కేప్ మరింత సంక్లిష్టంగా ఉంటుంది, దీనికి కొన్ని మరింత అధునాతన ధృవీకరణ పద్ధతులు అవసరం. + +## అవసరాలు {#prerequisites} + +మీకు [బ్లాక్ చైను ప్రాథమిక అంశాలు](/developers/docs/intro-to-ethereum/), ప్రత్యేకించి [ఏకాభిప్రాయం యంత్రాంగాలు](/developers/docs/consensus-mechanisms/) గురించి మంచి అవగాహన ఉండాలి. ఈ పేజీ చదివేవారికి [బ్లాక్‌లు](/developers/docs/blocks/), [లావాదేవీలు](/developers/docs/transactions/), [నోడ్స్](/developers/docs/nodes-and-clients/), [స్కేలింగ్ పరిష్కారాలు](/developers/docs/scaling/), మరియు ఇతర సంబంధిత అంశాలతో పరిచయం ఉందని కూడా భావిస్తుంది. + +## డేటా లభ్యత సమస్య {#the-data-availability-problem} + +డేటా లభ్యత సమస్య అనేది మొత్తం నెట్వర్క్‌కు నిరూపించాల్సిన అవసరం, బ్లాక్ చైనుకు జోడించబడుతున్న కొంత లావాదేవీ డేటా యొక్క సంగ్రహ రూపం నిజంగా చెల్లుబాటు అయ్యే లావాదేవీల సమితిని సూచిస్తుంది, కానీ అన్ని నోడ్స్ మొత్తం డేటాను డౌన్‌లోడ్ చేయకుండానే అలా చేయడం. బ్లాక్‌లను స్వతంత్రంగా ధృవీకరించడానికి పూర్తి లావాదేవీ డేటా అవసరం, కానీ అన్ని నోడ్స్ పూర్తి లావాదేవీ డేటాను డౌన్‌లోడ్ చేయమని కోరడం స్కేలింగ్‌కు ఒక అవరోధం. డేటా లభ్యత సమస్యకు పరిష్కారాలు, తమ కోసం డేటాను డౌన్‌లోడ్ చేసి నిల్వ చేయని నెట్వర్క్ భాగస్వాములకు ధృవీకరణ కోసం పూర్తి లావాదేవీ డేటా అందుబాటులో ఉంచబడిందని తగినంత హామీలను అందించడం లక్ష్యంగా పెట్టుకున్నాయి. + +[లైట్ నోడ్స్](/developers/docs/nodes-and-clients/light-clients) మరియు [లేయర్ 2 రోల్అప్‌లు](/developers/docs/scaling) నెట్వర్క్ భాగస్వాముల యొక్క ముఖ్యమైన ఉదాహరణలు, వీటికి బలమైన డేటా లభ్యత హామీలు అవసరం కానీ తమ కోసం లావాదేవీ డేటాను డౌన్‌లోడ్ చేసి ప్రాసెస్ చేయలేవు. లావాదేవీ డేటాను డౌన్‌లోడ్ చేయకుండా ఉండటమే లైట్ నోడ్స్‌ను లైట్‌గా చేస్తుంది మరియు రోల్అప్‌లను సమర్థవంతమైన స్కేలింగ్ పరిష్కారాలుగా ఎనేబుల్ చేస్తుంది. + +భవిష్యత్ ["స్టేట్‌లెస్"](/roadmap/statelessness) ఇతీరియము ఖాతాదారులకు కూడా డేటా లభ్యత ఒక క్లిష్టమైన ఆందోళన, వీరు బ్లాక్‌లను ధృవీకరించడానికి స్థితి డేటాను డౌన్‌లోడ్ చేసి నిల్వ చేయాల్సిన అవసరం లేదు. స్టేట్‌లెస్ ఖాతాదారులు డేటా ఎక్కడో అందుబాటులో ఉందని మరియు అది సరిగ్గా ప్రాసెస్ చేయబడిందని నిర్ధారించుకోవాలి. + +## డేటా లభ్యత పరిష్కారాలు {#data-availability-solutions} + +### డేటా లభ్యత నమూనా (DAS) {#data-availability-sampling} + +డేటా లభ్యత నమూనా (DAS) అనేది నెట్వర్క్ కోసం ఏ ఒక్క నోడ్‌పైనా ఎక్కువ ఒత్తిడి లేకుండా డేటా అందుబాటులో ఉందో లేదో తనిఖీ చేయడానికి ఒక మార్గం. ప్రతి నోడ్ (నాన్-స్టేకింగ్ నోడ్స్‌తో సహా) మొత్తం డేటాలోని కొన్ని చిన్న, యాదృచ్ఛికంగా ఎంచుకున్న ఉపసమితిని డౌన్‌లోడ్ చేస్తుంది. నమూనాలను విజయవంతంగా డౌన్‌లోడ్ చేయడం మొత్తం డేటా అందుబాటులో ఉందని అధిక విశ్వాసంతో నిర్ధారిస్తుంది. ఇది డేటా ఎరేజర్ కోడింగ్‌పై ఆధారపడి ఉంటుంది, ఇది ఇచ్చిన డేటాసెట్‌ను పునరావృత సమాచారంతో విస్తరిస్తుంది (ఇలా చేసే విధానం డేటాపై _బహుపది_ అని పిలువబడే ఒక ఫంక్షన్‌ను అమర్చడం మరియు అదనపు పాయింట్ల వద్ద ఆ బహుపదిని మూల్యాంకనం చేయడం). ఇది అవసరమైనప్పుడు పునరావృత డేటా నుండి అసలు డేటాను పునరుద్ధరించడానికి అనుమతిస్తుంది. ఈ డేటా సృష్టి యొక్క పర్యవసానం ఏమిటంటే, అసలు డేటాలో ఏది అందుబాటులో లేకపోయినా, విస్తరించిన డేటాలో _సగం_ తప్పిపోతుంది! ప్రతి నోడ్ ద్వారా డౌన్‌లోడ్ చేయబడిన డేటా నమూనాల పరిమాణాన్ని ట్యూన్ చేయవచ్చు, తద్వారా ప్రతి ఖాతాదారుడు నమూనా చేసిన డేటా శకలాలలో కనీసం ఒకటి తప్పిపోయే అవకాశం _అత్యంత_ ఎక్కువగా ఉంటుంది _ఒకవేళ_ సగం కంటే తక్కువ డేటా నిజంగా అందుబాటులో ఉంటే. + +[Full Danksharding](/roadmap/danksharding/#what-is-danksharding) అమలు చేయబడిన తర్వాత రోల్అప్ ఆపరేటర్లు తమ లావాదేవీ డేటాను అందుబాటులో ఉంచేలా చూడటానికి DAS ఉపయోగించబడుతుంది. పైన వివరించిన పునరావృతం స్కీమ్‌ను ఉపయోగించి బ్లాబ్స్‌లో అందించిన లావాదేవీ డేటాను ఇతీరియము నోడ్స్ యాదృచ్ఛికంగా నమూనా చేస్తాయి, మొత్తం డేటా ఉనికిలో ఉందని నిర్ధారించుకోవడానికి. సురక్షితమైన లైట్ ఖాతాదారులకు బ్లాక్ ప్రొడ్యూసర్లు తమ మొత్తం డేటాను అందుబాటులో ఉంచుతున్నారని నిర్ధారించడానికి అదే టెక్నిక్‌ను ఉపయోగించవచ్చు. అదేవిధంగా, [ప్రపోజర్-బిల్డర్ సెపరేషన్](/roadmap/pbs) కింద, మొత్తం బ్లాక్‌ను ప్రాసెస్ చేయడానికి బ్లాక్ బిల్డర్ మాత్రమే అవసరం - ఇతర వాలిడేటర్లు డేటా లభ్యత నమూనాను ఉపయోగించి ధృవీకరిస్తారు. + +### డేటా లభ్యత కమిటీలు {#data-availability-committees} + +డేటా లభ్యత కమిటీలు (DACలు) విశ్వసనీయ పార్టీలు, ఇవి డేటా లభ్యతను అందిస్తాయి లేదా ధృవీకరిస్తాయి. DACలను DASకు బదులుగా, [లేదా దానితో కలిపి](https://hackmd.io/@vbuterin/sharding_proposal#Why-not-use-just-committees-and-not-DAS) ఉపయోగించవచ్చు. కమిటీలతో వచ్చే భద్రతా హామీలు నిర్దిష్ట సెటప్‌పై ఆధారపడి ఉంటాయి. ఉదాహరణకు, లైట్ నోడ్స్ కోసం డేటా లభ్యతను ధృవీకరించడానికి ఇతీరియము యాదృచ్ఛికంగా నమూనా చేయబడిన వాలిడేటర్ల ఉపసమితులను ఉపయోగిస్తుంది. + +కొన్ని వాలిడియమ్‌ల ద్వారా కూడా DACలు ఉపయోగించబడతాయి. DAC అనేది ఆఫ్‌లైన్‌లో డేటా కాపీలను నిల్వ చేసే విశ్వసనీయ నోడ్స్ సెట్. వివాదం జరిగినప్పుడు డేటాను అందుబాటులో ఉంచడానికి DAC అవసరం. DAC సభ్యులు చెప్పిన డేటా నిజంగా అందుబాటులో ఉందని నిరూపించడానికి ఆన్‌చైన్ ధృవీకరణలను కూడా ప్రచురిస్తారు. కొన్ని వాలిడియమ్‌లు DACలను ప్రూఫ్-ఆఫ్-స్టేక్ (PoS) వాలిడేటర్ సిస్టమ్‌తో భర్తీ చేస్తాయి. ఇక్కడ, ఎవరైనా వాలిడేటర్‌గా మారి డేటాను ఆఫ్‌చైన్‌లో నిల్వ చేయవచ్చు. అయితే, వారు తప్పనిసరిగా ఒక “బాండ్”ను అందించాలి, ఇది ఒక స్మార్ట్ కాంట్రాక్ట్‌లో డిపాజిట్ చేయబడుతుంది. హానికరమైన ప్రవర్తన జరిగినప్పుడు, ఉదాహరణకు వాలిడేటర్ డేటాను నిలిపివేస్తే, బాండ్ స్లాష్ చేయబడవచ్చు. ప్రూఫ్-ఆఫ్-స్టేక్ డేటా లభ్యత కమిటీలు సాధారణ DACల కంటే చాలా సురక్షితమైనవి ఎందుకంటే అవి నిజాయితీ ప్రవర్తనను నేరుగా ప్రోత్సహిస్తాయి. + +## డేటా లభ్యత మరియు లైట్ నోడ్స్ {#data-availability-and-light-nodes} + +[లైట్ నోడ్స్](/developers/docs/nodes-and-clients/light-clients) బ్లాక్ డేటాను డౌన్‌లోడ్ చేయకుండానే వారు స్వీకరించే బ్లాక్ హెడర్‌ల యొక్క ఖచ్చితత్వాన్ని ధృవీకరించాలి. ఈ తేలిక యొక్క ధర ఏమిటంటే, పూర్తి నోడ్స్ చేసిన విధంగా స్థానికంగా లావాదేవీలను తిరిగి అమలు చేయడం ద్వారా బ్లాక్ హెడర్‌లను స్వతంత్రంగా ధృవీకరించలేకపోవడం. + +ఇతీరియము లైట్ నోడ్స్ _సింక్ కమిటీ_కి కేటాయించబడిన 512 వాలిడేటర్ల యాదృచ్ఛిక సెట్‌లను విశ్వసిస్తాయి. సింక్ కమిటీ DACగా పనిచేస్తుంది, ఇది క్రిప్టోగ్రాఫిక్ సంతకాన్ని ఉపయోగించి హెడర్‌లోని డేటా సరైనదని లైట్ ఖాతాదారులకు సూచిస్తుంది. ప్రతిరోజూ, సింక్ కమిటీ రిఫ్రెష్ అవుతుంది. ప్రతి బ్లాక్ హెడర్ లైట్ నోడ్స్‌ను _తదుపరి_ బ్లాక్‌పై ఎవరు సంతకం చేస్తారని ఆశించాలో హెచ్చరిస్తుంది, తద్వారా వారు నిజమైన సింక్-కమిటీగా నటించే హానికరమైన సమూహాన్ని నమ్మడంలో మోసపోరు. + +అయినప్పటికీ, ఒక దాడిచేసేవాడు ఏదో ఒకవిధంగా హానికరమైన బ్లాక్ హెడర్‌ను లైట్ ఖాతాదారులకు పంపి, అది ఒక నిజాయితీ గల సింక్-కమిటీచే సంతకం చేయబడిందని వారిని ఒప్పించగలిగితే ఏమి జరుగుతుంది? ఆ సందర్భంలో, దాడిచేసేవాడు చెల్లని లావాదేవీలను చేర్చవచ్చు మరియు లైట్ ఖాతాదారుడు వాటిని గుడ్డిగా అంగీకరిస్తాడు, ఎందుకంటే వారు బ్లాక్ హెడర్‌లో సంగ్రహించిన అన్ని స్థితి మార్పులను స్వతంత్రంగా తనిఖీ చేయరు. దీని నుండి రక్షించుకోవడానికి, లైట్ ఖాతాదారుడు మోసం ప్రూఫ్‌లను ఉపయోగించవచ్చు. + +ఈ మోసం ప్రూఫ్‌లు పనిచేసే విధానం ఏమిటంటే, ఒక పూర్తి నోడ్, నెట్వర్క్‌లో ఒక చెల్లని స్థితి పరివర్తన గురించి ప్రచారం జరగడం చూసి, ప్రతిపాదిత స్థితి పరివర్తన ఇచ్చిన లావాదేవీల సమితి నుండి సాధ్యం కాదని ప్రదర్శించే ఒక చిన్న డేటాను త్వరగా ఉత్పత్తి చేసి, ఆ డేటాను తోటివారికి ప్రసారం చేయగలదు. లైట్ నోడ్స్ ఆ మోసం-ప్రూఫ్‌లను ఎంచుకుని, చెడ్డ బ్లాక్ హెడర్‌లను విస్మరించడానికి వాటిని ఉపయోగించవచ్చు, తద్వారా అవి పూర్తి నోడ్స్ వలె అదే నిజాయితీ గల గొలుసుపై ఉంటాయి. + +ఇది పూర్తి నోడ్స్ పూర్తి లావాదేవీ డేటాకు ప్రాప్యత కలిగి ఉండటంపై ఆధారపడి ఉంటుంది. చెడ్డ బ్లాక్ హెడర్‌ను ప్రసారం చేసి, లావాదేవీ డేటాను అందుబాటులో ఉంచడంలో విఫలమైన దాడిచేసేవాడు పూర్తి నోడ్స్ మోసం ప్రూఫ్‌లను ఉత్పత్తి చేయకుండా నిరోధించగలడు. పూర్తి నోడ్స్ చెడ్డ బ్లాక్ గురించి హెచ్చరికను సూచించగలవు, కానీ వారు తమ హెచ్చరికను రుజువుతో సమర్ధించలేకపోయారు, ఎందుకంటే రుజువును ఉత్పత్తి చేయడానికి డేటా అందుబాటులో ఉంచబడలేదు! + +ఈ డేటా లభ్యత సమస్యకు పరిష్కారం DAS. లైట్ నోడ్స్ పూర్తి స్థితి డేటా యొక్క చాలా చిన్న యాదృచ్ఛిక భాగాలను డౌన్‌లోడ్ చేస్తాయి మరియు పూర్తి డేటా సెట్ అందుబాటులో ఉందని ధృవీకరించడానికి నమూనాలను ఉపయోగిస్తాయి. N యాదృచ్ఛిక భాగాలను డౌన్‌లోడ్ చేసిన తర్వాత పూర్తి డేటా లభ్యతను తప్పుగా భావించే అసలు సంభావ్యతను లెక్కించవచ్చు ([100 భాగాలకు అవకాశం 10^-30](https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html), అంటే, నమ్మశక్యంకాని విధంగా అసంభవం). + +ఈ సందర్భంలో కూడా, కొన్ని బైట్ల డేటాను నిలిపివేసే దాడులు యాదృచ్ఛిక డేటా అభ్యర్థనలు చేసే ఖాతాదారులచే గమనింపబడకుండా పోయే అవకాశం ఉంది. ఎరేజర్ కోడింగ్ ప్రతిపాదిత స్థితి మార్పులను తనిఖీ చేయడానికి ఉపయోగపడే డేటా యొక్క చిన్న తప్పిపోయిన భాగాలను పునర్నిర్మించడం ద్వారా దీనిని పరిష్కరిస్తుంది. పునర్నిర్మించిన డేటాను ఉపయోగించి ఒక మోసం ప్రూఫ్‌ను నిర్మించవచ్చు, ఇది లైట్ నోడ్స్ చెడ్డ హెడర్‌లను అంగీకరించకుండా నిరోధిస్తుంది. + +**గమనిక:** ప్రూఫ్-ఆఫ్-స్టేక్ ఇతీరియము లైట్ ఖాతాదారుల కోసం DAS మరియు మోసం ప్రూఫ్‌లు ఇంకా అమలు చేయబడలేదు, కానీ అవి రోడ్‌మ్యాప్‌లో ఉన్నాయి, ఎక్కువగా ZK-SNARK ఆధారిత ప్రూఫ్‌ల రూపంలో ఉంటాయి. నేటి లైట్ ఖాతాదారులు DAC యొక్క ఒక రూపంపై ఆధారపడతారు: వారు సింక్-కమిటీ యొక్క గుర్తింపులను ధృవీకరించి, ఆ తర్వాత వారు స్వీకరించే సంతకం చేసిన బ్లాక్ హెడర్‌లను విశ్వసిస్తారు. + +## డేటా లభ్యత మరియు లేయర్ 2 రోల్అప్‌లు {#data-availability-and-layer-2-rollups} + +[లేయర్ 2 స్కేలింగ్ పరిష్కారాలు](/layer-2/), ఉదాహరణకు [రోల్అప్‌లు](/glossary/#rollups), లావాదేవీల ఖర్చులను తగ్గించి, ఆఫ్‌చైన్‌లో లావాదేవీలను ప్రాసెస్ చేయడం ద్వారా ఇతీరియము యొక్క త్రూపుట్‌ను పెంచుతాయి. రోల్అప్ లావాదేవీలు కంప్రెస్ చేయబడి, ఇతీరియముపై బ్యాచ్‌లలో పోస్ట్ చేయబడతాయి. బ్యాచ్‌లు ఇతీరియముపై ఒకే లావాదేవీలో వేలాది వ్యక్తిగత ఆఫ్‌చైన్ లావాదేవీలను సూచిస్తాయి. ఇది బేస్ లేయర్‌పై రద్దీని తగ్గిస్తుంది మరియు వినియోగదారులకు ఫీజులను తగ్గిస్తుంది. + +అయితే, ప్రతిపాదిత స్థితి మార్పును స్వతంత్రంగా ధృవీకరించి, అన్ని వ్యక్తిగత ఆఫ్‌చైన్ లావాదేవీలను వర్తింపజేయడం యొక్క ఫలితంగా నిర్ధారించగలిగితేనే ఇతీరియముకు పోస్ట్ చేయబడిన 'సంగ్రహ' లావాదేవీలను విశ్వసించడం సాధ్యమవుతుంది. ఒకవేళ రోల్అప్ ఆపరేటర్లు ఈ ధృవీకరణ కోసం లావాదేవీ డేటాను అందుబాటులో ఉంచకపోతే, వారు ఇతీరియముకు తప్పు డేటాను పంపవచ్చు. + +[ఆశావాద రోల్అప్‌లు](/developers/docs/scaling/optimistic-rollups/) కంప్రెస్ చేయబడిన లావాదేవీ డేటాను ఇతీరియముకు పోస్ట్ చేసి, స్వతంత్ర ధృవీకర్తలు డేటాను తనిఖీ చేయడానికి కొంత సమయం (సాధారణంగా 7 రోజులు) వేచి ఉంటాయి. ఎవరైనా ఒక సమస్యను గుర్తించినట్లయితే, వారు ఒక మోసం-ప్రూఫ్‌ను ఉత్పత్తి చేసి, దానిని ఉపయోగించి రోల్అప్‌ను సవాలు చేయవచ్చు. ఇది గొలుసును వెనక్కి తిప్పడానికి మరియు చెల్లని బ్లాక్‌ను వదిలివేయడానికి కారణమవుతుంది. డేటా అందుబాటులో ఉంటేనే ఇది సాధ్యమవుతుంది. ప్రస్తుతం, ఆశావాద రోల్అప్‌లు లావాదేవీ డేటాను L1కి పోస్ట్ చేయడానికి రెండు మార్గాలు ఉన్నాయి. కొన్ని రోల్అప్‌లు `CALLDATA`గా డేటాను శాశ్వతంగా అందుబాటులో ఉంచుతాయి, ఇది శాశ్వతంగా ఆన్‌చైన్‌లో ఉంటుంది. EIP-4844 అమలుతో, కొన్ని రోల్అప్‌లు తమ లావాదేవీ డేటాను చౌకైన బ్లాబ్ నిల్వకు బదులుగా పోస్ట్ చేస్తాయి. ఇది శాశ్వత నిల్వ కాదు. ఇతీరియము లేయర్-1 నుండి డేటా తొలగించబడటానికి ముందు స్వతంత్ర ధృవీకర్తలు ~18 రోజుల్లోపు బ్లాబ్స్‌ను ప్రశ్నించి తమ సవాళ్లను లేవనెత్తాలి. ఆ చిన్న స్థిర విండో కోసం మాత్రమే ఇతీరియము ప్రోటోకాల్ ద్వారా డేటా లభ్యత హామీ ఇవ్వబడుతుంది. ఆ తర్వాత, ఇది ఇతీరియము పర్యావరణ వ్యవస్థలోని ఇతర సంస్థల బాధ్యత అవుతుంది. ఏదైనా నోడ్ DAS ఉపయోగించి డేటా లభ్యతను ధృవీకరించవచ్చు, అంటే, బ్లాబ్ డేటా యొక్క చిన్న, యాదృచ్ఛిక నమూనాలను డౌన్‌లోడ్ చేయడం ద్వారా. + +[జీరో-కనౌలెడ్జి (ZK) రోల్అప్‌లు](/developers/docs/scaling/zk-rollups) లావాదేవీ డేటాను పోస్ట్ చేయాల్సిన అవసరం లేదు ఎందుకంటే [జీరో-కనౌలెడ్జి చెల్లుబాటు ప్రూఫ్‌లు](/glossary/#zk-proof) స్థితి పరివర్తనల యొక్క ఖచ్చితత్వాన్ని హామీ ఇస్తాయి. అయినప్పటికీ, డేటా లభ్యత ఇప్పటికీ ఒక సమస్య ఎందుకంటే మనం దాని స్థితి డేటాకు ప్రాప్యత లేకుండా ZK-రోల్అప్ యొక్క కార్యాచరణను (లేదా దానితో పరస్పర చర్య చేయడం) హామీ ఇవ్వలేము. ఉదాహరణకు, ఒక ఆపరేటర్ రోల్అప్ యొక్క స్థితి గురించిన వివరాలను నిలిపివేస్తే వినియోగదారులు తమ నిల్వలను తెలుసుకోలేరు. అలాగే, కొత్తగా జోడించిన బ్లాక్‌లో ఉన్న సమాచారాన్ని ఉపయోగించి వారు స్థితి నవీకరణలను చేయలేరు. + +## డేటా లభ్యత వర్సెస్ డేటా పునరుద్ధరణ {#data-availability-vs-data-retrievability} + +డేటా లభ్యత డేటా పునరుద్ధరణ నుండి విభిన్నమైనది. డేటా లభ్యత అనేది పూర్తి నోడ్స్ ఒక నిర్దిష్ట బ్లాక్‌తో అనుబంధించబడిన పూర్తి లావాదేవీల సమితిని యాక్సెస్ చేసి, ధృవీకరించగలిగాయని ఇచ్చే హామీ. డేటా ఎప్పటికీ అందుబాటులో ఉంటుందని దీని అర్థం కాదు. + +డేటా పునరుద్ధరణ అనేది బ్లాక్ చైను నుండి _చారిత్రక సమాచారాన్ని_ తిరిగి పొందగల నోడ్స్ యొక్క సామర్థ్యం. ఈ చారిత్రక డేటా కొత్త బ్లాక్‌లను ధృవీకరించడానికి అవసరం లేదు, ఇది కేవలం జెనిసిస్ బ్లాక్ నుండి పూర్తి నోడ్స్‌ను సింక్ చేయడానికి లేదా నిర్దిష్ట చారిత్రక అభ్యర్థనలను అందించడానికి మాత్రమే అవసరం. + +కోర్ ఇతీరియము ప్రోటోకాల్ ప్రధానంగా డేటా లభ్యతతో సంబంధం కలిగి ఉంటుంది, డేటా పునరుద్ధరణతో కాదు. డేటా పునరుద్ధరణను మూడవ పార్టీలచే నిర్వహించబడే ఆర్కైవ్ నోడ్స్ యొక్క చిన్న జనాభా ద్వారా అందించవచ్చు, లేదా [పోర్టల్ నెట్వర్క్](https://www.ethportal.net/) వంటి వికేంద్రీకృత ఫైల్ నిల్వను ఉపయోగించి నెట్వర్క్‌లో పంపిణీ చేయవచ్చు. + +## మరింత సమాచారం {#further-reading} + +- [డేటా లభ్యత అంటే ఏమిటి?](https://medium.com/blockchain-capital-blog/wtf-is-data-availability-80c2c95ded0f) +- [డేటా లభ్యత అంటే ఏమిటి?](https://coinmarketcap.com/academy/article/what-is-data-availability) +- [డేటా లభ్యత తనిఖీలపై ఒక ప్రైమర్](https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html) +- [షార్డింగ్ + DAS ప్రతిపాదన యొక్క వివరణ](https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling) +- [డేటా లభ్యత మరియు ఎరేజర్ కోడింగ్‌పై ఒక గమనిక](https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding#can-an-attacker-not-circumvent-this-scheme-by-releasing-a-full-unavailable-block-but-then-only-releasing-individual-bits-of-data-as-clients-query-for-them) +- [డేటా లభ్యత కమిటీలు.](https://medium.com/starkware/data-availability-e5564c416424) +- [ప్రూఫ్-ఆఫ్-స్టేక్ డేటా లభ్యత కమిటీలు.](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf) +- [డేటా పునరుద్ధరణ సమస్యకు పరిష్కారాలు](https://notes.ethereum.org/@vbuterin/data_sharding_roadmap#Who-would-store-historical-data-under-sharding) +- [డేటా లభ్యత లేదా: రోల్అప్‌లు ఆందోళనను ఆపి ఇతీరియమును ఎలా ప్రేమించాలో నేర్చుకున్నాయి](https://web.archive.org/web/20250515194659/https://web.archive.org/web/20241108192208/https://research.2077.xyz/data-availability-or-how-rollups-learned-to-stop-worrying-and-love-ethereum) +- [EIP-7623: కాల్‌డేటా ఖర్చును పెంచడం](https://web.archive.org/web/20250515194659/https://research.2077.xyz/eip-7623-increase-calldata-cost) diff --git a/public/content/translations/te/developers/docs/data-structures-and-encoding/index.md b/public/content/translations/te/developers/docs/data-structures-and-encoding/index.md new file mode 100644 index 00000000000..b262b70695e --- /dev/null +++ b/public/content/translations/te/developers/docs/data-structures-and-encoding/index.md @@ -0,0 +1,32 @@ +--- +title: "డేటా స్ట్రక్చర్స్ మరియు ఎన్‌కోడింగ్" +description: "ప్రాథమిక ఇతీరియము డేటా స్ట్రక్చర్ల యొక్క అవలోకనం." +lang: te +sidebarDepth: 2 +--- + +ఇతీరియము భారీ పరిమాణంలో డేటాను సృష్టిస్తుంది, నిల్వ చేస్తుంది మరియు బదిలీ చేస్తుంది. ఎవరైనా సాపేక్షంగా సాధారణ వినియోగదారు-స్థాయి హార్డ్‌వేర్‌పై [ఒక నోడ్‌ను రన్ చేయడానికి](/run-a-node/) అనుమతించేందుకు, ఈ డేటాను ప్రామాణికమైన మరియు మెమరీ-సమర్థవంతమైన మార్గాలలో ఫార్మాట్ చేయాలి. దీనిని సాధించడానికి, ఇతీరియము స్టాక్‌పై అనేక నిర్దిష్ట డేటా స్ట్రక్చర్‌లు ఉపయోగించబడతాయి. + +## అవసరాలు {#prerequisites} + +మీరు ఇతీరియము యొక్క ప్రాథమికాలను మరియు [క్లయింట్ సాఫ్ట్‌వేర్](/developers/docs/nodes-and-clients/)ను అర్థం చేసుకోవాలి. నెట్‌వర్కింగ్ లేయర్ మరియు [ఇతీరియము వైట్‌పేపర్](/whitepaper/)తో పరిచయం ఉండటం సిఫార్సు చేయబడింది. + +## డేటా స్ట్రక్చర్‌లు {#data-structures} + +### ప్యాట్రిషియా మెర్కిల్ ట్రైస్ {#patricia-merkle-tries} + +ప్యాట్రిషియా మెర్కిల్ ట్రైస్ అనేవి కీ-విలువ జతలను ఒక డిటర్మినిస్టిక్ మరియు క్రిప్టోగ్రాఫికల్‌గా ప్రామాణీకరించబడిన ట్రైలోకి ఎన్‌కోడ్ చేసే స్ట్రక్చర్‌లు. ఇవి ఇతీరియము యొక్క ఎగ్జిక్యూషన్ లేయర్‌లో విస్తృతంగా ఉపయోగించబడతాయి. + +[ప్యాట్రిషియా మెర్కిల్ ట్రైస్ గురించి మరింత](/developers/docs/data-structures-and-encoding/patricia-merkle-trie) + +### రికర్శివ్ లెంత్ ప్రిఫిక్స్ {#recursive-length-prefix} + +రికర్శివ్ లెంత్ ప్రిఫిక్స్ (RLP) అనేది ఇతీరియము యొక్క ఎగ్జిక్యూషన్ లేయర్‌లో విస్తృతంగా ఉపయోగించబడే ఒక సీరియలైజేషన్ పద్ధతి. + +[RLP గురించి మరింత](/developers/docs/data-structures-and-encoding/rlp) + +### సింపుల్ సీరియలైజ్ {#simple-serialize} + +సింపుల్ సీరియలైజ్ (SSZ) అనేది మెర్కెలైజేషన్‌తో దాని అనుకూలత కారణంగా ఇతీరియము యొక్క ఏకాభిప్రాయం లేయర్‌లో ప్రధాన సీరియలైజేషన్ ఫార్మాట్. + +[SSZ గురించి మరింత](/developers/docs/data-structures-and-encoding/ssz) diff --git a/public/content/translations/te/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md b/public/content/translations/te/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md new file mode 100644 index 00000000000..f3d91d01f9b --- /dev/null +++ b/public/content/translations/te/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md @@ -0,0 +1,266 @@ +--- +title: "మెర్కిల్ ప్యాట్రిసియా ట్రై" +description: "మెర్కిల్ ప్యాట్రిసియా ట్రైకి పరిచయం." +lang: te +sidebarDepth: 2 +--- + +Ethereum స్థితి (అన్ని ఖాతాలు, బ్యాలెన్స్‌లు మరియు స్మార్ట్ కాంట్రాక్ట్‌ల మొత్తం), సాధారణంగా కంప్యూటర్ సైన్స్‌లో మెర్కిల్ ట్రీగా పిలువబడే డేటా స్ట్రక్చర్ యొక్క ప్రత్యేక వెర్షన్‌గా ఎన్‌కోడ్ చేయబడింది. ఈ నిర్మాణం క్రిప్టోగ్రఫీలోని అనేక అనువర్తనాలకు ఉపయోగపడుతుంది, ఎందుకంటే ఇది ట్రీలో చిక్కుకున్న అన్ని వ్యక్తిగత డేటా భాగాల మధ్య ధృవీకరించదగిన సంబంధాన్ని సృష్టిస్తుంది, దీని ఫలితంగా డేటాకు సంబంధించిన విషయాలను నిరూపించడానికి ఒకే **రూట్** విలువ ఉపయోగించబడుతుంది. + +Ethereum యొక్క డేటా నిర్మాణం ఒక 'మాడిఫైడ్ మెర్కిల్-ప్యాట్రిసియా ట్రై'. దీనికి ఆ పేరు వచ్చింది ఎందుకంటే ఇది PATRICIA (ప్రాక్టికల్ అల్గారిథం టు రిట్రైవ్ ఇన్ఫర్మేషన్ కోడెడ్ ఇన్ ఆల్ఫాన్యూమరిక్) నుండి కొన్ని ఫీచర్లను తీసుకుంటుంది మరియు ఇది Ethereum స్టేట్‌ను కలిగి ఉన్న ఐటెమ్‌ల యొక్క సమర్థవంతమైన డేటా రీ**ట్రై**వల్ కోసం రూపొందించబడింది. + +ఒక మెర్కిల్-ప్యాట్రిసియా ట్రై డిటర్మినిస్టిక్ మరియు క్రిప్టోగ్రాఫికల్‌గా వెరిఫై చేయదగినది: స్థితి యొక్క ప్రతి వ్యక్తిగత భాగం నుండి గణించడం ద్వారా మాత్రమే స్టేట్ రూట్‌ను జనరేట్ చేయగలము, మరియు ఒకేలా ఉండే రెండు స్థితులను, రూట్ హ్యాష్ మరియు దానికి దారితీసిన హ్యాష్‌లను పోల్చడం ద్వారా సులభంగా నిరూపించవచ్చు (_ఒక మెర్కిల్ ప్రూఫ్_). దీనికి విరుద్ధంగా, ఒకే రూట్ హాష్‌తో రెండు వేర్వేరు స్థితులను సృష్టించడానికి మార్గం లేదు మరియు విభిన్న విలువలతో స్థితిని సవరించే ఏ ప్రయత్నమైనా వేరే స్టేట్ రూట్ హాష్‌కి దారి తీస్తుంది. సిద్ధాంతపరంగా, ఈ నిర్మాణం ఇన్‌సర్ట్‌లు, లుకప్‌లు మరియు డిలీట్‌ల కోసం `O(log(n))` సామర్థ్యానికి 'హోలీ గ్రెయిల్' అందిస్తుంది. + +సమీప భవిష్యత్తులో, Ethereum ఒక [Verkle Tree](/roadmap/verkle-trees) నిర్మాణానికి మైగ్రేట్ అవ్వాలని యోచిస్తోంది, ఇది భవిష్యత్తు ప్రోటోకాల్ మెరుగుదలల కోసం అనేక కొత్త అవకాశాలను తెరుస్తుంది. + +## అవసరాలు {#prerequisites} + +ఈ పేజీని బాగా అర్థం చేసుకోవడానికి, [హ్యాష్‌లు](https://en.wikipedia.org/wiki/Hash_function), [మెర్కిల్ ట్రీలు](https://en.wikipedia.org/wiki/Merkle_tree), [ట్రైలు](https://en.wikipedia.org/wiki/Trie) మరియు [సీరియలైజేషన్](https://en.wikipedia.org/wiki/Serialization) గురించి ప్రాథమిక జ్ఞానం కలిగి ఉండటం సహాయపడుతుంది. ఈ వ్యాసం ప్రాథమిక [రాడిక్స్ ట్రీ](https://en.wikipedia.org/wiki/Radix_tree) వివరణతో మొదలవుతుంది, ఆపై Ethereum యొక్క మరింత ఆప్టిమైజ్ చేయబడిన డేటా నిర్మాణం కోసం అవసరమైన మార్పులను క్రమంగా పరిచయం చేస్తుంది. + +## ప్రాథమిక రాడిక్స్ ట్రైలు {#basic-radix-tries} + +ప్రాథమిక రాడిక్స్ ట్రైలో, ప్రతి నోడ్ క్రింది విధంగా కనిపిస్తుంది: + +``` + [i_0, i_1 ... i_n, value] +``` + +ఇక్కడ `i_0 ...` `i_n` వర్ణమాల యొక్క చిహ్నాలను సూచిస్తాయి (తరచుగా బైనరీ లేదా హెక్స్), `value` అనేది నోడ్ వద్ద టెర్మినల్ విలువ, మరియు `i_0, i_1 ...` లోని విలువలు `i_n` స్లాట్‌లు `NULL` లేదా ఇతర నోడ్‌లకు పాయింటర్‌లు (మా విషయంలో, హ్యాష్‌లు). ఇది ఒక ప్రాథమిక `(key, value)` స్టోర్‌ను ఏర్పరుస్తుంది. + +కీ విలువ జతల సెట్‌పై ఆర్డర్‌ను కొనసాగించడం కోసం మీరు రాడిక్స్ ట్రీ డేటా స్ట్రక్చర్‌ని ఉపయోగించాలనుకుంటున్నారని చెప్పండి. ట్రైలో `dog` కీకి ప్రస్తుతం మ్యాప్ చేయబడిన విలువను కనుగొనడానికి, మీరు మొదట `dog`ను వర్ణమాలలోని అక్షరాలుగా మార్చాలి (ఇది `64 6f 67` ఇస్తుంది), ఆపై మీరు విలువను కనుగొనే వరకు ఆ మార్గాన్ని అనుసరించి ట్రైలో క్రిందికి వెళ్ళాలి. అంటే, మీరు ట్రై యొక్క రూట్ నోడ్‌ను కనుగొనడానికి ఫ్లాట్ కీ/విలువ DBలో రూట్ హాష్‌ని చూడటం ద్వారా ప్రారంభించండి. ఇది ఇతర నోడ్‌లను సూచించే కీల శ్రేణిగా సూచించబడుతుంది. మీరు ఇండెక్స్ 6 వద్ద ఉన్న విలువను కీగా ఉపయోగించి, ఒక లెవెల్ కింద ఉన్న నోడ్‌ను పొందడానికి ఫ్లాట్ కీ/విలువ DBలో దాన్ని వెతకాలి. ఆ తర్వాత తదుపరి విలువను చూడటానికి ఇండెక్స్ `4` ను ఎంచుకోండి, ఆపై ఇండెక్స్ `6`ను ఎంచుకోండి, అలా మీరు `root -> 6 -> 4 -> 6 -> 15 -> 6 -> 7` మార్గాన్ని అనుసరించిన తర్వాత, మీరు నోడ్ యొక్క విలువను చూసి ఫలితాన్ని తిరిగి ఇస్తారు. + +'ట్రై' మరియు అంతర్లీన ఫ్లాట్ కీ/విలువ 'DB'లో ఏదైనా చూడటం మధ్య వ్యత్యాసం ఉంది. అవి రెండూ కీ/విలువ ఏర్పాట్లను నిర్వచించాయి, అయితే అంతర్లీనంగా ఉన్న DB కీ యొక్క సాంప్రదాయ 1 స్టెప్ లుకప్ చేయగలదు. ట్రైలో కీని వెతకడానికి పైన వివరించిన తుది విలువను పొందడానికి బహుళ అంతర్లీన DB శోధనలు అవసరం. అస్పష్టతను తొలగించడానికి, రెండవదాన్ని ఒక `path`గా సూచిద్దాం. + +రాడిక్స్ ప్రయత్నాల కోసం నవీకరణ మరియు తొలగింపు కార్యకలాపాలను ఈ క్రింది విధంగా నిర్వచించవచ్చు: + +```python + def update(node_hash, path, value): + curnode = db.get(node_hash) if node_hash else [NULL] * 17 + newnode = curnode.copy() + if path == "": + newnode[-1] = value + else: + newindex = update(curnode[path[0]], path[1:], value) + newnode[path[0]] = newindex + db.put(hash(newnode), newnode) + return hash(newnode) + + def delete(node_hash, path): + if node_hash is NULL: + return NULL + else: + curnode = db.get(node_hash) + newnode = curnode.copy() + if path == "": + newnode[-1] = NULL + else: + newindex = delete(curnode[path[0]], path[1:]) + newnode[path[0]] = newindex + + if all(x is NULL for x in newnode): + return NULL + else: + db.put(hash(newnode), newnode) + return hash(newnode) +``` + +నిర్ణయాత్మకంగా రూపొందించిన క్రిప్టోగ్రాఫిక్ హాష్ డైజెస్ట్‌లను ఉపయోగించి నోడ్‌లను లింక్ చేయడం ద్వారా "మెర్కిల్" రాడిక్స్ ట్రీ నిర్మించబడింది. ఈ కంటెంట్-అడ్రెస్సింగ్ (కీ/విలువ DBలో `key == keccak256(rlp(value))`) నిల్వ చేయబడిన డేటా యొక్క క్రిప్టోగ్రాఫిక్ సమగ్రత హామీని అందిస్తుంది. ఇచ్చిన ట్రై యొక్క రూట్ హాష్ పబ్లిక్‌గా తెలిసినట్లయితే, అంతర్లీన లీఫ్ డేటాకు యాక్సెస్ ఉన్న ఎవరైనా చెట్టుకు నిర్దిష్ట విలువను చేరే ప్రతి నోడ్ యొక్క హ్యాష్‌లను అందించడం ద్వారా నిర్దిష్ట మార్గంలో ఇచ్చిన విలువను ట్రైలో కలిగి ఉంటుందని రుజువును నిర్మించవచ్చు. రూట్. + +ఒక అటాకర్ ఉనికిలో లేని `(path, value)` జతకు ప్రూఫ్ అందించడం అసాధ్యం, ఎందుకంటే రూట్ హ్యాష్ అంతిమంగా దాని కింద ఉన్న అన్ని హ్యాష్‌ల మీద ఆధారపడి ఉంటుంది. ఏదైనా అంతర్లీన సవరణ రూట్ హాష్‌ను మారుస్తుంది. హ్యాషింగ్ ఫంక్షన్ యొక్క ప్రీ-ఇమేజ్ ప్రొటెక్షన్ ద్వారా భద్రపరచబడిన డేటా గురించిన నిర్మాణాత్మక సమాచారం యొక్క సంపీడన ప్రాతినిధ్యంగా మీరు హాష్‌ని భావించవచ్చు. + +మేము రాడిక్స్ ట్రీ యొక్క పరమాణు యూనిట్‌ను (ఉదా. ఒకే హెక్స్ అక్షరం లేదా 4 బిట్ బైనరీ సంఖ్య) "నిబుల్"గా సూచిస్తాము. పైన వివరించిన విధంగా, ఒకేసారి ఒక నిబుల్ చొప్పున మార్గాన్ని ట్రావర్స్ చేస్తున్నప్పుడు, నోడ్‌లు గరిష్టంగా 16 చైల్డ్‌లను సూచించగలవు కానీ ఒక `value` ఎలిమెంట్‌ను కూడా కలిగి ఉంటాయి. అందువల్ల, మేము వాటిని పొడవు 17 యొక్క శ్రేణిగా సూచిస్తాము. మేము ఈ 17-మూలకాల శ్రేణులను "బ్రాంచ్ నోడ్స్" అని పిలుస్తాము. + +## మెర్కిల్ ప్యాట్రిసియా ట్రై {#merkle-patricia-trees} + +రాడిక్స్ ప్రయత్నాలకు ఒక ప్రధాన పరిమితి ఉంది: అవి అసమర్థమైనవి. మీరు ఒక `(path, value)` బైండింగ్‌ను నిల్వ చేయాలనుకుంటే, ఇక్కడ Ethereumలో వలె పాత్ 64 అక్షరాల పొడవు ఉంటుంది (ఇది `bytes32`లోని నిబుల్స్ సంఖ్య), ప్రతి అక్షరానికి ఒక లెవెల్ నిల్వ చేయడానికి మనకు ఒక కిలోబైట్ కంటే ఎక్కువ అదనపు స్థలం అవసరం అవుతుంది, మరియు ప్రతి లుకప్ లేదా డిలీట్ పూర్తి 64 స్టెప్స్ తీసుకుంటుంది. కింది వాటిలో ప్రవేశపెట్టిన ప్యాట్రిసియా ట్రై ఈ సమస్యను పరిష్కరిస్తుంది. + +### ఆప్టిమైజేషన్ {#optimization} + +మెర్కిల్ ప్యాట్రిసియా ట్రైలో నోడ్ క్రింది వాటిలో ఒకటి: + +1. `NULL` (ఖాళీ స్ట్రింగ్‌గా సూచించబడుతుంది) +2. `branch` ఒక 17-ఐటెమ్ నోడ్ `[ v0 ...` `v15, vt ]` +3. `leaf` ఒక 2-ఐటెమ్ నోడ్ `[ encodedPath, value ]` +4. `extension` ఒక 2-ఐటెమ్ నోడ్ `[ encodedPath, key ]` + +64 క్యారెక్టర్ పాత్‌లతో, ట్రై యొక్క మొదటి కొన్ని లేయర్‌లను దాటిన తర్వాత, మీరు ఒక నోడ్‌కు చేరుకోవడం అనివార్యం. పాత్ వెంబడి 15 వరకు స్పార్స్ `NULL` నోడ్‌లను సృష్టించడాన్ని నివారించడానికి, మేము `[ encodedPath, key ]` రూపంలో ఒక `extension` నోడ్‌ను సెటప్ చేయడం ద్వారా డిసెంట్‌ను షార్ట్‌కట్ చేస్తాము, ఇక్కడ `encodedPath` అనేది ముందుకు వెళ్లడానికి "పార్షియల్ పాత్"ను (క్రింద వివరించిన కాంపాక్ట్ ఎన్‌కోడింగ్ ఉపయోగించి) కలిగి ఉంటుంది మరియు `key` అనేది తదుపరి DB లుకప్ కోసం. + +ఒక `leaf` నోడ్ కోసం, దీనిని `encodedPath` యొక్క మొదటి నిబుల్‌లో ఒక ఫ్లాగ్ ద్వారా గుర్తించవచ్చు, ఈ పాత్ మునుపటి నోడ్ యొక్క అన్ని పాత్ ఫ్రాగ్మెంట్‌లను ఎన్‌కోడ్ చేస్తుంది మరియు మనం `value`ను నేరుగా చూడవచ్చు. + +ఈ ఎగువ ఆప్టిమైజేషన్, అయితే, అస్పష్టతను పరిచయం చేస్తుంది. + +నిబుల్స్‌లో పాత్‌లను ట్రావర్స్ చేస్తున్నప్పుడు, మనం ట్రావర్స్ చేయడానికి బేసి సంఖ్యలో నిబుల్స్‌తో ముగించవచ్చు, కానీ ఎందుకంటే మొత్తం డేటా `bytes` ఫార్మాట్‌లో నిల్వ చేయబడుతుంది. ఉదాహరణకు, నిబుల్ `1`, మరియు నిబుల్స్ `01` (రెండూ `<01>` గా నిల్వ చేయబడాలి) మధ్య తేడాను గుర్తించడం సాధ్యం కాదు. బేసి పొడవును పేర్కొనడానికి, పాక్షిక మార్గం ఫ్లాగ్‌తో ప్రిఫిక్స్ చేయబడింది. + +### స్పెసిఫికేషన్: ఐచ్ఛిక టెర్మినేటర్‌తో హెక్స్ సీక్వెన్స్ యొక్క కాంపాక్ట్ ఎన్‌కోడింగ్ {#specification} + +పైన వివరించిన విధంగా, _మిగిలిన పాక్షిక పాత్ పొడవు బేసి vs. సరి_ మరియు _లీఫ్ vs. ఎక్స్‌టెన్షన్ నోడ్_ రెండింటి ఫ్లాగింగ్, ఏదైనా 2-ఐటెమ్ నోడ్ యొక్క పాక్షిక పాత్ యొక్క మొదటి నిబుల్‌లో ఉంటుంది. అవి క్రింది ఫలితాలకు దారితీస్తాయి: + +| హెక్స్ క్యారెక్టర్ | బిట్స్ | నోడ్ రకం పాక్షికం | పాత్ పొడవు | +| ------------------ | ------ | --------------------------------------- | ---------- | +| 0 | 0000 | ఎక్స్‌టెన్షన్ | సరి | +| 1 | 0001 | ఎక్స్‌టెన్షన్ | బేసి | +| 2 | 0010 | టెర్మినేటింగ్ (లీఫ్) | సరి | +| 3 | 0011 | టెర్మినేటింగ్ (లీఫ్) | బేసి | + +సరి సంఖ్యలో మిగిలి ఉన్న పాత్ పొడవు (`0` లేదా `2`) కోసం, మరొక `0` "ప్యాడింగ్" నిబుల్ ఎల్లప్పుడూ అనుసరిస్తుంది. + +```python + def compact_encode(hexarray): + term = 1 if hexarray[-1] == 16 else 0 + if term: + hexarray = hexarray[:-1] + oddlen = len(hexarray) % 2 + flags = 2 * term + oddlen + if oddlen: + hexarray = [flags] + hexarray + else: + hexarray = [flags] + [0] + hexarray + # hexarray now has an even length whose first nibble is the flags. + o = "" + for i in range(0, len(hexarray), 2): + o += chr(16 * hexarray[i] + hexarray[i + 1]) + return o +``` + +ఉదాహరణలు: + +```python + > [1, 2, 3, 4, 5, ...] + '11 23 45' + > [0, 1, 2, 3, 4, 5, ...] + '00 01 23 45' + > [0, f, 1, c, b, 8, 10] + '20 0f 1c b8' + > [f, 1, c, b, 8, 10] + '3f 1c b8' +``` + +Merkle Patricia trieలో నోడ్‌ని పొందడానికి పొడిగించిన కోడ్ ఇక్కడ ఉంది: + +```python + def get_helper(node_hash, path): + if path == []: + return node_hash + if node_hash == "": + return "" + curnode = rlp.decode(node_hash if len(node_hash) < 32 else db.get(node_hash)) + if len(curnode) == 2: + (k2, v2) = curnode + k2 = compact_decode(k2) + if k2 == path[: len(k2)]: + return get(v2, path[len(k2) :]) + else: + return "" + elif len(curnode) == 17: + return get_helper(curnode[path[0]], path[1:]) + + def get(node_hash, path): + path2 = [] + for i in range(len(path)): + path2.push(int(ord(path[i]) / 16)) + path2.push(ord(path[i]) % 16) + path2.push(16) + return get_helper(node_hash, path2) +``` + +### ఉదాహరణ ట్రై {#example-trie} + +మనం `('do', 'verb')`, `('dog', 'puppy')`, `('doge', 'coins')`, `('horse', 'stallion')` అనే నాలుగు పాత్/విలువ జతలను కలిగిన ఒక ట్రైని కోరుకుంటున్నామని అనుకుందాం. + +మొదట, మనం పాత్‌లు మరియు విలువలు రెండింటినీ `bytes`గా మారుస్తాము. క్రింద, _పాత్‌ల_ కోసం అసలు బైట్ రిప్రజెంటేషన్‌లు `<>` ద్వారా సూచించబడతాయి, అయితే _విలువలు_ ఇప్పటికీ సులభంగా అర్థం చేసుకోవడానికి `''` తో సూచించబడిన స్ట్రింగ్‌లుగా చూపబడతాయి (వాస్తవానికి అవి కూడా `bytes`గా ఉంటాయి): + +``` + <64 6f> : 'క్రియ' + <64 6f 67> : 'కుక్కపిల్ల' + <64 6f 67 65> : 'నాణేలు' + <68 6f 72 73 65> : 'స్టాలియన్' +``` + +ఇప్పుడు, మేము అంతర్లీన DBలో క్రింది కీ/విలువ జతలతో అటువంటి ప్రయత్నాన్ని రూపొందిస్తాము: + +``` + rootHash: [ <16>, hashA ] + hashA: [ <>, <>, <>, <>, hashB, <>, <>, <>, [ <20 6f 72 73 65>, 'స్టాలియన్' ], <>, <>, <>, <>, <>, <>, <>, <> ] + hashB: [ <00 6f>, hashC ] + hashC: [ <>, <>, <>, <>, <>, <>, hashD, <>, <>, <>, <>, <>, <>, <>, <>, <>, 'క్రియ' ] + hashD: [ <17>, [ <>, <>, <>, <>, <>, <>, [ <35>, 'నాణేలు' ], <>, <>, <>, <>, <>, <>, <>, <>, <>, 'కుక్కపిల్ల' ] ] +``` + +ఒక నోడ్‌ను మరొక నోడ్‌లో రిఫర్ చేసినప్పుడు, చేర్చబడేది `keccak256(rlp.encode(node))`, ఒకవేళ `len(rlp.encode(node)) >= 32` అయితే, లేకపోతే `node` చేర్చబడుతుంది. ఇక్కడ `rlp.encode` అనేది [RLP](/developers/docs/data-structures-and-encoding/rlp) ఎన్‌కోడింగ్ ఫంక్షన్. + +గమనిక: ఒక ట్రైని అప్‌డేట్ చేస్తున్నప్పుడు, కొత్తగా సృష్టించబడిన నోడ్ పొడవు >= 32 అయితే, `(keccak256(x), x)` కీ/విలువ జతను ఒక పర్సిస్టెంట్ లుకప్ టేబుల్‌లో నిల్వ చేయాలి. అయినప్పటికీ, నోడ్ దాని కంటే తక్కువగా ఉంటే, f(x) = x ఫంక్షన్ రివర్సబుల్ అయినందున, ఏదైనా నిల్వ చేయవలసిన అవసరం లేదు. + +## Ethereum లో ట్రైలు {#tries-in-ethereum} + +Ethereum ఎగ్జిక్యూషన్ లేయర్‌లోని మెర్కిల్ ట్రై అంతా మెర్కిల్ ప్యాట్రిసియా ట్రైని ఉపయోగిస్తుంది. + +బ్లాక్ హెడర్ నుండి ఈ ప్రయత్నాలలో 3 నుండి 3 మూలాలు ఉన్నాయి. + +1. రాష్ట్ర రూట్ +2. లావాదేవీలు రూట్ +3. రసీదులు రూట్ + +### స్టేట్ ట్రై {#state-trie} + +ఒక గ్లోబల్ స్టేట్ ట్రై ఉంది మరియు క్లయింట్ బ్లాక్‌ను ప్రాసెస్ చేసిన ప్రతిసారీ ఇది నవీకరించబడుతుంది. దానిలో, ఒక `path` ఎల్లప్పుడూ: `keccak256(ethereumAddress)` మరియు ఒక `value` ఎల్లప్పుడూ: `rlp(ethereumAccount)`. మరింత స్పష్టంగా, ఒక Ethereum `account` అనేది `[nonce,balance,storageRoot,codeHash]` యొక్క 4-ఐటెమ్ అర్రే. ఈ సమయంలో, ఈ `storageRoot` అనేది మరొక ప్యాట్రిసియా ట్రై యొక్క రూట్ అని గమనించడం ముఖ్యం: + +### స్టోరేజ్ ట్రై {#storage-trie} + +స్టోరేజ్ ట్రైలోనే _అన్ని_ కాంట్రాక్ట్ డేటా ఉంటుంది. ప్రతి ఖాతాకు ప్రత్యేక నిల్వ ప్రయత్నం ఉంది. ఇచ్చిన చిరునామాలో నిర్దిష్ట నిల్వ స్థానాల వద్ద విలువలను తిరిగి పొందడానికి నిల్వ చిరునామా, నిల్వలో నిల్వ చేయబడిన డేటా యొక్క పూర్ణాంక స్థానం మరియు బ్లాక్ ID అవసరం. వీటిని JSON-RPC APIలో నిర్వచించిన `eth_getStorageAt`కు ఆర్గ్యుమెంట్స్‌గా పాస్ చేయవచ్చు, ఉదా., `0x295a70b2de5e3953354a6a8344e616ed314d7251` అడ్రస్ కోసం స్టోరేజ్ స్లాట్ 0లో డేటాను తిరిగి పొందడానికి: + +```bash +curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x0", "latest"], "id": 1}' localhost:8545 + +{"jsonrpc":"2.0","id":1,"result":"0x00000000000000000000000000000000000000000000000000000000000004d2"} + +``` + +స్టోరేజ్‌లోని ఇతర ఎలిమెంట్‌లను తిరిగి పొందడం కొంచెం ఎక్కువగా ఉంటుంది, ఎందుకంటే స్టోరేజ్ ట్రైలో పొజిషన్‌ను ముందుగా లెక్కించాలి. అడ్రస్ మరియు స్టోరేజ్ పొజిషన్ యొక్క `keccak256` హ్యాష్‌గా పొజిషన్ లెక్కించబడుతుంది, రెండూ 32 బైట్ల పొడవుకు సున్నాలతో లెఫ్ట్-ప్యాడ్ చేయబడతాయి. ఉదాహరణకు, `0x391694e7e0b0cce554cb130d723a9d27458f9298` అడ్రస్ కోసం స్టోరేజ్ స్లాట్ 1లో డేటా యొక్క పొజిషన్: + +```python +keccak256(decodeHex("000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001")) +``` + +గెత్ కన్సోల్‌లో, దీనిని ఈ క్రింది విధంగా లెక్కించవచ్చు: + +``` +> var key = "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001" +undefined +> web3.sha3(key, {"encoding": "hex"}) +"0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9" +``` + +అందువల్ల `path` అనేది `keccak256(<6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9>)`. ఇది ఇప్పుడు మునుపటిలాగా స్టోరేజ్ ట్రై నుండి డేటాను తిరిగి పొందడానికి ఉపయోగించవచ్చు: + +```bash +curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9", "latest"], "id": 1}' localhost:8545 + +{"jsonrpc":"2.0","id":1,"result":"0x000000000000000000000000000000000000000000000000000000000000162e"} +``` + +గమనిక: ఒక Ethereum అకౌంట్ కాంట్రాక్ట్ అకౌంట్ కాకపోతే, దాని `storageRoot` డిఫాల్ట్‌గా ఖాళీగా ఉంటుంది. + +### ట్రాన్సాక్షన్స్ ట్రై {#transaction-trie} + +ప్రతి బ్లాక్ కోసం ఒక ప్రత్యేక ట్రాన్సాక్షన్స్ ట్రై ఉంటుంది, ఇది మళ్లీ `(key, value)` జతలను నిల్వ చేస్తుంది. ఇక్కడ పాత్: `rlp(transactionIndex)`, ఇది ఒక విలువకు అనుగుణమైన కీని సూచిస్తుంది, ఆ విలువ దీని ద్వారా నిర్ణయించబడుతుంది: + +```python +if legacyTx: + value = rlp(tx) +else: + value = TxType | encode(tx) +``` + +దీనిపై మరింత సమాచారం [EIP 2718](https://eips.ethereum.org/EIPS/eip-2718) డాక్యుమెంటేషన్‌లో చూడవచ్చు. + +### రసీదుల ట్రై {#receipts-trie} + +ప్రతి బ్లాక్‌కి దాని స్వంత రసీదుల ప్రయత్నాలుంటాయి. ఇక్కడ `path` అనేది: `rlp(transactionIndex)`. `transactionIndex` అనేది అది చేర్చబడిన బ్లాక్‌లోని దాని ఇండెక్స్. రసీదుల ప్రయత్నం ఎప్పుడూ నవీకరించబడదు. లావాదేవీల ప్రయత్నాల మాదిరిగానే, ప్రస్తుత మరియు లెగసీ రసీదులు ఉన్నాయి. రసీదుల ట్రైలో నిర్దిష్ట రసీదుని ప్రశ్నించడానికి, దాని బ్లాక్‌లో లావాదేవీ యొక్క సూచిక, రసీదు పేలోడ్ మరియు లావాదేవీ రకం అవసరం. తిరిగి వచ్చిన రసీదు `Receipt` రకానికి చెంది ఉండవచ్చు, ఇది `TransactionType` మరియు `ReceiptPayload` యొక్క కలయికగా నిర్వచించబడింది లేదా అది `LegacyReceipt` రకానికి చెంది ఉండవచ్చు, ఇది `rlp([status, cumulativeGasUsed, logsBloom, logs])`గా నిర్వచించబడింది. + +దీనిపై మరింత సమాచారం [EIP 2718](https://eips.ethereum.org/EIPS/eip-2718) డాక్యుమెంటేషన్‌లో చూడవచ్చు. + +## మరింత చదవడానికి {#further-reading} + +- [మాడిఫైడ్ మెర్కిల్ ప్యాట్రిసియా ట్రై — Ethereum ఒక స్టేట్‌ను ఎలా సేవ్ చేస్తుంది](https://medium.com/codechain/modified-merkle-patricia-trie-how-ethereum-saves-a-state-e6d7555078dd) +- [Ethereum లో మెర్క్లింగ్](https://blog.ethereum.org/2015/11/15/merkling-in-ethereum/) +- [Ethereum ట్రైని అర్థం చేసుకోవడం](https://easythereentropy.wordpress.com/2014/06/04/understanding-the-ethereum-trie/) diff --git a/public/content/translations/te/developers/docs/data-structures-and-encoding/rlp/index.md b/public/content/translations/te/developers/docs/data-structures-and-encoding/rlp/index.md new file mode 100644 index 00000000000..323c564b1a0 --- /dev/null +++ b/public/content/translations/te/developers/docs/data-structures-and-encoding/rlp/index.md @@ -0,0 +1,163 @@ +--- +title: "రికర్సివ్-లెంగ్త్ ప్రిఫిక్స్ (RLP) సీరియలైజేషన్" +description: "Ethereum యొక్క ఎగ్జిక్యూషన్ లేయర్‌లో rlp ఎన్‌కోడింగ్ యొక్క నిర్వచనం." +lang: te +sidebarDepth: 2 +--- + +Ethereum యొక్క ఎగ్జిక్యూషన్ క్లయింట్‌లలో రికర్సివ్ లెంగ్త్ ప్రిఫిక్స్ (RLP) సీరియలైజేషన్ విస్తృతంగా ఉపయోగించబడుతుంది. RLP స్పేస్-ఎఫెక్టివ్ ఫార్మాట్‌లో నోడ్‌ల మధ్య డేటా బదిలీని ప్రామాణికం చేస్తుంది. RLP యొక్క ఉద్దేశ్యం బైనరీ డేటా యొక్క ఏకపక్ష సమూహ శ్రేణులను ఎన్కోడ్ చేయడం మరియు Ethereum యొక్క ఎగ్జిక్యూషన్ లేయర్‌లోని వస్తువులను సీరియలైజ్ చేయడానికి ఉపయోగించే ప్రాథమిక ఎన్‌కోడింగ్ పద్ధతి RLP. RLP యొక్క ముఖ్య ఉద్దేశ్యం నిర్మాణాన్ని ఎన్కోడ్ చేయడం; ధనాత్మక పూర్ణాంకాల మినహా, RLP నిర్దిష్ట డేటా రకాలను (ఉదా., స్ట్రింగ్‌లు, ఫ్లోట్‌లు) ఎన్‌కోడింగ్ చేయడాన్ని ఉన్నత-శ్రేణి ప్రోటోకాల్స్‌కు అప్పగిస్తుంది. ధనాత్మక పూర్ణాంకాలు తప్పనిసరిగా పెద్ద-ఎండియన్ బైనరీ రూపంలో ప్రముఖ సున్నాలు లేకుండా సూచించబడాలి (అందువల్ల పూర్ణాంకం విలువ సున్నాని ఖాళీ బైట్ శ్రేణికి సమానం చేస్తుంది). RLPని ఉపయోగించి ఏదైనా అధిక-ఆర్డర్ ప్రోటోకాల్ ద్వారా లీడింగ్ జీరోలతో డీసీరియలైజ్డ్ పాజిటివ్ పూర్ణాంకాలు తప్పనిసరిగా చెల్లనివిగా పరిగణించబడతాయి. + +[ఇతీరియము యెల్లో పేపర్ (అనుబంధం B)](https://ethereum.github.io/yellowpaper/paper.pdf#page=19)లో మరింత సమాచారం. + +నిఘంటువును ఎన్‌కోడ్ చేయడానికి RLPని ఉపయోగించడానికి, సూచించబడిన రెండు నియమానుగుణ రూపాలు: + +- లెక్సికోగ్రాఫిక్ క్రమంలో కీలతో `[[k1,v1],[k2,v2]...]`ని ఉపయోగించండి +- ethereum వలె ఉన్నత-స్థాయి ప్యాట్రిసియా ట్రీ ఎన్‌కోడింగ్‌ను ఉపయోగించండి + +## నిర్వచనం {#definition} + +RLP ఎన్‌కోడింగ్ ఫంక్షన్ ఒక అంశాన్ని తీసుకుంటుంది. ఒక అంశం క్రింది విధంగా నిర్వచించబడింది: + +- ఒక స్ట్రింగ్ (అంటే, బైట్ శ్రేణి) ఒక ఐటెమ్ +- వస్తువుల జాబితా ఒక అంశం +- ధన పూర్ణాంకం అనేది ఒక అంశం + +ఉదాహరణకు, కిందివన్నీ అంశాలు: + +- ఒక ఖాళీ స్ట్రింగ్; +- "పిల్లి" అనే పదాన్ని కలిగి ఉన్న స్ట్రింగ్; +- స్ట్రింగ్‌ల సంఖ్యను కలిగి ఉన్న జాబితా; +- మరియు `["పిల్లి", ["కుక్కపిల్ల", "ఆవు"], "గుర్రం", [[]], "పంది", [""], "గొర్రెలు"]` వంటి మరింత సంక్లిష్టమైన డేటా నిర్మాణాలు. +- సంఖ్య `100` + +Note that in the context of the rest of this page, 'string' means "a certain number of bytes of binary data"; no special encodings are used, and no knowledge about the content of the strings is implied (except as required by the rule against non-minimal positive integers). + +RLP ఎన్‌కోడింగ్ క్రింది విధంగా నిర్వచించబడింది: + +- ధనాత్మక పూర్ణాంకం కోసం, ఇది పూర్ణాంకం అయిన పెద్ద-ఎండియన్ ఇంటర్‌ప్రెటేషన్‌తో కూడిన చిన్న బైట్ శ్రేణికి మార్చబడుతుంది మరియు దిగువ నిబంధనల ప్రకారం స్ట్రింగ్‌గా ఎన్‌కోడ్ చేయబడుతుంది. +- ఒక బైట్ విలువ `[0x00, 0x7f]` (దశాంశ `[0, 127]`) పరిధిలో ఉంటే, ఆ బైట్ దాని స్వంత RLP ఎన్‌కోడింగ్. +- లేకపోతే, ఒక స్ట్రింగ్ 0-55 బైట్ల పొడవు ఉంటే, RLP ఎన్‌కోడింగ్ అనేది **0x80** (dec. 128) విలువతో ఒకే బైట్‌ను కలిగి ఉంటుంది, దాని తర్వాత స్ట్రింగ్ యొక్క పొడవు, ఆ తర్వాత స్ట్రింగ్ ఉంటాయి. అందువల్ల మొదటి బైట్ యొక్క పరిధి `[0x80, 0xb7]` (dec. `[128, 183]`). +- ఒకవేళ స్ట్రింగ్ 55 బైట్‌ల కంటే ఎక్కువ పొడవు ఉంటే, RLP ఎన్‌కోడింగ్ ఒకే బైట్‌ను **0xb7** (dec. 183) విలువతో కలిగి ఉంటుంది, దాని తర్వాత బైనరీ రూపంలో స్ట్రింగ్ పొడవు యొక్క బైట్‌లలో పొడవు, దాని తర్వాత స్ట్రింగ్ పొడవు, చివరకు స్ట్రింగ్ ఉంటాయి. ఉదాహరణకు, 1024 బైట్ల పొడవున్న స్ట్రింగ్ `\xb9\x04\x00` (dec. `185, 4, 0`) గా ఎన్కోడ్ చేయబడి, దాని తర్వాత స్ట్రింగ్ ఉంటుంది. ఇక్కడ, మొదటి బైట్‌గా `0xb9` (183 + 2 = 185), దాని తర్వాత వాస్తవ స్ట్రింగ్ యొక్క పొడవును సూచించే 2 బైట్లు `0x0400` (dec. 1024) ఉంటాయి. అందువల్ల మొదటి బైట్ యొక్క పరిధి `[0xb8, 0xbf]` (dec. `[184, 191]`). +- ఒక బైట్ విలువ <0>[0x00, 0x7f] (దశాంశ <0>[0, 127]) పరిధిలో ఉంటే, ఆ బైట్ దాని స్వంత RLP ఎన్‌కోడింగ్. +- ఒక జాబితా యొక్క మొత్తం పేలోడ్ (అంటే, RLP ఎన్‌కోడ్ చేయబడుతున్న దాని అన్ని ఐటెమ్‌ల యొక్క కలిపిన పొడవు) 0-55 బైట్ల పొడవు ఉంటే, RLP ఎన్‌కోడింగ్ **0xc0** విలువతో కూడిన ఒకే బైట్, దాని తర్వాత పేలోడ్ పొడవు, చివరకు ఐటెమ్‌ల RLP ఎన్‌కోడింగ్‌ల కలయిక ఉంటాయి. అందువల్ల మొదటి బైట్ యొక్క పరిధి `[0xc0, 0xf7]` (dec. `[192, 247]`). +- ఒక జాబితా యొక్క మొత్తం పేలోడ్ 55 బైట్‌ల కంటే ఎక్కువ పొడవు ఉంటే, RLP ఎన్‌కోడింగ్ ఒకే బైట్‌ను **0xf7** విలువతో కలిగి ఉంటుంది, దాని తర్వాత బైనరీ రూపంలో పేలోడ్ పొడవు యొక్క బైట్‌లలో పొడవు, దాని తర్వాత పేలోడ్ పొడవు, చివరకు ఐటెమ్‌ల RLP ఎన్‌కోడింగ్‌ల కలయిక ఉంటాయి. అందువల్ల మొదటి బైట్ యొక్క పరిధి `[0xf8, 0xff]` (dec. `[248, 255]`). + +కోడ్‌లో, ఇది: + +```python +def rlp_encode(input): + if isinstance(input,str): + if len(input) == 1 and ord(input) < 0x80: + return input + return encode_length(len(input), 0x80) + input + elif isinstance(input, list): + output = '' + for item in input: + output += rlp_encode(item) + return encode_length(len(output), 0xc0) + output + +def encode_length(L, offset): + if L < 56: + return chr(L + offset) + elif L < 256**8: + BL = to_binary(L) + return chr(len(BL) + offset + 55) + BL + raise Exception("ఇన్‌పుట్ చాలా పొడవుగా ఉంది") + +def to_binary(x): + if x == 0: + return '' + return to_binary(int(x / 256)) + chr(x % 256) +``` + +## ఉదాహరణలు {#examples} + +- స్ట్రింగ్ "కుక్క" = [0x83, 'd', 'o', 'g' ] +- జాబితా [ "పిల్లి", "కుక్క" ] = `[ 0xc8, 0x83, 'c', 'a', 't', 0x83, 'd', 'o', 'g' ]` +- ఖాళీ స్ట్రింగ్ ('null') = `[ 0x80 ]` +- ఖాళీ జాబితా = `[ 0xc0 ]` +- పూర్ణాంకం 0 = `[ 0x80 ]` +- బైట్ '\\x00' = `[ 0x00 ]` +- బైట్ '\\x0f' = `[ 0x0f ]` +- బైట్లు '\\x04\\x00' = `[ 0x82, 0x04, 0x00 ]` +- మూడింటి [సెట్ సైద్ధాంతిక ప్రాతినిధ్యం](http://en.wikipedia.org/wiki/Set-theoretic_definition_of_natural_numbers), `[ [], [[]], [ [], [[]] ] ] = [ 0xc7, 0xc0, 0xc1, 0xc0, 0xc3, 0xc0, 0xc1, 0xc0 ]` +- స్ట్రింగ్ "Lorem ipsum dolor sit amet, consectetur adipisicing elit" = `[ 0xb8, 0x38, 'L', 'o', 'r', 'e', 'm', ' ', ...` , 'e', 'l', 'i', 't' ]` + +## RLP డీకోడింగ్ {#rlp-decoding} + +RLP ఎన్‌కోడింగ్ నియమాలు మరియు ప్రక్రియ ప్రకారం, RLP డీకోడ్ ఇన్‌పుట్ బైనరీ డేటా యొక్క శ్రేణిగా పరిగణించబడుతుంది. RLP డీకోడింగ్ ప్రక్రియ క్రింది విధంగా ఉంది: + +1. ఇన్‌పుట్ డేటా యొక్క మొదటి బైట్ (అనగా ఉపసర్గ) ప్రకారం మరియు డేటా రకాన్ని డీకోడింగ్ చేయడం, వాస్తవ డేటా మరియు ఆఫ్‌సెట్ యొక్క పొడవు; + +2. డేటా రకం మరియు ఆఫ్‌సెట్ ప్రకారం, సానుకూల పూర్ణాంకాల కోసం కనీస ఎన్‌కోడింగ్ నియమాన్ని గౌరవిస్తూ, డేటాను సంబంధితంగా డీకోడ్ చేయండి; + +3. మిగిలిన ఇన్‌పుట్‌ను డీకోడ్ చేయడం కొనసాగించండి; + +వాటిలో, డీకోడింగ్ డేటా రకాలు మరియు ఆఫ్‌సెట్ యొక్క నియమాలు క్రింది విధంగా ఉన్నాయి: + +1. మొదటి బైట్ (అనగా, ఉపసర్గ) యొక్క పరిధి [0x00, 0x7f] అయితే డేటా ఒక స్ట్రింగ్ అవుతుంది, మరియు ఆ స్ట్రింగ్ ఖచ్చితంగా మొదటి బైట్ అవుతుంది; + +2. మొదటి బైట్ పరిధి [0x80, 0xb7] అయితే డేటా స్ట్రింగ్ అవుతుంది మరియు మొదటి బైట్ మైనస్ 0x80కి సమానమైన స్ట్రింగ్ మొదటి బైట్‌ను అనుసరిస్తుంది; + +3. మొదటి బైట్ పరిధి [0xb8, 0xbf] అయితే డేటా స్ట్రింగ్‌గా ఉంటుంది మరియు మొదటి బైట్‌కి సమానమైన బైట్‌ల పొడవు మైనస్ 0xb7 మొదటి బైట్‌కు సమానం మరియు స్ట్రింగ్ పొడవును అనుసరిస్తుంది తీగ; + +4. మొదటి బైట్ పరిధి [0xc0, 0xf7] అయితే డేటా జాబితాగా ఉంటుంది మరియు మొత్తం పేలోడ్ మొదటి బైట్ మైనస్ 0xc0కి సమానమైన జాబితాలోని అన్ని అంశాల RLP ఎన్‌కోడింగ్‌ల కలయిక మొదటి బైట్‌ను అనుసరిస్తుంది; + +5. మొదటి బైట్ పరిధి [0xf8, 0xff] అయితే డేటా జాబితాగా ఉంటుంది మరియు మొదటి బైట్ మైనస్ 0xf7కి సమానమైన లిస్ట్ యొక్క మొత్తం పేలోడ్ మొదటి బైట్‌ను అనుసరిస్తుంది మరియు అన్నింటి యొక్క RLP ఎన్‌కోడింగ్‌ల కలయిక జాబితా యొక్క అంశాలు జాబితా యొక్క మొత్తం పేలోడ్‌ను అనుసరిస్తాయి; + +కోడ్‌లో, ఇది: + +```python +def rlp_decode(input): + if len(input) == 0: + return + output = '' + (offset, dataLen, type) = decode_length(input) + if type is str: + output = instantiate_str(substr(input, offset, dataLen)) + elif type is list: + output = instantiate_list(substr(input, offset, dataLen)) + output += rlp_decode(substr(input, offset + dataLen)) + return output + +def decode_length(input): + length = len(input) + if length == 0: + raise Exception("ఇన్‌పుట్ శూన్యం") + prefix = ord(input[0]) + if prefix <= 0x7f: + return (0, 1, str) + elif prefix <= 0xb7 and length > prefix - 0x80: + strLen = prefix - 0x80 + return (1, strLen, str) + elif prefix <= 0xbf and length > prefix - 0xb7 and length > prefix - 0xb7 + to_integer(substr(input, 1, prefix - 0xb7)): + lenOfStrLen = prefix - 0xb7 + strLen = to_integer(substr(input, 1, lenOfStrLen)) + return (1 + lenOfStrLen, strLen, str) + elif prefix <= 0xf7 and length > prefix - 0xc0: + listLen = prefix - 0xc0; + return (1, listLen, list) + elif prefix <= 0xff and length > prefix - 0xf7 and length > prefix - 0xf7 + to_integer(substr(input, 1, prefix - 0xf7)): + lenOfListLen = prefix - 0xf7 + listLen = to_integer(substr(input, 1, lenOfListLen)) + return (1 + lenOfListLen, listLen, list) + raise Exception("ఇన్‌పుట్ RLP ఎన్‌కోడింగ్ ఫారమ్‌కు అనుగుణంగా లేదు") + +def to_integer(b): + length = len(b) + if length == 0: + raise Exception("ఇన్‌పుట్ శూన్యం") + elif length == 1: + return ord(b[0]) + return ord(substr(b, -1)) + to_integer(substr(b, 0, -1)) * 256 +``` + +## మరింత సమాచారం {#further-reading} + +- [ఇతీరియములో RLP](https://medium.com/coinmonks/data-structure-in-ethereum-episode-1-recursive-length-prefix-rlp-encoding-decoding-d1016832f919) +- [ఇతీరియము అండర్ ది హుడ్: RLP](https://medium.com/coinmonks/ethereum-under-the-hood-part-3-rlp-decoding-df236dc13e58) +- [కోగ్లియో, ఎ. (2020). ACL2లో Ethereum యొక్క పునరావృత పొడవు ఉపసర్గ. arXiv ప్రీప్రింట్ arXiv:2009.13769.](https://arxiv.org/abs/2009.13769) + +## సంబంధిత అంశాలు {#related-topics} + +- [ప్యాట్రిసియా మెర్కిల్ ట్రై](/developers/docs/data-structures-and-encoding/patricia-merkle-trie) diff --git a/public/content/translations/te/developers/docs/data-structures-and-encoding/ssz/index.md b/public/content/translations/te/developers/docs/data-structures-and-encoding/ssz/index.md new file mode 100644 index 00000000000..ef3e918d0b5 --- /dev/null +++ b/public/content/translations/te/developers/docs/data-structures-and-encoding/ssz/index.md @@ -0,0 +1,149 @@ +--- +title: "సాధారణ సీరియల్" +description: "Ethereum యొక్క SSZ ఫార్మాట్ యొక్క వివరణ." +lang: te +sidebarDepth: 2 +--- + +**సింపుల్ సీరియలైజ్ (SSZ)** అనేది బీకాన్ చైన్‌లో ఉపయోగించే సీరియలైజేషన్ పద్ధతి. ఇది పీర్ డిస్కవరీ ప్రోటోకాల్ మినహా ఏకాభిప్రాయ పొర అంతటా ఎగ్జిక్యూషన్ లేయర్‌లో ఉపయోగించిన RLP సీరియలైజేషన్‌ను భర్తీ చేస్తుంది. RLP సీరియలైజేషన్ గురించి మరింత తెలుసుకోవడానికి, [రికర్సివ్-లెంగ్త్ ప్రిఫిక్స్ (RLP)](/developers/docs/data-structures-and-encoding/rlp/) చూడండి. SSZ నిర్ణయాత్మకంగా మరియు సమర్ధవంతంగా మెర్క్‌లైజ్ చేయడానికి రూపొందించబడింది. SSZ రెండు భాగాలను కలిగి ఉన్నట్లు భావించవచ్చు: సీరియలైజేషన్ స్కీమ్ మరియు సీరియలైజ్డ్ డేటా స్ట్రక్చర్‌తో సమర్థవంతంగా పని చేయడానికి రూపొందించబడిన మెర్క్‌లైజేషన్ స్కీమ్. + +## SSZ ఎలా పని చేస్తుంది? {#how-does-ssz-work} + +### సీరియలైజేషన్ {#serialization} + +SSZ అనేది సీరియలైజేషన్ స్కీమ్, ఇది స్వీయ-వర్ణన కాదు - ఇది ముందుగా తెలుసుకోవలసిన స్కీమాపై ఆధారపడి ఉంటుంది. SSZ సీరియలైజేషన్ యొక్క లక్ష్యం ఏకపక్ష సంక్లిష్టత యొక్క వస్తువులను బైట్‌ల స్ట్రింగ్‌లుగా సూచించడం. ఇది "ప్రాథమిక రకాలు" కోసం చాలా సులభమైన ప్రక్రియ. మూలకం కేవలం హెక్సాడెసిమల్ బైట్‌లుగా మార్చబడుతుంది. ప్రాథమిక రకాలు ఉన్నాయి: + +- సంతకం చేయని పూర్ణాంకాలు +- బూలియన్లు + +సంక్లిష్టమైన "సమ్మిళిత" రకాల కోసం, సీరియలైజేషన్ మరింత క్లిష్టంగా ఉంటుంది, ఎందుకంటే మిశ్రమ రకం వివిధ రకాల లేదా విభిన్న పరిమాణాలు లేదా రెండింటినీ కలిగి ఉండే బహుళ మూలకాలను కలిగి ఉంటుంది. ఈ ఆబ్జెక్ట్‌లన్నింటికీ స్థిరమైన పొడవులు ఉన్నప్పుడు (అనగా, మూలకాల పరిమాణం వాటి వాస్తవ విలువలతో సంబంధం లేకుండా ఎల్లప్పుడూ స్థిరంగా ఉంటుంది), సీరియలైజేషన్ అనేది మిశ్రమ రకంలోని ప్రతి మూలకాన్ని లిటిల్-ఎండియన్ బైట్‌స్ట్రింగ్‌లుగా ఆర్డర్ చేసే ఒక సాధారణ మార్పిడి. ఈ బైటెస్ట్రింగ్‌లు కలిసి ఉంటాయి. సీరియలైజ్ చేయబడిన ఆబ్జెక్ట్‌లో స్థిర-పొడవు మూలకాల యొక్క బైటెలిస్ట్ ప్రాతినిధ్యాన్ని అవి డీరియలైజ్డ్ ఆబ్జెక్ట్‌లో కనిపించే క్రమంలోనే కలిగి ఉంటాయి. + +వేరియబుల్ లెంగ్త్‌లతో ఉన్న రకాల కోసం, సీరియలైజ్డ్ ఆబ్జెక్ట్‌లో ఆ ఎలిమెంట్ స్థానంలో ఉన్న "ఆఫ్‌సెట్" విలువతో వాస్తవ డేటా భర్తీ చేయబడుతుంది. అసలు డేటా సీరియలైజ్ చేయబడిన ఆబ్జెక్ట్ చివరిలో కుప్పకు జోడించబడుతుంది. ఆఫ్‌సెట్ విలువ అనేది హీప్‌లోని వాస్తవ డేటా ప్రారంభానికి సూచిక, సంబంధిత బైట్‌లకు పాయింటర్‌గా పనిచేస్తుంది. + +దిగువ ఉదాహరణ స్థిర మరియు వేరియబుల్-పొడవు అంశాలతో కూడిన కంటైనర్ కోసం ఆఫ్‌సెట్టింగ్ ఎలా పని చేస్తుందో వివరిస్తుంది: + +```Rust + + struct Dummy { + + number1: u64, + number2: u64, + vector: Vec, + number3: u64 + } + + dummy = Dummy{ + + number1: 37, + number2: 55, + vector: vec![1,2,3,4], + number3: 22, + } + + serialized = ssz.serialize(dummy) + +``` + +`సీరియలైజ్డ్` కింది నిర్మాణాన్ని కలిగి ఉంటుంది (ఇక్కడ 4 బిట్‌లకు మాత్రమే ప్యాడ్ చేయబడింది, వాస్తవానికి 32 బిట్‌లకు ప్యాడ్ చేయబడింది మరియు స్పష్టత కోసం `int` ప్రాతినిధ్యాన్ని ఉంచుతుంది): + +``` +[37, 0, 0, 0, 55, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 1, 2, 3, 4] +------------ ----------- ----------- ----------- ---------- + | | | | | + number1 number2 వెక్టర్ number 3 వెక్టర్ + ఆఫ్‌సెట్ విలువ + +``` + +స్పష్టత కోసం పంక్తుల ద్వారా విభజించబడింది: + +``` +[ + 37, 0, 0, 0, # `number1` యొక్క లిటిల్-ఎండియన్ ఎన్‌కోడింగ్. + 55, 0, 0, 0, # `number2` యొక్క లిటిల్-ఎండియన్ ఎన్‌కోడింగ్. + 16, 0, 0, 0, # `vector` యొక్క విలువ ఎక్కడ మొదలవుతుందో సూచించే "ఆఫ్‌సెట్" (లిటిల్-ఎండియన్ 16). + 22, 0, 0, 0, # `number3` యొక్క లిటిల్-ఎండియన్ ఎన్‌కోడింగ్. + 1, 2, 3, 4, # `vector` లోని వాస్తవ విలువలు. +] +``` + +ఇది ఇప్పటికీ ఒక సరళీకరణ - పైన ఉన్న స్కీమాటిక్స్‌లోని పూర్ణాంకాలు మరియు సున్నాలు వాస్తవానికి బైటెలిస్ట్‌లు ఇలా నిల్వ చేయబడతాయి: + +``` +[ + 10100101000000000000000000000000 # `number1` యొక్క లిటిల్-ఎండియన్ ఎన్‌కోడింగ్ + 10110111000000000000000000000000 # `number2` యొక్క లిటిల్-ఎండియన్ ఎన్‌కోడింగ్. + 10010000000000000000000000000000 # `vector` యొక్క విలువ ఎక్కడ మొదలవుతుందో సూచించే "ఆఫ్‌సెట్" (లిటిల్-ఎండియన్ 16). + 10010110000000000000000000000000 # `number3` యొక్క లిటిల్-ఎండియన్ ఎన్‌కోడింగ్. + 10000001100000101000001110000100 # `bytes` ఫీల్డ్ యొక్క వాస్తవ విలువ. +] +``` + +కాబట్టి వేరియబుల్-పొడవు రకాల కోసం వాస్తవ విలువలు సీరియలైజ్ చేయబడిన ఆబ్జెక్ట్ చివరిలో ఒక కుప్పలో నిల్వ చేయబడతాయి, వాటి ఆఫ్‌సెట్‌లు ఆర్డర్ చేసిన ఫీల్డ్‌ల జాబితాలో వాటి సరైన స్థానాల్లో నిల్వ చేయబడతాయి. + +నిర్దిష్ట చికిత్స అవసరమయ్యే `BitList` రకం వంటి కొన్ని ప్రత్యేక సందర్భాలు కూడా ఉన్నాయి, సీరియలైజేషన్ సమయంలో పొడవు పరిమితిని జోడించి, డీరియలైజేషన్ సమయంలో తీసివేయాలి. పూర్తి వివరాలు [SSZ స్పెక్](https://github.com/ethereum/consensus-specs/blob/dev/ssz/simple-serialize.md)లో అందుబాటులో ఉన్నాయి. + +### డీసీరియలైజేషన్ {#deserialization} + +ఈ వస్తువును డీరియలైజ్ చేయడానికి స్కీమా అవసరం. స్కీమా ధారావాహిక డేటా యొక్క ఖచ్చితమైన లేఅవుట్‌ను నిర్వచిస్తుంది, తద్వారా ప్రతి నిర్దిష్ట మూలకం సరైన రకం, విలువ, పరిమాణం మరియు స్థానం కలిగిన మూలకాలతో కొన్ని అర్ధవంతమైన వస్తువుగా బైట్‌ల బొట్టు నుండి డీరియలైజ్ చేయబడుతుంది. ఏ విలువలు వాస్తవ విలువలు మరియు ఏవి ఆఫ్‌సెట్‌లు అని డీరియలైజర్‌కు చెప్పే స్కీమా ఇది. ఆబ్జెక్ట్ సీరియలైజ్ చేయబడినప్పుడు అన్ని ఫీల్డ్ పేర్లు అదృశ్యమవుతాయి, కానీ స్కీమా ప్రకారం డీరియలైజేషన్‌లో పునరుద్ధరిస్తారు. + +దీనిపై ఇంటరాక్టివ్ వివరణ కోసం [ssz.dev](https://www.ssz.dev/overview)ని చూడండి. + +## మెర్కలైజేషన్ {#merkleization} + +ఈ SSZ సీరియలైజ్డ్ ఆబ్జెక్ట్ అప్పుడు మెర్క్‌లైజ్ చేయబడుతుంది - అదే డేటా యొక్క మెర్కిల్-ట్రీ రిప్రజెంటేషన్‌గా రూపాంతరం చెందుతుంది. మొదట, సీరియలైజ్డ్ ఆబ్జెక్ట్‌లోని 32-బైట్ భాగాల సంఖ్య నిర్ణయించబడుతుంది. ఇవి చెట్టు యొక్క "ఆకులు". మొత్తం ఆకుల సంఖ్య తప్పనిసరిగా 2 పవర్ అయి ఉండాలి, తద్వారా ఆకులను కలిపి హ్యాష్ చేయడం వల్ల చివరికి ఒకే హ్యాష్-ట్రీ-రూట్ వస్తుంది. ఇది సహజంగా కాకపోతే, 32 బైట్‌ల సున్నాలను కలిగి ఉన్న అదనపు ఆకులు జోడించబడతాయి. రేఖాచిత్రంగా: + +``` + హాష్ ట్రీ రూట్ + / \ + / \ + / \ + / \ + 1, 2 ఆకుల హాష్ 3, 4 ఆకుల హాష్ + / \ / \ + / \ / \ + / \ / \ + ఆకు1 ఆకు2 ఆకు3 ఆకు4 +``` + +చెట్టు యొక్క ఆకులు పై ఉదాహరణలో చేసిన విధంగా సహజంగా సమానంగా పంపిణీ చేయని సందర్భాలు కూడా ఉన్నాయి. ఉదాహరణకు, లీఫ్ 4 అనేది మెర్కిల్ చెట్టుకు అదనపు "లోతు" జోడించాల్సిన బహుళ మూలకాలతో కూడిన కంటైనర్ కావచ్చు, ఇది అసమాన చెట్టును సృష్టిస్తుంది. + +ఈ ట్రీ ఎలిమెంట్‌లను లీఫ్ X, నోడ్ X మొదలైనవిగా సూచించడానికి బదులుగా, మేము వాటికి రూట్ = 1తో ప్రారంభించి, ప్రతి స్థాయిలో ఎడమ నుండి కుడికి లెక్కించే సాధారణ సూచికలను ఇవ్వవచ్చు. ఇది పైన వివరించిన సాధారణ సూచిక. సీరియలైజ్ చేయబడిన జాబితాలోని ప్రతి మూలకం `2**depth + idx`కి సమానమైన సాధారణీకరించిన సూచికను కలిగి ఉంటుంది, ఇక్కడ idx అనేది సీరియలైజ్ చేయబడిన వస్తువులో దాని సున్నా-సూచిక స్థానం మరియు లోతు (depth) అనేది మెర్కిల్ ట్రీలోని స్థాయిల సంఖ్య, దీనిని మూలకాల సంఖ్య (ఆకులు) యొక్క బేస్-టూ సంవర్గమానంగా నిర్ణయించవచ్చు. + +## సాధారణీకరించిన సూచికలు {#generalized-indices} + +సాధారణీకరించిన సూచిక అనేది బైనరీ మెర్కిల్ ట్రీలోని ఒక నోడ్‌ను సూచించే పూర్ణాంకం, ఇక్కడ ప్రతి నోడ్ ఒక సాధారణీకరించిన సూచిక `2 ** depth + index in row`ను కలిగి ఉంటుంది. + +``` + 1 --లోతు (depth) = 0 2**0 + 0 = 1 + 2 3 --లోతు (depth) = 1 2**1 + 0 = 2, 2**1+1 = 3 + 4 5 6 7 --లోతు (depth) = 2 2**2 + 0 = 4, 2**2 + 1 = 5... + +``` + +ఈ ప్రాతినిధ్యం మెర్కిల్ ట్రీలోని ప్రతి డేటా భాగానికి నోడ్ సూచికను అందిస్తుంది. + +## మల్టీప్రూఫ్‌లు {#multiproofs} + +నిర్దిష్ట మూలకాన్ని సూచించే సాధారణీకరించిన సూచికల జాబితాను అందించడం వలన హాష్-ట్రీ-రూట్‌కు వ్యతిరేకంగా దాన్ని ధృవీకరించడానికి మాకు అనుమతి లభిస్తుంది. ఈ రూట్ వాస్తవికత యొక్క మా అంగీకరించబడిన సంస్కరణ. మేము అందించిన ఏదైనా డేటా మెర్కిల్ ట్రీలో (దాని సాధారణీకరించిన సూచిక ద్వారా నిర్ణయించబడుతుంది) సరైన స్థలంలోకి చొప్పించడం ద్వారా మరియు రూట్ స్థిరంగా ఉందని గమనించడం ద్వారా ఆ వాస్తవికతకు వ్యతిరేకంగా ధృవీకరించబడుతుంది. ఒక నిర్దిష్ట సాధారణీకరించిన సూచికల సెట్ యొక్క కంటెంట్‌లను ధృవీకరించడానికి అవసరమైన నోడ్‌ల కనిష్ట సెట్‌ను ఎలా గణించాలో చూపించే ఫంక్షన్‌లు [ఇక్కడ](https://github.com/ethereum/consensus-specs/blob/dev/ssz/merkle-proofs.md#merkle-multiproofs) స్పెక్ లో ఉన్నాయి. + +ఉదాహరణకు, దిగువ చెట్టులోని సూచిక 9లోని డేటాను ధృవీకరించడానికి, మాకు 8, 9, 5, 3, 1 సూచికల వద్ద డేటా యొక్క హాష్ అవసరం. +(8,9) యొక్క హాష్ హాష్ (4) కి సమానంగా ఉండాలి, ఇది 5తో 2ని ఉత్పత్తి చేయడానికి, 3తో హ్యాష్ చేస్తే ట్రీ రూట్ 1ని ఉత్పత్తి చేస్తుంది. 9 కోసం తప్పు డేటా అందించబడితే, రూట్ మారుతుంది - మేము దీన్ని గుర్తించి, బ్రాంచ్‌ని ధృవీకరించడంలో విఫలమవుతాము. + +``` +* = ప్రూఫ్ ఉత్పత్తి చేయడానికి అవసరమైన డేటా + + 1* + 2 3* + 4 5* 6 7 +8* 9* 10 11 12 13 14 15 + +``` + +## మరింత సమాచారం {#further-reading} + +- [అప్‌గ్రేడింగ్ ఇతీరియము: SSZ](https://eth2book.info/altair/part2/building_blocks/ssz) +- [అప్‌గ్రేడింగ్ ఇతీరియము: మెర్కలైజేషన్](https://eth2book.info/altair/part2/building_blocks/merkleization) +- [SSZ ఇంప్లిమెంటేషన్‌లు](https://github.com/ethereum/consensus-specs/issues/2138) +- [SSZ కాలిక్యులేటర్](https://simpleserialize.com/) +- [SSZ.dev](https://www.ssz.dev/) diff --git a/public/content/translations/te/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md b/public/content/translations/te/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md new file mode 100644 index 00000000000..57e7bb68469 --- /dev/null +++ b/public/content/translations/te/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md @@ -0,0 +1,195 @@ +--- +title: "Web3 రహస్య నిల్వ నిర్వచనం" +description: "Web3 రహస్య నిల్వ కోసం అధికారిక నిర్వచనం" +lang: te +sidebarDepth: 2 +--- + +Ethereumలో మీ యాప్ పని చేయడానికి, మీరు web3.js లైబ్రరీ అందించిన web3 ఆబ్జెక్ట్‌ని ఉపయోగించవచ్చు. హుడ్ కింద ఇది RPC కాల్‌ల ద్వారా లోకల్ నోడ్‌కి కమ్యూనికేట్ చేస్తుంది. [web3](https://github.com/ethereum/web3.js/) అనేది RPC లేయర్‌ను బహిర్గతం చేసే ఏదైనా ఎథేరియం నోడ్‌తో పని చేస్తుంది. + +`web3`లో `eth` ఆబ్జెక్ట్ ఉంటుంది - web3.eth. + +```js +var fs = require("fs") +var recognizer = require("ethereum-keyfile-recognizer") + +fs.readFile("keyfile.json", (err, data) => { + var json = JSON.parse(data) + var result = recognizer(json) +}) + +/** ఫలితం + * [ 'web3', 3 ] web3 (v3) కీఫైల్ + * [ 'ethersale', undefined ] ఈథర్‌సేల్ కీఫైల్ + * null చెల్లని కీఫైల్ + */ +``` + +ఈ పత్రంలో Web3 రహస్య నిల్వ నిర్వచనం యొక్క **వెర్షన్ 3** వివరించబడింది. + +## నిర్వచనం {#definition} + +క్రిప్టో అల్గోరిథం ఇకపై AES-128-CBC (AES-128-CTR అనేది ఇప్పుడు కనీస అవసరం) కి స్థిరంగా ఉండదు తప్ప, ఫైల్ యొక్క వాస్తవ ఎన్‌కోడింగ్ మరియు డీకోడింగ్ వెర్షన్ 1 నుండి చాలా వరకు మారదు. `mac` మినహా, చాలా అర్థాలు/అల్గారిథం వెర్షన్ 1ని పోలి ఉంటాయి. `mac` అనేది, ఉత్పన్నమైన కీ యొక్క ఎడమవైపు నుంచి రెండవ 16 బైట్‌లను పూర్తి `ciphertext`తో కలిపినప్పుడు వచ్చే కలయికకు SHA3 (keccak-256)గా ఇవ్వబడింది. + +రహస్య కీ ఫైల్‌లు నేరుగా `~/.web3/keystore` (యూనిక్స్-లాంటి సిస్టమ్‌ల కోసం) మరియు `~/AppData/Web3/keystore` (విండోస్ కోసం)లో నిల్వ చేయబడతాయి. వాటికి ఏ పేరైనా పెట్టవచ్చు, కానీ `.json` అనేది ఒక మంచి పద్ధతి, ఇక్కడ `` అనేది రహస్య కీకి ఇవ్వబడిన 128-బిట్ UUID (రహస్య కీ చిరునామా కొరకు గోప్యతను కాపాడే ఒక ప్రాక్సీ). + +అటువంటి అన్ని ఫైల్‌లు అనుబంధిత పాస్‌వర్డ్‌ను కలిగి ఉంటాయి. ఇవ్వబడిన `.json` ఫైల్ యొక్క రహస్య కీని పొందేందుకు, ముందుగా ఫైల్ యొక్క ఎన్‌క్రిప్షన్ కీని పొందాలి; `kdf` కీ ద్వారా వివరించిన విధంగా, ఫైల్ పాస్‌వర్డ్‌ను తీసుకొని దానిని కీ డెరివేషన్ ఫంక్షన్ ద్వారా పంపడం ద్వారా ఇది జరుగుతుంది. KDF ఫంక్షన్‌కు అవసరమైన KDF-ఆధారిత స్టాటిక్, డైనమిక్ పారామీటర్‌లు `kdfparams` కీలో వివరించబడ్డాయి. + +PBKDF2కి అన్ని కనిష్ట-కంప్లైంట్ ఇంప్లిమెంటేషన్‌లు తప్పక మద్దతివ్వాలి, అయితే సూచిస్తారు: + +- `kdf`: `pbkdf2` + +PBKDF2 కోసం, kdfparams ఉన్నాయి: + +- `prf`: తప్పనిసరిగా `hmac-sha256` అయి ఉండాలి (భవిష్యత్తులో పొడిగించవచ్చు); +- `c`: పునరావృతాల సంఖ్య; +- `salt`: PBKDFకు పంపిన సాల్ట్; +- `dklen`: ఉత్పన్నమైన కీ కోసం పొడవు. తప్పనిసరిగా >= 32 అయి ఉండాలి. + +ఫైల్ యొక్క కీని పొందిన తర్వాత, అది MAC యొక్క ఉత్పన్నం ద్వారా ధృవీకరించబడాలి. `ciphertext` కీ యొక్క కంటెంట్‌లతో ఉత్పన్నమైన కీ యొక్క ఎడమవైపు నుండి రెండవ 16 బైట్‌లను అనుసంధానం చేయగా ఏర్పడిన బైట్ అర్రే యొక్క SHA3 (keccak-256) హాష్‌గా MACని లెక్కించాలి, అనగా: + +```js +KECCAK(DK[16..31] ++ ) +``` + +(ఇక్కడ `++` అనేది అనుసంధాన ఆపరేటర్) + +ఈ విలువను `mac` కీ యొక్క కంటెంట్‌లతో పోల్చాలి; అవి భిన్నంగా ఉంటే, ప్రత్యామ్నాయ పాస్‌వర్డ్‌ను అభ్యర్థించాలి (లేదా ఆపరేషన్‌ను రద్దు చేయాలి). + +ఫైల్ కీని ధృవీకరించిన తర్వాత, సైఫర్ టెక్స్ట్‌ను (ఫైల్‌లోని `ciphertext` కీ) డీక్రిప్ట్ చేయవచ్చు. దీనికోసం `cipher` కీ ద్వారా పేర్కొనబడిన మరియు `cipherparams` కీ ద్వారా పారామీటరైజ్ చేయబడిన సిమెట్రిక్ ఎన్‌క్రిప్షన్ అల్గారిథం ఉపయోగించబడుతుంది. ఉత్పన్నమైన కీ పరిమాణం మరియు అల్గోరిథం యొక్క కీ పరిమాణం సరిపోలకపోతే, సున్నా ప్యాడ్ చేయబడిన, ఉత్పన్నమైన కీ యొక్క కుడివైపు బైట్‌లను అల్గారిథమ్‌కి కీగా ఉపయోగించాలి. + +అన్ని కనిష్టంగా-అనుకూలమైన అమలులు తప్పనిసరిగా AES-128-CTR అల్గారిథమ్‌కు మద్దతు ఇవ్వాలి, దీని ద్వారా సూచించబడతాయి: + +- `cipher: aes-128-ctr` + +ఈ సాంకేతికలిపి కింది పారామితులను తీసుకుంటుంది, సైఫర్‌పారమ్స్ కీకి కీలుగా ఇవ్వబడింది: + +- `iv`: సైఫర్ కోసం 128-బిట్ ఇనిషియలైజేషన్ వెక్టర్. + +సైఫర్ కోసం కీ అనేది ఉత్పన్నమైన కీ యొక్క ఎడమవైపున ఉన్న 16 బైట్‌లు, అనగా `DK[0..15]` + +రహస్య కీ యొక్క సృష్టి/ఎన్‌క్రిప్షన్ తప్పనిసరిగా ఈ సూచనలకు విరుద్ధంగా ఉండాలి. `uuid`, `salt` మరియు `iv` వాస్తవానికి యాదృచ్ఛికంగా ఉన్నాయని నిర్ధారించుకోండి. + +`version` ఫీల్డ్‌తో పాటు, ఇది వెర్షన్ యొక్క "హార్డ్" ఐడెంటిఫైయర్‌గా పనిచేయాలి, ఫార్మాట్‌లోని చిన్న, నాన్-బ్రేకింగ్ మార్పులను ట్రాక్ చేయడానికి ఇంప్లిమెంటేషన్‌లు `minorversion`ను కూడా ఉపయోగించవచ్చు. + +## టెస్ట్ వెక్టార్‌లు {#test-vectors} + +వివరాలు: + +- `Address`: `008aeeda4d805471df9b2a5b0f38a0c3bcba786b` +- `ICAP`: `XE542A5PZHH8PYIZUBEJEO0MFWRAPPIL67` +- `UUID`: `3198bc9c-6672-5ab3-d9954942343ae5b6` +- `Password`: `testpassword` +- `Secret`: `7a28b5ba57c53603b0b07b56bba752f7784bf506fa95edc395f5cf6c7514fe9d` + +### PBKDF2-SHA-256 {#PBKDF2-SHA-256} + +`AES-128-CTR` మరియు `PBKDF2-SHA-256` ఉపయోగించే టెస్ట్ వెక్టార్: + +`~/.web3/keystore/3198bc9c-6672-5ab3-d9954942343ae5b6.json` ఫైల్ కంటెంట్‌లు: + +```json +{ + "crypto": { + "cipher": "aes-128-ctr", + "cipherparams": { + "iv": "6087dab2f9fdbbfaddc31a909735c1e6" + }, + "ciphertext": "5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46", + "kdf": "pbkdf2", + "kdfparams": { + "c": 262144, + "dklen": 32, + "prf": "hmac-sha256", + "salt": "ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd" + }, + "mac": "517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2" + }, + "id": "3198bc9c-6672-5ab3-d995-4942343ae5b6", + "version": 3 +} +``` + +**మధ్యంతర విలువలు**: + +`ఉత్పన్న కీ`: `f06d69cdc7da0faffb1008270bca38f5e31891a3a773950e6d0fea48a7188551` +`MAC బాడీ`: `e31891a3a773950e6d0fea48a71885515318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46` +`MAC`: `517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2` +`సైఫర్ కీ`: `f06d69cdc7da0faffb1008270bca38f5` + +### Scrypt {#scrypt} + +AES-128-CTR మరియు స్క్రిప్ట్ ఉపయోగించి వెక్టార్‌ని పరీక్షించండి: + +```json +{ + "crypto": { + "cipher": "aes-128-ctr", + "cipherparams": { + "iv": "740770fce12ce862af21264dab25f1da" + }, + "ciphertext": "dd8a1132cf57db67c038c6763afe2cbe6ea1949a86abc5843f8ca656ebbb1ea2", + "kdf": "scrypt", + "kdfparams": { + "dklen": 32, + "n": 262144, + "p": 1, + "r": 8, + "salt": "25710c2ccd7c610b24d068af83b959b7a0e5f40641f0c82daeb1345766191034" + }, + "mac": "337aeb86505d2d0bb620effe57f18381377d67d76dac1090626aa5cd20886a7c" + }, + "id": "3198bc9c-6672-5ab3-d995-4942343ae5b6", + "version": 3 +} +``` + +**మధ్యంతర విలువలు**: + +`ఉత్పన్న కీ`: `7446f59ecc301d2d79bc3302650d8a5cedc185ccbb4bf3ca1ebd2c163eaa6c2d` +`MAC బాడీ`: `edc185ccbb4bf3ca1ebd2c163eaa6c2ddd8a1132cf57db67c038c6763afe2cbe6ea1949a86abc5843f8ca656ebbb1ea2` +`MAC`: `337aeb86505d2d0bb620effe57f18381377d67d76dac1090626aa5cd20886a7c` +`సైఫర్ కీ`: `7446f59ecc301d2d79bc3302650d8a5c` + +## వెర్షన్ 1 నుండి మార్పులు {#alterations-from-v2} + +ఈ వెర్షన్, [ఇక్కడ](https://github.com/ethereum/homestead-guide/blob/master/old-docs-for-reference/go-ethereum-wiki.rst/Passphrase-protected-key-store-spec.rst) ప్రచురించిన వెర్షన్ 1తో ఉన్న అనేక అస్థిరతలను సరిచేస్తుంది. క్లుప్తంగా ఇవి: + +- క్యాపిటలైజేషన్ అన్యాయమైనది మరియు అస్థిరమైనది (స్క్రిప్ట్ చిన్న అక్షరం, Kdf మిశ్రమ-కేస్, MAC పెద్ద అక్షరం). +- అనవసరమైన చిరునామా మరియు గోప్యతను రాజీ చేస్తుంది. +- `Salt` అనేది అంతర్గతంగా కీ డెరివేషన్ ఫంక్షన్ యొక్క పరామితి, కాబట్టి దానితోనే అనుబంధించబడాలి కానీ సాధారణంగా క్రిప్టోతో కాదు. +- _SaltLen_ అనవసరం (దానిని Salt నుండి ఉత్పాదించండి). +- కీ డెరివేషన్ ఫంక్షన్ ఇవ్వబడింది, అయినప్పటికీ క్రిప్టో అల్గోరిథం గట్టిగా పేర్కొనబడింది. +- `Version` అంతర్గతంగా సంఖ్యాపరమైనది అయినప్పటికీ అది ఒక స్ట్రింగ్ (స్ట్రింగ్‌తో స్ట్రక్చర్డ్ వెర్షనింగ్ సాధ్యమే, కానీ అరుదుగా మారే కాన్ఫిగరేషన్ ఫైల్ ఫార్మాట్ విషయంలో దీనిని పరిధికి వెలుపల ఉన్నట్లుగా పరిగణించవచ్చు). +- `KDF` మరియు `cipher` భావనాత్మకంగా ఒకే రకమైన భావనలు అయినప్పటికీ, అవి విభిన్నంగా నిర్వహించబడ్డాయి. +- `MAC` అనేది వైట్‌స్పేస్‌తో సంబంధంలేని డేటా ముక్క నుండి లెక్కించబడుతుంది(!) + +కింది ఫైల్‌ను అందించడానికి ఫార్మాట్‌లో మార్పులు చేయబడ్డాయి, ఇది మునుపు లింక్ చేసిన పేజీలో ఇచ్చిన ఉదాహరణకి క్రియాత్మకంగా సమానం: + +```json +{ + "crypto": { + "cipher": "aes-128-cbc", + "ciphertext": "07533e172414bfa50e99dba4a0ce603f654ebfa1ff46277c3e0c577fdc87f6bb4e4fe16c5a94ce6ce14cfa069821ef9b", + "cipherparams": { + "iv": "16d67ba0ce5a339ff2f07951253e6ba8" + }, + "kdf": "scrypt", + "kdfparams": { + "dklen": 32, + "n": 262144, + "p": 1, + "r": 8, + "salt": "06870e5e6a24e183a5c807bd1c43afd86d573f7db303ff4853d135cd0fd3fe91" + }, + "mac": "8ccded24da2e99a11d48cda146f9cc8213eb423e2ea0d8427f41c3be414424dd", + "version": 1 + }, + "id": "0498f19a-59db-4d54-ac95-33901b4f1870", + "version": 2 +} +``` + +## వెర్షన్ 2 నుండి మార్పులు {#alterations-from-v2} + +సంస్కరణ 2 అనేక బగ్‌లతో ప్రారంభ C++ అమలు. అన్ని అవసరమైన వస్తువులు దాని నుండి మారవు. diff --git a/public/content/translations/te/developers/docs/design-and-ux/dex-design-best-practice/index.md b/public/content/translations/te/developers/docs/design-and-ux/dex-design-best-practice/index.md new file mode 100644 index 00000000000..219b81120c5 --- /dev/null +++ b/public/content/translations/te/developers/docs/design-and-ux/dex-design-best-practice/index.md @@ -0,0 +1,220 @@ +--- +title: "వికేంద్రీకృత ఎక్స్ఛేంజ్ (DEX) రూపకల్పన ఉత్తమ విధానాలు" +description: "టోకెన్లను మార్చుకోవడం కోసం UX/UI నిర్ణయాలను వివరించే ఒక మార్గదర్శి." +lang: te +--- + +2018లో Uniswap ప్రారంభమైనప్పటి నుండి, డజన్ల కొద్దీ వివిధ చైన్‌లలో వందలాది వికేంద్రీకృత ఎక్స్ఛేంజ్‌లు ప్రారంభించబడ్డాయి. +వీటిలో చాలా వరకు కొత్త అంశాలను పరిచయం చేశాయి లేదా వాటి స్వంత శైలిని జోడించాయి, కానీ ఇంటర్‌ఫేస్ సాధారణంగా అలాగే ఉంది. + +దీనికి ఒక కారణం [జాకోబ్ నియమం](https://lawsofux.com/jakobs-law/): + +> వినియోగదారులు తమ సమయాన్ని ఎక్కువగా ఇతర సైట్‌లలో గడుపుతారు. అంటే, వినియోగదారులు వారికి ఇప్పటికే తెలిసిన అన్ని ఇతర సైట్‌ల వలె మీ సైట్ కూడా అదే విధంగా పనిచేయాలని ఇష్టపడతారు. + +Uniswap, Pancakeswap మరియు Sushiswap వంటి ప్రారంభ ఆవిష్కర్తలకు ధన్యవాదాలు, ఒక DEX ఎలా ఉంటుందనే దానిపై DeFi వినియోగదారులకు సామూహిక ఆలోచన ఉంది. +ఈ కారణంగా, “ఉత్తమ అభ్యాసం” వంటిది ఇప్పుడు ఆవిర్భవిస్తోంది. సైట్‌ల అంతటా మరిన్ని డిజైన్ నిర్ణయాలు ప్రామాణీకరించబడుతున్నట్లు మనం చూస్తున్నాము. మీరు DEXల పరిణామాన్ని ప్రత్యక్షంగా పరీక్షించడానికి ఒక భారీ ఉదాహరణగా చూడవచ్చు. పనిచేసినవి నిలిచిపోయాయి, పనిచేయనివి విసిరివేయబడ్డాయి. వ్యక్తిత్వానికి ఇంకా ఆస్కారం ఉంది, కానీ ఒక DEX కట్టుబడి ఉండవలసిన కొన్ని ప్రమాణాలు ఉన్నాయి. + +ఈ వ్యాసం వీటి యొక్క సారాంశం: + +- ఏమి చేర్చాలి +- దాన్ని వీలైనంత ఉపయోగకరంగా ఎలా తయారు చేయాలి +- డిజైన్‌ను అనుకూలీకరించడానికి ప్రధాన మార్గాలు + +ఉదాహరణ వైర్‌ఫ్రేమ్‌లన్నీ ఈ వ్యాసం కోసమే ప్రత్యేకంగా తయారు చేయబడ్డాయి, అయితే అవన్నీ నిజమైన ప్రాజెక్ట్‌లపై ఆధారపడి ఉన్నాయి. + +Figma కిట్ కూడా దిగువన చేర్చబడింది - దాన్ని ఉపయోగించడానికి సంకోచించకండి మరియు మీ స్వంత వైర్‌ఫ్రేమ్‌లను వేగవంతం చేసుకోండి! + +## ఒక DEX యొక్క ప్రాథమిక అనాటమీ {#basic-anatomy-of-a-dex} + +UIలో సాధారణంగా మూడు అంశాలు ఉంటాయి: + +1. ప్రధాన ఫారమ్ +2. బటన్ +3. వివరాల ప్యానెల్ + +![సాధారణ DEX UI, మూడు ప్రధాన అంశాలను చూపిస్తుంది](./1.png) + +## వైవిధ్యాలు {#variations} + +ఈ వ్యాసంలో ఇది ఒక సాధారణ థీమ్ అవుతుంది, కానీ ఈ అంశాలను నిర్వహించడానికి అనేక విభిన్న మార్గాలు ఉన్నాయి. “వివరాల ప్యానెల్” ఇలా ఉండవచ్చు: + +- బటన్ పైన +- బటన్ కింద +- అకార్డియన్ ప్యానెల్‌లో దాగి ఉంటుంది +- మరియు/లేదా “ప్రివ్యూ” మోడల్‌లో + +ము.గ. ఒక “ప్రివ్యూ” మోడల్ ఐచ్ఛికం, కానీ మీరు ప్రధాన UIలో చాలా తక్కువ వివరాలను చూపిస్తుంటే, ఇది అవసరం అవుతుంది. + +## ప్రధాన ఫారమ్ నిర్మాణం {#structure-of-the-main-form} + +మీరు ఏ టోకెన్‌ను మార్చుకోవాలనుకుంటున్నారో వాస్తవంగా ఎంచుకునే పెట్టె ఇది. ఈ కాంపోనెంట్‌లో ఒక ఇన్‌పుట్ ఫీల్డ్ మరియు ఒక వరుసలో ఒక చిన్న బటన్ ఉంటాయి. + +DEXలు సాధారణంగా అదనపు వివరాలను ఒక వరుస పైన మరియు ఒక వరుస కింద ప్రదర్శిస్తాయి, అయితే దీనిని విభిన్నంగా కాన్ఫిగర్ చేయవచ్చు. + +![ఇన్‌పుట్ వరుస, పైన మరియు కింద వివరాల వరుసతో](./2.png) + +## వైవిధ్యాలు {#variations2} + +ఇక్కడ రెండు UI వైవిధ్యాలు చూపబడ్డాయి; ఒకటి ఎటువంటి సరిహద్దులు లేకుండా, చాలా ఓపెన్ డిజైన్‌ను సృష్టిస్తుంది మరియు మరొకటి ఇన్‌పుట్ వరుసకు సరిహద్దు ఉంటుంది, ఆ అంశంపై దృష్టిని కేంద్రీకరిస్తుంది. + +![ప్రధాన ఫారమ్ యొక్క రెండు UI వైవిధ్యాలు](./3.png) + +ఈ ప్రాథమిక నిర్మాణం డిజైన్‌లో **నాలుగు కీలక సమాచార భాగాలను** చూపించడానికి అనుమతిస్తుంది: ప్రతి మూలలో ఒకటి. ఒకే ఒక పై/కింది వరుస ఉంటే, అప్పుడు కేవలం రెండు స్థానాలు మాత్రమే ఉంటాయి. + +DeFi పరిణామ క్రమంలో, ఇక్కడ చాలా విభిన్న విషయాలు చేర్చబడ్డాయి. + +## చేర్చవలసిన కీలక సమాచారం {#key-info-to-include} + +- వాలెట్‌లో నిల్వ +- గరిష్ట బటన్ +- ఫియట్ సమానమైనది +- “అందుకున్న” మొత్తంపై ధర ప్రభావం + +DeFi ప్రారంభ రోజుల్లో, ఫియట్ సమానమైనది తరచుగా అందుబాటులో ఉండేది కాదు. మీరు ఎలాంటి Web3 ప్రాజెక్ట్‌ను నిర్మిస్తున్నా, ఫియట్ సమానమైనది చూపించడం చాలా అవసరం. వినియోగదారులు ఇప్పటికీ స్థానిక కరెన్సీల పరంగా ఆలోచిస్తారు, కాబట్టి వాస్తవ ప్రపంచ మానసిక నమూనాలకు సరిపోలడానికి దీన్ని చేర్చాలి. + +రెండవ ఫీల్డ్‌లో (మీరు ఏ టోకెన్‌కు మారుస్తున్నారో ఎంచుకునేది), ఇన్‌పుట్ మొత్తం మరియు అంచనా వేసిన అవుట్‌పుట్ మొత్తాల మధ్య వ్యత్యాసాన్ని లెక్కించడం ద్వారా మీరు ఫియట్ కరెన్సీ మొత్తం పక్కన ధర ప్రభావాన్ని కూడా చేర్చవచ్చు. చేర్చడానికి ఇది చాలా ఉపయోగకరమైన వివరాలు. + +శాతం బటన్లు (ఉదా., 25%, 50%, 75%) ఒక ఉపయోగకరమైన ఫీచర్ కావచ్చు, కానీ అవి ఎక్కువ స్థలాన్ని తీసుకుంటాయి, మరిన్ని కాల్ టు యాక్షన్‌లను జోడిస్తాయి మరియు మరింత మానసిక భారాన్ని జోడిస్తాయి. శాతం స్లయిడర్‌లతో కూడా అదే. ఈ UI నిర్ణయాలలో కొన్ని మీ బ్రాండ్ మరియు మీ వినియోగదారు రకంపై ఆధారపడి ఉంటాయి. + +అదనపు వివరాలు ప్రధాన ఫారమ్ క్రింద చూపబడతాయి. ఈ రకమైన సమాచారం ఎక్కువగా ప్రో వినియోగదారుల కోసం కాబట్టి, ఇలా చేయడం అర్ధవంతంగా ఉంటుంది: + +- వీలైనంత తక్కువగా ఉంచండి, లేదా; +- అకార్డియన్ ప్యానెల్‌లో దాచండి + +![ఆ ప్రధాన ఫారమ్ యొక్క మూలల్లో చూపబడిన వివరాలు](./4.png) + +## చేర్చవలసిన అదనపు సమాచారం {#extra-info-to-include} + +- టోకెన్ ధర +- స్లిప్పేజ్ +- అందుకున్న కనీస మొత్తం +- అంచనా వేసిన అవుట్‌పుట్ +- ధర ప్రభావం +- గ్యాస్ ధర అంచనా +- ఇతర రుసుములు +- ఆర్డర్ రౌటింగ్ + +నిస్సందేహంగా, ఈ వివరాలలో కొన్ని ఐచ్ఛికం కావచ్చు. + +ఆర్డర్ రౌటింగ్ ఆసక్తికరంగా ఉంటుంది, కానీ చాలా మంది వినియోగదారులకు పెద్ద తేడాను కలిగించదు. + +కొన్ని ఇతర వివరాలు కేవలం అదే విషయాన్ని విభిన్న మార్గాల్లో తిరిగి చెబుతున్నాయి. ఉదాహరణకు “కనీసం అందుకున్నది” మరియు “స్లిప్పేజ్” అనేవి ఒకే నాణానికి రెండు వైపులా ఉంటాయి. మీరు 1% వద్ద స్లిప్పేజ్‌ను సెట్ చేస్తే, అప్పుడు మీరు అందుకుంటారని ఆశించే కనీస మొత్తం = అంచనా వేసిన అవుట్‌పుట్-1%. కొన్ని UIలు అంచనా వేసిన మొత్తం, కనీస మొత్తం మరియు స్లిప్పేజ్‌ను చూపిస్తాయి… ఇది ఉపయోగకరంగా ఉన్నప్పటికీ బహుశా అవసరానికి మించినది. + +ఎలాగూ చాలా మంది వినియోగదారులు డిఫాల్ట్ స్లిప్పేజ్‌ను వదిలేస్తారు. + +“ధర ప్రభావం” తరచుగా “to” ఫీల్డ్‌లోని ఫియట్ సమానమైన దాని పక్కన బ్రాకెట్లలో చూపబడుతుంది. ఇది జోడించడానికి ఒక గొప్ప ux వివరాలు, కానీ అది ఇక్కడ చూపబడితే, దాన్ని మళ్ళీ క్రింద చూపించాల్సిన అవసరం ఉందా? ఆపై మళ్ళీ ప్రివ్యూ స్క్రీన్‌పై? + +చాలా మంది వినియోగదారులు (ముఖ్యంగా చిన్న మొత్తాలను మార్చుకునే వారు) ఈ వివరాల గురించి పట్టించుకోరు; వారు కేవలం ఒక సంఖ్యను నమోదు చేసి స్వాప్‌ను నొక్కుతారు. + +![కొన్ని వివరాలు అదే విషయాన్ని చూపిస్తాయి](./5.png) + +ఖచ్చితంగా ఏ వివరాలు చూపించబడతాయనేది మీ ప్రేక్షకులపై మరియు మీరు యాప్‌కు ఎలాంటి అనుభూతిని ఇవ్వాలనుకుంటున్నారనే దానిపై ఆధారపడి ఉంటుంది. + +మీరు వివరాల ప్యానెల్‌లో స్లిప్పేజ్ టాలరెన్స్‌ను చేర్చినట్లయితే, మీరు దాన్ని నేరుగా ఇక్కడి నుండే సవరించగలిగేలా చేయాలి. ఇది “యాక్సిలరేటర్”కి ఒక మంచి ఉదాహరణ; యాప్ యొక్క సాధారణ వినియోగాన్ని ప్రభావితం చేయకుండా అనుభవజ్ఞులైన వినియోగదారుల ప్రవాహాలను వేగవంతం చేసే ఒక చక్కని UX ట్రిక్. + +![వివరాల ప్యానెల్ నుండి స్లిప్పేజ్‌ను నియంత్రించవచ్చు](./6.png) + +ఒకే స్క్రీన్‌పై ఒక నిర్దిష్ట సమాచారం గురించి మాత్రమే కాకుండా, మొత్తం ప్రవాహం గురించి కూడా జాగ్రత్తగా ఆలోచించడం మంచిది: +ప్రధాన ఫారమ్‌లో సంఖ్యలను నమోదు చేయడం → వివరాలను స్కాన్ చేయడం → ప్రివ్యూ స్క్రీన్‌కు క్లిక్ చేయడం (మీకు ప్రివ్యూ స్క్రీన్ ఉంటే). +వివరాల ప్యానెల్ అన్ని సమయాల్లో కనిపించాలా, లేదా వినియోగదారు దాన్ని విస్తరించడానికి క్లిక్ చేయాలా? +మీరు ప్రివ్యూ స్క్రీన్‌ను జోడించడం ద్వారా ఘర్షణను సృష్టించాలా? ఇది వినియోగదారుని నెమ్మదించేలా మరియు వారి ట్రేడ్‌ను పరిగణనలోకి తీసుకునేలా చేస్తుంది, ఇది ఉపయోగకరంగా ఉంటుంది. కానీ వారు అదే సమాచారాన్ని మళ్లీ చూడాలనుకుంటున్నారా? ఈ సమయంలో వారికి అత్యంత ఉపయోగకరమైనది ఏమిటి? + +## డిజైన్ ఎంపికలు {#design-options} + +చెప్పినట్లుగా, ఇందులో చాలా వరకు మీ వ్యక్తిగత శైలిపై ఆధారపడి ఉంటుంది +మీ వినియోగదారు ఎవరు? +మీ బ్రాండ్ ఏమిటి? +మీరు ప్రతి వివరాలను చూపే “ప్రో” ఇంటర్‌ఫేస్ కావాలనుకుంటున్నారా, లేదా మీరు మినిమలిస్ట్‌గా ఉండాలనుకుంటున్నారా? +సాధ్యమైనంత మొత్తం సమాచారం కోరుకునే ప్రో వినియోగదారులను మీరు లక్ష్యంగా చేసుకున్నప్పటికీ, మీరు అలాన్ కూపర్ యొక్క తెలివైన మాటలను ఇప్పటికీ గుర్తుంచుకోవాలి: + +> మీ ఇంటర్‌ఫేస్ ఎంత అందంగా ఉన్నా, ఎంత కూల్‌గా ఉన్నా, అది తక్కువగా ఉంటే మంచిది. + +### నిర్మాణం {#structure} + +- ఎడమవైపు టోకెన్లు, లేదా కుడివైపు టోకెన్లు +- 2 వరుసలు లేదా 3 +- బటన్ పైన లేదా కింద వివరాలు +- వివరాలు విస్తరించబడినవి, కనిష్టీకరించబడినవి, లేదా చూపబడనివి + +### కాంపోనెంట్ శైలి {#component-style} + +- ఖాళీ +- అవుట్‌లైన్ చేయబడిన +- నింపబడిన + +ఒక స్వచ్ఛమైన UX దృక్కోణం నుండి, UI శైలి మీరు అనుకున్నదానికంటే తక్కువగా ఉంటుంది. దృశ్య పోకడలు చక్రాలలో వస్తూ పోతూ ఉంటాయి మరియు చాలా ప్రాధాన్యత వ్యక్తిగతమైనది. + +దీని గురించి ఒక అనుభూతిని పొందడానికి మరియు వివిధ విభిన్న కాన్ఫిగరేషన్‌ల గురించి ఆలోచించడానికి సులభమైన మార్గం, కొన్ని ఉదాహరణలను చూడటం, ఆపై మీరే కొన్ని ప్రయోగాలు చేయడం. + +చేర్చబడిన Figma కిట్‌లో ఖాళీ, అవుట్‌లైన్ చేయబడిన మరియు నింపబడిన కాంపోనెంట్లు ఉన్నాయి. + +మీరు వాటన్నింటినీ ఎలా కలిపి ఉంచవచ్చో వివిధ మార్గాలను చూడటానికి దిగువ ఉదాహరణలను చూడండి: + +![నింపబడిన శైలిలో 3 వరుసలు](./7.png) + +![అవుట్‌లైన్ చేయబడిన శైలిలో 3 వరుసలు](./8.png) + +![ఖాళీ శైలిలో 2 వరుసలు](./9.png) + +![అవుట్‌లైన్ చేయబడిన శైలిలో 3 వరుసలు, వివరాల ప్యానెల్‌తో](./10.png) + +![అవుట్‌లైన్ చేయబడిన శైలిలో ఇన్‌పుట్ వరుసతో 3 వరుసలు](./11.png) + +![నింపబడిన శైలిలో 2 వరుసలు](./12.png) + +## కానీ టోకెన్ ఏ వైపుకు వెళ్లాలి? {#but-which-side-should-the-token-go-on} + +సారాంశం ఏమిటంటే, ఇది బహుశా వినియోగానికి పెద్ద తేడాను కలిగించదు. అయితే, గుర్తుంచుకోవలసిన కొన్ని విషయాలు ఉన్నాయి, ఇవి మిమ్మల్ని అటు లేదా ఇటు వైపు ప్రభావితం చేయవచ్చు. + +కాలక్రమేణా ఫ్యాషన్ మారడాన్ని చూడటం కొద్దిగా ఆసక్తికరంగా ఉంది. మొదట Uniswap టోకెన్‌ను ఎడమవైపు ఉంచింది, కానీ అప్పటి నుండి దానిని కుడివైపుకు మార్చింది. ఒక డిజైన్ అప్‌గ్రేడ్ సమయంలో Sushiswap కూడా ఈ మార్పు చేసింది. చాలా ప్రోటోకాల్‌లు దీనిని అనుసరించాయి, కానీ అన్నీ కాదు. + +సాంప్రదాయకంగా ఆర్థిక సంప్రదాయం ప్రకారం కరెన్సీ చిహ్నాన్ని సంఖ్యకు ముందు ఉంచుతారు, ఉదా., $50, €50, £50, కానీ మనం 50 డాలర్లు, 50 యూరోలు, 50 పౌండ్లు అని _అంటాము_. + +సాధారణ వినియోగదారునికి - ముఖ్యంగా ఎడమ నుండి కుడికి, పై నుండి క్రిందికి చదివే వారికి - కుడివైపు ఉన్న టోకెన్ బహుశా మరింత సహజంగా అనిపిస్తుంది. + +![ఎడమవైపు టోకెన్లతో ఒక UI](./13.png) + +టోకెన్‌ను ఎడమవైపు మరియు అన్ని సంఖ్యలను కుడివైపు ఉంచడం ఆహ్లాదకరంగా సమరూపంగా కనిపిస్తుంది, ఇది ఒక ప్లస్, కానీ ఈ లేఅవుట్‌కు మరో ప్రతికూలత ఉంది. + +సామీప్యత నియమం ప్రకారం, దగ్గరగా ఉన్న వస్తువులు సంబంధితమైనవిగా భావించబడతాయి. అందువల్ల, మనం సంబంధిత వస్తువులను ఒకదానికొకటి పక్కన ఉంచాలనుకుంటాము. టోకెన్ నిల్వ టోకెన్‌కే నేరుగా సంబంధం కలిగి ఉంటుంది మరియు కొత్త టోకెన్ ఎంచుకున్నప్పుడల్లా మారుతుంది. అందువల్ల, టోకెన్ నిల్వ టోకెన్ ఎంపిక బటన్ పక్కన ఉండటం కొంచెం ఎక్కువ అర్ధాన్నిస్తుంది. దీనిని టోకెన్ కిందకు తరలించవచ్చు, కానీ అది లేఅవుట్ యొక్క సమరూపతను విచ్ఛిన్నం చేస్తుంది. + +చివరికి, రెండు ఎంపికలకు లాభాలు మరియు నష్టాలు ఉన్నాయి, కానీ ట్రెండ్ కుడివైపు టోకెన్ వైపు ఎలా కనిపిస్తుందో ఆసక్తికరంగా ఉంది. + +## బటన్ ప్రవర్తన {#button-behavior} + +ఆమోదం కోసం ప్రత్యేక బటన్‌ను కలిగి ఉండకండి. అలాగే ఆమోదం కోసం ప్రత్యేక క్లిక్‌ను కలిగి ఉండకండి. వినియోగదారు స్వాప్ చేయాలనుకుంటున్నారు, కాబట్టి బటన్‌పై “స్వాప్” అని చెప్పి, మొదటి దశగా ఆమోదాన్ని ప్రారంభించండి. ఒక మోడల్ స్టెప్పర్‌తో పురోగతిని చూపగలదు, లేదా సాధారణ “tx 1 ఆఫ్ 2 - ఆమోదిస్తోంది” అనే నోటిఫికేషన్‌తో చూపగలదు. + +![ఆమోదం మరియు స్వాప్ కోసం ప్రత్యేక బటన్లతో ఒక UI](./14.png) + +![ఆమోదం అని చెప్పే ఒక బటన్‌తో ఉన్న UI](./15.png) + +### సందర్భోచిత సహాయంగా బటన్ {#button-as-contextual-help} + +బటన్ ఒక హెచ్చరికగా కూడా పనిచేయగలదు! + +ఇది వాస్తవానికి Web3 వెలుపల చాలా అసాధారణమైన డిజైన్ నమూనా, కానీ దానిలో ఇది ప్రామాణికంగా మారింది. ఇది ఒక మంచి ఆవిష్కరణ, ఎందుకంటే ఇది స్థలాన్ని ఆదా చేస్తుంది మరియు దృష్టిని కేంద్రీకరించి ఉంచుతుంది. + +ఒక లోపం కారణంగా ప్రధాన చర్య - స్వాప్ - అందుబాటులో లేకపోతే, దాని కారణాన్ని బటన్‌తో వివరించవచ్చు, ఉదా.: + +- నెట్‌వర్క్‌ను మార్చండి +- వాలెట్‌ను కనెక్ట్ చేయండి +- వివిధ లోపాలు + +బటన్‌ను నిర్వహించాల్సిన **చర్యకు కూడా మ్యాప్ చేయవచ్చు**. ఉదాహరణకు, వినియోగదారు తప్పు నెట్‌వర్క్‌లో ఉన్నందున స్వాప్ చేయలేకపోతే, బటన్ “Ethereumకు మారండి” అని చెప్పాలి మరియు వినియోగదారు బటన్‌పై క్లిక్ చేసినప్పుడు, అది నెట్‌వర్క్‌ను Ethereumకు మార్చాలి. ఇది వినియోగదారు ప్రవాహాన్ని గణనీయంగా వేగవంతం చేస్తుంది. + +![ప్రధాన CTA నుండి ప్రారంభించబడుతున్న కీలక చర్యలు](./16.png) + +![ప్రధాన CTAలో చూపబడిన దోష సందేశం](./17.png) + +## ఈ figma ఫైల్‌తో మీ స్వంతంగా నిర్మించుకోండి {#build-your-own-with-this-figma-file} + +అనేక ప్రోటోకాల్‌ల కృషికి ధన్యవాదాలు, DEX డిజైన్ చాలా మెరుగుపడింది. వినియోగదారునికి ఏ సమాచారం అవసరమో, దాన్ని ఎలా చూపించాలో, మరియు ప్రవాహాన్ని వీలైనంత సున్నితంగా ఎలా చేయాలో మాకు తెలుసు. +ఈ వ్యాసం UX సూత్రాల యొక్క పటిష్టమైన అవలోకనాన్ని అందిస్తుందని ఆశిస్తున్నాము. + +మీరు ప్రయోగాలు చేయాలనుకుంటే, దయచేసి Figma వైర్‌ఫ్రేమ్ కిట్‌ను ఉపయోగించడానికి సంకోచించకండి. ఇది వీలైనంత సరళంగా ఉంచబడింది, కానీ ప్రాథమిక నిర్మాణాన్ని వివిధ మార్గాల్లో నిర్మించడానికి తగినంత సౌలభ్యాన్ని కలిగి ఉంది. + +[Figma వైర్‌ఫ్రేమ్ కిట్](https://www.figma.com/community/file/1393606680816807382/dex-wireframes-kit) + +DeFi పరిణామం చెందుతూనే ఉంటుంది మరియు మెరుగుదలకు ఎల్లప్పుడూ ఆస్కారం ఉంటుంది. + +శుభం కలుగు గాక! diff --git a/public/content/translations/te/developers/docs/design-and-ux/heuristics-for-web3/index.md b/public/content/translations/te/developers/docs/design-and-ux/heuristics-for-web3/index.md new file mode 100644 index 00000000000..5526690a97b --- /dev/null +++ b/public/content/translations/te/developers/docs/design-and-ux/heuristics-for-web3/index.md @@ -0,0 +1,138 @@ +--- +title: "Web3 ఇంటర్‌ఫేస్ డిజైన్ కోసం 7 హ్యూరిస్టిక్స్" +description: "Web3 వినియోగతను మెరుగుపరిచే సూత్రాలు" +lang: te +--- + +వినియోగత హ్యూరిస్టిక్స్ అనేవి విస్తృతమైన “అనుభవ సూత్రాలు”, వీటిని మీరు మీ సైట్ వినియోగతను కొలవడానికి ఉపయోగించవచ్చు. +ఇక్కడ ఉన్న 7 హ్యూరిస్టిక్స్ ప్రత్యేకంగా Web3 కోసం రూపొందించబడ్డాయి మరియు వీటిని జాకోబ్ నీల్సన్ యొక్క [ఇంటరాక్షన్ డిజైన్ కోసం 10 సాధారణ సూత్రాలు](https://www.nngroup.com/articles/ten-usability-heuristics/)తో పాటుగా ఉపయోగించాలి. + +## web3 కోసం ఏడు వినియోగత హ్యూరిస్టిక్స్ {#seven-usability-heuristics-for-web3} + +1. చర్య తర్వాత ఫీడ్‌బ్యాక్ +2. భద్రత మరియు నమ్మకం +3. అత్యంత ముఖ్యమైన సమాచారం స్పష్టంగా ఉంటుంది +4. అర్థమయ్యే పదజాలం +5. చర్యలు వీలైనంత క్లుప్తంగా ఉంటాయి +6. నెట్‌వర్క్ కనెక్షన్‌లు కనిపించేలా మరియు ఫ్లెక్సిబుల్‌గా ఉంటాయి +7. యాప్ నుండి నియంత్రణ, వాలెట్ నుండి కాదు + +## నిర్వచనాలు మరియు ఉదాహరణలు {#definitions-and-examples} + +### 1. చర్య తర్వాత ఫీడ్‌బ్యాక్ {#feedback-follows-action} + +**ఏదైనా జరిగినప్పుడు, లేదా జరుగుతున్నప్పుడు స్పష్టంగా తెలియాలి.** + +వినియోగదారులు వారి మునుపటి చర్యల ఫలితం ఆధారంగా వారి తదుపరి చర్యలను నిర్ణయించుకుంటారు. అందువల్ల వారు సిస్టమ్ స్థితి గురించి ఎప్పటికప్పుడు తెలుసుకోవడం చాలా అవసరం. Web3లో ఇది చాలా ముఖ్యం, ఎందుకంటే లావాదేవీలు బ్లాక్‌చైన్‌లో నమోదు కావడానికి కొన్నిసార్లు కొంత సమయం పట్టవచ్చు. వేచి ఉండమని వారికి తెలియజేసే ఫీడ్‌బ్యాక్ లేకపోతే, అసలు ఏమైనా జరిగిందో లేదో అని వినియోగదారులకు ఖచ్చితంగా తెలియదు. + +**చిట్కాలు:** + +- సందేశాలు, నోటిఫికేషన్‌లు మరియు ఇతర హెచ్చరికల ద్వారా వినియోగదారునికి తెలియజేయండి. +- వేచి ఉండే సమయాలను స్పష్టంగా తెలియజేయండి. +- ఒక చర్యకు కొన్ని సెకన్ల కంటే ఎక్కువ సమయం పడితే, ఏదో జరుగుతోందని వారికి అనిపించేలా చేయడానికి టైమర్ లేదా యానిమేషన్‌తో వినియోగదారునికి భరోసా ఇవ్వండి. +- ఒక ప్రక్రియలో బహుళ దశలు ఉంటే, ప్రతి దశను చూపండి. + +**ఉదాహరణ:** +ఒక లావాదేవీలో ఉన్న ప్రతి దశను చూపించడం వలన వినియోగదారులు ఆ ప్రక్రియలో తాము ఎక్కడ ఉన్నారో తెలుసుకోవడానికి సహాయపడుతుంది. తగిన ఐకాన్‌లు వినియోగదారునికి వారి చర్యల స్థితిని తెలియజేస్తాయి. + +![టోకెన్లను మార్పిడి చేస్తున్నప్పుడు ప్రతి దశ గురించి వినియోగదారునికి తెలియజేయడం](./Image1.png) + +### 2. భద్రత మరియు నమ్మకం అంతర్నిర్మితంగా ఉంటాయి {#security-and-trust-are-backed-in} + +భద్రతకు ప్రాధాన్యత ఇవ్వాలి, మరియు ఈ విషయాన్ని వినియోగదారునికి నొక్కి చెప్పాలి. +ప్రజలు తమ డేటా గురించి చాలా శ్రద్ధ వహిస్తారు. భద్రత తరచుగా వినియోగదారులకు ఒక ప్రాథమిక ఆందోళన, కాబట్టి దీనిని డిజైన్‌లోని అన్ని స్థాయిలలో పరిగణించాలి. మీరు ఎల్లప్పుడూ మీ వినియోగదారుల నమ్మకాన్ని సంపాదించడానికి ప్రయత్నిస్తూ ఉండాలి, కానీ మీరు దీన్ని చేసే విధానం వివిధ యాప్‌లలో వేర్వేరు అర్థాలను కలిగి ఉండవచ్చు. ఇది ఒక తర్వాత ఆలోచనగా ఉండకూడదు, కానీ అంతటా స్పృహతో రూపొందించబడాలి. తుది UIతో పాటు, సోషల్ ఛానెల్స్ మరియు డాక్యుమెంటేషన్‌తో సహా వినియోగదారు అనుభవం అంతటా నమ్మకాన్ని పెంచండి. వికేంద్రీకరణ స్థాయి, ట్రెజరీ మల్టీ-సిగ్ స్థితి మరియు బృందం డాక్స్ చేయబడిందా లేదా అనే విషయాలు వినియోగదారుల నమ్మకాన్ని ప్రభావితం చేస్తాయి. + +**చిట్కాలు:** + +- మీ ఆడిట్‌లను గర్వంగా జాబితా చేయండి +- బహుళ ఆడిట్‌లను పొందండి +- మీరు రూపొందించిన ఏవైనా భద్రతా ఫీచర్‌లను ప్రచారం చేయండి +- అంతర్లీన ఇంటిగ్రేషన్‌లతో సహా, సాధ్యమయ్యే ప్రమాదాలను హైలైట్ చేయండి +- వ్యూహాల సంక్లిష్టతను తెలియజేయండి +- మీ వినియోగదారుల భద్రత అవగాహనను ప్రభావితం చేయగల UI-యేతర సమస్యలను పరిగణించండి + +**ఉదాహరణ:** +మీ ఆడిట్‌లను ఫుటర్‌లో, స్పష్టంగా కనిపించే పరిమాణంలో చేర్చండి. + +![వెబ్‌సైట్ ఫుటర్‌లో సూచించబడిన ఆడిట్‌లు](./Image2.png) + +### 3. అత్యంత ముఖ్యమైన సమాచారం స్పష్టంగా ఉంటుంది {#the-most-important-info-is-obvious} + +సంక్లిష్ట వ్యవస్థల కోసం, అత్యంత సంబంధిత డేటాను మాత్రమే చూపండి. ఏది అత్యంత ముఖ్యమైనదో నిర్ణయించండి మరియు దాని ప్రదర్శనకు ప్రాధాన్యత ఇవ్వండి. +చాలా ఎక్కువ సమాచారం గందరగోళంగా ఉంటుంది మరియు వినియోగదారులు నిర్ణయాలు తీసుకునేటప్పుడు సాధారణంగా ఒకే ఒక్క సమాచారంపై ఆధారపడతారు. DeFiలో, ఇది బహుశా ఈల్డ్ యాప్‌లలో APR మరియు లెండింగ్ యాప్‌లలో LTV అయి ఉంటుంది. + +**చిట్కాలు:** + +- వినియోగదారు పరిశోధన అత్యంత ముఖ్యమైన మెట్రిక్‌ను వెల్లడిస్తుంది +- కీలక సమాచారాన్ని పెద్దదిగా, మరియు ఇతర వివరాలను చిన్నవిగా మరియు అడ్డుపడకుండా ఉండేలా చేయండి +- ప్రజలు చదవరు, వారు స్కాన్ చేస్తారు; మీ డిజైన్ స్కాన్ చేయగలిగేలా ఉందని నిర్ధారించుకోండి + +**ఉదాహరణ:** పూర్తి రంగులో ఉన్న పెద్ద టోకెన్‌లు స్కాన్ చేస్తున్నప్పుడు సులభంగా కనుగొనవచ్చు. APR పెద్దదిగా మరియు యాక్సెంట్ రంగులో హైలైట్ చేయబడింది. + +![టోకెన్ మరియు APR సులభంగా కనుగొనవచ్చు](./Image3.png) + +### 4. స్పష్టమైన పదజాలం {#clear-terminology} + +పదజాలం అర్థమయ్యేలా మరియు తగిన విధంగా ఉండాలి. +సాంకేతిక పరిభాష ఒక పెద్ద అడ్డంకి కావచ్చు, ఎందుకంటే దానికి పూర్తిగా కొత్త మానసిక నమూనాను నిర్మించుకోవడం అవసరం. వినియోగదారులు వారికి ఇప్పటికే తెలిసిన పదాలు, పదబంధాలు మరియు భావనలతో డిజైన్‌ను అనుసంధానించలేరు. ప్రతిదీ గందరగోళంగా మరియు అపరిచితంగా అనిపిస్తుంది, మరియు వారు దానిని ఉపయోగించడానికి ప్రయత్నించడానికి ముందే చాలా నేర్చుకోవాల్సి ఉంటుంది. కొంత డబ్బు ఆదా చేయాలనుకుని DeFiని సంప్రదించే వినియోగదారునికి ఇవి కనిపిస్తాయి: మైనింగ్, ఫార్మింగ్, స్టేకింగ్, ఉద్గారాలు, లంచాలు, వాల్ట్స్, లాకర్స్, veTokens, వెస్టింగ్, ఎపోక్స్, వికేంద్రీకృత అల్గోరిథంలు, ప్రోటోకాల్-సొంతమైన లిక్విడిటీ... +అత్యధిక మందికి అర్థమయ్యే సరళమైన పదాలను ఉపయోగించడానికి ప్రయత్నించండి. కేవలం మీ ప్రాజెక్ట్ కోసం సరికొత్త పదాలను కనిపెట్టవద్దు. + +**చిట్కాలు:** + +- సరళమైన మరియు స్థిరమైన పదజాలాన్ని ఉపయోగించండి +- వీలైనంత వరకు ఇప్పటికే ఉన్న భాషను ఉపయోగించండి +- మీ స్వంత పదాలను సృష్టించుకోవద్దు +- సంప్రదాయాలు కనిపించినప్పుడు వాటిని అనుసరించండి +- వినియోగదారులకు వీలైనంత వరకు అవగాహన కల్పించండి + +**ఉదాహరణ:** +“మీ రివార్డులు” అనేది విస్తృతంగా అర్థమయ్యే, తటస్థ పదం; ఈ ప్రాజెక్ట్ కోసం సృష్టించబడిన కొత్త పదం కాదు. రివార్డులు వాస్తవ ప్రపంచ మానసిక నమూనాలతో సరిపోలడానికి USDలో పేర్కొనబడ్డాయి, రివార్డులు మరొక టోకెన్‌లో ఉన్నప్పటికీ ఇది వర్తిస్తుంది. + +![టోకెన్ రివార్డులు, U.S.లో ప్రదర్శించబడినవి డాలర్లలో](./Image4.png) + +### 5. చర్యలు వీలైనంత క్లుప్తంగా ఉంటాయి {#actions-are-as-short-as-possible} + +ఉప-చర్యలను సమూహపరచడం ద్వారా వినియోగదారు పరస్పర చర్యలను వేగవంతం చేయండి. +ఇది స్మార్ట్ కాంట్రాక్ట్ స్థాయిలో, అలాగే UIలో కూడా చేయవచ్చు. ఒక సాధారణ చర్యను పూర్తి చేయడానికి వినియోగదారు సిస్టమ్‌లోని ఒక భాగం నుండి మరొకదానికి వెళ్లడం – లేదా సిస్టమ్‌ను పూర్తిగా వదిలివేయడం – చేయాల్సిన అవసరం ఉండకూడదు. + +**చిట్కాలు:** + +- సాధ్యమైన చోట "ఆమోదించు"ని ఇతర చర్యలతో కలపండి +- సంతకం చేసే దశలను వీలైనంత దగ్గరగా ఒకేచోట చేర్చండి + +**ఉదాహరణ:** “లిక్విడిటీని జోడించు” మరియు “స్టేక్”ని కలపడం అనేది వినియోగదారునికి సమయం మరియు గ్యాస్ రెండింటినీ ఆదా చేసే యాక్సిలరేటర్‌కు ఒక సాధారణ ఉదాహరణ. + +![డిపాజిట్ మరియు స్టేక్ చర్యలను కలపడానికి ఒక స్విచ్‌ను చూపిస్తున్న మోడల్](./Image5.png) + +### 6. నెట్‌వర్క్ కనెక్షన్‌లు కనిపించేలా మరియు ఫ్లెక్సిబుల్‌గా ఉంటాయి {#network-connections-are-visible-and-flexible} + +వినియోగదారు ఏ నెట్‌వర్క్‌కు కనెక్ట్ అయ్యారో వారికి తెలియజేయండి మరియు నెట్‌వర్క్‌ను మార్చడానికి స్పష్టమైన షార్ట్‌కట్‌లను అందించండి. +మల్టీచైన్ యాప్‌లలో ఇది చాలా ముఖ్యం. డిస్‌కనెక్ట్ అయినప్పుడు లేదా మద్దతు లేని నెట్‌వర్క్‌కు కనెక్ట్ అయినప్పుడు కూడా యాప్ యొక్క ప్రధాన ఫంక్షన్‌లు కనిపించాలి. + +**చిట్కాలు:** + +- డిస్‌కనెక్ట్ అయినప్పుడు యాప్‌ను వీలైనంత ఎక్కువగా చూపండి +- వినియోగదారు ప్రస్తుతం ఏ నెట్‌వర్క్‌కు కనెక్ట్ అయ్యారో చూపండి +- నెట్‌వర్క్‌ను మార్చడానికి వినియోగదారుని వాలెట్‌కు వెళ్లేలా చేయవద్దు +- యాప్‌కు వినియోగదారు నెట్‌వర్క్‌ను మార్చాల్సిన అవసరం ఉంటే, ప్రధాన కాల్ టు యాక్షన్ నుండి చర్యను ప్రాంప్ట్ చేయండి +- యాప్‌లో బహుళ నెట్‌వర్క్‌ల కోసం మార్కెట్లు లేదా వాల్ట్‌లు ఉంటే, వినియోగదారు ప్రస్తుతం ఏ సెట్‌ను చూస్తున్నారో స్పష్టంగా పేర్కొనండి + +**ఉదాహరణ:** వినియోగదారు ఏ నెట్‌వర్క్‌కు కనెక్ట్ అయ్యారో యాప్‌బార్‌లో చూపండి మరియు దానిని మార్చడానికి వారిని అనుమతించండి. + +![కనెక్ట్ చేయబడిన నెట్‌వర్క్‌ను చూపిస్తున్న డ్రాప్‌డౌన్ బటన్](./Image6.png) + +### 7. యాప్ నుండి నియంత్రణ, వాలెట్ నుండి కాదు {#control-from-the-app-not-the-wallet} + +UI వినియోగదారుకు వారు తెలుసుకోవలసిన ప్రతిదీ చెప్పాలి మరియు వారు చేయవలసిన ప్రతిదానిపై వారికి నియంత్రణ ఇవ్వాలి. +Web3లో, మీరు UIలో తీసుకునే చర్యలు మరియు వాలెట్‌లో తీసుకునే చర్యలు ఉంటాయి. సాధారణంగా, మీరు UIలో ఒక చర్యను ప్రారంభిస్తారు, ఆపై దానిని వాలెట్‌లో నిర్ధారిస్తారు. ఈ రెండు అంశాలను జాగ్రత్తగా ఏకీకృతం చేయకపోతే వినియోగదారులు అసౌకర్యంగా భావించవచ్చు. + +**చిట్కాలు:** + +- UIలో ఫీడ్‌బ్యాక్ ద్వారా సిస్టమ్ స్థితిని తెలియజేయండి +- వారి చరిత్ర యొక్క రికార్డును ఉంచండి +- పాత లావాదేవీల కోసం బ్లాక్ ఎక్స్‌ప్లోరర్‌లకు లింక్‌లను అందించండి +- నెట్‌వర్క్‌లను మార్చడానికి షార్ట్‌కట్‌లను అందించండి. + +**ఉదాహరణ:** ఒక సూక్ష్మ కంటైనర్ వినియోగదారు వారి వాలెట్‌లో ఏ సంబంధిత టోకెన్‌లు ఉన్నాయో చూపిస్తుంది మరియు ప్రధాన CTA నెట్‌వర్క్‌ను మార్చడానికి షార్ట్‌కట్‌ను అందిస్తుంది. + +![ప్రధాన CTA వినియోగదారుని నెట్‌వర్క్‌ను మార్చమని ప్రాంప్ట్ చేస్తోంది](./Image7.png) diff --git a/public/content/translations/te/developers/docs/design-and-ux/index.md b/public/content/translations/te/developers/docs/design-and-ux/index.md new file mode 100644 index 00000000000..3e83065b9e0 --- /dev/null +++ b/public/content/translations/te/developers/docs/design-and-ux/index.md @@ -0,0 +1,86 @@ +--- +title: "web3 లో డిజైన్ మరియు UX" +description: "web3 స్పేస్ మరియు ఇథీరియంలో UX డిజైన్ మరియు పరిశోధనకు పరిచయం" +lang: te +--- + +ఇథీరియంతో డిజైన్ చేయడానికి మీరు కొత్తా? మీకు ఇది సరైన ప్రదేశం. web3 డిజైన్ మరియు పరిశోధన ప్రాథమిక అంశాలను మీకు పరిచయం చేయడానికి ఇథీరియం కమ్యూనిటీ వనరులను రాసింది. మీకు సుపరిచితమైన ఇతర యాప్ డిజైన్‌ల నుండి భిన్నంగా ఉండే ప్రధాన భావనల గురించి మీరు నేర్చుకుంటారు. + +ముందుగా web3 గురించి మరింత ప్రాథమిక అవగాహన కావాలా? [**లెర్న్ హబ్**](/learn/)ని చూడండి. + +## వినియోగదారు పరిశోధనతో ప్రారంభించండి {#start-with-user-research} + +ప్రభావవంతమైన డిజైన్ అనేది దృశ్యమానంగా ఆకర్షణీయమైన వినియోగదారు ఇంటర్‌ఫేస్‌లను సృష్టించడాన్ని మించి ఉంటుంది. ఇందులో వినియోగదారుడి అవసరాలు, లక్ష్యాలు మరియు చోదక కారకాలపై లోతైన అవగాహన పొందడం ఉంటుంది. అందువల్ల, డిజైనర్లందరూ వారి పని ఉద్దేశపూర్వకంగా మరియు ప్రణాళికాబద్ధంగా ఉండేలా చూసుకోవడానికి, [**డబుల్ డైమండ్ ప్రాసెస్**](https://en.wikipedia.org/wiki/Double_Diamond_\(design_process_model\)) వంటి డిజైన్ ప్రక్రియను అవలంబించాలని మేము గట్టిగా సిఫార్సు చేస్తున్నాము. + +- [Web3 కి మరింత మంది UX పరిశోధకులు మరియు డిజైనర్లు అవసరం](https://blog.akasha.org/akasha-conversations-9-web3-needs-more-ux-researchers-and-designers) - ప్రస్తుత డిజైన్ పరిపక్వత యొక్క అవలోకనం +- [web3 లో UX పరిశోధన కోసం ఒక సాధారణ మార్గదర్శి](https://uxplanet.org/a-complete-guide-to-ux-research-for-web-3-0-products-d6bead20ebb1) - పరిశోధన ఎలా చేయాలో సాధారణ మార్గదర్శి +- [Web3 లో UX నిర్ణయాలను ఎలా సంప్రదించాలి](https://archive.devcon.org/archive/watch/6/data-empathy-how-to-approach-ux-decisions-in-web3/) - పరిమాణాత్మక మరియు గుణాత్మక పరిశోధన మరియు రెండింటి మధ్య తేడాల సంక్షిప్త అవలోకనం (వీడియో, 6 నిమి.) +- [web3 లో ఒక ux పరిశోధకుడిగా ఉండటం](https://medium.com/@georgia.rakusen/what-its-like-being-a-user-researcher-in-web3-6a4bcc096849) - web3 లో UX పరిశోధకుడిగా ఉండటం ఎలా ఉంటుందనే దానిపై ఒక వ్యక్తిగత అభిప్రాయం + +## web3 లో పరిశోధన అధ్యయనాలు {#research-in-web3} + +ఇది web3 లో చేసిన వినియోగదారు పరిశోధన యొక్క క్యూరేటెడ్ జాబితా, ఇది డిజైన్ మరియు ఉత్పత్తి నిర్ణయాలకు సహాయపడవచ్చు లేదా సొంత అధ్యయనాన్ని నిర్వహించడానికి స్ఫూర్తిగా పనిచేయవచ్చు. + +| దృష్టి సారించే ప్రాంతం | పేరు | +| :----------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| క్రిప్టో ఆన్‌బోర్డింగ్ | [ది రీఓన్ పల్స్ 2024: క్రిప్టో వినియోగదారుల సెంటిమెంట్ & వాడుక](https://reown.com/blog/unveiling-walletconnects-consumer-crypto-report) | +| క్రిప్టో ఆన్‌బోర్డింగ్ | [CRADL: క్రిప్టోకరెన్సీలో UX](https://docs.google.com/presentation/d/1s2OPSH5sMJzxRYaJSSRTe8W2iIoZx0PseIV-WeZWD1s/edit?usp=sharing) | +| క్రిప్టో ఆన్‌బోర్డింగ్ | [CRADL: క్రిప్టోకరెన్సీకి ఆన్‌బోర్డింగ్](https://docs.google.com/presentation/d/1R9nFuzA-R6SxaGCKhoMbE4Vxe0JxQSTiHXind3LVq_w/edit?usp=sharing) | +| క్రిప్టో ఆన్‌బోర్డింగ్ | [Bitcoin UX నివేదిక](https://github.com/patestevao/BitcoinUX-report/blob/master/report.md) | +| క్రిప్టో ఆన్‌బోర్డింగ్ | [ConSensys: ప్రపంచవ్యాప్తంగా Web3 అవగాహన స్థితి 2023](https://consensys.io/insight-report/web3-and-crypto-global-survey-2023) | +| క్రిప్టో ఆన్‌బోర్డింగ్ | [NEAR: స్వీకరణ వైపు ప్రయాణాన్ని వేగవంతం చేయడం](https://drive.google.com/file/d/1VuaQP4QSaQxR5ddQKTMGI0b0rWdP7uGn/view) | +| స్టేకింగ్ | [OpenUX: రాకెట్ పూల్ నోడ్ ఆపరేటర్ UX](https://storage.googleapis.com/rocketpool/RocketPool-NodeOperator-UX-Report-Jan-2024.pdf) | +| స్టేకింగ్ | [స్టేకింగ్: కీలక ట్రెండ్‌లు, టేక్‌అవేలు మరియు అంచనాలు - Eth స్టేకర్](https://lookerstudio.google.com/u/0/reporting/cafcee00-e1af-4148-bae8-442a88ac75fa/page/p_ja2srdhh2c?s=hmbTWDh9hJo) | +| స్టేకింగ్ | [మల్టీ యాప్ స్టేకింగ్](https://github.com/threshold-network/UX-User-Research/blob/main/Multi-App%20Staking%20\(MAS\)/iterative-user-study/MAS%20Iterative%20User%20Study.pdf) | +| DAO | [2022 DAO పరిశోధన అప్‌డేట్: DAO బిల్డర్లకు ఏమి కావాలి?](https://blog.aragon.org/2022-dao-research-update/) | +| DeFi | [కవరేజ్ పూల్స్](https://github.com/threshold-network/UX-User-Research/tree/main/Keep%20Coverage%20Pool) | +| DeFi | [ConSensys: DeFi వినియోగదారు పరిశోధన నివేదిక 2022](https://cdn2.hubspot.net/hubfs/4795067/ConsenSys%20Codefi-Defi%20User%20ResearchReport.pdf) | +| మెటావర్స్ | [మెటావర్స్: వినియోగదారు పరిశోధన నివేదిక](https://www.politico.com/f/?id=00000187-7685-d820-a7e7-7e85d1420000) | +| మెటావర్స్ | [సఫారీకి వెళ్లడం: మెటావర్స్‌లో వినియోగదారులను పరిశోధించడం](https://archive.devcon.org/archive/watch/6/going-on-safari-researching-users-in-the-metaverse/?tab=YouTube) (వీడియో, 27 నిమి.) | + +## web3 కోసం డిజైన్ {#design-for-web3} + +- [Web3 UX డిజైన్ హ్యాండ్‌బుక్](https://web3ux.design/) - Web3 యాప్‌లను డిజైన్ చేయడానికి ప్రాక్టికల్ గైడ్ +- [Web3 డిజైన్ సూత్రాలు](https://medium.com/@lyricalpolymath/web3-design-principles-f21db2f240c1) - బ్లాక్‌చైన్ ఆధారిత డాప్స్ కోసం UX నియమాల ఫ్రేమ్‌వర్క్ +- [బ్లాక్‌చైన్ డిజైన్ సూత్రాలు](https://medium.com/design-ibm/blockchain-design-principles-599c5c067b6e) - IBM వద్ద బ్లాక్‌చైన్ డిజైన్ బృందం నేర్చుకున్న పాఠాలు +- [Neueux.com](https://neueux.com/apps) - విభిన్న ఫిల్టరింగ్ ఎంపికలతో వినియోగదారు ప్రవాహాల UI లైబ్రరీ +- [Web3 యొక్క వినియోగ సంక్షోభం: మీరు తెలుసుకోవలసినది!](https://www.youtube.com/watch?v=oBSXT_6YDzg) - డెవలపర్ కేంద్రీకృత ప్రాజెక్ట్ నిర్మాణంలో ఉన్న ఆపదలపై ప్యానెల్ చర్చ (వీడియో, 34 నిమి.) + +## ప్రారంభించడం {#getting-started} + +- [Web3 కోసం హ్యూరిస్టిక్స్](/developers/docs/design-and-ux/heuristics-for-web3/) - Web3 ఇంటర్‌ఫేస్ డిజైన్ కోసం 7 హ్యూరిస్టిక్స్ +- [DEX డిజైన్ ఉత్తమ పద్ధతులు](/developers/docs/design-and-ux/dex-design-best-practice/) - వికేంద్రీకృత ఎక్స్ఛేంజీలను డిజైన్ చేయడానికి ఒక మార్గదర్శి + +## Web3 డిజైన్ కేస్ స్టడీస్ {#design-case-studies} + +- [Deep Work Studio](https://www.deepwork.studio/case-studies) +- [OpenSea లో ఒక NFT ని అమ్మడం](https://builtformars.com/case-studies/opensea) +- [వాలెట్ UX టియర్‌డౌన్: వాలెట్‌లు ఎలా మారాలి](https://www.youtube.com/watch?v=oTpuxYj8JWI&ab_channel=ETHDenver) (వీడియో, 20 నిమి.) + +## డిజైన్ బౌంటీలు {#bounties} + +- [Dework](https://app.dework.xyz/bounties) +- [బిల్డ్‌బాక్స్ హ్యాకథాన్‌లు](https://app.buidlbox.io/) +- [ETHGlobal హ్యాకథాన్‌లు](https://ethglobal.com/) + +## డిజైన్ DAO లు మరియు కమ్యూనిటీలు {#design-daos-and-communities} + +ఇతర సభ్యులతో డిజైన్ మరియు పరిశోధనకు సంబంధించిన విషయాలు మరియు ట్రెండ్‌లను చర్చించడానికి వృత్తిపరమైన కమ్యూనిటీ-ఆధారిత సంస్థలలో పాల్గొనండి లేదా డిజైన్ గ్రూపులలో చేరండి. + +- [Vectordao.com](https://vectordao.com/) +- [Deepwork.studio](https://www.deepwork.studio/) +- [We3.co](https://we3.co/) +- [Openux.xyz](https://openux.xyz/) + +## డిజైన్ సిస్టమ్స్ మరియు ఇతర డిజైన్ వనరులు {#design-systems-and-resources} + +- [ఆప్టిమిజం డిజైన్](https://www.figma.com/@optimism) (Figma) +- [Ethereum.org డిజైన్ సిస్టమ్](https://www.figma.com/@ethdotorg) (Figma) +- [ఫినిటీ, పాలీగాన్ ద్వారా ఒక డిజైన్ సిస్టమ్](https://www.figma.com/community/file/1073921725197233598/finity-design-system) (Figma) +- [క్లెరోస్ డిజైన్ సిస్టమ్](https://www.figma.com/community/file/999852250110186964/kleros-design-system) (Figma) +- [సేఫ్ డిజైన్ సిస్టమ్](https://www.figma.com/community/file/1337417127407098506/safe-design-system) (Figma) +- [ENS డిజైన్ సిస్టమ్](https://thorin.ens.domains/) +- [మిర్రర్ డిజైన్ సిస్టమ్](https://degen-xyz.vercel.app/) + +**ఈ పేజీలో జాబితా చేయబడిన వ్యాసాలు మరియు ప్రాజెక్టులు అధికారిక ఆమోదాలు కావు**, మరియు సమాచార ప్రయోజనాల కోసం మాత్రమే అందించబడ్డాయి. +మేము మా [లిస్టింగ్ పాలసీ](/contributing/design/adding-design-resources)లోని ప్రమాణాల ఆధారంగా ఈ పేజీకి లింక్‌లను జోడిస్తాము. మేము ఒక ప్రాజెక్ట్/వ్యాసాన్ని జోడించాలని మీరు కోరుకుంటే, [GitHub](https://github.com/ethereum/ethereum-org-website/blob/dev/public/content/developers/docs/design-and-ux/index.md) లో ఈ పేజీని సవరించండి. diff --git a/public/content/translations/te/developers/docs/development-networks/index.md b/public/content/translations/te/developers/docs/development-networks/index.md new file mode 100644 index 00000000000..e99280602fd --- /dev/null +++ b/public/content/translations/te/developers/docs/development-networks/index.md @@ -0,0 +1,71 @@ +--- +title: "అభివృద్ధి నెట్వర్క్‌లు" +description: "ఇతీరియము అప్లికేషన్‌లను నిర్మించడానికి సహాయపడే అభివృద్ధి నెట్వర్క్‌లు మరియు అందుబాటులో ఉన్న ఉపకరణాలపై ఒక అవలోకనం." +lang: te +--- + +స్మార్ట్ కాంట్రాక్టులతో ఒక ఇతీరియము అప్లికేషన్‌ను నిర్మిస్తున్నప్పుడు, దానిని డిప్లాయ్ చేయడానికి ముందు అది ఎలా పనిచేస్తుందో చూడటానికి మీరు దానిని ఒక స్థానిక నెట్వర్క్‌లో నడపాలని కోరుకుంటారు. + +వెబ్ డెవెలప్మెంట్ కోసం మీరు మీ కంప్యూటర్‌లో లోకల్ సర్వర్‌ను నడిపినట్లే, మీ డాప్‌ను పరీక్షించడానికి ఒక లోకల్ బ్లాక్‌చైన్ ఇన్‌స్టాన్స్‌ను సృష్టించడం కోసం మీరు డెవెలప్మెంట్ నెట్‌వర్క్‌ను ఉపయోగించవచ్చు. ఈ ఇతీరియము అభివృద్ధి నెట్వర్క్‌లు పబ్లిక్ టెస్టునెట్ కంటే చాలా వేగంగా పునరావృతం చేయడానికి అనుమతించే ఫీచర్లను అందిస్తాయి (ఉదాహరణకు మీరు టెస్టునెట్ ఫాసెట్ నుండి ETHని పొందవలసిన అవసరం లేదు). + +## అవసరాలు {#prerequisites} + +అభివృద్ధి నెట్వర్క్‌లలోకి ప్రవేశించే ముందు మీరు [ఇతీరియము స్టాక్ యొక్క ప్రాథమికాలను](/developers/docs/ethereum-stack/) మరియు [ఇతీరియము నెట్వర్క్‌లను](/developers/docs/networks/) అర్థం చేసుకోవాలి. + +## అభివృద్ధి నెట్వర్క్ అంటే ఏమిటి? {#what-is-a-development-network} + +అభివృద్ధి నెట్వర్క్‌లు అనేవి ప్రాథమికంగా స్థానిక అభివృద్ధి కోసం ప్రత్యేకంగా రూపొందించబడిన ఇతీరియము క్లయింట్లు (ఇతీరియము యొక్క అమలులు). + +**స్థానికంగా ఒక ప్రామాణిక ఇతీరియము నోడ్‌ను ఎందుకు నడపకూడదు?** + +మీరు [ఒక నోడ్‌ను నడపవచ్చు](/developers/docs/nodes-and-clients/#running-your-own-node) కానీ అభివృద్ధి నెట్వర్క్‌లు అభివృద్ధి కోసం ఉద్దేశించినవి కాబట్టి, అవి తరచుగా ఇలాంటి సౌకర్యవంతమైన ఫీచర్లతో వస్తాయి: + +- మీ స్థానిక బ్లాక్‌చైన్‌ను డేటాతో నిర్ధారణాత్మకంగా సీడింగ్ చేయడం (ఉదా., ETH బ్యాలెన్స్‌లతో ఉన్న ఖాతాలు) +- అది అందుకున్న ప్రతి లావాదేవీతో తక్షణమే, క్రమంలో మరియు ఆలస్యం లేకుండా బ్లాక్‌లను ఉత్పత్తి చేయడం +- మెరుగైన డీబగ్గింగ్ మరియు లాగింగ్ ఫంక్షనాలిటీ + +## అందుబాటులో ఉన్న ఉపకరణాలు {#available-projects} + +**గమనిక**: చాలా [అభివృద్ధి ఫ్రేమ్‌వర్క్‌లు](/developers/docs/frameworks/) అంతర్నిర్మిత అభివృద్ధి నెట్వర్క్‌ను కలిగి ఉంటాయి. [మీ స్థానిక అభివృద్ధి వాతావరణాన్ని సెటప్ చేయడానికి](/developers/local-environment/) ఒక ఫ్రేమ్‌వర్క్‌తో ప్రారంభించమని మేము సిఫార్సు చేస్తున్నాము. + +### Hardhat నెట్వర్క్ {#hardhat-network} + +అభివృద్ధి కోసం రూపొందించిన ఒక స్థానిక ఇతీరియము నెట్వర్క్. ఇది మీ కాంట్రాక్టులను డిప్లాయ్ చేయడానికి, మీ పరీక్షలను నడపడానికి మరియు మీ కోడ్‌ను డీబగ్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. + +Hardhat నెట్వర్క్, నిపుణుల కోసం ఒక ఇతీరియము అభివృద్ధి వాతావరణం అయిన Hardhat తో అంతర్నిర్మితంగా వస్తుంది. + +- [వెబ్‌సైట్](https://hardhat.org/) +- [GitHub](https://github.com/NomicFoundation/hardhat) + +### స్థానిక బీకన్ చైన్‌లు {#local-beacon-chains} + +కొన్ని ఏకాభిప్రాయం క్లయింట్లు పరీక్ష ప్రయోజనాల కోసం స్థానిక బీకన్ చైన్‌లను ప్రారంభించడానికి అంతర్నిర్మిత ఉపకరణాలను కలిగి ఉంటాయి. Lighthouse, Nimbus మరియు Lodestar కోసం సూచనలు అందుబాటులో ఉన్నాయి: + +- [Lodestar ఉపయోగించి స్థానిక టెస్టునెట్](https://chainsafe.github.io/lodestar/contribution/advanced-topics/setting-up-a-testnet#post-merge-local-testnet/) +- [Lighthouse ఉపయోగించి స్థానిక టెస్టునెట్](https://lighthouse-book.sigmaprime.io/setup.html#local-testnets) + +### పబ్లిక్ ఇతీరియము టెస్ట్-చైన్‌లు {#public-beacon-testchains} + +ఇతీరియము యొక్క రెండు నిర్వహించబడుతున్న పబ్లిక్ టెస్ట్ అమలులు కూడా ఉన్నాయి: సెపోలియా మరియు హూడి. దీర్ఘకాలిక మద్దతుతో సిఫార్సు చేయబడిన టెస్టునెట్ హూడి, దీనిపై ఎవరైనా ధృవీకరించడానికి స్వేచ్ఛగా ఉన్నారు. సెపోలియా అనుమతించబడిన వాలిడేటర్ సెట్‌ను ఉపయోగిస్తుంది, అంటే ఈ టెస్టునెట్‌లో కొత్త వాలిడేటర్‌లకు సాధారణ యాక్సెస్ లేదు. + +- [హూడి స్టేకింగ్ లాంచ్‌ప్యాడ్](https://hoodi.launchpad.ethereum.org/) + +### Kurtosis ఇతీరియము ప్యాకేజీ {#kurtosis} + +Kurtosis అనేది మల్టీ-కంటైనర్ టెస్ట్ వాతావరణాల కోసం ఒక బిల్డ్ సిస్టమ్, ఇది డెవలపర్‌లను స్థానికంగా బ్లాక్‌చైన్ నెట్వర్క్‌ల యొక్క పునరుత్పాదక ఇన్‌స్టాన్స్‌లను ప్రారంభించడానికి వీలు కల్పిస్తుంది. + +డాకర్ లేదా కుబెర్నెటెస్‌పై పారామీటరైజబుల్, అత్యంత స్కేలబుల్, మరియు ప్రైవేట్ ఇతీరియము టెస్టునెట్‌ను త్వరగా ఇన్‌స్టాన్షియేట్ చేయడానికి ఇతీరియము Kurtosis ప్యాకేజీని ఉపయోగించవచ్చు. ఈ ప్యాకేజీ అన్ని ప్రధాన ఎగ్జిక్యూషన్ లేయర్ (EL) మరియు ఏకాభిప్రాయం లేయర్ (CL) క్లయింట్‌లకు మద్దతు ఇస్తుంది. ఇతీరియము కోర్ ఇన్‌ఫ్రాస్ట్రక్చర్‌కు సంబంధించిన ధృవీకరణ మరియు పరీక్ష వర్క్‌ఫ్లోలలో ఉపయోగించడానికి ఒక ప్రతినిధి నెట్వర్క్ కోసం Kurtosis అన్ని స్థానిక పోర్ట్ మ్యాపింగ్‌లు మరియు సర్వీస్ కనెక్షన్‌లను సునాయాసంగా నిర్వహిస్తుంది. + +- [ఇతీరియము నెట్వర్క్ ప్యాకేజీ](https://github.com/kurtosis-tech/ethereum-package) +- [వెబ్‌సైట్](https://www.kurtosis.com/) +- [GitHub](https://github.com/kurtosis-tech/kurtosis) +- [డాక్యుమెంటేషన్](https://docs.kurtosis.com/) + +## మరింత సమాచారం {#further-reading} + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ + +## సంబంధిత అంశాలు {#related-topics} + +- [అభివృద్ధి ఫ్రేమ్‌వర్క్‌లు](/developers/docs/frameworks/) +- [ఒక స్థానిక అభివృద్ధి వాతావరణాన్ని సెటప్ చేయండి](/developers/local-environment/) diff --git a/public/content/translations/te/developers/docs/ethereum-stack/index.md b/public/content/translations/te/developers/docs/ethereum-stack/index.md new file mode 100644 index 00000000000..9ce917ad01e --- /dev/null +++ b/public/content/translations/te/developers/docs/ethereum-stack/index.md @@ -0,0 +1,61 @@ +--- +title: "ఇతీరియము స్టాక్‌కు పరిచయం" +description: "ఇతీరియము స్టాక్‌లోని విభిన్న లేయర్‌లు, అవి ఎలా కలిసి పనిచేస్తాయో అనే దానిపై ఒక వివరణ." +lang: te +--- + +ఏదైనా సాఫ్ట్‌వేర్ స్టాక్ లాగా, పూర్తి "ఇతీరియము స్టాక్" మీ లక్ష్యాలను బట్టి ప్రాజెక్ట్ నుండి ప్రాజెక్ట్‌కు మారుతుంది. + +అయితే, ఇతీరియము యొక్క ప్రధాన భాగాలు ఉన్నాయి, ఇవి సాఫ్ట్‌వేర్ అప్లికేషన్‌లు ఇతీరియము బ్లాక్‌చైన్‌తో ఎలా సంకర్షణ చెందుతాయో ఒక మానసిక నమూనాను అందించడంలో సహాయపడతాయి. స్టాక్ యొక్క లేయర్‌లను అర్థం చేసుకోవడం, ఇతీరియమును సాఫ్ట్‌వేర్ ప్రాజెక్ట్‌లలోకి ఏకీకృతం చేయగల విభిన్న మార్గాలను అర్థం చేసుకోవడంలో మీకు సహాయపడుతుంది. + +## స్థాయి 1: ఎథేరియం వర్చువల్ మషీన్ {#ethereum-virtual-machine} + +[ఎథేరియం వర్చువల్ మషీన్ (EVM)](/developers/docs/evm/) అనేది ఇతీరియములో స్మార్ట్ కాంట్రాక్ట్‌ల కోసం రన్‌టైమ్ వాతావరణం. ఇతీరియము బ్లాక్‌చైన్‌లోని అన్ని స్మార్ట్ కాంట్రాక్టులు మరియు స్థితి మార్పులు [లావాదేవీల](/developers/docs/transactions/) ద్వారా అమలు చేయబడతాయి. EVM ఇతీరియము నెట్‌వర్క్‌లోని అన్ని లావాదేవీల ప్రాసెసింగ్‌ను నిర్వహిస్తుంది. + +ఏదైనా వర్చువల్ మెషీన్‌ మాదిరిగానే, EVM అమలు చేసే కోడ్ మరియు అమలు చేసే మెషీన్ (ఒక ఇతీరియము నోడ్) మధ్య ఒక స్థాయి అమూర్తతను సృష్టిస్తుంది. ప్రస్తుతం, EVM ప్రపంచవ్యాప్తంగా పంపిణీ చేయబడిన వేలాది నోడ్‌లపై నడుస్తోంది. + +లోతుగా పరిశీలిస్తే, నిర్దిష్ట పనులను అమలు చేయడానికి EVM ఆప్‌కోడ్ సూచనల సమితిని ఉపయోగిస్తుంది. ఈ (140 ప్రత్యేకమైన) ఆప్‌కోడ్‌లు EVM [ట్యూరింగ్-కంప్లీట్](https://en.wikipedia.org/wiki/Turing_completeness)గా ఉండటానికి అనుమతిస్తాయి, అంటే తగినంత వనరులు ఇచ్చినప్పుడు EVM దాదాపు ఏదైనా లెక్కించగలదు. + +ఒక డాప్ డెవలపర్‌గా, అది ఉందని, మరియు అది ఇతీరియములోని అన్ని అప్లికేషన్‌లను ఎటువంటి పనికిరాని సమయం లేకుండా విశ్వసనీయంగా శక్తివంతం చేస్తుందని తప్ప మీరు EVM గురించి ఎక్కువగా తెలుసుకోవలసిన అవసరం లేదు. + +## స్థాయి 2: స్మార్ట్ కాంట్రాక్టులు {#smart-contracts} + +[స్మార్ట్ కాంట్రాక్టులు](/developers/docs/smart-contracts/) ఇతీరియము బ్లాక్‌చైన్‌పై నడిచే ఎగ్జిక్యూటబుల్ ప్రోగ్రామ్‌లు. + +స్మార్ట్ కాంట్రాక్టులు EVM బైట్‌కోడ్ (ఆప్‌కోడ్‌లు అని పిలువబడే తక్కువ-స్థాయి మెషిన్ సూచనలు)కి కంపైల్ చేసే నిర్దిష్ట [ప్రోగ్రామింగ్ భాషలను](/developers/docs/smart-contracts/languages/) ఉపయోగించి వ్రాయబడతాయి. + +స్మార్ట్ కాంట్రాక్టులు ఓపెన్ సోర్స్ లైబ్రరీలుగా పనిచేయడమే కాకుండా, అవి తప్పనిసరిగా ఎల్లప్పుడూ నడుస్తూ ఉండే మరియు తొలగించలేని ఓపెన్ API సేవలు. స్మార్ట్ కాంట్రాక్టులు పబ్లిక్ ఫంక్షన్‌లను అందిస్తాయి, వీటితో వినియోగదారులు మరియు అప్లికేషన్‌లు ([డాప్స్](/developers/docs/dapps/)) అనుమతి అవసరం లేకుండా సంకర్షణ చెందవచ్చు. [డేటా ఫీడ్‌లను](/developers/docs/oracles/) జోడించడం లేదా టోకెన్ మార్పిడులకు మద్దతు ఇవ్వడం వంటి కార్యాచరణను కంపోజ్ చేయడానికి ఏదైనా అప్లికేషన్ అమలు చేయబడిన స్మార్ట్ కాంట్రాక్టులతో ఏకీకృతం కావచ్చు. అదనంగా, తమ అప్లికేషన్ అవసరాలను తీర్చడానికి అనుకూల కార్యాచరణను జోడించడానికి ఎవరైనా ఇతీరియముకు కొత్త స్మార్ట్ కాంట్రాక్టులను అమలు చేయవచ్చు. + +ఒక డాప్ డెవలపర్‌గా, మీరు ఇతీరియము బ్లాక్‌చైన్‌పై అనుకూల కార్యాచరణను జోడించాలనుకుంటే మాత్రమే స్మార్ట్ కాంట్రాక్టులను వ్రాయవలసి ఉంటుంది. ఉదాహరణకు, మీరు స్టేబుల్‌కాయిన్‌లలో చెల్లింపులకు మద్దతు ఇవ్వాలనుకుంటే లేదా టోకెన్‌ల వికేంద్రీకృత మార్పిడిని ప్రారంభించాలనుకుంటే, ఇప్పటికే ఉన్న స్మార్ట్ కాంట్రాక్టులతో ఏకీకృతం చేయడం ద్వారా మీ ప్రాజెక్ట్ యొక్క చాలా లేదా అన్ని అవసరాలను సాధించగలరని మీరు కనుగొనవచ్చు. + +## స్థాయి 3: ఇతీరియము నోడ్‌లు {#ethereum-nodes} + +ఒక అప్లికేషన్ ఇతీరియము బ్లాక్‌చైన్‌తో సంకర్షణ చెందడానికి, అది తప్పనిసరిగా ఒక [ఇతీరియము నోడ్](/developers/docs/nodes-and-clients/)కు కనెక్ట్ అవ్వాలి. ఒక నోడ్‌కు కనెక్ట్ చేయడం వలన మీరు బ్లాక్‌చైన్ డేటాను చదవడానికి మరియు/లేదా నెట్‌వర్క్‌కు లావాదేవీలను పంపడానికి అనుమతిస్తుంది. + +ఇతీరియము నోడ్‌లు సాఫ్ట్‌వేర్‌ను నడుపుతున్న కంప్యూటర్‌లు - ఒక ఇతీరియము క్లయింట్. ఒక క్లయింట్ అనేది ఇతీరియము యొక్క అమలు, ఇది ప్రతి బ్లాక్‌లోని అన్ని లావాదేవీలను ధృవీకరిస్తుంది, నెట్‌వర్క్‌ను సురక్షితంగా మరియు డేటాను కచ్చితంగా ఉంచుతుంది. **ఇతీరియము నోడ్‌లే ఇతీరియము బ్లాక్‌చైన్**. అవి సమిష్టిగా ఇతీరియము బ్లాక్‌చైన్ యొక్క స్థితిని నిల్వ చేస్తాయి మరియు బ్లాక్‌చైన్ స్థితిని మార్చడానికి లావాదేవీలపై ఏకాభిప్రాయానికి వస్తాయి. + +మీ అప్లికేషన్‌ను ఒక ఇతీరియము నోడ్‌కు ([JSON-RPC API](/developers/docs/apis/json-rpc/) ద్వారా) కనెక్ట్ చేయడం ద్వారా, మీ అప్లికేషన్ బ్లాక్‌చైన్ నుండి డేటాను (వినియోగదారు ఖాతా బ్యాలెన్స్‌లు వంటివి) చదవగలదు అలాగే నెట్‌వర్క్‌కు కొత్త లావాదేవీలను ప్రసారం చేయగలదు (వినియోగదారు ఖాతాల మధ్య ETH బదిలీ చేయడం లేదా స్మార్ట్ కాంట్రాక్టుల ఫంక్షన్‌లను అమలు చేయడం వంటివి). + +## స్థాయి 4: ఇతీరియము క్లయింట్ APIలు {#ethereum-client-apis} + +ఇతీరియము యొక్క ఓపెన్ సోర్స్ కమ్యూనిటీ నిర్మించి, నిర్వహించే అనేక సౌలభ్య లైబ్రరీలు, మీ అప్లికేషన్‌లు ఇతీరియము బ్లాక్‌చైన్‌కు కనెక్ట్ అవ్వడానికి, కమ్యూనికేట్ చేయడానికి అనుమతిస్తాయి. + +మీ వినియోగదారు-ముఖ అప్లికేషన్ ఒక వెబ్ యాప్ అయితే, మీరు మీ ఫ్రంటెండ్‌లో నేరుగా ఒక [జావాస్క్రిప్ట్ API](/developers/docs/apis/javascript/)ని `npm install` చేయడానికి ఎంచుకోవచ్చు. లేదా బహుశా మీరు ఈ కార్యాచరణను సర్వర్-వైపు, [పైథాన్](/developers/docs/programming-languages/python/) లేదా [జావా](/developers/docs/programming-languages/java/) APIని ఉపయోగించి అమలు చేయడానికి ఎంచుకోవచ్చు. + +ఈ APIలు స్టాక్‌లో అవసరమైన భాగం కానప్పటికీ, అవి నేరుగా ఒక ఇతీరియము నోడ్‌తో సంకర్షణ చెందే సంక్లిష్టతలో అధిక భాగాన్ని తొలగిస్తాయి. అవి యుటిలిటీ ఫంక్షన్‌లను కూడా అందిస్తాయి (ఉదా., ETHను Gweiకి మార్చడం), తద్వారా ఒక డెవలపర్‌గా మీరు ఇతీరియము క్లయింట్‌ల యొక్క చిక్కులతో వ్యవహరించడానికి తక్కువ సమయం కేటాయించి, మీ అప్లికేషన్‌కు ప్రత్యేకమైన కార్యాచరణపై ఎక్కువ సమయం దృష్టి పెట్టవచ్చు. + +## స్థాయి 5: తుది-వినియోగదారు అప్లికేషన్‌లు {#end-user-applications} + +స్టాక్ యొక్క అగ్ర స్థాయిలో వినియోగదారు-ముఖ అప్లికేషన్‌లు ఉన్నాయి. ఇవి మీరు ఈనాడు క్రమం తప్పకుండా ఉపయోగించే మరియు నిర్మించే ప్రామాణిక అప్లికేషన్‌లు: ప్రాథమికంగా వెబ్ మరియు మొబైల్ యాప్‌లు. + +మీరు ఈ వినియోగదారు ఇంటర్‌ఫేస్‌లను అభివృద్ధి చేసే విధానం తప్పనిసరిగా మారదు. తరచుగా వినియోగదారులు వారు ఉపయోగిస్తున్న అప్లికేషన్ బ్లాక్‌చైన్ ఉపయోగించి నిర్మించబడిందని తెలుసుకోవలసిన అవసరం ఉండదు. + +## మీ స్టాక్‌ను ఎంచుకోవడానికి సిద్ధంగా ఉన్నారా? {#ready-to-choose-your-stack} + +మీ ఇతీరియము అప్లికేషన్ కోసం [స్థానిక అభివృద్ధి వాతావరణాన్ని ఏర్పాటు చేయడానికి](/developers/local-environment/) మా గైడ్‌ను చూడండి. + +## మరింత సమాచారం {#further-reading} + +- [ఒక వెబ్ 3.0 అప్లికేషన్ యొక్క నిర్మాణం](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _ప్రీతి కాశిరెడ్డి_ + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ diff --git a/public/content/translations/te/developers/docs/evm/index.md b/public/content/translations/te/developers/docs/evm/index.md new file mode 100644 index 00000000000..4af92e460b3 --- /dev/null +++ b/public/content/translations/te/developers/docs/evm/index.md @@ -0,0 +1,88 @@ +--- +title: "ఎథేరియం వర్చువల్ మషీన్ (EVM)" +description: "ఎథేరియం వర్చువల్ మషీన్‌కు పరిచయం మరియు స్టేట్, లావాదేవీలు, మరియు స్మార్ట్ కాంట్రాక్ట్‌లతో దాని సంబంధం." +lang: te +--- + +ఎథేరియం వర్చువల్ మషీన్ (EVM) అనేది ఒక వికేంద్రీకృత వర్చువల్ వాతావరణం, ఇది అన్ని ఎథేరియం నోడ్‌లలో కోడ్‌ను స్థిరంగా మరియు సురక్షితంగా అమలు చేస్తుంది. స్మార్ట్ కాంట్రాక్టులను అమలు చేయడానికి నోడ్‌లు EVMని నడుపుతాయి, [ఆపరేషన్‌ల](/developers/docs/evm/opcodes/) కోసం అవసరమైన గణన శ్రమను కొలవడానికి "[గ్యాస్](/developers/docs/gas/)"ని ఉపయోగిస్తాయి, ఇది సమర్థవంతమైన వనరుల కేటాయింపు మరియు నెట్‌వర్క్ భద్రతను నిర్ధారిస్తుంది. + +## అవసరాలు {#prerequisites} + +EVMను అర్థం చేసుకోవడానికి, కంప్యూటర్ సైన్స్‌లోని [బైట్స్](https://wikipedia.org/wiki/Byte), [మెమరీ](https://wikipedia.org/wiki/Computer_memory) మరియు ఒక [స్టాక్](https://wikipedia.org/wiki/Stack_\(abstract_data_type\)) వంటి సాధారణ పరిభాషతో కొంత ప్రాథమిక పరిచయం అవసరం. [హాష్ ఫంక్షన్‌లు](https://wikipedia.org/wiki/Cryptographic_hash_function) మరియు [మెర్కిల్ ట్రీ](https://wikipedia.org/wiki/Merkle_tree) వంటి క్రిప్టోగ్రఫీ/బ్లాక్‌చెయిన్ భావనలతో పరిచయం ఉండటం కూడా సహాయకరంగా ఉంటుంది. + +## లెడ్జర్ నుండి స్టేట్ మషీన్ వరకు {#from-ledger-to-state-machine} + +బిట్‌కాయిన్ వంటి బ్లాక్‌చెయిన్‌లను వివరించడానికి 'వికేంద్రీకృత లెడ్జర్' అనే సారూప్యతను తరచుగా ఉపయోగిస్తారు, ఇది క్రిప్టోగ్రఫీ యొక్క ప్రాథమిక సాధనాలను ఉపయోగించి వికేంద్రీకృత కరెన్సీని సాధ్యం చేస్తుంది. లెడ్జర్‌ను సవరించడానికి ఏమి చేయవచ్చు మరియు ఏమి చేయకూడదు అనేదానిని నియంత్రించే నియమాల సమితికి కట్టుబడి ఉండాల్సిన కార్యకలాపాల రికార్డును లెడ్జర్ నిర్వహిస్తుంది. ఉదాహరణకు, ఒక బిట్‌కాయిన్ చిరునామా, తాను గతంలో అందుకున్న దానికంటే ఎక్కువ బిట్‌కాయిన్‌ను ఖర్చు చేయలేదు. ఈ నియమాలు బిట్‌కాయిన్ మరియు అనేక ఇతర బ్లాక్‌చెయిన్‌లలోని అన్ని లావాదేవీలకు ఆధారం. + +ఎథేరియంకి దాని స్వంత స్థానిక క్రిప్టోకరెన్సీ (ఈథర్) ఉంది, ఇది దాదాపు అవే సహజమైన నియమాలను అనుసరించినప్పటికీ, ఇది [స్మార్ట్ కాంట్రాక్ట్‌లు](/developers/docs/smart-contracts/) అనే మరింత శక్తివంతమైన ఫంక్షన్‌ను కూడా సాధ్యం చేస్తుంది. ఈ మరింత క్లిష్టమైన ఫీచర్ కోసం, మరింత అధునాతన సారూప్యత అవసరం. వికేంద్రీకృత లెడ్జర్‌కు బదులుగా, ఎథేరియం ఒక వికేంద్రీకృత [స్టేట్ మషీన్](https://wikipedia.org/wiki/Finite-state_machine). ఎథేరియం యొక్క స్టేట్ అనేది ఒక పెద్ద డేటా నిర్మాణం, ఇది అన్ని ఖాతాలు మరియు బ్యాలెన్స్‌లను మాత్రమే కాకుండా, _మషీన్ స్టేట్‌_ను కూడా కలిగి ఉంటుంది, ఇది ముందుగా నిర్వచించిన నియమాల సమితి ప్రకారం బ్లాక్ నుండి బ్లాక్‌కు మారగలదు మరియు ఏదైనా మెషీన్ కోడ్‌ను అమలు చేయగలదు. బ్లాక్ నుండి బ్లాక్‌కు స్టేట్‌ను మార్చే నిర్దిష్ట నియమాలను EVM నిర్వచిస్తుంది. + +![EVM యొక్క నిర్మాణాన్ని చూపే రేఖాచిత్రం](./evm.png) +_[ఎథేరియం EVM ఇలస్ట్రేటెడ్](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) నుండి స్వీకరించబడిన రేఖాచిత్రం_ + +## ఎథేరియం స్టేట్ ట్రాన్సిషన్ ఫంక్షన్ {#the-ethereum-state-transition-function} + +EVM ఒక గణిత ఫంక్షన్‌లా ప్రవర్తిస్తుంది: ఇన్‌పుట్ ఇచ్చినప్పుడు, అది ఒక నిర్ధారిత అవుట్‌పుట్‌ను ఉత్పత్తి చేస్తుంది. అందువల్ల, ఎథేరియంను అధికారికంగా **స్టేట్ ట్రాన్సిషన్ ఫంక్షన్** ఉన్నట్లుగా వివరించడం సహాయపడుతుంది: + +``` +Y(S, T)= S' +``` + +పాత చెల్లుబాటు అయ్యే స్టేట్ `(S)` మరియు కొత్త చెల్లుబాటు అయ్యే లావాదేవీల సమితి `(T)` ఇచ్చినప్పుడు, ఎథేరియం స్టేట్ ట్రాన్సిషన్ ఫంక్షన్ `Y(S, T)` కొత్త చెల్లుబాటు అయ్యే అవుట్‌పుట్ స్టేట్ `S'`ను ఉత్పత్తి చేస్తుంది. + +### స్టేట్ {#state} + +ఎథేరియం సందర్భంలో, స్టేట్ అనేది [మాడిఫైడ్ మెర్కిల్ ప్యాట్రిసియా ట్రై](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/) అని పిలువబడే ఒక భారీ డేటా నిర్మాణం, ఇది అన్ని [ఖాతాలను](/developers/docs/accounts/) హాష్‌ల ద్వారా లింక్ చేసి ఉంచుతుంది మరియు బ్లాక్‌చెయిన్‌లో నిల్వ చేయబడిన ఒకే రూట్ హాష్‌కు కుదించదగినది. + +### లావాదేవీలు {#transactions} + +లావాదేవీలు ఖాతాల నుండి క్రిప్టోగ్రాఫికల్‌గా సంతకం చేయబడిన సూచనలు. లావాదేవీలలో రెండు రకాలు ఉన్నాయి: మెసేజ్ కాల్స్‌కు దారితీసేవి మరియు కాంట్రాక్ట్ క్రియేషన్‌కు దారితీసేవి. + +కాంట్రాక్ట్ క్రియేషన్ ఫలితంగా, కంపైల్ చేయబడిన [స్మార్ట్ కాంట్రాక్ట్](/developers/docs/smart-contracts/anatomy/) బైట్‌కోడ్‌ను కలిగి ఉన్న కొత్త కాంట్రాక్ట్ ఖాతా సృష్టించబడుతుంది. మరొక ఖాతా ఆ కాంట్రాక్ట్‌కు మెసేజ్ కాల్ చేసినప్పుడల్లా, అది దాని బైట్‌కోడ్‌ను అమలు చేస్తుంది. + +## EVM సూచనలు {#evm-instructions} + +EVM 1024 ఐటెమ్‌ల డెప్త్‌తో ఒక [స్టాక్ మషీన్‌గా](https://wikipedia.org/wiki/Stack_machine) అమలు అవుతుంది. ప్రతి ఐటెమ్ ఒక 256-బిట్ వర్డ్, ఇది 256-బిట్ క్రిప్టోగ్రఫీతో (Keccak-256 హాష్‌లు లేదా secp256k1 సంతకాలు వంటివి) సులభంగా ఉపయోగించడానికి ఎంచుకోబడింది. + +ఎగ్జిక్యూషన్ సమయంలో, EVM ఒక తాత్కాలిక _మెమరీ_ని (వర్డ్-అడ్రెస్డ్ బైట్ అర్రేగా) నిర్వహిస్తుంది, ఇది లావాదేవీల మధ్య నిలిచి ఉండదు. + +### తాత్కాలిక నిల్వ + +తాత్కాలిక నిల్వ అనేది `TSTORE` మరియు `TLOAD` ఆప్‌కోడ్‌ల ద్వారా యాక్సెస్ చేయబడే ప్రతి-లావాదేవీకి ఒక కీ-విలువ స్టోర్. ఇది ఒకే లావాదేవీ సమయంలో అన్ని అంతర్గత కాల్స్ అంతటా నిలిచి ఉంటుంది కానీ లావాదేవీ చివరిలో క్లియర్ చేయబడుతుంది. మెమరీలా కాకుండా, తాత్కాలిక నిల్వ అనేది ఎగ్జిక్యూషన్ ఫ్రేమ్‌కు బదులుగా EVM స్టేట్‌లో ఒక భాగంగా మోడల్ చేయబడింది, అయినప్పటికీ ఇది గ్లోబల్ స్టేట్‌కు కట్టుబడి ఉండదు. తాత్కాలిక నిల్వ ఒక లావాదేవీ సమయంలో అంతర్గత కాల్స్ అంతటా గ్యాస్-సమర్థవంతమైన తాత్కాలిక స్టేట్ షేరింగ్‌ను సాధ్యం చేస్తుంది. + +### స్టోరేజ్ + +కాంట్రాక్ట్‌లు ఒక మెర్కిల్ ప్యాట్రిసియా _నిల్వ_ ట్రైను (ఒక వర్డ్-అడ్రెస్ చేయగల వర్డ్ అర్రేగా) కలిగి ఉంటాయి, ఇది సంబంధిత ఖాతాతో అనుబంధించబడి ఉంటుంది మరియు గ్లోబల్ స్టేట్‌లో ఒక భాగం. ఈ శాశ్వత నిల్వ తాత్కాలిక నిల్వకు భిన్నంగా ఉంటుంది, ఇది ఒకే లావాదేవీ వ్యవధికి మాత్రమే అందుబాటులో ఉంటుంది మరియు ఖాతా యొక్క శాశ్వత నిల్వ ట్రైలో భాగంగా ఉండదు. + +### ఆప్కోడ్లు + +కంపైల్ చేయబడిన స్మార్ట్ కాంట్రాక్ట్ బైట్‌కోడ్ అనేక EVM [ఆప్‌కోడ్‌లుగా](/developers/docs/evm/opcodes) అమలు చేయబడుతుంది, ఇవి `XOR`, `AND`, `ADD`, `SUB` మొదలైన ప్రామాణిక స్టాక్ ఆపరేషన్‌లను నిర్వహిస్తాయి. EVM `ADDRESS`, `BALANCE`, `BLOCKHASH` మొదలైన అనేక బ్లాక్‌చెయిన్-నిర్దిష్ట స్టాక్ ఆపరేషన్‌లను కూడా అమలు చేస్తుంది. ఆప్‌కోడ్ సమితిలో `TSTORE` మరియు `TLOAD` కూడా ఉన్నాయి, ఇవి తాత్కాలిక నిల్వకు యాక్సెస్‌ను అందిస్తాయి. + +![EVM ఆపరేషన్ల కోసం గ్యాస్ ఎక్కడ అవసరమో చూపే రేఖాచిత్రం](../gas/gas.png) +_[ఎథేరియం EVM ఇలస్ట్రేటెడ్](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) నుండి స్వీకరించబడిన రేఖాచిత్రాలు_ + +## EVM ఇంప్లిమెంటేషన్స్ {#evm-implementations} + +EVM యొక్క అన్ని ఇంప్లిమెంటేషన్స్ ఎథేరియం యెల్లోపేపర్‌లో వివరించిన స్పెసిఫికేషన్‌కు కట్టుబడి ఉండాలి. + +ఎథేరియం యొక్క పదేళ్ల చరిత్రలో, EVM అనేక సవరణలకు గురైంది, మరియు వివిధ ప్రోగ్రామింగ్ భాషలలో EVM యొక్క అనేక ఇంప్లిమెంటేషన్స్ ఉన్నాయి. + +[ఎథేరియం ఎగ్జిక్యూషన్ క్లయింట్లు](/developers/docs/nodes-and-clients/#execution-clients) ఒక EVM ఇంప్లిమెంటేషన్‌ను కలిగి ఉంటాయి. అదనంగా, అనేక స్వతంత్ర ఇంప్లిమెంటేషన్స్ ఉన్నాయి, వాటితో సహా: + +- [Py-EVM](https://github.com/ethereum/py-evm) - _Python_ +- [evmone](https://github.com/ethereum/evmone) - _C++_ +- [ethereumjs-vm](https://github.com/ethereumjs/ethereumjs-vm) - _JavaScript_ +- [revm](https://github.com/bluealloy/revm) - _Rust_ + +## మరింత చదవడానికి {#further-reading} + +- [ఎథేరియం యెల్లోపేపర్](https://ethereum.github.io/yellowpaper/paper.pdf) +- [జెల్లోపేపర్ అకా KEVM: Kలో EVM యొక్క సెమాంటిక్స్](https://jellopaper.org/) +- [ది బీజ్‌పేపర్](https://github.com/chronaeon/beigepaper) +- [ఎథేరియం వర్చువల్ మషీన్ ఆప్‌కోడ్‌లు](https://www.ethervm.io/) +- [ఎథేరియం వర్చువల్ మషీన్ ఆప్‌కోడ్స్ ఇంటరాక్టివ్ రిఫరెన్స్](https://www.evm.codes/) +- [సొలిడిటీ డాక్యుమెంటేషన్‌లో ఒక చిన్న పరిచయం](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#index-6) +- [మాస్టరింగ్ ఎథేరియం - ది ఎథేరియం వర్చువల్ మషీన్](https://github.com/ethereumbook/ethereumbook/blob/openedition/13evm.asciidoc) + +## సంబంధిత అంశాలు {#related-topics} + +- [గ్యాస్](/developers/docs/gas/) diff --git a/public/content/translations/te/developers/docs/evm/opcodes/index.md b/public/content/translations/te/developers/docs/evm/opcodes/index.md new file mode 100644 index 00000000000..959166443a9 --- /dev/null +++ b/public/content/translations/te/developers/docs/evm/opcodes/index.md @@ -0,0 +1,177 @@ +--- +title: "EVM కోసం ఆప్‌కోడ్‌లు" +description: "Ethereum వర్చువల్ మిషన్ కోసం అందుబాటులో ఉన్న అన్ని ఆప్‌కోడ్‌ల జాబితా." +lang: te +--- + +## అవలోకనం {#overview} + +ఇది [wolflo/evm-opcodes](https://github.com/wolflo/evm-opcodes) వద్ద EVM సూచన పేజీకి నవీకరించబడిన సంస్కరణ. +[Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf), [Jello Paper](https://jellopaper.org/evm/), మరియు [geth](https://github.com/ethereum/go-ethereum) అమలు నుండి కూడా తీసుకోబడింది. +ఇది ప్రాప్తి చేయగల సూచనగా ఉద్దేశించబడింది, కానీ ఇది ప్రత్యేకంగా కఠినమైనది కాదు. +మీరు ఖచ్చితత్వం గురించి ఖచ్చితంగా తెలుసుకోవాలనుకుంటే మరియు ప్రతి అంచు కేసు గురించి తెలుసుకోవాలనుకుంటే, జెల్లో పేపర్ లేదా క్లయింట్ అమలు చేయడం మంచిది. + +ఇంటరాక్టివ్ సూచన కోసం వెతుకుతున్నారా? [evm.codes](https://www.evm.codes/) ని చూడండి. + +డైనమిక్ గ్యాస్ ఖర్చులతో కూడిన ఆపరేషన్ల కోసం, [gas.md](https://github.com/wolflo/evm-opcodes/blob/main/gas.md)ని చూడండి. + +💡 త్వరిత చిట్కా: మొత్తం లైన్‌లను వీక్షించడానికి, డెస్క్‌టాప్‌లో అడ్డంగా స్క్రోల్ చేయడానికి `[shift] + scroll`ని ఉపయోగించండి. + +| స్టాక్ | పేరు | గ్యాస్ | ప్రారంభ స్టాక్ | ఫలిత స్టాక్ | మెమ్ / నిల్వ | గమనికలు | | +| :----: | :------------- | :---------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------- | +| 00 | STOP | 0 | | | | అమలును నిలిపివేస్తుంది | | +| 01 | ADD | 3 | `a, b` | `a + b` | | (u)int256 సంకలనం మాడ్యులో 2\*\*256 | | +| 02 | MUL | 5 | `a, b` | `a * b` | | (u)int256 గుణకారం మాడ్యులో 2\*\*256 | | +| 03 | SUB | 3 | `a, b` | `a - b` | | (u)int256 వ్యవకలనం మాడ్యులో 2\*\*256 | | +| 04 | DIV | 5 | `a, b` | `a // b` | | uint256 భాగహారం | | +| 05 | SDIV | 5 | `a, b` | `a // b` | | int256 భాగహారం | | +| 06 | MOD | 5 | `a, b` | `a % b` | | uint256 మాడ్యులస్ | | +| 07 | SMOD | 5 | `a, b` | `a % b` | | int256 మాడ్యులస్ | | +| 08 | ADDMOD | 8 | `a, b, N` | `(a + b) % N` | | (u)int256 సంకలనం మాడ్యులో N | | +| 09 | MULMOD | 8 | `a, b, N` | `(a * b) % N` | | (u)int256 గుణకారం మాడ్యులో N | | +| 0A | EXP | [A1](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a1-exp) | `a, b` | `a ** b` | | uint256 ఘాతాంకం మాడ్యులో 2\*\*256 | | +| 0B | SIGNEXTEND | 5 | `b, x` | `SIGNEXTEND(x, b)` | | `x` ని `(b+1)` బైట్ల నుండి 32 బైట్లకు [సైన్ విస్తరించండి](https://wikipedia.org/wiki/Sign_extension) | | +| 0C-0F | _చెల్లనిది_ | | | | | | | +| 10 | LT | 3 | `a, b` | `a < b` | | uint256 కంటే-తక్కువ | | +| 11 | GT | 3 | `a, b` | `a > b` | | uint256 కంటే-ఎక్కువ | | +| 12 | SLT | 3 | `a, b` | `a < b` | | int256 కంటే-తక్కువ | | +| 13 | SGT | 3 | `a, b` | `a > b` | | int256 కంటే-ఎక్కువ | | +| 14 | EQ | 3 | `a, b` | `a == b` | | (u)int256 సమానత్వం | | +| 15 | ISZERO | 3 | `a` | `a == 0` | | (u)int256 సున్నా అయితే | | +| 16 | AND | 3 | `a, b` | `a && b` | | బిట్‌వైజ్ AND | | +| 17 | OR | 3 | `a, b` | `a \\|\\| b` | | బిట్‌వైజ్ OR | | +| 18 | XOR | 3 | `a, b` | `a ^ b` | | బిట్‌వైజ్ XOR | | +| 19 | NOT | 3 | `a` | `~a` | | బిట్‌వైజ్ NOT | | +| 1A | BYTE | 3 | `i, x` | `(x >> (248 - i * 8)) && 0xFF` | | ఎడమ నుండి (u)int256 `x` యొక్క `i`వ బైట్ | | +| 1B | SHL | 3 | `shift, val` | `val << shift` | | ఎడమకు షిఫ్ట్ | | +| 1C | SHR | 3 | `shift, val` | `val >> shift` | | లాజికల్ షిఫ్ట్ రైట్ | | +| 1D | SAR | 3 | `shift, val` | `val >> shift` | | అరిథమెటిక్ షిఫ్ట్ రైట్ | | +| 1E-1F | _చెల్లనిది_ | | | | | | | +| 20 | KECCAK256 | [A2](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a2-sha3) | `ost, len` | `keccak256(mem[ost:ost+len-1])` | | keccak256 | | +| 21-2F | _చెల్లనిది_ | | | | | | | +| 30 | ADDRESS | 2 | `.` | `address(this)` | | అమలు చేస్తున్న కాంట్రాక్టు చిరునామా | | +| 31 | BALANCE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `addr.balance` | | బ్యాలెన్స్, weiలో | | +| 32 | ORIGIN | 2 | `.` | `tx.origin` | | txని ప్రారంభించిన చిరునామా | | +| 33 | CALLER | 2 | `.` | `msg.sender` | | msg పంపినవారి చిరునామా | | +| 34 | CALLVALUE | 2 | `.` | `msg.value` | | msg విలువ, weiలో | | +| 35 | CALLDATALOAD | 3 | `idx` | `msg.data[idx:idx+32]` | | `idx` సూచిక వద్ద msg డేటా నుండి వర్డ్‌ను చదవండి | | +| 36 | CALLDATASIZE | 2 | `.` | `len(msg.data)` | | msg డేటా పొడవు, బైట్లలో | | +| 37 | CALLDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | msg డేటాను కాపీ చేయండి | | +| 38 | CODESIZE | 2 | `.` | `len(this.code)` | | అమలు చేస్తున్న కాంట్రాక్టు కోడ్ పొడవు, బైట్లలో | | +| 39 | CODECOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | అమలు చేస్తున్న కాంట్రాక్టు బైట్‌కోడ్‌ను కాపీ చేయండి | +| 3A | GASPRICE | 2 | `.` | `tx.gasprice` | | tx గ్యాస్ ధర, ఒక యూనిట్ గ్యాస్‌కు weiలో [\*\*](https://eips.ethereum.org/EIPS/eip-1559#gasprice) | | +| 3B | EXTCODESIZE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `len(addr.code)` | | addr వద్ద కోడ్ పరిమాణం, బైట్లలో | | +| 3C | EXTCODECOPY | [A4](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a4-extcodecopy) | `addr, dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | `addr` నుండి కోడ్‌ను కాపీ చేయండి | | +| 3D | RETURNDATASIZE | 2 | `.` | `size` | | చివరి బాహ్య కాల్ నుండి తిరిగి ఇవ్వబడిన డేటా పరిమాణం, బైట్లలో | | +| 3E | RETURNDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | చివరి బాహ్య కాల్ నుండి తిరిగి ఇవ్వబడిన డేటాను కాపీ చేయండి | | +| 3F | EXTCODEHASH | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `hash` | | hash = addr.exists ? keccak256(addr.code) : 0 | | +| 40 | BLOCKHASH | 20 | `blockNum` | `blockHash(blockNum)` | | | | +| 41 | COINBASE | 2 | `.` | `block.coinbase` | | ప్రస్తుత బ్లాక్ యొక్క ప్రతిపాదకుని చిరునామా | | +| 42 | TIMESTAMP | 2 | `.` | `block.timestamp` | | ప్రస్తుత బ్లాక్ యొక్క టైమ్‌స్టాంప్ | | +| 43 | NUMBER | 2 | `.` | `block.number` | | ప్రస్తుత బ్లాక్ సంఖ్య | | +| 44 | PREVRANDAO | 2 | `.` | `randomness beacon` | | రాండమ్‌నెస్ బీకాన్ | | +| 45 | GASLIMIT | 2 | `.` | `block.gaslimit` | | ప్రస్తుత బ్లాక్ యొక్క గ్యాస్ పరిమితి | | +| 46 | CHAINID | 2 | `.` | `chain_id` | | ప్రస్తుత [చైన్ ఐడి](https://eips.ethereum.org/EIPS/eip-155)ని స్టాక్‌పైకి నెట్టండి | | +| 47 | SELFBALANCE | 5 | `.` | `address(this).balance` | | అమలు చేస్తున్న కాంట్రాక్టు బ్యాలెన్స్, weiలో | | +| 48 | BASEFEE | 2 | `.` | `block.basefee` | | ప్రస్తుత బ్లాక్ యొక్క మూల రుసుము | | +| 49 | BLOBHASH | 3 | `idx` | `tx.blob_versioned_hashes[idx]` | | [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) | | +| 4A | BLOBBASEFEE | 2 | `.` | `block.blobbasefee` | | ప్రస్తుత బ్లాక్ యొక్క బ్లాబ్ మూల రుసుము ([EIP-7516](https://eips.ethereum.org/EIPS/eip-7516)) | | +| 4B-4F | _చెల్లనిది_ | | | | | | | +| 50 | POP | 2 | `_anon` | `.` | | స్టాక్ పై నుండి అంశాన్ని తీసివేసి, దానిని విస్మరించండి | | +| 51 | MLOAD | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost` | `mem[ost:ost+32]` | | ఆఫ్‌సెట్ `ost` వద్ద మెమరీ నుండి వర్డ్‌ను చదవండి | | +| 52 | MSTORE | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost:ost+32] := val | మెమరీకి ఒక వర్డ్‌ను వ్రాయండి | | +| 53 | MSTORE8 | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost] := val && 0xFF | మెమరీకి ఒకే బైట్‌ను వ్రాయండి | | +| 54 | SLOAD | [A6](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a6-sload) | `key` | `storage[key]` | | స్టోరేజ్ నుండి వర్డ్‌ను చదవండి | | +| 55 | SSTORE | [A7](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a7-sstore) | `key, val` | `.` | storage[key] := val | స్టోరేజ్‌కు వర్డ్‌ను వ్రాయండి | | +| 56 | JUMP | 8 | `dst` | `.` | | `dst` ఒక చెల్లుబాటు అయ్యే జంప్‌డెస్ట్ అయితే మాత్రమే `$pc := dst` మార్క్ `pc` కేటాయించబడుతుంది | | +| 57 | JUMPI | 10 | `dst, condition` | `.` | | `$pc := condition ? dst : $pc + 1` | | +| 58 | PC | 2 | `.` | `$pc` | | ప్రోగ్రామ్ కౌంటర్ | | +| 59 | MSIZE | 2 | `.` | `len(mem)` | | ప్రస్తుత అమలు సందర్భంలో మెమరీ పరిమాణం, బైట్లలో | | +| 5A | GAS | 2 | `.` | `gasRemaining` | | | | +| 5B | JUMPDEST | 1 | | | చెల్లుబాటు అయ్యే జంప్ గమ్యాన్ని మార్క్ చేయండి | చెల్లుబాటు అయ్యే జంప్ గమ్యం, ఉదాహరణకు పుష్ డేటా లోపల లేని జంప్ గమ్యం | | +| 5C | TLOAD | 100 | `key` | `tstorage[key]` | | తాత్కాలిక స్టోరేజ్ నుండి వర్డ్‌ను చదవండి ([EIP-1153](https://eips.ethereum.org/EIPS/eip-1153)) | | +| 5D | TSTORE | 100 | `key, val` | `.` | tstorage[key] := val | తాత్కాలిక స్టోరేజ్‌కు వర్డ్‌ను వ్రాయండి ([EIP-1153](https://eips.ethereum.org/EIPS/eip-1153)) | | +| 5E | MCOPY | 3+3\*words+[A0](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `dstOst, ost, len` | `.` | mem[dstOst] := mem[ost:ost+len] | ఒక ప్రాంతం నుండి మరొక ప్రాంతానికి మెమరీని కాపీ చేయండి ([EIP-5656](https://eips.ethereum.org/EIPS/eip-5656)) | | +| 5F | PUSH0 | 2 | `.` | `uint8` | | స్థిరమైన విలువ 0ని స్టాక్‌పైకి నెట్టండి | | +| 60 | PUSH1 | 3 | `.` | `uint8` | | 1-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 61 | PUSH2 | 3 | `.` | `uint16` | | 2-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 62 | PUSH3 | 3 | `.` | `uint24` | | 3-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 63 | PUSH4 | 3 | `.` | `uint32` | | 4-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 64 | PUSH5 | 3 | `.` | `uint40` | | 5-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 65 | PUSH6 | 3 | `.` | `uint48` | | 6-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 66 | PUSH7 | 3 | `.` | `uint56` | | 7-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 67 | PUSH8 | 3 | `.` | `uint64` | | 8-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 68 | PUSH9 | 3 | `.` | `uint72` | | 9-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 69 | PUSH10 | 3 | `.` | `uint80` | | 10-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 6A | PUSH11 | 3 | `.` | `uint88` | | 11-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 6B | PUSH12 | 3 | `.` | `uint96` | | 12-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 6C | PUSH13 | 3 | `.` | `uint104` | | 13-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 6D | PUSH14 | 3 | `.` | `uint112` | | 14-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 6E | PUSH15 | 3 | `.` | `uint120` | | 15-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 6F | PUSH16 | 3 | `.` | `uint128` | | 16-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 70 | PUSH17 | 3 | `.` | `uint136` | | 17-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 71 | PUSH18 | 3 | `.` | `uint144` | | 18-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 72 | PUSH19 | 3 | `.` | `uint152` | | 19-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 73 | PUSH20 | 3 | `.` | `uint160` | | 20-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 74 | PUSH21 | 3 | `.` | `uint168` | | 21-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 75 | PUSH22 | 3 | `.` | `uint176` | | 22-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 76 | PUSH23 | 3 | `.` | `uint184` | | 23-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 77 | PUSH24 | 3 | `.` | `uint192` | | 24-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 78 | PUSH25 | 3 | `.` | `uint200` | | 25-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 79 | PUSH26 | 3 | `.` | `uint208` | | 26-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 7A | PUSH27 | 3 | `.` | `uint216` | | 27-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 7B | PUSH28 | 3 | `.` | `uint224` | | 28-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 7C | PUSH29 | 3 | `.` | `uint232` | | 29-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 7D | PUSH30 | 3 | `.` | `uint240` | | 30-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 7E | PUSH31 | 3 | `.` | `uint248` | | 31-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 7F | PUSH32 | 3 | `.` | `uint256` | | 32-బైట్ విలువను స్టాక్‌పైకి నెట్టండి | | +| 80 | DUP1 | 3 | `a` | `a, a` | | స్టాక్‌లో 1వ విలువను క్లోన్ చేయండి | | +| 81 | DUP2 | 3 | `_, a` | `a, _, a` | | స్టాక్‌లో 2వ విలువను క్లోన్ చేయండి | | +| 82 | DUP3 | 3 | `_, _, a` | `a, _, _, a` | | స్టాక్‌లో 3వ విలువను క్లోన్ చేయండి | | +| 83 | DUP4 | 3 | `_, _, _, a` | `a, _, _, _, a` | | స్టాక్‌లో 4వ విలువను క్లోన్ చేయండి | | +| 84 | DUP5 | 3 | `..., a` | `a, ..., a` | | స్టాక్‌లో 5వ విలువను క్లోన్ చేయండి | | +| 85 | DUP6 | 3 | `..., a` | `a, ..., a` | | స్టాక్‌లో 6వ విలువను క్లోన్ చేయండి | | +| 86 | DUP7 | 3 | `..., a` | `a, ..., a` | | స్టాక్‌లో 7వ విలువను క్లోన్ చేయండి | | +| 87 | DUP8 | 3 | `..., a` | `a, ..., a` | | స్టాక్‌లో 8వ విలువను క్లోన్ చేయండి | | +| 88 | DUP9 | 3 | `..., a` | `a, ..., a` | | స్టాక్‌లో 9వ విలువను క్లోన్ చేయండి | | +| 89 | DUP10 | 3 | `..., a` | `a, ..., a` | | స్టాక్‌లో 10వ విలువను క్లోన్ చేయండి | | +| 8A | DUP11 | 3 | `..., a` | `a, ..., a` | | స్టాక్‌లో 11వ విలువను క్లోన్ చేయండి | | +| 8B | DUP12 | 3 | `..., a` | `a, ..., a` | | స్టాక్‌లో 12వ విలువను క్లోన్ చేయండి | | +| 8C | DUP13 | 3 | `..., a` | `a, ..., a` | | స్టాక్‌లో 13వ విలువను క్లోన్ చేయండి | | +| 8D | DUP14 | 3 | `..., a` | `a, ..., a` | | స్టాక్‌లో 14వ విలువను క్లోన్ చేయండి | | +| 8E | DUP15 | 3 | `..., a` | `a, ..., a` | | స్టాక్‌లో 15వ విలువను క్లోన్ చేయండి | | +| 8F | DUP16 | 3 | `..., a` | `a, ..., a` | | స్టాక్‌లో 16వ విలువను క్లోన్ చేయండి | | +| 90 | SWAP1 | 3 | `a, b` | `b, a` | | | | +| 91 | SWAP2 | 3 | `a, _, b` | `b, _, a` | | | | +| 92 | SWAP3 | 3 | `a, _, _, b` | `b, _, _, a` | | | | +| 93 | SWAP4 | 3 | `a, _, _, _, b` | `b, _, _, _, a` | | | | +| 94 | SWAP5 | 3 | `a, ..., b` | `b, ..., a` | | | | +| 95 | SWAP6 | 3 | `a, ..., b` | `b, ..., a` | | | | +| 96 | SWAP7 | 3 | `a, ..., b` | `b, ..., a` | | | | +| 97 | SWAP8 | 3 | `a, ..., b` | `b, ..., a` | | | | +| 98 | SWAP9 | 3 | `a, ..., b` | `b, ..., a` | | | | +| 99 | SWAP10 | 3 | `a, ..., b` | `b, ..., a` | | | | +| 9A | SWAP11 | 3 | `a, ..., b` | `b, ..., a` | | | | +| 9B | SWAP12 | 3 | `a, ..., b` | `b, ..., a` | | | | +| 9C | SWAP13 | 3 | `a, ..., b` | `b, ..., a` | | | | +| 9D | SWAP14 | 3 | `a, ..., b` | `b, ..., a` | | | | +| 9E | SWAP15 | 3 | `a, ..., b` | `b, ..., a` | | | | +| 9F | SWAP16 | 3 | `a, ..., b` | `b, ..., a` | | | | +| A0 | LOG0 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len` | `.` | | LOG0(memory[ost:ost+len-1]) | | +| A1 | LOG1 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0` | `.` | | LOG1(memory[ost:ost+len-1], topic0) | | +| A2 | LOG2 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1` | `.` | | LOG2(memory[ost:ost+len-1], topic0, topic1) | | +| A3 | LOG3 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2` | `.` | | LOG3(memory[ost:ost+len-1], topic0, topic1, topic2) | | +| A4 | LOG4 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2, topic3` | `.` | | LOG4(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) | | +| A5-EF | _చెల్లనిది_ | | | | | | | +| F0 | CREATE | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len` | `addr` | | addr = keccak256(rlp([address(this), this.nonce])) | | +| F1 | CALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | gas, addr, val, argOst, argLen, retOst, retLen | `success` | mem[retOst:retOst+retLen-1] := returndata | | | +| F2 | CALLCODE | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, val, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] = returndata | DELEGATECALL లాంటిదే, కానీ అసలైన msg.sender మరియు msg.valueని ప్రచారం చేయదు | | +| F3 | RETURN | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | mem[ost:ost+len-1]ను తిరిగి పంపుతుంది | | +| F4 | DELEGATECALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | | | +| F5 | CREATE2 | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len, salt` | `addr` | | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] | | +| F6-F9 | _చెల్లనిది_ | | | | | | | +| FA | STATICCALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | | | +| FB-FC | _చెల్లనిది_ | | | | | | | +| FD | REVERT | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | revert(mem[ost:ost+len-1]) | | +| FE | INVALID | [AF](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid) | | | నియమించబడిన చెల్లని ఆప్కోడ్ - [EIP-141](https://eips.ethereum.org/EIPS/eip-141) | | | +| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `.` | | `addr`కు అన్ని ETHలను పంపుతుంది; ఒక కాంట్రాక్టు సృష్టించబడిన అదే లావాదేవీలో అమలు చేయబడితే అది కాంట్రాక్టును నాశనం చేస్తుంది | | diff --git a/public/content/translations/te/developers/docs/frameworks/index.md b/public/content/translations/te/developers/docs/frameworks/index.md new file mode 100644 index 00000000000..57074c831ee --- /dev/null +++ b/public/content/translations/te/developers/docs/frameworks/index.md @@ -0,0 +1,155 @@ +--- +title: "డాప్ అభివృద్ధి ఫ్రేమ్‌వర్క్‌లు" +description: "ఫ్రేమ్‌వర్క్‌ల ప్రయోజనాలను అన్వేషించండి మరియు అందుబాటులో ఉన్న ఎంపికలను పోల్చండి." +lang: te +--- + +## ఫ్రేమ్‌వర్క్‌లకు పరిచయం {#introduction-to-frameworks} + +పూర్తిస్థాయి డాప్‌ను నిర్మించడానికి +వివిధ రకాల సాంకేతికత అవసరం. సాఫ్ట్‌వేర్ ఫ్రేమ్‌వర్క్‌లు అవసరమైన అనేక +ఫీచర్లను కలిగి ఉంటాయి లేదా మీకు కావలసిన ఉపకరణాలను ఎంచుకోవడానికి సులభమైన ప్లగిన్ సిస్టమ్‌లను అందిస్తాయి. + +ఫ్రేమ్‌వర్క్‌లు చాలా అవుట్-ఆఫ్-ది-బాక్స్ కార్యాచరణతో వస్తాయి, +ఉదాహరణకు: + +- లోకల్ బ్లాక్ చెయిన్ ఇన్ స్టెన్స్ ను స్పిన్ చేసే ఫీచర్లు. +- మీ స్మార్ట్ కాంట్రాక్ట్‌లను కంపైల్ చేయడానికి మరియు పరీక్షించడానికి యుటిలిటీలు. +- అదే ప్రాజెక్ట్/రిపోజిటరీలో మీ యూజర్-ఫేసింగ్ అప్లికేషన్‌ను + నిర్మించడానికి క్లయింట్ అభివృద్ధి యాడ్-ఆన్‌లు. +- స్థానికంగా నడుస్తున్న ఇన్‌స్టాన్స్‌కు అయినా, లేదా Ethereum యొక్క + పబ్లిక్ నెట్‌వర్క్‌లలో ఒకదానికి అయినా, Ethereum నెట్‌వర్క్‌లకు కనెక్ట్ చేయడానికి మరియు కాంట్రాక్ట్‌లను డిప్లాయ్ చేయడానికి కాన్ఫిగరేషన్. +- వికేంద్రీకృత యాప్ పంపిణీ - IPFS వంటి స్టోరేజ్ + ఎంపికలతో ఇంటిగ్రేషన్‌లు. + +## అవసరాలు {#prerequisites} + +ఫ్రేమ్‌వర్క్‌లలోకి వెళ్ళే ముందు, మీరు మొదట మా [డాప్స్](/developers/docs/dapps/) పరిచయం మరియు [Ethereum స్టాక్](/developers/docs/ethereum-stack/) ద్వారా చదవాలని మేము సిఫార్సు చేస్తున్నాము. + +## అందుబాటులో ఉన్న ఫ్రేమ్‌వర్క్‌లు {#available-frameworks} + +**Foundry** - **_Foundry అనేది Ethereum అప్లికేషన్ అభివృద్ధి కోసం అత్యంత వేగవంతమైన, పోర్టబుల్ మరియు మాడ్యులర్ టూల్‌కిట్_** + +- [Foundryని ఇన్‌స్టాల్ చేయండి](https://book.getfoundry.sh/) +- [Foundry పుస్తకం](https://book.getfoundry.sh/) +- [Telegramలో Foundry కమ్యూనిటీ చాట్](https://t.me/foundry_support) +- [ఆసమ్ Foundry](https://github.com/crisgarner/awesome-foundry) + +**Hardhat -** **_నిపుణుల కోసం Ethereum అభివృద్ధి వాతావరణం._** + +- [hardhat.org](https://hardhat.org) +- [GitHub](https://github.com/nomiclabs/hardhat) + +**Ape -** **_పైథానిస్టాలు, డేటా సైంటిస్టులు మరియు సెక్యూరిటీ నిపుణుల కోసం స్మార్ట్ కాంట్రాక్ట్ డెవలప్‌మెంట్ టూల్._** + +- [డాక్యుమెంటేషన్](https://docs.apeworx.io/ape/stable/) +- [GitHub](https://github.com/ApeWorX/ape) + +**Web3j -** **_JVMలో బ్లాక్‌చైన్ అప్లికేషన్‌లను అభివృద్ధి చేయడానికి ఒక ప్లాట్‌ఫారమ్._** + +- [హోమ్‌పేజీ](https://www.web3labs.com/web3j-sdk) +- [డాక్యుమెంటేషన్](https://docs.web3j.io) +- [GitHub](https://github.com/web3j/web3j) + +**ethers-kt -** **_EVM-ఆధారిత బ్లాక్‌చైన్‌ల కోసం అసింక్, అధిక-పనితీరు గల కోట్లిన్/జావా/ఆండ్రాయిడ్ లైబ్రరీ._** + +- [GitHub](https://github.com/Kr1ptal/ethers-kt) +- [ఉదాహరణలు](https://github.com/Kr1ptal/ethers-kt/tree/master/examples) +- [Discord](https://discord.gg/rx35NzQGSb) + +**Create Eth App -** **_ఒకే ఆదేశంతో Ethereum-ఆధారిత యాప్‌లను సృష్టించండి. ఎంచుకోవడానికి విస్తృత శ్రేణి UI ఫ్రేమ్‌వర్క్‌లు మరియు DeFi టెంప్లేట్‌లతో వస్తుంది._** + +- [GitHub](https://github.com/paulrberg/create-eth-app) +- [టెంప్లేట్‌లు](https://github.com/PaulRBerg/create-eth-app/tree/develop/templates) + +**Scaffold-Eth -** **_వెబ్3 కోసం Ethers.js + Hardhat + రియాక్ట్ కాంపోనెంట్స్ మరియు హుక్స్: స్మార్ట్ కాంట్రాక్ట్‌ల ద్వారా ఆధారితమైన వికేంద్రీకృత అప్లికేషన్‌లను నిర్మించడం ప్రారంభించడానికి మీకు అవసరమైన ప్రతిదీ._** + +- [GitHub](https://github.com/scaffold-eth/scaffold-eth-2) + +**Tenderly -** **_బ్లాక్‌చైన్ డెవలపర్‌లు స్మార్ట్ కాంట్రాక్ట్‌లను నిర్మించడానికి, పరీక్షించడానికి, డీబగ్ చేయడానికి, పర్యవేక్షించడానికి మరియు ఆపరేట్ చేయడానికి మరియు డాప్ UXని మెరుగుపరచడానికి వీలు కల్పించే Web3 అభివృద్ధి ప్లాట్‌ఫారమ్._** + +- [వెబ్‌సైట్](https://tenderly.co/) +- [డాక్యుమెంటేషన్](https://docs.tenderly.co/) + +**The Graph -** **_బ్లాక్‌చైన్ డేటాను సమర్థవంతంగా క్వెరీ చేయడానికి The Graph._** + +- [వెబ్‌సైట్](https://thegraph.com/) +- [ట్యుటోరియల్](/developers/tutorials/the-graph-fixing-web3-data-querying/) + +**Alchemy -** **_Ethereum అభివృద్ధి ప్లాట్‌ఫారమ్._** + +- [alchemy.com](https://www.alchemy.com/) +- [GitHub](https://github.com/alchemyplatform) +- [Discord](https://discord.com/invite/alchemyplatform) + +**NodeReal -** **_Ethereum అభివృద్ధి ప్లాట్‌ఫారమ్._** + +- [Nodereal.io](https://nodereal.io/) +- [GitHub](https://github.com/node-real) +- [Discord](https://discord.gg/V5k5gsuE) + +**thirdweb SDK -** **_మా శక్తివంతమైన SDKలు మరియు CLIని ఉపయోగించి మీ స్మార్ట్ కాంట్రాక్ట్‌లతో ఇంటరాక్ట్ అవగల వెబ్3 అప్లికేషన్‌లను నిర్మించండి._** + +- [డాక్యుమెంటేషన్](https://portal.thirdweb.com/sdk/) +- [GitHub](https://github.com/thirdweb-dev/) + +**Chainstack -** **_Web3 (Ethereum మరియు ఇతర) అభివృద్ధి ప్లాట్‌ఫారమ్._** + +- [chainstack.com](https://www.chainstack.com/) +- [GitHub](https://github.com/chainstack) +- [Discord](https://discord.gg/BSb5zfp9AT) + +**Crossmint -** **_ఎంటర్‌ప్రైజ్-గ్రేడ్ వెబ్3 అభివృద్ధి ప్లాట్‌ఫారమ్, ఇది అన్ని ప్రధాన EVM చైన్‌లలో (మరియు ఇతర వాటిలో) NFT అప్లికేషన్‌లను నిర్మించడానికి మిమ్మల్ని అనుమతిస్తుంది._** + +- [వెబ్‌సైట్](https://www.crossmint.com) +- [డాక్యుమెంటేషన్](https://docs.crossmint.com) +- [Discord](https://discord.com/invite/crossmint) + +**Brownie -** **_పైథాన్-ఆధారిత అభివృద్ధి వాతావరణం మరియు టెస్టింగ్ ఫ్రేమ్‌వర్క్._** + +- [డాక్యుమెంటేషన్](https://eth-brownie.readthedocs.io/en/latest/) +- [GitHub](https://github.com/eth-brownie/brownie) +- **Brownie ప్రస్తుతం మెయింటెయిన్ చేయబడటం లేదు** + +**OpenZeppelin SDK -** **_అల్టిమేట్ స్మార్ట్ కాంట్రాక్ట్ టూల్‌కిట్: స్మార్ట్ కాంట్రాక్ట్‌లను అభివృద్ధి చేయడానికి, కంపైల్ చేయడానికి, అప్‌గ్రేడ్ చేయడానికి, డిప్లాయ్ చేయడానికి మరియు ఇంటరాక్ట్ అవ్వడానికి మీకు సహాయపడటానికి ఉపకరణాల సూట్._** + +- [OpenZeppelin డిఫెండర్ SDK](https://docs.openzeppelin.com/defender/sdk) +- [GitHub](https://github.com/OpenZeppelin/openzeppelin-sdk) +- [కమ్యూనిటీ ఫోరమ్](https://forum.openzeppelin.com/c/support/17) +- **OpenZeppelin SDK అభివృద్ధి ముగిసింది** + +**Catapulta -** **_మల్టీ-చైన్ స్మార్ట్ కాంట్రాక్ట్‌ల డిప్లాయ్‌మెంట్ టూల్, బ్లాక్ ఎక్స్‌ప్లోరర్‌లలో ధృవీకరణలను ఆటోమేట్ చేస్తుంది, డిప్లాయ్ చేసిన స్మార్ట్ కాంట్రాక్ట్‌లను ట్రాక్ చేస్తుంది మరియు డిప్లాయ్‌మెంట్ నివేదికలను పంచుకుంటుంది, Foundry మరియు Hardhat ప్రాజెక్ట్‌ల కోసం ప్లగ్-ఎన్-ప్లే._** + +- [వెబ్‌సైట్](https://catapulta.sh/) +- [డాక్యుమెంటేషన్](https://catapulta.sh/docs) +- [Github](https://github.com/catapulta-sh) + +**GoldRush (Covalent ద్వారా ఆధారితం) -** **_GoldRush డెవలపర్‌లు, విశ్లేషకులు మరియు ఎంటర్‌ప్రైజెస్‌ల కోసం అత్యంత సమగ్రమైన బ్లాక్‌చైన్ డేటా ఎపిఐ సూట్‌ను అందిస్తుంది. మీరు DeFi డాష్‌బోర్డ్, వాలెట్, ట్రేడింగ్ బాట్, AI ఏజెంట్ లేదా కంప్లయన్స్ ప్లాట్‌ఫామ్‌ను నిర్మిస్తున్నా, డేటా APIలు మీకు అవసరమైన ఆన్‌చైన్ డేటాకు వేగవంతమైన, ఖచ్చితమైన మరియు డెవలపర్-స్నేహపూర్వక యాక్సెస్‌ను అందిస్తాయి_** + +- [వెబ్‌సైట్](https://goldrush.dev/) +- [డాక్యుమెంటేషన్](https://goldrush.dev/docs/chains/ethereum) +- [GitHub](https://github.com/covalenthq) +- [Discord](https://www.covalenthq.com/discord/) + +**Wake -** **_కాంట్రాక్టుల టెస్టింగ్, ఫజ్జింగ్, డిప్లాయ్‌మెంట్, వల్నరబిలిటీ స్కానింగ్ మరియు కోడ్ నావిగేషన్ కోసం ఆల్-ఇన్-వన్ పైథాన్ ఫ్రేమ్‌వర్క్._** + +- [హోమ్‌పేజీ](https://getwake.io/) +- [డాక్యుమెంటేషన్](https://ackeeblockchain.com/wake/docs/latest/) +- [GitHub](https://github.com/Ackee-Blockchain/wake) +- [VS కోడ్ ఎక్స్‌టెన్షన్](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity) + +**Veramo -** **_ఓపెన్ సోర్స్, మాడ్యులర్ మరియు అగ్నోస్టిక్ ఫ్రేమ్‌వర్క్, ఇది వికేంద్రీకృత అప్లికేషన్ డెవలపర్‌లు వారి అప్లికేషన్‌లలో వికేంద్రీకృత గుర్తింపులు మరియు ధృవీకరించదగిన ఆధారాలను నిర్మించడాన్ని సులభతరం చేస్తుంది._** + +- [హోమ్‌పేజీ](https://veramo.io/) +- [డాక్యుమెంటేషన్](https://veramo.io/docs/basics/introduction) +- [GitHub](https://github.com/uport-project/veramo) +- [Discord](https://discord.com/invite/FRRBdjemHV) +- [NPM ప్యాకేజీ](https://www.npmjs.com/package/@veramo/core) + +## మరింత సమాచారం {#further-reading} + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ + +## సంబంధిత అంశాలు {#related-topics} + +- [ఒక స్థానిక అభివృద్ధి వాతావరణాన్ని సెటప్ చేయండి](/developers/local-environment/) diff --git a/public/content/translations/te/developers/docs/gas/index.md b/public/content/translations/te/developers/docs/gas/index.md new file mode 100644 index 00000000000..b2a9c5fdb6a --- /dev/null +++ b/public/content/translations/te/developers/docs/gas/index.md @@ -0,0 +1,151 @@ +--- +title: "గ్యాస్ మరియు ఫీజు" +metaTitle: "ఇతీరియము గ్యాస్ మరియు ఫీజులు: సాంకేతిక అవలోకనం" +description: "ఇతీరియము గ్యాస్ ఫీజుల గురించి, అవి ఎలా లెక్కించబడతాయి మరియు నెట్‌వర్క్ భద్రత మరియు లావాదేవీల ప్రాసెసింగ్‌లో వాటి పాత్ర గురించి తెలుసుకోండి." +lang: te +--- + +Ethereum నెట్‌వర్క్‌కు గ్యాస్ అవసరం. కారు నడపడానికి గ్యాసోలిన్ అవసరమయ్యే విధంగానే, అది పనిచేయడానికి అనుమతించే ఇంధనం. + +## అవసరాలు {#prerequisites} + +ఈ పేజీని బాగా అర్థం చేసుకోవడానికి, మీరు ముందుగా [లావాదేవీలు](/developers/docs/transactions/) మరియు [EVM](/developers/docs/evm/) గురించి చదవాలని మేము సిఫార్సు చేస్తున్నాము. + +## గ్యాస్ అంటే ఏంటి? {#what-is-gas} + +గ్యాస్ అనేది Ethereum నెట్‌వర్క్‌లో నిర్దిష్ట కార్యకలాపాలను అమలు చేయడానికి అవసరమైన గణన ప్రయత్నాన్ని కొలిచే యూనిట్‌ను సూచిస్తుంది. + +ప్రతి ఇతీరియము లావాదేవీని అమలు చేయడానికి గణన వనరులు అవసరం కాబట్టి, ఇతీరియము స్పామ్‌కు గురికాకుండా మరియు అనంతమైన గణన లూప్‌లలో చిక్కుకుపోకుండా చూసుకోవడానికి ఆ వనరులకు చెల్లించాల్సి ఉంటుంది. గణన కోసం చెల్లింపు గ్యాస్ రుసుము రూపంలో చేయబడుతుంది. + +గ్యాస్ రుసుము అనేది **కొంత ఆపరేషన్ చేయడానికి ఉపయోగించిన గ్యాస్ మొత్తం, యూనిట్ గ్యాస్‌కు అయ్యే ఖర్చుతో గుణించబడుతుంది**. లావాదేవీ విజయవంతమైనా లేదా విఫలమైనా రుసుము చెల్లించబడుతుంది. + +![EVM ఆపరేషన్లలో గ్యాస్ ఎక్కడ అవసరమో చూపే రేఖాచిత్రం](./gas.png) +_[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) నుండి స్వీకరించబడిన రేఖాచిత్రం_ + +గ్యాస్ ఫీజులను ఇతీరియము యొక్క స్థానిక కరెన్సీ, ఈథర్ (ETH)లో చెల్లించాలి. గ్యాస్ ధరలు సాధారణంగా గ్విలో కోట్ చేయబడతాయి, ఇది ETH యొక్క ఒక డినామినేషన్. ప్రతి గ్వి ఒక ETHలో ఒక బిలియన్వ వంతుకు సమానం (0.000000001 ETH లేదా 10-9 ETH). + +ఉదాహరణకు, మీ గ్యాస్ ఖర్చు 0.000000001 ఈథర్ అని చెప్పడానికి బదులుగా, మీ గ్యాస్ ఖర్చు 1 గ్వి అని మీరు చెప్పవచ్చు. + +'గ్వి' అనే పదం 'గీగా-వీ' యొక్క సంక్షిప్త రూపం, అంటే 'బిలియన్ వీ'. ఒక గ్వి ఒక బిలియన్ వీకి సమానం. వీ ([b-money](https://www.investopedia.com/terms/b/bmoney.asp) సృష్టికర్త [వీ డై](https://wikipedia.org/wiki/Wei_Dai) పేరు మీద) ETH యొక్క అతి చిన్న యూనిట్. + +## గ్యాస్ ఫీజులు ఎలా లెక్కించబడతాయి? {#how-are-gas-fees-calculated} + +మీరు లావాదేవీని సమర్పించినప్పుడు చెల్లించడానికి సిద్ధంగా ఉన్న గ్యాస్ మొత్తాన్ని మీరు సెట్ చేయవచ్చు. నిర్దిష్ట మొత్తంలో గ్యాస్‌ను అందించడం ద్వారా, మీరు మీ లావాదేవీని తదుపరి బ్లాక్‌లో చేర్చడానికి బిడ్డింగ్ చేస్తున్నారు. మీరు చాలా తక్కువ ఆఫర్ చేస్తే, వ్యాలిడేటర్‌లు మీ లావాదేవీని చేర్చడానికి ఎంచుకునే అవకాశం తక్కువగా ఉంటుంది, అంటే మీ లావాదేవీ ఆలస్యంగా అమలు కావచ్చు లేదా అస్సలు అమలు కాకపోవచ్చు. మీరు చాలా ఎక్కువ ఆఫర్ చేస్తే, మీరు కొంత ETHని వృధా చేయవచ్చు. కాబట్టి, ఎంత చెల్లించాలో మీరు ఎలా చెప్పగలరు? + +మీరు చెల్లించే మొత్తం గ్యాస్ రెండు భాగాలుగా విభజించబడింది: `మూల రుసుము` మరియు `ప్రాధాన్యత రుసుము` (టిప్). + +`మూల రుసుము` ప్రోటోకాల్ ద్వారా సెట్ చేయబడింది—మీ లావాదేవీ చెల్లుబాటు అయ్యేదిగా పరిగణించబడటానికి మీరు కనీసం ఈ మొత్తాన్ని చెల్లించాలి. `ప్రాధాన్యత రుసుము` అనేది మీ లావాదేవీని వ్యాలిడేటర్‌లకు ఆకర్షణీయంగా చేయడానికి మూల రుసుముకు మీరు జోడించే ఒక టిప్, తద్వారా వారు దానిని తదుపరి బ్లాక్‌లో చేర్చడానికి ఎంచుకుంటారు. + +`మూల రుసుము` మాత్రమే చెల్లించే లావాదేవీ సాంకేతికంగా చెల్లుబాటు అవుతుంది కానీ చేర్చబడే అవకాశం లేదు ఎందుకంటే ఇది వ్యాలిడేటర్‌లకు ఏ ఇతర లావాదేవీ కంటే దానిని ఎంచుకోవడానికి ఎటువంటి ప్రోత్సాహకాన్ని అందించదు. 'సరైన' `ప్రాధాన్యత` రుసుము మీరు మీ లావాదేవీని పంపే సమయంలో నెట్‌వర్క్ వినియోగం ద్వారా నిర్ణయించబడుతుంది—ఎక్కువ డిమాండ్ ఉంటే మీరు మీ `ప్రాధాన్యత` రుసుమును ఎక్కువగా సెట్ చేయాల్సి రావచ్చు, కానీ తక్కువ డిమాండ్ ఉన్నప్పుడు మీరు తక్కువ చెల్లించవచ్చు. + +ఉదాహరణకు, జోర్డాన్ టేలర్‌కు 1 ETH చెల్లించాల్సి ఉందని అనుకుందాం. ఒక ETH బదిలీకి 21,000 యూనిట్ల గ్యాస్ అవసరం, మరియు మూల రుసుము 10 గ్వి. జోర్డాన్ 2 గ్వి టిప్‌ను కలిగి ఉంది. + +మొత్తం రుసుము ఇప్పుడు దీనికి సమానంగా ఉంటుంది: + +`ఉపయోగించిన గ్యాస్ యూనిట్లు * (మూల రుసుము + ప్రాధాన్యత రుసుము)` + +ఇక్కడ `మూల రుసుము` అనేది ప్రోటోకాల్ ద్వారా సెట్ చేయబడిన విలువ మరియు `ప్రాధాన్యత రుసుము` అనేది వినియోగదారుడు వ్యాలిడేటర్‌కు టిప్‌గా సెట్ చేసిన విలువ. + +ఉదా., `21,000 * (10 + 2) = 252,000 గ్వి` (0.000252 ETH). + +జోర్డాన్ డబ్బు పంపినప్పుడు, జోర్డాన్ ఖాతా నుండి 1.000252 ETH తీసివేయబడుతుంది. టేలర్‌కు 1.0000 ETH క్రెడిట్ చేయబడుతుంది. వ్యాలిడేటర్ 0.000042 ETH టిప్‌ను పొందుతుంది. 0.00021 ETH `మూల రుసుము` బర్న్ చేయబడుతుంది. + +### మూల రుసుము {#base-fee} + +ప్రతి బ్లాక్‌కు ఒక మూల రుసుము ఉంటుంది, ఇది రిజర్వ్ ధరగా పనిచేస్తుంది. ఒక బ్లాక్‌లో చేర్చడానికి అర్హత పొందాలంటే, గ్యాస్‌కు అందించే ధర కనీసం మూల రుసుముకు సమానంగా ఉండాలి. మూల రుసుము ప్రస్తుత బ్లాక్‌తో సంబంధం లేకుండా లెక్కించబడుతుంది మరియు బదులుగా దాని ముందు ఉన్న బ్లాక్‌ల ద్వారా నిర్ణయించబడుతుంది, ఇది వినియోగదారులకు లావాదేవీల ఫీజులను మరింత ఊహించగలిగేలా చేస్తుంది. బ్లాక్ సృష్టించబడినప్పుడు ఈ **మూల రుసుము "బర్న్ చేయబడుతుంది"**, దానిని సర్క్యులేషన్ నుండి తొలగిస్తుంది. + +మునుపటి బ్లాక్ పరిమాణాన్ని (అన్ని లావాదేవీలకు ఉపయోగించిన గ్యాస్ మొత్తం) లక్ష్య పరిమాణంతో (గ్యాస్ పరిమితిలో సగం) పోల్చే ఫార్ములా ద్వారా మూల రుసుము లెక్కించబడుతుంది. లక్ష్య బ్లాక్ పరిమాణం లక్ష్యం కంటే ఎక్కువగా లేదా తక్కువగా ఉంటే, మూల రుసుము వరుసగా ప్రతి బ్లాక్‌కు గరిష్టంగా 12.5% పెరుగుతుంది లేదా తగ్గుతుంది. ఈ ఘాతాంక పెరుగుదల బ్లాక్ పరిమాణం నిరవధికంగా ఎక్కువగా ఉండటానికి ఆర్థికంగా లాభదాయకం కాదు. + +| బ్లాక్ నంబర్ | చేర్చబడిన గ్యాస్ | రుసుము పెరుగుదల | ప్రస్తుత మూల రుసుము | +| ------------ | ---------------: | --------------------: | -------------------------: | +| 1 | 18M | 0% | 100 గ్వి | +| 2 | 36M | 0% | 100 గ్వి | +| 3 | 36M | 12.5% | 112.5 గ్వి | +| 4 | 36M | 12.5% | 126.6 గ్వి | +| 5 | 36M | 12.5% | 142.4 గ్వి | +| 6 | 36M | 12.5% | 160.2 గ్వి | +| 7 | 36M | 12.5% | 180.2 గ్వి | +| 8 | 36M | 12.5% | 202.7 గ్వి | + +పై పట్టికలో, గ్యాస్ పరిమితిగా 36 మిలియన్లను ఉపయోగించి ఒక ఉదాహరణ ప్రదర్శించబడింది. ఈ ఉదాహరణను అనుసరించి, బ్లాక్ నంబర్ 9లో లావాదేవీని సృష్టించడానికి, తదుపరి బ్లాక్‌కు జోడించాల్సిన **గరిష్ట మూల రుసుము** `ప్రస్తుత మూల రుసుము * 112.5%` లేదా `202.7 gwei * 112.5% = 228.1 gwei` అని ఒక వాలెట్ వినియోగదారుడికి ఖచ్చితంగా తెలియజేస్తుంది. + +పూర్తి బ్లాక్‌కు ముందు మూల రుసుము పెరిగే వేగం కారణంగా పూర్తి బ్లాక్‌ల విస్తృతమైన స్పైక్‌లను మనం చూసే అవకాశం లేదని కూడా గమనించడం ముఖ్యం. + +| బ్లాక్ నంబర్ | చేర్చబడిన గ్యాస్ | రుసుము పెరుగుదల | ప్రస్తుత మూల రుసుము | +| --------------------------------------------------- | --------------------------------------------------: | --------------------: | --------------------------------------------------: | +| 30 | 36M | 12.5% | 2705.6 గ్వి | +| ... | ... | 12.5% | ... | +| 50 | 36M | 12.5% | 28531.3 గ్వి | +| ... | ... | 12.5% | ... | +| 100 | 36M | 12.5% | 10302608.6 గ్వి | + +### ప్రాధాన్యత రుసుము (టిప్స్) {#priority-fee} + +ప్రాధాన్యత రుసుము (టిప్) బ్లాక్ గ్యాస్ పరిమితి ద్వారా మాత్రమే పరిమితం చేయబడిన, ఒక బ్లాక్‌లోని లావాదేవీల సంఖ్యను పెంచడానికి వ్యాలిడేటర్‌లను ప్రోత్సహిస్తుంది. టిప్స్ లేకుండా, ఒక సహేతుకమైన వ్యాలిడేటర్ ఎటువంటి ప్రత్యక్ష ఎగ్జిక్యూషన్ లేయర్ లేదా ఏకాభిప్రాయం లేయర్ పెనాల్టీ లేకుండా తక్కువ—లేదా సున్నా—లావాదేవీలను చేర్చగలడు, ఎందుకంటే స్టేకింగ్ రివార్డులు ఒక బ్లాక్‌లో ఎన్ని లావాదేవీలు ఉన్నాయనే దానితో సంబంధం లేకుండా ఉంటాయి. అదనంగా, టిప్స్ వినియోగదారులను అదే బ్లాక్‌లో ప్రాధాన్యత కోసం ఇతరులను అధిగమించడానికి అనుమతిస్తాయి, సమర్థవంతంగా అత్యవసరాన్ని సూచిస్తాయి. + +### గరిష్ట రుసుము {#maxfee} + +నెట్‌వర్క్‌లో లావాదేవీని అమలు చేయడానికి, వినియోగదారులు వారి లావాదేవీ అమలు చేయడానికి వారు చెల్లించడానికి సిద్ధంగా ఉన్న గరిష్ట పరిమితిని పేర్కొనవచ్చు. ఈ ఐచ్ఛిక పరామితిని `maxFeePerGas` అని అంటారు. లావాదేవీ అమలు కావడానికి, గరిష్ట రుసుము మూల రుసుము మరియు టిప్ మొత్తం కంటే ఎక్కువగా ఉండాలి. లావాదేవీ పంపినవారికి గరిష్ట రుసుము మరియు మూల రుసుము మరియు టిప్ మొత్తం మధ్య వ్యత్యాసం తిరిగి చెల్లించబడుతుంది. + +### బ్లాక్ పరిమాణం {#block-size} + +ప్రతి బ్లాక్‌కు ప్రస్తుత గ్యాస్ పరిమితిలో సగం లక్ష్య పరిమాణం ఉంటుంది, కానీ బ్లాక్‌ల పరిమాణం నెట్‌వర్క్ డిమాండ్‌కు అనుగుణంగా పెరుగుతుంది లేదా తగ్గుతుంది, బ్లాక్ పరిమితి చేరుకునే వరకు (లక్ష్య బ్లాక్ పరిమాణానికి 2x). _టాటన్‌మెంట్_ ప్రక్రియ ద్వారా ప్రోటోకాల్ లక్ష్యం వద్ద సమతౌల్య సగటు బ్లాక్ పరిమాణాన్ని సాధిస్తుంది. అంటే బ్లాక్ పరిమాణం లక్ష్య బ్లాక్ పరిమాణం కంటే ఎక్కువగా ఉంటే, ప్రోటోకాల్ తదుపరి బ్లాక్‌కు మూల రుసుమును పెంచుతుంది. అదేవిధంగా, బ్లాక్ పరిమాణం లక్ష్య బ్లాక్ పరిమాణం కంటే తక్కువగా ఉంటే ప్రోటోకాల్ మూల రుసుమును తగ్గిస్తుంది. + +మూల రుసుము సర్దుబాటు చేయబడిన మొత్తం ప్రస్తుత బ్లాక్ పరిమాణం లక్ష్యం నుండి ఎంత దూరంలో ఉందనే దానిపై ఆధారపడి ఉంటుంది. ఇది ఖాళీ బ్లాక్‌కు -12.5%, లక్ష్య పరిమాణంలో 0%, గ్యాస్ పరిమితికి చేరుకునే బ్లాక్‌కు +12.5% వరకు ఒక సరళ గణన. వ్యాలిడేటర్ సిగ్నలింగ్ ఆధారంగా, అలాగే నెట్‌వర్క్ నవీకరణల ద్వారా గ్యాస్ పరిమితి కాలక్రమేణా హెచ్చుతగ్గులకు లోనవుతుంది. [ఇక్కడ కాలక్రమేణా గ్యాస్ పరిమితిలో మార్పులను వీక్షించండి](https://eth.blockscout.com/stats/averageGasLimit?interval=threeMonths). + +[బ్లాక్‌ల గురించి మరింత](/developers/docs/blocks/) + +### ఆచరణలో గ్యాస్ ఫీజులను లెక్కించడం {#calculating-fees-in-practice} + +మీ లావాదేవీని అమలు చేయడానికి మీరు ఎంత చెల్లించడానికి సిద్ధంగా ఉన్నారో మీరు స్పష్టంగా పేర్కొనవచ్చు. అయితే, చాలా వాలెట్ ప్రొవైడర్లు తమ వినియోగదారులపై భారం పడే సంక్లిష్టతను తగ్గించడానికి సిఫార్సు చేయబడిన లావాదేవీ రుసుమును (మూల రుసుము + సిఫార్సు చేయబడిన ప్రాధాన్యత రుసుము) స్వయంచాలకంగా సెట్ చేస్తాయి. + +## గ్యాస్ ఫీజులు ఎందుకు ఉన్నాయి? {#why-do-gas-fees-exist} + +సంక్షిప్తంగా, గ్యాస్ ఫీజులు ఇతీరియము నెట్‌వర్క్‌ను సురక్షితంగా ఉంచడంలో సహాయపడతాయి. నెట్‌వర్క్‌లో అమలు చేయబడిన ప్రతి గణన కోసం రుసుము అవసరం కావడం ద్వారా, చెడ్డ వ్యక్తులు నెట్‌వర్క్‌ను స్పామ్ చేయకుండా నిరోధిస్తాము. కోడ్‌లో ప్రమాదవశాత్తు లేదా శత్రుత్వ అనంత లూప్‌లు లేదా ఇతర గణన వృధాను నివారించడానికి, ప్రతి లావాదేవీ కోడ్ అమలు యొక్క ఎన్ని గణన దశలను ఉపయోగించగలదో పరిమితిని సెట్ చేయవలసి ఉంటుంది. గణన యొక్క ప్రాథమిక యూనిట్ "గ్యాస్". + +లావాదేవీలో పరిమితి ఉన్నప్పటికీ, లావాదేవీలో ఉపయోగించని ఏదైనా గ్యాస్ వినియోగదారుడికి తిరిగి ఇవ్వబడుతుంది (ఉదా., `గరిష్ట రుసుము - (మూల రుసుము + టిప్)` తిరిగి ఇవ్వబడుతుంది). + +![ఉపయోగించని గ్యాస్ ఎలా వాపసు చేయబడుతుందో చూపే రేఖాచిత్రం](../transactions/gas-tx.png) +_[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) నుండి స్వీకరించబడిన రేఖాచిత్రం_ + +## గ్యాస్ పరిమితి అంటే ఏమిటి? {#what-is-gas-limit} + +గ్యాస్ పరిమితి అనేది మీరు ఒక లావాదేవీపై వినియోగించడానికి సిద్ధంగా ఉన్న గరిష్ట గ్యాస్ మొత్తాన్ని సూచిస్తుంది. [స్మార్ట్ కాంట్రాక్టులు](/developers/docs/smart-contracts/) ప్రమేయం ఉన్న మరింత సంక్లిష్టమైన లావాదేవీలకు ఎక్కువ గణన పని అవసరం, కాబట్టి వాటికి సాధారణ చెల్లింపు కంటే ఎక్కువ గ్యాస్ పరిమితి అవసరం. ఒక ప్రామాణిక ETH బదిలీకి 21,000 యూనిట్ల గ్యాస్ పరిమితి అవసరం. + +ఉదాహరణకు, మీరు ఒక సాధారణ ETH బదిలీ కోసం 50,000 గ్యాస్ పరిమితిని పెడితే, EVM 21,000 ను వినియోగిస్తుంది, మరియు మీరు మిగిలిన 29,000 ను తిరిగి పొందుతారు. అయితే, మీరు చాలా తక్కువ గ్యాస్ పేర్కొంటే, ఉదాహరణకు, ఒక సాధారణ ETH బదిలీ కోసం 20,000 గ్యాస్ పరిమితి, ధ్రువీకరణ దశలో లావాదేవీ విఫలమవుతుంది. బ్లాక్‌లో చేర్చడానికి ముందు అది తిరస్కరించబడుతుంది, మరియు గ్యాస్ వినియోగించబడదు. మరోవైపు, అమలు సమయంలో లావాదేవీ గ్యాస్ అయిపోతే (ఉదా., స్మార్ట్ కాంట్రాక్ట్ సగంలోనే మొత్తం గ్యాస్‌ను ఉపయోగిస్తుంది), EVM ఏవైనా మార్పులను తిరిగి మారుస్తుంది, కానీ అందించిన మొత్తం గ్యాస్ ప్రదర్శించిన పని కోసం వినియోగించబడుతుంది. + +## గ్యాస్ ఫీజులు ఎందుకు అంత ఎక్కువగా ఉంటాయి? {#why-can-gas-fees-get-so-high} + +అధిక గ్యాస్ ఫీజులు ఇతీరియము యొక్క ప్రజాదరణ కారణంగా ఉన్నాయి. డిమాండ్ ఎక్కువగా ఉంటే, వినియోగదారులు ఇతర వినియోగదారుల లావాదేవీలను అధిగమించడానికి ప్రయత్నించడానికి అధిక టిప్ మొత్తాలను అందించాలి. అధిక టిప్ మీ లావాదేవీ తదుపరి బ్లాక్‌లోకి వెళ్లే అవకాశాన్ని పెంచుతుంది. అలాగే, మరింత సంక్లిష్టమైన స్మార్ట్ కాంట్రాక్ట్ యాప్‌లు తమ ఫంక్షన్‌లకు మద్దతు ఇవ్వడానికి చాలా కార్యకలాపాలు చేస్తూ ఉండవచ్చు, దీనివల్ల అవి చాలా గ్యాస్‌ను వినియోగిస్తాయి. + +## గ్యాస్ ఖర్చులను తగ్గించడానికి చొరవలు {#initiatives-to-reduce-gas-costs} + +ఇతీరియము [స్కేలబిలిటీ నవీకరణలు](/roadmap/) చివరికి కొన్ని గ్యాస్ ఫీజు సమస్యలను పరిష్కరించాలి, ఇది ప్రతిఫలంగా ప్లాట్‌ఫారం సెకనుకు వేల లావాదేవీలను ప్రాసెస్ చేయడానికి మరియు ప్రపంచవ్యాప్తంగా స్కేల్ చేయడానికి వీలు కల్పిస్తుంది. + +లేయర్ 2 స్కేలింగ్ అనేది గ్యాస్ ఖర్చులను, వినియోగదారు అనుభవాన్ని మరియు స్కేలబిలిటీని బాగా మెరుగుపరచడానికి ఒక ప్రాథమిక చొరవ. + +[లేయర్ 2 స్కేలింగ్ గురించి మరింత](/developers/docs/scaling/#layer-2-scaling) + +## గ్యాస్ ఫీజులను పర్యవేక్షించడం {#monitoring-gas-fees} + +మీరు గ్యాస్ ధరలను పర్యవేక్షించాలనుకుంటే, తద్వారా మీరు మీ ETHని తక్కువ ధరకు పంపవచ్చు, మీరు ఇలాంటి అనేక విభిన్న ఉపకరణాలను ఉపయోగించవచ్చు: + +- [Etherscan](https://etherscan.io/gastracker) _లావాదేవీ గ్యాస్ ధర అంచనా_ +- [Blockscout](https://eth.blockscout.com/gas-tracker) _ఓపెన్ సోర్స్ లావాదేవీ గ్యాస్ ధర అంచనా_ +- [ETH గ్యాస్ ట్రాకర్](https://www.ethgastracker.com/) _లావాదేవీల రుసుములను తగ్గించడానికి మరియు డబ్బు ఆదా చేయడానికి ఇతీరియము మరియు L2 గ్యాస్ ధరలను పర్యవేక్షించండి మరియు ట్రాక్ చేయండి_ +- [Blocknative ETH గ్యాస్ ఎస్టిమేటర్](https://chrome.google.com/webstore/detail/blocknative-eth-gas-estim/ablbagjepecncofimgjmdpnhnfjiecfm) _రకం 0 లెగసీ లావాదేవీలు మరియు రకం 2 EIP-1559 లావాదేవీలకు మద్దతు ఇచ్చే గ్యాస్ అంచనా వేసే Chrome పొడిగింపు._ +- [Cryptoneur గ్యాస్ ఫీజుల కాలిక్యులేటర్](https://www.cryptoneur.xyz/gas-fees-calculator) _మెయిన్‌నెట్, ఆర్బిట్రమ్ మరియు పాలిగాన్‌లో వివిధ లావాదేవీ రకాల కోసం మీ స్థానిక కరెన్సీలో గ్యాస్ ఫీజులను లెక్కించండి._ + +## సంబంధిత ఉపకరణాలు {#related-tools} + +- [Blocknative's గ్యాస్ ప్లాట్‌ఫారం](https://www.blocknative.com/gas) _Blocknative యొక్క గ్లోబల్ మెంపూల్ డేటా ప్లాట్‌ఫారం ద్వారా ఆధారితమైన గ్యాస్ అంచనా ఎపిఐ_ +- [గ్యాస్ నెట్‌వర్క్](https://gas.network) ఆన్‌చైన్ గ్యాస్ ఒరాకిల్స్. 35+ చైన్‌లకు మద్దతు. + +## మరింత సమాచారం {#further-reading} + +- [ఇతీరియము గ్యాస్ వివరించబడింది](https://defiprime.com/gas) +- [మీ స్మార్ట్ కాంట్రాక్టుల గ్యాస్ వినియోగాన్ని తగ్గించడం](https://medium.com/coinmonks/8-ways-of-reducing-the-gas-consumption-of-your-smart-contracts-9a506b339c0a) +- [డెవలపర్‌ల కోసం గ్యాస్ ఆప్టిమైజేషన్ వ్యూహాలు](https://www.alchemy.com/overviews/solidity-gas-optimization) +- [EIP-1559 పత్రాలు](https://eips.ethereum.org/EIPS/eip-1559). +- [టిమ్ బీకో యొక్క EIP-1559 వనరులు](https://hackmd.io/@timbeiko/1559-resources) +- [EIP-1559: మెమెస్ నుండి మెకానిజమ్‌లను వేరు చేయడం](https://web.archive.org/web/20241126205908/https://research.2077.xyz/eip-1559-separating-mechanisms-from-memes) diff --git a/public/content/translations/te/developers/docs/ides/index.md b/public/content/translations/te/developers/docs/ides/index.md new file mode 100644 index 00000000000..c06b6f62244 --- /dev/null +++ b/public/content/translations/te/developers/docs/ides/index.md @@ -0,0 +1,64 @@ +--- +title: "ఇంటిగ్రేటెడ్ డెవలప్ మెంట్ ఎన్విరాన్ మెంట్స్ (ఐడిఇ)" +description: "రిమిక్స్, VS కోడ్ మరియు ప్రముఖ ప్లగిన్‌లతో సహా ఇతీరియము అభివృద్ధి కోసం వెబ్-ఆధారిత మరియు డెస్క్‌టాప్ IDEల గురించి తెలుసుకోండి." +lang: te +--- + +[ఇంటిగ్రేటెడ్ డెవలప్‌మెంట్ ఎన్విరాన్‌మెంట్ (IDE)](https://wikipedia.org/wiki/Integrated_development_environment)ను ఏర్పాటు చేయడానికి వచ్చినప్పుడు, ఇతీరియముపై ప్రోగ్రామింగ్ అప్లికేషన్‌లు ఇతర సాఫ్ట్‌వేర్ ప్రాజెక్ట్‌లను ప్రోగ్రామింగ్ చేయడం మాదిరిగానే ఉంటాయి. ఎంచుకోవడానికి చాలా ఎంపికలు ఉన్నాయి, కాబట్టి రోజు చివరిలో, మీ ప్రాధాన్యతలకు బాగా సరిపోయే IDE లేదా సంకేత భాష ఎడిటర్‌ను ఎంచుకోండి. మీ ఇతీరియము అభివృద్ధికి ఉత్తమమైన IDE ఎంపిక మీరు సాంప్రదాయ సాఫ్ట్‌వేర్ అభివృద్ధి కోసం ఇప్పటికే ఉపయోగిస్తున్న IDE. + +## వెబ్-ఆధారిత IDEలు {#web-based-ides} + +మీరు [స్థానిక డెవలప్‌మెంట్ ఎన్విరాన్‌మెంట్‌ను ఏర్పాటు చేసుకునే](/developers/local-environment/) ముందు మీరు సంకేత భాషతో గజిబిజి చేయాలనుకుంటే, ఈ వెబ్ యాప్‌లు ఇతీరియము స్మార్ట్ కాంట్రాక్ట్ అభివృద్ధి కోసం అనుకూలీకరించబడ్డాయి. + +**[రిమిక్స్](https://remix.ethereum.org/)** - **_అంతర్నిర్మిత స్టాటిక్ అనాలిసిస్ మరియు టెస్ట్ బ్లాక్ చైను వర్చువల్ మెషీన్‌తో వెబ్ ఆధారిత IDE_** + +- [డాక్స్](https://remix-ide.readthedocs.io/en/latest/#) +- [గిట్టర్](https://gitter.im/ethereum/remix) + +**[ChainIDE](https://chainide.com/)** - **_ఒక క్లౌడ్ ఆధారిత మల్టీ-చైన్ IDE_** + +- [డాక్స్](https://chainide.gitbook.io/chainide-english-1/) +- [సహాయ వేదిక](https://forum.chainide.com/) + +**[Replit (Solidity స్టార్టర్ - బీటా)](https://replit.com/@replit/Solidity-starter-beta)** - **_హాట్ రీలోడింగ్, ఎర్రర్ చెకింగ్ మరియు ఫస్ట్-క్లాస్ టెస్టునెట్ మద్దతుతో ఇతీరియము కోసం అనుకూలీకరించదగిన డెవలప్‌మెంట్ ఎన్విరాన్‌మెంట్_** + +- [డాక్స్](https://docs.replit.com/) + +**[టెండర్లీ శాండ్‌బాక్స్](https://sandbox.tenderly.co/)** - **_Solidity మరియు JavaScript ఉపయోగించి బ్రౌజర్‌లో స్మార్ట్ కాంట్రాక్టులను వ్రాయడానికి, అమలు చేయడానికి మరియు డీబగ్ చేయడానికి మీరు వీలు కల్పించే వేగవంతమైన ప్రోటోటైపింగ్ ఎన్విరాన్‌మెంట్_** + +**[EthFiddle](https://ethfiddle.com/)** - **_మీ స్మార్ట్ కాంట్రాక్ట్‌ను వ్రాయడానికి, కంపైల్ చేయడానికి మరియు డీబగ్ చేయడానికి మిమ్మల్ని అనుమతించే వెబ్ ఆధారిత IDE_** + +- [గిట్టర్](https://gitter.im/loomnetwork/ethfiddle) + +## డెస్క్‌టాప్ IDEలు {#desktop-ides} + +చాలా స్థాపించబడిన IDEలు ఇతీరియము అభివృద్ధి అనుభవాన్ని మెరుగుపరచడానికి ప్లగిన్‌లను నిర్మించాయి. కనీస స్థాయిలో, అవి [స్మార్ట్ కాంట్రాక్ట్ భాషల](/developers/docs/smart-contracts/languages/) కోసం సింటాక్స్ హైలైటింగ్‌ను అందిస్తాయి. + +**విజువల్ స్టూడియో సంకేత భాష -** **_అధికారిక ఇతీరియము మద్దతుతో వృత్తిపరమైన క్రాస్-ప్లాట్‌ఫారమ్ IDE_** + +- [విజువల్ స్టూడియో సంకేత భాష](https://code.visualstudio.com/) +- [సంకేత భాష నమూనాలు](https://github.com/Azure-Samples/blockchain/blob/master/blockchain-workbench/application-and-smart-contract-samples/readme.md) +- [GitHub](https://github.com/microsoft/vscode) + +**JetBrains IDEలు (IntelliJ IDEA, మొదలైనవి.) -** **_సాఫ్ట్‌వేర్ అభివృద్ధి చేసేవాళ్ళు మరియు బృందాలకు అవసరమైన ఉపకరణాలు_** + +- [JetBrains](https://www.jetbrains.com/) +- [GitHub](https://github.com/JetBrains) +- [IntelliJ Solidity](https://github.com/intellij-solidity/intellij-solidity/) + +**రిమిక్స్ డెస్క్‌టాప్ -** **_మీ స్థానిక మెషీన్‌లో రిమిక్స్ IDEని అనుభవించండి_** + +- [డౌన్‌లోడ్](https://github.com/ethereum/remix-desktop/releases) +- [GitHub](https://github.com/ethereum/remix-desktop) + +## ప్లగిన్‌లు మరియు పొడిగింపులు {#plugins-extensions} + +- [solidity](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity) - విజువల్ స్టూడియో సంకేత భాష కోసం ఇతీరియము Solidity లాంగ్వేజ్ +- [VS కోడ్ కోసం Solidity + Hardhat](https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity) - Hardhat బృందం ద్వారా Solidity మరియు Hardhat మద్దతు +- [Prettier Solidity](https://github.com/prettier-solidity/prettier-plugin-solidity) - prettier ఉపయోగించి సంకేత భాష ఫార్మాటర్ + +## మరింత సమాచారం {#further-reading} + +- [ఇతీరియము IDEలు](https://www.alchemy.com/list-of/web3-ides-on-ethereum) _- Alchemy యొక్క ఇతీరియము IDEల జాబితా_ + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ diff --git a/public/content/translations/te/developers/docs/index.md b/public/content/translations/te/developers/docs/index.md new file mode 100644 index 00000000000..9bd82191455 --- /dev/null +++ b/public/content/translations/te/developers/docs/index.md @@ -0,0 +1,25 @@ +--- +title: "ఇథిరియం అభివృద్ధి డాక్యుమెంటేషన్" +description: "ethereum.org డెవలపర్ డాక్యుమెంటేషన్‌ను పరిచయం చేస్తున్నాము." +lang: te +--- + +ఈ డాక్యుమెంటేషన్ ఇథిరియంతో నిర్మించడానికి మీకు సహాయపడటానికి రూపొందించబడింది. ఇది ఇథిరియంను ఒక కాన్సెప్ట్‌గా కవర్ చేస్తుంది, ఇథిరియం టెక్ స్టాక్‌ను వివరిస్తుంది, మరియు మరింత క్లిష్టమైన అప్లికేషన్‌లు మరియు వినియోగ సందర్భాల కోసం అధునాతన అంశాలను డాక్యుమెంట్ చేస్తుంది. + +ఇది ఒక ఓపెన్-సోర్స్ కమ్యూనిటీ కృషి, కాబట్టి కొత్త అంశాలను సూచించడానికి, కొత్త కంటెంట్‌ను జోడించడానికి, మరియు ఇది సహాయకరంగా ఉంటుందని మీరు భావించే చోట ఉదాహరణలు అందించడానికి సంకోచించకండి. మొత్తం డాక్యుమెంటేషన్‌ను GitHub ద్వారా సవరించవచ్చు – ఎలాగో మీకు తెలియకపోతే, [ఈ సూచనలను అనుసరించండి](https://github.com/ethereum/ethereum-org-website/blob/dev/docs/editing-markdown.md). + +## అభివృద్ధి మాడ్యూల్స్ {#development-modules} + +ఇథిరియం అభివృద్ధిలో ఇది మీ మొదటి ప్రయత్నం అయితే, మొదట నుండి ప్రారంభించి, ఒక పుస్తకంలా చదువుకుంటూ వెళ్ళమని మేము సిఫార్సు చేస్తున్నాము. + +### పునాది అంశాలు {#foundational-topics} + + + +### ఇథిరియం స్టాక్ {#ethereum-stack} + + + +### అధునాతన {#advanced} + + diff --git a/public/content/translations/te/developers/docs/intro-to-ether/index.md b/public/content/translations/te/developers/docs/intro-to-ether/index.md new file mode 100644 index 00000000000..bd2f990d3af --- /dev/null +++ b/public/content/translations/te/developers/docs/intro-to-ether/index.md @@ -0,0 +1,78 @@ +--- +title: "ఈథర్‌కు సాంకేతిక పరిచయం" +description: "ఈథర్ క్రిప్టోకరెన్సీకి డెవలపర్ పరిచయం." +lang: te +--- + +## అవసరాలు {#prerequisites} + +ఈ పేజీని మీరు బాగా అర్థం చేసుకోవడానికి, మొదట [Ethereumకు పరిచయం](/developers/docs/intro-to-ethereum/) చదవమని మేము సిఫార్సు చేస్తున్నాము. + +## క్రిప్టోకరెన్సీ అంటే ఏమిటి? {#what-is-a-cryptocurrency} + +క్రిప్టోకరెన్సీ అనేది బ్లాక్‌చెయిన్ ఆధారిత లెడ్జర్ ద్వారా భద్రపరచబడిన మార్పిడి మాధ్యమం. + +మార్పిడి మాధ్యమం అనేది వస్తువులు మరియు సేవల చెల్లింపుగా విస్తృతంగా ఆమోదించబడిన ఏదైనా, మరియు లెడ్జర్ అనేది లావాదేవీలను ట్రాక్ చేసే డేటా స్టోర్. బ్లాక్‌చెయిన్ టెక్నాలజీ వినియోగదారులు లెడ్జర్‌ను నిర్వహించడానికి విశ్వసనీయ మూడవ పక్షంపై ఆధారపడకుండా లెడ్జర్‌పై లావాదేవీలు చేయడానికి అనుమతిస్తుంది. + +సతోషి నకమోటో రూపొందించిన మొదటి క్రిప్టోకరెన్సీ బిట్‌కాయిన్. 2009లో బిట్‌కాయిన్ విడుదలైనప్పటి నుండి, ప్రజలు అనేక రకాల బ్లాక్‌చెయిన్‌లలో వేలాది క్రిప్టోకరెన్సీలను తయారు చేశారు. + +## Ether అంటే ఏంటి? ఈథర్ అంటే ఏమిటి? {#what-is-ether} + +**ఈథర్ (ETH)** అనేది Ethereum నెట్‌వర్క్‌లో అనేక విషయాల కోసం ఉపయోగించే క్రిప్టోకరెన్సీ. ప్రాథమికంగా, ఇది లావాదేవీ రుసుములకు ఆమోదయోగ్యమైన ఏకైక చెల్లింపు విధానం, మరియు [ది మెర్జ్](/roadmap/merge) తర్వాత, Mainnetలో బ్లాక్‌లను ధృవీకరించడానికి, ప్రతిపాదించడానికి ఈథర్ అవసరం. ఈథర్‌ను [DeFi](/defi) రుణ మార్కెట్‌లలో ప్రాథమిక పూచీకత్తు రూపంలో, NFT మార్కెట్‌ప్లేస్‌లలో ఖాతా యూనిట్‌గా, సేవలు చేయడం లేదా వాస్తవ-ప్రపంచ వస్తువులను విక్రయించడం కోసం సంపాదించిన చెల్లింపుగా మరియు మరిన్నింటికి కూడా ఉపయోగిస్తారు. + +డెవలపర్‌లు [**వికేంద్రీకృత అప్లికేషన్‌లు (డాప్స్)**](/developers/docs/dapps) సృష్టించడానికి Ethereum అనుమతినిస్తుంది, ఇవన్నీ కంప్యూటింగ్ పవర్ యొక్క పూల్‌ను పంచుకుంటాయి. ఈ భాగస్వామ్య పూల్ పరిమితమైనది, కాబట్టి దీన్ని ఎవరు ఉపయోగించాలో నిర్ణయించడానికి Ethereumకి మెకానిజం అవసరం. లేకపోతే, ఒక dapp అనుకోకుండా లేదా హానికరంగా అన్ని నెట్‌వర్క్ వనరులను వినియోగిస్తుంది, ఇది ఇతరులను యాక్సెస్ చేయకుండా నిరోధించవచ్చు. + +Ethereum యొక్క కంప్యూటింగ్ పవర్ కోసం ఈథర్ క్రిప్టోకరెన్సీ ధరల యంత్రాంగానికి మద్దతు ఇస్తుంది. వినియోగదారులు లావాదేవీ చేయాలనుకున్నప్పుడు, బ్లాక్‌చెయిన్‌లో తమ లావాదేవీని గుర్తించేందుకు వారు తప్పనిసరిగా ఈథర్‌ను చెల్లించాలి. ఈ వినియోగ ఖర్చులను [గ్యాస్ ఫీజులు](/developers/docs/gas/) అని పిలుస్తారు, మరియు లావాదేవీని అమలు చేయడానికి అవసరమైన కంప్యూటింగ్ పవర్ మొత్తం మీద, మరియు ఆ సమయంలో కంప్యూటింగ్ పవర్ కోసం నెట్‌వర్క్-వ్యాప్త డిమాండ్ మీద గ్యాస్ ఫీజు ఆధారపడి ఉంటుంది. + +అందువల్ల, హానికరమైన డాప్ అనంతమైన లూప్‌ను సమర్పించినప్పటికీ, లావాదేవీ చివరికి ఈథర్ అయిపోతుంది మరియు నెట్‌వర్క్ సాధారణ స్థితికి రావడానికి వీలు కల్పిస్తుంది. + +Ethereum మరియు ఈథర్‌ను [ఒకటిగా భావించి గందరగోళ పడటం సర్వసాధారణం](https://abcnews.go.com/Business/bitcoin-slumps-week-low-amid-renewed-worries-chinese/story?id=78399845) — ప్రజలు "Ethereum ధర" అని ప్రస్తావించినప్పుడు, వారు ఈథర్ ధరను వివరిస్తుంటారు. + +## ఈథర్‌ను ముద్రించడం {#minting-ether} + +మింటింగ్ అనేది Ethereum లెడ్జర్‌లో కొత్త ఈథర్ సృష్టించబడే ప్రక్రియ. అంతర్లీన Ethereum ప్రోటోకాల్ కొత్త ఈథర్‌ను సృష్టిస్తుంది మరియు వినియోగదారు ఈథర్‌ను సృష్టించడం సాధ్యం కాదు. + +ఏకాభిప్రాయానికి సంబంధించిన ఇతర వ్యాలిడేటర్ యాక్టివిటీ కోసం ప్రతిపాదించిన ప్రతి బ్లాక్‌కు మరియు ప్రతి యుగం చెక్‌పాయింట్‌లో ఈథర్ రివార్డ్‌గా ముద్రించబడుతుంది. జారీ చేయబడిన మొత్తం అమౌంట్ అనేది వాలిడేటర్ల సంఖ్య మరియు వారు ఎంత ఈథర్‌లో వాటాను కలిగి ఉన్నారు అనే దానిపై ఆధారపడి ఉంటుంది. ఈ మొత్తం జారీ సరైన సందర్భంలో వాలిడేటర్‌ల మధ్య సమానంగా విభజించబడింది, అయితే అన్ని వాలిడేటర్‌లు నిజాయితీగా మరియు ఆన్‌లైన్‌లో ఉంటారు, కానీ వాస్తవానికి, ఇది వాలిడేటర్ పనితీరు ఆధారంగా మారుతుంది. మొత్తం జారీలో 1/8 బ్లాక్ ప్రపోజర్‌కు వెళుతుంది; మిగిలినవి ఇతర వ్యాలిడేటర్లలో పంపిణీ చేయబడతాయి. బ్లాక్ ప్రపోజర్లు లావాదేవీ రుసుములు మరియు MEV-సంబంధిత ఆదాయం నుండి చిట్కాలను కూడా స్వీకరిస్తారు, అయితే ఇవి రీసైకిల్ చేయబడిన ఈథర్ నుండి వచ్చాయి, కొత్త జారీ కాదు. + +## ఈథర్‌ను బర్న్ చేయడం {#burning-ether} + +బ్లాక్ రివార్డ్‌ల ద్వారా ఈథర్‌ను సృష్టించడంతోపాటు, 'బర్నింగ్' అనే ప్రక్రియ ద్వారా ఈథర్‌ను నాశనం చేయవచ్చు. ఈథర్ కాలిపోయినప్పుడు, అది శాశ్వతంగా ప్రసరణ నుండి తీసివేయబడుతుంది. + +Ethereumలో ప్రతి లావాదేవీలో ఈథర్ బర్న్ జరుగుతుంది. వినియోగదారులు వారి లావాదేవీల కోసం చెల్లించినప్పుడు, లావాదేవీల డిమాండ్ ప్రకారం నెట్‌వర్క్ ద్వారా సెట్ చేయబడిన బేస్ గ్యాస్ ఫీజు నాశనం అవుతుంది. ఇది, వేరియబుల్ బ్లాక్ పరిమాణాలు మరియు గరిష్ట గ్యాస్ రుసుముతో కలిపి, Ethereumపై లావాదేవీ రుసుము అంచనాను సులభతరం చేస్తుంది. నెట్‌వర్క్ డిమాండ్ ఎక్కువగా ఉన్నప్పుడు, [బ్లాక్‌లు](https://eth.blockscout.com/block/22580057) తాము ముద్రించే దానికంటే ఎక్కువ ఈథర్‌ను బర్న్ చేయగలవు, ఇది ఈథర్ జారీని సమర్థవంతంగా ఆఫ్‌సెట్ చేస్తుంది. + +మూల రుసుమును బర్నింగ్ చేయడం వలన లావాదేవీలను మార్చగల బ్లాక్ ప్రొడ్యూసర్ సామర్థ్యానికి ఆటంకం కలుగుతుంది. ఉదాహరణకు, బ్లాక్ ప్రొడ్యూసర్‌లు మూల రుసుమును స్వీకరించినట్లయితే, వారు తమ స్వంత లావాదేవీలను ఉచితంగా చేర్చవచ్చు మరియు ప్రతి ఒక్కరికీ మూల రుసుమును పెంచవచ్చు. ప్రత్యామ్నాయంగా, వారు కొంతమంది వినియోగదారులకు ఆఫ్-చెయిన్‌లో మూల రుసుమును వాపసు చేయవచ్చు, ఇది మరింత అపారదర్శకమైన మరియు సంక్లిష్టమైన లావాదేవీ రుసుము మార్కెట్‌కు దారితీస్తుంది. + +## ఈథర్ డినామినేషన్లు {#denominations} + +Ethereumలో అనేక లావాదేవీల విలువ తక్కువగా ఉన్నందున, ఈథర్ అనేక విలువలను కలిగి ఉంది, వీటిని ఖాతా యొక్క చిన్న యూనిట్లుగా సూచించవచ్చు. ఈ తెగలలో, వీ మరియు గ్వీలు చాలా ముఖ్యమైనవి. + +Wei అనేది ఈథర్ యొక్క అతి చిన్న మొత్తం, దీని ఫలితంగా, [Ethereum యెల్లోపేపర్](https://ethereum.github.io/yellowpaper/paper.pdf) వంటి అనేక సాంకేతిక అమలులు, అన్ని గణనలను Wei ఆధారంగా చేస్తాయి. + +Gwei, giga-weiకి సంక్షిప్త పదం, Ethereumపై గ్యాస్ ఖర్చులను వివరించడానికి తరచుగా ఉపయోగించబడుతుంది. + +| డినామినేషన్ | ఈథర్‌లో విలువ | సాధారణ వినియోగం | +| ----------- | ---------------- | ---------------------------- | +| వెయి | 10-18 | సాంకేతిక అమలులు | +| Gwei | 10-9 | మనుషులు చదవగలిగే గ్యాస్ ఫీజు | + +## ఈథర్‌ను బదిలీ చేయడం {#transferring-ether} + +Ethereumలోని ప్రతి లావాదేవీలో `value` ఫీల్డ్ ఉంటుంది, ఇది పంపినవారి చిరునామా నుండి గ్రహీత చిరునామాకు పంపవలసిన ఈథర్ మొత్తాన్ని weiలో నిర్దేశిస్తుంది. + +గ్రహీత చిరునామా [స్మార్ట్ కాంట్రాక్ట్](/developers/docs/smart-contracts/) అయినప్పుడు, ఆ స్మార్ట్ కాంట్రాక్ట్ తన కోడ్‌ను అమలు చేసేటప్పుడు గ్యాస్ కోసం చెల్లించడానికి ఈ బదిలీ చేయబడిన ఈథర్‌ను ఉపయోగించవచ్చు. + +[లావాదేవీల గురించి మరింత](/developers/docs/transactions/) + +## ఈథర్‌ను క్వెరీ చేయడం {#querying-ether} + +వినియోగదారులు ఏ [ఖాతా](/developers/docs/accounts/) యొక్క `balance` ఫీల్డ్‌ను అయినా తనిఖీ చేయడం ద్వారా ఆ ఖాతాలోని ఈథర్ బ్యాలెన్స్‌ను క్వెరీ చేయవచ్చు, ఇది weiలో డినామినేట్ చేయబడిన ఈథర్ హోల్డింగ్‌లను చూపుతుంది. + +[Etherscan](https://etherscan.io) మరియు [Blockscout](https://eth.blockscout.com) అనేవి వెబ్-ఆధారిత అప్లికేషన్‌ల ద్వారా చిరునామా బ్యాలెన్స్‌లను తనిఖీ చేయడానికి ఉపయోగపడే ప్రముఖ సాధనాలు. ఉదాహరణకు, [ఈ Blockscout పేజీ](https://eth.blockscout.com/address/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe) Ethereum ఫౌండేషన్ యొక్క బ్యాలెన్స్‌ను చూపుతుంది. ఖాతా బ్యాలెన్స్‌లను వాలెట్‌లను ఉపయోగించి లేదా నేరుగా నోడ్‌లకు అభ్యర్థనలు చేయడం ద్వారా కూడా ప్రశ్నించవచ్చు. + +## మరింత సమాచారం {#further-reading} + +- [ఈథర్ మరియు Ethereumను నిర్వచించడం](https://www.cmegroup.com/education/courses/introduction-to-ether/defining-ether-and-ethereum.html) – _CME Group_ +- [Ethereum వైట్‌పేపర్](/whitepaper/): Ethereum కోసం అసలు ప్రతిపాదన. ఈ పత్రంలో ఈథర్ యొక్క వివరణ మరియు దాని సృష్టి వెనుక ఉన్న ప్రేరణలు ఉన్నాయి. +- [Gwei Calculator](https://www.alchemy.com/gwei-calculator): wei, gwei, మరియు ఈథర్‌లను సులభంగా మార్చడానికి ఈ gwei కాలిక్యులేటర్‌ను ఉపయోగించండి. Wei, gwei లేదా ETH మొత్తాన్ని ప్లగ్ చేయండి మరియు స్వయంచాలకంగా మార్పిడిని లెక్కించండి. + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ diff --git a/public/content/translations/te/developers/docs/intro-to-ethereum/index.md b/public/content/translations/te/developers/docs/intro-to-ethereum/index.md new file mode 100644 index 00000000000..8a7cd479070 --- /dev/null +++ b/public/content/translations/te/developers/docs/intro-to-ethereum/index.md @@ -0,0 +1,124 @@ +--- +title: "ఇతీరియముకు సాంకేతిక పరిచయం" +description: "Ethereum యొక్క ప్రధాన భావనలకు dapp డెవలపర్ యొక్క పరిచయం." +lang: te +--- + +## బ్లాక్‌చెయిన్ అంటే ఏమిటి? బ్లాక్‌చెయిన్ అంటే ఏమిటి? + +బ్లాక్‌చెయిన్ అనేది నెట్‌వర్క్‌లోని అనేక కంప్యూటర్‌లలో నవీకరించబడిన మరియు భాగస్వామ్యం చేయబడిన పబ్లిక్ డేటాబేస్. + +"బ్లాక్" అనేది "బ్లాక్స్" అని పిలువబడే వరుస సమూహాలలో నిల్వ చేయబడిన డేటా మరియు స్థితిని సూచిస్తుంది. మీరు వేరొకరికి ETHని పంపితే, లావాదేవీ డేటా విజయవంతం కావడానికి బ్లాక్‌కి జోడించబడాలి. + +"చైన్" అనేది ప్రతి బ్లాక్ క్రిప్టోగ్రాఫికల్‌గా దాని పేరెంట్‌ను సూచిస్తుందనే వాస్తవాన్ని సూచిస్తుంది. మరో మాటలో చెప్పాలంటే, బ్లాక్‌లు ఒకదానికొకటి గొలుసుకట్టుగా ఉంటాయి. మొత్తం నెట్‌వర్క్ యొక్క ఏకాభిప్రాయం అవసరమయ్యే అన్ని తదుపరి బ్లాక్‌లను మార్చకుండా బ్లాక్‌లోని డేటాను మార్చలేరు. + +నెట్‌వర్క్‌లోని ప్రతి కంప్యూటర్ ప్రతి కొత్త బ్లాక్‌పై మరియు గొలుసుపై మొత్తంగా అంగీకరించాలి. ఈ కంప్యూటర్లను "నోడ్స్" అని అంటారు. బ్లాక్‌చెయిన్‌తో సంభాషించే ప్రతిఒక్కరికీ ఒకే డేటా ఉందని నోడ్స్ నిర్ధారిస్తాయి. ఈ పంపిణీ చేయబడిన ఒప్పందాన్ని సాధించడానికి, బ్లాక్‌చెయిన్‌లకు ఏకాభిప్రాయ యంత్రాంగం అవసరం. + +ఇతీరియము ఒక [ప్రూఫ్-ఆఫ్-స్టేక్-ఆధారిత ఏకాభిప్రాయ యంత్రాంగాన్ని](/developers/docs/consensus-mechanisms/pos/) ఉపయోగిస్తుంది. గొలుసుకు కొత్త బ్లాక్‌లను జోడించాలనుకునే ఎవరైనా, ఇతీరియములోని స్థానిక కరెన్సీ అయిన ETHను పూచీకత్తుగా స్టేక్ చేసి, వ్యాలిడేటర్ సాఫ్ట్‌వేర్‌ను అమలు చేయాలి. ఈ "వ్యాలిడేటర్లను" ఇతర వ్యాలిడేటర్లు తనిఖీ చేసి బ్లాక్‌చెయిన్‌కు జోడించే బ్లాక్‌లను ప్రతిపాదించడానికి యాదృచ్ఛికంగా ఎంచుకోవచ్చు. పాల్గొనేవారు నిజాయితీగా మరియు వీలైనంత వరకు ఆన్‌లైన్‌లో అందుబాటులో ఉండటానికి బలంగా ప్రోత్సహించే రివార్డులు మరియు జరిమానాల వ్యవస్థ ఉంది. + +బ్లాక్‌చెయిన్ డేటా ఎలా హాష్ చేయబడి, తదనంతరం బ్లాక్ రిఫరెన్స్‌ల చరిత్రకు ఎలా జోడించబడుతుందో మీరు చూడాలనుకుంటే, ఆండర్స్ బ్రౌన్‌వర్త్ ద్వారా [ఈ డెమోను](https://andersbrownworth.com/blockchain/blockchain) తప్పకుండా చూడండి మరియు దిగువన ఉన్న వీడియోను చూడండి. + +బ్లాక్‌చెయిన్‌లలోని హాష్‌ల గురించి ఆండర్స్ వివరిస్తుండగా చూడండి: + + + +## Ethereum అంటే ఏమిటి? ఇతీరియము అంటే ఏమిటి? + +ఇతీరియము అనేది దానిలో కంప్యూటర్ పొందుపరచబడిన ఒక బ్లాక్‌చెయిన్. ఇది వికేంద్రీకృత, అనుమతిరహిత, సెన్సార్‌షిప్-నిరోధక మార్గంలో యాప్‌లు మరియు సంస్థలను నిర్మించడానికి పునాది. + +ఇతీరియము విశ్వంలో, ఒకే, కానానికల్ కంప్యూటర్ (ఎథేరియం వర్చువల్ మషీన్, లేదా EVM అని పిలుస్తారు) ఉంది, దీని స్థితిని ఇతీరియము నెట్‌వర్క్‌లోని ప్రతిఒక్కరూ అంగీకరిస్తారు. ఇతీరియము నెట్‌వర్క్‌లో పాల్గొనే ప్రతిఒక్కరూ (ప్రతి ఇతీరియము నోడ్) ఈ కంప్యూటర్ యొక్క స్థితి యొక్క కాపీని ఉంచుకుంటారు. అదనంగా, ఏ పాల్గొనేవారైనా ఈ కంప్యూటర్ యాదృచ్ఛిక గణనను నిర్వహించడానికి ఒక అభ్యర్థనను ప్రసారం చేయవచ్చు. అటువంటి అభ్యర్థన ప్రసారం చేయబడినప్పుడల్లా, నెట్‌వర్క్‌లోని ఇతర పాల్గొనేవారు గణనను ధృవీకరిస్తారు, నిర్ధారిస్తారు మరియు నిర్వహిస్తారు ("ఎగ్జిక్యూట్" చేస్తారు). ఈ ఎగ్జిక్యూషన్ EVMలో స్థితి మార్పుకు కారణమవుతుంది, ఇది మొత్తం నెట్‌వర్క్‌లో కట్టుబడి మరియు ప్రచారం చేయబడుతుంది. + +గణన కోసం అభ్యర్థనలను లావాదేవీ అభ్యర్థనలు అంటారు; అన్ని లావాదేవీల రికార్డు మరియు EVM యొక్క ప్రస్తుత స్థితి బ్లాక్‌చెయిన్‌లో నిల్వ చేయబడుతుంది, ఇది క్రమంగా అన్ని నోడ్‌ల ద్వారా నిల్వ చేయబడి మరియు అంగీకరించబడుతుంది. + +లావాదేవీలు చెల్లుబాటు అయ్యేవిగా ధృవీకరించబడి, బ్లాక్‌చెయిన్‌కు జోడించబడిన తర్వాత, వాటిని తర్వాత ట్యాంపర్ చేయలేరని క్రిప్టోగ్రాఫిక్ మెకానిజమ్స్ నిర్ధారిస్తాయి. అదే మెకానిజమ్స్ అన్ని లావాదేవీలు తగిన "అనుమతులతో" సంతకం చేయబడి మరియు అమలు చేయబడతాయని కూడా నిర్ధారిస్తాయి (ఆలిస్ స్వయంగా తప్ప, మరెవరూ ఆలిస్ ఖాతా నుండి డిజిటల్ ఆస్తులను పంపలేరు). + +## Ether అంటే ఏంటి? ఈథర్ అంటే ఏమిటి? {#what-is-ether} + +**ఈథర్ (ETH)** ఇతీరియము యొక్క స్థానిక క్రిప్టోకరెన్సీ. ETH యొక్క ఉద్దేశ్యం గణన కోసం ఒక మార్కెట్‌ను అనుమతించడం. అటువంటి మార్కెట్ పాల్గొనేవారికి లావాదేవీ అభ్యర్థనలను ధృవీకరించడానికి మరియు అమలు చేయడానికి మరియు నెట్‌వర్క్‌కు గణన వనరులను అందించడానికి ఆర్థిక ప్రోత్సాహాన్ని అందిస్తుంది. + +లావాదేవీ అభ్యర్థనను ప్రసారం చేసే ఏ పాల్గొనేవారైనా నెట్‌వర్క్‌కు బౌంటీగా కొంత మొత్తంలో ETHను కూడా అందించాలి. నెట్‌వర్క్ బౌంటీలో కొంత భాగాన్ని బర్న్ చేస్తుంది మరియు లావాదేవీని ధృవీకరించడం, అమలు చేయడం, దానిని బ్లాక్‌చెయిన్‌కు కట్టుబడి ఉండటం మరియు నెట్‌వర్క్‌కు ప్రసారం చేయడం వంటి పనిని చేసే వారికి మిగిలిన భాగాన్ని బహుమతిగా ఇస్తుంది. + +చెల్లించిన ETH మొత్తం గణన చేయడానికి అవసరమైన వనరులకు అనుగుణంగా ఉంటుంది. ఈ బౌంటీలు అనంతమైన గణన లేదా ఇతర వనరుల-ఇంటెన్సివ్ స్క్రిప్ట్‌ల అమలును అభ్యర్థించడం ద్వారా నెట్‌వర్క్‌ను ఉద్దేశపూర్వకంగా అడ్డుకునే హానికరమైన పాల్గొనేవారిని కూడా నిరోధిస్తాయి, ఎందుకంటే ఈ పాల్గొనేవారు గణన వనరులకు చెల్లించాలి. + +ETH నెట్‌వర్క్‌కు క్రిప్టో-ఎకనామిక్ భద్రతను మూడు ప్రధాన మార్గాల్లో అందించడానికి కూడా ఉపయోగించబడుతుంది: 1) బ్లాక్‌లను ప్రతిపాదించే లేదా ఇతర వ్యాలిడేటర్ల నిజాయితీ లేని ప్రవర్తనను పిలిచే వ్యాలిడేటర్లకు రివార్డ్ ఇచ్చే సాధనంగా ఇది ఉపయోగించబడుతుంది; 2) ఇది వ్యాలిడేటర్ల ద్వారా స్టేక్ చేయబడుతుంది, నిజాయితీ లేని ప్రవర్తనకు వ్యతిరేకంగా పూచీకత్తుగా పనిచేస్తుంది—వ్యాలిడేటర్లు తప్పుగా ప్రవర్తించడానికి ప్రయత్నిస్తే వారి ETH నాశనం చేయబడవచ్చు; 3) ఇది కొత్తగా ప్రతిపాదించబడిన బ్లాక్‌ల కోసం 'ఓట్లను' తూచడానికి ఉపయోగించబడుతుంది, ఏకాభిప్రాయ యంత్రాంగం యొక్క ఫోర్క్-ఛాయిస్ భాగంలోకి ఫీడ్ అవుతుంది. + +## స్మార్ట్ కాంట్రాక్టులు అంటే ఏమిటి? స్మార్ట్ కాంట్రాక్టులు అంటే ఏమిటి? + +ఆచరణలో, పాల్గొనేవారు EVMపై గణనను అభ్యర్థించాలనుకున్న ప్రతిసారీ కొత్త కోడ్ రాయరు. దానికి బదులుగా, అప్లికేషన్ డెవలపర్లు ప్రోగ్రామ్‌లను (పునర్వినియోగ కోడ్ స్నిప్పెట్‌లు) EVM స్థితిలోకి అప్‌లోడ్ చేస్తారు మరియు వినియోగదారులు విభిన్న పారామీటర్‌లతో ఈ కోడ్ స్నిప్పెట్‌లను అమలు చేయడానికి అభ్యర్థనలు చేస్తారు. మేము నెట్‌వర్క్‌కు అప్‌లోడ్ చేయబడి, అమలు చేయబడిన ప్రోగ్రామ్‌లను "స్మార్ట్ కాంట్రాక్టులు" అని పిలుస్తాము. + +చాలా ప్రాథమిక స్థాయిలో, మీరు స్మార్ట్ కాంట్రాక్టును ఒక రకమైన వెండింగ్ మెషీన్‌గా భావించవచ్చు: ఇది కొన్ని పారామీటర్‌లతో పిలిచినప్పుడు, కొన్ని షరతులు సంతృప్తి చెందినట్లయితే కొన్ని చర్యలు లేదా గణనను చేసే స్క్రిప్ట్. ఉదాహరణకు, ఒక సాధారణ విక్రేత స్మార్ట్ కాంట్రాక్ట్, పిలుపుదారు ఒక నిర్దిష్ట గ్రహీతకు ETH పంపినట్లయితే డిజిటల్ ఆస్తి యొక్క యాజమాన్యాన్ని సృష్టించి కేటాయించగలదు. + +ఏ డెవలపర్ అయినా ఒక స్మార్ట్ కాంట్రాక్టును సృష్టించి, నెట్‌వర్క్‌కు చెల్లించే రుసుముతో, బ్లాక్‌చెయిన్‌ను దాని డేటా లేయర్‌గా ఉపయోగించి, నెట్‌వర్క్‌కు పబ్లిక్‌గా చేయవచ్చు. ఏ వినియోగదారు అయినా మళ్లీ నెట్‌వర్క్‌కు చెల్లించే రుసుముతో దాని కోడ్‌ను అమలు చేయడానికి స్మార్ట్ కాంట్రాక్టును పిలవవచ్చు. + +అందువల్ల, స్మార్ట్ కాంట్రాక్టులతో, డెవలపర్లు యాదృచ్ఛికంగా సంక్లిష్టమైన వినియోగదారు-ముఖ యాప్‌లు మరియు మార్కెట్‌ప్లేస్‌లు, ఆర్థిక సాధనాలు, గేమ్‌లు మొదలైన సేవలను నిర్మించి, అమలు చేయవచ్చు. + +## పదజాలం {#terminology} + +### బ్లాక్‌చెయిన్ {#blockchain} + +నెట్‌వర్క్ చరిత్రలో ఇతీరియము నెట్‌వర్క్‌కు కట్టుబడి ఉన్న అన్ని బ్లాక్‌ల క్రమం. ప్రతి బ్లాక్‌లో మునుపటి బ్లాక్‌కు సూచన ఉంటుంది కాబట్టి దీనికి ఈ పేరు పెట్టారు, ఇది అన్ని బ్లాక్‌లపై (మరియు అందువల్ల ఖచ్చితమైన చరిత్రపై) ఒక క్రమాన్ని నిర్వహించడానికి మాకు సహాయపడుతుంది. + +### ETH {#eth} + +**ఈథర్ (ETH)** ఇతీరియము యొక్క స్థానిక క్రిప్టోకరెన్సీ. వినియోగదారులు వారి కోడ్ అమలు అభ్యర్థనలను నెరవేర్చడానికి ఇతర వినియోగదారులకు ETH చెల్లిస్తారు. + +[ETH గురించి మరింత](/developers/docs/intro-to-ether/) + +### EVM {#evm} + +ఎథేరియం వర్చువల్ మషీన్ అనేది గ్లోబల్ వర్చువల్ కంప్యూటర్, దీని స్థితిని ఇతీరియము నెట్‌వర్క్‌లోని ప్రతి పాల్గొనేవారు నిల్వ చేసి, అంగీకరిస్తారు. ఏ పాల్గొనేవారైనా EVMపై యాదృచ్ఛిక కోడ్ అమలును అభ్యర్థించవచ్చు; కోడ్ అమలు EVM యొక్క స్థితిని మారుస్తుంది. + +[EVM గురించి మరింత](/developers/docs/evm/) + +### నోడ్స్ {#nodes} + +EVM స్థితిని నిల్వ చేస్తున్న నిజ-జీవిత యంత్రాలు. EVM స్థితి మరియు కొత్త స్థితి మార్పుల గురించి సమాచారాన్ని ప్రచారం చేయడానికి నోడ్స్ ఒకదానితో ఒకటి సంభాషిస్తాయి. ఏ వినియోగదారు అయినా ఒక నోడ్ నుండి కోడ్ అమలు అభ్యర్థనను ప్రసారం చేయడం ద్వారా కోడ్ అమలును కూడా అభ్యర్థించవచ్చు. ఇతీరియము నెట్‌వర్క్ అనేది అన్ని ఇతీరియము నోడ్స్ మరియు వాటి కమ్యూనికేషన్‌ల మొత్తం. + +[నోడ్స్ గురించి మరింత](/developers/docs/nodes-and-clients/) + +### ఖాతాలు {#accounts} + +ETH నిల్వ చేయబడిన చోట. వినియోగదారులు ఖాతాలను ప్రారంభించవచ్చు, ఖాతాలలోకి ETH డిపాజిట్ చేయవచ్చు మరియు వారి ఖాతాల నుండి ఇతర వినియోగదారులకు ETH బదిలీ చేయవచ్చు. ఖాతాలు మరియు ఖాతా బ్యాలెన్స్‌లు EVMలోని ఒక పెద్ద పట్టికలో నిల్వ చేయబడతాయి; అవి మొత్తం EVM స్థితిలో ఒక భాగం. + +[ఖాతాల గురించి మరింత](/developers/docs/accounts/) + +### లావాదేవీలు {#transactions} + +"లావాదేవీ అభ్యర్థన" అనేది EVMపై కోడ్ అమలు కోసం అభ్యర్థనకు అధికారిక పదం, మరియు "లావాదేవీ" అనేది నెరవేరిన లావాదేవీ అభ్యర్థన మరియు EVM స్థితిలో సంబంధిత మార్పు. ఏ వినియోగదారు అయినా నోడ్ నుండి నెట్‌వర్క్‌కు లావాదేవీ అభ్యర్థనను ప్రసారం చేయవచ్చు. లావాదేవీ అభ్యర్థన అంగీకరించబడిన EVM స్థితిని ప్రభావితం చేయడానికి, అది మరొక నోడ్ ద్వారా ధృవీకరించబడాలి, అమలు చేయబడాలి మరియు "నెట్‌వర్క్‌కు కట్టుబడి ఉండాలి". ఏదైనా కోడ్ యొక్క అమలు EVMలో స్థితి మార్పుకు కారణమవుతుంది; కట్టుబడి ఉన్న తర్వాత, ఈ స్థితి మార్పు నెట్‌వర్క్‌లోని అన్ని నోడ్స్‌కు ప్రసారం చేయబడుతుంది. లావాదేవీలకు కొన్ని ఉదాహరణలు: + +- నా ఖాతా నుండి ఆలిస్ ఖాతాకు X ETH పంపండి. +- కొంత స్మార్ట్ కాంట్రాక్ట్ కోడ్‌ను EVM స్థితిలోకి ప్రచురించండి. +- Y ఆర్గ్యుమెంట్‌లతో EVMలోని చిరునామా X వద్ద ఉన్న స్మార్ట్ కాంట్రాక్ట్ కోడ్‌ను అమలు చేయండి. + +[లావాదేవీల గురించి మరింత](/developers/docs/transactions/) + +### బ్లాక్‌లు {#blocks} + +లావాదేవీల పరిమాణం చాలా ఎక్కువగా ఉంటుంది, కాబట్టి లావాదేవీలు బ్యాచ్‌లలో లేదా బ్లాక్‌లలో "కట్టుబడి" ఉంటాయి. బ్లాక్‌లు సాధారణంగా డజన్ల నుండి వందల లావాదేవీలను కలిగి ఉంటాయి. + +[బ్లాక్‌ల గురించి మరింత](/developers/docs/blocks/) + +### స్మార్ట్ కాంట్రాక్టులు {#smart-contracts} + +ఒక డెవలపర్ EVM స్థితిలోకి ప్రచురించే పునర్వినియోగ కోడ్ స్నిప్పెట్ (ఒక ప్రోగ్రామ్). లావాదేవీ అభ్యర్థన చేయడం ద్వారా స్మార్ట్ కాంట్రాక్ట్ కోడ్ అమలు చేయబడాలని ఎవరైనా అభ్యర్థించవచ్చు. ఎందుకంటే డెవలపర్లు EVMలోకి యాదృచ్ఛికంగా అమలు చేయగల అప్లికేషన్‌లను (గేమ్‌లు, మార్కెట్‌ప్లేస్‌లు, ఆర్థిక సాధనాలు మొదలైనవి) వ్రాయగలరు. స్మార్ట్ కాంట్రాక్టులను ప్రచురించడం ద్వారా, వీటిని తరచుగా [డాప్స్, లేదా వికేంద్రీకృత యాప్‌లు](/developers/docs/dapps/) అని కూడా అంటారు. + +[స్మార్ట్ కాంట్రాక్టుల గురించి మరింత](/developers/docs/smart-contracts/) + +## మరింత సమాచారం {#further-reading} + +- [ఇతీరియము శ్వేతపత్రం](/whitepaper/) +- [అసలు, ఇతీరియము ఎలా పనిచేస్తుంది?](https://medium.com/@preethikasireddy/how-does-ethereum-work-anyway-22d1df506369) - _ప్రీతి కాశిరెడ్డి_ (**NB** ఈ వనరు ఇప్పటికీ విలువైనదే కానీ ఇది [ది మెర్జ్](/roadmap/merge) కంటే ముందుదని మరియు అందువల్ల ఇప్పటికీ ఇతీరియము యొక్క ప్రూఫ్-ఆఫ్-వర్క్ మెకానిజంను సూచిస్తుందని తెలుసుకోండి - ఇతీరియము ఇప్పుడు వాస్తవానికి [ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos) ఉపయోగించి భద్రపరచబడింది) + +### దృశ్య అభ్యాసకులా? {#visual-learner} + +ఈ వీడియో సిరీస్ పునాది అంశాలపై సమగ్ర అన్వేషణను అందిస్తుంది: + + + +[ఇతీరియము బేసిక్స్ ప్లేలిస్ట్](https://youtube.com/playlist?list=PLqgutSGloqiJyyoL0zvLVFPS-GMD2wKa5&si=kZTf5I7PKGTXDsOZ) + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ + +## సంబంధిత ట్యుటోరియల్స్ {#related-tutorials} + +- [డెవలపర్ కోసం ఇతీరియముకు గైడ్, పార్ట్ 1](/developers/tutorials/a-developers-guide-to-ethereum-part-one/) _– పైథాన్ మరియు web3.py ఉపయోగించి ఇతీరియము యొక్క చాలా బిగినర్-ఫ్రెండ్లీ అన్వేషణ_ diff --git a/public/content/translations/te/developers/docs/mev/index.md b/public/content/translations/te/developers/docs/mev/index.md new file mode 100644 index 00000000000..d33f0ad535b --- /dev/null +++ b/public/content/translations/te/developers/docs/mev/index.md @@ -0,0 +1,221 @@ +--- +title: "గరిష్టంగా సంగ్రహించగల విలువ (MEV)" +description: "గరిష్టంగా సంగ్రహించగల విలువ (MEV)కు ఒక పరిచయం" +lang: te +--- + +గరిష్టంగా సంగ్రహించగల విలువ (MEV) అంటే ఒక బ్లాక్‌లో లావాదేవీలను చేర్చడం, మినహాయించడం మరియు వాటి క్రమాన్ని మార్చడం ద్వారా ప్రామాణిక బ్లాక్ రివార్డ్ మరియు గ్యాస్ ఫీజులకు మించి బ్లాక్ ఉత్పత్తి నుండి సంగ్రహించగల గరిష్ట విలువ. + +## గరిష్టంగా సంగ్రహించగల విలువ {#maximal-extractable-value} + +గరిష్టంగా సంగ్రహించగల విలువను మొదట [ప్రూఫ్-ఆఫ్-వర్క్](/developers/docs/consensus-mechanisms/pow/) సందర్భంలో వర్తింపజేశారు, మరియు మొదట్లో దీనిని "మైనర్ సంగ్రహించగల విలువ" అని పిలిచేవారు. ఎందుకంటే ప్రూఫ్-ఆఫ్-వర్క్‌లో, మైనర్లు లావాదేవీల చేర్చడం, మినహాయించడం మరియు క్రమాన్ని నియంత్రిస్తారు. అయితే, [ది మెర్జ్](/roadmap/merge) ద్వారా ప్రూఫ్-ఆఫ్-స్టేక్‌కు మారినప్పటి నుండి, ఈ పాత్రలకు వాలిడేటర్లు బాధ్యత వహిస్తున్నారు మరియు మైనింగ్ ఇకపై ఇతీరియము ప్రోటోకాల్‌లో భాగం కాదు. అయినప్పటికీ, విలువ సంగ్రహణ పద్ధతులు ఇప్పటికీ ఉన్నాయి, కాబట్టి ఇప్పుడు బదులుగా "గరిష్టంగా సంగ్రహించగల విలువ" అనే పదాన్ని ఉపయోగిస్తున్నారు. + +## అవసరాలు {#prerequisites} + +మీకు [లావాదేవీలు](/developers/docs/transactions/), [బ్లాక్‌లు](/developers/docs/blocks/), [ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos) మరియు [గ్యాస్](/developers/docs/gas/) గురించి పరిచయం ఉందని నిర్ధారించుకోండి. [డాప్స్](/apps/) మరియు [DeFi](/defi/) గురించి పరిచయం కూడా సహాయపడుతుంది. + +## MEV సంగ్రహణ {#mev-extraction} + +సిద్ధాంతపరంగా MEV పూర్తిగా వాలిడేటర్లకు దక్కుతుంది, ఎందుకంటే లాభదాయకమైన MEV అవకాశాన్ని అమలు చేయడానికి హామీ ఇవ్వగల ఏకైక పక్షం వారే. అయితే ఆచరణలో, MEV యొక్క అధిక భాగం "సెర్చర్లు" అని పిలవబడే స్వతంత్ర నెట్‌వర్క్ పార్టిసిపెంట్‌ల ద్వారా సంగ్రహించబడుతుంది. లాభదాయకమైన MEV అవకాశాలను గుర్తించడానికి సెర్చర్లు బ్లాక్ చైను డేటాపై సంక్లిష్టమైన అల్గారిథమ్‌లను అమలు చేస్తారు మరియు ఆ లాభదాయకమైన లావాదేవీలను నెట్‌వర్క్‌కు స్వయంచాలకంగా సమర్పించడానికి బాట్‌లను కలిగి ఉంటారు. + +ఏమైనప్పటికీ వాలిడేటర్లు పూర్తి MEV మొత్తంలో కొంత భాగాన్ని పొందుతారు, ఎందుకంటే వారి లాభదాయకమైన లావాదేవీలను ఒక బ్లాక్‌లో చేర్చడానికి అధిక సంభావ్యతకు బదులుగా అధిక గ్యాస్ ఫీజులను (ఇవి వాలిడేటర్‌కు వెళ్తాయి) చెల్లించడానికి సెర్చర్లు సిద్ధంగా ఉంటారు. సెర్చర్లు ఆర్థికంగా హేతుబద్ధంగా ఉన్నారని భావిస్తే, ఒక సెర్చర్ చెల్లించడానికి సిద్ధంగా ఉండే గ్యాస్ ఫీజు ఆ సెర్చర్ యొక్క MEVలో 100% వరకు ఉంటుంది (ఎందుకంటే గ్యాస్ ఫీజు ఎక్కువగా ఉంటే, సెర్చర్ డబ్బును కోల్పోతాడు). + +దానితో, [DEX ఆర్బిట్రేజ్](#mev-examples-dex-arbitrage) వంటి కొన్ని అత్యంత పోటీతత్వ MEV అవకాశాల కోసం, సెర్చర్లు తమ మొత్తం MEV రాబడిలో 90% లేదా అంతకంటే ఎక్కువ గ్యాస్ ఫీజుగా వాలిడేటర్‌కు చెల్లించాల్సి రావచ్చు, ఎందుకంటే చాలా మంది అదే లాభదాయకమైన ఆర్బిట్రేజ్ ట్రేడ్‌ను అమలు చేయాలనుకుంటారు. ఎందుకంటే వారి ఆర్బిట్రేజ్ లావాదేవీ నడుస్తుందని హామీ ఇచ్చే ఏకైక మార్గం వారు అత్యధిక గ్యాస్ ధరతో లావాదేవీని సమర్పించడమే. + +### గ్యాస్ గోల్ఫింగ్ {#mev-extraction-gas-golfing} + +ఈ డైనమిక్ "గ్యాస్ గోల్ఫింగ్‌"లో — అంటే లావాదేవీలను అతి తక్కువ గ్యాస్‌ను ఉపయోగించేలా ప్రోగ్రామింగ్ చేయడంలో — నైపుణ్యం కలిగి ఉండటాన్ని ఒక పోటీతత్వ ప్రయోజనంగా మార్చింది, ఎందుకంటే ఇది తమ మొత్తం గ్యాస్ ఫీజులను స్థిరంగా ఉంచుతూనే (గ్యాస్ ఫీజులు = గ్యాస్ ధర \* ఉపయోగించిన గ్యాస్ కాబట్టి) సెర్చర్లకు అధిక గ్యాస్ ధరను సెట్ చేయడానికి అనుమతిస్తుంది. + +కొన్ని ప్రసిద్ధ గ్యాస్ గోల్ఫ్ టెక్నిక్‌లలో ఇవి ఉన్నాయి: సున్నాల పొడవైన స్ట్రింగ్‌తో ప్రారంభమయ్యే చిరునామాలను ఉపయోగించడం (ఉదా., [0x0000000000C521824EaFf97Eac7B73B084ef9306](https://eth.blockscout.com/address/0x0000000000C521824EaFf97Eac7B73B084ef9306)), ఎందుకంటే అవి నిల్వ చేయడానికి తక్కువ స్థలాన్ని (మరియు అందువల్ల గ్యాస్‌ను) తీసుకుంటాయి; మరియు కాంట్రాక్టులలో చిన్న [ERC-20](/developers/docs/standards/tokens/erc-20/) టోకెన్ బ్యాలెన్స్‌లను వదిలివేయడం, ఎందుకంటే ఒక స్టోరేజ్ స్లాట్‌ను ప్రారంభించడానికి (బ్యాలెన్స్ 0 అయితే ఈ పరిస్థితి) ఒక స్టోరేజ్ స్లాట్‌ను అప్‌డేట్ చేయడం కంటే ఎక్కువ గ్యాస్ ఖర్చవుతుంది. గ్యాస్ వినియోగాన్ని తగ్గించడానికి మరిన్ని పద్ధతులను కనుగొనడం సెర్చర్ల మధ్య ఒక క్రియాశీల పరిశోధనా రంగం. + +### సాధారణీకరించిన ఫ్రంట్‌రన్నర్లు {#mev-extraction-generalized-frontrunners} + +లాభదాయకమైన MEV అవకాశాలను గుర్తించడానికి సంక్లిష్ట అల్గారిథమ్‌లను ప్రోగ్రామ్ చేయడానికి బదులుగా, కొంతమంది సెర్చర్లు సాధారణీకరించిన ఫ్రంట్‌రన్నర్‌లను నడుపుతారు. సాధారణీకరించిన ఫ్రంట్‌రన్నర్లు అనేవి లాభదాయకమైన లావాదేవీలను గుర్తించడానికి మెమ్‌పూల్‌ను గమనించే బాట్‌లు. ఫ్రంట్‌రన్నర్ సంభావ్యంగా లాభదాయకమైన లావాదేవీ యొక్క సంకేత భాషను కాపీ చేస్తుంది, చిరునామాలను ఫ్రంట్‌రన్నర్ చిరునామాతో భర్తీ చేస్తుంది, మరియు సవరించిన లావాదేవీ ఫ్రంట్‌రన్నర్ చిరునామాకు లాభాన్ని చేకూరుస్తుందని నిర్ధారించుకోవడానికి లావాదేవీని స్థానికంగా అమలు చేస్తుంది. లావాదేవీ నిజంగా లాభదాయకంగా ఉంటే, ఫ్రంట్‌రన్నర్ భర్తీ చేసిన చిరునామా మరియు అధిక గ్యాస్ ధరతో సవరించిన లావాదేవీని సమర్పించి, అసలు లావాదేవీని "ఫ్రంట్‌రన్నింగ్" చేసి, అసలు సెర్చర్ యొక్క MEVని పొందుతుంది. + +### Flashbots {#mev-extraction-flashbots} + +Flashbots అనేది ఒక స్వతంత్ర ప్రాజెక్ట్, ఇది ఎగ్జిక్యూషన్ క్లయింట్‌లను ఒక సేవతో విస్తరిస్తుంది, ఇది సెర్చర్లు తమ MEV లావాదేవీలను పబ్లిక్ మెమ్‌పూల్‌కు వెల్లడించకుండా వాలిడేటర్లకు సమర్పించడానికి అనుమతిస్తుంది. ఇది సాధారణీకరించిన ఫ్రంట్‌రన్నర్‌ల ద్వారా లావాదేవీలు ఫ్రంట్‌రన్ కాకుండా నిరోధిస్తుంది. + +## MEV ఉదాహరణలు {#mev-examples} + +కొన్ని మార్గాల్లో బ్లాక్ చైనుపై MEV ఉద్భవిస్తుంది. + +### DEX ఆర్బిట్రేజ్ {#mev-examples-dex-arbitrage} + +[వికేంద్రీకృత మార్పిడి](/glossary/#dex) (DEX) ఆర్బిట్రేజ్ అత్యంత సరళమైన మరియు సుప్రసిద్ధమైన MEV అవకాశం. ఫలితంగా, ఇది అత్యంత పోటీతత్వమైనది కూడా. + +ఇది ఇలా పనిచేస్తుంది: రెండు DEXలు ఒక టోకెన్‌ను రెండు వేర్వేరు ధరలకు ఆఫర్ చేస్తే, ఎవరైనా తక్కువ ధర ఉన్న DEXలో టోకెన్‌ను కొని, దానిని అధిక ధర ఉన్న DEXలో ఒకే, అటామిక్ లావాదేవీలో అమ్మవచ్చు. బ్లాక్ చైను యొక్క మెకానిక్స్ వల్ల, ఇది నిజమైన, రిస్క్ లేని ఆర్బిట్రేజ్. + +Uniswap మరియు Sushiswap లలో ETH/DAI జత యొక్క విభిన్న ధరల ప్రయోజనాన్ని పొందడం ద్వారా ఒక సెర్చర్ 1,000 ETHను 1,045 ETHగా మార్చిన లాభదాయకమైన ఆర్బిట్రేజ్ లావాదేవీకి [ఇక్కడ ఒక ఉదాహరణ ఉంది](https://eth.blockscout.com/tx/0x5e1657ef0e9be9bc72efefe59a2528d0d730d478cfc9e6cdd09af9f997bb3ef4). + +### లిక్విడేషన్‌లు {#mev-examples-liquidations} + +లెండింగ్ ప్రోటోకాల్ లిక్విడేషన్‌లు మరొక సుప్రసిద్ధమైన MEV అవకాశాన్ని అందిస్తాయి. + +Maker మరియు Aave వంటి లెండింగ్ ప్రోటోకాల్స్ వినియోగదారులు కొంత కొలేటరల్ (ఉదా., ETH) డిపాజిట్ చేయాలని కోరుతాయి. ఈ డిపాజిట్ చేయబడిన కొలేటరల్‌ను ఇతర వినియోగదారులకు రుణాలు ఇవ్వడానికి ఉపయోగిస్తారు. + +వినియోగదారులు వారి అవసరాన్ని బట్టి ఇతరుల నుండి ఆస్తులు మరియు టోకెన్‌లను వారి డిపాజిట్ చేసిన కొలేటరల్‌లో ఒక నిర్దిష్ట శాతం వరకు రుణం తీసుకోవచ్చు (ఉదా., మీరు MakerDAO గవర్నెన్స్ ప్రతిపాదనలో ఓటు వేయాలనుకుంటే మీరు MKRని రుణం తీసుకోవచ్చు). ఉదాహరణకు, రుణ మొత్తం గరిష్టంగా 30% అయితే, ప్రోటోకాల్‌లో 100 DAI డిపాజిట్ చేసే వినియోగదారుడు 30 DAI విలువైన మరొక ఆస్తిని రుణం తీసుకోవచ్చు. ప్రోటోకాల్ ఖచ్చితమైన రుణ శక్తి శాతాన్ని నిర్ణయిస్తుంది. + +రుణగ్రహీత కొలేటరల్ విలువ హెచ్చుతగ్గులకు లోనయ్యే కొద్దీ, వారి రుణ శక్తి కూడా మారుతుంది. ఒకవేళ, మార్కెట్ హెచ్చుతగ్గుల కారణంగా, రుణం తీసుకున్న ఆస్తుల విలువ వారి కొలేటరల్ విలువలో, ఉదాహరణకు, 30% మించిపోతే (మళ్ళీ, ఖచ్చితమైన శాతం ప్రోటోకాల్ ద్వారా నిర్ణయించబడుతుంది), ప్రోటోకాల్ సాధారణంగా ఎవరినైనా కొలేటరల్‌ను లిక్విడేట్ చేయడానికి అనుమతిస్తుంది, తక్షణమే రుణదాతలకు చెల్లిస్తుంది (ఇది సాంప్రదాయ ఫైనాన్స్‌లో [మార్జిన్ కాల్స్](https://www.investopedia.com/terms/m/margincall.asp) ఎలా పనిచేస్తాయో దానికి సమానంగా ఉంటుంది). లిక్విడేట్ చేయబడితే, రుణగ్రహీత సాధారణంగా భారీ లిక్విడేషన్ రుసుము చెల్లించవలసి ఉంటుంది, అందులో కొంత భాగం లిక్విడేటర్‌కు వెళుతుంది — ఇక్కడే MEV అవకాశం వస్తుంది. + +ఏ రుణగ్రహీతలను లిక్విడేట్ చేయవచ్చో నిర్ణయించడానికి మరియు లిక్విడేషన్ లావాదేవీని సమర్పించిన వారిలో మొదటి వ్యక్తిగా ఉండి, తమ కోసం లిక్విడేషన్ ఫీజును వసూలు చేసుకోవడానికి సెర్చర్లు బ్లాక్ చైను డేటాను వీలైనంత వేగంగా విశ్లేషించడానికి పోటీపడతారు. + +### శాండ్‌విచ్ ట్రేడింగ్ {#mev-examples-sandwich-trading} + +శాండ్‌విచ్ ట్రేడింగ్ అనేది MEV సంగ్రహణ యొక్క మరొక సాధారణ పద్ధతి. + +శాండ్‌విచ్ చేయడానికి, ఒక సెర్చర్ పెద్ద DEX ట్రేడ్‌ల కోసం మెమ్‌పూల్‌ను గమనిస్తాడు. ఉదాహరణకు, ఎవరైనా Uniswapలో DAIతో 10,000 UNI కొనాలనుకుంటున్నారని అనుకుందాం. ఈ పరిమాణంలో జరిగే ట్రేడ్ UNI/DAI జతపై గణనీయమైన ప్రభావాన్ని చూపుతుంది, బహుశా DAIతో పోలిస్తే UNI ధరను గణనీయంగా పెంచుతుంది. + +ఒక సెర్చర్ UNI/DAI జతపై ఈ పెద్ద ట్రేడ్ యొక్క సుమారు ధర ప్రభావాన్ని లెక్కించగలడు మరియు పెద్ద ట్రేడ్‌కు వెంటనే _ముందు_ ఒక సరైన కొనుగోలు ఆర్డర్‌ను అమలు చేయగలడు, UNIని చౌకగా కొని, ఆపై పెద్ద ట్రేడ్ తర్వాత వెంటనే ఒక అమ్మకం ఆర్డర్‌ను అమలు చేయగలడు, దానిని పెద్ద ఆర్డర్ వల్ల పెరిగిన అధిక ధరకు అమ్ముతాడు. + +అయినప్పటికీ, శాండ్‌విచింగ్ మరింత ప్రమాదకరమైనది, ఎందుకంటే ఇది అటామిక్ కాదు (పైన వివరించినట్లుగా DEX ఆర్బిట్రేజ్ వలె కాకుండా) మరియు [సాల్మొనెల్లా దాడికి](https://github.com/Defi-Cartel/salmonella) గురయ్యే అవకాశం ఉంది. + +### NFT MEV {#mev-examples-nfts} + +NFT స్పేస్‌లో MEV అనేది ఒక ఉద్భవిస్తున్న దృగ్విషయం, మరియు ఇది తప్పనిసరిగా లాభదాయకం కాదు. + +అయితే, NFT లావాదేవీలు ఇతర అన్ని ఇతీరియము లావాదేవీలచే పంచుకోబడిన అదే బ్లాక్ చైనుపై జరుగుతాయి కాబట్టి, NFT మార్కెట్‌లో కూడా సాంప్రదాయ MEV అవకాశాలలో ఉపయోగించే పద్ధతులనే సెర్చర్లు ఉపయోగించవచ్చు. + +ఉదాహరణకు, ఒక ప్రసిద్ధ NFT డ్రాప్ ఉంటే మరియు ఒక సెర్చర్ ఒక నిర్దిష్ట NFT లేదా NFTల సెట్‌ను కోరుకుంటే, వారు NFTని కొనడానికి వరుసలో మొదటి వ్యక్తిగా ఉండేలా ఒక లావాదేవీని ప్రోగ్రామ్ చేయవచ్చు, లేదా వారు మొత్తం NFTల సెట్‌ను ఒకే లావాదేవీలో కొనవచ్చు. లేదా ఒక NFT [పొరపాటున తక్కువ ధరకు లిస్ట్ చేయబడితే](https://www.theblockcrypto.com/post/113546/mistake-sees-69000-cryptopunk-sold-for-less-than-a-cent), ఒక సెర్చర్ ఇతర కొనుగోలుదారులను ఫ్రంట్‌రన్ చేసి దానిని చౌకగా చేజిక్కించుకోవచ్చు. + +ఒక సెర్చర్ ధర ఫ్లోర్‌లో ప్రతి ఒక్క క్రిప్టోపంక్‌ను [కొనడానికి](https://eth.blockscout.com/address/0x650dCdEB6ecF05aE3CAF30A70966E2F395d5E9E5?tab=txs) $7 మిలియన్లు ఖర్చు చేసినప్పుడు NFT MEV యొక్క ఒక ప్రముఖ ఉదాహరణ సంభవించింది. ఒక బ్లాక్ చైను పరిశోధకుడు [ట్విట్టర్‌లో వివరించారు](https://twitter.com/IvanBogatyy/status/1422232184493121538), తమ కొనుగోలును రహస్యంగా ఉంచడానికి కొనుగోలుదారు ఒక MEV ప్రొవైడర్‌తో ఎలా పనిచేశాడో. + +### ది లాంగ్ టెయిల్ {#mev-examples-long-tail} + +DEX ఆర్బిట్రేజ్, లిక్విడేషన్‌లు, మరియు శాండ్‌విచ్ ట్రేడింగ్ అన్నీ చాలా సుప్రసిద్ధమైన MEV అవకాశాలు మరియు కొత్త సెర్చర్లకు లాభదాయకంగా ఉండే అవకాశం లేదు. అయితే, తక్కువగా తెలిసిన MEV అవకాశాల లాంగ్ టెయిల్ ఉంది (NFT MEV వాదించదగ్గ అటువంటి ఒక అవకాశం). + +ఇప్పుడిప్పుడే మొదలుపెడుతున్న సెర్చర్లు ఈ లాంగర్ టెయిల్‌లో MEV కోసం వెతకడం ద్వారా మరింత విజయాన్ని కనుగొనగలరు. Flashbot యొక్క [MEV జాబ్ బోర్డ్](https://github.com/flashbots/mev-job-board) కొన్ని ఉద్భవిస్తున్న అవకాశాలను లిస్ట్ చేస్తుంది. + +## MEV యొక్క ప్రభావాలు {#effects-of-mev} + +MEV అంతా చెడ్డది కాదు — ఇతీరియముపై MEVకి సానుకూల మరియు ప్రతికూల పరిణామాలు రెండూ ఉన్నాయి. + +### మంచి {#effects-of-mev-the-good} + +అనేక DeFi ప్రాజెక్ట్‌లు తమ ప్రోటోకాల్‌ల ఉపయోగం మరియు స్థిరత్వాన్ని నిర్ధారించడానికి ఆర్థికంగా హేతుబద్ధమైన యాక్టర్లపై ఆధారపడతాయి. ఉదాహరణకు, DEX ఆర్బిట్రేజ్ వినియోగదారులు వారి టోకెన్‌లకు ఉత్తమమైన, అత్యంత సరైన ధరలను పొందేలా చూస్తుంది, మరియు రుణదాతలకు తిరిగి చెల్లించబడతాయని నిర్ధారించడానికి రుణగ్రహీతలు కొలేటరలైజేషన్ నిష్పత్తుల కంటే దిగువకు పడిపోయినప్పుడు లెండింగ్ ప్రోటోకాల్స్ వేగవంతమైన లిక్విడేషన్‌లపై ఆధారపడతాయి. + +ఆర్థిక అసమర్థతలను అన్వేషించి, సరిచేసే మరియు ప్రోటోకాల్‌ల ఆర్థిక ప్రోత్సాహకాలను సద్వినియోగం చేసుకునే హేతుబద్ధమైన సెర్చర్లు లేకుండా, సాధారణంగా DeFi ప్రోటోకాల్‌లు మరియు డాప్స్ నేడు ఉన్నంత పటిష్టంగా ఉండకపోవచ్చు. + +### చెడు {#effects-of-mev-the-bad} + +అప్లికేషన్ లేయర్‌లో, శాండ్‌విచ్ ట్రేడింగ్ వంటి కొన్ని రకాల MEV, వినియోగదారులకు నిస్సందేహంగా అధ్వాన్నమైన అనుభవాన్ని కలిగిస్తాయి. శాండ్‌విచ్‌కు గురైన వినియోగదారులు వారి ట్రేడ్‌లలో పెరిగిన స్లిప్పేజ్ మరియు అధ్వాన్నమైన ఎగ్జిక్యూషన్‌ను ఎదుర్కొంటారు. + +నెట్‌వర్క్ లేయర్‌లో, సాధారణీకరించిన ఫ్రంట్‌రన్నర్లు మరియు వారు తరచుగా పాల్గొనే గ్యాస్-ధర వేలంపాటలు (రెండు లేదా అంతకంటే ఎక్కువ ఫ్రంట్‌రన్నర్లు తమ లావాదేవీని తదుపరి బ్లాక్‌లో చేర్చడానికి తమ లావాదేవీల గ్యాస్ ధరను క్రమంగా పెంచుకుంటూ పోటీ పడినప్పుడు) నెట్‌వర్క్ రద్దీకి మరియు సాధారణ లావాదేవీలను అమలు చేయడానికి ప్రయత్నిస్తున్న ప్రతి ఒక్కరికీ అధిక గ్యాస్ ధరలకు దారితీస్తాయి. + +బ్లాక్‌ల _లోపల_ ఏమి జరుగుతుందో దానికి మించి, MEV బ్లాక్‌ల _మధ్య_ హానికరమైన ప్రభావాలను కలిగి ఉంటుంది. ఒక బ్లాక్‌లో అందుబాటులో ఉన్న MEV ప్రామాణిక బ్లాక్ రివార్డును గణనీయంగా మించిపోతే, వాలిడేటర్లు బ్లాక్‌లను రీఆర్గ్ చేయడానికి మరియు MEVని తమ కోసం సంగ్రహించడానికి ప్రోత్సహించబడవచ్చు, ఇది బ్లాక్ చైను పునర్వ్యవస్థీకరణ మరియు ఏకాభిప్రాయం అస్థిరతకు కారణమవుతుంది. + +బ్లాక్ చైను పునర్వ్యవస్థీకరణ యొక్క ఈ అవకాశం [గతంలో బిట్‌కాయిన్ బ్లాక్ చైనుపై అన్వేషించబడింది](https://dl.acm.org/doi/10.1145/2976749.2978408). బిట్‌కాయిన్ బ్లాక్ రివార్డ్ సగానికి తగ్గుతూ మరియు లావాదేవీ ఫీజులు బ్లాక్ రివార్డులో ఎక్కువ భాగం ఆక్రమించడంతో, మైనర్లు తదుపరి బ్లాక్ రివార్డును వదులుకుని, బదులుగా అధిక ఫీజులతో గత బ్లాక్‌లను తిరిగి మైన్ చేయడం ఆర్థికంగా హేతుబద్ధమయ్యే పరిస్థితులు తలెత్తుతాయి. MEV పెరుగుదలతో, ఇతీరియములో కూడా ఇదే రకమైన పరిస్థితి సంభవించవచ్చు, ఇది బ్లాక్ చైను యొక్క సమగ్రతకు ముప్పు కలిగిస్తుంది. + +## MEV యొక్క స్థితి {#state-of-mev} + +2021 ప్రారంభంలో MEV సంగ్రహణ బాగా పెరిగింది, దీని ఫలితంగా సంవత్సరం మొదటి కొన్ని నెలల్లో గ్యాస్ ధరలు విపరీతంగా పెరిగాయి. Flashbots యొక్క MEV రిలే యొక్క ఆవిర్భావం సాధారణీకరించిన ఫ్రంట్‌రన్నర్‌ల ప్రభావాన్ని తగ్గించింది మరియు గ్యాస్ ధర వేలంపాటలను ఆఫ్‌చైన్‌కు తీసుకువెళ్ళింది, సాధారణ వినియోగదారులకు గ్యాస్ ధరలను తగ్గించింది. + +అనేకమంది సెర్చర్లు ఇప్పటికీ MEV నుండి మంచి డబ్బు సంపాదిస్తున్నప్పటికీ, అవకాశాలు మరింతగా ప్రసిద్ధి చెందడం మరియు ఎక్కువ మంది సెర్చర్లు అదే అవకాశం కోసం పోటీ పడటంతో, వాలిడేటర్లు మొత్తం MEV రాబడిలో ఎక్కువ భాగాన్ని సంగ్రహిస్తారు (ఎందుకంటే మొదట వివరించిన అదే రకమైన గ్యాస్ వేలంపాటలు Flashbots లో కూడా జరుగుతాయి, అయితే ప్రైవేట్‌గా, మరియు వాలిడేటర్లు ఫలితంగా వచ్చే గ్యాస్ రాబడిని సంగ్రహిస్తారు). MEV ఇతీరియముకు మాత్రమే ప్రత్యేకమైనది కాదు, మరియు ఇతీరియములో అవకాశాలు మరింత పోటీతత్వంగా మారడంతో, సెర్చర్లు బినాన్స్ స్మార్ట్ చైన్ వంటి ప్రత్యామ్నాయ బ్లాక్‌చైన్‌లకు మారుతున్నారు, ఇక్కడ ఇతీరియములో ఉన్నటువంటి MEV అవకాశాలు తక్కువ పోటీతో ఉన్నాయి. + +మరోవైపు, ప్రూఫ్-ఆఫ్-వర్క్ నుండి ప్రూఫ్-ఆఫ్-స్టేక్‌కు మారడం మరియు రోల్‌అప్‌లను ఉపయోగించి ఇతీరియమును స్కేల్ చేయడానికి జరుగుతున్న ప్రయత్నం అన్నీ MEV ల్యాండ్‌స్కేప్‌ను ఇంకా కొంత అస్పష్టంగా ఉన్న మార్గాల్లో మారుస్తాయి. ప్రూఫ్-ఆఫ్-వర్క్‌లోని సంభావ్యతా నమూనాతో పోలిస్తే, ముందుగానే కొంతవరకు తెలిసిన గ్యారంటీడ్ బ్లాక్-ప్రపోజర్‌లను కలిగి ఉండటం MEV సంగ్రహణ యొక్క డైనమిక్స్‌ను ఎలా మారుస్తుందో లేదా [సింగిల్ సీక్రెట్ లీడర్ ఎలక్షన్](https://ethresear.ch/t/secret-non-single-leader-election/11789) మరియు [డిస్ట్రిబ్యూటెడ్ వాలిడేటర్ టెక్నాలజీ](/staking/dvt/) అమలు చేయబడినప్పుడు ఇది ఎలా అంతరాయం కలిగిస్తుందో ఇంకా బాగా తెలియదు. అదేవిధంగా, చాలా వినియోగదారుల కార్యాచరణ ఇతీరియము నుండి దాని లేయర్ 2 రోల్‌అప్‌లు మరియు షార్డ్‌లకు పోర్ట్ చేయబడినప్పుడు ఏ MEV అవకాశాలు ఉంటాయో చూడాలి. + +## ఇతీరియము ప్రూఫ్-ఆఫ్-స్టేక్ (PoS)లో MEV {#mev-in-ethereum-proof-of-stake} + +వివరించినట్లుగా, MEV మొత్తం వినియోగదారు అనుభవం మరియు ఏకాభిప్రాయం-లేయర్ భద్రతపై ప్రతికూల ప్రభావాలను కలిగి ఉంది. కానీ ఇతీరియము ప్రూఫ్-ఆఫ్-స్టేక్ ఏకాభిప్రాయం (“ది మెర్జ్” అని పిలువబడేది) కు మారడం కొత్త MEV-సంబంధిత రిస్కులను పరిచయం చేయవచ్చు: + +### వాలిడేటర్ కేంద్రీకరణ {#validator-centralization} + +మెర్జ్ అనంతర ఇతీరియములో, వాలిడేటర్లు (32 ETH సెక్యూరిటీ డిపాజిట్లు చేసి) బీకాన్ చైన్‌కు జోడించబడిన బ్లాక్‌ల చెల్లుబాటుపై ఏకాభిప్రాయానికి వస్తారు. 32 ETH చాలా మందికి అందుబాటులో ఉండకపోవచ్చు కాబట్టి, [స్టేకింగ్ పూల్‌లో చేరడం](/staking/pools/) మరింత సాధ్యమయ్యే ఎంపిక కావచ్చు. అయినప్పటికీ, [సోలో స్టేకర్ల](/staking/solo/) యొక్క ఆరోగ్యకరమైన పంపిణీ ఆదర్శవంతమైనది, ఎందుకంటే ఇది వాలిడేటర్ల కేంద్రీకరణను తగ్గిస్తుంది మరియు ఇతీరియము యొక్క భద్రతను మెరుగుపరుస్తుంది. + +అయితే, MEV సంగ్రహణ వాలిడేటర్ కేంద్రీకరణను వేగవంతం చేయగలదని నమ్ముతారు. ఇది పాక్షికంగా, వాలిడేటర్లు గతంలో మైనర్లు చేసిన దానికంటే [బ్లాక్‌లను ప్రతిపాదించడం కోసం తక్కువ సంపాదించడం](/roadmap/merge/issuance/#how-the-merge-impacts-ETH-supply) వలన, MEV సంగ్రహణ [ది మెర్జ్](/roadmap/merge/) నుండి [వాలిడేటర్ సంపాదనలను](https://github.com/flashbots/eth2-research/blob/main/notebooks/mev-in-eth2/eth2-mev-calc.ipynb) బాగా ప్రభావితం చేసింది. + +పెద్ద స్టేకింగ్ పూల్స్‌కు MEV అవకాశాలను సంగ్రహించడానికి అవసరమైన ఆప్టిమైజేషన్లలో పెట్టుబడి పెట్టడానికి ఎక్కువ వనరులు ఉండే అవకాశం ఉంది. ఈ పూల్స్ ఎంత ఎక్కువ MEVని సంగ్రహిస్తే, వారి MEV-సంగ్రహణ సామర్థ్యాలను మెరుగుపరచడానికి (మరియు మొత్తం రాబడిని పెంచడానికి) అంత ఎక్కువ వనరులు ఉంటాయి, ముఖ్యంగా [ఎకానమీస్ ఆఫ్ స్కేల్](https://www.investopedia.com/terms/e/economiesofscale.asp#) ను సృష్టిస్తాయి. + +తక్కువ వనరులు అందుబాటులో ఉండటంతో, సోలో స్టేకర్లు MEV అవకాశాల నుండి లాభం పొందలేకపోవచ్చు. ఇది ఇతీరియములో వికేంద్రీకరణను తగ్గించి, తమ సంపాదనలను పెంచుకోవడానికి శక్తివంతమైన స్టేకింగ్ పూల్స్‌లో చేరడానికి స్వతంత్ర వాలిడేటర్లపై ఒత్తిడిని పెంచవచ్చు. + +### అనుమతి పొందిన మెమ్‌పూల్స్ {#permissioned-mempools} + +శాండ్‌విచింగ్ మరియు ఫ్రంట్‌రన్నింగ్ దాడులకు ప్రతిస్పందనగా, వ్యాపారులు లావాదేవీ గోప్యత కోసం వాలిడేటర్లతో ఆఫ్‌చైన్ ఒప్పందాలు చేసుకోవడం ప్రారంభించవచ్చు. సంభావ్య MEV లావాదేవీని పబ్లిక్ మెమ్‌పూల్‌కు పంపడానికి బదులుగా, వ్యాపారి దానిని నేరుగా వాలిడేటర్‌కు పంపుతాడు, వారు దానిని ఒక బ్లాక్‌లో చేర్చి, లాభాలను వ్యాపారితో పంచుకుంటారు. + +"డార్క్ పూల్స్" ఈ ఏర్పాటు యొక్క పెద్ద వెర్షన్ మరియు నిర్దిష్ట ఫీజులు చెల్లించడానికి సిద్ధంగా ఉన్న వినియోగదారులకు అందుబాటులో ఉండే అనుమతి పొందిన, యాక్సెస్-మాత్రమే మెమ్‌పూల్స్‌గా పనిచేస్తాయి. ఈ ధోరణి ఇతీరియము యొక్క అనుమతిలేనితనం మరియు విశ్వసనీయతను తగ్గిస్తుంది మరియు బ్లాక్ చైనును అత్యధిక బిడ్డర్‌కు అనుకూలంగా ఉండే "పే-టు-ప్లే" మెకానిజంగా మార్చగలదు. + +అనుమతి పొందిన మెమ్‌పూల్స్ మునుపటి విభాగంలో వివరించిన కేంద్రీకరణ ప్రమాదాలను కూడా వేగవంతం చేస్తాయి. బహుళ వాలిడేటర్లను నడుపుతున్న పెద్ద పూల్స్ వ్యాపారులు మరియు వినియోగదారులకు లావాదేవీ గోప్యతను అందించడం ద్వారా ప్రయోజనం పొందే అవకాశం ఉంది, వారి MEV రాబడిని పెంచుతుంది. + +మెర్జ్ అనంతర ఇతీరియములో ఈ MEV-సంబంధిత సమస్యలను ఎదుర్కోవడం ఒక ప్రధాన పరిశోధన రంగం. ఇప్పటి వరకు, ది మెర్జ్ తర్వాత ఇతీరియము యొక్క వికేంద్రీకరణ మరియు భద్రతపై MEV యొక్క ప్రతికూల ప్రభావాన్ని తగ్గించడానికి ప్రతిపాదించబడిన రెండు పరిష్కారాలు [**ప్రపోజర్-బిల్డర్ సెపరేషన్ (PBS)**](/roadmap/pbs/) మరియు [**బిల్డర్ ఎపిఐ**](https://github.com/ethereum/builder-specs). + +### ప్రపోజర్-బిల్డర్ సెపరేషన్ {#proposer-builder-separation} + +ప్రూఫ్-ఆఫ్-వర్క్ మరియు ప్రూఫ్-ఆఫ్-స్టేక్ రెండింటిలోనూ, ఒక బ్లాక్‌ను నిర్మించే నోడ్ దానిని ఏకాభిప్రాయంలో పాల్గొనే ఇతర నోడ్స్‌కు చైన్‌కు జోడించడానికి ప్రతిపాదిస్తుంది. ఒక కొత్త బ్లాక్ దానిపై మరొక మైనర్ నిర్మించిన తర్వాత (PoWలో) లేదా అది మెజారిటీ వాలిడేటర్ల నుండి అటెస్టేషన్‌లను పొందిన తర్వాత (PoSలో) కానానికల్ చైన్‌లో భాగమవుతుంది. + +బ్లాక్ ప్రొడ్యూసర్ మరియు బ్లాక్ ప్రపోజర్ పాత్రల కలయిక గతంలో వివరించిన చాలా MEV-సంబంధిత సమస్యలను పరిచయం చేస్తుంది. ఉదాహరణకు, ఏకాభిప్రాయం నోడ్స్ MEV సంపాదనలను గరిష్టంగా పెంచడానికి [టైమ్-బాండిట్ దాడులలో](https://www.mev.wiki/attack-examples/time-bandit-attack) చైన్ పునర్వ్యవస్థీకరణలను ప్రేరేపించడానికి ప్రోత్సహించబడతాయి. + +[ప్రపోజర్-బిల్డర్ సెపరేషన్](https://ethresear.ch/t/proposer-block-builder-separation-friendly-fee-market-designs/9725) (PBS) MEV యొక్క ప్రభావాన్ని, ముఖ్యంగా ఏకాభిప్రాయం లేయర్‌లో, తగ్గించడానికి రూపొందించబడింది. PBS యొక్క ప్రధాన లక్షణం బ్లాక్ ప్రొడ్యూసర్ మరియు బ్లాక్ ప్రపోజర్ నియమాల వేర్పాటు. వాలిడేటర్లు ఇప్పటికీ బ్లాక్‌లను ప్రతిపాదించడం మరియు వాటిపై ఓటు వేయడం బాధ్యత వహిస్తారు, కానీ **బ్లాక్ బిల్డర్లు** అని పిలవబడే ఒక కొత్త తరగతి ప్రత్యేక సంస్థలు, లావాదేవీలను ఆర్డర్ చేయడం మరియు బ్లాక్‌లను నిర్మించడం బాధ్యత వహిస్తాయి. + +PBS కింద, ఒక బ్లాక్ బిల్డర్ ఒక లావాదేవీ బండిల్‌ను సృష్టిస్తుంది మరియు దానిని ఒక బీకాన్ చైన్ బ్లాక్‌లో చేర్చడానికి ("ఎగ్జిక్యూషన్ పేలోడ్"గా) ఒక బిడ్‌ను ఉంచుతుంది. తదుపరి బ్లాక్‌ను ప్రతిపాదించడానికి ఎంపికైన వాలిడేటర్ అప్పుడు వేర్వేరు బిడ్‌లను తనిఖీ చేసి, అత్యధిక ఫీజు ఉన్న బండిల్‌ను ఎంచుకుంటుంది. PBS ముఖ్యంగా ఒక వేలం మార్కెట్‌ను సృష్టిస్తుంది, ఇక్కడ బిల్డర్లు బ్లాక్‌స్పేస్‌ను విక్రయించే వాలిడేటర్లతో చర్చలు జరుపుతారు. + +ప్రస్తుత PBS డిజైన్‌లు [కమిట్-రివీల్ స్కీమ్](https://gitcoin.co/blog/commit-reveal-scheme-on-ethereum/)ను ఉపయోగిస్తాయి, దీనిలో బిల్డర్లు తమ బిడ్‌లతో పాటు ఒక బ్లాక్ యొక్క కంటెంట్‌లకు (బ్లాక్ హెడర్) ఒక క్రిప్టోగ్రాఫిక్ కమిట్‌మెంట్‌ను మాత్రమే ప్రచురిస్తారు. విజేత బిడ్‌ను అంగీకరించిన తర్వాత, ప్రపోజర్ బ్లాక్ హెడర్‌ను కలిగి ఉన్న ఒక సంతకం చేయబడిన బ్లాక్ ప్రతిపాదనను సృష్టిస్తుంది. బ్లాక్ బిల్డర్ సంతకం చేయబడిన బ్లాక్ ప్రతిపాదనను చూసిన తర్వాత పూర్తి బ్లాక్ బాడీని ప్రచురించాలని భావిస్తారు, మరియు అది ఫైనలైజ్ కావడానికి ముందు వాలిడేటర్ల నుండి తగినంత [అటెస్టేషన్లు](/glossary/#attestation) పొందాలి. + +#### ప్రపోజర్-బిల్డర్ సెపరేషన్ MEV యొక్క ప్రభావాన్ని ఎలా తగ్గిస్తుంది? {#how-does-pbs-curb-mev-impact} + +ప్రోటోకాల్-లోపల ప్రపోజర్-బిల్డర్ సెపరేషన్ వాలిడేటర్ల పరిధి నుండి MEV సంగ్రహణను తొలగించడం ద్వారా ఏకాభిప్రాయంపై MEV యొక్క ప్రభావాన్ని తగ్గిస్తుంది. బదులుగా, ప్రత్యేక హార్డ్‌వేర్‌ను నడుపుతున్న బ్లాక్ బిల్డర్లు ఇకపై MEV అవకాశాలను సంగ్రహిస్తాయి. + +ఇది వాలిడేటర్లను MEV-సంబంధిత ఆదాయం నుండి పూర్తిగా మినహాయించదు, ఎందుకంటే బిల్డర్లు తమ బ్లాక్‌లను వాలిడేటర్లచే అంగీకరించబడటానికి అధికంగా బిడ్ చేయాలి. అయినప్పటికీ, వాలిడేటర్లు ఇకపై MEV ఆదాయాన్ని ఆప్టిమైజ్ చేయడంపై నేరుగా దృష్టి పెట్టకపోవడంతో, టైమ్-బాండిట్ దాడుల ముప్పు తగ్గుతుంది. + +ప్రపోజర్-బిల్డర్ సెపరేషన్ MEV యొక్క కేంద్రీకరణ ప్రమాదాలను కూడా తగ్గిస్తుంది. ఉదాహరణకు, కమిట్-రివీల్ స్కీమ్ వాడకం బిల్డర్లు MEV అవకాశాన్ని దొంగిలించరని లేదా ఇతర బిల్డర్లకు దానిని బహిర్గతం చేయరని వాలిడేటర్లను నమ్మాల్సిన అవసరాన్ని తొలగిస్తుంది. ఇది MEV నుండి ప్రయోజనం పొందాలనుకునే సోలో స్టేకర్లకు ప్రవేశ అవరోధాన్ని తగ్గిస్తుంది, లేకపోతే బిల్డర్లు ఆఫ్‌చైన్ పలుకుబడి ఉన్న పెద్ద పూల్స్‌కు అనుకూలంగా ఉండి, వారితో ఆఫ్‌చైన్ ఒప్పందాలు చేసుకునే ధోరణి పెరుగుతుంది. + +అదేవిధంగా, వాలిడేటర్లు బ్లాక్ బాడీలను నిలిపివేయరని లేదా చెల్లని బ్లాక్‌లను ప్రచురించరని బిల్డర్లను నమ్మాల్సిన అవసరం లేదు, ఎందుకంటే చెల్లింపు షరతులు లేకుండా ఉంటుంది. ప్రతిపాదిత బ్లాక్ అందుబాటులో లేకపోయినా లేదా ఇతర వాలిడేటర్లచే చెల్లనిదిగా ప్రకటించబడినా వాలిడేటర్ ఫీజు ఇప్పటికీ ప్రాసెస్ అవుతుంది. రెండవ సందర్భంలో, బ్లాక్ కేవలం తిరస్కరించబడుతుంది, బ్లాక్ బిల్డర్‌ను అన్ని లావాదేవీ ఫీజులు మరియు MEV రాబడిని కోల్పోయేలా చేస్తుంది. + +### బిల్డర్ ఎపిఐ {#builder-api} + +ప్రపోజర్-బిల్డర్ సెపరేషన్ MEV సంగ్రహణ యొక్క ప్రభావాలను తగ్గించడానికి వాగ్దానం చేసినప్పటికీ, దానిని అమలు చేయడానికి ఏకాభిప్రాయం ప్రోటోకాల్‌లో మార్పులు అవసరం. ప్రత్యేకించి, బీకాన్ చైన్‌లోని [ఫోర్క్ ఎంపిక](/developers/docs/consensus-mechanisms/pos/#fork-choice) నియమాన్ని అప్‌డేట్ చేయాల్సి ఉంటుంది. [బిల్డర్ ఎపిఐ](https://github.com/ethereum/builder-specs) అనేది ప్రపోజర్-బిల్డర్ సెపరేషన్ యొక్క ఒక పని చేసే అమలును అందించడానికి ఉద్దేశించిన ఒక తాత్కాలిక పరిష్కారం, అయితే అధిక విశ్వాస అంచనాలతో. + +బిల్డర్ ఎపిఐ అనేది ఏకాభిప్రాయం లేయర్ క్లయింట్లు ఎగ్జిక్యూషన్ లేయర్ క్లయింట్ల నుండి ఎగ్జిక్యూషన్ పేలోడ్‌లను అభ్యర్థించడానికి ఉపయోగించే [ఇంజిన్ ఎపిఐ](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md) యొక్క సవరించిన వెర్షన్. [నిజాయితీగల వాలిడేటర్ స్పెసిఫికేషన్](https://github.com/ethereum/consensus-specs/blob/dev/specs/bellatrix/validator.md)లో పేర్కొన్నట్లుగా, బ్లాక్ ప్రతిపాదన విధులకు ఎంపికైన వాలిడేటర్లు కనెక్ట్ చేయబడిన ఎగ్జిక్యూషన్ క్లయింట్ నుండి ఒక లావాదేవీ బండిల్‌ను అభ్యర్థిస్తారు, దానిని వారు ప్రతిపాదిత బీకాన్ చైన్ బ్లాక్‌లో చేర్చుతారు. + +బిల్డర్ ఎపిఐ కూడా వాలిడేటర్లు మరియు ఎగ్జిక్యూషన్-లేయర్ క్లయింట్ల మధ్య ఒక మిడిల్‌వేర్‌గా పనిచేస్తుంది; కానీ ఇది భిన్నమైనది ఎందుకంటే ఇది బీకాన్ చైన్‌లోని వాలిడేటర్లకు బాహ్య సంస్థల నుండి బ్లాక్‌లను సోర్స్ చేయడానికి అనుమతిస్తుంది (ఒక ఎగ్జిక్యూషన్ క్లయింట్‌ను ఉపయోగించి స్థానికంగా ఒక బ్లాక్‌ను నిర్మించడానికి బదులుగా). + +బిల్డర్ ఎపిఐ ఎలా పనిచేస్తుందో దాని యొక్క ఒక అవలోకనం కింద ఇవ్వబడింది: + +1. బిల్డర్ ఎపిఐ వాలిడేటర్‌ను ఎగ్జిక్యూషన్ లేయర్ క్లయింట్లను నడుపుతున్న బ్లాక్ బిల్డర్ల నెట్‌వర్క్‌కు కనెక్ట్ చేస్తుంది. PBSలో వలె, బిల్డర్లు వనరు-ఇంటెన్సివ్ బ్లాక్-బిల్డింగ్‌లో పెట్టుబడి పెట్టే ప్రత్యేక పార్టీలు మరియు MEV + ప్రాధాన్యత చిట్కాల నుండి సంపాదించిన రాబడిని గరిష్టంగా పెంచడానికి వేర్వేరు వ్యూహాలను ఉపయోగిస్తాయి. + +2. ఒక వాలిడేటర్ (ఒక ఏకాభిప్రాయం లేయర్ క్లయింట్‌ను నడుపుతున్నది) బిల్డర్ల నెట్‌వర్క్ నుండి బిడ్‌లతో పాటు ఎగ్జిక్యూషన్ పేలోడ్‌లను అభ్యర్థిస్తుంది. బిల్డర్ల నుండి వచ్చే బిడ్‌లలో ఎగ్జిక్యూషన్ పేలోడ్ హెడర్—పేలోడ్ కంటెంట్‌లకు ఒక క్రిప్టోగ్రాఫిక్ కమిట్‌మెంట్—మరియు వాలిడేటర్‌కు చెల్లించాల్సిన ఫీజు ఉంటాయి. + +3. వాలిడేటర్ ఇన్‌కమింగ్ బిడ్‌లను సమీక్షించి, అత్యధిక ఫీజు ఉన్న ఎగ్జిక్యూషన్ పేలోడ్‌ను ఎంచుకుంటుంది. బిల్డర్ ఎపిఐని ఉపయోగించి, వాలిడేటర్ ఒక "బ్లైండెడ్" బీకాన్ బ్లాక్ ప్రతిపాదనను సృష్టిస్తుంది, దీనిలో కేవలం వారి సంతకం మరియు ఎగ్జిక్యూషన్ పేలోడ్ హెడర్ మాత్రమే ఉంటాయి మరియు దానిని బిల్డర్‌కు పంపుతుంది. + +4. బిల్డర్ ఎపిఐని నడుపుతున్న బిల్డర్ బ్లైండెడ్ బ్లాక్ ప్రతిపాదనను చూసిన తర్వాత పూర్తి ఎగ్జిక్యూషన్ పేలోడ్‌తో స్పందించాలని భావిస్తారు. ఇది వాలిడేటర్‌ను ఒక "సంతకం చేయబడిన" బీకాన్ బ్లాక్‌ను సృష్టించడానికి అనుమతిస్తుంది, దానిని వారు నెట్‌వర్క్ అంతటా ప్రచారం చేస్తారు. + +5. బిల్డర్ ఎపిఐని ఉపయోగించే ఒక వాలిడేటర్ బ్లాక్ బిల్డర్ సకాలంలో స్పందించడంలో విఫలమైతే, బ్లాక్ ప్రతిపాదన రివార్డులను కోల్పోకుండా ఉండటానికి, స్థానికంగా ఒక బ్లాక్‌ను నిర్మించాలని ఇప్పటికీ భావిస్తారు. అయినప్పటికీ, వాలిడేటర్ ఇప్పుడు బహిర్గతం చేయబడిన లావాదేవీలను లేదా మరొక సెట్‌ను ఉపయోగించి మరొక బ్లాక్‌ను సృష్టించలేడు, ఎందుకంటే ఇది _ఈక్వివోకేషన్_ (ఒకే జాబితాలో రెండు బ్లాక్‌లపై సంతకం చేయడం) అవుతుంది, ఇది స్లాష్ చేయదగిన నేరం. + +బిల్డర్ ఎపిఐ యొక్క ఒక ఉదాహరణ అమలు [MEV బూస్ట్](https://github.com/flashbots/mev-boost), ఇది ఇతీరియముపై MEV యొక్క ప్రతికూల బాహ్య ప్రభావాలను అరికట్టడానికి రూపొందించిన [Flashbots వేలం మెకానిజం](https://docs.flashbots.net/Flashbots-auction/overview) పై ఒక మెరుగుదల. ఫ్లాష్‌బాట్స్ వేలం ప్రూఫ్-ఆఫ్-స్టేక్‌లో ఉన్న వాలిడేటర్లకు **సెర్చర్లు** అని పిలువబడే ప్రత్యేక పార్టీలకు లాభదాయకమైన బ్లాక్‌లను నిర్మించే పనిని అవుట్‌సోర్స్ చేయడానికి అనుమతిస్తుంది. +![MEV ప్రవాహాన్ని వివరంగా చూపే ఒక రేఖాచిత్రం](./mev.png) + +సెర్చర్లు లాభదాయకమైన MEV అవకాశాల కోసం వెతుకుతారు మరియు బ్లాక్‌లో చేర్చడానికి [సీల్డ్-ప్రైస్ బిడ్](https://en.wikipedia.org/wiki/First-price_sealed-bid_auction)తో పాటు బ్లాక్ ప్రపోజర్లకు లావాదేవీ బండిల్‌లను పంపుతారు. mev-geth ను నడుపుతున్న వాలిడేటర్, గో-ఇథిరియం (Geth) క్లయింట్ యొక్క ఫోర్క్ వెర్షన్, కేవలం అత్యంత లాభదాయకమైన బండిల్‌ను ఎంచుకుని దానిని కొత్త బ్లాక్‌లో చేర్చాలి. బ్లాక్ ప్రపోజర్లను (వాలిడేటర్లను) స్పామ్ మరియు చెల్లని లావాదేవీల నుండి రక్షించడానికి, లావాదేవీ బండిల్స్ ప్రపోజర్‌కు చేరడానికి ముందు ధృవీకరణ కోసం **రిలేయర్స్** ద్వారా వెళతాయి. + +MEV బూస్ట్ అసలు Flashbots వేలం యొక్క అదే పనితీరును కలిగి ఉంది, అయితే ఇతీరియము ప్రూఫ్-ఆఫ్-స్టేక్‌కు మారడానికి రూపొందించిన కొత్త ఫీచర్‌లతో. సెర్చర్లు ఇప్పటికీ బ్లాక్‌లలో చేర్చడానికి లాభదాయకమైన MEV లావాదేవీలను కనుగొంటారు, కానీ **బిల్డర్లు** అని పిలువబడే ఒక కొత్త తరగతి ప్రత్యేక పార్టీలు, లావాదేవీలను మరియు బండిల్‌లను బ్లాక్‌లలో సమగ్రపరచడానికి బాధ్యత వహిస్తాయి. ఒక బిల్డర్ సెర్చర్ల నుండి సీల్డ్-ప్రైస్ బిడ్లను అంగీకరించి, అత్యంత లాభదాయకమైన ఆర్డరింగ్‌ను కనుగొనడానికి ఆప్టిమైజేషన్లను నడుపుతాడు. + +రిలేయర్ ఇప్పటికీ లావాదేవీ బండిల్స్‌ను ప్రపోజర్‌కు పంపే ముందు ధృవీకరించడానికి బాధ్యత వహిస్తుంది. అయితే, MEV బూస్ట్ బిల్డర్లు పంపిన బ్లాక్ బాడీలను మరియు వాలిడేటర్లు పంపిన బ్లాక్ హెడర్‌లను నిల్వ చేయడం ద్వారా [డేటా లభ్యత](/developers/docs/data-availability/) అందించడానికి బాధ్యత వహించే **ఎస్క్రోలను** పరిచయం చేస్తుంది. ఇక్కడ, ఒక రిలేకు కనెక్ట్ చేయబడిన ఒక వాలిడేటర్ అందుబాటులో ఉన్న ఎగ్జిక్యూషన్ పేలోడ్‌ల కోసం అడుగుతుంది మరియు అత్యధిక బిడ్ + MEV చిట్కాలతో ఉన్న పేలోడ్ హెడర్‌ను ఎంచుకోవడానికి MEV బూస్ట్ యొక్క ఆర్డరింగ్ అల్గారిథమ్‌ను ఉపయోగిస్తుంది. + +#### బిల్డర్ ఎపిఐ MEV యొక్క ప్రభావాన్ని ఎలా తగ్గిస్తుంది? {#how-does-builder-api-curb-mev-impact} + +బిల్డర్ ఎపిఐ యొక్క ప్రధాన ప్రయోజనం MEV అవకాశాలకు ప్రాప్యతను ప్రజాస్వామ్యం చేసే దాని సామర్థ్యం. కమిట్-రివీల్ స్కీమ్‌లను ఉపయోగించడం విశ్వాస అంచనాలను తొలగిస్తుంది మరియు MEV నుండి ప్రయోజనం పొందాలనుకునే వాలిడేటర్లకు ప్రవేశ అవరోధాలను తగ్గిస్తుంది. ఇది MEV లాభాలను పెంచుకోవడానికి పెద్ద స్టేకింగ్ పూల్స్‌తో ఏకీకృతం కావడానికి సోలో స్టేకర్లపై ఒత్తిడిని తగ్గించాలి. + +బిల్డర్ ఎపిఐ యొక్క విస్తృత అమలు బ్లాక్ బిల్డర్ల మధ్య ఎక్కువ పోటీని ప్రోత్సహిస్తుంది, ఇది సెన్సార్‌షిప్ నిరోధకతను పెంచుతుంది. వాలిడేటర్లు బహుళ బిల్డర్ల నుండి బిడ్‌లను సమీక్షిస్తున్నప్పుడు, ఒకటి లేదా అంతకంటే ఎక్కువ వినియోగదారుల లావాదేవీలను సెన్సార్ చేయాలనే ఉద్దేశ్యం ఉన్న బిల్డర్ విజయవంతం కావడానికి అన్ని ఇతర సెన్సార్ చేయని బిల్డర్లను మించి బిడ్ చేయాలి. ఇది వినియోగదారులను సెన్సార్ చేసే ఖర్చును నాటకీయంగా పెంచుతుంది మరియు ఈ పద్ధతిని నిరుత్సాహపరుస్తుంది. + +MEV బూస్ట్ వంటి కొన్ని ప్రాజెక్ట్‌లు, ఫ్రంట్‌రన్నింగ్/శాండ్‌విచింగ్ దాడులను నివారించడానికి ప్రయత్నిస్తున్న వ్యాపారుల వంటి నిర్దిష్ట పార్టీలకు లావాదేవీ గోప్యతను అందించడానికి రూపొందించిన మొత్తం నిర్మాణంలో భాగంగా బిల్డర్ ఎపిఐని ఉపయోగిస్తాయి. వినియోగదారులు మరియు బ్లాక్ బిల్డర్ల మధ్య ఒక ప్రైవేట్ కమ్యూనికేషన్ ఛానెల్‌ను అందించడం ద్వారా ఇది సాధించబడుతుంది. ముందు వివరించిన అనుమతి పొందిన మెమ్‌పూల్స్‌కు విరుద్ధంగా, ఈ విధానం కింది కారణాల వల్ల ప్రయోజనకరంగా ఉంటుంది: + +1. మార్కెట్‌లో బహుళ బిల్డర్లు ఉండటం సెన్సార్ చేయడం ఆచరణ సాధ్యం కానిదిగా చేస్తుంది, ఇది వినియోగదారులకు ప్రయోజనం చేకూరుస్తుంది. దీనికి విరుద్ధంగా, కేంద్రీకృత మరియు విశ్వాసం-ఆధారిత డార్క్ పూల్స్ ఉండటం శక్తిని కొద్దిమంది బ్లాక్ బిల్డర్ల చేతుల్లో కేంద్రీకరిస్తుంది మరియు సెన్సార్ చేసే అవకాశాన్ని పెంచుతుంది. + +2. బిల్డర్ ఎపిఐ సాఫ్ట్‌వేర్ ఓపెన్-సోర్స్, ఇది ఎవరైనా బ్లాక్-బిల్డర్ సేవలను అందించడానికి అనుమతిస్తుంది. అంటే వినియోగదారులు ఏ ప్రత్యేక బ్లాక్ బిల్డర్‌ను ఉపయోగించమని బలవంతం చేయబడరు మరియు ఇది ఇతీరియము యొక్క తటస్థత మరియు అనుమతిలేనితనాన్ని మెరుగుపరుస్తుంది. అంతేకాకుండా, MEV-కోరుకునే వ్యాపారులు ప్రైవేట్ లావాదేవీ ఛానెల్‌లను ఉపయోగించడం ద్వారా అనుకోకుండా కేంద్రీకరణకు దోహదం చేయరు. + +## సంబంధిత వనరులు {#related-resources} + +- [Flashbots డాక్స్](https://docs.flashbots.net/) +- [Flashbots GitHub](https://github.com/flashbots/pm) +- [mevboost.org](https://www.mevboost.org/) - _MEV-బూస్ట్ రిలేలు మరియు బ్లాక్ బిల్డర్ల కోసం వాస్తవ-సమయ గణాంకాలతో కూడిన ట్రాకర్_ + +## మరింత సమాచారం {#further-reading} + +- [మైనర్-ఎక్స్‌ట్రాక్టబుల్ వాల్యూ (MEV) అంటే ఏమిటి?](https://blog.chain.link/what-is-miner-extractable-value-mev/) +- [MEV మరియు నేను](https://www.paradigm.xyz/2021/02/mev-and-me) +- [ఇతీరియము ఒక చీకటి అడవి](https://www.paradigm.xyz/2020/08/ethereum-is-a-dark-forest/) +- [చీకటి అడవి నుండి తప్పించుకోవడం](https://samczsun.com/escaping-the-dark-forest/) +- [Flashbots: MEV సంక్షోభాన్ని అధిగమించడం](https://medium.com/flashbots/frontrunning-the-mev-crisis-40629a613752) +- [@bertcmiller's MEV థ్రెడ్స్](https://twitter.com/bertcmiller/status/1402665992422047747) +- [MEV-Boost: మెర్జ్ సిద్ధంగా ఉన్న Flashbots ఆర్కిటెక్చర్](https://ethresear.ch/t/mev-boost-merge-ready-flashbots-architecture/11177) +- [MEV బూస్ట్ అంటే ఏమిటి](https://www.alchemy.com/overviews/mev-boost) +- [mev-boost ఎందుకు నడపాలి?](https://writings.flashbots.net/writings/why-run-mevboost/) +- [ది హిచ్‌హైకర్స్ గైడ్ టు ఇతీరియము](https://members.delphidigital.io/reports/the-hitchhikers-guide-to-ethereum) diff --git a/public/content/translations/te/developers/docs/networking-layer/index.md b/public/content/translations/te/developers/docs/networking-layer/index.md new file mode 100644 index 00000000000..bbd0f67e7f7 --- /dev/null +++ b/public/content/translations/te/developers/docs/networking-layer/index.md @@ -0,0 +1,163 @@ +--- +title: "నెట్‌వర్కింగ్ లేయర్" +description: "Ethereum నెట్‌వర్క్ లేయర్‌కు పరిచయం." +lang: te +sidebarDepth: 2 +--- + +Ethereum అనేది వేలకొద్దీ నోడ్‌లతో కూడిన పీర్-టు-పీర్ నెట్‌వర్క్, ఇది ప్రామాణిక ప్రోటోకాల్‌లను ఉపయోగించి ఒకదానితో ఒకటి కమ్యూనికేట్ చేయగలగాలి. "నెట్‌వర్కింగ్ లేయర్" అనేది ఆ నోడ్‌లు ఒకదానికొకటి కనుగొనడానికి మరియు సమాచారాన్ని మార్పిడి చేసుకోవడానికి అనుమతించే ప్రోటోకాల్‌ల స్టాక్. ఇందులో నెట్‌వర్క్‌లో "గాసిపింగ్" సమాచారం (ఒకటి నుండి చాలా వరకు కమ్యూనికేషన్) అలాగే నిర్దిష్ట నోడ్‌ల మధ్య అభ్యర్థనలు మరియు ప్రతిస్పందనలను మార్చుకోవడం (వన్-టు-వన్ కమ్యూనికేషన్) ఉంటుంది. ప్రతి నోడ్ వారు సరైన సమాచారాన్ని పంపుతున్నారని మరియు స్వీకరిస్తున్నారని నిర్ధారించుకోవడానికి నిర్దిష్ట నెట్‌వర్కింగ్ నియమాలకు కట్టుబడి ఉండాలి. + +క్లయింట్ సాఫ్ట్‌వేర్‌లో రెండు భాగాలు ఉన్నాయి (ఎగ్జిక్యూషన్ క్లయింట్‌లు మరియు ఏకాభిప్రాయ క్లయింట్లు), ఒక్కొక్కటి దాని స్వంత ప్రత్యేక నెట్‌వర్కింగ్ స్టాక్‌తో ఉంటాయి. ఇతర Ethereum నోడ్‌లతో కమ్యూనికేట్ చేయడంతోపాటు, ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయ క్లయింట్లు ఒకరితో ఒకరు కమ్యూనికేట్ చేసుకోవాలి. ఈ పేజీ ఈ కమ్యూనికేషన్‌ను ప్రారంభించే ప్రోటోకాల్‌ల పరిచయ వివరణను అందిస్తుంది. + +ఎగ్జిక్యూషన్ క్లయింట్‌లు ఎగ్జిక్యూషన్-లేయర్ పీర్-టు-పీర్ నెట్‌వర్క్‌లో లావాదేవీలను గాసిప్ చేస్తారు. దీనికి ప్రామాణీకరించబడిన సహచరుల మధ్య ఎన్‌క్రిప్టెడ్ కమ్యూనికేషన్ అవసరం. బ్లాక్‌ను ప్రతిపాదించడానికి వాలిడేటర్‌ను ఎంచుకున్నప్పుడు, నోడ్ యొక్క స్థానిక లావాదేవీల పూల్ నుండి లావాదేవీలు స్థానిక RPC కనెక్షన్ ద్వారా ఏకాభిప్రాయ క్లయింట్‌లకు పంపబడతాయి, ఇది బీకాన్ బ్లాక్‌లలోకి ప్యాక్ చేయబడుతుంది. ఏకాభిప్రాయ క్లయింట్లు వారి p2p నెట్‌వర్క్‌లో బీకాన్ బ్లాక్‌లను గాసిప్ చేస్తారు. దీనికి రెండు వేర్వేరు p2p నెట్‌వర్క్‌లు అవసరం: ఒకటి లావాదేవీ గాసిప్ కోసం ఎగ్జిక్యూషన్ క్లయింట్‌లను కనెక్ట్ చేస్తుంది మరియు బ్లాక్ గాసిప్ కోసం ఏకాభిప్రాయ క్లయింట్‌లను కనెక్ట్ చేస్తుంది. + +## అవసరాలు {#prerequisites} + +ఈ పేజీని అర్థం చేసుకోవడానికి Ethereum [నోడ్‌లు మరియు క్లయింట్‌లు](/developers/docs/nodes-and-clients/) గురించి కొంత పరిజ్ఞానం సహాయకరంగా ఉంటుంది. + +## ఎగ్జిక్యూషన్ లేయర్ {#execution-layer} + +ఎగ్జిక్యూషన్ లేయర్ యొక్క నెట్‌వర్కింగ్ ప్రోటోకాల్‌లు రెండు స్టాక్‌లుగా విభజించబడ్డాయి: + +- డిస్కవరీ స్టాక్: UDP పైన నిర్మించబడింది మరియు కనెక్ట్ చేయడానికి పీర్‌లను కనుగొనడానికి కొత్త నోడ్‌ని అనుమతిస్తుంది + +- devP2P స్టాక్: TCP పైన కూర్చుని సమాచారాన్ని మార్పిడి చేసుకోవడానికి నోడ్‌లను ప్రారంభిస్తుంది + +రెండు స్టాక్‌లు సమాంతరంగా పనిచేస్తాయి. డిస్కవరీ స్టాక్ కొత్త నెట్‌వర్క్ పార్టిసిపెంట్‌లను నెట్‌వర్క్‌లోకి ఫీడ్ చేస్తుంది మరియు DevP2P స్టాక్ వారి పరస్పర చర్యలను ప్రారంభిస్తుంది. + +### ఆవిష్కరణ {#discovery} + +డిస్కవరీ అనేది నెట్‌వర్క్‌లోని ఇతర నోడ్‌లను కనుగొనే ప్రక్రియ. ఇది చిన్న బూట్‌నోడ్‌ల సెట్‌ను ఉపయోగించి బూట్‌స్ట్రాప్ చేయబడింది (నోడ్‌ల చిరునామాలు క్లయింట్‌లో [హార్డ్‌కోడ్](https://github.com/ethereum/go-ethereum/blob/master/params/bootnodes.go) చేయబడతాయి, తద్వారా వాటిని వెంటనే కనుగొని క్లయింట్‌ను పీర్‌లకు కనెక్ట్ చేయవచ్చు). ఈ బూట్‌నోడ్‌లు పీర్‌ల సెట్‌కి కొత్త నోడ్‌ని పరిచయం చేయడానికి మాత్రమే ఉన్నాయి - ఇది వారి ఏకైక ఉద్దేశ్యం, గొలుసును సమకాలీకరించడం వంటి సాధారణ క్లయింట్ టాస్క్‌లలో వారు పాల్గొనరు మరియు క్లయింట్ స్ప్న్ అప్ అయినప్పుడు మాత్రమే అవి ఉపయోగించబడతాయి. + +నోడ్-బూట్‌నోడ్ ఇంటరాక్షన్‌ల కోసం ఉపయోగించే ప్రోటోకాల్ [Kademlia](https://medium.com/coinmonks/a-brief-overview-of-kademlia-and-its-use-in-various-decentralized-platforms-da08a7f72b8f) యొక్క సవరించిన రూపం, ఇది నోడ్‌ల జాబితాలను పంచుకోవడానికి [పంపిణీ చేయబడిన హాష్ టేబుల్](https://en.wikipedia.org/wiki/Distributed_hash_table)ను ఉపయోగిస్తుంది. ప్రతి నోడ్ దాని సన్నిహిత సహచరులకు కనెక్ట్ చేయడానికి అవసరమైన సమాచారాన్ని కలిగి ఉన్న ఈ పట్టిక యొక్క సంస్కరణను కలిగి ఉంటుంది. ఈ 'సమీపత' భౌగోళికమైనది కాదు - నోడ్ యొక్క ID యొక్క సారూప్యత ద్వారా దూరం నిర్వచించబడుతుంది. ప్రతి నోడ్ యొక్క పట్టిక భద్రతా లక్షణంగా క్రమం తప్పకుండా రిఫ్రెష్ చేయబడుతుంది. ఉదాహరణకు, [Discv5](https://github.com/ethereum/devp2p/tree/master/discv5)లో, డిస్కవరీ ప్రోటోకాల్ నోడ్‌లు క్లయింట్ మద్దతిచ్చే సబ్‌ప్రోటోకాల్‌లను ప్రదర్శించే 'ప్రకటనలను' కూడా పంపగలవు, పీర్‌లు కమ్యూనికేట్ చేయడానికి ఇద్దరూ ఉపయోగించగల ప్రోటోకాల్‌ల గురించి చర్చలు జరపడానికి వీలు కల్పిస్తుంది. + +డిస్కవరీ పింగ్-పాంగ్ గేమ్‌తో ప్రారంభమవుతుంది. విజయవంతమైన పింగ్-పాంగ్ కొత్త నోడ్‌ను బూట్‌నోడ్‌కి "బంధిస్తుంది". నెట్‌వర్క్‌లోకి ప్రవేశించే కొత్త నోడ్ ఉనికికి బూట్‌నోడ్‌ను హెచ్చరించే ప్రారంభ సందేశం `PING`. ఈ `PING`లో కొత్త నోడ్, బూట్‌నోడ్ మరియు గడువు ముగిసిన టైమ్-స్టాంప్ గురించిన హాష్ సమాచారం ఉంటుంది. బూట్‌నోడ్ `PING`ని అందుకుంటుంది మరియు `PING` హాష్‌ను కలిగి ఉన్న `PONG`ని అందిస్తుంది. `PING` మరియు `PONG` హాష్‌లు సరిపోలితే, కొత్త నోడ్ మరియు బూట్‌నోడ్ మధ్య కనెక్షన్ ధృవీకరించబడుతుంది మరియు అవి "బంధించబడినవి" అని చెప్పబడుతుంది. + +బంధించిన తర్వాత, కొత్త నోడ్ బూట్‌నోడ్‌కు `FIND-NEIGHBOURS` అభ్యర్థనను పంపగలదు. బూట్‌నోడ్ ద్వారా అందించబడిన డేటా కొత్త నోడ్ కనెక్ట్ చేయగల సహచరుల జాబితాను కలిగి ఉంటుంది. నోడ్‌లు బంధించబడకపోతే, `FIND-NEIGHBOURS` అభ్యర్థన విఫలమవుతుంది, కాబట్టి కొత్త నోడ్ నెట్‌వర్క్‌లోకి ప్రవేశించదు. + +కొత్త నోడ్ బూట్‌నోడ్ నుండి పొరుగువారి జాబితాను స్వీకరించిన తర్వాత, అది ప్రతి ఒక్కరితో పింగ్-పాంగ్ మార్పిడిని ప్రారంభిస్తుంది. విజయవంతమైన PING-PONGలు కొత్త నోడ్‌ను దాని పొరుగువారితో బంధిస్తాయి, సందేశ మార్పిడిని ప్రారంభిస్తాయి. + +``` +క్లయింట్‌ను ప్రారంభించండి --> బూట్‌నోడ్‌కు కనెక్ట్ చేయండి --> బూట్‌నోడ్‌కు బంధించండి --> పొరుగువారిని కనుగొనండి --> పొరుగువారికి బంధించండి +``` + +ఎగ్జిక్యూషన్ క్లయింట్లు ప్రస్తుతం [Discv4](https://github.com/ethereum/devp2p/blob/master/discv4.md) డిస్కవరీ ప్రోటోకాల్‌ను ఉపయోగిస్తున్నాయి మరియు [Discv5](https://github.com/ethereum/devp2p/tree/master/discv5) ప్రోటోకాల్‌కు వలస వెళ్ళడానికి చురుకైన ప్రయత్నం జరుగుతోంది. + +#### ENR: Ethereum నోడ్ రికార్డ్‌లు {#enr} + +[Ethereum Node Record (ENR)](/developers/docs/networking-layer/network-addresses/) అనేది మూడు ప్రాథమిక అంశాలను కలిగి ఉన్న ఒక వస్తువు: ఒక సంతకం (కొన్ని అంగీకరించిన గుర్తింపు పథకం ప్రకారం తయారు చేయబడిన రికార్డ్ విషయాల హాష్), రికార్డ్‌లో మార్పులను ట్రాక్ చేసే సీక్వెన్స్ నంబర్, మరియు key:value జతల యొక్క ఒక ఏకపక్ష జాబితా. ఇది భవిష్యత్-రుజువు ఫార్మాట్, ఇది కొత్త పీర్‌ల మధ్య గుర్తించే సమాచారాన్ని సులభంగా మార్పిడి చేయడానికి అనుమతిస్తుంది మరియు Ethereum నోడ్‌ల కోసం ప్రాధాన్యతనిచ్చే [నెట్‌వర్క్ చిరునామా](/developers/docs/networking-layer/network-addresses) ఫార్మాట్. + +#### UDPపై ఆవిష్కరణ ఎందుకు నిర్మించబడింది? {#why-udp} + +UDP ఏ దోష తనిఖీ, విఫలమైన ప్యాకెట్‌లను మళ్లీ పంపడం లేదా కనెక్షన్‌లను డైనమిక్‌గా తెరవడం మరియు మూసివేయడం వంటి వాటికి మద్దతు ఇవ్వదు - బదులుగా ఇది విజయవంతంగా స్వీకరించబడిందా లేదా అనే దానితో సంబంధం లేకుండా ఒక లక్ష్యం వద్ద నిరంతర సమాచారాన్ని ప్రసారం చేస్తుంది. ఈ కనీస కార్యాచరణ కూడా కనిష్ట ఓవర్‌హెడ్‌గా అనువదిస్తుంది, ఈ రకమైన కనెక్షన్‌ను చాలా వేగంగా చేస్తుంది. డిస్కవరీ కోసం, పీర్‌తో అధికారిక కనెక్షన్‌ని ఏర్పరచుకోవడానికి నోడ్ తన ఉనికిని తెలియజేయాలనుకునే చోట, UDP సరిపోతుంది. అయితే, మిగిలిన నెట్‌వర్కింగ్ స్టాక్ కోసం, UDP ప్రయోజనం కోసం సరిపోదు. నోడ్‌ల మధ్య సమాచార మార్పిడి చాలా క్లిష్టంగా ఉంటుంది మరియు అందువల్ల రీసెండింగ్, ఎర్రర్ చెకింగ్ మొదలైన వాటికి సపోర్ట్ చేసే మరింత పూర్తిగా ఫీచర్ చేసిన ప్రోటోకాల్ అవసరం. TCPతో అనుబంధించబడిన అదనపు ఓవర్‌హెడ్ అదనపు కార్యాచరణకు విలువైనది. అందువల్ల, P2P స్టాక్‌లో ఎక్కువ భాగం TCPపై పనిచేస్తుంది. + +### DevP2P {#devp2p} + +DevP2P అనేది పీర్-టు-పీర్ నెట్‌వర్క్‌ను స్థాపించడానికి మరియు నిర్వహించడానికి Ethereum అమలు చేసే ప్రోటోకాల్‌ల మొత్తం స్టాక్. కొత్త నోడ్‌లు నెట్‌వర్క్‌లోకి ప్రవేశించిన తర్వాత, వాటి పరస్పర చర్యలు [DevP2P](https://github.com/ethereum/devp2p) స్టాక్‌లోని ప్రోటోకాల్‌ల ద్వారా నిర్వహించబడతాయి. ఇవన్నీ TCP పైన కూర్చుంటాయి మరియు RLPx రవాణా ప్రోటోకాల్, వైర్ ప్రోటోకాల్ మరియు అనేక ఉప-ప్రోటోకాల్‌లను కలిగి ఉంటాయి. [RLPx](https://github.com/ethereum/devp2p/blob/master/rlpx.md) అనేది నోడ్‌ల మధ్య సెషన్‌లను ప్రారంభించడం, ప్రామాణీకరించడం మరియు నిర్వహించడాన్ని నియంత్రించే ప్రోటోకాల్. RLPx సందేశాలను RLP (పునరావృత పొడవు ఉపసర్గ) ఉపయోగించి ఎన్‌కోడ్ చేస్తుంది, ఇది నోడ్‌ల మధ్య పంపడం కోసం డేటాను కనిష్ట నిర్మాణంలోకి ఎన్‌కోడింగ్ చేయడానికి చాలా స్పేస్-సమర్థవంతమైన పద్ధతి. + +రెండు నోడ్‌ల మధ్య RLPx సెషన్ ప్రారంభ క్రిప్టోగ్రాఫిక్ హ్యాండ్‌షేక్‌తో ప్రారంభమవుతుంది. దీంట్లో నోడ్ ఒక ప్రామాణీకరణ సందేశాన్ని పంపుతుంది, అది పీర్ ద్వారా ధృవీకరించబడుతుంది. విజయవంతమైన ధృవీకరణపై, పీర్ ఇనిషియేటర్ నోడ్‌కు తిరిగి రావడానికి ప్రామాణీకరణ-రసీదు సందేశాన్ని రూపొందిస్తుంది. ఇది కీ-మార్పిడి ప్రక్రియ, ఇది నోడ్‌లను ప్రైవేట్‌గా మరియు సురక్షితంగా కమ్యూనికేట్ చేయడానికి వీలు కల్పిస్తుంది. విజయవంతమైన క్రిప్టోగ్రాఫిక్ హ్యాండ్‌షేక్ రెండు నోడ్‌లను ఒకదానికొకటి "హలో" సందేశాన్ని "వైర్‌పై" పంపడానికి ప్రేరేపిస్తుంది. హలో సందేశాల విజయవంతమైన మార్పిడి ద్వారా వైర్ ప్రోటోకాల్ ప్రారంభించబడింది. + +హలో సందేశాలలో ఇవి ఉన్నాయి: + +- ప్రోటోకాల్ వెర్షన్ +- క్లయింట్ ID +- పోర్ట్ +- నోడ్ ID +- మద్దతు ఉన్న సబ్-ప్రోటోకాల్‌ల జాబితా + +విజయవంతమైన పరస్పర చర్యకు ఇది అవసరమైన సమాచారం, ఎందుకంటే ఇది రెండు నోడ్‌ల మధ్య ఏ సామర్థ్యాలు పంచుకోబడతాయో నిర్వచిస్తుంది మరియు కమ్యూనికేషన్‌ను కాన్ఫిగర్ చేస్తుంది. సబ్-ప్రోటోకాల్ సంప్రదింపుల ప్రక్రియ ఉంది, ఇక్కడ ప్రతి నోడ్ ద్వారా మద్దతు ఉన్న సబ్-ప్రోటోకాల్‌ల జాబితాలను పోల్చారు మరియు రెండు నోడ్‌లకు ఉమ్మడిగా ఉన్న వాటిని సెషన్‌లో ఉపయోగించవచ్చు. + +హలో సందేశాలతో పాటు, వైర్ ప్రోటోకాల్ "డిస్‌కనెక్ట్" సందేశాన్ని కూడా పంపగలదు, ఇది కనెక్షన్ మూసివేయబడుతుందని ఒక పీర్‌కు హెచ్చరిక ఇస్తుంది. సెషన్‌ను తెరిచి ఉంచడానికి క్రమానుగతంగా పంపబడే PING మరియు PONG సందేశాలను కూడా వైర్ ప్రోటోకాల్ కలిగి ఉంటుంది. RLPx మరియు వైర్ ప్రోటోకాల్ మార్పిడులు నోడ్‌ల మధ్య కమ్యూనికేషన్ యొక్క పునాదులను ఏర్పాటు చేస్తాయి, ఒక నిర్దిష్ట సబ్-ప్రోటోకాల్ ప్రకారం ఉపయోగకరమైన సమాచారాన్ని మార్పిడి చేసుకోవడానికి పరంజాను అందిస్తాయి. + +### సబ్-ప్రోటోకాల్స్ {#sub-protocols} + +#### వైర్ ప్రోటోకాల్ {#wire-protocol} + +పీర్‌లు కనెక్ట్ అయిన తర్వాత మరియు RLPx సెషన్ ప్రారంభమైన తర్వాత, పీర్‌లు ఎలా కమ్యూనికేట్ చేస్తాయో వైర్ ప్రోటోకాల్ నిర్వచిస్తుంది. ప్రారంభంలో, వైర్ ప్రోటోకాల్ మూడు ప్రధాన పనులను నిర్వచించింది: గొలుసు సమకాలీకరణ, బ్లాక్ ప్రచారం మరియు లావాదేవీల మార్పిడి. అయితే, Ethereum ప్రూఫ్-ఆఫ్-స్టేక్‌కు మారిన తర్వాత, బ్లాక్ ప్రచారం మరియు గొలుసు సమకాలీకరణ ఏకాభిప్రాయం లేయర్లో భాగంగా మారాయి. లావాదేవీల మార్పిడి ఇప్పటికీ ఎగ్జిక్యూషన్ క్లయింట్‌ల పరిధిలోనే ఉంది. ట్రాన్సాక్షన్ ఎక్స్‌ఛేంజ్ అంటే నోడ్‌ల మధ్య పెండింగ్‌లో ఉన్న ట్రాన్సాక్షన్‌లను మార్పిడి చేసుకోవడం, తద్వారా బ్లాక్ బిల్డర్లు వాటిలో కొన్నింటిని తదుపరి బ్లాక్‌లో చేర్చడానికి ఎంచుకోవచ్చు. ఈ పనుల గురించి వివరణాత్మక సమాచారం [ఇక్కడ](https://github.com/ethereum/devp2p/blob/master/caps/eth.md) అందుబాటులో ఉంది. ఈ సబ్-ప్రోటోకాల్‌లకు మద్దతిచ్చే క్లయింట్‌లు వాటిని [JSON-RPC](/developers/docs/apis/json-rpc/) ద్వారా బహిర్గతం చేస్తాయి. + +#### les (లైట్ Ethereum సబ్‌ప్రోటోకాల్) {#les} + +ఇది లైట్ క్లయింట్‌లను సింక్ చేయడానికి ఒక మినిమల్ ప్రోటోకాల్. సాంప్రదాయకంగా ఈ ప్రోటోకాల్ అరుదుగా ఉపయోగించబడింది, ఎందుకంటే పూర్తి నోడ్‌లు ప్రోత్సాహకాలు లేకుండా లైట్ క్లయింట్‌లకు డేటాను అందించాలి. ఎగ్జిక్యూషన్ క్లయింట్‌ల యొక్క డిఫాల్ట్ ప్రవర్తన les ద్వారా లైట్ క్లయింట్ డేటాను అందించడం కాదు. les [spec](https://github.com/ethereum/devp2p/blob/master/caps/les.md)లో మరింత సమాచారం అందుబాటులో ఉంది. + +#### Snap {#snap} + +[స్నాప్ ప్రోటోకాల్](https://github.com/ethereum/devp2p/blob/master/caps/snap.md#ethereum-snapshot-protocol-snap) అనేది ఒక ఐచ్ఛిక పొడిగింపు, ఇది పీర్‌లు ఇటీవలి స్థితుల స్నాప్‌షాట్‌లను మార్పిడి చేసుకోవడానికి అనుమతిస్తుంది, ఇంటర్మీడియట్ మెర్కిల్ ట్రై నోడ్‌లను డౌన్‌లోడ్ చేయకుండానే ఖాతా మరియు నిల్వ డేటాను ధృవీకరించడానికి పీర్‌లను అనుమతిస్తుంది. + +#### Wit (సాక్షి ప్రోటోకాల్) {#wit} + +[సాక్షి ప్రోటోకాల్](https://github.com/ethereum/devp2p/blob/master/caps/wit.md#ethereum-witness-protocol-wit) అనేది ఒక ఐచ్ఛిక పొడిగింపు, ఇది పీర్‌ల మధ్య స్టేట్ సాక్షుల మార్పిడిని ప్రారంభిస్తుంది, క్లయింట్‌లను చైన్ యొక్క కొనకు సమకాలీకరించడంలో సహాయపడుతుంది. + +#### Whisper {#whisper} + +Whisper అనేది బ్లాక్‌చెయిన్‌కు ఎటువంటి సమాచారాన్ని వ్రాయకుండా పీర్‌ల మధ్య సురక్షిత సందేశాలను అందించే లక్ష్యంతో కూడిన ప్రోటోకాల్. ఇది DevP2P వైర్ ప్రోటోకాల్‌లో భాగంగా ఉంది, కానీ ఇప్పుడు నిలిపివేయబడింది. ఇలాంటి లక్ష్యాలతో ఇతర [సంబంధిత ప్రాజెక్ట్‌లు](https://wakunetwork.com/) ఉన్నాయి. + +## ఏకాభిప్రాయం లేయర్ {#consensus-layer} + +ఏకాభిప్రాయం క్లయింట్లు వేరే స్పెసిఫికేషన్‌తో ప్రత్యేక పీర్-టు-పీర్ నెట్‌వర్క్‌లో పాల్గొంటాయి. ఏకాభిప్రాయం క్లయింట్లు బ్లాక్ గాసిప్‌లో పాల్గొనాలి, తద్వారా వారు పీర్‌ల నుండి కొత్త బ్లాక్‌లను స్వీకరించగలరు మరియు బ్లాక్ ప్రపోజర్‌గా ఉండే వంతు వచ్చినప్పుడు వాటిని ప్రసారం చేయగలరు. ఎగ్జిక్యూషన్ లేయర్‌ మాదిరిగానే, దీనికి మొదట డిస్కవరీ ప్రోటోకాల్ అవసరం, తద్వారా ఒక నోడ్ పీర్‌లను కనుగొని, బ్లాక్‌లు, అటెస్టేషన్‌లు మొదలైన వాటిని మార్పిడి చేసుకోవడానికి సురక్షితమైన సెషన్‌లను ఏర్పాటు చేసుకోగలదు. + +### ఆవిష్కరణ {#consensus-discovery} + +ఎగ్జిక్యూషన్ క్లయింట్‌ల మాదిరిగానే, ఏకాభిప్రాయం క్లయింట్లు పీర్‌లను కనుగొనడానికి UDPపై [discv5](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#the-discovery-domain-discv5)ని ఉపయోగిస్తాయి. discv5 యొక్క ఏకాభిప్రాయం లేయర్ అమలు, ఎగ్జిక్యూషన్ క్లయింట్‌ల నుండి భిన్నంగా ఉంటుంది, ఎందుకంటే ఇది discv5ను [libP2P](https://libp2p.io/) స్టాక్‌కి కనెక్ట్ చేసే అడాప్టర్‌ను కలిగి ఉంటుంది, DevP2Pని నిలిపివేస్తుంది. ఎగ్జిక్యూషన్ లేయర్ యొక్క RLPx సెషన్‌లు libP2P యొక్క నాయిస్ సురక్షిత ఛానెల్ హ్యాండ్‌షేక్‌కు అనుకూలంగా నిలిపివేయబడ్డాయి. + +### ENRలు {#consensus-enr} + +ఏకాభిప్రాయం నోడ్‌ల కోసం ENR నోడ్ యొక్క పబ్లిక్ కీ, IP చిరునామా, UDP మరియు TCP పోర్ట్‌లు మరియు రెండు ఏకాభిప్రాయం-నిర్దిష్ట ఫీల్డ్‌లను కలిగి ఉంటుంది: అటెస్టేషన్ సబ్‌నెట్ బిట్‌ఫీల్డ్ మరియు `eth2` కీ. మునుపటిది నిర్దిష్ట అటెస్టేషన్ గాసిప్ సబ్-నెట్‌వర్క్‌లలో పాల్గొనే పీర్‌లను కనుగొనడాన్ని నోడ్‌లకు సులభతరం చేస్తుంది. `eth2` కీ నోడ్ ఏ Ethereum ఫోర్క్ వెర్షన్‌ను ఉపయోగిస్తుందనే దాని గురించి సమాచారాన్ని కలిగి ఉంటుంది, పీర్‌లు సరైన Ethereumకు కనెక్ట్ అవుతున్నాయని నిర్ధారిస్తుంది. + +### libP2P {#libp2p} + +libP2P స్టాక్ డిస్కవరీ తర్వాత అన్ని కమ్యూనికేషన్‌లకు మద్దతు ఇస్తుంది. క్లయింట్లు వారి ENRలో నిర్వచించిన విధంగా IPv4 మరియు/లేదా IPv6లో డయల్ చేయవచ్చు మరియు వినవచ్చు. libP2P లేయర్‌లోని ప్రోటోకాల్‌లను గాసిప్ మరియు req/resp డొమైన్‌లుగా ఉపవిభజన చేయవచ్చు. + +### గాసిప్ {#gossip} + +గాసిప్ డొమైన్‌లో నెట్‌వర్క్ అంతటా వేగంగా వ్యాపించాల్సిన మొత్తం సమాచారం ఉంటుంది. ఇందులో బెకన్ బ్లాక్‌లు, ప్రూఫ్‌లు, అటెస్టేషన్‌లు, నిష్క్రమణలు మరియు స్లాషింగ్‌లు ఉంటాయి. ఇది libP2P gossipsub v1 ఉపయోగించి ప్రసారం చేయబడుతుంది మరియు స్వీకరించడానికి మరియు ప్రసారం చేయడానికి గాసిప్ పేలోడ్‌ల గరిష్ట పరిమాణంతో సహా ప్రతి నోడ్‌లో స్థానికంగా నిల్వ చేయబడిన వివిధ మెటాడేటాపై ఆధారపడి ఉంటుంది. గాసిప్ డొమైన్ గురించి వివరణాత్మక సమాచారం [ఇక్కడ](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#the-gossip-domain-gossipsub) అందుబాటులో ఉంది. + +### అభ్యర్థన-ప్రతిస్పందన {#request-response} + +అభ్యర్థన-ప్రతిస్పందన డొమైన్ వారి పీర్‌ల నుండి నిర్దిష్ట సమాచారాన్ని అభ్యర్థించే క్లయింట్‌ల కోసం ప్రోటోకాల్‌లను కలిగి ఉంటుంది. ఉదాహరణలలో నిర్దిష్ట రూట్ హ్యాష్‌లతో సరిపోలే లేదా స్లాట్‌ల పరిధిలోని నిర్దిష్ట బెకన్ బ్లాక్‌లను అభ్యర్థించడం ఉన్నాయి. ప్రతిస్పందనలు ఎల్లప్పుడూ స్నాపీ-కంప్రెస్డ్ SSZ ఎన్‌కోడ్ చేసిన బైట్‌లుగా తిరిగి ఇవ్వబడతాయి. + +## ఏకాభిప్రాయం క్లయింట్ RLP కంటే SSZకి ఎందుకు ప్రాధాన్యత ఇస్తుంది? {#ssz-vs-rlp} + +SSZ అంటే సింపుల్ సీరియలైజేషన్. ఇది స్థిరమైన ఆఫ్‌సెట్‌లను ఉపయోగిస్తుంది, ఇది మొత్తం నిర్మాణాన్ని డీకోడ్ చేయకుండానే ఎన్‌కోడ్ చేసిన సందేశం యొక్క వ్యక్తిగత భాగాలను డీకోడ్ చేయడాన్ని సులభతరం చేస్తుంది, ఇది ఏకాభిప్రాయం క్లయింట్‌కు చాలా ఉపయోగకరంగా ఉంటుంది, ఎందుకంటే ఇది ఎన్‌కోడ్ చేసిన సందేశాల నుండి నిర్దిష్ట సమాచారాన్ని సమర్థవంతంగా పొందగలదు. ఇది ప్రత్యేకంగా మెర్కిల్ ప్రోటోకాల్‌లతో ఏకీకృతం చేయడానికి రూపొందించబడింది, మెర్కిలైజేషన్ కోసం సంబంధిత సామర్థ్య లాభాలతో. ఏకాభిప్రాయం లేయర్‌లోని అన్ని హ్యాష్‌లు మెర్కిల్ రూట్‌లు కాబట్టి, ఇది ఒక ముఖ్యమైన మెరుగుదలకు దారితీస్తుంది. SSZ విలువలకు ప్రత్యేకమైన ప్రాతినిధ్యాలకు కూడా హామీ ఇస్తుంది. + +## ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయం క్లయింట్లను కనెక్ట్ చేయడం {#connecting-clients} + +ఏకాభిప్రాయం మరియు ఎగ్జిక్యూషన్ క్లయింట్లు రెండూ సమాంతరంగా నడుస్తాయి. వాటిని కనెక్ట్ చేయాలి, తద్వారా ఏకాభిప్రాయం క్లయింట్ ఎగ్జిక్యూషన్ క్లయింట్‌కు సూచనలను అందించగలదు, మరియు ఎగ్జిక్యూషన్ క్లయింట్ బెకన్ బ్లాక్‌లలో చేర్చడానికి ఏకాభిప్రాయం క్లయింట్‌కు లావాదేవీల కట్టలను పంపగలదు. రెండు క్లయింట్ల మధ్య కమ్యూనికేషన్ స్థానిక RPC కనెక్షన్‌ని ఉపయోగించి సాధించవచ్చు. రెండు క్లయింట్ల మధ్య పంపిన సూచనలను ['ఇంజిన్-API'](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md) అని పిలువబడే API నిర్వచిస్తుంది. రెండు క్లయింట్లు ఒకే నెట్‌వర్క్ గుర్తింపు వెనుక ఉన్నందున, అవి ఒక ENR (Ethereum నోడ్ రికార్డ్)ను పంచుకుంటాయి, ఇందులో ప్రతి క్లయింట్‌కు ప్రత్యేక కీ ఉంటుంది (eth1 కీ మరియు eth2 కీ). + +నియంత్రణ ప్రవాహం యొక్క సారాంశం బ్రాకెట్లలో సంబంధిత నెట్‌వర్కింగ్ స్టాక్‌తో క్రింద చూపబడింది. + +### ఏకాభిప్రాయం క్లయింట్ బ్లాక్ ప్రొడ్యూసర్ కానప్పుడు: {#when-consensus-client-is-not-block-producer} + +- ఏకాభిప్రాయం క్లయింట్ బ్లాక్ గాసిప్ ప్రోటోకాల్ (ఏకాభిప్రాయం p2p) ద్వారా ఒక బ్లాక్‌ను అందుకుంటుంది. +- ఏకాభిప్రాయం క్లయింట్ బ్లాక్‌ను ముందే ధృవీకరిస్తుంది, అనగా, అది సరైన మెటాడేటాతో చెల్లుబాటు అయ్యే పంపినవారి నుండి వచ్చిందని నిర్ధారిస్తుంది +- బ్లాక్‌లోని లావాదేవీలు ఎగ్జిక్యూషన్ పేలోడ్‌గా ఎగ్జిక్యూషన్ లేయర్‌కు పంపబడతాయి (స్థానిక RPC కనెక్షన్) +- ఎగ్జిక్యూషన్ లేయర్ లావాదేవీలను అమలు చేస్తుంది మరియు బ్లాక్ హెడర్‌లోని స్థితిని ధృవీకరిస్తుంది (అనగా, హ్యాష్‌లు సరిపోలుతున్నాయో లేదో తనిఖీ చేస్తుంది) +- ఎగ్జిక్యూషన్ లేయర్ ధృవీకరణ డేటాను ఏకాభిప్రాయం లేయర్‌కు తిరిగి పంపుతుంది, బ్లాక్ ఇప్పుడు ధృవీకరించబడినట్లుగా పరిగణించబడుతుంది (స్థానిక RPC కనెక్షన్) +- ఏకాభిప్రాయం లేయర్ తన స్వంత బ్లాక్‌చెయిన్ హెడ్‌కు బ్లాక్‌ను జోడిస్తుంది మరియు దానికి ధృవీకరిస్తుంది, నెట్‌వర్క్ (ఏకాభిప్రాయం p2p) పై అటెస్టేషన్‌ను ప్రసారం చేస్తుంది + +### ఏకాభిప్రాయం క్లయింట్ బ్లాక్ ప్రొడ్యూసర్ అయినప్పుడు: {#when-consensus-client-is-block-producer} + +- ఏకాభిప్రాయం క్లయింట్ తదుపరి బ్లాక్ ప్రొడ్యూసర్ అని నోటీసు అందుకుంటుంది (ఏకాభిప్రాయం p2p) +- ఏకాభిప్రాయం లేయర్ ఎగ్జిక్యూషన్ క్లయింట్‌లో `బ్లాక్‌ను సృష్టించు` పద్ధతిని పిలుస్తుంది (స్థానిక RPC) +- ఎగ్జిక్యూషన్ లేయర్ ట్రాన్సాక్షన్ గాసిప్ ప్రోటోకాల్ (ఎగ్జిక్యూషన్ p2p) ద్వారా నింపబడిన ట్రాన్సాక్షన్ మెమ్‌పూల్‌ను యాక్సెస్ చేస్తుంది +- ఎగ్జిక్యూషన్ క్లయింట్ లావాదేవీలను ఒక బ్లాక్‌గా కట్టి, లావాదేవీలను అమలు చేస్తుంది మరియు బ్లాక్ హ్యాష్‌ను ఉత్పత్తి చేస్తుంది +- ఏకాభిప్రాయం క్లయింట్ ఎగ్జిక్యూషన్ క్లయింట్ నుండి లావాదేవీలు మరియు బ్లాక్ హ్యాష్‌ను తీసుకుని వాటిని బెకన్ బ్లాక్‌కు జోడిస్తుంది (స్థానిక RPC) +- ఏకాభిప్రాయం క్లయింట్ బ్లాక్ గాసిప్ ప్రోటోకాల్ (ఏకాభిప్రాయం p2p) పై బ్లాక్‌ను ప్రసారం చేస్తుంది +- ఇతర క్లయింట్లు బ్లాక్ గాసిప్ ప్రోటోకాల్ ద్వారా ప్రతిపాదిత బ్లాక్‌ను స్వీకరించి, పైన వివరించిన విధంగా ధృవీకరిస్తాయి (ఏకాభిప్రాయం p2p) + +తగినంత మంది వాలిడేటర్‌లచే బ్లాక్ ధృవీకరించబడిన తర్వాత, అది గొలుసు యొక్క హెడ్‌కు జోడించబడుతుంది, సమర్థించబడుతుంది మరియు చివరికి ఖరారు చేయబడుతుంది. + +![](cons_client_net_layer.png) +![](exe_client_net_layer.png) + +[ethresear.ch](https://ethresear.ch/t/eth1-eth2-client-relationship/7248) నుండి ఏకాభిప్రాయం మరియు ఎగ్జిక్యూషన్ క్లయింట్‌ల కోసం నెట్‌వర్క్ లేయర్ స్కీమాటిక్ + +## మరింత చదవడానికి {#further-reading} + +[DevP2P](https://github.com/ethereum/devp2p) +[LibP2p](https://github.com/libp2p/specs) +[ఏకాభిప్రాయం లేయర్ నెట్‌వర్క్ స్పెక్స్](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#enr-structure) +[kademlia to discv5](https://vac.dev/kademlia-to-discv5) +[kademlia పేపర్](https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf) +[Ethereum p2pకి పరిచయం](https://p2p.paris/en/talks/intro-ethereum-networking/) +[eth1/eth2 సంబంధం](http://ethresear.ch/t/eth1-eth2-client-relationship/7248) +[విలీనం మరియు eth2 క్లయింట్ వివరాల వీడియో](https://www.youtube.com/watch?v=zNIrIninMgg) diff --git a/public/content/translations/te/developers/docs/networking-layer/network-addresses/index.md b/public/content/translations/te/developers/docs/networking-layer/network-addresses/index.md new file mode 100644 index 00000000000..1f2df61a78f --- /dev/null +++ b/public/content/translations/te/developers/docs/networking-layer/network-addresses/index.md @@ -0,0 +1,39 @@ +--- +title: "నెట్‌వర్క్ చిరునామాలు" +description: "నెట్‌వర్క్ చిరునామాలకు ఒక పరిచయం." +lang: te +sidebarDepth: 2 +--- + +పీర్‌లతో కనెక్ట్ కావడానికి Ethereum నోడ్‌లు కొన్ని ప్రాథమిక సమాచారంతో తమను తాము గుర్తించుకోవాలి. ఏదైనా సంభావ్య పీర్ ఈ సమాచారాన్ని అర్థం చేసుకోగలదని నిర్ధారించడానికి, ఇది ఏదైనా Ethereum నోడ్ అర్థం చేసుకోగలిగే మూడు ప్రామాణిక ఫార్మాట్లలో ఒకదానిలో ప్రసారం చేయబడుతుంది: multiaddr, enode, లేదా Ethereum నోడ్ రికార్డ్‌లు (ENRలు). Ethereum నెట్‌వర్క్ చిరునామాల కోసం ENRలు ప్రస్తుత ప్రమాణం. + +## అవసరాలు {#prerequisites} + +ఈ పేజీని అర్థం చేసుకోవడానికి Ethereum యొక్క [నెట్‌వర్కింగ్ లేయర్](/developers/docs/networking-layer/) గురించి కొంత అవగాహన అవసరం. + +## మల్టీఅడర్ {#multiaddr} + +అసలైన Ethereum నోడ్ చిరునామా ఫార్మాట్ 'multiaddr' ('మల్టీ-అడ్రెసెస్'కు సంక్షిప్తంగా). Multiaddr అనేది పీర్-టు-పీర్ నెట్‌వర్క్‌ల కోసం రూపొందించిన ఒక సార్వత్రిక ఫార్మాట్. కీలు మరియు విలువలు ఫార్వర్డ్ స్లాష్‌తో వేరు చేయబడిన కీ-విలువ జతలుగా చిరునామాలు సూచించబడతాయి. ఉదాహరణకు, IPv4 చిరునామా `192.168.22.27` ఉన్న మరియు TCP పోర్ట్ `33000` వింటున్న ఒక నోడ్ కోసం multiaddr ఇలా కనిపిస్తుంది: + +`/ip4/192.168.22.27/tcp/33000` + +ఒక Ethereum నోడ్ కోసం, multiaddrలో నోడ్-ID ఉంటుంది (వారి పబ్లిక్ కీ యొక్క హాష్): + +`/ip4/192.168.22.27/tcp/33000/p2p/5t7Nv7dG2d6ffbvAiewVsEwWweU3LdebSqX2y1bPrW8br` + +## Enode {#enode} + +URL చిరునామా ఫార్మాట్‌ను ఉపయోగించి ఒక Ethereum నోడ్‌ను గుర్తించే మార్గమే ఒక enode. హెక్సాడెసిమల్ నోడ్-ID, @ గుర్తును ఉపయోగించి హోస్ట్ నుండి వేరు చేయబడిన URL యొక్క యూజర్‌నేమ్ భాగంలో ఎన్‌కోడ్ చేయబడింది. హోస్ట్‌నేమ్‌ను IP చిరునామాగా మాత్రమే ఇవ్వగలరు; DNS పేర్లకు అనుమతి లేదు. హోస్ట్‌నేమ్ విభాగంలోని పోర్ట్, TCP లిజనింగ్ పోర్ట్. ఒకవేళ TCP మరియు UDP (డిస్కవరీ) పోర్ట్‌లు వేరుగా ఉంటే, UDP పోర్ట్ "discport" అనే క్వరీ పారామీటర్‌గా పేర్కొనబడుతుంది. + +కింది ఉదాహరణలో, నోడ్ URL `10.3.58.6` IP చిరునామా, `30303` TCP పోర్ట్ మరియు `30301` UDP డిస్కవరీ పోర్ట్‌తో ఒక నోడ్‌ను వివరిస్తుంది. + +`enode://6f8a80d14311c39f35f516fa664deaaaa13e85b2f7493f37f6144d86991ec012937307647bd3b9a82abe2974e1407241d54947bbb39763a4cac9f77166ad92a0@10.3.58.6:30303?discport=30301` + +## Ethereum నోడ్ రికార్డ్‌లు (ENRలు) {#enr} + +Ethereum నోడ్ రికార్డ్‌లు (ENRలు) Ethereumలోని నెట్‌వర్క్ చిరునామాల కోసం ఒక ప్రామాణిక ఫార్మాట్. ఇవి multiaddr's మరియు enodesలను అధిగమిస్తాయి. ఇవి ప్రత్యేకంగా ఉపయోగపడతాయి ఎందుకంటే అవి నోడ్‌ల మధ్య ఎక్కువ సమాచార మార్పిడిని అనుమతిస్తాయి. ENR సంతకాలను ఉత్పత్తి చేయడానికి, ధ్రువీకరించడానికి ఉపయోగించే గుర్తింపు పథకాన్ని వివరించే సంతకం, క్రమ సంఖ్య మరియు క్షేత్రాలను కలిగి ఉంటుంది. ENRను కీ-విలువ జతలుగా నిర్వహించబడిన ఏకపక్ష డేటాతో కూడా నింపవచ్చు. ఈ కీ-విలువ జతలు నోడ్ యొక్క IP చిరునామా మరియు నోడ్ ఉపయోగించగల ఉప-ప్రోటోకాల్‌ల గురించిన సమాచారాన్ని కలిగి ఉంటాయి. ఏకాభిప్రాయం క్లయింట్లు బూట్ నోడ్‌లను గుర్తించడానికి ఒక [నిర్దిష్ట ENR నిర్మాణాన్ని](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#enr-structure) ఉపయోగిస్తాయి మరియు ప్రస్తుత Ethereum ఫోర్క్ మరియు అటెస్టేషన్ గాసిప్ సబ్‌నెట్ గురించిన సమాచారాన్ని కలిగి ఉన్న `eth2` ఫీల్డ్‌ను కూడా కలిగి ఉంటాయి (ఇది నోడ్‌ను ఒక నిర్దిష్ట పీర్‌ల సమూహానికి కనెక్ట్ చేస్తుంది, వీరి అటెస్టేషన్లు కలిసి ఏకీకృతం చేయబడతాయి). + +## మరింత చదవడానికి {#further-reading} + +- [EIP-778: Ethereum నోడ్ రికార్డ్‌లు (ENR)](https://eips.ethereum.org/EIPS/eip-778) +- [LibP2P: Multiaddr-Enode-ENR?!](https://consensys.net/diligence/blog/2020/09/libp2p-multiaddr-enode-enr/) diff --git a/public/content/translations/te/developers/docs/networking-layer/portal-network/index.md b/public/content/translations/te/developers/docs/networking-layer/portal-network/index.md new file mode 100644 index 00000000000..743eef1773e --- /dev/null +++ b/public/content/translations/te/developers/docs/networking-layer/portal-network/index.md @@ -0,0 +1,89 @@ +--- +title: "పోర్టల్ నెట్‌వర్క్" +description: "పోర్టల్ నెట్‌వర్క్ యొక్క అవలోకనం - తక్కువ-వనరుల క్లయింట్‌లకు మద్దతు ఇవ్వడానికి రూపొందించబడిన ఇన్-డెవలప్‌మెంట్ నెట్‌వర్క్." +lang: te +--- + +Ethereum అనేది Ethereum క్లయింట్ సాఫ్ట్‌వేర్‌ను అమలు చేసే కంప్యూటర్‌లతో రూపొందించబడిన నెట్‌వర్క్. ఈ ప్రతి కంప్యూటర్‌ను 'నోడ్' అంటారు. క్లయింట్ సాఫ్ట్‌వేర్ Ethereum నెట్‌వర్క్‌లో డేటాను పంపడానికి మరియు స్వీకరించడానికి నోడ్‌ను అనుమతిస్తుంది మరియు Ethereum ప్రోటోకాల్ నియమాలకు వ్యతిరేకంగా డేటాను ధృవీకరిస్తుంది. నోడ్‌లు చాలా చారిత్రక డేటాను తమ డిస్క్ స్టోరేజ్‌లో ఉంచుతాయి మరియు నెట్‌వర్క్‌లోని ఇతర నోడ్‌ల నుండి బ్లాక్‌లు అని పిలువబడే కొత్త ప్యాకెట్ల సమాచారాన్ని స్వీకరించినప్పుడు వాటికి జోడించబడతాయి. నోడ్‌లో మిగిలిన నెట్‌వర్క్‌కు అనుగుణంగా సమాచారం ఉందో లేదో ఎల్లప్పుడూ తనిఖీ చేయడానికి ఇది అవసరం. దీని అర్థం నోడ్‌ను అమలు చేయడానికి చాలా డిస్క్ స్థలం అవసరం. కొన్ని నోడ్ ఆపరేషన్‌లకు చాలా RAM కూడా అవసరం కావచ్చు. + +ఈ డిస్క్ నిల్వ సమస్యను అధిగమించడానికి, 'లైట్' నోడ్‌లు అభివృద్ధి చేయబడ్డాయి, ఇవి అన్నింటినీ స్వయంగా నిల్వ చేయడానికి బదులుగా పూర్తి నోడ్‌ల నుండి సమాచారాన్ని అభ్యర్థిస్తాయి. అయితే, దీని అర్థం లైట్ నోడ్ స్వతంత్రంగా సమాచారాన్ని ధృవీకరించడం లేదు మరియు బదులుగా మరొక నోడ్‌ను విశ్వసిస్తోంది. ఆ లైట్ నోడ్‌లను అందించడానికి అదనపు పనిని తీసుకోవడానికి పూర్తి నోడ్‌లు అవసరమని కూడా దీని అర్థం. + +పోర్టల్ నెట్‌వర్క్ అనేది Ethereum కోసం ఒక కొత్త నెట్‌వర్కింగ్ డిజైన్, ఇది నెట్‌వర్క్‌లోని చిన్న భాగాలలో అవసరమైన డేటాను భాగస్వామ్యం చేయడం ద్వారా పూర్తి నోడ్‌లపై నమ్మకం లేదా అదనపు ఒత్తిడి లేకుండా "లైట్" నోడ్‌ల కోసం డేటా లభ్యత సమస్యను పరిష్కరించడం లక్ష్యంగా పెట్టుకుంది. + +[నోడ్‌లు మరియు క్లయింట్‌ల](/developers/docs/nodes-and-clients/) గురించి మరింత + +## మనకు పోర్టల్ నెట్‌వర్క్ ఎందుకు అవసరం {#why-do-we-need-portal-network} + +Ethereum నోడ్‌లు Ethereum blockchain యొక్క పూర్తి లేదా పాక్షిక కాపీని నిల్వ చేస్తాయి. లావాదేవీలను ధృవీకరించడానికి మరియు నోడ్ సరైన గొలుసును అనుసరిస్తోందని నిర్ధారించుకోవడానికి ఈ స్థానిక కాపీ ఉపయోగించబడుతుంది. స్థానికంగా నిల్వ చేయబడిన ఈ డేటా, ఇన్‌కమింగ్ డేటా చెల్లుబాటు అయ్యేదని మరియు ఇతర ఎంటిటీని విశ్వసించాల్సిన అవసరం లేకుండా స్వతంత్రంగా ధృవీకరించడానికి నోడ్‌లను అనుమతిస్తుంది. + +బ్లాక్‌చెయిన్ యొక్క ఈ స్థానిక కాపీ మరియు సంబంధిత స్థితి మరియు రసీదు డేటా నోడ్ హార్డ్ డిస్క్‌లో చాలా స్థలాన్ని తీసుకుంటుంది. ఉదాహరణకు, ఒక ఏకాభిప్రాయం క్లయింట్‌తో జత చేసిన [Geth](https://geth.ethereum.org)ను ఉపయోగించి ఒక నోడ్‌ను అమలు చేయడానికి 2TB హార్డ్ డిస్క్ సిఫార్సు చేయబడింది. సాపేక్షంగా ఇటీవలి బ్లాక్‌ల సెట్ నుండి చైన్ డేటాను మాత్రమే నిల్వ చేసే స్నాప్ సింక్‌ని ఉపయోగించి, గెత్ సాధారణంగా 650GB డిస్క్ స్థలాన్ని ఆక్రమిస్తుంది కానీ దాదాపు 14GB/వారం పెరుగుతుంది (మీరు నోడ్‌ను క్రమానుగతంగా 650GBకి తగ్గించవచ్చు). + +దీని అర్థం రన్నింగ్ నోడ్‌లు ఖరీదైనవి, ఎందుకంటే పెద్ద మొత్తంలో డిస్క్ స్థలం Ethereumకి అంకితం చేయబడాలి. ఇతీరియము రోడ్‌మ్యాప్‌లో ఈ సమస్యకు అనేక పరిష్కారాలు ఉన్నాయి, వాటిలో [చరిత్ర గడువు](/roadmap/statelessness/#history-expiry), [స్థితి గడువు](/roadmap/statelessness/#state-expiry) మరియు [స్థితిలేనితనం](/roadmap/statelessness/) ఉన్నాయి. అయితే, ఇవి అమలులోకి రావడానికి చాలా సంవత్సరాల సమయం పట్టే అవకాశం ఉంది. [లైట్ నోడ్‌లు](/developers/docs/nodes-and-clients/light-clients/) కూడా ఉన్నాయి, అవి చైన్ డేటా యొక్క సొంత కాపీని సేవ్ చేయవు, అవి తమకు అవసరమైన డేటాను పూర్తి నోడ్‌ల నుండి అభ్యర్థిస్తాయి. అయితే, దీనర్థం లైట్ నోడ్‌లు నిజాయితీ గల డేటాను అందించడానికి పూర్తి నోడ్‌లను విశ్వసించాలని మరియు లైట్ నోడ్‌లకు అవసరమైన డేటాను అందించాల్సిన పూర్తి నోడ్‌లను కూడా నొక్కి చెబుతుంది. + +పోర్టల్ నెట్‌వర్క్ లైట్ నోడ్‌ల డేటాను పొందేందుకు ప్రత్యామ్నాయ మార్గాన్ని అందించడం లక్ష్యంగా పెట్టుకుంది, అవి పూర్తి నోడ్‌ల ద్వారా చేయాల్సిన పనిని విశ్వసించడం లేదా గణనీయంగా జోడించడం అవసరం లేదు. నెట్‌వర్క్ అంతటా డేటాను పంచుకోవడానికి Ethereum నోడ్‌ల కోసం కొత్త మార్గాన్ని పరిచయం చేయడం ఇది చేసే మార్గం. + +## పోర్టల్ నెట్‌వర్క్ ఎలా పని చేస్తుంది? {#how-does-portal-network-work} + +Ethereum నోడ్‌లు ఒకదానితో ఒకటి ఎలా సంభాషించుకోవాలో నిర్వచించే కఠినమైన ప్రోటోకాల్‌లను కలిగి ఉంటాయి. ఎగ్జిక్యూషన్ క్లయింట్లు [DevP2P](/developers/docs/networking-layer/#devp2p) అని పిలువబడే సబ్-ప్రోటోకాల్‌ల సమితిని ఉపయోగించి కమ్యూనికేట్ చేస్తాయి, అయితే ఏకాభిప్రాయం క్లయింట్లు [libP2P](/developers/docs/networking-layer/#libp2p) అని పిలువబడే విభిన్న సబ్-ప్రోటోకాల్‌ల స్టాక్‌ను ఉపయోగిస్తాయి. ఇవి నోడ్‌ల మధ్య పాస్ చేయగల డేటా రకాలను నిర్వచిస్తాయి. + +![devP2P మరియు libP2P](portal-network-devp2p-libp2p.png) + +నోడ్‌లు [JSON-RPC API](/developers/docs/apis/json-rpc/) ద్వారా నిర్దిష్ట డేటాను కూడా అందించగలవు, దీని ద్వారా యాప్‌లు మరియు వాలెట్‌లు ఇతీరియము నోడ్‌లతో సమాచారాన్ని మార్పిడి చేసుకుంటాయి. అయితే, వీటిలో ఏవీ లైట్ క్లయింట్‌లకు డేటాను అందించడానికి అనువైన ప్రోటోకాల్‌లు కావు. + +లైట్ క్లయింట్లు ప్రస్తుతం DevP2P లేదా libP2p ద్వారా నిర్దిష్ట గొలుసు డేటాను అభ్యర్థించలేరు ఎందుకంటే ఆ ప్రోటోకాల్‌లు బ్లాక్‌లు మరియు లావాదేవీల చైన్ సింక్రొనైజేషన్ మరియు గాసిపింగ్‌ని ఎనేబుల్ చేయడానికి మాత్రమే రూపొందించబడ్డాయి. లైట్ క్లయింట్‌లు ఈ సమాచారాన్ని డౌన్‌లోడ్ చేయాలనుకోవడం లేదు, ఎందుకంటే అది వాటిని "లైట్" గా ఉండకుండా చేస్తుంది. + +JSON-RPC API తేలికపాటి క్లయింట్ డేటా అభ్యర్థనలకు సరైన ఎంపిక కాదు, ఎందుకంటే ఇది నిర్దిష్ట పూర్తి నోడ్ లేదా డేటాను అందించగల కేంద్రీకృత RPC ప్రొవైడర్‌కి కనెక్షన్‌పై ఆధారపడుతుంది. దీనర్థం లైట్ క్లయింట్ నిర్దిష్ట నోడ్/ప్రొవైడర్ నిజాయితీగా ఉండాలని విశ్వసించవలసి ఉంటుంది మరియు పూర్తి నోడ్ వారి బ్యాండ్‌విడ్త్ అవసరాలకు జోడించి అనేక లైట్ క్లయింట్ల నుండి చాలా అభ్యర్థనలను నిర్వహించవలసి ఉంటుంది. + +ఇప్పటికే ఉన్న Ethereum క్లయింట్‌ల డిజైన్ పరిమితుల వెలుపల, ప్రత్యేకంగా తేలికగా నిర్మించడం కోసం మొత్తం డిజైన్‌ను పునరాలోచించడం పోర్టల్ నెట్‌వర్క్ యొక్క అంశం. + +పోర్టల్ నెట్‌వర్క్ యొక్క ముఖ్య ఉద్దేశ్యం, [DHT](https://en.wikipedia.org/wiki/Distributed_hash_table) (బిట్‌టొరెంట్ లాంటిది) ఉపయోగించి ఒక తేలికపాటి DevP2P-శైలి పీర్-టు-పీర్ వికేంద్రీకృత నెట్‌వర్క్ ద్వారా, లైట్ క్లయింట్‌లకు అవసరమైన చారిత్రక డేటా మరియు చైన్ యొక్క ప్రస్తుత హెడ్ యొక్క గుర్తింపు వంటి సమాచారాన్ని అందుబాటులోకి తీసుకురావడం ద్వారా, ప్రస్తుత నెట్‌వర్కింగ్ స్టాక్‌లోని ఉత్తమ భాగాలను తీసుకోవడం. + +మొత్తం చారిత్రక Ethereum డేటాలోని చిన్న భాగాలను మరియు ప్రతి నోడ్‌కి కొన్ని నిర్దిష్ట నోడ్ బాధ్యతలను జోడించాలనే ఆలోచన ఉంది. అప్పుడు, అభ్యర్థించిన నిర్దిష్ట డేటాను నిల్వ చేసే నోడ్‌లను వెతకడం మరియు వాటి నుండి తిరిగి పొందడం ద్వారా అభ్యర్థనలు అందించబడతాయి. + +ఇది ఒకే నోడ్‌ను కనుగొనే లైట్ నోడ్‌ల యొక్క సాధారణ మోడల్‌ను విలోమం చేస్తుంది మరియు పెద్ద వాల్యూమ్‌ల డేటాను ఫిల్టర్ చేసి అందించమని వాటిని అభ్యర్థిస్తుంది; బదులుగా, అవి ప్రతి ఒక్కటి చిన్న మొత్తంలో డేటాను హ్యాండిల్ చేసే పెద్ద నోడ్‌ల నెట్‌వర్క్‌ను త్వరగా ఫిల్టర్ చేస్తాయి. + +ఇది ఒకే నోడ్‌ను కనుగొనే లైట్ నోడ్‌ల యొక్క సాధారణ మోడల్‌ను విలోమం చేస్తుంది మరియు పెద్ద వాల్యూమ్‌ల డేటాను ఫిల్టర్ చేసి అందించమని వాటిని అభ్యర్థిస్తుంది; బదులుగా, అవి ప్రతి ఒక్కటి చిన్న మొత్తంలో డేటాను హ్యాండిల్ చేసే పెద్ద నోడ్‌ల నెట్‌వర్క్‌ను త్వరగా ఫిల్టర్ చేస్తాయి: + +- చైన్ యొక్క హెడ్‌ను ట్రాక్ చేయడం +- ఇటీవలి మరియు చారిత్రక చైన్ డేటాను సింక్ చేయడం +- స్థితి డేటాను తిరిగి పొందడం +- లావాదేవీలను ప్రసారం చేయడం +- [EVM](/developers/docs/evm/)ని ఉపయోగించి లావాదేవీలను అమలు చేయడం + +ఈ నెట్‌వర్క్ డిజైన్ యొక్క ప్రయోజనాలు: + +- కేంద్రీకృత ప్రొవైడర్‌లపై ఆధారపడటాన్ని తగ్గించడం +- ఇంటర్నెట్ బ్యాండ్‌విడ్త్ వాడకాన్ని తగ్గించడం +- కనిష్ట లేదా సున్నా సింకింగ్ +- వనరులు-పరిమిత పరికరాలకు అందుబాటులో ఉండటం (\<1 GB RAM, \<100 MB డిస్క్ స్పేస్, 1 CPU) + +కింది పట్టిక, పోర్టల్ నెట్‌వర్క్ ద్వారా అందించగల ఇప్పటికే ఉన్న క్లయింట్ల ఫంక్షన్‌లను చూపుతుంది, ఇది చాలా తక్కువ వనరులు ఉన్న పరికరాలలో ఈ ఫంక్షన్‌లను యాక్సెస్ చేయడానికి వినియోగదారులను అనుమతిస్తుంది. + +### పోర్టల్ నెట్‌వర్క్‌లు + +| బీకన్ లైట్ క్లయింట్ | స్థితి నెట్‌వర్క్ | లావాదేవీ గాసిప్ | చరిత్ర నెట్‌వర్క్ | +| ------------------- | ---------------------------- | ------------------- | ----------------- | +| బీకన్ చైన్ లైట్ | ఖాతా మరియు కాంట్రాక్ట్ నిల్వ | తేలికపాటి మెమ్‌పూల్ | హెడర్‌లు | +| ప్రోటోకాల్ డేటా | | | బ్లాక్ బాడీలు | +| | | | రశీదులు | + +## డిఫాల్ట్‌గా క్లయింట్ వైవిధ్యం {#client-diversity-as-default} + +పోర్టల్ నెట్‌వర్క్ డెవలపర్లు మొదటి రోజు నుండే నాలుగు వేర్వేరు పోర్టల్ నెట్‌వర్క్ క్లయింట్లను నిర్మించాలనే డిజైన్ ఎంపికను కూడా చేశారు. + +పోర్టల్ నెట్‌వర్క్ క్లయింట్లు: + +- [Trin](https://github.com/ethereum/trin): రస్ట్‌లో వ్రాయబడింది +- [Fluffy](https://fluffy.guide): నిమ్‌లో వ్రాయబడింది +- [Ultralight](https://github.com/ethereumjs/ultralight): టైప్‌స్క్రిప్ట్‌లో వ్రాయబడింది +- [Shisui](https://github.com/zen-eth/shisui): గోలో వ్రాయబడింది + +బహుళ స్వతంత్ర క్లయింట్ అమలులను కలిగి ఉండటం ఇతీరియము నెట్‌వర్క్ యొక్క స్థితిస్థాపకత మరియు వికేంద్రీకరణను పెంచుతుంది. + +ఒక క్లయింట్ సమస్యలు లేదా దుర్బలత్వాలను ఎదుర్కొంటే, ఇతర క్లయింట్లు సజావుగా పనిచేయడం కొనసాగించగలవు, ఇది వైఫల్యం యొక్క ఒకే బిందువును నివారిస్తుంది. అదనంగా, విభిన్న క్లయింట్ అమలులు ఆవిష్కరణ మరియు పోటీని ప్రోత్సహిస్తాయి, మెరుగుదలలను నడిపిస్తాయి మరియు పర్యావరణ వ్యవస్థలో మోనోకల్చర్ ప్రమాదాన్ని తగ్గిస్తాయి. + +## మరింత సమాచారం {#further-reading} + +- [ది పోర్టల్ నెట్‌వర్క్ (డెవ్‌కాన్ బొగోటాలో పైపర్ మెరియం)](https://www.youtube.com/watch?v=0stc9jnQLXA). +- [ది పోర్టల్ నెట్‌వర్క్ డిస్కార్డ్](https://discord.gg/CFFnmE7Hbs) +- [ది పోర్టల్ నెట్‌వర్క్ వెబ్‌సైట్](https://www.ethportal.net/) diff --git a/public/content/translations/te/developers/docs/networks/index.md b/public/content/translations/te/developers/docs/networks/index.md new file mode 100644 index 00000000000..898c37cd0e6 --- /dev/null +++ b/public/content/translations/te/developers/docs/networks/index.md @@ -0,0 +1,216 @@ +--- +title: "నెటవర్క్లు" +description: "ఇతీరియము యొక్క నెట్‌వర్క్‌ల యొక్క అవలోకనం మరియు మీ అప్లికేషన్‌ను పరీక్షించడానికి టెస్టునెట్ ఈథర్ (ETH) ఎక్కడ పొందాలో." +lang: te +--- + +ఇతీరియము నెట్‌వర్క్‌లు అనేవి ఇతీరియము ప్రోటోకాల్ ఉపయోగించి కమ్యూనికేట్ చేసే కనెక్ట్ చేయబడిన కంప్యూటర్‌ల సమూహాలు. ఒకే ఒక ఇతీరియము మెయిన్‌నెట్ ఉంది, కానీ పరీక్ష మరియు అభివృద్ధి ప్రయోజనాల కోసం అదే ప్రోటోకాల్ నియమాలకు అనుగుణంగా స్వతంత్ర నెట్‌వర్క్‌లను సృష్టించవచ్చు. ఒకదానితో ఒకటి పరస్పరం సంభాషించుకోకుండా ప్రోటోకాల్‌కు అనుగుణంగా ఉండే అనేక స్వతంత్ర "నెట్‌వర్క్‌లు" ఉన్నాయి. మీ స్మార్ట్ కాంట్రాక్ట్‌లు మరియు వెబ్3 యాప్‌లను పరీక్షించడానికి మీరు మీ స్వంత కంప్యూటర్‌లో స్థానికంగా ఒకదాన్ని ప్రారంభించవచ్చు. + +మీ ఇతీరియము ఖాతా విభిన్న నెట్‌వర్క్‌లలో పని చేస్తుంది, కానీ మీ ఖాతా బ్యాలెన్స్ మరియు లావాదేవీల చరిత్ర ప్రధాన ఇతీరియము నెట్‌వర్క్ నుండి బదిలీ చేయబడవు. పరీక్ష ప్రయోజనాల కోసం, ఏ నెట్‌వర్క్‌లు అందుబాటులో ఉన్నాయో మరియు ఆడుకోవడానికి టెస్టునెట్ ETH ఎలా పొందాలో తెలుసుకోవడం ఉపయోగకరంగా ఉంటుంది. సాధారణంగా, భద్రతా పరిగణనల కోసం, మెయిన్‌నెట్ ఖాతాలను టెస్టునెట్‌లలో తిరిగి ఉపయోగించడం లేదా దీనికి విరుద్ధంగా చేయడం సిఫార్సు చేయబడదు. + +## అవసరాలు {#prerequisites} + +విభిన్న నెట్‌వర్క్‌ల గురించి చదివే ముందు మీరు [ఇతీరియము యొక్క ప్రాథమికాలను](/developers/docs/intro-to-ethereum/) అర్థం చేసుకోవాలి, ఎందుకంటే టెస్టు నెట్‌వర్క్‌లు మీకు ఆడుకోవడానికి చవకైన, సురక్షితమైన ఇతీరియము వెర్షన్‌ను అందిస్తాయి. + +## పబ్లిక్ నెట్‌వర్క్‌లు {#public-networks} + +పబ్లిక్ నెట్‌వర్క్‌లు ఇంటర్నెట్ కనెక్షన్ ఉన్న ప్రపంచంలోని ఎవరికైనా అందుబాటులో ఉంటాయి. పబ్లిక్ బ్లాక్‌చెయిన్‌లో ఎవరైనా లావాదేవీలను చదవగలరు లేదా సృష్టించగలరు మరియు అమలు చేయబడుతున్న లావాదేవీలను ధృవీకరించగలరు. పీర్‌ల మధ్య ఏకాభిప్రాయం లావాదేవీల చేరిక మరియు నెట్‌వర్క్ స్థితిపై నిర్ణయం తీసుకుంటుంది. + +### ఇతీరియము మెయిన్‌నెట్ {#ethereum-mainnet} + +మెయిన్‌నెట్ ప్రాథమిక పబ్లిక్ ఇతీరియము ఉత్పత్తి బ్లాక్‌చెయిన్, ఇక్కడ పంపిణీ చేయబడిన లెడ్జర్‌లో వాస్తవ-విలువ లావాదేవీలు జరుగుతాయి. + +ప్రజలు మరియు ఎక్స్ఛేంజీలు ETH ధరల గురించి చర్చించినప్పుడు, వారు మెయిన్‌నెట్ ETH గురించి మాట్లాడుతున్నారు. + +### ఇతీరియము టెస్టునెట్స్ {#ethereum-testnets} + +మెయిన్‌నెట్‌తో పాటు, పబ్లిక్ టెస్టునెట్‌లు ఉన్నాయి. ఇవి ప్రోటోకాల్ డెవలపర్లు లేదా స్మార్ట్ కాంట్రాక్ట్ డెవలపర్లు మెయిన్‌నెట్‌కు డిప్లాయ్ చేయడానికి ముందు ఉత్పత్తి-వంటి వాతావరణంలో ప్రోటోకాల్ అప్‌గ్రేడ్‌లు మరియు సంభావ్య స్మార్ట్ కాంట్రాక్ట్‌లు రెండింటినీ పరీక్షించడానికి ఉపయోగించే నెట్‌వర్క్‌లు. దీనిని ఉత్పత్తి వర్సెస్ స్టేజింగ్ సర్వర్‌లకు సారూప్యంగా భావించండి. + +మెయిన్‌నెట్‌కు డిప్లాయ్ చేసే ముందు మీరు వ్రాసే ఏదైనా కాంట్రాక్ట్ కోడ్‌ను టెస్టునెట్‌లో పరీక్షించాలి. ఇప్పటికే ఉన్న స్మార్ట్ కాంట్రాక్ట్‌లతో అనుసంధానించబడిన డాప్స్‌లో, చాలా ప్రాజెక్ట్‌లు టెస్టునెట్‌లలో కాపీలను డిప్లాయ్ చేశాయి. + +చాలా టెస్టునెట్‌లు అనుమతించబడిన ప్రూఫ్-ఆఫ్-అథారిటీ ఏకాభిప్రాయ యంత్రాంగాన్ని ఉపయోగించి ప్రారంభించబడ్డాయి. అంటే లావాదేవీలను ధృవీకరించడానికి మరియు కొత్త బ్లాక్‌లను సృష్టించడానికి తక్కువ సంఖ్యలో నోడ్‌లు ఎంపిక చేయబడతాయి – ఈ ప్రక్రియలో వారి గుర్తింపును స్టేక్ చేస్తాయి. ప్రత్యామ్నాయంగా, కొన్ని టెస్టునెట్‌లు ఓపెన్ ప్రూఫ్-ఆఫ్-స్టేక్ ఏకాభిప్రాయ యంత్రాంగాన్ని కలిగి ఉంటాయి, ఇక్కడ ఇతీరియము మెయిన్‌నెట్ లాగానే ప్రతి ఒక్కరూ వ్యాలిడేటర్‌ను నడపడాన్ని పరీక్షించవచ్చు. + +టెస్టునెట్‌లలోని ETHకి నిజమైన విలువ ఉండదని భావిస్తారు; అయినప్పటికీ, కొరతగా లేదా పొందడం కష్టంగా మారిన కొన్ని రకాల టెస్టునెట్ ETH కోసం మార్కెట్‌లు సృష్టించబడ్డాయి. ఇతీరియముతో (టెస్టునెట్‌లలో కూడా) వాస్తవంగా సంభాషించడానికి మీకు ETH అవసరం కాబట్టి, చాలా మంది ప్రజలు ఫాసెట్‌ల నుండి ఉచితంగా టెస్టునెట్ ETHను పొందుతారు. చాలా ఫాసెట్‌లు వెబ్‌యాప్‌లు, ఇక్కడ మీరు ETH పంపమని అభ్యర్థించే చిరునామాను ఇన్‌పుట్ చేయవచ్చు. + +#### నేను ఏ టెస్టునెట్ ఉపయోగించాలి? + +క్లయింట్ డెవలపర్లు ప్రస్తుతం నిర్వహిస్తున్న రెండు పబ్లిక్ టెస్టునెట్‌లు సెపోలియా మరియు హూడీ. సెపోలియా అనేది కాంట్రాక్ట్ మరియు అప్లికేషన్ డెవలపర్లు వారి అప్లికేషన్‌లను పరీక్షించడానికి ఒక నెట్‌వర్క్. హూడీ నెట్‌వర్క్ ప్రోటోకాల్ డెవలపర్‌లను నెట్‌వర్క్ అప్‌గ్రేడ్‌లను పరీక్షించడానికి అనుమతిస్తుంది, మరియు స్టేకర్‌లను వ్యాలిడేటర్‌లను నడపడాన్ని పరీక్షించడానికి అనుమతిస్తుంది. + +#### సెపోలియా {#sepolia} + +**అప్లికేషన్ అభివృద్ధి కోసం సిఫార్సు చేయబడిన డిఫాల్ట్ టెస్టునెట్ సెపోలియా**. సెపోలియా నెట్‌వర్క్ క్లయింట్ & టెస్టింగ్ బృందాలచే నియంత్రించబడే అనుమతించబడిన వ్యాలిడేటర్ సెట్‌ను ఉపయోగిస్తుంది. + +##### వనరులు + +- [వెబ్‌సైట్](https://sepolia.dev/) +- [GitHub](https://github.com/eth-clients/sepolia) +- [Otterscan](https://sepolia.otterscan.io/) +- [Etherscan](https://sepolia.etherscan.io) +- [Blockscout](https://eth-sepolia.blockscout.com/) + +##### ఫాసెట్‌లు + +- [ఆల్కెమీ సెపోలియా ఫాసెట్](https://www.alchemy.com/faucets/ethereum-sepolia) +- [చైన్ ప్లాట్‌ఫారమ్ సెపోలియా ఫాసెట్](https://faucet.chainplatform.co/faucets/ethereum-sepolia/) +- [చైన్‌స్టాక్ సెపోలియా ఫాసెట్](https://faucet.chainstack.com/sepolia-testnet-faucet) +- [ఇతీరియము ఎకోసిస్టమ్ ఫాసెట్](https://www.ethereum-ecosystem.com/faucets/ethereum-sepolia) +- [ethfaucet.com సెపోలియా ఫాసెట్](https://ethfaucet.com/networks/ethereum) +- [గూగుల్ క్లౌడ్ వెబ్3 సెపోలియా ఫాసెట్](https://cloud.google.com/application/web3/faucet/ethereum/sepolia) +- [Grabteeth](https://grabteeth.xyz/) +- [ఇన్‌ఫురా సెపోలియా ఫాసెట్](https://www.infura.io/faucet) +- [PoW ఫాసెట్](https://sepolia-faucet.pk910.de/) +- [క్విక్‌నోడ్ సెపోలియా ఫాసెట్](https://faucet.quicknode.com/ethereum/sepolia) + +#### హూడీ {#hoodi} + +హూడీ అనేది ధృవీకరణ మరియు స్టేకింగ్‌ను పరీక్షించడానికి ఒక టెస్టునెట్. టెస్టునెట్ వ్యాలిడేటర్‌ను నడపాలనుకునే వినియోగదారుల కోసం హూడీ నెట్‌వర్క్ తెరిచి ఉంది. మెయిన్‌నెట్‌కు డిప్లాయ్ చేయడానికి ముందు ప్రోటోకాల్ అప్‌గ్రేడ్‌లను పరీక్షించాలనుకునే స్టేకర్‌లు అందువల్ల హూడీని ఉపయోగించాలి. + +- ఓపెన్ వ్యాలిడేటర్ సెట్, స్టేకర్‌లు నెట్‌వర్క్ అప్‌గ్రేడ్‌లను పరీక్షించవచ్చు +- పెద్ద స్థితి, సంక్లిష్టమైన స్మార్ట్ కాంట్రాక్ట్ పరస్పర చర్యలను పరీక్షించడానికి ఉపయోగపడుతుంది +- సింక్ చేయడానికి ఎక్కువ సమయం పడుతుంది మరియు నోడ్‌ను నడపడానికి మరింత స్టోరేజ్ అవసరం + +##### వనరులు + +- [వెబ్‌సైట్](https://hoodi.ethpandaops.io/) +- [GitHub](https://github.com/eth-clients/hoodi) +- [ఎక్స్‌ప్లోరర్](https://explorer.hoodi.ethpandaops.io/) +- [చెక్పాయింట్ సింక్](https://checkpoint-sync.hoodi.ethpandaops.io/) +- [Otterscan](https://hoodi.otterscan.io/) +- [Etherscan](https://hoodi.etherscan.io/) + +##### ఫాసెట్‌లు + +- [చైన్ ప్లాట్‌ఫారమ్ హూడీ ఫాసెట్](https://faucet.chainplatform.co/faucets/ethereum-hoodi/) +- [హూడీ ఫాసెట్](https://hoodi.ethpandaops.io/) +- [PoW ఫాసెట్](https://hoodi-faucet.pk910.de/) + +#### ఎఫెమెరీ {#ephemery} + +ఎఫెమెరీ అనేది ప్రతి నెలా పూర్తిగా రీసెట్ చేసే ఒక ప్రత్యేకమైన రకమైన టెస్టునెట్. ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయ స్థితి ప్రతి 28 రోజులకు జెనెసిస్‌కు తిరిగి వస్తుంది, అంటే టెస్టునెట్‌లో జరిగే ఏదైనా అశాశ్వతమైనది. ఇది స్వల్పకాలిక పరీక్ష, వేగవంతమైన నోడ్ బూట్‌స్ట్రాప్ మరియు శాశ్వతత్వం అవసరం లేని 'హలో వరల్డ్' రకమైన అప్లికేషన్‌లకు అనువైనదిగా చేస్తుంది. + +- ఎల్లప్పుడూ తాజా స్థితి, వ్యాలిడేటర్లు మరియు యాప్‌ల స్వల్పకాలిక పరీక్ష +- కాంట్రాక్ట్‌ల యొక్క ప్రాథమిక సెట్‌ను మాత్రమే కలిగి ఉంటుంది +- ఓపెన్ వ్యాలిడేటర్ సెట్ మరియు పెద్ద మొత్తంలో నిధులను యాక్సెస్ చేయడం సులభం +- అత్యల్ప నోడ్ అవసరాలు మరియు వేగవంతమైన సింక్, సగటున <5GB + +##### వనరులు + +- [వెబ్‌సైట్](https://ephemery.dev/) +- [Github](https://github.com/ephemery-testnet/ephemery-resources) +- [కమ్యూనిటీ చాట్](https://matrix.to/#/#staker-testnet:matrix.org) +- [Blockscout](https://explorer.ephemery.dev/) +- [Otterscan](https://otter.bordel.wtf/) +- [బీకాన్ ఎక్స్‌ప్లోరర్](https://beaconlight.ephemery.dev/) +- [చెక్పాయింట్ సింక్](https://checkpoint-sync.ephemery.ethpandaops.io) +- [లాంచ్‌ప్యాడ్](https://launchpad.ephemery.dev/) + +#### ఫాసెట్‌లు + +- [Bordel ఫాసెట్](https://faucet.bordel.wtf/) +- [Pk910 PoW ఫాసెట్](https://ephemery-faucet.pk910.de/) + +#### హోలెస్కీ (నిలిపివేయబడింది) {#holesky} + +హోలెస్కీ టెస్టునెట్ సెప్టెంబర్ 2025 నుండి నిలిపివేయబడింది. స్టేకింగ్ ఆపరేటర్లు మరియు ఇన్‌ఫ్రాస్ట్రక్చర్ ప్రొవైడర్లు బదులుగా వ్యాలిడేటర్ పరీక్ష కోసం హూడీని ఉపయోగించాలి. + +- [హోలెస్కీ టెస్టునెట్ షట్‌డౌన్ ప్రకటన](https://blog.ethereum.org/2025/09/01/holesky-shutdown-announcement) - _EF బ్లాగ్, 1-సెప్టెంబర్-2025_ +- [హోలెస్కీ మరియు హూడీ టెస్టునెట్ అప్‌డేట్‌లు](https://blog.ethereum.org/en/2025/03/18/hoodi-holesky) - _EF బ్లాగ్, 18-మార్చి-2025_ + +### లేయర్ 2 టెస్టునెట్‌లు {#layer-2-testnets} + +[లేయర్ 2 (L2)](/layer-2/) అనేది ఒక నిర్దిష్ట ఇతీరియము స్కేలింగ్ పరిష్కారాల సెట్‌ను వివరించడానికి ఒక సామూహిక పదం. లేయర్ 2 అనేది ఇతీరియమును విస్తరించే ఒక ప్రత్యేక బ్లాక్‌చెయిన్ మరియు ఇతీరియము యొక్క భద్రతా హామీలను వారసత్వంగా పొందుతుంది. లేయర్ 2 టెస్టునెట్‌లు సాధారణంగా పబ్లిక్ ఇతీరియము టెస్టునెట్‌లతో గట్టిగా జతచేయబడి ఉంటాయి. + +#### ఆర్బిట్రం సెపోలియా {#arbitrum-sepolia} + +[ఆర్బిట్రం](https://arbitrum.io/) కోసం ఒక టెస్టునెట్. + +##### వనరులు + +- [Etherscan](https://sepolia.arbiscan.io/) +- [Blockscout](https://sepolia-explorer.arbitrum.io/) + +##### ఫాసెట్‌లు + +- [ఆల్కెమీ ఆర్బిట్రం సెపోలియా ఫాసెట్](https://www.alchemy.com/faucets/arbitrum-sepolia) +- [చైన్‌లింక్ ఆర్బిట్రం సెపోలియా ఫాసెట్](https://faucets.chain.link/arbitrum-sepolia) +- [ethfaucet.com ఆర్బిట్రం సెపోలియా ఫాసెట్](https://ethfaucet.com/networks/arbitrum) +- [క్విక్‌నోడ్ ఆర్బిట్రం సెపోలియా ఫాసెట్](https://faucet.quicknode.com/arbitrum/sepolia) + +#### ఆప్టిమిస్టిక్ సెపోలియా {#optimistic-sepolia} + +[ఆప్టిమిజం](https://www.optimism.io/) కోసం ఒక టెస్టునెట్. + +##### వనరులు + +- [Etherscan](https://sepolia-optimistic.etherscan.io/) +- [Blockscout](https://optimism-sepolia.blockscout.com/) + +##### ఫాసెట్‌లు + +- [ఆల్కెమీ ఫాసెట్](https://www.alchemy.com/faucets/optimism-sepolia) +- [చైన్‌లింక్ ఫాసెట్](https://faucets.chain.link/optimism-sepolia) +- [ethfaucet.com ఆప్టిమిజం సెపోలియా ఫాసెట్](https://ethfaucet.com/networks/optimism) +- [టెస్టునెట్ ఫాసెట్](https://docs.optimism.io/builders/tools/build/faucets) + +#### స్టార్క్‌నెట్ సెపోలియా {#starknet-sepolia} + +[స్టార్క్‌నెట్](https://www.starknet.io) కోసం ఒక టెస్టునెట్. + +##### వనరులు + +- [Starkscan](https://sepolia.starkscan.co/) + +##### ఫాసెట్‌లు + +- [ఆల్కెమీ ఫాసెట్](https://www.alchemy.com/faucets/starknet-sepolia) +- [బ్లాస్ట్ స్టార్క్‌నెట్ సెపోలియా ఫాసెట్](https://blastapi.io/faucets/starknet-sepolia-eth) +- [స్టార్క్‌నెట్ ఫాసెట్](https://starknet-faucet.vercel.app/) + +## ప్రైవేట్ నెట్‌వర్క్‌లు {#private-networks} + +ఒక ఇతీరియము నెట్‌వర్క్ యొక్క నోడ్‌లు పబ్లిక్ నెట్‌వర్క్‌కు (అంటే, మెయిన్‌నెట్ లేదా టెస్టునెట్) కనెక్ట్ కానట్లయితే అది ప్రైవేట్ నెట్‌వర్క్. ఈ సందర్భంలో, ప్రైవేట్ అంటే రిజర్వు చేయబడిన లేదా విడిగా ఉన్నదని మాత్రమే అర్థం, రక్షించబడిన లేదా సురక్షితం అని కాదు. + +### అభివృద్ధి నెట్‌వర్క్‌లు {#development-networks} + +ఒక ఇతీరియము అప్లికేషన్‌ను అభివృద్ధి చేయడానికి, దానిని డిప్లాయ్ చేసే ముందు అది ఎలా పనిచేస్తుందో చూడటానికి మీరు దానిని ప్రైవేట్ నెట్‌వర్క్‌లో నడపాలనుకుంటారు. వెబ్ అభివృద్ధి కోసం మీరు మీ కంప్యూటర్‌లో స్థానిక సర్వర్‌ను ఎలా సృష్టిస్తారో అదే విధంగా, మీ డాప్‌ను పరీక్షించడానికి మీరు స్థానిక బ్లాక్‌చెయిన్ ఉదాహరణను సృష్టించవచ్చు. ఇది పబ్లిక్ టెస్టునెట్ కంటే చాలా వేగవంతమైన పునరావృతానికి అనుమతిస్తుంది. + +దీనికి సహాయం చేయడానికి అంకితమైన ప్రాజెక్ట్‌లు మరియు ఉపకరణాలు ఉన్నాయి. [అభివృద్ధి నెట్‌వర్క్‌ల](/developers/docs/development-networks/) గురించి మరింత తెలుసుకోండి. + +### కన్సార్టియం నెట్‌వర్క్‌లు {#consortium-networks} + +ఏకాభిప్రాయ ప్రక్రియ విశ్వసనీయమైన నోడ్‌ల యొక్క ముందే నిర్వచించబడిన సెట్ ద్వారా నియంత్రించబడుతుంది. ఉదాహరణకు, తెలిసిన విద్యా సంస్థల యొక్క ప్రైవేట్ నెట్‌వర్క్, ప్రతి ఒక్కటి ఒకే నోడ్‌ను పాలిస్తుంది, మరియు నెట్‌వర్క్‌లోని సంతకందారుల థ్రెషోల్డ్ ద్వారా బ్లాక్‌లు ధృవీకరించబడతాయి. + +పబ్లిక్ ఇతీరియము నెట్‌వర్క్ పబ్లిక్ ఇంటర్నెట్ లాంటిది అయితే, కన్సార్టియం నెట్‌వర్క్ ప్రైవేట్ ఇంట్రానెట్ లాంటిది. + +## ఇతీరియము టెస్టునెట్‌లకు మెట్రో స్టేషన్ల పేరు ఎందుకు పెట్టారు? {#why-naming} + +చాలా ఇతీరియము టెస్టునెట్‌లకు వాస్తవ ప్రపంచంలోని మెట్రో లేదా రైలు స్టేషన్ల పేరు పెట్టారు. ఈ నామకరణ సంప్రదాయం ముందుగానే ప్రారంభమైంది మరియు సహాయకులు నివసించిన లేదా పనిచేసిన ప్రపంచ నగరాలను ప్రతిబింబిస్తుంది. ఇది సింబాలిక్, గుర్తుండిపోయేది, మరియు ఆచరణాత్మకమైనది. టెస్టునెట్‌లు ఇతీరియము మెయిన్‌నెట్ నుండి విడిగా ఉన్నట్లే, మెట్రో లైన్లు ఉపరితల ట్రాఫిక్ నుండి వేరుగా నడుస్తాయి. + +### సాధారణంగా ఉపయోగించే మరియు లెగసీ టెస్టునెట్‌లు {#common-and-legacy-testnets} + +- **సెపోలియా** - గ్రీస్‌లోని ఏథెన్స్‌లో మెట్రో-అనుసంధానించబడిన పరిసర ప్రాంతం. ప్రస్తుతం స్మార్ట్ కాంట్రాక్ట్ మరియు డాప్ పరీక్ష కోసం ఉపయోగించబడుతుంది. +- **హూడీ** - భారతదేశంలోని బెంగళూరులోని హూడీ మెట్రో స్టేషన్ పేరు పెట్టారు. వ్యాలిడేటర్ మరియు ప్రోటోకాల్ అప్‌గ్రేడ్ పరీక్ష కోసం ఉపయోగించబడుతుంది. +- **గోయర్లి** _(నిలిపివేయబడింది)_ - జర్మనీలోని బెర్లిన్‌లోని గోర్లిట్జర్ బాన్‌హాఫ్ పేరు పెట్టారు. +- **రింక్‌బై** _(నిలిపివేయబడింది)_ - మెట్రో స్టేషన్ ఉన్న స్టాక్‌హోమ్ శివారు ప్రాంతం పేరు పెట్టారు. +- **రాప్‌స్టెన్** _(నిలిపివేయబడింది)_ - స్టాక్‌హోమ్‌లోని ఒక ప్రాంతం మరియు పూర్వ ఫెర్రీ/మెట్రో టెర్మినల్‌ను సూచిస్తుంది. +- **కోవన్** _(నిలిపివేయబడింది)_ - సింగపూర్ MRT స్టేషన్ పేరు పెట్టారు. +- **మోర్డెన్** _(నిలిపివేయబడింది)_ - లండన్ అండర్‌గ్రౌండ్ స్టేషన్ పేరు పెట్టారు. ఇతీరియము యొక్క మొదటి పబ్లిక్ టెస్టునెట్. + +### ఇతర ప్రత్యేకమైన టెస్టునెట్‌లు {#other-testnets} + +కొన్ని టెస్టునెట్‌లు స్వల్పకాలిక లేదా అప్‌గ్రేడ్-నిర్దిష్ట పరీక్ష కోసం సృష్టించబడ్డాయి మరియు తప్పనిసరిగా మెట్రో-నేపథ్యం కాదు: + +- **హోలెస్కీ** _(నిలిపివేయబడింది)_ - ప్రేగ్‌లోని హోలెసోవిస్ స్టేషన్ పేరు పెట్టారు. వ్యాలిడేటర్ పరీక్ష కోసం ఉపయోగించబడింది; 2025లో నిలిపివేయబడింది. +- **కిల్న్**, **జెజియాంగ్**, **షాన్‌డాంగ్**, **ప్రాటర్**, **పైర్మాంట్**, **ఒలింపిక్** _(అన్నీ నిలిపివేయబడినవి)_ మరియు **ఎఫెమెరీ** - ది మెర్జ్, షాంఘై, లేదా వ్యాలిడేటర్ ప్రయోగాల వంటి అప్‌గ్రేడ్ సిమ్యులేషన్‌ల కోసం ఉద్దేశపూర్వకంగా నిర్మించబడ్డాయి. కొన్ని పేర్లు మెట్రో-ఆధారితం కాకుండా ప్రాంతీయ లేదా నేపథ్యంగా ఉంటాయి. + +మెట్రో స్టేషన్ పేర్లను ఉపయోగించడం వల్ల డెవలపర్లు సంఖ్యా చైన్ IDలపై ఆధారపడకుండా టెస్టునెట్‌లను త్వరగా గుర్తించడానికి మరియు గుర్తుంచుకోవడానికి సహాయపడుతుంది. ఇది ఇతీరియము యొక్క సంస్కృతిని కూడా ప్రతిబింబిస్తుంది: ఆచరణాత్మక, ప్రపంచ, మరియు మానవ-కేంద్రీకృత. + +## సంబంధిత ఉపకరణాలు {#related-tools} + +- [చైన్‌లిస్ట్](https://chainlist.org/) _వాలెట్‌లు మరియు ప్రొవైడర్‌లను తగిన చైన్ ID మరియు నెట్‌వర్క్ IDకి కనెక్ట్ చేయడానికి EVM నెట్‌వర్క్‌ల జాబితా_ +- [EVM-ఆధారిత చైన్‌లు](https://github.com/ethereum-lists/chains) _చైన్‌లిస్ట్‌ను శక్తివంతం చేసే చైన్ మెటాడేటా యొక్క GitHub రెపో_ + +## మరింత సమాచారం {#further-reading} + +- [ప్రతిపాదన: ఊహించదగిన ఇతీరియము టెస్టునెట్ జీవనచక్రం](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17) +- [ఇతీరియము టెస్టునెట్‌ల పరిణామం](https://etherworld.co/2022/08/19/the-evolution-of-ethereum-testnet/) diff --git a/public/content/translations/te/developers/docs/nodes-and-clients/archive-nodes/index.md b/public/content/translations/te/developers/docs/nodes-and-clients/archive-nodes/index.md new file mode 100644 index 00000000000..3f744c73af3 --- /dev/null +++ b/public/content/translations/te/developers/docs/nodes-and-clients/archive-nodes/index.md @@ -0,0 +1,81 @@ +--- +title: "Ethereum ఆర్కైవ్ నోడ్" +description: "ఆర్కైవ్ నోడ్స్ యొక్క అవలోకనం" +lang: te +sidebarDepth: 2 +--- + +ఆర్కైవ్ నోడ్ అనేది అన్ని చారిత్రక రాష్ట్రాల ఆర్కైవ్‌ను రూపొందించడానికి కాన్ఫిగర్ చేయబడిన Ethereum క్లయింట్ యొక్క ఉదాహరణ. ఇది నిర్దిష్ట వినియోగ సందర్భాలలో ఉపయోగకరమైన సాధనం కానీ పూర్తి నోడ్ కంటే అమలు చేయడానికి మరింత గమ్మత్తైనది కావచ్చు. + +## అవసరాలు {#prerequisites} + +మీరు ఒక [ఇతీరియము నోడ్](/developers/docs/nodes-and-clients/) భావనను, [దాని ఆర్కిటెక్చర్](/developers/docs/nodes-and-clients/node-architecture/), [సింక్ వ్యూహాలను](/developers/docs/nodes-and-clients/#sync-modes), [నడిపే](/developers/docs/nodes-and-clients/run-a-node/) మరియు [వాటిని ఉపయోగించే](/developers/docs/apis/json-rpc/) పద్ధతులను అర్థం చేసుకోవాలి. + +## ఆర్కైవ్ నోడ్ అంటే ఏమిటి + +ఆర్కైవ్ నోడ్ యొక్క ప్రాముఖ్యతను గ్రహించడానికి, "స్టేట్" భావనను స్పష్టం చేద్దాం ఇతీరియమును _లావాదేవీ-ఆధారిత స్థితి యంత్రం_గా సూచించవచ్చు. ఇది తమ స్థితిని మార్చే లావాదేవీలను అమలు చేసే ఖాతాలు మరియు అప్లికేషన్‌లను కలిగి ఉంటుంది. ప్రతి ఖాతా మరియు ఒప్పందం గురించిన సమాచారంతో కూడిన గ్లోబల్ డేటా స్టేట్ అని పిలువబడే ట్రై డేటాబేస్‌లో నిల్వ చేయబడుతుంది. ఇది ఎగ్జిక్యూషన్ లేయర్ (EL) క్లయింట్ ద్వారా నిర్వహించబడుతుంది మరియు వీటిని కలిగి ఉంటుంది: + +- ఖాతా నిల్వలు మరియు నాన్‌లు +- కాంట్రాక్ట్ కోడ్ మరియు నిల్వ +- ఏకాభిప్రాయం-సంబంధిత డేటా, ఉదా., స్టేకింగ్ డిపాజిట్ కాంట్రాక్ట్ + +నెట్‌వర్క్‌తో పరస్పర చర్య చేయడానికి, కొత్త బ్లాక్‌లను ధృవీకరించడానికి మరియు ఉత్పత్తి చేయడానికి, Ethereum క్లయింట్లు అత్యంత ఇటీవలి మార్పులను (గొలుసు యొక్క కొన) మరియు ప్రస్తుత స్థితిని కొనసాగించాలి. పూర్తి నోడ్‌గా కాన్ఫిగర్ చేయబడిన ఒక ఎగ్జిక్యూషన్ లేయర్ క్లయింట్ నెట్‌వర్క్ యొక్క తాజా స్థితిని ధృవీకరిస్తుంది మరియు అనుసరిస్తుంది, కానీ గత కొన్ని స్థితులను మాత్రమే కాష్ చేస్తుంది, ఉదా., గత 128 బ్లాక్‌లతో అనుబంధించబడిన స్థితి, కాబట్టి ఇది చైన్ రీఆర్గ్‌లను నిర్వహించగలదు మరియు ఇటీవలి డేటాకు వేగవంతమైన యాక్సెస్‌ను అందించగలదు. క్లయింట్‌లందరూ ఇన్‌కమింగ్ లావాదేవీలను ధృవీకరించి నెట్‌వర్క్‌ని ఉపయోగించాల్సిన అవసరం ఇటీవలి స్థితి. + +మీరు ఇచ్చిన బ్లాక్‌లో స్థితిని క్షణిక నెట్‌వర్క్ స్నాప్‌షాట్‌గా మరియు చరిత్ర రీప్లేగా ఆర్కైవ్‌ను ఊహించవచ్చు. + +చారిత్రాత్మక స్థితులను సురక్షితంగా కత్తిరించవచ్చు ఎందుకంటే నెట్‌వర్క్ ఆపరేట్ చేయడానికి అవి అవసరం లేదు మరియు క్లయింట్‌కు కాలం చెల్లిన డేటా మొత్తాన్ని ఉంచడం నిరుపయోగంగా అనవసరం. కొన్ని ఇటీవలి బ్లాక్‌లకు (ఉదా., హెడ్‌కు 128 బ్లాక్‌ల ముందు) ముందు ఉన్న స్థితులు సమర్థవంతంగా విస్మరించబడతాయి. పూర్తి నోడ్‌లు హిస్టారికల్ బ్లాక్‌చెయిన్ డేటా (బ్లాక్‌లు మరియు లావాదేవీలు) మరియు అప్పుడప్పుడు హిస్టారికల్ స్నాప్‌షాట్‌లను మాత్రమే వారు అభ్యర్థనపై పాత రాష్ట్రాలను పునరుత్పత్తి చేయడానికి ఉపయోగించవచ్చు. EVMలో గత లావాదేవీలను మళ్లీ అమలు చేయడం ద్వారా వారు దీన్ని చేస్తారు, కావలసిన రాష్ట్రం సమీప స్నాప్‌షాట్‌కు దూరంగా ఉన్నప్పుడు గణనపరంగా డిమాండ్ చేయవచ్చు. + +అయినప్పటికీ, పూర్తి నోడ్‌లో చారిత్రక స్థితిని యాక్సెస్ చేయడం చాలా గణనను వినియోగిస్తుంది. క్లయింట్ అన్ని గత లావాదేవీలను అమలు చేయాల్సి ఉంటుంది మరియు జెనెసిస్ నుండి ఒక చారిత్రక స్థితిని గణించాలి. ఆర్కైవ్ నోడ్‌లు ఇటీవలి రాష్ట్రాలను మాత్రమే కాకుండా ప్రతి బ్లాక్ తర్వాత సృష్టించబడిన ప్రతి చారిత్రక రాష్ట్రాన్ని నిల్వ చేయడం ద్వారా దీనిని పరిష్కరిస్తాయి. ఇది ప్రాథమికంగా పెద్ద డిస్క్ స్పేస్ అవసరంతో ట్రేడ్-ఆఫ్ చేస్తుంది. + +అన్ని చారిత్రక డేటాను ఉంచడానికి మరియు అందించడానికి నెట్‌వర్క్ ఆర్కైవ్ నోడ్‌లపై ఆధారపడదని గమనించడం ముఖ్యం. పైన చెప్పినట్లుగా, అన్ని చారిత్రక మధ్యంతర స్థితులను పూర్తి నోడ్‌లో పొందవచ్చు. లావాదేవీలు ఏదైనా పూర్తి నోడ్ ద్వారా నిల్వ చేయబడతాయి (ప్రస్తుతం 400G కంటే తక్కువ) మరియు మొత్తం ఆర్కైవ్‌ను రూపొందించడానికి మళ్లీ ప్లే చేయవచ్చు. + +### కేసులను ఉపయోగించండి + +లావాదేవీలను పంపడం, ఒప్పందాలను అమలు చేయడం, ఏకాభిప్రాయాన్ని ధృవీకరించడం వంటి Ethereum యొక్క సాధారణ వినియోగానికి చారిత్రక రాష్ట్రాలకు ప్రాప్యత అవసరం లేదు. నెట్‌వర్క్‌తో ప్రామాణిక పరస్పర చర్య కోసం వినియోగదారులకు ఆర్కైవ్ నోడ్ అవసరం లేదు. + +రాష్ట్ర ఆర్కైవ్ యొక్క ప్రధాన ప్రయోజనం చారిత్రక రాష్ట్రాల గురించిన ప్రశ్నలకు శీఘ్ర ప్రాప్యత. ఉదాహరణకు, ఆర్కైవ్ నోడ్ తక్షణమే ఇలాంటి ఫలితాలను అందిస్తుంది: + +- _ఖాతా 0x1337... యొక్క ETH బ్యాలెన్స్... బ్లాక్ 15537393 వద్ద ఎంత?_ +- _బ్లాక్ 1920000 వద్ద కాంట్రాక్ట్ 0xలో టోకెన్ 0x బ్యాలెన్స్ ఎంత?_ + +పైన వివరించినట్లుగా, CPUని ఉపయోగించే EVM ఎగ్జిక్యూషన్ ద్వారా పూర్తి నోడ్ ఈ డేటాను రూపొందించాల్సి ఉంటుంది మరియు సమయం పడుతుంది. ఆర్కైవ్ నోడ్‌లు వాటిని డిస్క్‌లో యాక్సెస్ చేస్తాయి మరియు ప్రతిస్పందనలను వెంటనే అందిస్తాయి. ఇది ఇన్‌ఫ్రాస్ట్రక్చర్‌లోని కొన్ని భాగాలకు ఉపయోగకరమైన ఫీచర్, ఉదాహరణకు: + +- బ్లాక్ ఎక్స్‌ప్లోరర్స్ వంటి సర్వీస్ ప్రొవైడర్‌లు +- పరిశోధకులు +- భద్రతా విశ్లేషకులు +- డాప్ డెవలపర్లు +- ఆడిటింగ్ మరియు సమ్మతి + +చారిత్రక డేటాకు కూడా యాక్సెస్‌ను అనుమతించే వివిధ ఉచిత [సేవలు](/developers/docs/nodes-and-clients/nodes-as-a-service/) ఉన్నాయి. ఆర్కైవ్ నోడ్‌ను అమలు చేయడానికి ఎక్కువ డిమాండ్ ఉన్నందున, ఈ యాక్సెస్ ఎక్కువగా పరిమితం చేయబడింది మరియు అప్పుడప్పుడు యాక్సెస్ కోసం మాత్రమే పని చేస్తుంది. మీ ప్రాజెక్ట్‌కు చారిత్రక డేటాకు స్థిరమైన ప్రాప్యత అవసరమైతే, మీరు దానిని మీరే అమలు చేయడం గురించి ఆలోచించాలి. + +## Implementations and usage + +ఈ సందర్భంలో ఆర్కైవ్ నోడ్ అంటే వినియోగదారు ఎదుర్కొంటున్న ఎగ్జిక్యూషన్ లేయర్ క్లయింట్‌లు స్టేట్ డేటాబేస్‌ను హ్యాండిల్ చేస్తున్నప్పుడు మరియు JSON-RPC ఎండ్‌పాయింట్‌లను అందజేసే డేటా. క్లయింట్‌ను బట్టి కాన్ఫిగరేషన్ ఎంపికలు, సమకాలీకరణ సమయం మరియు డేటాబేస్ పరిమాణం మారవచ్చు. వివరాల కోసం, దయచేసి మీ క్లయింట్ అందించిన డాక్యుమెంటేషన్‌ను చూడండి. + +మీ స్వంత ఆర్కైవ్ నోడ్‌ను ప్రారంభించే ముందు, క్లయింట్‌ల మధ్య తేడాలు మరియు ముఖ్యంగా వివిధ [హార్డ్‌వేర్ అవసరాల](/developers/docs/nodes-and-clients/run-a-node/#requirements) గురించి తెలుసుకోండి. చాలా మంది క్లయింట్లు ఈ ఫీచర్ కోసం ఆప్టిమైజ్ చేయబడలేదు మరియు వారి ఆర్కైవ్‌లకు 12TB కంటే ఎక్కువ స్థలం అవసరం. దీనికి విరుద్ధంగా, Erigon వంటి ఇంప్లిమెంటేషన్‌లు అదే డేటాను 3TBలో నిల్వ చేయగలవు, ఇది వాటిని ఆర్కైవ్ నోడ్‌ని అమలు చేయడానికి అత్యంత ప్రభావవంతమైన మార్గంగా చేస్తుంది. + +## సిఫార్సు చేసిన పద్ధతులు + +సాధారణ [నోడ్‌ను నడపడానికి సిఫార్సులు](/developers/docs/nodes-and-clients/run-a-node/) కాకుండా, ఒక ఆర్కైవ్ నోడ్ హార్డ్‌వేర్ మరియు నిర్వహణపై ఎక్కువ డిమాండ్ కలిగి ఉండవచ్చు. ఎరిగాన్ యొక్క [కీలక ఫీచర్లను](https://github.com/ledgerwatch/erigon#key-features) పరిగణనలోకి తీసుకుంటే, అత్యంత ఆచరణాత్మక విధానం [ఎరిగాన్](/developers/docs/nodes-and-clients/#erigon) క్లయింట్ ఇంప్లిమెంటేషన్‌ను ఉపయోగించడం. + +### హార్డ్‌వేర్ + +క్లయింట్ యొక్క డాక్యుమెంటేషన్‌లో ఇచ్చిన మోడ్ కోసం హార్డ్‌వేర్ అవసరాలను ఎల్లప్పుడూ ధృవీకరించండి. +ఆర్కైవ్ నోడ్‌లకు అతిపెద్ద అవసరం డిస్క్ స్థలం. క్లయింట్‌పై ఆధారపడి, ఇది 3TB నుండి 12TB వరకు మారుతుంది. పెద్ద మొత్తంలో డేటా కోసం HDDని మెరుగైన పరిష్కారంగా పరిగణించినప్పటికీ, దానిని సమకాలీకరించడం మరియు చైన్ యొక్క హెడ్‌ను నిరంతరం నవీకరించడం కోసం SSD డ్రైవ్‌లు అవసరం. [SATA](https://www.cleverfiles.com/help/sata-hard-drive.html) డ్రైవ్‌లు సరిపోతాయి, కానీ అది విశ్వసనీయమైన నాణ్యతతో ఉండాలి, కనీసం [TLC](https://blog.synology.com/tlc-vs-qlc-ssds-what-are-the-differences) అయినా. డిస్క్‌లను డెస్క్‌టాప్ కంప్యూటర్‌లో లేదా తగినంత స్లాట్‌లు ఉన్న సర్వర్‌లో అమర్చవచ్చు. ఇటువంటి అంకితమైన పరికరాలు అధిక సమయ నోడ్‌ని అమలు చేయడానికి అనువైనవి. దీన్ని ల్యాప్‌టాప్‌లో అమలు చేయడం పూర్తిగా సాధ్యమే కానీ పోర్టబిలిటీకి అదనపు ఖర్చు వస్తుంది. + +డేటా మొత్తం ఒకే వాల్యూమ్‌లో సరిపోవాలి, అందువల్ల డిస్క్‌లను కలపాలి, ఉదా., [RAID0](https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_0) లేదా LVMతో. [ZFS](https://en.wikipedia.org/wiki/ZFS) "కాపీ-ఆన్-రైట్"కి మద్దతిస్తున్నందున దానిని ఉపయోగించడాన్ని కూడా పరిగణించవచ్చు, ఇది ఎటువంటి తక్కువ స్థాయి లోపాలు లేకుండా డేటా డిస్క్‌కు సరిగ్గా వ్రాయబడిందని నిర్ధారిస్తుంది. + +ప్రమాదవశాత్తు డేటాబేస్ కరప్షన్‌ను నివారించడంలో మరింత స్థిరత్వం మరియు భద్రత కోసం, ముఖ్యంగా ఒక ప్రొఫెషనల్ సెటప్‌లో, మీ సిస్టమ్ మద్దతిస్తే [ECC మెమరీని](https://en.wikipedia.org/wiki/ECC_memory) ఉపయోగించడాన్ని పరిగణించండి. RAM యొక్క పరిమాణం సాధారణంగా పూర్తి నోడ్‌కు సమానంగా ఉండాలని సూచించబడింది, అయితే ఎక్కువ RAM సమకాలీకరణను వేగవంతం చేయడంలో సహాయపడుతుంది. + +ప్రారంభ సమకాలీకరణ సమయంలో, ఆర్కైవ్ మోడ్‌లోని క్లయింట్‌లు పుట్టుక నుండి ప్రతి లావాదేవీని అమలు చేస్తారు. అమలు వేగం ఎక్కువగా CPU ద్వారా పరిమితం చేయబడింది, కాబట్టి వేగవంతమైన CPU ప్రారంభ సమకాలీకరణ సమయానికి సహాయపడుతుంది. సగటు వినియోగదారు కంప్యూటర్‌లో, ప్రారంభ సమకాలీకరణకు ఒక నెల వరకు పట్టవచ్చు. + +## మరింత సమాచారం {#further-reading} + +- [Ethereum Full Node vs Archive Node](https://www.quicknode.com/guides/infrastructure/ethereum-full-node-vs-archive-node) - _క్విక్‌నోడ్, సెప్టెంబర్ 2022_ +- [Building Your Own Ethereum Archive Node](https://tjayrush.medium.com/building-your-own-ethereum-archive-node-72c014affc09) - _థామస్ జే రష్, ఆగస్టు 2021_ +- [How to set up Erigon, Erigon’s RPC and TrueBlocks (scrape and API) as services](https://magnushansson.xyz/blog_posts/crypto_defi/2022-01-10-Erigon-Trueblocks) _– మాగ్నస్ హాన్సన్, సెప్టెంబర్ 2022న నవీకరించబడింది_ + +## సంబంధిత అంశాలు {#related-topics} + +- [నోడ్‌లు మరియు క్లయింట్లు](/developers/docs/nodes-and-clients/) +- [ఒక నోడ్‌ను నడపడం](/developers/docs/nodes-and-clients/run-a-node/) diff --git a/public/content/translations/te/developers/docs/nodes-and-clients/bootnodes/index.md b/public/content/translations/te/developers/docs/nodes-and-clients/bootnodes/index.md new file mode 100644 index 00000000000..134d69a6d96 --- /dev/null +++ b/public/content/translations/te/developers/docs/nodes-and-clients/bootnodes/index.md @@ -0,0 +1,31 @@ +--- +title: "Ethereum బూట్‌నోడ్‌లకు పరిచయం" +description: "మీరు బూట్‌నోడ్‌లను అర్థం చేసుకోవలసిన ప్రాథమిక సమాచారం" +lang: te +--- + +కొత్త నోడ్ Ethereum నెట్‌వర్క్‌లో చేరినప్పుడు, కొత్త సహచరులను కనుగొనడం కోసం అది ఇప్పటికే నెట్‌వర్క్‌లో ఉన్న నోడ్‌లకు కనెక్ట్ చేయాలి. Ethereum నెట్‌వర్క్‌లోకి ఈ ఎంట్రీ పాయింట్‌లను బూట్‌నోడ్‌లు అంటారు. క్లయింట్లు సాధారణంగా హార్డ్‌కోడ్ చేసిన బూట్‌నోడ్‌ల జాబితాను కలిగి ఉంటారు. ఈ బూట్‌నోడ్‌లు సాధారణంగా Ethereum ఫౌండేషన్ యొక్క devops టీమ్ లేదా క్లయింట్ టీమ్‌లచే నిర్వహించబడతాయి. బూట్‌నోడ్‌లు స్టాటిక్ నోడ్‌ల వలె ఉండవని గమనించండి. స్టాటిక్ నోడ్‌లు పదే పదే పిలువబడతాయి, అయితే బూట్‌నోడ్‌లకు కనెక్ట్ చేయడానికి తగినంత పీర్‌లు లేకుంటే మరియు నోడ్‌కి కొన్ని కొత్త కనెక్షన్‌లను బూట్‌స్ట్రాప్ చేయాల్సి వస్తే మాత్రమే పిలుస్తారు. + +## బూట్‌నోడ్‌కు కనెక్ట్ చేయండి {#connect-to-a-bootnode} + +చాలా క్లయింట్‌లు అంతర్నిర్మితంగా బూట్‌నోడ్‌ల జాబితాను కలిగి ఉంటాయి, కానీ మీరు మీ స్వంత బూట్‌నోడ్‌ను కూడా అమలు చేయాలనుకోవచ్చు లేదా క్లయింట్ యొక్క హార్డ్‌కోడ్ చేయబడిన జాబితాలో భాగం కాని దానిని ఉపయోగించవచ్చు. ఈ సందర్భంలో, మీరు మీ క్లయింట్‌ను ప్రారంభించేటప్పుడు వాటిని ఈ క్రింది విధంగా పేర్కొనవచ్చు (ఉదాహరణ గెత్ కోసం, దయచేసి మీ క్లయింట్ డాక్యుమెంటేషన్‌ని తనిఖీ చేయండి): + +``` +geth --bootnodes "enode://@:" +``` + +## బూట్‌నోడ్‌ను రన్ చేయండి {#run-a-bootnode} + +బూట్‌నోడ్‌లు అనేవి NAT ([Network Address Translation](https://www.geeksforgeeks.org/network-address-translation-nat/)) వెనుక లేని పూర్తి నోడ్‌లు. ప్రతి పూర్తి నోడ్ పబ్లిక్‌గా అందుబాటులో ఉన్నంత వరకు బూట్‌నోడ్‌గా పని చేస్తుంది. + +మీరు నోడ్‌ను ప్రారంభించినప్పుడు, అది మీ [enode](/developers/docs/networking-layer/network-addresses/#enode)ను లాగ్ చేయాలి, ఇది ఇతరులు మీ నోడ్‌కు కనెక్ట్ చేయడానికి ఉపయోగించే ఒక పబ్లిక్ ఐడెంటిఫైయర్. + +ఎనోడ్ సాధారణంగా ప్రతి పునఃప్రారంభంలో పునరుత్పత్తి చేయబడుతుంది, కాబట్టి మీ బూట్‌నోడ్ కోసం నిరంతర ఎనోడ్‌ను ఎలా రూపొందించాలో మీ క్లయింట్ యొక్క డాక్యుమెంటేషన్‌ను చూసేలా చూసుకోండి. + +మంచి బూట్‌నోడ్‌గా ఉండాలంటే దానికి కనెక్ట్ చేయగల పీర్‌ల గరిష్ట సంఖ్యను పెంచుకోవడం మంచిది. చాలా మంది పీర్‌లతో బూట్‌నోడ్‌ని రన్ చేయడం వల్ల బ్యాండ్‌విడ్త్ అవసరం గణనీయంగా పెరుగుతుంది. + +## అందుబాటులో ఉన్న బూట్‌నోడ్‌లు {#available-bootnodes} + +go-ethereumలో అంతర్నిర్మిత బూట్‌నోడ్‌ల జాబితాను [ఇక్కడ](https://github.com/ethereum/go-ethereum/blob/master/params/bootnodes.go#L23) కనుగొనవచ్చు. ఈ బూట్‌నోడ్‌లను Ethereum Foundation మరియు go-ethereum బృందం నిర్వహిస్తుంది. + +వాలంటీర్లచే నిర్వహించబడే బూట్‌నోడ్‌ల ఇతర జాబితాలు అందుబాటులో ఉన్నాయి. దయచేసి కనీసం ఒక అధికారిక బూట్‌నోడ్‌ను ఎల్లప్పుడూ చేర్చారని నిర్ధారించుకోండి, లేకపోతే మీరు ఎక్లిప్స్ దాడికి గురికావచ్చు. diff --git a/public/content/translations/te/developers/docs/nodes-and-clients/client-diversity/index.md b/public/content/translations/te/developers/docs/nodes-and-clients/client-diversity/index.md new file mode 100644 index 00000000000..9fff883c645 --- /dev/null +++ b/public/content/translations/te/developers/docs/nodes-and-clients/client-diversity/index.md @@ -0,0 +1,132 @@ +--- +title: "క్లయింట్ వైవిధ్యం" +description: "ఇథీరియం క్లయింట్ వైవిధ్యం యొక్క ప్రాముఖ్యతపై ఉన్నత స్థాయి వివరణ." +lang: te +sidebarDepth: 2 +--- + +ఇథీరియం నోడ్ ప్రవర్తన అది నడిపే క్లయింట్ సాఫ్ట్‌వేర్ ద్వారా నియంత్రించబడుతుంది. అనేక ప్రొడక్షన్-స్థాయి ఇథీరియం క్లయింట్లు ఉన్నాయి, ప్రతి ఒక్కటి వేర్వేరు బృందాలచే వేర్వేరు భాషలలో అభివృద్ధి చేయబడి, నిర్వహించబడుతుంది. క్లయింట్లు ఒకదానితో ఒకటి సజావుగా కమ్యూనికేట్ అయ్యేలా మరియు ఒకే కార్యాచరణను కలిగి ఉండేలా మరియు సమానమైన వినియోగదారు అనుభవాన్ని అందించేలా చూసే ఒక సాధారణ స్పెక్ ప్రకారం క్లయింట్లు నిర్మించబడ్డాయి. అయితే, ప్రస్తుతానికి ఈ నెట్‌వర్క్ పటిష్టతను దాని పూర్తి సామర్థ్యానికి గ్రహించడానికి నోడ్‌లలో క్లయింట్ల పంపిణీ సరిపడా సమానంగా లేదు. ఆదర్శంగా, వినియోగదారులు నెట్‌వర్క్‌కు వీలైనంత ఎక్కువ క్లయింట్ వైవిధ్యాన్ని తీసుకురావడానికి వివిధ క్లయింట్ల మధ్య సుమారుగా సమానంగా విభజించబడాలి. + +## అవసరాలు {#prerequisites} + +మీకు ఇప్పటికే నోడ్లు మరియు క్లయింట్లు అంటే ఏమిటో తెలియకపోతే, [నోడ్లు మరియు క్లయింట్లు](/developers/docs/nodes-and-clients/)ని చూడండి. [ఎగ్జిక్యూషన్](/glossary/#execution-layer) మరియు [ఏకాభిప్రాయం](/glossary/#consensus-layer) లేయర్‌లు గ్లోసరీలో నిర్వచించబడ్డాయి. + +## అనేక క్లయింట్లు ఎందుకు ఉన్నాయి? {#why-multiple-clients} + +అనేక, స్వతంత్రంగా అభివృద్ధి చేయబడిన మరియు నిర్వహించబడిన క్లయింట్లు ఉన్నాయి ఎందుకంటే క్లయింట్ వైవిధ్యం నెట్‌వర్క్‌ను దాడులు మరియు బగ్‌లకు మరింత స్థితిస్థాపకంగా చేస్తుంది. అనేక క్లయింట్లు ఇథీరియంకు ప్రత్యేకమైన బలం - ఇతర బ్లాక్‌చైన్‌లు ఒకే క్లయింట్ యొక్క దోషరహితత్వంపై ఆధారపడతాయి. అయితే, కేవలం అనేక క్లయింట్లు అందుబాటులో ఉంటే సరిపోదు, వాటిని కమ్యూనిటీ స్వీకరించాలి మరియు మొత్తం యాక్టివ్ నోడ్‌లు వాటి మధ్య సాపేక్షంగా సమానంగా పంపిణీ చేయబడాలి. + +## క్లయింట్ వైవిధ్యం ఎందుకు ముఖ్యం? {#client-diversity-importance} + +వికేంద్రీకృత నెట్‌వర్క్ ఆరోగ్యానికి అనేక స్వతంత్రంగా అభివృద్ధి చేయబడిన మరియు నిర్వహించబడిన క్లయింట్లను కలిగి ఉండటం చాలా ముఖ్యం. దాని వెనుక ఉన్న కారణాలను అన్వేషిద్దాం. + +### బగ్‌లు {#bugs} + +ఇథీరియం నోడ్‌లలో మైనారిటీకి ప్రాతినిధ్యం వహిస్తున్నప్పుడు, ఒక వ్యక్తిగత క్లయింట్‌లోని బగ్ నెట్‌వర్క్‌కు తక్కువ ప్రమాదాన్ని కలిగిస్తుంది. అనేక క్లయింట్లలో నోడ్‌ల సుమారు సమానమైన పంపిణీతో, చాలా క్లయింట్లు ఒకే సమస్యతో బాధపడే అవకాశం తక్కువ, మరియు ఫలితంగా, నెట్‌వర్క్ మరింత పటిష్టంగా ఉంటుంది. + +### దాడులకు స్థితిస్థాపకత {#resilience} + +క్లయింట్ వైవిధ్యం దాడులకు కూడా స్థితిస్థాపకతను అందిస్తుంది. ఉదాహరణకు, ఒక నిర్దిష్ట క్లయింట్‌ను చైన్‌లోని ఒక నిర్దిష్ట బ్రాంచ్‌లోకి [మోసగించే](https://twitter.com/vdWijden/status/1437712249926393858) దాడి విజయవంతం అయ్యే అవకాశం లేదు, ఎందుకంటే ఇతర క్లయింట్లు అదే విధంగా దోపిడీకి గురయ్యే అవకాశం లేదు మరియు కానానికల్ చైన్ పాడవకుండా ఉంటుంది. తక్కువ క్లయింట్ వైవిధ్యం ఆధిపత్య క్లయింట్‌పై హ్యాక్‌తో సంబంధం ఉన్న ప్రమాదాన్ని పెంచుతుంది. క్లయింట్ వైవిధ్యం నెట్‌వర్క్‌పై హానికరమైన దాడులకు వ్యతిరేకంగా ఒక ముఖ్యమైన రక్షణగా ఇప్పటికే నిరూపించబడింది, ఉదాహరణకు 2016లో షాంఘై డినైయల్-ఆఫ్-సర్వీస్ దాడి సాధ్యమైంది ఎందుకంటే దాడి చేసేవారు ఆధిపత్య క్లయింట్ (Geth)ను ప్రతి బ్లాక్‌కు పదివేల సార్లు నెమ్మదిగా డిస్క్ i/o ఆపరేషన్ అమలు చేసేలా మోసగించగలిగారు. ప్రత్యామ్నాయ క్లయింట్లు కూడా ఆన్‌లైన్‌లో ఉండటం మరియు అవి ఈ దుర్బలత్వాన్ని పంచుకోకపోవడం వల్ల, ఇథీరియం దాడిని నిరోధించగలిగింది మరియు Gethలోని దుర్బలత్వాన్ని సరిచేసే వరకు పనిచేస్తూనే ఉంది. + +### ప్రూఫ్-ఆఫ్-స్టేక్ ఫైనాలిటీ {#finality} + +ఇథీరియం నోడ్‌లలో 33% కంటే ఎక్కువ ఉన్న ఏకాభిప్రాయం క్లయింట్‌లోని బగ్, ఏకాభిప్రాయం లేయర్‌ను ఖరారు చేయకుండా నిరోధించగలదు, అంటే లావాదేవీలు ఏదో ఒక సమయంలో వెనక్కి తీసుకోబడవు లేదా మార్చబడవు అని వినియోగదారులు నమ్మలేరు. ఇది ఇథీరియం పైన నిర్మించిన అనేక యాప్‌లకు, ముఖ్యంగా DeFiకి చాలా సమస్యాత్మకంగా ఉంటుంది. + + ఇంకా దారుణంగా, మూడింట రెండొంతుల మెజారిటీ ఉన్న క్లయింట్‌లోని ఒక క్లిష్టమైన బగ్, చైన్‌ను తప్పుగా విడిపోయి ఖరారు చేయడానికి కారణం కావచ్చు, ఇది పెద్ద సంఖ్యలో వ్యాలిడేటర్‌లు చెల్లని చైన్‌లో చిక్కుకుపోవడానికి దారితీస్తుంది. వారు సరైన చైన్‌లో తిరిగి చేరాలనుకుంటే, ఈ వ్యాలిడేటర్‌లు స్లాషింగ్ లేదా నెమ్మదిగా మరియు ఖరీదైన స్వచ్ఛంద ఉపసంహరణ మరియు పునఃక్రియాశీలతను ఎదుర్కొంటారు. స్లాషింగ్ యొక్క పరిమాణం అపరాధ నోడ్‌ల సంఖ్యతో పెరుగుతుంది, మూడింట రెండొంతుల మెజారిటీ గరిష్టంగా స్లాష్ చేయబడుతుంది (32 ETH). + +ఇవి అసంభవమైన దృశ్యాలు అయినప్పటికీ, ఇథీరియం పర్యావరణ వ్యవస్థ క్రియాశీల నోడ్‌లలో క్లయింట్ల పంపిణీని సమం చేయడం ద్వారా వాటి ప్రమాదాన్ని తగ్గించగలదు. ఆదర్శంగా, ఏ ఏకాభిప్రాయం క్లయింట్ కూడా మొత్తం నోడ్‌లలో 33% వాటాను ఎప్పటికీ చేరుకోకూడదు. + +### భాగస్వామ్య బాధ్యత {#responsibility} + +మెజారిటీ క్లయింట్లను కలిగి ఉండటానికి మానవ వ్యయం కూడా ఉంది. ఇది ఒక చిన్న అభివృద్ధి బృందంపై అదనపు ఒత్తిడి మరియు బాధ్యతను పెడుతుంది. క్లయింట్ వైవిధ్యం ఎంత తక్కువగా ఉంటే, మెజారిటీ క్లయింట్‌ను నిర్వహించే డెవలపర్‌లపై బాధ్యత భారం అంత ఎక్కువగా ఉంటుంది. ఈ బాధ్యతను అనేక బృందాల మధ్య పంచుకోవడం ఇథీరియం యొక్క నోడ్‌ల నెట్‌వర్క్ ఆరోగ్యానికి మరియు దాని ప్రజల నెట్‌వర్క్ ఆరోగ్యానికి మంచిది. + +## ప్రస్తుత క్లయింట్ వైవిధ్యం {#current-client-diversity} + +### ఎగ్జిక్యూషన్ క్లయింట్లు {#execution-clients-breakdown} + + + +### ఏకాభిప్రాయం క్లయింట్లు {#consensus-clients-breakdown} + + + +ఈ రేఖాచిత్రం పాతది కావచ్చు — తాజా సమాచారం కోసం [ethernodes.org](https://ethernodes.org) మరియు [clientdiversity.org](https://clientdiversity.org) కి వెళ్ళండి. + +పై రెండు పై చార్ట్‌లు ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయం లేయర్‌ల కోసం ప్రస్తుత క్లయింట్ వైవిధ్యం యొక్క స్నాప్‌షాట్‌లను చూపుతాయి (అక్టోబర్ 2025లో వ్రాసే సమయంలో). సంవత్సరాలుగా క్లయింట్ వైవిధ్యం మెరుగుపడింది, మరియు ఎగ్జిక్యూషన్ లేయర్ [Geth](https://geth.ethereum.org/) ఆధిపత్యంలో తగ్గింపును చూసింది, [Nethermind](https://www.nethermind.io/nethermind-client) దగ్గరి రెండవ స్థానంలో, [Besu](https://besu.hyperledger.org/) మూడవ మరియు [Erigon](https://github.com/ledgerwatch/erigon) నాల్గవ స్థానంలో ఉన్నాయి, ఇతర క్లయింట్లు నెట్‌వర్క్‌లో 3% కన్నా తక్కువ వాటాను కలిగి ఉన్నాయి. ఏకాభిప్రాయం లేయర్‌లో అత్యంత సాధారణంగా ఉపయోగించే క్లయింట్—[Lighthouse](https://lighthouse.sigmaprime.io/)—రెండవ అత్యధికంగా ఉపయోగించేదానికి చాలా దగ్గరగా ఉంది. [Prysm](https://prysmaticlabs.com/#projects) మరియు [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) వరుసగా ~31% మరియు ~14% వాటాను కలిగి ఉన్నాయి, మరియు ఇతర క్లయింట్లు అరుదుగా ఉపయోగించబడతాయి. + +ఎగ్జిక్యూషన్ లేయర్ డేటా 26-అక్టోబర్-2025న [supermajority.info](https://supermajority.info/) నుండి పొందబడింది. ఏకాభిప్రాయం క్లయింట్ల కోసం డేటా [Michael Sproul](https://github.com/sigp/blockprint) నుండి పొందబడింది. ఏకాభిప్రాయం క్లయింట్ డేటాను పొందడం మరింత కష్టం ఎందుకంటే ఏకాభిప్రాయం లేయర్ క్లయింట్లు వాటిని గుర్తించడానికి ఉపయోగపడే స్పష్టమైన ఆనవాళ్లను ఎల్లప్పుడూ కలిగి ఉండవు. ఈ డేటా ఒక వర్గీకరణ అల్గోరిథం ఉపయోగించి ఉత్పత్తి చేయబడింది, ఇది కొన్నిసార్లు కొన్ని మైనారిటీ క్లయింట్లను గందరగోళానికి గురి చేస్తుంది (మరిన్ని వివరాల కోసం [ఇక్కడ](https://twitter.com/sproulM_/status/1440512518242197516) చూడండి). పై రేఖాచిత్రంలో, ఈ అస్పష్టమైన వర్గీకరణలు ఐదర్/ఆర్ లేబుల్‌తో పరిగణించబడతాయి (ఉదా. Nimbus/Teku). అయినప్పటికీ, నెట్‌వర్క్‌లో మెజారిటీ Prysmను నడుపుతోందని స్పష్టంగా ఉంది. కేవలం స్నాప్‌షాట్‌లుగా ఉన్నప్పటికీ, రేఖాచిత్రంలోని విలువలు ప్రస్తుత క్లయింట్ వైవిధ్యం స్థితి గురించి ఒక మంచి సాధారణ అవగాహనను అందిస్తాయి. + +ఏకాభిప్రాయం లేయర్ కోసం తాజా క్లయింట్ వైవిధ్యం డేటా ఇప్పుడు [clientdiversity.org](https://clientdiversity.org/)లో అందుబాటులో ఉంది. + +## ఎగ్జిక్యూషన్ లేయర్ {#execution-layer} + +ఇప్పటి వరకు, క్లయింట్ వైవిధ్యం చుట్టూ ఉన్న సంభాషణ ప్రధానంగా ఏకాభిప్రాయం లేయర్‌పై దృష్టి పెట్టింది. అయితే, ఎగ్జిక్యూషన్ క్లయింట్ [Geth](https://geth.ethereum.org) ప్రస్తుతం మొత్తం నోడ్‌లలో సుమారు 85% వాటాను కలిగి ఉంది. ఏకాభిప్రాయం క్లయింట్ల మాదిరిగానే అవే కారణాల వల్ల ఈ శాతం సమస్యాత్మకమైనది. ఉదాహరణకు, లావాదేవీల నిర్వహణ లేదా ఎగ్జిక్యూషన్ పేలోడ్‌ల నిర్మాణాన్ని ప్రభావితం చేసే Gethలోని ఒక బగ్, సమస్యాత్మకమైన లేదా బగ్‌లు ఉన్న లావాదేవీలను ఏకాభిప్రాయం క్లయింట్లు ఖరారు చేయడానికి దారితీయవచ్చు. అందువల్ల, ఎగ్జిక్యూషన్ క్లయింట్ల యొక్క మరింత సమానమైన పంపిణీతో ఇథీరియం మరింత ఆరోగ్యకరంగా ఉంటుంది, ఆదర్శంగా ఏ క్లయింట్ కూడా నెట్‌వర్క్‌లో 33% కంటే ఎక్కువ ప్రాతినిధ్యం వహించకూడదు. + +## మైనారిటీ క్లయింట్‌ను ఉపయోగించండి {#use-minority-client} + +క్లయింట్ వైవిధ్యం సమస్యను పరిష్కరించడానికి కేవలం వ్యక్తిగత వినియోగదారులు మైనారిటీ క్లయింట్లను ఎంచుకుంటే సరిపోదు - ప్రధాన డాప్స్ మరియు ఎక్స్‌ఛేంజీలు వంటి వ్యాలిడేటర్ పూల్స్ మరియు సంస్థలు కూడా క్లయింట్లను మార్చడం అవసరం. అయితే, ప్రస్తుత అసమతుల్యతను సరిదిద్దడంలో మరియు అందుబాటులో ఉన్న అన్ని ఇథీరియం సాఫ్ట్‌వేర్ల వినియోగాన్ని సాధారణీకరించడంలో వినియోగదారులందరూ తమ వంతు పాత్ర పోషించగలరు. విలీనం తర్వాత, అన్ని నోడ్ ఆపరేటర్లు ఒక ఎగ్జిక్యూషన్ క్లయింట్ మరియు ఒక ఏకాభిప్రాయం క్లయింట్‌ను నడపవలసి ఉంటుంది. క్రింద సూచించిన క్లయింట్ల కలయికలను ఎంచుకోవడం క్లయింట్ వైవిధ్యాన్ని పెంచడంలో సహాయపడుతుంది. + +### ఎగ్జిక్యూషన్ క్లయింట్లు {#execution-clients} + +- [Besu](https://www.hyperledger.org/use/besu) +- [Nethermind](https://downloads.nethermind.io/) +- [Erigon](https://github.com/ledgerwatch/erigon) +- [Go-Ethereum](https://geth.ethereum.org/) +- [Reth](https://reth.rs/) + +### ఏకాభిప్రాయం క్లయింట్లు {#consensus-clients} + +- [Nimbus](https://nimbus.team/) +- [Lighthouse](https://github.com/sigp/lighthouse) +- [Teku](https://consensys.io/teku) +- [Lodestar](https://github.com/ChainSafe/lodestar) +- [Prysm](https://prysm.offchainlabs.com/docs/) +- [Grandine](https://docs.grandine.io/) + +మైనారిటీ క్లయింట్ల కోసం మరిన్ని ట్యుటోరియల్స్ మరియు డాక్యుమెంటేషన్ వ్రాయడం ద్వారా మరియు వారి నోడ్-ఆపరేటింగ్ సహచరులను ఆధిపత్య క్లయింట్ల నుండి వలస వెళ్ళమని ప్రోత్సహించడం ద్వారా సాంకేతిక వినియోగదారులు ఈ ప్రక్రియను వేగవంతం చేయడంలో సహాయపడగలరు. మైనారిటీ ఏకాభిప్రాయం క్లయింట్‌కు మారడానికి మార్గదర్శకాలు [clientdiversity.org](https://clientdiversity.org/)లో అందుబాటులో ఉన్నాయి. + +## క్లయింట్ వైవిధ్యం డాష్‌బోర్డులు {#client-diversity-dashboards} + +అనేక డాష్‌బోర్డులు ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయం లేయర్ కోసం నిజ-సమయ క్లయింట్ వైవిధ్యం గణాంకాలను అందిస్తాయి. + +**ఏకాభిప్రాయం లేయర్:** + +- [Rated.network](https://www.rated.network/) +- [clientdiversity.org](https://clientdiversity.org/) + +**ఎగ్జిక్యూషన్ లేయర్:** + +- [supermajority.info](https://supermajority.info//) +- [Ethernodes](https://ethernodes.org/) + +## మరింత సమాచారం {#further-reading} + +- [ఇథీరియం యొక్క ఏకాభిప్రాయం లేయర్‌పై క్లయింట్ వైవిధ్యం](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA) +- [ఇథీరియం విలీనం: మీ స్వంత పూచీపై మెజారిటీ క్లయింట్‌ను నడపండి!](https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html) – _డాన్‌క్రాడ్ ఫీస్ట్, మార్చి 24 2022_ +- [క్లయింట్ వైవిధ్యం యొక్క ప్రాముఖ్యత](https://our.status.im/the-importance-of-client-diversity/) +- [ఇతీరియము నోడ్ సేవల జాబితా](https://ethereumnodes.com/) +- ["క్లయింట్ వైవిధ్యం సమస్య యొక్క \"ఐదు ఎందుకులు\""](https://notes.ethereum.org/@afhGjrKfTKmksTOtqhB9RQ/BJGj7uh08) +- [ఇథీరియం వైవిధ్యం మరియు దానిని ఎలా పరిష్కరించాలి (YouTube)](https://www.youtube.com/watch?v=1hZgCaiqwfU) +- [clientdiversity.org](https://clientdiversity.org/) + +## సంబంధిత అంశాలు {#related-topics} + +- [ఒక ఇథీరియం నోడ్‌ను నడపండి](/run-a-node/) +- [నోడ్‌లు మరియు క్లయింట్లు](/developers/docs/nodes-and-clients/) diff --git a/public/content/translations/te/developers/docs/nodes-and-clients/index.md b/public/content/translations/te/developers/docs/nodes-and-clients/index.md new file mode 100644 index 00000000000..dea7673caea --- /dev/null +++ b/public/content/translations/te/developers/docs/nodes-and-clients/index.md @@ -0,0 +1,319 @@ +--- +title: "నోడ్ లు మరియు క్లయింట్ లు" +description: "ఇతీరియము నోడ్స్ మరియు ఖాతాదారులు సాఫ్ట్‌వేర్ యొక్క స్థూలదృష్టి, అలాగే ఒక నోడ్‌ను ఎలా ఏర్పాటు చేయాలి మరియు మీరు దానిని ఎందుకు చేయాలో అనే దాని గురించి." +lang: te +sidebarDepth: 2 +--- + +ఇతీరియము అనేది బ్లాక్‌లు మరియు లావాదేవీల డేటాను ధృవీకరించగల సాఫ్ట్‌వేర్‌ను నడుపుతున్న కంప్యూటర్‌ల (నోడ్స్ అని పిలుస్తారు) యొక్క పంపిణీ చేయబడిన నెట్‌వర్క్. మీ కంప్యూటర్‌ను ఇతీరియము నోడ్‌గా మార్చడానికి దానిపై సాఫ్ట్‌వేర్‌ను అమలు చేయాలి. ఒక నోడ్‌ను రూపొందించడానికి రెండు వేర్వేరు సాఫ్ట్‌వేర్ భాగాలు ('ఖాతాదారులు' అని పిలుస్తారు) అవసరం. + +## అవసరాలు {#prerequisites} + +మీరు ఇతీరియము ఖాతాదారుల యొక్క స్వంత ఉదాహరణను లోతుగా పరిశోధించి, అమలు చేయడానికి ముందు మీరు పీర్-టు-పీర్ నెట్‌వర్క్ మరియు [EVM యొక్క ప్రాథమిక అంశాలు](/developers/docs/evm/) అనే భావనను అర్థం చేసుకోవాలి. మా [ఇతీరియముకు పరిచయం](/developers/docs/intro-to-ethereum/) ని చూడండి. + +మీరు నోడ్స్ అనే అంశానికి కొత్తవారైతే, ముందుగా [ఇతీరియము నోడ్‌ను నడపడం](/run-a-node)పై మా వినియోగదారు-స్నేహపూర్వక పరిచయాన్ని తనిఖీ చేయాలని మేము సిఫార్సు చేస్తున్నాము. + +## నోడ్స్ మరియు ఖాతాదారులు అంటే ఏమిటి? {#what-are-nodes-and-clients} + +ఒక "నోడ్" అనేది ఇతీరియము ఖాతాదారులు సాఫ్ట్‌వేర్ యొక్క ఏదైనా సందర్భం, ఇది ఇతీరియము సాఫ్ట్‌వేర్‌ను నడుపుతున్న ఇతర కంప్యూటర్‌లకు కూడా కనెక్ట్ చేయబడి, నెట్‌వర్క్‌ను ఏర్పరుస్తుంది. ఖాతాదారుడు అనేది ప్రోటోకాల్ నియమాలకు వ్యతిరేకంగా డేటాను ధృవీకరించి, నెట్‌వర్క్‌ను సురక్షితంగా ఉంచే ఇతీరియము యొక్క అమలు. ఒక నోడ్ రెండు ఖాతాదారులను అమలు చేయాలి: ఒక ఏకాభిప్రాయం క్లయింట్ మరియు ఒక ఎగ్జిక్యూషన్ క్లయింట్. + +- ఎగ్జిక్యూషన్ క్లయింట్ (ఎగ్జిక్యూషన్ ఇంజిన్, EL క్లయింట్ లేదా గతంలో Eth1 క్లయింట్ అని కూడా పిలుస్తారు) నెట్‌వర్క్‌లో ప్రసారం చేయబడిన కొత్త లావాదేవీలను వింటుంది, వాటిని EVMలో అమలు చేస్తుంది మరియు ప్రస్తుత ఇతీరియము డేటా యొక్క తాజా స్థితి మరియు డేటాబేస్‌ను కలిగి ఉంటుంది. +- ఏకాభిప్రాయం క్లయింట్ (బీకాన్ నోడ్, CL క్లయింట్ లేదా గతంలో Eth2 క్లయింట్ అని కూడా పిలుస్తారు) ప్రూఫ్-ఆఫ్-స్టేక్ ఏకాభిప్రాయం అల్గారిథమ్‌ను అమలు చేస్తుంది, ఇది ఎగ్జిక్యూషన్ క్లయింట్ నుండి ధృవీకరించబడిన డేటా ఆధారంగా నెట్‌వర్క్‌ను ఒప్పందాన్ని సాధించడానికి వీలు కల్పిస్తుంది. ఏకాభిప్రాయం క్లయింట్‌కు జోడించబడే 'వాలిడేటర్' అని పిలువబడే మూడవ సాఫ్ట్‌వేర్ కూడా ఉంది, ఇది నెట్‌వర్క్‌ను భద్రపరచడంలో ఒక నోడ్ పాల్గొనడానికి అనుమతిస్తుంది. + +ఈ ఖాతాదారులు ఇతీరియము గొలుసు యొక్క తలని ట్రాక్ చేయడానికి కలిసి పని చేస్తారు మరియు వినియోగదారులను ఇతీరియము నెట్‌వర్క్‌తో పరస్పర చర్య చేయడానికి అనుమతిస్తారు. కలిసి పనిచేసే సాఫ్ట్‌వేర్ యొక్క బహుళ భాగాలతో మాడ్యులర్ డిజైన్‌ను [ఎన్‌క్యాప్సులేటెడ్ సంక్లిష్టత](https://vitalik.eth.limo/general/2022/02/28/complexity.html) అంటారు. ఈ విధానం [ది మెర్జ్](/roadmap/merge)ను సజావుగా అమలు చేయడాన్ని సులభతరం చేసింది, ఖాతాదారుల సాఫ్ట్‌వేర్‌ను నిర్వహించడం మరియు అభివృద్ధి చేయడం సులభతరం చేస్తుంది మరియు ఉదాహరణకు, [లేయర్ 2 పర్యావరణ వ్యవస్థ](/layer-2/)లో వ్యక్తిగత ఖాతాదారులను పునర్వినియోగం చేయడానికి వీలు కల్పిస్తుంది. + +![కపుల్డ్ ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయం క్లయింట్‌లు](./eth1eth2client.png) +కపుల్డ్ ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయం క్లయింట్ యొక్క సరళీకృత రేఖాచిత్రం. + +### క్లయింట్ వైవిధ్యం {#client-diversity} + +వివిధ బృందాలచే అభివృద్ధి చేయబడిన వివిధ ప్రోగ్రామింగ్ భాషలలో [ఎగ్జిక్యూషన్ క్లయింట్లు](/developers/docs/nodes-and-clients/#execution-clients) మరియు [ఏకాభిప్రాయం క్లయింట్లు](/developers/docs/nodes-and-clients/#consensus-clients) రెండూ ఉన్నాయి. + +బహుళ ఖాతాదారుల అమలులు ఒకే కోడ్‌బేస్‌పై ఆధారపడటాన్ని తగ్గించడం ద్వారా నెట్‌వర్క్‌ను బలోపేతం చేయగలవు. ఆదర్శవంతమైన లక్ష్యం ఏమిటంటే, నెట్‌వర్క్‌పై ఆధిపత్యం చెలాయించే ఏ ఖాతాదారుడు లేకుండా వైవిధ్యాన్ని సాధించడం, తద్వారా వైఫల్యానికి దారితీసే ఏకైక సంభావ్యతను తొలగించడం. +వివిధ భాషలు విస్తృత అభివృద్ధి చేసేవారి సంఘాన్ని కూడా ఆహ్వానిస్తాయి మరియు వారికి నచ్చిన భాషలో ఇంటిగ్రేషన్‌లను సృష్టించడానికి వారిని అనుమతిస్తాయి. + +[ఖాతాదారుల వైవిధ్యం](/developers/docs/nodes-and-clients/client-diversity/) గురించి మరింత తెలుసుకోండి. + +ఈ అమలులలో సాధారణంగా ఉండే విషయం ఏమిటంటే, అవన్నీ ఒకే స్పెసిఫికేషన్‌ను అనుసరిస్తాయి. స్పెసిఫికేషన్‌లు ఇతీరియము నెట్‌వర్క్ మరియు బ్లాక్‌చైన్ ఎలా పనిచేస్తుందో నిర్దేశిస్తాయి. ప్రతి సాంకేతిక వివరాలు నిర్వచించబడ్డాయి మరియు స్పెసిఫికేషన్‌లను ఇలా కనుగొనవచ్చు: + +- వాస్తవానికి, [ఇతీరియము పసుపు పత్రం](https://ethereum.github.io/yellowpaper/paper.pdf) +- [ఎగ్జిక్యూషన్ స్పెక్స్](https://github.com/ethereum/execution-specs/) +- [ఏకాభిప్రాయ స్పెక్స్](https://github.com/ethereum/consensus-specs) +- వివిధ [నెట్‌వర్క్ అప్‌గ్రేడ్‌ల](/ethereum-forks/)లో అమలు చేయబడిన [EIPలు](https://eips.ethereum.org/) + +### నెట్‌వర్క్‌లో నోడ్స్‌ను ట్రాక్ చేయడం {#network-overview} + +బహుళ ట్రాకర్‌లు ఇతీరియము నెట్‌వర్క్‌లోని నోడ్స్ యొక్క నిజ-సమయ స్థూలదృష్టిని అందిస్తాయి. వికేంద్రీకృత నెట్‌వర్క్‌ల స్వభావం కారణంగా, ఈ క్రాలర్‌లు నెట్‌వర్క్ యొక్క పరిమిత వీక్షణను మాత్రమే అందించగలవని మరియు వివిధ ఫలితాలను నివేదించవచ్చని గమనించండి. + +- Etherscan ద్వారా [నోడ్స్ యొక్క మ్యాప్](https://etherscan.io/nodetracker) +- Bitfly ద్వారా [Ethernodes](https://ethernodes.org/) +- Chainsafe ద్వారా [Nodewatch](https://www.nodewatch.io/), ఏకాభిప్రాయం నోడ్స్‌ను క్రాల్ చేస్తుంది +- [Monitoreth](https://monitoreth.io/) - MigaLabs ద్వారా, ఒక పంపిణీ చేయబడిన నెట్‌వర్క్ పర్యవేక్షణ సాధనం +- [వారపు నెట్‌వర్క్ ఆరోగ్య నివేదికలు](https://probelab.io) - ProbeLab ద్వారా, [నెబ్యులా క్రాలర్](https://github.com/dennis-tra/nebula) మరియు ఇతర ఉపకరణాలను ఉపయోగించి + +## నోడ్ రకాలు {#node-types} + +మీరు [మీ స్వంత నోడ్‌ను నడపాలనుకుంటే](/developers/docs/nodes-and-clients/run-a-node/), డేటాను విభిన్నంగా వినియోగించే వివిధ రకాల నోడ్‌లు ఉన్నాయని మీరు అర్థం చేసుకోవాలి. నిజానికి, ఖాతాదారులు మూడు విభిన్న రకాల నోడ్స్‌ను అమలు చేయగలరు: తేలికపాటి, పూర్తి మరియు ఆర్కైవ్. వేగవంతమైన సమకాలీకరణ సమయాన్ని ప్రారంభించే విభిన్న సింక్ వ్యూహాల ఎంపికలు కూడా ఉన్నాయి. సమకాలీకరణ అనేది ఇతీరియము యొక్క స్థితిపై అత్యంత నవీనమైన సమాచారాన్ని ఎంత త్వరగా పొందగలదో సూచిస్తుంది. + +### పూర్తి నోడ్ {#full-node} + +పూర్తి నోడ్స్ బ్లాక్‌చైన్ యొక్క బ్లాక్-బై-బ్లాక్ ధ్రువీకరణను చేస్తాయి, ప్రతి బ్లాక్ కోసం బ్లాక్ బాడీ మరియు స్థితి డేటాను డౌన్‌లోడ్ చేయడం మరియు ధృవీకరించడం కూడా ఇందులో ఉంటుంది. పూర్తి నోడ్ యొక్క విభిన్న తరగతులు ఉన్నాయి - కొన్ని జెనెసిస్ బ్లాక్ నుండి ప్రారంభమవుతాయి మరియు బ్లాక్‌చైన్ యొక్క మొత్తం చరిత్రలోని ప్రతి ఒక్క బ్లాక్‌ను ధృవీకరిస్తాయి. ఇతరులు తమ ధ్రువీకరణను ఇటీవలి బ్లాక్ వద్ద ప్రారంభిస్తారు, అది చెల్లుబాటు అవుతుందని వారు విశ్వసిస్తారు (ఉదా., Geth యొక్క 'స్నాప్ సింక్'). ధ్రువీకరణ ఎక్కడ ప్రారంభమైనా, పూర్తి నోడ్స్ సాపేక్షంగా ఇటీవలి డేటా యొక్క స్థానిక కాపీని మాత్రమే ఉంచుతాయి (సాధారణంగా అత్యంత ఇటీవలి 128 బ్లాక్‌లు), డిస్క్ స్థలాన్ని ఆదా చేయడానికి పాత డేటాను తొలగించడానికి అనుమతిస్తాయి. అవసరమైనప్పుడు పాత డేటాను పునరుత్పత్తి చేయవచ్చు. + +- పూర్తి బ్లాక్‌చైన్ డేటాను నిల్వ చేస్తుంది (అయితే ఇది క్రమానుగతంగా కత్తిరించబడుతుంది కాబట్టి పూర్తి నోడ్ అన్ని స్థితి డేటాను జెనెసిస్‌కు తిరిగి నిల్వ చేయదు) +- బ్లాక్ ధ్రువీకరణలో పాల్గొంటుంది, అన్ని బ్లాక్‌లు మరియు స్థితులను ధృవీకరిస్తుంది. +- అన్ని స్థితులను స్థానిక నిల్వ నుండి తిరిగి పొందవచ్చు లేదా పూర్తి నోడ్ ద్వారా 'స్నాప్‌షాట్‌ల' నుండి పునరుత్పత్తి చేయవచ్చు. +- నెట్‌వర్క్‌కు సేవ చేస్తుంది మరియు అభ్యర్థనపై డేటాను అందిస్తుంది. + +### ఆర్కైవ్ నోడ్ {#archive-node} + +ఆర్కైవ్ నోడ్స్ అనేవి జెనెసిస్ నుండి ప్రతి బ్లాక్‌ను ధృవీకరించే పూర్తి నోడ్స్ మరియు డౌన్‌లోడ్ చేయబడిన ఏ డేటాను ఎప్పుడూ తొలగించవు. + +- పూర్తి నోడ్‌లో ఉంచిన ప్రతిదాన్ని నిల్వ చేస్తుంది మరియు చారిత్రక స్థితుల ఆర్కైవ్‌ను నిర్మిస్తుంది. బ్లాక్ #4,000,000 వద్ద ఖాతా బ్యాలెన్స్ వంటి వాటిని మీరు ప్రశ్నించాలనుకుంటే లేదా ట్రేసింగ్‌ను ఉపయోగించి వాటిని ధృవీకరించకుండా మీ స్వంత లావాదేవీల సమితిని సులభంగా మరియు విశ్వసనీయంగా పరీక్షించాలనుకుంటే ఇది అవసరం. +- ఈ డేటా టెరాబైట్ల యూనిట్లను సూచిస్తుంది, ఇది ఆర్కైవ్ నోడ్స్‌ను సగటు వినియోగదారులకు తక్కువ ఆకర్షణీయంగా చేస్తుంది కానీ బ్లాక్ ఎక్స్‌ప్లోరర్‌లు, వాలెట్ విక్రేతలు మరియు చైన్ అనలిటిక్స్ వంటి సేవలకు ఉపయోగపడుతుంది. + +ఆర్కైవ్ కాకుండా ఏ ఇతర మోడ్‌లోనైనా ఖాతాదారులను సింక్ చేయడం వలన బ్లాక్‌చైన్ డేటా కత్తిరించబడుతుంది. దీని అర్థం, అన్ని చారిత్రక స్థితుల యొక్క ఆర్కైవ్ లేదు కానీ పూర్తి నోడ్ డిమాండ్‌పై వాటిని నిర్మించగలదు. + +[ఆర్కైవ్ నోడ్స్](/developers/docs/nodes-and-clients/archive-nodes) గురించి మరింత తెలుసుకోండి. + +### తేలికపాటి నోడ్ {#light-node} + +ప్రతి బ్లాక్‌ను డౌన్‌లోడ్ చేయడానికి బదులుగా, తేలికపాటి నోడ్స్ బ్లాక్ హెడర్‌లను మాత్రమే డౌన్‌లోడ్ చేస్తాయి. ఈ హెడర్‌లు బ్లాక్‌ల కంటెంట్‌ల గురించి సారాంశ సమాచారాన్ని కలిగి ఉంటాయి. తేలికపాటి నోడ్‌కు అవసరమైన ఏ ఇతర సమాచారమైనా పూర్తి నోడ్ నుండి అభ్యర్థించబడుతుంది. తేలికపాటి నోడ్ బ్లాక్ హెడర్‌లలోని స్థితి మూలాలకు వ్యతిరేకంగా వారు స్వీకరించే డేటాను స్వతంత్రంగా ధృవీకరించగలదు. తేలికపాటి నోడ్స్ వినియోగదారులను పూర్తి నోడ్స్ నడపడానికి అవసరమైన శక్తివంతమైన హార్డ్‌వేర్ లేదా అధిక బ్యాండ్‌విడ్త్ లేకుండా ఇతీరియము నెట్‌వర్క్‌లో పాల్గొనడానికి వీలు కల్పిస్తాయి. అంతిమంగా, తేలికపాటి నోడ్స్ మొబైల్ ఫోన్‌లు లేదా ఎంబెడెడ్ పరికరాలలో పనిచేయవచ్చు. తేలికపాటి నోడ్స్ ఏకాభిప్రాయంలో పాల్గొనవు (అంటే, అవి వాలిడేటర్లుగా ఉండలేవు), కానీ అవి పూర్తి నోడ్ వలె అదే కార్యాచరణ మరియు భద్రతా హామీలతో ఇతీరియము బ్లాక్‌చైన్‌ను యాక్సెస్ చేయగలవు. + +తేలికపాటి క్లయింట్లు ఇతీరియము కోసం చురుకైన అభివృద్ధి రంగం మరియు ఏకాభిప్రాయం లేయర్ మరియు ఎగ్జిక్యూషన్ లేయర్ కోసం కొత్త తేలికపాటి క్లయింట్లను త్వరలో చూస్తామని మేము ఆశిస్తున్నాము. +[గాసిప్ నెట్‌వర్క్](https://www.ethportal.net/) ద్వారా తేలికపాటి క్లయింట్ డేటాను అందించడానికి సంభావ్య మార్గాలు కూడా ఉన్నాయి. ఇది ప్రయోజనకరంగా ఉంటుంది ఎందుకంటే గాసిప్ నెట్‌వర్క్ అభ్యర్థనలను అందించడానికి పూర్తి నోడ్స్ అవసరం లేకుండా తేలికపాటి నోడ్స్ యొక్క నెట్‌వర్క్‌కు మద్దతు ఇవ్వగలదు. + +ఇతీరియము ఇంకా పెద్ద సంఖ్యలో తేలికపాటి నోడ్స్‌కు మద్దతు ఇవ్వదు, కానీ తేలికపాటి నోడ్ మద్దతు సమీప భవిష్యత్తులో వేగంగా అభివృద్ధి చెందుతుందని ఆశించబడే ప్రాంతం. ప్రత్యేకించి, [Nimbus](https://nimbus.team/), [Helios](https://github.com/a16z/helios), మరియు [LodeStar](https://lodestar.chainsafe.io/) వంటి ఖాతాదారులు ప్రస్తుతం తేలికపాటి నోడ్స్‌పై ఎక్కువగా దృష్టి సారించారు. + +## నేను ఇతీరియము నోడ్‌ను ఎందుకు నడపాలి? {#why-should-i-run-an-ethereum-node} + +ఒక నోడ్‌ను నడపడం వలన మీరు ఇతీరియమును నేరుగా, నమ్మకం లేకుండా మరియు ప్రైవేట్‌గా ఉపయోగించుకోవచ్చు, అదే సమయంలో నెట్‌వర్క్‌ను మరింత పటిష్టంగా మరియు వికేంద్రీకృతంగా ఉంచడం ద్వారా దానికి మద్దతు ఇస్తుంది. + +### మీకు కలిగే ప్రయోజనాలు {#benefits-to-you} + +మీ స్వంత నోడ్‌ను నడపడం వలన మీరు ఇతీరియమును ప్రైవేట్‌గా, స్వయం సమృద్ధిగా మరియు నమ్మకం లేని పద్ధతిలో ఉపయోగించుకోవచ్చు. మీరు నెట్‌వర్క్‌ను విశ్వసించాల్సిన అవసరం లేదు ఎందుకంటే మీ ఖాతాదారుడితో మీరే డేటాను ధృవీకరించుకోవచ్చు. "నమ్మవద్దు, ధృవీకరించండి" అనేది ఒక ప్రసిద్ధ బ్లాక్‌చైన్ మంత్రం. + +- మీ నోడ్ అన్ని లావాదేవీలను మరియు బ్లాక్‌లను ఏకాభిప్రాయం నియమాలకు వ్యతిరేకంగా స్వయంగా ధృవీకరిస్తుంది. దీనర్థం మీరు నెట్‌వర్క్‌లోని ఏ ఇతర నోడ్స్‌పై ఆధారపడాల్సిన అవసరం లేదు లేదా వాటిని పూర్తిగా విశ్వసించాల్సిన అవసరం లేదు. +- మీరు మీ స్వంత నోడ్‌తో ఇతీరియము వాలెట్‌ను ఉపయోగించవచ్చు. మీరు మీ చిరునామాలను మరియు బ్యాలెన్స్‌లను మధ్యవర్తులకు లీక్ చేయనవసరం లేదు కాబట్టి మీరు డాప్స్‌ను మరింత సురక్షితంగా మరియు ప్రైవేట్‌గా ఉపయోగించవచ్చు. మీ స్వంత ఖాతాదారుడితో ప్రతిదీ తనిఖీ చేయవచ్చు. [MetaMask](https://metamask.io), [Frame](https://frame.sh/), మరియు [అనేక ఇతర వాలెట్లు](/wallets/find-wallet/) RPC-దిగుమతిని అందిస్తాయి, అవి మీ నోడ్‌ను ఉపయోగించడానికి అనుమతిస్తాయి. +- మీరు ఇతీరియము నుండి డేటాపై ఆధారపడే ఇతర సేవలను అమలు చేయవచ్చు మరియు స్వీయ-హోస్ట్ చేయవచ్చు. ఉదాహరణకు, ఇది బీకాన్ చైన్ వ్యాలిడేటర్, లేయర్ 2 వంటి సాఫ్ట్‌వేర్, మౌలిక సదుపాయాలు, బ్లాక్ ఎక్స్‌ప్లోరర్‌లు, చెల్లింపు ప్రాసెసర్‌లు మొదలైనవి కావచ్చు. +- మీరు మీ స్వంత అనుకూల [RPC ఎండ్‌పాయింట్‌లను](/developers/docs/apis/json-rpc/) అందించవచ్చు. మీరు ఈ ఎండ్‌పాయింట్‌లను బహిరంగంగా సంఘానికి అందించడం ద్వారా వారు పెద్ద కేంద్రీకృత ప్రొవైడర్‌లను నివారించడంలో సహాయం చేయవచ్చు. +- మీరు \*\*ఇంటర్-ప్రాసెస్ కమ్యూనికేషన్స్ (IPC)\*\*ని ఉపయోగించి మీ నోడ్‌కు కనెక్ట్ చేయవచ్చు లేదా మీ ప్రోగ్రామ్‌ను ప్లగిన్‌గా లోడ్ చేయడానికి నోడ్‌ను తిరిగి వ్రాయవచ్చు. ఇది తక్కువ జాప్యాన్ని ఇస్తుంది, ఇది చాలా సహాయపడుతుంది, ఉదా., web3 లైబ్రరీలను ఉపయోగించి చాలా డేటాను ప్రాసెస్ చేస్తున్నప్పుడు లేదా మీరు మీ లావాదేవీలను వీలైనంత వేగంగా భర్తీ చేయవలసి వచ్చినప్పుడు (అంటే, ఫ్రంట్‌రన్నింగ్). +- మీరు నెట్‌వర్క్‌ను సురక్షితం చేయడానికి మరియు రివార్డులను సంపాదించడానికి నేరుగా ETHని స్టేక్ చేయవచ్చు. ప్రారంభించడానికి [సోలో స్టేకింగ్](/staking/solo/) చూడండి. + +![మీ అప్లికేషన్ మరియు నోడ్స్ ద్వారా మీరు ఇతీరియమును ఎలా యాక్సెస్ చేస్తారు](./nodes.png) + +### నెట్‌వర్క్ ప్రయోజనాలు {#network-benefits} + +ఇతీరియము ఆరోగ్యం, భద్రత మరియు కార్యాచరణ స్థితిస్థాపకతకు విభిన్నమైన నోడ్స్ సమితి ముఖ్యం. + +- పూర్తి నోడ్స్ ఏకాభిప్రాయం నియమాలను అమలు చేస్తాయి, కాబట్టి వాటిని అనుసరించని బ్లాక్‌లను అంగీకరించేలా మోసగించలేము. ఇది నెట్‌వర్క్‌లో అదనపు భద్రతను అందిస్తుంది ఎందుకంటే అన్ని నోడ్స్ తేలికపాటి నోడ్స్ అయితే, అవి పూర్తి ధృవీకరణ చేయవు, వాలిడేటర్లు నెట్‌వర్క్‌పై దాడి చేయవచ్చు. +- [ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos/#what-is-pos) యొక్క క్రిప్టో-ఆర్థిక రక్షణలను అధిగమించే దాడి జరిగినప్పుడు, నిజాయితీ గల గొలుసును అనుసరించడానికి ఎంచుకునే పూర్తి నోడ్స్ ద్వారా సామాజిక పునరుద్ధరణను చేయవచ్చు. +- నెట్‌వర్క్‌లో ఎక్కువ నోడ్స్ వలన మరింత వైవిధ్యమైన మరియు పటిష్టమైన నెట్‌వర్క్ ఏర్పడుతుంది, ఇది వికేంద్రీకరణ యొక్క అంతిమ లక్ష్యం, ఇది సెన్సార్‌షిప్-నిరోధక మరియు విశ్వసనీయ వ్యవస్థను ప్రారంభిస్తుంది. +- పూర్తి నోడ్స్ దానిపై ఆధారపడే తేలికపాటి క్లయింట్‌ల కోసం బ్లాక్‌చైన్ డేటాకు యాక్సెస్‌ను అందిస్తాయి. తేలికపాటి నోడ్స్ మొత్తం బ్లాక్‌చైన్‌ను నిల్వ చేయవు, బదులుగా అవి [బ్లాక్ హెడర్‌లలోని స్థితి మూలాల](/developers/docs/blocks/#block-anatomy) ద్వారా డేటాను ధృవీకరిస్తాయి. అవసరమైతే వారు పూర్తి నోడ్స్ నుండి మరింత సమాచారం కోసం అభ్యర్థించవచ్చు. + +మీరు పూర్తి నోడ్‌ను నడిపితే, మీరు వాలిడేటర్‌ను నడపకపోయినా మొత్తం ఇతీరియము నెట్‌వర్క్ దాని నుండి ప్రయోజనం పొందుతుంది. + +## మీ స్వంత నోడ్‌ను నడపడం {#running-your-own-node} + +మీ స్వంత ఇతీరియము ఖాతాదారుడిని నడపడంలో ఆసక్తి ఉందా? + +బిగినర్-స్నేహపూర్వక పరిచయం కోసం, మరింత తెలుసుకోవడానికి మా [ఒక నోడ్‌ను నడపండి](/run-a-node) పేజీని సందర్శించండి. + +మీరు సాంకేతిక వినియోగదారుడు అయితే, [మీ స్వంత నోడ్‌ను ఎలా స్పిన్ అప్ చేయాలి](/developers/docs/nodes-and-clients/run-a-node/) అనే దానిపై మరిన్ని వివరాలు మరియు ఎంపికలలోకి ప్రవేశించండి. + +## ప్రత్యామ్నాయాలు {#alternatives} + +మీ స్వంత నోడ్‌ను ఏర్పాటు చేయడానికి మీకు సమయం మరియు వనరులు ఖర్చవుతాయి కానీ మీరు ఎల్లప్పుడూ మీ స్వంత ఉదాహరణను నడపవలసిన అవసరం లేదు. ఈ సందర్భంలో, మీరు మూడవ పార్టీ ఎపిఐ ప్రొవైడర్‌ను ఉపయోగించవచ్చు. ఈ సేవలను ఉపయోగించడం యొక్క స్థూలదృష్టి కోసం, [సేవగా నోడ్స్](/developers/docs/nodes-and-clients/nodes-as-a-service/) చూడండి. + +మీ సంఘంలో ఎవరైనా పబ్లిక్ ఎపిఐతో ఇతీరియము నోడ్‌ను నడుపుతున్నట్లయితే, మీరు మీ వాలెట్‌లను కస్టమ్ RPC ద్వారా కమ్యూనిటీ నోడ్‌కు సూచించవచ్చు మరియు యాదృచ్ఛికంగా విశ్వసనీయ మూడవ పక్షంతో కంటే ఎక్కువ గోప్యతను పొందవచ్చు. + +మరోవైపు, మీరు ఒక ఖాతాదారుడిని నడిపితే, అవసరమైన మీ స్నేహితులతో మీరు దానిని పంచుకోవచ్చు. + +## ఎగ్జిక్యూషన్ క్లయింట్లు {#execution-clients} + +ఇతీరియము సంఘం వివిధ ప్రోగ్రామింగ్ భాషలను ఉపయోగించి వివిధ బృందాలచే అభివృద్ధి చేయబడిన బహుళ ఓపెన్-సోర్స్ ఎగ్జిక్యూషన్ క్లయింట్‌లను (గతంలో 'Eth1 క్లయింట్లు' లేదా కేవలం 'ఇతీరియము ఖాతాదారులు' అని పిలుస్తారు) నిర్వహిస్తుంది. ఇది నెట్‌వర్క్‌ను బలంగా మరియు మరింత [వైవిధ్యంగా](/developers/docs/nodes-and-clients/client-diversity/) చేస్తుంది. ఆదర్శవంతమైన లక్ష్యం ఏమిటంటే, వైఫల్యానికి దారితీసే ఏకైక పాయింట్‌లను తగ్గించడానికి ఏ ఖాతాదారుడు ఆధిపత్యం చెలాయించకుండా వైవిధ్యం సాధించడం. + +ఈ పట్టిక వివిధ ఖాతాదారులను సంగ్రహిస్తుంది. అవన్నీ [ఖాతాదారుల పరీక్షలను](https://github.com/ethereum/tests) పాస్ అవుతాయి మరియు నెట్‌వర్క్ అప్‌గ్రేడ్‌లతో నవీకరించబడటానికి చురుకుగా నిర్వహించబడతాయి. + +| ఖాతాదారుడు | భాష | ఆపరేటింగ్ సిస్టమ్స్ | నెటవర్క్లు | సింక్ వ్యూహాలు | స్థితి కత్తిరింపు | +| ------------------------------------------------------------------------------------------- | ------------------------ | --------------------- | --------------------------- | -------------------------------------------------------------------------------- | ----------------- | +| [Geth](https://geth.ethereum.org/) | Go | Linux, Windows, macOS | మెయిన్‌నెట్, సెపోలియా, హూడి | [Snap](#snap-sync), [Full](#full-sync) | ఆర్కైవ్, ప్రూన్డ్ | +| [Nethermind](https://www.nethermind.io/) | C#, .NET | Linux, Windows, macOS | మెయిన్‌నెట్, సెపోలియా, హూడి | [Snap](#snap-sync) (సేవ చేయకుండా), ఫాస్ట్, [Full](#full-sync) | ఆర్కైవ్, ప్రూన్డ్ | +| [Besu](https://besu.hyperledger.org/en/stable/) | జావా | Linux, Windows, macOS | మెయిన్‌నెట్, సెపోలియా, హూడి | [Snap](#snap-sync), [Fast](#fast-sync), [Full](#full-sync) | ఆర్కైవ్, ప్రూన్డ్ | +| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux, Windows, macOS | మెయిన్‌నెట్, సెపోలియా, హూడి | [Full](#full-sync) | ఆర్కైవ్, ప్రూన్డ్ | +| [Reth](https://reth.rs/) | Rust | Linux, Windows, macOS | మెయిన్‌నెట్, సెపోలియా, హూడి | [Full](#full-sync) | ఆర్కైవ్, ప్రూన్డ్ | +| [EthereumJS](https://github.com/ethereumjs/ethereumjs-monorepo) _(బీటా)_ | TypeScript | Linux, Windows, macOS | సెపోలియా, హూడి | [Full](#full-sync) | ప్రూన్డ్ | + +మద్దతు ఉన్న నెట్‌వర్క్‌ల గురించి మరింత తెలుసుకోవడానికి, [ఇతీరియము నెట్‌వర్క్‌ల](/developers/docs/networks/) గురించి చదవండి. + +ప్రతి ఖాతాదారుడికి ప్రత్యేకమైన వినియోగ కేసులు మరియు ప్రయోజనాలు ఉన్నాయి, కాబట్టి మీరు మీ స్వంత ప్రాధాన్యతల ఆధారంగా ఒకదాన్ని ఎంచుకోవాలి. వివిధ ఫీచర్లు మరియు వినియోగదారుల ప్రేక్షకులను లక్ష్యంగా చేసుకుని అమలులను వైవిధ్యం అనుమతిస్తుంది. మీరు ఫీచర్లు, మద్దతు, ప్రోగ్రామింగ్ భాష లేదా లైసెన్స్‌ల ఆధారంగా ఖాతాదారుడిని ఎంచుకోవచ్చు. + +### Besu {#besu} + +Hyperledger Besu అనేది పబ్లిక్ మరియు అనుమతి పొందిన నెట్‌వర్క్‌ల కోసం ఒక ఎంటర్‌ప్రైజ్-గ్రేడ్ ఇతీరియము క్లయింట్. ఇది ట్రేసింగ్ నుండి GraphQL వరకు అన్ని ఇతీరియము మెయిన్‌నెట్ ఫీచర్లను నడుపుతుంది, విస్తృతమైన పర్యవేక్షణను కలిగి ఉంది మరియు ఓపెన్ కమ్యూనిటీ ఛానెల్‌లలో మరియు సంస్థల కోసం వాణిజ్య SLAల ద్వారా ConsenSys చే మద్దతు ఇస్తుంది. ఇది జావాలో వ్రాయబడింది మరియు అపాచీ 2.0 లైసెన్స్ పొందింది. + +Besu యొక్క విస్తృతమైన [డాక్యుమెంటేషన్](https://besu.hyperledger.org/en/stable/) దాని ఫీచర్లు మరియు సెటప్‌లపై అన్ని వివరాల ద్వారా మీకు మార్గనిర్దేశం చేస్తుంది. + +### Erigon {#erigon} + +Erigon, గతంలో Turbo-Geth అని పిలువబడేది, వేగం మరియు డిస్క్-స్థల సామర్థ్యం వైపు దృష్టి సారించిన గో ఇతీరియము యొక్క ఫోర్క్‌గా ప్రారంభమైంది. Erigon అనేది ఇతీరియము యొక్క పూర్తిగా పునర్నిర్మించబడిన అమలు, ప్రస్తుతం Go లో వ్రాయబడింది కానీ ఇతర భాషలలో అభివృద్ధిలో ఉన్న అమలులతో ఉంది. Erigon లక్ష్యం ఇతీరియము యొక్క వేగవంతమైన, మరింత మాడ్యులర్ మరియు మరింత ఆప్టిమైజ్ చేయబడిన అమలును అందించడం. ఇది సుమారు 2TB డిస్క్ స్థలాన్ని ఉపయోగించి, 3 రోజుల కంటే తక్కువ సమయంలో పూర్తి ఆర్కైవ్ నోడ్ సింక్‌ను చేయగలదు. + +### గో ఇతీరియము {#geth} + +గో ఇతీరియము (సంక్షిప్తంగా Geth) ఇతీరియము ప్రోటోకాల్ యొక్క అసలు అమలులలో ఒకటి. ప్రస్తుతం, ఇది వినియోగదారులు మరియు అభివృద్ధి చేసేవారి కోసం అతిపెద్ద వినియోగదారుల బేస్ మరియు అనేక రకాల పనిముట్లతో అత్యంత విస్తృతమైన ఖాతాదారుడు. ఇది గోలో వ్రాయబడింది, పూర్తిగా ఓపెన్ సోర్స్ మరియు GNU LGPL v3 క్రింద లైసెన్స్ పొందింది. + +దాని [డాక్యుమెంటేషన్](https://geth.ethereum.org/docs/)లో Geth గురించి మరింత తెలుసుకోండి. + +### Nethermind {#nethermind} + +Nethermind అనేది C# .NET టెక్ స్టాక్‌తో సృష్టించబడిన ఒక ఇతీరియము అమలు, LGPL-3.0తో లైసెన్స్ పొందింది, ARMతో సహా అన్ని ప్రధాన ప్లాట్‌ఫారమ్‌లలో నడుస్తుంది. ఇది దీనితో గొప్ప పనితీరును అందిస్తుంది: + +- ఒక ఆప్టిమైజ్ చేయబడిన వర్చువల్ మెషిన్ +- స్థితి యాక్సెస్ +- నెట్‌వర్కింగ్ మరియు Prometheus/Grafana డాష్‌బోర్డులు, seq ఎంటర్‌ప్రైజ్ లాగింగ్ మద్దతు, JSON-RPC ట్రేసింగ్ మరియు అనలిటిక్స్ ప్లగిన్‌లు వంటి గొప్ప ఫీచర్లు. + +Nethermindకి [వివరణాత్మక డాక్యుమెంటేషన్](https://docs.nethermind.io), బలమైన డెవ్ మద్దతు, ఒక ఆన్‌లైన్ సంఘం మరియు ప్రీమియం వినియోగదారులకు 24/7 మద్దతు కూడా అందుబాటులో ఉంది. + +### Reth {#reth} + +Reth (రస్ట్ ఇతీరియముకు సంక్షిప్తంగా) అనేది వినియోగదారు-స్నేహపూర్వకంగా, అత్యంత మాడ్యులర్‌గా, వేగంగా మరియు సమర్థవంతంగా ఉండటంపై దృష్టి సారించిన ఇతీరియము పూర్తి నోడ్ అమలు. Reth వాస్తవానికి Paradigm చే నిర్మించబడింది మరియు ముందుకు నడిపించబడింది, మరియు ఇది అపాచీ మరియు MIT లైసెన్సుల క్రింద లైసెన్స్ పొందింది. + +Reth ఉత్పత్తికి సిద్ధంగా ఉంది, మరియు స్టేకింగ్ లేదా అధిక-అప్‌టైమ్ సేవలు వంటి మిషన్-క్రిటికల్ పరిసరాలలో ఉపయోగించడానికి అనుకూలంగా ఉంటుంది. RPC, MEV, ఇండెక్సింగ్, సిమ్యులేషన్‌లు, మరియు P2P కార్యకలాపాలు వంటి గొప్ప మార్జిన్‌లతో అధిక పనితీరు అవసరమయ్యే వినియోగ కేసులలో బాగా పనిచేస్తుంది. + +[Reth Book](https://reth.rs/) లేదా [Reth GitHub repo](https://github.com/paradigmxyz/reth?tab=readme-ov-file#reth) ని తనిఖీ చేయడం ద్వారా మరింత తెలుసుకోండి. + +### అభివృద్ధిలో {#execution-in-development} + +ఈ ఖాతాదారులు ఇంకా అభివృద్ధి యొక్క ప్రారంభ దశలలో ఉన్నారు మరియు ఉత్పత్తి వినియోగానికి ఇంకా సిఫార్సు చేయబడలేదు. + +#### EthereumJS {#ethereumjs} + +EthereumJS ఎగ్జిక్యూషన్ క్లయింట్ (EthereumJS) TypeScriptలో వ్రాయబడింది మరియు బ్లాక్, ట్రాన్సాక్షన్ మరియు మెర్కిల్-ప్యాట్రిసియా ట్రై క్లాస్‌లచే ప్రాతినిధ్యం వహించే కోర్ ఇతీరియము ప్రిమిటివ్‌లతో సహా అనేక ప్యాకేజీలతో కూడి ఉంటుంది మరియు ఇతీరియము వర్చువల్ మెషిన్ (EVM) అమలు, ఒక బ్లాక్‌చైన్ క్లాస్ మరియు DevP2P నెట్‌వర్కింగ్ స్టాక్ వంటి కోర్ క్లయింట్ కాంపోనెంట్‌లు కూడా ఉన్నాయి. + +దాని [డాక్యుమెంటేషన్](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master) చదవడం ద్వారా దాని గురించి మరింత తెలుసుకోండి + +## ఏకాభిప్రాయం క్లయింట్లు {#consensus-clients} + +[ఏకాభిప్రాయం అప్‌గ్రేడ్‌లకు](/roadmap/beacon-chain/) మద్దతు ఇవ్వడానికి బహుళ ఏకాభిప్రాయం క్లయింట్లు (గతంలో 'Eth2' క్లయింట్లు అని పిలిచేవారు) ఉన్నాయి. ఫోర్క్-ఎంపిక అల్గారిథం, ధృవీకరణల ప్రాసెసింగ్ మరియు [ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos) రివార్డులు మరియు జరిమానాలను నిర్వహించడం వంటి అన్ని ఏకాభిప్రాయం-సంబంధిత తర్కాలకు వారు బాధ్యత వహిస్తారు. + +| ఖాతాదారుడు | భాష | ఆపరేటింగ్ సిస్టమ్స్ | నెటవర్క్లు | +| ------------------------------------------------------------- | ---------- | --------------------- | --------------------------------------------------------------- | +| [Lighthouse](https://lighthouse.sigmaprime.io/) | Rust | Linux, Windows, macOS | బీకాన్ చైన్, హూడి, పిర్మాంట్, సెపోలియా, మరియు మరిన్ని | +| [Lodestar](https://lodestar.chainsafe.io/) | TypeScript | Linux, Windows, macOS | బీకాన్ చైన్, హూడి, సెపోలియా, మరియు మరిన్ని | +| [Nimbus](https://nimbus.team/) | Nim | Linux, Windows, macOS | బీకాన్ చైన్, హూడి, సెపోలియా, మరియు మరిన్ని | +| [Prysm](https://prysm.offchainlabs.com/docs/) | Go | Linux, Windows, macOS | బీకాన్ చైన్, గ్నోసిస్, హూడి, పిర్మాంట్, సెపోలియా, మరియు మరిన్ని | +| [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) | జావా | Linux, Windows, macOS | బీకాన్ చైన్, గ్నోసిస్, హూడి, సెపోలియా, మరియు మరిన్ని | +| [Grandine](https://docs.grandine.io/) | Rust | Linux, Windows, macOS | బీకాన్ చైన్, హూడి, సెపోలియా, మరియు మరిన్ని | + +### Lighthouse {#lighthouse} + +Lighthouse అనేది అపాచీ-2.0 లైసెన్స్ క్రింద రస్ట్‌లో వ్రాయబడిన ఒక ఏకాభిప్రాయం క్లయింట్ అమలు. ఇది సిగ్మా ప్రైమ్ చే నిర్వహించబడుతుంది మరియు బీకాన్ చైన్ జెనెసిస్ నుండి స్థిరంగా మరియు ఉత్పత్తి-సిద్ధంగా ఉంది. వివిధ సంస్థలు, స్టేకింగ్ పూల్‌లు మరియు వ్యక్తులు దీనిపై ఆధారపడతారు. డెస్క్‌టాప్ PCల నుండి అధునాతన ఆటోమేటెడ్ విస్తరణల వరకు విస్తృత శ్రేణి పరిసరాలలో సురక్షితంగా, పనితీరుతో మరియు పరస్పరం పనిచేయగలదని ఇది లక్ష్యంగా పెట్టుకుంది. + +[Lighthouse Book](https://lighthouse-book.sigmaprime.io/)లో డాక్యుమెంటేషన్ చూడవచ్చు + +### Lodestar {#lodestar} + +Lodestar అనేది LGPL-3.0 లైసెన్స్ క్రింద టైప్‌స్క్రిప్ట్‌లో వ్రాయబడిన ఉత్పత్తికి సిద్ధంగా ఉన్న ఏకాభిప్రాయం క్లయింట్ అమలు. ఇది చైన్‌సేఫ్ సిస్టమ్స్ చే నిర్వహించబడుతుంది మరియు సోలో-స్టేకర్లు, అభివృద్ధి చేసేవారు మరియు పరిశోధకుల కోసం కొత్త ఏకాభిప్రాయం క్లయింట్‌లలో ఇది ఒకటి. Lodestar లో ఇతీరియము ప్రోటోకాల్స్ యొక్క జావాస్క్రిప్ట్ అమలుల ద్వారా ఆధారితమైన ఒక బీకాన్ నోడ్ మరియు వాలిడేటర్ క్లయింట్ ఉంటాయి. Lodestar తేలికపాటి క్లయింట్‌లతో ఇతీరియము వినియోగాన్ని మెరుగుపరచడం, అభివృద్ధి చేసేవారి పెద్ద సమూహానికి ప్రాప్యతను విస్తరించడం మరియు పర్యావరణ వ్యవస్థ వైవిధ్యానికి మరింత దోహదం చేయడం లక్ష్యంగా పెట్టుకుంది. + +[Lodestar వెబ్‌సైట్](https://lodestar.chainsafe.io/)లో మరింత సమాచారం కనుగొనవచ్చు + +### Nimbus {#nimbus} + +Nimbus అనేది అపాచీ-2.0 లైసెన్స్ క్రింద నిమ్‌లో వ్రాయబడిన ఒక ఏకాభిప్రాయం క్లయింట్ అమలు. ఇది సోలో-స్టేకర్లు మరియు స్టేకింగ్ పూల్స్ ఉపయోగించే ఉత్పత్తికి సిద్ధంగా ఉన్న ఖాతాదారుడు. నింబస్ వనరుల సామర్థ్యం కోసం రూపొందించబడింది, ఇది స్థిరత్వం లేదా రివార్డ్ పనితీరును రాజీ పడకుండా వనరు-పరిమిత పరికరాలు మరియు ఎంటర్‌ప్రైజ్ ఇన్‌ఫ్రాస్ట్రక్చర్‌పై సమాన సౌలభ్యంతో అమలు చేయడం సులభం చేస్తుంది. తేలికపాటి వనరుల ఫుట్‌ప్రింట్ అంటే నెట్‌వర్క్ ఒత్తిడిలో ఉన్నప్పుడు ఖాతాదారుడు ఎక్కువ భద్రతా మార్జిన్‌ను కలిగి ఉంటాడు. + +[Nimbus docs](https://nimbus.guide/)లో మరింత తెలుసుకోండి + +### Prysm {#prysm} + +Prysm అనేది GPL-3.0 లైసెన్స్ క్రింద గోలో వ్రాయబడిన పూర్తి-ఫీచర్డ్, ఓపెన్ సోర్స్ ఏకాభిప్రాయం క్లయింట్. ఇది ఐచ్ఛిక వెబ్‌యాప్ UIని కలిగి ఉంటుంది మరియు ఇంటి నుండి స్టేక్ చేసేవారు మరియు సంస్థాగత వినియోగదారులు ఇద్దరికీ వినియోగదారు అనుభవం, డాక్యుమెంటేషన్ మరియు కాన్ఫిగర్ చేయగల సామర్థ్యానికి ప్రాధాన్యత ఇస్తుంది. + +మరింత తెలుసుకోవడానికి [Prysm docs](https://prysm.offchainlabs.com/docs/) ని సందర్శించండి. + +### Teku {#teku} + +Teku అసలు బీకాన్ చైన్ జెనెసిస్ క్లయింట్‌లలో ఒకటి. సాధారణ లక్ష్యాలతో పాటు (భద్రత, పటిష్టత, స్థిరత్వం, వినియోగం, పనితీరు), టెకు ప్రత్యేకంగా వివిధ ఏకాభిప్రాయం క్లయింట్ ప్రమాణాలకు పూర్తిగా కట్టుబడి ఉండాలని లక్ష్యంగా పెట్టుకుంది. + +Teku చాలా సౌకర్యవంతమైన విస్తరణ ఎంపికలను అందిస్తుంది. బీకాన్ నోడ్ మరియు వాలిడేటర్ క్లయింట్‌ను ఒకే ప్రక్రియగా కలిసి నడపవచ్చు, ఇది సోలో స్టేకర్‌లకు చాలా సౌకర్యవంతంగా ఉంటుంది, లేదా అధునాతన స్టేకింగ్ కార్యకలాపాల కోసం నోడ్‌లను విడిగా నడపవచ్చు. అదనంగా, టెకు సైనింగ్ కీ భద్రత మరియు స్లాషింగ్ రక్షణ కోసం [Web3Signer](https://github.com/ConsenSys/web3signer/)తో పూర్తిగా పరస్పరం పనిచేయగలదు. + +టెకు జావాలో వ్రాయబడింది మరియు అపాచీ 2.0 లైసెన్స్ పొందింది. ఇది Besu మరియు Web3Signerకు కూడా బాధ్యత వహించే ConsenSysలోని ప్రోటోకాల్స్ బృందం ద్వారా అభివృద్ధి చేయబడింది. [Teku docs](https://docs.teku.consensys.net/en/latest/)లో మరింత తెలుసుకోండి. + +### Grandine {#grandine} + +Grandine అనేది GPL-3.0 లైసెన్స్ క్రింద రస్ట్‌లో వ్రాయబడిన ఒక ఏకాభిప్రాయం క్లయింట్ అమలు. ఇది Grandine కోర్ టీమ్ చే నిర్వహించబడుతుంది మరియు వేగవంతమైనది, అధిక-పనితీరు గలది మరియు తేలికైనది. ఇది రాస్ప్బెర్రీ పై వంటి తక్కువ-వనరుల పరికరాలలో నడుస్తున్న సోలో స్టేకర్ల నుండి పదివేల వాలిడేటర్లను నడుపుతున్న పెద్ద సంస్థాగత స్టేకర్ల వరకు విస్తృత శ్రేణి స్టేకర్‌లకు సరిపోతుంది. + +[Grandine Book](https://docs.grandine.io/)లో డాక్యుమెంటేషన్ చూడవచ్చు + +## సమకాలీకరణ మోడ్‌లు {#sync-modes} + +నెట్‌వర్క్‌లో ప్రస్తుత డేటాను అనుసరించడానికి మరియు ధృవీకరించడానికి, ఇతీరియము క్లయింట్ తాజా నెట్‌వర్క్ స్థితితో సింక్ చేయాలి. పీర్స్ నుండి డేటాను డౌన్‌లోడ్ చేయడం, వాటి సమగ్రతను క్రిప్టోగ్రాఫికల్‌గా ధృవీకరించడం మరియు స్థానిక బ్లాక్‌చైన్ డేటాబేస్‌ను నిర్మించడం ద్వారా ఇది జరుగుతుంది. + +సమకాలీకరణ మోడ్‌లు వివిధ లాభనష్టాలతో ఈ ప్రక్రియకు విభిన్న విధానాలను సూచిస్తాయి. ఖాతాదారులు సింక్ అల్గారిథమ్‌ల అమలులో కూడా విభిన్నంగా ఉంటారు. అమలుపై నిర్దిష్టాల కోసం మీరు ఎంచుకున్న ఖాతాదారుని అధికారిక డాక్యుమెంటేషన్‌ను ఎల్లప్పుడూ చూడండి. + +### ఎగ్జిక్యూషన్ లేయర్ సింక్ మోడ్‌లు {#execution-layer-sync-modes} + +బ్లాక్‌చైన్ యొక్క ప్రపంచ స్థితిని తిరిగి అమలు చేయడం నుండి విశ్వసనీయ చెక్‌పాయింట్ నుండి గొలుసు యొక్క చిట్కాతో మాత్రమే సింక్ చేయడం వరకు వివిధ వినియోగ కేసులకు సరిపోయేలా ఎగ్జిక్యూషన్ లేయర్‌ను వివిధ మోడ్‌లలో నడపవచ్చు. + +#### పూర్తి సింక్ {#full-sync} + +పూర్తి సింక్ అన్ని బ్లాక్‌లను (హెడర్‌లు మరియు బ్లాక్ బాడీలతో సహా) డౌన్‌లోడ్ చేస్తుంది మరియు జెనెసిస్ నుండి ప్రతి బ్లాక్‌ను అమలు చేయడం ద్వారా బ్లాక్‌చైన్ స్థితిని క్రమంగా పునరుత్పత్తి చేస్తుంది. + +- ప్రతి లావాదేవీని ధృవీకరించడం ద్వారా నమ్మకాన్ని తగ్గిస్తుంది మరియు అత్యధిక భద్రతను అందిస్తుంది. +- లావాదేవీల సంఖ్య పెరగడంతో, అన్ని లావాదేవీలను ప్రాసెస్ చేయడానికి రోజులు లేదా వారాలు పట్టవచ్చు. + +[ఆర్కైవ్ నోడ్స్](#archive-node) ప్రతి బ్లాక్‌లోని ప్రతి లావాదేవీ ద్వారా చేయబడిన స్థితి మార్పుల పూర్తి చరిత్రను నిర్మించడానికి (మరియు నిలుపుకోవడానికి) పూర్తి సింక్‌ను చేస్తాయి. + +#### ఫాస్ట్ సింక్ {#fast-sync} + +పూర్తి సింక్ లాగానే, ఫాస్ట్ సింక్ అన్ని బ్లాక్‌లను (హెడర్‌లు, లావాదేవీలు మరియు రసీదులతో సహా) డౌన్‌లోడ్ చేస్తుంది. అయినప్పటికీ, చారిత్రక లావాదేవీలను తిరిగి ప్రాసెస్ చేయడానికి బదులుగా, ఒక ఫాస్ట్ సింక్ ఇటీవలి హెడ్‌ను చేరే వరకు రసీదులపై ఆధారపడుతుంది, అప్పుడు పూర్తి నోడ్‌ను అందించడానికి బ్లాక్‌లను దిగుమతి చేయడం మరియు ప్రాసెస్ చేయడానికి మారుతుంది. + +- ఫాస్ట్ సింక్ వ్యూహం. +- బ్యాండ్‌విడ్త్ వినియోగానికి అనుకూలంగా ప్రాసెసింగ్ డిమాండ్‌ను తగ్గిస్తుంది. + +#### స్నాప్ సింక్ {#snap-sync} + +స్నాప్ సింక్‌లు కూడా గొలుసును బ్లాక్-బై-బ్లాక్ ధృవీకరిస్తాయి. అయినప్పటికీ, జెనెసిస్ బ్లాక్ వద్ద ప్రారంభించడానికి బదులుగా, ఒక స్నాప్ సింక్ నిజమైన బ్లాక్‌చైన్‌లో భాగమని తెలిసిన ఇటీవలి 'విశ్వసనీయ' చెక్‌పాయింట్ వద్ద ప్రారంభమవుతుంది. నోడ్ నిర్దిష్ట వయస్సు కంటే పాత డేటాను తొలగిస్తూ క్రమానుగత చెక్‌పాయింట్‌లను సేవ్ చేస్తుంది. ఈ స్నాప్‌షాట్‌లు స్థితి డేటాను శాశ్వతంగా నిల్వ చేయడానికి బదులుగా అవసరమైనప్పుడు పునరుత్పత్తి చేయడానికి ఉపయోగించబడతాయి. + +- అత్యంత వేగవంతమైన సింక్ వ్యూహం, ప్రస్తుతం ఇతీరియము మెయిన్‌నెట్‌లో డిఫాల్ట్. +- భద్రతను త్యాగం చేయకుండా చాలా డిస్క్ వినియోగం మరియు నెట్‌వర్క్ బ్యాండ్‌విడ్త్‌ను ఆదా చేస్తుంది. + +[స్నాప్ సింక్ గురించి మరిన్ని](https://github.com/ethereum/devp2p/blob/master/caps/snap.md). + +#### తేలికపాటి సింక్ {#light-sync} + +తేలికపాటి క్లయింట్ మోడ్ అన్ని బ్లాక్ హెడర్‌లను, బ్లాక్ డేటాను డౌన్‌లోడ్ చేస్తుంది మరియు కొన్నింటిని యాదృచ్ఛికంగా ధృవీకరిస్తుంది. విశ్వసనీయ చెక్‌పాయింట్ నుండి గొలుసు యొక్క చిట్కాను మాత్రమే సింక్ చేస్తుంది. + +- అభివృద్ధి చేసేవారు మరియు ఏకాభిప్రాయం యంత్రాంగంపై నమ్మకంతో ఆధారపడి తాజా స్థితిని మాత్రమే పొందుతుంది. +- కొన్ని నిమిషాల్లో ప్రస్తుత నెట్‌వర్క్ స్థితితో ఉపయోగించడానికి క్లయింట్ సిద్ధంగా ఉంది. + +**NB** తేలికపాటి సింక్ ఇంకా ప్రూఫ్-ఆఫ్-స్టేక్ ఇతీరియముతో పనిచేయదు - తేలికపాటి సింక్ యొక్క కొత్త వెర్షన్లు త్వరలో రావాలి! + +[తేలికపాటి క్లయింట్ల గురించి మరిన్ని](/developers/docs/nodes-and-clients/light-clients/) + +### ఏకాభిప్రాయం లేయర్ సింక్ మోడ్‌లు {#consensus-layer-sync-modes} + +#### ఆప్టిమిస్టిక్ సింక్ {#optimistic-sync} + +ఆప్టిమిస్టిక్ సింక్ అనేది విలీనం అనంతర సమకాలీకరణ వ్యూహం, ఇది ఆప్ట్-ఇన్‌గా మరియు వెనుకకు అనుకూలంగా ఉండేలా రూపొందించబడింది, ఇది ఎగ్జిక్యూషన్ నోడ్‌లను స్థాపిత పద్ధతుల ద్వారా సింక్ చేయడానికి అనుమతిస్తుంది. ఎగ్జిక్యూషన్ ఇంజిన్ బీకాన్ బ్లాక్‌లను పూర్తిగా ధృవీకరించకుండా _ఆశాజనకంగా_ దిగుమతి చేసుకోవచ్చు, తాజా హెడ్‌ను కనుగొని, ఆపై పై పద్ధతులతో గొలుసును సింక్ చేయడం ప్రారంభించవచ్చు. అప్పుడు, ఎగ్జిక్యూషన్ క్లయింట్ పట్టుబడిన తర్వాత, బీకాన్ చైన్‌లోని లావాదేవీల యొక్క ప్రామాణికత గురించి ఏకాభిప్రాయం క్లయింట్‌కు తెలియజేస్తుంది. + +[ఆప్టిమిస్టిక్ సింక్ గురించి మరిన్ని](https://github.com/ethereum/consensus-specs/blob/dev/sync/optimistic.md) + +#### చెక్‌పాయింట్ సింక్ {#checkpoint-sync} + +చెక్‌పాయింట్ సింక్, బలహీనమైన సబ్జెక్టివిటీ సింక్ అని కూడా పిలుస్తారు, బీకాన్ నోడ్‌ను సింక్ చేయడానికి ఒక ఉన్నతమైన వినియోగదారు అనుభవాన్ని సృష్టిస్తుంది. ఇది [బలహీనమైన సబ్జెక్టివిటీ](/developers/docs/consensus-mechanisms/pos/weak-subjectivity/) యొక్క అంచనాలపై ఆధారపడి ఉంటుంది, ఇది జెనెసిస్ బదులుగా ఇటీవలి బలహీనమైన సబ్జెక్టివిటీ చెక్‌పాయింట్ నుండి బీకాన్ చైన్‌ను సింక్ చేయడానికి వీలు కల్పిస్తుంది. చెక్‌పాయింట్ సింక్‌లు [జెనెసిస్](/glossary/#genesis-block) నుండి సింక్ చేయడం వంటి సారూప్య విశ్వాస అంచనాలతో ప్రారంభ సింక్ సమయాన్ని గణనీయంగా వేగవంతం చేస్తాయి. + +ఆచరణలో, దీని అర్థం మీ నోడ్ ఇటీవలి ఖరారు చేయబడిన స్థితులను డౌన్‌లోడ్ చేయడానికి రిమోట్ సేవకు కనెక్ట్ అవుతుంది మరియు ఆ పాయింట్ నుండి డేటాను ధృవీకరించడం కొనసాగిస్తుంది. డేటాను అందించే మూడవ పక్షం విశ్వసనీయమైనది మరియు జాగ్రత్తగా ఎంపిక చేయబడాలి. + +[చెక్‌పాయింట్ సింక్](https://notes.ethereum.org/@djrtwo/ws-sync-in-practice) గురించి మరిన్ని + +## మరింత సమాచారం {#further-reading} + +- [ఇతీరియము 101 - పార్ట్ 2 - నోడ్స్‌ను అర్థం చేసుకోవడం](https://kauri.io/ethereum-101-part-2-understanding-nodes/48d5098292fd4f11b251d1b1814f0bba/a) _– విల్ బర్నెస్, 13 ఫిబ్రవరి 2019_ +- [ఇతీరియము పూర్తి నోడ్స్ నడపడం: కేవలం ప్రేరేపించబడిన వారికి ఒక మార్గదర్శి](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– జస్టిన్ లెరౌక్స్, 7 నవంబర్ 2019_ + +## సంబంధిత అంశాలు {#related-topics} + +- [బ్లాక్‌లు](/developers/docs/blocks/) +- [నెట్‌వర్క్‌లు](/developers/docs/networks/) + +## సంబంధిత ట్యుటోరియల్స్ {#related-tutorials} + +- [మైక్రోఎస్డి కార్డును ఫ్లాష్ చేయడం ద్వారా మీ రాస్ప్బెర్రీ పై 4 ని వ్యాలిడేటర్ నోడ్ గా మార్చండి – ఇన్స్టాలేషన్ గైడ్](/developers/tutorials/run-node-raspberry-pi/) _– మీ రాస్ప్బెర్రీ పై 4 ను ఫ్లాష్ చేయండి, ఈథర్నెట్ కేబుల్ ప్లగ్ ఇన్ చేయండి, ఎస్ఎస్డి డిస్క్ ను కనెక్ట్ చేయండి మరియు రాస్ప్బెర్రీ పై 4 ను ఎగ్జిక్యూషన్ లేయర్ (మెయిన్నెట్) మరియు / లేదా ఏకాభిప్రాయం లేయర్ (బీకాన్ చైన్ / వ్యాలిడేటర్) నడుపుతున్న పూర్తి ఇతీరియము నోడ్ గా మార్చడానికి పరికరాన్ని పవర్ అప్ చేయండి._ diff --git a/public/content/translations/te/developers/docs/nodes-and-clients/light-clients/index.md b/public/content/translations/te/developers/docs/nodes-and-clients/light-clients/index.md new file mode 100644 index 00000000000..e03fb2d74cd --- /dev/null +++ b/public/content/translations/te/developers/docs/nodes-and-clients/light-clients/index.md @@ -0,0 +1,61 @@ +--- +title: "లైట్ క్లయింట్లు" +description: "ఇథిరియం లైట్ క్లయింట్‌లకు పరిచయం." +lang: te +--- + +పూర్తి నోడ్‌ను నడపడం అనేది ఇథిరియంతో పరస్పర చర్య చేయడానికి అత్యంత నమ్మకమైన, ప్రైవేట్, వికేంద్రీకృత మరియు సెన్సార్‌షిప్ నిరోధక మార్గం. పూర్తి నోడ్‌తో మీరు బ్లాక్‌చెయిన్ యొక్క మీ స్వంత కాపీని ఉంచుకుంటారు, దానిని మీరు తక్షణమే ప్రశ్నించవచ్చు మరియు మీరు ఇథిరియం యొక్క పీర్-టు-పీర్ నెట్‌వర్క్‌కు ప్రత్యక్ష ప్రాప్యతను పొందుతారు. అయితే, పూర్తి నోడ్‌ను అమలు చేయడానికి గణనీయమైన మొత్తంలో మెమరీ, స్టోరేజ్ మరియు CPU అవసరం. అంటే ప్రతిఒక్కరూ తమ సొంత నోడ్‌ను నడపడం ఆచరణీయం కాదు. ఇథిరియం రోడ్‌మ్యాప్‌లో దీనికి అనేక పరిష్కారాలు ఉన్నాయి, వాటిలో స్టేట్‌లెస్‌నెస్ కూడా ఉంది, కానీ అవి అమలు చేయడానికి చాలా సంవత్సరాల దూరంలో ఉన్నాయి. సమీప-కాలంలో సమాధానం ఏమిటంటే, చాలా తక్కువ హార్డ్‌వేర్ అవసరాలతో నోడ్‌లను అమలు చేయడానికి అనుమతించే పెద్ద పనితీరు మెరుగుదలల కోసం పూర్తి నోడ్‌ను నడపడం వల్ల కలిగే కొన్ని ప్రయోజనాలను ట్రేడ్-ఆఫ్ చేయడం. ఈ ట్రేడ్-ఆఫ్ చేసే నోడ్‌లను లైట్ నోడ్‌లు అంటారు. + +## లైట్ క్లయింట్ అంటే ఏమిటి {#what-is-a-light-client} + +లైట్ నోడ్ అనేది లైట్ క్లయింట్ సాఫ్ట్‌వేర్‌ను నడుపుతున్న నోడ్. బ్లాక్‌చెయిన్ డేటా యొక్క స్థానిక కాపీలను ఉంచడం మరియు అన్ని మార్పులను స్వతంత్రంగా ధృవీకరించడం బదులు, వారు బదులుగా కొంత ప్రొవైడర్ నుండి అవసరమైన డేటాను అభ్యర్థిస్తారు. ప్రొవైడర్ పూర్తి నోడ్‌కు ప్రత్యక్ష కనెక్షన్ కావచ్చు లేదా కొన్ని కేంద్రీకృత RPC సర్వర్ ద్వారా కావచ్చు. ఆ తర్వాత డేటా లైట్ నోడ్ ద్వారా ధృవీకరించబడుతుంది, ఇది చైన్ యొక్క హెడ్‌తో తాజాగా ఉండటానికి అనుమతిస్తుంది. లైట్ నోడ్ బ్లాక్ హెడర్‌లను మాత్రమే ప్రాసెస్ చేస్తుంది, అప్పుడప్పుడు మాత్రమే అసలు బ్లాక్ కంటెంట్‌లను డౌన్‌లోడ్ చేస్తుంది. నోడ్‌లు తాము నడుపుతున్న లైట్ మరియు పూర్తి క్లయింట్ సాఫ్ట్‌వేర్ కలయికల ఆధారంగా వాటి లైట్‌నెస్‌లో మారవచ్చు. ఉదాహరణకు, తేలికైన కాన్ఫిగరేషన్ లైట్ ఎగ్జిక్యూషన్ క్లయింట్ మరియు లైట్ ఏకాభిప్రాయం క్లయింట్‌ను అమలు చేయడం. అనేక నోడ్‌లు పూర్తి ఎగ్జిక్యూషన్ క్లయింట్‌లతో లైట్ ఏకాభిప్రాయం క్లయింట్‌లను అమలు చేయడానికి ఎంచుకునే అవకాశం ఉంది, లేదా దీనికి విరుద్ధంగా. + +## లైట్ క్లయింట్లు ఎలా పనిచేస్తాయి? {#how-do-light-clients-work} + +ఇథిరియం ప్రూఫ్-ఆఫ్-స్టేక్ ఆధారిత ఏకాభిప్రాయం విధానాన్ని ఉపయోగించడం ప్రారంభించినప్పుడు, లైట్ క్లయింట్‌లకు మద్దతు ఇవ్వడానికి ప్రత్యేకంగా కొత్త మౌలిక సదుపాయాలు ప్రవేశపెట్టబడ్డాయి. ఇది పనిచేసే విధానం ఏమిటంటే, ప్రతి 1.1 రోజులకు 512 మంది వాలిడేటర్‌ల సబ్‌సెట్‌ను యాదృచ్ఛికంగా ఎంచుకోవడం ద్వారా **సింక్ కమిటీ**గా పనిచేయడం. సింక్ కమిటీ ఇటీవలి బ్లాక్‌ల హెడర్‌పై సంతకం చేస్తుంది. ప్రతి బ్లాక్ హెడర్‌లో సింక్ కమిటీలోని వాలిడేటర్‌ల యొక్క సమగ్ర సంతకం మరియు ఏ వాలిడేటర్‌లు సంతకం చేశారో మరియు ఎవరు చేయలేదో చూపే ఒక "బిట్‌ఫీల్డ్" ఉంటుంది. ప్రతి హెడర్‌లో తదుపరి బ్లాక్‌పై సంతకం చేయడంలో పాల్గొనాలని ఆశించే వాలిడేటర్‌ల జాబితా కూడా ఉంటుంది. దీని అర్థం లైట్ క్లయింట్ వారు స్వీకరించే డేటాపై సింక్ కమిటీ సంతకం చేసిందని త్వరగా చూడగలదు, మరియు వారు మునుపటి బ్లాక్‌లో ఆశించమని చెప్పిన దానితో వారు స్వీకరించిన దాన్ని పోల్చడం ద్వారా సింక్ కమిటీ నిజమైనదేనని కూడా తనిఖీ చేయవచ్చు. ఈ విధంగా, లైట్ క్లయింట్ అసలు బ్లాక్‌ను డౌన్‌లోడ్ చేయకుండా, సారాంశ సమాచారాన్ని కలిగి ఉన్న హెడర్‌ను మాత్రమే డౌన్‌లోడ్ చేయడం ద్వారా తాజా ఇథిరియం బ్లాక్ గురించి తన జ్ఞానాన్ని నవీకరించుకుంటూ ఉంటుంది. + +ఎగ్జిక్యూషన్ లేయర్‌లో లైట్ ఎగ్జిక్యూషన్ క్లయింట్ కోసం ఒక్క స్పెసిఫికేషన్ కూడా లేదు. లైట్ ఎగ్జిక్యూషన్ క్లయింట్ యొక్క పరిధి పూర్తి ఎగ్జిక్యూషన్ క్లయింట్ యొక్క "లైట్ మోడ్" నుండి మారవచ్చు, ఇది పూర్తి నోడ్ యొక్క అన్ని EVM మరియు నెట్‌వర్కింగ్ ఫంక్షనాలిటీని కలిగి ఉంటుంది, కానీ అనుబంధిత డేటాను డౌన్‌లోడ్ చేయకుండా, బ్లాక్ హెడర్‌లను మాత్రమే ధృవీకరిస్తుంది, లేదా ఇది ఇథిరియంతో పరస్పర చర్య చేయడానికి RPC ప్రొవైడర్‌కు అభ్యర్థనలను ఫార్వార్డ్ చేయడంపై ఎక్కువగా ఆధారపడే మరింత స్ట్రిప్డ్-డౌన్ క్లయింట్ కావచ్చు. + +## లైట్ క్లయింట్లు ఎందుకు ముఖ్యమైనవి? {#why-are-light-clients-important} + +లైట్ క్లయింట్లు ముఖ్యమైనవి ఎందుకంటే అవి పూర్తి నోడ్ యొక్క గణన వనరులలో చాలా చిన్న భాగాన్ని మాత్రమే ఉపయోగిస్తూ, వారి డేటా ప్రొవైడర్ సరైనది మరియు నిజాయితీగా ఉన్నారని గుడ్డిగా విశ్వసించే బదులు ఇన్‌కమింగ్ డేటాను ధృవీకరించడానికి వినియోగదారులను అనుమతిస్తాయి. లైట్ క్లయింట్లు స్వీకరించే డేటాను వారు 512 ఇథిరియం వాలిడేటర్‌ల యాదృచ్ఛిక సెట్‌లో కనీసం 2/3 మంది సంతకం చేశారని తెలిసిన బ్లాక్ హెడర్‌లతో తనిఖీ చేయవచ్చు. డేటా సరైనదని ఇది చాలా బలమైన సాక్ష్యం. + +లైట్ క్లయింట్ చాలా తక్కువ మొత్తంలో కంప్యూటింగ్ పవర్, మెమరీ మరియు స్టోరేజ్‌ని మాత్రమే ఉపయోగిస్తుంది కాబట్టి దీనిని మొబైల్ ఫోన్‌లో, యాప్‌లో పొందుపరచవచ్చు లేదా బ్రౌజర్‌లో భాగంగా అమలు చేయవచ్చు. లైట్ క్లయింట్లు మూడవ-పక్షం ప్రొవైడర్‌ను విశ్వసించినంత ఘర్షణరహితంగా ఇథిరియంకు నమ్మకాన్ని తగ్గించే యాక్సెస్‌ను చేయడానికి ఒక మార్గం. + +ఒక సాధారణ ఉదాహరణ తీసుకుందాం. మీరు మీ ఖాతా బ్యాలెన్స్‌ను తనిఖీ చేయాలనుకుంటున్నారని ఊహించుకోండి. ఇది చేయడానికి మీరు ఇథిరియం నోడ్‌కు అభ్యర్థన చేయాలి. ఆ నోడ్ మీ బ్యాలెన్స్ కోసం ఇథిరియం స్థితి యొక్క దాని స్థానిక కాపీని తనిఖీ చేసి మీకు తిరిగి ఇస్తుంది. మీకు నోడ్‌కు ప్రత్యక్ష ప్రాప్యత లేకపోతే, ఈ డేటాను సేవగా అందించే కేంద్రీకృత ఆపరేటర్లు ఉన్నారు. మీరు వారికి ఒక అభ్యర్థనను పంపవచ్చు, వారు వారి నోడ్‌ను తనిఖీ చేస్తారు మరియు ఫలితాన్ని మీకు తిరిగి పంపుతారు. దీనితో ఉన్న సమస్య ఏమిటంటే, మీకు సరైన సమాచారం ఇస్తున్నారని మీరు ప్రొవైడర్‌ను విశ్వసించాల్సి ఉంటుంది. మీరు మీ కోసం దాన్ని ధృవీకరించలేకపోతే సమాచారం సరైనదని మీరు నిజంగా ఎప్పటికీ తెలుసుకోలేరు. + +ఒక లైట్ క్లయింట్ ఈ సమస్యను పరిష్కరిస్తుంది. మీరు ఇప్పటికీ కొన్ని బాహ్య ప్రొవైడర్ నుండి డేటాను అభ్యర్థిస్తారు, కానీ మీరు డేటాను తిరిగి స్వీకరించినప్పుడు అది మీ లైట్ నోడ్ బ్లాక్ హెడర్‌లో అందుకున్న సమాచారానికి వ్యతిరేకంగా తనిఖీ చేయగల రుజువుతో వస్తుంది. దీని అర్థం కొంత విశ్వసనీయ ఆపరేటర్‌కు బదులుగా ఇథిరియం మీ డేటా యొక్క ఖచ్చితత్వాన్ని ధృవీకరిస్తోంది. + +## లైట్ క్లయింట్లు ఏ ఆవిష్కరణలను ప్రారంభిస్తాయి? {#what-innovations-do-light-clients-enable} + +లైట్ క్లయింట్ల యొక్క ప్రాథమిక ప్రయోజనం ఏమిటంటే, ఎక్కువ మంది వ్యక్తులు ఇథిరియంను స్వతంత్రంగా యాక్సెస్ చేయడానికి వీలు కల్పించడం, అతి తక్కువ హార్డ్‌వేర్ అవసరాలు మరియు మూడవ పక్షాలపై కనీస ఆధారపడటంతో. ఇది వినియోగదారులకు మంచిది ఎందుకంటే వారు తమ స్వంత డేటాను ధృవీకరించగలరు మరియు ఇది నెట్‌వర్క్‌కు మంచిది ఎందుకంటే ఇది చైన్‌ను ధృవీకరించే నోడ్‌ల సంఖ్య మరియు వైవిధ్యాన్ని పెంచుతుంది. + +చాలా చిన్న స్టోరేజ్, మెమరీ మరియు ప్రాసెసింగ్ పవర్ ఉన్న పరికరాలలో ఇథిరియం నోడ్‌లను అమలు చేయగల సామర్థ్యం లైట్ క్లయింట్‌ల ద్వారా అన్‌లాక్ చేయబడిన ఆవిష్కరణ యొక్క ప్రధాన రంగాలలో ఒకటి. నేడు ఇథిరియం నోడ్‌లకు చాలా కంప్యూటింగ్ వనరులు అవసరం అయితే, లైట్ క్లయింట్‌లను బ్రౌజర్‌లలో పొందుపరచవచ్చు, మొబైల్ ఫోన్‌లలో మరియు బహుశా స్మార్ట్ వాచ్‌ల వంటి చిన్న పరికరాలలో కూడా అమలు చేయవచ్చు. దీని అర్థం పొందుపరిచిన క్లయింట్‌లతో కూడిన ఇథిరియం వాలెట్‌లు మొబైల్ ఫోన్‌లో నడుస్తాయి. దీని అర్థం మొబైల్ వాలెట్లు వాటి డేటా కోసం కేంద్రీకృత డేటా ప్రొవైడర్లను విశ్వసించాల్సిన అవసరం లేనందున చాలా వికేంద్రీకృతం కావచ్చు. + +దీని యొక్క పొడిగింపు **ఇంటర్నెట్ ఆఫ్ థింగ్స్ (IoT)** పరికరాలను ప్రారంభించడం. ఒక లైట్ క్లయింట్‌ను సింక్ కమిటీలు అందించే అన్ని భద్రతా హామీలతో, కొంత టోకెన్ బ్యాలెన్స్ లేదా NFT యొక్క యాజమాన్యాన్ని త్వరగా నిరూపించడానికి ఉపయోగించవచ్చు, ఇది IoT నెట్‌వర్క్‌లో కొంత చర్యను ప్రేరేపిస్తుంది. మీరు అద్దె సేవ యొక్క NFTని కలిగి ఉన్నారని త్వరగా ధృవీకరించడానికి పొందుపరిచిన లైట్ క్లయింట్‌తో కూడిన యాప్‌ను ఉపయోగించే [సైకిల్ అద్దె సేవను](https://youtu.be/ZHNrAXf3RDE?t=929) ఊహించుకోండి మరియు అలా అయితే, మీరు తొక్కడానికి ఒక సైకిల్‌ను అన్‌లాక్ చేస్తుంది! + +ఇథిరియం రోల్అప్‌లు కూడా లైట్ క్లయింట్‌ల నుండి ప్రయోజనం పొందుతాయి. రోల్అప్‌ల కోసం ఉన్న పెద్ద సమస్యలలో ఒకటి, ఇథిరియం Mainnet నుండి రోల్అప్‌కు నిధులను బదిలీ చేయడానికి అనుమతించే బ్రిడ్జ్‌లను లక్ష్యంగా చేసుకున్న హ్యాక్‌లు. ఒక వినియోగదారుడు బ్రిడ్జ్‌లో డిపాజిట్ చేశారని గుర్తించడానికి రోల్అప్‌లు ఉపయోగించే ఒరాకిల్స్ ఒక బలహీనత. ఒకవేళ ఒరాకిల్ చెడు డేటాను ఫీడ్ చేస్తే, వారు రోల్అప్‌ను బ్రిడ్జ్‌కు డిపాజిట్ ఉందని మరియు తప్పుగా నిధులను విడుదల చేయమని మోసగించవచ్చు. రోల్అప్‌లో పొందుపరిచిన లైట్ క్లయింట్‌ను పాడైన ఒరాకిల్స్ నుండి రక్షించడానికి ఉపయోగించవచ్చు, ఎందుకంటే బ్రిడ్జ్‌లోనికి డిపాజిట్ చేయడం అనేది ఏవైనా టోకెన్‌లను విడుదల చేయడానికి ముందు రోల్అప్ ద్వారా ధృవీకరించబడే రుజువుతో రావచ్చు. అదే భావనను ఇతర ఇంటర్‌చైన్ బ్రిడ్జ్‌లకు కూడా వర్తింపజేయవచ్చు. + +ఇథిరియం వాలెట్‌లను అప్‌గ్రేడ్ చేయడానికి కూడా లైట్ క్లయింట్‌లను ఉపయోగించవచ్చు. RPC ప్రొవైడర్ నుండి అందించిన డేటాను విశ్వసించే బదులు, మీ వాలెట్ పొందుపరిచిన లైట్ క్లయింట్‌ను ఉపయోగించి మీకు అందించబడుతున్న డేటాను నేరుగా ధృవీకరించగలదు. ఇది మీ వాలెట్‌కు భద్రతను జోడిస్తుంది. మీ RPC ప్రొవైడర్ నిజాయితీ లేనివాడై, మీకు తప్పు డేటాను అందిస్తే, పొందుపరిచిన లైట్ క్లయింట్ మీకు చెప్పగలదు! + +## లైట్ క్లయింట్ అభివృద్ధి యొక్క ప్రస్తుత స్థితి ఏమిటి? {#current-state-of-development} + +ఎగ్జిక్యూషన్, ఏకాభిప్రాయం మరియు మిశ్రమ ఎగ్జిక్యూషన్/ఏకాభిప్రాయం లైట్ క్లయింట్‌లతో సహా అనేక లైట్ క్లయింట్లు అభివృద్ధిలో ఉన్నాయి. ఈ పేజీ రాసే సమయానికి మాకు తెలిసిన లైట్ క్లయింట్ అమలులు ఇవి: + +- [Lodestar](https://github.com/ChainSafe/lodestar/tree/unstable/packages/light-client): TypeScript లో ఏకాభిప్రాయం లైట్ క్లయింట్ +- [Helios](https://github.com/a16z/helios): Rust లో మిశ్రమ ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయం లైట్ క్లయింట్ +- [Geth](https://github.com/ethereum/go-ethereum/tree/master/beacon/light): Go లో ఎగ్జిక్యూషన్ క్లయింట్ కోసం లైట్ మోడ్ (అభివృద్ధిలో ఉంది) +- [Nimbus](https://nimbus.guide/el-light-client.html): Nim లో ఏకాభిప్రాయం లైట్ క్లయింట్ + +మాకు తెలిసినంత వరకు వీటిలో ఏవీ ఇంకా ప్రొడక్షన్-సిద్ధంగా పరిగణించబడలేదు. + +లైట్ క్లయింట్లు ఇథిరియం డేటాను యాక్సెస్ చేయగల మార్గాలను మెరుగుపరచడానికి కూడా చాలా పని జరుగుతోంది. ప్రస్తుతం, లైట్ క్లయింట్లు క్లయింట్/సర్వర్ మోడల్‌ను ఉపయోగించి పూర్తి నోడ్‌లకు RPC అభ్యర్థనలపై ఆధారపడతాయి, కానీ భవిష్యత్తులో డేటాను [పోర్టల్ నెట్‌వర్క్](https://www.ethportal.net/) వంటి ప్రత్యేక నెట్‌వర్క్‌ను ఉపయోగించి మరింత వికేంద్రీకృత మార్గంలో అభ్యర్థించవచ్చు, ఇది పీర్-టు-పీర్ గాసిప్ ప్రోటోకాల్ ఉపయోగించి లైట్ క్లయింట్‌లకు డేటాను అందించగలదు. + +[Verkle trees](/roadmap/verkle-trees/) మరియు [statelessness](/roadmap/statelessness/) వంటి ఇతర [రోడ్‌మ్యాప్](/roadmap/) అంశాలు చివరికి లైట్ క్లయింట్‌ల భద్రతా హామీలను పూర్తి క్లయింట్‌లతో సమానంగా తీసుకువస్తాయి. + +## మరింత సమాచారం {#further-reading} + +- [Geth లైట్ క్లయింట్లపై జ్సోల్ట్ ఫెల్ఫోధి](https://www.youtube.com/watch?v=EPZeFXau-RE) +- [లైట్ క్లయింట్ నెట్‌వర్కింగ్‌పై ఎటాన్ కిస్లింగ్](https://www.youtube.com/watch?v=85MeiMA4dD8) +- [ది మెర్జ్ తర్వాత లైట్ క్లయింట్లపై ఎటాన్ కిస్లింగ్](https://www.youtube.com/watch?v=ZHNrAXf3RDE) +- [పైపర్ మెరియం: ఫంక్షనల్ లైట్ క్లయింట్‌లకు వంకర టింకర మార్గం](https://snakecharmers.ethereum.org/the-winding-road-to-functional-light-clients/) diff --git a/public/content/translations/te/developers/docs/nodes-and-clients/node-architecture/index.md b/public/content/translations/te/developers/docs/nodes-and-clients/node-architecture/index.md new file mode 100644 index 00000000000..0d201699378 --- /dev/null +++ b/public/content/translations/te/developers/docs/nodes-and-clients/node-architecture/index.md @@ -0,0 +1,59 @@ +--- +title: "నోడ్ నిర్మాణం" +description: "ఎథేరియం నోడ్స్ ఎలా నిర్వహించబడతాయో దానికి పరిచయం." +lang: te +--- + +ఒక ఎథేరియం నోడ్ రెండు క్లయింట్‌లను కలిగి ఉంటుంది: ఒక [ఎగ్జిక్యూషన్ క్లయింట్](/developers/docs/nodes-and-clients/#execution-clients) మరియు ఒక [ఏకాభిప్రాయం క్లయింట్](/developers/docs/nodes-and-clients/#consensus-clients). ఒక నోడ్ కొత్త బ్లాక్‌ను ప్రతిపాదించాలంటే, అది ఒక [వాలిడేటర్ క్లయింట్‌ను](#validators) కూడా రన్ చేయాలి. + +ఎథేరియం [ప్రూఫ్-ఆఫ్-వర్క్](/developers/docs/consensus-mechanisms/pow/) ను ఉపయోగిస్తున్నప్పుడు, ఒక పూర్తి ఎథేరియం నోడ్‌ను రన్ చేయడానికి ఒక ఎగ్జిక్యూషన్ క్లయింట్ సరిపోయేది. అయితే, [ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pow/)ను అమలు చేసినప్పటి నుండి, ఎగ్జిక్యూషన్ క్లయింట్‌ను [ఏకాభిప్రాయం క్లయింట్](/developers/docs/nodes-and-clients/#consensus-clients) అని పిలిచే మరొక సాఫ్ట్‌వేర్‌తో పాటు ఉపయోగించాలి. + +కింది రేఖాచిత్రం రెండు ఎథేరియం క్లయింట్‌ల మధ్య సంబంధాన్ని చూపిస్తుంది. రెండు క్లయింట్‌లు వాటి స్వంత పీర్-టు-పీర్ (P2P) నెట్‌వర్క్‌లకు కనెక్ట్ అవుతాయి. ప్రత్యేక P2P నెట్‌వర్క్‌లు అవసరం, ఎందుకంటే ఎగ్జిక్యూషన్ క్లయింట్లు వాటి P2P నెట్‌వర్క్‌లో లావాదేవీలను గాసిప్ చేస్తాయి, తద్వారా వాటి స్థానిక లావాదేవీల పూల్‌ను నిర్వహించుకుంటాయి, అదే సమయంలో ఏకాభిప్రాయం క్లయింట్లు వాటి P2P నెట్‌వర్క్‌లో బ్లాక్‌లను గాసిప్ చేస్తాయి, తద్వారా ఏకాభిప్రాయం మరియు చైన్ వృద్ధి సాధ్యమవుతుంది. + +![](node-architecture-text-background.png) + +_ఎగ్జిక్యూషన్ క్లయింట్ కోసం Erigon, Nethermind, మరియు Besuతో సహా అనేక ఎంపికలు ఉన్నాయి._ + +ఈ రెండు-క్లయింట్ నిర్మాణం పనిచేయాలంటే, ఏకాభిప్రాయం క్లయింట్‌లు లావాదేవీల బండిల్‌లను ఎగ్జిక్యూషన్ క్లయింట్‌కు పంపాలి. లావాదేవీలు ఏ ఎథేరియం నియమాలను ఉల్లంఘించలేదని మరియు ఎథేరియం యొక్క స్టేట్‌కు ప్రతిపాదిత అప్‌డేట్ సరైనదని ధృవీకరించడానికి ఎగ్జిక్యూషన్ క్లయింట్ లావాదేవీలను స్థానికంగా అమలు చేస్తుంది. ఒక నోడ్ బ్లాక్ ప్రొడ్యూసర్‌గా ఎంపికైనప్పుడు, దాని ఏకాభిప్రాయం క్లయింట్ ఇన్‌స్టాన్స్ కొత్త బ్లాక్‌లో చేర్చడానికి ఎగ్జిక్యూషన్ క్లయింట్ నుండి లావాదేవీల బండిల్‌లను అభ్యర్థిస్తుంది మరియు గ్లోబల్ స్టేట్‌ను అప్‌డేట్ చేయడానికి వాటిని అమలు చేస్తుంది. ఏకాభిప్రాయం క్లయింట్ [ఇంజిన్ API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md)ని ఉపయోగించి స్థానిక RPC కనెక్షన్ ద్వారా ఎగ్జిక్యూషన్ క్లయింట్‌ను నడుపుతుంది. + +## ఎగ్జిక్యూషన్ క్లయింట్ ఏమి చేస్తుంది? {#execution-client} + +ఎగ్జిక్యూషన్ క్లయింట్ లావాదేవీల ధ్రువీకరణ, నిర్వహణ మరియు గాసిప్‌తో పాటు స్టేట్ నిర్వహణ మరియు ఎథేరియం వర్చువల్ మషీన్ ([EVM](/developers/docs/evm/))కు మద్దతు ఇవ్వడానికి బాధ్యత వహిస్తుంది. ఇది బ్లాక్ నిర్మాణం, బ్లాక్ గాసిపింగ్ లేదా ఏకాభిప్రాయం లాజిక్‌ను నిర్వహించడానికి **బాధ్యత వహించదు**. ఇవి ఏకాభిప్రాయం క్లయింట్ పరిధిలోకి వస్తాయి. + +ఎగ్జిక్యూషన్ క్లయింట్ ఎగ్జిక్యూషన్ పేలోడ్‌లను సృష్టిస్తుంది - లావాదేవీల జాబితా, అప్‌డేట్ చేయబడిన స్టేట్ ట్రై మరియు ఇతర ఎగ్జిక్యూషన్-సంబంధిత డేటా. ఏకాభిప్రాయం క్లయింట్లు ప్రతి బ్లాక్‌లో ఎగ్జిక్యూషన్ పేలోడ్‌ను చేర్చుతాయి. కొత్త బ్లాక్‌లలోని లావాదేవీలు చెల్లుబాటు అయ్యేలా చూసుకోవడానికి వాటిని తిరిగి అమలు చేయడానికి కూడా ఎగ్జిక్యూషన్ క్లయింట్ బాధ్యత వహిస్తుంది. లావాదేవీలను అమలు చేయడం అనేది [ఎథేరియం వర్చువల్ మషీన్ (EVM)](/developers/docs/evm) అని పిలువబడే ఎగ్జిక్యూషన్ క్లయింట్ యొక్క ఎంబెడెడ్ కంప్యూటర్‌లో జరుగుతుంది. + +ఎగ్జిక్యూషన్ క్లయింట్ [RPC పద్ధతుల](/developers/docs/apis/json-rpc) ద్వారా ఎథేరియంకు ఒక యూజర్ ఇంటర్‌ఫేస్‌ను కూడా అందిస్తుంది, ఇది వినియోగదారులను ఎథేరియం బ్లాక్‌చెయిన్‌ను క్వెరీ చేయడానికి, లావాదేవీలను సమర్పించడానికి మరియు స్మార్ట్ కాంట్రాక్ట్‌లను డిప్లాయ్ చేయడానికి వీలు కల్పిస్తుంది. RPC కాల్స్ [Web3js](https://docs.web3js.org/), [Web3py](https://web3py.readthedocs.io/en/v5/) వంటి లైబ్రరీ ద్వారా లేదా బ్రౌజర్ వాలెట్ వంటి యూజర్-ఇంటర్‌ఫేస్ ద్వారా నిర్వహించబడటం సాధారణం. + +సారాంశంలో, ఎగ్జిక్యూషన్ క్లయింట్: + +- ఎథేరియంకు ఒక యూజర్ గేట్‌వే +- ఎథేరియం వర్చువల్ మషీన్, ఎథేరియం యొక్క స్టేట్ మరియు లావాదేవీల పూల్‌కు నిలయం. + +## ఏకాభిప్రాయం క్లయింట్ ఏమి చేస్తుంది? {#consensus-client} + +ఏకాభిప్రాయం క్లయింట్ ఒక నోడ్‌ను ఎథేరియం నెట్‌వర్క్‌తో సింక్‌లో ఉంచడానికి వీలు కల్పించే అన్ని లాజిక్‌లతో వ్యవహరిస్తుంది. ఇందులో పీర్స్ నుండి బ్లాక్‌లను స్వీకరించడం మరియు నోడ్ ఎల్లప్పుడూ అత్యధిక అటెస్టేషన్‌ల (వాలిడేటర్ ప్రభావవంతమైన బ్యాలెన్స్‌ల ద్వారా వెయిటెడ్) సమీకరణతో ఉన్న చైన్‌ను అనుసరించేలా చేయడానికి ఒక ఫోర్క్ ఛాయిస్ అల్గారిథమ్‌ను రన్ చేయడం వంటివి ఉంటాయి. ఎగ్జిక్యూషన్ క్లయింట్‌ల మాదిరిగానే, ఏకాభిప్రాయం క్లయింట్‌లు కూడా తమ సొంత P2P నెట్‌వర్క్‌ను కలిగి ఉంటాయి, దాని ద్వారా అవి బ్లాక్‌లు మరియు అటెస్టేషన్‌లను పంచుకుంటాయి. + +ఏకాభిప్రాయం క్లయింట్ బ్లాక్‌లను అటెస్ట్ చేయడంలో లేదా ప్రతిపాదించడంలో పాల్గొనదు - ఇది ఏకాభిప్రాయం క్లయింట్‌కు ఐచ్ఛిక యాడ్-ఆన్ అయిన వాలిడేటర్ ద్వారా చేయబడుతుంది. వాలిడేటర్ లేని ఏకాభిప్రాయం క్లయింట్ చైన్ యొక్క హెడ్‌తో మాత్రమే కొనసాగుతుంది, ఇది నోడ్‌ను సింక్‌లో ఉండటానికి అనుమతిస్తుంది. ఇది ఒక వినియోగదారుడు తమ ఎగ్జిక్యూషన్ క్లయింట్‌ను ఉపయోగించి, తాము సరైన చైన్‌లో ఉన్నామని నమ్మకంతో ఎథేరియంతో లావాదేవీలు చేయడానికి వీలు కల్పిస్తుంది. + +## వాలిడేటర్లు {#validators} + +స్టేకింగ్ చేయడం మరియు వాలిడేటర్ సాఫ్ట్‌వేర్‌ను రన్ చేయడం ఒక నోడ్‌ను కొత్త బ్లాక్‌ను ప్రతిపాదించడానికి ఎంపిక కావడానికి అర్హమైనదిగా చేస్తుంది. నోడ్ ఆపరేటర్లు డిపాజిట్ కాంట్రాక్ట్‌లో 32 ETH డిపాజిట్ చేయడం ద్వారా వారి ఏకాభిప్రాయం క్లయింట్‌లకు ఒక వాలిడేటర్‌ను జోడించవచ్చు. వాలిడేటర్ క్లయింట్ ఏకాభిప్రాయం క్లయింట్‌తో బండిల్ చేయబడి వస్తుంది మరియు ఎప్పుడైనా ఒక నోడ్‌కు జోడించబడుతుంది. వాలిడేటర్ అటెస్టేషన్‌లను మరియు బ్లాక్ ప్రతిపాదనలను నిర్వహిస్తుంది. ఇది ఒక నోడ్‌కు పెనాల్టీలు లేదా స్లాషింగ్ ద్వారా రివార్డులను సంపాదించడానికి లేదా ETH కోల్పోవడానికి కూడా వీలు కల్పిస్తుంది. + +[స్టేకింగ్ గురించి మరింత](/staking/). + +## నోడ్ భాగాల పోలిక {#node-comparison} + +| ఎగ్జిక్యూషన్ క్లయింట్ | ఏకాభిప్రాయం క్లయింట్ | వాలిడేటర్ | +| ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | +| దాని P2P నెట్‌వర్క్‌లో లావాదేవీలను గాసిప్ చేస్తుంది | దాని P2P నెట్‌వర్క్‌లో బ్లాక్‌లు మరియు అటెస్టేషన్‌లను గాసిప్ చేస్తుంది | బ్లాక్‌లను ప్రతిపాదిస్తుంది | +| లావాదేవీలను అమలు చేస్తుంది/పునః-అమలు చేస్తుంది | ఫోర్క్ ఛాయిస్ అల్గారిథమ్‌ను నడుపుతుంది | రివార్డులు/పెనాల్టీలను పొందుతుంది | +| ఇన్‌కమింగ్ స్టేట్ మార్పులను ధృవీకరిస్తుంది | చైన్ యొక్క హెడ్‌ను ట్రాక్ చేస్తుంది | అటెస్టేషన్‌లను చేస్తుంది | +| స్టేట్ మరియు రసీదుల ట్రైలను నిర్వహిస్తుంది | బీకన్ స్టేట్‌ను నిర్వహిస్తుంది (ఏకాభిప్రాయం మరియు ఎగ్జిక్యూషన్ సమాచారాన్ని కలిగి ఉంటుంది) | 32 ETH స్టేక్ చేయాలి | +| ఎగ్జిక్యూషన్ పేలోడ్‌ను సృష్టిస్తుంది | RANDAOలో పేరుకుపోయిన రాండమ్‌నెస్‌ను ట్రాక్ చేస్తుంది (ఇది వాలిడేటర్ ఎంపిక మరియు ఇతర ఏకాభిప్రాయం కార్యకలాపాల కోసం ధృవీకరించదగిన రాండమ్‌నెస్‌ను అందించే ఒక అల్గారిథమ్) | స్లాష్ చేయబడవచ్చు | +| ఎథేరియంతో ఇంటరాక్ట్ అవ్వడానికి JSON-RPC APIని బహిర్గతం చేస్తుంది | జస్టిఫికేషన్ మరియు ఫైనలైజేషన్‌ను ట్రాక్ చేస్తుంది | | + +## మరింత సమాచారం {#further-reading} + +- [ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos) +- [బ్లాక్ ప్రతిపాదన](/developers/docs/consensus-mechanisms/pos/block-proposal) +- [వాలిడేటర్ రివార్డులు మరియు పెనాల్టీలు](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties) diff --git a/public/content/translations/te/developers/docs/nodes-and-clients/nodes-as-a-service/index.md b/public/content/translations/te/developers/docs/nodes-and-clients/nodes-as-a-service/index.md new file mode 100644 index 00000000000..1c903434c0d --- /dev/null +++ b/public/content/translations/te/developers/docs/nodes-and-clients/nodes-as-a-service/index.md @@ -0,0 +1,418 @@ +--- +title: "ఒక సేవగా నోడ్స్" +description: "నోడ్ సేవల యొక్క ఎంట్రీ-లెవల్ అవలోకనం, లాభనష్టాలు మరియు ప్రముఖ ప్రొవైడర్లు." +lang: te +sidebarDepth: 2 +--- + +## పరిచయం {#Introduction} + +మీ స్వంత [ఇతీరియము నోడ్](/developers/docs/nodes-and-clients/#what-are-nodes-and-clients)ను అమలు చేయడం సవాలుగా ఉంటుంది, ముఖ్యంగా ప్రారంభించేటప్పుడు లేదా వేగంగా స్కేలింగ్ చేస్తున్నప్పుడు. మీ కోసం ఆప్టిమైజ్ చేసిన నోడ్ మౌలిక సదుపాయాలను అమలు చేసే [అనేక సేవలు](#popular-node-services) ఉన్నాయి, కాబట్టి మీరు బదులుగా మీ అప్లికేషన్ లేదా ఉత్పత్తిని అభివృద్ధి చేయడంపై దృష్టి పెట్టవచ్చు. నోడ్ సేవలు ఎలా పనిచేస్తాయో, వాటిని ఉపయోగించడం వల్ల కలిగే లాభనష్టాలను మేము వివరిస్తాము మరియు మీరు ప్రారంభించడానికి ఆసక్తి కలిగి ఉంటే ప్రొవైడర్లను జాబితా చేస్తాము. + +## అవసరాలు {#prerequisites} + +నోడ్స్ మరియు ఖాతాదారులు అంటే ఏమిటో మీకు ఇప్పటికే అవగాహన లేకపోతే, [నోడ్స్ మరియు ఖాతాదారులు](/developers/docs/nodes-and-clients/)ను చూడండి. + +## స్టేకర్లు {#stakoooooooooooooors} + +సోలో స్టేకర్లు థర్డ్-పార్టీ ప్రొవైడర్లపై ఆధారపడకుండా వారి స్వంత మౌలిక సదుపాయాలను అమలు చేయాలి. అంటే, ఒక ఎగ్జిక్యూషన్ క్లయింట్‌ను ఒక ఏకాభిప్రాయం క్లయింట్‌తో కలిపి అమలు చేయడం. [ది మెర్జ్](/roadmap/merge)కి ముందు, కేవలం ఏకాభిప్రాయం క్లయింట్‌ను అమలు చేయడం మరియు ఎగ్జిక్యూషన్ డేటా కోసం కేంద్రీకృత ప్రొవైడర్‌ను ఉపయోగించడం సాధ్యమైంది; ఇది ఇప్పుడు సాధ్యం కాదు - ఒక సోలో స్టేకర్ రెండు క్లయింట్‌లను అమలు చేయాలి. అయితే, ఈ ప్రక్రియను సులభతరం చేయడానికి సేవలు అందుబాటులో ఉన్నాయి. + +[నోడ్ అమలు చేయడంపై మరింత చదవండి](/developers/docs/nodes-and-clients/run-a-node/). + +ఈ పేజీలో వివరించిన సేవలు నాన్-స్టేకింగ్ నోడ్స్ కోసం. + +## నోడ్ సేవలు ఎలా పనిచేస్తాయి? {#how-do-node-services-work} + +నోడ్ సర్వీస్ ప్రొవైడర్లు మీ కోసం తెర వెనుక పంపిణీ చేయబడిన నోడ్ ఖాతాదారులను నడుపుతారు, కాబట్టి మీరు చేయనవసరం లేదు. + +ఈ సేవలు సాధారణంగా ఒక API కీని అందిస్తాయి, దీనిని మీరు బ్లాక్ చైనుకు వ్రాయడానికి మరియు చదవడానికి ఉపయోగించవచ్చు. వారు తరచుగా మెయిన్‌నెట్‌తో పాటు [ఇతీరియము టెస్టునెట్‌లకు](/developers/docs/networks/#ethereum-testnets) యాక్సెస్‌ను కలిగి ఉంటారు. + +కొన్ని సేవలు మీ కోసం వారు నిర్వహించే మీ స్వంత ప్రత్యేక నోడ్‌ను మీకు అందిస్తాయి, మరికొన్ని నోడ్స్‌లో కార్యకలాపాలను పంపిణీ చేయడానికి లోడ్ బ్యాలెన్సర్‌లను ఉపయోగిస్తాయి. + +దాదాపు అన్ని నోడ్ సేవలు ఏకీకృతం చేయడానికి చాలా సులభం, మీ స్వీయ హోస్ట్ చేసిన నోడ్‌ను మార్పిడి చేయడానికి మీ సంకేత భాషలో ఒక లైన్ మార్పులను కలిగి ఉంటాయి, లేదా సేవల మధ్య మారడానికి కూడా. + +తరచుగా నోడ్ సేవలు వివిధ రకాల [నోడ్ ఖాతాదారులను](/developers/docs/nodes-and-clients/#execution-clients) మరియు [రకాలను](/developers/docs/nodes-and-clients/#node-types) అమలు చేస్తాయి, ఒకే API లో క్లయింట్ నిర్దిష్ట పద్ధతులతో పాటు పూర్తి మరియు ఆర్కైవ్ నోడ్లను యాక్సెస్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. + +నోడ్ సేవలు మీ ప్రైవేట్ కీలను లేదా సమాచారాన్ని నిల్వ చేయవని మరియు చేయకూడదని గమనించడం ముఖ్యం. + +## ఒక నోడ్ సేవను ఉపయోగించడం వల్ల కలిగే ప్రయోజనాలు ఏమిటి? {#benefits-of-using-a-node-service} + +ఒక నోడ్ సేవను ఉపయోగించడం వల్ల ప్రధాన ప్రయోజనం ఏమిటంటే, మీరే నోడ్స్‌ను నిర్వహించడం మరియు నిర్వహించడం కోసం ఇంజనీరింగ్ సమయాన్ని వెచ్చించాల్సిన అవసరం లేదు. ఇది మౌలిక సదుపాయాల నిర్వహణ గురించి చింతించకుండా మీ ఉత్పత్తిని నిర్మించడంపై దృష్టి పెట్టడానికి మిమ్మల్ని అనుమతిస్తుంది. + +స్టోరేజ్ నుండి బ్యాండ్‌విడ్త్ వరకు విలువైన ఇంజనీరింగ్ సమయం వరకు మీ స్వంత నోడ్స్‌ను అమలు చేయడం చాలా ఖరీదైనది. స్కేలింగ్ చేసేటప్పుడు మరిన్ని నోడ్స్‌ను స్పిన్ చేయడం, నోడ్స్‌ను తాజా వెర్షన్‌లకు అప్‌గ్రేడ్ చేయడం మరియు స్టేట్ స్థిరత్వాన్ని నిర్ధారించడం వంటివి మీ కోరుకున్న web3 ఉత్పత్తిపై వనరులను నిర్మించడం మరియు ఖర్చు చేయడం నుండి దృష్టి మరల్చగలవు. + +## ఒక నోడ్ సేవను ఉపయోగించడం వల్ల కలిగే నష్టాలు ఏమిటి? {#cons-of-using-a-node-service} + +ఒక నోడ్ సేవను ఉపయోగించడం ద్వారా మీరు మీ ఉత్పత్తి యొక్క మౌలిక సదుపాయాల అంశాన్ని కేంద్రీకృతం చేస్తున్నారు. ఈ కారణంగా, వికేంద్రీకరణకు అత్యంత ప్రాముఖ్యతనిచ్చే ప్రాజెక్టులు 3వ పక్షానికి అవుట్‌సోర్సింగ్ చేయడం కంటే స్వీయ-హోస్టింగ్ నోడ్స్‌ను ఇష్టపడవచ్చు. + +మీ స్వంత నోడ్‌ను అమలు చేయడం వల్ల కలిగే [ప్రయోజనాల గురించి మరింత చదవండి](/developers/docs/nodes-and-clients/#benefits-to-you). + +## ప్రముఖ నోడ్ సేవలు {#popular-node-services} + +ఇక్కడ కొన్ని అత్యంత ప్రముఖ ఇతీరియము నోడ్ ప్రొవైడర్ల జాబితా ఉంది, తప్పిపోయిన వాటిని జోడించడానికి సంకోచించకండి! ప్రతి నోడ్ సేవ ఉచిత లేదా చెల్లింపు శ్రేణులతో పాటు విభిన్న ప్రయోజనాలు మరియు ఫీచర్‌లను అందిస్తుంది, నిర్ణయం తీసుకునే ముందు మీ అవసరాలకు ఏవి ఉత్తమంగా సరిపోతాయో మీరు పరిశోధించాలి. + +- [**Alchemy**](https://alchemy.com/) + - [డాక్స్](https://www.alchemy.com/docs/) + - లక్షణాలు + - నెలకు 300M కంప్యూట్ యూనిట్లతో అతిపెద్ద ఉచిత శ్రేణి (~30M getLatestBlock అభ్యర్థనలు) + - Polygon, Starknet, Optimism, Arbitrum కోసం మల్టీచైన్ మద్దతు + - ~70% అతిపెద్ద ఇతీరియము డాప్స్ మరియు DeFi లావాదేవీల పరిమాణానికి శక్తినివ్వడం + - Alchemy Notify ద్వారా నిజ-సమయ వెబ్‌హుక్ హెచ్చరికలు + - ఉత్తమ-తరగతి మద్దతు మరియు విశ్వసనీయత / స్థిరత్వం + - Alchemy యొక్క NFT ఎపిఐ + - రిక్వెస్ట్ ఎక్స్‌ప్లోరర్, మెమ్‌పూల్ వాచర్, మరియు కంపోజర్‌తో కూడిన డాష్‌బోర్డ్ + - ఇంటిగ్రేటెడ్ టెస్టునెట్ ఫాసెట్ యాక్సెస్ + - 18k వినియోగదారులతో క్రియాశీల డిస్కార్డ్ బిల్డర్ కమ్యూనిటీ + +- [**Allnodes**](https://www.allnodes.com/) + - [డాక్స్](https://docs.allnodes.com/) + - లక్షణాలు + - Allnodes పోర్ట్‌ఫోలియో పేజీలో సృష్టించబడిన పబ్లిక్‌నోడ్ టోకెన్‌తో రేటు పరిమితులు లేవు. + - [PublicNode](https://www.publicnode.com)లో గోప్యత కేంద్రీకృత ఉచిత rpc ఎండ్‌పాయింట్లు (100+ బ్లాక్ చైన్లు) + - 90+ బ్లాక్ చైన్‌ల కోసం రేటు పరిమితులు లేని ప్రత్యేక నోడ్స్ + - 30+ బ్లాక్ చైన్‌ల కోసం ప్రత్యేక ఆర్కైవ్ నోడ్స్ + - 3 ప్రాంతాలలో (US, EU, ఆసియా) అందుబాటులో ఉంది + - [PublicNode](https://www.publicnode.com/snapshots)లో 100+ బ్లాక్ చైన్‌ల కోసం స్నాప్‌షాట్‌లు + - 99.90%-99.98% అప్‌టైమ్ SLAతో 24/7 సాంకేతిక మద్దతు (ప్లాన్‌పై ఆధారపడి ఉంటుంది). + - గంటకు-చెల్లింపు ధర + - క్రెడిట్ కార్డ్, PayPal లేదా క్రిప్టోతో చెల్లించండి + +- [**All That Node**](https://allthatnode.com/) + - [డాక్స్](https://docs.allthatnode.com/) + - లక్షణాలు + - ఉచిత శ్రేణితో రోజుకు 50,000 అభ్యర్థనలు + - 40కి పైగా ప్రోటోకాల్స్‌కు మద్దతు + - JSON-RPC (EVM, Tendermint), REST, మరియు వెబ్‌సాకెట్ APIలకు మద్దతు ఉంది + - ఆర్కైవ్ డేటాకు అపరిమిత యాక్సెస్ + - 24/7 సాంకేతిక మద్దతు మరియు 99.9% కంటే ఎక్కువ అప్‌టైమ్ + - బహుళ చైన్‌లలో ఫాసెట్ అందుబాటులో ఉంది + - అపరిమిత సంఖ్యలో API కీలతో అపరిమిత ఎండ్‌పాయింట్ యాక్సెస్ + - ట్రేస్/డీబగ్ APIకి మద్దతు ఉంది + - స్వయంచాలక నవీకరణలు + +- [**Amazon Managed Blockchain**](https://aws.amazon.com/managed-blockchain/) + - [డాక్స్](https://aws.amazon.com/managed-blockchain/resources/) + - లక్షణాలు + - పూర్తిగా నిర్వహించబడే ఇతీరియము నోడ్స్ + - ఆరు ప్రాంతాలలో అందుబాటులో ఉంది + - HTTP మరియు సురక్షిత వెబ్‌సాకెట్‌లపై JSON-RPC + - 3 చైన్‌లకు మద్దతు ఇస్తుంది + - SLAs, AWS మద్దతు 24/7 + - Go-ethereum మరియు Lighthouse + +- [**Ankr**](https://www.ankr.com/) + - [డాక్స్](https://docs.ankr.com/) + - లక్షణాలు + - Ankr ప్రోటోకాల్ - 8+ చైన్‌ల కోసం పబ్లిక్ RPC API ఎండ్‌పాయింట్‌లకు ఓపెన్ యాక్సెస్ + - సమీపంలోని అందుబాటులో ఉన్న నోడ్‌కు వేగవంతమైన మరియు విశ్వసనీయమైన గేట్‌వే కోసం లోడ్ బ్యాలెన్సింగ్ మరియు నోడ్ ఆరోగ్య పర్యవేక్షణ + - WSS ఎండ్‌పాయింట్ మరియు అన్‌క్యాప్డ్ రేట్ పరిమితిని ప్రారంభించే ప్రీమియం శ్రేణి + - 40+ చైన్‌ల కోసం ఒక-క్లిక్ పూర్తి నోడ్ మరియు వాలిడేటర్ నోడ్ డిప్లాయ్‌మెంట్ + - మీరు వెళ్తున్న కొద్దీ స్కేల్ చేయండి + - విశ్లేషణ ఉపకరణాలు + - డాష్‌బోర్డ్ + - RPC, HTTPS మరియు WSS ఎండ్‌పాయింట్లు + - ప్రత్యక్ష మద్దతు + +- [**Blast**](https://blastapi.io/) + - [డాక్స్](https://docs.blastapi.io/) + - లక్షణాలు + - RPC మరియు WSS మద్దతు + - బహుళ-ప్రాంత నోడ్ హోస్టింగ్ + - వికేంద్రీకృత మౌలిక సదుపాయాలు + - పబ్లిక్ API + - ప్రత్యేక ఉచిత ప్లాన్ + - మల్టీచైన్ మద్దతు (17+ బ్లాక్ చైన్లు) + - ఆర్కైవ్ నోడ్స్ + - 24/7 డిస్కార్డ్ మద్దతు + - 24/7 పర్యవేక్షణ మరియు హెచ్చరికలు + - మొత్తం 99.9% SLA + - క్రిప్టోలో చెల్లించండి + +- [**BlockDaemon**](https://blockdaemon.com/) + - [డాక్స్](https://ubiquity.docs.blockdaemon.com/) + - ప్రయోజనాలు + - డాష్‌బోర్డ్ + - ప్రతి నోడ్ ప్రాతిపదికన + - విశ్లేషణలు + +- [**BlockPI**](https://blockpi.io/) + - [డాక్స్](https://docs.blockpi.io/) + - లక్షణాలు + - దృఢమైన & పంపిణీ చేయబడిన నోడ్ నిర్మాణం + - 40 వరకు HTTPS మరియు WSS ఎండ్‌పాయింట్లు + - ఉచిత సైన్అప్ ప్యాకేజీ మరియు నెలవారీ ప్యాకేజీ + - ట్రేస్ పద్ధతి + ఆర్కైవ్ డేటా మద్దతు + - 90 రోజుల వరకు చెల్లుబాటు అయ్యే ప్యాకేజీలు + - కస్టమ్ ప్లాన్ మరియు పే యాజ్ యూ గో చెల్లింపు + - క్రిప్టోలో చెల్లించండి + - ప్రత్యక్ష మద్దతు & సాంకేతిక మద్దతు + +- [**Chainbase**](https://www.chainbase.com/) + - [డాక్స్](https://docs.chainbase.com) + - లక్షణాలు + - అత్యంత అందుబాటులో, వేగవంతమైన, మరియు స్కేలబుల్ RPC సేవ + - మల్టీ-చైన్ మద్దతు + - ఉచిత టారిఫ్‌లు + - వినియోగదారు-స్నేహపూర్వక డాష్‌బోర్డ్ + - RPCకి మించి బ్లాక్ చైన్ డేటా సేవలను అందిస్తుంది + +- [**Chainstack**](https://chainstack.com/) + - [డాక్స్](https://docs.chainstack.com/) + - లక్షణాలు + - ఉచిత భాగస్వామ్య నోడ్స్ + - భాగస్వామ్య ఆర్కైవ్ నోడ్స్ + - GraphQL మద్దతు + - RPC మరియు WSS ఎండ్‌పాయింట్లు + - ప్రత్యేక పూర్తి మరియు ఆర్కైవ్ నోడ్స్ + - ప్రత్యేక డిప్లాయ్‌మెంట్‌ల కోసం వేగవంతమైన సింక్ సమయం + - మీ క్లౌడ్‌ను తీసుకురండి + - గంటకు-చెల్లింపు ధర + - ప్రత్యక్ష 24/7 మద్దతు + +- [**dRPC**](https://drpc.org/) + - [డాక్స్](https://drpc.org/docs) + - NodeCloud: ప్లగ్-ఎన్-ప్లే RPC ఇన్‌ఫ్రా $10 (USD) నుండి ప్రారంభం—పూర్తి వేగం, పరిమితులు లేవు + - NodeCloud ఫీచర్లు: + - 185 నెట్‌వర్క్‌ల కోసం API మద్దతు + - 40+ ప్రొవైడర్ల పంపిణీ చేయబడిన పూల్ + - తొమ్మిది (9) జియో-క్లస్టర్‌లతో ప్రపంచవ్యాప్త కవరేజ్ + - AI-పవర్డ్ లోడ్ బ్యాలెన్సింగ్ సిస్టమ్ + - పే-యాజ్-యూ-గో ఫ్లాట్ ధర—హైక్స్ లేవు, గడువు ముగియదు, లాక్-ఇన్‌లు లేవు + - అపరిమిత కీలు, గ్రాన్యులర్ కీ ట్వీక్‌లు, టీమ్ రోల్స్, ఫ్రంట్-ఎండ్ రక్షణ + - ఒక పద్ధతికి 20 కంప్యూట్ యూనిట్ల (CUలు) వద్ద పద్ధతుల ఫ్లాట్ రేట్ + - [పబ్లిక్ ఎండ్‌పాయింట్ చైన్‌లిస్ట్](https://drpc.org/chainlist) + - [ధర కాలిక్యులేటర్](https://drpc.org/pricing#calculator) + - NodeCore: పూర్తి నియంత్రణ కోరుకునే సంస్థల కోసం ఓపెన్-సోర్స్ స్టాక్ + +- [**GetBlock**](https://getblock.io/) + - [డాక్స్](https://getblock.io/docs/get-started/authentication-with-api-key/) + - లక్షణాలు + - 40+ బ్లాక్ చైన్ నోడ్స్‌కు యాక్సెస్ + - 40K ఉచిత రోజువారీ అభ్యర్థనలు + - అపరిమిత సంఖ్యలో API కీలు + - 1GB/sec వద్ద అధిక కనెక్షన్ వేగం + - ట్రేస్+ఆర్కైవ్ + - అధునాతన విశ్లేషణలు + - స్వయంచాలక నవీకరణలు + - సాంకేతిక మద్దతు + +- [**InfStones**](https://infstones.com/) + - లక్షణాలు + - ఉచిత శ్రేణి ఎంపిక + - మీరు వెళ్తున్న కొద్దీ స్కేల్ చేయండి + - విశ్లేషణలు + - డాష్‌బోర్డ్ + - ప్రత్యేక API ఎండ్‌పాయింట్లు + - ప్రత్యేక పూర్తి నోడ్స్ + - ప్రత్యేక డిప్లాయ్‌మెంట్‌ల కోసం వేగవంతమైన సింక్ సమయం + - ప్రత్యక్ష 24/7 మద్దతు + - 50+ బ్లాక్ చైన్ నోడ్స్‌కు యాక్సెస్ + +- [**Infura**](https://infura.io/) + - [డాక్స్](https://infura.io/docs) + - లక్షణాలు + - ఉచిత శ్రేణి ఎంపిక + - మీరు వెళ్తున్న కొద్దీ స్కేల్ చేయండి + - చెల్లింపు ఆర్కైవల్ డేటా + - ప్రత్యక్ష మద్దతు + - డాష్‌బోర్డ్ + +- [**Kaleido**](https://kaleido.io/) + - [డాక్స్](https://docs.kaleido.io/) + - లక్షణాలు + - ఉచిత స్టార్టర్ శ్రేణి + - ఒక-క్లిక్ ఇతీరియము నోడ్ డిప్లాయ్‌మెంట్ + - అనుకూలీకరించదగిన క్లయింట్లు మరియు అల్గారిథమ్‌లు (Geth, Quorum & Besu || PoA, IBFT & Raft) + - 500+ పరిపాలనా మరియు సేవా APIలు + - ఇతీరియము లావాదేవీ సమర్పణ కోసం RESTful ఇంటర్‌ఫేస్ (Apache Kafka మద్దతుతో) + - ఈవెంట్ డెలివరీ కోసం అవుట్‌బౌండ్ స్ట్రీమ్‌లు (Apache Kafka మద్దతుతో) + - "ఆఫ్‌చైన్" మరియు సహాయక సేవల లోతైన సేకరణ (ఉదాహరణకు, ద్వైపాక్షిక ఎన్‌క్రిప్టెడ్ మెసేజింగ్ రవాణా) + - పరిపాలన మరియు పాత్ర-ఆధారిత యాక్సెస్ నియంత్రణతో సూటిగా ఉండే నెట్‌వర్క్ ఆన్‌బోర్డింగ్ + - నిర్వాహకులు మరియు తుది వినియోగదారుల కోసం అధునాతన వినియోగదారు నిర్వహణ + - అత్యంత స్కేలబుల్, స్థితిస్థాపక, ఎంటర్‌ప్రైజ్-గ్రేడ్ మౌలిక సదుపాయాలు + - క్లౌడ్ HSM ప్రైవేట్ కీ నిర్వహణ + - ఇతీరియము మెయిన్‌నెట్ టెథరింగ్ + - ISO 27k మరియు SOC 2, టైప్ 2 ధృవపత్రాలు + - డైనమిక్ రన్‌టైమ్ కాన్ఫిగరేషన్ (ఉదా., క్లౌడ్ ఇంటిగ్రేషన్‌లను జోడించడం, నోడ్ ఇన్‌గ్రెస్‌లను మార్చడం, మొదలైనవి) + - మల్టీ-క్లౌడ్, మల్టీ-రీజియన్ మరియు హైబ్రిడ్ డిప్లాయ్‌మెంట్ ఆర్కెస్ట్రేషన్‌లకు మద్దతు + - సాధారణ గంటవారీ SaaS-ఆధారిత ధర + - SLAలు మరియు 24x7 మద్దతు + +- [**Lava Network**](https://www.lavanet.xyz/) + - [డాక్స్](https://docs.lavanet.xyz/) + - లక్షణాలు + - ఉచిత టెస్టునెట్ వినియోగం + - అధిక అప్‌టైమ్ కోసం వికేంద్రీకృత పునరావృతం + - ఓపెన్-సోర్స్ + - పూర్తిగా వికేంద్రీకృత SDK + - Ethers.js ఇంటిగ్రేషన్ + - సహజమైన ప్రాజెక్ట్ మేనేజ్‌మెంట్ ఇంటర్‌ఫేస్ + - ఏకాభిప్రాయం-ఆధారిత డేటా సమగ్రత + - మల్టీ-చైన్ మద్దతు + +- [**Moralis**](https://moralis.io/) + - [డాక్స్](https://docs.moralis.io/) + - లక్షణాలు + - ఉచిత భాగస్వామ్య నోడ్స్ + - ఉచిత భాగస్వామ్య ఆర్కైవ్ నోడ్స్ + - గోప్యత కేంద్రీకృతం (లాగ్స్ పాలసీ లేదు) + - క్రాస్ చైన్ మద్దతు + - మీరు వెళ్తున్న కొద్దీ స్కేల్ చేయండి + - డాష్‌బోర్డ్ + - ప్రత్యేక ఇతీరియము SDK + - ప్రత్యేక API ఎండ్‌పాయింట్లు + - ప్రత్యక్ష, సాంకేతిక మద్దతు + +- [**NodeReal MegaNode**](https://nodereal.io/) + - [డాక్స్](https://docs.nodereal.io/docs/introduction) + - లక్షణాలు + - విశ్వసనీయమైన, వేగవంతమైన మరియు స్కేలబుల్ RPC API సేవలు + - web3 డెవలపర్‌ల కోసం మెరుగైన API + - మల్టీ-చైన్ మద్దతు + - ఉచితంగా ప్రారంభించండి + +- [**NOWNodes**](https://nownodes.io/) + - [డాక్స్](https://documenter.getpostman.com/view/13630829/TVmFkLwy) + - లక్షణాలు + - 50+ బ్లాక్ చైన్ నోడ్స్‌కు యాక్సెస్ + - ఉచిత API కీ + - బ్లాక్ ఎక్స్‌ప్లోరర్‌లు + - API ప్రతిస్పందన సమయం ⩽ 1 సెకను + - 24/7 మద్దతు బృందం + - వ్యక్తిగత ఖాతా మేనేజర్ + - భాగస్వామ్య, ఆర్కైవ్, బ్యాకప్ మరియు ప్రత్యేక నోడ్స్ + +- [**Pocket Network**](https://www.pokt.network/) + - [డాక్స్](https://docs.pokt.network/home/) + - లక్షణాలు + - వికేంద్రీకృత RPC ప్రోటోకాల్ మరియు మార్కెట్‌ప్లేస్ + - రోజుకు 1M అభ్యర్థనల ఉచిత శ్రేణి (ఒక ఎండ్‌పాయింట్‌కు, గరిష్టంగా 2) + - [పబ్లిక్ ఎండ్‌పాయింట్లు](https://docs.pokt.network/developers/public-endpoints) + - ప్రీ-స్టేక్+ ప్రోగ్రామ్ (మీకు రోజుకు 1M కంటే ఎక్కువ అభ్యర్థనలు అవసరమైతే) + - 15+ బ్లాక్‌చైన్‌లకు మద్దతు ఉంది + - అప్లికేషన్‌లకు సేవ చేయడం కోసం POKT సంపాదిస్తున్న 6400+ నోడ్స్ + - ఆర్కైవల్ నోడ్, ట్రేసింగ్‌తో ఆర్కైవల్ నోడ్, & టెస్టునెట్ నోడ్ మద్దతు + - ఇతీరియము మెయిన్‌నెట్ నోడ్ ఖాతాదారుల వైవిధ్యం + - వైఫల్యానికి ఒక్క పాయింట్ లేదు + - సున్నా డౌన్‌టైమ్ + - ఖర్చు-ప్రభావవంతమైన దాదాపు-సున్నా టోకెనామిక్స్ (నెట్‌వర్క్ బ్యాండ్‌విడ్త్ కోసం ఒకసారి POKTను స్టేక్ చేయండి) + - నెలవారీ మునిగిపోయిన ఖర్చులు లేవు, మీ మౌలిక సదుపాయాలను ఆస్తిగా మార్చండి + - ప్రోటోకాల్‌లో నిర్మించిన లోడ్-బ్యాలెన్సింగ్ + - మీరు వెళ్తున్న కొద్దీ రోజుకు అభ్యర్థనల సంఖ్యను మరియు గంటకు నోడ్స్‌ను అనంతంగా స్కేల్ చేయండి + - అత్యంత ప్రైవేట్, సెన్సార్‌షిప్-నిరోధక ఎంపిక + - ప్రాక్టికల్ డెవలపర్ మద్దతు + - [Pocket Portal](https://bit.ly/ETHorg_POKTportal) డాష్‌బోర్డ్ మరియు విశ్లేషణలు + +- [**QuickNode**](https://www.quicknode.com) + - [డాక్స్](https://www.quicknode.com/docs/) + - లక్షణాలు + - 24/7 సాంకేతిక మద్దతు & డెవ్ డిస్కార్డ్ కమ్యూనిటీ + - జియో-బ్యాలెన్స్‌డ్, మల్టీ క్లౌడ్/మెటల్, తక్కువ-లేటెన్సీ నెట్‌వర్క్ + - మల్టీచైన్ మద్దతు (Optimism, Arbitrum, Polygon + 11 ఇతరులు) + - వేగం & స్థిరత్వం కోసం మధ్య-పొరలు (కాల్ రూటింగ్, కాష్, ఇండెక్సింగ్) + - వెబ్‌హుక్స్ ద్వారా స్మార్ట్-కాంట్రాక్ట్ పర్యవేక్షణ + - సహజమైన డాష్‌బోర్డ్, విశ్లేషణల సూట్, RPC కంపోజర్ + - అధునాతన భద్రతా ఫీచర్లు (JWT, మాస్కింగ్, వైట్‌లిస్టింగ్) + - NFT డేటా మరియు విశ్లేషణల API + - [SOC2 సర్టిఫైడ్](https://www.quicknode.com/security) + - డెవలపర్‌ల నుండి ఎంటర్‌ప్రైజెస్‌ వరకు అనువైనది + +- [**Rivet**](https://rivet.cloud/) + - [డాక్స్](https://rivet.readthedocs.io/en/latest/) + - లక్షణాలు + - ఉచిత శ్రేణి ఎంపిక + - మీరు వెళ్తున్న కొద్దీ స్కేల్ చేయండి + +- [**SenseiNode**](https://senseinode.com) + - [డాక్స్](https://docs.senseinode.com/) + - లక్షణాలు + - ప్రత్యేక మరియు భాగస్వామ్య నోడ్స్ + - డాష్‌బోర్డ్ + - లాటిన్ అమెరికాలోని వివిధ ప్రదేశాలలో బహుళ హోస్టింగ్ ప్రొవైడర్లలో AWS నుండి హోస్టింగ్ + - Prysm మరియు Lighthouse ఖాతాదారులు + +- [**SettleMint**](https://console.settlemint.com/) + - [డాక్స్](https://docs.settlemint.com/) + - లక్షణాలు + - ఉచిత ట్రయల్ + - మీరు వెళ్తున్న కొద్దీ స్కేల్ చేయండి + - GraphQL మద్దతు + - RPC మరియు WSS ఎండ్‌పాయింట్లు + - ప్రత్యేక పూర్తి నోడ్స్ + - మీ క్లౌడ్‌ను తీసుకురండి + - విశ్లేషణ ఉపకరణాలు + - డాష్‌బోర్డ్ + - గంటకు-చెల్లింపు ధర + - ప్రత్యక్ష మద్దతు + +- [**Tenderly**](https://tenderly.co/web3-gateway) + - [డాక్స్](https://docs.tenderly.co/web3-gateway/web3-gateway) + - లక్షణాలు + - నెలకు 25 మిలియన్ టెండర్లీ యూనిట్లతో సహా ఉచిత శ్రేణి + - చారిత్రక డేటాకు ఉచిత యాక్సెస్ + - 8x వరకు వేగవంతమైన రీడ్-హెవీ వర్క్‌లోడ్‌లు + - 100% స్థిరమైన రీడ్ యాక్సెస్ + - JSON-RPC ఎండ్‌పాయింట్లు + - UI-ఆధారిత RPC అభ్యర్థన బిల్డర్ మరియు అభ్యర్థన ప్రివ్యూ + - Tenderly అభివృద్ధి, డీబగ్గింగ్ మరియు టెస్టింగ్ ఉపకరణాలతో గట్టిగా ఏకీకృతం చేయబడింది + - లావాదేవీ సిమ్యులేషన్‌లు + - వినియోగ విశ్లేషణలు మరియు ఫిల్టరింగ్ + - సులభమైన యాక్సెస్ కీ నిర్వహణ + - చాట్, ఇమెయిల్ మరియు డిస్కార్డ్ ద్వారా ప్రత్యేక ఇంజనీరింగ్ మద్దతు + +- [**Tokenview**](https://services.tokenview.io/) + - [డాక్స్](https://services.tokenview.io/docs?type=nodeService) + - లక్షణాలు + - 24/7 సాంకేతిక మద్దతు & డెవ్ టెలిగ్రామ్ కమ్యూనిటీ + - మల్టీచైన్ మద్దతు (Bitcoin, ఇతీరియము, Tron, BNB స్మార్ట్ చైన్, ఇతీరియము క్లాసిక్) + - RPC మరియు WSS ఎండ్‌పాయింట్లు రెండూ ఉపయోగించడానికి తెరిచి ఉన్నాయి + - ఆర్కైవ్ డేటా APIకి అపరిమిత యాక్సెస్ + - రిక్వెస్ట్ ఎక్స్‌ప్లోరర్ మరియు మెమ్‌పూల్ వాచర్‌తో కూడిన డాష్‌బోర్డ్ + - NFT డేటా API మరియు వెబ్‌హుక్ నోటిఫై + - క్రిప్టోలో చెల్లించండి + - అదనపు ప్రవర్తన అవసరాల కోసం బాహ్య మద్దతు + +- [**Watchdata**](https://watchdata.io/) + - [డాక్స్](https://docs.watchdata.io/) + - లక్షణాలు + - డేటా విశ్వసనీయత + - డౌన్‌టైమ్ లేని అంతరాయం లేని కనెక్షన్ + - ప్రక్రియ ఆటోమేషన్ + - ఉచిత టారిఫ్‌లు + - ఏ వినియోగదారుకైనా సరిపోయే అధిక పరిమితులు + - వివిధ నోడ్స్‌కు మద్దతు + - వనరుల స్కేలింగ్ + - అధిక ప్రాసెసింగ్ వేగాలు + +- [**ZMOK**](https://zmok.io/) + - [డాక్స్](https://docs.zmok.io/) + - లక్షణాలు + - ఒక సేవగా ఫ్రంట్-రన్నింగ్ + - శోధన/ఫిల్టరింగ్ పద్ధతులతో గ్లోబల్ లావాదేవీల మెమ్‌పూల్ + - లావాదేవీలను పంపడానికి అపరిమిత TX ఫీజు మరియు అనంతమైన గ్యాస్ + - కొత్త బ్లాక్‌ను వేగంగా పొందడం మరియు బ్లాక్ చైనును చదవడం + - ఒక API కాల్‌కు ఉత్తమ ధర హామీ + +- [**Zeeve**](https://www.zeeve.io/) + - [డాక్స్](https://www.zeeve.io/docs/) + - లక్షణాలు + - బ్లాక్ చైన్ నోడ్స్ మరియు నెట్‌వర్క్‌ల డిప్లాయ్‌మెంట్, పర్యవేక్షణ మరియు నిర్వహణను అందించే ఎంటర్‌ప్రైజ్-గ్రేడ్ నో-కోడ్ ఆటోమేషన్ ప్లాట్‌ఫారమ్ + - 30+ మద్దతు ఉన్న ప్రోటోకాల్‌లు & ఇంటిగ్రేషన్‌లు, మరియు మరిన్ని జోడించబడుతున్నాయి + - వికేంద్రీకృత నిల్వ, వికేంద్రీకృత గుర్తింపు మరియు నిజ-ప్రపంచ వినియోగ కేసుల కోసం బ్లాక్ చైన్ లెడ్జర్ డేటా APIల వంటి విలువ ఆధారిత web3 మౌలిక సదుపాయాల సేవలు + - 24/7 మద్దతు మరియు చురుకైన పర్యవేక్షణ అన్ని సమయాలలో నోడ్స్ ఆరోగ్యాన్ని నిర్ధారిస్తాయి. + - RPC ఎండ్‌పాయింట్లు APIలకు ప్రామాణీకరించబడిన యాక్సెస్‌ను, సహజమైన డాష్‌బోర్డ్ మరియు విశ్లేషణలతో అవాంతరాలు లేని నిర్వహణను అందిస్తాయి. + - ఎంచుకోవడానికి నిర్వహించే క్లౌడ్ మరియు మీ స్వంత క్లౌడ్ ఎంపికలు రెండింటినీ అందిస్తుంది మరియు AWS, Azure, Google Cloud, Digital Ocean మరియు ఆన్-ప్రాంగణం వంటి అన్ని ప్రధాన క్లౌడ్ ప్రొవైడర్లకు మద్దతు ఇస్తుంది. + - ప్రతిసారీ మీ వినియోగదారునికి దగ్గరగా ఉన్న నోడ్‌ను చేరుకోవడానికి మేము తెలివైన రూటింగ్‌ను ఉపయోగిస్తాము + +## మరింత సమాచారం {#further-reading} + +- [ఇతీరియము నోడ్ సేవల జాబితా](https://ethereumnodes.com/) + +## సంబంధిత అంశాలు {#related-topics} + +- [నోడ్‌లు మరియు క్లయింట్లు](/developers/docs/nodes-and-clients/) + +## సంబంధిత ట్యుటోరియల్స్ {#related-tutorials} + +- [Alchemyని ఉపయోగించి ఇతీరియము అభివృద్ధిని ప్రారంభించడం](/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/) +- [web3 మరియు Alchemyని ఉపయోగించి లావాదేవీలను పంపడానికి గైడ్](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) diff --git a/public/content/translations/te/developers/docs/nodes-and-clients/run-a-node/index.md b/public/content/translations/te/developers/docs/nodes-and-clients/run-a-node/index.md new file mode 100644 index 00000000000..a1584f036a0 --- /dev/null +++ b/public/content/translations/te/developers/docs/nodes-and-clients/run-a-node/index.md @@ -0,0 +1,484 @@ +--- +title: "మీ స్వంత ఇతీరియము నోడ్‌ను స్పిన్ అప్ చేయండి" +description: "ఇతీరియము క్లయింట్ యొక్క మీ స్వంత ఉదాహరణను అమలు చేయడానికి సాధారణ పరిచయం." +lang: te +sidebarDepth: 2 +--- + +మీ స్వంత నోడ్‌ను నడపడం మీకు వివిధ ప్రయోజనాలను అందిస్తుంది, కొత్త అవకాశాలను తెరుస్తుంది మరియు పర్యావరణ వ్యవస్థకు మద్దతు ఇవ్వడానికి సహాయపడుతుంది. ఈ పేజీ మీ స్వంత నోడ్‌ను స్పిన్ చేయడం మరియు ఇతీరియము లావాదేవీలను ధృవీకరించడంలో పాల్గొనడం ద్వారా మీకు మార్గనిర్దేశం చేస్తుంది. + +[ది మెర్జ్](/roadmap/merge) తర్వాత, ఇతీరియము నోడ్‌ను అమలు చేయడానికి రెండు క్లయింట్‌లు అవసరమని గమనించండి; ఒక **ఎగ్జిక్యూషన్ లేయర్ (EL)** క్లయింట్ మరియు ఒక **ఏకాభిప్రాయం లేయర్ (CL)** క్లయింట్. ఇతీరియము నోడ్‌ను అమలు చేయడానికి ఈ రెండు క్లయింట్‌లను ఎలా ఇన్‌స్టాల్ చేయాలో, కాన్ఫిగర్ చేయాలో మరియు కనెక్ట్ చేయాలో ఈ పేజీ చూపిస్తుంది. + +## అవసరాలు {#prerequisites} + +ఇతీరియము నోడ్ అంటే ఏమిటో మరియు మీరు క్లయింట్‌ను ఎందుకు అమలు చేయాలనుకుంటున్నారో మీరు అర్థం చేసుకోవాలి. ఇది [నోడ్స్ మరియు క్లయింట్లు](/developers/docs/nodes-and-clients/)లో కవర్ చేయబడింది. + +మీరు నోడ్‌ను అమలు చేసే అంశానికి కొత్తవారైతే లేదా తక్కువ సాంకేతిక మార్గం కోసం చూస్తున్నట్లయితే, [ఇతీరియము నోడ్‌ను అమలు చేయడం](/run-a-node)లో మా యూజర్-ఫ్రెండ్లీ పరిచయాన్ని మొదట తనిఖీ చేయాలని మేము సిఫార్సు చేస్తున్నాము. + +## ఒక విధానాన్ని ఎంచుకోవడం {#choosing-approach} + +మీ నోడ్‌ను స్పిన్ చేయడంలో మొదటి దశ మీ విధానాన్ని ఎంచుకోవడం. అవసరాలు మరియు వివిధ అవకాశాల ఆధారంగా, మీరు తప్పనిసరిగా క్లయింట్ అమలును (ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయం క్లయింట్లు రెండింటినీ), పర్యావరణం (హార్డ్‌వేర్, సిస్టమ్), మరియు క్లయింట్ సెట్టింగ్‌ల కోసం పారామితులను ఎంచుకోవాలి. + +ఈ పేజీ ఈ నిర్ణయాల ద్వారా మీకు మార్గనిర్దేశం చేస్తుంది మరియు మీ ఇతీరియము ఉదాహరణను అమలు చేయడానికి అత్యంత అనుకూలమైన మార్గాన్ని కనుగొనడంలో మీకు సహాయపడుతుంది. + +క్లయింట్ అమలుల నుండి ఎంచుకోవడానికి, అందుబాటులో ఉన్న అన్ని మెయిన్‌నెట్ సిద్ధంగా ఉన్న [ఎగ్జిక్యూషన్ క్లయింట్లు](/developers/docs/nodes-and-clients/#execution-clients), [ఏకాభిప్రాయం క్లయింట్లు](/developers/docs/nodes-and-clients/#consensus-clients) చూడండి మరియు [క్లయింట్ వైవిధ్యం](/developers/docs/nodes-and-clients/client-diversity) గురించి తెలుసుకోండి. + +క్లయింట్‌ల [అవసరాలు](#requirements) పరిగణనలోకి తీసుకుని, మీ స్వంత [హార్డ్‌వేర్ లేదా క్లౌడ్‌లో](#local-vs-cloud) సాఫ్ట్‌వేర్‌ను అమలు చేయాలో లేదో నిర్ణయించుకోండి. + +పర్యావరణాన్ని సిద్ధం చేసిన తర్వాత, ఎంచుకున్న క్లయింట్‌లను [బిగినర్-ఫ్రెండ్లీ ఇంటర్‌ఫేస్](#automatized-setup)తో లేదా అధునాతన ఎంపికలతో టెర్మినల్‌ని ఉపయోగించి [మాన్యువల్‌గా](#manual-setup) ఇన్‌స్టాల్ చేయండి. + +నోడ్ రన్ అవుతున్నప్పుడు మరియు సింక్ అవుతున్నప్పుడు, మీరు దానిని [ఉపయోగించడానికి](#using-the-node) సిద్ధంగా ఉన్నారు, కానీ దాని [నిర్వహణ](#operating-the-node)పై నిఘా ఉంచారని నిర్ధారించుకోండి. + +![క్లయింట్ సెటప్](./diagram.png) + +### పర్యావరణం మరియు హార్డ్‌వేర్ {#environment-and-hardware} + +#### స్థానిక లేదా క్లౌడ్ {#local-vs-cloud} + +ఇతీరియము క్లయింట్లు వినియోగదారు గ్రేడ్ కంప్యూటర్‌లలో రన్ చేయగలవు మరియు ఉదాహరణకు మైనింగ్ మెషీన్‌ల వంటి ప్రత్యేక హార్డ్‌వేర్ అవసరం లేదు. అందువల్ల, మీ అవసరాల ఆధారంగా నోడ్‌ను అమర్చడానికి మీకు వివిధ ఎంపికలు ఉన్నాయి. +సరళీకరించడానికి, స్థానిక భౌతిక యంత్రం మరియు క్లౌడ్ సర్వర్ రెండింటిలోనూ నోడ్‌ను అమలు చేయడం గురించి ఆలోచిద్దాం: + +- క్లౌడ్ + - ప్రొవైడర్లు అధిక సర్వర్ అప్‌టైమ్ మరియు స్టాటిక్ పబ్లిక్ IP చిరునామాలను అందిస్తారు + - మీ స్వంతంగా నిర్మించుకోవడం కంటే ప్రత్యేకమైన లేదా వర్చువల్ సర్వర్‌ను పొందడం మరింత సౌకర్యవంతంగా ఉంటుంది + - ట్రేడ్ ఆఫ్ మూడవ పక్షాన్ని విశ్వసించడం - సర్వర్ ప్రొవైడర్ + - పూర్తి నోడ్ కోసం అవసరమైన నిల్వ పరిమాణం కారణంగా, అద్దెకు తీసుకున్న సర్వర్ ధర ఎక్కువగా ఉండవచ్చు +- సొంత హార్డ్‌వేర్ + - మరింత విశ్వసనీయత లేని మరియు సార్వభౌమ విధానం + - ఒక సారి పెట్టుబడి + - ముందుగా కాన్ఫిగర్ చేసిన మెషీన్‌లను కొనుగోలు చేయడానికి ఒక ఎంపిక + - మీరు భౌతికంగా యంత్రాన్ని మరియు నెట్‌వర్కింగ్‌ను సిద్ధం చేయాలి, నిర్వహించాలి మరియు సంభావ్యంగా ట్రబుల్షూట్ చేయాలి + +రెండు ఎంపికలు పైన సంగ్రహించిన విభిన్న ప్రయోజనాలను కలిగి ఉన్నాయి. మీరు క్లౌడ్ పరిష్కారం కోసం చూస్తున్నట్లయితే, అనేక సాంప్రదాయ క్లౌడ్ కంప్యూటింగ్ ప్రొవైడర్లతో పాటు, నోడ్‌లను అమర్చడంపై దృష్టి సారించిన సేవలు కూడా ఉన్నాయి. హోస్ట్ చేసిన నోడ్‌లపై మరిన్ని ఎంపికల కోసం [సేవగా నోడ్‌లు](/developers/docs/nodes-and-clients/nodes-as-a-service/) తనిఖీ చేయండి. + +#### హార్డ్వేర్ {#hardware} + +అయితే, సెన్సార్‌షిప్-నిరోధక, వికేంద్రీకృత నెట్‌వర్క్ క్లౌడ్ ప్రొవైడర్లపై ఆధారపడకూడదు. బదులుగా, మీ స్వంత స్థానిక హార్డ్‌వేర్‌లో మీ నోడ్‌ను అమలు చేయడం పర్యావరణ వ్యవస్థకు ఆరోగ్యకరమైనది. [అంచనాలు](https://www.ethernodes.org/networkType/cl/Hosting) క్లౌడ్‌లో నడిచే నోడ్‌ల యొక్క పెద్ద వాటాను చూపుతాయి, ఇది వైఫల్యానికి ఏకైక పాయింట్‌గా మారవచ్చు. + +ఇతీరియము క్లయింట్లు మీ కంప్యూటర్, ల్యాప్‌టాప్, సర్వర్ లేదా సింగిల్-బోర్డ్ కంప్యూటర్‌లో కూడా రన్ చేయగలవు. మీ వ్యక్తిగత కంప్యూటర్‌లో క్లయింట్‌లను అమలు చేయడం సాధ్యమే అయినప్పటికీ, మీ నోడ్ కోసం ప్రత్యేకంగా ఒక యంత్రాన్ని కలిగి ఉండటం వలన మీ ప్రాథమిక కంప్యూటర్‌పై ప్రభావాన్ని తగ్గించేటప్పుడు దాని పనితీరు మరియు భద్రతను గణనీయంగా పెంచుతుంది. + +మీ స్వంత హార్డ్‌వేర్‌ను ఉపయోగించడం చాలా సులభం. మరింత సాంకేతిక వ్యక్తుల కోసం అనేక సాధారణ ఎంపికలతో పాటు అధునాతన సెటప్‌లు ఉన్నాయి. కాబట్టి మీ మెషీన్‌లో ఇతీరియము క్లయింట్‌లను అమలు చేయడానికి అవసరాలు మరియు మార్గాలను పరిశీలిద్దాం. + +#### అవసరాలు {#requirements} + +హార్డ్‌వేర్ అవసరాలు క్లయింట్‌ను బట్టి విభిన్నంగా ఉంటాయి, కానీ సాధారణంగా నోడ్ సింక్‌లో ఉండవలసిన అవసరం ఉన్నందున అంత ఎక్కువగా ఉండవు. మైనింగ్‌తో దీనిని గందరగోళపరచవద్దు, దీనికి చాలా ఎక్కువ కంప్యూటింగ్ శక్తి అవసరం. అయితే మరింత శక్తివంతమైన హార్డ్‌వేర్‌తో సింక్ సమయం మరియు పనితీరు మెరుగుపడతాయి. + +ఏదైనా క్లయింట్‌ను ఇన్‌స్టాల్ చేసే ముందు, దయచేసి మీ కంప్యూటర్‌లో దీన్ని అమలు చేయడానికి తగినంత వనరులు ఉన్నాయని నిర్ధారించుకోండి. మీరు దిగువన కనీస మరియు సిఫార్సు చేసిన అవసరాలను కనుగొనవచ్చు. + +మీ హార్డ్‌వేర్‌కు అడ్డంకి ఎక్కువగా డిస్క్ స్పేస్. ఇతీరియము బ్లాక్ చైనుని సింక్ చేయడం చాలా ఇన్‌పుట్/అవుట్‌పుట్ ఇంటెన్సివ్ మరియు చాలా స్థలం అవసరం. సింక్రొనైజేషన్ తర్వాత కూడా వందలాది GBల ఖాళీ స్థలంతో కూడిన \*\*సాలిడ్-స్టేట్ డ్రైవ్ (SSD)\*\*ని కలిగి ఉండటం ఉత్తమం. + +డేటాబేస్ పరిమాణం మరియు ప్రారంభ సింక్రొనైజేషన్ వేగం ఎంచుకున్న క్లయింట్, దాని కాన్ఫిగరేషన్ మరియు [సింక్ వ్యూహం](/developers/docs/nodes-and-clients/#sync-modes)పై ఆధారపడి ఉంటుంది. + +మీ ఇంటర్నెట్ కనెక్షన్ [బ్యాండ్‌విడ్త్ క్యాప్](https://wikipedia.org/wiki/Data_cap) ద్వారా పరిమితం చేయబడలేదని కూడా నిర్ధారించుకోండి. ప్రారంభ సింక్ మరియు నెట్‌వర్క్‌కి ప్రసారం చేయబడిన డేటా మీ పరిమితిని మించిపోయే అవకాశం ఉన్నందున అన్‌మీటర్ కనెక్షన్‌ని ఉపయోగించమని సిఫార్సు చేయబడింది. + +##### ఆపరేటింగ్ సిస్టమ్ + +అన్ని క్లయింట్లు ప్రధాన ఆపరేటింగ్ సిస్టమ్‌లకు మద్దతు ఇస్తాయి - Linux, MacOS, Windows. అంటే మీకు అత్యంత అనుకూలమైన ఆపరేటింగ్ సిస్టమ్ (OS)తో సాధారణ డెస్క్‌టాప్ లేదా సర్వర్ మెషీన్‌లలో మీరు నోడ్‌లను అమలు చేయవచ్చు. సంభావ్య సమస్యలు మరియు భద్రతా లోపాలను నివారించడానికి మీ OS తాజాగా ఉందని నిర్ధారించుకోండి. + +##### కనీస అవసరాలు + +- 2+ కోర్లతో CPU +- 8 GB RAM +- 2TB SSD +- 10+ MBit/s బ్యాండ్‌విడ్త్ + +##### సిఫార్సు చేయబడిన నిర్దేశాలు + +- 4+ కోర్లతో వేగవంతమైన CPU +- 16 GB+ RAM +- 2+TBతో వేగవంతమైన SSD +- 25+ MBit/s బ్యాండ్‌విడ్త్ + +మీరు ఎంచుకున్న సింక్ మోడ్ మరియు క్లయింట్ స్పేస్ అవసరాలను ప్రభావితం చేస్తాయి, కానీ మేము ప్రతి క్లయింట్ కోసం మీకు అవసరమైన డిస్క్ స్థలాన్ని క్రింద అంచనా వేసాము. + +| ఖాతాదారుడు | డిస్క్ పరిమాణం (స్నాప్ సింక్) | డిస్క్ పరిమాణం (పూర్తి ఆర్కైవ్) | +| ---------- | ------------------------------------------------ | -------------------------------------------------- | +| Besu | 800GB+ | 12TB+ | +| Erigon | N/A | 2.5TB+ | +| Geth | 500GB+ | 12TB+ | +| Nethermind | 500GB+ | 12TB+ | +| Reth | N/A | 2.2TB+ | + +- గమనిక: Erigon మరియు Reth స్నాప్ సింక్‌ను అందించవు, కానీ పూర్తి ప్రూనింగ్ సాధ్యమే (Erigon కోసం ~2TB, Reth కోసం ~1.2TB) + +ఏకాభిప్రాయం క్లయింట్ల కోసం, స్పేస్ అవసరం క్లయింట్ అమలు మరియు ప్రారంభించబడిన ఫీచర్‌లపై కూడా ఆధారపడి ఉంటుంది (ఉదా., వాలిడేటర్ స్లాషర్) కానీ సాధారణంగా బీకాన్ డేటా కోసం అవసరమైన మరో 200GBతో లెక్కించబడుతుంది. ఎక్కువ సంఖ్యలో వాలిడేటర్లతో, బ్యాండ్‌విడ్త్ లోడ్ కూడా పెరుగుతుంది. మీరు [ఈ విశ్లేషణలో ఏకాభిప్రాయం క్లయింట్ అవసరాలపై వివరాలను](https://mirror.xyz/0x934e6B4D7eee305F8C9C42b46D6EEA09CcFd5EDc/b69LBy8p5UhcGJqUAmT22dpvdkU-Pulg2inrhoS9Mbc) కనుగొనవచ్చు. + +#### ప్లగ్-అండ్-ప్లే పరిష్కారాలు {#plug-and-play} + +మీ స్వంత హార్డ్‌వేర్‌తో నోడ్‌ను అమలు చేయడానికి సులభమైన ఎంపిక ప్లగ్-అండ్-ప్లే బాక్స్‌లను ఉపయోగించడం. విక్రేతల నుండి ముందుగా కాన్ఫిగర్ చేయబడిన యంత్రాలు అత్యంత సరళమైన అనుభవాన్ని అందిస్తాయి: ఆర్డర్, కనెక్ట్, రన్. సాఫ్ట్‌వేర్‌ను పర్యవేక్షించడానికి మరియు నియంత్రించడానికి ఒక సహజమైన గైడ్ మరియు డ్యాష్‌బోర్డ్‌తో ప్రతిదీ ముందుగా కాన్ఫిగర్ చేయబడింది మరియు స్వయంచాలకంగా నడుస్తుంది. + +- [DappNode](https://dappnode.io/) +- [Avado](https://ava.do/) + +#### సింగిల్-బోర్డ్ కంప్యూటర్‌లో ఇతీరియము {#ethereum-on-a-single-board-computer} + +ఇతీరియము నోడ్‌ను అమలు చేయడానికి సులభమైన మరియు చౌకైన మార్గం రాస్ప్బెర్రీ పై వంటి ARM ఆర్కిటెక్చర్‌తో కూడా సింగిల్ బోర్డ్ కంప్యూటర్‌ను ఉపయోగించడం. [ARMలో ఇతీరియము](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/) రాస్ప్బెర్రీ పై మరియు ఇతర ARM బోర్డుల కోసం బహుళ ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయం క్లయింట్ యొక్క సులభంగా అమలు చేయగల చిత్రాలను అందిస్తుంది. + +ఇలాంటి చిన్న, సరసమైన మరియు సమర్థవంతమైన పరికరాలు ఇంట్లో నోడ్‌ను అమలు చేయడానికి అనువైనవి, కానీ వాటి పరిమిత పనితీరును గుర్తుంచుకోండి. + +## నోడ్‌ను స్పిన్నింగ్ చేయడం {#spinning-up-node} + +వాస్తవ క్లయింట్ సెటప్‌ను ఆటోమేటెడ్ లాంచర్‌లతో లేదా మాన్యువల్‌గా, క్లయింట్ సాఫ్ట్‌వేర్‌ను నేరుగా సెటప్ చేయడం ద్వారా చేయవచ్చు. + +తక్కువ అధునాతన వినియోగదారుల కోసం, సిఫార్సు చేయబడిన విధానం లాంచర్‌ను ఉపయోగించడం, ఇది ఇన్‌స్టాలేషన్ ద్వారా మీకు మార్గనిర్దేశం చేస్తుంది మరియు క్లయింట్ సెటప్ ప్రక్రియను ఆటోమేట్ చేస్తుంది. అయితే, మీకు టెర్మినల్‌ని ఉపయోగించిన అనుభవం ఉంటే, మాన్యువల్ సెటప్ కోసం దశలను అనుసరించడం చాలా సులభం. + +### గైడెడ్ సెటప్ {#automatized-setup} + +బహుళ యూజర్-ఫ్రెండ్లీ ప్రాజెక్ట్‌లు క్లయింట్‌ను సెటప్ చేసే అనుభవాన్ని మెరుగుపరచడం లక్ష్యంగా పెట్టుకున్నాయి. ఈ లాంచర్లు ఆటోమేటిక్ క్లయింట్ ఇన్‌స్టాలేషన్ మరియు కాన్ఫిగరేషన్‌ను అందిస్తాయి, కొన్ని క్లయింట్‌ల గైడెడ్ సెటప్ మరియు పర్యవేక్షణ కోసం గ్రాఫికల్ ఇంటర్‌ఫేస్‌ను కూడా అందిస్తాయి. + +కేవలం కొన్ని క్లిక్‌లతో క్లయింట్‌లను ఇన్‌స్టాల్ చేయడానికి మరియు నియంత్రించడానికి మీకు సహాయపడే కొన్ని ప్రాజెక్ట్‌లు క్రింద ఉన్నాయి: + +- [DappNode](https://docs.dappnode.io/docs/user/getting-started/choose-your-path) - DappNode కేవలం విక్రేత నుండి వచ్చిన మెషీన్‌తో మాత్రమే రాదు. సాఫ్ట్‌వేర్, అసలైన నోడ్ లాంచర్ మరియు అనేక ఫీచర్లతో కూడిన కంట్రోల్ సెంటర్‌ను ఏకపక్ష హార్డ్‌వేర్‌లో ఉపయోగించవచ్చు. +- [EthPillar](https://www.coincashew.com/coins/overview-eth/ethpillar) - పూర్తి నోడ్‌ను సెటప్ చేయడానికి వేగవంతమైన మరియు సులభమైన మార్గం. వన్-లైనర్ సెటప్ సాధనం మరియు నోడ్ నిర్వహణ TUI. ఉచితం. ఓపెన్ సోర్స్. సోలో స్టేకర్ల ద్వారా ఇతీరియము కోసం పబ్లిక్ గూడ్స్. ARM64 మరియు AMD64 మద్దతు. +- eth-docker - సులభమైన మరియు సురక్షితమైన స్టాకింగ్‌పై దృష్టి సారించి డాకర్‌ను ఉపయోగించి ఆటోమేటెడ్ సెటప్, ప్రాథమిక టెర్మినల్ మరియు డాకర్ పరిజ్ఞానం అవసరం, కొంచెం ఎక్కువ అధునాతన వినియోగదారులకు సిఫార్సు చేయబడింది. +- [Stereum](https://stereum-dev.github.io/ethereum-node-web-docs) - GUI సెటప్ గైడ్, కంట్రోల్ సెంటర్ మరియు అనేక ఇతర ఫీచర్‌లతో SSH కనెక్షన్ ద్వారా రిమోట్ సర్వర్‌లో క్లయింట్‌లను ఇన్‌స్టాల్ చేయడానికి లాంచర్. +- [NiceNode](https://www.nicenode.xyz/) - మీ కంప్యూటర్‌లో నోడ్‌ను అమలు చేయడానికి సూటిగా వినియోగదారు అనుభవంతో కూడిన లాంచర్. కేవలం క్లయింట్‌లను ఎంచుకుని, కొన్ని క్లిక్‌లతో వాటిని ప్రారంభించండి. ఇంకా అభివృద్ధిలో ఉంది. +- [Sedge](https://docs.sedge.nethermind.io/docs/intro) - CLI విజార్డ్‌ని ఉపయోగించి డాకర్ కాన్ఫిగరేషన్‌ను స్వయంచాలకంగా రూపొందించే నోడ్ సెటప్ సాధనం. నెదర్‌మైండ్ ద్వారా Goలో వ్రాయబడింది. + +### మాన్యువల్ క్లయింట్ల సెటప్ {#manual-setup} + +మరొక ఎంపిక క్లయింట్ సాఫ్ట్‌వేర్‌ను మాన్యువల్‌గా డౌన్‌లోడ్ చేయడం, ధృవీకరించడం మరియు కాన్ఫిగర్ చేయడం. కొన్ని క్లయింట్లు గ్రాఫికల్ ఇంటర్‌ఫేస్‌ను అందించినప్పటికీ, మాన్యువల్ సెటప్‌కు ఇప్పటికీ టెర్మినల్‌తో ప్రాథమిక నైపుణ్యాలు అవసరం కానీ చాలా ఎక్కువ బహుముఖ ప్రజ్ఞను అందిస్తుంది. + +ముందుగా వివరించినట్లుగా, మీ స్వంత ఇతీరియము నోడ్‌ను సెటప్ చేయడానికి ఒక జత ఏకాభిప్రాయం మరియు ఎగ్జిక్యూషన్ క్లయింట్‌లను అమలు చేయడం అవసరం. కొన్ని క్లయింట్లు ఇతర రకమైన లైట్ క్లయింట్‌ను చేర్చవచ్చు మరియు ఇతర సాఫ్ట్‌వేర్ అవసరం లేకుండా సింక్ చేయవచ్చు. అయితే, పూర్తి విశ్వసనీయత లేని ధృవీకరణకు రెండు అమలులు అవసరం. + +#### క్లయింట్ సాఫ్ట్‌వేర్‌ను పొందడం {#getting-the-client} + +ముందుగా, మీరు మీ ప్రాధాన్య [ఎగ్జిక్యూషన్ క్లయింట్](/developers/docs/nodes-and-clients/#execution-clients) మరియు [ఏకాభిప్రాయం క్లయింట్](/developers/docs/nodes-and-clients/#consensus-clients) సాఫ్ట్‌వేర్‌ను పొందాలి. + +మీరు మీ ఆపరేటింగ్ సిస్టమ్ మరియు ఆర్కిటెక్చర్‌కు సరిపోయే ఎగ్జిక్యూటబుల్ అప్లికేషన్ లేదా ఇన్‌స్టాలేషన్ ప్యాకేజీని డౌన్‌లోడ్ చేసుకోవచ్చు. డౌన్‌లోడ్ చేసిన ప్యాకేజీల సంతకాలు మరియు చెక్‌సమ్‌లను ఎల్లప్పుడూ ధృవీకరించండి. కొన్ని క్లయింట్లు సులభమైన ఇన్‌స్టాలేషన్ మరియు అప్‌డేట్‌ల కోసం రిపోజిటరీలు లేదా డాకర్ చిత్రాలను కూడా అందిస్తాయి. అన్ని క్లయింట్లు ఓపెన్ సోర్స్, కాబట్టి మీరు వాటిని సోర్స్ నుండి కూడా నిర్మించవచ్చు. ఇది మరింత అధునాతన పద్ధతి, కానీ కొన్ని సందర్భాల్లో, ఇది అవసరం కావచ్చు. + +ప్రతి క్లయింట్‌ను ఇన్‌స్టాల్ చేయడానికి సూచనలు పైన ఉన్న క్లయింట్ జాబితాలలో లింక్ చేయబడిన డాక్యుమెంటేషన్‌లో అందించబడ్డాయి. + +క్లయింట్‌ల విడుదల పేజీలు ఇక్కడ ఉన్నాయి, ఇక్కడ మీరు వాటి ముందుగా నిర్మించిన బైనరీలు లేదా ఇన్‌స్టాలేషన్‌పై సూచనలను కనుగొనవచ్చు: + +##### ఎగ్జిక్యూషన్ క్లయింట్లు + +- [Besu](https://github.com/hyperledger/besu/releases) +- [Erigon](https://github.com/ledgerwatch/erigon/releases) +- [Geth](https://geth.ethereum.org/downloads/) +- [Nethermind](https://downloads.nethermind.io/) +- [Reth](https://reth.rs/installation/installation.html) + +[ఎగ్జిక్యూషన్ లేయర్](/developers/docs/nodes-and-clients/client-diversity/#execution-layer)లో క్లయింట్ వైవిధ్యం ఒక సమస్య అని కూడా గమనించాలి. పాఠకులు మైనారిటీ ఎగ్జిక్యూషన్ క్లయింట్‌ను అమలు చేయడాన్ని పరిగణించాలని సిఫార్సు చేయబడింది. + +##### ఏకాభిప్రాయం క్లయింట్లు + +- [Lighthouse](https://github.com/sigp/lighthouse/releases/latest) +- [Lodestar](https://chainsafe.github.io/lodestar/run/getting-started/installation#build-from-source/) (ముందుగా నిర్మించిన బైనరీని అందించదు, కేవలం డాకర్ ఇమేజ్ లేదా సోర్స్ నుండి నిర్మించబడుతుంది) +- [Nimbus](https://github.com/status-im/nimbus-eth2/releases/latest) +- [Prysm](https://github.com/prysmaticlabs/prysm/releases/latest) +- [Teku](https://github.com/ConsenSys/teku/releases) + +వాలిడేటర్లను అమలు చేసే ఏకాభిప్రాయం నోడ్‌లకు [క్లయింట్ వైవిధ్యం](/developers/docs/nodes-and-clients/client-diversity/) చాలా కీలకం. మెజారిటీ వాలిడేటర్లు ఒకే క్లయింట్ అమలును అమలు చేస్తుంటే, నెట్‌వర్క్ భద్రత ప్రమాదంలో ఉంది. అందువల్ల మైనారిటీ క్లయింట్‌ను ఎంచుకోవాలని సిఫార్సు చేయబడింది. + +[తాజా నెట్‌వర్క్ క్లయింట్ వినియోగాన్ని చూడండి](https://clientdiversity.org/) మరియు [క్లయింట్ వైవిధ్యం](/developers/docs/nodes-and-clients/client-diversity) గురించి మరింత తెలుసుకోండి. + +##### సాఫ్ట్‌వేర్‌ను ధృవీకరించడం + +ఇంటర్నెట్ నుండి సాఫ్ట్‌వేర్‌ను డౌన్‌లోడ్ చేస్తున్నప్పుడు, దాని సమగ్రతను ధృవీకరించాలని సిఫార్సు చేయబడింది. ఈ దశ ఐచ్ఛికం, కానీ ముఖ్యంగా ఇతీరియము క్లయింట్ వంటి కీలకమైన ఇన్‌ఫ్రాస్ట్రక్చర్ ముక్కతో, సంభావ్య దాడి వెక్టర్‌ల గురించి తెలుసుకోవడం మరియు వాటిని నివారించడం ముఖ్యం. మీరు ముందుగా నిర్మించిన బైనరీని డౌన్‌లోడ్ చేసి ఉంటే, మీరు దానిని విశ్వసించాలి మరియు దాడి చేసే వ్యక్తి ఎగ్జిక్యూటబుల్‌ను హానికరమైన దాని కోసం మార్చుకునే ప్రమాదం ఉంది. + +డెవలపర్లు వారి PGP కీలతో విడుదల చేసిన బైనరీలపై సంతకం చేస్తారు, తద్వారా వారు సృష్టించిన సాఫ్ట్‌వేర్‌ను మీరు ఖచ్చితంగా అమలు చేస్తున్నారని మీరు క్రిప్టోగ్రాఫికల్‌గా ధృవీకరించవచ్చు. మీరు డెవలపర్లు ఉపయోగించే పబ్లిక్ కీలను పొందాలి, వాటిని క్లయింట్ విడుదల పేజీలలో లేదా డాక్యుమెంటేషన్‌లో కనుగొనవచ్చు. క్లయింట్ విడుదల మరియు దాని సంతకాన్ని డౌన్‌లోడ్ చేసిన తర్వాత, మీరు వాటిని సులభంగా ధృవీకరించడానికి PGP అమలును ఉపయోగించవచ్చు, ఉదా., [GnuPG](https://gnupg.org/download/index.html). [linux](https://www.tecmint.com/verify-pgp-signature-downloaded-software/) లేదా [Windows/MacOS](https://freedom.press/training/verifying-open-source-software/)లో `gpg`ని ఉపయోగించి ఓపెన్-సోర్స్ సాఫ్ట్‌వేర్‌ను ధృవీకరించడంపై ఒక ట్యుటోరియల్‌ను చూడండి. + +ధృవీకరణ యొక్క మరొక రూపం ఏమిటంటే, మీరు డౌన్‌లోడ్ చేసిన సాఫ్ట్‌వేర్ యొక్క హాష్, ఒక ప్రత్యేకమైన క్రిప్టోగ్రాఫిక్ వేలిముద్ర, డెవలపర్లు అందించిన దానితో సరిపోలుతుందని నిర్ధారించుకోవడం. ఇది PGPని ఉపయోగించడం కంటే సులభం, మరియు కొన్ని క్లయింట్లు ఈ ఎంపికను మాత్రమే అందిస్తాయి. డౌన్‌లోడ్ చేసిన సాఫ్ట్‌వేర్‌పై హాష్ ఫంక్షన్‌ను అమలు చేసి, విడుదల పేజీ నుండి వచ్చిన దానితో సరిపోల్చండి. ఉదాహరణకి: + +```sh +sha256sum teku-22.6.1.tar.gz + +9b2f8c1f8d4dab0404ce70ea314ff4b3c77e9d27aff9d1e4c1933a5439767dde +``` + +#### క్లయింట్ సెటప్ {#client-setup} + +క్లయింట్ సాఫ్ట్‌వేర్‌ను ఇన్‌స్టాల్ చేసిన తర్వాత, డౌన్‌లోడ్ చేసిన తర్వాత లేదా కంపైల్ చేసిన తర్వాత, మీరు దాన్ని అమలు చేయడానికి సిద్ధంగా ఉన్నారు. దీని అర్థం సరైన కాన్ఫిగరేషన్‌తో అమలు చేయాలి. క్లయింట్లు రిచ్ కాన్ఫిగరేషన్ ఎంపికలను అందిస్తాయి, ఇవి వివిధ ఫీచర్లను ప్రారంభించగలవు. + +క్లయింట్ పనితీరు మరియు డేటా వినియోగాన్ని గణనీయంగా ప్రభావితం చేసే ఎంపికలతో ప్రారంభిద్దాం. [సింక్ మోడ్‌లు](/developers/docs/nodes-and-clients/#sync-modes) బ్లాక్ చైను డేటాను డౌన్‌లోడ్ చేయడానికి మరియు ధృవీకరించడానికి వివిధ పద్ధతులను సూచిస్తాయి. నోడ్‌ను ప్రారంభించే ముందు, ఏ నెట్‌వర్క్ మరియు సింక్ మోడ్‌ను ఉపయోగించాలో మీరు నిర్ణయించుకోవాలి. పరిగణించవలసిన ముఖ్యమైన విషయాలు డిస్క్ స్థలం మరియు క్లయింట్‌కు అవసరమైన సింక్ సమయం. ఏ సింక్ మోడ్ డిఫాల్ట్‌గా ఉందో గుర్తించడానికి క్లయింట్ డాక్స్‌పై శ్రద్ధ వహించండి. అది మీకు సరిపోకపోతే, భద్రత స్థాయి, అందుబాటులో ఉన్న డేటా మరియు ఖర్చు ఆధారంగా మరొకదాన్ని ఎంచుకోండి. సింక్రొనైజేషన్ అల్గోరిథంతో పాటు, మీరు వివిధ రకాల పాత డేటాను కత్తిరించడాన్ని కూడా సెట్ చేయవచ్చు. కత్తిరించడం అనేది పాత డేటాను తొలగించడానికి వీలు కల్పిస్తుంది, అనగా, ఇటీవలి బ్లాక్‌ల నుండి అందుబాటులో లేని స్టేట్ ట్రై నోడ్‌లను తొలగించడం. + +ఇతర ప్రాథమిక కాన్ఫిగరేషన్ ఎంపికలు, ఉదా., నెట్‌వర్క్‌ను ఎంచుకోవడం - మెయిన్‌నెట్ లేదా టెస్టునెట్‌లు, RPC లేదా వెబ్‌సాకెట్‌ల కోసం HTTP ఎండ్‌పాయింట్‌ను ప్రారంభించడం మొదలైనవి. మీరు క్లయింట్ డాక్యుమెంటేషన్‌లో అన్ని ఫీచర్లు మరియు ఎంపికలను కనుగొనవచ్చు. వివిధ క్లయింట్ కాన్ఫిగరేషన్‌లను CLI లేదా కాన్ఫిగ్ ఫైల్‌లో నేరుగా సంబంధిత ఫ్లాగ్‌లతో క్లయింట్‌ను అమలు చేయడం ద్వారా సెట్ చేయవచ్చు. ప్రతి క్లయింట్ కొద్దిగా భిన్నంగా ఉంటుంది; కాన్ఫిగ్ ఎంపికలపై వివరాల కోసం దయచేసి దాని అధికారిక డాక్యుమెంటేషన్ లేదా సహాయ పేజీని ఎల్లప్పుడూ చూడండి. + +పరీక్ష ప్రయోజనాల కోసం, మీరు టెస్టునెట్ నెట్‌వర్క్‌లలో ఒకదానిపై క్లయింట్‌ను అమలు చేయడానికి ఇష్టపడవచ్చు. [మద్దతు ఉన్న నెట్‌వర్క్‌ల అవలోకనాన్ని చూడండి](/developers/docs/nodes-and-clients/#execution-clients). + +ప్రాథమిక కాన్ఫిగరేషన్‌తో ఎగ్జిక్యూషన్ క్లయింట్‌లను అమలు చేయడానికి ఉదాహరణలు తదుపరి విభాగంలో చూడవచ్చు. + +#### ఎగ్జిక్యూషన్ క్లయింట్‌ను ప్రారంభించడం {#starting-the-execution-client} + +ఇతీరియము క్లయింట్ సాఫ్ట్‌వేర్‌ను ప్రారంభించే ముందు, మీ పర్యావరణం సిద్ధంగా ఉందని చివరిసారి తనిఖీ చేయండి. ఉదాహరణకు, నిర్ధారించుకోండి: + +- ఎంచుకున్న నెట్‌వర్క్ మరియు సింక్ మోడ్‌ను పరిగణనలోకి తీసుకుంటే తగినంత డిస్క్ స్థలం ఉంది. +- మెమరీ మరియు CPU ఇతర ప్రోగ్రామ్‌ల ద్వారా నిలిపివేయబడలేదు. +- ఆపరేటింగ్ సిస్టమ్ తాజా వెర్షన్‌కి అప్‌డేట్ చేయబడింది. +- సిస్టమ్ సరైన సమయం మరియు తేదీని కలిగి ఉంది. +- మీ రౌటర్ మరియు ఫైర్‌వాల్ లిజనింగ్ పోర్ట్‌లలో కనెక్షన్‌లను అంగీకరిస్తాయి. డిఫాల్ట్‌గా ఇతీరియము క్లయింట్లు లిజనర్ (TCP) పోర్ట్ మరియు డిస్కవరీ (UDP) పోర్ట్‌ను ఉపయోగిస్తాయి, రెండూ డిఫాల్ట్‌గా 30303లో ఉంటాయి. + +ప్రతిదీ సరిగ్గా పనిచేస్తోందని నిర్ధారించుకోవడంలో సహాయపడటానికి ముందుగా మీ క్లయింట్‌ను టెస్టునెట్‌లో అమలు చేయండి. + +డిఫాల్ట్ కాని ఏవైనా క్లయింట్ సెట్టింగ్‌లను మీరు ప్రారంభంలో ప్రకటించాలి. మీరు ఇష్టపడే కాన్ఫిగరేషన్‌ను ప్రకటించడానికి మీరు ఫ్లాగ్‌లు లేదా కాన్ఫిగ్ ఫైల్‌ను ఉపయోగించవచ్చు. ప్రతి క్లయింట్ యొక్క ఫీచర్లు మరియు కాన్ఫిగ్ సింటాక్స్ సెట్ విభిన్నంగా ఉంటుంది. ప్రత్యేకతల కోసం మీ క్లయింట్ డాక్యుమెంటేషన్‌ను తనిఖీ చేయండి. + +[ఇంజిన్ ఎపిఐ](https://github.com/ethereum/execution-apis/tree/main/src/engine)లో పేర్కొన్న ప్రామాణీకరించబడిన ఎండ్‌పాయింట్ ద్వారా ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయం క్లయింట్లు కమ్యూనికేట్ చేస్తాయి. ఏకాభిప్రాయం క్లయింట్‌కు కనెక్ట్ చేయడానికి, ఎగ్జిక్యూషన్ క్లయింట్ తప్పనిసరిగా తెలిసిన మార్గంలో [`jwtsecret`](https://jwt.io/)ని రూపొందించాలి. భద్రత మరియు స్థిరత్వ కారణాల దృష్ట్యా, క్లయింట్లు ఒకే మెషీన్‌లో రన్ చేయాలి మరియు వాటి మధ్య స్థానిక RPC కనెక్షన్‌ని ప్రామాణీకరించడానికి ఈ మార్గం ఉపయోగించబడినందున రెండు క్లయింట్‌లకు ఈ మార్గం తెలియాలి. ఎగ్జిక్యూషన్ క్లయింట్ ప్రామాణీకరించబడిన ఎపిఐల కోసం లిజనింగ్ పోర్ట్‌ను కూడా నిర్వచించాలి. + +ఈ టోకెన్ క్లయింట్ సాఫ్ట్‌వేర్ ద్వారా స్వయంచాలకంగా ఉత్పత్తి చేయబడుతుంది, కానీ కొన్ని సందర్భాల్లో, మీరు దానిని మీరే చేయాల్సి రావచ్చు. మీరు దానిని [OpenSSL](https://www.openssl.org/) ఉపయోగించి రూపొందించవచ్చు: + +```sh +openssl rand -hex 32 > jwtsecret +``` + +#### ఎగ్జిక్యూషన్ క్లయింట్‌ను నడుపుతోంది {#running-an-execution-client} + +ఈ విభాగం ఎగ్జిక్యూషన్ క్లయింట్‌లను ప్రారంభించడం ద్వారా మీకు మార్గనిర్దేశం చేస్తుంది. ఇది ప్రాథమిక కాన్ఫిగరేషన్‌కు ఉదాహరణగా మాత్రమే పనిచేస్తుంది, ఇది ఈ సెట్టింగ్‌లతో క్లయింట్‌ను ప్రారంభిస్తుంది: + +- కనెక్ట్ చేయడానికి నెట్‌వర్క్‌ను నిర్దేశిస్తుంది, మా ఉదాహరణలలో మెయిన్‌నెట్ + - మీ సెటప్ యొక్క ప్రాథమిక పరీక్ష కోసం మీరు బదులుగా [టెస్టునెట్‌లలో ఒకదాన్ని](/developers/docs/networks/) ఎంచుకోవచ్చు +- బ్లాక్ చైనుతో సహా మొత్తం డేటా నిల్వ చేయబడే డేటా డైరెక్టరీని నిర్వచిస్తుంది + - మార్గం వాస్తవమైన దానితో భర్తీ చేయబడిందని నిర్ధారించుకోండి, ఉదా., మీ బాహ్య డ్రైవ్‌ను సూచిస్తుంది +- క్లయింట్‌తో కమ్యూనికేట్ చేయడానికి ఇంటర్‌ఫేస్‌లను ప్రారంభిస్తుంది + - ఏకాభిప్రాయం క్లయింట్‌తో కమ్యూనికేషన్ కోసం JSON-RPC మరియు ఇంజిన్ ఎపిఐతో సహా +- ప్రామాణీకరించబడిన ఎపిఐ కోసం `jwtsecret`కి మార్గాన్ని నిర్వచిస్తుంది + - ఉదాహరణ మార్గాన్ని క్లయింట్లు యాక్సెస్ చేయగల వాస్తవమైన దానితో భర్తీ చేశారని నిర్ధారించుకోండి, ఉదా., `/tmp/jwtsecret` + +దయచేసి ఇది కేవలం ప్రాథమిక ఉదాహరణ మాత్రమే అని గుర్తుంచుకోండి, మిగిలిన అన్ని సెట్టింగ్‌లు డిఫాల్ట్‌గా సెట్ చేయబడతాయి. డిఫాల్ట్ విలువలు, సెట్టింగ్‌లు మరియు ఫీచర్‌ల గురించి తెలుసుకోవడానికి ప్రతి క్లయింట్ డాక్యుమెంటేషన్‌పై శ్రద్ధ వహించండి. మరిన్ని ఫీచర్‌ల కోసం, ఉదాహరణకు వాలిడేటర్‌లను అమలు చేయడం, పర్యవేక్షించడం మొదలైన వాటి కోసం, దయచేసి నిర్దిష్ట క్లయింట్ డాక్యుమెంటేషన్‌ను చూడండి. + +> ఉదాహరణలలో బ్యాక్‌స్లాష్‌లు `` ఫార్మాటింగ్ ప్రయోజనాల కోసం మాత్రమే అని గమనించండి; కాన్ఫిగ్ ఫ్లాగ్‌లను ఒకే లైన్‌లో నిర్వచించవచ్చు. + +##### Besu నడుస్తోంది + +ఈ ఉదాహరణ Besuని మెయిన్‌నెట్‌లో ప్రారంభిస్తుంది, బ్లాక్ చైను డేటాను డిఫాల్ట్ ఫార్మాట్‌లో `/data/ethereum`లో నిల్వ చేస్తుంది, ఏకాభిప్రాయం క్లయింట్‌ను కనెక్ట్ చేయడం కోసం JSON-RPC మరియు ఇంజిన్ RPCని ప్రారంభిస్తుంది. ఇంజిన్ ఎపిఐ టోకెన్ `jwtsecret`తో ప్రామాణీకరించబడింది మరియు `localhost` నుండి కాల్‌లు మాత్రమే అనుమతించబడతాయి. + +```sh +besu --network=mainnet \ + --data-path=/data/ethereum \ + --rpc-http-enabled=true \ + --engine-rpc-enabled=true \ + --engine-host-allowlist="*" \ + --engine-jwt-enabled=true \ + --engine-jwt-secret=/path/to/jwtsecret +``` + +Besu వరుస ప్రశ్నలను అడిగే మరియు కాన్ఫిగ్ ఫైల్‌ను రూపొందించే లాంచర్ ఎంపికతో కూడా వస్తుంది. ఇంటరాక్టివ్ లాంచర్‌ని ఉపయోగించి అమలు చేయండి: + +```sh +besu --Xlauncher +``` + +[Besu డాక్యుమెంటేషన్](https://besu.hyperledger.org/public-networks/get-started/start-node/) అదనపు ఎంపికలు మరియు కాన్ఫిగరేషన్ వివరాలను కలిగి ఉంది. + +##### Erigonను అమలు చేస్తోంది + +ఈ ఉదాహరణ Erigonని మెయిన్‌నెట్‌లో ప్రారంభిస్తుంది, `/data/ethereum`లో బ్లాక్ చైను డేటాను నిల్వ చేస్తుంది, JSON-RPCని ప్రారంభిస్తుంది, ఏ నేమ్‌స్పేస్‌లు అనుమతించబడతాయో నిర్వచిస్తుంది మరియు `jwtsecret` మార్గం ద్వారా నిర్వచించబడిన ఏకాభిప్రాయం క్లయింట్‌ను కనెక్ట్ చేయడం కోసం ప్రామాణీకరణను ప్రారంభిస్తుంది. + +```sh +erigon --chain mainnet \ + --datadir /data/ethereum \ + --http --http.api=engine,eth,web3,net \ + --authrpc.jwtsecret=/path/to/jwtsecret +``` + +Erigon డిఫాల్ట్‌గా 8GB HDDతో పూర్తి సింక్‌ని నిర్వహిస్తుంది, ఇది 2TB కంటే ఎక్కువ ఆర్కైవ్ డేటాను అందిస్తుంది. డేటాడిర్ తగినంత ఖాళీ స్థలంతో డిస్క్‌ని సూచిస్తుందని నిర్ధారించుకోండి లేదా వివిధ రకాల డేటాను ట్రిమ్ చేయగల `--prune` ఫ్లాగ్‌ని చూడండి. మరింత తెలుసుకోవడానికి Erigon యొక్క `--help`ని తనిఖీ చేయండి. + +##### Gethను నడుపుతోంది + +ఈ ఉదాహరణ మెయిన్‌నెట్‌లో Gethను ప్రారంభిస్తుంది, `/data/ethereum`లో బ్లాక్ చైను డేటాను నిల్వ చేస్తుంది, JSON-RPCని ప్రారంభిస్తుంది మరియు ఏ నేమ్‌స్పేస్‌లు అనుమతించబడతాయో నిర్వచిస్తుంది. ఇది ఏకాభిప్రాయం క్లయింట్‌ను కనెక్ట్ చేయడం కోసం ప్రామాణీకరణను కూడా ప్రారంభిస్తుంది, దీనికి `jwtsecret`కి మార్గం మరియు ఏ కనెక్షన్‌లు అనుమతించబడతాయో నిర్వచించే ఎంపిక కూడా అవసరం, మా ఉదాహరణలో `localhost` నుండి మాత్రమే. + +```sh +geth --mainnet \ + --datadir "/data/ethereum" \ + --http --authrpc.addr localhost \ + --authrpc.vhosts="localhost" \ + --authrpc.port 8551 + --authrpc.jwtsecret=/path/to/jwtsecret +``` + +అన్ని కాన్ఫిగరేషన్ ఎంపికల కోసం [డాక్స్ తనిఖీ చేయండి](https://geth.ethereum.org/docs/fundamentals/command-line-options) మరియు [ఏకాభిప్రాయం క్లయింట్‌తో Gethను అమలు చేయడం](https://geth.ethereum.org/docs/getting-started/consensus-clients) గురించి మరింత తెలుసుకోండి. + +##### నెదర్‌మైండ్‌ను నడుపుతోంది + +నెదర్‌మైండ్ వివిధ [ఇన్‌స్టాలేషన్ ఎంపికలను](https://docs.nethermind.io/get-started/installing-nethermind) అందిస్తుంది. ప్యాకేజీ గైడెడ్ సెటప్‌తో కూడిన లాంచర్‌తో సహా వివిధ బైనరీలతో వస్తుంది, ఇది ఇంటరాక్టివ్‌గా కాన్ఫిగరేషన్‌ను రూపొందించడంలో మీకు సహాయపడుతుంది. ప్రత్యామ్నాయంగా, మీరు రన్నర్‌ను కనుగొనవచ్చు, ఇది ఎగ్జిక్యూటబుల్ మరియు మీరు దానిని కాన్ఫిగ్ ఫ్లాగ్‌లతో అమలు చేయవచ్చు. JSON-RPC డిఫాల్ట్‌గా ప్రారంభించబడింది. + +```sh +Nethermind.Runner --config mainnet \ + --datadir /data/ethereum \ + --JsonRpc.JwtSecretFile=/path/to/jwtsecret +``` + +నెదర్‌మైండ్ డాక్స్ ఏకాభిప్రాయం క్లయింట్‌తో నెదర్‌మైండ్‌ను అమలు చేయడంపై [పూర్తి గైడ్‌ను](https://docs.nethermind.io/get-started/running-node/) అందిస్తుంది. + +ఎగ్జిక్యూషన్ క్లయింట్ దాని ప్రధాన ఫంక్షన్‌లు, ఎంచుకున్న ఎండ్‌పాయింట్‌లను ప్రారంభిస్తుంది మరియు పీర్‌ల కోసం వెతకడం ప్రారంభిస్తుంది. పీర్‌లను విజయవంతంగా కనుగొన్న తర్వాత, క్లయింట్ సింక్రొనైజేషన్‌ను ప్రారంభిస్తుంది. ఎగ్జిక్యూషన్ క్లయింట్ ఏకాభిప్రాయం క్లయింట్ నుండి కనెక్షన్ కోసం వేచి ఉంటుంది. క్లయింట్ ప్రస్తుత స్థితికి విజయవంతంగా సింక్ చేయబడిన తర్వాత ప్రస్తుత బ్లాక్ చైను డేటా అందుబాటులో ఉంటుంది. + +##### Rethను అమలు చేస్తోంది + +ఈ ఉదాహరణ Rethని మెయిన్‌నెట్‌లో ప్రారంభిస్తుంది, డిఫాల్ట్ డేటా లొకేషన్‌ను ఉపయోగిస్తుంది. `localhost` నుండి కాల్‌లు మాత్రమే అనుమతించబడే `jwtsecret` మార్గం ద్వారా నిర్వచించబడిన ఏకాభిప్రాయం క్లయింట్‌ను కనెక్ట్ చేయడం కోసం JSON-RPC మరియు ఇంజిన్ RPC ప్రామాణీకరణను ప్రారంభిస్తుంది. + +```sh +reth node \ + --authrpc.jwtsecret /path/to/jwtsecret \ + --authrpc.addr 127.0.0.1 \ + --authrpc.port 8551 +``` + +డిఫాల్ట్ డేటా డైరెక్టరీల గురించి మరింత తెలుసుకోవడానికి [Rethను కాన్ఫిగర్ చేయడం](https://reth.rs/run/config.html?highlight=data%20directory#configuring-reth) చూడండి. [Reth డాక్యుమెంటేషన్](https://reth.rs/run/mainnet.html) అదనపు ఎంపికలు మరియు కాన్ఫిగరేషన్ వివరాలను కలిగి ఉంది. + +#### ఏకాభిప్రాయం క్లయింట్‌ను ప్రారంభించడం {#starting-the-consensus-client} + +ఎగ్జిక్యూషన్ క్లయింట్‌కు స్థానిక RPC కనెక్షన్‌ను ఏర్పాటు చేయడానికి ఏకాభిప్రాయం క్లయింట్ సరైన పోర్ట్ కాన్ఫిగరేషన్‌తో ప్రారంభించబడాలి. ఏకాభిప్రాయం క్లయింట్లు బహిర్గతం చేయబడిన ఎగ్జిక్యూషన్ క్లయింట్ పోర్ట్‌తో కాన్ఫిగరేషన్ ఆర్గ్యుమెంట్‌గా అమలు చేయాలి. + +ఏకాభిప్రాయం క్లయింట్‌కు వాటి మధ్య RPC కనెక్షన్‌ని ప్రామాణీకరించడానికి ఎగ్జిక్యూషన్ క్లయింట్ యొక్క `jwt-secret`కి మార్గం కూడా అవసరం. పైన ఉన్న అమలు ఉదాహరణల మాదిరిగానే, ప్రతి ఏకాభిప్రాయం క్లయింట్ కాన్ఫిగరేషన్ ఫ్లాగ్‌ను కలిగి ఉంటుంది, ఇది jwt టోకెన్ ఫైల్ మార్గాన్ని ఆర్గ్యుమెంట్‌గా తీసుకుంటుంది. ఇది ఎగ్జిక్యూషన్ క్లయింట్‌కు అందించిన `jwtsecret` మార్గంతో స్థిరంగా ఉండాలి. + +మీరు వాలిడేటర్‌ను అమలు చేయాలని ప్లాన్ చేస్తే, ఫీజు గ్రహీత యొక్క ఇతీరియము చిరునామాను పేర్కొనే కాన్ఫిగరేషన్ ఫ్లాగ్‌ను జోడించారని నిర్ధారించుకోండి. ఇక్కడే మీ వాలిడేటర్ కోసం ఈథర్ రివార్డ్‌లు పేరుకుపోతాయి. ప్రతి ఏకాభిప్రాయం క్లయింట్ ఒక ఎంపికను కలిగి ఉంటుంది, ఉదా., `--suggested-fee-recipient=0xabcd1`, ఇది ఇతీరియము చిరునామాను ఆర్గ్యుమెంట్‌గా తీసుకుంటుంది. + +టెస్టునెట్‌లో బీకాన్ నోడ్‌ను ప్రారంభించేటప్పుడు, [చెక్‌పాయింట్ సింక్](https://notes.ethereum.org/@launchpad/checkpoint-sync) కోసం పబ్లిక్ ఎండ్‌పాయింట్‌ను ఉపయోగించడం ద్వారా మీరు గణనీయమైన సింకింగ్ సమయాన్ని ఆదా చేయవచ్చు. + +#### ఏకాభిప్రాయం క్లయింట్‌ను నడుపుతోంది {#running-a-consensus-client} + +##### లైట్‌హౌస్‌ను నడుపుతోంది + +లైట్‌హౌస్‌ను అమలు చేయడానికి ముందు, [లైట్‌హౌస్ బుక్](https://lighthouse-book.sigmaprime.io/installation.html)లో దాన్ని ఎలా ఇన్‌స్టాల్ చేయాలో మరియు కాన్ఫిగర్ చేయాలో మరింత తెలుసుకోండి. + +```sh +lighthouse beacon_node \ + --network mainnet \ + --datadir /data/ethereum \ + --http \ + --execution-endpoint http://127.0.0.1:8551 \ + --execution-jwt /path/to/jwtsecret +``` + +##### లోడ్‌స్టార్‌ను అమలు చేస్తోంది + +లోడ్‌స్టార్ సాఫ్ట్‌వేర్‌ను కంపైల్ చేయడం ద్వారా లేదా డాకర్ ఇమేజ్‌ను డౌన్‌లోడ్ చేయడం ద్వారా ఇన్‌స్టాల్ చేయండి. [డాక్స్](https://chainsafe.github.io/lodestar/) మరియు మరింత సమగ్రమైన [సెటప్ గైడ్](https://hackmd.io/@philknows/rk5cDvKmK)లో మరింత తెలుసుకోండి. + +```sh +lodestar beacon \ + --dataDir="/data/ethereum" \ + --network=mainnet \ + --eth1.enabled=true \ + --execution.urls="http://127.0.0.1:8551" \ + --jwt-secret="/path/to/jwtsecret" +``` + +##### నింబస్‌ను అమలు చేస్తోంది + +నింబస్ ఏకాభిప్రాయం మరియు ఎగ్జిక్యూషన్ క్లయింట్లు రెండింటితో వస్తుంది. ఇది చాలా నిరాడంబరమైన కంప్యూటింగ్ శక్తితో కూడా వివిధ పరికరాలలో అమలు చేయబడుతుంది. +[డిపెండెన్సీలు మరియు నింబస్‌ను ఇన్‌స్టాల్ చేసిన తర్వాత](https://nimbus.guide/quick-start.html), మీరు దాని ఏకాభిప్రాయం క్లయింట్‌ను అమలు చేయవచ్చు: + +```sh +nimbus_beacon_node \ + --network=mainnet \ + --web3-url=http://127.0.0.1:8551 \ + --rest \ + --jwt-secret="/path/to/jwtsecret" +``` + +##### Prysmను నడుపుతోంది + +Prysm సులభమైన ఆటోమేటిక్ ఇన్‌స్టాలేషన్‌ను అనుమతించే స్క్రిప్ట్‌తో వస్తుంది. వివరాలను [Prysm డాక్స్](https://prysm.offchainlabs.com/docs/install-prysm/install-with-script/)లో చూడవచ్చు. + +```sh +./prysm.sh beacon-chain \ + --mainnet \ + --datadir /data/ethereum \ + --execution-endpoint=http://localhost:8551 \ + --jwt-secret=/path/to/jwtsecret +``` + +##### Teku నడుస్తోంది + +```sh +teku --network mainnet \ + --data-path "/data/ethereum" \ + --ee-endpoint http://localhost:8551 \ + --ee-jwt-secret-file "/path/to/jwtsecret" +``` + +డిపాజిట్ ఒప్పందాన్ని చదవడానికి మరియు వాలిడేటర్లను గుర్తించడానికి ఏకాభిప్రాయం క్లయింట్ ఎగ్జిక్యూషన్ క్లయింట్‌కు కనెక్ట్ చేసినప్పుడు, అది ఇతర బీకాన్ నోడ్ పీర్‌లకు కూడా కనెక్ట్ అవుతుంది మరియు జెనెసిస్ నుండి ఏకాభిప్రాయం స్లాట్‌లను సింక్ చేయడం ప్రారంభిస్తుంది. బీకాన్ నోడ్ ప్రస్తుత యుగానికి చేరుకున్న తర్వాత, బీకాన్ ఎపిఐ మీ వాలిడేటర్ల కోసం ఉపయోగపడతాయి. [బీకాన్ నోడ్ ఎపిఐలు](https://eth2docs.vercel.app/) గురించి మరింత తెలుసుకోండి. + +### వాలిడేటర్లను జోడిస్తోంది {#adding-validators} + +ఏకాభిప్రాయం క్లయింట్ వాలిడేటర్లు కనెక్ట్ చేయడానికి బీకాన్ నోడ్‌గా పనిచేస్తుంది. ప్రతి ఏకాభిప్రాయం క్లయింట్ దాని సంబంధిత డాక్యుమెంటేషన్‌లో వివరంగా వివరించబడిన దాని స్వంత వాలిడేటర్ సాఫ్ట్‌వేర్‌ను కలిగి ఉంటుంది. + +మీ స్వంత వాలిడేటర్‌ను నడపడం [సోలో స్టాకింగ్](/staking/solo/)ను అనుమతిస్తుంది, ఇది ఇతీరియము నెట్‌వర్క్‌కు మద్దతు ఇవ్వడానికి అత్యంత ప్రభావవంతమైన మరియు విశ్వసనీయత లేని పద్ధతి. అయితే, దీనికి 32 ETH డిపాజిట్ అవసరం. తక్కువ మొత్తంలో మీ స్వంత నోడ్‌లో వాలిడేటర్‌ను నడపడానికి, [రాకెట్ పూల్](https://rocketpool.net/node-operators) వంటి అనుమతి లేని నోడ్ ఆపరేటర్‌లతో కూడిన వికేంద్రీకృత పూల్ మీకు ఆసక్తి కలిగి ఉండవచ్చు. + +స్టాకింగ్ మరియు వాలిడేటర్ కీ జనరేషన్‌తో ప్రారంభించడానికి సులభమైన మార్గం [Hoodi Testnet Staking Launchpad](https://hoodi.launchpad.ethereum.org/)ని ఉపయోగించడం, ఇది [Hoodiలో నోడ్‌లను అమలు చేయడం](https://notes.ethereum.org/@launchpad/hoodi) ద్వారా మీ సెటప్‌ను పరీక్షించడానికి మిమ్మల్ని అనుమతిస్తుంది. మీరు మెయిన్‌నెట్ కోసం సిద్ధంగా ఉన్నప్పుడు, [మెయిన్‌నెట్ స్టాకింగ్ లాంచ్‌ప్యాడ్](https://launchpad.ethereum.org/)ని ఉపయోగించి మీరు ఈ దశలను పునరావృతం చేయవచ్చు. + +స్టాకింగ్ ఎంపికల గురించి అవలోకనం కోసం [స్టాకింగ్ పేజీని](/staking) చూడండి. + +### నోడ్‌ను ఉపయోగించడం {#using-the-node} + +ఎగ్జిక్యూషన్ క్లయింట్లు [RPC ఎపిఐ ఎండ్‌పాయింట్‌లను](/developers/docs/apis/json-rpc/) అందిస్తాయి, వీటిని మీరు లావాదేవీలను సమర్పించడానికి, వివిధ మార్గాల్లో ఇతీరియము నెట్‌వర్క్‌లో స్మార్ట్ కాంట్రాక్టులతో పరస్పరం వ్యవహరించడానికి లేదా అమర్చడానికి ఉపయోగించవచ్చు: + +- వాటిని అనుకూలమైన ప్రోటోకాల్‌తో (ఉదా., `curl`ని ఉపయోగించి) మాన్యువల్‌గా కాల్ చేయడం +- అందించిన కన్సోల్‌ను జతచేయడం (ఉదా., `geth attach`) +- వాటిని web3 లైబ్రరీలను ఉపయోగించి అప్లికేషన్లలో అమలు చేయడం, ఉదా., [web3.py](https://web3py.readthedocs.io/en/stable/overview.html#overview), [ethers](https://github.com/ethers-io/ethers.js/) + +విభిన్న క్లయింట్లు RPC ఎండ్‌పాయింట్‌ల యొక్క విభిన్న అమలులను కలిగి ఉంటాయి. కానీ మీరు ప్రతి క్లయింట్‌తో ఉపయోగించగల ప్రామాణిక JSON-RPC ఉంది. అవలోకనం కోసం [JSON-RPC డాక్స్ చదవండి](/developers/docs/apis/json-rpc/). ఇతీరియము నెట్‌వర్క్ నుండి సమాచారం అవసరమైన అప్లికేషన్లు ఈ RPCని ఉపయోగించవచ్చు. ఉదాహరణకు, ప్రముఖ వాలెట్ MetaMask బలమైన గోప్యత మరియు భద్రతా ప్రయోజనాలను కలిగి ఉన్న [మీ స్వంత RPC ఎండ్‌పాయింట్‌కు కనెక్ట్ చేయడానికి](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node) మిమ్మల్ని అనుమతిస్తుంది. + +ఏకాభిప్రాయం క్లయింట్లు అన్నీ [బీకాన్ ఎపిఐ](https://ethereum.github.io/beacon-APIs)ని బహిర్గతం చేస్తాయి, దీనిని ఏకాభిప్రాయం క్లయింట్ యొక్క స్థితిని తనిఖీ చేయడానికి లేదా [Curl](https://curl.se) వంటి సాధనాలను ఉపయోగించి అభ్యర్థనలను పంపడం ద్వారా బ్లాక్‌లు మరియు ఏకాభిప్రాయం డేటాను డౌన్‌లోడ్ చేయడానికి ఉపయోగించవచ్చు. దీని గురించి మరింత సమాచారం ప్రతి ఏకాభిప్రాయం క్లయింట్ కోసం డాక్యుమెంటేషన్‌లో చూడవచ్చు. + +#### RPC చేరుకోవడం {#reaching-rpc} + +ఎగ్జిక్యూషన్ క్లయింట్ JSON-RPC కోసం డిఫాల్ట్ పోర్ట్ `8545` కానీ మీరు కాన్ఫిగరేషన్‌లో స్థానిక ఎండ్‌పాయింట్‌ల పోర్ట్‌లను సవరించవచ్చు. డిఫాల్ట్‌గా, RPC ఇంటర్‌ఫేస్ మీ కంప్యూటర్ యొక్క లోకల్ హోస్ట్‌లో మాత్రమే అందుబాటులో ఉంటుంది. దీనిని రిమోట్‌గా యాక్సెస్ చేయడానికి, మీరు చిరునామాను `0.0.0.0`కి మార్చడం ద్వారా దీనిని పబ్లిక్‌కు బహిర్గతం చేయాలనుకోవచ్చు. ఇది స్థానిక నెట్‌వర్క్ మరియు పబ్లిక్ IP చిరునామాల ద్వారా అందుబాటులోకి వస్తుంది. చాలా సందర్భాలలో మీరు మీ రౌటర్‌లో పోర్ట్ ఫార్వార్డింగ్‌ను కూడా సెటప్ చేయాలి. + +ఇంటర్నెట్‌కు పోర్ట్‌లను బహిర్గతం చేసే విధానాన్ని జాగ్రత్తగా సంప్రదించండి, ఇది ఇంటర్నెట్‌లోని ఎవరినైనా మీ నోడ్‌ను నియంత్రించడానికి అనుమతిస్తుంది. మీరు మీ క్లయింట్‌ను వాలెట్‌గా ఉపయోగిస్తుంటే, హానికరమైన నటులు మీ సిస్టమ్‌ను డౌన్ చేయడానికి లేదా మీ నిధులను దొంగిలించడానికి మీ నోడ్‌ను యాక్సెస్ చేయవచ్చు. + +సంభావ్య హానికరమైన RPC పద్ధతులను సవరించకుండా నిరోధించడం దీనికి ఒక మార్గం. ఉదాహరణకు, Gethతో, మీరు ఫ్లాగ్‌తో సవరించదగిన పద్ధతులను ప్రకటించవచ్చు: `--http.api web3,eth,txpool`. + +RPC ఇంటర్‌ఫేస్‌కు యాక్సెస్ ఎడ్జ్ లేయర్ ఎపిఐలు లేదా వెబ్ సర్వర్ అప్లికేషన్ల అభివృద్ధి ద్వారా విస్తరించవచ్చు, Nginx వంటివి, మరియు వాటిని మీ క్లయింట్ యొక్క స్థానిక చిరునామా మరియు పోర్ట్‌కు కనెక్ట్ చేయడం ద్వారా. మధ్యస్థ పొరను ఉపయోగించడం డెవలపర్‌లకు RPC ఇంటర్‌ఫేస్‌కు సురక్షిత `https` కనెక్షన్‌ల కోసం సర్టిఫికేట్‌ను సెటప్ చేసే సామర్థ్యాన్ని కూడా అనుమతిస్తుంది. + +వెబ్ సర్వర్, ప్రాక్సీ లేదా బాహ్యంగా ఎదుర్కొంటున్న రెస్ట్ ఎపిఐని సెటప్ చేయడం మీ నోడ్ యొక్క RPC ఎండ్‌పాయింట్‌కు యాక్సెస్ అందించడానికి ఏకైక మార్గం కాదు. పబ్లిక్‌గా చేరుకోగల ఎండ్‌పాయింట్‌ను సెటప్ చేయడానికి మరొక గోప్యత-సంరక్షించే మార్గం మీ స్వంత [టార్](https://www.torproject.org/) ఆనియన్ సేవలో నోడ్‌ను హోస్ట్ చేయడం. ఇది స్టాటిక్ పబ్లిక్ IP చిరునామా లేదా తెరిచిన పోర్ట్‌లు లేకుండా మీ స్థానిక నెట్‌వర్క్ వెలుపల RPCని చేరుకోవడానికి మిమ్మల్ని అనుమతిస్తుంది. అయితే, ఈ కాన్ఫిగరేషన్‌ను ఉపయోగించడం వల్ల టార్ నెట్‌వర్క్ ద్వారా మాత్రమే RPC ఎండ్‌పాయింట్‌ను యాక్సెస్ చేయడానికి అనుమతించవచ్చు, ఇది అన్ని అప్లికేషన్ల ద్వారా మద్దతు ఇవ్వబడదు మరియు కనెక్షన్ సమస్యలకు దారితీయవచ్చు. + +దీనిని చేయడానికి, మీరు మీ స్వంత [ఆనియన్ సేవను](https://community.torproject.org/onion-services/) సృష్టించాలి. మీ స్వంతంగా హోస్ట్ చేయడానికి ఆనియన్ సర్వీస్ సెటప్‌పై [డాక్యుమెంటేషన్‌ను](https://community.torproject.org/onion-services/setup/) తనిఖీ చేయండి. మీరు దానిని RPC పోర్ట్‌కు ప్రాక్సీతో వెబ్ సర్వర్‌కు లేదా నేరుగా RPCకి సూచించవచ్చు. + +చివరగా, మరియు అంతర్గత నెట్‌వర్క్‌లకు యాక్సెస్ అందించడానికి అత్యంత ప్రజాదరణ పొందిన మార్గాలలో ఒకటి VPN కనెక్షన్ ద్వారా. మీ వినియోగ సందర్భం మరియు మీ నోడ్‌కు యాక్సెస్ అవసరమైన వినియోగదారుల పరిమాణాన్ని బట్టి, సురక్షితమైన VPN కనెక్షన్ ఒక ఎంపిక కావచ్చు. [OpenVPN](https://openvpn.net/) ఒక పూర్తి-ఫీచర్ SSL VPN, ఇది పరిశ్రమ ప్రమాణ SSL/TLS ప్రోటోకాల్‌ను ఉపయోగించి OSI లేయర్ 2 లేదా 3 సురక్షిత నెట్‌వర్క్ పొడిగింపును అమలు చేస్తుంది, సర్టిఫికేట్‌లు, స్మార్ట్ కార్డ్‌లు మరియు/లేదా వినియోగదారు పేరు/పాస్‌వర్డ్ ఆధారాల ఆధారంగా సౌకర్యవంతమైన క్లయింట్ ప్రామాణీకరణ పద్ధతులకు మద్దతు ఇస్తుంది మరియు VPN వర్చువల్ ఇంటర్‌ఫేస్‌కు వర్తించే ఫైర్‌వాల్ నియమాలను ఉపయోగించి వినియోగదారు లేదా సమూహ-నిర్దిష్ట యాక్సెస్ నియంత్రణ విధానాలను అనుమతిస్తుంది. + +### నోడ్‌ను ఆపరేట్ చేయడం {#operating-the-node} + +మీ నోడ్ సరిగ్గా నడుస్తుందని నిర్ధారించుకోవడానికి మీరు క్రమం తప్పకుండా పర్యవేక్షించాలి. మీరు అప్పుడప్పుడు నిర్వహణ చేయాల్సి రావచ్చు. + +#### నోడ్‌ను ఆన్‌లైన్‌లో ఉంచడం {#keeping-node-online} + +మీ నోడ్ ఎల్లప్పుడూ ఆన్‌లైన్‌లో ఉండవలసిన అవసరం లేదు, కానీ నెట్‌వర్క్‌తో సింక్‌లో ఉంచడానికి మీరు వీలైనంత వరకు ఆన్‌లైన్‌లో ఉంచాలి. మీరు దానిని పునఃప్రారంభించడానికి మూసివేయవచ్చు, కానీ గుర్తుంచుకోండి: + +- ఇటీవలి స్థితి ఇంకా డిస్క్‌లో వ్రాయబడుతుంటే మూసివేయడానికి కొన్ని నిమిషాలు పట్టవచ్చు. +- బలవంతంగా మూసివేయడం డేటాబేస్‌ను దెబ్బతీస్తుంది, దీనివల్ల మీరు మొత్తం నోడ్‌ను తిరిగి సింక్ చేయాల్సి ఉంటుంది. +- మీ క్లయింట్ నెట్‌వర్క్‌తో సింక్ అవ్వదు మరియు మీరు దానిని పునఃప్రారంభించినప్పుడు తిరిగి సింక్ చేయాల్సి ఉంటుంది. నోడ్ చివరిగా మూసివేయబడిన చోట నుండి సింక్ చేయడం ప్రారంభించగలిగినప్పటికీ, అది ఆఫ్‌లైన్‌లో ఎంతసేపు ఉందో బట్టి ప్రక్రియకు సమయం పట్టవచ్చు. + +_ఇది ఏకాభిప్రాయం లేయర్ వాలిడేటర్ నోడ్‌లకు వర్తించదు._ మీ నోడ్‌ను ఆఫ్‌లైన్‌కి తీసుకోవడం దానిపై ఆధారపడిన అన్ని సేవలను ప్రభావితం చేస్తుంది. మీరు _స్టాకింగ్_ ప్రయోజనాల కోసం నోడ్‌ను నడుపుతున్నట్లయితే, మీరు వీలైనంత వరకు పనికిరాని సమయాన్ని తగ్గించడానికి ప్రయత్నించాలి. + +#### క్లయింట్ సేవలను సృష్టిస్తోంది {#creating-client-services} + +ప్రారంభంలో మీ క్లయింట్‌లను స్వయంచాలకంగా అమలు చేయడానికి ఒక సేవను సృష్టించడాన్ని పరిగణించండి. ఉదాహరణకు, Linux సర్వర్‌లలో, `systemd`తో ఒక సేవను సృష్టించడం మంచి పద్ధతి, ఇది సరైన కాన్ఫిగరేషన్‌తో క్లయింట్‌ను అమలు చేస్తుంది, పరిమిత అధికారాలు కలిగిన వినియోగదారు కింద మరియు స్వయంచాలకంగా పునఃప్రారంభమవుతుంది. + +#### క్లయింట్‌లను అప్‌డేట్ చేస్తోంది {#updating-clients} + +మీరు మీ క్లయింట్ సాఫ్ట్‌వేర్‌ను తాజా భద్రతా ప్యాచ్‌లు, ఫీచర్లు మరియు [EIPలు](/eips/)తో తాజాగా ఉంచాలి. ముఖ్యంగా [హార్డ్ ఫోర్క్‌లు](/ethereum-forks/) ముందు, మీరు సరైన క్లయింట్ వెర్షన్‌లను నడుపుతున్నారని నిర్ధారించుకోండి. + +> ముఖ్యమైన నెట్‌వర్క్ అప్‌డేట్‌లకు ముందు, EF దాని [బ్లాగ్‌లో](https://blog.ethereum.org) ఒక పోస్ట్‌ను ప్రచురిస్తుంది. మీ నోడ్‌కు అప్‌డేట్ అవసరమైనప్పుడు మీ మెయిల్‌కు నోటిఫికేషన్ పొందడానికి మీరు [ఈ ప్రకటనలకు సబ్‌స్క్రయిబ్ చేసుకోవచ్చు](https://blog.ethereum.org/category/protocol#subscribe). + +క్లయింట్‌లను అప్‌డేట్ చేయడం చాలా సులభం. ప్రతి క్లయింట్ వారి డాక్యుమెంటేషన్‌లో నిర్దిష్ట సూచనలను కలిగి ఉంటుంది, కానీ ప్రక్రియ సాధారణంగా తాజా వెర్షన్‌ను డౌన్‌లోడ్ చేసి, కొత్త ఎగ్జిక్యూటబుల్‌తో క్లయింట్‌ను పునఃప్రారంభించడం. క్లయింట్ అది ఎక్కడ వదిలేసిందో అక్కడి నుండి ప్రారంభించాలి, కానీ అప్‌డేట్‌లు వర్తిస్తాయి. + +ప్రతి క్లయింట్ అమలు పీర్-టు-పీర్ ప్రోటోకాల్‌లో ఉపయోగించే మానవ-చదవగల వెర్షన్ స్ట్రింగ్‌ను కలిగి ఉంటుంది, కానీ కమాండ్ లైన్ నుండి కూడా యాక్సెస్ చేయవచ్చు. ఈ వెర్షన్ స్ట్రింగ్ వినియోగదారులకు వారు సరైన వెర్షన్‌ను నడుపుతున్నారని తనిఖీ చేయడానికి అనుమతిస్తుంది మరియు బ్లాక్ ఎక్స్‌ప్లోరర్‌లు మరియు నెట్‌వర్క్‌పై నిర్దిష్ట క్లయింట్ల పంపిణీని లెక్కించడానికి ఆసక్తి ఉన్న ఇతర విశ్లేషణాత్మక సాధనాలను అనుమతిస్తుంది. వెర్షన్ స్ట్రింగ్‌ల గురించి మరింత సమాచారం కోసం దయచేసి వ్యక్తిగత క్లయింట్ డాక్యుమెంటేషన్‌ను చూడండి. + +#### అదనపు సేవలను నడుపుతోంది {#running-additional-services} + +మీ స్వంత నోడ్‌ను నడపడం ఇతీరియము క్లయింట్ RPCకి ప్రత్యక్ష యాక్సెస్ అవసరమయ్యే సేవలను ఉపయోగించడానికి మిమ్మల్ని అనుమతిస్తుంది. ఇవి ఇతీరియముపై నిర్మించబడిన సేవలు, [లేయర్ 2 పరిష్కారాలు](/developers/docs/scaling/#layer-2-scaling), వాలెట్ల కోసం బ్యాకెండ్, బ్లాక్ ఎక్స్‌ప్లోరర్లు, డెవలపర్ సాధనాలు మరియు ఇతర ఇతీరియము మౌలిక సదుపాయాలు వంటివి. + +#### నోడ్‌ను పర్యవేక్షిస్తోంది {#monitoring-the-node} + +మీ నోడ్‌ను సరిగ్గా పర్యవేక్షించడానికి, మెట్రిక్‌లను సేకరించడాన్ని పరిగణించండి. క్లయింట్లు మెట్రిక్స్ ఎండ్‌పాయింట్‌లను అందిస్తాయి, తద్వారా మీరు మీ నోడ్ గురించి సమగ్ర డేటాను పొందవచ్చు. [InfluxDB](https://www.influxdata.com/get-influxdb/) లేదా [Prometheus](https://prometheus.io/) వంటి సాధనాలను ఉపయోగించి డేటాబేస్‌లను సృష్టించండి, వీటిని మీరు [Grafana](https://grafana.com/) వంటి సాఫ్ట్‌వేర్‌లో విజువలైజేషన్లు మరియు చార్ట్‌లుగా మార్చవచ్చు. ఈ సాఫ్ట్‌వేర్‌ను ఉపయోగించడానికి అనేక సెటప్‌లు మరియు మీ నోడ్ మరియు మొత్తం నెట్‌వర్క్‌ను విజువలైజ్ చేయడానికి విభిన్న Grafana డ్యాష్‌బోర్డ్‌లు ఉన్నాయి. ఉదాహరణకు, [Gethను InfluxDB మరియు Grafanaతో పర్యవేక్షించడంపై ట్యుటోరియల్ చూడండి](/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/). + +మీ పర్యవేక్షణలో భాగంగా, మీ మెషీన్ పనితీరుపై నిఘా ఉంచారని నిర్ధారించుకోండి. మీ నోడ్ యొక్క ప్రారంభ సింక్ సమయంలో, క్లయింట్ సాఫ్ట్‌వేర్ CPU మరియు RAMపై చాలా భారీగా ఉండవచ్చు. Grafanaకు అదనంగా, మీరు `htop` లేదా `uptime` వంటి మీ OS అందించే సాధనాలను ఉపయోగించవచ్చు. + +## మరింత సమాచారం {#further-reading} + +- [ఇతీరియము స్టాకింగ్ గైడ్‌లు](https://github.com/SomerEsat/ethereum-staking-guides) - _సోమర్ ఎసాత్, తరచుగా అప్‌డేట్ చేయబడుతుంది_ +- [గైడ్ | మెయిన్‌నెట్‌లో ఇతీరియము స్టాకింగ్ కోసం వాలిడేటర్‌ను ఎలా సెటప్ చేయాలి](https://www.coincashew.com/coins/overview-eth/guide-or-how-to-setup-a-validator-on-eth2-mainnet) _– CoinCashew, తరచుగా అప్‌డేట్ చేయబడుతుంది_ +- [టెస్టునెట్‌లలో వాలిడేటర్లను నడపడంపై ETHStaker గైడ్‌లు](https://github.com/remyroy/ethstaker#guides) – _ETHStaker, క్రమం తప్పకుండా అప్‌డేట్ చేయబడుతుంది_ +- [ఇతీరియము నోడ్‌ల కోసం నమూనా AWS బ్లాక్ చైను నోడ్ రన్నర్ యాప్](https://aws-samples.github.io/aws-blockchain-node-runners/docs/Blueprints/Ethereum) - _AWS, తరచుగా అప్‌డేట్ చేయబడుతుంది_ +- [నోడ్ ఆపరేటర్ల కోసం విలీన ప్రశ్నలు](https://notes.ethereum.org/@launchpad/node-faq-merge) - _జూలై 2022_ +- [ఇతీరియము పూర్తి ధృవీకరించబడిన నోడ్ కావడానికి హార్డ్‌వేర్ అవసరాలను విశ్లేషించడం](https://medium.com/coinmonks/analyzing-the-hardware-requirements-to-be-an-ethereum-full-validated-node-dc064f167902) _– ఆల్బర్ట్ పలావ్, 24 సెప్టెంబర్ 2018_ +- [ఇతీరియము పూర్తి నోడ్స్ నడపడం: కేవలం ప్రేరేపించబడిన వారికి ఒక మార్గదర్శి](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– జస్టిన్ లెరౌక్స్, 7 నవంబర్ 2019_ +- [ఇతీరియము మెయిన్‌నెట్‌లో హైపర్‌లెడ్జర్ బెసు నోడ్‌ను అమలు చేయడం: ప్రయోజనాలు, అవసరాలు మరియు సెటప్](https://pegasys.tech/running-a-hyperledger-besu-node-on-the-ethereum-mainnet-benefits-requirements-and-setup/) _– ఫెలిపే ఫరాగ్గి, 7 మే 2020_ +- [పర్యవేక్షణ స్టాక్‌తో నెదర్‌మైండ్ ఇతీరియము క్లయింట్‌ను అమలు చేయడం](https://medium.com/nethermind-eth/deploying-nethermind-ethereum-client-with-monitoring-stack-55ce1622edbd) _– Nethermind.eth, 8 జూలై 2020_ + +## సంబంధిత అంశాలు {#related-topics} + +- [నోడ్‌లు మరియు క్లయింట్లు](/developers/docs/nodes-and-clients/) +- [బ్లాక్‌లు](/developers/docs/blocks/) +- [నెట్‌వర్క్‌లు](/developers/docs/networks/) diff --git a/public/content/translations/te/developers/docs/oracles/index.md b/public/content/translations/te/developers/docs/oracles/index.md new file mode 100644 index 00000000000..583cd16b8ee --- /dev/null +++ b/public/content/translations/te/developers/docs/oracles/index.md @@ -0,0 +1,433 @@ +--- +title: "ఒరకిల్స్" +description: "ఒరాకిల్స్ ఇతీరియము స్మార్ట్ కాంట్రాక్టులకు వాస్తవ-ప్రపంచ డేటాకు యాక్సెస్‌ను అందిస్తాయి, వినియోగదారుల కోసం మరిన్ని వినియోగ-సందర్భాలు మరియు అధిక విలువను అన్‌లాక్ చేస్తాయి." +lang: te +--- + +ఒరాకిల్స్ అనేవి డేటా ఫీడ్లను ఉత్పత్తి చేసే అప్లికేషన్లు, ఇవి స్మార్ట్ కాంట్రాక్టుల కోసం బ్లాక్‌చెయిన్‌కు ఆఫ్‌చెయిన్ డేటా సోర్సులను అందుబాటులో ఉంచుతాయి. ఇది అవసరం ఎందుకంటే ఇతీరియము-ఆధారిత స్మార్ట్ కాంట్రాక్టులు, డిఫాల్ట్‌గా, బ్లాక్‌చెయిన్ నెట్‌వర్క్ వెలుపల నిల్వ చేయబడిన సమాచారాన్ని యాక్సెస్ చేయలేవు. + +స్మార్ట్ కాంట్రాక్టులకు ఆఫ్‌చెయిన్ డేటాను ఉపయోగించి అమలు చేసే సామర్థ్యాన్ని ఇవ్వడం వికేంద్రీకృత అప్లికేషన్‌ల యొక్క ప్రయోజనం మరియు విలువను విస్తరిస్తుంది. ఉదాహరణకు, ఆన్‌చెయిన్ ప్రిడిక్షన్ మార్కెట్లు వినియోగదారుడి అంచనాలను ధృవీకరించడానికి ఉపయోగించే ఫలితాల గురించి సమాచారాన్ని అందించడానికి ఒరాకిల్స్‌పై ఆధారపడతాయి. తదుపరి యు.ఎస్. అధ్యక్షుడిగా ఎవరు అవుతారని ఆలిస్ 20 ETH పందెం వేస్తుందని అనుకుందాం. అధ్యక్షుడు. ఆ సందర్భంలో, ప్రిడిక్షన్-మార్కెట్ డాప్‌కు ఎన్నికల ఫలితాలను నిర్ధారించడానికి మరియు ఆలిస్ చెల్లింపుకు అర్హులా కాదా అని నిర్ధారించడానికి ఒక ఒరాకిల్ అవసరం. + +## అవసరాలు {#prerequisites} + +ఈ పేజీ చదువరికి [నోడ్స్](/developers/docs/nodes-and-clients/), [ఏకాభిప్రాయం యంత్రాంగాలు](/developers/docs/consensus-mechanisms/), మరియు [EVM](/developers/docs/evm/) తో సహా ఇతీరియము ప్రాథమిక విషయాలతో పరిచయం ఉందని భావిస్తుంది. మీకు [స్మార్ట్ కాంట్రాక్టులు](/developers/docs/smart-contracts/) మరియు [స్మార్ట్ కాంట్రాక్ట్ అనాటమీ](/developers/docs/smart-contracts/anatomy/) పై కూడా మంచి పట్టు ఉండాలి, ముఖ్యంగా [ఈవెంట్స్](/glossary/#events). + +## బ్లాక్‌చెయిన్ ఒరాకిల్ అంటే ఏమిటి? {#what-is-a-blockchain-oracle} + +ఒరాకిల్స్ అనేవి బాహ్య సమాచారాన్ని (అంటే, ఆఫ్‌చెయిన్‌లో నిల్వ చేయబడిన సమాచారం) సోర్స్ చేసి, ధృవీకరించి, బ్లాక్‌చెయిన్‌లో నడుస్తున్న స్మార్ట్ కాంట్రాక్టులకు ప్రసారం చేసే అప్లికేషన్‌లు. ఇతీరియముపై ఆఫ్‌చెయిన్ డేటాను “లాగడం” మరియు ప్రసారం చేయడంతో పాటు, ఒరాకిల్స్ బ్లాక్‌చెయిన్ నుండి బాహ్య సిస్టమ్‌లకు సమాచారాన్ని “పుష్” కూడా చేయగలవు, ఉదా., వినియోగదారుడు ఇతీరియము లావాదేవీ ద్వారా రుసుము పంపిన తర్వాత స్మార్ట్ లాక్‌ను అన్‌లాక్ చేయడం. + +ఒరాకిల్ లేకుండా, ఒక స్మార్ట్ కాంట్రాక్ట్ పూర్తిగా ఆన్‌చెయిన్ డేటాకు పరిమితం చేయబడుతుంది. + +డేటా యొక్క సోర్స్ (ఒకటి లేదా బహుళ సోర్సులు), ట్రస్ట్ మోడల్స్ (కేంద్రీకృత లేదా వికేంద్రీకృత), మరియు సిస్టమ్ ఆర్కిటెక్చర్ (తక్షణ-చదవడం, పబ్లిష్-సబ్‌స్క్రైబ్, మరియు రిక్వెస్ట్-రెస్పాన్స్) ఆధారంగా ఒరాకిల్స్ విభిన్నంగా ఉంటాయి. ఆన్‌చెయిన్ కాంట్రాక్టుల ద్వారా ఉపయోగం కోసం బాహ్య డేటాను తిరిగి పొందుతాయా (ఇన్‌పుట్ ఒరాకిల్స్), బ్లాక్‌చెయిన్ నుండి ఆఫ్‌చెయిన్ అప్లికేషన్‌లకు సమాచారాన్ని పంపుతాయా (అవుట్‌పుట్ ఒరాకిల్స్), లేదా ఆఫ్‌చెయిన్‌లో కంప్యూటేషనల్ టాస్క్‌లను నిర్వహిస్తాయా (కంప్యూటేషనల్ ఒరాకిల్స్) అనే దాని ఆధారంగా కూడా మనం ఒరాకిల్స్ మధ్య తేడాను గుర్తించవచ్చు. + +## స్మార్ట్ కాంట్రాక్టులకు ఒరాకిల్స్ ఎందుకు అవసరం? {#why-do-smart-contracts-need-oracles} + +చాలా మంది అభివృద్ధి చేసేవాళ్ళు స్మార్ట్ కాంట్రాక్టులను బ్లాక్‌చెయిన్‌లోని నిర్దిష్ట చిరునామాలలో నడుస్తున్న సంకేత భాషగా చూస్తారు. అయితే, [స్మార్ట్ కాంట్రాక్టుల యొక్క మరింత సాధారణ వీక్షణ](/smart-contracts/) ఏమిటంటే, అవి నిర్దిష్ట షరతులు నెరవేరిన తర్వాత పార్టీల మధ్య ఒప్పందాలను అమలు చేయగల సామర్థ్యం గల స్వీయ-అమలు సాఫ్ట్‌వేర్ ప్రోగ్రామ్‌లు - అందుకే “స్మార్ట్ కాంట్రాక్టులు” అనే పదం వచ్చింది. + +కానీ ఇతీరియము డిటర్మినిస్టిక్ అని గమనిస్తే, ప్రజల మధ్య ఒప్పందాలను అమలు చేయడానికి స్మార్ట్ కాంట్రాక్టులను ఉపయోగించడం సూటిగా ఉండదు. ఒక [డిటర్మినిస్టిక్ సిస్టమ్](https://en.wikipedia.org/wiki/Deterministic_algorithm) అనేది ప్రారంభ స్టేట్ మరియు ఒక నిర్దిష్ట ఇన్‌పుట్ ఇవ్వబడినప్పుడు ఎల్లప్పుడూ ఒకే ఫలితాలను ఉత్పత్తి చేసేది, అంటే ఇన్‌పుట్‌ల నుండి అవుట్‌పుట్‌లను కంప్యూటింగ్ చేసే ప్రక్రియలో యాదృచ్ఛికత లేదా వైవిధ్యం ఉండదు. + +డిటర్మినిస్టిక్ అమలును సాధించడానికి, బ్లాక్‌చెయిన్‌లు నోడ్స్‌ను బ్లాక్‌చెయిన్‌లోనే నిల్వ చేయబడిన డేటాను _మాత్రమే_ ఉపయోగించి సాధారణ బైనరీ (నిజం/అబద్ధం) ప్రశ్నలపై ఏకాభిప్రాయం సాధించడానికి పరిమితం చేస్తాయి. అటువంటి ప్రశ్నలకు ఉదాహరణలు: + +- “ఖాతా యజమాని (పబ్లిక్ కీ ద్వారా గుర్తించబడినవారు) ఈ లావాదేవీని జత చేసిన ప్రైవేట్ కీతో సంతకం చేసారా?” +- “ఈ ఖాతాలో లావాదేవీని కవర్ చేయడానికి తగినన్ని నిధులు ఉన్నాయా?” +- “ఈ స్మార్ట్ కాంట్రాక్ట్ సందర్భంలో ఈ లావాదేవీ చెల్లుబాటు అవుతుందా?”, మొదలైనవి. + +బ్లాక్‌చెయిన్‌లు బాహ్య సోర్సుల నుండి (అంటే, వాస్తవ ప్రపంచం నుండి) సమాచారాన్ని స్వీకరించినట్లయితే, డిటర్మినిజం సాధించడం అసాధ్యం అవుతుంది, ఇది బ్లాక్‌చెయిన్ యొక్క స్టేట్‌లో మార్పుల చెల్లుబాటుపై నోడ్స్ ఏకీభవించకుండా నిరోధిస్తుంది. ఉదాహరణకు, ఒక సాంప్రదాయ ధర ఎపిఐ నుండి పొందిన ప్రస్తుత ETH-USD మార్పిడి రేటు ఆధారంగా లావాదేవీని అమలు చేసే స్మార్ట్ కాంట్రాక్ట్‌ను తీసుకోండి. ఈ సంఖ్య తరచుగా మారే అవకాశం ఉంది (ఎపిఐ డిప్రికేట్ కావడం లేదా హ్యాక్ కావడం గురించి చెప్పనవసరం లేదు), అంటే ఒకే కాంట్రాక్ట్ సంకేత భాషను అమలు చేసే నోడ్స్ విభిన్న ఫలితాలకు వస్తాయి. + +ఇతీరియము వంటి పబ్లిక్ బ్లాక్‌చెయిన్ కోసం, ప్రపంచవ్యాప్తంగా వేలాది నోడ్స్ లావాదేవీలను ప్రాసెస్ చేస్తున్నప్పుడు, డిటర్మినిజం చాలా కీలకం. నిజం యొక్క సోర్స్‌గా పనిచేసే కేంద్ర అధికారం లేనప్పుడు, ఒకే లావాదేవీలను వర్తింపజేసిన తర్వాత అదే స్టేట్‌కు రావడానికి నోడ్స్‌కు యంత్రాంగాలు అవసరం. ఒకవేళ నోడ్ A ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క సంకేత భాషను అమలు చేసి ఫలితంగా "3" పొందితే, అదే లావాదేవీని నడిపిన తర్వాత నోడ్ B "7" పొందితే, అది ఏకాభిప్రాయం విచ్ఛిన్నం కావడానికి మరియు వికేంద్రీకృత కంప్యూటింగ్ ప్లాట్‌ఫారమ్‌గా ఇతీరియము యొక్క విలువను తొలగించడానికి కారణమవుతుంది. + +ఈ దృశ్యం బాహ్య సోర్సుల నుండి సమాచారాన్ని లాగడానికి బ్లాక్‌చెయిన్‌లను రూపకల్పన చేయడంలో ఉన్న సమస్యను కూడా హైలైట్ చేస్తుంది. అయితే, ఒరాకిల్స్, ఆఫ్‌చెయిన్ సోర్సుల నుండి సమాచారాన్ని తీసుకుని, స్మార్ట్ కాంట్రాక్టులు వినియోగించుకోవడానికి బ్లాక్‌చెయిన్‌లో నిల్వ చేయడం ద్వారా ఈ సమస్యను పరిష్కరిస్తాయి. ఆన్‌చెయిన్‌లో నిల్వ చేయబడిన సమాచారం మార్చలేనిది మరియు బహిరంగంగా అందుబాటులో ఉన్నందున, ఇతీరియము నోడ్స్ ఏకాభిప్రాయం విచ్ఛిన్నం కాకుండా స్టేట్ మార్పులను గణించడానికి ఒరాకిల్ దిగుమతి చేసుకున్న ఆఫ్‌చెయిన్ డేటాను సురక్షితంగా ఉపయోగించవచ్చు. + +ఇది చేయడానికి, ఒక ఒరాకిల్ సాధారణంగా ఆన్‌చెయిన్‌లో నడుస్తున్న ఒక స్మార్ట్ కాంట్రాక్ట్ మరియు కొన్ని ఆఫ్‌చెయిన్ కాంపోనెంట్‌లతో రూపొందించబడింది. ఆన్‌చెయిన్ కాంట్రాక్ట్ ఇతర స్మార్ట్ కాంట్రాక్టుల నుండి డేటా కోసం అభ్యర్థనలను స్వీకరిస్తుంది, దానిని అది ఆఫ్‌చెయిన్ కాంపోనెంట్‌కు (ఒరాకిల్ నోడ్ అని పిలుస్తారు) పంపుతుంది. ఈ ఒరాకిల్ నోడ్ డేటా సోర్సులను ప్రశ్నించగలదు—ఉదాహరణకు, అప్లికేషన్ ప్రోగ్రామింగ్ ఇంటర్‌ఫేస్‌లను (APIలను) ఉపయోగించి—మరియు అభ్యర్థించిన డేటాను స్మార్ట్ కాంట్రాక్ట్ యొక్క నిల్వలో నిల్వ చేయడానికి లావాదేవీలను పంపగలదు. + +ముఖ్యంగా, ఒక బ్లాక్‌చెయిన్ ఒరాకిల్, బ్లాక్‌చెయిన్ మరియు బాహ్య పర్యావరణం మధ్య సమాచార అంతరాన్ని పూడుస్తుంది, “హైబ్రిడ్ స్మార్ట్ కాంట్రాక్టులు”ను సృష్టిస్తుంది. హైబ్రిడ్ స్మార్ట్ కాంట్రాక్ట్ అనేది ఆన్‌చెయిన్ కాంట్రాక్ట్ సంకేత భాష మరియు ఆఫ్‌చెయిన్ ఇన్‌ఫ్రాస్ట్రక్చర్ కలయిక ఆధారంగా పనిచేసేది. వికేంద్రీకృత ప్రిడిక్షన్ మార్కెట్లు హైబ్రిడ్ స్మార్ట్ కాంట్రాక్టులకు ఒక అద్భుతమైన ఉదాహరణ. ఇతర ఉదాహరణలలో పంటల బీమా స్మార్ట్ కాంట్రాక్టులు ఉండవచ్చు, ఇవి నిర్దిష్ట వాతావరణ దృగ్విషయాలు జరిగాయని ఒరాకిల్స్ సమితి నిర్ధారించినప్పుడు చెల్లింపు చేస్తాయి. + +## ఒరాకిల్ సమస్య అంటే ఏమిటి? {#the-oracle-problem} + +ఒరాకిల్స్ ఒక ముఖ్యమైన సమస్యను పరిష్కరిస్తాయి, కానీ కొన్ని సమస్యలను కూడా పరిచయం చేస్తాయి, ఉదా.,: + +- ఇంజెక్ట్ చేయబడిన సమాచారం సరైన సోర్స్ నుండి తీసుకోబడిందని లేదా దానితో ట్యాంపర్ చేయలేదని మనం ఎలా ధృవీకరించాలి? + +- ఈ డేటా ఎల్లప్పుడూ అందుబాటులో ఉందని మరియు క్రమం తప్పకుండా నవీకరించబడుతుందని మనం ఎలా నిర్ధారించుకోవాలి? + +స్మార్ట్ కాంట్రాక్టులకు ఇన్‌పుట్‌లను పంపడానికి బ్లాక్‌చెయిన్ ఒరాకిల్స్‌ను ఉపయోగించడంతో వచ్చే సమస్యలను “ఒరాకిల్ సమస్య” అని పిలవబడేది ప్రదర్శిస్తుంది. ఒక స్మార్ట్ కాంట్రాక్ట్ సరిగ్గా అమలు కావడానికి ఒరాకిల్ నుండి డేటా సరిగ్గా ఉండాలి. ఇంకా, ఖచ్చితమైన సమాచారాన్ని అందించడానికి ఒరాకిల్ ఆపరేటర్లను ‘విశ్వసించవలసి’ రావడం స్మార్ట్ కాంట్రాక్టుల యొక్క ‘నమ్మకం లేని’ అంశాన్ని బలహీనపరుస్తుంది. + +విభిన్న ఒరాకిల్స్ ఒరాకిల్ సమస్యకు విభిన్న పరిష్కారాలను అందిస్తాయి, వీటిని మనం తర్వాత అన్వేషిస్తాము. ఒరాకిల్స్‌ను సాధారణంగా అవి క్రింది సవాళ్లను ఎంత బాగా నిర్వహించగలవనే దానిపై మూల్యాంకనం చేస్తారు: + +1. **సరియైనది**: ఒక ఒరాకిల్ చెల్లని ఆఫ్‌చెయిన్ డేటా ఆధారంగా స్మార్ట్ కాంట్రాక్టులను స్టేట్ మార్పులను ప్రేరేపించడానికి కారణం కాకూడదు. ఒక ఒరాకిల్ డేటా యొక్క _ప్రామాణికత_ మరియు _సమగ్రత_ను హామీ ఇవ్వాలి. ప్రామాణికత అంటే డేటా సరైన సోర్స్ నుండి పొందబడిందని, అయితే సమగ్రత అంటే డేటా ఆన్‌చెయిన్‌కు పంపబడటానికి ముందు చెక్కుచెదరకుండా ఉందని (అంటే, మార్చబడలేదని) అర్థం. + +2. **లభ్యత**: ఒక ఒరాకిల్ స్మార్ట్ కాంట్రాక్టులను చర్యలు అమలు చేయకుండా మరియు స్టేట్ మార్పులను ప్రేరేపించకుండా ఆలస్యం చేయకూడదు లేదా నిరోధించకూడదు. దీని అర్థం ఒరాకిల్ నుండి డేటా అంతరాయం లేకుండా _అభ్యర్థనపై అందుబాటులో_ ఉండాలి. + +3. **ప్రోత్సాహక అనుకూలత**: ఒక ఒరాకిల్ ఆఫ్‌చెయిన్ డేటా ప్రొవైడర్లను స్మార్ట్ కాంట్రాక్టులకు సరైన సమాచారాన్ని సమర్పించడానికి ప్రోత్సహించాలి. ప్రోత్సాహక అనుకూలత _ఆపాదన_ మరియు _జవాబుదారీతనం_ను కలిగి ఉంటుంది. ఆపాదన అనేది ఒక బాహ్య సమాచారం యొక్క భాగాన్ని దాని ప్రొవైడర్‌కు లింక్ చేయడానికి అనుమతిస్తుంది, అయితే జవాబుదారీతనం డేటా ప్రొవైడర్లను వారు ఇచ్చే సమాచారానికి బంధిస్తుంది, తద్వారా అందించిన సమాచారం యొక్క నాణ్యత ఆధారంగా వారికి బహుమతి ఇవ్వవచ్చు లేదా జరిమానా విధించవచ్చు. + +## బ్లాక్‌చెయిన్ ఒరాకిల్ సేవ ఎలా పనిచేస్తుంది? {#how-does-a-blockchain-oracle-service-work} + +### వినియోగదారులు {#users} + +వినియోగదారులు నిర్దిష్ట చర్యలను పూర్తి చేయడానికి బ్లాక్‌చెయిన్‌కు బాహ్య సమాచారం అవసరమయ్యే సంస్థలు (అంటే, స్మార్ట్ కాంట్రాక్టులు). ఒరాకిల్ సేవ యొక్క ప్రాథమిక వర్క్‌ఫ్లో వినియోగదారుడు ఒరాకిల్ కాంట్రాక్ట్‌కు డేటా అభ్యర్థన పంపడంతో మొదలవుతుంది. డేటా అభ్యర్థనలు సాధారణంగా క్రింది కొన్ని లేదా అన్ని ప్రశ్నలకు సమాధానమిస్తాయి: + +1. అభ్యర్థించిన సమాచారం కోసం ఆఫ్‌చెయిన్ నోడ్స్ ఏ సోర్సులను సంప్రదించగలవు? + +2. రిపోర్టర్లు డేటా సోర్సుల నుండి సమాచారాన్ని ఎలా ప్రాసెస్ చేస్తారు మరియు ఉపయోగకరమైన డేటా పాయింట్లను ఎలా సంగ్రహిస్తారు? + +3. డేటాను తిరిగి పొందడంలో ఎన్ని ఒరాకిల్ నోడ్స్ పాల్గొనగలవు? + +4. ఒరాకిల్ నివేదికలలోని వ్యత్యాసాలను ఎలా నిర్వహించాలి? + +5. సమర్పణలను ఫిల్టరింగ్ చేయడంలో మరియు నివేదికలను ఒకే విలువగా సమగ్రపరచడంలో ఏ పద్ధతిని అమలు చేయాలి? + +### ఒరాకిల్ కాంట్రాక్ట్ {#oracle-contract} + +ఒరాకిల్ కాంట్రాక్ట్ అనేది ఒరాకిల్ సేవ కోసం ఆన్‌చెయిన్ కాంపోనెంట్. ఇది ఇతర కాంట్రాక్టుల నుండి డేటా అభ్యర్థనలను వింటుంది, ఒరాకిల్ నోడ్స్‌కు డేటా ప్రశ్నలను రిలే చేస్తుంది, మరియు తిరిగి వచ్చిన డేటాను ఖాతాదారులు కాంట్రాక్టులకు ప్రసారం చేస్తుంది. ఈ కాంట్రాక్ట్ అభ్యర్థించే కాంట్రాక్ట్‌కు పంపడానికి ఒక సమగ్ర విలువను ఉత్పత్తి చేయడానికి తిరిగి వచ్చిన డేటా పాయింట్లపై కొంత కంప్యూటేషన్ కూడా చేయవచ్చు. + +ఒరాకిల్ కాంట్రాక్ట్ కొన్ని ఫంక్షన్‌లను బహిర్గతం చేస్తుంది, వీటిని ఖాతాదారులు కాంట్రాక్టులు డేటా అభ్యర్థన చేసేటప్పుడు పిలుస్తాయి. కొత్త ప్రశ్నను స్వీకరించిన తర్వాత, స్మార్ట్ కాంట్రాక్ట్ డేటా అభ్యర్థన యొక్క వివరాలతో ఒక [లాగ్ ఈవెంట్](/developers/docs/smart-contracts/anatomy/#events-and-logs)ను విడుదల చేస్తుంది. ఇది లాగ్‌కు సబ్‌స్క్రయిబ్ చేయబడిన ఆఫ్‌చెయిన్ నోడ్స్‌కు (సాధారణంగా JSON-RPC `eth_subscribe` కమాండ్ వంటి దానిని ఉపయోగించి) తెలియజేస్తుంది, వారు లాగ్ ఈవెంట్‌లో నిర్వచించిన డేటాను తిరిగి పొందడానికి ముందుకు వెళ్తారు. + +క్రింద పెడ్రో కోస్టాచే ఒక [ఉదాహరణ ఒరాకిల్ కాంట్రాక్ట్](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e) ఉంది. ఇది ఒక సాధారణ ఒరాకిల్ సేవ, ఇది ఇతర స్మార్ట్ కాంట్రాక్టుల అభ్యర్థనపై ఆఫ్‌చెయిన్ APIలను ప్రశ్నించగలదు మరియు అభ్యర్థించిన సమాచారాన్ని బ్లాక్‌చెయిన్‌లో నిల్వ చేయగలదు: + +```solidity +pragma solidity >=0.4.21 <0.6.0; + +contract Oracle { + Request[] requests; //కాంట్రాక్ట్‌కు చేసిన అభ్యర్థనల జాబితా + uint currentId = 0; //అభ్యర్థన ఐడిని పెంచడం + uint minQuorum = 2; //తుది ఫలితాన్ని ప్రకటించే ముందు స్వీకరించవలసిన కనీస స్పందనల సంఖ్య + uint totalOracleCount = 3; //హార్డ్‌కోడ్ చేయబడిన ఒరాకిల్ లెక్కింపు + + // ఒక సాధారణ api అభ్యర్థనను నిర్వచిస్తుంది + struct Request { + uint id; //అభ్యర్థన ఐడి + string urlToQuery; //API యుఆర్ఎల్ + string attributeToFetch; //స్పందనలో తిరిగి పొందవలసిన json లక్షణం (కీ) + string agreedValue; //కీ నుండి విలువ + mapping(uint => string) answers; //ఒరాకిల్స్ అందించిన సమాధానాలు + mapping(address => uint) quorum; //సమాధానాన్ని ప్రశ్నించే ఒరాకిల్స్ (1=ఒరాకిల్ ఓటు వేయలేదు, 2=ఒరాకిల్ ఓటు వేసింది) + } + + //బ్లాక్‌చెయిన్ వెలుపల ఒరాకిల్‌ను ప్రేరేపించే ఈవెంట్ + event NewRequest ( + uint id, + string urlToQuery, + string attributeToFetch + ); + + //తుది ఫలితంపై ఏకాభిప్రాయం ఉన్నప్పుడు ప్రేరేపించబడుతుంది + event UpdatedRequest ( + uint id, + string urlToQuery, + string attributeToFetch, + string agreedValue + ); + + function createRequest ( + string memory _urlToQuery, + string memory _attributeToFetch + ) + public + { + uint length = requests.push(Request(currentId, _urlToQuery, _attributeToFetch, "")); + Request storage r = requests[length-1]; + + // హార్డ్‌కోడ్ చేయబడిన ఒరాకిల్స్ చిరునామా + r.quorum[address(0x6c2339b46F41a06f09CA0051ddAD54D1e582bA77)] = 1; + r.quorum[address(0xb5346CF224c02186606e5f89EACC21eC25398077)] = 1; + r.quorum[address(0xa2997F1CA363D11a0a35bB1Ac0Ff7849bc13e914)] = 1; + + // బ్లాక్‌చెయిన్ వెలుపల ఒరాకిల్ ద్వారా గుర్తించబడటానికి ఒక ఈవెంట్‌ను ప్రారంభించండి + emit NewRequest ( + currentId, + _urlToQuery, + _attributeToFetch + ); + + // అభ్యర్థన ఐడిని పెంచండి + currentId++; + } + + //దాని సమాధానాన్ని రికార్డ్ చేయడానికి ఒరాకిల్ ద్వారా పిలవబడుతుంది + function updateRequest ( + uint _id, + string memory _valueRetrieved + ) public { + + Request storage currRequest = requests[_id]; + + //ఒరాకిల్ విశ్వసనీయ ఒరాకిల్స్ జాబితాలో ఉందో లేదో తనిఖీ చేయండి + //మరియు ఒరాకిల్ ఇంకా ఓటు వేయకపోతే + if(currRequest.quorum[address(msg.sender)] == 1){ + + //ఈ చిరునామా ఓటు వేసిందని గుర్తు పెట్టడం + currRequest.quorum[msg.sender] = 2; + + //ఒక స్థానం ఖాళీగా ఉంటే సమాధానాల "శ్రేణి" ద్వారా పునరావృతం చేసి, తిరిగి పొందిన విలువను సేవ్ చేయండి + uint tmpI = 0; + bool found = false; + while(!found) { + //మొదటి ఖాళీ జాబితాను కనుగొనండి + if(bytes(currRequest.answers[tmpI]).length == 0){ + found = true; + currRequest.answers[tmpI] = _valueRetrieved; + } + tmpI++; + } + + uint currentQuorum = 0; + + //ఒరాకిల్ జాబితా ద్వారా పునరావృతం చేసి, తగినంత ఒరాకిల్స్ (కనీస కోరం) ఉన్నాయో లేదో తనిఖీ చేయండి + //ప్రస్తుత సమాధానం లాగానే ఓటు వేసాయి + for(uint i = 0; i < totalOracleCount; i++){ + bytes memory a = bytes(currRequest.answers[i]); + bytes memory b = bytes(_valueRetrieved); + + if(keccak256(a) == keccak256(b)){ + currentQuorum++; + if(currentQuorum >= minQuorum){ + currRequest.agreedValue = _valueRetrieved; + emit UpdatedRequest ( + currRequest.id, + currRequest.urlToQuery, + currRequest.attributeToFetch, + currRequest.agreedValue + ); + } + } + } + } + } +} +``` + +### ఒరాకిల్ నోడ్స్ {#oracle-nodes} + +ఒరాకిల్ నోడ్ అనేది ఒరాకిల్ సేవ యొక్క ఆఫ్‌చెయిన్ కాంపోనెంట్. ఇది మూడవ-పక్షం సర్వర్లలో హోస్ట్ చేయబడిన APIల వంటి బాహ్య సోర్సుల నుండి సమాచారాన్ని సంగ్రహిస్తుంది మరియు స్మార్ట్ కాంట్రాక్టుల వినియోగం కోసం దానిని ఆన్‌చెయిన్‌లో ఉంచుతుంది. ఒరాకిల్ నోడ్స్ ఆన్‌చెయిన్ ఒరాకిల్ కాంట్రాక్ట్ నుండి ఈవెంట్‌ల కోసం వింటాయి మరియు లాగ్‌లో వివరించిన పనిని పూర్తి చేయడానికి ముందుకు వెళ్తాయి. + +ఒరాకిల్ నోడ్స్ కోసం ఒక సాధారణ పని API సేవకు [HTTP GET](https://www.w3schools.com/tags/ref_httpmethods.asp) అభ్యర్థనను పంపడం, సంబంధిత డేటాను సంగ్రహించడానికి స్పందనను పార్సింగ్ చేయడం, బ్లాక్‌చెయిన్-చదవగల అవుట్‌పుట్‌లోకి ఫార్మాటింగ్ చేయడం మరియు ఒరాకిల్ కాంట్రాక్ట్‌కు ఒక లావాదేవీలో చేర్చడం ద్వారా దానిని ఆన్‌చెయిన్‌కు పంపడం. ఒరాకిల్ నోడ్ సమర్పించిన సమాచారం యొక్క చెల్లుబాటు మరియు సమగ్రతను “ప్రామాణికత రుజువులు” ఉపయోగించి ధృవీకరించవలసి రావచ్చు, వీటిని మనం తర్వాత అన్వేషిస్తాము. + +గ్యాస్ ఖర్చులు మరియు బ్లాక్ పరిమాణ పరిమితులను బట్టి, ఆన్‌చెయిన్‌లో అమలు చేయడానికి అసాధ్యమైన కంప్యూటేషనల్ టాస్క్‌లను నిర్వహించడానికి కంప్యూటేషనల్ ఒరాకిల్స్ కూడా ఆఫ్‌చెయిన్ నోడ్స్‌పై ఆధారపడతాయి. ఉదాహరణకు, ఒరాకిల్ నోడ్‌కు ధృవీకరించదగిన యాదృచ్ఛిక సంఖ్యను ఉత్పత్తి చేసే పనిని కేటాయించవచ్చు (ఉదా., బ్లాక్‌చెయిన్-ఆధారిత గేమ్‌ల కోసం). + +## ఒరాకిల్ డిజైన్ ప్యాట్రన్లు {#oracle-design-patterns} + +ఒరాకిల్స్ _తక్షణ-చదవడం_, _పబ్లిష్-సబ్‌స్క్రైబ్_, మరియు _రిక్వెస్ట్-రెస్పాన్స్_ తో సహా విభిన్న రకాలుగా వస్తాయి, వీటిలో చివరి రెండు ఇతీరియము స్మార్ట్ కాంట్రాక్టులలో అత్యంత ప్రజాదరణ పొందాయి. ఇక్కడ మనం పబ్లిష్-సబ్‌స్క్రైబ్ మరియు రిక్వెస్ట్-రెస్పాన్స్ మోడల్‌లను క్లుప్తంగా వివరిస్తాము. + +### పబ్లిష్-సబ్‌స్క్రైబ్ ఒరాకిల్స్ {#publish-subscribe-oracles} + +ఈ రకమైన ఒరాకిల్ ఒక “డేటా ఫీడ్” ను బహిర్గతం చేస్తుంది, దీనిని ఇతర కాంట్రాక్టులు సమాచారం కోసం క్రమం తప్పకుండా చదవగలవు. ఈ సందర్భంలో డేటా తరచుగా మారే అవకాశం ఉన్నందున, ఖాతాదారులు కాంట్రాక్టులు ఒరాకిల్ యొక్క నిల్వలోని డేటాకు నవీకరణల కోసం వినాలి. ఒక ఉదాహరణ, వినియోగదారులకు తాజా ETH-USD ధర సమాచారాన్ని అందించే ఒరాకిల్. + +### రిక్వెస్ట్-రెస్పాన్స్ ఒరాకిల్స్ {#request-response-oracles} + +రిక్వెస్ట్-రెస్పాన్స్ సెటప్ ఖాతాదారుడి కాంట్రాక్ట్‌కు పబ్లిష్-సబ్‌స్క్రైబ్ ఒరాకిల్ ద్వారా అందించబడిన దాని కంటే ఇతర ఏకపక్ష డేటాను అభ్యర్థించడానికి అనుమతిస్తుంది. డేటాసెట్ స్మార్ట్ కాంట్రాక్ట్ యొక్క నిల్వలో నిల్వ చేయడానికి చాలా పెద్దగా ఉన్నప్పుడు మరియు/లేదా వినియోగదారులకు ఏ సమయంలోనైనా డేటా యొక్క చిన్న భాగం మాత్రమే అవసరమైనప్పుడు రిక్వెస్ట్-రెస్పాన్స్ ఒరాకిల్స్ అనువైనవి. + +పబ్లిష్-సబ్‌స్క్రైబ్ మోడల్‌ల కంటే సంక్లిష్టమైనప్పటికీ, రిక్వెస్ట్-రెస్పాన్స్ ఒరాకిల్స్ ప్రాథమికంగా మనం మునుపటి విభాగంలో వివరించినవే. ఒరాకిల్ ఒక ఆన్‌చెయిన్ కాంపోనెంట్‌ను కలిగి ఉంటుంది, ఇది డేటా అభ్యర్థనను స్వీకరించి, దానిని ప్రాసెసింగ్ కోసం ఆఫ్‌చెయిన్ నోడ్‌కు పంపుతుంది. + +డేటా ప్రశ్నలను ప్రారంభించే వినియోగదారులు ఆఫ్‌చెయిన్ సోర్స్ నుండి సమాచారాన్ని తిరిగి పొందే ఖర్చును భరించాలి. అభ్యర్థనలో పేర్కొన్న క్యాల్‌బ్యాక్ ఫంక్షన్ ద్వారా స్పందనను తిరిగి ఇవ్వడంలో ఒరాకిల్ కాంట్రాక్ట్ ద్వారా అయ్యే గ్యాస్ ఖర్చులను కవర్ చేయడానికి ఖాతాదారుడి కాంట్రాక్ట్ కూడా నిధులను అందించాలి. + +## కేంద్రీకృత మరియు వికేంద్రీకృత ఒరాకిల్స్ {#types-of-oracles} + +### కేంద్రీకృత ఒరాకిల్స్ {#centralized-oracles} + +కేంద్రీకృత ఒరాకిల్ ఒకే సంస్థచే నియంత్రించబడుతుంది, ఇది ఆఫ్‌చెయిన్ సమాచారాన్ని సమగ్రపరచడానికి మరియు అభ్యర్థించిన విధంగా ఒరాకిల్ కాంట్రాక్ట్ యొక్క డేటాను నవీకరించడానికి బాధ్యత వహిస్తుంది. కేంద్రీకృత ఒరాకిల్స్ ఒకే నిజం యొక్క సోర్స్‌పై ఆధారపడటం వలన అవి సమర్థవంతంగా ఉంటాయి. యాజమాన్య డేటాసెట్‌లు యజమానిచే విస్తృతంగా ఆమోదించబడిన సంతకంతో నేరుగా ప్రచురించబడిన సందర్భాలలో అవి మెరుగ్గా పనిచేయవచ్చు. అయితే, అవి కూడా ప్రతికూలతలను తెస్తాయి: + +#### తక్కువ సరియైన హామీలు {#low-correctness-guarantees} + +కేంద్రీకృత ఒరాకిల్స్‌తో, అందించిన సమాచారం సరైనదో కాదో నిర్ధారించడానికి మార్గం లేదు. “ప్రతిష్టాత్మక” ప్రొవైడర్లు కూడా మోసగించవచ్చు లేదా హ్యాక్ చేయబడవచ్చు. ఒరాకిల్ అవినీతికి పాల్పడితే, స్మార్ట్ కాంట్రాక్టులు చెడు డేటా ఆధారంగా అమలు చేయబడతాయి. + +#### పేలవమైన లభ్యత {#poor-availability} + +కేంద్రీకృత ఒరాకిల్స్ ఇతర స్మార్ట్ కాంట్రాక్టులకు ఆఫ్‌చెయిన్ డేటాను ఎల్లప్పుడూ అందుబాటులో ఉంచుతాయని హామీ ఇవ్వవు. ప్రొవైడర్ సేవను ఆపివేయాలని నిర్ణయించుకుంటే లేదా ఒక హ్యాకర్ ఒరాకిల్ యొక్క ఆఫ్‌చెయిన్ కాంపోనెంట్‌ను హైజాక్ చేస్తే, మీ స్మార్ట్ కాంట్రాక్ట్ డినయల్ ఆఫ్ సర్వీస్ (DoS) దాడికి గురయ్యే ప్రమాదం ఉంది. + +#### పేలవమైన ప్రోత్సాహక అనుకూలత {#poor-incentive-compatibility} + +కేంద్రీకృత ఒరాకిల్స్ తరచుగా డేటా ప్రొవైడర్‌కు ఖచ్చితమైన/మార్చని సమాచారాన్ని పంపడానికి పేలవంగా రూపొందించిన లేదా ఉనికిలో లేని ప్రోత్సాహకాలను కలిగి ఉంటాయి. సరియైన కోసం ఒరాకిల్‌కు చెల్లించడం నిజాయితీకి హామీ ఇవ్వదు. స్మార్ట్ కాంట్రాక్టులచే నియంత్రించబడే విలువ మొత్తం పెరిగేకొద్దీ ఈ సమస్య పెద్దది అవుతుంది. + +### వికేంద్రీకృత ఒరాకిల్స్ {#decentralized-oracles} + +వికేంద్రీకృత ఒరాకిల్స్ వైఫల్యం యొక్క ఏకైక పాయింట్లను తొలగించడం ద్వారా కేంద్రీకృత ఒరాకిల్స్ యొక్క పరిమితులను అధిగమించడానికి రూపొందించబడ్డాయి. వికేంద్రీకృత ఒరాకిల్ సేవలో పీర్-టు-పీర్ నెట్‌వర్క్‌లో బహుళ పాల్గొనేవారు ఉంటారు, వారు స్మార్ట్ కాంట్రాక్ట్‌కు పంపే ముందు ఆఫ్‌చెయిన్ డేటాపై ఏకాభిప్రాయం ఏర్పరుస్తారు. + +వికేంద్రీకృత ఒరాకిల్ (ఆదర్శంగా) అనుమతిలేనిది, నమ్మకం లేనిది, మరియు కేంద్ర పార్టీచే పరిపాలన నుండి స్వేచ్ఛగా ఉండాలి; వాస్తవానికి, ఒరాకిల్స్ మధ్య వికేంద్రీకరణ ఒక స్పెక్ట్రంపై ఉంటుంది. పాక్షిక-వికేంద్రీకృత ఒరాకిల్ నెట్‌వర్క్‌లు ఉన్నాయి, ఇక్కడ ఎవరైనా పాల్గొనవచ్చు, కానీ చారిత్రక పనితీరు ఆధారంగా నోడ్స్‌ను ఆమోదించే మరియు తొలగించే ఒక “యజమాని” ఉంటారు. పూర్తిగా వికేంద్రీకృత ఒరాకిల్ నెట్‌వర్క్‌లు కూడా ఉన్నాయి: ఇవి సాధారణంగా స్వతంత్ర బ్లాక్‌చెయిన్‌లుగా నడుస్తాయి మరియు నోడ్స్‌ను సమన్వయం చేయడానికి మరియు దుష్ప్రవర్తనను శిక్షించడానికి నిర్వచించిన ఏకాభిప్రాయం యంత్రాంగాలను కలిగి ఉంటాయి. + +వికేంద్రీకృత ఒరాకిల్స్‌ను ఉపయోగించడం వల్ల క్రింది ప్రయోజనాలు ఉన్నాయి: + +### అధిక సరియైన హామీలు {#high-correctness-guarantees} + +వికేంద్రీకృత ఒరాకిల్స్ విభిన్న విధానాలను ఉపయోగించి డేటా యొక్క సరియైన సాధించడానికి ప్రయత్నిస్తాయి. ఇది తిరిగి వచ్చిన సమాచారం యొక్క ప్రామాణికత మరియు సమగ్రతను ధృవీకరించే రుజువులను ఉపయోగించడం మరియు ఆఫ్‌చెయిన్ డేటా యొక్క చెల్లుబాటుపై బహుళ సంస్థలు సమిష్టిగా అంగీకరించాలని కోరడం వంటివి కలిగి ఉంటుంది. + +#### ప్రామాణికత రుజువులు {#authenticity-proofs} + +ప్రామాణికత రుజువులు బాహ్య సోర్సుల నుండి తిరిగి పొందిన సమాచారం యొక్క స్వతంత్ర ధృవీకరణను ప్రారంభించే క్రిప్టోగ్రాఫిక్ యంత్రాంగాలు. ఈ రుజువులు సమాచారం యొక్క సోర్స్‌ను ధృవీకరించగలవు మరియు తిరిగి పొందిన తర్వాత డేటాకు సాధ్యమయ్యే మార్పులను గుర్తించగలవు. + +ప్రామాణికత రుజువులకు ఉదాహరణలు: + +**ట్రాన్స్‌పోర్ట్ లేయర్ సెక్యూరిటీ (TLS) ప్రూఫ్‌లు**: ఒరాకిల్ నోడ్స్ తరచుగా ట్రాన్స్‌పోర్ట్ లేయర్ సెక్యూరిటీ (TLS) ప్రోటోకాల్ ఆధారంగా సురక్షితమైన HTTP కనెక్షన్‌ను ఉపయోగించి బాహ్య సోర్సుల నుండి డేటాను తిరిగి పొందుతాయి. కొన్ని వికేంద్రీకృత ఒరాకిల్స్ TLS సెషన్‌లను ధృవీకరించడానికి (అంటే, ఒక నోడ్ మరియు ఒక నిర్దిష్ట సర్వర్ మధ్య సమాచారం యొక్క మార్పిడిని నిర్ధారించడానికి) ప్రామాణికత రుజువులను ఉపయోగిస్తాయి మరియు సెషన్ యొక్క విషయాలు మార్చబడలేదని నిర్ధారిస్తాయి. + +**విశ్వసనీయ ఎగ్జిక్యూషన్ ఎన్విరాన్‌మెంట్ (TEE) ధృవపత్రాలు**: ఒక [విశ్వసనీయ ఎగ్జిక్యూషన్ ఎన్విరాన్‌మెంట్](https://en.wikipedia.org/wiki/Trusted_execution_environment) (TEE) అనేది దాని హోస్ట్ సిస్టమ్ యొక్క కార్యాచరణ ప్రక్రియల నుండి విడిగా ఉండే ఒక శాండ్‌బాక్స్‌డ్ కంప్యూటేషనల్ ఎన్విరాన్‌మెంట్. TEEలు కంప్యూటేషన్ ఎన్విరాన్‌మెంట్‌లో నిల్వ చేయబడిన/ఉపయోగించబడిన ఏదైనా అప్లికేషన్ సంకేత భాష లేదా డేటా సమగ్రత, గోప్యత మరియు మార్పులేనితనాన్ని నిలుపుకుంటుందని నిర్ధారిస్తాయి. విశ్వసనీయ ఎగ్జిక్యూషన్ ఎన్విరాన్‌మెంట్‌లో ఒక అప్లికేషన్ ఇన్‌స్టాన్స్ నడుస్తోందని నిరూపించడానికి వినియోగదారులు ఒక ధృవపత్రాన్ని కూడా రూపొందించవచ్చు. + +కొన్ని వర్గాల వికేంద్రీకృత ఒరాకిల్స్‌కు ఒరాకిల్ నోడ్ ఆపరేటర్లు TEE ధృవపత్రాలను అందించాలని అవసరం. ఇది నోడ్ ఆపరేటర్ విశ్వసనీయ ఎగ్జిక్యూషన్ ఎన్విరాన్‌మెంట్‌లో ఒరాకిల్ క్లయింట్ యొక్క ఒక ఇన్‌స్టాన్స్‌ను నడుపుతున్నారని వినియోగదారుడికి నిర్ధారిస్తుంది. TEEలు బాహ్య ప్రక్రియలను ఒక అప్లికేషన్ యొక్క సంకేత భాష మరియు డేటాను మార్చకుండా లేదా చదవకుండా నిరోధిస్తాయి, అందువల్ల, ఆ ధృవపత్రాలు ఒరాకిల్ నోడ్ సమాచారాన్ని చెక్కుచెదరకుండా మరియు గోప్యంగా ఉంచిందని నిరూపిస్తాయి. + +#### సమాచారం యొక్క ఏకాభిప్రాయం-ఆధారిత ధృవీకరణ {#consensus-based-validation-of-information} + +స్మార్ట్ కాంట్రాక్టులకు డేటాను అందించేటప్పుడు కేంద్రీకృత ఒరాకిల్స్ ఒకే నిజం యొక్క సోర్స్‌పై ఆధారపడతాయి, ఇది తప్పు సమాచారాన్ని ప్రచురించే అవకాశాన్ని పరిచయం చేస్తుంది. వికేంద్రీకృత ఒరాకిల్స్ ఆఫ్‌చెయిన్ సమాచారాన్ని ప్రశ్నించడానికి బహుళ ఒరాకిల్ నోడ్స్‌పై ఆధారపడటం ద్వారా ఈ సమస్యను పరిష్కరిస్తాయి. బహుళ సోర్సుల నుండి డేటాను పోల్చడం ద్వారా, వికేంద్రీకృత ఒరాకిల్స్ ఆన్‌చెయిన్ కాంట్రాక్టులకు చెల్లని సమాచారాన్ని పంపే ప్రమాదాన్ని తగ్గిస్తాయి. + +అయితే, వికేంద్రీకృత ఒరాకిల్స్, బహుళ ఆఫ్‌చెయిన్ సోర్సుల నుండి తిరిగి పొందిన సమాచారంలోని వ్యత్యాసాలతో వ్యవహరించాలి. సమాచారంలో తేడాలను తగ్గించడానికి మరియు ఒరాకిల్ కాంట్రాక్ట్‌కు పంపబడిన డేటా ఒరాకిల్ నోడ్స్ యొక్క సామూహిక అభిప్రాయాన్ని ప్రతిబింబిస్తుందని నిర్ధారించడానికి, వికేంద్రీకృత ఒరాకిల్స్ క్రింది యంత్రాంగాలను ఉపయోగిస్తాయి: + +##### డేటా యొక్క ఖచ్చితత్వంపై ఓటింగ్/స్టేకింగ్ + +కొన్ని వికేంద్రీకృత ఒరాకిల్ నెట్‌వర్క్‌లకు పాల్గొనేవారు డేటా ప్రశ్నలకు సమాధానాల ఖచ్చితత్వంపై ఓటు వేయడం లేదా స్టేక్ చేయడం అవసరం (ఉదా., "2020 యుఎస్ ఎన్నికల్లో ఎవరు గెలిచారు?"). నెట్‌వర్క్ యొక్క స్థానిక టోకెన్‌ను ఉపయోగించడం. ఒక సమూహనం ప్రోటోకాల్ ఓట్లను మరియు స్టేక్స్‌ను tổng hợp చేస్తుంది మరియు మెజారిటీ మద్దతు ఉన్న సమాధానాన్ని చెల్లుబాటు అయ్యేదిగా తీసుకుంటుంది. + +మెజారిటీ సమాధానం నుండి విచలనం చెందే నోడ్స్, మరింత సరైన విలువలను అందించే ఇతరులకు వారి టోకెన్లను పంపిణీ చేయడం ద్వారా శిక్షించబడతాయి. డేటాను అందించే ముందు ఒక బాండ్‌ను అందించమని నోడ్స్‌ను బలవంతం చేయడం నిజాయితీగల ప్రతిస్పందనలను ప్రోత్సహిస్తుంది, ఎందుకంటే వారు రాబడిని గరిష్టీకరించడానికి ఉద్దేశించిన హేతుబద్ధమైన ఆర్థిక నటులుగా భావించబడతారు. + +స్టేకింగ్/ఓటింగ్ కూడా వికేంద్రీకృత ఒరాకిల్స్‌ను [సిబిల్ దాడుల](/glossary/#sybil-attack) నుండి రక్షిస్తుంది, ఇక్కడ హానికరమైన నటులు ఏకాభిప్రాయం వ్యవస్థను గేమింగ్ చేయడానికి బహుళ గుర్తింపులను సృష్టిస్తారు. అయితే, స్టేకింగ్ “ఫ్రీలోడింగ్” (ఒరాకిల్ నోడ్స్ ఇతరుల నుండి సమాచారాన్ని కాపీ చేయడం) మరియు “సోమరి ధృవీకరణ” (ఒరాకిల్ నోడ్స్ సమాచారాన్ని ధృవీకరించకుండానే మెజారిటీని అనుసరించడం) ను నిరోధించలేదు. + +##### షెల్లింగ్ పాయింట్ మెకానిజమ్స్ + +[షెల్లింగ్ పాయింట్](https://en.wikipedia.org/wiki/Focal_point_\(game_theory\)) అనేది ఒక గేమ్-థియరీ భావన, ఇది ఏ కమ్యూనికేషన్ లేనప్పుడు బహుళ సంస్థలు ఎల్లప్పుడూ ఒక సమస్యకు సాధారణ పరిష్కారానికి డిఫాల్ట్ అవుతాయని ఊహిస్తుంది. డేటా అభ్యర్థనలకు సమాధానాలపై నోడ్స్ ఏకాభిప్రాయం సాధించడానికి వీలుగా వికేంద్రీకృత ఒరాకిల్ నెట్‌వర్క్‌లలో తరచుగా షెల్లింగ్-పాయింట్ మెకానిజమ్‌లను ఉపయోగిస్తారు. + +దీని కోసం ఒక ప్రారంభ ఆలోచన [షెల్లింగ్ కాయిన్](https://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed/), ఇది ఒక ప్రతిపాదిత డేటా ఫీడ్, ఇక్కడ పాల్గొనేవారు "స్కేలార్" ప్రశ్నలకు (సమాధానాలు పరిమాణం ద్వారా వివరించబడిన ప్రశ్నలు, ఉదా., "ETH ధర ఎంత?") ప్రతిస్పందనలను సమర్పిస్తారు, డిపాజిట్‌తో పాటు. 25వ మరియు 75వ [శతాంశం](https://en.wikipedia.org/wiki/Percentile) మధ్య విలువలను అందించే వినియోగదారులకు బహుమతి ఇవ్వబడుతుంది, అయితే మధ్యస్థ విలువ నుండి ఎక్కువగా విచలనం చెందే విలువలు ఉన్నవారికి జరిమానా విధించబడుతుంది. + +షెల్లింగ్ కాయిన్ ఈ రోజు ఉనికిలో లేనప్పటికీ, అనేక వికేంద్రీకృత ఒరాకిల్స్—ముఖ్యంగా [మేకర్ ప్రోటోకాల్ యొక్క ఒరాకిల్స్](https://docs.makerdao.com/smart-contract-modules/oracle-module)—ఒరాకిల్ డేటా యొక్క ఖచ్చితత్వాన్ని మెరుగుపరచడానికి షెల్లింగ్-పాయింట్ మెకానిజమ్‌ను ఉపయోగిస్తాయి. ప్రతి మేకర్ ఒరాకిల్, అనుషంగిక ఆస్తుల కోసం మార్కెట్ ధరలను సమర్పించే నోడ్స్ (“రిలేయర్స్” మరియు “ఫీడ్స్”) యొక్క ఆఫ్‌చెయిన్ P2P నెట్‌వర్క్ మరియు అందించిన అన్ని విలువల మధ్యస్థాన్ని లెక్కించే ఆన్‌చెయిన్ “మీడియానైజర్” కాంట్రాక్ట్‌ను కలిగి ఉంటుంది. పేర్కొన్న ఆలస్యం వ్యవధి ముగిసిన తర్వాత, ఈ మధ్యస్థ విలువ అనుబంధిత ఆస్తికి కొత్త రిఫరెన్స్ ధర అవుతుంది. + +షెల్లింగ్ పాయింట్ మెకానిజమ్‌లను ఉపయోగించే ఇతర ఒరాకిల్స్ యొక్క ఉదాహరణలలో [చైన్‌లింక్ ఆఫ్‌చెయిన్ రిపోర్టింగ్](https://docs.chain.link/architecture-overview/off-chain-reporting) మరియు [విట్నెట్](https://witnet.io/) ఉన్నాయి. రెండు వ్యవస్థలలో, పీర్-టు-పీర్ నెట్‌వర్క్‌లోని ఒరాకిల్ నోడ్స్ నుండి ప్రతిస్పందనలు సగటు లేదా మధ్యస్థం వంటి ఒకే సమగ్ర విలువగా tổng hợp చేయబడతాయి. నోడ్స్ యొక్క ప్రతిస్పందనలు సమగ్ర విలువతో ఎంతవరకు సరిపోలుతున్నాయో లేదా విచలనం చెందుతున్నాయో అనే దాని ప్రకారం బహుమతి లేదా శిక్షించబడతాయి. + +షెల్లింగ్ పాయింట్ మెకానిజమ్స్ ఆకర్షణీయంగా ఉంటాయి ఎందుకంటే అవి ఆన్‌చెయిన్ ఫుట్‌ప్రింట్‌ను తగ్గిస్తాయి (కేవలం ఒక లావాదేవీని పంపాలి) మరియు వికేంద్రీకరణకు హామీ ఇస్తాయి. సమర్పించిన ప్రతిస్పందనల జాబితాను సగటు/మధ్యస్థ విలువను ఉత్పత్తి చేసే అల్గారిథమ్‌లోకి ఫీడ్ చేసే ముందు నోడ్స్ ఆమోదం తెలపాల్సి ఉంటుంది కాబట్టి రెండోది సాధ్యమవుతుంది. + +### లభ్యత {#availability} + +వికేంద్రీకృత ఒరాకిల్ సేవలు స్మార్ట్ కాంట్రాక్టులకు ఆఫ్‌చెయిన్ డేటా యొక్క అధిక లభ్యతను నిర్ధారిస్తాయి. ఇది ఆఫ్‌చెయిన్ సమాచారం యొక్క సోర్స్ మరియు సమాచారాన్ని ఆన్‌చెయిన్‌కు బదిలీ చేయడానికి బాధ్యత వహించే నోడ్స్ రెండింటినీ వికేంద్రీకరించడం ద్వారా సాధించబడుతుంది. + +ఇది తప్పు-సహనాన్ని నిర్ధారిస్తుంది ఎందుకంటే ఒరాకిల్ కాంట్రాక్ట్ ఇతర కాంట్రాక్టుల నుండి ప్రశ్నలను అమలు చేయడానికి బహుళ నోడ్స్‌పై (ఇవి కూడా బహుళ డేటా సోర్సులపై ఆధారపడతాయి) ఆధారపడవచ్చు. సోర్స్ _మరియు_ నోడ్-ఆపరేటర్ స్థాయిలో వికేంద్రీకరణ కీలకం—ఒకే సోర్స్ నుండి తిరిగి పొందిన సమాచారాన్ని అందించే ఒరాకిల్ నోడ్స్ యొక్క నెట్‌వర్క్ కేంద్రీకృత ఒరాకిల్ వలె అదే సమస్యను ఎదుర్కొంటుంది. + +డేటా అభ్యర్థనలకు త్వరగా స్పందించడంలో విఫలమైన నోడ్ ఆపరేటర్లను స్లాష్ చేయడానికి స్టేక్-ఆధారిత ఒరాకిల్స్‌కు కూడా సాధ్యమే. ఇది తప్పు-సహన మౌలిక సదుపాయాలలో పెట్టుబడి పెట్టడానికి మరియు సకాలంలో డేటాను అందించడానికి ఒరాకిల్ నోడ్స్‌ను గణనీయంగా ప్రోత్సహిస్తుంది. + +### మంచి ప్రోత్సాహక అనుకూలత {#good-incentive-compatibility} + +వికేంద్రీకృత ఒరాకిల్స్ ఒరాకిల్ నోడ్స్ మధ్య [బైజాంటైన్](https://en.wikipedia.org/wiki/Byzantine_fault) ప్రవర్తనను నివారించడానికి వివిధ ప్రోత్సాహక డిజైన్‌లను అమలు చేస్తాయి. ప్రత్యేకంగా, అవి _ఆపాదన_ మరియు _జవాబుదారీతనం_ ను సాధిస్తాయి: + +1. డేటా అభ్యర్థనలకు ప్రతిస్పందనగా వారు అందించే డేటాపై వికేంద్రీకృత ఒరాకిల్ నోడ్స్ తరచుగా సంతకం చేయవలసి ఉంటుంది. ఈ సమాచారం ఒరాకిల్ నోడ్స్ యొక్క చారిత్రక పనితీరును మూల్యాంకనం చేయడానికి సహాయపడుతుంది, తద్వారా వినియోగదారులు డేటా అభ్యర్థనలు చేసేటప్పుడు నమ్మదగని ఒరాకిల్ నోడ్స్‌ను ఫిల్టర్ చేయవచ్చు. ఒక ఉదాహరణ విట్నెట్ యొక్క [అల్గారిథమిక్ రెప్యూటేషన్ సిస్టమ్](https://docs.witnet.io/intro/about/architecture#algorithmic-reputation-system). + +2. వికేంద్రీకృత ఒరాకిల్స్—ముందుగా వివరించినట్లు—వారు సమర్పించే డేటా యొక్క సత్యంపై వారి విశ్వాసంపై ఒక స్టేక్‌ను ఉంచమని నోడ్స్‌ను కోరవచ్చు. క్లెయిమ్ సరిపోలితే, నిజాయితీగల సేవకు బహుమతులతో పాటు ఈ స్టేక్‌ను తిరిగి ఇవ్వవచ్చు. కానీ సమాచారం తప్పుగా ఉంటే అది స్లాష్ చేయబడవచ్చు, ఇది కొంతవరకు జవాబుదారీతనాన్ని అందిస్తుంది. + +## స్మార్ట్ కాంట్రాక్టులలో ఒరాకిల్స్ యొక్క అప్లికేషన్లు {#applications-of-oracles-in-smart-contracts} + +ఇతీరియములో ఒరాకిల్స్ కోసం సాధారణ వినియోగ-సందర్భాలు క్రిందివి: + +### ఆర్థిక డేటాను తిరిగి పొందడం {#retrieving-financial-data} + +[వికేంద్రీకృత ఫైనాన్స్](/defi/) (DeFi) అప్లికేషన్లు పీర్-టు-పీర్ రుణాలు, అప్పులు తీసుకోవడం, మరియు ఆస్తుల వ్యాపారాన్ని అనుమతిస్తాయి. దీనికి తరచుగా మార్పిడి రేటు డేటా (క్రిప్టోకరెన్సీల ఫైట్ విలువను లెక్కించడానికి లేదా టోకెన్ ధరలను పోల్చడానికి) మరియు క్యాపిటల్ మార్కెట్స్ డేటా (టోకనైజ్ చేయబడిన ఆస్తుల విలువను లెక్కించడానికి, బంగారం లేదా యుఎస్ డాలర్ వంటివి) సహా విభిన్న ఆర్థిక సమాచారాన్ని పొందడం అవసరం. + +ఒక DeFi రుణ ప్రోటోకాల్, ఉదాహరణకు, అనుషంగికంగా డిపాజిట్ చేసిన ఆస్తుల (ఉదా., ETH) కోసం ప్రస్తుత మార్కెట్ ధరలను ప్రశ్నించాలి. ఇది కాంట్రాక్ట్‌కు అనుషంగిక ఆస్తుల విలువను నిర్ధారించడానికి మరియు సిస్టమ్ నుండి ఎంత అప్పు తీసుకోవచ్చో నిర్ధారించడానికి వీలు కల్పిస్తుంది. + +DeFiలో ప్రజాదరణ పొందిన “ప్రైస్ ఒరాకిల్స్” (వాటిని తరచుగా పిలుస్తారు) చైన్‌లింక్ ప్రైస్ ఫీడ్స్, కాంపౌండ్ ప్రోటోకాల్ యొక్క [ఓపెన్ ప్రైస్ ఫీడ్](https://compound.finance/docs/prices), యునిస్వాప్ యొక్క [టైమ్-వెయిటెడ్ యావరేజ్ ప్రైసెస్ (TWAPs)](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles), మరియు [మేకర్ ఒరాకిల్స్](https://docs.makerdao.com/smart-contract-modules/oracle-module). + +బిల్డర్లు తమ ప్రాజెక్ట్‌లో ఈ ప్రైస్ ఒరాకిల్స్‌ను ఇంటిగ్రేట్ చేసే ముందు వాటితో వచ్చే హెచ్చరికలను అర్థం చేసుకోవాలి. ఈ [వ్యాసం](https://blog.openzeppelin.com/secure-smart-contract-guidelines-the-dangers-of-price-oracles) పేర్కొన్న ప్రైస్ ఒరాకిల్స్‌లో దేనినైనా ఉపయోగించాలని ప్లాన్ చేసేటప్పుడు ఏమి పరిగణించాలనే దానిపై వివరణాత్మక విశ్లేషణను అందిస్తుంది. + +చైన్‌లింక్ ప్రైస్ ఫీడ్‌ను ఉపయోగించి మీ స్మార్ట్ కాంట్రాక్ట్‌లో తాజా ETH ధరను ఎలా తిరిగి పొందాలో క్రింద ఒక ఉదాహరణ ఉంది: + +```solidity +pragma solidity ^0.6.7; + +import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol"; + +contract PriceConsumerV3 { + + AggregatorV3Interface internal priceFeed; + + /** + * Network: Kovan + * Aggregator: ETH/USD + * Address: 0x9326BFA02ADD2366b30bacB125260Af641031331 + */ + constructor() public { + priceFeed = AggregatorV3Interface(0x9326BFA02ADD2366b30bacB125260Af641031331); + } + + /** + * Returns the latest price + */ + function getLatestPrice() public view returns (int) { + ( + uint80 roundID, + int price, + uint startedAt, + uint timeStamp, + uint80 answeredInRound + ) = priceFeed.latestRoundData(); + return price; + } +} +``` + +### ధృవీకరించదగిన యాదృచ్ఛికతను ఉత్పత్తి చేయడం {#generating-verifiable-randomness} + +కొన్ని బ్లాక్‌చెయిన్ అప్లికేషన్లు, బ్లాక్‌చెయిన్-ఆధారిత గేమ్‌లు లేదా లాటరీ పథకాల వంటివి, సమర్థవంతంగా పనిచేయడానికి అధిక స్థాయి అనూహ్యత మరియు యాదృచ్ఛికత అవసరం. అయితే, బ్లాక్‌చెయిన్‌ల డిటర్మినిస్టిక్ అమలు యాదృచ్ఛికతను తొలగిస్తుంది. + +అసలు విధానం `blockhash` వంటి సూడోరాండమ్ క్రిప్టోగ్రాఫిక్ ఫంక్షన్‌లను ఉపయోగించడం, కానీ ఇవి [మైనర్లచే మార్చబడవచ్చు](https://ethereum.stackexchange.com/questions/3140/risk-of-using-blockhash-other-miners-preventing-attack#:~:text=So%20while%20the%20miners%20can,to%20one%20of%20the%20players.) ప్రూఫ్-ఆఫ్-వర్క్ అల్గారిథమ్‌ను పరిష్కరించడం. అలాగే, ఇతీరియము యొక్క [ప్రూఫ్-ఆఫ్-స్టేక్‌కు మారడం](/roadmap/merge/) అంటే డెవలపర్లు ఇకపై ఆన్‌చెయిన్ యాదృచ్ఛికత కోసం `blockhash` పై ఆధారపడలేరు. బీకాన్ చైన్ యొక్క [RANDAO మెకానిజం](https://eth2book.info/altair/part2/building_blocks/randomness) బదులుగా యాదృచ్ఛికత యొక్క ప్రత్యామ్నాయ మూలాన్ని అందిస్తుంది. + +యాదృచ్ఛిక విలువను ఆఫ్‌చెయిన్‌లో ఉత్పత్తి చేసి దానిని ఆన్‌చెయిన్‌కు పంపడం సాధ్యమే, కానీ అలా చేయడం వల్ల వినియోగదారులపై అధిక విశ్వాస అవసరాలు ఏర్పడతాయి. వారు ఆ విలువ నిజంగా అనూహ్యమైన యంత్రాంగాల ద్వారా ఉత్పత్తి చేయబడిందని మరియు రవాణాలో మార్చబడలేదని నమ్మాలి. + +ఆఫ్‌చెయిన్ కంప్యూటేషన్ కోసం రూపొందించిన ఒరాకిల్స్, అనూహ్య ప్రక్రియకు ధృవీకరించే క్రిప్టోగ్రాఫిక్ రుజువులతో పాటు ఆఫ్‌చెయిన్‌లో సురక్షితంగా యాదృచ్ఛిక ఫలితాలను ఉత్పత్తి చేసి ఆన్‌చెయిన్‌లో ప్రసారం చేయడం ద్వారా ఈ సమస్యను పరిష్కరిస్తాయి. ఒక ఉదాహరణ [చైన్‌లింక్ VRF](https://docs.chain.link/docs/chainlink-vrf/) (ధృవీకరించదగిన యాదృచ్ఛిక ఫంక్షన్), ఇది అనూహ్య ఫలితాలపై ఆధారపడే అప్లికేషన్ల కోసం విశ్వసనీయ స్మార్ట్ కాంట్రాక్టులను నిర్మించడానికి ఉపయోగపడే నిరూపించదగిన సరసమైన మరియు టాంపర్-ప్రూఫ్ రాండమ్ నంబర్ జనరేటర్ (RNG). + +### ఈవెంట్‌ల కోసం ఫలితాలను పొందడం {#getting-outcomes-for-events} + +ఒరాకిల్స్‌తో, వాస్తవ-ప్రపంచ ఈవెంట్‌లకు ప్రతిస్పందించే స్మార్ట్ కాంట్రాక్టులను సృష్టించడం సులభం. ఒరాకిల్ సేవలు, కాంట్రాక్టులను ఆఫ్‌చెయిన్ కాంపోనెంట్ల ద్వారా బాహ్య APIలకు కనెక్ట్ చేయడానికి మరియు ఆ డేటా సోర్సుల నుండి సమాచారాన్ని వినియోగించుకోవడానికి అనుమతించడం ద్వారా దీనిని సాధ్యం చేస్తాయి. ఉదాహరణకు, ముందుగా పేర్కొన్న ప్రిడిక్షన్ డాప్, ఒక విశ్వసనీయ ఆఫ్‌చెయిన్ సోర్స్ (ఉదా., అసోసియేటెడ్ ప్రెస్) నుండి ఎన్నికల ఫలితాలను తిరిగి ఇవ్వమని ఒరాకిల్‌ను అభ్యర్థించవచ్చు. + +వాస్తవ-ప్రపంచ ఫలితాల ఆధారంగా డేటాను తిరిగి పొందడానికి ఒరాకిల్స్‌ను ఉపయోగించడం ఇతర నవల వినియోగ-సందర్భాలను అనుమతిస్తుంది; ఉదాహరణకు, ఒక వికేంద్రీకృత బీమా ఉత్పత్తి సమర్థవంతంగా పనిచేయడానికి వాతావరణం, విపత్తులు మొదలైన వాటి గురించి ఖచ్చితమైన సమాచారం అవసరం. + +### స్మార్ట్ కాంట్రాక్టులను ఆటోమేట్ చేయడం {#automating-smart-contracts} + +స్మార్ట్ కాంట్రాక్టులు ఆటోమేటిక్‌గా నడవవు; బదులుగా, ఒక బాహ్యంగా యాజమాన్యంలోని ఖాతా (EOA), లేదా మరొక కాంట్రాక్ట్ ఖాతా, కాంట్రాక్ట్ యొక్క సంకేత భాషను అమలు చేయడానికి సరైన ఫంక్షన్‌లను ప్రేరేపించాలి. చాలా సందర్భాలలో, కాంట్రాక్ట్ యొక్క ఫంక్షన్‌లలో ఎక్కువ భాగం పబ్లిక్ మరియు EOAలు మరియు ఇతర కాంట్రాక్టుల ద్వారా పిలవబడతాయి. + +కానీ ఒక కాంట్రాక్ట్‌లో _ప్రైవేట్ ఫంక్షన్‌లు_ కూడా ఉన్నాయి, ఇవి ఇతరులకు అందుబాటులో ఉండవు; కానీ అవి డాప్ యొక్క మొత్తం కార్యాచరణకు కీలకం. వినియోగదారుల కోసం క్రమానుగతంగా కొత్త NFTలను మింట్ చేసే `mintERC721Token()` ఫంక్షన్, ప్రిడిక్షన్ మార్కెట్‌లో చెల్లింపులను ప్రదానం చేయడానికి ఒక ఫంక్షన్, లేదా ఒక DEXలో స్టేక్ చేయబడిన టోకెన్లను అన్‌లాక్ చేయడానికి ఒక ఫంక్షన్ వంటి ఉదాహరణలు ఉన్నాయి. + +అభివృద్ధి చేసేవాళ్ళు అప్లికేషన్‌ను సజావుగా నడపడానికి అటువంటి ఫంక్షన్‌లను క్రమానుగతంగా ప్రేరేపించవలసి ఉంటుంది. అయితే, ఇది అభివృద్ధి చేసేవాళ్ళకు సాధారణ పనులపై ఎక్కువ గంటలు కోల్పోవడానికి దారితీయవచ్చు, అందుకే స్మార్ట్ కాంట్రాక్టుల అమలును ఆటోమేట్ చేయడం ఆకర్షణీయంగా ఉంటుంది. + +కొన్ని వికేంద్రీకృత ఒరాకిల్ నెట్‌వర్క్‌లు ఆటోమేషన్ సేవలను అందిస్తాయి, ఇవి వినియోగదారుడు నిర్వచించిన పారామితుల ప్రకారం స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌లను ప్రేరేపించడానికి ఆఫ్‌చెయిన్ ఒరాకిల్ నోడ్స్‌ను అనుమతిస్తాయి. సాధారణంగా, దీనికి ఒరాకిల్ సేవతో లక్ష్య కాంట్రాక్ట్‌ను “నమోదు” చేయడం, ఒరాకిల్ ఆపరేటర్‌కు చెల్లించడానికి నిధులను అందించడం, మరియు కాంట్రాక్ట్‌ను ప్రేరేపించడానికి షరతులు లేదా సమయాలను పేర్కొనడం అవసరం. + +చైన్‌లింక్ యొక్క [కీపర్ నెట్‌వర్క్](https://chain.link/keepers) స్మార్ట్ కాంట్రాక్టులకు నమ్మకాన్ని తగ్గించిన మరియు వికేంద్రీకృత పద్ధతిలో సాధారణ నిర్వహణ పనులను అవుట్‌సోర్స్ చేయడానికి ఎంపికలను అందిస్తుంది. మీ కాంట్రాక్ట్‌ను కీపర్-అనుకూలంగా చేయడానికి మరియు అప్‌కీప్ సేవను ఉపయోగించడంపై సమాచారం కోసం అధికారిక [కీపర్ యొక్క డాక్యుమెంటేషన్](https://docs.chain.link/docs/chainlink-keepers/introduction/) చదవండి. + +## బ్లాక్‌చెయిన్ ఒరాకిల్స్‌ను ఎలా ఉపయోగించాలి {#use-blockchain-oracles} + +మీ ఇతీరియము డాప్‌లో మీరు ఇంటిగ్రేట్ చేయగల బహుళ ఒరాకిల్ అప్లికేషన్లు ఉన్నాయి: + +**[చైన్‌లింక్](https://chain.link/)** - _చైన్‌లింక్ వికేంద్రీకృత ఒరాకిల్ నెట్‌వర్క్‌లు ఏ బ్లాక్‌చెయిన్‌లోనైనా అధునాతన స్మార్ట్ కాంట్రాక్టులకు మద్దతు ఇవ్వడానికి టాంపర్-ప్రూఫ్ ఇన్‌పుట్‌లు, అవుట్‌పుట్‌లు మరియు కంప్యూటేషన్‌లను అందిస్తాయి._ + +**[రెడ్‌స్టోన్ ఒరాకిల్స్](https://redstone.finance/)** - _రెడ్‌స్టోన్ ఒక వికేంద్రీకృత మాడ్యులర్ ఒరాకిల్, ఇది గ్యాస్-ఆప్టిమైజ్ చేయబడిన డేటా ఫీడ్లను అందిస్తుంది. ఇది లిక్విడ్ స్టేకింగ్ టోకెన్లు (LSTలు), లిక్విడ్ రీస్టేకింగ్ టోకెన్లు (LRTలు), మరియు బిట్‌కాయిన్ స్టేకింగ్ డెరివేటివ్స్ వంటి అభివృద్ధి చెందుతున్న ఆస్తులకు ధర ఫీడ్లను అందించడంలో ప్రత్యేకత కలిగి ఉంది._ + +**[క్రానికల్](https://chroniclelabs.org/)** - _క్రానికల్ నిజంగా స్కేలబుల్, ఖర్చు-సమర్థవంతమైన, వికేంద్రీకృత మరియు ధృవీకరించదగిన ఒరాకిల్స్‌ను అభివృద్ధి చేయడం ద్వారా ఆన్‌చెయిన్‌లో డేటాను బదిలీ చేయడంలో ప్రస్తుత పరిమితులను అధిగమిస్తుంది._ + +**[విట్నెట్](https://witnet.io/)** - _విట్నెట్ ఒక అనుమతిలేని, వికేంద్రీకృత మరియు సెన్సార్‌షిప్-నిరోధక ఒరాకిల్, ఇది స్మార్ట్ కాంట్రాక్టులకు బలమైన క్రిప్టో-ఆర్థిక హామీలతో వాస్తవ ప్రపంచ ఈవెంట్‌లకు ప్రతిస్పందించడానికి సహాయపడుతుంది._ + +**[UMA ఒరాకిల్](https://uma.xyz)** - _UMA యొక్క ఆశావాద ఒరాకిల్, బీమా, ఆర్థిక డెరివేటివ్‌లు మరియు ప్రిడిక్షన్ మార్కెట్‌లతో సహా విభిన్న అప్లికేషన్ల కోసం స్మార్ట్ కాంట్రాక్టులు త్వరగా మరియు ఏ రకమైన డేటానైనా స్వీకరించడానికి అనుమతిస్తుంది._ + +**[టెల్లర్](https://tellor.io/)** - _టెల్లర్ మీ స్మార్ట్ కాంట్రాక్ట్ కోసం పారదర్శకమైన మరియు అనుమతిలేని ఒరాకిల్ ప్రోటోకాల్, ఇది అవసరమైనప్పుడు సులభంగా ఏ డేటానైనా పొందగలదు._ + +**[బ్యాండ్ ప్రోటోకాల్](https://bandprotocol.com/)** - _బ్యాండ్ ప్రోటోకాల్ ఒక క్రాస్-చైన్ డేటా ఒరాకిల్ ప్లాట్‌ఫారమ్, ఇది వాస్తవ-ప్రపంచ డేటా మరియు APIలను స్మార్ట్ కాంట్రాక్టులకు సమగ్రపరిచి కనెక్ట్ చేస్తుంది._ + +**[పైత్ నెట్‌వర్క్](https://pyth.network/)** - _పైత్ నెట్‌వర్క్ ఒక ఫస్ట్-పార్టీ ఫైనాన్షియల్ ఒరాకిల్ నెట్‌వర్క్, ఇది టాంపర్-రెసిస్టెంట్, వికేంద్రీకృత మరియు స్వీయ-నిరంతర వాతావరణంలో ఆన్‌చెయిన్‌లో నిరంతర వాస్తవ-ప్రపంచ డేటాను ప్రచురించడానికి రూపొందించబడింది._ + +**[API3 DAO](https://www.api3.org/)** - _API3 DAO స్మార్ట్ కాంట్రాక్టుల కోసం వికేంద్రీకృత పరిష్కారంలో అధిక సోర్స్ పారదర్శకత, భద్రత మరియు స్కేలబిలిటీని అందించే ఫస్ట్-పార్టీ ఒరాకిల్ పరిష్కారాలను అందిస్తోంది_ + +**[సుప్రా](https://supra.com/)** - అన్ని బ్లాక్‌చెయిన్‌లను, పబ్లిక్ (L1లు మరియు L2లు) లేదా ప్రైవేట్ (ఎంటర్‌ప్రైజెస్) లను పరస్పరం అనుసంధానించే క్రాస్-చైన్ పరిష్కారాల యొక్క నిలువుగా ఇంటిగ్రేటెడ్ టూల్‌కిట్, ఆన్‌చెయిన్ మరియు ఆఫ్‌చెయిన్ వినియోగ-సందర్భాల కోసం ఉపయోగించగల వికేంద్రీకృత ఒరాకిల్ ధర ఫీడ్లను అందిస్తుంది. + +**[గ్యాస్ నెట్‌వర్క్](https://gas.network/)** - బ్లాక్‌చెయిన్ అంతటా నిజ-సమయ గ్యాస్ ధర డేటాను అందించే ఒక వికేంద్రీకృత ఒరాకిల్ ప్లాట్‌ఫారమ్. ప్రముఖ గ్యాస్ ధర డేటా ప్రొవైడర్ల నుండి డేటాను ఆన్‌చెయిన్‌కు తీసుకురావడం ద్వారా, గ్యాస్ నెట్‌వర్క్ అంతర్కార్యతను నడపడానికి సహాయపడుతుంది. గ్యాస్ నెట్‌వర్క్ ఇతీరియము మెయిన్‌నెట్ మరియు అనేక ప్రముఖ L2లతో సహా 35 కి పైగా చైన్‌ల కోసం డేటాకు మద్దతు ఇస్తుంది. + +## మరింత సమాచారం {#further-reading} + +**వ్యాసాలు** + +- [బ్లాక్‌చెయిన్ ఒరాకిల్ అంటే ఏమిటి?](https://chain.link/education/blockchain-oracles) — _చైన్‌లింక్_ +- [బ్లాక్‌చెయిన్ ఒరాకిల్ అంటే ఏమిటి?](https://medium.com/better-programming/what-is-a-blockchain-oracle-f5ccab8dbd72) — _ప్యాట్రిక్ కాలిన్స్_ +- [వికేంద్రీకృత ఒరాకిల్స్: ఒక సమగ్ర అవలోకనం](https://medium.com/fabric-ventures/decentralised-oracles-a-comprehensive-overview-d3168b9a8841) — _జూలియన్ థెవెనార్డ్_ +- [ఇతీరియములో బ్లాక్‌చెయిన్ ఒరాకిల్‌ను అమలు చేయడం](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e) – _పెడ్రో కోస్టా_ +- [స్మార్ట్ కాంట్రాక్టులు API కాల్స్ ఎందుకు చేయలేవు?](https://ethereum.stackexchange.com/questions/301/why-cant-contracts-make-api-calls) — _స్టాక్ ఎక్స్ఛేంజ్_ +- [కాబట్టి మీరు ప్రైస్ ఒరాకిల్‌ను ఉపయోగించాలనుకుంటున్నారు](https://samczsun.com/so-you-want-to-use-a-price-oracle/) — _samczsun_ + +**వీడియోలు** + +- [ఒరాకిల్స్ మరియు బ్లాక్‌చెయిన్ యుటిలిటీ యొక్క విస్తరణ](https://youtu.be/BVUZpWa8vpw) — _రియల్ విజన్ ఫైనాన్స్_ + +**ట్యుటోరియల్స్** + +- [సాలిడిటీలో ఇతీరియము యొక్క ప్రస్తుత ధరను ఎలా పొందాలో](https://blog.chain.link/fetch-current-crypto-price-data-solidity/) — _చైన్‌లింక్_ +- [ఒరాకిల్ డేటాను వినియోగించడం](https://docs.chroniclelabs.org/Developers/tutorials/Remix) — _క్రానికల్_ + +**ఉదాహరణ ప్రాజెక్టులు** + +- [సాలిడిటీలో ఇతీరియము కోసం పూర్తి చైన్‌లింక్ స్టార్టర్ ప్రాజెక్ట్](https://github.com/hackbg/chainlink-fullstack) — _HackBG_ diff --git a/public/content/translations/te/developers/docs/programming-languages/dart/index.md b/public/content/translations/te/developers/docs/programming-languages/dart/index.md new file mode 100644 index 00000000000..8163f062bfb --- /dev/null +++ b/public/content/translations/te/developers/docs/programming-languages/dart/index.md @@ -0,0 +1,30 @@ +--- +title: "డార్ట్ డెవలపర్‌ల కోసం Ethereum" +description: "డార్ట్ భాషను ఉపయోగించి Ethereum కోసం ఎలా అభివృద్ధి చేయాలో తెలుసుకోండి" +lang: te +incomplete: true +--- + +## స్మార్ట్ కాంట్రాక్టులు మరియు సాలిడిటీ భాషతో ప్రారంభించడం {#getting-started-with-smart-contracts-and-solidity} + +## ట్యుటోరియల్స్ {#tutorials} + +- [Flutter మరియు బ్లాక్‌చెయిన్ – హలో వరల్డ్ డాప్](https://www.geeksforgeeks.org/flutter-and-blockchain-hello-world-dapp/) ప్రారంభించడానికి అవసరమైన అన్ని దశల ద్వారా మిమ్మల్ని తీసుకువెళుతుంది: + 1. [Solidity](https://soliditylang.org/)లో స్మార్ట్ కాంట్రాక్ట్ రాయడం + 2. డార్ట్‌లో యూజర్ ఇంటర్‌ఫేస్‌ను రాయడం +- [ఫ్లటర్‌తో మొబైల్ డాప్‌ను రూపొందించడం](https://medium.com/dash-community/building-a-mobile-dapp-with-flutter-be945c80315a) చాలా చిన్నది, మీకు ఇప్పటికే ప్రాథమిక విషయాలు తెలిసి ఉంటే ఇది మంచిది కావచ్చు +- మీరు వీడియో చూస్తూ నేర్చుకోవడానికి ఇష్టపడితే, మీరు [మీ మొదటి బ్లాక్‌చెయిన్ ఫ్లట్టర్ యాప్‌ను రూపొందించండి](https://www.youtube.com/watch?v=3Eeh3pJ6PeA) చూడవచ్చు, ఇది దాదాపు గంట నిడివి ఉంటుంది +- మీరు అసహనంతో ఉంటే, మీరు [Ethereumలో ఫ్లటర్ మరియు డార్ట్‌తో బ్లాక్‌చెయిన్ వికేంద్రీకృత-యాప్‌ను రూపొందించడం](https://www.youtube.com/watch?v=jaMFEOCq_1s)ను ఇష్టపడవచ్చు, ఇది కేవలం ఇరవై నిమిషాలు మాత్రమే ఉంటుంది +- [WalletConnect ద్వారా Web3Modalతో ఫ్లట్టర్ అప్లికేషన్‌లో MetaMaskను ఏకీకృతం చేయడం](https://www.youtube.com/watch?v=v_M2buHCpc4) - WalletConnect ద్వారా [Web3Modal](https://pub.dev/packages/web3modal_flutter) లైబ్రరీతో మీ ఫ్లట్టర్ అప్లికేషన్‌లలో MetaMaskను ఏకీకృతం చేసే దశల ద్వారా ఈ చిన్న వీడియో మిమ్మల్ని తీసుకువెళుతుంది +- [Solidity & Flutter తో మొబైల్ బ్లాక్‌చెయిన్ డెవలపర్ బూట్‌క్యాంప్ కోర్సు](https://youtube.com/playlist?list=PL4V4Unlk5luhQ26ERO6hWEbcUwHDSSmVH) - ఫుల్ స్టాక్ మొబైల్ బ్లాక్‌చెయిన్ డెవలపర్ కోర్సు ప్లేలిస్ట్ + +## Ethereum క్లయింట్‌లతో పనిచేయడం {#working-with-ethereum-clients} + +క్రిప్టోకరెన్సీ మరియు బ్లాక్‌చెయిన్ టెక్నాలజీ యొక్క ప్రయోజనాలను ఉపయోగించుకునే వికేంద్రీకృత అప్లికేషన్‌లను (లేదా "డాప్స్") సృష్టించడానికి మీరు Ethereumను ఉపయోగించవచ్చు. +Ethereum కోసం [JSON-RPC API](/developers/docs/apis/json-rpc/)ని ఉపయోగించడానికి డార్ట్ కోసం ప్రస్తుతం కనీసం రెండు లైబ్రరీలు నిర్వహించబడుతున్నాయి. + +1. [pwa.ir నుండి Web3dart](https://pub.dev/packages/web3dart) +2. [darticulate.com నుండి Ethereum 5.0.0](https://pub.dev/packages/ethereum) + +నిర్దిష్ట Ethereum చిరునామాలను మార్చడానికి మిమ్మల్ని అనుమతించే అదనపు లైబ్రరీలు కూడా ఉన్నాయి, లేదా వివిధ క్రిప్టోకరెన్సీల ధరలను తిరిగి పొందడానికి మిమ్మల్ని అనుమతించేవి కూడా ఉన్నాయి. +[మీరు పూర్తి జాబితాను ఇక్కడ చూడవచ్చు](https://pub.dev/dart/packages?q=ethereum). diff --git a/public/content/translations/te/developers/docs/programming-languages/delphi/index.md b/public/content/translations/te/developers/docs/programming-languages/delphi/index.md new file mode 100644 index 00000000000..62ac47aa862 --- /dev/null +++ b/public/content/translations/te/developers/docs/programming-languages/delphi/index.md @@ -0,0 +1,56 @@ +--- +title: "డెల్ఫీ డెవలపర్‌ల కోసం ఇతీరియము" +description: "డెల్ఫీ ప్రోగ్రామింగ్ భాషను ఉపయోగించి ఇతీరియము కోసం ఎలా డెవలప్ చేయాలో తెలుసుకోండి" +lang: te +incomplete: true +--- + + + +డెల్ఫీ ప్రోగ్రామింగ్ భాషను ఉపయోగించి ఇతీరియము కోసం ఎలా డెవలప్ చేయాలో తెలుసుకోండి + + + +క్రిప్ట్టో కరెన్సీ మరియు బ్లాక్చైన్ టెక్నాలజీని వాడే వికేంద్రీకృత అప్లికేషన్స్ ( లేదా "డేప్స్") కి ఈతేరియంని ఉపయోగించండి. ఈ డ్డాప్స్ అప్లికేషన్స్ విశ్వసనీయమైనవి, దాని అర్థం వాటిని ఒకసారి ఏతీరియంకి డెప్లోయ్ చేసాక ఎప్పటికి ప్రోగ్రాం చేసిన విధంగానే పని చేస్తాయి. కొత్త తరహా ఫైనాన్సియల్ అప్లికేషన్స్ ని రూపొందించడానికి ఈ డ్డాప్స్ డిజిటల్ ఆస్తులను నియత్రించగలవు. ఇవి వికేంద్రీకృతమైనవి, దాని అర్థం వీటిని ఏ ఒక్క తత్వమో లేదా మనిషి నియత్రించలేవు మరియు సెన్సార్ చేయడం అసాధ్యం. + +డెల్ఫీ ప్రోగ్రామింగ్ భాషను ఉపయోగించి ఇతీరియము పైన వికేంద్రీకృత అప్లికేషన్లను నిర్మించండి మరియు స్మార్ట్ కాంట్రాక్ట్‌లతో ఇంటరాక్ట్ అవ్వండి! + +## స్మార్ట్ కాంట్రాక్టులు మరియు సాలిడిటీ భాషతో ప్రారంభించడం {#getting-started-with-smart-contracts-and-the-solidity-language} + +**డెల్ఫీని ఇతీరియముతో ఇంటిగ్రేట్ చేయడానికి మీ మొదటి అడుగులు వేయండి** + +ఇంకా స్పష్టమైన వివరాలు కావాలి? [ethereum.org/learn](/learn/) లేదా [ethereum.org/developers](/developers/)ని చూడండి. + +- [బ్లాక్ చైను వివరణ](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [స్మార్ట్ కాంట్రాక్టులను అర్థం చేసుకోవడం](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) +- [మీ మొదటి స్మార్ట్ కాంట్రాక్టును వ్రాయండి](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) +- [సాలిడిటీని కంపైల్ చేయడం మరియు డిప్లాయ్ చేయడం ఎలాగో తెలుసుకోండి](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) + +## ప్రారంభకుల కోసం రిఫరెన్సులు మరియు లింకులు {#beginner-references-and-links} + +**డెల్ఫీరియమ్ లైబ్రరీని పరిచయం చేస్తున్నాము** + +- [డెల్ఫీరియమ్ అంటే ఏమిటి?](https://github.com/svanas/delphereum/blob/master/README.md) +- [డెల్ఫీని ఒక స్థానిక (ఇన్-మెమరీ) బ్లాక్‌చైన్‌కు కనెక్ట్ చేయడం](https://medium.com/@svanas/connecting-delphi-to-a-local-in-memory-blockchain-9a1512d6c5b0) +- [డెల్ఫీని ఇతీరియము మెయిన్‌నెట్‌కు కనెక్ట్ చేయడం](https://medium.com/@svanas/connecting-delphi-to-the-ethereum-main-net-5faf1feffd83) +- [డెల్ఫీని స్మార్ట్ కాంట్రాక్ట్‌లకు కనెక్ట్ చేయడం](https://medium.com/@svanas/connecting-delphi-to-smart-contracts-3146b12803a1) + +**ప్రస్తుతానికి సెటప్‌ను దాటవేసి, నేరుగా నమూనాలకు వెళ్లాలనుకుంటున్నారా?** + +- [ఒక 3 నిమిషాల స్మార్ట్ కాంట్రాక్ట్ మరియు డెల్ఫీ - భాగం 1](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-61d998571d) +- [ఒక 3 నిమిషాల స్మార్ట్ కాంట్రాక్ట్ మరియు డెల్ఫీ - భాగం 2](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-part-2-446925faa47b) + +## మధ్యస్థ వ్యాసాలు {#intermediate-articles} + +- [డెల్ఫీలో ఇతీరియము-సంతకం చేసిన సందేశ సంతకాన్ని జనరేట్ చేయడం](https://medium.com/@svanas/generating-an-ethereum-signed-message-signature-in-delphi-75661ce5031b) +- [డెల్ఫీతో ఈథర్‌ను బదిలీ చేయడం](https://medium.com/@svanas/transferring-ether-with-delphi-b5f24b1a98a4) +- [డెల్ఫీతో ERC-20 టోకెన్‌లను బదిలీ చేయడం](https://medium.com/@svanas/transferring-erc-20-tokens-with-delphi-bb44c05b295d) + +## అధునాతన వినియోగ నమూనాలు {#advanced-use-patterns} + +- [డెల్ఫీ మరియు ఇతీరియము నేమ్ సర్వీస్ (ENS)](https://medium.com/@svanas/delphi-and-ethereum-name-service-ens-4443cd278af7) +- [క్విక్‌నోడ్, ఇతీరియము మరియు డెల్ఫీ](https://medium.com/@svanas/quiknode-ethereum-and-delphi-f7bfc9671c23) +- [డెల్ఫీ మరియు ఇతీరియము డార్క్ ఫారెస్ట్](https://svanas.medium.com/delphi-and-the-ethereum-dark-forest-5b430da3ad93) +- [డెల్ఫీలో ఒక టోకెన్‌ను మరొకదానికి మార్పిడి చేయడం](https://svanas.medium.com/swap-one-token-for-another-in-delphi-bcb999c47f7) + +ఇంకొన్ని వనరులు (రిసోర్సెస్) కావాలా? [ethereum.org/developers](/developers/)ని చూడండి. diff --git a/public/content/translations/te/developers/docs/programming-languages/dot-net/index.md b/public/content/translations/te/developers/docs/programming-languages/dot-net/index.md new file mode 100644 index 00000000000..987ab754bb3 --- /dev/null +++ b/public/content/translations/te/developers/docs/programming-languages/dot-net/index.md @@ -0,0 +1,86 @@ +--- +title: ".NET డెవలపర్‌ల కోసం ఇతీరియము" +description: ".NET-ఆధారిత ప్రాజెక్ట్‌లు మరియు టూలింగ్ ఉపయోగించి ఇతీరియము కోసం ఎలా అభివృద్ధి చేయాలో తెలుసుకోండి" +lang: te +incomplete: true +--- + +.NET-ఆధారిత ప్రాజెక్ట్‌లు మరియు టూలింగ్ ఉపయోగించి ఇతీరియము కోసం ఎలా అభివృద్ధి చేయాలో తెలుసుకోండి + +క్రిప్ట్టో కరెన్సీ మరియు బ్లాక్చైన్ టెక్నాలజీని వాడే వికేంద్రీకృత అప్లికేషన్స్ ( లేదా "డేప్స్") కి ఈతేరియంని ఉపయోగించండి. ఈ డ్డాప్స్ అప్లికేషన్స్ విశ్వసనీయమైనవి, దాని అర్థం వాటిని ఒకసారి ఏతీరియంకి డెప్లోయ్ చేసాక ఎప్పటికి ప్రోగ్రాం చేసిన విధంగానే పని చేస్తాయి. కొత్త తరహా ఫైనాన్సియల్ అప్లికేషన్స్ ని రూపొందించడానికి ఈ డ్డాప్స్ డిజిటల్ ఆస్తులను నియత్రించగలవు. ఇవి వికేంద్రీకృతమైనవి, దాని అర్థం వీటిని ఏ ఒక్క తత్వమో లేదా మనిషి నియత్రించలేవు మరియు సెన్సార్ చేయడం అసాధ్యం. + +మైక్రోసాఫ్ట్ టెక్నాలజీ స్టాక్ నుండి టూల్స్ మరియు భాషలను ఉపయోగించి ఇతీరియము పైన వికేంద్రీకృత అప్లికేషన్‌లను రూపొందించండి మరియు స్మార్ట్ కాంట్రాక్టులతో ఇంటరాక్ట్ అవ్వండి - C#, # విజువల్ బేసిక్ .NET, F#, VSCode మరియు విజువల్ స్టూడియో వంటి టూలింగ్‌పై, .NET ఫ్రేమ్‌వర్క్/.NET కోర్/.NET స్టాండర్డ్ అంతటా మద్దతు ఇస్తుంది. నిమిషాల్లో మైక్రోసాఫ్ట్ అజూర్ బ్లాక్‌చైన్‌ను ఉపయోగించి అజూర్‌పై ఒక ఇతీరియము బ్లాక్‌చైన్‌ను డిప్లాయ్ చేయండి. .NET ప్రేమను ఇతీరియముకు తీసుకురండి! + +## స్మార్ట్ కాంట్రాక్టులు మరియు సాలిడిటీ భాషతో ప్రారంభించడం {#getting-started-with-smart-contracts-and-the-solidity-language} + +**ఇతీరియముతో .NET ను ఇంటిగ్రేట్ చేయడానికి మీ మొదటి అడుగులు వేయండి** + +ఇంకా స్పష్టమైన వివరాలు కావాలి? [ethereum.org/learn](/learn/) లేదా [ethereum.org/developers](/developers/)ని చూడండి. + +- [బ్లాక్ చైను వివరణ](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [స్మార్ట్ కాంట్రాక్టులను అర్థం చేసుకోవడం](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) +- [మీ మొదటి స్మార్ట్ కాంట్రాక్టును వ్రాయండి](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) +- [సాలిడిటీని కంపైల్ చేయడం మరియు డిప్లాయ్ చేయడం ఎలాగో తెలుసుకోండి](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) + +## ప్రారంభకుల కోసం రిఫరెన్సులు మరియు లింకులు {#beginner-references-and-links} + +**Nethereum లైబ్రరీ మరియు VS కోడ్ సాలిడిటీని పరిచయం చేస్తున్నాము** + +- [Nethereum, ప్రారంభించడం](https://docs.nethereum.com/en/latest/getting-started/) +- [VS కోడ్ సాలిడిటీని ఇన్‌స్టాల్ చేయడం](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity) +- [ఇతీరియము స్మార్ట్ కాంట్రాక్టులను సృష్టించడం మరియు కాల్ చేయడం కోసం ఒక .NET డెవలపర్ వర్క్‌ఫ్లో](https://medium.com/coinmonks/a-net-developers-workflow-for-creating-and-calling-ethereum-smart-contracts-44714f191db2) +- [Nethereumతో స్మార్ట్ కాంట్రాక్టుల ఇంటిగ్రేషన్](https://kauri.io/#collections/Getting%20Started/smart-contracts-integration-with-nethereum/#smart-contracts-integration-with-nethereumm) +- [Nethereumతో .NET మరియు ఇతీరియము బ్లాక్‌చైన్ స్మార్ట్ కాంట్రాక్టులను ఇంటర్‌ఫేస్ చేయడం](https://medium.com/my-blockchain-development-daily-journey/interfacing-net-and-ethereum-blockchain-smart-contracts-with-nethereum-2fa3729ac933), [中文版](https://medium.com/my-blockchain-development-daily-journey/%E4%BD%BF%E7%94%A8nethereum%E9%80%A3%E6%8E%A5-net%E5%92%8C%E4%BB%A5%E5%A4%AA%E7%B6%B2%E5%8D%80%E5%A1%8A%E9%8F%88%E6%99%BA%E8%83%BD%E5%90%88%E7%B4%84-4a96d35ad1e1)లో కూడా +- [Nethereum - బ్లాక్‌చైన్ కోసం ఒక ఓపెన్ సోర్స్ .NET ఇంటిగ్రేషన్ లైబ్రరీ](https://kauri.io/#collections/a%20hackathon%20survival%20guide/nethereum-an-open-source-.net-integration-library/) +- [Nethereum ఉపయోగించి SQL డేటాబేస్‌కు ఇతీరియము లావాదేవీలను రాయడం](https://medium.com/coinmonks/writing-ethereum-transactions-to-sql-database-using-nethereum-fd94e0e4fa36) +- [C# మరియు విజువల్‌స్టూడియో ఉపయోగించి ఇతీరియము స్మార్ట్ కాంట్రాక్టులను సులభంగా ఎలా డిప్లాయ్ చేయాలో చూడండి](https://koukia.ca/deploy-ethereum-smart-contracts-using-c-and-visualstudio-5be188ae928c) + +**ప్రస్తుతానికి సెటప్‌ను దాటవేసి, నేరుగా నమూనాలకు వెళ్లాలనుకుంటున్నారా?** + +- [Playground](http://playground.nethereum.com/) - బ్రౌజర్ ద్వారా ఇతీరియముతో ఇంటరాక్ట్ అవ్వండి మరియు Nethereum ఎలా ఉపయోగించాలో తెలుసుకోండి. + - ఖాతా నిల్వను క్వెరీ చేయండి [C#](http://playground.nethereum.com/csharp/id/1001) [VB.NET](http://playground.nethereum.com/vb/id/2001) + - ERC20 స్మార్ట్ కాంట్రాక్ట్ నిల్వను క్వెరీ చేయండి [C#](http://playground.nethereum.com/csharp/id/1005) [VB.NET](http://playground.nethereum.com/vb/id/2004) + - ఒక ఖాతాకు ఈథర్‌ను బదిలీ చేయండి [C#](http://playground.nethereum.com/csharp/id/1003) [VB.NET](http://playground.nethereum.com/vb/id/2003) + - ... మరిన్ని! + +## మధ్యస్థ వ్యాసాలు {#intermediate-articles} + +- [Nethereum వర్క్‌బుక్/నమూనా జాబితా](http://docs.nethereum.com/en/latest/Nethereum.Workbooks/docs/) +- [మీ స్వంత డెవలప్‌మెంట్ టెస్ట్‌చైన్‌లను డిప్లాయ్ చేయండి](https://github.com/Nethereum/Testchains) +- [సాలిడిటీ కోసం VSCode కోడ్‌జెన్ ప్లగిన్](https://docs.nethereum.com/en/latest/nethereum-codegen-vscodesolidity/) +- [యూనిటీ మరియు ఇతీరియము: ఎందుకు మరియు ఎలా](https://www.raywenderlich.com/5509-unity-and-ethereum-why-and-how) +- [ఇతీరియము డాప్స్ కోసం ASP.NET కోర్ వెబ్ APIని సృష్టించండి](https://tech-mint.com/blockchain/create-asp-net-core-web-api-for-ethereum-dapps/) +- [సప్లై చైన్ ట్రాకింగ్ సిస్టమ్‌ను అమలు చేయడానికి Nethereum Web3ని ఉపయోగించడం](http://blog.pomiager.com/post/using-nethereum-web3-to-implement-a-supply-chain-traking-system4) +- [Nethereum బ్లాక్ ప్రాసెసింగ్](https://nethereum.readthedocs.io/en/latest/nethereum-block-processing-detail/), [C# ప్లేగ్రౌండ్ నమూనా](http://playground.nethereum.com/csharp/id/1025)తో +- [Nethereum వెబ్‌సాకెట్ స్ట్రీమింగ్](https://nethereum.readthedocs.io/en/latest/nethereum-subscriptions-streaming/) +- [Kaleido మరియు Nethereum](https://kaleido.io/kaleido-and-nethereum/) +- [Quorum మరియు Nethereum](https://github.com/Nethereum/Nethereum/blob/master/src/Nethereum.Quorum/README.md) + +## అధునాతన వినియోగ నమూనాలు {#advanced-use-patterns} + +- [Azure Key Vault మరియు Nethereum](https://github.com/Azure-Samples/bc-community-samples/tree/master/akv-nethereum) +- [Nethereum.DappHybrid](https://github.com/Nethereum/Nethereum.DappHybrid) +- [Ujo Nethereum బ్యాకెండ్ రిఫరెన్స్ ఆర్కిటెక్చర్](https://docs.nethereum.com/en/latest/nethereum-ujo-backend-sample/) + +## .NET ప్రాజెక్ట్‌లు, టూల్స్ మరియు ఇతర సరదా విషయాలు {#dot-net-projects-tools-and-other-fun-stuff} + +- [Nethereum Playground](http://playground.nethereum.com/) - _బ్రౌజర్‌లో Nethereum కోడ్ స్నిప్పెట్‌లను కంపైల్ చేయండి, సృష్టించండి మరియు రన్ చేయండి_ +- [Nethereum Codegen Blazor](https://github.com/Nethereum/Nethereum.CodeGen.Blazor) - _Blazorలో UIతో Nethereum కోడ్‌జెన్_ +- [Nethereum Blazor](https://github.com/Nethereum/NethereumBlazor) - _ఒక .NET Wasm SPA లైట్ బ్లాక్‌చైన్ ఎక్స్‌ప్లోరర్ మరియు సాధారణ వాలెట్_ +- [Wonka బిజినెస్ రూల్స్ ఇంజిన్](https://docs.nethereum.com/en/latest/wonka/) - _ఒక బిజినెస్ రూల్స్ ఇంజిన్ (.NET ప్లాట్‌ఫారమ్ మరియు ఇతీరియము ప్లాట్‌ఫారమ్ రెండింటికీ) ఇది అంతర్లీనంగా మెటాడేటా-ఆధారితమైనది_ +- [Nethermind](https://github.com/NethermindEth/nethermind) - _Linux, Windows, MacOS కోసం ఒక .NET కోర్ ఇతీరియము క్లయింట్_ +- [eth-utils](https://github.com/ethereum/eth-utils/) - _ఇతీరియము సంబంధిత కోడ్‌బేస్‌లతో పనిచేయడానికి యుటిలిటీ ఫంక్షన్‌లు_ +- [TestChains](https://github.com/Nethereum/TestChains) - _వేగవంతమైన స్పందన కోసం ముందుగా కాన్ఫిగర్ చేయబడిన .NET డెవ్‌చైన్‌లు (PoA)_ + +ఇంకొన్ని వనరులు (రిసోర్సెస్) కావాలా? [ethereum.org/developers](/developers/)ని చూడండి. + +## .NET కమ్యూనిటీ కంట్రిబ్యూటర్లు {#dot-net-community-contributors} + +Nethereumలో, మేము ఎక్కువగా [Gitter](https://gitter.im/Nethereum/Nethereum)లో సమయం గడుపుతాము, ఇక్కడ ప్రతిఒక్కరూ ప్రశ్నలు అడగడానికి/సమాధానం ఇవ్వడానికి, సహాయం పొందడానికి లేదా కేవలం సేద తీరడానికి స్వాగతం. [Nethereum GitHub రిపోజిటరీ](https://github.com/Nethereum)లో ఒక PR చేయడానికి లేదా ఒక సమస్యను తెరవడానికి సంకోచించకండి, లేదా మా వద్ద ఉన్న అనేక సైడ్/నమూనా ప్రాజెక్ట్‌లను బ్రౌజ్ చేయండి. మీరు మమ్మల్ని [Discord](https://discord.gg/jQPrR58FxX)లో కూడా కనుగొనవచ్చు! + +మీరు Nethermindకు కొత్తవారై, ప్రారంభించడానికి సహాయం అవసరమైతే, మా [Discord](http://discord.gg/PaCMRFdvWT)లో చేరండి. మీ ప్రశ్నలకు సమాధానం ఇవ్వడానికి మా డెవలపర్లు అందుబాటులో ఉన్నారు. [Nethermind GitHub రిపోజిటరీ](https://github.com/NethermindEth/nethermind)లో ఒక PR తెరవడానికి లేదా ఏవైనా సమస్యలను లేవనెత్తడానికి సంకోచించకండి. + +## ఇతర సమగ్ర జాబితాలు {#other-aggregated-lists} + +[అధికారిక Nethereum సైట్](https://nethereum.com/) +[అధికారిక Nethermind సైట్](https://nethermind.io/) diff --git a/public/content/translations/te/developers/docs/programming-languages/elixir/index.md b/public/content/translations/te/developers/docs/programming-languages/elixir/index.md new file mode 100644 index 00000000000..f9cd3175158 --- /dev/null +++ b/public/content/translations/te/developers/docs/programming-languages/elixir/index.md @@ -0,0 +1,55 @@ +--- +title: "ఎలిక్సిర్ డెవలపర్‌ల కోసం ఇథిరియమ్" +description: "ఎలిక్సిర్ ఆధారిత ప్రాజెక్ట్‌లు మరియు టూలింగ్‌ను ఉపయోగించి ఇథిరియమ్ కోసం ఎలా అభివృద్ధి చేయాలో తెలుసుకోండి." +lang: te +incomplete: false +--- + +ఎలిక్సిర్ ఆధారిత ప్రాజెక్ట్‌లు మరియు టూలింగ్‌ను ఉపయోగించి ఇథిరియమ్ కోసం ఎలా అభివృద్ధి చేయాలో తెలుసుకోండి. + +క్రిప్ట్టో కరెన్సీ మరియు బ్లాక్చైన్ టెక్నాలజీని వాడే వికేంద్రీకృత అప్లికేషన్స్ ( లేదా "డేప్స్") కి ఈతేరియంని ఉపయోగించండి. ఈ డాప్స్ నమ్మకం అవసరం లేనివిగా ఉంటాయి, అంటే వాటిని ఒకసారి ఇథిరియమ్‌లో డిప్లాయ్ చేసిన తర్వాత, అవి ఎల్లప్పుడూ ప్రోగ్రామ్ చేసిన విధంగానే అమలు అవుతాయి. కొత్త రకాల ఆర్థిక అప్లికేషన్‌లను రూపొందించడానికి అవి డిజిటల్ ఆస్తులను నియంత్రించగలవు. ఇవి వికేంద్రీకృతమైనవి, దాని అర్థం వీటిని ఏ ఒక్క తత్వమో లేదా మనిషి నియత్రించలేవు మరియు సెన్సార్ చేయడం అసాధ్యం. + +## స్మార్ట్ కాంట్రాక్టులు మరియు సాలిడిటీ భాషతో ప్రారంభించడం {#getting-started-with-smart-contracts-and-solidity} + +**ఇథిరియమ్‌తో ఎలిక్సిర్‌ను అనుసంధానించడానికి మీ మొదటి అడుగులు వేయండి** + +ఇంకా స్పష్టమైన వివరాలు కావాలి? [ethereum.org/learn](/learn/) లేదా [ethereum.org/developers](/developers/)ని చూడండి. + +- [బ్లాక్ చైను వివరణ](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [స్మార్ట్ కాంట్రాక్టులను అర్థం చేసుకోవడం](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) +- [మీ మొదటి స్మార్ట్ కాంట్రాక్టును వ్రాయండి](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) +- [సాలిడిటీని కంపైల్ చేయడం మరియు డిప్లాయ్ చేయడం ఎలాగో తెలుసుకోండి](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) + +## ప్రారంభ వ్యాసాలు {#beginner-articles} + +- [చివరకు ఇథిరియమ్ ఖాతాలను అర్థం చేసుకోవడం](https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe) +- [ఈథర్స్ — ఎలిక్సిర్ కోసం ఒక ఫస్ట్-క్లాస్ ఇథిరియమ్ Web3 లైబ్రరీ](https://medium.com/@alisinabh/announcing-ethers-a-first-class-ethereum-web3-library-for-elixir-1d64e9409122) + +## మధ్యస్థ వ్యాసాలు {#intermediate-articles} + +- [ఎలిక్సిర్‌తో రా ఇథిరియమ్ కాంట్రాక్ట్ లావాదేవీలపై సంతకం చేయడం ఎలా](https://kohlerjp.medium.com/how-to-sign-raw-ethereum-contract-transactions-with-elixir-f8822bcc813b) +- [ఇథిరియమ్ స్మార్ట్ కాంట్రాక్ట్‌లు మరియు ఎలిక్సిర్](https://medium.com/agile-alpha/ethereum-smart-contracts-and-elixir-c7c4b239ddb4) + +## ఎలిక్సిర్ ప్రాజెక్ట్‌లు మరియు టూల్స్ {#elixir-projects-and-tools} + +### యాక్టివ్ {#active} + +- [block_keys](https://github.com/ExWeb3/block_keys) - _ఎలిక్సిర్‌లో BIP32 & BIP44 ఇంప్లిమెంటేషన్ (నిర్ణయాత్మక వాలెట్ల కోసం బహుళ-ఖాతా క్రమానుగత శ్రేణి)_ +- [ethereumex](https://github.com/mana-ethereum/ethereumex) - _ఇథిరియమ్ బ్లాక్‌చెయిన్ కోసం ఎలిక్సిర్ JSON-RPC క్లయింట్_ +- [ethers](https://github.com/ExWeb3/elixir_ethers) - _ఎలిక్సిర్‌ను ఉపయోగించి ఇథిరియమ్‌లోని స్మార్ట్ కాంట్రాక్ట్‌లతో సంವಹించడానికి ఒక సమగ్ర Web3 లైబ్రరీ_ +- [ethers_kms](https://github.com/ExWeb3/elixir_ethers_kms) - _ఈథర్స్ కోసం ఒక KMS సైనర్ లైబ్రరీ (AWS KMSతో లావాదేవీలపై సంతకం చేయండి)_ +- [ex_abi](https://github.com/poanetwork/ex_abi) - _ఎలిక్సిర్‌లో ఇథిరియమ్ ABI పార్సర్/డీకోడర్/ఎన్‌కోడర్ ఇంప్లిమెంటేషన్_ +- [ex_keccak](https://github.com/ExWeb3/ex_keccak) - _ఒక NIF నిర్మించిన tiny-keccak రస్ట్ క్రేట్‌ను ఉపయోగించి Keccak SHA3-256 హాష్‌లను గణించడానికి ఎలిక్సిర్ లైబ్రరీ_ +- [ex_rlp](https://github.com/mana-ethereum/ex_rlp) - _ఇథిరియమ్ యొక్క RLP (రికర్శివ్ లెంగ్త్ ప్రిఫిక్స్) ఎన్‌కోడింగ్ యొక్క ఎలిక్సిర్ ఇంప్లిమెంటేషన్_ + +### ఆర్కైవ్ చేయబడింది / ఇకపై నిర్వహించబడదు {#archived--no-longer-maintained} + +- [eth](https://hex.pm/packages/eth) - _ఎలిక్సిర్ కోసం ఇథిరియమ్ యుటిలిటీలు_ +- [exw3](https://github.com/hswick/exw3) - _ఎలిక్సిర్ కోసం ఉన్నత స్థాయి ఇథిరియమ్ RPC క్లయింట్_ +- [mana](https://github.com/mana-ethereum/mana) - _ఎలిక్సిర్‌లో వ్రాయబడిన ఇథిరియమ్ ఫుల్ నోడ్ ఇంప్లిమెంటేషన్_ + +ఇంకొన్ని వనరులు (రిసోర్సెస్) కావాలా? [మా డెవలపర్‌ల హోమ్‌ని](/developers/) చూడండి. + +## ఎలిక్సిర్ కమ్యూనిటీ కంట్రిబ్యూటర్లు {#elixir-community-contributors} + +[ఎలిక్సిర్ యొక్క స్లాక్ #ఇథిరియమ్ ఛానెల్](https://elixir-lang.slack.com/archives/C5RPZ3RJL) వేగంగా అభివృద్ధి చెందుతున్న కమ్యూనిటీకి హోస్ట్‌గా ఉంది మరియు పైన పేర్కొన్న ఏవైనా ప్రాజెక్ట్‌లు మరియు సంబంధిత అంశాలపై చర్చల కోసం ప్రత్యేక వనరుగా ఉంది. diff --git a/public/content/translations/te/developers/docs/programming-languages/golang/index.md b/public/content/translations/te/developers/docs/programming-languages/golang/index.md new file mode 100644 index 00000000000..be9a2d3512a --- /dev/null +++ b/public/content/translations/te/developers/docs/programming-languages/golang/index.md @@ -0,0 +1,84 @@ +--- +title: "Go డెవలపర్‌ల కోసం Ethereum" +description: "Go-ఆధారిత ప్రాజెక్ట్‌లు మరియు టూలింగ్ ఉపయోగించి Ethereum కోసం ఎలా డెవలప్ చేయాలో తెలుసుకోండి" +lang: te +incomplete: true +--- + +Go-ఆధారిత ప్రాజెక్ట్‌లు మరియు టూలింగ్ ఉపయోగించి Ethereum కోసం ఎలా డెవలప్ చేయాలో తెలుసుకోండి + +వికేంద్రీకృత అప్లికేషన్లను (లేదా "డాప్స్") సృష్టించడానికి Ethereumను ఉపయోగించండి. ఈ డ్డాప్స్ అప్లికేషన్స్ విశ్వసనీయమైనవి, దాని అర్థం వాటిని ఒకసారి ఏతీరియంకి డెప్లోయ్ చేసాక ఎప్పటికి ప్రోగ్రాం చేసిన విధంగానే పని చేస్తాయి. అవి వికేంద్రీకృతమైనవి, అంటే అవి పీర్-టు-పీర్ నెట్‌వర్క్‌లో రన్ అవుతాయి మరియు వైఫల్యానికి ఒక్క పాయింట్ కూడా లేదు. ఏ ఒక్క సంస్థ లేదా వ్యక్తి వాటిని నియంత్రించరు మరియు వాటిని సెన్సార్ చేయడం దాదాపు అసాధ్యం. కొత్త రకాల అప్లికేషన్లను సృష్టించడానికి అవి డిజిటల్ ఆస్తులను నియంత్రించగలవు. + +## స్మార్ట్ కాంట్రాక్టులు మరియు సాలిడిటీ భాషతో ప్రారంభించడం {#getting-started-with-smart-contracts-and-solidity} + +**Goను Ethereumతో ఏకీకృతం చేయడానికి మీ మొదటి అడుగులు వేయండి** + +ఇంకా స్పష్టమైన వివరాలు కావాలి? [ethereum.org/learn](/learn/) లేదా [ethereum.org/developers](/developers/)ని చూడండి. + +- [బ్లాక్ చైను వివరణ](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [స్మార్ట్ కాంట్రాక్టులను అర్థం చేసుకోవడం](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) +- [మీ మొదటి స్మార్ట్ కాంట్రాక్టును వ్రాయండి](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) +- [సాలిడిటీని కంపైల్ చేయడం మరియు డిప్లాయ్ చేయడం ఎలాగో తెలుసుకోండి](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) +- [కాంట్రాక్ట్ ట్యుటోరియల్](https://github.com/ethereum/go-ethereum/wiki/Contract-Tutorial) + +## ప్రారంభకుల కోసం కథనాలు మరియు పుస్తకాలు {#beginner-articles-and-books} + +- [Gethతో ప్రారంభించడం](https://medium.com/@tzhenghao/getting-started-with-geth-c1a30b8d6458) +- [Ethereumకు కనెక్ట్ అవ్వడానికి Golang ఉపయోగించండి](https://www.youtube.com/watch?v=-7uChuO_VzM) +- [Golang ఉపయోగించి Ethereum స్మార్ట్ కాంట్రాక్టులను డిప్లాయ్ చేయండి](https://www.youtube.com/watch?v=pytGqQmDslE) +- [Goలో Ethereum స్మార్ట్ కాంట్రాక్టులను టెస్టింగ్ మరియు డిప్లాయ్ చేయడానికి ఒక దశలవారీ గైడ్](https://hackernoon.com/a-step-by-step-guide-to-testing-and-deploying-ethereum-smart-contracts-in-go-9fc34b178d78) +- [ఇ-పుస్తకం: Goతో Ethereum డెవలప్‌మెంట్](https://goethereumbook.org/) - _Goతో Ethereum అప్లికేషన్లను డెవలప్ చేయండి_ + +## మధ్యంతర కథనాలు మరియు డాక్స్ {#intermediate-articles-and-docs} + +- [Go Ethereum డాక్యుమెంటేషన్](https://geth.ethereum.org/docs/) - _అధికారిక Ethereum Golang కోసం డాక్యుమెంటేషన్_ +- [Erigon ప్రోగ్రామర్ గైడ్](https://github.com/ledgerwatch/erigon/blob/devel/docs/programmers_guide/guide.md) - _స్టేట్ ట్రీ, మల్టీ-ప్రూఫ్స్, మరియు ట్రాన్సాక్షన్ ప్రాసెసింగ్‌తో సహా ఇలస్ట్రేటెడ్ గైడ్_ +- [Erigon మరియు స్టేట్‌లెస్ Ethereum](https://youtu.be/3-Mn7OckSus?t=394) - _2020 Ethereum కమ్యూనిటీ కాన్ఫరెన్స్ (EthCC 3)_ +- [Erigon: Ethereum క్లయింట్‌లను ఆప్టిమైజ్ చేయడం](https://www.youtube.com/watch?v=CSpc1vZQW2Q) - _2018 డెవ్‌కాన్ 4_ +- [Go Ethereum GoDoc](https://godoc.org/github.com/ethereum/go-ethereum) +- [Gethతో Goలో ఒక డాప్‌ను సృష్టించడం](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/creating-a-dapp-in-go-with-geth/) +- [Golang మరియు Gethతో Ethereum ప్రైవేట్ నెట్‌వర్క్‌తో పని చేయండి](https://myhsts.org/tutorial-learn-how-to-work-with-ethereum-private-network-with-golang-with-geth.php) +- [Goతో Ethereumపై Solidity కాంట్రాక్టుల యూనిట్ టెస్టింగ్](https://medium.com/coinmonks/unit-testing-solidity-contracts-on-ethereum-with-go-3cc924091281) +- [Gethను లైబ్రరీగా ఉపయోగించడం కోసం త్వరిత రిఫరెన్స్](https://medium.com/coinmonks/web3-go-part-1-31c68c68e20e) + +## అధునాతన వినియోగ నమూనాలు {#advanced-use-patterns} + +- [GETH సిమ్యులేటెడ్ బ్యాకెండ్](https://kauri.io/#collections/An%20ethereum%20test%20toolkit%20in%20Go/the-geth-simulated-backend/#_top) +- [Ethereum మరియు Quorum ఉపయోగించి బ్లాక్‌చెయిన్-యాజ్-ఎ-సర్వీస్ యాప్స్](https://blockchain.dcwebmakers.com/blockchain-as-a-service-apps-using-ethereum-and-quorum.html) +- [Ethereum బ్లాక్‌చెయిన్ అప్లికేషన్‌లలో డిస్ట్రిబ్యూటెడ్ స్టోరేజ్ IPFS మరియు Swarm](https://blockchain.dcwebmakers.com/work-with-distributed-storage-ipfs-and-swarm-in-ethereum.html) +- [మొబైల్ క్లయింట్లు: లైబ్రరీలు మరియు ఇన్‌ప్రాక్ Ethereum నోడ్స్](https://github.com/ethereum/go-ethereum/wiki/Mobile-Clients:-Libraries-and-Inproc-Ethereum-Nodes) +- [నేటివ్ డాప్స్: Ethereum కాంట్రాక్టులకు Go బైండింగ్స్](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts) + +## Go ప్రాజెక్ట్‌లు మరియు టూల్స్ {#go-projects-and-tools} + +- [Geth / Go Ethereum](https://github.com/ethereum/go-ethereum) - _Ethereum ప్రోటోకాల్ యొక్క అధికారిక Go ఇంప్లిమెంటేషన్_ +- [Go Ethereum కోడ్ ఎనాలసిస్](https://github.com/ZtesoftCS/go-ethereum-code-analysis) - _Go Ethereum సోర్స్ కోడ్ యొక్క సమీక్ష మరియు విశ్లేషణ_ +- [Erigon](https://github.com/ledgerwatch/erigon) - _ఆర్కైవ్ నోడ్స్‌పై దృష్టి సారించి, Go Ethereum యొక్క వేగవంతమైన డెరివేటివ్_ +- [Golem](https://github.com/golemfactory/golem) - _Golem కంప్యూటింగ్ పవర్ కోసం గ్లోబల్ మార్కెట్‌ను సృష్టిస్తోంది_ +- [Quorum](https://github.com/jpmorganchase/quorum) - _డేటా గోప్యతకు మద్దతు ఇచ్చే Ethereum యొక్క పర్మిషన్డ్ ఇంప్లిమెంటేషన్_ +- [Prysm](https://github.com/prysmaticlabs/prysm) - _Ethereum 'Serenity' 2.0 Go ఇంప్లిమెంటేషన్_ +- [Eth Tweet](https://github.com/yep/eth-tweet) - _వికేంద్రీకృత Twitter: Ethereum బ్లాక్‌చెయిన్‌పై నడుస్తున్న ఒక మైక్రోబ్లాగింగ్ సర్వీస్_ +- [Plasma MVP Golang](https://github.com/kyokan/plasma) — _మినిమమ్ వయబుల్ ప్లాస్మా స్పెసిఫికేషన్ యొక్క Golang ఇంప్లిమెంటేషన్ మరియు ఎక్స్‌టెన్షన్_ +- [ఓపెన్ Ethereum మైనింగ్ పూల్](https://github.com/sammy007/open-ethereum-pool) - _ఒక ఓపెన్ సోర్స్ Ethereum మైనింగ్ పూల్_ +- [Ethereum HD వాలెట్](https://github.com/miguelmota/go-ethereum-hdwallet) - _Goలో Ethereum HD వాలెట్ డెరివేషన్స్_ +- [Multi Geth](https://github.com/multi-geth/multi-geth) - _అనేక రకాల Ethereum నెట్‌వర్క్‌లకు మద్దతు_ +- [Geth లైట్ క్లయింట్](https://github.com/zsfelfoldi/go-ethereum/wiki/Geth-Light-Client) - _లైట్ Ethereum సబ్‌ప్రోటోకాల్ యొక్క Geth ఇంప్లిమెంటేషన్_ +- [Ethereum Golang SDK](https://github.com/everFinance/goether) - _Golangలో ఒక సాధారణ Ethereum వాలెట్ ఇంప్లిమెంటేషన్ మరియు యుటిలిటీస్_ +- [Covalent Golang SDK](https://github.com/covalenthq/covalent-api-sdk-go) - _200+ బ్లాక్‌చెయిన్‌ల కోసం Go SDK ద్వారా సమర్థవంతమైన బ్లాక్‌చెయిన్ డేటా యాక్సెస్_ + +ఇంకొన్ని వనరులు (రిసోర్సెస్) కావాలా? [ethereum.org/developers](/developers/)ని చూడండి + +## Go కమ్యూనిటీ కంట్రిబ్యూటర్లు {#go-community-contributors} + +- [Geth డిస్కార్డ్](https://discordapp.com/invite/nthXNEv) +- [Geth గిట్టర్](https://gitter.im/ethereum/go-ethereum) +- [Gophers స్లాక్](https://invite.slack.golangbridge.org/) - [#ethereum ఛానెల్](https://gophers.slack.com/messages/C9HP1S9V2) +- [స్టాక్ఎక్స్చేంజ్ - Ethereum](https://ethereum.stackexchange.com/) +- [Multi Geth గిట్టర్](https://gitter.im/ethoxy/multi-geth) +- [Ethereum గిట్టర్](https://gitter.im/ethereum/home) +- [Geth లైట్ క్లయింట్ గిట్టర్](https://gitter.im/ethereum/light-client) + +## ఇతర సమగ్ర జాబితాలు {#other-aggregated-lists} + +- [ఆసమ్ Ethereum](https://github.com/btomashvili/awesome-ethereum) +- [కాన్సెన్సిస్: Ethereum డెవలపర్ టూల్స్ యొక్క ఒక నిశ్చయాత్మక జాబితా](https://media.consensys.net/an-definitive-list-of-ethereum-developer-tools-2159ce865974) | [GitHub సోర్స్](https://github.com/ConsenSys/ethereum-developer-tools-list) diff --git a/public/content/translations/te/developers/docs/programming-languages/index.md b/public/content/translations/te/developers/docs/programming-languages/index.md new file mode 100644 index 00000000000..480fdcfd028 --- /dev/null +++ b/public/content/translations/te/developers/docs/programming-languages/index.md @@ -0,0 +1,33 @@ +--- +title: "ప్రోగ్రామింగ్ భాషలు" +description: "జావాస్క్రిప్ట్, పైథాన్, గో, రస్ట్ మరియు మరెన్నో సహా వివిధ ప్రోగ్రామింగ్ భాషల కోసం ఇతీరియము అభివృద్ధి వనరులను కనుగొనండి." +lang: te +--- + +ఇతీరియముపై నిర్మించడానికి డెవలపర్లు తప్పనిసరిగా [స్మార్ట్ కాంట్రాక్టులు](/developers/docs/smart-contracts/) వ్రాయాలి అనేది ఒక సాధారణ అపోహ. ఇది అవాస్తవం. +ఇతీరియము నెట్‌వర్క్ మరియు కమ్యూనిటీ యొక్క గొప్ప విషయాలలో ఒకటి ఏమిటంటే, మీరు దాదాపు ఏదైనా ప్రోగ్రామింగ్ భాషలో [పాల్గొనగలరు](/community/). + +ఇతీరియము మరియు దాని కమ్యూనిటీ ఓపెన్ సోర్స్‌ను స్వీకరిస్తాయి. మీరు అనేక రకాల భాషలలో కమ్యూనిటీ ప్రాజెక్ట్‌లను - క్లయింట్ ఇంప్లిమెంటేషన్‌లు, APIలు, డెవలప్‌మెంట్ ఫ్రేమ్‌వర్క్‌లు, టెస్టింగ్ ఉపకరణాలు - కనుగొనవచ్చు. + +## మీ భాషను ఎంచుకోండి {#data} + +ప్రాజెక్ట్‌లు, వనరులు మరియు వర్చువల్ కమ్యూనిటీలను కనుగొనడానికి మీకు నచ్చిన ప్రోగ్రామింగ్ భాషను ఎంచుకోండి: + +- [డార్ట్ డెవలపర్‌ల కోసం ఇతీరియము](/developers/docs/programming-languages/dart/) +- [డెల్ఫీ డెవలపర్‌ల కోసం ఇతీరియము](/developers/docs/programming-languages/delphi/) +- [.NET డెవలపర్‌ల కోసం ఇతీరియము](/developers/docs/programming-languages/dot-net/) +- [ఎలిక్సర్ డెవలపర్‌ల కోసం ఇతీరియము](/developers/docs/programming-languages/elixir/) +- [గో డెవలపర్‌ల కోసం ఇతీరియము](/developers/docs/programming-languages/golang/) +- [జావా డెవలపర్‌ల కోసం ఇతీరియము](/developers/docs/programming-languages/java/) +- [జావాస్క్రిప్ట్ డెవలపర్‌ల కోసం ఇతీరియము](/developers/docs/programming-languages/javascript/) +- [పైథాన్ డెవలపర్‌ల కోసం ఇతీరియము](/developers/docs/programming-languages/python/) +- [రూబీ డెవలపర్‌ల కోసం ఇతీరియము](/developers/docs/programming-languages/ruby/) +- [రస్ట్ డెవలపర్‌ల కోసం ఇతీరియము](/developers/docs/programming-languages/rust/) + +### నా భాషకు మద్దతు లేకపోతే ఏమి చేయాలి {#other-lang} + +మీరు వనరులకు లింక్ చేయాలనుకుంటే లేదా అదనపు ప్రోగ్రామింగ్ భాష కోసం వర్చువల్ కమ్యూనిటీని సూచించాలనుకుంటే, మీరు [ఒక ఇష్యూని తెరవడం](https://github.com/ethereum/ethereum-org-website/issues/new/choose) ద్వారా కొత్త పేజీని అభ్యర్థించవచ్చు. + +మీరు ప్రస్తుతం మద్దతు లేని భాషను ఉపయోగించి బ్లాక్‌చెయిన్‌తో ఇంటర్‌ఫేస్ చేయడానికి కోడ్ వ్రాయాలనుకుంటే +మీరు ఇతీరియము నెట్‌వర్క్‌కు కనెక్ట్ చేయడానికి [JSON-RPC ఇంటర్‌ఫేస్‌ను](/developers/docs/apis/json-rpc/) ఉపయోగించవచ్చు. TCP/IPని ఉపయోగించగల ఏదైనా ప్రోగ్రామింగ్ +భాష ఈ ఇంటర్‌ఫేస్‌ను ఉపయోగించగలదు. diff --git a/public/content/translations/te/developers/docs/programming-languages/java/index.md b/public/content/translations/te/developers/docs/programming-languages/java/index.md new file mode 100644 index 00000000000..43b62039a19 --- /dev/null +++ b/public/content/translations/te/developers/docs/programming-languages/java/index.md @@ -0,0 +1,64 @@ +--- +title: "జావా డెవలపర్‌ల కోసం Ethereum" +description: "జావాస్క్రిప్ట్ ప్రాజెక్ట్స్ మరియు టూల్స్ తో ఈతెరియంను ఎలా నిర్మించాలో నేర్చుకోండి" +lang: te +incomplete: true +--- + +జావా-ఆధారిత ప్రాజెక్ట్‌లు మరియు టూలింగ్‌ను ఉపయోగించి Ethereum కోసం ఎలా అభివృద్ధి చేయాలో తెలుసుకోండి + +క్రిప్ట్టో కరెన్సీ మరియు బ్లాక్చైన్ టెక్నాలజీని వాడే వికేంద్రీకృత అప్లికేషన్స్ ( లేదా "డేప్స్") కి ఈతేరియంని ఉపయోగించండి. ఈ డ్డాప్స్ అప్లికేషన్స్ విశ్వసనీయమైనవి, దాని అర్థం వాటిని ఒకసారి ఏతీరియంకి డెప్లోయ్ చేసాక ఎప్పటికి ప్రోగ్రాం చేసిన విధంగానే పని చేస్తాయి. కొత్త తరహా ఫైనాన్సియల్ అప్లికేషన్స్ ని రూపొందించడానికి ఈ డ్డాప్స్ డిజిటల్ ఆస్తులను నియత్రించగలవు. ఇవి వికేంద్రీకృతమైనవి, దాని అర్థం వీటిని ఏ ఒక్క తత్వమో లేదా మనిషి నియత్రించలేవు మరియు సెన్సార్ చేయడం అసాధ్యం. + +## స్మార్ట్ కాంట్రాక్టులు మరియు సాలిడిటీ భాషతో ప్రారంభించడం {#getting-started-with-smart-contracts-and-solidity} + +**Ethereumతో Javaను అనుసంధానించడానికి మీ మొదటి అడుగులు వేయండి** + +ఇంకా స్పష్టమైన వివరాలు కావాలి? [ethereum.org/learn](/learn/) లేదా [ethereum.org/developers.](/developers/)ని తనిఖీ చేయండి. + +- [బ్లాక్ చైను వివరణ](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [స్మార్ట్ కాంట్రాక్టులను అర్థం చేసుకోవడం](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) +- [మీ మొదటి స్మార్ట్ కాంట్రాక్టును వ్రాయండి](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) +- [సాలిడిటీని కంపైల్ చేయడం మరియు డిప్లాయ్ చేయడం ఎలాగో తెలుసుకోండి](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) + +## Ethereum క్లయింట్‌లతో పనిచేయడం {#working-with-ethereum-clients} + +రెండు ప్రముఖ జావా Ethereum క్లయింట్లు అయిన [Web3J](https://github.com/web3j/web3j) మరియు Hyperledger Besuను ఎలా ఉపయోగించాలో తెలుసుకోండి + +- [Java, Eclipse మరియు Web3Jతో Ethereum క్లయింట్‌కు కనెక్ట్ అవ్వడం](https://kauri.io/article/b9eb647c47a546bc95693acc0be72546/connecting-to-an-ethereum-client-with-java-eclipse-and-web3j) +- [Java మరియు Web3jతో Ethereum ఖాతాను నిర్వహించడం](https://kauri.io/article/925d923e12c543da9a0a3e617be963b4/manage-an-ethereum-account-with-java-and-web3j) +- [మీ స్మార్ట్ కాంట్రాక్ట్ నుండి జావా వ్రాపర్‌ను రూపొందించడం](https://kauri.io/article/84475132317d4d6a84a2c42eb9348e4b/generate-a-java-wrapper-from-your-smart-contract) +- [ఒక Ethereum స్మార్ట్ కాంట్రాక్ట్‌తో పరస్పర చర్య చేయడం](https://kauri.io/article/14dc434d11ef4ee18bf7d57f079e246e/interacting-with-an-ethereum-smart-contract-in-java) +- [Ethereum స్మార్ట్ కాంట్రాక్ట్ ఈవెంట్‌ల కోసం వినడం](https://kauri.io/article/760f495423db42f988d17b8c145b0874/listening-for-ethereum-smart-contract-events-in-java) +- [Linuxతో జావా Ethereum క్లయింట్ అయిన Besu (Pantheon)ను ఉపయోగించడం](https://kauri.io/article/276dd27f1458443295eea58403fd6965/using-pantheon-the-java-ethereum-client-with-linux) +- [జావా ఇంటిగ్రేషన్ పరీక్షలలో Hyperledger Besu (Pantheon) నోడ్‌ను నడపడం](https://kauri.io/article/7dc3ecc391e54f7b8cbf4e5fa0caf780/running-a-pantheon-node-in-java-integration-tests) +- [Web3j చీట్ షీట్](https://kauri.io/web3j-cheat-sheet-\(java-ethereum\)/5dfa1ea941ac3d0001ce1d90/c) + +EVM-ఆధారిత బ్లాక్‌చెయిన్‌లతో పరస్పర చర్య చేయడానికి [ethers-kt](https://github.com/Kr1ptal/ethers-kt) అనే అసింక్, అధిక-పనితీరు గల Kotlin లైబ్రరీని ఎలా ఉపయోగించాలో తెలుసుకోండి. JVM మరియు ఆండ్రాయిడ్ ప్లాట్‌ఫారమ్‌లను లక్ష్యంగా చేసుకోవడం. + +- [ERC20 టోకెన్‌లను బదిలీ చేయడం](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/abi/TransferERC20.kt) +- [ఈవెంట్ లిజనింగ్‌తో UniswapV2 స్వాప్](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/tokenswapwitheventlistening/TokenSwapWithEventListening.kt) +- [ETH / ERC20 బ్యాలెన్స్ ట్రాకర్](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/balancetracker/BalanceTracker.kt) + +## మధ్యస్థ వ్యాసాలు {#intermediate-articles} + +- [IPFSతో జావా అప్లికేషన్‌లో నిల్వను నిర్వహించడం](https://kauri.io/article/3e8494f4f56f48c4bb77f1f925c6d926/managing-storage-in-a-java-application-with-ipfs) +- [Web3jతో జావాలో ERC20 టోకెన్‌లను నిర్వహించడం](https://kauri.io/article/d13e911bbf624108b1d5718175a5e0a0/manage-erc20-tokens-in-java-with-web3j) +- [Web3j లావాదేవీ నిర్వాహకులు](https://kauri.io/article/4cb780bb4d0846438d11885a25b6d7e7/web3j-transaction-managers) + +## అధునాతన వినియోగ నమూనాలు {#advanced-use-patterns} + +- [జావా స్మార్ట్ కాంట్రాక్ట్ డేటా కాష్‌ను నిర్మించడానికి Eventeumను ఉపయోగించడం](https://kauri.io/article/fe81ee9612eb4e5a9ab72790ef24283d/using-eventeum-to-build-a-java-smart-contract-data-cache) + +## జావా ప్రాజెక్ట్‌లు మరియు ఉపకరణాలు {#java-projects-and-tools} + +- [Web3J (Ethereum క్లయింట్‌లతో పరస్పర చర్య కోసం లైబ్రరీ)](https://github.com/web3j/web3j) +- [ethers-kt (EVM-ఆధారిత బ్లాక్‌చెయిన్‌ల కోసం అసింక్, అధిక-పనితీరు గల Kotlin/Java/Android లైబ్రరీ.)](https://github.com/Kr1ptal/ethers-kt) +- [Eventeum (ఈవెంట్ లిజనర్)](https://github.com/ConsenSys/eventeum) +- [Mahuta (IPFS దేవ్ ఉపకరణాలు)](https://github.com/ConsenSys/mahuta) + +ఇంకొన్ని వనరులు (రిసోర్సెస్) కావాలా? [ethereum.org/developers.](/developers/) చూడండి + +## జావా కమ్యూనిటీ సహాయకులు {#java-community-contributors} + +- [IO Builders](https://io.builders) +- [Kauri](https://kauri.io) diff --git a/public/content/translations/te/developers/docs/programming-languages/javascript/index.md b/public/content/translations/te/developers/docs/programming-languages/javascript/index.md new file mode 100644 index 00000000000..758b52c3342 --- /dev/null +++ b/public/content/translations/te/developers/docs/programming-languages/javascript/index.md @@ -0,0 +1,72 @@ +--- +title: "జావాస్క్రిప్ట్ డెవలపర్ల కోసం ఎథేరియం" +description: "జావాస్క్రిప్ట్-ఆధారిత ప్రాజెక్ట్‌లు మరియు టూలింగ్ ఉపయోగించి ఎథేరియం కోసం ఎలా డెవలప్ చేయాలో నేర్చుకోండి." +lang: te +--- + +ఎథేరియం ఎకోసిస్టమ్‌లో అత్యంత ప్రజాదరణ పొందిన భాషలలో జావాస్క్రిప్ట్ ఒకటి. నిజానికి, ఎథేరియంను వీలైనంత వరకు జావాస్క్రిప్ట్‌లోకి తీసుకురావడానికి అంకితమైన ఒక [టీమ్](https://github.com/ethereumjs) ఉంది. + +[స్టాక్ యొక్క అన్ని స్థాయిలలో](/developers/docs/ethereum-stack/) జావాస్క్రిప్ట్ (లేదా దానికి దగ్గరగా ఉన్నది) వ్రాయడానికి అవకాశాలు ఉన్నాయి. + +## ఎథేరియంతో ఇంటరాక్ట్ అవ్వండి {#interact-with-ethereum} + +### జావాస్క్రిప్ట్ API లైబ్రరీలు {#javascript-api-libraries} + +మీరు బ్లాక్‌చెయిన్‌ను క్వెరీ చేయడానికి, లావాదేవీలను పంపడానికి మరియు మరిన్నింటి కోసం జావాస్క్రిప్ట్ వ్రాయాలనుకుంటే, దీన్ని చేయడానికి అత్యంత అనుకూలమైన మార్గం [జావాస్క్రిప్ట్ API లైబ్రరీని](/developers/docs/apis/javascript/) ఉపయోగించడం. ఈ APIలు డెవలపర్‌లను [ఎథేరియం నెట్‌వర్క్‌లోని నోడ్‌లతో](/developers/docs/nodes-and-clients/) సులభంగా ఇంటరాక్ట్ అవ్వడానికి అనుమతిస్తాయి. + +ఎథేరియంపై స్మార్ట్ కాంట్రాక్టులతో ఇంటరాక్ట్ అవ్వడానికి మీరు ఈ లైబ్రరీలను ఉపయోగించవచ్చు, కాబట్టి ముందుగా ఉన్న కాంట్రాక్టులతో ఇంటరాక్ట్ అవ్వడానికి మీరు కేవలం జావాస్క్రిప్ట్‌ను ఉపయోగించే డాప్‌ను రూపొందించడం సాధ్యమవుతుంది. + +**తనిఖీ చేయండి** + +- [Web3.js](https://web3js.readthedocs.io) +- [Ethers.js](https://ethers.org) – _జావాస్క్రిప్ట్ మరియు టైప్‌స్క్రిప్ట్‌లో ఎథేరియం వాలెట్ అమలు మరియు యుటిలిటీలను కలిగి ఉంటుంది._ +- [viem](https://viem.sh) – _ఎథేరియం కోసం ఒక టైప్‌స్క్రిప్ట్ ఇంటర్‌ఫేస్, ఇది ఎథేరియంతో ఇంటరాక్ట్ అవ్వడానికి తక్కువ-స్థాయి స్టేట్‌లెస్ ప్రిమిటివ్‌లను అందిస్తుంది._ +- [Drift](https://ryangoree.github.io/drift/) – _web3 లైబ్రరీలలో అప్రయత్నంగా ఎథేరియం డెవలప్‌మెంట్ కోసం అంతర్నిర్మిత క్యాషింగ్, హుక్స్ మరియు టెస్ట్ మాక్‌లతో కూడిన టైప్‌స్క్రిప్ట్ మెటా-లైబ్రరీ._ + +### స్మార్ట్ కాంట్రాక్టులు {#smart-contracts} + +మీరు జావాస్క్రిప్ట్ డెవలపర్ అయి ఉండి, మీ స్వంత స్మార్ట్ కాంట్రాక్టును వ్రాయాలనుకుంటే, మీరు [Solidity](https://solidity.readthedocs.io) తో పరిచయం పెంచుకోవాలనుకోవచ్చు. ఇది అత్యంత ప్రజాదరణ పొందిన స్మార్ట్ కాంట్రాక్ట్ భాష మరియు ఇది సింటాక్టికల్‌గా జావాస్క్రిప్ట్‌ను పోలి ఉంటుంది, ఇది నేర్చుకోవడాన్ని సులభతరం చేస్తుంది. + +[స్మార్ట్ కాంట్రాక్టుల](/developers/docs/smart-contracts/) గురించి మరింత. + +## ప్రోటోకాల్‌ను అర్థం చేసుకోండి {#understand-the-protocol} + +### ఎథేరియం వర్చువల్ మషీన్ {#the-ethereum-virtual-machine} + +[ఎథేరియం వర్చువల్ మషీన్](/developers/docs/evm/) యొక్క జావాస్క్రిప్ట్ ఇంప్లిమెంటేషన్ ఉంది. ఇది తాజా ఫోర్క్ నియమాలకు మద్దతు ఇస్తుంది. ఫోర్క్ నియమాలు అంటే ప్రణాళికాబద్ధమైన అప్‌గ్రేడ్‌ల ఫలితంగా EVMకి చేసిన మార్పులను సూచిస్తాయి. + +ఇది వివిధ జావాస్క్రిప్ట్ ప్యాకేజీలుగా విభజించబడింది, వీటిని మీరు బాగా అర్థం చేసుకోవడానికి తనిఖీ చేయవచ్చు: + +- Accounts +- బ్లాక్ లు +- బ్లాక్‌చెయిన్ కూడా +- లావాదేవీలు +- ఇంకా మరిన్ని... + +ఇది "ఒక అకౌంట్ యొక్క డేటా స్ట్రక్చర్ ఏమిటి?" వంటి విషయాలను అర్థం చేసుకోవడంలో మీకు సహాయపడుతుంది. + +మీరు కోడ్ చదవడానికి ఇష్టపడితే, మా డాక్స్‌ను చదవడానికి ఈ జావాస్క్రిప్ట్ ఒక గొప్ప ప్రత్యామ్నాయం కావచ్చు. + +**EVMను తనిఖీ చేయండి** +[`@ethereumjs/evm`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/evm) + +### నోడ్లు మరియు క్లయింట్లు {#nodes-and-clients} + +ఒక Ethereumjs క్లయింట్ యాక్టివ్ డెవలప్‌మెంట్‌లో ఉంది, ఇది మీకు అర్థమయ్యే భాషలో ఎథేరియం క్లయింట్లు ఎలా పనిచేస్తాయో తెలుసుకోవడానికి మిమ్మల్ని అనుమతిస్తుంది; అదే జావాస్క్రిప్ట్! + +**క్లయింట్‌ను తనిఖీ చేయండి** +[`@ethereumjs/client`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/client) + +## ఇతర ప్రాజెక్ట్‌లు {#other-projects} + +ఎథేరియం జావాస్క్రిప్ట్ ప్రపంచంలో ఇంకా చాలా ఇతర విషయాలు జరుగుతున్నాయి, వాటిలో ఇవి ఉన్నాయి: + +- వాలెట్ యుటిలిటీల లైబ్రరీలు. +- ఎథేరియం కీలను జెనరేట్ చేయడానికి, ఇంపోర్ట్ చేయడానికి మరియు ఎక్స్‌పోర్ట్ చేయడానికి టూల్స్. +- `merkle-patricia-tree` యొక్క ఒక ఇంప్లిమెంటేషన్ – ఇది ఎథేరియం యెల్లో పేపర్‌లో వివరించబడిన ఒక డేటా స్ట్రక్చర్. + +[EthereumJS రెపో](https://github.com/ethereumjs)లో మీకు అత్యంత ఆసక్తి ఉన్న దాని గురించి తెలుసుకోండి + +## మరింత సమాచారం {#further-reading} + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ diff --git a/public/content/translations/te/developers/docs/programming-languages/python/index.md b/public/content/translations/te/developers/docs/programming-languages/python/index.md new file mode 100644 index 00000000000..58ba0de3a32 --- /dev/null +++ b/public/content/translations/te/developers/docs/programming-languages/python/index.md @@ -0,0 +1,99 @@ +--- +title: "వెబ్ డెవలపర్స్ కోసం ఇథిరియమ్" +description: "పైథాన్-ఆధారిత ప్రాజెక్ట్‌లు మరియు టూలింగ్‌ను ఉపయోగించి ఇతీరియము కోసం ఎలా అభివృద్ధి చేయాలో తెలుసుకోండి" +lang: te +incomplete: true +--- + +పైథాన్-ఆధారిత ప్రాజెక్ట్‌లు మరియు టూలింగ్‌ను ఉపయోగించి ఇతీరియము కోసం ఎలా అభివృద్ధి చేయాలో తెలుసుకోండి + +క్రిప్ట్టో కరెన్సీ మరియు బ్లాక్చైన్ టెక్నాలజీని వాడే వికేంద్రీకృత అప్లికేషన్స్ ( లేదా "డేప్స్") కి ఈతేరియంని ఉపయోగించండి. ఈ డ్డాప్స్ అప్లికేషన్స్ విశ్వసనీయమైనవి, దాని అర్థం వాటిని ఒకసారి ఏతీరియంకి డెప్లోయ్ చేసాక ఎప్పటికి ప్రోగ్రాం చేసిన విధంగానే పని చేస్తాయి. కొత్త తరహా ఫైనాన్సియల్ అప్లికేషన్స్ ని రూపొందించడానికి ఈ డ్డాప్స్ డిజిటల్ ఆస్తులను నియత్రించగలవు. ఇవి వికేంద్రీకృతమైనవి, దాని అర్థం వీటిని ఏ ఒక్క తత్వమో లేదా మనిషి నియత్రించలేవు మరియు సెన్సార్ చేయడం అసాధ్యం. + +## స్మార్ట్ కాంట్రాక్టులు మరియు సాలిడిటీ భాషతో ప్రారంభించడం {#getting-started-with-smart-contracts-and-solidity} + +**ఇతీరియముతో పైథాన్‌ను అనుసంధానించడంలో మొదటి అడుగులు వేయండి** + +ఇంకా స్పష్టమైన వివరాలు కావాలి? [ethereum.org/learn](/learn/) లేదా [ethereum.org/developers](/developers/)ని చూడండి. + +- [బ్లాక్ చైను వివరణ](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [స్మార్ట్ కాంట్రాక్టులను అర్థం చేసుకోవడం](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) +- [మీ మొదటి స్మార్ట్ కాంట్రాక్టును వ్రాయండి](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) +- [సాలిడిటీని కంపైల్ చేయడం మరియు డిప్లాయ్ చేయడం ఎలాగో తెలుసుకోండి](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) +- [బ్లాక్ చైనులో పైథాన్ స్థితి 2023 నివేదిక](https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023) + +## ప్రారంభ వ్యాసాలు {#beginner-articles} + +- [web3.py అవలోకనం](https://web3py.readthedocs.io/en/latest/overview.html) +- [ఇతీరియము పైథాన్ ఎకోసిస్టమ్ పర్యటన](https://snakecharmers.ethereum.org/python-ecosystem/) +- [ఇతీరియము కోసం ఒక (పైథాన్) డెవలపర్ గైడ్](https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/) +- [బహుమతి-విలువైనది: ఒక ఇతీరియము పైథాన్ హ్యాకథాన్ గైడ్](https://snakecharmers.ethereum.org/prize-worthy/) +- [Vyperతో స్మార్ట్ కాంట్రాక్టులకు ఒక పరిచయం](https://kauri.io/#collections/Getting%20Started/an-introduction-to-smart-contracts-with-vyper/) +- [పైథాన్ ఫ్లాస్క్ ఉపయోగించి ఇతీరియము కాంట్రాక్టును ఎలా అభివృద్ధి చేయాలి?](https://medium.com/coinmonks/how-to-develop-ethereum-contract-using-python-flask-9758fe65976e) +- [Web3.pyకి పరిచయం · పైథాన్ డెవలపర్‌ల కోసం ఇతీరియము](https://www.dappuniversity.com/articles/web3-py-intro) +- [పైథాన్ మరియు web3.py ఉపయోగించి స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌ను ఎలా కాల్ చేయాలి](https://stackoverflow.com/questions/57580702/how-to-call-a-smart-contract-function-using-python-and-web3-py) + +## మధ్యస్థ వ్యాసాలు {#intermediate-articles} + +- [web3.py యొక్క మిత్రులు: Apeకి పరిచయం](https://snakecharmers.ethereum.org/intro-to-ape/) +- [పైథాన్ ప్రోగ్రామర్‌ల కోసం డాప్ అభివృద్ధి](https://levelup.gitconnected.com/dapps-development-for-python-developers-f52b32b54f28) +- [ఒక పైథాన్ ఇతీరియము ఇంటర్‌ఫేస్‌ను సృష్టించడం: భాగం 1](https://hackernoon.com/creating-a-python-ethereum-interface-part-1-4d2e47ea0f4d) +- [పైథాన్‌లో ఇతీరియము స్మార్ట్ కాంట్రాక్టులు: ఒక సమగ్ర(మైన) గైడ్](https://hackernoon.com/ethereum-smart-contracts-in-python-a-comprehensive-ish-guide-771b03990988) + +## అధునాతన వినియోగ నమూనాలు {#advanced-use-patterns} + +- [web3.py నమూనాలు: వాస్తవ-సమయ ఈవెంట్ సబ్‌స్క్రిప్షన్‌లు](https://snakecharmers.ethereum.org/subscriptions/) +- [web3.py నమూనాలు: WebSocketProvider](https://snakecharmers.ethereum.org/websocketprovider/) +- [పైథాన్ ఉపయోగించి ఇతీరియము స్మార్ట్‌కాంట్రాక్ట్‌ను కంపైల్ చేయడం, డిప్లాయ్ చేయడం మరియు కాల్ చేయడం](https://yohanes.gultom.id/2018/11/28/compiling-deploying-and-calling-ethereum-smartcontract-using-python/) +- [Slitherతో సాలిడిటీ స్మార్ట్ కాంట్రాక్టులను విశ్లేషించండి](https://kauri.io/#collections/DevOps/analyze-solidity-smart-contracts-with-slither/#analyze-solidity-smart-contracts-with-slither) +- [బ్లాక్ చైను ఫిన్‌టెక్ ట్యుటోరియల్: పైథాన్‌తో అప్పు ఇవ్వడం మరియు తీసుకోవడం](https://blog.chain.link/blockchain-fintech-defi-tutorial-lending-borrowing-python/) + +## ఆర్కైవ్ చేయబడిన వ్యాసాలు + +- [పైథాన్ మరియు బ్రౌనీతో మీ స్వంత ERC20 టోకెన్‌ను డిప్లాయ్ చేయండి](https://betterprogramming.pub/python-blockchain-token-deployment-tutorial-create-an-erc20-77a5fd2e1a58) +- [స్మార్ట్ కాంట్రాక్టులను డిప్లాయ్ చేయడానికి బ్రౌనీ మరియు పైథాన్‌ను ఉపయోగించడం](https://dev.to/patrickalphac/using-brownie-for-to-deploy-smart-contracts-1kkp) +- [బ్రౌనీతో OpenSeaలో NFTలను సృష్టించడం](https://www.freecodecamp.org/news/how-to-make-an-nft-and-render-on-opensea-marketplace/) + +## పైథాన్ ప్రాజెక్ట్‌లు మరియు టూల్స్ {#python-projects-and-tools} + +### క్రియాశీలం: {#active} + +- [Web3.py](https://github.com/ethereum/web3.py) - _ఇతీరియముతో పరస్పరం వ్యవహరించడానికి పైథాన్ లైబ్రరీ_ +- [Vyper](https://github.com/ethereum/vyper/) - _EVM కోసం పైథానిక్ స్మార్ట్ కాంట్రాక్ట్ భాష_ +- [Ape](https://github.com/ApeWorX/ape) - _పైథానిస్టాలు, డేటా సైంటిస్టులు మరియు సెక్యూరిటీ నిపుణుల కోసం స్మార్ట్ కాంట్రాక్ట్ అభివృద్ధి టూల్_ +- [py-evm](https://github.com/ethereum/py-evm) - _ఎథేరియం వర్చువల్ మషీన్ యొక్క అమలు_ +- [eth-tester](https://github.com/ethereum/eth-tester) - _ఇతీరియము-ఆధారిత అప్లికేషన్‌లను పరీక్షించడానికి టూల్స్_ +- [eth-utils](https://github.com/ethereum/eth-utils/) - _ఇతీరియము సంబంధిత కోడ్‌బేస్‌లతో పనిచేయడానికి యుటిలిటీ ఫంక్షన్‌లు_ +- [py-solc-x](https://pypi.org/project/py-solc-x/) - _0.5.x మద్దతుతో solc సాలిడిటీ కంపైలర్ చుట్టూ పైథాన్ వ్రాపర్_ +- [pymaker](https://github.com/makerdao/pymaker) - _మేకర్ కాంట్రాక్టుల కోసం పైథాన్ API_ +- [siwe](https://github.com/signinwithethereum/siwe-py) - _పైథాన్ కోసం ఇతీరియముతో సైన్ ఇన్ చేయండి (siwe)_ +- [ఇతీరియము ఇంటిగ్రేషన్‌ల కోసం Web3 DeFi](https://github.com/tradingstrategy-ai/web3-ethereum-defi) - _ERC-20, Uniswap మరియు ఇతర ప్రముఖ ప్రాజెక్ట్‌ల కోసం సిద్ధంగా ఉన్న ఇంటిగ్రేషన్‌లతో కూడిన పైథాన్ ప్యాకేజీ_ +- [Wake](https://getwake.io) - _కాంట్రాక్టుల టెస్టింగ్, ఫజ్జింగ్, డిప్లాయ్‌మెంట్, వల్నరబిలిటీ స్కానింగ్ మరియు కోడ్ నావిగేషన్ కోసం ఆల్-ఇన్-వన్ పైథాన్ ఫ్రేమ్‌వర్క్ (లాంగ్వేజ్ సర్వర్ - [సాలిడిటీ కోసం టూల్స్](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity))_ + +### ఆర్కైవ్ చేయబడినవి / ఇకపై నిర్వహించబడనివి: {#archived--no-longer-maintained} + +- [Trinity](https://github.com/ethereum/trinity) - _ఇతీరియము పైథాన్ క్లయింట్_ +- [Mamba](https://github.com/arjunaskykok/mamba) - _Vyper భాషలో వ్రాసిన స్మార్ట్ కాంట్రాక్టులను వ్రాయడానికి, కంపైల్ చేయడానికి మరియు డిప్లాయ్ చేయడానికి ఫ్రేమ్‌వర్క్_ +- [Brownie](https://github.com/eth-brownie/brownie) - _ఇతీరియము స్మార్ట్ కాంట్రాక్టులను డిప్లాయ్ చేయడానికి, పరీక్షించడానికి మరియు వాటితో పరస్పరం వ్యవహరించడానికి పైథాన్ ఫ్రేమ్‌వర్క్_ +- [pydevp2p](https://github.com/ethereum/pydevp2p) - _ఇతీరియము P2P స్టాక్ యొక్క అమలు_ +- [py-wasm](https://github.com/ethereum/py-wasm) - _వెబ్ అసెంబ్లీ ఇంటర్‌ప్రెటర్ యొక్క పైథాన్ అమలు_ + +ఇంకొన్ని వనరులు (రిసోర్సెస్) కావాలా? [ethereum.org/developers](/developers/)ని చూడండి. + +## పైథాన్ టూలింగ్‌ను ఉపయోగించే ప్రాజెక్టులు {#projects-using-python-tooling} + +కింది ఇతీరియము-ఆధారిత ప్రాజెక్టులు ఈ పేజీలో పేర్కొన్న టూల్స్‌ను ఉపయోగిస్తాయి. సంబంధిత ఓపెన్-సోర్స్ రిపోజిటరీలు ఉదాహరణ కోడ్ మరియు ఉత్తమ పద్ధతుల కోసం మంచి రిఫరెన్స్‌గా పనిచేస్తాయి. + +- [Yearn Finance](https://yearn.finance/) మరియు [Yearn వాల్ట్ కాంట్రాక్ట్స్ రిపోజిటరీ](https://github.com/yearn/yearn-vaults) +- [Curve](https://www.curve.finance/) మరియు [Curve స్మార్ట్ కాంట్రాక్ట్స్ రిపోజిటరీ](https://github.com/curvefi/curve-contract) +- [BadgerDAO](https://badger.com/) మరియు [బ్రౌనీ టూల్‌చెయిన్‌ను ఉపయోగించే స్మార్ట్ కాంట్రాక్టులు](https://github.com/Badger-Finance/badger-system) +- [Sushi](https://sushi.com/) [వారి వెస్టింగ్ కాంట్రాక్టులను నిర్వహించడం మరియు డిప్లాయ్ చేయడంలో పైథాన్](https://github.com/sushiswap/sushi-vesting-protocols) ను ఉపయోగిస్తుంది. +- ఆల్ఫా హోమోరా కీర్తికి చెందిన [ఆల్ఫా ఫైనాన్స్](https://alphafinance.io/), [స్మార్ట్ కాంట్రాక్టులను పరీక్షించడానికి మరియు డిప్లాయ్ చేయడానికి బ్రౌనీని](https://github.com/AlphaFinanceLab/alpha-staking-contract) ఉపయోగిస్తుంది. + +## పైథాన్ కమ్యూనిటీ చర్చ {#python-community-contributors} + +- [ఇతీరియము పైథాన్ కమ్యూనిటీ డిస్కార్డ్](https://discord.gg/9zk7snTfWe) Web3.py మరియు ఇతర పైథాన్ ఫ్రేమ్‌వర్క్ చర్చ కోసం +- [Vyper డిస్కార్డ్](https://discord.gg/SdvKC79cJk) Vyper స్మార్ట్ కాంట్రాక్ట్ ప్రోగ్రామింగ్ చర్చ కోసం + +## ఇతర సమగ్ర జాబితాలు {#other-aggregated-lists} + +Vyper వికీలో [Vyper కోసం వనరుల యొక్క అద్భుతమైన జాబితా](https://github.com/vyperlang/vyper/wiki/Vyper-tools-and-resources) ఉంది \ No newline at end of file diff --git a/public/content/translations/te/developers/docs/programming-languages/ruby/index.md b/public/content/translations/te/developers/docs/programming-languages/ruby/index.md new file mode 100644 index 00000000000..d0263d5f43e --- /dev/null +++ b/public/content/translations/te/developers/docs/programming-languages/ruby/index.md @@ -0,0 +1,60 @@ +--- +title: "రూబీ డెవలపర్‌ల కోసం ఇతీరియము" +description: "రూబీ-ఆధారిత ప్రాజెక్ట్‌లు మరియు పనిముట్లను ఉపయోగించి ఇతీరియము కోసం ఎలా అభివృద్ధి చేయాలో తెలుసుకోండి." +lang: te +incomplete: false +--- + +రూబీ-ఆధారిత ప్రాజెక్ట్‌లు మరియు పనిముట్లను ఉపయోగించి ఇతీరియము కోసం ఎలా అభివృద్ధి చేయాలో తెలుసుకోండి. + +క్రిప్ట్టో కరెన్సీ మరియు బ్లాక్చైన్ టెక్నాలజీని వాడే వికేంద్రీకృత అప్లికేషన్స్ ( లేదా "డేప్స్") కి ఈతేరియంని ఉపయోగించండి. ఈ డాప్స్ నమ్మకం అవసరం లేనివిగా ఉంటాయి, అంటే వాటిని ఒకసారి ఇథిరియమ్‌లో డిప్లాయ్ చేసిన తర్వాత, అవి ఎల్లప్పుడూ ప్రోగ్రామ్ చేసిన విధంగానే అమలు అవుతాయి. కొత్త రకాల ఆర్థిక అప్లికేషన్‌లను రూపొందించడానికి అవి డిజిటల్ ఆస్తులను నియంత్రించగలవు. ఇవి వికేంద్రీకృతమైనవి, దాని అర్థం వీటిని ఏ ఒక్క తత్వమో లేదా మనిషి నియత్రించలేవు మరియు సెన్సార్ చేయడం అసాధ్యం. + +## స్మార్ట్ కాంట్రాక్టులు మరియు సాలిడిటీ భాషతో ప్రారంభించడం {#getting-started-with-smart-contracts-and-solidity} + +**రూబీని ఇతీరియముతో ఏకీకృతం చేయడానికి మీ మొదటి అడుగులు వేయండి** + +ఇంకా స్పష్టమైన వివరాలు కావాలి? [ethereum.org/learn](/learn/) లేదా [ethereum.org/developers](/developers/)ని చూడండి. + +- [బ్లాక్ చైను వివరణ](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [స్మార్ట్ కాంట్రాక్టులను అర్థం చేసుకోవడం](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) +- [మీ మొదటి స్మార్ట్ కాంట్రాక్టును వ్రాయండి](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) +- [సాలిడిటీని కంపైల్ చేయడం మరియు డిప్లాయ్ చేయడం ఎలాగో తెలుసుకోండి](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) + +## ప్రారంభ వ్యాసాలు {#beginner-articles} + +- [చివరకు ఇథిరియమ్ ఖాతాలను అర్థం చేసుకోవడం](https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe) +- [చివరగా మెటామాస్క్‌తో రైల్స్ వినియోగదారులను ప్రామాణీకరించడం](https://dev.to/q9/finally-authenticating-rails-users-with-metamask-3fj) +- [రూబీని ఉపయోగించి ఇతీరియము నెట్‌వర్క్‌కు ఎలా కనెక్ట్ చేయాలి](https://www.quicknode.com/guides/web3-sdks/how-to-connect-to-the-ethereum-network-using-ruby) +- [రూబీలో కొత్త ఇతీరియము చిరునామాను ఎలా రూపొందించాలి](https://www.quicknode.com/guides/web3-sdks/how-to-generate-a-new-ethereum-address-in-ruby) + +## మధ్యస్థ వ్యాసాలు {#intermediate-articles} + +- [రూబీతో బ్లాక్‌చెయిన్ యాప్](https://www.nopio.com/blog/blockchain-app-ruby/) +- [స్మార్ట్ కాంట్రాక్ట్‌ను అమలు చేయడానికి ఇతీరియముకు కనెక్ట్ చేయబడిన రూబీని ఉపయోగించండి](https://titanwolf.org/Network/Articles/Article?AID=87285822-9b25-49d5-ba2a-7ad95fff7ef9) + +## రూబీ ప్రాజెక్ట్‌లు మరియు ఉపకరణాలు {#ruby-projects-and-tools} + +### యాక్టివ్ {#active} + +- [eth.rb](https://github.com/q9f/eth.rb) - _ఇతీరియము ఖాతాలు, సందేశాలు మరియు లావాదేవీలను నిర్వహించడానికి రూబీ లైబ్రరీ మరియు RPC-క్లయింట్_ +- [keccak.rb](https://github.com/q9f/keccak.rb) - _ఇతీరియము ద్వారా ఉపయోగించబడే కెకాక్ (SHA3) హాష్_ +- [siwe-ruby](https://github.com/signinwithethereum/siwe-ruby) - _Sign-In with Ethereum యొక్క రూబీ ఇంప్లిమెంటేషన్_ +- [siwe-rails](https://github.com/signinwithethereum/siwe-rails) - _SIWE లోకల్ సైన్ ఇన్ రూట్‌లను జోడించే రైల్స్ జెమ్_ +- [siwe-rails-examples](https://github.com/signinwithethereum/siwe-rails-examples) - _కస్టమ్ కంట్రోలర్‌తో రూబీ ఆన్ రైల్స్‌ను ఉపయోగించే SIWE ఉదాహరణ_ +- [omniauth-siwe](https://github.com/signinwithethereum/omniauth-siwe) - _Sign In With Ethereum (SIWE) కోసం ఓమ్నియాథ్ వ్యూహం_ +- [omniauth-nft](https://github.com/valthon/omniauth-nft) - _NFT యాజమాన్యం ద్వారా ప్రామాణీకరించడం కోసం ఓమ్నియాథ్ వ్యూహం_ +- [ethereum-on-rails](https://github.com/q9f/ethereum-on-rails) - _మెటామాస్క్‌ను రూబీ ఆన్ రైల్స్‌కు కనెక్ట్ చేయడానికి అనుమతించే ఇతీరియము ఆన్ రైల్స్ టెంప్లేట్_ + +### ఆర్కైవ్ చేయబడింది / ఇకపై నిర్వహించబడదు {#archived--no-longer-maintained} + +- [web3-eth](https://github.com/spikewilliams/vtada-ethereum) - _రూబీతో ఇతీరియము నోడ్ యొక్క RPC పద్ధతులను పిలవడం_ +- [ethereum_tree](https://github.com/longhoangwkm/ethereum_tree) - _BIP32 ప్రమాణం ప్రకారం హైరార్కికల్ డిటర్మినిస్టిక్ వాలెట్ నుండి ETH చిరునామాలను రూపొందించడానికి రూబీ లైబ్రరీ_ +- [etherlite](https://github.com/budacom/etherlite) - _రూబీ ఆన్ రైల్స్ కోసం ఇతీరియము ఇంటిగ్రేషన్_ +- [ethereum.rb](https://github.com/EthWorks/ethereum.rb) - _లావాదేవీలను పంపడం, కాంట్రాక్ట్‌లను సృష్టించడం మరియు పరస్పర చర్య చేయడం అలాగే ఇతీరియము నోడ్‌తో పనిచేయడానికి ఉపయోగకరమైన టూల్‌కిట్‌గా JSON-RPC ఇంటర్‌ఫేస్‌ను ఉపయోగించే రూబీ ఇతీరియము క్లయింట్_ +- [omniauth-ethereum.rb](https://github.com/q9f/omniauth-ethereum.rb) - _ఓమ్నియాథ్ కోసం ఇతీరియము ప్రొవైడర్ వ్యూహాన్ని అమలు చేస్తుంది_ + +ఇంకొన్ని వనరులు (రిసోర్సెస్) కావాలా? [మా డెవలపర్‌ల హోమ్‌ని](/developers/) చూడండి. + +## రూబీ కమ్యూనిటీ సహకారులు {#ruby-community-contributors} + +[ఇతీరియము రూబీ టెలిగ్రామ్ గ్రూప్](https://t.me/ruby_eth) వేగంగా అభివృద్ధి చెందుతున్న కమ్యూనిటీకి హోస్ట్‌గా ఉంది మరియు పైన పేర్కొన్న ఏవైనా ప్రాజెక్ట్‌లు మరియు సంబంధిత అంశాలపై చర్చల కోసం అంకితమైన వనరు. diff --git a/public/content/translations/te/developers/docs/programming-languages/rust/index.md b/public/content/translations/te/developers/docs/programming-languages/rust/index.md new file mode 100644 index 00000000000..32b3aff397b --- /dev/null +++ b/public/content/translations/te/developers/docs/programming-languages/rust/index.md @@ -0,0 +1,65 @@ +--- +title: "రస్ట్ డెవలపర్‌ల కోసం ఇతీరియము" +description: "రస్ట్-ఆధారిత ప్రాజెక్ట్‌లు మరియు పనిముట్లు ఉపయోగించి ఇతీరియము కోసం ఎలా అభివృద్ధి చేయాలో నేర్చుకోండి" +lang: te +incomplete: true +--- + +రస్ట్-ఆధారిత ప్రాజెక్ట్‌లు మరియు పనిముట్లు ఉపయోగించి ఇతీరియము కోసం ఎలా అభివృద్ధి చేయాలో నేర్చుకోండి + +క్రిప్ట్టో కరెన్సీ మరియు బ్లాక్చైన్ టెక్నాలజీని వాడే వికేంద్రీకృత అప్లికేషన్స్ ( లేదా "డేప్స్") కి ఈతేరియంని ఉపయోగించండి. ఈ డ్డాప్స్ అప్లికేషన్స్ విశ్వసనీయమైనవి, దాని అర్థం వాటిని ఒకసారి ఏతీరియంకి డెప్లోయ్ చేసాక ఎప్పటికి ప్రోగ్రాం చేసిన విధంగానే పని చేస్తాయి. కొత్త తరహా ఫైనాన్సియల్ అప్లికేషన్స్ ని రూపొందించడానికి ఈ డ్డాప్స్ డిజిటల్ ఆస్తులను నియత్రించగలవు. ఇవి వికేంద్రీకృతమైనవి, దాని అర్థం వీటిని ఏ ఒక్క తత్వమో లేదా మనిషి నియత్రించలేవు మరియు సెన్సార్ చేయడం అసాధ్యం. + +## స్మార్ట్ కాంట్రాక్టులు మరియు సాలిడిటీ భాషతో ప్రారంభించడం {#getting-started-with-smart-contracts-and-solidity} + +**రస్ట్‌ను ఇతీరియముతో ఏకీకృతం చేయడానికి మీ మొదటి అడుగులు వేయండి** + +ఇంకా స్పష్టమైన వివరాలు కావాలి? [ethereum.org/learn](/learn/) లేదా [ethereum.org/developers](/developers/)ని చూడండి. + +- [బ్లాక్ చైను వివరణ](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [స్మార్ట్ కాంట్రాక్టులను అర్థం చేసుకోవడం](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) +- [మీ మొదటి స్మార్ట్ కాంట్రాక్టును వ్రాయండి](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) +- [సాలిడిటీని కంపైల్ చేయడం మరియు డిప్లాయ్ చేయడం ఎలాగో తెలుసుకోండి](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) + +## ప్రారంభ వ్యాసాలు {#beginner-articles} + +- [రస్ట్ ఇతీరియము క్లయింట్](https://openethereum.github.io/) \* **OpenEthereum [విరమించబడింది](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) అని గమనించండి మరియు ఇకపై నిర్వహించబడటం లేదు.** దానిని జాగ్రత్తగా వాడండి మరియు ప్రాధాన్యంగా మరొక క్లయింట్ అమలుకు మారండి. +- [రస్ట్ ఉపయోగించి ఇతీరియముకు లావాదేవీని పంపడం](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/sending-ethereum-transactions-with-rust/) +- [కోవన్ కోసం రస్ట్ వాసమ్ (Wasm)లో కాంట్రాక్టులను ఎలా వ్రాయాలి అనే దానిపై దశలవారీ ట్యుటోరియల్](https://github.com/paritytech/pwasm-tutorial) + +## మధ్యస్థ వ్యాసాలు {#intermediate-articles} + +## అధునాతన వినియోగ నమూనాలు {#advanced-use-patterns} + +- [ఇతీరియము వంటి నెట్‌వర్క్‌తో పరస్పర చర్య చేయడానికి pwasm_ethereum ఎక్స్‌టర్న్స్ లైబ్రరీ](https://github.com/openethereum/pwasm-ethereum) + +- [జావాస్క్రిప్ట్ మరియు రస్ట్ ఉపయోగించి వికేంద్రీకృత చాట్‌ను నిర్మించండి](https://medium.com/perlin-network/build-a-decentralized-chat-using-javascript-rust-webassembly-c775f8484b52) + +- [Vue.js & రస్ట్ ఉపయోగించి వికేంద్రీకృత టోడో యాప్‌ను నిర్మించండి](https://medium.com/@jjmace01/build-a-decentralized-todo-app-using-vue-js-rust-webassembly-5381a1895beb) + +- [రస్ట్‌లో బ్లాక్‌చైన్‌ను నిర్మించండి](https://blog.logrocket.com/how-to-build-a-blockchain-in-rust/) + +## రస్ట్ ప్రాజెక్ట్‌లు మరియు ఉపకరణాలు {#rust-projects-and-tools} + +- [pwasm-ethereum](https://github.com/paritytech/pwasm-ethereum) - _ఇతీరియము వంటి నెట్‌వర్క్‌తో పరస్పర చర్య చేయడానికి ఎక్స్‌టర్న్‌ల సేకరణ_ +- [Lighthouse](https://github.com/sigp/lighthouse) - _వేగవంతమైన ఇతీరియము ఏకాభిప్రాయం లేయర్ క్లయింట్_ +- [Ethereum WebAssembly](https://ewasm.readthedocs.io/en/mkdocs/) - _వెబ్అసెంబ్లీ యొక్క ఒక నిర్ధారిత ఉపసమితిని ఉపయోగించి ఇతీరియము స్మార్ట్ కాంట్రాక్ట్ ఎగ్జిక్యూషన్ లేయర్ యొక్క ప్రతిపాదిత పునఃరూపకల్పన_ +- [oasis_std](https://docs.rs/oasis-std/latest/oasis_std/index.html) - _OASIS API సూచన_ +- [Solaris](https://github.com/paritytech/sol-rs) - _స్థానిక పారిటీ క్లయింట్ EVMని ఉపయోగించి సొలిడిటీ స్మార్ట్ కాంట్రాక్టుల యూనిట్ టెస్ట్ హార్నెస్._ +- [SputnikVM](https://github.com/rust-blockchain/evm) - _రస్ట్ ఇతీరియము వర్చువల్ మెషీన్ అమలు_ +- [Wavelet](https://wavelet.perlin.net/docs/smart-contracts) - _రస్ట్‌లో వేవ్‌లెట్ స్మార్ట్ కాంట్రాక్ట్_ +- [Foundry](https://github.com/foundry-rs/foundry) - _ఇతీరియము అప్లికేషన్ అభివృద్ధి కోసం టూల్‌కిట్_ +- [Alloy](https://alloy.rs) - _ఇతీరియము మరియు ఇతర EVM-ఆధారిత చైన్‌లతో పరస్పర చర్య చేయడానికి అధిక-పనితీరు గల, చక్కగా పరీక్షించబడిన & డాక్యుమెంట్ చేయబడిన లైబ్రరీలు._ +- [Ethers_rs](https://github.com/gakonst/ethers-rs) - _ఇతీరియము లైబ్రరీ మరియు వాలెట్ అమలు_ +- [SewUp](https://github.com/second-state/SewUp) - _రస్ట్‌తో మీ ఇతీరియము వెబ్అసెంబ్లీ కాంట్రాక్ట్‌ను నిర్మించడంలో మీకు సహాయపడటానికి ఒక లైబ్రరీ, మరియు ఒక సాధారణ బ్యాకెండ్‌లో అభివృద్ధి చేసినట్లుగానే_ +- [Substreams](https://github.com/streamingfast/substreams) - _సమాంతర బ్లాక్‌చైన్ డేటా ఇండెక్సింగ్ టెక్నాలజీ_ +- [Reth](https://github.com/paradigmxyz/reth) Reth (రస్ట్ ఇతీరియముకు సంక్షిప్త రూపం) ఒక కొత్త ఇతీరియము పూర్తి-నోడ్ అమలు +- [Awesome Ethereum Rust](https://github.com/Vid201/awesome-ethereum-rust) - _రస్ట్‌లో వ్రాయబడిన ఇతీరియము పర్యావరణ వ్యవస్థలోని ప్రాజెక్ట్‌ల యొక్క క్యూరేటెడ్ సేకరణ_ + +ఇంకొన్ని వనరులు (రిసోర్సెస్) కావాలా? [ethereum.org/developers.](/developers/) చూడండి + +## రస్ట్ కమ్యూనిటీ కంట్రిబ్యూటర్లు {#rust-community-contributors} + +- [ఇతీరియము WebAssembly](https://gitter.im/ewasm/Lobby) +- [Oasis Gitter](https://gitter.im/Oasis-official/Lobby) +- [Parity Gitter](https://gitter.im/paritytech/parity) +- [Enigma](https://discord.gg/SJK32GY) diff --git a/public/content/translations/te/developers/docs/scaling/index.md b/public/content/translations/te/developers/docs/scaling/index.md new file mode 100644 index 00000000000..b12e86cfaa8 --- /dev/null +++ b/public/content/translations/te/developers/docs/scaling/index.md @@ -0,0 +1,113 @@ +--- +title: "స్కేలింగ్" +description: "Ethereum కమ్యూనిటీ ద్వారా ప్రస్తుతం అభివృద్ధి చేయబడుతున్న విభిన్న స్కేలింగ్ ఎంపికలకు పరిచయం." +lang: te +sidebarDepth: 3 +--- + +## స్కేలింగ్ అవలోకనం {#scaling-overview} + +Ethereumను ఉపయోగించే వ్యక్తుల సంఖ్య పెరిగినందున, బ్లాక్‌చెయిన్ నిర్దిష్ట సామర్థ్య పరిమితులను చేరుకుంది. ఇది నెట్‌వర్క్‌ను ఉపయోగించే ఖర్చును పెంచింది, "స్కేలింగ్ పరిష్కారాల" అవసరాన్ని సృష్టించింది. ఒకే విధమైన లక్ష్యాలను సాధించడానికి విభిన్న విధానాలను తీసుకునే అనేక పరిష్కారాలు పరిశోధించబడుతున్నాయి, పరీక్షించబడుతున్నాయి మరియు అమలు చేయబడుతున్నాయి. + +స్కేలబిలిటీ యొక్క ప్రధాన లక్ష్యం వికేంద్రీకరణ లేదా భద్రతను త్యాగం చేయకుండా లావాదేవీ వేగాన్ని (వేగవంతమైన తుది నిర్ణయం) మరియు లావాదేవీ నిర్గమాంశను (సెకనుకు అధిక సంఖ్యలో లావాదేవీలు) పెంచడం. లేయర్ 1 Ethereum బ్లాక్‌చెయిన్‌లో, అధిక డిమాండ్ నెమ్మదైన లావాదేవీలకు మరియు ఆచరణ సాధ్యం కాని [గ్యాస్ ధరలకు](/developers/docs/gas/) దారితీస్తుంది. వేగం మరియు నిర్గమాంశ పరంగా నెట్‌వర్క్ సామర్థ్యాన్ని పెంచడం Ethereum యొక్క అర్థవంతమైన మరియు భారీ స్వీకరణకు ప్రాథమికమైనది. + +వేగం మరియు నిర్గమాంశ ముఖ్యమైనవి అయినప్పటికీ, ఈ లక్ష్యాలను సాధించే స్కేలింగ్ పరిష్కారాలు వికేంద్రీకృతంగా మరియు సురక్షితంగా ఉండటం చాలా అవసరం. కేంద్రీకృత మరియు అసురక్షిత కంప్యూటింగ్ శక్తి వైపు పురోగతిని నిరోధించడంలో నోడ్ ఆపరేటర్లకు ప్రవేశ అడ్డంకిని తక్కువగా ఉంచడం చాలా ముఖ్యం. + +భావనాత్మకంగా మేము మొదట స్కేలింగ్‌ను ఆన్‌చైన్ స్కేలింగ్ లేదా ఆఫ్‌చైన్ స్కేలింగ్ అని వర్గీకరిస్తాము. + +## అవసరాలు {#prerequisites} + +మీకు అన్ని పునాది అంశాలపై మంచి అవగాహన ఉండాలి. టెక్నాలజీ తక్కువగా పరీక్షించబడినందున స్కేలింగ్ పరిష్కారాలను అమలు చేయడం అధునాతనమైనది మరియు పరిశోధించబడుతూ, అభివృద్ధి చేయబడుతూనే ఉంది. + +## ఆన్‌చైన్ స్కేలింగ్ {#onchain-scaling} + +ఆన్‌చైన్ స్కేలింగ్‌కు Ethereum ప్రోటోకాల్ (లేయర్ 1 [మెయిన్‌నెట్](/glossary/#mainnet))లో మార్పులు అవసరం. చాలా కాలం పాటు, బ్లాక్‌చెయిన్‌ను షార్డింగ్ చేయడం Ethereumను స్కేల్ చేస్తుందని ఆశించారు. ఇది వాలిడేటర్‌ల ఉపసమితులచే ధృవీకరించబడటానికి బ్లాక్‌చెయిన్‌ను వివిక్త భాగాలుగా (షార్డ్‌లు) విభజించడం కలిగి ఉంటుంది. అయితే, లేయర్-2 రోలప్‌ల ద్వారా స్కేలింగ్ చేయడం ప్రాథమిక స్కేలింగ్ టెక్నిక్‌గా మారింది. వినియోగదారులకు రోలప్‌లను చౌకగా చేయడానికి ప్రత్యేకంగా రూపొందించబడిన Ethereum బ్లాక్‌లకు జోడించబడిన కొత్త చౌకైన డేటా రూపం ద్వారా దీనికి మద్దతు ఉంది. + +### షార్డింగ్ {#sharding} + +షార్డింగ్ అనేది డేటాబేస్‌ను విభజించే ప్రక్రియ. వాలిడేటర్‌ల ఉపసమితులు మొత్తం Ethereumను ట్రాక్ చేయడానికి బదులుగా వ్యక్తిగత షార్డ్‌లకు బాధ్యత వహిస్తాయి. షార్డింగ్ చాలా కాలంగా Ethereum [రోడ్‌మ్యాప్](/roadmap/)లో ఉంది మరియు ఒకప్పుడు ప్రూఫ్-ఆఫ్-స్టేక్‌కు ది మెర్జ్‌కు ముందు పంపించాలని ఉద్దేశించబడింది. అయినప్పటికీ, [లేయర్ 2 రోలప్‌ల](#layer-2-scaling) యొక్క వేగవంతమైన అభివృద్ధి మరియు [డాంక్‌షార్డింగ్](/roadmap/danksharding) యొక్క ఆవిష్కరణ (వాలిడేటర్‌లచే చాలా సమర్థవంతంగా ధృవీకరించబడగల Ethereum బ్లాక్‌లకు రోలప్ డేటా యొక్క బ్లాబ్‌లను జోడించడం) Ethereum కమ్యూనిటీని షార్డింగ్ ద్వారా స్కేలింగ్ చేయడానికి బదులుగా రోలప్-సెంట్రిక్ స్కేలింగ్‌కు అనుకూలంగా మార్చింది. ఇది Ethereum యొక్క ఏకాభిప్రాయ తర్కాన్ని సరళంగా ఉంచడానికి కూడా సహాయపడుతుంది. + +## ఆఫ్‌చైన్ స్కేలింగ్ {#offchain-scaling} + +ఆఫ్‌చైన్ పరిష్కారాలు లేయర్ 1 మెయిన్‌నెట్ నుండి విడిగా అమలు చేయబడతాయి - వాటికి ఇప్పటికే ఉన్న Ethereum ప్రోటోకాల్‌లో ఎటువంటి మార్పులు అవసరం లేదు. "లేయర్ 2" పరిష్కారాలు అని పిలువబడే కొన్ని పరిష్కారాలు, [ఆశాజనక రోలప్‌లు](/developers/docs/scaling/optimistic-rollups/), [జీరో-నాలెడ్జ్ రోలప్‌లు](/developers/docs/scaling/zk-rollups/) లేదా [స్టేట్ ఛానెల్‌లు](/developers/docs/scaling/state-channels/) వంటి వాటి భద్రతను నేరుగా లేయర్ 1 Ethereum ఏకాభిప్రాయం నుండి పొందుతాయి. ఇతర పరిష్కారాలలో [సైడ్‌చెయిన్‌లు](#sidechains), [వాలిడియమ్‌లు](#validium), లేదా [ప్లాస్మా చెయిన్‌లు](#plasma) వంటి మెయిన్‌నెట్ నుండి విడిగా వాటి భద్రతను పొందే వివిధ రూపాల్లో కొత్త చెయిన్‌లను సృష్టించడం ఉంటుంది. ఈ పరిష్కారాలు మెయిన్‌నెట్‌తో కమ్యూనికేట్ చేస్తాయి కానీ వివిధ లక్ష్యాలను సాధించడానికి వాటి భద్రతను విభిన్నంగా పొందుతాయి. + +### లేయర్ 2 స్కేలింగ్ {#layer-2-scaling} + +ఈ ఆఫ్‌చైన్ పరిష్కారాల వర్గం దాని భద్రతను మెయిన్‌నెట్ Ethereum నుండి పొందుతుంది. + +లేయర్ 2 అనేది మెయిన్‌నెట్ యొక్క బలమైన వికేంద్రీకృత భద్రతా నమూనాను సద్వినియోగం చేసుకుంటూ, Ethereum మెయిన్‌నెట్ (లేయర్ 1) నుండి లావాదేవీలను నిర్వహించడం ద్వారా మీ అప్లికేషన్‌ను స్కేల్ చేయడానికి సహాయపడటానికి రూపొందించిన పరిష్కారాల కోసం ఒక సామూహిక పదం. నెట్‌వర్క్ బిజీగా ఉన్నప్పుడు లావాదేవీ వేగం దెబ్బతింటుంది, ఇది కొన్ని రకాల డాప్స్ కోసం వినియోగదారు అనుభవాన్ని పేలవంగా చేస్తుంది. మరియు నెట్‌వర్క్ బిజీగా మారేకొద్దీ, లావాదేవీ పంపేవారు ఒకరినొకరు అధిగమించాలని లక్ష్యంగా పెట్టుకోవడంతో గ్యాస్ ధరలు పెరుగుతాయి. ఇది Ethereum వాడకాన్ని చాలా ఖరీదైనదిగా చేస్తుంది. + +చాలా లేయర్ 2 పరిష్కారాలు సర్వర్ లేదా సర్వర్‌ల సమూహం చుట్టూ కేంద్రీకృతమై ఉంటాయి, వీటిలో ప్రతి ఒక్కటి నోడ్, వాలిడేటర్, ఆపరేటర్, సీక్వెన్సర్, బ్లాక్ ప్రొడ్యూసర్ లేదా ఇలాంటి పదం అని పిలువబడవచ్చు. అమలును బట్టి, ఈ లేయర్ 2 నోడ్‌లను వాటిని ఉపయోగించే వ్యక్తులు, వ్యాపారాలు లేదా సంస్థలు లేదా 3వ పార్టీ ఆపరేటర్ లేదా పెద్ద సంఖ్యలో వ్యక్తులు (మెయిన్‌నెట్ మాదిరిగా) అమలు చేయవచ్చు. సాధారణంగా చెప్పాలంటే, లావాదేవీలు నేరుగా లేయర్ 1 (మెయిన్‌నెట్)కు సమర్పించడానికి బదులుగా ఈ లేయర్ 2 నోడ్‌లకు సమర్పించబడతాయి. కొన్ని పరిష్కారాల కోసం, లేయర్ 2 ఉదాహరణ వాటిని లేయర్ 1కి ఎంకరేజ్ చేయడానికి ముందు వాటిని సమూహాలుగా బ్యాచ్ చేస్తుంది, ఆ తర్వాత అవి లేయర్ 1 ద్వారా సురక్షితం చేయబడతాయి మరియు మార్చబడవు. ఇది ఎలా చేయబడుతుందనే వివరాలు వివిధ లేయర్ 2 టెక్నాలజీలు మరియు అమలుల మధ్య గణనీయంగా మారుతూ ఉంటాయి. + +ఒక నిర్దిష్ట లేయర్ 2 ఉదాహరణ అనేక అప్లికేషన్‌ల ద్వారా తెరవబడి, భాగస్వామ్యం చేయబడవచ్చు లేదా ఒక ప్రాజెక్ట్ ద్వారా అమలు చేయబడి, వారి అప్లికేషన్‌కు మాత్రమే మద్దతు ఇవ్వడానికి అంకితం చేయబడవచ్చు. + +#### లేయర్ 2 ఎందుకు అవసరం? {#why-is-layer-2-needed} + +- సెకనుకు పెరిగిన లావాదేవీలు వినియోగదారు అనుభవాన్ని బాగా మెరుగుపరుస్తాయి మరియు మెయిన్‌నెట్ Ethereumలో నెట్‌వర్క్ రద్దీని తగ్గిస్తాయి. +- లావాదేవీలు మెయిన్‌నెట్ Ethereumకు ఒకే లావాదేవీగా చుట్టబడతాయి, ఇది వినియోగదారులకు గ్యాస్ ఫీజులను తగ్గిస్తుంది మరియు Ethereumను ప్రతిచోటా ప్రజలకు మరింత కలుపుకొనిపోయేలా మరియు అందుబాటులోకి తెస్తుంది. +- స్కేలబిలిటీకి సంబంధించిన ఏవైనా నవీకరణలు వికేంద్రీకరణ లేదా భద్రత వ్యయంతో ఉండకూడదు – లేయర్ 2 Ethereum పైన నిర్మించబడింది. +- అప్లికేషన్-నిర్దిష్ట లేయర్ 2 నెట్‌వర్క్‌లు ఉన్నాయి, ఇవి పెద్ద ఎత్తున ఆస్తులతో పనిచేసేటప్పుడు వాటి స్వంత సామర్థ్యాల సమితిని తీసుకువస్తాయి. + +[లేయర్ 2 గురించి మరింత](/layer-2/). + +#### రోలప్‌లు {#rollups} + +రోలప్‌లు లేయర్ 1 వెలుపల లావాదేవీల అమలును నిర్వహిస్తాయి మరియు ఆ తర్వాత డేటా లేయర్ 1కు పోస్ట్ చేయబడుతుంది, అక్కడ ఏకాభిప్రాయం కుదురుతుంది. లావాదేవీ డేటా లేయర్ 1 బ్లాక్‌లలో చేర్చబడినందున, ఇది రోలప్‌లను స్థానిక Ethereum భద్రత ద్వారా సురక్షితం చేయడానికి అనుమతిస్తుంది. + +విభిన్న భద్రతా నమూనాలతో రెండు రకాల రోలప్‌లు ఉన్నాయి: + +- **ఆశాజనక రోలప్‌లు**: లావాదేవీలు డిఫాల్ట్‌గా చెల్లుబాటు అవుతాయని ఊహిస్తుంది మరియు సవాలు ఎదురైనప్పుడు మాత్రమే [**మోసం రుజువు**](/glossary/#fraud-proof) ద్వారా గణనను అమలు చేస్తుంది. [ఆశాజనక రోలప్‌ల గురించి మరింత](/developers/docs/scaling/optimistic-rollups/). +- **జీరో-నాలెడ్జ్ రోలప్‌లు**: ఆఫ్‌చైన్‌లో గణనను అమలు చేస్తుంది మరియు చైన్‌కు [**చెల్లుబాటు రుజువు**](/glossary/#validity-proof)ను సమర్పిస్తుంది. [జీరో-నాలెడ్జ్ రోలప్‌ల గురించి మరింత](/developers/docs/scaling/zk-rollups/). + +#### స్టేట్ ఛానెల్‌లు {#channels} + +స్టేట్ ఛానెల్‌లు మల్టీసిగ్ కాంట్రాక్టులను ఉపయోగించి పాల్గొనేవారిని త్వరగా మరియు స్వేచ్ఛగా ఆఫ్‌చైన్‌లో లావాదేవీలు చేయడానికి, ఆపై మెయిన్‌నెట్‌తో తుది నిర్ణయాన్ని పరిష్కరించడానికి వీలు కల్పిస్తాయి. ఇది నెట్‌వర్క్ రద్దీ, ఫీజులు మరియు ఆలస్యాలను తగ్గిస్తుంది. ప్రస్తుతం రెండు రకాల ఛానెల్‌లు స్టేట్ ఛానెల్‌లు మరియు చెల్లింపు ఛానెల్‌లు. + +[స్టేట్ ఛానెల్‌ల](/developers/docs/scaling/state-channels/) గురించి మరింత తెలుసుకోండి. + +### సైడ్‌చెయిన్‌లు {#sidechains} + +సైడ్చైన్ అనేది మెయిన్‌నెట్‌కు సమాంతరంగా నడిచే స్వతంత్ర EVM-అనుకూల బ్లాక్‌చెయిన్. ఇవి రెండు-మార్గాల వంతెనల ద్వారా Ethereumతో అనుకూలంగా ఉంటాయి మరియు వాటి స్వంత ఎంచుకున్న ఏకాభిప్రాయం మరియు బ్లాక్ పారామితుల నియమాల ప్రకారం నడుస్తాయి. + +[సైడ్‌చెయిన్‌ల](/developers/docs/scaling/sidechains/) గురించి మరింత తెలుసుకోండి. + +### ప్లాస్మా {#plasma} + +ప్లాస్మా చైన్ అనేది ప్రధాన Ethereum చైన్‌కు ఎంకరేజ్ చేయబడిన ఒక ప్రత్యేక బ్లాక్‌చెయిన్ మరియు వివాదాలను పరిష్కరించడానికి మోసం రుజువులను (ఉదాహరణకు [ఆశాజనక రోలప్‌లు](/developers/docs/scaling/optimistic-rollups/)) ఉపయోగిస్తుంది. + +[ప్లాస్మా](/developers/docs/scaling/plasma/) గురించి మరింత తెలుసుకోండి. + +### వాలిడియం {#validium} + +ఒక వాలిడియం చైన్ జీరో-నాలెడ్జ్ రోలప్‌ల వంటి చెల్లుబాటు రుజువులను ఉపయోగిస్తుంది కానీ డేటా ప్రధాన లేయర్ 1 Ethereum చైన్‌లో నిల్వ చేయబడదు. ఇది ప్రతి వాలిడియం చైన్‌కు సెకనుకు 10k లావాదేవీలకు దారితీయవచ్చు మరియు బహుళ చైన్‌లు సమాంతరంగా నడపబడవచ్చు. + +[వాలిడియం](/developers/docs/scaling/validium/) గురించి మరింత తెలుసుకోండి. + +## అంత ఎక్కువ స్కేలింగ్ పరిష్కారాలు ఎందుకు అవసరం? {#why-do-we-need-these} + +- బహుళ పరిష్కారాలు నెట్‌వర్క్‌లోని ఏ ఒక్క భాగంలోనైనా మొత్తం రద్దీని తగ్గించడంలో సహాయపడతాయి మరియు వైఫల్యం యొక్క ఒకే పాయింట్‌లను కూడా నివారిస్తాయి. +- మొత్తం దాని భాగాల మొత్తం కంటే గొప్పది. విభిన్న పరిష్కారాలు సామరస్యంగా ఉనికిలో ఉండి పని చేయగలవు, భవిష్యత్ లావాదేవీల వేగం మరియు నిర్గమాంశపై ఘాతాంక ప్రభావాన్ని అనుమతిస్తాయి. +- అన్ని పరిష్కారాలకు నేరుగా Ethereum ఏకాభిప్రాయ అల్గోరిథంను ఉపయోగించడం అవసరం లేదు, మరియు ప్రత్యామ్నాయాలు ఇతరత్రా పొందడానికి కష్టంగా ఉండే ప్రయోజనాలను అందించగలవు. + +## దృశ్య అభ్యాసకులా? {#visual-learner} + + + +_గమనిక, వీడియోలోని వివరణ అన్ని ఆఫ్‌చైన్ స్కేలింగ్ పరిష్కారాలను సూచించడానికి "లేయర్ 2" అనే పదాన్ని ఉపయోగిస్తుంది, అయితే మేము లేయర్ 1 మెయిన్‌నెట్ ఏకాభిప్రాయం ద్వారా దాని భద్రతను పొందే ఆఫ్‌చైన్ పరిష్కారంగా "లేయర్ 2"ని వేరు చేస్తాము._ + + + +## మరింత సమాచారం {#further-reading} + +- [రోలప్-సెంట్రిక్ Ethereum రోడ్‌మ్యాప్](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) _విటాలిక్ బుటెరిన్_ +- [Ethereum కోసం లేయర్ 2 స్కేలింగ్ పరిష్కారాలపై తాజా విశ్లేషణలు](https://www.l2beat.com/) +- [Ethereum లేయర్ 2 స్కేలింగ్ పరిష్కారాలను మూల్యాంకనం చేయడం: ఒక పోలిక ఫ్రేమ్‌వర్క్](https://medium.com/matter-labs/evaluating-ethereum-l2-scaling-solutions-a-comparison-framework-b6b2f410f955) +- [రోలప్‌లకు అసంపూర్ణ మార్గదర్శి](https://vitalik.eth.limo/general/2021/01/05/rollup.html) +- [Ethereum-ఆధారిత ZK-రోలప్‌లు: ప్రపంచ విజేతలు](https://hackmd.io/@canti/rkUT0BD8K) +- [ఆశాజనక రోలప్‌లు vs ZK రోలప్‌లు](https://limechain.tech/blog/optimistic-rollups-vs-zk-rollups/) +- [అధిక స్కేలబిలిటీ కోసం రోలప్‌లు + డేటా షార్డ్‌లు ఎందుకు ఏకైక స్థిరమైన పరిష్కారం](https://polynya.medium.com/why-rollups-data-shards-are-the-only-sustainable-solution-for-high-scalability-c9aabd6fbb48) +- [ఏ రకమైన లేయర్ 3లు అర్ధవంతమైనవి?](https://vitalik.eth.limo/general/2022/09/17/layer_3.html) +- [డేటా లభ్యత లేదా: రోల్అప్‌లు ఆందోళనను ఆపి ఇతీరియమును ఎలా ప్రేమించాలో నేర్చుకున్నాయి](https://web.archive.org/web/20250515194659/https://web.archive.org/web/20241108192208/https://research.2077.xyz/data-availability-or-how-rollups-learned-to-stop-worrying-and-love-ethereum) +- [Ethereum రోలప్‌లకు ప్రాక్టికల్ గైడ్](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups) + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ diff --git a/public/content/translations/te/developers/docs/scaling/optimistic-rollups/index.md b/public/content/translations/te/developers/docs/scaling/optimistic-rollups/index.md new file mode 100644 index 00000000000..d68c7036868 --- /dev/null +++ b/public/content/translations/te/developers/docs/scaling/optimistic-rollups/index.md @@ -0,0 +1,265 @@ +--- +title: "ఆశావాద రోలప్‌లు" +description: "ఆశావాద రోల్‌అప్‌లకు పరిచయం-Ethereum సంఘం ఉపయోగించే స్కేలింగ్ పరిష్కారం." +lang: te +--- + +ఆప్టిమిస్టిక్ రోల్‌అప్‌లు లేయర్ 2 (L2) ప్రోటోకాల్‌లు Ethereum యొక్క బేస్ లేయర్ యొక్క నిర్గమాంశను విస్తరించడానికి రూపొందించబడ్డాయి. అవి ఆఫ్‌చెయిన్‌లో లావాదేవీలను ప్రాసెస్ చేయడం ద్వారా ప్రధాన ఇతీరియము చైన్‌పై గణనను తగ్గిస్తాయి, ప్రాసెసింగ్ వేగంలో గణనీయమైన మెరుగుదలలను అందిస్తాయి. [సైడ్చైన్లు](/developers/docs/scaling/sidechains/) వంటి ఇతర స్కేలింగ్ పరిష్కారాల వలె కాకుండా, ఆప్టిమిస్టిక్ రోలప్‌లు లావాదేవీ ఫలితాలను ఆన్‌చెయిన్‌లో ప్రచురించడం ద్వారా మెయిన్‌నెట్ నుండి భద్రతను పొందుతాయి, లేదా [ప్లాస్మా చైన్లు](/developers/docs/scaling/plasma/), ఇవి కూడా మోసం రుజువులతో ఇతీరియములో లావాదేవీలను ధృవీకరిస్తాయి, కానీ లావాదేవీ డేటాను వేరే చోట నిల్వ చేస్తాయి. + +Ethereumని ఉపయోగించడంలో గణన నెమ్మదిగా, ఖరీదైన భాగం కాబట్టి, ఆశావాద రోల్‌అప్‌లు స్కేలబిలిటీలో 10-100x మెరుగుదలలను అందించగలవు. ఆప్టిమిస్టిక్ రోలప్‌లు లావాదేవీలను ఇతీరియముకు `calldata`గా లేదా [blobs](/roadmap/danksharding/)లో వ్రాస్తాయి, వినియోగదారులకు గ్యాస్ ఖర్చులను తగ్గిస్తాయి. + +## అవసరాలు {#prerequisites} + +మీరు [Ethereum స్కేలింగ్](/developers/docs/scaling/) మరియు [లేయర్ 2](/layer-2/) పై మా పేజీలను చదివి అర్థం చేసుకుని ఉండాలి. + +## ఆశావాద రోల్అప్ అంటే ఏమిటి? {#what-is-an-optimistic-rollup} + +ఆప్టిమిస్టిక్ రోలప్ అనేది ఇతీరియమును స్కేలింగ్ చేయడానికి ఒక విధానం, ఇందులో గణన మరియు స్థితి నిల్వను ఆఫ్‌చెయిన్‌కు తరలించడం ఉంటుంది. ఆప్టిమిస్టిక్ రోలప్‌లు ఇతీరియము వెలుపల లావాదేవీలను అమలు చేస్తాయి, కానీ లావాదేవీ డేటాను మెయిన్‌నెట్‌కు `calldata`గా లేదా [blobs](/roadmap/danksharding/)లో పోస్ట్ చేస్తాయి. + +ఆప్టిమిస్టిక్ రోలప్ ఆపరేటర్లు ఇతీరియముకు సమర్పించే ముందు పెద్ద బ్యాచ్‌లలో బహుళ ఆఫ్‌చెయిన్ లావాదేవీలను కలిపి బండిల్ చేస్తారు. ఈ విధానం ప్రతి బ్యాచ్‌లోని బహుళ లావాదేవీల అంతటా స్థిర వ్యయాలను విస్తరించడాన్ని అనుమతిస్తుంది, తుది వినియోగదారులకు రుసుములను తగ్గిస్తుంది. ఆశావాద రోల్‌అప్‌లు Ethereumలో పోస్ట్ చేయబడిన డేటా మొత్తాన్ని తగ్గించడానికి కుదింపు పద్ధతులను కూడా ఉపయోగిస్తాయి. + +ఆప్టిమిస్టిక్ రోలప్‌లు “ఆప్టిమిస్టిక్”గా పరిగణించబడతాయి ఎందుకంటే అవి ఆఫ్‌చెయిన్ లావాదేవీలు చెల్లుబాటు అవుతాయని భావిస్తాయి మరియు ఆన్‌చెయిన్‌లో పోస్ట్ చేయబడిన లావాదేవీ బ్యాచ్‌ల కోసం చెల్లుబాటు రుజువులను ప్రచురించవు. ఇది ఆఫ్‌చెయిన్ లావాదేవీల కోసం క్రిప్టోగ్రాఫిక్ [చెల్లుబాటు రుజువులను](/glossary/#validity-proof) ప్రచురించే [జీరో-నౌలెడ్జ్ రోలప్‌ల](/developers/docs/scaling/zk-rollups) నుండి ఆప్టిమిస్టిక్ రోలప్‌లను వేరు చేస్తుంది. + +ఆశావాద రోల్‌అప్‌లు లావాదేవీలు సరిగ్గా లెక్కించబడని కేసులను గుర్తించడానికి మోసం-నిరూపణ పథకంపై ఆధారపడతాయి. ఇతీరియములో ఒక రోలప్ బ్యాచ్ సమర్పించబడిన తర్వాత, ఒక సమయ విండో (ఛాలెంజ్ పీరియడ్ అని పిలుస్తారు) ఉంటుంది, ఈ సమయంలో ఎవరైనా [మోసం రుజువును](/glossary/#fraud-proof) గణించడం ద్వారా రోలప్ లావాదేవీ ఫలితాలను సవాలు చేయవచ్చు. + +మోసం రుజువు విజయవంతమైతే, రోల్అప్ ప్రోటోకాల్ లావాదేవీ(ల) ని మళ్లీ అమలు చేస్తుంది మరియు తదనుగుణంగా రోల్అప్ స్థితిని అప్‌డేట్ చేస్తుంది. విజయవంతమైన మోసం రుజువు యొక్క ఇతర ప్రభావం ఏమిటంటే, ఒక బ్లాక్‌లో తప్పుగా అమలు చేయబడిన లావాదేవీని చేర్చడానికి బాధ్యత వహించే సీక్వెన్సర్ పెనాల్టీని పొందుతాడు. + +ఛాలెంజ్ వ్యవధి ముగిసిన తర్వాత రోల్అప్ బ్యాచ్ సవాలు చేయకపోతే (అంటే, అన్ని లావాదేవీలు సరిగ్గా అమలు చేయబడతాయి), అది చెల్లుబాటు అయ్యేదిగా పరిగణించబడుతుంది మరియు Ethereumలో ఆమోదించబడుతుంది. ఇతరులు ధృవీకరించబడని రోల్‌అప్ బ్లాక్‌లో నిర్మించడాన్ని కొనసాగించవచ్చు, కానీ ఒక హెచ్చరికతో: గతంలో ప్రచురించిన తప్పుగా అమలు చేయబడిన లావాదేవీ ఆధారంగా లావాదేవీ ఫలితాలు మార్చబడతాయి. + +## ఆశావాద రోల్‌అప్‌లు Ethereumతో ఎలా సంకర్షణ చెందుతాయి? {#optimistic-rollups-and-Ethereum} + +ఆప్టిమిస్టిక్ రోలప్‌లు ఇతీరియము పైన పనిచేయడానికి నిర్మించబడిన [ఆఫ్‌చెయిన్ స్కేలింగ్ పరిష్కారాలు](/developers/docs/scaling/#offchain-scaling). ప్రతి ఆశావాద రోల్అప్ Ethereum నెట్‌వర్క్‌లో అమలు చేయబడిన స్మార్ట్ కాంట్రాక్ట్‌ల సెట్ ద్వారా నిర్వహించబడుతుంది. ఆప్టిమిస్టిక్ రోలప్‌లు ప్రధాన ఇతీరియము చైన్ నుండి లావాదేవీలను ప్రాసెస్ చేస్తాయి, కానీ ఆఫ్‌చెయిన్ లావాదేవీలను (బ్యాచ్‌లలో) ఒక ఆన్‌చెయిన్ రోలప్ కాంట్రాక్ట్‌కు పోస్ట్ చేస్తాయి. Ethereum బ్లాక్‌చెయిన్ వలె, ఈ లావాదేవీ రికార్డు మార్పులేనిది మరియు "ఆశావాద రోల్అప్ చైన్"ను ఏర్పరుస్తుంది + +ఆశావాద రోల్అప్ యొక్క నిర్మాణం క్రింది భాగాలను కలిగి ఉంటుంది: + +**ఆన్‌చెయిన్ కాంట్రాక్టులు**: ఆప్టిమిస్టిక్ రోలప్ యొక్క ఆపరేషన్ ఇతీరియములో నడుస్తున్న స్మార్ట్ కాంట్రాక్టుల ద్వారా నియంత్రించబడుతుంది. రోల్‌అప్ బ్లాక్‌లను నిల్వ చేసే, రోల్‌అప్‌పై స్టేట్ అప్‌డేట్‌లను పర్యవేక్షించే మరియు వినియోగదారు డిపాజిట్‌లను ట్రాక్ చేసే ఒప్పందాలు ఇందులో ఉన్నాయి. ఈ కోణంలో, Ethereum ఆశావాద రోల్‌అప్‌ల కోసం బేస్ లేయర్ లేదా "లేయర్ 1"గా పనిచేస్తుంది. + +**ఆఫ్‌చెయిన్ వర్చువల్ మెషీన్ (VM)**: ఆప్టిమిస్టిక్ రోలప్ ప్రోటోకాల్‌ను నిర్వహించే కాంట్రాక్టులు ఇతీరియములో నడిచినప్పటికీ, రోలప్ ప్రోటోకాల్ [ఎథేరియం వర్చువల్ మషీన్](/developers/docs/evm/) నుండి వేరైన మరొక వర్చువల్ మెషీన్‌లో గణన మరియు స్థితి నిల్వను నిర్వహిస్తుంది. ఆఫ్‌చెయిన్ VM అనేది అప్లికేషన్లు నివసించే మరియు స్థితి మార్పులు అమలు చేయబడే ప్రదేశం; ఇది ఒక ఆప్టిమిస్టిక్ రోలప్ కోసం ఎగువ లేయర్ లేదా "లేయర్ 2"గా పనిచేస్తుంది. + +ఆప్టిమిస్టిక్ రోలప్‌లు EVM కోసం వ్రాసిన లేదా కంపైల్ చేయబడిన ప్రోగ్రామ్‌లను అమలు చేయడానికి రూపొందించబడినందున, ఆఫ్‌చెయిన్ VM అనేక EVM డిజైన్ స్పెక్స్‌ను కలిగి ఉంటుంది. అదనంగా, ఆన్‌చెయిన్‌లో గణించబడిన మోసం రుజువులు ఇతీరియము నెట్‌వర్క్‌ను ఆఫ్‌చెయిన్ VMలో గణించబడిన స్థితి మార్పుల యొక్క చెల్లుబాటును అమలు చేయడానికి అనుమతిస్తాయి. + +ఆప్టిమిస్టిక్ రోల్‌అప్‌లు 'హైబ్రిడ్ స్కేలింగ్ సొల్యూషన్స్'గా వర్ణించబడ్డాయి, ఎందుకంటే అవి ప్రత్యేక ప్రోటోకాల్‌లుగా ఉన్నప్పటికీ, వాటి భద్రతా లక్షణాలు Ethereum నుండి తీసుకోబడ్డాయి. ఇతర విషయాలతోపాటు, ఇతీరియము ఒక రోలప్ యొక్క ఆఫ్‌చెయిన్ గణన యొక్క ఖచ్చితత్వానికి మరియు గణన వెనుక ఉన్న డేటా లభ్యతకు హామీ ఇస్తుంది. ఇది భద్రత కోసం ఇతీరియముపై ఆధారపడని స్వచ్ఛమైన ఆఫ్‌చెయిన్ స్కేలింగ్ ప్రోటోకాల్‌ల (ఉదా., [సైడ్చైన్లు](/developers/docs/scaling/sidechains/)) కంటే ఆప్టిమిస్టిక్ రోలప్‌లను మరింత సురక్షితంగా చేస్తుంది. + +ఆశావాద రోల్‌అప్‌లు కింది వాటి కోసం ప్రధాన Ethereum ప్రోటోకాల్‌పై ఆధారపడతాయి: + +### డేటా లభ్యత {#data-availability} + +పేర్కొన్నట్లుగా, ఆప్టిమిస్టిక్ రోలప్‌లు లావాదేవీ డేటాను ఇతీరియముకు `calldata`గా లేదా [blobs](/roadmap/danksharding/)లో పోస్ట్ చేస్తాయి. రోలప్ చైన్ యొక్క అమలు సమర్పించబడిన లావాదేవీలపై ఆధారపడి ఉంటుంది కాబట్టి, ఎవరైనా ఈ సమాచారాన్ని — ఇతీరియము యొక్క బేస్ లేయర్‌పై లంగరు వేయబడినది — రోలప్ యొక్క స్థితిని అమలు చేయడానికి మరియు స్థితి పరివర్తనల యొక్క ఖచ్చితత్వాన్ని ధృవీకరించడానికి ఉపయోగించవచ్చు. + +[డేటా లభ్యత](/developers/docs/data-availability/) కీలకం ఎందుకంటే స్థితి డేటాకు ప్రాప్యత లేకుండా, ఛాలెంజర్‌లు చెల్లని రోలప్ కార్యకలాపాలను వివాదం చేయడానికి మోసం రుజువులను నిర్మించలేరు. Ethereum డేటా లభ్యతను అందించడంతో, రోలప్ ఆపరేటర్లు హానికరమైన చర్యల నుండి తప్పించుకునే ప్రమాదం (ఉదా., చెల్లని బ్లాక్‌లను సమర్పించడం) తగ్గించబడుతుంది. + +### సెన్సార్‌షిప్ నిరోధకత {#censorship-resistance} + +ఆశావాద రోల్‌అప్‌లు సెన్సార్‌షిప్ నిరోధకత కోసం Ethereumపై కూడా ఆధారపడతాయి. ఆశావాద రోల్‌అప్‌లో, లావాదేవీలను ప్రాసెస్ చేయడానికి మరియు రోలప్ బ్లాక్‌లను Ethereumకి సమర్పించడానికి కేంద్రీకృత సంస్థ (ఆపరేటర్) బాధ్యత వహిస్తుంది. దీనికి కొన్ని చిక్కులు ఉన్నాయి: + +- రోలప్ ఆపరేటర్లు వినియోగదారులను పూర్తిగా ఆఫ్‌లైన్‌లోకి వెళ్లడం ద్వారా లేదా వాటిలో నిర్దిష్ట లావాదేవీలను కలిగి ఉన్న బ్లాక్‌లను ఉత్పత్తి చేయడానికి నిరాకరించడం ద్వారా సెన్సార్ చేయవచ్చు. + +- Rollup ఆపరేటర్లు మెర్క్లే యాజమాన్యం యొక్క రుజువులకు అవసరమైన రాష్ట్ర డేటాను నిలిపివేయడం ద్వారా రోలప్ ఒప్పందంలో డిపాజిట్ చేసిన నిధులను ఉపసంహరించుకోకుండా వినియోగదారులను నిరోధించవచ్చు. స్టేట్ డేటాను విత్‌హోల్డింగ్ చేయడం వల్ల వినియోగదారులు రోల్‌అప్ స్థితిని దాచిపెట్టవచ్చు మరియు రోల్‌అప్‌తో పరస్పర చర్య చేయకుండా నిరోధించవచ్చు. + +Ethereumలో స్టేట్ అప్‌డేట్‌లతో అనుబంధించబడిన డేటాను ప్రచురించమని ఆపరేటర్‌లను బలవంతం చేయడం ద్వారా ఆశావాద రోల్‌అప్‌లు ఈ సమస్యను పరిష్కరిస్తాయి. ఆన్‌చెయిన్‌లో రోలప్ డేటాను ప్రచురించడం వలన క్రింది ప్రయోజనాలు ఉన్నాయి: + +- ఆశావాద రోల్‌అప్ ఆపరేటర్ ఆఫ్‌లైన్‌కు వెళ్లినా లేదా లావాదేవీ బ్యాచ్‌లను ఉత్పత్తి చేయడాన్ని ఆపివేసినట్లయితే, రోల్అప్ యొక్క చివరి స్థితిని పునరుత్పత్తి చేయడానికి మరియు బ్లాక్ ప్రొడక్షన్‌ను కొనసాగించడానికి మరొక నోడ్ అందుబాటులో ఉన్న డేటాను ఉపయోగించవచ్చు. + +- ఫండ్స్ యాజమాన్యాన్ని రుజువు చేసే మెర్కిల్ ప్రూఫ్‌లను రూపొందించడానికి మరియు రోలప్ నుండి వారి ఆస్తులను ఉపసంహరించుకోవడానికి వినియోగదారులు లావాదేవీ డేటాను ఉపయోగించవచ్చు. + +- వినియోగదారులు తమ లావాదేవీలను సీక్వెన్సర్‌కు బదులుగా L1లో సమర్పించవచ్చు, ఈ సందర్భంలో సీక్వెన్సర్ చెల్లుబాటు అయ్యే బ్లాక్‌లను ఉత్పత్తి చేయడం కొనసాగించడానికి నిర్దిష్ట కాలపరిమితిలోపు లావాదేవీని చేర్చాలి. + +### సెటిల్మెంట్ {#settlement} + +ఆశావాద రోల్‌అప్‌ల సందర్భంలో Ethereum పోషించే మరో పాత్ర సెటిల్‌మెంట్ లేయర్. సెటిల్‌మెంట్ లేయర్ మొత్తం బ్లాక్‌చెయిన్ పర్యావరణ వ్యవస్థను ఎంకరేజ్ చేస్తుంది, భద్రతను ఏర్పాటు చేస్తుంది మరియు మధ్యవర్తిత్వం అవసరమయ్యే మరొక గొలుసుపై (ఈ సందర్భంలో ఆశావాద రోల్‌అప్‌లు) వివాదం ఏర్పడితే ఆబ్జెక్టివ్ ముగింపును అందిస్తుంది. + +Ethereum Mainnet మోసపూరిత రుజువులను ధృవీకరించడానికి మరియు వివాదాలను పరిష్కరించడానికి ఆశావాద రోల్‌అప్‌ల కోసం ఒక కేంద్రాన్ని అందిస్తుంది. అంతేకాకుండా, ఇతీరియములో రోలప్ బ్లాక్ ఆమోదించబడిన తర్వాత మాత్రమే రోలప్‌లో నిర్వహించబడే లావాదేవీలు చివరివి అవుతాయి. ఒకసారి రోల్అప్ లావాదేవీ Ethereum యొక్క బేస్ లేయర్‌కు కట్టుబడి ఉంటే, దానిని వెనక్కి తిప్పడం సాధ్యం కాదు (చైన్ పునర్వ్యవస్థీకరణలో చాలా అవకాశం లేని సందర్భంలో తప్ప). + +## ఆశావాద రోల్‌అప్‌లు ఎలా పని చేస్తాయి? {#how-optimistic-rollups-work} + +### లావాదేవీ అమలు మరియు సమూహనం {#transaction-execution-and-aggregation} + +వినియోగదారులు లావాదేవీలను "ఆపరేటర్లు"కి సమర్పిస్తారు, ఇవి ఆశావాద రోల్‌అప్‌లో లావాదేవీలను ప్రాసెస్ చేయడానికి బాధ్యత వహించే నోడ్‌లు. "వాలిడేటర్" లేదా "అగ్రిగేటర్" అని కూడా పిలుస్తారు, ఆపరేటర్ లావాదేవీలను సమగ్రపరుస్తుంది, అంతర్లీన డేటాను కంప్రెస్ చేస్తుంది మరియు Ethereumలో బ్లాక్‌ను ప్రచురిస్తుంది. + +ఎవరైనా వాలిడేటర్‌గా మారగలిగినప్పటికీ, ప్రూఫ్-ఆఫ్-స్టేక్ సిస్టమ్ వలె, ఆప్టిమిస్టిక్ రోలప్ వాలిడేటర్లు బ్లాక్‌లను ఉత్పత్తి చేయడానికి ముందు తప్పనిసరిగా ఒక బాండ్‌ను అందించాలి. వ్యాలిడేటర్ చెల్లని బ్లాక్‌ను పోస్ట్ చేసినా లేదా పాతది కాని చెల్లని బ్లాక్‌పై బిల్డ్ చేసినా (వారి బ్లాక్ చెల్లుబాటులో ఉన్నప్పటికీ) ఈ బాండ్‌ను తగ్గించవచ్చు. ఈ విధంగా ఆశావాద రోల్‌అప్‌లు వ్యాలిడేటర్‌లు నిజాయితీగా పనిచేస్తున్నారని నిర్ధారించడానికి క్రిప్టో ఎకనామిక్ ప్రోత్సాహకాలను ఉపయోగించుకుంటాయి. + +ఆశావాద రోల్‌అప్ చైన్‌లోని ఇతర వ్యాలిడేటర్‌లు రోల్‌అప్ స్థితి యొక్క వారి కాపీని ఉపయోగించి సమర్పించిన లావాదేవీలను అమలు చేయాలని భావిస్తున్నారు. వ్యాలిడేటర్ యొక్క తుది స్థితి ఆపరేటర్ యొక్క ప్రతిపాదిత స్థితికి భిన్నంగా ఉంటే, వారు సవాలును ప్రారంభించవచ్చు మరియు మోసం రుజువును లెక్కించవచ్చు. + +కొన్ని ఆశావాద రోల్‌అప్‌లు పర్మిషన్‌లెస్ వాలిడేటర్ సిస్టమ్‌ను వదులుకోవచ్చు మరియు గొలుసును అమలు చేయడానికి ఒకే “సీక్వెన్సర్”ని ఉపయోగించవచ్చు. వాలిడేటర్ వలె, సీక్వెన్సర్ లావాదేవీలను ప్రాసెస్ చేస్తుంది, రోల్అప్ బ్లాక్‌లను ఉత్పత్తి చేస్తుంది మరియు రోల్అప్ లావాదేవీలను L1 చైన్ (Ethereum) కి సమర్పిస్తుంది. + +సీక్వెన్సర్ సాధారణ రోల్అప్ ఆపరేటర్ నుండి భిన్నంగా ఉంటుంది, ఎందుకంటే లావాదేవీల ఆర్డర్‌పై వారికి ఎక్కువ నియంత్రణ ఉంటుంది. అలాగే, సీక్వెన్సర్‌కు రోలప్ చైన్‌కు ప్రాధాన్యత యాక్సెస్ ఉంది మరియు ఆన్‌చెయిన్ కాంట్రాక్ట్‌కు లావాదేవీలను సమర్పించడానికి అధికారం ఉన్న ఏకైక సంస్థ ఇది. నాన్-సీక్వెన్సర్ నోడ్‌లు లేదా సాధారణ వినియోగదారుల నుండి లావాదేవీలు సీక్వెన్సర్ కొత్త బ్యాచ్‌లో చేర్చే వరకు ప్రత్యేక ఇన్‌బాక్స్‌లో క్యూలో ఉంచబడతాయి. + +#### ఇతీరియముకు రోలప్ బ్లాక్‌లను సమర్పించడం {#submitting-blocks-to-ethereum} + +పేర్కొన్నట్లుగా, ఆప్టిమిస్టిక్ రోలప్ యొక్క ఆపరేటర్ ఆఫ్‌చెయిన్ లావాదేవీలను ఒక బ్యాచ్‌గా బండిల్ చేసి, నోటరైజేషన్ కోసం ఇతీరియముకు పంపుతారు. ఈ ప్రక్రియలో లావాదేవీ సంబంధిత డేటాను కుదించడం మరియు దానిని ఇతీరియములో `calldata`గా లేదా బ్లాబ్స్‌లో ప్రచురించడం ఉంటుంది. + +`calldata` అనేది ఒక స్మార్ట్ కాంట్రాక్ట్‌లో సవరించలేని, నిరంతరాయంగా ఉండే ప్రాంతం, ఇది చాలావరకు [memory](/developers/docs/smart-contracts/anatomy/#memory) వలె ప్రవర్తిస్తుంది. `calldata` బ్లాక్ చైను యొక్క [history logs](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs)లో భాగంగా ఆన్‌చెయిన్‌లో నిలిచి ఉన్నప్పటికీ, ఇది ఇతీరియము యొక్క స్థితిలో భాగంగా నిల్వ చేయబడదు. `calldata` ఇతీరియము యొక్క స్థితిలో ఏ భాగాన్ని తాకదు కాబట్టి, ఇది డేటాను ఆన్‌చెయిన్‌లో నిల్వ చేయడానికి స్థితి కంటే చౌకగా ఉంటుంది. + +అమలు సమయంలో స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌కు ఆర్గ్యుమెంట్‌లను పంపడానికి `calldata` కీవర్డ్ కూడా Solidityలో ఉపయోగించబడుతుంది. `calldata` లావాదేవీ సమయంలో కాల్ చేయబడే ఫంక్షన్‌ను గుర్తిస్తుంది మరియు బైట్‌ల యొక్క ఏకపక్ష శ్రేణి రూపంలో ఫంక్షన్‌కు ఇన్‌పుట్‌లను కలిగి ఉంటుంది. + +ఆప్టిమిస్టిక్ రోలప్‌ల సందర్భంలో, కంప్రెస్డ్ లావాదేవీ డేటాను ఆన్‌చెయిన్ కాంట్రాక్ట్‌కి పంపడానికి `calldata` ఉపయోగించబడుతుంది. రోలప్ ఆపరేటర్ రోలప్ కాంట్రాక్ట్‌లో అవసరమైన ఫంక్షన్‌కు కాల్ చేయడం ద్వారా మరియు కంప్రెస్ చేయబడిన డేటాను ఫంక్షన్ ఆర్గ్యుమెంట్‌లుగా పంపడం ద్వారా కొత్త బ్యాచ్‌ని జోడిస్తుంది. `calldata`ను ఉపయోగించడం వలన వినియోగదారు రుసుము తగ్గుతుంది, ఎందుకంటే రోలప్‌లు ఆన్‌చెయిన్‌లో డేటాను నిల్వ చేయడం వల్ల వచ్చే ఖర్చులు ఎక్కువగా ఉంటాయి. + +ఈ భావన ఎలా పనిచేస్తుందో చూపించడానికి రోలప్ బ్యాచ్ సమర్పణకు [ఇక్కడ ఒక ఉదాహరణ](https://eth.blockscout.com/tx/0x9102bfce17c58b5fc1c974c24b6bb7a924fb5fbd7c4cd2f675911c27422a5591) ఉంది. సీక్వెన్సర్ `appendSequencerBatch()` పద్ధతిని ప్రారంభించింది మరియు `calldata`ను ఉపయోగించి కంప్రెస్ చేయబడిన లావాదేవీ డేటాను ఇన్‌పుట్‌లుగా పంపింది. + +కొన్ని రోల్‌అప్‌లు ఇప్పుడు Ethereumకి లావాదేవీల బ్యాచ్‌లను పోస్ట్ చేయడానికి బ్లాబ్‌లను ఉపయోగిస్తున్నాయి. + +బ్లాబ్స్ సవరించలేనివి మరియు నిరంతరాయంగా ఉంటాయి (`calldata` వలె) కానీ ~18 రోజుల తర్వాత చరిత్ర నుండి కత్తిరించబడతాయి. బ్లాబ్స్‌పై మరింత సమాచారం కోసం, [Danksharding](/roadmap/danksharding) చూడండి. + +### స్థితి కట్టుబాట్లు {#state-commitments} + +ఏ సమయంలోనైనా, ఆప్టిమిస్టిక్ రోలప్ యొక్క స్థితి (ఖాతాలు, బ్యాలెన్స్‌లు, కాంట్రాక్ట్ సంకేత భాష, మొదలైనవి.) "స్టేట్ ట్రీ" అని పిలువబడే [మెర్కిల్ ట్రీ](/whitepaper/#merkle-trees)గా నిర్వహించబడుతుంది. రోల్అప్ యొక్క తాజా స్థితిని సూచించే ఈ మెర్కిల్ ట్రీ (స్టేట్ రూట్) యొక్క రూట్ హ్యాష్ చేయబడింది మరియు రోల్అప్ ఒప్పందంలో నిల్వ చేయబడుతుంది. గొలుసులోని ప్రతి రాష్ట్ర పరివర్తన కొత్త రోల్అప్ స్థితిని ఉత్పత్తి చేస్తుంది, కొత్త స్టేట్ రూట్‌ను కంప్యూటింగ్ చేయడం ద్వారా ఆపరేటర్ దీనికి కట్టుబడి ఉంటాడు. + +బ్యాచ్‌లను పోస్ట్ చేసేటప్పుడు ఆపరేటర్ పాత స్టేట్ రూట్‌లు మరియు కొత్త స్టేట్ రూట్‌లు రెండింటినీ సమర్పించాల్సి ఉంటుంది. పాత స్థితి రూట్ ఆన్‌చెయిన్ కాంట్రాక్ట్‌లో ఉన్న స్థితి రూట్‌తో సరిపోలితే, రెండోది విస్మరించబడి కొత్త స్థితి రూట్‌తో భర్తీ చేయబడుతుంది. + +రోల్అప్ ఆపరేటర్ కూడా లావాదేవీ బ్యాచ్ కోసం మెర్కిల్ రూట్‌ను కలిగి ఉండాలి. ఇది [మెర్కిల్ ప్రూఫ్](/developers/tutorials/merkle-proofs-for-offline-data-integrity/)ని సమర్పించడం ద్వారా బ్యాచ్‌లో (L1లో) లావాదేవీని చేర్చినట్లు నిరూపించడానికి ఎవరైనా అనుమతిస్తుంది. + +ఆశావాద రోల్‌అప్‌లో రాష్ట్ర మార్పుల యొక్క ఖచ్చితత్వాన్ని నిరూపించడానికి రాష్ట్ర కట్టుబాట్లు, ముఖ్యంగా రాష్ట్ర మూలాలు అవసరం. రోలప్ కాంట్రాక్ట్ ఆపరేటర్ల నుండి కొత్త స్థితి రూట్‌లను పోస్ట్ చేసిన వెంటనే అంగీకరిస్తుంది, కానీ రోలప్‌ను దాని సరైన స్థితికి పునరుద్ధరించడానికి చెల్లని స్థితి రూట్‌లను తర్వాత తొలగించవచ్చు. + +### మోసం రుజువు {#fraud-proving} + +వివరించినట్లుగా, ఆప్టిమిస్టిక్ రోలప్‌లు చెల్లుబాటు రుజువులను అందించకుండా బ్లాక్‌లను ప్రచురించడానికి ఎవరినైనా అనుమతిస్తాయి. అయితే, చైన్ సురక్షితంగా ఉందని నిర్ధారించడానికి, ఆప్టిమిస్టిక్ రోలప్‌లు ఒక సమయ విండోను నిర్దేశిస్తాయి, ఈ సమయంలో ఎవరైనా స్థితి పరివర్తనను వివాదం చేయవచ్చు. అందువల్ల, రోలప్ బ్లాక్‌లను "అస్సెర్షన్స్" అని పిలుస్తారు, ఎందుకంటే ఎవరైనా వాటి చెల్లుబాటును వివాదం చేయవచ్చు. + +ఎవరైనా ఒక అస్సెర్షన్‌ను వివాదం చేస్తే, రోలప్ ప్రోటోకాల్ మోసం రుజువు గణనను ప్రారంభిస్తుంది. ప్రతి రకమైన మోసం రుజువు ఇంటరాక్టివ్ — మరొక వ్యక్తి దానిని సవాలు చేయడానికి ముందు ఎవరైనా ఒక అస్సెర్షన్‌ను పోస్ట్ చేయాలి. మోసం రుజువును గణించడానికి ఎన్ని రౌండ్ల పరస్పర చర్య అవసరమో అనే దానిలో తేడా ఉంటుంది. + +సింగిల్-రౌండ్ ఇంటరాక్టివ్ ప్రూవింగ్ స్కీమ్‌లు చెల్లని అస్సెర్షన్‌లను గుర్తించడానికి L1లో వివాదాస్పద లావాదేవీలను రీప్లే చేస్తాయి. రోలప్ ప్రోటోకాల్ ఒక వెరిఫైయర్ కాంట్రాక్ట్‌ను ఉపయోగించి L1 (ఇతీరియము)పై వివాదాస్పద లావాదేవీ యొక్క పునః-అమలును అనుకరిస్తుంది, గణించబడిన స్థితి రూట్ ఛాలెంజ్‌లో ఎవరు గెలుస్తారో నిర్ణయిస్తుంది. రోలప్ యొక్క సరైన స్థితి గురించి ఛాలెంజర్ యొక్క దావా సరిగ్గా ఉంటే, ఆపరేటర్ యొక్క బాండ్ స్లాష్ చేయబడటం ద్వారా శిక్షించబడుతుంది. + +అయితే, మోసాన్ని గుర్తించడానికి L1లో లావాదేవీలను పునః-అమలు చేయడానికి వ్యక్తిగత లావాదేవీల కోసం స్థితి కమిట్‌మెంట్‌లను ప్రచురించడం అవసరం మరియు రోలప్‌లు ఆన్‌చెయిన్‌లో ప్రచురించాల్సిన డేటాను పెంచుతుంది. లావాదేవీలను రీప్లే చేయడం కూడా గణనీయమైన గ్యాస్ ఖర్చులను కలిగిస్తుంది. ఈ కారణాల వల్ల, ఆప్టిమిస్టిక్ రోలప్‌లు మల్టీ-రౌండ్ ఇంటరాక్టివ్ ప్రూవింగ్‌కు మారుతున్నాయి, ఇది అదే లక్ష్యాన్ని (అంటే, చెల్లని రోలప్ కార్యకలాపాలను గుర్తించడం) మరింత సామర్థ్యంతో సాధిస్తుంది. + +#### మల్టీ-రౌండ్ ఇంటరాక్టివ్ ప్రూవింగ్ {#multi-round-interactive-proving} + +మల్టీ-రౌండ్ ఇంటరాక్టివ్ ప్రూవింగ్‌లో అస్సెర్టర్ మరియు ఛాలెంజర్ మధ్య ఒక L1 వెరిఫైయర్ కాంట్రాక్ట్ పర్యవేక్షణలో ఒక బ్యాక్-అండ్-ఫోర్త్ ప్రోటోకాల్ ఉంటుంది, ఇది చివరికి అబద్ధం చెప్పే పార్టీని నిర్ణయిస్తుంది. ఒక L2 నోడ్ ఒక అస్సెర్షన్‌ను సవాలు చేసిన తర్వాత, అస్సెర్టర్ వివాదాస్పద అస్సెర్షన్‌ను రెండు సమాన భాగాలుగా విభజించవలసి ఉంటుంది. ఈ సందర్భంలో ప్రతి వ్యక్తిగత అస్సెర్షన్ మరొక దాని వలె అనేక గణన దశలను కలిగి ఉంటుంది. + +ఛాలెంజర్ అప్పుడు తాను ఏ అస్సెర్షన్‌ను సవాలు చేయాలనుకుంటున్నాడో ఎంచుకుంటాడు. విభజన ప్రక్రియ ("బైసెక్షన్ ప్రోటోకాల్" అని పిలుస్తారు) రెండు పార్టీలు ఒకే ఒక్క అమలు దశ గురించి ఒక అస్సెర్షన్‌ను వివాదం చేసే వరకు కొనసాగుతుంది. ఈ సమయంలో, L1 కాంట్రాక్ట్ మోసపూరిత పార్టీని పట్టుకోవడానికి సూచనను (మరియు దాని ఫలితాన్ని) మూల్యాంకనం చేయడం ద్వారా వివాదాన్ని పరిష్కరిస్తుంది. + +అస్సెర్టర్ వివాదాస్పద సింగిల్-స్టెప్ గణన యొక్క చెల్లుబాటును ధృవీకరించే "వన్-స్టెప్ ప్రూఫ్"ను అందించవలసి ఉంటుంది. అస్సెర్టర్ వన్-స్టెప్ ప్రూఫ్‌ను అందించడంలో విఫలమైతే, లేదా L1 వెరిఫైయర్ ప్రూఫ్‌ను చెల్లనిదిగా భావిస్తే, వారు ఛాలెంజ్‌ను కోల్పోతారు. + +ఈ రకమైన మోసం రుజువు గురించి కొన్ని గమనికలు: + +1. మల్టీ-రౌండ్ ఇంటరాక్టివ్ ఫ్రాడ్ ప్రూవింగ్ సమర్థవంతమైనదిగా పరిగణించబడుతుంది ఎందుకంటే ఇది వివాద మధ్యవర్తిత్వంలో L1 చైన్ చేయాల్సిన పనిని తగ్గిస్తుంది. మొత్తం లావాదేవీని రీప్లే చేయడానికి బదులుగా, L1 చైన్ రోలప్ యొక్క అమలులో ఒకే ఒక దశను మాత్రమే పునః-అమలు చేయాలి. + +2. బైసెక్షన్ ప్రోటోకాల్స్ ఆన్‌చెయిన్‌లో పోస్ట్ చేయబడిన డేటా మొత్తాన్ని తగ్గిస్తాయి (ప్రతి లావాదేవీకి స్థితి కమిట్‌లను ప్రచురించాల్సిన అవసరం లేదు). అలాగే, ఆప్టిమిస్టిక్ రోలప్ లావాదేవీలు ఇతీరియము యొక్క గ్యాస్ పరిమితి ద్వారా నిర్బంధించబడవు. దీనికి విరుద్ధంగా, లావాదేవీలను పునః-అమలు చేసే ఆప్టిమిస్టిక్ రోలప్‌లు ఒకే ఇతీరియము లావాదేవీలో దాని అమలును అనుకరించడానికి L2 లావాదేవీకి తక్కువ గ్యాస్ పరిమితి ఉందని నిర్ధారించుకోవాలి. + +3. దురుద్దేశపూర్వక అస్సెర్టర్ యొక్క బాండ్‌లో కొంత భాగం ఛాలెంజర్‌కు ఇవ్వబడుతుంది, మిగిలిన భాగం బర్న్ చేయబడుతుంది. బర్నింగ్ వాలిడేటర్ల మధ్య కుమ్మక్కును నివారిస్తుంది; ఇద్దరు వాలిడేటర్లు బోగస్ ఛాలెంజ్‌లను ప్రారంభించడానికి కుమ్మక్కైతే, వారు ఇప్పటికీ మొత్తం స్టేక్‌లో గణనీయమైన భాగాన్ని కోల్పోతారు. + +4. మల్టీ-రౌండ్ ఇంటరాక్టివ్ ప్రూవింగ్‌కు రెండు పార్టీలు (అస్సెర్టర్ మరియు ఛాలెంజర్) నిర్దిష్ట సమయ విండోలో కదలికలు చేయాలి. గడువు ముగిసేలోపు చర్య తీసుకోవడంలో విఫలమైతే డిఫాల్ట్ పార్టీ ఛాలెంజ్‌ను కోల్పోతుంది. + +#### ఆప్టిమిస్టిక్ రోలప్‌లకు మోసం రుజువులు ఎందుకు ముఖ్యమైనవి {#fraud-proof-benefits} + +మోసం రుజువులు ముఖ్యమైనవి ఎందుకంటే అవి ఆప్టిమిస్టిక్ రోలప్‌లలో _ట్రస్ట్‌లెస్ ఫైనాలిటీ_ని సులభతరం చేస్తాయి. ట్రస్ట్‌లెస్ ఫైనాలిటీ అనేది ఆప్టిమిస్టిక్ రోలప్‌ల యొక్క ఒక నాణ్యత, ఇది ఒక లావాదేవీ — అది చెల్లుబాటు అయ్యేంత వరకు — చివరికి నిర్ధారించబడుతుందని హామీ ఇస్తుంది. + +దురుద్దేశపూర్వక నోడ్స్ తప్పుడు ఛాలెంజ్‌లను ప్రారంభించడం ద్వారా చెల్లుబాటు అయ్యే రోలప్ బ్లాక్ యొక్క నిర్ధారణను ఆలస్యం చేయడానికి ప్రయత్నించవచ్చు. అయితే, మోసం రుజువులు చివరికి రోలప్ బ్లాక్ యొక్క చెల్లుబాటును రుజువు చేసి, దానిని నిర్ధారించేలా చేస్తాయి. + +ఇది ఆప్టిమిస్టిక్ రోలప్‌ల యొక్క మరొక భద్రతా లక్షణానికి కూడా సంబంధించింది: చైన్ యొక్క చెల్లుబాటు _ఒక_ నిజాయితీగల నోడ్ ఉనికిపై ఆధారపడి ఉంటుంది. నిజాయితీగల నోడ్ చెల్లుబాటు అయ్యే అస్సెర్షన్‌లను పోస్ట్ చేయడం ద్వారా లేదా చెల్లని అస్సెర్షన్‌లను వివాదం చేయడం ద్వారా చైన్‌ను సరిగ్గా ముందుకు తీసుకెళ్లగలదు. ఏ సందర్భంలోనైనా, నిజాయితీగల నోడ్‌తో వివాదాలలోకి ప్రవేశించే దురుద్దేశపూర్వక నోడ్స్ మోసం రుజువు ప్రక్రియలో తమ స్టేక్‌లను కోల్పోతాయి. + +### L1/L2 ఇంటర్‌ఆపరబిలిటీ {#l1-l2-interoperability} + +ఆప్టిమిస్టిక్ రోలప్‌లు ఇతీరియము మెయిన్‌నెట్‌తో ఇంటర్‌ఆపరబిలిటీ కోసం రూపొందించబడ్డాయి మరియు వినియోగదారులు L1 మరియు L2 మధ్య సందేశాలు మరియు ఏకపక్ష డేటాను పంపడానికి అనుమతిస్తాయి. అవి EVMతో కూడా అనుకూలంగా ఉంటాయి, కాబట్టి మీరు ఇప్పటికే ఉన్న [డాప్స్](/developers/docs/dapps/)ను ఆప్టిమిస్టిక్ రోలప్‌లకు పోర్ట్ చేయవచ్చు లేదా ఇతీరియము అభివృద్ధి సాధనాలను ఉపయోగించి కొత్త డాప్స్‌ను సృష్టించవచ్చు. + +#### 1. ఆస్తి కదలిక {#asset-movement} + +##### రోలప్‌లోకి ప్రవేశించడం + +ఆప్టిమిస్టిక్ రోలప్‌ను ఉపయోగించడానికి, వినియోగదారులు ETH, ERC-20 టోకెన్లు మరియు ఇతర అంగీకరించిన ఆస్తులను L1లోని రోలప్ యొక్క [బ్రిడ్జ్](/developers/docs/bridges/) కాంట్రాక్ట్‌లో డిపాజిట్ చేస్తారు. బ్రిడ్జ్ కాంట్రాక్ట్ లావాదేవీని L2కి రిలే చేస్తుంది, అక్కడ సమానమైన ఆస్తులు మింట్ చేయబడి, ఆప్టిమిస్టిక్ రోలప్‌లో వినియోగదారుడు ఎంచుకున్న చిరునామాకు పంపబడతాయి. + +సీక్వెన్సర్ వాటిని రోలప్ కాంట్రాక్ట్‌కు తిరిగి సమర్పించే వరకు వినియోగదారు-ఉత్పత్తి లావాదేవీలు (L1 > L2 డిపాజిట్ వంటివి) సాధారణంగా క్యూలో ఉంటాయి. అయితే, సెన్సార్‌షిప్ నిరోధకతను కాపాడటానికి, ఆప్టిమిస్టిక్ రోలప్‌లు వినియోగదారులు అనుమతించబడిన గరిష్ట సమయం దాటి ఆలస్యం అయితే, లావాదేవీని నేరుగా ఆన్‌చెయిన్ రోలప్ కాంట్రాక్ట్‌కు సమర్పించడానికి అనుమతిస్తాయి. + +కొన్ని ఆప్టిమిస్టిక్ రోలప్‌లు సీక్వెన్సర్‌లు వినియోగదారులను సెన్సార్ చేయకుండా నిరోధించడానికి మరింత సూటిగా ఉండే విధానాన్ని అనుసరిస్తాయి. ఇక్కడ, రోలప్ చైన్‌లో ప్రాసెస్ చేయబడిన లావాదేవీలతో పాటు, మునుపటి బ్లాక్ నుండి L1 కాంట్రాక్ట్‌కు సమర్పించబడిన అన్ని లావాదేవీల (ఉదా., డిపాజిట్లు) ద్వారా ఒక బ్లాక్ నిర్వచించబడుతుంది. ఒక సీక్వెన్సర్ L1 లావాదేవీని విస్మరిస్తే, అది (నిరూపించదగిన) తప్పు స్థితి రూట్‌ను ప్రచురిస్తుంది; అందువల్ల, సీక్వెన్సర్‌లు L1లో పోస్ట్ చేసిన తర్వాత వినియోగదారు-ఉత్పత్తి సందేశాలను ఆలస్యం చేయలేరు. + +##### రోలప్ నుండి నిష్క్రమించడం + +మోసం రుజువు పథకం కారణంగా ఆప్టిమిస్టిక్ రోలప్ నుండి ఇతీరియముకు ఉపసంహరించుకోవడం మరింత కష్టం. ఒక వినియోగదారుడు L1లో ఎస్క్రో చేయబడిన నిధులను ఉపసంహరించుకోవడానికి L2 > L1 లావాదేవీని ప్రారంభిస్తే, వారు దాదాపు ఏడు రోజులు ఉండే ఛాలెంజ్ పీరియడ్ ముగిసే వరకు వేచి ఉండాలి. అయినప్పటికీ, ఉపసంహరణ ప్రక్రియ కూడా చాలా సరళంగా ఉంటుంది. + +L2 రోలప్‌లో ఉపసంహరణ అభ్యర్థన ప్రారంభించబడిన తర్వాత, లావాదేవీ తదుపరి బ్యాచ్‌లో చేర్చబడుతుంది, అయితే రోలప్‌లోని వినియోగదారుడి ఆస్తులు బర్న్ చేయబడతాయి. ఇతీరియములో బ్యాచ్ ప్రచురించబడిన తర్వాత, వినియోగదారుడు బ్లాక్‌లో వారి నిష్క్రమణ లావాదేవీని చేర్చడాన్ని ధృవీకరించే మెర్కిల్ ప్రూఫ్‌ను గణించవచ్చు. అప్పుడు L1లో లావాదేవీని ఖరారు చేయడానికి మరియు మెయిన్‌నెట్‌కు నిధులను ఉపసంహరించుకోవడానికి ఆలస్యం వ్యవధి వరకు వేచి ఉండటమే. + +ఇతీరియముకు నిధులను ఉపసంహరించుకునే ముందు ఒక వారం వేచి ఉండకుండా ఉండటానికి, ఆప్టిమిస్టిక్ రోలప్ వినియోగదారులు **లిక్విడిటీ ప్రొవైడర్** (LP)ను ఉపయోగించవచ్చు. ఒక లిక్విడిటీ ప్రొవైడర్ పెండింగ్‌లో ఉన్న L2 ఉపసంహరణ యొక్క యాజమాన్యాన్ని స్వీకరించి, L1లో వినియోగదారునికి (ఒక రుసుముకు బదులుగా) చెల్లిస్తుంది. + +నిధులను విడుదల చేయడానికి ముందు లిక్విడిటీ ప్రొవైడర్లు వినియోగదారుడి ఉపసంహరణ అభ్యర్థన యొక్క చెల్లుబాటును (చైన్‌ను స్వయంగా అమలు చేయడం ద్వారా) తనిఖీ చేయవచ్చు. ఈ విధంగా వారు లావాదేవీ చివరికి నిర్ధారించబడుతుందని హామీ కలిగి ఉంటారు (అంటే, ట్రస్ట్‌లెస్ ఫైనాలిటీ). + +#### 2. EVM అనుకూలత {#evm-compatibility} + +డెవలపర్‌ల కోసం, ఆప్టిమిస్టిక్ రోలప్‌ల యొక్క ప్రయోజనం వాటి అనుకూలత — లేదా, ఇంకా చెప్పాలంటే, [ఎథేరియం వర్చువల్ మషీన్ (EVM)](/developers/docs/evm/) తో సమానత్వం. EVM-అనుకూల రోలప్‌లు [ఇతీరియము ఎల్లో పేపర్](https://ethereum.github.io/yellowpaper/paper.pdf)లోని స్పెసిఫికేషన్‌లకు అనుగుణంగా ఉంటాయి మరియు బైట్‌కోడ్ స్థాయిలో EVMకు మద్దతు ఇస్తాయి. + +ఆప్టిమిస్టిక్ రోలప్‌లలో EVM-అనుకూలత క్రింది ప్రయోజనాలను కలిగి ఉంది: + +i. డెవలపర్లు కోడ్‌బేస్‌లను విస్తృతంగా సవరించాల్సిన అవసరం లేకుండా ఇతీరియముపై ఉన్న స్మార్ట్ కాంట్రాక్టులను ఆప్టిమిస్టిక్ రోలప్ చైన్‌లకు మైగ్రేట్ చేయవచ్చు. ఇది L2లో ఇతీరియము స్మార్ట్ కాంట్రాక్టులను డిప్లాయ్ చేసేటప్పుడు అభివృద్ధి బృందాలకు సమయాన్ని ఆదా చేస్తుంది. + +ii. ఆప్టిమిస్టిక్ రోలప్‌లను ఉపయోగించే డెవలపర్లు మరియు ప్రాజెక్ట్ బృందాలు ఇతీరియము యొక్క మౌలిక సదుపాయాలను సద్వినియోగం చేసుకోవచ్చు. ఇందులో ప్రోగ్రామింగ్ భాషలు, సంకేత భాష లైబ్రరీలు, పరీక్షా సాధనాలు, ఖాతాదారులు సాఫ్ట్‌వేర్, డిప్లాయ్‌మెంట్ ఇన్‌ఫ్రాస్ట్రక్చర్ మొదలైనవి ఉంటాయి. + +ఇప్పటికే ఉన్న పనిముట్లను ఉపయోగించడం ముఖ్యం ఎందుకంటే ఈ సాధనాలు సంవత్సరాలుగా విస్తృతంగా ఆడిట్ చేయబడ్డాయి, డీబగ్ చేయబడ్డాయి మరియు మెరుగుపరచబడ్డాయి. ఇది ఇతీరియము డెవలపర్లు పూర్తిగా కొత్త డెవలప్‌మెంట్ స్టాక్‌తో ఎలా నిర్మించాలో నేర్చుకోవలసిన అవసరాన్ని కూడా తొలగిస్తుంది. + +#### 3. క్రాస్-చైన్ కాంట్రాక్ట్ కాల్స్ {#cross-chain-contract-calls} + +వినియోగదారులు (బాహ్యంగా యాజమాన్యంలోని ఖాతాలు) రోలప్ కాంట్రాక్ట్‌కు ఒక లావాదేవీని సమర్పించడం ద్వారా లేదా ఒక సీక్వెన్సర్ లేదా వాలిడేటర్ వారి కోసం చేయడం ద్వారా L2 కాంట్రాక్టులతో సంకర్షణ చెందుతారు. ఆప్టిమిస్టిక్ రోలప్‌లు ఇతీరియముపై ఉన్న కాంట్రాక్ట్ ఖాతాలను L1 మరియు L2 మధ్య సందేశాలను రిలే చేయడానికి మరియు డేటాను పంపడానికి బ్రిడ్జింగ్ కాంట్రాక్టులను ఉపయోగించి L2 కాంట్రాక్టులతో సంకర్షణ చెందడానికి కూడా అనుమతిస్తాయి. దీనర్థం, మీరు ఇతీరియము మెయిన్‌నెట్‌పై ఒక L1 కాంట్రాక్ట్‌ను ప్రోగ్రామ్ చేసి, L2 ఆప్టిమిస్టిక్ రోలప్‌పై ఉన్న కాంట్రాక్టులకు చెందిన ఫంక్షన్‌లను ఇన్వోక్ చేయవచ్చు. + +క్రాస్-చైన్ కాంట్రాక్ట్ కాల్స్ అసమకాలికంగా జరుగుతాయి—అంటే కాల్ మొదట ప్రారంభించబడి, తర్వాత అమలు చేయబడుతుంది. ఇది ఇతీరియముపై రెండు కాంట్రాక్టుల మధ్య కాల్స్ నుండి భిన్నంగా ఉంటుంది, ఇక్కడ కాల్ వెంటనే ఫలితాలను ఉత్పత్తి చేస్తుంది. + +క్రాస్-చైన్ కాంట్రాక్ట్ కాల్‌కు ఒక ఉదాహరణ ముందుగా వివరించిన టోకెన్ డిపాజిట్. L1లోని ఒక కాంట్రాక్ట్ వినియోగదారుడి టోకెన్లను ఎస్క్రో చేసి, రోలప్‌లో సమానమైన టోకెన్లను మింట్ చేయడానికి ఒక జత L2 కాంట్రాక్ట్‌కు ఒక సందేశాన్ని పంపుతుంది. + +క్రాస్-చైన్ సందేశ కాల్స్ కాంట్రాక్ట్ అమలుకు దారితీస్తాయి కాబట్టి, పంపినవారు సాధారణంగా గణన కోసం [గ్యాస్ ఖర్చులను](/developers/docs/gas/) భరించవలసి ఉంటుంది. లక్ష్య చైన్‌లో లావాదేవీ విఫలం కాకుండా నిరోధించడానికి అధిక గ్యాస్ పరిమితిని సెట్ చేయడం మంచిది. టోకెన్ బ్రిడ్జింగ్ దృష్టాంతం ఒక మంచి ఉదాహరణ; లావాదేవీ యొక్క L1 వైపు (టోకెన్లను డిపాజిట్ చేయడం) పనిచేసి, కానీ L2 వైపు (కొత్త టోకెన్లను మింట్ చేయడం) తక్కువ గ్యాస్ కారణంగా విఫలమైతే, డిపాజిట్ తిరిగి పొందలేనిదిగా మారుతుంది. + +చివరగా, కాంట్రాక్టుల మధ్య L2 > L1 సందేశ కాల్స్ ఆలస్యాలను పరిగణనలోకి తీసుకోవాలని గమనించాలి (L1 > L2 కాల్స్ సాధారణంగా కొన్ని నిమిషాల తర్వాత అమలు చేయబడతాయి). ఎందుకంటే ఆప్టిమిస్టిక్ రోలప్ నుండి మెయిన్‌నెట్‌కు పంపిన సందేశాలు ఛాలెంజ్ విండో ముగిసే వరకు అమలు చేయబడవు. + +## ఆప్టిమిస్టిక్ రోలప్ ఫీజులు ఎలా పనిచేస్తాయి? {#how-do-optimistic-rollup-fees-work} + +ఆప్టిమిస్టిక్ రోలప్‌లు ఇతీరియము వలె ఒక గ్యాస్ ఫీజు స్కీమ్‌ను ఉపయోగిస్తాయి, ఇది వినియోగదారులు ప్రతి లావాదేవీకి ఎంత చెల్లించాలో సూచిస్తుంది. ఆప్టిమిస్టిక్ రోలప్‌లపై వసూలు చేయబడే ఫీజులు క్రింది భాగాలపై ఆధారపడి ఉంటాయి: + +1. **స్టేట్ రైట్**: ఆప్టిమిస్టిక్ రోలప్‌లు లావాదేవీ డేటా మరియు బ్లాక్ హెడర్‌లను (మునుపటి బ్లాక్ హెడర్ హాష్, స్థితి రూట్, బ్యాచ్ రూట్‌తో కూడినవి) ఇతీరియముకు ఒక `blob`, లేదా "బైనరీ లార్జ్ ఆబ్జెక్ట్"గా ప్రచురిస్తాయి. [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) ఆన్‌చెయిన్‌లో డేటాను చేర్చడానికి ఒక ఖర్చు-సమర్థవంతమైన పరిష్కారాన్ని ప్రవేశపెట్టింది. ఒక `blob` అనేది ఒక కొత్త లావాదేవీ ఫీల్డ్, ఇది రోలప్‌లు కంప్రెస్డ్ స్థితి పరివర్తన డేటాను ఇతీరియము L1కు పోస్ట్ చేయడానికి అనుమతిస్తుంది. `calldata` వలె కాకుండా, ఇది శాశ్వతంగా ఆన్‌చెయిన్‌లో ఉంటుంది, బ్లాబ్స్ స్వల్పకాలికమైనవి మరియు [4096 యుగాల](https://github.com/ethereum/consensus-specs/blob/81f3ea8322aff6b9fb15132d050f8f98b16bdba4/configs/mainnet.yaml#L147) తర్వాత (సుమారు 18 రోజులు) ఖాతాదారుల నుండి కత్తిరించబడతాయి. కంప్రెస్డ్ లావాదేవీల బ్యాచ్‌లను పోస్ట్ చేయడానికి బ్లాబ్స్‌ను ఉపయోగించడం ద్వారా, ఆప్టిమిస్టిక్ రోలప్‌లు L1కు లావాదేవీలను వ్రాసే ఖర్చును గణనీయంగా తగ్గించగలవు. + +2. **బ్లాబ్ గ్యాస్ ఉపయోగించబడింది**: బ్లాబ్-క్యారీయింగ్ లావాదేవీలు [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) ద్వారా ప్రవేశపెట్టబడిన దానికి సమానమైన డైనమిక్ ఫీజు మెకానిజంను ఉపయోగిస్తాయి. టైప్-3 లావాదేవీల కోసం గ్యాస్ ఫీజు బ్లాబ్స్ కోసం మూల రుసుమును పరిగణనలోకి తీసుకుంటుంది, ఇది బ్లాబ్-స్పేస్ డిమాండ్ మరియు పంపబడుతున్న లావాదేవీ యొక్క బ్లాబ్-స్పేస్ వాడకం ఆధారంగా నెట్‌వర్క్ ద్వారా నిర్ణయించబడుతుంది. + +3. **L2 ఆపరేటర్ ఫీజులు**: ఇది లావాదేవీలను ప్రాసెస్ చేయడంలో అయ్యే గణన ఖర్చులకు పరిహారంగా రోలప్ నోడ్స్‌కు చెల్లించబడే మొత్తం, ఇతీరియముపై గ్యాస్ ఫీజుల వలె. L2లకు అధిక ప్రాసెసింగ్ సామర్థ్యాలు ఉన్నందున మరియు ఇతీరియముపై వాలిడేటర్లను అధిక ఫీజులతో లావాదేవీలకు ప్రాధాన్యత ఇవ్వమని బలవంతం చేసే నెట్‌వర్క్ రద్దీలను ఎదుర్కోనందున రోలప్ నోడ్స్ తక్కువ లావాదేవీ ఫీజులను వసూలు చేస్తాయి. + +ఆప్టిమిస్టిక్ రోలప్‌లు వినియోగదారుల కోసం ఫీజులను తగ్గించడానికి అనేక మెకానిజమ్‌లను వర్తింపజేస్తాయి, ఇందులో లావాదేవీలను బ్యాచింగ్ చేయడం మరియు డేటా ప్రచురణ ఖర్చులను తగ్గించడానికి `calldata`ను కుదించడం వంటివి ఉంటాయి. ఇతీరియము-ఆధారిత ఆప్టిమిస్టిక్ రోలప్‌లను ఉపయోగించడానికి ఎంత ఖర్చవుతుందో నిజ-సమయ అవలోకనం కోసం మీరు [L2 ఫీ ట్రాకర్‌](https://l2fees.info/)ని తనిఖీ చేయవచ్చు. + +## ఆప్టిమిస్టిక్ రోలప్‌లు ఇతీరియమును ఎలా స్కేల్ చేస్తాయి? {#scaling-ethereum-with-optimistic-rollups} + +వివరించినట్లుగా, ఆప్టిమిస్టిక్ రోలప్‌లు డేటా లభ్యతకు హామీ ఇవ్వడానికి ఇతీరియముపై కుదించబడిన లావాదేవీ డేటాను ప్రచురిస్తాయి. ఆన్‌చెయిన్‌లో ప్రచురించబడిన డేటాను కుదించగల సామర్థ్యం ఆప్టిమిస్టిక్ రోలప్‌లతో ఇతీరియముపై త్రూపుట్‌ను స్కేలింగ్ చేయడానికి కీలకం. + +ప్రధాన ఇతీరియము చైన్ బ్లాక్‌లు ఎంత డేటాను కలిగి ఉండగలవో గ్యాస్ యూనిట్లలో (సగటు బ్లాక్ పరిమాణం 15 మిలియన్ల గ్యాస్) పరిమితులను విధిస్తుంది. ఇది ప్రతి లావాదేవీ ఎంత గ్యాస్‌ను ఉపయోగించగలదో పరిమితం చేస్తున్నప్పటికీ, లావాదేవీ-సంబంధిత డేటాను తగ్గించడం ద్వారా ప్రతి బ్లాక్‌కు ప్రాసెస్ చేయబడిన లావాదేవీలను పెంచవచ్చని కూడా దీని అర్థం—ఇది నేరుగా స్కేలబిలిటీని మెరుగుపరుస్తుంది. + +ఆప్టిమిస్టిక్ రోలప్‌లు లావాదేవీ డేటా కుదింపును సాధించడానికి మరియు TPS రేట్లను మెరుగుపరచడానికి అనేక పద్ధతులను ఉపయోగిస్తాయి. ఉదాహరణకు, ఈ [వ్యాసం](https://vitalik.eth.limo/general/2021/01/05/rollup.html) మెయిన్‌నెట్‌లో ఒక ప్రాథమిక వినియోగదారు లావాదేవీ (ఈథర్ పంపడం) ఉత్పత్తి చేసే డేటాను మరియు అదే లావాదేవీ రోలప్‌లో ఎంత డేటాను ఉత్పత్తి చేస్తుందో పోలుస్తుంది: + +| పరామితి | ఇతీరియము (L1) | రోలప్ (L2) | +| ------------- | ---------------------------------------------------- | ------------------------------------ | +| నాన్స్ | ~3 | 0 | +| గ్యాస్‌ప్రైస్ | ~8 | 0-0.5 | +| గ్యాస్ | 3 | 0-0.5 | +| కు | 21 | 4 | +| విలువ | 9 | ~3 | +| సంతకం | ~68 (2 + 33 + 33) | ~0.5 | +| నుండి | 0 (sig నుండి తిరిగి పొందబడింది) | 4 | +| **మొత్తం** | **~112 బైట్లు** | **~12 బైట్లు** | + +ఈ సంఖ్యలపై కొన్ని స్థూల గణనలు చేయడం ఆప్టిమిస్టిక్ రోలప్ అందించే స్కేలబిలిటీ మెరుగుదలలను చూపడంలో సహాయపడుతుంది: + +1. ప్రతి బ్లాక్ యొక్క లక్ష్య పరిమాణం 15 మిలియన్ల గ్యాస్ మరియు ఒక బైట్ డేటాను ధృవీకరించడానికి 16 గ్యాస్ ఖర్చవుతుంది. సగటు బ్లాక్ పరిమాణాన్ని 16 గ్యాస్‌తో (15,000,000/16) భాగించడం ద్వారా సగటు బ్లాక్ **937,500 బైట్ల డేటాను** కలిగి ఉండగలదని చూపిస్తుంది. +2. ఒక ప్రాథమిక రోలప్ లావాదేవీ 12 బైట్లను ఉపయోగిస్తే, సగటు ఇతీరియము బ్లాక్ **78,125 రోలప్ లావాదేవీలను** (937,500/12) లేదా **39 రోలప్ బ్యాచ్‌లను** (ప్రతి బ్యాచ్ సగటున 2,000 లావాదేవీలను కలిగి ఉంటే) ప్రాసెస్ చేయగలదు. +3. ప్రతి 15 సెకన్లకు ఇతీరియములో ఒక కొత్త బ్లాక్ ఉత్పత్తి చేయబడితే, రోలప్ యొక్క ప్రాసెసింగ్ వేగం సెకనుకు సుమారు **5,208 లావాదేవీలు** అవుతుంది. ఇది ఒక ఇతీరియము బ్లాక్ కలిగి ఉండగల ప్రాథమిక రోలప్ లావాదేవీల సంఖ్యను (**78,125**) సగటు బ్లాక్ సమయంతో (**15 సెకన్లు**) భాగించడం ద్వారా చేయబడుతుంది. + +ఆప్టిమిస్టిక్ రోలప్ లావాదేవీలు ఇతీరియములో మొత్తం బ్లాక్‌ను కలిగి ఉండవు కాబట్టి ఇది చాలా ఆశాజనకమైన అంచనా. అయితే, ఆప్టిమిస్టిక్ రోలప్‌లు ఇతీరియము వినియోగదారులకు ఎంత స్కేలబిలిటీ లాభాలను అందించగలవో ఇది ఒక స్థూల ఆలోచనను ఇస్తుంది (ప్రస్తుత అమలులు 2,000 TPS వరకు అందిస్తాయి). + +ఇతీరియముపై [డేటా షార్డింగ్](/roadmap/danksharding/) ప్రవేశపెట్టడం ఆప్టిమిస్టిక్ రోలప్‌లలో స్కేలబిలిటీని మెరుగుపరుస్తుందని భావిస్తున్నారు. రోలప్ లావాదేవీలు ఇతర నాన్-రోలప్ లావాదేవీలతో బ్లాక్‌స్పేస్‌ను పంచుకోవాలి కాబట్టి, వాటి ప్రాసెసింగ్ సామర్థ్యం ప్రధాన ఇతీరియము చైన్‌పై డేటా త్రూపుట్ ద్వారా పరిమితం చేయబడింది. డంక్‌షార్డింగ్ L2 చైన్‌లకు ప్రతి బ్లాక్‌కు డేటాను ప్రచురించడానికి అందుబాటులో ఉన్న స్థలాన్ని పెంచుతుంది, ఖరీదైన, శాశ్వత `CALLDATA`కు బదులుగా చౌకైన, అశాశ్వతమైన "బ్లాబ్" నిల్వను ఉపయోగిస్తుంది. + +### ఆప్టిమిస్టిక్ రోలప్‌ల యొక్క లాభాలు మరియు నష్టాలు {#optimistic-rollups-pros-and-cons} + +| ప్రయోజనాలు | అప్రయోజనాలు | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| భద్రత లేదా ట్రస్ట్‌లెస్నెస్‌ను త్యాగం చేయకుండా స్కేలబిలిటీలో భారీ మెరుగుదలలను అందిస్తుంది. | సంభావ్య మోసం సవాళ్ల కారణంగా లావాదేవీ ఫైనాలిటీలో ఆలస్యం. | +| లావాదేవీ డేటా లేయర్ 1 చైన్‌లో నిల్వ చేయబడుతుంది, పారదర్శకత, భద్రత, సెన్సార్‌షిప్-నిరోధకత మరియు వికేంద్రీకరణను మెరుగుపరుస్తుంది. | కేంద్రీకృత రోలప్ ఆపరేటర్లు (సీక్వెన్సర్లు) లావాదేవీ క్రమాన్ని ప్రభావితం చేయవచ్చు. | +| మోసం రుజువు ట్రస్ట్‌లెస్ ఫైనాలిటీకి హామీ ఇస్తుంది మరియు నిజాయితీగల మైనారిటీలు చైన్‌ను సురక్షితంగా ఉంచడానికి అనుమతిస్తుంది. | నిజాయితీగల నోడ్స్ లేకపోతే, ఒక దురుద్దేశపూర్వక ఆపరేటర్ చెల్లని బ్లాక్‌లు మరియు స్థితి కమిట్‌మెంట్‌లను పోస్ట్ చేయడం ద్వారా నిధులను దొంగిలించవచ్చు. | +| మోసం రుజువులను గణించడం సాధారణ L2 నోడ్‌కు అందుబాటులో ఉంటుంది, ప్రత్యేక హార్డ్‌వేర్ అవసరమయ్యే చెల్లుబాటు రుజువుల (ZK-రోలప్‌లలో ఉపయోగించబడేవి) వలె కాకుండా. | భద్రతా మోడల్ కనీసం ఒక నిజాయితీగల నోడ్ రోలప్ లావాదేవీలను అమలు చేయడం మరియు చెల్లని స్థితి పరివర్తనలను సవాలు చేయడానికి మోసం రుజువులను సమర్పించడంపై ఆధారపడి ఉంటుంది. | +| రోలప్‌లు "ట్రస్ట్‌లెస్ లైవ్‌నెస్" నుండి ప్రయోజనం పొందుతాయి (ఎవరైనా లావాదేవీలను అమలు చేయడం మరియు అస్సెర్షన్‌లను పోస్ట్ చేయడం ద్వారా చైన్‌ను ముందుకు నెట్టవచ్చు) | వినియోగదారులు నిధులను తిరిగి ఇతీరియముకు ఉపసంహరించుకునే ముందు ఒక వారం ఛాలెంజ్ పీరియడ్ ముగిసే వరకు వేచి ఉండాలి. | +| ఆప్టిమిస్టిక్ రోలప్‌లు చైన్‌పై భద్రతను పెంచడానికి బాగా రూపొందించిన క్రిప్టోఎకనామిక్ ప్రోత్సాహకాలపై ఆధారపడతాయి. | రోలప్‌లు అన్ని లావాదేవీ డేటాను ఆన్‌చెయిన్‌లో పోస్ట్ చేయాలి, ఇది ఖర్చులను పెంచవచ్చు. | +| EVM మరియు Solidityతో అనుకూలత డెవలపర్‌లను ఇతీరియము-స్థానిక స్మార్ట్ కాంట్రాక్టులను రోలప్‌లకు పోర్ట్ చేయడానికి లేదా కొత్త డాప్స్‌ను సృష్టించడానికి ఇప్పటికే ఉన్న పనిముట్లను ఉపయోగించడానికి అనుమతిస్తుంది. | | + +### ఆప్టిమిస్టిక్ రోలప్‌ల యొక్క దృశ్య వివరణ {#optimistic-video} + +దృశ్య అభ్యాసకులా? ఆప్టిమిస్టిక్ రోలప్‌లను వివరించే ఫైనిమాటిక్స్ చూడండి: + + + +## ఆప్టిమిస్టిక్ రోలప్‌లపై మరింత పఠనం + +- [ఆప్టిమిస్టిక్ రోలప్‌లు ఎలా పనిచేస్తాయి (పూర్తి గైడ్)](https://www.alchemy.com/overviews/optimistic-rollups) +- [ఒక బ్లాక్ చైను రోలప్ అంటే ఏమిటి? ఒక సాంకేతిక పరిచయం](https://www.ethereum-ecosystem.com/blog/what-is-a-blockchain-rollup-a-technical-introduction) +- [ఆర్బిట్రమ్‌కు అవసరమైన గైడ్](https://www.bankless.com/the-essential-guide-to-arbitrum) +- [ఇతీరియము రోలప్‌లకు ప్రాక్టికల్ గైడ్](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups) +- [ఇతీరియము L2లలో మోసం రుజువుల స్థితి](https://web.archive.org/web/20241124154627/https://research.2077.xyz/the-state-of-fraud-proofs-in-ethereum-l2s) +- [ఆప్టిమిజం యొక్క రోలప్ నిజంగా ఎలా పనిచేస్తుంది?](https://www.paradigm.xyz/2021/01/how-does-optimism-s-rollup-really-work) +- [OVM డీప్ డైవ్](https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52) +- [ఆప్టిమిస్టిక్ వర్చువల్ మెషీన్ అంటే ఏమిటి?](https://www.alchemy.com/overviews/optimistic-virtual-machine) diff --git a/public/content/translations/te/developers/docs/scaling/plasma/index.md b/public/content/translations/te/developers/docs/scaling/plasma/index.md new file mode 100644 index 00000000000..b60741d1679 --- /dev/null +++ b/public/content/translations/te/developers/docs/scaling/plasma/index.md @@ -0,0 +1,176 @@ +--- +title: "ప్లాస్మా గొలుసులు" +description: "ప్రస్తుతం Ethereum కమ్యూనిటీ ద్వారా ఉపయోగించబడుతున్న స్కేలింగ్ సొల్యూషన్‌గా ప్లాస్మా చైన్‌లకు పరిచయం." +lang: te +incomplete: true +sidebarDepth: 3 +--- + +ప్లాస్మా చైన్ అనేది Ethereum Mainnetకు లంగరు వేయబడిన ఒక ప్రత్యేక బ్లాక్ చైను, అయితే ఇది బ్లాక్ ధ్రువీకరణ కోసం దాని స్వంత యంత్రాంగంతో ఆఫ్-చెయిన్ లావాదేవీలను అమలు చేస్తుంది. ప్లాస్మా చైన్‌లను కొన్నిసార్లు "చైల్డ్" చైన్‌లుగా సూచిస్తారు, ముఖ్యంగా Ethereum Mainnet యొక్క చిన్న కాపీలు. వివాదాలను మధ్యవర్తిత్వం చేయడానికి ప్లాస్మా చైన్‌లు ([optimistic rollups](/developers/docs/scaling/optimistic-rollups/) లాగా) [fraud proofs](/glossary/#fraud-proof)ను ఉపయోగిస్తాయి. + +మెర్కిల్ ట్రీలు ఈ గొలుసుల యొక్క అంతులేని స్టాక్‌ను సృష్టించడాన్ని ప్రారంభిస్తాయి, ఇవి పేరెంట్ చెయిన్‌ల (Ethereum మెయిన్‌నెట్‌తో సహా) నుండి బ్యాండ్‌విడ్త్‌ను ఆఫ్‌లోడ్ చేయడానికి పని చేస్తాయి. అయితే, ఈ గొలుసులు Ethereum (మోసం రుజువుల ద్వారా) నుండి కొంత భద్రతను పొందినప్పటికీ, వాటి భద్రత మరియు సామర్థ్యం అనేక డిజైన్ పరిమితుల ద్వారా ప్రభావితమవుతాయి. + +## అవసరాలు {#prerequisites} + +మీరు అన్ని ప్రాథమిక అంశాల గురించి మంచి అవగాహన మరియు [ఇతీరియము స్కేలింగ్](/developers/docs/scaling/) గురించి ఉన్నత-స్థాయి అవగాహన కలిగి ఉండాలి. + +## ప్లాస్మా అంటే ఏమిటి? + +ప్లాస్మా అనేది Ethereum వంటి పబ్లిక్ బ్లాక్‌చెయిన్‌లలో స్కేలబిలిటీని మెరుగుపరచడానికి ఒక ఫ్రేమ్‌వర్క్. అసలు [ప్లాస్మా వైట్‌పేపర్](http://plasma.io/plasma.pdf)లో వివరించినట్లుగా, ప్లాస్మా చైన్‌లు మరొక బ్లాక్ చైనుపై నిర్మించబడ్డాయి (దీనిని "రూట్ చైన్" అని పిలుస్తారు). ప్రతి "చైల్డ్ చైన్" రూట్ చైన్ నుండి విస్తరించి ఉంటుంది మరియు సాధారణంగా పేరెంట్ చైన్‌లో అమలు చేయబడిన స్మార్ట్ కాంట్రాక్ట్ ద్వారా నిర్వహించబడుతుంది. + +ప్లాస్మా కాంట్రాక్ట్, ఇతర విషయాలతోపాటు, వినియోగదారులు Ethereum Mainnet మరియు ప్లాస్మా చైన్ మధ్య ఆస్తులను తరలించడానికి అనుమతించే ఒక [వంతెన](/developers/docs/bridges/) వలె పనిచేస్తుంది. ఇది వాటిని [సైడ్చైన్‌ల](/developers/docs/scaling/sidechains/)కు సారూప్యంగా చేసినప్పటికీ, ప్లాస్మా చైన్‌లు—కనీసం కొంతవరకు—Ethereum Mainnet యొక్క భద్రత నుండి ప్రయోజనం పొందుతాయి. ఇది వారి భద్రతకు మాత్రమే బాధ్యత వహించే సైడ్‌చెయిన్‌ల వలె కాకుండా ఉంటుంది. + +## ప్లాస్మా ఎలా పని చేస్తుంది? + +ప్లాస్మా ఫ్రేమ్‌వర్క్ యొక్క ప్రాథమిక భాగాలు: + +### ఆఫ్-చెయిన్ గణన {#offchain-computation} + +Ethereum యొక్క ప్రస్తుత ప్రాసెసింగ్ వేగం సెకనుకు ~ 15-20 లావాదేవీలకు పరిమితం చేయబడింది, ఎక్కువ మంది వినియోగదారులను నిర్వహించడానికి స్కేలింగ్ యొక్క స్వల్పకాలిక అవకాశాన్ని తగ్గిస్తుంది. ఇతీరియము యొక్క [ఏకాభిప్రాయ యంత్రాంగానికి](/developers/docs/consensus-mechanisms/) బ్లాక్ చైను స్థితికి ప్రతి నవీకరణను ధృవీకరించడానికి అనేక పీర్-టు-పీర్ నోడ్లు అవసరం కాబట్టి ఈ సమస్య ప్రధానంగా ఉంది. + +భద్రత కోసం Ethereum యొక్క ఏకాభిప్రాయ విధానం అవసరం అయినప్పటికీ, ఇది ప్రతి వినియోగ సందర్భానికి వర్తించకపోవచ్చు. ఉదాహరణకు, రెండు పార్టీల మధ్య కొంత నమ్మకం ఉన్నందున మొత్తం Ethereum నెట్‌వర్క్ ద్వారా ధృవీకరించబడిన ఒక కప్పు కాఫీ కోసం ఆలిస్‌కి బాబ్‌కి ఆమె రోజువారీ చెల్లింపులు అవసరం లేదు. + +Ethereum Mainnet అన్ని లావాదేవీలను ధృవీకరించాల్సిన అవసరం లేదని ప్లాస్మా భావిస్తోంది. బదులుగా, మేము మెయిన్‌నెట్‌లో లావాదేవీలను ప్రాసెస్ చేయగలము, ప్రతి లావాదేవీని ధృవీకరించకుండా నోడ్‌లను విముక్తి చేస్తాము. + +ప్లాస్మా చైన్‌లు వేగం మరియు ఖర్చు కోసం ఆప్టిమైజ్ చేయగలవు కాబట్టి ఆఫ్-చెయిన్ గణన అవసరం. ఉదాహరణకు, ప్లాస్మా చైన్ లావాదేవీల క్రమాన్ని మరియు అమలును నిర్వహించడానికి ఒకే "ఆపరేటర్"ని ఉపయోగించవచ్చు-మరియు చాలా తరచుగా చేస్తుంది. కేవలం ఒక ఎంటిటీ వెరిఫై చేసే లావాదేవీలతో, ప్లాస్మా చైన్‌లో ప్రాసెసింగ్ సమయాలు Ethereum Mainnet కంటే వేగంగా ఉంటాయి. + +### స్థితి కట్టుబాట్లు {#state-commitments} + +ప్లాస్మా ఆఫ్-చెయిన్ లావాదేవీలను అమలు చేస్తున్నప్పుడు, అవి ప్రధాన ఇతీరియము ఎగ్జిక్యూషన్ లేయర్‌పై స్థిరపడతాయి—లేకపోతే, ప్లాస్మా చైన్‌లు ఇతీరియము యొక్క భద్రతా హామీల నుండి ప్రయోజనం పొందలేవు. కానీ ప్లాస్మా చైన్ యొక్క స్థితిని తెలుసుకోకుండా ఆఫ్-చెయిన్ లావాదేవీలను ఖరారు చేయడం భద్రతా నమూనాను విచ్ఛిన్నం చేస్తుంది మరియు చెల్లని లావాదేవీల విస్తరణను అనుమతిస్తుంది. అందుకే ప్లాస్మా చైన్‌లో బ్లాక్‌లను ఉత్పత్తి చేయడానికి బాధ్యత వహించే సంస్థ అయిన ఆపరేటర్, Ethereumలో కాలానుగుణంగా "స్టేట్ కమిట్‌మెంట్‌లను" ప్రచురించాల్సిన అవసరం ఉంది. + +ఒక [కమిట్‌మెంట్ స్కీమ్](https://en.wikipedia.org/wiki/Commitment_scheme) అనేది ఒక విలువకు లేదా ప్రకటనకు కట్టుబడి, దానిని మరొక పక్షానికి బహిర్గతం చేయకుండా ఉండే ఒక క్రిప్టోగ్రాఫిక్ పద్ధతి. మీరు కట్టుబడి ఉన్న తర్వాత విలువ లేదా స్టేట్‌మెంట్‌ను మార్చలేరు అనే అర్థంలో కమిట్‌మెంట్‌లు "బైండింగ్". ప్లాస్మాలో స్థితి కట్టుబాట్లు "Merkle roots" ([Merkle tree](/whitepaper/#merkle-trees) నుండి ఉద్భవించాయి) రూపాన్ని తీసుకుంటాయి, వీటిని ఆపరేటర్ ఇతీరియము చైన్‌లోని ప్లాస్మా కాంట్రాక్ట్‌కు విరామాలలో పంపుతారు. + +మెర్కిల్ మూలాలు క్రిప్టోగ్రాఫిక్ ప్రిమిటివ్‌లు, ఇవి పెద్ద మొత్తంలో సమాచారాన్ని కుదించడానికి వీలు కల్పిస్తాయి. మెర్కిల్ రూట్ (ఈ సందర్భంలో "బ్లాక్ రూట్" అని కూడా పిలుస్తారు) బ్లాక్‌లోని అన్ని లావాదేవీలను సూచిస్తుంది. మెర్కిల్ రూట్‌లు ఒక చిన్న డేటా పెద్ద డేటాసెట్‌లో భాగమని ధృవీకరించడాన్ని కూడా సులభతరం చేస్తాయి. ఉదాహరణకు, ఒక వినియోగదారుడు ఒక నిర్దిష్ట బ్లాక్‌లో లావాదేవీ చేర్చబడిందని నిరూపించడానికి [Merkle proof](/developers/tutorials/merkle-proofs-for-offline-data-integrity/#main-content)ను ఉత్పత్తి చేయవచ్చు. + +ఆఫ్-చెయిన్ యొక్క స్థితి గురించి ఇతీరియముకు సమాచారాన్ని అందించడానికి Merkle రూట్‌లు ముఖ్యమైనవి. మీరు మెర్కిల్ రూట్‌లను "సేవ్ పాయింట్స్"గా భావించవచ్చు: ఆపరేటర్, "ఇది x పాయింట్‌లో ప్లాస్మా చైన్ యొక్క స్థితి మరియు ఇది రుజువుగా మెర్కిల్ రూట్." ఆపరేటర్ ఒక Merkle రూట్‌తో ప్లాస్మా చైన్ యొక్క _ప్రస్తుత స్థితికి_ కట్టుబడి ఉంటారు, అందుకే దీనిని "స్థితి కట్టుబాటు" అని పిలుస్తారు. + +### ప్రవేశాలు మరియు నిష్క్రమణలు {#entries-and-exits} + +Ethereum వినియోగదారులు ప్లాస్మా ప్రయోజనాన్ని పొందడానికి, Mainnet మరియు ప్లాస్మా గొలుసుల మధ్య నిధులను తరలించడానికి ఒక మెకానిజం ఉండాలి. ప్లాస్మా చైన్‌లోని చిరునామాకు మేము ఏకపక్షంగా ఈథర్‌ను పంపలేము, అయితే-ఈ చైన్‌లు అననుకూలంగా ఉన్నాయి, కాబట్టి లావాదేవీ విఫలమవుతుంది లేదా నిధులను కోల్పోయేలా చేస్తుంది. + +వినియోగదారు ఎంట్రీలు మరియు నిష్క్రమణలను ప్రాసెస్ చేయడానికి ప్లాస్మా Ethereumలో అమలవుతున్న మాస్టర్ ఒప్పందాన్ని ఉపయోగిస్తుంది. ఈ మాస్టర్ కాంట్రాక్ట్ రాష్ట్ర కట్టుబాట్లను ట్రాక్ చేయడానికి కూడా బాధ్యత వహిస్తుంది (ముందు వివరించబడింది) మరియు మోసపూరిత రుజువుల ద్వారా నిజాయితీ లేని ప్రవర్తనను శిక్షించడం (దీని తర్వాత మరింత). + +#### ప్లాస్మా చైన్‌లో ప్రవేశించడం {#entering-the-plasma-chain} + +ప్లాస్మా చైన్‌లోకి ప్రవేశించడానికి, ఆలిస్ (వినియోగదారు) ప్లాస్మా ఒప్పందంలో ETH లేదా ఏదైనా ERC-20 టోకెన్‌ను డిపాజిట్ చేయాలి. కాంట్రాక్ట్ డిపాజిట్‌లను చూసే ప్లాస్మా ఆపరేటర్, ఆలిస్ ప్రారంభ డిపాజిట్‌కి సమానమైన మొత్తాన్ని తిరిగి సృష్టించి, ప్లాస్మా చైన్‌లోని ఆమె చిరునామాకు విడుదల చేస్తాడు. చైల్డ్ చైన్‌లో నిధులను స్వీకరించినట్లు ఆలిస్ ధృవీకరించాలి మరియు ఆ తర్వాత లావాదేవీల కోసం ఈ నిధులను ఉపయోగించవచ్చు. + +#### ప్లాస్మా చైన్ నుండి నిష్క్రమించడం {#exiting-the-plasma-chain} + +అనేక కారణాల వల్ల ప్లాస్మా చైన్‌లోకి ప్రవేశించడం కంటే నిష్క్రమించడం చాలా క్లిష్టంగా ఉంటుంది. అతిపెద్దది ఏమిటంటే, Ethereum ప్లాస్మా చైన్ స్థితి గురించి సమాచారాన్ని కలిగి ఉన్నప్పటికీ, అది సమాచారం నిజమో కాదో ధృవీకరించలేదు. హానికరమైన వినియోగదారు తప్పుగా వాదించవచ్చు ("నా వద్ద 1000 ETH ఉంది") మరియు దావాను బ్యాకప్ చేయడానికి నకిలీ రుజువులను అందించకుండా తప్పించుకోవచ్చు. + +హానికరమైన ఉపసంహరణలను నిరోధించడానికి, "ఛాలెంజ్ పీరియడ్" ప్రవేశపెట్టబడింది. ఛాలెంజ్ వ్యవధిలో (సాధారణంగా ఒక వారం), ఎవరైనా మోసం ప్రూఫ్ ఉపయోగించి ఉపసంహరణ అభ్యర్థనను సవాలు చేయవచ్చు. సవాలు విజయవంతమైతే, ఉపసంహరణ అభ్యర్థన తిరస్కరించబడుతుంది. + +అయినప్పటికీ, వినియోగదారులు నిజాయితీగా ఉంటారు మరియు వారి స్వంత నిధుల గురించి సరైన క్లెయిమ్‌లు చేయడం సాధారణంగా జరుగుతుంది. ఈ దృష్టాంతంలో, ప్లాస్మా ఒప్పందానికి లావాదేవీని సమర్పించడం ద్వారా రూట్ చైన్ (Ethereum) పై ఉపసంహరణ అభ్యర్థనను ఆలిస్ ప్రారంభిస్తుంది. + +ప్లాస్మా చైన్‌లో తన నిధులను సృష్టించే లావాదేవీ బ్లాక్‌లో చేర్చబడిందని ధృవీకరించే మెర్కిల్ రుజువును కూడా ఆమె అందించాలి. [Unspent Transaction Output (UTXO)](https://en.wikipedia.org/wiki/Unspent_transaction_output) మోడల్‌ను ఉపయోగించే [ప్లాస్మా MVP](https://www.learnplasma.org/en/learn/mvp.html) వంటి ప్లాస్మా యొక్క పునరావృత్తులకు ఇది అవసరం. + +[ప్లాస్మా క్యాష్](https://www.learnplasma.org/en/learn/cash.html) వంటి ఇతరులు, UTXOలకు బదులుగా నిధులను [నాన్-ఫంగిబుల్ టోకెన్‌ల](/developers/docs/standards/tokens/erc-721/) వలె సూచిస్తాయి. ఉపసంహరణకు, ఈ సందర్భంలో, ప్లాస్మా గొలుసుపై టోకెన్ల యాజమాన్యం యొక్క రుజువు అవసరం. టోకెన్‌తో కూడిన రెండు తాజా లావాదేవీలను సమర్పించడం ద్వారా మరియు ఆ లావాదేవీలను బ్లాక్‌లో చేర్చడాన్ని ధృవీకరించే మెర్కిల్ రుజువును అందించడం ద్వారా ఇది జరుగుతుంది. + +నిజాయితీ ప్రవర్తనకు హామీగా ఉపసంహరణ అభ్యర్థనకు వినియోగదారు తప్పనిసరిగా బాండ్‌ను కూడా జోడించాలి. ఆలిస్ యొక్క ఉపసంహరణ అభ్యర్థన చెల్లదని ఛాలెంజర్ రుజువు చేస్తే, ఆమె బంధం కత్తిరించబడుతుంది మరియు దానిలో కొంత బహుమతిగా ఛాలెంజర్‌కు వెళ్తుంది. + +ఎవరైనా మోసం-ప్రూఫ్ అందించకుండానే ఛాలెంజ్ కాలం గడిచిపోతే, ఆలిస్ యొక్క ఉపసంహరణ అభ్యర్థన చెల్లుబాటు అయ్యేదిగా పరిగణించబడుతుంది, తద్వారా ఆమె Ethereumలో ప్లాస్మా ఒప్పందం నుండి డిపాజిట్లను తిరిగి పొందేందుకు అనుమతిస్తుంది. + +### వివాద మధ్యవర్తిత్వం {#dispute-arbitration} + +ఏదైనా బ్లాక్ చైను మాదిరిగానే, పాల్గొనేవారు హానికరంగా వ్యవహరించిన సందర్భంలో (ఉదా., నిధులను రెండుసార్లు ఖర్చు చేయడం) లావాదేవీల సమగ్రతను అమలు చేయడానికి ప్లాస్మా చైన్‌లకు ఒక యంత్రాంగం అవసరం. ఈ క్రమంలో, ప్లాస్మా చైన్‌లు రాష్ట్ర పరివర్తనల యొక్క చెల్లుబాటుకు సంబంధించిన వివాదాలను మధ్యవర్తిత్వం చేయడానికి మరియు చెడు ప్రవర్తనకు జరిమానా విధించడానికి మోసపూరిత రుజువులను ఉపయోగిస్తాయి. ప్లాస్మా చైల్డ్ చైన్ దాని పేరెంట్ చెయిన్‌కి లేదా రూట్ చెయిన్‌కి ఫిర్యాదు చేసే మెకానిజం వలె మోసపూరిత రుజువులు ఉపయోగించబడతాయి. + +మోసం-రుజువు అనేది ఒక నిర్దిష్ట రాష్ట్ర పరివర్తన చెల్లుబాటు కాదని కేవలం దావా. ఒక వినియోగదారు (ఆలిస్) ఒకే నిధులను రెండుసార్లు ఖర్చు చేయడానికి ప్రయత్నిస్తే ఒక ఉదాహరణ. బహుశా ఆమె బాబ్‌తో లావాదేవీలో UTXOని ఖర్చు చేసి ఉండవచ్చు మరియు అదే UTXO (ఇది ఇప్పుడు బాబ్‌కి చెందినది) మరొక లావాదేవీలో ఖర్చు చేయాలనుకుంటుంది. + +ఉపసంహరణను నిరోధించడానికి, బాబ్ మునుపటి లావాదేవీలో పేర్కొన్న UTXOని ఆలిస్ ఖర్చు చేసినట్లు రుజువు మరియు లావాదేవీని బ్లాక్‌లో చేర్చినందుకు మెర్కిల్ రుజువును అందించడం ద్వారా మోసం-ప్రూఫ్‌ను నిర్మిస్తాడు. అదే ప్రక్రియ ప్లాస్మా క్యాష్‌లో పనిచేస్తుంది-ఆలిస్ తను ఉపసంహరించుకోవడానికి ప్రయత్నిస్తున్న టోకెన్‌లను ఇంతకు ముందు బదిలీ చేసిందని బాబ్ రుజువును అందించాలి. + +బాబ్ యొక్క సవాలు విజయవంతమైతే, ఆలిస్ ఉపసంహరణ అభ్యర్థన రద్దు చేయబడుతుంది. అయితే, ఈ విధానం ఉపసంహరణ అభ్యర్థనల కోసం గొలుసును చూసే బాబ్ సామర్థ్యంపై ఆధారపడి ఉంటుంది. బాబ్ ఆఫ్‌లైన్‌లో ఉంటే, సవాలు వ్యవధి ముగిసిన తర్వాత ఆలిస్ హానికరమైన ఉపసంహరణను ప్రాసెస్ చేయవచ్చు. + +## ప్లాస్మాలో సామూహిక నిష్క్రమణ సమస్య {#the-mass-exit-problem-in-plasma} + +పెద్ద సంఖ్యలో వినియోగదారులు ఒకే సమయంలో ప్లాస్మా చైన్ నుండి ఉపసంహరించుకోవడానికి ప్రయత్నించినప్పుడు మాస్ ఎగ్జిట్ సమస్య ఏర్పడుతుంది. ఈ సమస్య ఎందుకు ఉందంటే, అది ప్లాస్మా యొక్క అతిపెద్ద సమస్యలలో ఒకటైన: **డేటా లభ్యత లేకపోవడం**. + +డేటా లభ్యత అనేది ప్రతిపాదిత బ్లాక్‌కు సంబంధించిన సమాచారం వాస్తవానికి బ్లాక్‌చెయిన్ నెట్‌వర్క్‌లో ప్రచురించబడిందని ధృవీకరించే సామర్ధ్యం. నిర్మాత బ్లాక్‌ని స్వయంగా ప్రచురించినా బ్లాక్‌ని సృష్టించడానికి ఉపయోగించే డేటాను నిలిపివేస్తే బ్లాక్ "అందుబాటులో లేదు". + +నోడ్‌లు బ్లాక్‌ను డౌన్‌లోడ్ చేయగలిగితే మరియు లావాదేవీల చెల్లుబాటును ధృవీకరించాలంటే బ్లాక్‌లు తప్పనిసరిగా అందుబాటులో ఉండాలి. బ్లాక్ చైనులు అన్ని లావాదేవీల డేటాను ఆన్-చైన్‌లో పోస్ట్ చేయమని బ్లాక్ ప్రొడ్యూసర్‌లను ఒత్తిడి చేయడం ద్వారా డేటా లభ్యతను నిర్ధారిస్తాయి. + +ఇతీరియము యొక్క బేస్ లేయర్‌పై నిర్మించే ఆఫ్-చెయిన్ స్కేలింగ్ ప్రోటోకాల్‌లను సురక్షితం చేయడంలో డేటా లభ్యత కూడా సహాయపడుతుంది. Ethereumలో లావాదేవీ డేటాను ప్రచురించమని ఈ గొలుసులపై ఆపరేటర్‌లను బలవంతం చేయడం ద్వారా, గొలుసు యొక్క సరైన స్థితిని సూచించే మోసపూరిత రుజువులను రూపొందించడం ద్వారా ఎవరైనా చెల్లని బ్లాక్‌లను సవాలు చేయవచ్చు. + +ప్లాస్మా చైన్‌లు ప్రధానంగా ఆపరేటర్‌తో లావాదేవీల డేటాను నిల్వ చేస్తాయి మరియు **Mainnetలో ఏ డేటాను ప్రచురించవు** (అంటే, ఆవర్తన స్థితి కట్టుబాట్లు మినహా). చెల్లని లావాదేవీలను సవాలు చేసే మోసపూరిత రుజువులను సృష్టించాల్సిన అవసరం ఉన్నట్లయితే, వినియోగదారులు బ్లాక్ డేటాను అందించడానికి ఆపరేటర్‌పై ఆధారపడాలి. ఈ సిస్టమ్ పని చేస్తే, వినియోగదారులు ఎల్లప్పుడూ నిధులను సురక్షితంగా ఉంచుకోవడానికి మోసపూరిత రుజువులను ఉపయోగించవచ్చు. + +ఆపరేటర్, ఏ యూజర్ అయినా, పార్టీ దురుద్దేశపూర్వకంగా ప్రవర్తించినప్పుడు సమస్య మొదలవుతుంది. బ్లాక్‌చెయిన్‌పై ఆపరేటర్ పూర్తిగా నియంత్రణలో ఉన్నందున, ప్లాస్మా చైన్‌లోని వినియోగదారులకు చెందిన నిధులను దొంగిలించడం వంటి పెద్ద స్థాయిలో చెల్లని స్థితి పరివర్తనలను ముందుకు తీసుకెళ్లడానికి వారికి మరింత ప్రోత్సాహం ఉంటుంది. + +ఈ సందర్భంలో, క్లాసిక్ మోసం-ప్రూఫ్ వ్యవస్థను ఉపయోగించడం పనిచేయదు. ఆపరేటర్ ఆలిస్ మరియు బాబ్ యొక్క నిధులను వారి వాలెట్‌కు బదిలీ చేయడం ద్వారా చెల్లని లావాదేవీని సులభంగా చేయవచ్చు మరియు మోసం-ప్రూఫ్‌ను రూపొందించడానికి అవసరమైన డేటాను దాచవచ్చు. వినియోగదారులు లేదా మెయిన్‌నెట్‌కు డేటాను అందుబాటులో ఉంచడానికి ఆపరేటర్ అవసరం లేనందున ఇది సాధ్యమవుతుంది. + +అందువల్ల, ప్లాస్మా చైన్ నుండి వినియోగదారులు "సామూహిక నిష్క్రమణ"ని ప్రయత్నించడం అత్యంత ఆశావాద పరిష్కారం. మాస్ ఎగ్జిట్ నిధులను దొంగిలించడానికి హానికరమైన ఆపరేటర్ యొక్క ప్రణాళికను నెమ్మదిస్తుంది మరియు వినియోగదారులకు కొంత రక్షణను అందిస్తుంది. ప్రతి UTXO (లేదా టోకెన్) ఎప్పుడు సృష్టించబడింది అనే దాని ఆధారంగా ఉపసంహరణ అభ్యర్థనలు ఆర్డర్ చేయబడతాయి, ఇది హానికరమైన ఆపరేటర్‌లను ఫ్రంట్-రన్నింగ్ నిజాయితీ గల వినియోగదారుల నుండి నిరోధించడం. + +అయినప్పటికీ, మాస్ ఎగ్జిట్ సమయంలో ఉపసంహరణ అభ్యర్థనల చెల్లుబాటును ధృవీకరించడానికి మాకు ఇంకా ఒక మార్గం అవసరం-అవకాశవాద వ్యక్తులు గందరగోళ ప్రాసెసింగ్ చెల్లని నిష్క్రమణలను క్యాష్ చేసుకోకుండా నిరోధించడానికి. పరిష్కారం చాలా సులభం: వినియోగదారులు వారి డబ్బును నిష్క్రమించడానికి చైన్ యొక్క చివరి **చెల్లుబాటు అయ్యే స్థితిని** పోస్ట్ చేయాలి. + +కానీ ఈ విధానం ఇప్పటికీ సమస్యలను కలిగి ఉంది. ఉదాహరణకు, ప్లాస్మా చైన్‌లోని వినియోగదారులందరూ నిష్క్రమించాల్సిన అవసరం ఉంటే (ఇది హానికరమైన ఆపరేటర్ విషయంలో సాధ్యమవుతుంది), అప్పుడు ప్లాస్మా చైన్ యొక్క మొత్తం చెల్లుబాటు అయ్యే స్థితిని తప్పనిసరిగా Ethereum యొక్క బేస్ లేయర్‌పై ఒకేసారి డంప్ చేయాలి. ప్లాస్మా చైన్‌ల యొక్క ఏకపక్ష పరిమాణం (అధిక నిర్గమాంశ = ఎక్కువ డేటా) మరియు Ethereum యొక్క ప్రాసెసింగ్ వేగంపై పరిమితులతో, ఇది సరైన పరిష్కారం కాదు. + +నిష్క్రమణ గేమ్‌లు సిద్ధాంతపరంగా చక్కగా అనిపించినప్పటికీ, నిజ జీవిత మాస్ ఎగ్జిట్‌లు Ethereumలోనే నెట్‌వర్క్-వ్యాప్త రద్దీని కలిగిస్తాయి. Ethereum యొక్క కార్యాచరణకు హాని కలిగించడమే కాకుండా, పేలవంగా సమన్వయం లేని మాస్ ఎగ్జిట్ అంటే, ఆపరేటర్ ప్లాస్మా చైన్‌లోని ప్రతి ఖాతాను తొలగించే ముందు వినియోగదారులు నిధులను ఉపసంహరించుకోలేకపోవచ్చు. + +## ప్లాస్మా యొక్క లాభనష్టాలు {#pros-and-cons-of-plasma} + +| ప్రయోజనాలు | అప్రయోజనాలు | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ప్రతి లావాదేవీకి అధిక నిర్గమాంశ మరియు తక్కువ ధరను అందిస్తుంది. | సాధారణ గణనకు మద్దతు ఇవ్వదు (స్మార్ట్ కాంట్రాక్టులను అమలు చేయలేము). ప్రాథమిక టోకెన్ బదిలీలు, మార్పిడులు మరియు కొన్ని ఇతర లావాదేవీ రకాలు మాత్రమే ప్రిడికేట్ లాజిక్ ద్వారా మద్దతు ఇవ్వబడతాయి. | +| ఏకపక్ష వినియోగదారుల మధ్య లావాదేవీలకు మంచిది (ఇద్దరూ ప్లాస్మా చైన్‌లో స్థాపించబడితే ప్రతి వినియోగదారు జతకు ఓవర్‌హెడ్ ఉండదు) | మీ నిధుల భద్రతను నిర్ధారించడానికి నెట్‌వర్క్‌ను కాలానుగుణంగా గమనించాలి (సజీవత్వ అవసరం) లేదా ఈ బాధ్యతను వేరొకరికి అప్పగించాలి. | +| ప్రధాన చైన్‌కు సంబంధం లేని నిర్దిష్ట వినియోగ-కేసులకు ప్లాస్మా చైన్‌లను అనుగుణంగా మార్చుకోవచ్చు. వ్యాపారాలతో సహా ఎవరైనా, విభిన్న సందర్భాలలో పనిచేసే స్కేలబుల్ మౌలిక సదుపాయాలను అందించడానికి ప్లాస్మా స్మార్ట్ కాంట్రాక్టులను అనుకూలీకరించవచ్చు. | డేటాను నిల్వ చేయడానికి మరియు అభ్యర్థనపై దానిని అందించడానికి ఒకటి లేదా అంతకంటే ఎక్కువ ఆపరేటర్లపై ఆధారపడి ఉంటుంది. | +| గణన మరియు నిల్వను ఆఫ్-చెయిన్‌కు తరలించడం ద్వారా ఇతీరియము Mainnetపై భారాన్ని తగ్గిస్తుంది. | సవాళ్లను అనుమతించడానికి ఉపసంహరణలు చాలా రోజులు ఆలస్యం చేయబడతాయి. ఫంగిబుల్ ఆస్తుల కోసం, ద్రవ్యత ప్రదాతల ద్వారా దీనిని తగ్గించవచ్చు, కానీ దానితో అనుబంధిత మూలధన వ్యయం ఉంటుంది. | +| | చాలా మంది వినియోగదారులు ఒకేసారి నిష్క్రమించడానికి ప్రయత్నిస్తే, ఇతీరియము Mainnet రద్దీగా మారవచ్చు. | + +## ప్లాస్మా వర్సెస్ లేయర్ 2 స్కేలింగ్ ప్రోటోకాల్‌లు {#plasma-vs-layer-2} + +ప్లాస్మా ఒకప్పుడు ఇతీరియముకు ఉపయోగకరమైన స్కేలింగ్ పరిష్కారంగా పరిగణించబడినప్పటికీ, అప్పటి నుండి [లేయర్ 2 (L2) స్కేలింగ్ ప్రోటోకాల్‌ల](/layer-2/)కు అనుకూలంగా దానిని వదిలివేయబడింది. L2 స్కేలింగ్ పరిష్కారాలు ప్లాస్మా యొక్క అనేక సమస్యలను పరిష్కరిస్తాయి: + +### సామర్థ్యం {#efficiency} + +[జీరో-కనౌలెడ్జి రోల్అప్‌లు](/developers/docs/scaling/zk-rollups) ఆఫ్-చెయిన్‌లో ప్రాసెస్ చేయబడిన ప్రతి లావాదేవీల బ్యాచ్ యొక్క చెల్లుబాటుకు క్రిప్టోగ్రాఫిక్ ప్రూఫ్‌లను ఉత్పత్తి చేస్తాయి. ఇది వినియోగదారులను (మరియు ఆపరేటర్లను) చెల్లని స్థితి మార్పులను ముందుకు తీసుకెళ్లకుండా నిరోధిస్తుంది, సవాలు కాలాలు మరియు నిష్క్రమణ ఆటల అవసరాన్ని తొలగిస్తుంది. వినియోగదారులు తమ నిధులను భద్రపరచడానికి కాలానుగుణంగా చైన్‌ను గమనించాల్సిన అవసరం లేదని కూడా దీని అర్థం. + +### స్మార్ట్ కాంట్రాక్టులకు మద్దతు {#support-for-smart-contracts} + +ప్లాస్మా ఫ్రేమ్‌వర్క్‌తో మరో సమస్య [ఇతీరియము స్మార్ట్ కాంట్రాక్టుల అమలుకు మద్దతు ఇవ్వలేకపోవడం](https://ethresear.ch/t/why-smart-contracts-are-not-feasible-on-plasma/2598/4). ఫలితంగా, ప్లాస్మా యొక్క చాలా అమలులు ఎక్కువగా సాధారణ చెల్లింపుల కోసం లేదా ERC-20 టోకెన్‌ల మార్పిడి కోసం నిర్మించబడ్డాయి. + +దీనికి విరుద్ధంగా, ఆప్టిమిస్టిక్ రోల్అప్‌లు, [ఎథేరియం వర్చువల్ మషీన్](/developers/docs/evm/)తో అనుకూలంగా ఉంటాయి మరియు ఇతీరియము-స్థానిక [స్మార్ట్ కాంట్రాక్టులను](/developers/docs/smart-contracts/) అమలు చేయగలవు, వాటిని [వికేంద్రీకృత అప్లికేషన్‌లను](/developers/docs/dapps/) స్కేలింగ్ చేయడానికి ఉపయోగకరమైన మరియు _సురక్షితమైన_ పరిష్కారంగా చేస్తాయి. అదేవిధంగా, [EVM యొక్క జీరో-కనౌలెడ్జి అమలు (zkEVM)ను సృష్టించడానికి](https://ethresear.ch/t/a-zk-evm-specification/11549) ప్రణాళికలు జరుగుతున్నాయి, ఇది ZK-రోల్అప్‌లను ఏకపక్ష తర్కాన్ని ప్రాసెస్ చేయడానికి మరియు స్మార్ట్ కాంట్రాక్టులను అమలు చేయడానికి అనుమతిస్తుంది. + +### డేటా అందుబాటులో లేకపోవడం {#data-unavailability} + +ముందుగా వివరించినట్లుగా, ప్లాస్మా డేటా లభ్యత సమస్యతో బాధపడుతుంది. ఒక హానికరమైన ఆపరేటర్ ప్లాస్మా చైన్‌లో చెల్లని మార్పును ముందుకు తీసుకెళితే, వినియోగదారులు దానిని సవాలు చేయలేరు, ఎందుకంటే ఆపరేటర్ ఫ్రాడ్-ప్రూఫ్‌ను సృష్టించడానికి అవసరమైన డేటాను నిలిపివేయవచ్చు. రోల్అప్‌లు ఈ సమస్యను పరిష్కరిస్తాయి, ఆపరేటర్లు ఇతీరియముపై లావాదేవీ డేటాను పోస్ట్ చేయమని ఒత్తిడి చేయడం ద్వారా, ఎవరైనా చైన్ యొక్క స్థితిని ధృవీకరించడానికి మరియు అవసరమైతే ఫ్రాడ్ ప్రూఫ్‌లను సృష్టించడానికి అనుమతిస్తుంది. + +### సామూహిక నిష్క్రమణ సమస్య {#mass-exit-problem} + +ZK-రోల్అప్‌లు మరియు ఆప్టిమిస్టిక్ రోల్అప్‌లు రెండూ ప్లాస్మా యొక్క సామూహిక నిష్క్రమణ సమస్యను వివిధ మార్గాల్లో పరిష్కరిస్తాయి. ఉదాహరణకు, ఒక ZK-రోల్అప్ క్రిప్టోగ్రాఫిక్ యంత్రాంగాలపై ఆధారపడి ఉంటుంది, ఇవి ఏ దృష్టాంతంలోనైనా ఆపరేటర్లు వినియోగదారు నిధులను దొంగిలించలేరని నిర్ధారిస్తాయి. + +అదేవిధంగా, ఆప్టిమిస్టిక్ రోల్అప్‌లు ఉపసంహరణలపై ఆలస్య కాలాన్ని విధిస్తాయి, ఈ సమయంలో ఎవరైనా ఒక సవాలును ప్రారంభించవచ్చు మరియు హానికరమైన ఉపసంహరణ అభ్యర్థనలను నిరోధించవచ్చు. ఇది ప్లాస్మా మాదిరిగానే ఉన్నప్పటికీ, తేడా ఏమిటంటే, ధృవీకరణకర్తలకు ఫ్రాడ్ ప్రూఫ్‌లను సృష్టించడానికి అవసరమైన డేటాకు ప్రాప్యత ఉంటుంది. అందువల్ల, రోల్అప్ వినియోగదారులు ఇతీరియము Mainnetకు వెర్రిగా, "మొదట-బయటకు-వెళ్లే" వలసలో పాల్గొనవలసిన అవసరం లేదు. + +## ప్లాస్మా సైడ్చైన్‌లు మరియు షార్డింగ్ నుండి ఎలా భిన్నంగా ఉంటుంది? {#plasma-sidechains-sharding} + +ప్లాస్మా, సైడ్చైన్‌లు, మరియు షార్డింగ్ చాలా వరకు సారూప్యంగా ఉంటాయి ఎందుకంటే అవన్నీ ఏదో ఒక విధంగా ఇతీరియము Mainnetకు కనెక్ట్ అవుతాయి. అయితే, ఈ కనెక్షన్‌ల స్థాయి మరియు బలం మారుతూ ఉంటాయి, ఇది ప్రతి స్కేలింగ్ పరిష్కారం యొక్క భద్రతా లక్షణాలను ప్రభావితం చేస్తుంది. + +### ప్లాస్మా వర్సెస్ సైడ్చైన్‌లు {#plasma-vs-sidechains} + +ఒక [సైడ్చైన్](/developers/docs/scaling/sidechains/) అనేది రెండు-మార్గాల వంతెన ద్వారా ఇతీరియము Mainnetకు కనెక్ట్ చేయబడిన స్వతంత్రంగా పనిచేసే బ్లాక్ చైను. [వంతెనలు](/bridges/) వినియోగదారులను సైడ్చైన్‌లో లావాదేవీలు జరపడానికి రెండు బ్లాక్ చైనుల మధ్య టోకెన్‌లను మార్పిడి చేసుకోవడానికి అనుమతిస్తాయి, ఇతీరియము Mainnetపై రద్దీని తగ్గించి మరియు స్కేలబిలిటీని మెరుగుపరుస్తాయి. +సైడ్చైన్‌లు ఒక ప్రత్యేక ఏకాభిప్రాయ యంత్రాంగాన్ని ఉపయోగిస్తాయి మరియు సాధారణంగా ఇతీరియము Mainnet కంటే చాలా చిన్నవిగా ఉంటాయి. ఫలితంగా, ఈ చైన్‌లకు ఆస్తులను వంతెన చేయడం వలన పెరిగిన ప్రమాదం ఉంటుంది; సైడ్చైన్ మోడల్‌లో ఇతీరియము Mainnet నుండి వారసత్వంగా పొందిన భద్రతా హామీలు లేనందున, సైడ్చైన్‌పై దాడిలో వినియోగదారులు నిధుల నష్టాన్ని ఎదుర్కొంటారు. + +దీనికి విరుద్ధంగా, ప్లాస్మా చైన్‌లు తమ భద్రతను Mainnet నుండి పొందుతాయి. ఇది వాటిని సైడ్చైన్‌ల కంటే కొలవదగినంత సురక్షితంగా చేస్తుంది. సైడ్చైన్‌లు మరియు ప్లాస్మా చైన్‌లు రెండూ వేర్వేరు ఏకాభిప్రాయ ప్రోటోకాల్‌లను కలిగి ఉండవచ్చు, కానీ తేడా ఏమిటంటే ప్లాస్మా చైన్‌లు ఇతీరియము Mainnetపై ప్రతి బ్లాక్ కోసం Merkle రూట్‌లను ప్రచురిస్తాయి. బ్లాక్ రూట్‌లు అనేవి ప్లాస్మా చైన్‌లో జరిగే లావాదేవీల గురించి సమాచారాన్ని ధృవీకరించడానికి మనం ఉపయోగించగల చిన్న సమాచార భాగాలు. ప్లాస్మా చైన్‌పై దాడి జరిగితే, వినియోగదారులు తగిన ప్రూఫ్‌లను ఉపయోగించి తమ నిధులను సురక్షితంగా Mainnetకు తిరిగి ఉపసంహరించుకోవచ్చు. + +### ప్లాస్మా వర్సెస్ షార్డింగ్ {#plasma-vs-sharding} + +ప్లాస్మా చైన్‌లు మరియు షార్డ్ చైన్‌లు రెండూ ఇతీరియము Mainnetకు కాలానుగుణంగా క్రిప్టోగ్రాఫిక్ ప్రూఫ్‌లను ప్రచురిస్తాయి. అయితే, రెండింటికీ వేర్వేరు భద్రతా లక్షణాలు ఉన్నాయి. + +షార్డ్ చైన్‌లు ప్రతి డేటా షార్డ్ గురించి వివరణాత్మక సమాచారాన్ని కలిగి ఉన్న "కోలేషన్ హెడర్‌లను" Mainnetకు కట్టుబడి ఉంటాయి. Mainnetపై ఉన్న నోడ్లు డేటా షార్డ్‌ల చెల్లుబాటును ధృవీకరించి, అమలు చేస్తాయి, చెల్లని షార్డ్ మార్పుల అవకాశాన్ని తగ్గిస్తాయి మరియు నెట్‌వర్క్‌ను హానికరమైన కార్యకలాపాల నుండి రక్షిస్తాయి. + +ప్లాస్మా భిన్నంగా ఉంటుంది ఎందుకంటే Mainnet చైల్డ్ చైన్‌ల స్థితి గురించి కనీస సమాచారాన్ని మాత్రమే పొందుతుంది. దీనర్థం Mainnet చైల్డ్ చైన్‌లలో నిర్వహించే లావాదేవీలను ప్రభావవంతంగా ధృవీకరించలేదు, వాటిని తక్కువ సురక్షితంగా చేస్తుంది. + +**గమనిక** ఇతీరియము బ్లాక్ చైనును షార్డింగ్ చేయడం ఇకపై రోడ్‌మ్యాప్‌లో లేదు. ఇది రోల్అప్‌ల ద్వారా స్కేలింగ్ మరియు [Danksharding](/roadmap/danksharding) ద్వారా భర్తీ చేయబడింది. + +### ప్లాస్మాను ఉపయోగించండి {#use-plasma} + +బహుళ ప్రాజెక్టులు ప్లాస్మా యొక్క అమలులను అందిస్తాయి, మీరు వాటిని మీ డాప్స్‌లో విలీనం చేసుకోవచ్చు: + +- [Polygon](https://polygon.technology/) (గతంలో Matic Network) + +## మరింత సమాచారం {#further-reading} + +- [ప్లాస్మా నేర్చుకోండి](https://www.learnplasma.org/en/) +- ["భాగస్వామ్య భద్రత" అంటే ఏమిటి మరియు అది ఎందుకు అంత ముఖ్యం అనేదానికి ఒక శీఘ్ర రిమైండర్](https://old.reddit.com/r/ethereum/comments/sgd3zt/a_quick_reminder_of_what_shared_security_means/) +- [సైడ్చైన్‌లు వర్సెస్ ప్లాస్మా వర్సెస్ షార్డింగ్](https://vitalik.eth.limo/general/2019/06/12/plasma_vs_sharding.html) +- [ప్లాస్మాను అర్థం చేసుకోవడం, పార్ట్ 1: ప్రాథమికాలు](https://www.theblockcrypto.com/amp/post/10793/understanding-plasma-part-1-the-basics) +- [ప్లాస్మా యొక్క జీవితం మరియు మరణం](https://medium.com/dragonfly-research/the-life-and-death-of-plasma-b72c6a59c5ad#) + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ diff --git a/public/content/translations/te/developers/docs/scaling/sidechains/index.md b/public/content/translations/te/developers/docs/scaling/sidechains/index.md new file mode 100644 index 00000000000..b18ca238af4 --- /dev/null +++ b/public/content/translations/te/developers/docs/scaling/sidechains/index.md @@ -0,0 +1,73 @@ +--- +title: "సైడ్‌చైన్‌లు" +description: "ప్రస్తుతం Ethereum కమ్యూనిటీ ద్వారా ఉపయోగించబడుతున్న స్కేలింగ్ పరిష్కారంగా సైడ్‌చైన్‌లకు ఒక పరిచయం." +lang: te +sidebarDepth: 3 +--- + +ఒక సైడ్‌చైన్ అనేది Ethereum నుండి స్వతంత్రంగా నడిచే ఒక ప్రత్యేక బ్లాక్‌చైన్ మరియు రెండు-మార్గాల వంతెన ద్వారా Ethereum మెయిన్‌నెట్‌కు అనుసంధానించబడి ఉంటుంది. సైడ్‌చైన్‌లు ప్రత్యేక బ్లాక్ పారామితులను మరియు [ఏకాభిప్రాయం అల్గారిథంలను](/developers/docs/consensus-mechanisms/) కలిగి ఉంటాయి, ఇవి తరచుగా లావాదేవీల సమర్థవంతమైన ప్రాసెసింగ్ కోసం రూపొందించబడతాయి. అయితే, సైడ్‌చైన్‌ను ఉపయోగించడం వలన కొన్ని ప్రతికూలతలు ఉంటాయి, ఎందుకంటే అవి Ethereum యొక్క భద్రతా లక్షణాలను వారసత్వంగా పొందవు. [లేయర్ 2 స్కేలింగ్ సొల్యూషన్‌లకు](/layer-2/) విరుద్ధంగా, సైడ్‌చైన్‌లు స్టేట్ మార్పులు మరియు లావాదేవీల డేటాను Ethereum మెయిన్‌నెట్‌కు తిరిగి పోస్ట్ చేయవు. + +అధిక త్రూపుట్ సాధించడానికి సైడ్‌చైన్‌లు కొంతవరకు వికేంద్రీకరణ లేదా భద్రతను కూడా త్యాగం చేస్తాయి ([స్కేలబిలిటీ ట్రిలెమ్మా](https://vitalik.eth.limo/general/2021/05/23/scaling.html)). అయితే, Ethereum వికేంద్రీకరణ మరియు భద్రతపై రాజీ పడకుండా స్కేలింగ్ చేయడానికి కట్టుబడి ఉంది. + +## సైడ్‌చైన్‌లు ఎలా పనిచేస్తాయి? {#how-do-sidechains-work} + +సైడ్‌చైన్‌లు వేర్వేరు చరిత్రలు, అభివృద్ధి రోడ్‌మ్యాప్‌లు మరియు డిజైన్ పరిగణనలతో స్వతంత్ర బ్లాక్‌చైన్‌లు. ఒక సైడ్‌చైన్ Ethereum తో కొన్ని ఉపరితల-స్థాయి సారూప్యతలను పంచుకున్నప్పటికీ, దానికి అనేక విలక్షణమైన లక్షణాలు ఉన్నాయి. + +### ఏకాభిప్రాయం అల్గారిథంలు {#consensus-algorithms} + +సైడ్‌చైన్‌లను ప్రత్యేకంగా (అంటే, Ethereum నుండి భిన్నంగా) చేసే లక్షణాలలో ఒకటి ఉపయోగించిన ఏకాభిప్రాయం అల్గారిథం. సైడ్‌చైన్‌లు ఏకాభిప్రాయం కోసం Ethereumపై ఆధారపడవు మరియు వాటి అవసరాలకు సరిపోయే ప్రత్యామ్నాయ ఏకాభిప్రాయం ప్రోటోకాల్‌లను ఎంచుకోవచ్చు. సైడ్‌చైన్‌లపై ఉపయోగించే ఏకాభిప్రాయం అల్గారిథంల యొక్క కొన్ని ఉదాహరణలు: + +- [ప్రూఫ్-ఆఫ్-అథారిటీ](/developers/docs/consensus-mechanisms/poa/) +- [డెలిగేటెడ్ ప్రూఫ్-ఆఫ్-స్టేక్](https://en.bitcoin.it/wiki/Delegated_proof_of_stake) +- [బైజాంటైన్ ఫాల్ట్ టాలరెన్స్](https://decrypt.co/resources/byzantine-fault-tolerance-what-is-it-explained). + +Ethereum వలె, సైడ్‌చైన్‌లు లావాదేవీలను ధృవీకరించే మరియు ప్రాసెస్ చేసే, బ్లాక్‌లను ఉత్పత్తి చేసే మరియు బ్లాక్‌చైన్ స్టేట్‌ను నిల్వ చేసే నోడ్‌లను ధృవీకరిస్తాయి. నెట్‌వర్క్‌లో ఏకాభిప్రాయం నిర్వహించడానికి మరియు హానికరమైన దాడుల నుండి దాన్ని భద్రపరచడానికి కూడా వాలిడేటర్లు బాధ్యత వహిస్తారు. + +#### బ్లాక్ పారామితులు {#block-parameters} + +Ethereum [బ్లాక్ సమయాలు](/developers/docs/blocks/#block-time) (అంటే, కొత్త బ్లాక్‌లను ఉత్పత్తి చేయడానికి పట్టే సమయం) మరియు [బ్లాక్ పరిమాణాలు](/developers/docs/blocks/#block-size) (అంటే, గ్యాస్‌లో సూచించబడిన ప్రతి బ్లాక్‌కు ఉన్న డేటా మొత్తం)పై పరిమితులను విధిస్తుంది. దీనికి విరుద్ధంగా, సైడ్‌చైన్‌లు అధిక త్రూపుట్, వేగవంతమైన లావాదేవీలు మరియు తక్కువ రుసుములను సాధించడానికి వేగవంతమైన బ్లాక్ సమయాలు మరియు అధిక గ్యాస్ పరిమితులు వంటి విభిన్న పారామితులను తరచుగా స్వీకరిస్తాయి. + +దీని వలన కొన్ని ప్రయోజనాలు ఉన్నప్పటికీ, నెట్‌వర్క్ వికేంద్రీకరణ మరియు భద్రతకు ఇది క్లిష్టమైన చిక్కులను కలిగి ఉంది. వేగవంతమైన బ్లాక్ సమయాలు మరియు పెద్ద బ్లాక్ పరిమాణాలు వంటి బ్లాక్ పారామితులు, పూర్తి నోడ్‌ను అమలు చేయడంలో కష్టాన్ని పెంచుతాయి—చైన్‌ను భద్రపరచడానికి కొన్ని "సూపర్‌నోడ్లు" బాధ్యత వహిస్తాయి. అటువంటి సందర్భంలో, వాలిడేటర్ కుమ్మక్కు లేదా చైన్ యొక్క హానికరమైన స్వాధీనం యొక్క అవకాశం పెరుగుతుంది. + +వికేంద్రీకరణకు హాని కలిగించకుండా బ్లాక్‌చైన్‌లు స్కేల్ చేయడానికి, నోడ్‌ను నడపడం అనేది ప్రత్యేకమైన హార్డ్‌వేర్ ఉన్న పార్టీలకు మాత్రమే కాకుండా అందరికీ అందుబాటులో ఉండాలి. అందుకే Ethereum నెట్‌వర్క్‌లో ప్రతి ఒక్కరూ [పూర్తి నోడ్‌ను నడపగలరని](/developers/docs/nodes-and-clients/#why-should-i-run-an-ethereum-node) నిర్ధారించడానికి ప్రయత్నాలు జరుగుతున్నాయి. + +### EVM అనుకూలత {#evm-compatibility} + +కొన్ని సైడ్‌చైన్‌లు EVM-అనుకూలంగా ఉంటాయి మరియు [Ethereum వర్చువల్ మెషీన్ (EVM)](/developers/docs/evm/) కోసం అభివృద్ధి చేసిన కాంట్రాక్టులను అమలు చేయగలవు. EVM-అనుకూల సైడ్‌చైన్‌లు [Solidityలో వ్రాసిన](/developers/docs/smart-contracts/languages/) స్మార్ట్ కాంట్రాక్టులకు, అలాగే ఇతర EVM స్మార్ట్ కాంట్రాక్ట్ భాషలకు మద్దతు ఇస్తాయి, అంటే Ethereum మెయిన్‌నెట్ కోసం వ్రాసిన స్మార్ట్ కాంట్రాక్టులు EVM-అనుకూల సైడ్‌చైన్‌లలో కూడా పనిచేస్తాయి. + +అంటే మీరు మీ [డాప్‌ను](/developers/docs/dapps/) సైడ్‌చైన్‌లో ఉపయోగించాలనుకుంటే, మీ [స్మార్ట్ కాంట్రాక్ట్‌ను](/developers/docs/smart-contracts/) ఈ సైడ్‌చైన్‌లో అమలు చేయడం మాత్రమే మిగిలి ఉంది. ఇది మెయిన్‌నెట్ లాగానే కనిపిస్తుంది, అనిపిస్తుంది మరియు పనిచేస్తుంది—మీరు Solidityలో కాంట్రాక్టులు వ్రాస్తారు మరియు సైడ్‌చైన్‌ల RPC ద్వారా చైన్‌తో పరస్పర చర్య జరుపుతారు. + +సైడ్‌చైన్‌లు EVM-అనుకూలంగా ఉన్నందున, అవి Ethereum-స్థానిక డాప్స్ కోసం ఉపయోగకరమైన [స్కేలింగ్ పరిష్కారంగా](/developers/docs/scaling/) పరిగణించబడతాయి. మీ డాప్‌ను సైడ్‌చైన్‌లో ఉంచడం ద్వారా, వినియోగదారులు తక్కువ గ్యాస్ ఫీజులు మరియు వేగవంతమైన లావాదేవీలను ఆస్వాదించవచ్చు, ముఖ్యంగా మెయిన్‌నెట్ రద్దీగా ఉన్నప్పుడు. + +అయితే, ఇంతకుముందు వివరించినట్లుగా, సైడ్‌చైన్‌ను ఉపయోగించడం వలన ముఖ్యమైన ప్రతికూలతలు ఉంటాయి. ప్రతి సైడ్‌చైన్ దాని భద్రతకు బాధ్యత వహిస్తుంది మరియు Ethereum యొక్క భద్రతా లక్షణాలను వారసత్వంగా పొందదు. ఇది మీ వినియోగదారులను ప్రభావితం చేసే లేదా వారి నిధులను ప్రమాదంలో పడేసే హానికరమైన ప్రవర్తన యొక్క అవకాశాన్ని పెంచుతుంది. + +### ఆస్తి కదలిక {#asset-movement} + +ఒక ప్రత్యేక బ్లాక్‌చైన్ Ethereum మెయిన్‌నెట్‌కు సైడ్‌చైన్‌గా మారాలంటే, దానికి Ethereum మెయిన్‌నెట్ నుండి మరియు దానికి ఆస్తుల బదిలీని సులభతరం చేసే సామర్థ్యం అవసరం. Ethereum తో ఈ ఇంటరాపరబిలిటీ బ్లాక్‌చైన్ వంతెనను ఉపయోగించి సాధించబడుతుంది. [వంతెనలు](/bridges/) Ethereum మెయిన్‌నెట్ మరియు ఒక సైడ్‌చైన్‌పై అమలు చేయబడిన స్మార్ట్ కాంట్రాక్టులను ఉపయోగించి వాటి మధ్య నిధుల బ్రిడ్జింగ్‌ను నియంత్రిస్తాయి. + +వంతెనలు వినియోగదారులకు Ethereum మరియు సైడ్‌చైన్ మధ్య నిధులను తరలించడానికి సహాయపడినప్పటికీ, ఆస్తులు రెండు చైన్‌ల మధ్య భౌతికంగా తరలించబడవు. బదులుగా, సాధారణంగా మింటింగ్ మరియు బర్నింగ్ వంటి యంత్రాంగాలను చైన్‌ల మధ్య విలువను బదిలీ చేయడానికి ఉపయోగిస్తారు. [వంతెనలు ఎలా పనిచేస్తాయనే దానిపై](/developers/docs/bridges/#how-do-bridges-work) మరింత సమాచారం. + +## సైడ్‌చైన్‌ల యొక్క ప్రయోజనాలు మరియు నష్టాలు {#pros-and-cons-of-sidechains} + +| ప్రయోజనాలు | అప్రయోజనాలు | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| సైడ్‌చైన్‌లకు మద్దతు ఇచ్చే సాంకేతికత బాగా స్థిరపడింది మరియు విస్తృతమైన పరిశోధన మరియు డిజైన్‌లో మెరుగుదలల నుండి ప్రయోజనం పొందుతుంది. | స్కేలబిలిటీ కోసం సైడ్‌చైన్‌లు కొంతవరకు వికేంద్రీకరణ మరియు విశ్వసనీయతను వదులుకుంటాయి. | +| సైడ్‌చైన్‌లు సాధారణ గణనలకు మద్దతు ఇస్తాయి మరియు EVM అనుకూలతను అందిస్తాయి (అవి Ethereum-స్థానిక డాప్స్‌ను నడపగలవు). | ఒక సైడ్‌చైన్ ప్రత్యేక ఏకాభిప్రాయం యంత్రాంగాన్ని ఉపయోగిస్తుంది మరియు Ethereum యొక్క భద్రతా హామీల నుండి ప్రయోజనం పొందదు. | +| లావాదేవీలను సమర్థవంతంగా ప్రాసెస్ చేయడానికి మరియు వినియోగదారులకు లావాదేవీ రుసుములను తగ్గించడానికి సైడ్‌చైన్‌లు విభిన్న ఏకాభిప్రాయం నమూనాలను ఉపయోగిస్తాయి. | సైడ్‌చైన్‌లకు అధిక విశ్వాస అంచనాలు అవసరం (ఉదా., హానికరమైన సైడ్‌చైన్ వాలిడేటర్ల కోరం మోసం చేయగలదు). | +| EVM-అనుకూల సైడ్‌చైన్‌లు డాప్స్‌ను వారి పర్యావరణ వ్యవస్థను విస్తరించడానికి అనుమతిస్తాయి. | | + +### సైడ్‌చైన్‌లను ఉపయోగించండి {#use-sidechains} + +బహుళ ప్రాజెక్టులు సైడ్‌చైన్‌ల అమలులను అందిస్తాయి, వీటిని మీరు మీ డాప్స్‌లో విలీనం చేయవచ్చు: + +- [Polygon PoS](https://polygon.technology/solutions/polygon-pos) +- [Skale](https://skale.network/) +- [Gnosis Chain (పూర్వం xDai)](https://www.gnosischain.com/) +- [Loom Network](https://loomx.io/) +- [Metis Andromeda](https://www.metis.io/) + +## మరింత సమాచారం {#further-reading} + +- [సైడ్‌చైన్‌ల ద్వారా Ethereum డాప్స్‌ను స్కేలింగ్ చేయడం](https://medium.com/loom-network/dappchains-scaling-ethereum-dapps-through-sidechains-f99e51fff447) _ఫిబ్రవరి 8, 2018 - జార్జియోస్ కాన్స్టాంటోపౌలోస్_ + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ diff --git a/public/content/translations/te/developers/docs/scaling/state-channels/index.md b/public/content/translations/te/developers/docs/scaling/state-channels/index.md new file mode 100644 index 00000000000..339c36d8b34 --- /dev/null +++ b/public/content/translations/te/developers/docs/scaling/state-channels/index.md @@ -0,0 +1,261 @@ +--- +title: "స్టేట్ చానెల్స్" +description: "ప్రస్తుతం Ethereum కమ్యూనిటీ ద్వారా ఉపయోగించబడుతున్న స్కేలింగ్ పరిష్కారంగా స్టేట్ ఛానెల్స్ మరియు చెల్లింపు ఛానెల్స్‌కు ఒక పరిచయం." +lang: te +sidebarDepth: 3 +--- + +Ethereum Mainnetతో పరస్పర చర్యను కనిష్టంగా ఉంచుతూ, స్టేట్ చానెల్స్ పాల్గొనేవారిని సురక్షితంగా ఆఫ్చైన్ లావాదేవీలను నిర్వహించడానికి అనుమతిస్తాయి. ఛానెల్ తెరిచి మరియు మూసివేయడానికి కేవలం రెండు ఆన్‌చైన్ లావాదేవీలను మాత్రమే సమర్పిస్తూ, ఛానెల్ పీర్స్ ఏకపక్ష సంఖ్యలో ఆఫ్‌చైన్ లావాదేవీలను నిర్వహించవచ్చు. ఇది అత్యంత అధిక లావాదేవీ థ్రూపుట్‌కు అనుమతిస్తుంది మరియు వినియోగదారులకు తక్కువ ఖర్చులకు దారితీస్తుంది. + +## అవసరాలు {#prerequisites} + +మీరు [Ethereum స్కేలింగ్](/developers/docs/scaling/) మరియు [లేయర్ 2](/layer-2/) పై మా పేజీలను చదివి అర్థం చేసుకుని ఉండాలి. + +## ఛానెల్స్ అంటే ఏమిటి? {#what-are-channels} + +Ethereum వంటి పబ్లిక్ బ్లాక్‌చెయిన్‌లు, వాటి పంపిణీ చేయబడిన ఆర్కిటెక్చర్ కారణంగా స్కేలబిలిటీ సవాళ్లను ఎదుర్కొంటాయి: ఆన్‌చైన్ లావాదేవీలను అన్ని నోడ్‌ల ద్వారా అమలు చేయాలి. నెట్‌వర్క్‌ను వికేంద్రీకృతంగా ఉంచడానికి లావాదేవీల థ్రూపుట్‌పై పరిమితిని విధిస్తూ, సాధారణ హార్డ్‌వేర్‌ను ఉపయోగించి ఒక బ్లాక్‌లోని లావాదేవీల పరిమాణాన్ని నోడ్‌లు నిర్వహించగలగాలి. అంతిమ పరిష్కారం కోసం ప్రధాన చైన్ భద్రతపై ఆధారపడుతూనే వినియోగదారులను ఆఫ్‌చైన్‌లో పరస్పరం సంభాషించుకోవడానికి అనుమతించడం ద్వారా బ్లాక్‌చెయిన్ ఛానెల్స్ ఈ సమస్యను పరిష్కరిస్తాయి. + +ఛానెల్స్ అనేవి రెండు పార్టీల మధ్య అనేక లావాదేవీలు చేసుకుని, ఆపై తుది ఫలితాలను మాత్రమే బ్లాక్‌చెయిన్‌కు పోస్ట్ చేయడానికి అనుమతించే సాధారణ పీర్-టు-పీర్ ప్రోటోకాల్స్. వారు రూపొందించే సారాంశ డేటా నిజంగా చెల్లుబాటు అయ్యే మధ్యంతర లావాదేవీల సెట్ యొక్క ఫలితం అని నిరూపించడానికి ఛానెల్ క్రిప్టోగ్రఫీని ఉపయోగిస్తుంది. ఒక ["మల్టీసిగ్"](/developers/docs/smart-contracts/#multisig) స్మార్ట్ కాంట్రాక్ట్ లావాదేవీలు సరైన పార్టీలచే సంతకం చేయబడ్డాయని నిర్ధారిస్తుంది. + +ఛానెల్స్‌తో, స్టేట్ మార్పులు ఆసక్తి గల పార్టీల ద్వారా అమలు చేయబడి మరియు ధృవీకరించబడతాయి, ఇది Ethereum యొక్క ఎగ్జిక్యూషన్ లేయర్‌పై గణనను తగ్గిస్తుంది. ఇది Ethereum పై రద్దీని తగ్గిస్తుంది మరియు వినియోగదారుల కోసం లావాదేవీల ప్రాసెసింగ్ వేగాన్ని కూడా పెంచుతుంది. + +ప్రతి ఛానెల్ Ethereum పై నడిచే ఒక [మల్టీసిగ్ స్మార్ట్ కాంట్రాక్ట్](/developers/docs/smart-contracts/#multisig) ద్వారా నిర్వహించబడుతుంది. ఒక ఛానెల్‌ను తెరవడానికి, పాల్గొనేవారు ఛానెల్ కాంట్రాక్ట్‌ను ఆన్‌చైన్‌లో డిప్లాయ్ చేసి, దానిలో నిధులను జమ చేస్తారు. ఛానెల్ యొక్క స్టేట్‌ను ప్రారంభించడానికి ఇద్దరు పార్టీలు సమిష్టిగా ఒక స్టేట్ అప్‌డేట్‌పై సంతకం చేస్తాయి, ఆ తర్వాత వారు త్వరగా మరియు స్వేచ్ఛగా ఆఫ్‌చైన్‌లో లావాదేవీలు జరపవచ్చు. + +ఛానెల్‌ను మూసివేయడానికి, పాల్గొనేవారు ఛానెల్ యొక్క చివరి అంగీకరించిన స్టేట్‌ను ఆన్‌చైన్‌లో సమర్పిస్తారు. ఆ తర్వాత, స్మార్ట్ కాంట్రాక్ట్ ఛానెల్ యొక్క చివరి స్టేట్‌లో ప్రతి పాల్గొనేవారి బ్యాలెన్స్ ప్రకారం లాక్ చేయబడిన నిధులను పంపిణీ చేస్తుంది. + +కనిపించే ఓవర్‌హెడ్ లేకుండా అధిక పౌనఃపున్యంతో లావాదేవీలు చేయాలనుకునే కొన్ని ముందుగా నిర్వచించిన పాల్గొనేవారికి పీర్-టు-పీర్ ఛానెల్స్ ప్రత్యేకంగా ఉపయోగపడతాయి. బ్లాక్‌చెయిన్ ఛానెల్స్ రెండు వర్గాలుగా విభజించబడ్డాయి: **చెల్లింపు ఛానెల్స్** మరియు **స్టేట్ ఛానెల్స్**. + +## చెల్లింపు ఛానెల్స్ {#payment-channels} + +చెల్లింపు ఛానెల్ అనేది ఇద్దరు వినియోగదారులు సమిష్టిగా నిర్వహించే "ద్విముఖ లెడ్జర్"గా ఉత్తమంగా వర్ణించబడింది. లెడ్జర్ యొక్క ప్రారంభ బ్యాలెన్స్ ఛానెల్ ప్రారంభ దశలో ఆన్‌చైన్ కాంట్రాక్ట్‌లో లాక్ చేయబడిన డిపాజిట్ల మొత్తం. ప్రారంభ వన్-టైమ్ ఆన్‌చైన్ సృష్టి మరియు చివరికి ఛానెల్ మూసివేత మినహా, చెల్లింపు ఛానెల్ బదిలీలు తక్షణమే మరియు అసలు బ్లాక్‌చెయిన్ ప్రమేయం లేకుండానే నిర్వహించబడతాయి. + +లెడ్జర్ యొక్క బ్యాలెన్స్‌కు (అంటే, చెల్లింపు ఛానెల్ యొక్క స్టేట్) అప్‌డేట్‌లకు ఛానెల్‌లోని అన్ని పార్టీల ఆమోదం అవసరం. అన్ని ఛానెల్ పాల్గొనేవారు సంతకం చేసిన ఛానెల్ అప్‌డేట్, Ethereum పై లావాదేవీలాగే, ఖరారు చేయబడినట్లుగా పరిగణించబడుతుంది. + +సాధారణ వినియోగదారు పరస్పర చర్యల (ఉదా., ETH బదిలీలు, అటామిక్ స్వాప్‌లు, మైక్రోపేమెంట్‌లు) ఖరీదైన ఆన్‌చైన్ కార్యకలాపాలను తగ్గించడానికి రూపొందించిన తొలి స్కేలింగ్ పరిష్కారాలలో చెల్లింపు ఛానెల్స్ ఉన్నాయి. వారి బదిలీల నికర మొత్తం జమ చేసిన టోకెన్‌లను మించనంత కాలం, ఛానెల్ పాల్గొనేవారు ఒకరికొకరు అపరిమితమైన, తక్షణ, రుసుము లేని లావాదేవీలను నిర్వహించవచ్చు. + +## స్టేట్ ఛానెల్స్ {#state-channels} + +ఆఫ్‌చైన్ చెల్లింపులకు మద్దతు ఇవ్వడం మినహా, సాధారణ స్టేట్ ట్రాన్సిషన్ లాజిక్‌ను నిర్వహించడానికి చెల్లింపు ఛానెల్స్ ఉపయోగకరంగా నిరూపించబడలేదు. ఈ సమస్యను పరిష్కరించడానికి మరియు సాధారణ-ప్రయోజన గణనను స్కేల్ చేయడానికి ఛానెల్స్‌ను ఉపయోగకరంగా చేయడానికి స్టేట్ ఛానెల్స్ సృష్టించబడ్డాయి. + +స్టేట్ ఛానెల్స్‌కు ఇప్పటికీ చెల్లింపు ఛానెల్స్‌తో చాలా ఉమ్మడిగా ఉన్నాయి. ఉదాహరణకు, వినియోగదారులు క్రిప్టోగ్రాఫికల్‌గా సంతకం చేసిన సందేశాలను (లావాదేవీలు) మార్పిడి చేయడం ద్వారా పరస్పర చర్య చేస్తారు, దీనిపై ఇతర ఛానెల్ పాల్గొనేవారు కూడా సంతకం చేయాలి. ప్రతిపాదిత స్టేట్ అప్‌డేట్‌పై అన్ని పాల్గొనేవారు సంతకం చేయకపోతే, అది చెల్లనిదిగా పరిగణించబడుతుంది. + +అయితే, వినియోగదారు బ్యాలెన్స్‌లను కలిగి ఉండటంతో పాటు, ఛానెల్ కాంట్రాక్ట్ నిల్వ యొక్క ప్రస్తుత స్టేట్‌ను (అంటే, కాంట్రాక్ట్ వేరియబుల్స్ యొక్క విలువలు) కూడా ట్రాక్ చేస్తుంది. + +ఇది ఇద్దరు వినియోగదారుల మధ్య ఆఫ్‌చైన్‌లో స్మార్ట్ కాంట్రాక్ట్‌ను అమలు చేయడం సాధ్యం చేస్తుంది. ఈ దృశ్యంలో, స్మార్ట్ కాంట్రాక్ట్ యొక్క అంతర్గత స్టేట్‌కు అప్‌డేట్‌లకు ఛానెల్‌ను సృష్టించిన పీర్‌ల ఆమోదం మాత్రమే అవసరం. + +ఇది ఇంతకుముందు వివరించిన స్కేలబిలిటీ సమస్యను పరిష్కరించినప్పటికీ, భద్రతకు ఇది ప్రభావాలను కలిగి ఉంటుంది. Ethereumలో, స్టేట్ మార్పుల చెల్లుబాటు నెట్‌వర్క్ యొక్క ఏకాభిప్రాయం ప్రోటోకాల్ ద్వారా అమలు చేయబడుతుంది. ఇది స్మార్ట్ కాంట్రాక్ట్ యొక్క స్టేట్‌కు చెల్లని అప్‌డేట్‌ను ప్రతిపాదించడం లేదా స్మార్ట్ కాంట్రాక్ట్ ఎగ్జిక్యూషన్‌ను మార్చడం అసాధ్యం చేస్తుంది. + +స్టేట్ ఛానెల్స్‌కు అవే భద్రతా హామీలు ఉండవు. కొంతవరకు, స్టేట్ ఛానెల్ అనేది మెయిన్‌నెట్ యొక్క సూక్ష్మ వెర్షన్. నియమాలను అమలు చేసే పరిమిత సంఖ్యలో పాల్గొనేవారితో, హానికరమైన ప్రవర్తన (ఉదా., చెల్లని స్టేట్ అప్‌డేట్‌లను ప్రతిపాదించడం) యొక్క అవకాశం పెరుగుతుంది. స్టేట్ ఛానెల్స్ [ఫ్రాడ్ ప్రూఫ్స్](/glossary/#fraud-proof) ఆధారంగా వివాద మధ్యవర్తిత్వ వ్యవస్థ నుండి తమ భద్రతను పొందుతాయి. + +## స్టేట్ ఛానెల్స్ ఎలా పనిచేస్తాయి {#how-state-channels-work} + +ప్రాథమికంగా, స్టేట్ ఛానెల్‌లోని కార్యకలాపం అనేది వినియోగదారులు మరియు బ్లాక్‌చెయిన్ సిస్టమ్‌తో కూడిన పరస్పర చర్యల సెషన్. వినియోగదారులు ఎక్కువగా ఒకరితో ఒకరు ఆఫ్‌చైన్‌లో కమ్యూనికేట్ చేస్తారు మరియు ఛానెల్‌ను తెరవడానికి, మూసివేయడానికి లేదా పాల్గొనేవారి మధ్య సంభావ్య వివాదాలను పరిష్కరించడానికి అంతర్లీన బ్లాక్‌చెయిన్‌తో మాత్రమే సంభాషిస్తారు. + +కింది విభాగం స్టేట్ ఛానెల్ యొక్క ప్రాథమిక వర్క్‌ఫ్లోను వివరిస్తుంది: + +### ఛానెల్‌ను తెరవడం {#opening-the-channel} + +ఛానెల్‌ను తెరవడానికి పాల్గొనేవారు మెయిన్‌నెట్‌లోని స్మార్ట్ కాంట్రాక్ట్‌కు నిధులను కేటాయించాలి. డిపాజిట్ వర్చువల్ ట్యాబ్‌గా కూడా పనిచేస్తుంది, కాబట్టి పాల్గొనే నటులు చెల్లింపులను వెంటనే పరిష్కరించాల్సిన అవసరం లేకుండా స్వేచ్ఛగా లావాదేవీలు చేయవచ్చు. ఛానెల్ ఆన్‌చైన్‌లో ఖరారు చేయబడినప్పుడు మాత్రమే పార్టీలు ఒకరికొకరు పరిష్కరించుకుని వారి ట్యాబ్ నుండి మిగిలి ఉన్నదాన్ని ఉపసంహరించుకుంటారు. + +ఈ డిపాజిట్ ప్రతి పాల్గొనేవారి నుండి నిజాయితీ ప్రవర్తనను హామీ ఇవ్వడానికి ఒక బాండ్‌గా కూడా ఉపయోగపడుతుంది. వివాద పరిష్కార దశలో డిపాజిటర్లు హానికరమైన చర్యలకు పాల్పడినట్లు తేలితే, కాంట్రాక్ట్ వారి డిపాజిట్‌ను స్లాష్ చేస్తుంది. + +ఛానెల్ పీర్స్ వారు అందరూ అంగీకరించే ఒక ప్రారంభ స్టేట్‌పై సంతకం చేయాలి. ఇది స్టేట్ ఛానెల్ యొక్క జెనెసిస్‌గా పనిచేస్తుంది, ఆ తర్వాత వినియోగదారులు లావాదేవీలు ప్రారంభించవచ్చు. + +### ఛానెల్ ఉపయోగించడం {#using-the-channel} + +ఛానెల్ యొక్క స్టేట్‌ను ప్రారంభించిన తర్వాత, పీర్స్ లావాదేవీలపై సంతకం చేసి ఆమోదం కోసం ఒకరికొకరు పంపుకోవడం ద్వారా పరస్పర చర్య చేస్తారు. పాల్గొనేవారు ఈ లావాదేవీలతో స్టేట్ అప్‌డేట్‌లను ప్రారంభిస్తారు మరియు ఇతరుల నుండి స్టేట్ అప్‌డేట్‌లపై సంతకం చేస్తారు. ప్రతి లావాదేవీలో కిందివి ఉంటాయి: + +- **నాన్స్**, ఇది లావాదేవీలకు ప్రత్యేక ID గా పనిచేస్తుంది మరియు రీప్లే దాడులను నివారిస్తుంది. ఇది స్టేట్ అప్‌డేట్‌లు జరిగిన క్రమాన్ని కూడా గుర్తిస్తుంది (ఇది వివాద పరిష్కారానికి ముఖ్యం). + +- ఛానెల్ యొక్క పాత స్టేట్ + +- ఛానెల్ యొక్క కొత్త స్టేట్ + +- స్టేట్ మార్పును ప్రేరేపించే లావాదేవీ (ఉదా., ఆలిస్ బాబ్‌కు 5 ETH పంపుతుంది) + +ఆన్‌చైన్ ఫుట్‌ప్రింట్‌ను తగ్గించాలనే స్టేట్ ఛానెల్స్ లక్ష్యానికి అనుగుణంగా, వినియోగదారులు మెయిన్‌నెట్‌లో పరస్పర చర్య చేసినప్పుడు సాధారణంగా జరిగే విధంగా ఛానెల్‌లోని స్టేట్ అప్‌డేట్‌లు ఆన్‌చైన్‌లో ప్రసారం చేయబడవు. పాల్గొనేవారు స్టేట్ అప్‌డేట్‌లపై అంగీకరించినంత కాలం, అవి Ethereum లావాదేవీ అంతిమమైనవిగా ఉంటాయి. వివాదం తలెత్తితే పాల్గొనేవారు మెయిన్‌నెట్ ఏకాభిప్రాయంపై మాత్రమే ఆధారపడాలి. + +### ఛానెల్‌ను మూసివేయడం {#closing-the-channel} + +స్టేట్ ఛానెల్‌ను మూసివేయడానికి ఛానెల్ యొక్క చివరి, అంగీకరించిన స్టేట్‌ను ఆన్‌చైన్ స్మార్ట్ కాంట్రాక్ట్‌కు సమర్పించాలి. స్టేట్ అప్‌డేట్‌లో సూచించిన వివరాలలో ప్రతి పాల్గొనేవారి కదలికల సంఖ్య మరియు ఆమోదించబడిన లావాదేవీల జాబితా ఉంటాయి. + +స్టేట్ అప్‌డేట్ చెల్లుబాటు అవుతుందని ధృవీకరించిన తర్వాత (అంటే, ఇది అన్ని పార్టీలచే సంతకం చేయబడింది), స్మార్ట్ కాంట్రాక్ట్ ఛానెల్‌ను ఖరారు చేస్తుంది మరియు ఛానెల్ ఫలితం ప్రకారం లాక్ చేయబడిన నిధులను పంపిణీ చేస్తుంది. ఆఫ్‌చైన్‌లో చేసిన చెల్లింపులు Ethereum యొక్క స్టేట్‌కు వర్తింపజేయబడతాయి మరియు ప్రతి పాల్గొనేవారు లాక్ చేయబడిన నిధులలో తమ మిగిలిన భాగాన్ని అందుకుంటారు. + +పైన వివరించిన దృశ్యం సంతోషకరమైన సందర్భంలో ఏమి జరుగుతుందో సూచిస్తుంది. కొన్నిసార్లు, వినియోగదారులు ఒప్పందానికి రాలేక ఛానెల్‌ను ఖరారు చేయలేకపోవచ్చు (విచారకరమైన కేసు). కింది వాటిలో ఏదైనా పరిస్థితికి నిజం కావచ్చు: + +- పాల్గొనేవారు ఆఫ్‌లైన్‌కి వెళ్లి స్టేట్ మార్పులను ప్రతిపాదించడంలో విఫలమవుతారు + +- పాల్గొనేవారు చెల్లుబాటు అయ్యే స్టేట్ అప్‌డేట్‌లపై సహ-సంతకం చేయడానికి నిరాకరిస్తారు + +- పాల్గొనేవారు ఆన్‌చైన్ కాంట్రాక్ట్‌కు పాత స్టేట్ అప్‌డేట్‌ను ప్రతిపాదించడం ద్వారా ఛానెల్‌ను ఖరారు చేయడానికి ప్రయత్నిస్తారు + +- పాల్గొనేవారు ఇతరులు సంతకం చేయడానికి చెల్లని స్టేట్ మార్పులను ప్రతిపాదిస్తారు + +ఛానెల్‌లో పాల్గొనే నటుల మధ్య ఏకాభిప్రాయం విఫలమైనప్పుడల్లా, చివరి ఎంపిక ఛానెల్ యొక్క చివరి, చెల్లుబాటు అయ్యే స్టేట్‌ను అమలు చేయడానికి మెయిన్‌నెట్ ఏకాభిప్రాయంపై ఆధారపడటం. ఈ సందర్భంలో, స్టేట్ ఛానెల్‌ను మూసివేయడానికి ఆన్‌చైన్‌లో వివాదాలను పరిష్కరించడం అవసరం. + +### వివాదాలను పరిష్కరించడం {#settling-disputes} + +సాధారణంగా, ఛానెల్‌లోని పార్టీలు ముందుగానే ఛానెల్‌ను మూసివేయడానికి అంగీకరిస్తాయి మరియు చివరి స్టేట్ మార్పుపై సహ-సంతకం చేస్తాయి, దానిని వారు స్మార్ట్ కాంట్రాక్ట్‌కు సమర్పిస్తారు. అప్‌డేట్ ఆన్‌చైన్‌లో ఆమోదించబడిన తర్వాత, ఆఫ్‌చైన్ స్మార్ట్ కాంట్రాక్ట్ యొక్క ఎగ్జిక్యూషన్ ముగుస్తుంది మరియు పాల్గొనేవారు తమ డబ్బుతో ఛానెల్ నుండి నిష్క్రమిస్తారు. + +అయితే, ఒక పార్టీ స్మార్ట్ కాంట్రాక్ట్ ఎగ్జిక్యూషన్‌ను ముగించి, ఛానెల్‌ను ఖరారు చేయడానికి ఆన్‌చైన్ అభ్యర్థనను సమర్పించవచ్చు—వారి ప్రతిరూపం ఆమోదం కోసం వేచి ఉండకుండా. ముందుగా వివరించిన ఏకాభిప్రాయం-విచ్ఛిన్నం చేసే పరిస్థితులు ఏవైనా సంభవిస్తే, ఏ పార్టీ అయినా ఛానెల్‌ను మూసివేసి నిధులను పంపిణీ చేయడానికి ఆన్‌చైన్ కాంట్రాక్ట్‌ను ప్రేరేపించవచ్చు. ఇది **ట్రస్ట్‌లెస్‌నెస్**ను అందిస్తుంది, నిజాయితీ గల పార్టీలు తమ డిపాజిట్ల నుండి ఏ సమయంలోనైనా, ఇతర పార్టీ చర్యలతో సంబంధం లేకుండా నిష్క్రమించగలరని నిర్ధారిస్తుంది. + +ఛానెల్ నిష్క్రమణను ప్రాసెస్ చేయడానికి, వినియోగదారు అప్లికేషన్ యొక్క చివరి చెల్లుబాటు అయ్యే స్టేట్ అప్‌డేట్‌ను ఆన్‌చైన్ కాంట్రాక్ట్‌కు సమర్పించాలి. ఇది సరిపోలితే (అంటే, ఇది అన్ని పార్టీల సంతకాన్ని కలిగి ఉంటుంది), అప్పుడు నిధులు వారికి అనుకూలంగా పునఃపంపిణీ చేయబడతాయి. + +అయితే, సింగిల్-యూజర్ నిష్క్రమణ అభ్యర్థనలను అమలు చేయడంలో ఆలస్యం ఉంది. ఛానెల్‌ను ముగించడానికి చేసిన అభ్యర్థన ఏకగ్రీవంగా ఆమోదించబడితే, ఆన్‌చైన్ నిష్క్రమణ లావాదేవీ వెంటనే అమలు చేయబడుతుంది. + +మోసపూరిత చర్యల అవకాశం కారణంగా సింగిల్-యూజర్ నిష్క్రమణలలో ఆలస్యం ఏర్పడుతుంది. ఉదాహరణకు, ఒక ఛానెల్ పార్టిసిపెంట్ పాత స్టేట్ అప్‌డేట్‌ను ఆన్‌చైన్‌లో సమర్పించడం ద్వారా Ethereum పై ఛానెల్‌ను ఖరారు చేయడానికి ప్రయత్నించవచ్చు. + +ఒక ప్రతిఘటనగా, స్టేట్ ఛానెల్స్ నిజాయితీగల వినియోగదారులను చెల్లుబాటుకాని స్టేట్ అప్‌డేట్‌లను సవాలు చేయడానికి, ఛానెల్ యొక్క తాజా, చెల్లుబాటు అయ్యే స్టేట్‌ను ఆన్‌చైన్‌లో సమర్పించడం ద్వారా అనుమతిస్తాయి. స్టేట్ ఛానెల్స్ కొత్త, అంగీకరించిన స్టేట్ అప్‌డేట్‌లు పాత స్టేట్ అప్‌డేట్‌లను అధిగమించే విధంగా రూపొందించబడ్డాయి. + +ఒక పీర్ ఆన్‌చైన్ వివాద-పరిష్కార వ్యవస్థను ప్రేరేపించిన తర్వాత, ఇతర పార్టీ ఒక సమయ పరిమితిలో (ఛాలెంజ్ విండో అని పిలుస్తారు) ప్రతిస్పందించాల్సి ఉంటుంది. ఇది వినియోగదారులను నిష్క్రమణ లావాదేవీని సవాలు చేయడానికి అనుమతిస్తుంది, ముఖ్యంగా ఇతర పార్టీ పాత అప్‌డేట్‌ను వర్తింపజేస్తుంటే. + +పరిస్థితి ఏదైనప్పటికీ, ఛానెల్ వినియోగదారులకు ఎల్లప్పుడూ బలమైన అంతిమ హామీలు ఉంటాయి: వారి ఆధీనంలో ఉన్న స్టేట్ మార్పు అన్ని సభ్యులచే సంతకం చేయబడి, అది అత్యంత ఇటీవలి అప్‌డేట్ అయితే, అది సాధారణ ఆన్‌చైన్ లావాదేవీతో సమానమైన అంతిమతను కలిగి ఉంటుంది. వారు ఇప్పటికీ ఇతర పార్టీని ఆన్‌చైన్‌లో సవాలు చేయవలసి ఉంటుంది, కానీ వారు కలిగి ఉన్న చివరి చెల్లుబాటు అయ్యే స్టేట్‌ను ఖరారు చేయడం మాత్రమే సాధ్యమయ్యే ఫలితం. + +### స్టేట్ ఛానెల్స్ Ethereum తో ఎలా సంకర్షణ చెందుతాయి? {#how-do-state-channels-interact-with-ethereum} + +అవి ఆఫ్‌చైన్ ప్రోటోకాల్స్‌గా ఉన్నప్పటికీ, స్టేట్ ఛానెల్స్‌కు ఒక ఆన్‌చైన్ భాగం ఉంది: ఛానెల్‌ను తెరిచేటప్పుడు Ethereum పై డిప్లాయ్ చేయబడిన స్మార్ట్ కాంట్రాక్ట్. ఈ కాంట్రాక్ట్ ఛానెల్‌లో జమ చేసిన ఆస్తులను నియంత్రిస్తుంది, స్టేట్ అప్‌డేట్‌లను ధృవీకరిస్తుంది మరియు పాల్గొనేవారి మధ్య వివాదాలను మధ్యవర్తిత్వం చేస్తుంది. + +[లేయర్ 2](/layer-2/) స్కేలింగ్ పరిష్కారాల వలె కాకుండా, స్టేట్ ఛానెల్స్ మెయిన్‌నెట్‌కు లావాదేవీల డేటా లేదా స్టేట్ కమిట్‌మెంట్‌లను ప్రచురించవు. అయితే, అవి [సైడ్‌చైన్స్](/developers/docs/scaling/sidechains/) కంటే మెయిన్‌నెట్‌కు ఎక్కువ కనెక్ట్ చేయబడి ఉంటాయి, ఇది వాటిని కొంతవరకు సురక్షితంగా చేస్తుంది. + +స్టేట్ ఛానెల్స్ కింది వాటి కోసం ప్రధాన Ethereum ప్రోటోకాల్‌పై ఆధారపడతాయి: + +#### 1. సజీవత్వం {#liveness} + +ఛానెల్ తెరిచేటప్పుడు డిప్లాయ్ చేయబడిన ఆన్‌చైన్ కాంట్రాక్ట్ ఛానెల్ యొక్క కార్యాచరణకు బాధ్యత వహిస్తుంది. కాంట్రాక్ట్ Ethereum పై నడుస్తుంటే, ఛానెల్ ఎల్లప్పుడూ వినియోగానికి అందుబాటులో ఉంటుంది. దీనికి విరుద్ధంగా, మెయిన్‌నెట్ పనిచేస్తున్నప్పటికీ సైడ్‌చైన్ ఎప్పుడైనా విఫలం కావచ్చు, ఇది వినియోగదారు నిధులను ప్రమాదంలో పడేస్తుంది. + +#### 2. భద్రత {#security} + +కొంతవరకు, స్టేట్ ఛానెల్స్ భద్రతను అందించడానికి మరియు వినియోగదారులను హానికరమైన పీర్‌ల నుండి రక్షించడానికి Ethereum పై ఆధారపడతాయి. తరువాత విభాగాలలో చర్చించినట్లుగా, ఛానెల్స్ ఒక ఫ్రాడ్ ప్రూఫ్ యంత్రాంగాన్ని ఉపయోగిస్తాయి, ఇది చెల్లని లేదా పాత అప్‌డేట్‌తో ఛానెల్‌ను ఖరారు చేసే ప్రయత్నాలను సవాలు చేయడానికి వినియోగదారులను అనుమతిస్తుంది. + +ఈ సందర్భంలో, నిజాయితీ గల పార్టీ ధృవీకరణ కోసం ఛానెల్ యొక్క తాజా చెల్లుబాటు అయ్యే స్టేట్‌ను ఫ్రాడ్ ప్రూఫ్‌గా ఆన్‌చైన్ కాంట్రాక్ట్‌కు అందిస్తుంది. ఫ్రాడ్ ప్రూఫ్స్ పరస్పరం అవిశ్వాసం గల పార్టీలు తమ నిధులను ప్రమాదంలో పెట్టకుండా ఆఫ్‌చైన్ లావాదేవీలను నిర్వహించడానికి వీలు కల్పిస్తాయి. + +#### 3. ఫైనాలిటీ {#finality} + +ఛానెల్ వినియోగదారులు సమిష్టిగా సంతకం చేసిన స్టేట్ అప్‌డేట్‌లు ఆన్‌చైన్ లావాదేవీల వలె మంచివిగా పరిగణించబడతాయి. అయినప్పటికీ, ఛానెల్‌లోని అన్ని కార్యకలాపాలు Ethereum పై ఛానెల్ మూసివేయబడినప్పుడు మాత్రమే నిజమైన అంతిమతను సాధిస్తాయి. + +ఆశావాద సందర్భంలో, రెండు పార్టీలు సహకరించుకుని, చివరి స్టేట్ అప్‌డేట్‌పై సంతకం చేసి, ఛానెల్‌ను మూసివేయడానికి ఆన్‌చైన్‌లో సమర్పించవచ్చు, ఆ తర్వాత ఛానెల్ యొక్క చివరి స్టేట్ ప్రకారం నిధులు పంపిణీ చేయబడతాయి. నిరాశావాద సందర్భంలో, ఎవరైనా తప్పు స్టేట్ అప్‌డేట్‌ను ఆన్‌చైన్‌లో పోస్ట్ చేయడం ద్వారా మోసం చేయడానికి ప్రయత్నిస్తే, ఛాలెంజ్ విండో ముగిసే వరకు వారి లావాదేవీ ఖరారు చేయబడదు. + +## వర్చువల్ స్టేట్ ఛానెల్స్ {#virtual-state-channels} + +స్టేట్ ఛానెల్ యొక్క అమాయకపు అమలు అనేది ఇద్దరు వినియోగదారులు ఆఫ్‌చైన్‌లో ఒక అప్లికేషన్‌ను అమలు చేయాలనుకున్నప్పుడు కొత్త కాంట్రాక్ట్‌ను డిప్లాయ్ చేయడం. ఇది అసాధ్యం మాత్రమే కాదు, ఇది స్టేట్ ఛానెల్స్ యొక్క వ్యయ-ప్రభావశీలతను కూడా తిరస్కరిస్తుంది (ఆన్‌చైన్ లావాదేవీల ఖర్చులు త్వరగా పెరిగిపోతాయి). + +ఈ సమస్యను పరిష్కరించడానికి, "వర్చువల్ ఛానెల్స్" సృష్టించబడ్డాయి. తెరవడానికి మరియు ముగించడానికి ఆన్‌చైన్ లావాదేవీలు అవసరమయ్యే సాధారణ ఛానెల్స్ వలె కాకుండా, వర్చువల్ ఛానెల్‌ను ప్రధాన చైన్‌తో సంభాషించకుండానే తెరవవచ్చు, అమలు చేయవచ్చు మరియు ఖరారు చేయవచ్చు. ఈ పద్ధతిని ఉపయోగించి వివాదాలను ఆఫ్‌చైన్‌లో కూడా పరిష్కరించడం సాధ్యమే. + +ఈ వ్యవస్థ "లెడ్జర్ ఛానెల్స్" అని పిలవబడే వాటి ఉనికిపై ఆధారపడి ఉంటుంది, ఇవి ఆన్‌చైన్‌లో నిధులు సమకూర్చబడ్డాయి. రెండు పార్టీల మధ్య వర్చువల్ ఛానెల్స్‌ను ఇప్పటికే ఉన్న లెడ్జర్ ఛానెల్ పైన నిర్మించవచ్చు, లెడ్జర్ ఛానెల్ యజమాని(లు) మధ్యవర్తిగా పనిచేస్తారు. + +ప్రతి వర్చువల్ ఛానెల్‌లోని వినియోగదారులు కొత్త కాంట్రాక్ట్ ఇన్‌స్టాన్స్ ద్వారా పరస్పర చర్య చేస్తారు, లెడ్జర్ ఛానెల్ బహుళ కాంట్రాక్ట్ ఇన్‌స్టాన్స్‌లకు మద్దతు ఇవ్వగలదు. లెడ్జర్ ఛానెల్ యొక్క స్టేట్‌లో ఒకటి కంటే ఎక్కువ కాంట్రాక్ట్ స్టోరేజ్ స్టేట్‌లు కూడా ఉంటాయి, ఇది విభిన్న వినియోగదారుల మధ్య ఆఫ్‌చైన్‌లో అప్లికేషన్‌ల సమాంతర అమలుకు అనుమతిస్తుంది. + +సాధారణ ఛానెల్స్ లాగే, వినియోగదారులు స్టేట్ మెషిన్‌ను ముందుకు నడిపించడానికి స్టేట్ అప్‌డేట్‌లను మార్పిడి చేసుకుంటారు. వివాదం తలెత్తితే తప్ప, ఛానెల్‌ను తెరిచేటప్పుడు లేదా ముగించేటప్పుడు మాత్రమే మధ్యవర్తిని సంప్రదించాలి. + +### వర్చువల్ చెల్లింపు ఛానెల్స్ {#virtual-payment-channels} + +వర్చువల్ చెల్లింపు ఛానెల్స్ వర్చువల్ స్టేట్ ఛానెల్స్ వలె అదే ఆలోచనపై పనిచేస్తాయి: ఒకే నెట్‌వర్క్‌కు కనెక్ట్ అయిన పాల్గొనేవారు ఆన్‌చైన్‌లో కొత్త ఛానెల్‌ను తెరవాల్సిన అవసరం లేకుండా సందేశాలను పంపవచ్చు. వర్చువల్ చెల్లింపు ఛానెల్స్‌లో, విలువ బదిలీలు ఒకటి లేదా అంతకంటే ఎక్కువ మధ్యవర్తుల ద్వారా మళ్లించబడతాయి, బదిలీ చేయబడిన నిధులను ఉద్దేశించిన గ్రహీత మాత్రమే స్వీకరించగలరనే హామీలతో. + +## స్టేట్ ఛానెల్స్ యొక్క అప్లికేషన్లు {#applications-of-state-channels} + +### చెల్లింపులు {#payments} + +తొలి బ్లాక్‌చెయిన్ ఛానెల్స్ అనేవి రెండు పార్టీలు మెయిన్‌నెట్‌పై అధిక లావాదేవీల రుసుము చెల్లించకుండా వేగంగా, తక్కువ రుసుముతో ఆఫ్‌చైన్‌లో బదిలీలు చేయడానికి వీలు కల్పించే సాధారణ ప్రోటోకాల్స్. నేడు, ఈథర్ మరియు టోకెన్ల మార్పిడి మరియు డిపాజిట్ల కోసం రూపొందించిన అప్లికేషన్‌లకు చెల్లింపు ఛానెల్స్ ఇప్పటికీ ఉపయోగకరంగా ఉన్నాయి. + +ఛానెల్-ఆధారిత చెల్లింపులకు కింది ప్రయోజనాలు ఉన్నాయి: + +1. **థ్రూపుట్**: ప్రతి ఛానెల్‌కు ఆఫ్‌చైన్ లావాదేవీల మొత్తం Ethereum యొక్క థ్రూపుట్‌కు సంబంధం లేకుండా ఉంటుంది, ఇది బ్లాక్ సైజు మరియు బ్లాక్ టైమ్ వంటి వివిధ కారకాలచే ప్రభావితమవుతుంది. ఆఫ్‌చైన్‌లో లావాదేవీలను అమలు చేయడం ద్వారా, బ్లాక్‌చెయిన్ ఛానెల్స్ అధిక థ్రూపుట్‌ను సాధించగలవు. + +2. **గోప్యత**: ఛానెల్స్ ఆఫ్‌చైన్‌లో ఉన్నందున, పాల్గొనేవారి మధ్య పరస్పర చర్యల వివరాలు Ethereum యొక్క పబ్లిక్ బ్లాక్‌చెయిన్‌లో నమోదు చేయబడవు. ఛానెల్ వినియోగదారులు ఛానెల్స్‌కు నిధులు సమకూర్చడం, మూసివేయడం లేదా వివాదాలను పరిష్కరించేటప్పుడు మాత్రమే ఆన్‌చైన్‌లో పరస్పరం సంభాషించవలసి ఉంటుంది. అందువల్ల, మరింత ప్రైవేట్ లావాదేవీలను కోరుకునే వ్యక్తులకు ఛానెల్స్ ఉపయోగకరంగా ఉంటాయి. + +3. **లేటెన్సీ**: ఛానెల్ పాల్గొనేవారి మధ్య నిర్వహించే ఆఫ్‌చైన్ లావాదేవీలు, ఇరుపక్షాలు సహకరిస్తే, ఆలస్యాన్ని తగ్గించి, తక్షణమే పరిష్కరించబడతాయి. దీనికి విరుద్ధంగా, మెయిన్‌నెట్‌లో ఒక లావాదేవీని పంపడానికి నోడ్‌లు లావాదేవీని ప్రాసెస్ చేయడానికి, లావాదేవీతో కొత్త బ్లాక్‌ను ఉత్పత్తి చేయడానికి మరియు ఏకాభిప్రాయానికి రావడానికి వేచి ఉండాలి. లావాదేవీని ఖరారు చేసినట్లు పరిగణలోకి తీసుకునే ముందు వినియోగదారులు మరిన్ని బ్లాక్ నిర్ధారణల కోసం వేచి ఉండాల్సి రావచ్చు. + +4. **ఖర్చు**: పాల్గొనేవారి సమితి సుదీర్ఘ కాలం పాటు అనేక స్టేట్ అప్‌డేట్‌లను మార్పిడి చేసుకునే పరిస్థితులలో స్టేట్ ఛానెల్స్ ప్రత్యేకంగా ఉపయోగపడతాయి. స్టేట్ ఛానెల్ స్మార్ట్ కాంట్రాక్ట్‌ను తెరవడం మరియు మూసివేయడం మాత్రమే అయ్యే ఖర్చులు; పరిష్కార ఖర్చు తదనుగుణంగా పంపిణీ చేయబడినందున ఛానెల్‌ను తెరవడం మరియు మూసివేయడం మధ్య ప్రతి స్టేట్ మార్పు చివరి దాని కంటే చౌకగా ఉంటుంది. + +[రోలప్‌లు](/developers/docs/scaling/#rollups) వంటి లేయర్ 2 పరిష్కారాలపై స్టేట్ ఛానెల్స్‌ను అమలు చేయడం వల్ల చెల్లింపుల కోసం వాటిని మరింత ఆకర్షణీయంగా మార్చవచ్చు. ఛానెల్స్ చౌక చెల్లింపులను అందించినప్పటికీ, ప్రారంభ దశలో మెయిన్‌నెట్‌లో ఆన్‌చైన్ కాంట్రాక్ట్‌ను సెటప్ చేసే ఖర్చులు ఖరీదైనవి కావచ్చు—ముఖ్యంగా గ్యాస్ రుసుములు పెరిగినప్పుడు. Ethereum-ఆధారిత రోలప్‌లు [తక్కువ లావాదేవీల రుసుములను](https://l2fees.info/) అందిస్తాయి మరియు సెటప్ రుసుములను తగ్గించడం ద్వారా ఛానెల్ పాల్గొనేవారికి ఓవర్‌హెడ్‌ను తగ్గించగలవు. + +### సూక్ష్మ లావాదేవీలు {#microtransactions} + +మైక్రోట్రాన్సాక్షన్‌లు అనేవి తక్కువ-విలువైన చెల్లింపులు (ఉదా., డాలర్‌లో ఒక భాగానికి కంటే తక్కువ) వీటిని వ్యాపారాలు నష్టాలను చవిచూడకుండా ప్రాసెస్ చేయలేవు. ఈ సంస్థలు చెల్లింపు సేవా ప్రదాతలకు చెల్లించాలి, ఇది కస్టమర్ చెల్లింపులపై మార్జిన్ లాభం సంపాదించడానికి చాలా తక్కువగా ఉంటే వారు చేయలేరు. + +చెల్లింపు ఛానెల్స్ మైక్రోట్రాన్సాక్షన్‌లతో సంబంధం ఉన్న ఓవర్‌హెడ్‌ను తగ్గించడం ద్వారా ఈ సమస్యను పరిష్కరిస్తాయి. ఉదాహరణకు, ఒక ఇంటర్నెట్ సర్వీస్ ప్రొవైడర్ (ISP) కస్టమర్‌తో ఒక చెల్లింపు ఛానెల్‌ను తెరిచి, వారు సేవను ఉపయోగించిన ప్రతిసారీ చిన్న చెల్లింపులను ప్రసారం చేయడానికి వారిని అనుమతించవచ్చు. + +ఛానెల్ తెరవడం మరియు మూసివేయడం ఖర్చుకు మించి, పాల్గొనేవారు మైక్రోట్రాన్సాక్షన్‌లపై తదుపరి ఖర్చులను భరించరు (గ్యాస్ ఫీజులు లేవు). ఇది వినియోగదారులకు సేవలకు ఎంత చెల్లించాలో ఎక్కువ సౌలభ్యాన్ని కలిగి ఉన్నందున మరియు వ్యాపారాలు లాభదాయకమైన మైక్రోట్రాన్సాక్షన్‌లపై నష్టపోనందున ఇది ఒక విజయ-విజయ పరిస్థితి. + +### వికేంద్రీకృత అప్లికేషన్లు {#decentralized-applications} + +చెల్లింపు ఛానెల్స్ లాగే, స్టేట్ ఛానెల్స్ స్టేట్ మెషిన్ యొక్క చివరి స్టేట్‌ల ప్రకారం షరతులతో కూడిన చెల్లింపులు చేయగలవు. స్టేట్ ఛానెల్స్ ఏకపక్ష స్టేట్ మార్పు లాజిక్‌కు కూడా మద్దతు ఇవ్వగలవు, ఇది ఆఫ్‌చైన్‌లో సాధారణ యాప్‌లను అమలు చేయడానికి వాటిని ఉపయోగకరంగా చేస్తుంది. + +స్టేట్ ఛానెల్స్ తరచుగా సాధారణ టర్న్-బేస్డ్ అప్లికేషన్‌లకు పరిమితం చేయబడతాయి, ఎందుకంటే ఇది ఆన్‌చైన్ కాంట్రాక్ట్‌కు కట్టుబడి ఉన్న నిధులను నిర్వహించడం సులభం చేస్తుంది. అంతేకాక, పరిమిత సంఖ్యలో పార్టీలు ఆఫ్‌చైన్ అప్లికేషన్ యొక్క స్టేట్‌ను విరామాలలో అప్‌డేట్ చేయడంతో, నిజాయితీ లేని ప్రవర్తనను శిక్షించడం చాలా సులభం. + +స్టేట్ ఛానెల్ అప్లికేషన్ యొక్క సామర్థ్యం దాని రూపకల్పనపై కూడా ఆధారపడి ఉంటుంది. ఉదాహరణకు, ఒక డెవలపర్ యాప్ ఛానెల్ కాంట్రాక్ట్‌ను ఒకసారి ఆన్‌చైన్‌లో డిప్లాయ్ చేసి, ఇతర ఆటగాళ్లను ఆన్‌చైన్‌కి వెళ్లకుండానే యాప్‌ను మళ్లీ ఉపయోగించుకోవడానికి అనుమతించవచ్చు. ఈ సందర్భంలో, ప్రారంభ యాప్ ఛానెల్ బహుళ వర్చువల్ ఛానెల్స్‌కు మద్దతు ఇచ్చే లెడ్జర్ ఛానెల్‌గా పనిచేస్తుంది, ప్రతి ఒక్కటి యాప్ యొక్క స్మార్ట్ కాంట్రాక్ట్ యొక్క కొత్త ఇన్‌స్టాన్స్ ఆఫ్‌చైన్‌లో నడుస్తుంది. + +స్టేట్ ఛానెల్ అప్లికేషన్‌లకు సంభావ్య వినియోగ-కేసు సాధారణ ఇద్దరు ఆటగాళ్ల ఆటలు, ఇక్కడ ఆట ఫలితం ఆధారంగా నిధులు పంపిణీ చేయబడతాయి. ఇక్కడ ప్రయోజనం ఏమిటంటే, ఆటగాళ్ళు ఒకరినొకరు విశ్వసించాల్సిన అవసరం లేదు (విశ్వసనీయత) మరియు ఆన్‌చైన్ కాంట్రాక్ట్, ఆటగాళ్ళు కాదు, నిధుల కేటాయింపు మరియు వివాదాల పరిష్కారాన్ని (వికేంద్రీకరణ) నియంత్రిస్తుంది. + +స్టేట్ ఛానెల్ యాప్‌లకు ఇతర సంభావ్య వినియోగ-కేసులలో ENS పేరు యాజమాన్యం, NFT లెడ్జర్‌లు మరియు మరెన్నో ఉన్నాయి. + +### అటామిక్ బదిలీలు {#atomic-transfers} + +తొలి చెల్లింపు ఛానెల్స్ రెండు పార్టీల మధ్య బదిలీలకు మాత్రమే పరిమితం చేయబడ్డాయి, ఇది వాటి వినియోగాన్ని పరిమితం చేసింది. అయితే, వర్చువల్ ఛానెల్స్ పరిచయం వ్యక్తులు ఆన్‌చైన్‌లో కొత్త ఛానెల్‌ను తెరవాల్సిన అవసరం లేకుండా మధ్యవర్తుల ద్వారా (అంటే, బహుళ p2p ఛానెల్స్) బదిలీలను మళ్లించడానికి అనుమతించింది. + +సాధారణంగా "మల్టీ-హాప్ బదిలీలు" అని వర్ణించబడిన, రూట్ చేయబడిన చెల్లింపులు అటామిక్ (అంటే, లావాదేవీ యొక్క అన్ని భాగాలు విజయవంతమవుతాయి లేదా అది పూర్తిగా విఫలమవుతుంది). అటామిక్ బదిలీలు [హాష్డ్ టైమ్‌లాక్ కాంట్రాక్ట్స్ (HTLCs)](https://en.bitcoin.it/wiki/Hash_Time_Locked_Contracts) ను ఉపయోగిస్తాయి, ఇది నిర్దిష్ట షరతులు నెరవేరినప్పుడు మాత్రమే చెల్లింపు విడుదల చేయబడిందని నిర్ధారిస్తుంది, తద్వారా కౌంటర్‌పార్టీ ప్రమాదాన్ని తగ్గిస్తుంది. + +## స్టేట్ ఛానెల్స్ ఉపయోగించడం వల్ల కలిగే నష్టాలు {#drawbacks-of-state-channels} + +### సజీవత్వ అంచనాలు {#liveness-assumptions} + +సామర్థ్యాన్ని నిర్ధారించడానికి, స్టేట్ ఛానెల్స్ పాల్గొనేవారికి వివాదాలకు ప్రతిస్పందించే సామర్థ్యంపై సమయ పరిమితులను ఉంచుతాయి. ఈ నియమం ప్రకారం పీర్స్ ఎల్లప్పుడూ ఆన్‌లైన్‌లో ఉండి ఛానెల్ కార్యకలాపాలను పర్యవేక్షిస్తారని మరియు అవసరమైనప్పుడు సవాళ్లను పోటీ చేస్తారని భావిస్తుంది. + +వాస్తవానికి, వినియోగదారులు తమ నియంత్రణలో లేని కారణాల వల్ల ఆఫ్‌లైన్‌కి వెళ్లవచ్చు (ఉదా., పేలవమైన ఇంటర్నెట్ కనెక్షన్, మెకానికల్ వైఫల్యం మొదలైనవి). నిజాయితీ గల వినియోగదారు ఆఫ్‌లైన్‌కి వెళితే, ఒక హానికరమైన పీర్ పాత మధ్యంతర స్టేట్‌లను అడ్జుడికేటర్ కాంట్రాక్ట్‌కు సమర్పించి, కట్టుబడి ఉన్న నిధులను దొంగిలించడం ద్వారా పరిస్థితిని దోపిడీ చేయవచ్చు. + +కొన్ని ఛానెల్స్ "వాచ్‌టవర్‌లను" ఉపయోగిస్తాయి—ఇతరుల తరఫున ఆన్‌చైన్ వివాద సంఘటనలను చూడటానికి మరియు సంబంధిత పార్టీలను హెచ్చరించడం వంటి అవసరమైన చర్యలు తీసుకోవడానికి బాధ్యత వహించే సంస్థలు. అయితే, ఇది స్టేట్ ఛానెల్‌ను ఉపయోగించే ఖర్చులను పెంచుతుంది. + +### డేటా అందుబాటులో లేకపోవడం {#data-unavailability} + +ముందుగా వివరించినట్లుగా, చెల్లని వివాదాన్ని సవాలు చేయడానికి స్టేట్ ఛానెల్ యొక్క తాజా, చెల్లుబాటు అయ్యే స్టేట్‌ను సమర్పించాలి. ఇది ఒక అంచనాపై ఆధారపడిన మరో నియమం—వినియోగదారులకు ఛానెల్ యొక్క తాజా స్టేట్‌కు యాక్సెస్ ఉందని. + +ఛానెల్ వినియోగదారులు ఆఫ్‌చైన్ అప్లికేషన్ స్టేట్ కాపీలను నిల్వ చేయాలని ఆశించడం సహేతుకమైనప్పటికీ, లోపం లేదా మెకానికల్ వైఫల్యం కారణంగా ఈ డేటా కోల్పోవచ్చు. వినియోగదారు వద్ద డేటా బ్యాకప్ లేకపోతే, ఇతర పార్టీ వారి ఆధీనంలో ఉన్న పాత స్టేట్ మార్పులను ఉపయోగించి చెల్లని నిష్క్రమణ అభ్యర్థనను ఖరారు చేయదని వారు ఆశించగలరు. + +నెట్‌వర్క్ డేటా లభ్యతపై నియమాలను అమలు చేస్తుంది కాబట్టి Ethereum వినియోగదారులు ఈ సమస్యతో వ్యవహరించాల్సిన అవసరం లేదు. లావాదేవీ డేటా అన్ని నోడ్‌ల ద్వారా నిల్వ చేయబడి, ప్రచారం చేయబడుతుంది మరియు అవసరమైతే వినియోగదారులు డౌన్‌లోడ్ చేసుకోవడానికి అందుబాటులో ఉంటుంది. + +### ద్రవత్వ సమస్యలు {#liquidity-issues} + +బ్లాక్‌చెయిన్ ఛానెల్‌ను స్థాపించడానికి, పాల్గొనేవారు ఛానెల్ యొక్క జీవితచక్రం కోసం ఆన్‌చైన్ స్మార్ట్ కాంట్రాక్ట్‌లో నిధులను లాక్ చేయాలి. ఇది ఛానెల్ వినియోగదారుల ద్రవత్వాన్ని తగ్గిస్తుంది మరియు మెయిన్‌నెట్‌లో నిధులను లాక్ చేసి ఉంచగలిగే వారికి ఛానెల్స్‌ను కూడా పరిమితం చేస్తుంది. + +అయితే, లెడ్జర్ ఛానెల్స్—ఆఫ్‌చైన్ సర్వీస్ ప్రొవైడర్ (OSP) ద్వారా నిర్వహించబడతాయి—వినియోగదారుల కోసం ద్రవత్వ సమస్యలను తగ్గించగలవు. లెడ్జర్ ఛానెల్‌కు కనెక్ట్ చేయబడిన ఇద్దరు పీర్స్ ఒక వర్చువల్ ఛానెల్‌ను సృష్టించగలరు, దానిని వారు ఎప్పుడైనా, పూర్తిగా ఆఫ్‌చైన్‌లో తెరవగలరు మరియు ఖరారు చేయగలరు. + +ఆఫ్‌చైన్ సర్వీస్ ప్రొవైడర్లు బహుళ పీర్స్‌తో ఛానెల్స్‌ను కూడా తెరవవచ్చు, ఇది చెల్లింపులను మళ్లించడానికి వాటిని ఉపయోగకరంగా చేస్తుంది. వాస్తవానికి, వినియోగదారులు వారి సేవల కోసం OSPలకు ఫీజు చెల్లించాలి, ఇది కొంతమందికి అవాంఛనీయంగా ఉండవచ్చు. + +### గ్రీఫింగ్ దాడులు {#griefing-attacks} + +ఫ్రాడ్ ప్రూఫ్-ఆధారిత వ్యవస్థలలో గ్రీఫింగ్ దాడులు ఒక సాధారణ లక్షణం. గ్రీఫింగ్ దాడి దాడి చేసిన వ్యక్తికి ప్రత్యక్షంగా ప్రయోజనం చేకూర్చదు కానీ బాధితుడికి దుఃఖాన్ని (అంటే, హాని) కలిగిస్తుంది, అందుకే ఆ పేరు వచ్చింది. + +ఫ్రాడ్ ప్రూవింగ్ గ్రీఫింగ్ దాడులకు గురవుతుంది ఎందుకంటే నిజాయితీ గల పార్టీ ప్రతి వివాదానికి, చెల్లని వాటికి కూడా స్పందించాలి, లేదా వారి నిధులను కోల్పోయే ప్రమాదం ఉంది. ఒక హానికరమైన పార్టిసిపెంట్ పదేపదే పాత స్టేట్ మార్పులను ఆన్‌చైన్‌లో పోస్ట్ చేయాలని నిర్ణయించుకోవచ్చు, ఇది నిజాయితీ గల పార్టీని చెల్లుబాటు అయ్యే స్టేట్‌తో ప్రతిస్పందించమని బలవంతం చేస్తుంది. ఆ ఆన్‌చైన్ లావాదేవీల ఖర్చు త్వరగా పెరిగిపోతుంది, దీనివల్ల నిజాయితీ గల పార్టీలు ఈ ప్రక్రియలో నష్టపోతాయి. + +### ముందుగా నిర్వచించిన పార్టిసిపెంట్ సెట్‌లు {#predefined-participant-sets} + +రూపకల్పన ప్రకారం, స్టేట్ ఛానెల్‌ను కలిగి ఉన్న పాల్గొనేవారి సంఖ్య దాని జీవితకాలం అంతా స్థిరంగా ఉంటుంది. ఎందుకంటే పార్టిసిపెంట్ సెట్‌ను అప్‌డేట్ చేయడం ఛానెల్ ఆపరేషన్‌ను సంక్లిష్టం చేస్తుంది, ముఖ్యంగా ఛానెల్‌కు నిధులు సమకూర్చేటప్పుడు లేదా వివాదాలను పరిష్కరించేటప్పుడు. పాల్గొనేవారిని జోడించడం లేదా తీసివేయడం కూడా అదనపు ఆన్‌చైన్ కార్యకలాపాలను అవసరం చేస్తుంది, ఇది వినియోగదారులకు ఓవర్‌హెడ్‌ను పెంచుతుంది. + +ఇది స్టేట్ ఛానెల్స్ గురించి తార్కికంగా ఆలోచించడాన్ని సులభతరం చేసినప్పటికీ, ఇది ఛానెల్ డిజైన్‌ల వినియోగాన్ని అప్లికేషన్ డెవలపర్‌లకు పరిమితం చేస్తుంది. రోలప్‌ల వంటి ఇతర స్కేలింగ్ పరిష్కారాల zugunstenలో స్టేట్ ఛానెల్స్‌ను ఎందుకు వదిలివేయబడ్డాయో ఇది పాక్షికంగా వివరిస్తుంది. + +### సమాంతర లావాదేవీల ప్రాసెసింగ్ {#parallel-transaction-processing} + +స్టేట్ ఛానెల్‌లోని పాల్గొనేవారు వంతులవారీగా స్టేట్ అప్‌డేట్‌లను పంపుతారు, అందుకే అవి "టర్న్-బేస్డ్ అప్లికేషన్‌ల"కు (ఉదా., ఇద్దరు ఆటగాళ్ల చెస్ గేమ్) ఉత్తమంగా పనిచేస్తాయి. ఇది ఏకకాలంలో స్టేట్ అప్‌డేట్‌లను నిర్వహించాల్సిన అవసరాన్ని తొలగిస్తుంది మరియు పాత అప్‌డేట్ పోస్టర్‌లను శిక్షించడానికి ఆన్‌చైన్ కాంట్రాక్ట్ చేయవలసిన పనిని తగ్గిస్తుంది. అయితే, ఈ డిజైన్ యొక్క ఒక సైడ్-ఎఫెక్ట్ ఏమిటంటే, లావాదేవీలు ఒకదానిపై ఒకటి ఆధారపడి ఉంటాయి, ఇది లేటెన్సీని పెంచుతుంది మరియు మొత్తం వినియోగదారు అనుభవాన్ని తగ్గిస్తుంది. + +కొన్ని స్టేట్ ఛానెల్స్ "ఫుల్-డ్యూప్లెక్స్" డిజైన్‌ను ఉపయోగించి ఈ సమస్యను పరిష్కరిస్తాయి, ఇది ఆఫ్‌చైన్ స్టేట్‌ను రెండు ఏకదిశాత్మక "సింప్లెక్స్" స్టేట్‌లుగా విభజిస్తుంది, ఇది ఏకకాల స్టేట్ అప్‌డేట్‌లకు అనుమతిస్తుంది. ఇటువంటి డిజైన్‌లు ఆఫ్‌చైన్ థ్రూపుట్‌ను మెరుగుపరుస్తాయి మరియు లావాదేవీ ఆలస్యాలను తగ్గిస్తాయి. + +## స్టేట్ ఛానెల్స్ ఉపయోగించండి {#use-state-channels} + +మీరు మీ డాప్స్‌లో విలీనం చేయగల స్టేట్ ఛానెల్స్ యొక్క అమలులను బహుళ ప్రాజెక్టులు అందిస్తాయి: + +- [Connext](https://connext.network/) +- [Kchannels](https://www.kchannels.io/) +- [Perun](https://perun.network/) +- [Raiden](https://raiden.network/) +- [Statechannels.org](https://statechannels.org/) + +## మరింత సమాచారం {#further-reading} + +**స్టేట్ ఛానెల్స్** + +- [Ethereum యొక్క లేయర్ 2 స్కేలింగ్ పరిష్కారాలను అర్థం చేసుకోవడం: స్టేట్ ఛానెల్స్, ప్లాస్మా మరియు ట్రూబిట్](https://medium.com/l4-media/making-sense-of-ethereums-layer-2-scaling-solutions-state-channels-plasma-and-truebit-22cb40dcc2f4) _– జోష్ స్టార్క్, ఫిబ్రవరి 12 2018_ +- [స్టేట్ ఛానెల్స్ - ఒక వివరణ](https://www.jeffcoleman.ca/state-channels/) _Nov 6, 2015 - జెఫ్ కోల్మన్_ +- [స్టేట్ ఛానెల్స్ యొక్క ప్రాథమికాలు](https://education.district0x.io/general-topics/understanding-ethereum/basics-state-channels/) _District0x_ +- [బ్లాక్‌చెయిన్ స్టేట్ ఛానెల్స్: ఎ స్టేట్ ఆఫ్ ది ఆర్ట్](https://ieeexplore.ieee.org/document/9627997) + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ diff --git a/public/content/translations/te/developers/docs/scaling/validium/index.md b/public/content/translations/te/developers/docs/scaling/validium/index.md new file mode 100644 index 00000000000..a47db2ff7f6 --- /dev/null +++ b/public/content/translations/te/developers/docs/scaling/validium/index.md @@ -0,0 +1,166 @@ +--- +title: "వాలిడియం" +description: "ప్రస్తుతం Ethereum కమ్యూనిటీ ద్వారా ఉపయోగించబడుతున్న స్కేలింగ్ పరిష్కారంగా వాలిడియంకు పరిచయం." +lang: te +sidebarDepth: 3 +--- + +వాలిడియం అనేది [స్కేలింగ్ సొల్యూషన్](/developers/docs/scaling/), ఇది [ZK-రోలప్‌లు](/developers/docs/scaling/zk-rollups/) వంటి చెల్లుబాటు రుజువులను ఉపయోగించి లావాదేవీల సమగ్రతను అమలు చేస్తుంది, కానీ Ethereum మెయిన్‌నెట్‌లో లావాదేవీల డేటాను నిల్వ చేయదు. ఆఫ్‌చైన్ డేటా లభ్యత ట్రేడ్-ఆఫ్‌లను పరిచయం చేసినప్పటికీ, ఇది స్కేలబిలిటీలో భారీ మెరుగుదలలకు దారితీస్తుంది (వాలిడియంలు సెకనుకు [~9,000 లావాదేవీలు లేదా అంతకంటే ఎక్కువ](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263) ప్రాసెస్ చేయగలవు). + +## అవసరాలు {#prerequisites} + +మీరు మా [Ethereum స్కేలింగ్](/developers/docs/scaling/) మరియు [లేయర్ 2](/layer-2) పేజీని చదివి అర్థం చేసుకొని ఉండాలి. + +## వాలిడియం అంటే ఏమిటి? {#what-is-validium} + +వాలిడియంలు అనేవి ఆఫ్‌చైన్ డేటా లభ్యత మరియు గణనను ఉపయోగించే స్కేలింగ్ పరిష్కారాలు, ఇవి Ethereum మెయిన్‌నెట్ నుండి లావాదేవీలను ప్రాసెస్ చేయడం ద్వారా థ్రూపుట్‌ను మెరుగుపరచడానికి రూపొందించబడ్డాయి. జీరో-కనౌలెడ్జి రోలప్‌లు (ZK-రోలప్‌లు) వలె, వాలిడియంలు Ethereumలో ఆఫ్‌చైన్ లావాదేవీలను ధృవీకరించడానికి [జీరో-కనౌలెడ్జి రుజువులను](/glossary/#zk-proof) ప్రచురిస్తాయి. ఇది చెల్లని స్థితి పరివర్తనలను నివారిస్తుంది మరియు వాలిడియం చైన్ యొక్క భద్రతా హామీలను మెరుగుపరుస్తుంది. + +ఈ "చెల్లుబాటు రుజువులు" ZK-SNARKs (జీరో-నాలెడ్జ్ సక్సెంట్ నాన్-ఇంటరాక్టివ్ ఆర్గ్యుమెంట్ ఆఫ్ నాలెడ్జ్) లేదా ZK-STARKs (జీరో-నాలెడ్జ్ స్కేలబుల్ ట్రాన్స్‌పరెంట్ ఆర్గ్యుమెంట్ ఆఫ్ నాలెడ్జ్) రూపంలో రావచ్చు. [జీరో-కనౌలెడ్జి రుజువులు](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/) గురించి మరింత. + +వాలిడియం వినియోగదారులకు చెందిన నిధులు Ethereumలోని ఒక స్మార్ట్ కాంట్రాక్ట్ ద్వారా నియంత్రించబడతాయి. ZK-రోలప్‌ల మాదిరిగానే వాలిడియంలు దాదాపు తక్షణ ఉపసంహరణలను అందిస్తాయి; మెయిన్‌నెట్‌లో ఉపసంహరణ అభ్యర్థన కోసం చెల్లుబాటు రుజువు ధృవీకరించబడిన తర్వాత, వినియోగదారులు [మెర్కిల్ రుజువులను](/developers/tutorials/merkle-proofs-for-offline-data-integrity/) అందించడం ద్వారా నిధులను ఉపసంహరించుకోవచ్చు. మెర్కిల్ రుజువు ధృవీకరించబడిన లావాదేవీల బ్యాచ్‌లో వినియోగదారు ఉపసంహరణ లావాదేవీని చేర్చడాన్ని ధృవీకరిస్తుంది, ఇది ఆన్‌చైన్ కాంట్రాక్ట్ ఉపసంహరణను ప్రాసెస్ చేయడానికి అనుమతిస్తుంది. + +అయితే, వాలిడియం వినియోగదారులు తమ నిధులను స్తంభింపజేయవచ్చు మరియు ఉపసంహరణలను పరిమితం చేయవచ్చు. వాలిడియం చైన్‌లో డేటా లభ్యత మేనేజర్లు వినియోగదారుల నుండి ఆఫ్‌చైన్ స్టేట్ డేటాను నిలిపివేస్తే ఇది జరగవచ్చు. లావాదేవీ డేటాకు యాక్సెస్ లేకుండా, వినియోగదారులు నిధుల యాజమాన్యాన్ని నిరూపించడానికి మరియు ఉపసంహరణలను అమలు చేయడానికి అవసరమైన మెర్కిల్ రుజువును లెక్కించలేరు. + +వాలిడియంలు మరియు ZK-రోలప్‌ల మధ్య ఉన్న ప్రధాన వ్యత్యాసం ఇదే—డేటా లభ్యత స్పెక్ట్రంలో వాటి స్థానాలు. రెండు పరిష్కారాలు డేటా నిల్వను విభిన్నంగా సంప్రదిస్తాయి, ఇది భద్రత మరియు విశ్వసనీయతకు చిక్కులను కలిగి ఉంటుంది. + +## వాలిడియంలు Ethereumతో ఎలా సంకర్షణ చెందుతాయి? {#how-do-validiums-interact-with-ethereum} + +వాలిడియంలు అనేవి ఇప్పటికే ఉన్న Ethereum చైన్ పైన నిర్మించబడిన స్కేలింగ్ ప్రోటోకాల్‌లు. ఇది లావాదేవీలను ఆఫ్‌చైన్‌లో అమలు చేసినప్పటికీ, ఒక వాలిడియం చైన్ మెయిన్‌నెట్‌లో అమలు చేయబడిన స్మార్ట్ కాంట్రాక్ట్‌ల సేకరణ ద్వారా నిర్వహించబడుతుంది, వీటిలో ఇవి ఉన్నాయి: + +1. **వెరిఫైయర్ కాంట్రాక్ట్**: వెరిఫైయర్ కాంట్రాక్ట్ స్టేట్ అప్‌డేట్‌లు చేసేటప్పుడు వాలిడియం ఆపరేటర్ సమర్పించిన రుజువుల చెల్లుబాటును ధృవీకరిస్తుంది. ఇందులో ఆఫ్‌చైన్ లావాదేవీల సరైనతను ధృవీకరించే చెల్లుబాటు రుజువులు మరియు ఆఫ్‌చైన్ లావాదేవీల డేటా ఉనికిని ధృవీకరించే డేటా లభ్యత రుజువులు ఉంటాయి. + +2. **ప్రధాన కాంట్రాక్ట్**: ప్రధాన కాంట్రాక్ట్ బ్లాక్ ఉత్పత్తిదారులు సమర్పించిన స్టేట్ కట్టుబాట్లను (మెర్కిల్ రూట్‌లు) నిల్వ చేస్తుంది మరియు ఆన్‌చైన్‌లో చెల్లుబాటు రుజువు ధృవీకరించబడిన తర్వాత వాలిడియం స్టేట్‌ను నవీకరిస్తుంది. ఈ కాంట్రాక్ట్ వాలిడియం చైన్‌కు డిపాజిట్లు మరియు దాని నుండి ఉపసంహరణలను కూడా ప్రాసెస్ చేస్తుంది. + +వాలిడియంలు కింది వాటి కోసం ప్రధాన Ethereum చైన్‌పై కూడా ఆధారపడతాయి: + +### సెటిల్మెంట్ {#settlement} + +ఒక వాలిడియంలో అమలు చేయబడిన లావాదేవీలు వాటి చెల్లుబాటును పేరెంట్ చైన్ ధృవీకరించే వరకు పూర్తిగా ధృవీకరించబడవు. ఒక వాలిడియంలో నిర్వహించబడే అన్ని వ్యాపారాలు చివరికి మెయిన్‌నెట్‌లో సెటిల్ చేయబడాలి. Ethereum బ్లాక్‌చైన్ వాలిడియం వినియోగదారుల కోసం "సెటిల్మెంట్ హామీలను" కూడా అందిస్తుంది, అంటే ఆఫ్‌చైన్ లావాదేవీలను ఒకసారి ఆన్‌చైన్‌కు కట్టుబడితే రివర్స్ చేయడం లేదా మార్చడం సాధ్యం కాదు. + +### భద్రత {#security} + +Ethereum, సెటిల్మెంట్ లేయర్‌గా పనిచేస్తూ, వాలిడియంలో స్టేట్ పరివర్తనల చెల్లుబాటుకు కూడా హామీ ఇస్తుంది. వాలిడియం చైన్‌లో అమలు చేయబడిన ఆఫ్‌చైన్ లావాదేవీలు బేస్ Ethereum లేయర్‌లోని ఒక స్మార్ట్ కాంట్రాక్ట్ ద్వారా ధృవీకరించబడతాయి. + +ఒకవేళ ఆన్‌చైన్ వెరిఫైయర్ కాంట్రాక్ట్ రుజువు చెల్లదని భావిస్తే, లావాదేవీలు తిరస్కరించబడతాయి. దీని అర్థం ఆపరేటర్లు వాలిడియం స్టేట్‌ను నవీకరించే ముందు Ethereum ప్రోటోకాల్ ద్వారా అమలు చేయబడిన చెల్లుబాటు షరతులను సంతృప్తి పరచాలి. + +## వాలిడియం ఎలా పనిచేస్తుంది? {#how-does-validium-work} + +### లావాదేవీలు {#transactions} + +వినియోగదారులు లావాదేవీలను ఆపరేటర్‌కు సమర్పిస్తారు, ఇది వాలిడియం చైన్‌లో లావాదేవీలను అమలు చేయడానికి బాధ్యత వహించే నోడ్. కొన్ని వాలిడియంలు చైన్‌ను అమలు చేయడానికి ఒకే ఆపరేటర్‌ను ఉపయోగించవచ్చు లేదా ఆపరేటర్లను మార్చడానికి [ప్రూఫ్-ఆఫ్-స్టేక్ (PoS)](/developers/docs/consensus-mechanisms/pos/) మెకానిజంపై ఆధారపడవచ్చు. + +ఆపరేటర్ లావాదేవీలను ఒక బ్యాచ్‌గా సమీకరించి, దానిని ప్రూవింగ్ కోసం ఒక ప్రూవింగ్ సర్క్యూట్‌కు పంపుతాడు. ప్రూవింగ్ సర్క్యూట్ లావాదేవీ బ్యాచ్ (మరియు ఇతర సంబంధిత డేటా)ను ఇన్‌పుట్‌లుగా అంగీకరిస్తుంది మరియు ఆపరేషన్లు సరిగ్గా నిర్వహించబడ్డాయని ధృవీకరించే ఒక చెల్లుబాటు రుజువును అవుట్‌పుట్ చేస్తుంది. + +### స్థితి కట్టుబాట్లు {#state-commitments} + +వాలిడియం యొక్క స్టేట్ మెర్కిల్ ట్రీగా హాష్ చేయబడుతుంది, దీని రూట్ Ethereumలోని ప్రధాన కాంట్రాక్ట్‌లో నిల్వ చేయబడుతుంది. మెర్కిల్ రూట్, దీనిని స్టేట్ రూట్ అని కూడా అంటారు, ఇది వాలిడియంలోని ఖాతాలు మరియు బ్యాలెన్సుల ప్రస్తుత స్టేట్‌కు క్రిప్టోగ్రాఫిక్ కట్టుబాటుగా పనిచేస్తుంది. + +స్టేట్ అప్‌డేట్ చేయడానికి, ఆపరేటర్ ఒక కొత్త స్టేట్ రూట్‌ను (లావాదేవీలను అమలు చేసిన తర్వాత) లెక్కించి, దానిని ఆన్‌చైన్ కాంట్రాక్ట్‌కు సమర్పించాలి. చెల్లుబాటు రుజువు సరిపోలితే, ప్రతిపాదిత స్టేట్ ఆమోదించబడుతుంది మరియు వాలిడియం కొత్త స్టేట్ రూట్‌కు మారుతుంది. + +### డిపాజిట్లు మరియు ఉపసంహరణలు {#deposits-and-withdrawals} + +వినియోగదారులు ఆన్‌చైన్ కాంట్రాక్ట్‌లో ETH (లేదా ఏదైనా ERC-అనుకూల టోకెన్) డిపాజిట్ చేయడం ద్వారా నిధులను Ethereum నుండి వాలిడియంకు తరలిస్తారు. కాంట్రాక్ట్ డిపాజిట్ ఈవెంట్‌ను వాలిడియం ఆఫ్‌చైన్‌కు రిలే చేస్తుంది, ఇక్కడ వినియోగదారుడి చిరునామాకు వారి డిపాజిట్‌కు సమానమైన మొత్తంతో క్రెడిట్ చేయబడుతుంది. ఆపరేటర్ ఈ డిపాజిట్ లావాదేవీని కూడా కొత్త బ్యాచ్‌లో చేర్చుతాడు. + +నిధులను మెయిన్‌నెట్‌కు తిరిగి తరలించడానికి, ఒక వాలిడియం వినియోగదారు ఉపసంహరణ లావాదేవీని ప్రారంభించి, దానిని ఆపరేటర్‌కు సమర్పిస్తాడు, అతను ఉపసంహరణ అభ్యర్థనను ధృవీకరించి, దానిని ఒక బ్యాచ్‌లో చేర్చుతాడు. వినియోగదారు సిస్టమ్ నుండి నిష్క్రమించే ముందు వాలిడియం చైన్‌లో వారి ఆస్తులు కూడా నాశనం చేయబడతాయి. బ్యాచ్‌తో అనుబంధించబడిన చెల్లుబాటు రుజువు ధృవీకరించబడిన తర్వాత, వినియోగదారు తమ ప్రారంభ డిపాజిట్ యొక్క మిగిలిన భాగాన్ని ఉపసంహరించుకోవడానికి ప్రధాన కాంట్రాక్ట్‌కు కాల్ చేయవచ్చు. + +సెన్సార్‌షిప్‌ను నిరోధించే ఒక మెకానిజంగా, వాలిడియం ప్రోటోకాల్ ఆపరేటర్ ద్వారా వెళ్లకుండా నేరుగా వాలిడియం కాంట్రాక్ట్ నుండి ఉపసంహరించుకోవడానికి వినియోగదారులను అనుమతిస్తుంది. ఈ సందర్భంలో, వినియోగదారులు స్టేట్ రూట్‌లో ఒక ఖాతా చేర్చబడిందని చూపిస్తూ వెరిఫైయర్ కాంట్రాక్ట్‌కు ఒక మెర్కిల్ ప్రూఫ్‌ను అందించాలి. రుజువు అంగీకరించబడితే, వినియోగదారు తమ నిధులను వాలిడియం నుండి నిష్క్రమించడానికి ప్రధాన కాంట్రాక్ట్ యొక్క ఉపసంహరణ ఫంక్షన్‌కు కాల్ చేయవచ్చు. + +### బ్యాచ్ సమర్పణ {#batch-submission} + +లావాదేవీల బ్యాచ్‌ను అమలు చేసిన తర్వాత, ఆపరేటర్ అనుబంధిత చెల్లుబాటు రుజువును వెరిఫైయర్ కాంట్రాక్ట్‌కు సమర్పించి, ప్రధాన కాంట్రాక్ట్‌కు ఒక కొత్త స్టేట్ రూట్‌ను ప్రతిపాదిస్తాడు. రుజువు చెల్లుబాటు అయితే, ప్రధాన కాంట్రాక్ట్ వాలిడియం స్టేట్‌ను నవీకరిస్తుంది మరియు బ్యాచ్‌లోని లావాదేవీల ఫలితాలను ఖరారు చేస్తుంది. + +ZK-రోలప్‌లా కాకుండా, వాలిడియంలో బ్లాక్ ప్రొడ్యూసర్లు లావాదేవీల బ్యాచ్‌ల కోసం లావాదేవీల డేటాను ప్రచురించాల్సిన అవసరం లేదు (బ్లాక్ హెడర్‌లు మాత్రమే). ఇది వాలిడియంను పూర్తిగా ఆఫ్‌చైన్ స్కేలింగ్ ప్రోటోకాల్‌గా చేస్తుంది, "హైబ్రిడ్" స్కేలింగ్ ప్రోటోకాల్స్ ([లేయర్ 2](/layer-2/)) కాకుండా, ఇవి బ్లోబ్ డేటా, `కాల్‌డేటా`, లేదా రెండింటి కలయికను ఉపయోగించి ప్రధాన Ethereum చైన్‌లో స్టేట్ డేటాను ప్రచురిస్తాయి. + +### డేటా లభ్యత {#data-availability} + +చెప్పినట్లుగా, వాలిడియంలు ఆఫ్‌చైన్ డేటా లభ్యత మోడల్‌ను ఉపయోగిస్తాయి, ఇక్కడ ఆపరేటర్లు అన్ని లావాదేవీల డేటాను Ethereum మెయిన్‌నెట్ నుండి వేరుగా నిల్వ చేస్తారు. వాలిడియం యొక్క తక్కువ ఆన్‌చైన్ డేటా ఫుట్‌ప్రింట్ స్కేలబిలిటీని మెరుగుపరుస్తుంది (త్రూపుట్ Ethereum యొక్క డేటా ప్రాసెసింగ్ సామర్థ్యంతో పరిమితం కాదు) మరియు వినియోగదారు రుసుములను తగ్గిస్తుంది (ఆన్‌చైన్‌లో డేటాను ప్రచురించడానికి అయ్యే ఖర్చు తక్కువ). + +అయితే, ఆఫ్‌చైన్ డేటా లభ్యత ఒక సమస్యను కలిగిస్తుంది: మెర్కిల్ రుజువులను సృష్టించడానికి లేదా ధృవీకరించడానికి అవసరమైన డేటా అందుబాటులో ఉండకపోవచ్చు. దీని అర్థం ఆపరేటర్లు దురుద్దేశపూర్వకంగా వ్యవహరిస్తే వినియోగదారులు ఆన్‌చైన్ కాంట్రాక్ట్ నుండి నిధులను ఉపసంహరించుకోలేకపోవచ్చు. + +వివిధ వాలిడియం సొల్యూషన్స్ స్టేట్ డేటా నిల్వను వికేంద్రీకరించడం ద్వారా ఈ సమస్యను పరిష్కరించడానికి ప్రయత్నిస్తాయి. ఇందులో బ్లాక్ ప్రొడ్యూసర్లు అంతర్లీన డేటాను "డేటా అవైలబిలిటీ మేనేజర్‌లకు" పంపడం ఉంటుంది, వీరు ఆఫ్‌చైన్ డేటాను నిల్వ చేయడానికి మరియు అభ్యర్థన మేరకు వినియోగదారులకు అందుబాటులో ఉంచడానికి బాధ్యత వహిస్తారు. + +వాలిడియంలో డేటా అవైలబిలిటీ మేనేజర్‌లు ప్రతి వాలిడియం బ్యాచ్‌పై సంతకం చేయడం ద్వారా ఆఫ్‌చైన్ లావాదేవీల కోసం డేటా లభ్యతను ధృవీకరిస్తారు. ఈ సంతకాలు "లభ్యత రుజువు" రూపంలో ఉంటాయి, దీనిని ఆన్‌చైన్ వెరిఫైయర్ కాంట్రాక్ట్ స్టేట్ నవీకరణలను ఆమోదించే ముందు తనిఖీ చేస్తుంది. + +వాలిడియంలు వాటి డేటా అవైలబిలిటీ మేనేజ్‌మెంట్ విధానంలో విభిన్నంగా ఉంటాయి. కొన్ని స్టేట్ డేటాను నిల్వ చేయడానికి విశ్వసనీయ పార్టీలపై ఆధారపడతాయి, మరికొన్ని ఈ పని కోసం యాదృచ్ఛికంగా కేటాయించిన వ్యాలిడేటర్లను ఉపయోగిస్తాయి. + +#### డేటా లభ్యత కమిటీ (DAC) {#data-availability-committee} + +ఆఫ్‌చైన్ డేటా లభ్యతకు హామీ ఇవ్వడానికి, కొన్ని వాలిడియం సొల్యూషన్స్ విశ్వసనీయ సంస్థల సమూహాన్ని నియమిస్తాయి, దీనిని సమిష్టిగా డేటా అవైలబిలిటీ కమిటీ (DAC) అని పిలుస్తారు, ఇది స్టేట్ కాపీలను నిల్వ చేయడానికి మరియు డేటా లభ్యత రుజువును అందించడానికి. DACలను అమలు చేయడం సులభం మరియు సభ్యత్వం తక్కువగా ఉన్నందున తక్కువ సమన్వయం అవసరం. + +అయితే, వినియోగదారులు అవసరమైనప్పుడు డేటాను అందుబాటులో ఉంచడానికి DACని విశ్వసించాలి (ఉదా., మెర్కిల్ రుజువులను రూపొందించడానికి). [ఒక దురుద్దేశపూర్వక నటుడిచే డేటా లభ్యత కమిటీల సభ్యులు రాజీ పడే](https://notes.ethereum.org/DD7GyItYQ02d0ax_X-UbWg?view) అవకాశం ఉంది, వారు ఆఫ్‌చైన్ డేటాను నిలిపివేయవచ్చు. + +[వాలిడియంలలో డేటా అవైలబిలిటీ కమిటీల గురించి మరింత](https://medium.com/starkware/data-availability-e5564c416424). + +#### బాండెడ్ డేటా లభ్యత {#bonded-data-availability} + +ఇతర వాలిడియంలు ఆఫ్‌లైన్ డేటాను నిల్వ చేయడానికి బాధ్యత వహించే పాల్గొనేవారికి వారి పాత్రలను స్వీకరించే ముందు స్మార్ట్ కాంట్రాక్ట్‌లో టోకెన్‌లను స్టేక్ (అంటే, లాక్ అప్) చేయమని కోరుతాయి. ఈ స్టేక్ డేటా అవైలబిలిటీ మేనేజర్‌ల మధ్య నిజాయితీ ప్రవర్తనకు హామీ ఇవ్వడానికి "బాండ్"గా పనిచేస్తుంది మరియు విశ్వసనీయ అంచనాలను తగ్గిస్తుంది. ఈ పాల్గొనేవారు డేటా లభ్యతను నిరూపించడంలో విఫలమైతే, బాండ్ స్లాష్ చేయబడుతుంది. + +బాండెడ్ డేటా అవైలబిలిటీ స్కీమ్‌లో, ఎవరైనా అవసరమైన స్టేక్‌ను అందించిన తర్వాత ఆఫ్‌చైన్ డేటాను పట్టుకోవడానికి కేటాయించబడవచ్చు. ఇది అర్హతగల డేటా అవైలబిలిటీ మేనేజర్‌ల పూల్‌ను విస్తరిస్తుంది, డేటా అవైలబిలిటీ కమిటీలను (DACలు) ప్రభావితం చేసే కేంద్రీకరణను తగ్గిస్తుంది. మరీ ముఖ్యంగా, ఈ విధానం దురుద్దేశపూర్వక కార్యకలాపాలను నిరోధించడానికి క్రిప్టోఎకనామిక్ ప్రోత్సాహకాలపై ఆధారపడుతుంది, ఇది వాలిడియంలో ఆఫ్‌లైన్ డేటాను సురక్షితంగా ఉంచడానికి విశ్వసనీయ పార్టీలను నియమించడం కంటే చాలా సురక్షితమైనది. + +[వాలిడియంలలో బాండెడ్ డేటా లభ్యత గురించి మరింత](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf). + +## వోలిషన్లు మరియు వాలిడియం {#volitions-and-validium} + +వాలిడియంలు అనేక ప్రయోజనాలను అందిస్తాయి, కానీ ట్రేడ్-ఆఫ్‌లతో వస్తాయి (ముఖ్యంగా, డేటా లభ్యత). కానీ, అనేక స్కేలింగ్ పరిష్కారాల మాదిరిగా, వాలిడియంలు నిర్దిష్ట వినియోగ-కేసులకు సరిపోతాయి—అందుకే వోలిషన్లు సృష్టించబడ్డాయి. + +వోలిషన్లు ఒక ZK-రోలప్ మరియు వాలిడియం చైన్‌ను కలుపుతాయి మరియు వినియోగదారులను రెండు స్కేలింగ్ పరిష్కారాల మధ్య మారడానికి అనుమతిస్తాయి. వోలిషన్లతో, వినియోగదారులు నిర్దిష్ట లావాదేవీల కోసం వాలిడియం యొక్క ఆఫ్‌చైన్ డేటా లభ్యతను ఉపయోగించుకోవచ్చు, అయితే అవసరమైతే ఆన్‌చైన్ డేటా లభ్యత పరిష్కారానికి (ZK-రోలప్) మారే స్వేచ్ఛను కలిగి ఉంటారు. ఇది తప్పనిసరిగా వినియోగదారులకు వారి ప్రత్యేక పరిస్థితుల ద్వారా నిర్దేశించబడిన ట్రేడ్-ఆఫ్‌లను ఎంచుకునే స్వేచ్ఛను ఇస్తుంది. + +ఒక వికేంద్రీకృత మార్పిడి (DEX) అధిక-విలువ వాణిజ్యాల కోసం వాలిడియం యొక్క స్కేలబుల్ మరియు ప్రైవేట్ ఇన్‌ఫ్రాస్ట్రక్చర్‌ను ఉపయోగించడానికి ఇష్టపడవచ్చు. ఇది ZK-రోలప్ యొక్క అధిక భద్రతా హామీలు మరియు విశ్వసనీయతను కోరుకునే వినియోగదారుల కోసం ZK-రోలప్‌ను కూడా ఉపయోగించవచ్చు. + +## వాలిడియంలు మరియు EVM అనుకూలత {#validiums-and-evm-compatibility} + +ZK-రోలప్‌ల మాదిరిగానే, వాలిడియంలు టోకెన్ స్వాప్‌లు మరియు చెల్లింపులు వంటి సాధారణ అప్లికేషన్‌లకు ఎక్కువగా సరిపోతాయి. వాలిడియంల మధ్య సాధారణ గణన మరియు స్మార్ట్ కాంట్రాక్ట్ అమలుకు మద్దతు ఇవ్వడం కష్టం, ఎందుకంటే జీరో-కనౌలెడ్జి ప్రూఫ్ సర్క్యూట్‌లో [EVM](/developers/docs/evm/) సూచనలను నిరూపించడానికి గణనీయమైన ఓవర్‌హెడ్ ఉంటుంది. + +కొన్ని వాలిడియం ప్రాజెక్ట్‌లు సమర్థవంతమైన ప్రూవింగ్ కోసం ఆప్టిమైజ్ చేయబడిన కస్టమ్ బైట్‌కోడ్‌ను సృష్టించడానికి EVM-అనుకూల భాషలను (ఉదా., Solidity, Vyper) కంపైల్ చేయడం ద్వారా ఈ సమస్యను తప్పించుకోవడానికి ప్రయత్నిస్తాయి. ఈ విధానం యొక్క ప్రతికూలత ఏమిటంటే, కొత్త జీరో-కనౌలెడ్జి ప్రూఫ్-స్నేహపూర్వక VMలు ముఖ్యమైన EVM ఆప్కోడ్‌లకు మద్దతు ఇవ్వకపోవచ్చు, మరియు డెవలపర్లు సరైన అనుభవం కోసం నేరుగా ఉన్నత-స్థాయి భాషలో వ్రాయాల్సి ఉంటుంది. ఇది మరింత సమస్యలను సృష్టిస్తుంది: ఇది అభివృద్ధి చేసేవారిని పూర్తిగా కొత్త డెవలప్‌మెంట్ స్టాక్‌తో డాప్స్ నిర్మించమని బలవంతం చేస్తుంది మరియు ప్రస్తుత Ethereum ఇన్‌ఫ్రాస్ట్రక్చర్‌తో అనుకూలతను విచ్ఛిన్నం చేస్తుంది. + +అయితే, కొన్ని బృందాలు ZK-ప్రూవింగ్ సర్క్యూట్‌ల కోసం ఇప్పటికే ఉన్న EVM ఆప్కోడ్‌లను ఆప్టిమైజ్ చేయడానికి ప్రయత్నిస్తున్నాయి. ఇది జీరో-నాలెడ్జ్ ఎథేరియం వర్చువల్ మషీన్ (zkEVM) అభివృద్ధికి దారి తీస్తుంది, ఇది ప్రోగ్రామ్ ఎగ్జిక్యూషన్ యొక్క సరైనతను ధృవీకరించడానికి రుజువులను ఉత్పత్తి చేసే EVM-అనుకూల VM. ఒక zkEVM తో, వాలిడియం చైన్‌లు స్మార్ట్ కాంట్రాక్ట్‌లను ఆఫ్‌చైన్‌లో అమలు చేయగలవు మరియు Ethereumలో ఆఫ్‌చైన్ గణనను ధృవీకరించడానికి (దానిని తిరిగి అమలు చేయకుండా) చెల్లుబాటు రుజువులను సమర్పించగలవు. + +[zkEVMల గురించి మరింత](https://www.alchemy.com/overviews/zkevm). + +## వాలిడియంలు Ethereumను ఎలా స్కేల్ చేస్తాయి? {#scaling-ethereum-with-validiums} + +### 1. ఆఫ్‌చైన్ డేటా నిల్వ {#offchain-data-storage} + +ఆప్టిమిస్టిక్ రోలప్‌లు మరియు ZK-రోలప్‌లు వంటి లేయర్ 2 స్కేలింగ్ ప్రాజెక్ట్‌లు L1లో కొన్ని లావాదేవీల డేటాను ప్రచురించడం ద్వారా స్వచ్ఛమైన ఆఫ్‌చైన్ స్కేలింగ్ ప్రోటోకాల్స్ ([ప్లాస్మా](/developers/docs/scaling/plasma/)) యొక్క అనంతమైన స్కేలబిలిటీని భద్రత కోసం వర్తకం చేస్తాయి. కానీ దీని అర్థం రోలప్‌ల స్కేలబిలిటీ లక్షణాలు Ethereum మెయిన్‌నెట్‌లోని డేటా బ్యాండ్‌విడ్త్ ద్వారా పరిమితం చేయబడ్డాయి (ఈ కారణంగా Ethereum యొక్క డేటా నిల్వ సామర్థ్యాన్ని మెరుగుపరచడానికి [డేటా షార్డింగ్](/roadmap/danksharding/) ప్రతిపాదిస్తుంది). + +వాలిడియంలు అన్ని లావాదేవీల డేటాను ఆఫ్‌చైన్‌లో ఉంచడం ద్వారా మరియు ప్రధాన Ethereum చైన్‌కు స్టేట్ అప్‌డేట్‌లను రిలే చేసేటప్పుడు మాత్రమే స్టేట్ కట్టుబాట్లను (మరియు చెల్లుబాటు రుజువులను) పోస్ట్ చేయడం ద్వారా స్కేలబిలిటీని సాధిస్తాయి. అయితే, చెల్లుబాటు రుజువుల ఉనికి ప్లాస్మా మరియు [సైడ్‌చైన్‌లు](/developers/docs/scaling/sidechains/) సహా ఇతర స్వచ్ఛమైన ఆఫ్‌చైన్ స్కేలింగ్ పరిష్కారాల కంటే వాలిడియంలకు అధిక భద్రతా హామీలను ఇస్తుంది. ఆఫ్‌చైన్ లావాదేవీలను ధృవీకరించే ముందు Ethereum ప్రాసెస్ చేయాల్సిన డేటా మొత్తాన్ని తగ్గించడం ద్వారా, వాలిడియం డిజైన్‌లు మెయిన్‌నెట్‌లో థ్రూపుట్‌ను బాగా విస్తరిస్తాయి. + +### 2. పునరావృత రుజువులు {#recursive-proofs} + +ఒక పునరావృత రుజువు అనేది ఇతర రుజువుల చెల్లుబాటును ధృవీకరించే ఒక చెల్లుబాటు రుజువు. ఈ "రుజువుల రుజువులు" అన్ని మునుపటి రుజువులను ధృవీకరించే ఒక చివరి రుజువు సృష్టించబడే వరకు బహుళ రుజువులను పునరావృతంగా సమీకరించడం ద్వారా ఉత్పత్తి చేయబడతాయి. పునరావృత రుజువులు ప్రతి చెల్లుబాటు రుజువుకు ధృవీకరించగల లావాదేవీల సంఖ్యను పెంచడం ద్వారా బ్లాక్‌చైన్ ప్రాసెసింగ్ వేగాన్ని స్కేల్ చేస్తాయి. + +సాధారణంగా, వాలిడియం ఆపరేటర్ ధృవీకరణ కోసం Ethereumకు సమర్పించే ప్రతి చెల్లుబాటు రుజువు ఒకే బ్లాక్ యొక్క సమగ్రతను ధృవీకరిస్తుంది. అయితే ఒకే పునరావృత రుజువు ఒకే సమయంలో అనేక వాలిడియం బ్లాక్‌ల చెల్లుబాటును ధృవీకరించడానికి ఉపయోగించబడుతుంది—ప్రూవింగ్ సర్క్యూట్ అనేక బ్లాక్ రుజువులను ఒకే చివరి రుజువుగా పునరావృతంగా సమీకరించగలగడం వల్ల ఇది సాధ్యమవుతుంది. ఆన్‌చైన్ వెరిఫైయర్ కాంట్రాక్ట్ పునరావృత రుజువును అంగీకరిస్తే, అన్ని అంతర్లీన బ్లాక్‌లు వెంటనే ఖరారు చేయబడతాయి. + +## వాలిడియం యొక్క ప్రయోజనాలు మరియు అప్రయోజనాలు {#pros-and-cons-of-validium} + +| ప్రయోజనాలు | అప్రయోజనాలు | +| --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| చెల్లుబాటు రుజువులు ఆఫ్‌చైన్ లావాదేవీల సమగ్రతను అమలు చేస్తాయి మరియు ఆపరేటర్లు చెల్లని స్టేట్ నవీకరణలను ఖరారు చేయకుండా నిరోధిస్తాయి. | చెల్లుబాటు రుజువులను ఉత్పత్తి చేయడానికి ప్రత్యేక హార్డ్‌వేర్ అవసరం, ఇది కేంద్రీకరణ ప్రమాదాన్ని కలిగిస్తుంది. | +| వినియోగదారులకు మూలధన సామర్థ్యాన్ని పెంచుతుంది (నిధులను Ethereumకు తిరిగి ఉపసంహరించుకోవడంలో ఆలస్యం లేదు) | సాధారణ గణన/స్మార్ట్ కాంట్రాక్ట్‌లకు పరిమిత మద్దతు; అభివృద్ధికి ప్రత్యేక భాషలు అవసరం. | +| అధిక-విలువ అనువర్తనాల్లో మోసం-రుజువు ఆధారిత వ్యవస్థలు ఎదుర్కొంటున్న కొన్ని ఆర్థిక దాడులకు గురికాదు. | ZK ప్రూఫ్‌లను రూపొందించడానికి అధిక గణన శక్తి అవసరం; తక్కువ థ్రూపుట్ అప్లికేషన్‌లకు ఖర్చు-సమర్థవంతమైనది కాదు. | +| Ethereum మెయిన్‌నెట్‌కు కాల్‌డేటాను పోస్ట్ చేయకుండా వినియోగదారులకు గ్యాస్ రుసుములను తగ్గిస్తుంది. | నెమ్మదైన ఆత్మాశ్రయ తుది సమయం (ZK ప్రూఫ్ రూపొందించడానికి 10-30 నిమిషాలు) కానీ వివాద సమయం ఆలస్యం లేనందున పూర్తి తుదికి వేగంగా ఉంటుంది. | +| లావాదేవీ గోప్యత మరియు స్కేలబిలిటీకి ప్రాధాన్యతనిచ్చే వాణిజ్యం లేదా బ్లాక్‌చైన్ గేమింగ్ వంటి నిర్దిష్ట వినియోగ-కేసులకు అనుకూలం. | వినియోగదారులను నిధుల ఉపసంహరణ నుండి నిరోధించవచ్చు ఎందుకంటే యాజమాన్యపు మెర్కిల్ రుజువులను రూపొందించడానికి ఆఫ్‌చైన్ డేటా అన్ని సమయాల్లో అందుబాటులో ఉండాలి. | +| ఆఫ్‌చైన్ డేటా లభ్యత అధిక స్థాయి థ్రూపుట్‌ను అందిస్తుంది మరియు స్కేలబిలిటీని పెంచుతుంది. | భద్రతా నమూనా విశ్వసనీయ అంచనాలు మరియు క్రిప్టోఎకనామిక్ ప్రోత్సాహకాలపై ఆధారపడుతుంది, ZK-రోలప్‌ల వలె కాకుండా, ఇవి కేవలం క్రిప్టోగ్రాఫిక్ భద్రతా మెకానిజంలపై ఆధారపడతాయి. | + +### వాలిడియం/వోలిషన్లను ఉపయోగించండి {#use-validium-and-volitions} + +అనేక ప్రాజెక్ట్‌లు వాలిడియం మరియు వోలిషన్ల అమలులను అందిస్తాయి, వీటిని మీరు మీ డాప్స్‌లో విలీనం చేయవచ్చు: + +**StarkWare StarkEx** - _StarkEx అనేది Ethereum లేయర్ 2 (L2) స్కేలబిలిటీ పరిష్కారం, ఇది చెల్లుబాటు రుజువుల ఆధారంగా ఉంటుంది. ఇది ZK-రోలప్ లేదా వాలిడియం డేటా-లభ్యత మోడ్‌లలో పనిచేయగలదు._ + +- [దస్తావేజులను సమకూర్చుట](https://docs.starkware.co/starkex-v4/starkex-deep-dive/data-availability-modes#validium) +- [వెబ్‌సైట్](https://starkware.co/starkex/) + +**Matter Labs zkPorter**- _zkPorter అనేది లేయర్ 2 స్కేలింగ్ ప్రోటోకాల్, ఇది zkRollup మరియు షార్డింగ్ ఆలోచనలను మిళితం చేసే హైబ్రిడ్ విధానంతో డేటా లభ్యతను పరిష్కరిస్తుంది. ఇది ఎన్ని షార్డ్‌లకు అయినా మద్దతు ఇవ్వగలదు, ప్రతి దాని స్వంత డేటా లభ్యతా విధానంతో._ + +- [బ్లాగ్](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf) +- [దస్తావేజులను సమకూర్చుట](https://docs.zksync.io/zksync-protocol/rollup/data-availability) +- [వెబ్‌సైట్](https://zksync.io/) + +## మరింత సమాచారం {#further-reading} + +- [వాలిడియం మరియు లేయర్ 2 టూ-బై-టూ — ఇష్యూ నం. 99](https://www.buildblockchain.tech/newsletter/issues/no-99-validium-and-the-layer-2-two-by-two) +- [ZK-రోలప్‌లు vs వాలిడియం](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263) +- [వోలిషన్ మరియు ఉద్భవిస్తున్న డేటా లభ్యత స్పెక్ట్రమ్](https://medium.com/starkware/volition-and-the-emerging-data-availability-spectrum-87e8bfa09bb) +- [రోలప్‌లు, వాలిడియంలు, మరియు వోలిషన్లు: హాటెస్ట్ Ethereum స్కేలింగ్ పరిష్కారాల గురించి తెలుసుకోండి](https://www.defipulse.com/blog/rollups-validiums-and-volitions-learn-about-the-hottest-ethereum-scaling-solutions) +- [Ethereum రోలప్‌లకు ప్రాక్టికల్ గైడ్](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups) diff --git a/public/content/translations/te/developers/docs/scaling/zk-rollups/index.md b/public/content/translations/te/developers/docs/scaling/zk-rollups/index.md new file mode 100644 index 00000000000..ba24a06102a --- /dev/null +++ b/public/content/translations/te/developers/docs/scaling/zk-rollups/index.md @@ -0,0 +1,257 @@ +--- +title: "జీరో-కనౌలెడ్జి రోల్అప్‌లు" +description: "జీరో-కనౌలెడ్జి రోల్అప్‌లకు పరిచయం—Ethereum సంఘం ఉపయోగించే ఒక స్కేలింగ్ పరిష్కారం." +lang: te +--- + +జీరో-కనౌలెడ్జి రోల్అప్‌లు (ZK-రోల్అప్‌లు) అనేవి లేయర్ 2 [స్కేలింగ్ పరిష్కారాలు](/developers/docs/scaling/), ఇవి కంప్యుటేషన్ మరియు స్టేట్-స్టోరేజ్‌ను ఆఫ్‌చెయిన్‌కు తరలించడం ద్వారా Ethereum మెయిన్‌నెట్‌లో త్రూపుట్‌ను పెంచుతాయి. ZK-రోల్అప్‌లు ఒక బ్యాచ్‌లో వేలాది లావాదేవీలను ప్రాసెస్ చేయగలవు మరియు ఆపై కేవలం కొన్ని కనీస సారాంశ డేటాను మాత్రమే మెయిన్‌నెట్‌కు పోస్ట్ చేస్తాయి. ఈ సారాంశ డేటా ఇతీరియము స్టేట్‌లో చేయవలసిన మార్పులను నిర్వచిస్తుంది మరియు ఆ మార్పులు సరైనవని తెలిపే కొంత క్రిప్టోగ్రాఫిక్ ప్రూఫ్‌ను అందిస్తుంది. + +## అవసరాలు {#prerequisites} + +మీరు మా [Ethereum స్కేలింగ్](/developers/docs/scaling/) మరియు [లేయర్ 2](/layer-2) పేజీని చదివి అర్థం చేసుకొని ఉండాలి. + +## జీరో-కనౌలెడ్జి రోల్అప్‌లు అంటే ఏమిటి? {#what-are-zk-rollups} + +**జీరో-కనౌలెడ్జి రోల్అప్‌లు (ZK-రోల్అప్‌లు)** లావాదేవీలను బ్యాచ్‌లుగా బండిల్ ('రోల్ అప్') చేస్తాయి, ఇవి ఆఫ్‌చెయిన్‌లో ఎగ్జిక్యూట్ చేయబడతాయి. ఆఫ్‌చెయిన్ కంప్యుటేషన్ బ్లాక్‌చెయిన్‌కు పోస్ట్ చేయవలసిన డేటా మొత్తాన్ని తగ్గిస్తుంది. ZK-రోల్అప్ ఆపరేటర్లు ప్రతి లావాదేవీని వ్యక్తిగతంగా పంపే బదులు, ఒక బ్యాచ్‌లోని అన్ని లావాదేవీలను సూచించడానికి అవసరమైన మార్పుల సారాంశాన్ని సమర్పిస్తారు. వారు తమ మార్పుల యొక్క ఖచ్చితత్వాన్ని నిరూపించడానికి [వాలిడిటీ ప్రూఫ్‌లను](/glossary/#validity-proof) కూడా ఉత్పత్తి చేస్తారు. + +ZK-రోల్అప్ యొక్క స్టేట్, ఇతీరియము నెట్‌వర్క్‌లో డిప్లాయ్ చేయబడిన ఒక స్మార్ట్ కాంట్రాక్టు ద్వారా నిర్వహించబడుతుంది. ఈ స్టేట్‌ను అప్‌డేట్ చేయడానికి, ZK-రోల్అప్ నోడ్స్ వెరిఫికేషన్ కోసం ఒక వాలిడిటీ ప్రూఫ్‌ను సమర్పించాలి. పేర్కొన్న విధంగా, వాలిడిటీ ప్రూఫ్ అనేది రోల్అప్ ప్రతిపాదించిన స్టేట్-మార్పు నిజంగా ఇవ్వబడిన లావాదేవీల బ్యాచ్‌ను ఎగ్జిక్యూట్ చేయడం యొక్క ఫలితం అని తెలిపే ఒక క్రిప్టోగ్రాఫిక్ హామీ. [ఆప్టిమిస్టిక్ రోల్అప్‌ల](/developers/docs/scaling/optimistic-rollups/) వలె మొత్తం లావాదేవీ డేటాను ఆన్‌చెయిన్‌లో పోస్ట్ చేసే బదులు, లావాదేవీలను ఇతీరియములో ఫైనలైజ్ చేయడానికి ZK-రోల్అప్‌లు కేవలం వాలిడిటీ ప్రూఫ్‌లను అందించాలి. + +ZK-రోల్అప్ నుండి Ethereumకు నిధులను తరలించేటప్పుడు ఎటువంటి ఆలస్యం ఉండదు, ఎందుకంటే ZK-రోల్అప్ కాంట్రాక్టు వాలిడిటీ ప్రూఫ్‌ను వెరిఫై చేసిన తర్వాత నిష్క్రమణ లావాదేవీలు ఎగ్జిక్యూట్ చేయబడతాయి. దీనికి విరుద్ధంగా, ఆప్టిమిస్టిక్ రోల్అప్‌ల నుండి నిధులను ఉపసంహరించుకోవడం ఆలస్యానికి లోబడి ఉంటుంది, ఎవరైనా నిష్క్రమణ లావాదేవీని [ఫ్రాడ్ ప్రూఫ్‌తో](/glossary/#fraud-proof) సవాలు చేయడానికి అనుమతించడానికి. + +ZK-రోల్అప్‌లు లావాదేవీలను ఇతీరియముకు `calldata`గా వ్రాస్తాయి. `calldata` అనేది స్మార్ట్ కాంట్రాక్టు ఫంక్షన్‌లకు బాహ్య కాల్స్‌లో చేర్చబడిన డేటా నిల్వ చేయబడే ప్రదేశం. `calldata`లోని సమాచారం బ్లాక్‌చెయిన్‌లో ప్రచురించబడుతుంది, ఇది ఎవరైనా స్వతంత్రంగా రోల్అప్ యొక్క స్టేట్‌ను పునర్నిర్మించడానికి అనుమతిస్తుంది. ZK-రోల్అప్‌లు లావాదేవీ డేటాను తగ్గించడానికి కంప్రెషన్ టెక్నిక్‌లను ఉపయోగిస్తాయి—ఉదాహరణకు, అకౌంట్లు ఒక చిరునామాకు బదులుగా ఒక ఇండెక్స్ ద్వారా సూచించబడతాయి, ఇది 28 బైట్ల డేటాను ఆదా చేస్తుంది. రోల్అప్‌లకు ఆన్‌చెయిన్ డేటా ప్రచురణ ఒక ముఖ్యమైన ఖర్చు, కాబట్టి డేటా కంప్రెషన్ వినియోగదారుల కోసం ఫీజులను తగ్గించగలదు. + +## ZK-రోల్అప్‌లు Ethereumతో ఎలా సంకర్షణ చెందుతాయి? {#zk-rollups-and-ethereum} + +ఒక ZK-రోల్అప్ చైన్ అనేది ఇతీరియము బ్లాక్‌చెయిన్ పైన పనిచేసే ఒక ఆఫ్‌చెయిన్ ప్రోటోకాల్ మరియు ఇది ఆన్‌చెయిన్ ఇతీరియము స్మార్ట్ కాంట్రాక్టుల ద్వారా నిర్వహించబడుతుంది. ZK-రోల్అప్‌లు మెయిన్‌నెట్ వెలుపల లావాదేవీలను అమలు చేస్తాయి, కానీ క్రమానుగతంగా ఆఫ్‌చెయిన్ లావాదేవీ బ్యాచ్‌లను ఆన్‌చెయిన్ రోల్అప్ కాంట్రాక్ట్‌కు సమర్పిస్తాయి. ఈ లావాదేవీ రికార్డ్ ఇతీరియము బ్లాక్‌చెయిన్ వలె మార్పులేనిది మరియు ZK-రోల్అప్ చైన్‌ను ఏర్పరుస్తుంది. + +ZK-రోల్అప్ యొక్క ప్రధాన నిర్మాణం కింది భాగాలతో రూపొందించబడింది: + +1. **ఆన్‌చెయిన్ కాంట్రాక్టులు**: పేర్కొన్న విధంగా, ZK-రోల్అప్ ప్రోటోకాల్ ఇతీరియములో నడుస్తున్న స్మార్ట్ కాంట్రాక్టుల ద్వారా నియంత్రించబడుతుంది. ఇందులో రోల్అప్ బ్లాక్‌లను నిల్వ చేసే, డిపాజిట్‌లను ట్రాక్ చేసే మరియు స్టేట్ అప్‌డేట్‌లను పర్యవేక్షించే ప్రధాన కాంట్రాక్టు ఉంటుంది. మరొక ఆన్‌చెయిన్ కాంట్రాక్టు (వెరిఫైయర్ కాంట్రాక్టు) బ్లాక్ ప్రొడ్యూసర్‌లు సమర్పించిన జీరో-కనౌలెడ్జి ప్రూఫ్‌లను వెరిఫై చేస్తుంది. అందువల్ల, ZK-రోల్అప్ కోసం ఇతీరియము బేస్ లేయర్ లేదా "లేయర్ 1"గా పనిచేస్తుంది. + +2. **ఆఫ్‌చెయిన్ వర్చువల్ మషీన్ (VM)**: ZK-రోల్అప్ ప్రోటోకాల్ ఇతీరియములో ఉన్నప్పటికీ, లావాదేవీల అమలు మరియు స్టేట్ నిల్వ [EVM](/developers/docs/evm/) నుండి స్వతంత్రంగా ఒక ప్రత్యేక వర్చువల్ మషీన్‌లో జరుగుతుంది. ఈ ఆఫ్‌చెయిన్ VM ZK-రోల్అప్‌లో లావాదేవీల కోసం ఎగ్జిక్యూషన్ ఎన్విరాన్‌మెంట్ మరియు ZK-రోల్అప్ ప్రోటోకాల్ కోసం సెకండరీ లేయర్ లేదా "లేయర్ 2"గా పనిచేస్తుంది. ఇతీరియము మెయిన్‌నెట్‌లో ధృవీకరించబడిన వాలిడిటీ ప్రూఫ్‌లు ఆఫ్‌చెయిన్ VMలో స్టేట్ ట్రాన్సిషన్‌ల యొక్క ఖచ్చితత్వాన్ని హామీ ఇస్తాయి. + +ZK-రోల్అప్‌లు "హైబ్రిడ్ స్కేలింగ్ సొల్యూషన్స్"—ఇవి స్వతంత్రంగా పనిచేసే ఆఫ్‌చెయిన్ ప్రోటోకాల్స్, కానీ ఇతీరియము నుండి భద్రతను పొందుతాయి. ప్రత్యేకంగా, ఇతీరియము నెట్‌వర్క్ ZK-రోల్అప్‌లో స్టేట్ అప్‌డేట్‌ల యొక్క ప్రామాణికతను అమలు చేస్తుంది మరియు రోల్అప్ యొక్క స్టేట్‌కు ప్రతి అప్‌డేట్ వెనుక డేటా లభ్యతకు హామీ ఇస్తుంది. ఫలితంగా, ZK-రోల్అప్‌లు [సైడ్‌చైన్‌లు](/developers/docs/scaling/sidechains/) వంటి స్వచ్ఛమైన ఆఫ్‌చెయిన్ స్కేలింగ్ పరిష్కారాల కంటే గణనీయంగా సురక్షితమైనవి, ఇవి వాటి భద్రతా లక్షణాలకు బాధ్యత వహిస్తాయి, లేదా [వాలిడియమ్‌లు](/developers/docs/scaling/validium/), ఇవి ఇతీరియములో లావాదేవీలను వాలిడిటీ ప్రూఫ్‌లతో ధృవీకరిస్తాయి, కానీ లావాదేవీల డేటాను మరెక్కడైనా నిల్వ చేస్తాయి. + +ZK-రోల్అప్‌లు కింది వాటి కోసం ప్రధాన ఇతీరియము ప్రోటోకాల్‌పై ఆధారపడతాయి: + +### డేటా లభ్యత {#data-availability} + +ZK-రోల్అప్‌లు ఆఫ్‌చెయిన్‌లో ప్రాసెస్ చేయబడిన ప్రతి లావాదేవీ కోసం స్టేట్ డేటాను ఇతీరియముకు ప్రచురిస్తాయి. ఈ డేటాతో, వ్యక్తులు లేదా వ్యాపారాలు రోల్అప్ యొక్క స్టేట్‌ను పునరుత్పత్తి చేయడం మరియు చైన్‌ను స్వయంగా ధృవీకరించడం సాధ్యమవుతుంది. ఇతీరియము ఈ డేటాను నెట్‌వర్క్‌లోని అన్ని భాగస్వాములకు `calldata`గా అందుబాటులో ఉంచుతుంది. + +ZK-రోల్అప్‌లు ఆన్‌చెయిన్‌లో ఎక్కువ లావాదేవీ డేటాను ప్రచురించాల్సిన అవసరం లేదు, ఎందుకంటే వాలిడిటీ ప్రూఫ్‌లు ఇప్పటికే స్టేట్ ట్రాన్సిషన్‌ల యొక్క ప్రామాణికతను ధృవీకరిస్తాయి. అయినప్పటికీ, ఆన్‌చెయిన్‌లో డేటాను నిల్వ చేయడం ఇప్పటికీ ముఖ్యం, ఎందుకంటే ఇది L2 చైన్ యొక్క స్టేట్ యొక్క అనుమతిలేని, స్వతంత్ర ధృవీకరణను అనుమతిస్తుంది, ఇది ఎవరైనా లావాదేవీల బ్యాచ్‌లను సమర్పించడానికి అనుమతిస్తుంది, తద్వారా దురుద్దేశపూర్వక ఆపరేటర్లు చైన్‌ను సెన్సార్ చేయడం లేదా స్తంభింపజేయడం నిరోధించబడుతుంది. + +వినియోగదారులు రోల్అప్‌తో ఇంటరాక్ట్ అవ్వడానికి ఆన్‌చెయిన్ అవసరం. స్టేట్ డేటాకు యాక్సెస్ లేకుండా వినియోగదారులు వారి అకౌంటు బ్యాలెన్స్‌ను క్వెరీ చేయలేరు లేదా స్టేట్ సమాచారంపై ఆధారపడే లావాదేవీలను (ఉదా., విత్‌డ్రాయల్స్) ప్రారంభించలేరు. + +### లావాదేవీ ఫైనాలిటీ {#transaction-finality} + +ఇతీరియము ZK-రోల్అప్‌ల కోసం సెటిల్‌మెంట్ లేయర్‌గా పనిచేస్తుంది: L2 లావాదేవీలు L1 కాంట్రాక్టు వాలిడిటీ ప్రూఫ్‌ను అంగీకరించిన తర్వాత మాత్రమే ఫైనలైజ్ చేయబడతాయి. ఇది దురుద్దేశపూర్వక ఆపరేటర్లు చైన్‌ను కరప్ట్ చేసే (ఉదా., రోల్అప్ నిధులను దొంగిలించడం) ప్రమాదాన్ని తొలగిస్తుంది, ఎందుకంటే ప్రతి లావాదేవీ మెయిన్‌నెట్‌లో ఆమోదించబడాలి. అలాగే, L1లో ఫైనలైజ్ అయిన తర్వాత వినియోగదారుల ఆపరేషన్లు రివర్స్ చేయబడవని ఇతీరియము హామీ ఇస్తుంది. + +### సెన్సార్‌షిప్ నిరోధకత {#censorship-resistance} + +చాలా ZK-రోల్అప్‌లు లావాదేవీలను అమలు చేయడానికి, బ్యాచ్‌లను ఉత్పత్తి చేయడానికి మరియు బ్లాక్‌లను L1కి సమర్పించడానికి ఒక "సూపర్‌నోడ్" (ఆపరేటర్)ని ఉపయోగిస్తాయి. ఇది సామర్థ్యాన్ని నిర్ధారించినప్పటికీ, ఇది సెన్సార్‌షిప్ ప్రమాదాన్ని పెంచుతుంది: దురుద్దేశపూర్వక ZK-రోల్అప్ ఆపరేటర్లు వినియోగదారుల లావాదేవీలను బ్యాచ్‌లలో చేర్చడానికి నిరాకరించడం ద్వారా వారిని సెన్సార్ చేయవచ్చు. + +ఒక భద్రతా చర్యగా, ZK-రోల్అప్‌లు ఆపరేటర్ ద్వారా సెన్సార్ చేయబడుతున్నారని భావిస్తే, వినియోగదారులు లావాదేవీలను నేరుగా మెయిన్‌నెట్‌లోని రోల్అప్ కాంట్రాక్ట్‌కు సమర్పించడానికి అనుమతిస్తాయి. ఇది వినియోగదారులు ఆపరేటర్ అనుమతిపై ఆధారపడకుండా ZK-రోల్అప్ నుండి ఇతీరియముకు బలవంతంగా నిష్క్రమించడానికి అనుమతిస్తుంది. + +## ZK-రోల్అప్‌లు ఎలా పని చేస్తాయి? {#how-do-zk-rollups-work} + +### లావాదేవీలు {#transactions} + +ZK-రోల్అప్‌లోని వినియోగదారులు లావాదేవీలపై సంతకం చేసి, ప్రాసెసింగ్ మరియు తదుపరి బ్యాచ్‌లో చేర్చడం కోసం L2 ఆపరేటర్‌లకు సమర్పిస్తారు. కొన్ని సందర్భాల్లో, ఆపరేటర్ ఒక కేంద్రీకృత సంస్థ, సీక్వెన్సర్ అని పిలుస్తారు, ఇది లావాదేవీలను అమలు చేస్తుంది, వాటిని బ్యాచ్‌లుగా కలుపుతుంది మరియు L1కి సమర్పిస్తుంది. ఈ సిస్టమ్‌లోని సీక్వెన్సర్ మాత్రమే L2 బ్లాక్‌లను ఉత్పత్తి చేయడానికి మరియు రోల్అప్ లావాదేవీలను ZK-రోల్అప్ కాంట్రాక్ట్‌కు జోడించడానికి అనుమతించబడిన ఏకైక సంస్థ. + +ఇతర ZK-రోల్అప్‌లు [ప్రూఫ్-ఆఫ్-స్టేక్](/developers/docs/consensus-mechanisms/pos/) వాలిడేటర్ సెట్‌ను ఉపయోగించి ఆపరేటర్ పాత్రను రొటేట్ చేయవచ్చు. సంభావ్య ఆపరేటర్లు రోల్అప్ కాంట్రాక్ట్‌లో నిధులను డిపాజిట్ చేస్తారు, ప్రతి స్టేక్ యొక్క పరిమాణం తదుపరి రోల్అప్ బ్యాచ్‌ను ఉత్పత్తి చేయడానికి ఎంపికయ్యే స్టాకర్ యొక్క అవకాశాలను ప్రభావితం చేస్తుంది. ఆపరేటర్ దురుద్దేశపూర్వకంగా ప్రవర్తిస్తే వారి స్టేక్‌ను స్లాష్ చేయవచ్చు, ఇది చెల్లుబాటు అయ్యే బ్లాక్‌లను పోస్ట్ చేయడానికి వారిని ప్రోత్సహిస్తుంది. + +#### ZK-రోల్అప్‌లు ఇతీరియములో లావాదేవీల డేటాను ఎలా ప్రచురిస్తాయి {#how-zk-rollups-publish-transaction-data-on-ethereum} + +వివరించినట్లుగా, లావాదేవీల డేటా ఇతీరియములో `calldata`గా ప్రచురించబడుతుంది. `calldata` అనేది ఒక ఫంక్షన్‌కు ఆర్గ్యుమెంట్‌లను పాస్ చేయడానికి ఉపయోగించే స్మార్ట్ కాంట్రాక్ట్‌లోని డేటా ఏరియా మరియు ఇది [మెమరీ](/developers/docs/smart-contracts/anatomy/#memory)కి సమానంగా ప్రవర్తిస్తుంది. `calldata` ఇతీరియము యొక్క స్టేట్‌లో భాగంగా నిల్వ చేయబడనప్పటికీ, ఇది ఇతీరియము చైన్ యొక్క [చరిత్ర లాగ్‌లలో](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs) భాగంగా ఆన్‌చెయిన్‌లో కొనసాగుతుంది. `calldata` ఇతీరియము యొక్క స్టేట్‌ను ప్రభావితం చేయదు, ఇది ఆన్‌చెయిన్‌లో డేటాను నిల్వ చేయడానికి చౌకైన మార్గంగా చేస్తుంది. + +`calldata` కీవర్డ్ తరచుగా లావాదేవీ ద్వారా కాల్ చేయబడే స్మార్ట్ కాంట్రాక్ట్ పద్ధతిని గుర్తిస్తుంది మరియు ఒక యాదృచ్ఛిక బైట్ల క్రమం రూపంలో పద్ధతికి ఇన్‌పుట్‌లను కలిగి ఉంటుంది. ZK-రోల్అప్‌లు కంప్రెస్డ్ లావాదేవీ డేటాను ఆన్‌చెయిన్‌లో ప్రచురించడానికి `calldata`ను ఉపయోగిస్తాయి; రోల్అప్ ఆపరేటర్ కేవలం రోల్అప్ కాంట్రాక్ట్‌లో అవసరమైన ఫంక్షన్‌కు కాల్ చేసి, కంప్రెస్డ్ డేటాను ఫంక్షన్ ఆర్గ్యుమెంట్‌లుగా పాస్ చేయడం ద్వారా కొత్త బ్యాచ్‌ను జోడిస్తుంది. ఇది వినియోగదారుల కోసం ఖర్చులను తగ్గించడంలో సహాయపడుతుంది, ఎందుకంటే రోల్అప్ ఫీజులలో ఎక్కువ భాగం ఆన్‌చెయిన్‌లో లావాదేవీల డేటాను నిల్వ చేయడానికి వెళ్తుంది. + +### స్థితి కట్టుబాట్లు {#state-commitments} + +L2 అకౌంట్లు మరియు బ్యాలెన్స్‌లను కలిగి ఉన్న ZK-రోల్అప్ యొక్క స్టేట్, ఒక [మెర్కిల్ ట్రీ](/whitepaper/#merkle-trees)గా సూచించబడుతుంది. మెర్కిల్ ట్రీ యొక్క రూట్ (మెర్కిల్ రూట్) యొక్క క్రిప్టోగ్రాఫిక్ హాష్ ఆన్‌చెయిన్ కాంట్రాక్ట్‌లో నిల్వ చేయబడుతుంది, ఇది రోల్అప్ ప్రోటోకాల్ ZK-రోల్అప్ యొక్క స్టేట్‌లోని మార్పులను ట్రాక్ చేయడానికి అనుమతిస్తుంది. + +కొత్త లావాదేవీల సమితిని అమలు చేసిన తర్వాత రోల్అప్ కొత్త స్టేట్‌కు మారుతుంది. స్టేట్ మార్పును ప్రారంభించిన ఆపరేటర్ కొత్త స్టేట్ రూట్‌ను లెక్కించి, ఆన్‌చెయిన్ కాంట్రాక్ట్‌కు సమర్పించాలి. బ్యాచ్‌తో అనుబంధించబడిన వాలిడిటీ ప్రూఫ్ వెరిఫైయర్ కాంట్రాక్టు ద్వారా ధృవీకరించబడితే, కొత్త మెర్కిల్ రూట్ ZK-రోల్అప్ యొక్క కానానికల్ స్టేట్ రూట్ అవుతుంది. + +స్టేట్ రూట్‌లను గణించడంతో పాటు, ZK-రోల్అప్ ఆపరేటర్ ఒక బ్యాచ్ రూట్‌ను కూడా సృష్టిస్తుంది—ఒక బ్యాచ్‌లోని అన్ని లావాదేవీలను కలిగి ఉన్న మెర్కిల్ ట్రీ యొక్క రూట్. కొత్త బ్యాచ్ సమర్పించినప్పుడు, రోల్అప్ కాంట్రాక్టు బ్యాచ్ రూట్‌ను నిల్వ చేస్తుంది, వినియోగదారులు ఒక లావాదేవీ (ఉదా., ఉపసంహరణ అభ్యర్థన) బ్యాచ్‌లో చేర్చబడిందని నిరూపించడానికి అనుమతిస్తుంది. వినియోగదారులు లావాదేవీల వివరాలు, బ్యాచ్ రూట్, మరియు చేర్చిన మార్గాన్ని చూపే ఒక [మెర్కిల్ ప్రూఫ్‌ను](/developers/tutorials/merkle-proofs-for-offline-data-integrity/) అందించాల్సి ఉంటుంది. + +### వాలిడిటీ ప్రూఫ్‌లు {#validity-proofs} + +ZK-రోల్అప్ ఆపరేటర్ L1 కాంట్రాక్ట్‌కు సమర్పించే కొత్త స్టేట్ రూట్ రోల్అప్ యొక్క స్టేట్‌కు చేసిన అప్‌డేట్‌ల ఫలితం. ఆలిస్ బాబ్‌కు 10 టోకెన్‌లను పంపితే, ఆపరేటర్ కేవలం ఆలిస్ బ్యాలెన్స్‌ను 10 తగ్గించి, బాబ్ బ్యాలెన్స్‌ను 10 పెంచుతుంది. అప్పుడు ఆపరేటర్ అప్‌డేట్ చేయబడిన అకౌంటు డేటాను హాష్ చేసి, రోల్అప్ యొక్క మెర్కిల్ ట్రీని పునర్నిర్మించి, కొత్త మెర్కిల్ రూట్‌ను ఆన్‌చెయిన్ కాంట్రాక్ట్‌కు సమర్పిస్తుంది. + +కానీ ఆపరేటర్ కొత్త మెర్కిల్ రూట్ రోల్అప్ యొక్క స్టేట్‌కు సరైన అప్‌డేట్‌ల నుండి వచ్చిందని నిరూపించే వరకు రోల్అప్ కాంట్రాక్టు ప్రతిపాదిత స్టేట్ కమిట్‌మెంట్‌ను ఆటోమేటిక్‌గా అంగీకరించదు. ZK-రోల్అప్ ఆపరేటర్ బ్యాచ్ చేయబడిన లావాదేవీల యొక్క ఖచ్చితత్వాన్ని ధృవీకరించే ఒక క్లుప్తమైన క్రిప్టోగ్రాఫిక్ కమిట్‌మెంట్ అయిన వాలిడిటీ ప్రూఫ్‌ను ఉత్పత్తి చేయడం ద్వారా దీన్ని చేస్తుంది. + +వాలిడిటీ ప్రూఫ్‌లు పార్టీలు ఒక స్టేట్‌మెంట్ యొక్క ఖచ్చితత్వాన్ని స్టేట్‌మెంట్‌నే వెల్లడించకుండా నిరూపించడానికి అనుమతిస్తాయి—అందువల్ల, వాటిని జీరో-కనౌలెడ్జి ప్రూఫ్‌లు అని కూడా అంటారు. ZK-రోల్అప్‌లు ఇతీరియములో లావాదేవీలను తిరిగి అమలు చేయకుండానే ఆఫ్‌చెయిన్ స్టేట్ ట్రాన్సిషన్‌ల యొక్క ఖచ్చితత్వాన్ని నిర్ధారించడానికి వాలిడిటీ ప్రూఫ్‌లను ఉపయోగిస్తాయి. ఈ ప్రూఫ్‌లు [ZK-SNARK](https://arxiv.org/abs/2202.06877) (జీరో-నాలెడ్జ్ సక్సెస్ట్ నాన్-ఇంటరాక్టివ్ ఆర్గుమెంట్ ఆఫ్ నాలెడ్జ్) లేదా [ZK-STARK](https://eprint.iacr.org/2018/046) (జీరో-నాలెడ్జ్ స్కేలబుల్ ట్రాన్స్‌పరెంట్ ఆర్గుమెంట్ ఆఫ్ నాలెడ్జ్) రూపంలో రావచ్చు. + +ZK-రోల్అప్‌లలో ఆఫ్‌చెయిన్ కంప్యూటేషన్ యొక్క సమగ్రతను ధృవీకరించడానికి SNARKలు మరియు STARKలు రెండూ సహాయపడతాయి, అయితే ప్రతి ప్రూఫ్ రకానికి విలక్షణమైన లక్షణాలు ఉంటాయి. + +**ZK-SNARKలు** + +ZK-SNARK ప్రోటోకాల్ పని చేయడానికి, ఒక కామన్ రిఫరెన్స్ స్ట్రింగ్ (CRS) సృష్టించడం అవసరం: CRS వాలిడిటీ ప్రూఫ్‌లను నిరూపించడానికి మరియు ధృవీకరించడానికి పబ్లిక్ పారామీటర్‌లను అందిస్తుంది. ప్రూవింగ్ సిస్టమ్ యొక్క భద్రత CRS సెటప్‌పై ఆధారపడి ఉంటుంది; పబ్లిక్ పారామీటర్‌లను సృష్టించడానికి ఉపయోగించిన సమాచారం దురుద్దేశపూర్వక నటుల చేతుల్లోకి వస్తే, వారు తప్పుడు వాలిడిటీ ప్రూఫ్‌లను రూపొందించగలరు. + +కొన్ని ZK-రోల్అప్‌లు ఈ సమస్యను పరిష్కరించడానికి [మల్టీ-పార్టీ కంప్యూటేషన్ సెరిమనీ (MPC)](https://zkproof.org/2021/06/30/setup-ceremonies/amp/)ని ఉపయోగిస్తాయి, ఇందులో విశ్వసనీయ వ్యక్తులు పాల్గొని, ZK-SNARK సర్క్యూట్ కోసం పబ్లిక్ పారామీటర్‌లను రూపొందిస్తారు. ప్రతి పార్టీ CRS నిర్మాణానికి కొంత యాదృచ్ఛికతను ("టాక్సిక్ వేస్ట్" అని పిలుస్తారు) అందిస్తుంది, దీనిని వారు వెంటనే నాశనం చేయాలి. + +విశ్వసనీయ సెటప్‌లు ఉపయోగించబడతాయి ఎందుకంటే అవి CRS సెటప్ యొక్క భద్రతను పెంచుతాయి. ఒక నిజాయితీ గల పార్టిసిపెంట్ వారి ఇన్‌పుట్‌ను నాశనం చేసినంత కాలం, ZK-SNARK సిస్టమ్ యొక్క భద్రతకు హామీ ఉంటుంది. అయినప్పటికీ, ఈ విధానానికి వారి శాంపిల్ చేయబడిన యాదృచ్ఛికతను తొలగించడానికి మరియు సిస్టమ్ యొక్క భద్రతా హామీలను బలహీనపరచకుండా ఉండటానికి పాల్గొన్న వారిని విశ్వసించాల్సిన అవసరం ఉంది. + +విశ్వాస అంచనాలను పక్కన పెడితే, ZK-SNARKలు వాటి చిన్న ప్రూఫ్ సైజ్‌లు మరియు స్థిర-సమయ ధృవీకరణకు ప్రసిద్ధి చెందాయి. L1లో ప్రూఫ్ ధృవీకరణ ఒక ZK-రోల్అప్‌ను ఆపరేట్ చేయడానికి పెద్ద ఖర్చుగా ఉంటుంది కాబట్టి, L2లు మెయిన్‌నెట్‌లో త్వరగా మరియు చౌకగా ధృవీకరించగల ప్రూఫ్‌లను రూపొందించడానికి ZK-SNARKలను ఉపయోగిస్తాయి. + +**ZK-STARKలు** + +ZK-SNARKల వలె, ZK-STARKలు ఇన్‌పుట్‌లను వెల్లడించకుండా ఆఫ్‌చెయిన్ కంప్యూటేషన్ యొక్క ప్రామాణికతను నిరూపిస్తాయి. అయితే, ZK-STARKలు వాటి స్కేలబిలిటీ మరియు పారదర్శకత కారణంగా ZK-SNARKలపై మెరుగుదలగా పరిగణించబడతాయి. + +ZK-STARKలు 'పారదర్శకమైనవి', ఎందుకంటే అవి కామన్ రిఫరెన్స్ స్ట్రింగ్ (CRS) యొక్క విశ్వసనీయ సెటప్ లేకుండా పని చేయగలవు. బదులుగా, ZK-STARKలు ప్రూఫ్‌లను రూపొందించడానికి మరియు ధృవీకరించడానికి పారామీటర్‌లను సెట్ చేయడానికి బహిరంగంగా ధృవీకరించగల యాదృచ్ఛికతపై ఆధారపడతాయి. + +ZK-STARKలు కూడా ఎక్కువ స్కేలబిలిటీని అందిస్తాయి ఎందుకంటే వాలిడిటీ ప్రూఫ్‌లను నిరూపించడానికి మరియు ధృవీకరించడానికి అవసరమైన సమయం అంతర్లీన కంప్యూటేషన్ యొక్క సంక్లిష్టతకు సంబంధించి _క్వాసిలీనియర్‌గా_ పెరుగుతుంది. ZK-SNARKలతో, అంతర్లీన కంప్యూటేషన్ యొక్క పరిమాణానికి సంబంధించి నిరూపణ మరియు ధృవీకరణ సమయాలు _లీనియర్‌గా_ పెరుగుతాయి. అంటే పెద్ద డేటాసెట్‌లు ఉన్నప్పుడు ZK-STARKలకు ZK-SNARKల కంటే నిరూపణ మరియు ధృవీకరణకు తక్కువ సమయం అవసరం, ఇది అధిక-పరిమాణ అప్లికేషన్‌లకు ఉపయోగకరంగా ఉంటుంది. + +ZK-STARKలు క్వాంటం కంప్యూటర్లకు వ్యతిరేకంగా కూడా సురక్షితంగా ఉంటాయి, అయితే ZK-SNARKలలో ఉపయోగించే ఎలిప్టిక్ కర్వ్ క్రిప్టోగ్రఫీ (ECC) క్వాంటం కంప్యూటింగ్ దాడులకు గురయ్యే అవకాశం ఉందని విస్తృతంగా నమ్ముతారు. ZK-STARKల యొక్క ప్రతికూలత ఏమిటంటే, అవి పెద్ద ప్రూఫ్ పరిమాణాలను ఉత్పత్తి చేస్తాయి, వీటిని ఇతీరియములో ధృవీకరించడం ఖరీదైనది. + +#### ZK-రోల్అప్‌లలో వాలిడిటీ ప్రూఫ్‌లు ఎలా పని చేస్తాయి? {#validity-proofs-in-zk-rollups} + +##### ప్రూఫ్ జనరేషన్ + +లావాదేవీలను అంగీకరించే ముందు, ఆపరేటర్ సాధారణ తనిఖీలను నిర్వహిస్తుంది. ఇందులో ఇవి నిర్ధారించబడతాయి: + +- పంపినవారు మరియు స్వీకర్త అకౌంట్లు స్టేట్ ట్రీలో భాగంగా ఉన్నాయి. +- పంపినవారికి లావాదేవీని ప్రాసెస్ చేయడానికి తగినంత నిధులు ఉన్నాయి. +- లావాదేవీ సరైనది మరియు రోల్అప్‌లో పంపినవారి పబ్లిక్ కీతో సరిపోలుతుంది. +- పంపినవారి నాన్స్ సరైనది, మొదలైనవి. + +ZK-రోల్అప్ నోడ్ తగినంత లావాదేవీలను కలిగి ఉన్న తర్వాత, అది వాటిని ఒక బ్యాచ్‌గా కలుపుతుంది మరియు ఒక క్లుప్తమైన ZK-ప్రూఫ్‌గా కంపైల్ చేయడానికి ప్రూవింగ్ సర్క్యూట్‌కు ఇన్‌పుట్‌లను కంపైల్ చేస్తుంది. ఇందులో ఇవి ఉంటాయి: + +- బ్యాచ్‌లోని అన్ని లావాదేవీలను కలిగి ఉన్న ఒక మెర్కిల్ ట్రీ రూట్. +- లావాదేవీలను బ్యాచ్‌లో చేర్చినట్లు నిరూపించడానికి మెర్కిల్ ప్రూఫ్‌లు. +- లావాదేవీలలోని ప్రతి పంపినవారు-స్వీకర్త జతకు మెర్కిల్ ప్రూఫ్‌లు, ఆ అకౌంట్లు రోల్అప్ యొక్క స్టేట్ ట్రీలో భాగంగా ఉన్నాయని నిరూపించడానికి. +- ప్రతి లావాదేవీకి స్టేట్ అప్‌డేట్‌లను వర్తింపజేసిన తర్వాత స్టేట్ రూట్‌ను అప్‌డేట్ చేయడం ద్వారా పొందిన ఇంటర్మీడియట్ స్టేట్ రూట్‌ల సమితి (అంటే, పంపినవారి అకౌంట్లను తగ్గించడం మరియు స్వీకర్త అకౌంట్లను పెంచడం). + +ప్రూవింగ్ సర్క్యూట్ ప్రతి లావాదేవీపై "లూపింగ్" చేయడం ద్వారా మరియు లావాదేవీని ప్రాసెస్ చేయడానికి ముందు ఆపరేటర్ పూర్తి చేసిన అదే తనిఖీలను నిర్వహించడం ద్వారా వాలిడిటీ ప్రూఫ్‌ను గణిస్తుంది. మొదట, ఇది అందించిన మెర్కిల్ ప్రూఫ్‌ను ఉపయోగించి పంపినవారి అకౌంటు ప్రస్తుత స్టేట్ రూట్‌లో భాగంగా ఉందని ధృవీకరిస్తుంది. అప్పుడు ఇది పంపినవారి బ్యాలెన్స్‌ను తగ్గిస్తుంది, వారి నాన్స్‌ను పెంచుతుంది, అప్‌డేట్ చేయబడిన అకౌంటు డేటాను హాష్ చేస్తుంది మరియు కొత్త మెర్కిల్ రూట్‌ను రూపొందించడానికి మెర్కిల్ ప్రూఫ్‌తో కలుపుతుంది. + +ఈ మెర్కిల్ రూట్ ZK-రోల్అప్ యొక్క స్టేట్‌లో ఏకైక మార్పును ప్రతిబింబిస్తుంది: పంపినవారి బ్యాలెన్స్ మరియు నాన్స్‌లో మార్పు. ఇది సాధ్యమవుతుంది ఎందుకంటే అకౌంటు యొక్క ఉనికిని నిరూపించడానికి ఉపయోగించిన మెర్కిల్ ప్రూఫ్ కొత్త స్టేట్ రూట్‌ను రూపొందించడానికి ఉపయోగించబడుతుంది. + +ప్రూవింగ్ సర్క్యూట్ స్వీకర్త యొక్క అకౌంటుపై అదే ప్రక్రియను నిర్వహిస్తుంది. ఇది స్వీకర్త యొక్క అకౌంటు ఇంటర్మీడియట్ స్టేట్ రూట్ కింద ఉందో లేదో తనిఖీ చేస్తుంది (మెర్కిల్ ప్రూఫ్‌ను ఉపయోగించి), వారి బ్యాలెన్స్‌ను పెంచుతుంది, అకౌంటు డేటాను తిరిగి హాష్ చేస్తుంది మరియు కొత్త స్టేట్ రూట్‌ను రూపొందించడానికి మెర్కిల్ ప్రూఫ్‌తో కలుపుతుంది. + +ఈ ప్రక్రియ ప్రతి లావాదేవీకి పునరావృతమవుతుంది; ప్రతి "లూప్" పంపినవారి అకౌంటును అప్‌డేట్ చేయడం నుండి కొత్త స్టేట్ రూట్‌ను మరియు స్వీకర్త యొక్క అకౌంటును అప్‌డేట్ చేయడం నుండి తదుపరి కొత్త రూట్‌ను సృష్టిస్తుంది. వివరించినట్లుగా, స్టేట్ రూట్‌కు ప్రతి అప్‌డేట్ రోల్అప్ యొక్క స్టేట్ ట్రీలో ఒక భాగాన్ని మారుతున్నట్లు సూచిస్తుంది. + +ZK-ప్రూవింగ్ సర్క్యూట్ మొత్తం లావాదేవీ బ్యాచ్‌ను పునరావృతం చేస్తుంది, చివరి లావాదేవీ అమలు చేయబడిన తర్వాత తుది స్టేట్ రూట్‌కు దారితీసే అప్‌డేట్‌ల క్రమాన్ని ధృవీకరిస్తుంది. చివరిగా గణించబడిన మెర్కిల్ రూట్ ZK-రోల్అప్ యొక్క సరికొత్త కానానికల్ స్టేట్ రూట్ అవుతుంది. + +##### ప్రూఫ్ వెరిఫికేషన్ + +ప్రూవింగ్ సర్క్యూట్ స్టేట్ అప్‌డేట్‌ల యొక్క ఖచ్చితత్వాన్ని ధృవీకరించిన తర్వాత, L2 ఆపరేటర్ గణించబడిన వాలిడిటీ ప్రూఫ్‌ను L1లోని వెరిఫైయర్ కాంట్రాక్ట్‌కు సమర్పిస్తుంది. కాంట్రాక్టు యొక్క వెరిఫికేషన్ సర్క్యూట్ ప్రూఫ్ యొక్క ప్రామాణికతను ధృవీకరిస్తుంది మరియు ప్రూఫ్‌లో భాగంగా ఉన్న పబ్లిక్ ఇన్‌పుట్‌లను కూడా తనిఖీ చేస్తుంది: + +- **ప్రీ-స్టేట్ రూట్**: ZK-రోల్అప్ యొక్క పాత స్టేట్ రూట్ (అంటే, బ్యాచ్ చేయబడిన లావాదేవీలు అమలు చేయడానికి ముందు), L2 చైన్ యొక్క చివరిగా తెలిసిన చెల్లుబాటు అయ్యే స్టేట్‌ను ప్రతిబింబిస్తుంది. + +- **పోస్ట్-స్టేట్ రూట్**: ZK-రోల్అప్ యొక్క కొత్త స్టేట్ రూట్ (అంటే, బ్యాచ్ చేయబడిన లావాదేవీల అమలు తర్వాత), L2 చైన్ యొక్క సరికొత్త స్టేట్‌ను ప్రతిబింబిస్తుంది. పోస్ట్-స్టేట్ రూట్ అనేది ప్రూవింగ్ సర్క్యూట్‌లో స్టేట్ అప్‌డేట్‌లను వర్తింపజేసిన తర్వాత పొందిన తుది రూట్. + +- **బ్యాచ్ రూట్**: బ్యాచ్ యొక్క మెర్కిల్ రూట్, బ్యాచ్‌లోని లావాదేవీలను _మెర్కిలైజ్_ చేయడం మరియు ట్రీ యొక్క రూట్‌ను హాష్ చేయడం ద్వారా ఉద్భవించింది. + +- **లావాదేవీ ఇన్‌పుట్‌లు**: సమర్పించిన బ్యాచ్‌లో భాగంగా అమలు చేయబడిన లావాదేవీలతో అనుబంధించబడిన డేటా. + +ప్రూఫ్ సర్క్యూట్‌ను సంతృప్తిపరిస్తే (అంటే, ఇది చెల్లుబాటు అయ్యేది అయితే), రోల్అప్‌ను మునుపటి స్టేట్ (ప్రీ-స్టేట్ రూట్ ద్వారా క్రిప్టోగ్రాఫికల్‌గా ఫింగర్‌ప్రింట్ చేయబడింది) నుండి కొత్త స్టేట్‌కు (పోస్ట్-స్టేట్ రూట్ ద్వారా క్రిప్టోగ్రాఫికల్‌గా ఫింగర్‌ప్రింట్ చేయబడింది) మార్చే చెల్లుబాటు అయ్యే లావాదేవీల క్రమం ఉందని అర్థం. ప్రీ-స్టేట్ రూట్ రోల్అప్ కాంట్రాక్ట్‌లో నిల్వ చేయబడిన రూట్‌తో సరిపోలితే మరియు ప్రూఫ్ చెల్లుబాటు అయ్యేది అయితే, రోల్అప్ కాంట్రాక్టు ప్రూఫ్ నుండి పోస్ట్-స్టేట్ రూట్‌ను తీసుకుంటుంది మరియు రోల్అప్ యొక్క మారిన స్టేట్‌ను ప్రతిబింబించడానికి దాని స్టేట్ ట్రీని అప్‌డేట్ చేస్తుంది. + +### ప్రవేశాలు మరియు నిష్క్రమణలు {#entries-and-exits} + +వినియోగదారులు L1 చైన్‌లో డిప్లాయ్ చేయబడిన రోల్అప్ యొక్క కాంట్రాక్ట్‌లో టోకెన్‌లను డిపాజిట్ చేయడం ద్వారా ZK-రోల్అప్‌లోకి ప్రవేశిస్తారు. ఈ లావాదేవీ క్యూలో ఉంటుంది, ఎందుకంటే కేవలం ఆపరేటర్లు మాత్రమే లావాదేవీలను రోల్అప్ కాంట్రాక్ట్‌కు సమర్పించగలరు. + +పెండింగ్‌లో ఉన్న డిపాజిట్ క్యూ నిండడం ప్రారంభిస్తే, ZK-రోల్అప్ ఆపరేటర్ డిపాజిట్ లావాదేవీలను తీసుకొని వాటిని రోల్అప్ కాంట్రాక్ట్‌కు సమర్పిస్తాడు. వినియోగదారుడి నిధులు రోల్అప్‌లో ఉన్న తర్వాత, వారు ప్రాసెసింగ్ కోసం ఆపరేటర్‌కు లావాదేవీలను పంపడం ద్వారా లావాదేవీలు చేయడం ప్రారంభించవచ్చు. వినియోగదారులు వారి అకౌంటు డేటాను హాష్ చేయడం ద్వారా, హాష్‌ను రోల్అప్ కాంట్రాక్ట్‌కు పంపడం ద్వారా మరియు ప్రస్తుత స్టేట్ రూట్‌కు వ్యతిరేకంగా ధృవీకరించడానికి మెర్కిల్ ప్రూఫ్‌ను అందించడం ద్వారా రోల్అప్‌లోని బ్యాలెన్స్‌లను ధృవీకరించవచ్చు. + +ఒక ZK-రోల్అప్ నుండి L1 కి విత్ డ్రా చేసుకోవడం చాలా సులభం. వినియోగదారుడు తమ ఆస్తులను రోల్అప్‌లో ఒక నిర్దిష్ట అకౌంటుకు బర్నింగ్ కోసం పంపడం ద్వారా నిష్క్రమణ లావాదేవీని ప్రారంభిస్తాడు. ఆపరేటర్ లావాదేవీని తదుపరి బ్యాచ్‌లో చేర్చితే, వినియోగదారుడు ఆన్‌చెయిన్ కాంట్రాక్ట్‌కు ఉపసంహరణ అభ్యర్థనను సమర్పించవచ్చు. ఈ ఉపసంహరణ అభ్యర్థనలో ఇవి ఉంటాయి: + +- వినియోగదారుడి లావాదేవీని బర్న్ అకౌంటుకు ఒక లావాదేవీ బ్యాచ్‌లో చేర్చినట్లు నిరూపించే మెర్కిల్ ప్రూఫ్ + +- లావాదేవీ డేటా + +- బ్యాచ్ రూట్ + +- డిపాజిట్ చేసిన నిధులను స్వీకరించడానికి L1 చిరునామా + +రోల్అప్ కాంట్రాక్టు లావాదేవీల డేటాను హాష్ చేస్తుంది, బ్యాచ్ రూట్ ఉందో లేదో తనిఖీ చేస్తుంది మరియు లావాదేవీల హాష్ బ్యాచ్ రూట్‌లో భాగంగా ఉందో లేదో తనిఖీ చేయడానికి మెర్కిల్ ప్రూఫ్‌ను ఉపయోగిస్తుంది. ఆ తర్వాత, కాంట్రాక్టు నిష్క్రమణ లావాదేవీని అమలు చేసి, L1లో వినియోగదారుడి ఎంచుకున్న చిరునామాకు నిధులను పంపుతుంది. + +## ZK-రోల్అప్‌లు మరియు EVM అనుకూలత {#zk-rollups-and-evm-compatibility} + +ఆప్టిమిస్టిక్ రోల్అప్‌ల వలె కాకుండా, ZK-రోల్అప్‌లు [ఇతీరియము వర్చువల్ మషీన్ (EVM)](/developers/docs/evm/) తో సులభంగా అనుకూలంగా ఉండవు. సాధారణ-ప్రయోజన EVM కంప్యూటేషన్‌ను సర్క్యూట్‌లలో నిరూపించడం, సాధారణ కంప్యూటేషన్‌లను (మునుపు వివరించిన టోకెన్ బదిలీ వంటివి) నిరూపించడం కంటే చాలా కష్టం మరియు వనరుల-ఇంటెన్సివ్. + +అయితే, [జీరో-కనౌలెడ్జి టెక్నాలజీలోని పురోగతులు](https://hackmd.io/@yezhang/S1_KMMbGt) EVM కంప్యూటేషన్‌ను జీరో-కనౌలెడ్జి ప్రూఫ్‌లలో చుట్టడంలో పునరుద్ధరించబడిన ఆసక్తిని రేకెత్తిస్తున్నాయి. ఈ ప్రయత్నాలు ప్రోగ్రామ్ ఎగ్జిక్యూషన్ యొక్క ఖచ్చితత్వాన్ని సమర్థవంతంగా ధృవీకరించగల ఒక జీరో-కనౌలెడ్జి EVM (zkEVM) అమలును సృష్టించడం వైపు మళ్లించబడ్డాయి. ఒక zkEVM సర్క్యూట్‌లలో నిరూపణ/ధృవీకరణ కోసం ప్రస్తుత EVM ఆప్కోడ్లను పునఃసృష్టిస్తుంది, ఇది స్మార్ట్ కాంట్రాక్టులను అమలు చేయడానికి అనుమతిస్తుంది. + +EVM వలె, కొన్ని ఇన్‌పుట్‌లపై కంప్యూటేషన్ చేసిన తర్వాత ఒక zkEVM స్టేట్‌ల మధ్య మారుతుంది. తేడా ఏమిటంటే, zkEVM ప్రోగ్రామ్ యొక్క ఎగ్జిక్యూషన్‌లోని ప్రతి దశ యొక్క ఖచ్చితత్వాన్ని ధృవీకరించడానికి జీరో-కనౌలెడ్జి ప్రూఫ్‌లను కూడా సృష్టిస్తుంది. వాలిడిటీ ప్రూఫ్‌లు VM యొక్క స్టేట్‌ను (మెమరీ, స్టాక్, స్టోరేజ్) తాకే ఆపరేషన్ల యొక్క ఖచ్చితత్వాన్ని మరియు కంప్యూటేషన్‌నే (అంటే, ఆపరేషన్ సరైన ఆప్కోడ్లను పిలిచిందా మరియు వాటిని సరిగ్గా అమలు చేసిందా?) ధృవీకరించగలవు. + +EVM-అనుకూల ZK-రోల్అప్‌ల పరిచయం అభివృద్ధి చేసేవారికి జీరో-కనౌలెడ్జి ప్రూఫ్‌ల యొక్క స్కేలబిలిటీ మరియు భద్రతా హామీలను ఉపయోగించుకోవడంలో సహాయపడుతుందని అంచనా వేయబడింది. మరీ ముఖ్యంగా, స్థానిక ఇతీరియము ఇన్‌ఫ్రాస్ట్రక్చర్‌తో అనుకూలత అంటే అభివృద్ధి చేసేవారు సుపరిచితమైన (మరియు యుద్ధ-పరీక్షించబడిన) పనిముట్లు మరియు భాషలను ఉపయోగించి ZK-స్నేహపూర్వక డాప్స్‌ను నిర్మించవచ్చు. + +## ZK-రోల్అప్ ఫీజులు ఎలా పని చేస్తాయి? {#how-do-zk-rollup-fees-work} + +ZK-రోల్అప్‌లలో లావాదేవీల కోసం వినియోగదారులు ఎంత చెల్లిస్తారనేది గ్యాస్ ఫీజుపై ఆధారపడి ఉంటుంది, సరిగ్గా ఇతీరియము మెయిన్‌నెట్ వలె. అయితే, L2లో గ్యాస్ ఫీజులు విభిన్నంగా పని చేస్తాయి మరియు కింది ఖర్చుల ద్వారా ప్రభావితమవుతాయి: + +1. **స్టేట్ రైట్**: ఇతీరియము యొక్క స్టేట్‌కు వ్రాయడానికి (అంటే, ఇతీరియము బ్లాక్‌చెయిన్‌లో లావాదేవీని సమర్పించడం) ఒక స్థిరమైన ఖర్చు ఉంటుంది. ZK-రోల్అప్‌లు లావాదేవీలను బ్యాచ్ చేయడం ద్వారా మరియు స్థిరమైన ఖర్చులను బహుళ వినియోగదారుల మధ్య పంపిణీ చేయడం ద్వారా ఈ ఖర్చును తగ్గిస్తాయి. + +2. **డేటా పబ్లికేషన్**: ZK-రోల్అప్‌లు ప్రతి లావాదేవీకి స్టేట్ డేటాను ఇతీరియముకు `calldata`గా ప్రచురిస్తాయి. `calldata` ఖర్చులు ప్రస్తుతం [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) ద్వారా నియంత్రించబడతాయి, ఇది వరుసగా `calldata` యొక్క నాన్-జీరో బైట్‌లకు 16 గ్యాస్ మరియు జీరో బైట్‌లకు 4 గ్యాస్ ఖర్చును నిర్దేశిస్తుంది. ప్రతి లావాదేవీపై చెల్లించే ఖర్చు దాని కోసం ఆన్‌చెయిన్‌లో ఎంత `calldata` పోస్ట్ చేయాలనే దానిపై ఆధారపడి ఉంటుంది. + +3. **L2 ఆపరేటర్ ఫీజులు**: ఇది ఇతీరియము మెయిన్‌నెట్‌లోని [లావాదేవీ "ప్రాధాన్యత ఫీజులు (చిట్కాలు)"](/developers/docs/gas/#how-are-gas-fees-calculated) వలె, లావాదేవీలను ప్రాసెస్ చేయడంలో అయిన కంప్యూటేషనల్ ఖర్చుల కోసం రోల్అప్ ఆపరేటర్‌కు పరిహారంగా చెల్లించే మొత్తం. + +4. **ప్రూఫ్ జనరేషన్ మరియు వెరిఫికేషన్**: ZK-రోల్అప్ ఆపరేటర్లు లావాదేవీ బ్యాచ్‌ల కోసం వాలిడిటీ ప్రూఫ్‌లను ఉత్పత్తి చేయాలి, ఇది వనరుల-ఇంటెన్సివ్. మెయిన్‌నెట్‌లో జీరో-కనౌలెడ్జి ప్రూఫ్‌లను ధృవీకరించడానికి కూడా గ్యాస్ (~ 500,000 గ్యాస్) ఖర్చవుతుంది. + +లావాదేవీలను బ్యాచ్ చేయడమే కాకుండా, ZK-రోల్అప్‌లు లావాదేవీల డేటాను కంప్రెస్ చేయడం ద్వారా వినియోగదారులకు ఫీజులను తగ్గిస్తాయి. ఇతీరియము ZK-రోల్అప్‌లను ఉపయోగించడానికి ఎంత ఖర్చవుతుందో మీరు [రియల్-టైమ్ ఓవర్‌వ్యూను చూడవచ్చు](https://l2fees.info/). + +## ZK-రోల్అప్‌లు ఇతీరియమును ఎలా స్కేల్ చేస్తాయి? {#scaling-ethereum-with-zk-rollups} + +### లావాదేవీల డేటా కంప్రెషన్ {#transaction-data-compression} + +ZK-రోల్అప్‌లు కంప్యూటేషన్‌ను ఆఫ్‌చెయిన్‌కు తీసుకెళ్లడం ద్వారా ఇతీరియము యొక్క బేస్ లేయర్‌లో త్రూపుట్‌ను విస్తరిస్తాయి, కానీ స్కేలింగ్ కోసం నిజమైన ప్రోత్సాహం లావాదేవీల డేటాను కంప్రెస్ చేయడం నుండి వస్తుంది. ఇతీరియము యొక్క [బ్లాక్ సైజు](/developers/docs/blocks/#block-size) ప్రతి బ్లాక్ కలిగి ఉండగల డేటాను మరియు, విస్తరణ ద్వారా, ప్రతి బ్లాక్‌కు ప్రాసెస్ చేయబడే లావాదేవీల సంఖ్యను పరిమితం చేస్తుంది. లావాదేవీలకు సంబంధించిన డేటాను కంప్రెస్ చేయడం ద్వారా, ZK-రోల్అప్‌లు ప్రతి బ్లాక్‌కు ప్రాసెస్ చేయబడే లావాదేవీల సంఖ్యను గణనీయంగా పెంచుతాయి. + +ZK-రోల్అప్‌లు ఆప్టిమిస్టిక్ రోల్అప్‌ల కంటే లావాదేవీల డేటాను బాగా కంప్రెస్ చేయగలవు, ఎందుకంటే అవి ప్రతి లావాదేవీని ధృవీకరించడానికి అవసరమైన మొత్తం డేటాను పోస్ట్ చేయనవసరం లేదు. అవి కేవలం రోల్అప్‌లోని అకౌంట్లు మరియు బ్యాలెన్స్‌ల యొక్క తాజా స్టేట్‌ను పునర్నిర్మించడానికి అవసరమైన కనీస డేటాను మాత్రమే పోస్ట్ చేయాలి. + +### పునరావృత రుజువులు {#recursive-proofs} + +జీరో-కనౌలెడ్జి ప్రూఫ్‌ల యొక్క ఒక ప్రయోజనం ఏమిటంటే, ప్రూఫ్‌లు ఇతర ప్రూఫ్‌లను ధృవీకరించగలవు. ఉదాహరణకు, ఒకే ZK-SNARK ఇతర ZK-SNARKలను ధృవీకరించగలదు. అటువంటి "ప్రూఫ్-ఆఫ్-ప్రూఫ్‌లు" పునరావృత ప్రూఫ్‌లు అని పిలువబడతాయి మరియు ZK-రోల్అప్‌లపై త్రూపుట్‌ను నాటకీయంగా పెంచుతాయి. + +ప్రస్తుతం, వాలిడిటీ ప్రూఫ్‌లు బ్లాక్-బై-బ్లాక్ ప్రాతిపదికన రూపొందించబడతాయి మరియు ధృవీకరణ కోసం L1 కాంట్రాక్ట్‌కు సమర్పించబడతాయి. అయితే, సింగిల్ బ్లాక్ ప్రూఫ్‌లను ధృవీకరించడం ZK-రోల్అప్‌లు సాధించగల త్రూపుట్‌ను పరిమితం చేస్తుంది, ఎందుకంటే ఆపరేటర్ ఒక ప్రూఫ్‌ను సమర్పించినప్పుడు కేవలం ఒక బ్లాక్ మాత్రమే ఫైనలైజ్ చేయబడుతుంది. + +అయితే, పునరావృత ప్రూఫ్‌లు ఒకే వాలిడిటీ ప్రూఫ్‌తో అనేక బ్లాక్‌లను ఫైనలైజ్ చేయడం సాధ్యం చేస్తాయి. ఇది ఎందుకంటే ప్రూవింగ్ సర్క్యూట్ ఒక తుది ప్రూఫ్ సృష్టించబడే వరకు బహుళ బ్లాక్ ప్రూఫ్‌లను పునరావృతంగా కలుపుతుంది. L2 ఆపరేటర్ ఈ పునరావృత ప్రూఫ్‌ను సమర్పిస్తాడు, మరియు కాంట్రాక్టు దానిని అంగీకరిస్తే, సంబంధిత అన్ని బ్లాక్‌లు తక్షణమే ఫైనలైజ్ చేయబడతాయి. పునరావృత ప్రూఫ్‌లతో, ఇతీరియములో విరామాలలో ఫైనలైజ్ చేయగల ZK-రోల్అప్ లావాదేవీల సంఖ్య పెరుగుతుంది. + +### ZK-రోల్అప్‌ల యొక్క లాభనష్టాలు {#zk-rollups-pros-and-cons} + +| ప్రయోజనాలు | అప్రయోజనాలు | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| వాలిడిటీ ప్రూఫ్‌లు ఆఫ్‌చెయిన్ లావాదేవీల యొక్క ఖచ్చితత్వాన్ని నిర్ధారిస్తాయి మరియు ఆపరేటర్లు చెల్లని స్టేట్ ట్రాన్సిషన్‌లను అమలు చేయకుండా నిరోధిస్తాయి. | వాలిడిటీ ప్రూఫ్‌లను గణించడం మరియు ధృవీకరించడంతో సంబంధం ఉన్న ఖర్చు గణనీయమైనది మరియు రోల్అప్ వినియోగదారుల కోసం ఫీజులను పెంచవచ్చు. | +| L1లో వాలిడిటీ ప్రూఫ్‌లు ధృవీకరించబడిన తర్వాత స్టేట్ అప్‌డేట్‌లు ఆమోదించబడతాయి కాబట్టి వేగవంతమైన లావాదేవీల ఫైనాలిటీని అందిస్తుంది. | జీరో-కనౌలెడ్జి టెక్నాలజీ యొక్క సంక్లిష్టత కారణంగా EVM-అనుకూల ZK-రోల్అప్‌లను నిర్మించడం కష్టం. | +| [ఆప్టిమిస్టిక్ రోల్అప్‌ల](/developers/docs/scaling/optimistic-rollups/#optimistic-pros-and-cons) వలె ప్రోత్సహించబడిన నటుల నిజాయితీపై కాకుండా, భద్రత కోసం విశ్వసనీయత లేని క్రిప్టోగ్రాఫిక్ యంత్రాంగాలపై ఆధారపడుతుంది. | వాలిడిటీ ప్రూఫ్‌లను ఉత్పత్తి చేయడానికి ప్రత్యేక హార్డ్‌వేర్ అవసరం, ఇది కొన్ని పార్టీలచే చైన్ యొక్క కేంద్రీకృత నియంత్రణను ప్రోత్సహించవచ్చు. | +| ఆఫ్‌చెయిన్ స్టేట్‌ను పునరుద్ధరించడానికి అవసరమైన డేటాను L1లో నిల్వ చేస్తుంది, ఇది భద్రత, సెన్సార్‌షిప్-నిరోధకత మరియు వికేంద్రీకరణకు హామీ ఇస్తుంది. | కేంద్రీకృత ఆపరేటర్లు (సీక్వెన్సర్లు) లావాదేవీల క్రమాన్ని ప్రభావితం చేయవచ్చు. | +| వినియోగదారులు ఎక్కువ మూలధన సామర్థ్యం నుండి ప్రయోజనం పొందుతారు మరియు L2 నుండి ఆలస్యం లేకుండా నిధులను విత్ డ్రా చేసుకోవచ్చు. | హార్డ్‌వేర్ అవసరాలు చైన్‌ను పురోగమించడానికి బలవంతం చేయగల పాల్గొనేవారి సంఖ్యను తగ్గించవచ్చు, ఇది దురుద్దేశపూర్వక ఆపరేటర్లు రోల్అప్ యొక్క స్టేట్‌ను స్తంభింపజేయడం మరియు వినియోగదారులను సెన్సార్ చేసే ప్రమాదాన్ని పెంచుతుంది. | +| సజీవత్వం అంచనాలపై ఆధారపడదు మరియు వినియోగదారులు తమ నిధులను రక్షించుకోవడానికి చైన్‌ను ధృవీకరించాల్సిన అవసరం లేదు. | కొన్ని ప్రూవింగ్ సిస్టమ్‌లు (ఉదా., ZK-SNARK) విశ్వసనీయ సెటప్‌ను కోరుతాయి, ఇది దుర్వినియోగం చేయబడితే, ఒక ZK-రోల్అప్ యొక్క భద్రతా నమూనాను ప్రమాదంలో పడేయవచ్చు. | +| మెరుగైన డేటా కంప్రెషన్ ఇతీరియములో `calldata`ను ప్రచురించే ఖర్చులను తగ్గించడంలో మరియు వినియోగదారుల కోసం రోల్అప్ ఫీజులను తగ్గించడంలో సహాయపడుతుంది. | | + +### ZK-రోల్అప్‌ల యొక్క దృశ్య వివరణ {#zk-video} + +ZK-రోల్అప్‌లను వివరించే Finematics చూడండి: + + + +## zkEVMపై ఎవరు పని చేస్తున్నారు? {#zkevm-projects} + +zkEVMలపై పని చేస్తున్న ప్రాజెక్ట్‌లలో ఇవి ఉన్నాయి: + +- **[zkEVM](https://github.com/privacy-scaling-explorations/zkevm-specs)** - _zkEVM అనేది ఒక EVM-అనుకూల ZK-రోల్అప్‌ను మరియు ఇతీరియము బ్లాక్‌ల కోసం వాలిడిటీ ప్రూఫ్‌లను రూపొందించడానికి ఒక యంత్రాంగాన్ని అభివృద్ధి చేయడానికి ఇతీరియము ఫౌండేషన్ ద్వారా నిధులు సమకూర్చబడిన ఒక ప్రాజెక్ట్._ + +- **[Polygon zkEVM](https://polygon.technology/solutions/polygon-zkevm)** - _ఇది ఇతీరియము మెయిన్‌నెట్‌పై ఒక వికేంద్రీకృత ZK రోల్అప్, ఇది జీరో-కనౌలెడ్జి-ప్రూఫ్ ధ్రువీకరణలతో కూడిన స్మార్ట్ కాంట్రాక్టులతో సహా ఇతీరియము లావాదేవీలను పారదర్శకంగా ఎగ్జిక్యూట్ చేసే ఒక జీరో-కనౌలెడ్జి ఎథేరియం వర్చువల్ మషీన్ (zkEVM) పై పనిచేస్తుంది._ + +- **[Scroll](https://scroll.io/blog/zkEVM)** - _Scroll అనేది ఇతీరియము కోసం ఒక స్థానిక zkEVM లేయర్ 2 సొల్యూషన్‌ను నిర్మించడంపై పని చేస్తున్న ఒక టెక్-ఆధారిత కంపెనీ._ + +- **[Taiko](https://taiko.xyz)** - _Taiko ఒక వికేంద్రీకృత, ఇతీరియము-సమానమైన ZK-రోల్అప్ (ఒక [రకం 1 ZK-EVM](https://vitalik.eth.limo/general/2022/08/04/zkevm.html))._ + +- **[ZKsync](https://docs.zksync.io/)** - _ZKsync Era అనేది Matter Labs నిర్మించిన ఒక EVM-అనుకూల ZK రోల్అప్, ఇది దాని స్వంత zkEVM ద్వారా శక్తిని పొందుతుంది._ + +- **[Starknet](https://starkware.co/starknet/)** - _StarkNet అనేది StarkWare నిర్మించిన ఒక EVM-అనుకూల లేయర్ 2 స్కేలింగ్ సొల్యూషన్._ + +- **[Morph](https://www.morphl2.io/)** - _Morph అనేది ఒక హైబ్రిడ్ రోల్అప్ స్కేలింగ్ సొల్యూషన్, ఇది లేయర్ 2 స్టేట్ ఛాలెంజ్ సమస్యను పరిష్కరించడానికి zk-ప్రూఫ్‌ను ఉపయోగిస్తుంది._ + +- **[Linea](https://linea.build)** - _Linea అనేది Consensys నిర్మించిన ఒక ఇతీరియము-సమానమైన zkEVM లేయర్ 2, ఇది ఇతీరియము పర్యావరణ వ్యవస్థతో పూర్తిగా అనుసంధానించబడింది._ + +## ZK-రోల్అప్‌ల పఠనంపై మరింత పఠనం {#further-reading-on-zk-rollups} + +- [జీరో-నాలెడ్జ్ రోల్అప్‌లు అంటే ఏమిటి?](https://coinmarketcap.com/alexandria/glossary/zero-knowledge-rollups) +- [జీరో-కనౌలెడ్జి రోల్అప్‌లు అంటే ఏమిటి?](https://alchemy.com/blog/zero-knowledge-rollups) +- [ఇతీరియము రోలప్‌లకు ప్రాక్టికల్ గైడ్](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups) +- [STARKలు vs SNARKలు](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/) +- [zkEVM అంటే ఏమిటి?](https://www.alchemy.com/overviews/zkevm) +- [ZK-EVM రకాలు: ఇతీరియము-సమానమైన, EVM-సమానమైన, రకం 1, రకం 4, మరియు ఇతర రహస్య బజ్‌వర్డ్‌లు](https://taiko.mirror.xyz/j6KgY8zbGTlTnHRFGW6ZLVPuT0IV0_KmgowgStpA0K4) +- [zkEVMకు పరిచయం](https://hackmd.io/@yezhang/S1_KMMbGt) +- [ZK-EVM L2లు అంటే ఏమిటి?](https://linea.mirror.xyz/qD18IaQ4BROn_Y40EBMTUTdJHYghUtdECscSWyMvm8M) +- [అద్భుతమైన-zkEVM వనరులు](https://github.com/LuozhuZhang/awesome-zkevm) +- [ZK-SNARKS తెరవెనుక](https://vitalik.eth.limo/general/2017/02/01/zk_snarks.html) +- [SNARKలు ఎలా సాధ్యమవుతాయి?](https://vitalik.eth.limo/general/2021/01/26/snarks.html) diff --git a/public/content/translations/te/developers/docs/smart-contracts/anatomy/index.md b/public/content/translations/te/developers/docs/smart-contracts/anatomy/index.md new file mode 100644 index 00000000000..3e9e3b17f94 --- /dev/null +++ b/public/content/translations/te/developers/docs/smart-contracts/anatomy/index.md @@ -0,0 +1,657 @@ +--- +title: "స్మార్ట్ కాంట్రాక్టుల నిర్మాణం" +description: "స్మార్ట్ కాంట్రాక్ట్ నిర్మాణంపై లోతైన పరిశీలన - విధులు, డేటా మరియు వేరియబుల్స్." +lang: te +--- + +స్మార్ట్ కాంట్రాక్ట్ అనేది ఇతీరియములోని ఒక చిరునామాలో నడిచే ఒక ప్రోగ్రామ్. అవి లావాదేవీని స్వీకరించిన తర్వాత అమలు చేయగల డేటా మరియు ఫంక్షన్లతో రూపొందించబడ్డాయి. స్మార్ట్ కాంట్రాక్ట్‌ను రూపొందించే దాని యొక్క అవలోకనం ఇక్కడ ఉంది. + +## అవసరాలు {#prerequisites} + +ముందుగా మీరు [స్మార్ట్ కాంట్రాక్టుల](/developers/docs/smart-contracts/) గురించి చదివారని నిర్ధారించుకోండి. ఈ డాక్యుమెంట్ మీరు ఇప్పటికే జావాస్క్రిప్ట్ లేదా పైథాన్ వంటి ప్రోగ్రామింగ్ భాషలతో సుపరిచితులని భావిస్తుంది. + +## డేటా {#data} + +ఏదైనా కాంట్రాక్ట్ డేటాను ఒక ప్రదేశానికి కేటాయించాలి: `storage` లేదా `memory`. స్మార్ట్ కాంట్రాక్ట్‌లో స్టోరేజీని సవరించడం ఖర్చుతో కూడుకున్నది, కనుక మీ డేటా ఎక్కడ ఉండాలో మీరు పరిగణించాలి. + +### నిల్వ {#storage} + +శాశ్వత డేటాను స్టోరేజ్ అని పిలుస్తారు మరియు ఇది స్టేట్ వేరియబుల్స్ ద్వారా సూచించబడుతుంది. ఈ విలువలు బ్లాక్ చైనులో శాశ్వతంగా నిల్వ చేయబడతాయి. మీరు రకాన్ని ప్రకటించాలి, తద్వారా కాంట్రాక్ట్ కంపైల్ అయినప్పుడు బ్లాక్‌చైన్‌లో ఎంత స్టోరేజ్ అవసరమో ట్రాక్ చేయగలదు. + +```solidity +// సొలిడిటీ ఉదాహరణ +contract SimpleStorage { + uint storedData; // స్టేట్ వేరియబుల్ + // ... +} +``` + +```python +# వైపర్ ఉదాహరణ +storedData: int128 +``` + +మీరు ఇప్పటికే ఆబ్జెక్ట్-ఓరియెంటెడ్ భాషలను ప్రోగ్రామ్ చేసి ఉంటే, మీరు చాలా రకాలతో సుపరిచితులుగా ఉండే అవకాశం ఉంది. అయితే, మీరు Ethereum డెవలప్‌మెంట్‌కు కొత్త అయితే `address` మీకు కొత్తగా ఉండాలి. + +ఒక `address` రకం 20 బైట్లు లేదా 160 బిట్‌లకు సమానమైన Ethereum చిరునామాను కలిగి ఉంటుంది. ఇది ప్రముఖ 0xతో హెక్సాడెసిమల్ సంజ్ఞామానంలో తిరిగి వస్తుంది. + +ఇతర రకాలు: + +- బూలియన్ +- పూర్ణాంకం +- ఫిక్స్డ్ పాయింట్ సంఖ్యలు +- ఫిక్స్డ్-సైజ్ బైట్ అర్రేలు +- డైనమిక్‌గా పరిమాణంలో ఉండే బైట్ శ్రేణులు +- రేషనల్ మరియు పూర్ణాంక లిటరల్స్ +- స్ట్రింగ్ లిటరల్స్ +- హెక్సాడెసిమల్ లిటరల్స్ +- ఎన్యుమ్స్ + +మరింత వివరణ కోసం, డాక్స్ చూడండి: + +- [వైపర్ రకాలను చూడండి](https://docs.vyperlang.org/en/v0.1.0-beta.6/types.html#value-types) +- [సొలిడిటీ రకాలను చూడండి](https://docs.soliditylang.org/en/latest/types.html#value-types) + +### మెమరీ {#memory} + +కాంట్రాక్ట్ ఫంక్షన్ ఎగ్జిక్యూషన్ యొక్క జీవితకాలం కోసం మాత్రమే నిల్వ చేయబడిన విలువలను మెమరీ వేరియబుల్స్ అంటారు. ఇవి బ్లాక్‌చైన్‌లో శాశ్వతంగా నిల్వ చేయబడవు కాబట్టి, వాటిని ఉపయోగించడం చాలా చౌక. + +[సొలిడిటీ డాక్స్‌](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#storage-memory-and-the-stack)లో EVM డేటాను (స్టోరేజ్, మెమరీ మరియు స్టాక్) ఎలా నిల్వ చేస్తుందో మరింత తెలుసుకోండి. + +### ఎన్విరాన్‌మెంట్ వేరియబుల్స్ {#environment-variables} + +మీ కాంట్రాక్ట్‌లో మీరు నిర్వచించిన వేరియబుల్స్‌తో పాటు, కొన్ని ప్రత్యేక గ్లోబల్ వేరియబుల్స్ ఉన్నాయి. అవి ప్రధానంగా బ్లాక్‌చైన్ లేదా ప్రస్తుత లావాదేవీ గురించి సమాచారాన్ని అందించడానికి ఉపయోగించబడతాయి. + +ఉదాహరణలు: + +| **ప్రాప్** | **స్టేట్ వేరియబుల్** | **వివరణ** | +| ----------------- | -------------------- | --------------------------------------------------- | +| `block.timestamp` | uint256 | ప్రస్తుత బ్లాక్ ఎపోక్ టైమ్‌స్టాంప్ | +| `msg.sender` | చిరునామా | సందేశం పంపినవారు (ప్రస్తుత కాల్) | + +## ఫంక్షన్స్ {#functions} + +చాలా సరళమైన పరంగా చెప్పాలంటే, ఇన్‌కమింగ్ లావాదేవీలకు ప్రతిస్పందనగా ఫంక్షన్‌లు సమాచారాన్ని పొందగలవు లేదా సమాచారాన్ని సెట్ చేయగలవు. + +ఫంక్షన్ కాల్స్‌లో రెండు రకాలు ఉన్నాయి: + +- `internal` – ఇవి EVM కాల్‌ను సృష్టించవు + - అంతర్గత ఫంక్షన్‌లు మరియు స్టేట్ వేరియబుల్స్ అంతర్గతంగా మాత్రమే యాక్సెస్ చేయబడతాయి (అంటే, ప్రస్తుత కాంట్రాక్ట్ లేదా దాని నుండి పొందిన కాంట్రాక్ట్‌ల నుండి) +- `external` – ఇవి EVM కాల్‌ను సృష్టిస్తాయి + - బాహ్య ఫంక్షన్‌లు కాంట్రాక్ట్ ఇంటర్‌ఫేస్‌లో భాగంగా ఉంటాయి, అంటే వాటిని ఇతర కాంట్రాక్ట్‌ల నుండి మరియు లావాదేవీల ద్వారా కాల్ చేయవచ్చు. ఒక బాహ్య ఫంక్షన్ `f`ని అంతర్గతంగా కాల్ చేయలేము (అంటే, `f()` పని చేయదు, కానీ `this.f()` పని చేస్తుంది). + +అవి `public` లేదా `private` కూడా కావచ్చు + +- `public` ఫంక్షన్‌లను కాంట్రాక్ట్ లోపల అంతర్గతంగా లేదా సందేశాల ద్వారా బాహ్యంగా కాల్ చేయవచ్చు +- `private` ఫంక్షన్‌లు అవి నిర్వచించబడిన కాంట్రాక్ట్‌కు మాత్రమే కనిపిస్తాయి మరియు ఉత్పన్నమైన కాంట్రాక్ట్‌లలో కనిపించవు + +ఫంక్షన్‌లు మరియు స్టేట్ వేరియబుల్స్ రెండింటినీ పబ్లిక్ లేదా ప్రైవేట్‌గా చేయవచ్చు + +ఒక కాంట్రాక్ట్‌లోని స్టేట్ వేరియబుల్‌ను అప్‌డేట్ చేయడానికి ఇక్కడ ఒక ఫంక్షన్ ఉంది: + +```solidity +// సొలిడిటీ ఉదాహరణ +function update_name(string value) public { + dapp_name = value; +} +``` + +- `string` రకం యొక్క `value` పరామితి ఫంక్షన్‌లోకి పంపబడుతుంది: `update_name` +- ఇది `public`గా ప్రకటించబడింది, అంటే ఎవరైనా దీన్ని యాక్సెస్ చేయవచ్చు +- ఇది `view`గా ప్రకటించబడలేదు, కాబట్టి ఇది కాంట్రాక్ట్ స్టేట్‌ను సవరించగలదు + +### వ్యూ ఫంక్షన్‌లు {#view-functions} + +ఈ ఫంక్షన్‌లు కాంట్రాక్ట్ డేటా యొక్క స్థితిని సవరించబోమని వాగ్దానం చేస్తాయి. సాధారణ ఉదాహరణలు "గెట్టర్" ఫంక్షన్‌లు – ఉదాహరణకు, వినియోగదారుడి బ్యాలెన్స్‌ను స్వీకరించడానికి మీరు దీన్ని ఉపయోగించవచ్చు. + +```solidity +// సొలిడిటీ ఉదాహరణ +function balanceOf(address _owner) public view returns (uint256 _balance) { + return ownerPizzaCount[_owner]; +} +``` + +```python +dappName: public(string) + +@view +@public +def readName() -> string: + return dappName +``` + +స్థితిని సవరించడంగా ఏమి పరిగణించబడుతుంది: + +1. స్టేట్ వేరియబుల్స్‌కి రాయడం. +2. [ఈవెంట్‌లను విడుదల చేయడం](https://docs.soliditylang.org/en/v0.7.0/contracts.html#events). +3. [ఇతర కాంట్రాక్ట్‌లను సృష్టించడం](https://docs.soliditylang.org/en/v0.7.0/control-structures.html#creating-contracts). +4. `selfdestruct` ఉపయోగించడం. +5. కాల్స్ ద్వారా ఈథర్‌ను పంపడం. +6. `view` లేదా `pure` అని మార్క్ చేయని ఏ ఫంక్షన్‌ను అయినా కాల్ చేయడం. +7. తక్కువ-స్థాయి కాల్స్‌ను ఉపయోగించడం. +8. కొన్ని ఆప్‌కోడ్‌లను కలిగి ఉన్న ఇన్‌లైన్ అసెంబ్లీని ఉపయోగించడం. + +### కన్స్ట్రక్టర్ ఫంక్షన్‌లు {#constructor-functions} + +`constructor` ఫంక్షన్‌లు కాంట్రాక్ట్‌ను మొదటిసారి డిప్లాయ్ చేసినప్పుడు ఒకసారి మాత్రమే అమలు చేయబడతాయి. అనేక క్లాస్-ఆధారిత ప్రోగ్రామింగ్ భాషలలో `constructor` లాగా, ఈ ఫంక్షన్‌లు తరచుగా స్టేట్ వేరియబుల్స్‌ను వాటి పేర్కొన్న విలువలకు ప్రారంభిస్తాయి. + +```solidity +// సొలిడిటీ ఉదాహరణ +// కాంట్రాక్ట్ యొక్క డేటాను ప్రారంభిస్తుంది, `owner`ను సెట్ చేస్తుంది +// కాంట్రాక్ట్ సృష్టికర్త యొక్క చిరునామాకు. +constructor() public { + // అన్ని స్మార్ట్ కాంట్రాక్ట్‌లు దాని ఫంక్షన్‌లను ప్రేరేపించడానికి బాహ్య లావాదేవీలపై ఆధారపడతాయి. + // `msg` అనేది ఇచ్చిన లావాదేవీపై సంబంధిత డేటాను కలిగి ఉన్న గ్లోబల్ వేరియబుల్, + // పంపినవారి చిరునామా మరియు లావాదేవీలో చేర్చబడిన ETH విలువ వంటివి. + // మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/units-and-global-variables.html#block-and-transaction-properties + owner = msg.sender; +} +``` + +```python +# వైపర్ ఉదాహరణ + +@external +def __init__(_beneficiary: address, _bidding_time: uint256): + self.beneficiary = _beneficiary + self.auctionStart = block.timestamp + self.auctionEnd = self.auctionStart + _bidding_time +``` + +### అంతర్నిర్మిత ఫంక్షన్‌లు {#built-in-functions} + +మీ కాంట్రాక్ట్‌లో మీరు నిర్వచించిన వేరియబుల్స్ మరియు ఫంక్షన్‌లతో పాటు, కొన్ని ప్రత్యేక అంతర్నిర్మిత ఫంక్షన్‌లు ఉన్నాయి. అత్యంత స్పష్టమైన ఉదాహరణ: + +- `address.send()` – సొలిడిటీ +- `send(address)` – వైపర్ + +ఇవి కాంట్రాక్ట్‌లను ఇతర ఖాతాలకు ETH పంపడానికి అనుమతిస్తాయి. + +## ఫంక్షన్‌లను రాయడం {#writing-functions} + +మీ ఫంక్షన్‌కు అవసరం: + +- పరామితి వేరియబుల్ మరియు రకం (ఇది పరామితులను అంగీకరిస్తే) +- అంతర్గత/బాహ్య యొక్క ప్రకటన +- `pure`/`view`/`payable` యొక్క ప్రకటన +- రిటర్న్స్ రకం (ఇది ఒక విలువను తిరిగి ఇస్తే) + +```solidity +pragma solidity >=0.4.0 <=0.6.0; + +contract ExampleDapp { + string dapp_name; // స్టేట్ వేరియబుల్ + + // కాంట్రాక్ట్ డిప్లాయ్ చేయబడినప్పుడు కాల్ చేయబడుతుంది మరియు విలువను ప్రారంభిస్తుంది + constructor() public { + dapp_name = "My Example dapp"; + } + + // గెట్ ఫంక్షన్ + function read_name() public view returns(string) { + return dapp_name; + } + + // సెట్ ఫంక్షన్ + function update_name(string value) public { + dapp_name = value; + } +} +``` + +ఒక పూర్తి కాంట్రాక్ట్ ఇలా ఉండవచ్చు. ఇక్కడ `constructor` ఫంక్షన్ `dapp_name` వేరియబుల్ కోసం ప్రారంభ విలువను అందిస్తుంది. + +## ఈవెంట్‌లు మరియు లాగ్‌లు {#events-and-logs} + +ఈవెంట్‌లు మీ స్మార్ట్ కాంట్రాక్ట్ మీ ఫ్రంటెండ్ లేదా ఇతర సబ్‌స్క్రైబ్ చేసే అప్లికేషన్‌లతో కమ్యూనికేట్ చేయడానికి వీలు కల్పిస్తాయి. ఒక లావాదేవీ ధృవీకరించబడి, బ్లాక్‌కి జోడించబడిన తర్వాత, స్మార్ట్ కాంట్రాక్ట్‌లు ఈవెంట్‌లను విడుదల చేయగలవు మరియు సమాచారాన్ని లాగ్ చేయగలవు, దానిని ఫ్రంటెండ్ ప్రాసెస్ చేసి, ఉపయోగించుకోగలదు. + +## వివరణాత్మక ఉదాహరణలు {#annotated-examples} + +ఇవి Solidity లో వ్రాసిన కొన్ని ఉదాహరణలు. మీరు కోడ్‌తో ఆడాలనుకుంటే, మీరు [Remix](http://remix.ethereum.org)లో వాటితో ఇంటరాక్ట్ అవ్వవచ్చు. + +### హలో వరల్డ్ {#hello-world} + +```solidity +// సిమాంటిక్ వెర్షనింగ్ ఉపయోగించి Solidity యొక్క వెర్షన్‌ను నిర్దేశిస్తుంది. +// మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma +pragma solidity ^0.5.10; + +// `HelloWorld` అనే కాంట్రాక్ట్‌ను నిర్వచిస్తుంది. +// కాంట్రాక్ట్ అనేది ఫంక్షన్‌లు మరియు డేటా (దాని స్టేట్) యొక్క సమాహారం. +// డిప్లాయ్ చేసిన తర్వాత, కాంట్రాక్ట్ Ethereum బ్లాక్‌చైన్‌లోని ఒక నిర్దిష్ట చిరునామాలో ఉంటుంది. +// మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html +contract HelloWorld { + + // `string` రకం యొక్క `message` అనే స్టేట్ వేరియబుల్‌ను ప్రకటిస్తుంది. + // స్టేట్ వేరియబుల్స్ అనేవి కాంట్రాక్ట్ స్టోరేజ్‌లో శాశ్వతంగా నిల్వ చేయబడిన విలువలు కలిగిన వేరియబుల్స్. + // `public` అనే కీవర్డ్ వేరియబుల్స్‌ను కాంట్రాక్ట్ బయటి నుండి యాక్సెస్ చేయడానికి వీలు కల్పిస్తుంది + // మరియు ఇతర కాంట్రాక్ట్‌లు లేదా క్లయింట్లు విలువను యాక్సెస్ చేయడానికి కాల్ చేయగల ఫంక్షన్‌ను సృష్టిస్తుంది. + string public message; + + // అనేక క్లాస్-ఆధారిత ఆబ్జెక్ట్-ఓరియెంటెడ్ భాషల మాదిరిగానే, కన్స్ట్రక్టర్ అనేది + // కాంట్రాక్ట్ సృష్టిపై మాత్రమే అమలు చేయబడే ఒక ప్రత్యేక ఫంక్షన్. + // కాంట్రాక్ట్ యొక్క డేటాను ప్రారంభించడానికి కన్స్ట్రక్టర్లు ఉపయోగించబడతాయి. + // మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors + constructor(string memory initMessage) public { + // `initMessage` అనే స్ట్రింగ్ ఆర్గ్యుమెంట్‌ను అంగీకరిస్తుంది మరియు విలువను సెట్ చేస్తుంది + // కాంట్రాక్ట్ యొక్క `message` స్టోరేజ్ వేరియబుల్‌లోకి). + message = initMessage; + } + + // ఒక స్ట్రింగ్ ఆర్గ్యుమెంట్‌ను అంగీకరించే పబ్లిక్ ఫంక్షన్ + // మరియు `message` స్టోరేజ్ వేరియబుల్‌ను అప్‌డేట్ చేస్తుంది. + function update(string memory newMessage) public { + message = newMessage; + } +} +``` + +### టోకెన్ {#token} + +```solidity +pragma solidity ^0.5.10; + +contract Token { + // ఒక `చిరునామా` ఇమెయిల్ చిరునామాతో పోల్చదగినది - ఇది Ethereum లో ఒక ఖాతాను గుర్తించడానికి ఉపయోగించబడుతుంది. + // చిరునామాలు ఒక స్మార్ట్ కాంట్రాక్ట్ లేదా బాహ్య (వినియోగదారు) ఖాతాలను సూచిస్తాయి. + // మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/types.html#address + address public owner; + + // ఒక `మ్యాపింగ్` ముఖ్యంగా ఒక హాష్ టేబుల్ డేటా నిర్మాణం. + // ఈ `మ్యాపింగ్` ఒక సైన్ చేయని పూర్ణాంకాన్ని (టోకెన్ బ్యాలెన్స్) ఒక చిరునామాకు (టోకెన్ హోల్డర్) కేటాయిస్తుంది. + // మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/types.html#mapping-types + mapping (address => uint) public balances; + + // ఈవెంట్‌లు బ్లాక్‌చైన్‌లో కార్యాచరణను లాగింగ్ చేయడానికి అనుమతిస్తాయి. + // కాంట్రాక్ట్ స్టేట్ మార్పులకు ప్రతిస్పందించడానికి Ethereum క్లయింట్లు ఈవెంట్‌లను వినగలవు. + // మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#events + event Transfer(address from, address to, uint amount); + + // కాంట్రాక్ట్ డేటాను ప్రారంభిస్తుంది, `ఓనర్` ను + // కాంట్రాక్ట్ సృష్టికర్త యొక్క చిరునామాకు సెట్ చేస్తుంది. + constructor() public { + // అన్ని స్మార్ట్ కాంట్రాక్ట్‌లు దాని ఫంక్షన్‌లను ప్రేరేపించడానికి బాహ్య లావాదేవీలపై ఆధారపడతాయి. + // `msg` అనేది ఇచ్చిన లావాదేవీపై సంబంధిత డేటాను కలిగి ఉన్న గ్లోబల్ వేరియబుల్, + // పంపినవారి చిరునామా మరియు లావాదేవీలో చేర్చబడిన ETH విలువ వంటివి. + // మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/units-and-global-variables.html#block-and-transaction-properties + owner = msg.sender; + } + + // కొత్త టోకెన్ల మొత్తాన్ని సృష్టించి, వాటిని ఒక చిరునామాకు పంపుతుంది. + function mint(address receiver, uint amount) public { + // `require` అనేది కొన్ని షరతులను అమలు చేయడానికి ఉపయోగించే ఒక నియంత్రణ నిర్మాణం. + // ఒక `require` స్టేట్‌మెంట్ `false`గా మూల్యాంకనం చేస్తే, ఒక మినహాయింపు ప్రేరేపించబడుతుంది, + // ఇది ప్రస్తుత కాల్ సమయంలో స్టేట్‌లో చేసిన అన్ని మార్పులను తిరిగి మారుస్తుంది. + // మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/control-structures.html#error-handling-assert-require-revert-and-exceptions + + // కాంట్రాక్ట్ యజమాని మాత్రమే ఈ ఫంక్షన్‌ను కాల్ చేయగలరు + require(msg.sender == owner, "మీరు యజమాని కాదు."); + + // టోకెన్ల గరిష్ట మొత్తాన్ని అమలు చేస్తుంది + require(amount < 1e60, "గరిష్ట జారీ మించిపోయింది"); + + // `రిసీవర్` బ్యాలెన్స్‌ను `మొత్తం` ద్వారా పెంచుతుంది + balances[receiver] += amount; + } + + // ఏ కాలర్ నుండి అయినా ఇప్పటికే ఉన్న టోకెన్ల మొత్తాన్ని ఒక చిరునామాకు పంపుతుంది. + function transfer(address receiver, uint amount) public { + // పంపినవారికి పంపడానికి తగినన్ని టోకెన్లు ఉండాలి + require(amount <= balances[msg.sender], "తగినంత బ్యాలెన్స్ లేదు."); + + // రెండు చిరునామాల టోకెన్ బ్యాలెన్స్‌లను సర్దుబాటు చేస్తుంది + balances[msg.sender] -= amount; + balances[receiver] += amount; + + // ముందుగా నిర్వచించిన ఈవెంట్‌ను విడుదల చేస్తుంది + emit Transfer(msg.sender, receiver, amount); + } +} +``` + +### ప్రత్యేక డిజిటల్ ఆస్తి {#unique-digital-asset} + +```solidity +pragma solidity ^0.5.10; + +// ప్రస్తుత కాంట్రాక్ట్‌లోకి ఇతర ఫైళ్ల నుండి చిహ్నాలను దిగుమతి చేస్తుంది. +// ఈ సందర్భంలో, OpenZeppelin నుండి సహాయక కాంట్రాక్టుల శ్రేణి. +// మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#importing-other-source-files + +import "../node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol"; +import "../node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; +import "../node_modules/@openzeppelin/contracts/introspection/ERC165.sol"; +import "../node_modules/@openzeppelin/contracts/math/SafeMath.sol"; + +// బాహ్య కాంట్రాక్టుల నుండి ఫంక్షన్‌లు మరియు కీవర్డ్‌లను వారసత్వంగా పొందడానికి `is` కీవర్డ్ ఉపయోగించబడుతుంది. +// ఈ సందర్భంలో, `CryptoPizza` `IERC721` మరియు `ERC165` కాంట్రాక్టుల నుండి వారసత్వంగా పొందుతుంది. +// మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#inheritance +contract CryptoPizza is IERC721, ERC165 { + // అంకగణిత కార్యకలాపాలను సురక్షితంగా నిర్వహించడానికి OpenZeppelin యొక్క SafeMath లైబ్రరీని ఉపయోగిస్తుంది. + // మరింత తెలుసుకోండి: https://docs.openzeppelin.com/contracts/2.x/api/math#SafeMath + using SafeMath for uint256; + + // Solidity లోని స్థిరమైన స్టేట్ వేరియబుల్స్ ఇతర భాషల మాదిరిగానే ఉంటాయి + // కానీ మీరు కంపైల్ సమయంలో స్థిరంగా ఉండే ఒక ఎక్స్‌ప్రెషన్ నుండి కేటాయించాలి. + // మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constant-state-variables + uint256 constant dnaDigits = 10; + uint256 constant dnaModulus = 10 ** dnaDigits; + bytes4 private constant _ERC721_RECEIVED = 0x150b7a02; + + // స్ట్రక్ట్ రకాలు మీ స్వంత రకాన్ని నిర్వచించడానికి మిమ్మల్ని అనుమతిస్తాయి + // మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/types.html#structs + struct Pizza { + string name; + uint256 dna; + } + + // Pizza స్ట్రక్ట్‌ల యొక్క ఖాళీ శ్రేణిని సృష్టిస్తుంది + Pizza[] public pizzas; + + // పిజ్జా ID నుండి దాని యజమాని చిరునామాకు మ్యాపింగ్ + mapping(uint256 => address) public pizzaToOwner; + + // యజమాని చిరునామా నుండి యాజమాన్యంలోని టోకెన్ సంఖ్యకు మ్యాపింగ్ + mapping(address => uint256) public ownerPizzaCount; + + // టోకెన్ ID నుండి ఆమోదించబడిన చిరునామాకు మ్యాపింగ్ + mapping(uint256 => address) pizzaApprovals; + + // మీరు మ్యాపింగ్‌లను నెస్ట్ చేయవచ్చు, ఈ ఉదాహరణ ఆపరేటర్ ఆమోదాలకు యజమానిని మ్యాప్ చేస్తుంది + mapping(address => mapping(address => bool)) private operatorApprovals; + + // స్ట్రింగ్ (పేరు) మరియు DNA నుండి యాదృచ్ఛిక పిజ్జాను సృష్టించడానికి అంతర్గత ఫంక్షన్ + function _createPizza(string memory _name, uint256 _dna) + // `internal` కీవర్డ్ అంటే ఈ ఫంక్షన్ కేవలం + // ఈ కాంట్రాక్ట్ మరియు ఈ కాంట్రాక్ట్‌ను పొందే కాంట్రాక్ట్‌లలో మాత్రమే కనిపిస్తుంది + // మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#visibility-and-getters + internal + // `isUnique` అనేది ఒక ఫంక్షన్ మాడిఫైయర్, ఇది పిజ్జా ఇప్పటికే ఉందో లేదో తనిఖీ చేస్తుంది + // మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html#function-modifiers + isUnique(_name, _dna) + { + // పిజ్జాల శ్రేణికి పిజ్జాను జోడించి, id పొందుతుంది + uint256 id = SafeMath.sub(pizzas.push(Pizza(_name, _dna)), 1); + + // పిజ్జా యజమాని ప్రస్తుత వినియోగదారుతో సమానంగా ఉన్నారని తనిఖీ చేస్తుంది + // మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/control-structures.html#error-handling-assert-require-revert-and-exceptions + + // గమనించండి, చిరునామా(0) అనేది సున్నా చిరునామా, + // ఇది pizza[id] ఇంకా ఒక నిర్దిష్ట వినియోగదారుకు కేటాయించబడలేదని సూచిస్తుంది. + + assert(pizzaToOwner[id] == address(0)); + + // పిజ్జాను యజమానికి మ్యాప్ చేస్తుంది + pizzaToOwner[id] = msg.sender; + ownerPizzaCount[msg.sender] = SafeMath.add( + ownerPizzaCount[msg.sender], + 1 + ); + } + + // స్ట్రింగ్ (పేరు) నుండి యాదృచ్ఛిక పిజ్జాను సృష్టిస్తుంది + function createRandomPizza(string memory _name) public { + uint256 randDna = generateRandomDna(_name, msg.sender); + _createPizza(_name, randDna); + } + + // స్ట్రింగ్ (పేరు) మరియు యజమాని (సృష్టికర్త) చిరునామా నుండి యాదృచ్ఛిక DNAను ఉత్పత్తి చేస్తుంది + function generateRandomDna(string memory _str, address _owner) + public + // `pure`గా గుర్తించబడిన ఫంక్షన్‌లు స్టేట్ నుండి చదవడం లేదా సవరించడం చేయమని వాగ్దానం చేస్తాయి + // మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#pure-functions + pure + returns (uint256) + { + // స్ట్రింగ్ (పేరు) + చిరునామా (యజమాని) నుండి యాదృచ్ఛిక uintను ఉత్పత్తి చేస్తుంది + uint256 rand = uint256(keccak256(abi.encodePacked(_str))) + + uint256(_owner); + rand = rand % dnaModulus; + return rand; + } + + // యజమాని ద్వారా కనుగొనబడిన పిజ్జాల శ్రేణిని తిరిగి ఇస్తుంది + function getPizzasByOwner(address _owner) + public + // `view`గా గుర్తించబడిన ఫంక్షన్‌లు స్టేట్‌ను సవరించమని వాగ్దానం చేస్తాయి + // మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#view-functions + view + returns (uint256[] memory) + { + // ఈ ఫంక్షన్ కాల్ యొక్క జీవితకాలం కోసం మాత్రమే విలువలను నిల్వ చేయడానికి + // `memory` స్టోరేజ్ స్థానాన్ని ఉపయోగిస్తుంది. + // మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/introduction-to-smart-contracts.html#storage-memory-and-the-stack + uint256[] memory result = new uint256[](ownerPizzaCount[_owner]); + uint256 counter = 0; + for (uint256 i = 0; i < pizzas.length; i++) { + if (pizzaToOwner[i] == _owner) { + result[counter] = i; + counter++; + } + } + return result; + } + + // పిజ్జా మరియు యాజమాన్యాన్ని ఇతర చిరునామాకు బదిలీ చేస్తుంది + function transferFrom(address _from, address _to, uint256 _pizzaId) public { + require(_from != address(0) && _to != address(0), "చెల్లని చిరునామా."); + require(_exists(_pizzaId), "పిజ్జా ఉనికిలో లేదు."); + require(_from != _to, "అదే చిరునామాకు బదిలీ చేయలేము."); + require(_isApprovedOrOwner(msg.sender, _pizzaId), "చిరునామా ఆమోదించబడలేదు."); + + ownerPizzaCount[_to] = SafeMath.add(ownerPizzaCount[_to], 1); + ownerPizzaCount[_from] = SafeMath.sub(ownerPizzaCount[_from], 1); + pizzaToOwner[_pizzaId] = _to; + + // దిగుమతి చేసుకున్న IERC721 కాంట్రాక్ట్‌లో నిర్వచించిన ఈవెంట్‌ను విడుదల చేస్తుంది + emit Transfer(_from, _to, _pizzaId); + _clearApproval(_to, _pizzaId); + } + + /** + * ఒక టోకెన్ ID యొక్క యాజమాన్యాన్ని సురక్షితంగా మరొక చిరునామాకు బదిలీ చేస్తుంది + * లక్ష్య చిరునామా ఒక కాంట్రాక్ట్ అయితే, అది `onERC721Received`ను అమలు చేయాలి, + * ఇది సురక్షిత బదిలీపై పిలవబడుతుంది మరియు మేజిక్ విలువను తిరిగి ఇవ్వాలి + * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`; + * లేకపోతే, బదిలీ తిరిగి తీసుకోబడుతుంది. + */ + function safeTransferFrom(address from, address to, uint256 pizzaId) + public + { + // solium-disable-next-line arg-overflow + this.safeTransferFrom(from, to, pizzaId, ""); + } + + /** + * ఒక టోకెన్ ID యొక్క యాజమాన్యాన్ని సురక్షితంగా మరొక చిరునామాకు బదిలీ చేస్తుంది + * లక్ష్య చిరునామా ఒక కాంట్రాక్ట్ అయితే, అది `onERC721Received`ను అమలు చేయాలి, + * ఇది సురక్షిత బదిలీపై పిలవబడుతుంది మరియు మేజిక్ విలువను తిరిగి ఇవ్వాలి + * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`; + * లేకపోతే, బదిలీ తిరిగి తీసుకోబడుతుంది. + */ + function safeTransferFrom( + address from, + address to, + uint256 pizzaId, + bytes memory _data + ) public { + this.transferFrom(from, to, pizzaId); + require(_checkOnERC721Received(from, to, pizzaId, _data), "onERC721Receivedను తప్పనిసరిగా అమలు చేయాలి."); + } + + /** + * లక్ష్య చిరునామాపై `onERC721Received`ను ప్రారంభించడానికి అంతర్గత ఫంక్షన్ + * లక్ష్య చిరునామా ఒక కాంట్రాక్ట్ కాకపోతే కాల్ అమలు చేయబడదు + */ + function _checkOnERC721Received( + address from, + address to, + uint256 pizzaId, + bytes memory _data + ) internal returns (bool) { + if (!isContract(to)) { + return true; + } + + bytes4 retval = IERC721Receiver(to).onERC721Received( + msg.sender, + from, + pizzaId, + _data + ); + return (retval == _ERC721_RECEIVED); + } + + // ఒక పిజ్జాను కాల్చివేస్తుంది - టోకెన్‌ను పూర్తిగా నాశనం చేస్తుంది + // `external` ఫంక్షన్ మాడిఫైయర్ అంటే ఈ ఫంక్షన్ + // కాంట్రాక్ట్ ఇంటర్‌ఫేస్‌లో భాగం మరియు ఇతర కాంట్రాక్ట్‌లు దీనిని కాల్ చేయవచ్చు + function burn(uint256 _pizzaId) external { + require(msg.sender != address(0), "చెల్లని చిరునామా."); + require(_exists(_pizzaId), "పిజ్జా ఉనికిలో లేదు."); + require(_isApprovedOrOwner(msg.sender, _pizzaId), "చిరునామా ఆమోదించబడలేదు."); + + ownerPizzaCount[msg.sender] = SafeMath.sub( + ownerPizzaCount[msg.sender], + 1 + ); + pizzaToOwner[_pizzaId] = address(0); + } + + // చిరునామా ద్వారా పిజ్జాల సంఖ్యను తిరిగి ఇస్తుంది + function balanceOf(address _owner) public view returns (uint256 _balance) { + return ownerPizzaCount[_owner]; + } + + // id ద్వారా కనుగొనబడిన పిజ్జా యజమానిని తిరిగి ఇస్తుంది + function ownerOf(uint256 _pizzaId) public view returns (address _owner) { + address owner = pizzaToOwner[_pizzaId]; + require(owner != address(0), "చెల్లని పిజ్జా ID."); + return owner; + } + + // పిజ్జా యాజమాన్యాన్ని బదిలీ చేయడానికి ఇతర చిరునామాను ఆమోదిస్తుంది + function approve(address _to, uint256 _pizzaId) public { + require(msg.sender == pizzaToOwner[_pizzaId], "పిజ్జా యజమాని అయి ఉండాలి."); + pizzaApprovals[_pizzaId] = _to; + emit Approval(msg.sender, _to, _pizzaId); + } + + // నిర్దిష్ట పిజ్జా కోసం ఆమోదించబడిన చిరునామాను తిరిగి ఇస్తుంది + function getApproved(uint256 _pizzaId) + public + view + returns (address operator) + { + require(_exists(_pizzaId), "పిజ్జా ఉనికిలో లేదు."); + return pizzaApprovals[_pizzaId]; + } + + /** + * ఇచ్చిన టోకెన్ ID యొక్క ప్రస్తుత ఆమోదాన్ని క్లియర్ చేయడానికి ప్రైవేట్ ఫంక్షన్ + * ఇచ్చిన చిరునామా నిజంగా టోకెన్ యజమాని కాకపోతే రివర్ట్ అవుతుంది + */ + function _clearApproval(address owner, uint256 _pizzaId) private { + require(pizzaToOwner[_pizzaId] == owner, "పిజ్జా యజమాని అయి ఉండాలి."); + require(_exists(_pizzaId), "పిజ్జా ఉనికిలో లేదు."); + if (pizzaApprovals[_pizzaId] != address(0)) { + pizzaApprovals[_pizzaId] = address(0); + } + } + + /* + * ఇచ్చిన ఆపరేటర్ యొక్క ఆమోదాన్ని సెట్ చేస్తుంది లేదా అన్సెట్ చేస్తుంది + * ఒక ఆపరేటర్ వారి తరపున పంపినవారి అన్ని టోకెన్లను బదిలీ చేయడానికి అనుమతించబడ్డాడు + */ + function setApprovalForAll(address to, bool approved) public { + require(to != msg.sender, "సొంత చిరునామాను ఆమోదించలేరు"); + operatorApprovals[msg.sender][to] = approved; + emit ApprovalForAll(msg.sender, to, approved); + } + + // ఒక ఆపరేటర్ ఇచ్చిన యజమానిచే ఆమోదించబడిందో లేదో చెబుతుంది + function isApprovedForAll(address owner, address operator) + public + view + returns (bool) + { + return operatorApprovals[owner][operator]; + } + + // పిజ్జా యాజమాన్యాన్ని తీసుకుంటుంది - ఆమోదించబడిన వినియోగదారులకు మాత్రమే + function takeOwnership(uint256 _pizzaId) public { + require(_isApprovedOrOwner(msg.sender, _pizzaId), "చిరునామా ఆమోదించబడలేదు."); + address owner = this.ownerOf(_pizzaId); + this.transferFrom(owner, msg.sender, _pizzaId); + } + + // పిజ్జా ఉందో లేదో తనిఖీ చేస్తుంది + function _exists(uint256 pizzaId) internal view returns (bool) { + address owner = pizzaToOwner[pizzaId]; + return owner != address(0); + } + + // చిరునామా యజమాని లేదా పిజ్జాను బదిలీ చేయడానికి ఆమోదించబడిందో లేదో తనిఖీ చేస్తుంది + function _isApprovedOrOwner(address spender, uint256 pizzaId) + internal + view + returns (bool) + { + address owner = pizzaToOwner[pizzaId]; + // Disable solium check because of + // https://github.com/duaraghav8/Solium/issues/175 + // solium-disable-next-line operator-whitespace + return (spender == owner || + this.getApproved(pizzaId) == spender || + this.isApprovedForAll(owner, spender)); + } + + // పిజ్జా ప్రత్యేకమైనది మరియు ఇంకా ఉనికిలో లేదో తనిఖీ చేయండి + modifier isUnique(string memory _name, uint256 _dna) { + bool result = true; + for (uint256 i = 0; i < pizzas.length; i++) { + if ( + keccak256(abi.encodePacked(pizzas[i].name)) == + keccak256(abi.encodePacked(_name)) && + pizzas[i].dna == _dna + ) { + result = false; + } + } + require(result, "అటువంటి పేరుతో పిజ్జా ఇప్పటికే ఉంది."); + _; + } + + // లక్ష్య చిరునామా ఒక కాంట్రాక్ట్ కాదో తిరిగి ఇస్తుంది + function isContract(address account) internal view returns (bool) { + uint256 size; + // ప్రస్తుతం ఒక చిరునామాలో కాంట్రాక్ట్ ఉందో లేదో తనిఖీ చేయడానికి ఇంతకంటే మంచి మార్గం లేదు + // ఆ చిరునామాలోని కోడ్ పరిమాణాన్ని తనిఖీ చేయడం కంటే. + // ఇది ఎలా పనిచేస్తుందనే దాని గురించి మరిన్ని వివరాల కోసం https://ethereum.stackexchange.com/a/14016/36603 చూడండి. + // TODO సెరినిటీ విడుదలయ్యే ముందు దీన్ని మళ్లీ తనిఖీ చేయండి, ఎందుకంటే అప్పుడు అన్ని చిరునామాలు + // కాంట్రాక్టులు అవుతాయి. + // solium-disable-next-line security/no-inline-assembly + assembly { + size := extcodesize(account) + } + return size > 0; + } +} +``` + +## మరింత సమాచారం {#further-reading} + +స్మార్ట్ కాంట్రాక్టుల యొక్క మరింత పూర్తి అవలోకనం కోసం సొలిడిటీ మరియు వైపర్ యొక్క డాక్యుమెంటేషన్‌ను చూడండి: + +- [Solidity](https://docs.soliditylang.org/) +- [Vyper](https://docs.vyperlang.org/en/stable/) + +## సంబంధిత అంశాలు {#related-topics} + +- [స్మార్ట్ కాంట్రాక్టులు](/developers/docs/smart-contracts/) +- [Ethereum వర్చువల్ మెషీన్](/developers/docs/evm/) + +## సంబంధిత ట్యుటోరియల్స్ {#related-tutorials} + +- [కాంట్రాక్ట్ పరిమాణ పరిమితితో పోరాడటానికి కాంట్రాక్టులను తగ్గించడం](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _– మీ స్మార్ట్ కాంట్రాక్ట్ పరిమాణాన్ని తగ్గించడానికి కొన్ని ఆచరణాత్మక చిట్కాలు._ +- [ఈవెంట్‌లతో స్మార్ట్ కాంట్రాక్టుల నుండి డేటాను లాగింగ్ చేయడం](/developers/tutorials/logging-events-smart-contracts/) _– స్మార్ట్ కాంట్రాక్ట్ ఈవెంట్‌లకు ఒక పరిచయం మరియు డేటాను లాగ్ చేయడానికి మీరు వాటిని ఎలా ఉపయోగించవచ్చు._ +- [సొలిడిటీ నుండి ఇతర కాంట్రాక్టులతో ఇంటరాక్ట్ అవ్వండి](/developers/tutorials/interact-with-other-contracts-from-solidity/) _– ఇప్పటికే ఉన్న కాంట్రాక్ట్ నుండి స్మార్ట్ కాంట్రాక్ట్‌ను ఎలా డిప్లాయ్ చేయాలి మరియు దానితో ఎలా ఇంటరాక్ట్ అవ్వాలి._ diff --git a/public/content/translations/te/developers/docs/smart-contracts/compiling/index.md b/public/content/translations/te/developers/docs/smart-contracts/compiling/index.md new file mode 100644 index 00000000000..f8a1271b3b6 --- /dev/null +++ b/public/content/translations/te/developers/docs/smart-contracts/compiling/index.md @@ -0,0 +1,282 @@ +--- +title: "స్మార్ట్ ఒప్పందాలను కంపైల్ చేస్తోంది" +description: "స్మార్ట్ కాంట్రాక్టులను మీరు ఎందుకు కంపైల్ చేయాలి మరియు కంపైలేషన్ వాస్తవంగా ఏమి చేస్తుందో వివరణ." +lang: te +incomplete: true +--- + +మీ వెబ్ యాప్ మరియు ఎథేరియం వర్చువల్ మషీన్ (EVM) దానిని అర్థం చేసుకోగలగడానికి మీరు మీ కాంట్రాక్ట్‌ను కంపైల్ చేయాలి. + +## అవసరాలు {#prerequisites} + +కంపైలేషన్ గురించి చదివే ముందు [స్మార్ట్ కాంట్రాక్టులు](/developers/docs/smart-contracts/) మరియు [ఎథేరియం వర్చువల్ మషీన్](/developers/docs/evm/)లకు మా పరిచయాన్ని చదవడం మీకు సహాయకరంగా ఉండవచ్చు. + +## EVM {#the-evm} + +[EVM](/developers/docs/evm/) మీ కాంట్రాక్ట్‌ను రన్ చేయగలగాలంటే అది **బైట్‌కోడ్‌**లో ఉండాలి. కంపైలేషన్ దీనిని ఇలా మారుస్తుంది: + +```solidity +pragma solidity 0.4.24; + +contract Greeter { + + function greet() public view returns (string memory) { + return "Hello"; + } + +} +``` + +**ఈ విధంగా** + +``` +PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0xCFAE3217 EQ PUSH2 0x46 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5B PUSH2 0xD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9B JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x80 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x48656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SLT 0xec 0xe 0xf5 0xf8 SLT 0xc7 0x2d STATICCALL ADDRESS SHR 0xdb COINBASE 0xb1 BALANCE 0xe8 0xf8 DUP14 0xda 0xad DUP13 LOG1 0x4c 0xb4 0x26 0xc2 DELEGATECALL PUSH7 0x8994D3E002900 +``` + +వీటిని **ఆప్కోడ్లు** అని అంటారు. EVM ఆప్కోడ్లు అనేవి ఎథేరియం వర్చువల్ మషీన్ (EVM) అమలు చేయగల తక్కువ-స్థాయి సూచనలు. ప్రతి ఆప్కోడ్ ఒక నిర్దిష్ట ఆపరేషన్‌ను సూచిస్తుంది, ఉదాహరణకు అంకగణిత ఆపరేషన్‌లు, లాజికల్ ఆపరేషన్‌లు, డేటా మానిప్యులేషన్, కంట్రోల్ ఫ్లో మొదలైనవి. + +[ఆప్కోడ్ల గురించి మరింత](/developers/docs/evm/opcodes/) + +## వెబ్ అప్లికేషన్‌లు {#web-applications} + +కంపైలర్ \*\*అప్లికేషన్ బైనరీ ఇంటర్‌ఫేస్ (ABI)\*\*ను కూడా ఉత్పత్తి చేస్తుంది, ఇది మీ అప్లికేషన్ కాంట్రాక్ట్‌ను అర్థం చేసుకోవడానికి మరియు కాంట్రాక్ట్ యొక్క ఫంక్షన్‌లను కాల్ చేయడానికి మీకు అవసరం. + +ABI అనేది డిప్లాయ్ చేయబడిన కాంట్రాక్ట్ మరియు దాని స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌లను వివరించే ఒక JSON ఫైల్. ఇది వెబ్2 మరియు వెబ్3 మధ్య అంతరాన్ని పూడ్చడానికి సహాయపడుతుంది + +మీరు మీ వెబ్ యాప్ ఇంటర్‌ఫేస్‌లో మీ స్మార్ట్ కాంట్రాక్ట్‌ను కాల్ చేయడానికి [జావాస్క్రిప్ట్ క్లయింట్ లైబ్రరీ](/developers/docs/apis/javascript/) **ABI**ని చదువుతుంది. + +కింద ERC-20 టోకెన్ కాంట్రాక్ట్ కోసం ABI ఇవ్వబడింది. ERC-20 అనేది మీరు ఎథేరియంపై ట్రేడ్ చేయగల ఒక టోకెన్. + +```json +[ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + } +] +``` + +## మరింత సమాచారం {#further-reading} + +- [ABI స్పెక్](https://solidity.readthedocs.io/en/v0.7.0/abi-spec.html) _– సాలిడిటీ_ + +## సంబంధిత అంశాలు {#related-topics} + +- [జావాస్క్రిప్ట్ క్లయింట్ లైబ్రరీలు](/developers/docs/apis/javascript/) +- [ఎథేరియం వర్చువల్ మషీన్](/developers/docs/evm/) diff --git a/public/content/translations/te/developers/docs/smart-contracts/composability/index.md b/public/content/translations/te/developers/docs/smart-contracts/composability/index.md new file mode 100644 index 00000000000..1f4115046b8 --- /dev/null +++ b/public/content/translations/te/developers/docs/smart-contracts/composability/index.md @@ -0,0 +1,76 @@ +--- +title: "స్మార్ట్ కాంట్రాక్ట్ కంపోసబిలిటీ" +description: "ఇప్పటికే ఉన్న భాగాలను పునర్వినియోగించడం ద్వారా సంక్లిష్టమైన డాప్‌లను రూపొందించడానికి స్మార్ట్ కాంట్రాక్ట్‌లను లెగో బ్లాక్‌ల వలె ఎలా కలపాలో తెలుసుకోండి." +lang: te +incomplete: true +--- + +## ఒక సంక్షిప్త పరిచయం {#a-brief-introduction} + +స్మార్ట్ కాంట్రాక్ట్‌లు ఎథేరియంపై పబ్లిక్‌గా ఉంటాయి మరియు వాటిని ఓపెన్ APIలుగా భావించవచ్చు. మీరు డాప్ డెవలపర్‌గా మారడానికి మీ స్వంత స్మార్ట్ కాంట్రాక్ట్‌ను వ్రాయవలసిన అవసరం లేదు, మీరు వారితో ఎలా ఇంటరాక్ట్ అవ్వాలో తెలుసుకుంటే సరిపోతుంది. ఉదాహరణకు, మీరు మీ యాప్‌లోని అన్ని టోకెన్ స్వాప్ లాజిక్‌లను నిర్వహించడానికి వికేంద్రీకృత మార్పిడి అయిన [Uniswap](https://uniswap.exchange/swap) యొక్క ప్రస్తుత స్మార్ట్ కాంట్రాక్ట్‌లను ఉపయోగించవచ్చు – మీరు మొదటి నుండి ప్రారంభించాల్సిన అవసరం లేదు. వారి [v2](https://github.com/Uniswap/uniswap-v2-core/tree/master/contracts) మరియు [v3](https://github.com/Uniswap/uniswap-v3-core/tree/main/contracts) కాంట్రాక్ట్‌లలో కొన్నింటిని చూడండి. + +## కంపోసబిలిటీ అంటే ఏమిటి? {#what-is-composability} + +కంపోసబిలిటీ అంటే కొత్త సిస్టమ్‌లు లేదా అవుట్‌పుట్‌లను రూపొందించడానికి విభిన్న భాగాలను కలపడం. సాఫ్ట్‌వేర్ అభివృద్ధిలో, కంపోసబిలిటీ అంటే అభివృద్ధి చేసేవాళ్లు కొత్త అప్లికేషన్‌లను రూపొందించడానికి ఇప్పటికే ఉన్న సాఫ్ట్‌వేర్ భాగాలను పునర్వినియోగించుకోవచ్చు. కంపోసబిలిటీని అర్థం చేసుకోవడానికి ఒక మంచి మార్గం కంపోజబుల్ ఎలిమెంట్‌లను లెగో బ్లాక్‌లుగా భావించడం. ప్రతి లెగోను మరొక దానితో కలపవచ్చు, వివిధ లెగోలను కలపడం ద్వారా సంక్లిష్ట నిర్మాణాలను నిర్మించడానికి మిమ్మల్ని అనుమతిస్తుంది. + +Ethereumలో, ప్రతి స్మార్ట్ కాంట్రాక్ట్ ఒక రకమైన లెగో - మీరు మీ ప్రాజెక్ట్ కోసం ఇతర ప్రాజెక్ట్‌ల నుండి స్మార్ట్ కాంట్రాక్ట్‌లను బిల్డింగ్ బ్లాక్‌లుగా ఉపయోగించవచ్చు. అంటే మీరు కొత్తగా ఏదైనా కనుగొనడానికి లేదా మొదటి నుండి నిర్మించడానికి సమయం కేటాయించాల్సిన అవసరం లేదు. + +## కంపోసబిలిటీ ఎలా పనిచేస్తుంది? {#how-does-composability-work} + +Ethereum స్మార్ట్ కాంట్రాక్టులు పబ్లిక్ APIల వంటివి, కాబట్టి ఎవరైనా కాంట్రాక్ట్‌తో పరస్పరం సంప్రదించవచ్చు లేదా అదనపు ఫంక్షనాలిటీ కోసం వాటిని డాప్‌లలో ఏకీకృతం చేయవచ్చు. స్మార్ట్ కాంట్రాక్ట్ కంపోసబిలిటీ సాధారణంగా మూడు సూత్రాలపై పనిచేస్తుంది: మాడ్యులారిటీ, స్వయంప్రతిపత్తి మరియు కనుగొనగలగడం: + +**1. మాడ్యులారిటీ**: ఇది ఒక నిర్దిష్ట పనిని చేయడానికి వ్యక్తిగత భాగాల సామర్థ్యం. Ethereumలో, ప్రతి స్మార్ట్ కాంట్రాక్ట్‌కు ఒక నిర్దిష్ట వినియోగ సందర్భం ఉంది (Uniswap ఉదాహరణలో చూపిన విధంగా). + +**2. స్వయంప్రతిపత్తి**: కంపోజబుల్ భాగాలు స్వతంత్రంగా పనిచేయగలగాలి. Ethereumలోని ప్రతి స్మార్ట్ కాంట్రాక్ట్ స్వీయ-నిర్వహణ మరియు సిస్టమ్‌లోని ఇతర భాగాలపై ఆధారపడకుండా పనిచేయగలదు. + +**3. కనుగొనగలగడం**: అభివృద్ధి చేసేవాళ్లు పబ్లిక్‌గా అందుబాటులో లేకుంటే బాహ్య కాంట్రాక్టులను కాల్ చేయలేరు లేదా సాఫ్ట్‌వేర్ లైబ్రరీలను అప్లికేషన్‌లలోకి ఇంటిగ్రేట్ చేయలేరు. డిజైన్ ప్రకారం, స్మార్ట్ కాంట్రాక్టులు ఓపెన్-సోర్స్; ఎవరైనా స్మార్ట్ కాంట్రాక్ట్‌ని కాల్ చేయవచ్చు లేదా కోడ్‌బేస్‌ను ఫోర్క్ చేయవచ్చు. + +## కంపోసబిలిటీ యొక్క ప్రయోజనాలు {#benefits-of-composability} + +### తక్కువ అభివృద్ధి చక్రం {#shorter-development-cycle} + +[డాప్స్](/apps/#what-are-dapps) సృష్టించేటప్పుడు అభివృద్ధి చేసేవాళ్లు చేయవలసిన పనిని కంపోసబిలిటీ తగ్గిస్తుంది. [నవల్ రవికాంత్ చెప్పినట్లు:](https://twitter.com/naval/status/1444366754650656770) "ఓపెన్ సోర్స్ అంటే ప్రతి సమస్యను ఒక్కసారి మాత్రమే పరిష్కరించాలి." + +ఒక సమస్యను పరిష్కరించే స్మార్ట్ కాంట్రాక్ట్ ఉంటే, ఇతర అభివృద్ధి చేసేవాళ్లు దానిని పునర్వినియోగించుకోవచ్చు, కాబట్టి వారు అదే సమస్యను పరిష్కరించాల్సిన అవసరం లేదు. ఈ విధంగా, అభివృద్ధి చేసేవాళ్లు ఇప్పటికే ఉన్న సాఫ్ట్‌వేర్ లైబ్రరీలను తీసుకొని, కొత్త డాప్స్‌ను సృష్టించడానికి అదనపు ఫంక్షనాలిటీని జోడించవచ్చు. + +### గొప్ప ఆవిష్కరణ {#greater-innovation} + +కావలసిన ఫలితాలను సృష్టించడానికి ఓపెన్-సోర్స్ కోడ్‌ను పునర్వినియోగించుకోవడానికి, సవరించడానికి, నకిలీ చేయడానికి లేదా ఇంటిగ్రేట్ చేయడానికి అభివృద్ధి చేసేవాళ్లు స్వేచ్ఛగా ఉన్నందున కంపోసబిలిటీ ఆవిష్కరణ మరియు ప్రయోగాలను ప్రోత్సహిస్తుంది. ఫలితంగా, డెవలప్‌మెంట్ బృందాలు ప్రాథమిక ఫంక్షనాలిటీపై తక్కువ సమయం గడుపుతాయి మరియు కొత్త ఫీచర్‌లతో ప్రయోగాలు చేయడానికి ఎక్కువ సమయం కేటాయించగలవు. + +### మెరుగైన వినియోగదారు అనుభవం {#better-user-experience} + +Ethereum పర్యావరణ వ్యవస్థ యొక్క భాగాల మధ్య ఇంటర్‌ఆపరేబిలిటీ వినియోగదారు అనుభవాన్ని మెరుగుపరుస్తుంది. అప్లికేషన్‌లు కమ్యూనికేట్ చేయలేని ఫ్రాగ్మెంటెడ్ ఎకోసిస్టమ్‌లో కంటే డాప్స్ బాహ్య స్మార్ట్ కాంట్రాక్టులను ఏకీకృతం చేసినప్పుడు వినియోగదారులు ఎక్కువ ఫంక్షనాలిటీని యాక్సెస్ చేయగలరు. + +ఇంటర్‌ఆపరేబిలిటీ యొక్క ప్రయోజనాలను వివరించడానికి మేము ఆర్బిట్రేజ్ ట్రేడింగ్ నుండి ఒక ఉదాహరణను ఉపయోగిస్తాము: + +`exchange B` కంటే `exchange A`లో ఒక టోకెన్ అధికంగా ట్రేడింగ్ అవుతుంటే, మీరు లాభం పొందడానికి ధర వ్యత్యాసాన్ని ఉపయోగించుకోవచ్చు. అయితే, లావాదేవీకి నిధులు సమకూర్చడానికి మీకు తగినంత మూలధనం ఉంటేనే మీరు అలా చేయగలరు (అంటే, `exchange B` నుండి టోకెన్‌ను కొనుగోలు చేసి `exchange A`లో అమ్మడం). + +ట్రేడ్‌ను కవర్ చేయడానికి మీ దగ్గర తగినంత నిధులు లేని సందర్భంలో, ఫ్లాష్ లోన్ అనువైనదిగా ఉండవచ్చు. [ఫ్లాష్ లోన్‌లు](/defi/#flash-loans) చాలా సాంకేతికమైనవి, కానీ ప్రాథమిక ఆలోచన ఏమిటంటే, మీరు ఆస్తులను (పూచీకత్తు లేకుండా) అప్పుగా తీసుకోవచ్చు మరియు _ఒకే_ లావాదేవీలో తిరిగి ఇవ్వవచ్చు. + +మా ప్రారంభ ఉదాహరణకు తిరిగి వెళితే, ఒక ఆర్బిట్రేజ్ వ్యాపారి పెద్ద ఫ్లాష్ లోన్ తీసుకుని, `exchange B` నుండి టోకెన్‌లను కొనుగోలు చేసి, వాటిని `exchange A`లో విక్రయించి, మూలధనం + వడ్డీని తిరిగి చెల్లించి, అదే లావాదేవీలో లాభాన్ని ఉంచుకోవచ్చు. ఈ సంక్లిష్ట తర్కానికి బహుళ కాంట్రాక్టులకు కాల్‌లను కలపడం అవసరం, ఇది స్మార్ట్ కాంట్రాక్టులకు ఇంటర్‌ఆపరేబిలిటీ లేకపోతే సాధ్యం కాదు. + +## Ethereumలో కంపోసబిలిటీకి ఉదాహరణలు {#composability-in-ethereum} + +### టోకెన్ స్వాప్‌లు {#token-swaps} + +మీరు ETHలో లావాదేవీలు చెల్లించాల్సిన డాప్‌ను సృష్టిస్తే, టోకెన్ స్వాప్ లాజిక్‌ను ఇంటిగ్రేట్ చేయడం ద్వారా ఇతర ERC-20 టోకెన్‌లలో చెల్లించడానికి వినియోగదారులను అనుమతించవచ్చు. కాంట్రాక్ట్ కాల్ చేయబడిన ఫంక్షన్‌ను అమలు చేయడానికి ముందు కోడ్ వినియోగదారు టోకెన్‌ను ఆటోమేటిక్‌గా ETHకి మారుస్తుంది. + +### పరిపాలన {#governance} + +[DAO](/dao/) కోసం బెస్పోక్ పరిపాలన వ్యవస్థలను నిర్మించడం ఖరీదైనది మరియు సమయం తీసుకుంటుంది. బదులుగా, మీరు మీ DAOను బూట్‌స్ట్రాప్ చేయడానికి మరియు త్వరగా పరిపాలన ఫ్రేమ్‌వర్క్‌ను రూపొందించడానికి [Aragon Client](https://client.aragon.org/) వంటి ఓపెన్-సోర్స్ పరిపాలన టూల్‌కిట్‌ను ఉపయోగించవచ్చు. + +### గుర్తింపు నిర్వహణ {#identity-management} + +కస్టమ్ అథెంటికేషన్ సిస్టమ్‌ను నిర్మించడం లేదా కేంద్రీకృత ప్రొవైడర్లపై ఆధారపడటం బదులుగా, వినియోగదారుల కోసం అథెంటికేషన్‌ను నిర్వహించడానికి మీరు వికేంద్రీకృత గుర్తింపు (DID) ఉపకరణాలను ఇంటిగ్రేట్ చేయవచ్చు. ఒక ఉదాహరణ [SpruceID](https://www.spruceid.com/), ఇది ఒక ఓపెన్-సోర్స్ టూల్‌కిట్, ఇది "Ethereumతో సైన్ ఇన్ చేయండి" ఫంక్షనాలిటీని అందిస్తుంది, ఇది వినియోగదారులు Ethereum వాలెట్‌తో గుర్తింపులను ప్రామాణీకరించడానికి అనుమతిస్తుంది. + +## సంబంధిత ట్యుటోరియల్స్ {#related-tutorials} + +- [క్రియేట్-ఎత్-యాప్‌తో మీ డాప్ ఫ్రంటెండ్ అభివృద్ధిని కిక్‌స్టార్ట్ చేయండి](/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/) _– ప్రముఖ స్మార్ట్ కాంట్రాక్టులతో యాప్‌లను రూపొందించడానికి క్రియేట్-ఎత్-యాప్‌ను ఎలా ఉపయోగించాలనే దానిపై ఒక అవలోకనం._ + +## మరింత సమాచారం {#further-reading} + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ + +- [కంపోసబిలిటీయే ఆవిష్కరణ](https://a16zcrypto.com/posts/article/how-composability-unlocks-crypto-and-everything-else/) +- [Web3కి కంపోసబిలిటీ ఎందుకు ముఖ్యమైనది](https://hackernoon.com/why-composability-matters-for-web3) +- [కంపోసబిలిటీ అంటే ఏమిటి?](https://blog.aragon.org/what-is-composability/#:~:text=Aragon,connect%20to%20every%20other%20piece.) diff --git a/public/content/translations/te/developers/docs/smart-contracts/deploying/index.md b/public/content/translations/te/developers/docs/smart-contracts/deploying/index.md new file mode 100644 index 00000000000..fd1fdae3bd3 --- /dev/null +++ b/public/content/translations/te/developers/docs/smart-contracts/deploying/index.md @@ -0,0 +1,81 @@ +--- +title: "స్మార్ట్ కాంట్రాక్టులను అమలు చేయడం" +description: "అవసరాలు, ఉపకరణాలు, మరియు అమరిక దశలతో సహా Ethereum నెట్‌వర్క్‌లకు స్మార్ట్ కాంట్రాక్టులను ఎలా అమర్చాలో తెలుసుకోండి." +lang: te +--- + +ఇతీరియం నెట్‌వర్క్ వినియోగదారులకు అందుబాటులో ఉండటానికి మీ స్మార్ట్ కాంట్రాక్టును మీరు అమర్చాలి. + +ఒక స్మార్ట్ కాంట్రాక్టును అమర్చడానికి, మీరు ఏ గ్రహీతను పేర్కొనకుండా ఆ స్మార్ట్ కాంట్రాక్టు యొక్క కంపైల్ చేసిన కోడ్‌ని కలిగి ఉన్న ఒక ఇతీరియం లావాదేవీని పంపితే చాలు. + +## అవసరాలు {#prerequisites} + +స్మార్ట్ కాంట్రాక్టులను అమర్చడానికి ముందు మీరు [ఇతీరియం నెట్‌వర్క్‌లు](/developers/docs/networks/), [లావాదేవీలు](/developers/docs/transactions/) మరియు [స్మార్ట్ కాంట్రాక్టుల అనాటమీ](/developers/docs/smart-contracts/anatomy/)ని అర్థం చేసుకోవాలి. + +ఒక కాంట్రాక్టును అమర్చడానికి ఈథర్ (ETH) కూడా ఖర్చవుతుంది, ఎందుకంటే అవి బ్లాక్‌చైన్‌లో నిల్వ చేయబడతాయి, కాబట్టి మీరు ఇతీరియంపై [గ్యాస్ మరియు ఫీజులు](/developers/docs/gas/) గురించి తెలిసి ఉండాలి. + +చివరగా, మీ కాంట్రాక్టును అమర్చడానికి ముందు దాన్ని కంపైల్ చేయాలి, కాబట్టి మీరు [స్మార్ట్ కాంట్రాక్టులను కంపైల్ చేయడం](/developers/docs/smart-contracts/compiling/) గురించి చదివారని నిర్ధారించుకోండి. + +## ఒక స్మార్ట్ కాంట్రాక్టును ఎలా అమర్చాలి {#how-to-deploy-a-smart-contract} + +### మీకు ఏమి అవసరం {#what-youll-need} + +- మీ కాంట్రాక్ట్ బైట్‌కోడ్ – ఇది [కంపైలేషన్](/developers/docs/smart-contracts/compiling/) ద్వారా ఉత్పత్తి చేయబడుతుంది +- గ్యాస్ కోసం ETH – మీరు ఇతర లావాదేవీల వలె మీ గ్యాస్ పరిమితిని సెట్ చేస్తారు, కాబట్టి ఒక సాధారణ ETH బదిలీ కంటే కాంట్రాక్ట్ అమరికకు చాలా ఎక్కువ గ్యాస్ అవసరమని గుర్తుంచుకోండి +- ఒక అమరిక స్క్రిప్ట్ లేదా ప్లగిన్ +- [ఇతీరియం నోడ్](/developers/docs/nodes-and-clients/)‌కు యాక్సెస్, మీ స్వంత దానిని నడపడం ద్వారా, పబ్లిక్ నోడ్‌కు కనెక్ట్ చేయడం ద్వారా లేదా [నోడ్ సర్వీస్](/developers/docs/nodes-and-clients/nodes-as-a-service/)ని ఉపయోగించి API కీ ద్వారా + +### ఒక స్మార్ట్ కాంట్రాక్టును అమర్చే దశలు {#steps-to-deploy} + +సంబంధిత డెవలప్‌మెంట్ ఫ్రేమ్‌వర్క్‌ను బట్టి నిర్దిష్ట దశలు ఉంటాయి. ఉదాహరణకు, మీరు మీ కాంట్రాక్టులను అమర్చడంపై [Hardhat డాక్యుమెంటేషన్‌ను](https://hardhat.org/docs/tutorial/deploying) లేదా ఒక స్మార్ట్ కాంట్రాక్టును అమర్చడం మరియు ధృవీకరించడంపై [Foundry డాక్యుమెంటేషన్‌ను](https://book.getfoundry.sh/forge/deploying) చూడవచ్చు. అమర్చిన తర్వాత, మీ కాంట్రాక్టుకు ఇతర [ఖాతాల](/developers/docs/accounts/) వలె ఒక ఇతీరియం చిరునామా ఉంటుంది మరియు [సోర్స్ కోడ్ ధృవీకరణ ఉపకరణాలను](/developers/docs/smart-contracts/verifying/#source-code-verification-tools) ఉపయోగించి ధృవీకరించవచ్చు. + +## సంబంధిత ఉపకరణాలు {#related-tools} + +**Remix - _Remix IDE ఇతీరియం వంటి బ్లాక్‌చైన్‌ల కోసం స్మార్ట్ కాంట్రాక్టులను అభివృద్ధి చేయడానికి, అమర్చడానికి మరియు నిర్వహించడానికి అనుమతిస్తుంది_** + +- [Remix](https://remix.ethereum.org) + +**Tenderly - _స్మార్ట్ కాంట్రాక్టులను అభివృద్ధి చేయడం, పరీక్షించడం, పర్యవేక్షించడం మరియు నిర్వహించడం కోసం డీబగ్గింగ్, అబ్జర్విబిలిటీ మరియు ఇన్‌ఫ్రాస్ట్రక్చర్ బిల్డింగ్ బ్లాక్‌లను అందించే ఒక Web3 డెవలప్‌మెంట్ ప్లాట్‌ఫారమ్_** + +- [tenderly.co](https://tenderly.co/) +- [డాక్స్](https://docs.tenderly.co/) +- [GitHub](https://github.com/Tenderly) +- [Discord](https://discord.gg/eCWjuvt) + +**Hardhat - _మీ ఇతీరియం సాఫ్ట్‌వేర్‌ను కంపైల్ చేయడానికి, అమర్చడానికి, పరీక్షించడానికి, మరియు డీబగ్ చేయడానికి ఒక డెవలప్‌మెంట్ ఎన్విరాన్‌మెంట్_** + +- [hardhat.org](https://hardhat.org/getting-started/) +- [మీ కాంట్రాక్టులను అమర్చడంపై డాక్స్](https://hardhat.org/docs/tutorial/deploying) +- [GitHub](https://github.com/nomiclabs/hardhat) +- [Discord](https://discord.com/invite/TETZs2KK4k) + +**thirdweb - _ఒకే కమాండ్ ఉపయోగించి, ఏదైనా EVM అనుకూల చైన్‌కు ఏదైనా కాంట్రాక్టును సులభంగా అమర్చండి_** + +- [డాక్యుమెంటేషన్](https://portal.thirdweb.com/deploy/) + +**Crossmint - _స్మార్ట్ కాంట్రాక్టులను అమర్చడానికి, క్రెడిట్-కార్డ్ మరియు క్రాస్ చైన్ చెల్లింపులను ప్రారంభించడానికి, మరియు NFTలను సృష్టించడానికి, పంపిణీ చేయడానికి, విక్రయించడానికి, నిల్వ చేయడానికి మరియు సవరించడానికి APIలను ఉపయోగించే ఎంటర్‌ప్రైజ్-గ్రేడ్ web3 డెవలప్‌మెంట్ ప్లాట్‌ఫారమ్._** + +- [crossmint.com](https://www.crossmint.com) +- [డాక్యుమెంటేషన్](https://docs.crossmint.com) +- [Discord](https://discord.com/invite/crossmint) +- [బ్లాగ్](https://blog.crossmint.com) + +## సంబంధిత ట్యుటోరియల్స్ {#related-tutorials} + +- [మీ మొదటి స్మార్ట్ కాంట్రాక్టును అమర్చడం](/developers/tutorials/deploying-your-first-smart-contract/) _– ఒక ఇతీరియం టెస్ట్ నెట్‌వర్క్‌లో మీ మొదటి స్మార్ట్ కాంట్రాక్టును అమర్చడానికి ఒక పరిచయం._ +- [హలో వరల్డ్ | స్మార్ట్ కాంట్రాక్ట్ ట్యుటోరియల్](/developers/tutorials/hello-world-smart-contract/) _– ఇతీరియంపై ఒక ప్రాథమిక స్మార్ట్ కాంట్రాక్టును సృష్టించడానికి & అమర్చడానికి సులభంగా అనుసరించగల ట్యుటోరియల్._ +- [సొలిడిటీ నుండి ఇతర కాంట్రాక్టులతో ఇంటరాక్ట్ అవ్వండి](/developers/tutorials/interact-with-other-contracts-from-solidity/) _– ఇప్పటికే ఉన్న కాంట్రాక్ట్ నుండి స్మార్ట్ కాంట్రాక్ట్‌ను ఎలా డిప్లాయ్ చేయాలి మరియు దానితో ఎలా ఇంటరాక్ట్ అవ్వాలి._ +- [మీ కాంట్రాక్ట్ పరిమాణాన్ని ఎలా తగ్గించుకోవాలి](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _- మీ కాంట్రాక్ట్ పరిమాణాన్ని పరిమితిలోపు ఉంచడానికి మరియు గ్యాస్‌పై ఆదా చేయడానికి ఎలా తగ్గించాలి_ + +## మరింత సమాచారం {#further-reading} + +- [https://docs.openzeppelin.com/learn/deploying-and-interacting](https://docs.openzeppelin.com/learn/deploying-and-interacting) - _OpenZeppelin_ +- [Hardhatతో మీ కాంట్రాక్టులను అమర్చడం](https://hardhat.org/docs/tutorial/deploying) - _Nomic Labs_ + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ + +## సంబంధిత అంశాలు {#related-topics} + +- [అభివృద్ధి ఫ్రేమ్‌వర్క్‌లు](/developers/docs/frameworks/) +- [ఒక ఇతీరియం నోడ్‌ను నడపండి](/developers/docs/nodes-and-clients/run-a-node/) +- [నోడ్స్-యాజ్-ఎ-సర్వీస్](/developers/docs/nodes-and-clients/nodes-as-a-service) diff --git a/public/content/translations/te/developers/docs/smart-contracts/formal-verification/index.md b/public/content/translations/te/developers/docs/smart-contracts/formal-verification/index.md new file mode 100644 index 00000000000..451a799b242 --- /dev/null +++ b/public/content/translations/te/developers/docs/smart-contracts/formal-verification/index.md @@ -0,0 +1,284 @@ +--- +title: "స్మార్ట్ కాంట్రాక్టుల ఫార్మల్ వెరిఫికేషన్" +description: "ఇతీరియము స్మార్ట్ కాంట్రాక్టుల కోసం ఫార్మల్ వెరిఫికేషన్ యొక్క ఒక అవలోకనం" +lang: te +--- + +[స్మార్ట్ కాంట్రాక్టులు](/developers/docs/smart-contracts/) వికేంద్రీకృత, విశ్వాసం లేని మరియు పటిష్టమైన అప్లికేషన్‌లను సృష్టించడం సాధ్యం చేస్తున్నాయి, ఇవి కొత్త వినియోగ-కేసులను పరిచయం చేస్తాయి మరియు వినియోగదారుల కోసం విలువను అన్‌లాక్ చేస్తాయి. స్మార్ట్ కాంట్రాక్టులు పెద్ద మొత్తంలో విలువను నిర్వహిస్తాయి కాబట్టి, డెవలపర్‌లకు భద్రత ఒక క్లిష్టమైన పరిశీలన. + +[స్మార్ట్ కాంట్రాక్ట్ భద్రత](/developers/docs/smart-contracts/security/)ను మెరుగుపరచడానికి సిఫార్సు చేయబడిన టెక్నిక్‌లలో ఫార్మల్ వెరిఫికేషన్ ఒకటి. ప్రోగ్రామ్‌లను పేర్కొనడం, రూపకల్పన చేయడం మరియు ధృవీకరించడం కోసం [ఫార్మల్ పద్ధతులను](https://www.brookings.edu/techstream/formal-methods-as-a-path-toward-better-cybersecurity/) ఉపయోగించే ఫార్మల్ వెరిఫికేషన్, క్లిష్టమైన హార్డ్‌వేర్ మరియు సాఫ్ట్‌వేర్ సిస్టమ్‌ల యొక్క ఖచ్చితత్వాన్ని నిర్ధారించడానికి సంవత్సరాలుగా ఉపయోగించబడింది. + +స్మార్ట్ కాంట్రాక్టులలో అమలు చేసినప్పుడు, ఒక కాంట్రాక్ట్ యొక్క వ్యాపార తర్కం ముందుగా నిర్వచించిన స్పెసిఫికేషన్‌కు అనుగుణంగా ఉందని ఫార్మల్ వెరిఫికేషన్ నిరూపించగలదు. టెస్టింగ్ వంటి కాంట్రాక్ట్ కోడ్ యొక్క ఖచ్చితత్వాన్ని అంచనా వేయడానికి ఇతర పద్ధతులతో పోలిస్తే, ఒక స్మార్ట్ కాంట్రాక్ట్ ఫంక్షనల్‌గా సరైనదని ఫార్మల్ వెరిఫికేషన్ బలమైన హామీలను ఇస్తుంది. + +## ఫార్మల్ వెరిఫికేషన్ అంటే ఏమిటి? {#what-is-formal-verification} + +ఫార్మల్ వెరిఫికేషన్ అనేది ఒక ఫార్మల్ స్పెసిఫికేషన్‌కు సంబంధించి ఒక సిస్టమ్ యొక్క ఖచ్చితత్వాన్ని మూల్యాంకనం చేసే ప్రక్రియను సూచిస్తుంది. సాధారణ మాటలలో చెప్పాలంటే, ఒక సిస్టమ్ యొక్క ప్రవర్తన కొన్ని అవసరాలను సంతృప్తి పరుస్తుందో లేదో తనిఖీ చేయడానికి ఫార్మల్ వెరిఫికేషన్ మనకు అనుమతిస్తుంది (అంటే, మనం కోరుకున్నది అది చేస్తుంది). + +సిస్టమ్ యొక్క ఆశించిన ప్రవర్తనలు (ఈ సందర్భంలో ఒక స్మార్ట్ కాంట్రాక్ట్) ఫార్మల్ మోడలింగ్‌ను ఉపయోగించి వర్ణించబడ్డాయి, అయితే స్పెసిఫికేషన్ భాషలు ఫార్మల్ ప్రాపర్టీల సృష్టిని ప్రారంభిస్తాయి. ఒక కాంట్రాక్ట్ యొక్క అమలు దాని స్పెసిఫికేషన్‌కు అనుగుణంగా ఉందని ఫార్మల్ వెరిఫికేషన్ టెక్నిక్‌లు ధృవీకరించగలవు మరియు పూర్వం యొక్క ఖచ్చితత్వం యొక్క గణిత రుజువును పొందగలవు. ఒక కాంట్రాక్ట్ దాని స్పెసిఫికేషన్‌ను సంతృప్తిపరిచినప్పుడు, అది "ఫంక్షనల్‌గా సరైనది", "డిజైన్ ద్వారా సరైనది", లేదా "నిర్మాణం ద్వారా సరైనది" అని వర్ణించబడింది. + +### ఒక ఫార్మల్ మోడల్ అంటే ఏమిటి? {#what-is-a-formal-model} + +కంప్యూటర్ సైన్స్‌లో, ఒక [ఫార్మల్ మోడల్](https://en.wikipedia.org/wiki/Model_of_computation) అనేది ఒక గణన ప్రక్రియ యొక్క గణిత వివరణ. ప్రోగ్రామ్‌లు గణిత ఫంక్షన్‌లుగా (సమీకరణాలు) సంగ్రహించబడతాయి, ఒక ఇన్‌పుట్ ఇచ్చిన ఫంక్షన్‌లకు అవుట్‌పుట్‌లు ఎలా గణించబడతాయో మోడల్ వివరిస్తుంది. + +ఫార్మల్ మోడల్స్ ఒక ప్రోగ్రామ్ యొక్క ప్రవర్తన యొక్క విశ్లేషణను మూల్యాంకనం చేయగల ఒక సంగ్రహణ స్థాయిని అందిస్తాయి. ఫార్మల్ మోడల్స్ యొక్క ఉనికి ఒక _ఫార్మల్ స్పెసిఫికేషన్_ యొక్క సృష్టికి అనుమతిస్తుంది, ఇది ప్రశ్నలోని మోడల్ యొక్క కావలసిన లక్షణాలను వివరిస్తుంది. + +ఫార్మల్ వెరిఫికేషన్ కోసం స్మార్ట్ కాంట్రాక్టులను మోడలింగ్ చేయడానికి విభిన్న పద్ధతులు ఉపయోగించబడతాయి. ఉదాహరణకు, కొన్ని మోడల్స్ ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క ఉన్నత-స్థాయి ప్రవర్తన గురించి తర్కించడానికి ఉపయోగించబడతాయి. ఈ మోడలింగ్ టెక్నిక్‌లు స్మార్ట్ కాంట్రాక్టులకు ఒక బ్లాక్-బాక్స్ వీక్షణను వర్తింపజేస్తాయి, వాటిని ఇన్‌పుట్‌లను అంగీకరించి, ఆ ఇన్‌పుట్‌ల ఆధారంగా గణనను అమలు చేసే సిస్టమ్‌లుగా చూస్తాయి. + +ఉన్నత-స్థాయి మోడల్స్ స్మార్ట్ కాంట్రాక్టులు మరియు బాహ్య ఏజెంట్ల మధ్య సంబంధంపై దృష్టి పెడతాయి, అవి బాహ్యంగా యాజమాన్యంలో ఉన్న ఖాతాలు (EOAs), కాంట్రాక్ట్ ఖాతాలు మరియు బ్లాక్‌చెయిన్ పర్యావరణం వంటివి. కొన్ని వినియోగదారు పరస్పర చర్యలకు ప్రతిస్పందనగా ఒక కాంట్రాక్ట్ ఎలా ప్రవర్తించాలో నిర్దేశించే లక్షణాలను నిర్వచించడానికి ఇటువంటి మోడల్స్ ఉపయోగపడతాయి. + +దీనికి విరుద్ధంగా, ఇతర ఫార్మల్ మోడల్స్ ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క తక్కువ-స్థాయి ప్రవర్తనపై దృష్టి పెడతాయి. ఉన్నత-స్థాయి మోడల్స్ ఒక కాంట్రాక్ట్ యొక్క కార్యాచరణ గురించి తర్కించడానికి సహాయపడగలిగినప్పటికీ, అవి అమలు యొక్క అంతర్గత పనితీరు గురించి వివరాలను సంగ్రహించడంలో విఫలం కావచ్చు. తక్కువ-స్థాయి మోడల్స్ ప్రోగ్రామ్ విశ్లేషణకు ఒక వైట్-బాక్స్ వీక్షణను వర్తింపజేస్తాయి మరియు ఒక కాంట్రాక్ట్ యొక్క అమలుకు సంబంధించిన లక్షణాల గురించి తర్కించడానికి ప్రోగ్రామ్ ట్రేస్‌లు మరియు [నియంత్రణ ప్రవాహ గ్రాఫ్‌లు](https://en.wikipedia.org/wiki/Control-flow_graph) వంటి స్మార్ట్ కాంట్రాక్ట్ అప్లికేషన్‌ల యొక్క తక్కువ-స్థాయి ప్రాతినిధ్యాలపై ఆధారపడతాయి. + +తక్కువ-స్థాయి మోడల్స్ ఆదర్శంగా పరిగణించబడతాయి ఎందుకంటే అవి ఇతీరియము యొక్క ఎగ్జిక్యూషన్ ఎన్విరాన్‌మెంట్‌లో (అంటే, [EVM](/developers/docs/evm/)) ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క వాస్తవ అమలును సూచిస్తాయి. తక్కువ-స్థాయి మోడలింగ్ పద్ధతులు స్మార్ట్ కాంట్రాక్టులలో క్లిష్టమైన భద్రతా లక్షణాలను స్థాపించడంలో మరియు సంభావ్య బలహీనతలను గుర్తించడంలో ప్రత్యేకంగా ఉపయోగపడతాయి. + +### ఒక ఫార్మల్ స్పెసిఫికేషన్ అంటే ఏమిటి? {#what-is-a-formal-specification} + +ఒక స్పెసిఫికేషన్ అనేది ఒక నిర్దిష్ట సిస్టమ్ సంతృప్తి పరచవలసిన ఒక సాంకేతిక అవసరం. ప్రోగ్రామింగ్‌లో, స్పెసిఫికేషన్‌లు ఒక ప్రోగ్రామ్ యొక్క అమలు గురించి సాధారణ ఆలోచనలను సూచిస్తాయి (అంటే, ప్రోగ్రామ్ ఏమి చేయాలో). + +స్మార్ట్ కాంట్రాక్టుల సందర్భంలో, ఫార్మల్ స్పెసిఫికేషన్‌లు ఒక కాంట్రాక్ట్ సంతృప్తి పరచవలసిన అవసరాల యొక్క ఫార్మల్ వర్ణనలైన ప్రాపర్టీలను సూచిస్తాయి. అటువంటి లక్షణాలు "ఇన్వేరియంట్స్"గా వర్ణించబడతాయి మరియు ఒక కాంట్రాక్ట్ యొక్క అమలు గురించి తార్కిక వాదనలను సూచిస్తాయి, ఇవి ఏ మినహాయింపులు లేకుండా ప్రతి సాధ్యమైన పరిస్థితులలోనూ నిజంగా ఉండాలి. + +అందువల్ల, మనం ఒక ఫార్మల్ స్పెసిఫికేషన్‌ను ఒక ఫార్మల్ భాషలో వ్రాసిన స్టేట్‌మెంట్ల సేకరణగా భావించవచ్చు, ఇది ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క ఉద్దేశించిన అమలును వివరిస్తుంది. స్పెసిఫికేషన్‌లు ఒక కాంట్రాక్ట్ యొక్క లక్షణాలను కవర్ చేస్తాయి మరియు వివిధ పరిస్థితులలో కాంట్రాక్ట్ ఎలా ప్రవర్తించాలో నిర్వచిస్తాయి. ఫార్మల్ వెరిఫికేషన్ యొక్క ఉద్దేశ్యం ఒక స్మార్ట్ కాంట్రాక్ట్ ఈ లక్షణాలను (ఇన్వేరియంట్స్) కలిగి ఉందో లేదో మరియు అమలు సమయంలో ఈ లక్షణాలు ఉల్లంఘించబడలేదని నిర్ధారించడం. + +స్మార్ట్ కాంట్రాక్టుల సురక్షితమైన అమలులను అభివృద్ధి చేయడంలో ఫార్మల్ స్పెసిఫికేషన్‌లు చాలా క్లిష్టమైనవి. ఇన్వేరియంట్స్‌ను అమలు చేయడంలో విఫలమైన లేదా అమలు సమయంలో వాటి లక్షణాలు ఉల్లంఘించబడిన కాంట్రాక్టులు కార్యాచరణకు హాని కలిగించే లేదా హానికరమైన దోపిడీలకు కారణమయ్యే బలహీనతలకు గురవుతాయి. + +## స్మార్ట్ కాంట్రాక్టుల కొరకు ఫార్మల్ స్పెసిఫికేషన్ల రకాలు {#formal-specifications-for-smart-contracts} + +ప్రోగ్రామ్ ఎగ్జిక్యూషన్ యొక్క సరియైనత గురించి ఫార్మల్ స్పెసిఫికేషన్లు గణిత తార్కికతను ఎనేబుల్ చేస్తాయి. ఫార్మల్ మోడల్స్‌లాగే, ఫార్మల్ స్పెసిఫికేషన్లు ఒక కాంట్రాక్ట్ ఇంప్లిమెంటేషన్ యొక్క హై-లెవల్ లక్షణాలను లేదా లో-లెవల్ ప్రవర్తనను క్యాప్చర్ చేయగలవు. + +[ప్రోగ్రామ్ లాజిక్](https://en.wikipedia.org/wiki/Logic_programming) యొక్క ఎలిమెంట్లను ఉపయోగించి ఫార్మల్ స్పెసిఫికేషన్లు ఉద్భవించబడ్డాయి, ఇవి ఒక ప్రోగ్రామ్ యొక్క లక్షణాల గురించి ఫార్మల్ రీజనింగ్‌ను అనుమతిస్తాయి. ఒక ప్రోగ్రామ్ లాజిక్‌లో ఫార్మల్ నియమాలు ఉంటాయి, అవి ఒక ప్రోగ్రామ్ యొక్క ఆశించిన ప్రవర్తనను (గణిత భాషలో) వ్యక్తపరుస్తాయి. [రీచబిలిటీ లాజిక్](https://en.wikipedia.org/wiki/Reachability_problem), [టెంపోరల్ లాజిక్](https://en.wikipedia.org/wiki/Temporal_logic), మరియు [హోరే లాజిక్](https://en.wikipedia.org/wiki/Hoare_logic)తో సహా ఫార్మల్ స్పెసిఫికేషన్లను సృష్టించడంలో వివిధ ప్రోగ్రామ్ లాజిక్‌లు ఉపయోగించబడతాయి. + +స్మార్ట్ కాంట్రాక్టుల కొరకు ఫార్మల్ స్పెసిఫికేషన్లను విస్తృతంగా **హై-లెవల్** లేదా **లో-లెవల్** స్పెసిఫికేషన్లుగా వర్గీకరించవచ్చు. ఒక స్పెసిఫికేషన్ ఏ వర్గానికి చెందినదైనా, అది విశ్లేషణలో ఉన్న సిస్టమ్ యొక్క లక్షణాన్ని తగినంతగా మరియు నిస్సందేహంగా వివరించాలి. + +### హై-లెవల్ స్పెసిఫికేషన్లు {#high-level-specifications} + +పేరు సూచించినట్లుగా, ఒక హై-లెవల్ స్పెసిఫికేషన్ ("మోడల్-ఓరియెంటెడ్ స్పెసిఫికేషన్" అని కూడా పిలుస్తారు) ఒక ప్రోగ్రామ్ యొక్క హై-లెవల్ ప్రవర్తనను వివరిస్తుంది. హై-లెవల్ స్పెసిఫికేషన్లు ఒక స్మార్ట్ కాంట్రాక్టును ఒక [ఫైనైట్ స్టేట్ మెషిన్](https://en.wikipedia.org/wiki/Finite-state_machine) (FSM)గా మోడల్ చేస్తాయి, ఇది ఆపరేషన్లను నిర్వహించడం ద్వారా స్టేట్‌ల మధ్య మారగలదు, FSM మోడల్ కొరకు ఫార్మల్ లక్షణాలను నిర్వచించడానికి టెంపోరల్ లాజిక్ ఉపయోగించబడుతుంది. + +[టెంపోరల్ లాజిక్‌లు](https://en.wikipedia.org/wiki/Temporal_logic) అంటే "సమయం పరంగా అర్హత పొందిన ప్రతిపాదనల గురించి తర్కించడానికి నియమాలు (ఉదా., "నేను _ఎల్లప్పుడూ_ ఆకలితో ఉంటాను" లేదా "నేను _చివరికి_ ఆకలితో ఉంటాను")." ఫార్మల్ వెరిఫికేషన్‌కు వర్తింపజేసినప్పుడు, స్టేట్-మెషీన్‌లుగా మోడల్ చేయబడిన సిస్టమ్‌ల యొక్క సరైన ప్రవర్తన గురించి నిర్ధారణలను చెప్పడానికి టెంపోరల్ లాజిక్‌లు ఉపయోగించబడతాయి. ప్రత్యేకంగా, ఒక టెంపోరల్ లాజిక్ ఒక స్మార్ట్ కాంట్రాక్ట్ ఉండగల భవిష్యత్తు స్టేట్‌లను మరియు అది స్టేట్‌ల మధ్య ఎలా మారుతుందో వివరిస్తుంది. + +హై-లెవల్ స్పెసిఫికేషన్లు సాధారణంగా స్మార్ట్ కాంట్రాక్టుల కొరకు రెండు కీలకమైన టెంపోరల్ లక్షణాలను క్యాప్చర్ చేస్తాయి: **భద్రత** మరియు **సజీవత్వం**. భద్రతా లక్షణాలు “ఎప్పటికీ ఏ చెడు జరగదు” అనే ఆలోచనను సూచిస్తాయి మరియు సాధారణంగా మార్పులేనితనాన్ని వ్యక్తపరుస్తాయి. ఒక భద్రతా లక్షణం [డెడ్‌లాక్](https://www.techtarget.com/whatis/definition/deadlock) నుండి స్వేచ్ఛ వంటి సాధారణ సాఫ్ట్‌వేర్ అవసరాలను నిర్వచించవచ్చు, లేదా కాంట్రాక్టుల కొరకు డొమైన్-నిర్దిష్ట లక్షణాలను వ్యక్తపరచవచ్చు (ఉదా., ఫంక్షన్ల కొరకు యాక్సెస్ కంట్రోల్‌పై ఇన్‌వేరియంట్లు, స్టేట్ వేరియబుల్స్ యొక్క అనుమతించదగిన విలువలు, లేదా టోకెన్ బదిలీల కొరకు షరతులు). + +ERC-20 టోకెన్ కాంట్రాక్టులలో `transfer()` లేదా `transferFrom()` ఉపయోగించడానికి షరతులను కవర్ చేసే ఈ భద్రతా అవసరాన్ని ఉదాహరణకు తీసుకోండి: _“పంపాల్సిన టోకెన్ల యొక్క అభ్యర్థించిన మొత్తం కంటే పంపినవారి బ్యాలెన్స్ ఎప్పుడూ తక్కువగా ఉండదు.”_. ఒక కాంట్రాక్ట్ ఇన్‌వేరియంట్ యొక్క ఈ సహజ-భాషా వివరణను ఒక ఫార్మల్ (గణిత) స్పెసిఫికేషన్‌లో అనువదించవచ్చు, దానిని తర్వాత ప్రామాణికత కొరకు కఠినంగా తనిఖీ చేయవచ్చు. + +సజీవత్వ లక్షణాలు “చివరికి ఏదో మంచి జరుగుతుంది” అని నిర్ధారిస్తాయి మరియు ఒక కాంట్రాక్ట్ యొక్క వివిధ స్టేట్‌ల ద్వారా పురోగమించే సామర్థ్యానికి సంబంధించినవి. సజీవత్వ లక్షణానికి ఒక ఉదాహరణ “లిక్విడిటీ”, ఇది అభ్యర్థనపై వినియోగదారులకు దాని బ్యాలెన్స్‌లను బదిలీ చేసే కాంట్రాక్ట్ సామర్థ్యాన్ని సూచిస్తుంది. ఈ లక్షణం ఉల్లంఘించబడితే, [పారిటీ వాలెట్ సంఘటన](https://www.cnbc.com/2017/11/08/accidental-bug-may-have-frozen-280-worth-of-ether-on-parity-wallet.html)లో జరిగినట్లుగా, వినియోగదారులు కాంట్రాక్ట్‌లో నిల్వ చేసిన ఆస్తులను ఉపసంహరించుకోలేరు. + +### లో-లెవల్ స్పెసిఫికేషన్లు {#low-level-specifications} + +హై-లెవల్ స్పెసిఫికేషన్లు ఒక కాంట్రాక్ట్ యొక్క ఫైనైట్-స్టేట్ మోడల్‌ను ప్రారంభ బిందువుగా తీసుకుంటాయి మరియు ఈ మోడల్ యొక్క కావలసిన లక్షణాలను నిర్వచిస్తాయి. దీనికి విరుద్ధంగా, లో-లెవల్ స్పెసిఫికేషన్లు ("ప్రాపర్టీ-ఓరియెంటెడ్ స్పెసిఫికేషన్లు" అని కూడా పిలుస్తారు) తరచుగా ప్రోగ్రామ్‌లను (స్మార్ట్ కాంట్రాక్టులను) గణిత ఫంక్షన్ల సేకరణను కలిగి ఉన్న సిస్టమ్‌లుగా మోడల్ చేస్తాయి మరియు అటువంటి సిస్టమ్‌ల సరైన ప్రవర్తనను వివరిస్తాయి. + +సులభమైన మాటలలో, లో-లెవల్ స్పెసిఫికేషన్లు _ప్రోగ్రామ్ ట్రేస్‌లను_ విశ్లేషిస్తాయి మరియు ఈ ట్రేస్‌లపై స్మార్ట్ కాంట్రాక్ట్ యొక్క లక్షణాలను నిర్వచించడానికి ప్రయత్నిస్తాయి. ట్రేస్‌లు స్మార్ట్ కాంట్రాక్ట్ యొక్క స్టేట్‌ను మార్చే ఫంక్షన్ ఎగ్జిక్యూషన్‌ల క్రమాలను సూచిస్తాయి; అందువల్ల, లో-లెవల్ స్పెసిఫికేషన్లు ఒక కాంట్రాక్ట్ యొక్క అంతర్గత ఎగ్జిక్యూషన్ కొరకు అవసరాలను నిర్దేశించడంలో సహాయపడతాయి. + +లో-లెవల్ ఫార్మల్ స్పెసిఫికేషన్లను హోరే-శైలి లక్షణాలుగా లేదా ఎగ్జిక్యూషన్ పాత్‌లపై ఇన్‌వేరియంట్లుగా ఇవ్వవచ్చు. + +### హోరే-శైలి లక్షణాలు {#hoare-style-properties} + +[హోరే లాజిక్](https://en.wikipedia.org/wiki/Hoare_logic) స్మార్ట్ కాంట్రాక్టులతో సహా ప్రోగ్రామ్‌ల సరియైనత గురించి తర్కించడానికి ఫార్మల్ నియమాల సమితిని అందిస్తుంది. ఒక హోరే-శైలి లక్షణం హోరే ట్రిపుల్ `{P}c{Q}` ద్వారా సూచించబడుతుంది, ఇక్కడ `c` ఒక ప్రోగ్రామ్ మరియు `P` మరియు `Q` అనేవి `c` (అంటే, ప్రోగ్రామ్) యొక్క స్టేట్‌పై ఉన్న ప్రెడికేట్లు, వరుసగా _ప్రీకండిషన్లు_ మరియు _పోస్ట్‌కండిషన్లుగా_ ఫార్మల్‌గా వివరించబడ్డాయి. + +ప్రీకండిషన్ అనేది ఒక ఫంక్షన్ యొక్క సరైన ఎగ్జిక్యూషన్‌కు అవసరమైన షరతులను వివరించే ప్రెడికేట్; కాంట్రాక్ట్‌లోకి కాల్ చేసే వినియోగదారులు ఈ అవసరాన్ని తప్పనిసరిగా తీర్చాలి. పోస్ట్‌కండిషన్ అనేది సరిగ్గా ఎగ్జిక్యూట్ చేస్తే ఒక ఫంక్షన్ స్థాపించే షరతును వివరించే ప్రెడికేట్; ఫంక్షన్‌లోకి కాల్ చేసిన తర్వాత వినియోగదారులు ఈ షరతు నిజమని ఆశించవచ్చు. హోరే లాజిక్‌లో ఒక _ఇన్‌వేరియంట్_ అనేది ఒక ఫంక్షన్ యొక్క ఎగ్జిక్యూషన్ ద్వారా సంరక్షించబడే ప్రెడికేట్ (అంటే, అది మారదు). + +హోరే-శైలి స్పెసిఫికేషన్లు _పాక్షిక సరియైనత_ లేదా _మొత్తం సరియైనత_కు హామీ ఇవ్వగలవు. ఫంక్షన్ ఎగ్జిక్యూట్ చేయడానికి ముందు ప్రీకండిషన్ నిజమై, మరియు ఎగ్జిక్యూషన్ ముగిస్తే, పోస్ట్‌కండిషన్ కూడా నిజమైతే, ఒక కాంట్రాక్ట్ ఫంక్షన్ యొక్క ఇంప్లిమెంటేషన్ "పాక్షికంగా సరైనది" అవుతుంది. ఫంక్షన్ ఎగ్జిక్యూట్ చేయడానికి ముందు ప్రీకండిషన్ నిజమై, ఎగ్జిక్యూషన్ ముగుస్తుందని హామీ ఇవ్వబడి, మరియు అది ముగిసినప్పుడు పోస్ట్‌కండిషన్ నిజమైతే, మొత్తం సరియైనత రుజువు పొందబడుతుంది. + +మొత్తం సరియైనత రుజువు పొందడం కష్టం, ఎందుకంటే కొన్ని ఎగ్జిక్యూషన్‌లు ముగిసే ముందు ఆలస్యం కావచ్చు లేదా అస్సలు ముగియకపోవచ్చు. అయినప్పటికీ, ఇతీరియము యొక్క గ్యాస్ మెకానిజం అనంతమైన ప్రోగ్రామ్ లూప్‌లను నివారిస్తుంది కాబట్టి ఎగ్జిక్యూషన్ ముగుస్తుందా లేదా అనే ప్రశ్న వాదించదగ్గ విధంగా వివాదాస్పద విషయం (ఎగ్జిక్యూషన్ విజయవంతంగా ముగుస్తుంది లేదా 'గ్యాస్ అయిపోయింది' లోపం కారణంగా ముగుస్తుంది). + +హోరే లాజిక్ ఉపయోగించి సృష్టించబడిన స్మార్ట్ కాంట్రాక్ట్ స్పెసిఫికేషన్లు, ఒక కాంట్రాక్ట్‌లో ఫంక్షన్లు మరియు లూప్‌ల ఎగ్జిక్యూషన్ కొరకు నిర్వచించబడిన ప్రీకండిషన్లు, పోస్ట్‌కండిషన్లు, మరియు ఇన్‌వేరియంట్లను కలిగి ఉంటాయి. ప్రీకండిషన్లు తరచుగా ఒక ఫంక్షన్‌కు తప్పు ఇన్‌పుట్‌ల యొక్క అవకాశాన్ని కలిగి ఉంటాయి, పోస్ట్‌కండిషన్లు అటువంటి ఇన్‌పుట్‌లకు ఆశించిన ప్రతిస్పందనను వివరిస్తాయి (ఉదా., ఒక నిర్దిష్ట మినహాయింపును త్రో చేయడం). ఈ పద్ధతిలో, కాంట్రాక్ట్ ఇంప్లిమెంటేషన్‌ల సరియైనతను నిర్ధారించడానికి హోరే-శైలి లక్షణాలు ప్రభావవంతంగా ఉంటాయి. + +అనేక ఫార్మల్ వెరిఫికేషన్ ఫ్రేమ్‌వర్క్‌లు ఫంక్షన్ల యొక్క సెమాంటిక్ సరియైనతను నిరూపించడానికి హోరే-శైలి స్పెసిఫికేషన్లను ఉపయోగిస్తాయి. Solidity లో `require` మరియు `assert` స్టేట్‌మెంట్లను ఉపయోగించి హోరే-శైలి లక్షణాలను (నిర్ధారణలుగా) నేరుగా కాంట్రాక్ట్ కోడ్‌కు జోడించడం కూడా సాధ్యమే. + +`require` స్టేట్‌మెంట్లు ఒక ప్రీకండిషన్ లేదా ఇన్‌వేరియంట్‌ను వ్యక్తపరుస్తాయి మరియు తరచుగా వినియోగదారు ఇన్‌పుట్‌లను ధృవీకరించడానికి ఉపయోగిస్తారు, అయితే `assert` భద్రత కొరకు అవసరమైన పోస్ట్‌కండిషన్‌ను క్యాప్చర్ చేస్తుంది. ఉదాహరణకు, కాలింగ్ ఖాతా యొక్క గుర్తింపుపై ప్రీకండిషన్ తనిఖీగా `require` ఉపయోగించి ఫంక్షన్ల కొరకు సరైన యాక్సెస్ కంట్రోల్ (ఒక భద్రతా లక్షణానికి ఉదాహరణ) సాధించవచ్చు. అదేవిధంగా, ఫంక్షన్ ఎగ్జిక్యూషన్ తర్వాత కాంట్రాక్ట్ యొక్క స్టేట్‌ను నిర్ధారించడానికి `assert` ను ఉపయోగించడం ద్వారా ఒక కాంట్రాక్ట్‌లోని స్టేట్ వేరియబుల్స్ యొక్క అనుమతించదగిన విలువలపై ఇన్‌వేరియంట్ (ఉదా., సర్క్యులేషన్‌లో ఉన్న మొత్తం టోకెన్ల సంఖ్య) ను ఉల్లంఘన నుండి రక్షించవచ్చు. + +### ట్రేస్-లెవల్ లక్షణాలు {#trace-level-properties} + +ట్రేస్-ఆధారిత స్పెసిఫికేషన్లు ఒక కాంట్రాక్టును వివిధ స్టేట్‌ల మధ్య మార్చే ఆపరేషన్లను మరియు ఈ ఆపరేషన్ల మధ్య సంబంధాలను వివరిస్తాయి. ముందు వివరించినట్లుగా, ట్రేస్‌లు ఒక కాంట్రాక్ట్ యొక్క స్టేట్‌ను ఒక నిర్దిష్ట మార్గంలో మార్చే ఆపరేషన్ల క్రమాలు. + +ఈ విధానం స్మార్ట్ కాంట్రాక్టుల మోడల్‌పై ఆధారపడి ఉంటుంది, ఇవి ముందుగా నిర్వచించిన కొన్ని స్టేట్‌లతో (స్టేట్ వేరియబుల్స్ ద్వారా వర్ణించబడినవి) మరియు ముందుగా నిర్వచించిన ట్రాన్సిషన్ల సమితితో (కాంట్రాక్ట్ ఫంక్షన్ల ద్వారా వర్ణించబడినవి) స్టేట్-ట్రాన్సిషన్ సిస్టమ్‌లుగా ఉంటాయి. ఇంకా, ఒక [కంట్రోల్ ఫ్లో గ్రాఫ్](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/) (CFG), ఇది ఒక ప్రోగ్రామ్ యొక్క ఎగ్జిక్యూషన్ ఫ్లో యొక్క గ్రాఫికల్ ప్రాతినిధ్యం, తరచుగా ఒక కాంట్రాక్ట్ యొక్క కార్యాచరణ సెమాంటిక్స్‌ను వివరించడానికి ఉపయోగించబడుతుంది. ఇక్కడ, ప్రతి ట్రేస్ కంట్రోల్ ఫ్లో గ్రాఫ్‌పై ఒక పాత్‌గా సూచించబడుతుంది. + +ప్రధానంగా, ట్రేస్-లెవల్ స్పెసిఫికేషన్లు స్మార్ట్ కాంట్రాక్టులలోని అంతర్గత ఎగ్జిక్యూషన్ ప్యాట్రన్ల గురించి తర్కించడానికి ఉపయోగించబడతాయి. ట్రేస్-లెవల్ స్పెసిఫికేషన్లను సృష్టించడం ద్వారా, మేము ఒక స్మార్ట్ కాంట్రాక్ట్ కొరకు అనుమతించదగిన ఎగ్జిక్యూషన్ పాత్‌లను (అంటే, స్టేట్ ట్రాన్సిషన్లు) నిర్ధారిస్తాము. సింబాలిక్ ఎగ్జిక్యూషన్ వంటి టెక్నిక్‌లను ఉపయోగించి, ఫార్మల్ మోడల్‌లో నిర్వచించని పాత్‌ను ఎగ్జిక్యూషన్ ఎప్పుడూ అనుసరించదని మనం ఫార్మల్‌గా ధృవీకరించవచ్చు. + +ట్రేస్-లెవల్ లక్షణాలను వివరించడానికి కొన్ని పబ్లిక్‌గా అందుబాటులో ఉన్న ఫంక్షన్లను కలిగి ఉన్న ఒక [DAO](/dao/) కాంట్రాక్ట్ యొక్క ఉదాహరణను ఉపయోగిద్దాం. ఇక్కడ, DAO కాంట్రాక్ట్ వినియోగదారులను క్రింది ఆపరేషన్లను చేయడానికి అనుమతిస్తుందని మనం ఊహిస్తున్నాము: + +- నిధులు డిపాజిట్ చేయండి + +- నిధులు డిపాజిట్ చేసిన తర్వాత ఒక ప్రతిపాదనపై ఓటు వేయండి + +- వారు ఒక ప్రతిపాదనపై ఓటు వేయకపోతే రీఫండ్ క్లెయిమ్ చేయండి + +ఉదాహరణ ట్రేస్-లెవల్ లక్షణాలు _"నిధులు డిపాజిట్ చేయని వినియోగదారులు ఒక ప్రతిపాదనపై ఓటు వేయలేరు"_ లేదా _"ఒక ప్రతిపాదనపై ఓటు వేయని వినియోగదారులు ఎల్లప్పుడూ రీఫండ్ క్లెయిమ్ చేయగలగాలి"_ కావచ్చు. రెండు లక్షణాలు ప్రాధాన్యత ఇవ్వబడిన ఎగ్జిక్యూషన్ క్రమాలను నిర్ధారిస్తాయి (నిధులు డిపాజిట్ చేయడానికి _ముందు_ ఓటింగ్ జరగదు మరియు ఒక ప్రతిపాదనపై ఓటింగ్ చేసిన _తర్వాత_ రీఫండ్‌లు క్లెయిమ్ చేయడం జరగదు). + +## స్మార్ట్ కాంట్రాక్టుల ఫార్మల్ వెరిఫికేషన్ కొరకు టెక్నిక్‌లు {#formal-verification-techniques} + +### మోడల్ చెకింగ్ {#model-checking} + +మోడల్ చెకింగ్ అనేది ఒక ఫార్మల్ వెరిఫికేషన్ టెక్నిక్, దీనిలో ఒక అల్గోరిథం ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క ఫార్మల్ మోడల్‌ను దాని స్పెసిఫికేషన్‌కు వ్యతిరేకంగా తనిఖీ చేస్తుంది. మోడల్ చెకింగ్‌లో స్మార్ట్ కాంట్రాక్టులు తరచుగా స్టేట్-ట్రాన్సిషన్ సిస్టమ్‌లుగా సూచించబడతాయి, అయితే అనుమతించదగిన కాంట్రాక్ట్ స్టేట్‌లపై లక్షణాలు టెంపోరల్ లాజిక్ ఉపయోగించి నిర్వచించబడతాయి. + +మోడల్ చెకింగ్‌కు ఒక సిస్టమ్ (అంటే, ఒక కాంట్రాక్ట్) యొక్క వియుక్త గణిత ప్రాతినిధ్యాన్ని సృష్టించడం మరియు [ప్రపోజిషనల్ లాజిక్](https://www.baeldung.com/cs/propositional-logic)లో పాతుకుపోయిన ఫార్ములాలను ఉపయోగించి ఈ సిస్టమ్ యొక్క లక్షణాలను వ్యక్తపరచడం అవసరం. ఇది మోడల్-చెకింగ్ అల్గోరిథం యొక్క పనిని సులభతరం చేస్తుంది, అవి ఒక గణిత మోడల్ ఇవ్వబడిన లాజికల్ ఫార్ములాను సంతృప్తిపరుస్తుందని నిరూపించడం. + +ఫార్మల్ వెరిఫికేషన్‌లో మోడల్ చెకింగ్ ప్రధానంగా కాలక్రమేణా ఒక కాంట్రాక్ట్ యొక్క ప్రవర్తనను వివరించే టెంపోరల్ లక్షణాలను మూల్యాంకనం చేయడానికి ఉపయోగించబడుతుంది. స్మార్ట్ కాంట్రాక్టుల కొరకు టెంపోరల్ లక్షణాలలో _భద్రత_ మరియు _సజీవత్వం_ ఉన్నాయి, వీటిని మనం ముందు వివరించాము. + +ఉదాహరణకు, యాక్సెస్ కంట్రోల్‌కు సంబంధించిన ఒక భద్రతా లక్షణాన్ని (ఉదా., _కాంట్రాక్ట్ యజమాని మాత్రమే `selfdestruct`ను కాల్ చేయగలడు_) ఫార్మల్ లాజిక్‌లో వ్రాయవచ్చు. ఆ తర్వాత, మోడల్-చెకింగ్ అల్గోరిథం కాంట్రాక్ట్ ఈ ఫార్మల్ స్పెసిఫికేషన్‌ను సంతృప్తిపరుస్తుందో లేదో ధృవీకరించగలదు. + +మోడల్ చెకింగ్ స్టేట్ స్పేస్ ఎక్స్‌ప్లోరేషన్‌ను ఉపయోగిస్తుంది, దీనిలో ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క అన్ని సాధ్యమైన స్టేట్‌లను నిర్మించడం మరియు ప్రాపర్టీ ఉల్లంఘనలకు దారితీసే చేరుకోగల స్టేట్‌లను కనుగొనడానికి ప్రయత్నించడం జరుగుతుంది. అయినప్పటికీ, ఇది అనంతమైన సంఖ్యలో స్టేట్‌లకు దారితీయవచ్చు ("స్టేట్ ఎక్స్‌ప్లోజన్ సమస్య"గా పిలువబడుతుంది), అందువల్ల మోడల్ చెక్కర్‌లు స్మార్ట్ కాంట్రాక్టుల సమర్థవంతమైన విశ్లేషణను సాధ్యం చేయడానికి అబ్స్ట్రాక్షన్ టెక్నిక్‌లపై ఆధారపడతాయి. + +### థీరమ్ ప్రూవింగ్ {#theorem-proving} + +థీరమ్ ప్రూవింగ్ అనేది స్మార్ట్ కాంట్రాక్టులతో సహా ప్రోగ్రామ్‌ల సరియైనత గురించి గణితశాస్త్రపరంగా తర్కించే ఒక పద్ధతి. ఇది ఒక కాంట్రాక్ట్ యొక్క సిస్టమ్ మోడల్‌ను మరియు దాని స్పెసిఫికేషన్‌లను గణిత ఫార్ములాలుగా (లాజిక్ స్టేట్‌మెంట్లు) మార్చడం కలిగి ఉంటుంది. + +థీరమ్ ప్రూవింగ్ యొక్క లక్ష్యం ఈ స్టేట్‌మెంట్ల మధ్య లాజికల్ ఈక్వివలెన్స్‌ను ధృవీకరించడం. “లాజికల్ ఈక్వివలెన్స్” (దీనిని “లాజికల్ బై-ఇంప్లికేషన్” అని కూడా పిలుస్తారు) అనేది రెండు స్టేట్‌మెంట్ల మధ్య ఒక రకమైన సంబంధం, దీనిలో మొదటి స్టేట్‌మెంట్ నిజమైతే _మాత్రమే_ రెండవ స్టేట్‌మెంట్ నిజమవుతుంది. + +ఒక కాంట్రాక్ట్ యొక్క మోడల్ మరియు దాని ప్రాపర్టీ గురించిన స్టేట్‌మెంట్ల మధ్య అవసరమైన సంబంధం (లాజికల్ ఈక్వివలెన్స్) ఒక రుజువు చేయదగిన స్టేట్‌మెంట్‌గా (థీరమ్ అని పిలువబడుతుంది) రూపొందించబడింది. అనుమితి యొక్క ఒక ఫార్మల్ సిస్టమ్ ఉపయోగించి, ఆటోమేటెడ్ థీరమ్ ప్రూవర్ థీరమ్ యొక్క ప్రామాణికతను ధృవీకరించగలదు. మరో మాటలో చెప్పాలంటే, ఒక థీరమ్ ప్రూవర్ ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క మోడల్ దాని స్పెసిఫికేషన్‌లతో సరిగ్గా సరిపోలుతుందని నిశ్చయంగా నిరూపించగలదు. + +మోడల్ చెకింగ్ కాంట్రాక్టులను పరిమిత స్టేట్‌లతో ట్రాన్సిషన్ సిస్టమ్‌లుగా మోడల్ చేస్తుండగా, థీరమ్ ప్రూవింగ్ అనంత-స్టేట్ సిస్టమ్‌ల విశ్లేషణను నిర్వహించగలదు. అయినప్పటికీ, దీని అర్థం ఒక ఆటోమేటెడ్ థీరమ్ ప్రూవర్ ఎల్లప్పుడూ ఒక లాజిక్ సమస్య "నిర్ణయించదగినది" కాదా అని తెలుసుకోలేదు. + +ఫలితంగా, సరియైనత రుజువులను ఉత్పాదించడంలో థీరమ్ ప్రూవర్‌కు మార్గనిర్దేశం చేయడానికి తరచుగా మానవ సహాయం అవసరం. థీరమ్ ప్రూవింగ్‌లో మానవ ప్రయత్నాన్ని ఉపయోగించడం వల్ల ఇది పూర్తిగా ఆటోమేటెడ్ అయిన మోడల్ చెకింగ్ కంటే ఎక్కువ ఖర్చుతో కూడుకున్నది. + +### సింబాలిక్ ఎగ్జిక్యూషన్ {#symbolic-execution} + +సింబాలిక్ ఎగ్జిక్యూషన్ అనేది _కాంక్రీట్ విలువలు_ (ఉదా., `x == 5`) బదులుగా _సింబాలిక్ విలువలు_ (ఉదా., `x > 5`) ఉపయోగించి ఫంక్షన్లను ఎగ్జిక్యూట్ చేయడం ద్వారా ఒక స్మార్ట్ కాంట్రాక్ట్‌ను విశ్లేషించే ఒక పద్ధతి. ఒక ఫార్మల్ వెరిఫికేషన్ టెక్నిక్‌గా, సింబాలిక్ ఎగ్జిక్యూషన్ ఒక కాంట్రాక్ట్ కోడ్‌లోని ట్రేస్-లెవల్ లక్షణాల గురించి ఫార్మల్‌గా తర్కించడానికి ఉపయోగించబడుతుంది. + +సింబాలిక్ ఎగ్జిక్యూషన్ ఒక ఎగ్జిక్యూషన్ ట్రేస్‌ను సింబాలిక్ ఇన్‌పుట్ విలువలపై ఒక గణిత ఫార్ములాగా సూచిస్తుంది, దీనిని _పాత్ ప్రెడికేట్_ అని కూడా పిలుస్తారు. ఒక [SMT సాల్వర్](https://en.wikipedia.org/wiki/Satisfiability_modulo_theories) ఒక పాత్ ప్రెడికేట్ "సంతృప్తికరంగా" ఉందా (అంటే, ఫార్ములాను సంతృప్తిపరిచే విలువ ఉందా) అని తనిఖీ చేయడానికి ఉపయోగించబడుతుంది. ఒక దుర్బలమైన పాత్ సంతృప్తికరంగా ఉంటే, SMT సాల్వర్ ఎగ్జిక్యూషన్‌ను ఆ పాత్ వైపు నడిపించే ఒక కాంక్రీట్ విలువను ఉత్పత్తి చేస్తుంది. + +ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క ఫంక్షన్ ఇన్‌పుట్‌గా ఒక `uint` విలువ (`x`) తీసుకుంటుందని మరియు `x` `5` కంటే ఎక్కువ మరియు `10` కంటే తక్కువ ఉన్నప్పుడు రివర్ట్ అవుతుందని అనుకుందాం. సాధారణ టెస్టింగ్ ప్రక్రియను ఉపయోగించి లోపాన్ని ప్రేరేపించే `x` విలువను కనుగొనడానికి, వాస్తవంగా లోపాన్ని ప్రేరేపించే ఇన్‌పుట్‌ను కనుగొంటామనే హామీ లేకుండా డజన్ల కొద్దీ టెస్ట్ కేసులను (లేదా అంతకంటే ఎక్కువ) అమలు చేయాల్సి ఉంటుంది. + +దీనికి విరుద్ధంగా, ఒక సింబాలిక్ ఎగ్జిక్యూషన్ టూల్ ఫంక్షన్‌ను సింబాలిక్ విలువతో ఎగ్జిక్యూట్ చేస్తుంది: `X > 5 ∧ X < 10` (అంటే, `x` 5 కంటే ఎక్కువ మరియు `x` 10 కంటే తక్కువ). సంబంధిత పాత్ ప్రెడికేట్ `x = X > 5 ∧ X < 10` తర్వాత పరిష్కరించడానికి ఒక SMT సాల్వర్‌కు ఇవ్వబడుతుంది. ఒక నిర్దిష్ట విలువ ఫార్ములా `x = X > 5 ∧ X < 10` ను సంతృప్తిపరిస్తే, SMT సాల్వర్ దానిని లెక్కిస్తుంది—ఉదాహరణకు, సాల్వర్ `x` కొరకు `7` విలువను ఉత్పత్తి చేయవచ్చు. + +సింబాలిక్ ఎగ్జిక్యూషన్ ఒక ప్రోగ్రామ్‌కు ఇన్‌పుట్‌లపై ఆధారపడి ఉంటుంది, మరియు అన్ని చేరుకోగల స్టేట్‌లను అన్వేషించడానికి ఇన్‌పుట్‌ల సమితి అనంతంగా ఉండవచ్చు కాబట్టి, ఇది ఇప్పటికీ ఒక రకమైన టెస్టింగ్. అయినప్పటికీ, ఉదాహరణలో చూపినట్లుగా, ప్రాపర్టీ ఉల్లంఘనలను ప్రేరేపించే ఇన్‌పుట్‌లను కనుగొనడంలో సింబాలిక్ ఎగ్జిక్యూషన్ సాధారణ టెస్టింగ్ కంటే సమర్థవంతమైనది. + +అంతేకాకుండా, ఫంక్షన్‌కు ఇన్‌పుట్‌లను యాదృచ్ఛికంగా ఉత్పత్తి చేసే ఇతర ప్రాపర్టీ-ఆధారిత టెక్నిక్‌ల (ఉదా., ఫజ్జింగ్) కంటే సింబాలిక్ ఎగ్జిక్యూషన్ తక్కువ తప్పుడు పాజిటివ్‌లను ఉత్పత్తి చేస్తుంది. సింబాలిక్ ఎగ్జిక్యూషన్ సమయంలో ఒక లోపం స్టేట్ ప్రేరేపించబడితే, లోపాన్ని ప్రేరేపించే ఒక కాంక్రీట్ విలువను ఉత్పత్తి చేసి, సమస్యను పునరుత్పత్తి చేయడం సాధ్యమవుతుంది. + +సింబాలిక్ ఎగ్జిక్యూషన్ కొంతవరకు గణిత రుజువును కూడా అందించగలదు. పొంగి పొర్లు రక్షణతో కూడిన కాంట్రాక్ట్ ఫంక్షన్ యొక్క క్రింది ఉదాహరణను పరిగణించండి: + +``` +function safe_add(uint x, uint y) returns(uint z){ + + z = x + y; + require(z>=x); + require(z>=y); + + return z; +} +``` + +పూర్ణాంక ఓవర్‌ఫ్లోకు దారితీసే ఒక ఎగ్జిక్యూషన్ ట్రేస్ ఫార్ములాను సంతృప్తిపరచాల్సి ఉంటుంది: `z = x + y AND (z >= x) AND (z >= y) AND (z < x OR z < y)` అటువంటి ఫార్ములా పరిష్కరించబడే అవకాశం లేదు, అందువల్ల ఇది `safe_add` ఫంక్షన్ ఎప్పుడూ ఓవర్‌ఫ్లో కాదని గణిత రుజువుగా పనిచేస్తుంది. + +### స్మార్ట్ కాంట్రాక్టుల కొరకు ఫార్మల్ వెరిఫికేషన్‌ను ఎందుకు ఉపయోగించాలి? {#benefits-of-formal-verification} + +#### విశ్వసనీయత అవసరం {#need-for-reliability} + +ఫార్మల్ వెరిఫికేషన్ అనేది భద్రత-క్లిష్టమైన సిస్టమ్‌ల సరియైనతను అంచనా వేయడానికి ఉపయోగించబడుతుంది, దీని వైఫల్యం మరణం, గాయం లేదా ఆర్థిక నష్టం వంటి వినాశకరమైన పరిణామాలకు దారితీయవచ్చు. స్మార్ట్ కాంట్రాక్టులు భారీ మొత్తంలో విలువను నియంత్రించే అధిక-విలువ గల అప్లికేషన్లు, మరియు డిజైన్‌లో సాధారణ లోపాలు [వినియోగదారులకు తిరిగి పొందలేని నష్టాలకు](https://www.freecodecamp.org/news/a-hacker-stole-31m-of-ether-how-it-happened-and-what-it-means-for-ethereum-9e5dc29e33ce/amp/) దారితీయవచ్చు. అయితే, ఒక కాంట్రాక్ట్‌ను మోహరించడానికి ముందు ఫార్మల్‌గా ధృవీకరించడం, బ్లాక్‌చైన్‌లో నడుస్తున్నప్పుడు అది ఆశించిన విధంగా పని చేస్తుందనే హామీలను పెంచుతుంది. + +విశ్వసనీయత అనేది ఏ స్మార్ట్ కాంట్రాక్ట్‌లోనైనా చాలా కావలసిన నాణ్యత, ప్రత్యేకించి ఇతీరియము వర్చువల్ మషీన్ (EVM)లో మోహరించిన సంకేత భాష సాధారణంగా మార్చలేనిది కాబట్టి. ప్రయోగం తర్వాత అప్‌గ్రేడ్‌లు సులభంగా అందుబాటులో లేనందున, కాంట్రాక్టుల విశ్వసనీయతను హామీ ఇవ్వాల్సిన అవసరం ఫార్మల్ వెరిఫికేషన్‌ను అవసరం చేస్తుంది. ఫార్మల్ వెరిఫికేషన్ పూర్ణాంక అండర్‌ఫ్లోలు మరియు ఓవర్‌ఫ్లోలు, పునః ప్రవేశం, మరియు పేలవమైన గ్యాస్ ఆప్టిమైజేషన్‌లు వంటి క్లిష్టమైన సమస్యలను గుర్తించగలదు, ఇవి ఆడిటర్లు మరియు టెస్టర్లను దాటవేయవచ్చు. + +#### క్రియాత్మక సరియైనతను నిరూపించండి {#prove-functional-correctness} + +ప్రోగ్రామ్ టెస్టింగ్ అనేది ఒక స్మార్ట్ కాంట్రాక్ట్ కొన్ని అవసరాలను సంతృప్తిపరుస్తుందని నిరూపించడానికి అత్యంత సాధారణ పద్ధతి. ఇది ఒక కాంట్రాక్ట్‌ను అది నిర్వహించాల్సిన డేటా యొక్క నమూనాతో అమలు చేయడం మరియు దాని ప్రవర్తనను విశ్లేషించడం కలిగి ఉంటుంది. నమూనా డేటా కొరకు కాంట్రాక్ట్ ఆశించిన ఫలితాలను తిరిగి ఇస్తే, అప్పుడు అభివృద్ధి చేసేవాళ్లకు దాని సరియైనత యొక్క లక్ష్య రుజువు ఉంటుంది. + +అయితే, ఈ విధానం నమూనాలో భాగం కాని ఇన్‌పుట్ విలువల కొరకు సరైన అమలును నిరూపించలేదు. అందువల్ల, ఒక కాంట్రాక్ట్‌ను టెస్ట్ చేయడం బగ్‌లను గుర్తించడంలో సహాయపడవచ్చు (అంటే, కొన్ని సంకేత భాష పాత్‌లు ఎగ్జిక్యూషన్ సమయంలో కావలసిన ఫలితాలను తిరిగి ఇవ్వడంలో విఫలమైతే), కానీ **అది బగ్‌ల లేమిని నిశ్చయంగా నిరూపించలేదు**. + +దీనికి విరుద్ధంగా, ఫార్మల్ వెరిఫికేషన్ ఒక స్మార్ట్ కాంట్రాక్ట్ అనంతమైన శ్రేణి ఎగ్జిక్యూషన్‌ల కొరకు అవసరాలను సంతృప్తిపరుస్తుందని ఫార్మల్‌గా నిరూపించగలదు, కాంట్రాక్ట్‌ను అసలు నడపకుండానే. దీనికి సరైన కాంట్రాక్ట్ ప్రవర్తనలను ఖచ్చితంగా వివరించే ఒక ఫార్మల్ స్పెసిఫికేషన్‌ను సృష్టించడం మరియు కాంట్రాక్ట్ యొక్క సిస్టమ్ యొక్క ఒక ఫార్మల్ (గణిత) మోడల్‌ను అభివృద్ధి చేయడం అవసరం. అప్పుడు మనం కాంట్రాక్ట్ యొక్క మోడల్ మరియు దాని స్పెసిఫికేషన్ మధ్య స్థిరత్వం కొరకు తనిఖీ చేయడానికి ఒక ఫార్మల్ ప్రూఫ్ విధానాన్ని అనుసరించవచ్చు. + +ఫార్మల్ వెరిఫికేషన్‌తో, ఒక కాంట్రాక్ట్ యొక్క వ్యాపార లాజిక్ అవసరాలను సంతృప్తిపరుస్తుందా అని ధృవీకరించే ప్రశ్న ఒక గణిత ప్రతిపాదన, దానిని నిరూపించవచ్చు లేదా నిరాకరించవచ్చు. ఒక ప్రతిపాదనను ఫార్మల్‌గా నిరూపించడం ద్వారా, మనం పరిమిత సంఖ్యలో దశలతో అనంతమైన సంఖ్యలో టెస్ట్ కేసులను ధృవీకరించవచ్చు. ఈ పద్ధతిలో ఫార్మల్ వెరిఫికేషన్ ఒక స్పెసిఫికేషన్‌కు సంబంధించి ఒక కాంట్రాక్ట్ క్రియాత్మకంగా సరైనదని నిరూపించడానికి మంచి అవకాశాలను కలిగి ఉంటుంది. + +#### ఆదర్శ ధృవీకరణ లక్ష్యాలు {#ideal-verification-targets} + +ఒక ధృవీకరణ లక్ష్యం ఫార్మల్‌గా ధృవీకరించాల్సిన సిస్టమ్‌ను వివరిస్తుంది. ఫార్మల్ వెరిఫికేషన్ "ఎంబెడెడ్ సిస్టమ్స్" (ఒక పెద్ద సిస్టమ్‌లో భాగమైన చిన్న, సరళమైన సాఫ్ట్‌వేర్ ముక్కలు) లో ఉత్తమంగా ఉపయోగించబడుతుంది. అవి డొమైన్-నిర్దిష్ట లక్షణాలను ధృవీకరించడానికి ఉపకరణాలను సవరించడం సులభతరం చేస్తుంది కాబట్టి, కొన్ని నియమాలు ఉన్న ప్రత్యేక డొమైన్‌లకు కూడా అవి ఆదర్శంగా ఉంటాయి. + +స్మార్ట్ కాంట్రాక్టులు—కనీసం, కొంతవరకు—రెండు అవసరాలను తీరుస్తాయి. ఉదాహరణకు, ఇతీరియము కాంట్రాక్టుల చిన్న పరిమాణం వాటిని ఫార్మల్ వెరిఫికేషన్‌కు అనుకూలంగా చేస్తుంది. అదేవిధంగా, EVM సరళమైన నియమాలను అనుసరిస్తుంది, ఇది EVM లో నడుస్తున్న ప్రోగ్రామ్‌ల కొరకు సెమాంటిక్ లక్షణాలను నిర్దేశించడం మరియు ధృవీకరించడం సులభతరం చేస్తుంది. + +### వేగవంతమైన అభివృద్ధి చక్రం {#faster-development-cycle} + +మోడల్ చెకింగ్ మరియు సింబాలిక్ ఎగ్జిక్యూషన్ వంటి ఫార్మల్ వెరిఫికేషన్ టెక్నిక్‌లు, సాధారణంగా స్మార్ట్ కాంట్రాక్ట్ సంకేత భాష యొక్క సాధారణ విశ్లేషణ (టెస్టింగ్ లేదా ఆడిటింగ్ సమయంలో నిర్వహించబడేది) కంటే సమర్థవంతమైనవి. ఎందుకంటే ఫార్మల్ వెరిఫికేషన్ నిర్ధారణలను టెస్ట్ చేయడానికి సింబాలిక్ విలువలపై ఆధారపడుతుంది ("ఒక వినియోగదారుడు _n_ ఈథర్‌లను ఉపసంహరించుకోవడానికి ప్రయత్నిస్తే ఏమిటి?") టెస్టింగ్ వలె కాకుండా ఇది కాంక్రీట్ విలువలను ఉపయోగిస్తుంది ("ఒక వినియోగదారుడు 5 ఈథర్‌లను ఉపసంహరించుకోవడానికి ప్రయత్నిస్తే ఏమిటి?"). + +సింబాలిక్ ఇన్‌పుట్ వేరియబుల్స్ బహుళ కాంక్రీట్ విలువల వర్గాలను కవర్ చేయగలవు, కాబట్టి ఫార్మల్ వెరిఫికేషన్ విధానాలు తక్కువ సమయంలో ఎక్కువ సంకేత భాష కవరేజీని వాగ్దానం చేస్తాయి. సమర్థవంతంగా ఉపయోగించినప్పుడు, ఫార్మల్ వెరిఫికేషన్ అభివృద్ధి చేసేవాళ్ల కొరకు అభివృద్ధి చక్రాన్ని వేగవంతం చేస్తుంది. + +ఫార్మల్ వెరిఫికేషన్ ఖరీదైన డిజైన్ లోపాలను తగ్గించడం ద్వారా వికేంద్రీకృత అప్లికేషన్లు (డాప్స్) నిర్మించే ప్రక్రియను కూడా మెరుగుపరుస్తుంది. దుర్బలత్వాలను సరిచేయడానికి కాంట్రాక్టులను (సాధ్యమైన చోట) అప్‌గ్రేడ్ చేయడానికి కోడ్‌బేస్‌ల విస్తృతమైన పునర్విమర్శ మరియు అభివృద్ధిపై ఎక్కువ కృషి అవసరం. ఫార్మల్ వెరిఫికేషన్ కాంట్రాక్ట్ ఇంప్లిమెంటేషన్‌లలో అనేక లోపాలను గుర్తించగలదు, ఇవి టెస్టర్లు మరియు ఆడిటర్లను దాటవేయవచ్చు మరియు ఒక కాంట్రాక్ట్‌ను మోహరించడానికి ముందు ఆ సమస్యలను పరిష్కరించడానికి తగినంత అవకాశాన్ని అందిస్తుంది. + +## ఫార్మల్ వెరిఫికేషన్ యొక్క లోపాలు {#drawbacks-of-formal-verification} + +### మానవ శ్రమ ఖర్చు {#cost-of-manual-labor} + +ఫార్మల్ వెరిఫికేషన్, ప్రత్యేకించి సెమీ-ఆటోమేటెడ్ వెరిఫికేషన్, దీనిలో ఒక మానవుడు సరియైనత రుజువులను ఉత్పాదించడానికి ప్రూవర్‌కు మార్గనిర్దేశం చేస్తాడు, గణనీయమైన మానవ శ్రమ అవసరం. అంతేకాకుండా, ఫార్మల్ స్పెసిఫికేషన్ సృష్టించడం అనేది అధిక స్థాయి నైపుణ్యం అవసరమయ్యే ఒక సంక్లిష్టమైన కార్యాచరణ. + +ఈ కారకాలు (ప్రయత్నం మరియు నైపుణ్యం) ఫార్మల్ వెరిఫికేషన్‌ను టెస్టింగ్ మరియు ఆడిట్‌లు వంటి కాంట్రాక్టులలో సరియైనతను అంచనా వేసే సాధారణ పద్ధతులతో పోలిస్తే ఎక్కువ డిమాండ్ మరియు ఖరీదైనవిగా చేస్తాయి. అయినప్పటికీ, స్మార్ట్ కాంట్రాక్ట్ ఇంప్లిమెంటేషన్‌లలో లోపాల ఖర్చును బట్టి, పూర్తి ధృవీకరణ ఆడిట్ కొరకు ఖర్చు చెల్లించడం ఆచరణాత్మకమైనది. + +### తప్పుడు నెగెటివ్‌లు {#false-negatives} + +ఫార్మల్ వెరిఫికేషన్ స్మార్ట్ కాంట్రాక్ట్ యొక్క ఎగ్జిక్యూషన్ ఫార్మల్ స్పెసిఫికేషన్‌తో సరిపోలుతుందో లేదో మాత్రమే తనిఖీ చేయగలదు. అలాగే, స్పెసిఫికేషన్ స్మార్ట్ కాంట్రాక్ట్ యొక్క ఆశించిన ప్రవర్తనలను సరిగ్గా వివరిస్తుందని నిర్ధారించుకోవడం ముఖ్యం. + +స్పెసిఫికేషన్లు సరిగా వ్రాయబడకపోతే, లక్షణాల ఉల్లంఘనలు—ఇవి దుర్బలమైన ఎగ్జిక్యూషన్‌లను సూచిస్తాయి—ఫార్మల్ వెరిఫికేషన్ ఆడిట్ ద్వారా గుర్తించబడవు. ఈ సందర్భంలో, ఒక అభివృద్ధి చేసేవాడు కాంట్రాక్ట్ బగ్-రహితమని తప్పుగా భావించవచ్చు. + +### పనితీరు సమస్యలు {#performance-issues} + +ఫార్మల్ వెరిఫికేషన్ అనేక పనితీరు సమస్యలను ఎదుర్కొంటుంది. ఉదాహరణకు, మోడల్ చెకింగ్ మరియు సింబాలిక్ చెకింగ్ సమయంలో ఎదుర్కొనే స్టేట్ మరియు పాత్ ఎక్స్‌ప్లోజన్ సమస్యలు, వరుసగా, ధృవీకరణ ప్రక్రియలను ప్రభావితం చేయవచ్చు. అలాగే, ఫార్మల్ వెరిఫికేషన్ ఉపకరణాలు తరచుగా వాటి అంతర్లీన లేయర్‌లో SMT సాల్వర్‌లు మరియు ఇతర కన్‌స్ట్రైంట్ సాల్వర్‌లను ఉపయోగిస్తాయి, మరియు ఈ సాల్వర్‌లు గణనపరంగా తీవ్రమైన ప్రక్రియలపై ఆధారపడతాయి. + +అలాగే, ప్రోగ్రామ్ వెరిఫైయర్‌లు ఒక లక్షణం (లాజికల్ ఫార్ములాగా వర్ణించబడింది) సంతృప్తిపరచగలదా లేదా కాదా అని నిర్ధారించడం ఎల్లప్పుడూ సాధ్యం కాదు ("[నిర్ణయాత్మకత సమస్య](https://en.wikipedia.org/wiki/Decision_problem)") ఎందుకంటే ఒక ప్రోగ్రామ్ ఎప్పటికీ ముగియకపోవచ్చు. అలాగే, ఒక కాంట్రాక్ట్ బాగా స్పెసిఫై చేయబడినప్పటికీ కొన్ని లక్షణాలను నిరూపించడం అసాధ్యం కావచ్చు. + +## ఇతీరియము స్మార్ట్ కాంట్రాక్టుల కొరకు ఫార్మల్ వెరిఫికేషన్ ఉపకరణాలు {#formal-verification-tools} + +### ఫార్మల్ స్పెసిఫికేషన్లను సృష్టించడం కొరకు స్పెసిఫికేషన్ భాషలు {#specification-languages} + +**చట్టం**: __చట్టం నిల్వ అప్‌డేట్‌లు, ప్రీ/పోస్ట్ షరతులు మరియు కాంట్రాక్ట్ ఇన్‌వేరియంట్‌ల స్పెసిఫికేషన్‌ను అనుమతిస్తుంది. దాని ఉపకరణాల సూట్ Coq, SMT సాల్వర్‌లు లేదా hevm ద్వారా అనేక లక్షణాలను నిరూపించగల ప్రూఫ్ బ్యాకెండ్‌లను కూడా కలిగి ఉంది.__ + +- [GitHub](https://github.com/ethereum/act) +- [డాక్యుమెంటేషన్](https://github.com/argotorg/act) + +**Scribble** - __Scribble స్పెసిఫికేషన్ భాషలోని సంకేత భాష ఉల్లేఖనాలను స్పెసిఫికేషన్‌ను తనిఖీ చేసే కాంక్రీట్ నిర్ధారణలుగా మారుస్తుంది.__ + +- [దస్తావేజులను సమకూర్చుట](https://docs.scribble.codes/) + +**Dafny** - __Dafny అనేది ఒక వెరిఫికేషన్-సిద్ధ ప్రోగ్రామింగ్ భాష, ఇది సంకేత భాష యొక్క సరియైనత గురించి తర్కించడానికి మరియు నిరూపించడానికి ఉన్నత-స్థాయి ఉల్లేఖనాలపై ఆధారపడుతుంది.__ + +- [GitHub](https://github.com/dafny-lang/dafny) + +### సరియైనతను తనిఖీ చేయడం కొరకు ప్రోగ్రామ్ వెరిఫైయర్‌లు {#program-verifiers} + +**Certora Prover** - _Certora Prover అనేది స్మార్ట్ కాంట్రాక్టులలో సంకేత భాష సరియైనతను తనిఖీ చేయడానికి ఒక ఆటోమేటిక్ ఫార్మల్ వెరిఫికేషన్ ఉపకరణం. స్పెసిఫికేషన్లు CVL (Certora వెరిఫికేషన్ భాష)లో వ్రాయబడతాయి, ప్రాపర్టీ ఉల్లంఘనలు స్టాటిక్ విశ్లేషణ మరియు కన్‌స్ట్రైంట్-సాల్వింగ్ కలయికను ఉపయోగించి గుర్తించబడతాయి._ + +- [వెబ్‌సైట్](https://www.certora.com/) +- [దస్తావేజులను సమకూర్చుట](https://docs.certora.com/en/latest/index.html) + +**Solidity SMTChecker** - __Solidity యొక్క SMTChecker SMT (సాటిస్‌ఫైయబిలిటీ మోడ్యులో థియరీలు) మరియు హార్న్ సాల్వింగ్‌పై ఆధారపడిన ఒక అంతర్నిర్మిత మోడల్ చెక్కర్. ఇది సంకలనం సమయంలో ఒక కాంట్రాక్ట్ యొక్క సోర్స్ కోడ్ స్పెసిఫికేషన్‌లతో సరిపోలుతుందో లేదో నిర్ధారిస్తుంది మరియు భద్రతా లక్షణాల ఉల్లంఘనల కొరకు స్టాటిక్‌గా తనిఖీ చేస్తుంది.__ + +- [GitHub](https://github.com/ethereum/solidity) + +**solc-verify** - __solc-verify అనేది Solidity కంపైలర్ యొక్క విస్తరించిన వెర్షన్, ఇది ఉల్లేఖనాలు మరియు మాడ్యులర్ ప్రోగ్రామ్ వెరిఫికేషన్ ఉపయోగించి Solidity సంకేత భాషపై ఆటోమేటెడ్ ఫార్మల్ వెరిఫికేషన్‌ను నిర్వహించగలదు.__ + +- [GitHub](https://github.com/SRI-CSL/solidity) + +**KEVM** - __KEVM అనేది K ఫ్రేమ్‌వర్క్‌లో వ్రాయబడిన ఇతీరియము వర్చువల్ మషీన్ (EVM) యొక్క ఫార్మల్ సెమాంటిక్స్. KEVM ఎగ్జిక్యూటబుల్ మరియు రీచబిలిటీ లాజిక్ ఉపయోగించి నిర్దిష్ట ప్రాపర్టీ-సంబంధిత నిర్ధారణలను నిరూపించగలదు.__ + +- [GitHub](https://github.com/runtimeverification/evm-semantics) +- [దస్తావేజులను సమకూర్చుట](https://jellopaper.org/) + +### థీరమ్ ప్రూవింగ్ కొరకు లాజికల్ ఫ్రేమ్‌వర్క్‌లు {#theorem-provers} + +**Isabelle** - _Isabelle/HOL అనేది ఒక ప్రూఫ్ అసిస్టెంట్, ఇది గణిత ఫార్ములాలను ఒక ఫార్మల్ భాషలో వ్యక్తీకరించడానికి అనుమతిస్తుంది మరియు ఆ ఫార్ములాలను నిరూపించడానికి ఉపకరణాలను అందిస్తుంది. ప్రధాన అప్లికేషన్ గణిత రుజువుల ఫార్మలైజేషన్ మరియు ముఖ్యంగా ఫార్మల్ వెరిఫికేషన్, ఇందులో కంప్యూటర్ హార్డ్‌వేర్ లేదా సాఫ్ట్‌వేర్ యొక్క సరియైనతను నిరూపించడం మరియు కంప్యూటర్ భాషలు మరియు ప్రోటోకాల్‌ల లక్షణాలను నిరూపించడం ఉంటుంది._ + +- [GitHub](https://github.com/isabelle-prover) +- [దస్తావేజులను సమకూర్చుట](https://isabelle.in.tum.de/documentation.html) + +**Rocq** - _Rocq అనేది ఒక ఇంటరాక్టివ్ థీరమ్ ప్రూవర్, ఇది మీకు థీరమ్‌లను ఉపయోగించి ప్రోగ్రామ్‌లను నిర్వచించడానికి మరియు సరియైనత యొక్క మెషిన్-చెక్డ్ ప్రూఫ్‌లను ఇంటరాక్టివ్‌గా ఉత్పత్తి చేయడానికి అనుమతిస్తుంది._ + +- [GitHub](https://github.com/rocq-prover/rocq) +- [దస్తావేజులను సమకూర్చుట](https://rocq-prover.org/docs) + +### స్మార్ట్ కాంట్రాక్టులలో దుర్బలమైన ప్యాట్రన్‌లను గుర్తించడం కొరకు సింబాలిక్ ఎగ్జిక్యూషన్-ఆధారిత ఉపకరణాలు {#symbolic-execution-tools} + +**Manticore** - __సింబాలిక్ ఎగ్జిక్యూషన్‌పై ఆధారపడిన EVM బైట్‌కోడ్ విశ్లేషణ ఉపకరణం.__ + +- [GitHub](https://github.com/trailofbits/manticore) +- [దస్తావేజులను సమకూర్చుట](https://github.com/trailofbits/manticore/wiki) + +**hevm** - __hevm అనేది EVM బైట్‌కోడ్ కొరకు ఒక సింబాలిక్ ఎగ్జిక్యూషన్ ఇంజిన్ మరియు ఈక్వివలెన్స్ చెక్కర్.__ + +- [GitHub](https://github.com/dapphub/dapptools/tree/master/src/hevm) + +**Mythril** - _ఇతీరియము స్మార్ట్ కాంట్రాక్టులలో దుర్బలత్వాలను గుర్తించడానికి ఒక సింబాలిక్ ఎగ్జిక్యూషన్ ఉపకరణం_ + +- [GitHub](https://github.com/ConsenSys/mythril-classic) +- [డాక్యుమెంటేషన్](https://mythril-classic.readthedocs.io/en/develop/) + +## మరింత సమాచారం {#further-reading} + +- [స్మార్ట్ కాంట్రాక్టుల ఫార్మల్ వెరిఫికేషన్ ఎలా పనిచేస్తుంది](https://runtimeverification.com/blog/how-formal-verification-of-smart-contracts-works/) +- [ఫార్మల్ వెరిఫికేషన్ దోషరహిత స్మార్ట్ కాంట్రాక్టులను ఎలా నిర్ధారించగలదు](https://media.consensys.net/how-formal-verification-can-ensure-flawless-smart-contracts-cbda8ad99bd1) +- [ఇతీరియము పర్యావరణ వ్యవస్థలో ఫార్మల్ వెరిఫికేషన్ ప్రాజెక్టుల యొక్క ఒక అవలోకనం](https://github.com/leonardoalt/ethereum_formal_verification_overview) +- [ఇతీరియము 2.0 డిపాజిట్ స్మార్ట్ కాంట్రాక్ట్ యొక్క ఎండ్-టు-ఎండ్ ఫార్మల్ వెరిఫికేషన్](https://runtimeverification.com/blog/end-to-end-formal-verification-of-ethereum-2-0-deposit-smart-contract/) +- [ప్రపంచంలో అత్యంత ప్రజాదరణ పొందిన స్మార్ట్ కాంట్రాక్ట్‌ను అధికారికంగా ధృవీకరించడం](https://www.zellic.io/blog/formal-verification-weth) +- [SMTChecker మరియు ఫార్మల్ వెరిఫికేషన్](https://docs.soliditylang.org/en/v0.8.15/smtchecker.html) diff --git a/public/content/translations/te/developers/docs/smart-contracts/index.md b/public/content/translations/te/developers/docs/smart-contracts/index.md new file mode 100644 index 00000000000..454cc5d44c1 --- /dev/null +++ b/public/content/translations/te/developers/docs/smart-contracts/index.md @@ -0,0 +1,112 @@ +--- +title: "స్మార్ట్ కాంట్రాక్టులకు పరిచయం" +description: "స్మార్ట్ కాంట్రాక్ట్‌ల యొక్క అవలోకనం, వాటి ప్రత్యేక లక్షణాలు మరియు పరిమితులపై దృష్టి సారించడం." +lang: te +--- + +## స్మార్ట్ కాంట్రాక్ట్ అంటే ఏమిటి? {#what-is-a-smart-contract} + +"స్మార్ట్ కాంట్రాక్ట్" అనేది కేవలం ఎథేరియం బ్లాక్‌చైన్‌పై నడిచే ఒక ప్రోగ్రామ్. ఇది ఎథేరియం బ్లాక్‌చైన్‌లోని ఒక నిర్దిష్ట చిరునామాలో ఉండే కోడ్ (దాని ఫంక్షన్‌లు) మరియు డేటా (దాని స్టేట్) యొక్క సమాహారం. + +స్మార్ట్ కాంట్రాక్ట్‌లు ఒక రకమైన [ఎథేరియం అకౌంట్](/developers/docs/accounts/). అంటే వాటికి బ్యాలెన్స్ ఉంటుంది మరియు లావాదేవీలకు లక్ష్యంగా ఉండవచ్చు. అయితే అవి వినియోగదారుచే నియంత్రించబడవు, బదులుగా అవి నెట్‌వర్క్‌లో డిప్లాయ్ చేయబడి, ప్రోగ్రామ్ చేయబడిన విధంగా రన్ అవుతాయి. వినియోగదారు అకౌంట్లు స్మార్ట్ కాంట్రాక్ట్‌లో నిర్వచించబడిన ఫంక్షన్‌ను అమలు చేసే లావాదేవీలను సమర్పించడం ద్వారా స్మార్ట్ కాంట్రాక్ట్‌తో ఇంటరాక్ట్ కావచ్చు. స్మార్ట్ కాంట్రాక్ట్‌లు, ఒక సాధారణ కాంట్రాక్ట్ లాగా, నియమాలను నిర్వచించగలవు మరియు కోడ్ ద్వారా వాటిని స్వయంచాలకంగా అమలు చేయగలవు. స్మార్ట్ కాంట్రాక్ట్‌లు డిఫాల్ట్‌గా తొలగించబడవు, మరియు వాటితో ఇంటరాక్షన్‌లు తిరిగి మార్చలేనివి. + +## అవసరాలు {#prerequisites} + +మీరు ఇప్పుడే ప్రారంభిస్తున్నట్లయితే లేదా తక్కువ సాంకేతిక పరిచయం కోసం చూస్తున్నట్లయితే, మేము మా [స్మార్ట్ కాంట్రాక్ట్‌ల పరిచయాన్ని](/smart-contracts/) సిఫార్సు చేస్తున్నాము. + +స్మార్ట్ కాంట్రాక్ట్‌ల ప్రపంచంలోకి ప్రవేశించే ముందు మీరు [అకౌంట్లు](/developers/docs/accounts/), [లావాదేవీలు](/developers/docs/transactions/) మరియు [ఎథేరియం వర్చువల్ మషీన్](/developers/docs/evm/) గురించి చదివారని నిర్ధారించుకోండి. + +## ఒక డిజిటల్ వెండింగ్ మషీన్ {#a-digital-vending-machine} + +[నిక్ స్జాబో](https://unenumerated.blogspot.com/) వివరించినట్లుగా, స్మార్ట్ కాంట్రాక్ట్‌కు ఉత్తమ రూపకం బహుశా వెండింగ్ మషీన్. సరైన ఇన్‌పుట్‌లతో, ఒక నిర్దిష్ట అవుట్‌పుట్ హామీ ఇవ్వబడుతుంది. + +వెండింగ్ మషీన్ నుండి స్నాక్ పొందడానికి: + +``` +డబ్బు + స్నాక్ ఎంపిక = స్నాక్ ఇవ్వబడింది +``` + +ఈ లాజిక్ వెండింగ్ మషీన్‌లో ప్రోగ్రామ్ చేయబడింది. + +ఒక స్మార్ట్ కాంట్రాక్ట్, వెండింగ్ మషీన్ లాగా, దానిలో లాజిక్ ప్రోగ్రామ్ చేయబడి ఉంటుంది. ఈ వెండింగ్ మషీన్ సాలిడిటీలో వ్రాసిన స్మార్ట్ కాంట్రాక్ట్ అయితే ఎలా ఉంటుందో ఇక్కడ ఒక సాధారణ ఉదాహరణ ఉంది: + +```solidity +pragma solidity 0.8.7; + +contract VendingMachine { + + // కాంట్రాక్ట్ యొక్క స్టేట్ వేరియబుల్స్‌ను డిక్లేర్ చేయండి + address public owner; + mapping (address => uint) public cupcakeBalances; + + // 'VendingMachine' కాంట్రాక్ట్ డిప్లాయ్ చేయబడినప్పుడు: + // 1. డిప్లాయ్ చేసే చిరునామాను కాంట్రాక్ట్ యజమానిగా సెట్ చేయండి + // 2. డిప్లాయ్ చేయబడిన స్మార్ట్ కాంట్రాక్ట్ యొక్క కప్‌కేక్ బ్యాలెన్స్‌ను 100కి సెట్ చేయండి + constructor() { + owner = msg.sender; + cupcakeBalances[address(this)] = 100; + } + + // స్మార్ట్ కాంట్రాక్ట్ యొక్క కప్‌కేక్ బ్యాలెన్స్‌ను పెంచడానికి యజమానిని అనుమతించండి + function refill(uint amount) public { + require(msg.sender == owner, "యజమాని మాత్రమే రీఫిల్ చేయగలరు."); + cupcakeBalances[address(this)] += amount; + } + + // కప్‌కేక్‌లను కొనుగోలు చేయడానికి ఎవరినైనా అనుమతించండి + function purchase(uint amount) public payable { + require(msg.value >= amount * 1 ether, "మీరు కప్‌కేక్‌కు కనీసం 1 ETH చెల్లించాలి"); + require(cupcakeBalances[address(this)] >= amount, "ఈ కొనుగోలును పూర్తి చేయడానికి స్టాక్‌లో తగినన్ని కప్‌కేక్‌లు లేవు"); + cupcakeBalances[address(this)] -= amount; + cupcakeBalances[msg.sender] += amount; + } +} +``` + +వెండింగ్ మషీన్ ఒక విక్రేత ఉద్యోగి అవసరాన్ని ఎలా తొలగిస్తుందో, అదే విధంగా స్మార్ట్ కాంట్రాక్ట్‌లు అనేక పరిశ్రమలలో మధ్యవర్తులను భర్తీ చేయగలవు. + +## అనుమతి రహితం {#permissionless} + +ఎవరైనా స్మార్ట్ కాంట్రాక్ట్ వ్రాసి దానిని నెట్‌వర్క్‌లో డిప్లాయ్ చేయవచ్చు. మీరు [స్మార్ట్ కాంట్రాక్ట్ భాషలో](/developers/docs/smart-contracts/languages/) కోడ్ చేయడం ఎలాగో నేర్చుకోవాలి మరియు మీ కాంట్రాక్ట్‌ను డిప్లాయ్ చేయడానికి తగినంత ETH కలిగి ఉండాలి. స్మార్ట్ కాంట్రాక్ట్‌ను డిప్లాయ్ చేయడం సాంకేతికంగా ఒక లావాదేవీ, కాబట్టి మీరు ఒక సాధారణ ETH బదిలీ కోసం గ్యాస్ చెల్లించిన విధంగానే [గ్యాస్](/developers/docs/gas/) చెల్లించాలి. అయితే, కాంట్రాక్ట్ డిప్లాయ్‌మెంట్ కోసం గ్యాస్ ఖర్చులు చాలా ఎక్కువగా ఉంటాయి. + +ఎథేరియం స్మార్ట్ కాంట్రాక్ట్‌లను వ్రాయడానికి డెవలపర్-ఫ్రెండ్లీ భాషలను కలిగి ఉంది: + +- Solidity +- Vyper + +[భాషల గురించి మరింత](/developers/docs/smart-contracts/languages/) + +అయితే, ఎథేరియం వర్చువల్ మషీన్ కాంట్రాక్ట్‌ను ఇంటర్‌ప్రెట్ చేసి, స్టోర్ చేయగలిగేలా వాటిని డిప్లాయ్ చేయడానికి ముందు కంపైల్ చేయాలి. [కంపైలేషన్ గురించి మరింత](/developers/docs/smart-contracts/compiling/) + +## కంపోజబిలిటీ {#composability} + +స్మార్ట్ కాంట్రాక్ట్‌లు ఎథేరియంపై పబ్లిక్‌గా ఉంటాయి మరియు వాటిని ఓపెన్ APIలుగా భావించవచ్చు. అంటే, సాధ్యమయ్యే వాటిని బాగా విస్తరించడానికి మీరు మీ స్వంత స్మార్ట్ కాంట్రాక్ట్‌లో ఇతర స్మార్ట్ కాంట్రాక్ట్‌లను కాల్ చేయవచ్చు. కాంట్రాక్ట్‌లు ఇతర కాంట్రాక్ట్‌లను కూడా డిప్లాయ్ చేయగలవు. + +[స్మార్ట్ కాంట్రాక్ట్ కంపోజబిలిటీ](/developers/docs/smart-contracts/composability/) గురించి మరింత తెలుసుకోండి. + +## పరిమితులు {#limitations} + +స్మార్ట్ కాంట్రాక్ట్‌లు ఒంటరిగా "వాస్తవ-ప్రపంచ" ఈవెంట్‌ల గురించి సమాచారాన్ని పొందలేవు ఎందుకంటే అవి ఆఫ్‌చైన్ సోర్స్‌ల నుండి డేటాను తిరిగి పొందలేవు. అంటే అవి వాస్తవ ప్రపంచంలోని ఈవెంట్‌లకు స్పందించలేవు. ఇది డిజైన్ ప్రకారమే. బాహ్య సమాచారంపై ఆధారపడటం ఏకాభిప్రాయాన్ని ప్రమాదంలో పడేయవచ్చు, ఇది భద్రత మరియు వికేంద్రీకరణకు ముఖ్యం. + +అయితే, బ్లాక్‌చైన్ అప్లికేషన్‌లు ఆఫ్‌చైన్ డేటాను ఉపయోగించడం ముఖ్యం. దీనికి పరిష్కారం [ఒరాకిల్స్](/developers/docs/oracles/), ఇవి ఆఫ్‌చైన్ డేటాను గ్రహించి స్మార్ట్ కాంట్రాక్ట్‌లకు అందుబాటులో ఉంచే టూల్స్. + +స్మార్ట్ కాంట్రాక్ట్‌ల యొక్క మరో పరిమితి గరిష్ట కాంట్రాక్ట్ పరిమాణం. ఒక స్మార్ట్ కాంట్రాక్ట్ గరిష్టంగా 24KB ఉండగలదు లేదా దానికి గ్యాస్ అయిపోతుంది. [ది డైమండ్ ప్యాటర్న్](https://eips.ethereum.org/EIPS/eip-2535) ఉపయోగించి దీనిని అధిగమించవచ్చు. + +## మల్టీసిగ్ కాంట్రాక్ట్‌లు {#multisig} + +మల్టీసిగ్ (బహుళ-సంతకం) కాంట్రాక్ట్‌లు అనేవి ఒక లావాదేవీని అమలు చేయడానికి బహుళ చెల్లుబాటు అయ్యే సంతకాలు అవసరమయ్యే స్మార్ట్ కాంట్రాక్ట్ అకౌంట్లు. గణనీయమైన మొత్తంలో ఈథర్ లేదా ఇతర టోకెన్‌లను కలిగి ఉన్న కాంట్రాక్ట్‌ల కోసం వైఫల్యం యొక్క ఏకైక పాయింట్లను నివారించడానికి ఇది చాలా ఉపయోగకరంగా ఉంటుంది. మల్టీసిగ్‌లు కాంట్రాక్ట్ ఎగ్జిక్యూషన్ మరియు కీ నిర్వహణ బాధ్యతను బహుళ పార్టీల మధ్య విభజిస్తాయి మరియు ఒకే ప్రైవేట్ కీని కోల్పోవడం వల్ల నిధుల కోలుకోలేని నష్టాన్ని నివారిస్తాయి. ఈ కారణాల వల్ల, మల్టీసిగ్ కాంట్రాక్ట్‌లను సాధారణ DAO పాలన కోసం ఉపయోగించవచ్చు. మల్టీసిగ్‌లు అమలు చేయడానికి M సాధ్యమైన ఆమోదయోగ్యమైన సంతకాల నుండి N సంతకాలు అవసరం (ఇక్కడ N ≤ M, మరియు M > 1). `N = 3, M = 5` మరియు `N = 4, M = 7` సాధారణంగా ఉపయోగించబడతాయి. ఒక 4/7 మల్టీసిగ్‌కు ఏడు సాధ్యమైన చెల్లుబాటు అయ్యే సంతకాలలో నాలుగు అవసరం. మూడు సంతకాలు పోయినప్పటికీ నిధులను తిరిగి పొందవచ్చని దీని అర్థం. ఈ సందర్భంలో, కాంట్రాక్ట్ అమలు కావడానికి కీ-హోల్డర్లలో మెజారిటీ అంగీకరించి, సంతకం చేయాలని కూడా దీని అర్థం. + +## స్మార్ట్ కాంట్రాక్ట్ వనరులు {#smart-contract-resources} + +**OpenZeppelin కాంట్రాక్ట్స్ -** **_సురక్షితమైన స్మార్ట్ కాంట్రాక్ట్ డెవలప్‌మెంట్ కోసం లైబ్రరీ._** + +- [openzeppelin.com/contracts/](https://openzeppelin.com/contracts/) +- [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts) +- [కమ్యూనిటీ ఫోరమ్](https://forum.openzeppelin.com/c/general/16) + +## మరింత సమాచారం {#further-reading} + +- [కాయిన్‌బేస్: స్మార్ట్ కాంట్రాక్ట్ అంటే ఏమిటి?](https://www.coinbase.com/learn/crypto-basics/what-is-a-smart-contract) +- [చైన్‌లింక్: స్మార్ట్ కాంట్రాక్ట్ అంటే ఏమిటి?](https://chain.link/education/smart-contracts) +- [వీడియో: సరళంగా వివరించబడింది - స్మార్ట్ కాంట్రాక్ట్‌లు](https://youtu.be/ZE2HxTmxfrI) +- [Cyfrin Updraft: Web3 లెర్నింగ్ మరియు ఆడిటింగ్ ప్లాట్‌ఫారమ్](https://updraft.cyfrin.io) diff --git a/public/content/translations/te/developers/docs/smart-contracts/languages/index.md b/public/content/translations/te/developers/docs/smart-contracts/languages/index.md new file mode 100644 index 00000000000..70e8848acc2 --- /dev/null +++ b/public/content/translations/te/developers/docs/smart-contracts/languages/index.md @@ -0,0 +1,343 @@ +--- +title: "స్మార్ట్ కాంట్రాక్ట్ భాషలు" +description: "రెండు ప్రధాన స్మార్ట్ కాంట్రాక్ట్ భాషల - సాలిడిటీ మరియు వైపర్ - యొక్క అవలోకనం మరియు పోలిక." +lang: te +--- + +ఎథేరియం గురించిన ఒక గొప్ప విషయం ఏమిటంటే, స్మార్ట్ కాంట్రాక్టులను సాపేక్షంగా డెవలపర్-స్నేహపూర్వక భాషలను ఉపయోగించి ప్రోగ్రామ్ చేయవచ్చు. మీకు పైథాన్ లేదా ఏదైనా [కర్లీ-బ్రాకెట్ భాష](https://wikipedia.org/wiki/List_of_programming_languages_by_type#Curly-bracket_languages)తో అనుభవం ఉంటే, మీరు పరిచితమైన సింటాక్స్‌తో కూడిన భాషను కనుగొనవచ్చు. + +అత్యంత చురుకైన మరియు నిర్వహించబడుతున్న రెండు భాషలు: + +- Solidity +- Vyper + +రీమిక్స్ IDE సాలిడిటీ మరియు వైపర్ రెండింటిలోనూ కాంట్రాక్టులను సృష్టించడానికి మరియు పరీక్షించడానికి ఒక సమగ్ర అభివృద్ధి వాతావరణాన్ని అందిస్తుంది. కోడింగ్ ప్రారంభించడానికి [ఇన్-బ్రౌజర్ రీమిక్స్ IDEని ప్రయత్నించండి](https://remix.ethereum.org). + +మరింత అనుభవం ఉన్న డెవలపర్లు [ఎథేరియం వర్చువల్ మెషీన్](/developers/docs/evm/) కోసం ఒక మధ్యంతర భాష అయిన Yul, లేదా Yul కు పొడిగింపు అయిన Yul+ ను కూడా ఉపయోగించాలనుకోవచ్చు. + +మీకు ఆసక్తి ఉండి, ఇంకా భారీ అభివృద్ధిలో ఉన్న కొత్త భాషలను పరీక్షించడానికి సహాయం చేయాలనుకుంటే, ప్రస్తుతం ఇంకా శైశవ దశలో ఉన్న ఒక అభివృద్ధి చెందుతున్న స్మార్ట్ కాంట్రాక్ట్ భాష అయిన Fe తో మీరు ప్రయోగాలు చేయవచ్చు. + +## అవసరాలు {#prerequisites} + +ప్రోగ్రామింగ్ భాషల, ముఖ్యంగా జావాస్క్రిప్ట్ లేదా పైథాన్ యొక్క మునుపటి జ్ఞానం, స్మార్ట్ కాంట్రాక్ట్ భాషలలోని తేడాలను అర్థం చేసుకోవడంలో మీకు సహాయపడుతుంది. భాషా పోలికలలోకి చాలా లోతుగా వెళ్లే ముందు మీరు స్మార్ట్ కాంట్రాక్టులను ఒక భావనగా అర్థం చేసుకోవాలని కూడా మేము సిఫార్సు చేస్తున్నాము. [స్మార్ట్ కాంట్రాక్టులకు పరిచయం](/developers/docs/smart-contracts/). + +## సాలిడిటీ {#solidity} + +- స్మార్ట్ కాంట్రాక్టులను అమలు చేయడం కోసం ఆబ్జెక్ట్-ఓరియెంటెడ్, ఉన్నత-స్థాయి భాష. +- C++ ద్వారా అత్యంత గాఢంగా ప్రభావితమైన కర్లీ-బ్రాకెట్ భాష. +- స్టాటిక్‌గా టైప్ చేయబడింది (ఒక వేరియబుల్ రకం కంపైల్ సమయంలో తెలుస్తుంది). +- మద్దతు ఇస్తుంది: + - ఇన్హెరిటెన్స్ (మీరు ఇతర కాంట్రాక్టులను విస్తరించవచ్చు). + - లైబ్రరీలు (మీరు పునర్వినియోగ కోడ్‌ను సృష్టించవచ్చు, దానిని మీరు ఇతర ఆబ్జెక్ట్ ఓరియెంటెడ్ ప్రోగ్రామింగ్ భాషలలో ఒక స్టాటిక్ క్లాస్‌లోని స్టాటిక్ ఫంక్షన్ల వలె వివిధ కాంట్రాక్టుల నుండి కాల్ చేయవచ్చు). + - సంక్లిష్టమైన యూజర్-డిఫైన్డ్ రకాలు. + +### ముఖ్యమైన లింకులు {#important-links} + +- [డాక్యుమెంటేషన్](https://docs.soliditylang.org/en/latest/) +- [సాలిడిటీ లాంగ్వేజ్ పోర్టల్](https://soliditylang.org/) +- [ఉదాహరణకు సాలిడిటీ](https://docs.soliditylang.org/en/latest/solidity-by-example.html) +- [GitHub](https://github.com/ethereum/solidity/) +- [సాలిడిటీ గిట్టర్ చాట్‌రూమ్](https://gitter.im/ethereum/solidity) [సాలిడిటీ మ్యాట్రిక్స్ చాట్‌రూమ్](https://matrix.to/#/#ethereum_solidity:gitter.im)కి బ్రిడ్జ్ చేయబడింది +- [చీట్ షీట్](https://reference.auditless.com/cheatsheet) +- [సాలిడిటీ బ్లాగ్](https://blog.soliditylang.org/) +- [సాలిడిటీ ట్విట్టర్](https://twitter.com/solidity_lang) + +### ఉదాహరణ కాంట్రాక్ట్ {#example-contract} + +```solidity +// SPDX-లైసెన్స్-ఐడెంటిఫైయర్: GPL-3.0 +pragma solidity >= 0.7.0; + +contract Coin { + // "పబ్లిక్" అనే కీవర్డ్ వేరియబుల్స్‌ను చేస్తుంది + // ఇతర కాంట్రాక్టుల నుండి యాక్సెస్ చేయగలవు + address public minter; + mapping (address => uint) public balances; + + // ఈవెంట్‌లు నిర్దిష్టమైన వాటికి ప్రతిస్పందించడానికి క్లయింట్‌లను అనుమతిస్తాయి + // మీరు ప్రకటించే కాంట్రాక్ట్ మార్పులు + event Sent(address from, address to, uint amount); + + // కాంట్రాక్ట్ ఉన్నప్పుడు మాత్రమే కన్స్ట్రక్టర్ కోడ్ అమలు చేయబడుతుంది + // సృష్టించబడింది + constructor() { + minter = msg.sender; + } + + // కొత్తగా సృష్టించబడిన నాణేల మొత్తాన్ని ఒక చిరునామాకు పంపుతుంది + // కాంట్రాక్ట్ సృష్టికర్త ద్వారా మాత్రమే పిలువబడుతుంది + function mint(address receiver, uint amount) public { + require(msg.sender == minter); + require(amount < 1e60); + balances[receiver] += amount; + } + + // ఉన్న నాణేల మొత్తాన్ని పంపుతుంది + // ఏ కాలర్ నుండి అయినా ఒక చిరునామాకు + function send(address receiver, uint amount) public { + require(amount <= balances[msg.sender], "Insufficient balance."); + balances[msg.sender] -= amount; + balances[receiver] += amount; + emit Sent(msg.sender, receiver, amount); + } +} +``` + +ఈ ఉదాహరణ సాలిడిటీ కాంట్రాక్ట్ సింటాక్స్ ఎలా ఉంటుందో మీకు ఒక అవగాహన ఇవ్వాలి. ఫంక్షన్లు మరియు వేరియబుల్స్ యొక్క మరింత వివరణాత్మక వర్ణన కోసం, [డాక్స్‌ని చూడండి](https://docs.soliditylang.org/en/latest/contracts.html). + +## వైపర్ {#vyper} + +- పైథానిక్ ప్రోగ్రామింగ్ భాష +- బలమైన టైపింగ్ +- చిన్న మరియు అర్థమయ్యే కంపైలర్ కోడ్ +- సమర్థవంతమైన బైట్‌కోడ్ ఉత్పత్తి +- కాంట్రాక్టులను మరింత సురక్షితంగా మరియు ఆడిట్ చేయడానికి సులభతరం చేసే లక్ష్యంతో సాలిడిటీ కంటే ఉద్దేశపూర్వకంగా తక్కువ ఫీచర్లను కలిగి ఉంది. వైపర్ వీటికి మద్దతు ఇవ్వదు: + - మాడిఫైయర్‌లు + - ఇన్హెరిటెన్స్ + - ఇన్‌లైన్ అసెంబ్లీ + - ఫంక్షన్ ఓవర్‌లోడింగ్ + - ఆపరేటర్ ఓవర్‌లోడింగ్ + - రికర్సివ్ కాలింగ్ + - అనంత-నిడివి లూప్‌లు + - బైనరీ ఫిక్స్‌డ్ పాయింట్లు + +మరింత సమాచారం కోసం, [వైపర్ హేతుబద్ధతను చదవండి](https://vyper.readthedocs.io/en/latest/index.html). + +### ముఖ్యమైన లింకులు {#important-links-1} + +- [డాక్యుమెంటేషన్](https://vyper.readthedocs.io) +- [ఉదాహరణకు వైపర్](https://vyper.readthedocs.io/en/latest/vyper-by-example.html) +- [ఉదాహరణకు మరిన్ని వైపర్](https://vyper-by-example.org/) +- [GitHub](https://github.com/vyperlang/vyper) +- [వైపర్ కమ్యూనిటీ డిస్కార్డ్ చాట్](https://discord.gg/SdvKC79cJk) +- [చీట్ షీట్](https://reference.auditless.com/cheatsheet) +- [వైపర్ కోసం స్మార్ట్ కాంట్రాక్ట్ డెవలప్‌మెంట్ ఫ్రేమ్‌వర్క్‌లు మరియు టూల్స్](/developers/docs/programming-languages/python/) +- [VyperPunk - వైపర్ స్మార్ట్ కాంట్రాక్టులను సురక్షితం చేయడం మరియు హ్యాక్ చేయడం నేర్చుకోండి](https://github.com/SupremacyTeam/VyperPunk) +- [అభివృద్ధి కోసం వైపర్ హబ్](https://github.com/zcor/vyper-dev) +- [వైపర్ గ్రేటెస్ట్ హిట్స్ స్మార్ట్ కాంట్రాక్ట్ ఉదాహరణలు](https://github.com/pynchmeister/vyper-greatest-hits/tree/main/contracts) +- [అద్భుతమైన వైపర్ క్యూరేటెడ్ వనరులు](https://github.com/spadebuilders/awesome-vyper) + +### ఉదాహరణ {#example} + +```python +# ఓపెన్ వేలం + +# వేలం పారామీటర్లు + +# లబ్ధిదారుడు అత్యధిక బిడ్డర్ నుండి డబ్బును అందుకుంటారు + +beneficiary: public(address) +auctionStart: public(uint256) +auctionEnd: public(uint256) + +# వేలం ప్రస్తుత స్థితి + +highestBidder: public(address) +highestBid: public(uint256) + +# చివరిలో నిజం అని సెట్ చేయబడింది, ఏదైనా మార్పును అనుమతించదు + +ended: public(bool) + +# వాపసు చేయబడిన బిడ్‌లను ట్రాక్ చేయండి, తద్వారా మేము ఉపసంహరణ నమూనాను అనుసరించవచ్చు + +pendingReturns: public(HashMap[address, uint256]) + +# `_bidding_time` తో ఒక సాధారణ వేలం సృష్టించండి + +# సెకన్ల బిడ్డింగ్ సమయం + +# లబ్ధిదారుడి చిరునామా `_beneficiary`. + +@external +def __init__(_beneficiary: address, _bidding_time: uint256): + self.beneficiary = _beneficiary + self.auctionStart = block.timestamp + self.auctionEnd = self.auctionStart + _bidding_time + +# పంపిన విలువతో వేలంలో బిడ్ చేయండి + +# ఈ లావాదేవీతో పాటు. + +# ఒకవేళ మాత్రమే విలువ వాపసు చేయబడుతుంది + +# వేలం గెలవలేదు. + +@external +@payable +def bid(): + # బిడ్డింగ్ వ్యవధి ముగిసిందో లేదో తనిఖీ చేయండి. + assert block.timestamp < self.auctionEnd + # బిడ్ తగినంత ఎక్కువగా ఉందో లేదో తనిఖీ చేయండి + assert msg.value > self.highestBid + # మునుపటి అధిక బిడ్డర్ కోసం వాపసును ట్రాక్ చేయండి + self.pendingReturns[self.highestBidder] += self.highestBid + # కొత్త అధిక బిడ్‌ను ట్రాక్ చేయండి + self.highestBidder = msg.sender + self.highestBid = msg.value + +# గతంలో వాపసు చేయబడిన బిడ్‌ను ఉపసంహరించుకోండి. ఉపసంహరణ నమూనా + +# భద్రతా సమస్యను నివారించడానికి ఇక్కడ ఉపయోగించబడింది. వాపసులు నేరుగా ఉంటే + +# బిడ్()లో భాగంగా పంపబడితే, ఒక హానికరమైన బిడ్డింగ్ కాంట్రాక్ట్ బ్లాక్ చేయగలదు + +# ఆ వాపసులను మరియు తద్వారా కొత్త అధిక బిడ్‌లు రాకుండా నిరోధించవచ్చు. + +@external +def withdraw(): + pending_amount: uint256 = self.pendingReturns[msg.sender] + self.pendingReturns[msg.sender] = 0 + send(msg.sender, pending_amount) + +# వేలం ముగించి, అత్యధిక బిడ్‌ను పంపండి + +# లబ్ధిదారుడికి. + +@external +def endAuction(): + # ఇది ఇంటరాక్ట్ చేసే ఫంక్షన్లను రూపొందించడానికి ఒక మంచి మార్గదర్శకం + # ఇతర కాంట్రాక్టులతో (అంటే, వారు ఫంక్షన్లను కాల్ చేస్తారు లేదా ఈథర్ పంపుతారు) + # మూడు దశలుగా: + # 1. షరతులను తనిఖీ చేయడం + # 2. చర్యలను నిర్వహించడం (సంభావ్యంగా షరతులను మార్చడం) + # 3. ఇతర కాంట్రాక్టులతో ఇంటరాక్ట్ అవ్వడం + # ఈ దశలు గందరగోళానికి గురైతే, ఇతర కాంట్రాక్ట్ కాల్ చేయగలదు + # ప్రస్తుత కాంట్రాక్ట్‌లోకి తిరిగి వచ్చి స్థితిని సవరించండి లేదా కారణం కావచ్చు + # ప్రభావాలు (ఈథర్ చెల్లింపు) చాలాసార్లు నిర్వహించబడతాయి. + # అంతర్గతంగా పిలిచే ఫంక్షన్లు బాహ్యతో ఇంటరాక్షన్‌ను కలిగి ఉంటే + # కాంట్రాక్టులు, వాటిని కూడా ఇంటరాక్షన్‌గా పరిగణించాలి + # బాహ్య కాంట్రాక్టులు. + + # 1. షరతులు + # వేలం ముగింపు సమయం చేరుకుందో లేదో తనిఖీ చేయండి + assert block.timestamp >= self.auctionEnd + # ఈ ఫంక్షన్ ఇప్పటికే పిలవబడిందో లేదో తనిఖీ చేయండి + assert not self.ended + + # 2. ప్రభావాలు + self.ended = True + + # 3. ఇంటరాక్షన్ + send(self.beneficiary, self.highestBid) +``` + +ఈ ఉదాహరణ వైపర్ కాంట్రాక్ట్ సింటాక్స్ ఎలా ఉంటుందో మీకు ఒక అవగాహన ఇవ్వాలి. ఫంక్షన్లు మరియు వేరియబుల్స్ యొక్క మరింత వివరణాత్మక వర్ణన కోసం, [డాక్స్‌ని చూడండి](https://vyper.readthedocs.io/en/latest/vyper-by-example.html#simple-open-auction). + +## Yul మరియు Yul+ {#yul} + +మీరు ఎథేరియంకి కొత్త అయితే మరియు ఇంకా స్మార్ట్ కాంట్రాక్ట్ భాషలతో ఎలాంటి కోడింగ్ చేయకపోతే, సాలిడిటీ లేదా వైపర్‌తో ప్రారంభించమని మేము సిఫార్సు చేస్తున్నాము. మీకు స్మార్ట్ కాంట్రాక్ట్ భద్రతా ఉత్తమ అభ్యాసాలు మరియు EVMతో పని చేసే ప్రత్యేకతలతో పరిచయం ఉన్న తర్వాత మాత్రమే Yul లేదా Yul+ గురించి చూడండి. + +**Yul** + +- ఎథేరియం కోసం మధ్యంతర భాష. +- [EVM](/developers/docs/evm) మరియు [Ewasm](https://github.com/ewasm), ఒక ఎథేరియం ఫ్లేవర్డ్ వెబ్అసెంబ్లీకి మద్దతు ఇస్తుంది మరియు రెండు ప్లాట్‌ఫారమ్‌లకు ఉపయోగపడే సాధారణ హారంగా రూపొందించబడింది. +- EVM మరియు Ewasm ప్లాట్‌ఫారమ్‌లకు సమానంగా ప్రయోజనం చేకూర్చగల ఉన్నత-స్థాయి ఆప్టిమైజేషన్ దశలకు మంచి లక్ష్యం. + +**Yul+** + +- Yul కు ఒక తక్కువ-స్థాయి, అత్యంత సమర్థవంతమైన పొడిగింపు. +- ప్రారంభంలో ఒక [ఆప్టిమిస్టిక్ రోలప్](/developers/docs/scaling/optimistic-rollups/) కాంట్రాక్ట్ కోసం రూపొందించబడింది. +- Yul+ ను Yul కు ఒక ప్రయోగాత్మక అప్‌గ్రేడ్ ప్రతిపాదనగా చూడవచ్చు, దీనికి కొత్త ఫీచర్లను జోడించవచ్చు. + +### ముఖ్యమైన లింకులు {#important-links-2} + +- [Yul డాక్యుమెంటేషన్](https://docs.soliditylang.org/en/latest/yul.html) +- [Yul+ డాక్యుమెంటేషన్](https://github.com/fuellabs/yulp) +- [Yul+ పరిచయ పోస్ట్](https://medium.com/@fuellabs/introducing-yul-a-new-low-level-language-for-ethereum-aa64ce89512f) + +### ఉదాహరణ కాంట్రాక్ట్ {#example-contract-2} + +కింది సాధారణ ఉదాహరణ పవర్ ఫంక్షన్‌ను అమలు చేస్తుంది. `solc --strict-assembly --bin input.yul` ఉపయోగించి దీనిని కంపైల్ చేయవచ్చు. ఉదాహరణ +input.yul ఫైల్‌లో నిల్వ చేయబడాలి. + +``` +{ + function power(base, exponent) -> result + { + switch exponent + case 0 { result := 1 } + case 1 { result := base } + default + { + result := power(mul(base, base), div(exponent, 2)) + if mod(exponent, 2) { result := mul(base, result) } + } + } + let res := power(calldataload(0), calldataload(32)) + mstore(0, res) + return(0, 32) +} +``` + +మీకు ఇప్పటికే స్మార్ట్ కాంట్రాక్టులతో మంచి అనుభవం ఉంటే, Yulలో పూర్తి ERC20 అమలును [ఇక్కడ](https://solidity.readthedocs.io/en/latest/yul.html#complete-erc20-example) కనుగొనవచ్చు. + +## Fe {#fe} + +- ఎథేరియం వర్చువల్ మెషీన్ (EVM) కోసం స్టాటిక్‌గా టైప్ చేయబడిన భాష. +- పైథాన్ మరియు రస్ట్ ద్వారా ప్రేరణ పొందింది. +- ఎథేరియం పర్యావరణ వ్యవస్థకు కొత్తవారైన డెవలపర్‌లకు కూడా నేర్చుకోవడానికి సులభంగా ఉండేలా లక్ష్యంగా పెట్టుకుంది. +- Fe అభివృద్ధి ఇంకా ప్రారంభ దశలోనే ఉంది, ఈ భాష జనవరి 2021లో దాని ఆల్ఫా విడుదలను కలిగి ఉంది. + +### ముఖ్యమైన లింకులు {#important-links-3} + +- [GitHub](https://github.com/ethereum/fe) +- [Fe ప్రకటన](https://snakecharmers.ethereum.org/fe-a-new-language-for-the-ethereum-ecosystem/) +- [Fe 2021 రోడ్‌మ్యాప్](https://notes.ethereum.org/LVhaTF30SJOpkbG1iVw1jg) +- [Fe డిస్కార్డ్ చాట్](https://discord.com/invite/ywpkAXFjZH) +- [Fe ట్విట్టర్](https://twitter.com/official_fe) + +### ఉదాహరణ కాంట్రాక్ట్ {#example-contract-3} + +కిందిది Feలో అమలు చేయబడిన ఒక సాధారణ కాంట్రాక్ట్. + +``` +type BookMsg = bytes[100] + +contract GuestBook: + pub guest_book: map + + event Signed: + book_msg: BookMsg + + pub def sign(book_msg: BookMsg): + self.guest_book[msg.sender] = book_msg + + emit Signed(book_msg=book_msg) + + pub def get_msg(addr: address) -> BookMsg: + return self.guest_book[addr].to_mem() + +``` + +## ఎలా ఎంచుకోవాలి {#how-to-choose} + +ఏదైనా ఇతర ప్రోగ్రామింగ్ భాషతో పాటు, ఇది ఎక్కువగా సరైన పనికి సరైన సాధనాన్ని ఎంచుకోవడం మరియు వ్యక్తిగత ప్రాధాన్యతలకు సంబంధించినది. + +మీరు ఇంకా ఏ భాషలను ప్రయత్నించకపోతే పరిగణించవలసిన కొన్ని విషయాలు ఇక్కడ ఉన్నాయి: + +### సాలిడిటీ గురించి గొప్ప విషయం ఏమిటి? {#solidity-advantages} + +- మీరు ఒక ప్రారంభకుడు అయితే, అక్కడ చాలా ట్యుటోరియల్స్ మరియు నేర్చుకునే సాధనాలు ఉన్నాయి. [కోడింగ్ ద్వారా నేర్చుకోండి](/developers/learning-tools/) విభాగంలో దాని గురించి మరింత చూడండి. +- మంచి డెవలపర్ టూలింగ్ అందుబాటులో ఉంది. +- సాలిడిటీకి ఒక పెద్ద డెవలపర్ కమ్యూనిటీ ఉంది, అంటే మీరు మీ ప్రశ్నలకు చాలా త్వరగా సమాధానాలు కనుగొనే అవకాశం ఉంది. + +### వైపర్ గురించి గొప్ప విషయం ఏమిటి? {#vyper-advatages} + +- స్మార్ట్ కాంట్రాక్టులు రాయాలనుకునే పైథాన్ డెవ్‌లు ప్రారంభించడానికి గొప్ప మార్గం. +- వైపర్‌లో తక్కువ సంఖ్యలో ఫీచర్లు ఉన్నాయి, ఇది ఆలోచనల శీఘ్ర ప్రోటోటైపింగ్ కోసం గొప్పగా చేస్తుంది. +- వైపర్ ఆడిట్ చేయడానికి సులభంగా మరియు గరిష్టంగా మానవ-చదవగలిగేలా ఉండాలని లక్ష్యంగా పెట్టుకుంది. + +### Yul మరియు Yul+ గురించి గొప్ప విషయం ఏమిటి? {#yul-advantages} + +- సరళమైన మరియు ఫంక్షనల్ తక్కువ-స్థాయి భాష. +- రా EVMకి చాలా దగ్గరగా వెళ్లడానికి అనుమతిస్తుంది, ఇది మీ కాంట్రాక్టుల గ్యాస్ వినియోగాన్ని ఆప్టిమైజ్ చేయడానికి సహాయపడుతుంది. + +## భాషా పోలికలు {#language-comparisons} + +ప్రాథమిక సింటాక్స్, కాంట్రాక్ట్ జీవనచక్రం, ఇంటర్‌ఫేస్‌లు, ఆపరేటర్లు, డేటా స్ట్రక్చర్లు, ఫంక్షన్లు, కంట్రోల్ ఫ్లో మరియు మరిన్ని పోలికల కోసం ఈ [ఆడిట్‌లెస్ ద్వారా చీట్‌షీట్‌ను](https://reference.auditless.com/cheatsheet/) చూడండి + +## మరింత సమాచారం {#further-reading} + +- [ఓపెన్‌జెప్పెలిన్ ద్వారా సాలిడిటీ కాంట్రాక్టుల లైబ్రరీ](https://docs.openzeppelin.com/contracts/5.x/) +- [ఉదాహరణకు సాలిడిటీ](https://solidity-by-example.org) diff --git a/public/content/translations/te/developers/docs/smart-contracts/libraries/index.md b/public/content/translations/te/developers/docs/smart-contracts/libraries/index.md new file mode 100644 index 00000000000..ce3153b50b8 --- /dev/null +++ b/public/content/translations/te/developers/docs/smart-contracts/libraries/index.md @@ -0,0 +1,117 @@ +--- +title: "స్మార్ట్ కాంట్రాక్ట్ గ్రంథాలయాలు" +description: "మీ ఇతీరియము అభివృద్ధి ప్రాజెక్టులను వేగవంతం చేయడానికి పునర్వినియోగ స్మార్ట్ కాంట్రాక్ట్ గ్రంథాలయాలు మరియు నిర్మాణ బ్లాకులను కనుగొనండి." +lang: te +--- + +మీరు మీ ప్రాజెక్ట్‌లో ప్రతి స్మార్ట్ కాంట్రాక్ట్‌ను మొదటి నుండి వ్రాయవలసిన అవసరం లేదు. అనేక ఓపెన్ సోర్స్ స్మార్ట్ కాంట్రాక్ట్ గ్రంథాలయాలు అందుబాటులో ఉన్నాయి, అవి మీ ప్రాజెక్ట్ కోసం పునర్వినియోగ నిర్మాణ బ్లాక్‌లను అందిస్తాయి, ఇది మిమ్మల్ని తిరిగి కొత్తగా కనిపెట్టకుండా కాపాడగలదు. + +## అవసరాలు {#prerequisites} + +స్మార్ట్ కాంట్రాక్ట్ గ్రంథాలయాలలోకి వెళ్ళే ముందు, స్మార్ట్ కాంట్రాక్ట్ యొక్క నిర్మాణంపై మంచి అవగాహన కలిగి ఉండటం మంచిది. మీరు ఇంకా అలా చేయకపోతే [స్మార్ట్ కాంట్రాక్ట్ అనాటమీ](/developers/docs/smart-contracts/anatomy/)కి వెళ్లండి. + +## ఒక గ్రంథాలయంలో ఏముంది {#whats-in-a-library} + +మీరు సాధారణంగా స్మార్ట్ కాంట్రాక్ట్ గ్రంథాలయాలలో రెండు రకాల నిర్మాణ బ్లాకులను కనుగొనవచ్చు: మీరు మీ కాంట్రాక్టులకు జోడించగల పునర్వినియోగ ప్రవర్తనలు మరియు వివిధ ప్రమాణాల అమలులు. + +### ప్రవర్తనలు {#behaviors} + +స్మార్ట్ కాంట్రాక్టులను వ్రాసేటప్పుడు, ఒక కాంట్రాక్ట్‌లో రక్షిత కార్యకలాపాలను నిర్వహించడానికి _admin_ చిరునామాను కేటాయించడం లేదా ఊహించని సమస్య ఏర్పడినప్పుడు అత్యవసర _పాజ్_ బటన్‌ను జోడించడం వంటి ఒకే రకమైన నమూనాలను మీరు పదే పదే వ్రాసే అవకాశం ఉంది. + +స్మార్ట్ కాంట్రాక్ట్ గ్రంథాలయాలు సాధారణంగా ఈ ప్రవర్తనల యొక్క పునర్వినియోగ అమలులను Solidityలో [లైబ్రరీలుగా](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#libraries) లేదా [ఇన్హెరిటెన్స్](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#inheritance) ద్వారా అందిస్తాయి. + +ఒక ఉదాహరణగా, [OpenZeppelin కాంట్రాక్ట్స్ లైబ్రరీ](https://github.com/OpenZeppelin/openzeppelin-contracts) నుండి [`Ownable` కాంట్రాక్ట్](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.0/contracts/access/Ownable.sol) యొక్క సరళీకృత సంస్కరణ క్రింద ఉంది, ఇది ఒక చిరునామాను కాంట్రాక్ట్ యజమానిగా నియమిస్తుంది మరియు ఆ యజమానికి మాత్రమే ఒక పద్ధతికి యాక్సెస్‌ను పరిమితం చేయడానికి ఒక మాడిఫైయర్‌ను అందిస్తుంది. + +```solidity +contract Ownable { + address public owner; + + constructor() internal { + owner = msg.sender; + } + + modifier onlyOwner() { + require(owner == msg.sender, "Ownable: పిలుపుదారు యజమాని కాదు"); + _; + } +} +``` + +మీ కాంట్రాక్ట్‌లో ఇలాంటి నిర్మాణ బ్లాక్‌ను ఉపయోగించడానికి, మీరు మొదట దానిని దిగుమతి చేసుకోవాలి, ఆపై మీ స్వంత కాంట్రాక్టులలో దాని నుండి విస్తరించాలి. ఇది మీ స్వంత ఫంక్షన్‌లను సురక్షితంగా చేయడానికి బేస్ `Ownable` కాంట్రాక్ట్ అందించిన మాడిఫైయర్‌ను ఉపయోగించడానికి మిమ్మల్ని అనుమతిస్తుంది. + +```solidity +import ".../Ownable.sol"; // దిగుమతి చేసుకున్న లైబ్రరీకి పాత్ + +contract MyContract is Ownable { + // కింది ఫంక్షన్‌ను యజమాని మాత్రమే పిలవగలరు + function secured() onlyOwner public { + msg.sender.transfer(1 ether); + } +} +``` + +మరొక ప్రసిద్ధ ఉదాహరణ [SafeMath](https://docs.openzeppelin.com/contracts/3.x/utilities#math) లేదా [DsMath](https://dappsys.readthedocs.io/en/latest/ds_math.html). ఇవి లైబ్రరీలు (బేస్ కాంట్రాక్టులకు విరుద్ధంగా), ఇవి ఓవర్‌ఫ్లో తనిఖీలతో అంకగణిత ఫంక్షన్‌లను అందిస్తాయి, ఇవి భాష ద్వారా అందించబడవు. మీ కాంట్రాక్ట్‌ను ఓవర్‌ఫ్లోల నుండి రక్షించడానికి స్థానిక అంకగణిత కార్యకలాపాలకు బదులుగా ఈ లైబ్రరీలలో దేనినైనా ఉపయోగించడం మంచి పద్ధతి, లేకపోతే వినాశకరమైన పరిణామాలు ఉండవచ్చు! + +### ప్రమాణాలు {#standards} + +[కంపోజబిలిటీ మరియు ఇంటర్‌ఆపరేబిలిటీ](/developers/docs/smart-contracts/composability/)ని సులభతరం చేయడానికి, ఇతీరియము సంఘం **ERCల** రూపంలో అనేక ప్రమాణాలను నిర్వచించింది. మీరు వాటి గురించి [ప్రమాణాలు](/developers/docs/standards/) విభాగంలో మరింత చదవవచ్చు. + +మీ కాంట్రాక్టులలో భాగంగా ERCని చేర్చినప్పుడు, మీ స్వంతంగా రూపొందించడానికి ప్రయత్నించే బదులు ప్రామాణిక అమలుల కోసం చూడటం మంచిది. అనేక స్మార్ట్ కాంట్రాక్ట్ గ్రంథాలయాలు అత్యంత ప్రజాదరణ పొందిన ERCల కోసం అమలులను కలిగి ఉంటాయి. ఉదాహరణకు, సర్వవ్యాప్త [ERC20 ఫంగిబుల్ టోకెన్ ప్రమాణం](/developers/tutorials/understand-the-erc-20-token-smart-contract/) [HQ20](https://github.com/HQ20/contracts/blob/master/contracts/token/README.md), [DappSys](https://github.com/dapphub/ds-token/) మరియు [OpenZeppelin](https://docs.openzeppelin.com/contracts/3.x/erc20)లలో కనుగొనవచ్చు. అదనంగా, కొన్ని ERCలు ERCలోనే భాగంగా ప్రామాణిక అమలులను కూడా అందిస్తాయి. + +కొన్ని ERCలు స్వతంత్రంగా ఉండవని, కానీ ఇతర ERCలకు అదనంగా ఉంటాయని పేర్కొనడం విలువైనది. ఉదాహరణకు, [ERC2612](https://eips.ethereum.org/EIPS/eip-2612) దాని వినియోగాన్ని మెరుగుపరచడానికి ERC20కి ఒక పొడిగింపును జోడిస్తుంది. + +## లైబ్రరీని ఎలా జోడించాలి {#how-to} + +మీ ప్రాజెక్ట్‌లో ఒక లైబ్రరీని ఎలా చేర్చాలనే దానిపై నిర్దిష్ట సూచనల కోసం మీరు చేర్చుతున్న లైబ్రరీ యొక్క డాక్యుమెంటేషన్‌ను ఎల్లప్పుడూ చూడండి. అనేక Solidity కాంట్రాక్ట్ లైబ్రరీలు `npm` ఉపయోగించి ప్యాకేజ్ చేయబడ్డాయి, కాబట్టి మీరు వాటిని `npm install` చేయవచ్చు. కాంట్రాక్టులను [కంపైల్ చేయడానికి](/developers/docs/smart-contracts/compiling/) చాలా సాధనాలు స్మార్ట్ కాంట్రాక్ట్ లైబ్రరీల కోసం మీ `node_modules`లో చూస్తాయి, కాబట్టి మీరు ఈ క్రింది విధంగా చేయవచ్చు: + +```solidity +// ఇది మీ node_modules నుండి @openzeppelin/contracts లైబ్రరీని లోడ్ చేస్తుంది +import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; + +contract MyNFT is ERC721 { + constructor() ERC721("MyNFT", "MNFT") public { } +} +``` + +మీరు ఉపయోగించే పద్ధతితో సంబంధం లేకుండా, ఒక లైబ్రరీని చేర్చేటప్పుడు, ఎల్లప్పుడూ [భాష](/developers/docs/smart-contracts/languages/) వెర్షన్‌పై దృష్టి పెట్టండి. ఉదాహరణకు, మీరు మీ కాంట్రాక్టులను Solidity 0.5లో వ్రాస్తుంటే, మీరు Solidity 0.6 కోసం ఒక లైబ్రరీని ఉపయోగించలేరు. + +## ఎప్పుడు ఉపయోగించాలి {#when-to-use} + +మీ ప్రాజెక్ట్ కోసం స్మార్ట్ కాంట్రాక్ట్ లైబ్రరీని ఉపయోగించడం వల్ల అనేక ప్రయోజనాలు ఉన్నాయి. అన్నింటికన్నా ముందు, ఇది మీ సిస్టమ్‌లో చేర్చగల రెడీ-టు-యూజ్ నిర్మాణ బ్లాక్‌లను అందించడం ద్వారా మీ సమయాన్ని ఆదా చేస్తుంది, అంతేకాక వాటిని మీరే కోడ్ చేయవలసిన అవసరం ఉండదు. + +భద్రత కూడా ఒక పెద్ద ప్రయోజనం. ఓపెన్ సోర్స్ స్మార్ట్ కాంట్రాక్ట్ లైబ్రరీలు కూడా తరచుగా ఎక్కువగా పరిశీలించబడతాయి. వాటిపై అనేక ప్రాజెక్టులు ఆధారపడి ఉన్నందున, వాటిని నిరంతరం సమీక్షలో ఉంచడానికి సంఘం నుండి బలమైన ప్రోత్సాహం ఉంది. పునర్వినియోగ కాంట్రాక్ట్ లైబ్రరీల కంటే అప్లికేషన్ కోడ్‌లో లోపాలను కనుగొనడం చాలా సాధారణం. కొన్ని లైబ్రరీలు అదనపు భద్రత కోసం [బాహ్య ఆడిట్‌లకు](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/audits) కూడా లోనవుతాయి. + +అయినప్పటికీ, స్మార్ట్ కాంట్రాక్ట్ లైబ్రరీలను ఉపయోగించడం వల్ల మీకు పరిచయం లేని కోడ్‌ను మీ ప్రాజెక్ట్‌లో చేర్చడం అనే ప్రమాదం ఉంటుంది. ఒక కాంట్రాక్ట్‌ను దిగుమతి చేసి, దాన్ని నేరుగా మీ ప్రాజెక్ట్‌లో చేర్చడం ఉత్సాహంగా ఉంటుంది, కానీ ఆ కాంట్రాక్ట్ ఏమి చేస్తుందో సరైన అవగాహన లేకుండా, ఊహించని ప్రవర్తన కారణంగా మీరు అనుకోకుండా మీ సిస్టమ్‌లో ఒక సమస్యను ప్రవేశపెట్టవచ్చు. మీరు దిగుమతి చేస్తున్న కోడ్ యొక్క డాక్యుమెంటేషన్‌ను ఎల్లప్పుడూ చదివారని నిర్ధారించుకోండి మరియు దాన్ని మీ ప్రాజెక్ట్‌లో భాగంగా చేసుకునే ముందు కోడ్‌ను కూడా సమీక్షించండి! + +చివరగా, ఒక లైబ్రరీని చేర్చాలా వద్దా అని నిర్ణయించుకునేటప్పుడు, దాని మొత్తం వినియోగాన్ని పరిగణించండి. విస్తృతంగా ఆమోదించబడిన దానికి పెద్ద కమ్యూనిటీ మరియు సమస్యల కోసం దానిని పరిశీలించే ఎక్కువ మంది వ్యక్తులు ఉండటం వంటి ప్రయోజనాలు ఉన్నాయి. స్మార్ట్ కాంట్రాక్టులతో నిర్మించేటప్పుడు భద్రత మీ ప్రాథమిక దృష్టిగా ఉండాలి! + +## సంబంధిత ఉపకరణాలు {#related-tools} + +**OpenZeppelin కాంట్రాక్టులు -** **_సురక్షితమైన స్మార్ట్ కాంట్రాక్ట్ అభివృద్ధి కోసం అత్యంత ప్రజాదరణ పొందిన లైబ్రరీ._** + +- [డాక్యుమెంటేషన్](https://docs.openzeppelin.com/contracts/) +- [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts) +- [కమ్యూనిటీ ఫోరమ్](https://forum.openzeppelin.com/c/general/16) + +**DappSys -** **_స్మార్ట్-కాంట్రాక్టుల కోసం సురక్షితమైన, సరళమైన, సౌకర్యవంతమైన నిర్మాణ-బ్లాకులు._** + +- [డాక్యుమెంటేషన్](https://dappsys.readthedocs.io/) +- [GitHub](https://github.com/dapphub/dappsys) + +**HQ20 -** **_వాస్తవ ప్రపంచం కోసం పూర్తి-ఫీచర్లతో కూడిన పంపిణీ చేయబడిన అప్లికేషన్‌లను రూపొందించడంలో మీకు సహాయపడటానికి కాంట్రాక్టులు, లైబ్రరీలు మరియు ఉదాహరణలతో కూడిన ఒక Solidity ప్రాజెక్ట్._** + +- [GitHub](https://github.com/HQ20/contracts) + +**thirdweb Solidity SDK -** **_కస్టమ్ స్మార్ట్ కాంట్రాక్టులను సమర్థవంతంగా నిర్మించడానికి అవసరమైన సాధనాలను అందిస్తుంది_** + +- [డాక్యుమెంటేషన్](https://portal.thirdweb.com/contracts/build/overview) +- [GitHub](https://github.com/thirdweb-dev/contracts) + +## సంబంధిత ట్యుటోరియల్స్ {#related-tutorials} + +- [ఇతీరియము డెవలపర్‌ల కోసం భద్రతా పరిగణనలు](/developers/docs/smart-contracts/security/) _– లైబ్రరీ వినియోగంతో సహా స్మార్ట్ కాంట్రాక్టులను నిర్మించేటప్పుడు భద్రతా పరిగణనలపై ఒక ట్యుటోరియల్._ +- [ERC-20 టోకెన్ స్మార్ట్ కాంట్రాక్ట్‌ను అర్థం చేసుకోండి](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _-అనేక లైబ్రరీల ద్వారా అందించబడిన ERC20 ప్రమాణంపై ట్యుటోరియల్._ + +## మరింత సమాచారం {#further-reading} + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ diff --git a/public/content/translations/te/developers/docs/smart-contracts/naming/index.md b/public/content/translations/te/developers/docs/smart-contracts/naming/index.md new file mode 100644 index 00000000000..b10e0a96715 --- /dev/null +++ b/public/content/translations/te/developers/docs/smart-contracts/naming/index.md @@ -0,0 +1,101 @@ +--- +title: "స్మార్ట్ ఒప్పందాలకు పేరు పెట్టడం" +description: "ENSతో ఇతీరియము స్మార్ట్ ఒప్పందాలకు పేరు పెట్టడానికి ఉత్తమ పద్ధతులు" +lang: te +--- + +స్మార్ట్ ఒప్పందాలు ఇతీరియము యొక్క వికేంద్రీకృత మౌలిక సదుపాయాలకు ఒక మూలస్తంభం, ఇవి స్వయంప్రతిపత్త అప్లికేషన్లు మరియు ప్రోటోకాల్లను ప్రారంభిస్తాయి. కానీ ఒప్పందం సామర్థ్యాలు అభివృద్ధి చెందుతున్నప్పటికీ, వినియోగదారులు మరియు అభివృద్ధి చేసేవారు ఈ ఒప్పందాలను గుర్తించడానికి మరియు సూచించడానికి ఇప్పటికీ ముడి హెక్సాడెసిమల్ చిరునామాలపై ఆధారపడతారు. + +[ఇతీరియము నేమ్ సర్వీస్ (ENS)](https://ens.domains/)తో స్మార్ట్ ఒప్పందాలకు పేరు పెట్టడం అనేది హెక్సాడెసిమల్ ఒప్పంద చిరునామాలను తొలగించడం ద్వారా వినియోగదారు అనుభవాన్ని మెరుగుపరుస్తుంది మరియు చిరునామా పాయిజనింగ్ మరియు స్పూఫింగ్ దాడుల వంటి దాడుల నుండి ప్రమాదాన్ని తగ్గిస్తుంది. ఈ గైడ్ స్మార్ట్ ఒప్పందాలకు పేరు పెట్టడం ఎందుకు ముఖ్యమో, దానిని ఎలా అమలు చేయవచ్చో వివరిస్తుంది, అలాగే ప్రక్రియను సరళీకృతం చేయడానికి మరియు డెవలపర్‌లు ఈ పద్ధతిని అనుసరించడంలో సహాయపడటానికి [Enscribe](https://www.enscribe.xyz) వంటి అందుబాటులో ఉన్న సాధనాలను వివరిస్తుంది. + +## స్మార్ట్ ఒప్పందాలకు ఎందుకు పేరు పెట్టాలి? {#why-name-contracts} + +### మానవ-చదవగలిగే ఐడెంటిఫైయర్లు {#human-readable-identifiers} + +`0x8f8e...f9e3` వంటి అపారదర్శక ఒప్పంద చిరునామాలతో పరస్పర చర్య చేయడానికి బదులుగా, అభివృద్ధి చేసేవారు మరియు వినియోగదారులు `v2.myapp.eth` వంటి మానవ-చదవగలిగే పేర్లను ఉపయోగించవచ్చు. ఇది స్మార్ట్ ఒప్పంద పరస్పర చర్యలను సరళీకృతం చేస్తుంది. + +ఇది [ఇతీరియము నేమ్ సర్వీస్](https://ens.domains/) ద్వారా సాధ్యమవుతుంది, ఇది ఇతీరియము చిరునామాల కోసం వికేంద్రీకృత నామకరణ సేవను అందిస్తుంది. ఇది `104.18.176.152` వంటి IP చిరునామా ద్వారా కాకుండా, ethereum.org వంటి పేరును ఉపయోగించి నెట్‌వర్క్ చిరునామాలను యాక్సెస్ చేయడానికి ఇంటర్నెట్ వినియోగదారులను డొమైన్ నేమ్ సర్వీస్ (DNS) ఎలా అనుమతిస్తుందో దానికి సారూప్యంగా ఉంటుంది. + +### మెరుగైన భద్రత మరియు నమ్మకం {#improved-security-and-trust} + +పేరున్న ఒప్పందాలు తప్పుడు చిరునామాకు జరిగే పొరపాటు లావాదేవీలను తగ్గించడంలో సహాయపడతాయి. నిర్దిష్ట యాప్‌లు లేదా బ్రాండ్‌లకు అనుబంధించబడిన ఒప్పందాలను గుర్తించడంలో అవి వినియోగదారులకు సహాయపడతాయి. ఇది ప్రతిష్టాత్మక నమ్మకం యొక్క ఒక పొరను జోడిస్తుంది, ముఖ్యంగా `uniswap.eth` వంటి సుప్రసిద్ధ పేరెంట్ డొమైన్‌లకు పేర్లు జోడించబడినప్పుడు. + +ఇతీరియము చిరునామా యొక్క 42-అక్షరాల పొడవు కారణంగా, చిరునామాలలో కొన్ని అక్షరాలు మార్చబడినప్పుడు, ఆ చిన్న మార్పులను గుర్తించడం వినియోగదారులకు చాలా కష్టం. ఉదాహరణకు, `0x58068646C148E313CB414E85d2Fe89dDc3426870` వంటి చిరునామా సాధారణంగా వాలెట్‌ల వంటి వినియోగదారు-ముఖ అప్లికేషన్‌ల ద్వారా `0x580...870` కు కుదించబడుతుంది. కొన్ని అక్షరాలు మార్చబడిన హానికరమైన చిరునామాను ఒక వినియోగదారుడు గమనించే అవకాశం లేదు. + +ఈ రకమైన సాంకేతికత చిరునామా స్పూఫింగ్ మరియు పాయిజనింగ్ దాడులలో ఉపయోగించబడుతుంది, ఇక్కడ వినియోగదారులు తాము సరైన చిరునామాతో పరస్పర చర్య చేస్తున్నామని లేదా నిధులను పంపుతున్నామని నమ్మించబడతారు, కానీ వాస్తవానికి ఆ చిరునామా కేవలం సరైన చిరునామాను పోలి ఉంటుంది, కానీ అది ఒకటి కాదు. + +వాలెట్లు మరియు ఒప్పందాల కోసం ENS పేర్లు ఈ రకమైన దాడుల నుండి రక్షిస్తాయి. DNS స్పూఫింగ్ దాడుల వలె, ENS స్పూఫింగ్ దాడులు కూడా జరగవచ్చు, అయినప్పటికీ, ఒక వినియోగదారుడు హెక్సాడెసిమల్ చిరునామాలో చిన్న మార్పు కంటే ENS పేరులోని అక్షర దోషాన్ని గమనించే అవకాశం ఎక్కువ. + +### వాలెట్లు మరియు ఎక్స్‌ప్లోరర్‌ల కోసం మెరుగైన UX {#better-ux} + +ఒక స్మార్ట్ ఒప్పందం ENS పేరుతో కాన్ఫిగర్ చేయబడినప్పుడు, వాలెట్లు మరియు బ్లాక్‌చెయిన్ ఎక్స్‌ప్లోరర్‌ల వంటి యాప్‌లు హెక్సాడెసిమల్ చిరునామాలకు బదులుగా స్మార్ట్ ఒప్పందాల కోసం ENS పేర్లను ప్రదర్శించడం సాధ్యమవుతుంది. ఇది వినియోగదారులకు గణనీయమైన వినియోగదారు అనుభవం (UX) ఉన్నతిని అందిస్తుంది. + +ఉదాహరణకు, Uniswap వంటి యాప్‌తో పరస్పర చర్య చేస్తున్నప్పుడు, వినియోగదారులు సాధారణంగా తాము పరస్పర చర్య చేస్తున్న యాప్ `uniswap.org` వెబ్‌సైట్‌లో హోస్ట్ చేయబడిందని చూస్తారు, కానీ ఒకవేళ Uniswap వారి స్మార్ట్ ఒప్పందాలకు ENSతో పేరు పెట్టకపోతే వారికి హెక్సాడెసిమల్ ఒప్పంద చిరునామా చూపబడుతుంది. ఒప్పందానికి పేరు పెడితే, దానికి బదులుగా వారు `v4.contracts.uniswap.eth` ను చూడగలరు, ఇది చాలా ఉపయోగకరంగా ఉంటుంది. + +## డిప్లాయ్‌మెంట్ సమయంలో vs. డిప్లాయ్‌మెంట్ తర్వాత పేరు పెట్టడం {#when-to-name} + +స్మార్ట్ ఒప్పందాలకు రెండు సందర్భాలలో పేరు పెట్టవచ్చు: + +- **డిప్లాయ్‌మెంట్ సమయంలో**: ఒప్పందం డిప్లాయ్ చేయబడినప్పుడు దానికి ENS పేరును కేటాయించడం. +- **డిప్లాయ్‌మెంట్ తర్వాత**: ఇప్పటికే ఉన్న ఒప్పంద చిరునామాను కొత్త ENS పేరుకు మ్యాప్ చేయడం. + +రెండు పద్ధతులు ENS డొమైన్‌కు యజమాని లేదా మేనేజర్ యాక్సెస్ కలిగి ఉండటంపై ఆధారపడి ఉంటాయి, తద్వారా వారు ENS రికార్డులను సృష్టించగలరు మరియు సెట్ చేయగలరు. + +## ఒప్పందాల కోసం ENS నామకరణం ఎలా పనిచేస్తుంది {#how-ens-naming-works} + +ENS పేర్లు ఆన్‌చెయిన్‌లో నిల్వ చేయబడతాయి మరియు ENS రిజాల్వర్‌ల ద్వారా ఇతీరియము చిరునామాలకు పరిష్కరించబడతాయి. ఒక స్మార్ట్ ఒప్పందానికి పేరు పెట్టడానికి: + +1. ఒక పేరెంట్ ENS డొమైన్‌ను నమోదు చేయండి లేదా నియంత్రించండి (ఉదా. `myapp.eth`) +2. ఒక సబ్‌డొమైన్‌ను సృష్టించండి (ఉదా. `v1.myapp.eth`) +3. సబ్‌డొమైన్ యొక్క `address` రికార్డును ఒప్పంద చిరునామాకు సెట్ చేయండి +4. దాని చిరునామా ద్వారా పేరును కనుగొనడానికి అనుమతించడానికి ఒప్పందం యొక్క రివర్స్ రికార్డును ENSకు సెట్ చేయండి + +ENS పేర్లు క్రమానుగతంగా ఉంటాయి మరియు అపరిమిత ఉప-పేర్లకు మద్దతు ఇస్తాయి. ఈ రికార్డులను సెట్ చేయడంలో సాధారణంగా ENS రిజిస్ట్రీ మరియు పబ్లిక్ రిజాల్వర్ ఒప్పందాలతో పరస్పర చర్య ఉంటుంది. + +## ఒప్పందాలకు పేరు పెట్టడానికి ఉపకరణాలు {#tools} + +స్మార్ట్ ఒప్పందాలకు పేరు పెట్టడానికి రెండు పద్ధతులు ఉన్నాయి. కొన్ని మాన్యువల్ దశలతో [ENS యాప్](https://app.ens.domains)ను ఉపయోగించడం, లేదా [Enscribe](https://www.enscribe.xyz)ను ఉపయోగించడం. ఇవి క్రింద వివరించబడ్డాయి. + +### మాన్యువల్ ENS సెటప్ {#manual-ens-setup} + +[ENS యాప్](https://app.ens.domains/)ను ఉపయోగించి, అభివృద్ధి చేసేవారు మాన్యువల్‌గా ఉప-పేర్లను సృష్టించగలరు మరియు ఫార్వర్డ్ చిరునామా రికార్డులను సెట్ చేయగలరు. అయితే, వారు ENS యాప్ ద్వారా పేరు కోసం రివర్స్ రికార్డును సెట్ చేయడం ద్వారా ఒక స్మార్ట్ ఒప్పందానికి ప్రాథమిక పేరును సెట్ చేయలేరు. మాన్యువల్ దశలు తీసుకోవాలి, ఇవి [ENS డాక్స్](https://docs.ens.domains/web/naming-contracts/)లో కవర్ చేయబడ్డాయి. + +### Enscribe {#enscribe} + +[Enscribe](https://www.enscribe.xyz) ENSతో స్మార్ట్ ఒప్పంద నామకరణాన్ని సులభతరం చేస్తుంది, మరియు స్మార్ట్ ఒప్పందాలలో వినియోగదారు నమ్మకాన్ని పెంచుతుంది. ఇది అందిస్తుంది: + +- **అటామిక్ డిప్లాయ్‌మెంట్ మరియు నామకరణం**: కొత్త ఒప్పందాన్ని డిప్లాయ్ చేస్తున్నప్పుడు ENS పేరును కేటాయించండి +- **పోస్ట్-డిప్లాయ్‌మెంట్ నామకరణం**: ఇప్పటికే డిప్లాయ్ చేయబడిన ఒప్పందాలకు పేర్లను జోడించండి +- **బహుళ-గొలుసు మద్దతు**: ENSకు మద్దతు ఉన్న ఇతీరియము మరియు L2 నెట్‌వర్క్‌లలో పనిచేస్తుంది +- **ఒప్పంద ధృవీకరణ డేటా**: వినియోగదారుల కోసం నమ్మకాన్ని పెంచడానికి బహుళ వనరుల నుండి లాగబడిన ఒప్పంద ధృవీకరణ డేటాను కలిగి ఉంటుంది + +Enscribe వినియోగదారులు అందించిన ENS పేర్లకు మద్దతు ఇస్తుంది, లేదా వినియోగదారుకు ENS పేరు లేకపోతే దాని స్వంత డొమైన్‌లకు మద్దతు ఇస్తుంది. + +స్మార్ట్ ఒప్పందాలకు పేరు పెట్టడం మరియు వీక్షించడం ప్రారంభించడానికి మీరు [Enscribe యాప్](https://app.enscribe.xyz)ను యాక్సెస్ చేయవచ్చు. + +## ఉత్తమ పద్ధతులు {#best-practices} + +- **స్పష్టమైన, సంస్కరణ పేరులను ఉపయోగించండి**, `v1.myapp.eth` వంటివి ఒప్పంద అప్‌గ్రేడ్‌లను పారదర్శకంగా చేయడానికి +- వాలెట్లు మరియు బ్లాక్‌చెయిన్ ఎక్స్‌ప్లోరర్‌ల వంటి యాప్‌లలో కనిపించేలా చేయడానికి, ఒప్పందాలను ENS పేర్లకు లింక్ చేయడానికి **రివర్స్ రికార్డులను సెట్ చేయండి**. +- యాజమాన్యంలో ప్రమాదవశాత్తు మార్పులను నివారించాలనుకుంటే **గడువు తేదీలను నిశితంగా పర్యవేక్షించండి** +- **ఒప్పంద మూలాన్ని ధృవీకరించండి**, తద్వారా పేరున్న ఒప్పందం ఊహించిన విధంగా ప్రవర్తిస్తుందని వినియోగదారులు నమ్మగలరు + +## ప్రమాదాలు {#risks} + +స్మార్ట్ ఒప్పందాలకు పేరు పెట్టడం ఇతీరియము వినియోగదారులకు గణనీయమైన ప్రయోజనాలను అందిస్తుంది, అయితే, ENS డొమైన్‌ల యజమానులు వాటి నిర్వహణ విషయంలో అప్రమత్తంగా ఉండాలి. గుర్తించదగిన ప్రమాదాలు: + +- **గడువు**: DNS పేర్ల వలె, ENS పేర్ల రిజిస్ట్రేషన్లు పరిమిత వ్యవధిని కలిగి ఉంటాయి. అందువల్ల యజమానులు తమ డొమైన్‌ల గడువు తేదీలను పర్యవేక్షించడం మరియు వాటి గడువుకు చాలా ముందుగానే వాటిని పునరుద్ధరించడం చాలా ముఖ్యం. గడువు సమీపిస్తున్నప్పుడు డొమైన్ యజమానుల కోసం ENS యాప్ మరియు Enscribe రెండూ దృశ్య సూచికలను అందిస్తాయి. +- **యాజమాన్యంలో మార్పు**: ENS రికార్డులు ఇతీరియముపై NFTలుగా సూచించబడతాయి, ఇక్కడ ఒక నిర్దిష్ట `.eth` డొమైన్ యజమాని సంబంధిత NFTని వారి ఆధీనంలో కలిగి ఉంటారు. అందువల్ల ఒక వేరొక ఖాతా ఈ NFT యాజమాన్యాన్ని తీసుకుంటే, కొత్త యజమాని తమకు నచ్చిన విధంగా ఏవైనా ENS రికార్డులను సవరించగలరు. + +అటువంటి ప్రమాదాలను తగ్గించడానికి, `.eth` 2వ స్థాయి డొమైన్‌ల (2LD) కోసం యజమాని ఖాతాను ఒక మల్టీ-సిగ్ వాలెట్ ద్వారా భద్రపరచాలి, మరియు ఒప్పంద నామకరణాన్ని నిర్వహించడానికి సబ్‌డొమైన్‌లు సృష్టించబడాలి. ఆ విధంగా, సబ్‌డొమైన్ స్థాయిలో యాజమాన్యంలో ఏవైనా ప్రమాదవశాత్తు లేదా హానికరమైన మార్పులు జరిగిన సందర్భంలో, వాటిని 2LD యజమాని ద్వారా అధిగమించవచ్చు. + +## ఒప్పంద నామకరణ భవిష్యత్తు {#future} + +వెబ్‌లో డొమైన్ పేర్లు IP చిరునామాలను ఎలా భర్తీ చేశాయో అదే విధంగా, ఒప్పంద నామకరణం డాప్ అభివృద్ధికి ఒక ఉత్తమ పద్ధతిగా మారుతోంది. వాలెట్లు, ఎక్స్‌ప్లోరర్లు మరియు డాష్‌బోర్డ్‌ల వంటి మరిన్ని మౌలిక సదుపాయాలు ఒప్పందాల కోసం ENS పరిష్కారాన్ని ఏకీకృతం చేస్తున్నందున, పేరున్న ఒప్పందాలు పర్యావరణ వ్యవస్థ అంతటా భద్రతను మెరుగుపరుస్తాయి మరియు లోపాలను తగ్గిస్తాయి. + +స్మార్ట్ ఒప్పందాలను గుర్తించడం మరియు వాటి గురించి తర్కించడం సులభతరం చేయడం ద్వారా, నామకరణం ఇతీరియముపై వినియోగదారులు మరియు యాప్‌ల మధ్య అంతరాన్ని పూడ్చడంలో సహాయపడుతుంది, ఇది వినియోగదారులకు భద్రత మరియు UX రెండింటినీ మెరుగుపరుస్తుంది. + +## మరింత సమాచారం {#further-reading} + +- [ENSతో స్మార్ట్ ఒప్పందాలకు పేరు పెట్టడం](https://docs.ens.domains/web/naming-contracts/) +- [Enscribeతో స్మార్ట్ ఒప్పందాలకు పేరు పెట్టడం](https://www.enscribe.xyz/docs). diff --git a/public/content/translations/te/developers/docs/smart-contracts/security/index.md b/public/content/translations/te/developers/docs/smart-contracts/security/index.md new file mode 100644 index 00000000000..2d364e80d36 --- /dev/null +++ b/public/content/translations/te/developers/docs/smart-contracts/security/index.md @@ -0,0 +1,574 @@ +--- +title: "స్మార్ట్ కాంట్రాక్ట్ భద్రత" +description: "సురక్షితమైన ఇతీరియము స్మార్ట్ కాంట్రాక్ట్‌లను రూపొందించడానికి మార్గదర్శకాల యొక్క అవలోకనం" +lang: te +--- + +స్మార్ట్ కాంట్రాక్ట్‌లు చాలా సరళంగా ఉంటాయి, మరియు బ్లాక్‌చైన్‌లో అమలు చేయబడిన కోడ్ ఆధారంగా మార్పులేని తర్కాన్ని అమలు చేస్తున్నప్పుడు, పెద్ద మొత్తంలో విలువ మరియు డేటాను నియంత్రించగలవు. ఇది విశ్వసనీయత లేని మరియు వికేంద్రీకృత అప్లికేషన్‌ల యొక్క శక్తివంతమైన పర్యావరణ వ్యవస్థను సృష్టించింది, ఇది లెగసీ సిస్టమ్‌ల కంటే అనేక ప్రయోజనాలను అందిస్తుంది. స్మార్ట్ కాంట్రాక్ట్‌లలోని బలహీనతలను ఉపయోగించుకుని లాభం పొందాలనుకునే దాడి చేసేవారికి కూడా ఇవి అవకాశాలను అందిస్తాయి. + +ఇతీరియము వంటి పబ్లిక్ బ్లాక్‌చైన్‌లు, స్మార్ట్ కాంట్రాక్ట్‌లను సురక్షితంగా ఉంచే సమస్యను మరింత క్లిష్టతరం చేస్తాయి. అమలు చేయబడిన కాంట్రాక్ట్ కోడ్‌ను _సాధారణంగా_ భద్రతా లోపాలను సరిచేయడానికి మార్చలేము, అయితే స్మార్ట్ కాంట్రాక్ట్‌ల నుండి దొంగిలించబడిన ఆస్తులను ట్రాక్ చేయడం చాలా కష్టం మరియు మార్పులేని కారణంగా చాలావరకు తిరిగి పొందలేము. + +గణాంకాలు మారినప్పటికీ, స్మార్ట్ కాంట్రాక్ట్‌లలోని భద్రతా లోపాల కారణంగా దొంగిలించబడిన లేదా కోల్పోయిన మొత్తం విలువ సులభంగా $1 బిలియన్ కంటే ఎక్కువగా ఉంటుందని అంచనా. [DAO హ్యాక్](https://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/) (3.6M ETH దొంగిలించబడింది, నేటి ధరలలో $1B కంటే ఎక్కువ విలువ), [ప్యారిటీ మల్టీ-సిగ్ వాలెట్ హ్యాక్](https://www.coindesk.com/markets/2017/07/19/30-million-ether-reported-stolen-due-to-parity-wallet-breach) (హ్యాకర్లకు $30M నష్టం), మరియు [ప్యారిటీ ఫ్రోజెన్ వాలెట్ సమస్య](https://www.theguardian.com/technology/2017/nov/08/cryptocurrency-300m-dollars-stolen-bug-ether) (ETH లో $300M కంటే ఎక్కువ శాశ్వతంగా లాక్ చేయబడింది) వంటి ఉన్నత స్థాయి సంఘటనలు ఇందులో ఉన్నాయి. + +పైన పేర్కొన్న సమస్యల కారణంగా, డెవలపర్లు సురక్షితమైన, దృఢమైన, మరియు స్థితిస్థాపకమైన స్మార్ట్ కాంట్రాక్ట్‌లను రూపొందించడంలో కృషి చేయడం అత్యవసరం. స్మార్ట్ కాంట్రాక్ట్ భద్రత అనేది ఒక గంభీరమైన విషయం, మరియు ప్రతి డెవలపర్ దీనిని నేర్చుకోవడం మంచిది. ఈ గైడ్ ఇతీరియము డెవలపర్‌ల కోసం భద్రతా పరిగణనలను చర్చిస్తుంది మరియు స్మార్ట్ కాంట్రాక్ట్ భద్రతను మెరుగుపరచడానికి వనరులను అన్వేషిస్తుంది. + +## అవసరాలు {#prerequisites} + +భద్రతను పరిష్కరించే ముందు మీరు [స్మార్ట్ కాంట్రాక్ట్ అభివృద్ధి యొక్క ప్రాథమిక అంశాలతో](/developers/docs/smart-contracts/) సుపరిచితులని నిర్ధారించుకోండి. + +## సురక్షితమైన ఇతీరియము స్మార్ట్ కాంట్రాక్ట్‌లను రూపొందించడానికి మార్గదర్శకాలు {#smart-contract-security-guidelines} + +### 1. సరైన యాక్సెస్ నియంత్రణలను రూపొందించండి {#design-proper-access-controls} + +స్మార్ట్ కాంట్రాక్ట్‌లలో, `public` లేదా `external`గా గుర్తించబడిన ఫంక్షన్‌లను ఏదైనా బాహ్య యాజమాన్యంలోని ఖాతాలు (EOAలు) లేదా కాంట్రాక్ట్ ఖాతాలు పిలవవచ్చు. మీ కాంట్రాక్ట్‌తో ఇతరులు సంభాషించాలని మీరు కోరుకుంటే, ఫంక్షన్‌ల కోసం పబ్లిక్ విజిబిలిటీని పేర్కొనడం అవసరం. అయితే, `private`గా గుర్తించబడిన ఫంక్షన్‌లను స్మార్ట్ కాంట్రాక్ట్‌లోని ఫంక్షన్‌లు మాత్రమే పిలవగలవు, బాహ్య ఖాతాలు పిలవలేవు. ప్రతి నెట్‌వర్క్ పార్టిసిపెంట్‌కు కాంట్రాక్ట్ ఫంక్షన్‌లకు యాక్సెస్ ఇవ్వడం సమస్యలను కలిగిస్తుంది, ముఖ్యంగా ఎవరైనా సున్నితమైన కార్యకలాపాలను (ఉదా., కొత్త టోకెన్‌లను ముద్రించడం) నిర్వహించగలిగితే. + +స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌ల అనధికార వినియోగాన్ని నివారించడానికి, సురక్షితమైన యాక్సెస్ నియంత్రణలను అమలు చేయడం అవసరం. యాక్సెస్ నియంత్రణ యంత్రాంగాలు స్మార్ట్ కాంట్రాక్ట్‌లోని కొన్ని ఫంక్షన్‌లను ఉపయోగించే సామర్థ్యాన్ని, కాంట్రాక్ట్‌ను నిర్వహించడానికి బాధ్యత వహించే ఖాతాలు వంటి ఆమోదించబడిన సంస్థలకు పరిమితం చేస్తాయి. స్మార్ట్ కాంట్రాక్ట్‌లలో యాక్సెస్ నియంత్రణను అమలు చేయడానికి **ఓనబుల్ ప్యాటర్న్** మరియు **రోల్-బేస్డ్ కంట్రోల్** అనేవి రెండు ఉపయోగకరమైన ప్యాటర్న్‌లు: + +#### ఓనబుల్ ప్యాటర్న్ {#ownable-pattern} + +ఓనబుల్ ప్యాటర్న్‌లో, కాంట్రాక్ట్-సృష్టి ప్రక్రియలో ఒక చిరునామా కాంట్రాక్ట్ యొక్క “యజమాని”గా సెట్ చేయబడుతుంది. రక్షిత ఫంక్షన్‌లకు `OnlyOwner` మాడిఫైయర్ కేటాయించబడుతుంది, ఇది ఫంక్షన్‌ను అమలు చేయడానికి ముందు కాంట్రాక్ట్ కాల్ చేసే చిరునామా యొక్క గుర్తింపును ప్రామాణీకరించేలా చేస్తుంది. కాంట్రాక్ట్ యజమాని కాకుండా ఇతర చిరునామాల నుండి రక్షిత ఫంక్షన్‌లకు చేసే కాల్‌లు ఎల్లప్పుడూ వెనక్కి వెళ్తాయి, అవాంఛిత యాక్సెస్‌ను నివారిస్తాయి. + +#### రోల్-ఆధారిత యాక్సెస్ నియంత్రణ {#role-based-access-control} + +ఒక స్మార్ట్ కాంట్రాక్ట్‌లో ఒకే చిరునామాను `Owner`గా నమోదు చేయడం కేంద్రీకరణ ప్రమాదాన్ని పరిచయం చేస్తుంది మరియు సింగిల్ పాయింట్-ఆఫ్-ఫెయిల్యూర్‌ను సూచిస్తుంది. యజమాని ఖాతా కీలు రాజీపడితే, దాడి చేసేవారు యాజమాన్యంలోని కాంట్రాక్ట్‌పై దాడి చేయవచ్చు. అందుకే బహుళ పరిపాలనా ఖాతాలతో రోల్-ఆధారిత యాక్సెస్ నియంత్రణ ప్యాటర్న్‌ను ఉపయోగించడం మంచి ఎంపిక కావచ్చు. + +రోల్-ఆధారిత యాక్సెస్ నియంత్రణలో, సున్నితమైన ఫంక్షన్‌లకు యాక్సెస్ విశ్వసనీయ భాగస్వాముల సమితి మధ్య పంపిణీ చేయబడుతుంది. ఉదాహరణకు, ఒక ఖాతా టోకెన్‌లను ముద్రించడానికి బాధ్యత వహించవచ్చు, మరొక ఖాతా అప్‌గ్రేడ్‌లను నిర్వహిస్తుంది లేదా కాంట్రాక్ట్‌ను పాజ్ చేస్తుంది. ఈ విధంగా యాక్సెస్ నియంత్రణను వికేంద్రీకరించడం వైఫల్యానికి దారితీసే ఏకైక కేంద్రాలను తొలగిస్తుంది మరియు వినియోగదారుల కోసం విశ్వసనీయ అంచనాలను తగ్గిస్తుంది. + +##### బహుళ-సంతకాల వాలెట్‌లను ఉపయోగించడం + +సురక్షితమైన యాక్సెస్ నియంత్రణను అమలు చేయడానికి మరొక విధానం కాంట్రాక్ట్‌ను నిర్వహించడానికి [బహుళ-సంతకాల ఖాతాను](/developers/docs/smart-contracts/#multisig) ఉపయోగించడం. సాధారణ EOA లా కాకుండా, బహుళ-సంతకాల ఖాతాలు బహుళ సంస్థల యాజమాన్యంలో ఉంటాయి మరియు లావాదేవీలను అమలు చేయడానికి కనీస సంఖ్యలో ఖాతాల నుండి సంతకాలు అవసరం—ఉదాహరణకు 5-లో-3. + +యాక్సెస్ నియంత్రణ కోసం మల్టీసిగ్‌ను ఉపయోగించడం భద్రత యొక్క అదనపు పొరను పరిచయం చేస్తుంది, ఎందుకంటే టార్గెట్ కాంట్రాక్ట్‌పై చర్యలకు బహుళ పార్టీల నుండి సమ్మతి అవసరం. ఓనబుల్ ప్యాటర్న్‌ను ఉపయోగించడం అవసరమైతే ఇది ప్రత్యేకంగా ఉపయోగపడుతుంది, ఎందుకంటే ఇది ఒక దాడి చేసేవాడు లేదా మోసపూరిత అంతర్గత వ్యక్తి దురుద్దేశపూర్వక ప్రయోజనాల కోసం సున్నితమైన కాంట్రాక్ట్ ఫంక్షన్‌లను తారుమారు చేయడాన్ని కష్టతరం చేస్తుంది. + +### 2. కాంట్రాక్ట్ కార్యకలాపాలను రక్షించడానికి require(), assert(), మరియు revert() స్టేట్‌మెంట్‌లను ఉపయోగించండి {#use-require-assert-revert} + +చెప్పినట్లుగా, మీ స్మార్ట్ కాంట్రాక్ట్ బ్లాక్‌చైన్‌లో అమలు చేయబడిన తర్వాత ఎవరైనా దానిలోని పబ్లిక్ ఫంక్షన్‌లను పిలవవచ్చు. బాహ్య ఖాతాలు కాంట్రాక్ట్‌తో ఎలా సంభాషిస్తాయో మీరు ముందుగా తెలుసుకోలేరు కాబట్టి, అమలు చేయడానికి ముందు సమస్యాత్మక కార్యకలాపాలకు వ్యతిరేకంగా అంతర్గత భద్రతా చర్యలను అమలు చేయడం ఉత్తమం. నిర్దిష్ట అవసరాలను సంతృప్తిపరచడంలో అమలు విఫలమైతే, మినహాయింపులను ట్రిగ్గర్ చేయడానికి మరియు స్టేట్ మార్పులను వెనక్కి తీసుకోవడానికి `require()`, `assert()`, మరియు `revert()` స్టేట్‌మెంట్‌లను ఉపయోగించడం ద్వారా మీరు స్మార్ట్ కాంట్రాక్ట్‌లలో సరైన ప్రవర్తనను అమలు చేయవచ్చు. + +**`require()`**: `require` అనేది ఫంక్షన్‌ల ప్రారంభంలో నిర్వచించబడింది మరియు పిలవబడిన ఫంక్షన్ అమలు చేయబడటానికి ముందుగా నిర్వచించబడిన షరతులు నెరవేరాయని నిర్ధారిస్తుంది. ఒక `require` స్టేట్‌మెంట్‌ను వినియోగదారు ఇన్‌పుట్‌లను ధృవీకరించడానికి, స్టేట్ వేరియబుల్స్‌ను తనిఖీ చేయడానికి, లేదా ఒక ఫంక్షన్‌తో ముందుకు సాగే ముందు కాల్ చేసే ఖాతా యొక్క గుర్తింపును ప్రామాణీకరించడానికి ఉపయోగించవచ్చు. + +**`assert()`**: `assert()` అంతర్గత లోపాలను గుర్తించడానికి మరియు మీ కోడ్‌లోని “ఇన్వేరియంట్‌ల” ఉల్లంఘనలను తనిఖీ చేయడానికి ఉపయోగించబడుతుంది. ఒక ఇన్వేరియంట్ అనేది కాంట్రాక్ట్ యొక్క స్టేట్ గురించి ఒక తార్కిక వాదన, ఇది అన్ని ఫంక్షన్ అమలులకు నిజంగా ఉండాలి. ఒక ఉదాహరణ ఇన్వేరియంట్ ఒక టోకెన్ కాంట్రాక్ట్ యొక్క గరిష్ట మొత్తం సరఫరా లేదా బ్యాలెన్స్. `assert()`ని ఉపయోగించడం వలన మీ కాంట్రాక్ట్ ఎప్పుడూ బలహీనమైన స్థితికి చేరదని నిర్ధారిస్తుంది, మరియు అలా జరిగితే, స్టేట్ వేరియబుల్స్‌కు చేసిన అన్ని మార్పులు వెనక్కి తీసుకోబడతాయి. + +**`revert()`**: `revert()`ని ఒక if-else స్టేట్‌మెంట్‌లో ఉపయోగించవచ్చు, ఇది అవసరమైన షరతు సంతృప్తి చెందకపోతే మినహాయింపును ట్రిగ్గర్ చేస్తుంది. కింది నమూనా కాంట్రాక్ట్ ఫంక్షన్‌ల అమలును రక్షించడానికి `revert()`ని ఉపయోగిస్తుంది: + +``` +pragma solidity ^0.8.4; + +contract VendingMachine { + address owner; + error Unauthorized(); + function buy(uint amount) public payable { + if (amount > msg.value / 2 ether) + revert("Not enough Ether provided."); + // కొనుగోలు చేయండి. + } + function withdraw() public { + if (msg.sender != owner) + revert Unauthorized(); + + payable(msg.sender).transfer(address(this).balance); + } +} +``` + +### 3. స్మార్ట్ కాంట్రాక్ట్‌లను పరీక్షించండి మరియు కోడ్ సరిగ్గా ఉందో లేదో ధృవీకరించండి {#test-smart-contracts-and-verify-code-correctness} + +[ఇతీరియము వర్చువల్ మషీన్](/developers/docs/evm/)లో నడుస్తున్న కోడ్ యొక్క మార్పులేనితత్వం అంటే స్మార్ట్ కాంట్రాక్ట్‌లు అభివృద్ధి దశలో ఉన్నత స్థాయి నాణ్యత అంచనాను కోరుతాయి. మీ కాంట్రాక్ట్‌ను విస్తృతంగా పరీక్షించడం మరియు ఏదైనా అనూహ్య ఫలితాల కోసం దానిని గమనించడం భద్రతను చాలా మెరుగుపరుస్తుంది మరియు దీర్ఘకాలంలో మీ వినియోగదారులను రక్షిస్తుంది. + +సాధారణ పద్ధతి, కాంట్రాక్ట్ వినియోగదారుల నుండి స్వీకరించే అవకాశం ఉన్న మాక్ డేటాను ఉపయోగించి చిన్న యూనిట్ పరీక్షలు వ్రాయడం. [యూనిట్ టెస్టింగ్](/developers/docs/smart-contracts/testing/#unit-testing) కొన్ని ఫంక్షన్‌ల యొక్క కార్యాచరణను పరీక్షించడానికి మరియు స్మార్ట్ కాంట్రాక్ట్ ఆశించిన విధంగా పనిచేస్తుందని నిర్ధారించుకోవడానికి మంచిది. + +దురదృష్టవశాత్తు, ఒంటరిగా ఉపయోగించినప్పుడు స్మార్ట్ కాంట్రాక్ట్ భద్రతను మెరుగుపరచడంలో యూనిట్ టెస్టింగ్ కనీస ప్రభావవంతంగా ఉంటుంది. ఒక యూనిట్ పరీక్ష మాక్ డేటా కోసం ఒక ఫంక్షన్ సరిగ్గా అమలు అవుతుందని నిరూపించవచ్చు, కానీ యూనిట్ పరీక్షలు వ్రాయబడిన పరీక్షల వలె మాత్రమే ప్రభావవంతంగా ఉంటాయి. ఇది మీ స్మార్ట్ కాంట్రాక్ట్ భద్రతను దెబ్బతీసే తప్పిపోయిన ఎడ్జ్ కేసులు మరియు బలహీనతలను గుర్తించడాన్ని కష్టతరం చేస్తుంది. + +మెరుగైన విధానం యూనిట్ టెస్టింగ్‌ను [స్టాటిక్ మరియు డైనమిక్ ఎనాలిసిస్](/developers/docs/smart-contracts/testing/#static-dynamic-analysis) ఉపయోగించి నిర్వహించే ప్రాపర్టీ-బేస్డ్ టెస్టింగ్‌తో కలపడం. స్టాటిక్ ఎనాలిసిస్, చేరుకోగల ప్రోగ్రామ్ స్టేట్‌లు మరియు ఎగ్జిక్యూషన్ మార్గాలను విశ్లేషించడానికి [కంట్రోల్ ఫ్లో గ్రాఫ్‌లు](https://en.wikipedia.org/wiki/Control-flow_graph) మరియు [అబ్‌స్ట్రాక్ట్ సింటాక్స్ ట్రీలు](https://deepsource.io/glossary/ast/) వంటి తక్కువ-స్థాయి ప్రాతినిధ్యాలపై ఆధారపడుతుంది. ఇంతలో, [స్మార్ట్ కాంట్రాక్ట్ ఫజింగ్](https://www.cyfrin.io/blog/smart-contract-fuzzing-and-invariants-testing-foundry) వంటి డైనమిక్ విశ్లేషణ పద్ధతులు, భద్రతా లక్షణాలను ఉల్లంఘించే కార్యకలాపాలను గుర్తించడానికి యాదృచ్ఛిక ఇన్‌పుట్ విలువలతో కాంట్రాక్ట్ కోడ్‌ను అమలు చేస్తాయి. + +[ఫార్మల్ వెరిఫికేషన్](/developers/docs/smart-contracts/formal-verification) అనేది స్మార్ట్ కాంట్రాక్ట్‌లలో భద్రతా లక్షణాలను ధృవీకరించడానికి మరొక పద్ధతి. సాధారణ టెస్టింగ్ లా కాకుండా, ఫార్మల్ వెరిఫికేషన్ ఒక స్మార్ట్ కాంట్రాక్ట్‌లో లోపాలు లేవని నిశ్చయంగా నిరూపించగలదు. ఇది కావలసిన భద్రతా లక్షణాలను సంగ్రహించే ఒక ఫార్మల్ స్పెసిఫికేషన్‌ను సృష్టించడం మరియు కాంట్రాక్ట్‌ల యొక్క ఫార్మల్ మోడల్ ఈ స్పెసిఫికేషన్‌కు కట్టుబడి ఉందని నిరూపించడం ద్వారా సాధించబడుతుంది. + +### 4. మీ కోడ్ యొక్క స్వతంత్ర సమీక్ష కోసం అడగండి {#get-independent-code-reviews} + +మీ కాంట్రాక్ట్‌ను పరీక్షించిన తర్వాత, ఏవైనా భద్రతా సమస్యల కోసం సోర్స్ కోడ్‌ను తనిఖీ చేయమని ఇతరులను అడగడం మంచిది. టెస్టింగ్ ఒక స్మార్ట్ కాంట్రాక్ట్‌లోని ప్రతి లోపాన్ని వెలికితీయదు, కానీ స్వతంత్ర సమీక్ష పొందడం బలహీనతలను గుర్తించే అవకాశాన్ని పెంచుతుంది. + +#### ఆడిట్లు {#audits} + +ఒక స్మార్ట్ కాంట్రాక్ట్ ఆడిట్‌ను ప్రారంభించడం అనేది స్వతంత్ర కోడ్ సమీక్షను నిర్వహించడానికి ఒక మార్గం. ఆడిటర్లు స్మార్ట్ కాంట్రాక్ట్‌లు సురక్షితంగా ఉన్నాయని మరియు నాణ్యత లోపాలు మరియు డిజైన్ లోపాల నుండి విముక్తంగా ఉన్నాయని నిర్ధారించడంలో ముఖ్యమైన పాత్ర పోషిస్తారు. + +అయినప్పటికీ, మీరు ఆడిట్‌లను ఒక సర్వరోగనివారిణిగా పరిగణించకుండా ఉండాలి. స్మార్ట్ కాంట్రాక్ట్ ఆడిట్లు ప్రతి బగ్‌ను పట్టుకోలేవు మరియు చాలావరకు సమీక్షల యొక్క అదనపు రౌండ్‌ను అందించడానికి రూపొందించబడ్డాయి, ఇది ప్రారంభ అభివృద్ధి మరియు టెస్టింగ్ సమయంలో డెవలపర్లు తప్పిపోయిన సమస్యలను గుర్తించడంలో సహాయపడుతుంది. స్మార్ట్ కాంట్రాక్ట్ ఆడిట్ యొక్క ప్రయోజనాన్ని గరిష్టీకరించడానికి, ఆడిటర్‌లతో పనిచేయడానికి ఉత్తమ పద్ధతులను కూడా మీరు అనుసరించాలి, ఉదాహరణకు కోడ్‌ను సరిగ్గా డాక్యుమెంట్ చేయడం మరియు ఇన్‌లైన్ వ్యాఖ్యలను జోడించడం. + +- [స్మార్ట్ కాంట్రాక్ట్ ఆడిటింగ్ చిట్కాలు & ట్రిక్స్](https://twitter.com/tinchoabbate/status/1400170232904400897) - _@tinchoabbate_ +- [మీ ఆడిట్ నుండి గరిష్ట ప్రయోజనం పొందండి](https://inference.ag/blog/2023-08-14-tips/) - _Inference_ + +#### బగ్ బౌంటీలు {#bug-bounties} + +బగ్ బౌంటీ ప్రోగ్రామ్‌ను ఏర్పాటు చేయడం బాహ్య కోడ్ సమీక్షలను అమలు చేయడానికి మరొక విధానం. బగ్ బౌంటీ అనేది ఒక అప్లికేషన్‌లో బలహీనతలను కనుగొన్న వ్యక్తులకు (సాధారణంగా వైట్‌హ్యాట్ హ్యాకర్లు) ఇవ్వబడిన ఆర్థిక బహుమతి. + +సరిగ్గా ఉపయోగించినప్పుడు, బగ్ బౌంటీలు హ్యాకర్ కమ్యూనిటీ సభ్యులకు మీ కోడ్‌ను క్లిష్టమైన లోపాల కోసం తనిఖీ చేయడానికి ప్రోత్సాహాన్ని ఇస్తాయి. ఒక నిజ జీవిత ఉదాహరణ “అనంతమైన డబ్బు బగ్”, ఇది ఇతీరియము పై నడుస్తున్న [లేయర్ 2](/layer-2/) ప్రోటోకాల్ అయిన [ఆప్టిమిజం](https://www.optimism.io/) పై ఒక దాడి చేసేవాడు అపరిమిత మొత్తంలో ఈథర్‌ను సృష్టించడానికి అనుమతించేది. అదృష్టవశాత్తు, ఒక వైట్‌హ్యాట్ హ్యాకర్ [ఆ లోపాన్ని కనుగొని](https://www.saurik.com/optimism.html) బృందానికి తెలియజేశాడు, [ఈ ప్రక్రియలో పెద్ద చెల్లింపును సంపాదించాడు](https://cryptoslate.com/critical-bug-in-ethereum-l2-optimism-2m-bounty-paid/). + +ఒక ఉపయోగకరమైన వ్యూహం, బగ్ బౌంటీ ప్రోగ్రామ్ యొక్క చెల్లింపును వాటాలో ఉన్న నిధుల మొత్తానికి అనులోమానుపాతంలో సెట్ చేయడం. “[స్కేలింగ్ బగ్ బౌంటీ](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)”గా వర్ణించబడిన ఈ విధానం, వ్యక్తులకు బలహీనతలను ఉపయోగించుకునే బదులు బాధ్యతాయుతంగా బహిర్గతం చేయడానికి ఆర్థిక ప్రోత్సాహకాలను అందిస్తుంది. + +### 5. స్మార్ట్ కాంట్రాక్ట్ అభివృద్ధి సమయంలో ఉత్తమ పద్ధతులను అనుసరించండి {#follow-smart-contract-development-best-practices} + +ఆడిట్లు మరియు బగ్ బౌంటీలు ఉన్నంత మాత్రాన, అధిక-నాణ్యత కోడ్ వ్రాయవలసిన మీ బాధ్యత నుండి మీకు మినహాయింపు లభించదు. మంచి స్మార్ట్ కాంట్రాక్ట్ భద్రత సరైన డిజైన్ మరియు అభివృద్ధి ప్రక్రియలను అనుసరించడంతో ప్రారంభమవుతుంది: + +- మొత్తం కోడ్‌ను git వంటి వెర్షన్ కంట్రోల్ సిస్టమ్‌లో నిల్వ చేయండి + +- అన్ని కోడ్ మార్పులను పుల్ రిక్వెస్ట్‌ల ద్వారా చేయండి + +- పుల్ రిక్వెస్ట్‌లకు కనీసం ఒక స్వతంత్ర సమీక్షకుడు ఉండేలా చూసుకోండి—మీరు ఒక ప్రాజెక్ట్‌పై ఒంటరిగా పనిచేస్తుంటే, ఇతర డెవలపర్‌లను కనుగొని కోడ్ సమీక్షలను మార్చుకోవడాన్ని పరిగణించండి + +- స్మార్ట్ కాంట్రాక్ట్‌లను పరీక్షించడం, కంపైల్ చేయడం, అమలు చేయడం కోసం [డెవలప్‌మెంట్ ఎన్విరాన్‌మెంట్‌ను](/developers/docs/frameworks/) ఉపయోగించండి + +- మీ కోడ్‌ను [సైఫ్రిన్ అడెరిన్](https://github.com/Cyfrin/aderyn), మిథ్రిల్ మరియు స్లిథర్ వంటి ప్రాథమిక కోడ్ విశ్లేషణ సాధనాల ద్వారా అమలు చేయండి. ఆదర్శంగా, మీరు ప్రతి పుల్ రిక్వెస్ట్ విలీనం చేయబడటానికి ముందు దీనిని చేయాలి మరియు అవుట్‌పుట్‌లోని తేడాలను పోల్చాలి + +- మీ కోడ్ లోపాలు లేకుండా కంపైల్ అవుతుందని మరియు Solidity కంపైలర్ ఎలాంటి హెచ్చరికలను విడుదల చేయదని నిర్ధారించుకోండి + +- మీ కోడ్‌ను సరిగ్గా డాక్యుమెంట్ చేయండి ([NatSpec](https://solidity.readthedocs.io/en/develop/natspec-format.html) ఉపయోగించి) మరియు కాంట్రాక్ట్ ఆర్కిటెక్చర్ గురించిన వివరాలను సులభంగా అర్థమయ్యే భాషలో వివరించండి. ఇది ఇతరులు మీ కోడ్‌ను ఆడిట్ చేయడానికి మరియు సమీక్షించడానికి సులభతరం చేస్తుంది. + +### 6. దృఢమైన విపత్తు పునరుద్ధరణ ప్రణాళికలను అమలు చేయండి {#implement-disaster-recovery-plans} + +సురక్షితమైన యాక్సెస్ నియంత్రణలను రూపొందించడం, ఫంక్షన్ మాడిఫైయర్‌లను అమలు చేయడం మరియు ఇతర సూచనలు స్మార్ట్ కాంట్రాక్ట్ భద్రతను మెరుగుపరచగలవు, కానీ అవి హానికరమైన దోపిడీల అవకాశాన్ని తోసిపుచ్చలేవు. సురక్షితమైన స్మార్ట్ కాంట్రాక్ట్‌లను నిర్మించడానికి “వైఫల్యానికి సిద్ధపడటం” మరియు దాడులకు సమర్థవంతంగా ప్రతిస్పందించడానికి ఒక ఫాల్‌బ్యాక్ ప్రణాళికను కలిగి ఉండటం అవసరం. సరైన విపత్తు పునరుద్ధరణ ప్రణాళిక కింది భాగాలలో కొన్నింటిని లేదా అన్నింటినీ కలిగి ఉంటుంది: + +#### కాంట్రాక్ట్ అప్‌గ్రేడ్‌లు {#contract-upgrades} + +ఇతీరియము స్మార్ట్ కాంట్రాక్ట్‌లు డిఫాల్ట్‌గా మార్పులేనివి అయినప్పటికీ, అప్‌గ్రేడ్ ప్యాటర్న్‌లను ఉపయోగించడం ద్వారా కొంతవరకు మార్పుచేర్పులను సాధించడం సాధ్యమవుతుంది. ఒక క్లిష్టమైన లోపం మీ పాత కాంట్రాక్ట్‌ను నిరుపయోగంగా మార్చినప్పుడు మరియు కొత్త లాజిక్‌ను అమలు చేయడం అత్యంత ఆచరణీయమైన ఎంపిక అయిన సందర్భాలలో కాంట్రాక్ట్‌లను అప్‌గ్రేడ్ చేయడం అవసరం. + +కాంట్రాక్ట్ అప్‌గ్రేడ్ యంత్రాంగాలు విభిన్నంగా పనిచేస్తాయి, కానీ స్మార్ట్ కాంట్రాక్ట్‌లను అప్‌గ్రేడ్ చేయడానికి “ప్రాక్సీ ప్యాటర్న్” అనేది మరింత ప్రజాదరణ పొందిన విధానాలలో ఒకటి. [ప్రాక్సీ ప్యాటర్న్‌లు](https://www.cyfrin.io/blog/upgradeable-proxy-smart-contract-pattern) ఒక అప్లికేషన్ యొక్క స్టేట్ మరియు లాజిక్‌ను _రెండు_ కాంట్రాక్ట్‌ల మధ్య విభజిస్తాయి. మొదటి కాంట్రాక్ట్ (ఒక ‘ప్రాక్సీ కాంట్రాక్ట్’ అని పిలుస్తారు) స్టేట్ వేరియబుల్స్‌ను (ఉదా., వినియోగదారు బ్యాలెన్స్‌లు) నిల్వ చేస్తుంది, అయితే రెండవ కాంట్రాక్ట్ (ఒక ‘లాజిక్ కాంట్రాక్ట్’ అని పిలుస్తారు) కాంట్రాక్ట్ ఫంక్షన్‌లను అమలు చేయడానికి కోడ్‌ను కలిగి ఉంటుంది. + +ఖాతాలు ప్రాక్సీ కాంట్రాక్ట్‌తో సంభాషిస్తాయి, ఇది [`delegatecall()`](https://docs.soliditylang.org/en/v0.8.16/introduction-to-smart-contracts.html?highlight=delegatecall#delegatecall-callcode-and-libraries) తక్కువ-స్థాయి కాల్‌ను ఉపయోగించి అన్ని ఫంక్షన్ కాల్‌లను లాజిక్ కాంట్రాక్ట్‌కు పంపుతుంది. సాధారణ మెసేజ్ కాల్ లా కాకుండా, `delegatecall()` లాజిక్ కాంట్రాక్ట్ చిరునామాలో నడుస్తున్న కోడ్ కాలింగ్ కాంట్రాక్ట్ సందర్భంలో అమలు చేయబడుతుందని నిర్ధారిస్తుంది. అంటే లాజిక్ కాంట్రాక్ట్ ఎల్లప్పుడూ ప్రాక్సీ స్టోరేజ్‌కు (దాని స్వంత స్టోరేజ్‌కు బదులుగా) వ్రాస్తుంది మరియు `msg.sender` మరియు `msg.value` యొక్క అసలు విలువలు భద్రపరచబడతాయి. + +లాజిక్ కాంట్రాక్ట్‌కు కాల్‌లను డెలిగేట్ చేయడానికి ప్రాక్సీ కాంట్రాక్ట్ యొక్క స్టోరేజ్‌లో దాని చిరునామాను నిల్వ చేయడం అవసరం. అందువల్ల, కాంట్రాక్ట్ యొక్క లాజిక్‌ను అప్‌గ్రేడ్ చేయడం అనేది మరొక లాజిక్ కాంట్రాక్ట్‌ను అమలు చేసి, కొత్త చిరునామాను ప్రాక్సీ కాంట్రాక్ట్‌లో నిల్వ చేయడం మాత్రమే. ప్రాక్సీ కాంట్రాక్ట్‌కు తదుపరి కాల్‌లు స్వయంచాలకంగా కొత్త లాజిక్ కాంట్రాక్ట్‌కు మళ్ళించబడతాయి కాబట్టి, మీరు వాస్తవానికి కోడ్‌ను మార్చకుండానే కాంట్రాక్ట్‌ను “అప్‌గ్రేడ్” చేసినట్లు అవుతుంది. + +[కాంట్రాక్ట్‌లను అప్‌గ్రేడ్ చేయడం గురించి మరింత](/developers/docs/smart-contracts/upgrading/). + +#### అత్యవసర నిలుపుదలలు {#emergency-stops} + +చెప్పినట్లుగా, విస్తృతమైన ఆడిటింగ్ మరియు టెస్టింగ్ ఒక స్మార్ట్ కాంట్రాక్ట్‌లోని అన్ని బగ్‌లను కనుగొనలేవు. అమలు తర్వాత మీ కోడ్‌లో ఒక బలహీనత కనిపిస్తే, కాంట్రాక్ట్ చిరునామాలో నడుస్తున్న కోడ్‌ను మీరు మార్చలేరు కాబట్టి దానిని ప్యాచ్ చేయడం అసాధ్యం. అలాగే, అప్‌గ్రేడ్ యంత్రాంగాలు (ఉదా., ప్రాక్సీ ప్యాటర్న్‌లు) అమలు చేయడానికి సమయం పట్టవచ్చు (వాటికి తరచుగా వివిధ పార్టీల నుండి ఆమోదం అవసరం), ఇది దాడి చేసేవారికి మరింత నష్టం కలిగించడానికి ఎక్కువ సమయం ఇస్తుంది. + +అణు ఎంపిక అనేది ఒక “అత్యవసర నిలుపుదల” ఫంక్షన్‌ను అమలు చేయడం, ఇది ఒక కాంట్రాక్ట్‌లోని బలహీనమైన ఫంక్షన్‌లకు కాల్‌లను బ్లాక్ చేస్తుంది. అత్యవసర నిలుపుదలలు సాధారణంగా కింది భాగాలను కలిగి ఉంటాయి: + +1. స్మార్ట్ కాంట్రాక్ట్ నిలిపివేయబడిన స్థితిలో ఉందో లేదో సూచించే ఒక గ్లోబల్ బూలియన్ వేరియబుల్. ఈ వేరియబుల్ కాంట్రాక్ట్‌ను సెటప్ చేసేటప్పుడు `false`గా సెట్ చేయబడుతుంది, కానీ కాంట్రాక్ట్ నిలిపివేయబడిన తర్వాత `true`కు తిరిగి వస్తుంది. + +2. వాటి అమలులో బూలియన్ వేరియబుల్‌ను సూచించే ఫంక్షన్‌లు. అటువంటి ఫంక్షన్‌లు స్మార్ట్ కాంట్రాక్ట్ నిలిపివేయబడనప్పుడు యాక్సెస్ చేయబడతాయి మరియు అత్యవసర నిలుపుదల ఫీచర్ ట్రిగ్గర్ చేయబడినప్పుడు యాక్సెస్ చేయలేకుండా పోతాయి. + +3. అత్యవసర నిలుపుదల ఫంక్షన్‌కు యాక్సెస్ ఉన్న ఒక సంస్థ, ఇది బూలియన్ వేరియబుల్‌ను `true`గా సెట్ చేస్తుంది. హానికరమైన చర్యలను నివారించడానికి, ఈ ఫంక్షన్‌కు కాల్‌లను విశ్వసనీయ చిరునామాకు (ఉదా., కాంట్రాక్ట్ యజమాని) పరిమితం చేయవచ్చు. + +కాంట్రాక్ట్ అత్యవసర నిలుపుదలను సక్రియం చేసిన తర్వాత, కొన్ని ఫంక్షన్‌లను పిలవలేము. గ్లోబల్ వేరియబుల్‌ను సూచించే ఒక మాడిఫైయర్‌లో ఎంచుకున్న ఫంక్షన్‌లను చుట్టడం ద్వారా ఇది సాధించబడుతుంది. కింద ఈ ప్యాటర్న్ యొక్క అమలును కాంట్రాక్ట్‌లలో వివరించే [ఒక ఉదాహరణ](https://github.com/fravoll/solidity-patterns/blob/master/EmergencyStop/EmergencyStop.sol) ఉంది: + +```solidity +// ఈ కోడ్ వృత్తిపరంగా ఆడిట్ చేయబడలేదు మరియు భద్రత లేదా ఖచ్చితత్వం గురించి ఎటువంటి వాగ్దానాలు చేయదు. మీ స్వంత పూచీతో ఉపయోగించండి. + +contract EmergencyStop { + + bool isStopped = false; + + modifier stoppedInEmergency { + require(!isStopped); + _; + } + + modifier onlyWhenStopped { + require(isStopped); + _; + } + + modifier onlyAuthorized { + // ఇక్కడ msg.sender అధికారం కోసం తనిఖీ చేయండి + _; + } + + function stopContract() public onlyAuthorized { + isStopped = true; + } + + function resumeContract() public onlyAuthorized { + isStopped = false; + } + + function deposit() public payable stoppedInEmergency { + // డిపాజిట్ లాజిక్ ఇక్కడ జరుగుతోంది + } + + function emergencyWithdraw() public onlyWhenStopped { + // అత్యవసర ఉపసంహరణ ఇక్కడ జరుగుతోంది + } +} +``` + +ఈ ఉదాహరణ అత్యవసర నిలుపుదలల యొక్క ప్రాథమిక లక్షణాలను చూపుతుంది: + +- `isStopped` అనేది ఒక బూలియన్, ఇది ప్రారంభంలో `false`గా మరియు కాంట్రాక్ట్ అత్యవసర మోడ్‌లోకి ప్రవేశించినప్పుడు `true`గా మూల్యాంకనం చేస్తుంది. + +- ఫంక్షన్ మాడిఫైయర్‌లు `onlyWhenStopped` మరియు `stoppedInEmergency` `isStopped` వేరియబుల్‌ను తనిఖీ చేస్తాయి. `stoppedInEmergency` అనేది కాంట్రాక్ట్ బలహీనంగా ఉన్నప్పుడు యాక్సెస్ చేయలేని ఫంక్షన్‌లను (ఉదా., `deposit()`) నియంత్రించడానికి ఉపయోగించబడుతుంది. ఈ ఫంక్షన్‌లకు చేసే కాల్‌లు కేవలం వెనక్కి వెళ్తాయి. + +`onlyWhenStopped` అత్యవసర పరిస్థితుల్లో పిలవగల ఫంక్షన్‌ల కోసం ఉపయోగించబడుతుంది (ఉదా., `emergencyWithdraw()`). అటువంటి ఫంక్షన్‌లు పరిస్థితిని పరిష్కరించడంలో సహాయపడగలవు, అందుకే వాటిని “నిరోధిత ఫంక్షన్‌ల” జాబితా నుండి మినహాయించారు. + +అత్యవసర నిలుపుదల కార్యాచరణను ఉపయోగించడం మీ స్మార్ట్ కాంట్రాక్ట్‌లోని తీవ్రమైన బలహీనతలతో వ్యవహరించడానికి ఒక సమర్థవంతమైన తాత్కాలిక పరిష్కారాన్ని అందిస్తుంది. అయితే, డెవలపర్లు స్వార్థ ప్రయోజనాల కోసం దానిని సక్రియం చేయరని వినియోగదారులు విశ్వసించాల్సిన అవసరాన్ని ఇది పెంచుతుంది. ఈ దిశగా, ఆన్‌చైన్ ఓటింగ్ మెకానిజం, టైమ్‌లాక్ లేదా మల్టీసిగ్ వాలెట్ నుండి ఆమోదానికి లోబడి అత్యవసర నిలుపుదల నియంత్రణను వికేంద్రీకరించడం సాధ్యమయ్యే పరిష్కారాలు. + +#### ఈవెంట్ పర్యవేక్షణ {#event-monitoring} + +[ఈవెంట్‌లు](https://docs.soliditylang.org/en/v0.8.15/contracts.html#events) స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌లకు కాల్‌లను ట్రాక్ చేయడానికి మరియు స్టేట్ వేరియబుల్స్‌లోని మార్పులను పర్యవేక్షించడానికి మిమ్మల్ని అనుమతిస్తాయి. ఏదైనా పార్టీ భద్రతా-క్లిష్టమైన చర్యను (ఉదా., నిధులను ఉపసంహరించుకోవడం) తీసుకున్నప్పుడల్లా ఒక ఈవెంట్‌ను విడుదల చేయడానికి మీ స్మార్ట్ కాంట్రాక్ట్‌ను ప్రోగ్రామ్ చేయడం ఉత్తమం. + +ఈవెంట్‌లను లాగింగ్ చేయడం మరియు వాటిని ఆఫ్‌చైన్‌లో పర్యవేక్షించడం కాంట్రాక్ట్ కార్యకలాపాలపై అంతర్దృష్టులను అందిస్తుంది మరియు హానికరమైన చర్యలను వేగంగా కనుగొనడంలో సహాయపడుతుంది. అంటే మీ బృందం హ్యాక్‌లకు వేగంగా ప్రతిస్పందించగలదు మరియు ఫంక్షన్‌లను పాజ్ చేయడం లేదా అప్‌గ్రేడ్ చేయడం వంటి వినియోగదారులపై ప్రభావాన్ని తగ్గించడానికి చర్యలు తీసుకోగలదు. + +మీరు మీ కాంట్రాక్ట్‌లతో ఎవరైనా సంభాషించినప్పుడల్లా స్వయంచాలకంగా హెచ్చరికలను ఫార్వార్డ్ చేసే ఆఫ్-ది-షెల్ఫ్ పర్యవేక్షణ సాధనాన్ని కూడా ఎంచుకోవచ్చు. ఈ సాధనాలు లావాదేవీల పరిమాణం, ఫంక్షన్ కాల్‌ల ఫ్రీక్వెన్సీ లేదా పాల్గొన్న నిర్దిష్ట ఫంక్షన్‌లు వంటి విభిన్న ట్రిగ్గర్‌ల ఆధారంగా అనుకూల హెచ్చరికలను సృష్టించడానికి మిమ్మల్ని అనుమతిస్తాయి. ఉదాహరణకు, ఒకే లావాదేవీలో ఉపసంహరించుకున్న మొత్తం ఒక నిర్దిష్ట పరిమితిని దాటినప్పుడు వచ్చే హెచ్చరికను మీరు ప్రోగ్రామ్ చేయవచ్చు. + +### 7. సురక్షితమైన పాలన వ్యవస్థలను రూపొందించండి {#design-secure-governance-systems} + +మీరు కోర్ స్మార్ట్ కాంట్రాక్ట్‌ల నియంత్రణను కమ్యూనిటీ సభ్యులకు అప్పగించడం ద్వారా మీ అప్లికేషన్‌ను వికేంద్రీకరించాలనుకోవచ్చు. ఈ సందర్భంలో, స్మార్ట్ కాంట్రాక్ట్ సిస్టమ్‌లో ఒక పాలన మాడ్యూల్ ఉంటుంది—ఇది ఆన్‌చైన్ పాలన వ్యవస్థ ద్వారా పరిపాలనా చర్యలను ఆమోదించడానికి కమ్యూనిటీ సభ్యులను అనుమతించే ఒక యంత్రాంగం. ఉదాహరణకు, ఒక ప్రాక్సీ కాంట్రాక్ట్‌ను కొత్త అమలుకు అప్‌గ్రేడ్ చేయాలనే ప్రతిపాదనపై టోకెన్-హోల్డర్‌లు ఓటు వేయవచ్చు. + +వికేంద్రీకృత పాలన ప్రయోజనకరంగా ఉంటుంది, ముఖ్యంగా ఇది డెవలపర్లు మరియు తుది-వినియోగదారుల ప్రయోజనాలను ఒకే రేఖపైకి తెస్తుంది. అయినప్పటికీ, స్మార్ట్ కాంట్రాక్ట్ పాలన యంత్రాంగాలు తప్పుగా అమలు చేయబడితే కొత్త ప్రమాదాలను పరిచయం చేయవచ్చు. ఒక సంభావ్య దృశ్యం ఏమిటంటే, ఒక దాడి చేసేవాడు [ఫ్లాష్ లోన్](/defi/#flash-loans) తీసుకోవడం ద్వారా అపారమైన ఓటింగ్ శక్తిని (నిర్వహించిన టోకెన్ల సంఖ్యలో కొలుస్తారు) సంపాదించి, ఒక హానికరమైన ప్రతిపాదనను ముందుకు తెస్తాడు. + +ఆన్‌చైన్ పాలనకు సంబంధించిన సమస్యలను నివారించడానికి ఒక మార్గం [టైమ్‌లాక్‌ను ఉపయోగించడం](https://blog.openzeppelin.com/protect-your-users-with-smart-contract-timelocks/). ఒక టైమ్‌లాక్ ఒక స్మార్ట్ కాంట్రాక్ట్‌ను నిర్దిష్ట సమయం గడిచే వరకు కొన్ని చర్యలను అమలు చేయకుండా నిరోధిస్తుంది. ఇతర వ్యూహాలలో ప్రతి టోకెన్‌కు అది ఎంతకాలం లాక్ చేయబడి ఉందో దాని ఆధారంగా “ఓటింగ్ వెయిట్” కేటాయించడం, లేదా ప్రస్తుత బ్లాక్‌కు బదులుగా చారిత్రక కాలంలో (ఉదాహరణకు, గతంలో 2-3 బ్లాక్‌లు) ఒక చిరునామా యొక్క ఓటింగ్ శక్తిని కొలవడం ఉన్నాయి. రెండు పద్ధతులు ఆన్‌చైన్ ఓట్లను ప్రభావితం చేయడానికి వేగంగా ఓటింగ్ శక్తిని కూడగట్టే అవకాశాన్ని తగ్గిస్తాయి. + +షేర్ చేయబడిన లింక్‌లలో [సురక్షితమైన పాలన వ్యవస్థలను రూపొందించడం](https://blog.openzeppelin.com/smart-contract-security-guidelines-4-strategies-for-safer-governance-systems/), [DAOలలో విభిన్న ఓటింగ్ యంత్రాంగాలు](https://hackernoon.com/governance-is-the-holy-grail-for-daos), మరియు [DeFiని ఉపయోగించుకునే సాధారణ DAO దాడి వెక్టర్‌లు](https://dacian.me/dao-governance-defi-attacks) గురించి మరింత సమాచారం. + +### 8. కోడ్‌లో సంక్లిష్టతను కనిష్ట స్థాయికి తగ్గించండి {#reduce-code-complexity} + +సాంప్రదాయ సాఫ్ట్‌వేర్ డెవలపర్‌లకు KISS (“keep it simple, stupid”) సూత్రం గురించి తెలుసు, ఇది సాఫ్ట్‌వేర్ డిజైన్‌లో అనవసరమైన సంక్లిష్టతను ప్రవేశపెట్టవద్దని సలహా ఇస్తుంది. “సంక్లిష్ట వ్యవస్థలు సంక్లిష్ట మార్గాల్లో విఫలమవుతాయి” మరియు ఖరీదైన లోపాలకు ఎక్కువ అవకాశం ఉందని దీర్ఘకాలంగా ఉన్న ఆలోచనను ఇది అనుసరిస్తుంది. + +స్మార్ట్ కాంట్రాక్ట్‌లు వ్రాసేటప్పుడు విషయాలను సరళంగా ఉంచడం చాలా ముఖ్యం, ఎందుకంటే స్మార్ట్ కాంట్రాక్ట్‌లు పెద్ద మొత్తంలో విలువను నియంత్రించే అవకాశం ఉంది. స్మార్ట్ కాంట్రాక్ట్‌లు వ్రాసేటప్పుడు సరళతను సాధించడానికి ఒక చిట్కా, సాధ్యమైన చోట, [OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/5.x/) వంటి ఇప్పటికే ఉన్న లైబ్రరీలను తిరిగి ఉపయోగించడం. ఈ లైబ్రరీలు డెవలపర్‌లచే విస్తృతంగా ఆడిట్ చేయబడి మరియు పరీక్షించబడినందున, వాటిని ఉపయోగించడం కొత్త కార్యాచరణను మొదటి నుండి వ్రాయడం ద్వారా బగ్‌లను ప్రవేశపెట్టే అవకాశాలను తగ్గిస్తుంది. + +మరొక సాధారణ సలహా ఏమిటంటే, చిన్న ఫంక్షన్‌లను వ్రాయడం మరియు బహుళ కాంట్రాక్ట్‌ల మధ్య వ్యాపార తర్కాన్ని విభజించడం ద్వారా కాంట్రాక్ట్‌లను మాడ్యులర్‌గా ఉంచడం. సరళమైన కోడ్ వ్రాయడం స్మార్ట్ కాంట్రాక్ట్‌లో దాడి ఉపరితలాన్ని తగ్గించడమే కాకుండా, మొత్తం సిస్టమ్ యొక్క ఖచ్చితత్వం గురించి తర్కించడం మరియు సాధ్యమయ్యే డిజైన్ లోపాలను ముందుగానే గుర్తించడం కూడా సులభతరం చేస్తుంది. + +### 9. సాధారణ స్మార్ట్ కాంట్రాక్ట్ బలహీనతలకు వ్యతిరేకంగా రక్షించుకోండి {#mitigate-common-smart-contract-vulnerabilities} + +#### పునఃప్రవేశం {#reentrancy} + +EVM ఏకకాలీనతను అనుమతించదు, అంటే ఒక మెసేజ్ కాల్‌లో పాల్గొన్న రెండు కాంట్రాక్ట్‌లు ఏకకాలంలో అమలు కాలేవు. ఒక బాహ్య కాల్, కాల్ తిరిగి వచ్చే వరకు కాలింగ్ కాంట్రాక్ట్ యొక్క అమలు మరియు మెమరీని పాజ్ చేస్తుంది, ఆ సమయంలో అమలు సాధారణంగా కొనసాగుతుంది. ఈ ప్రక్రియను అధికారికంగా మరొక కాంట్రాక్ట్‌కు [నియంత్రణ ప్రవాహాన్ని](https://www.computerhope.com/jargon/c/contflow.htm) బదిలీ చేయడం అని వర్ణించవచ్చు. + +ఎక్కువగా హానిచేయకపోయినప్పటికీ, విశ్వసనీయత లేని కాంట్రాక్ట్‌లకు నియంత్రణ ప్రవాహాన్ని బదిలీ చేయడం పునఃప్రవేశం వంటి సమస్యలను కలిగిస్తుంది. ఒక హానికరమైన కాంట్రాక్ట్, అసలు ఫంక్షన్ ఆహ్వానం పూర్తికాకముందే ఒక బలహీనమైన కాంట్రాక్ట్‌లోకి తిరిగి పిలిచినప్పుడు పునఃప్రవేశ దాడి జరుగుతుంది. ఈ రకమైన దాడిని ఒక ఉదాహరణతో ఉత్తమంగా వివరించవచ్చు. + +ఎవరైనా ఈథర్‌ను డిపాజిట్ చేయడానికి మరియు ఉపసంహరించుకోవడానికి అనుమతించే ఒక సాధారణ స్మార్ట్ కాంట్రాక్ట్‌ను (‘బాధితుడు’) పరిగణించండి: + +```solidity +// ఈ కాంట్రాక్ట్ బలహీనంగా ఉంది. ఉత్పత్తిలో ఉపయోగించవద్దు + +contract Victim { + mapping (address => uint256) public balances; + + function deposit() external payable { + balances[msg.sender] += msg.value; + } + + function withdraw() external { + uint256 amount = balances[msg.sender]; + (bool success, ) = msg.sender.call.value(amount)(""); + require(success); + balances[msg.sender] = 0; + } +} +``` + +ఈ కాంట్రాక్ట్ వినియోగదారులు కాంట్రాక్ట్‌లో గతంలో డిపాజిట్ చేసిన ETHని ఉపసంహరించుకోవడానికి `withdraw()` ఫంక్షన్‌ను బహిర్గతం చేస్తుంది. ఉపసంహరణను ప్రాసెస్ చేస్తున్నప్పుడు, కాంట్రాక్ట్ కింది కార్యకలాపాలను నిర్వహిస్తుంది: + +1. వినియోగదారుని ETH బ్యాలెన్స్‌ను తనిఖీ చేస్తుంది +2. పిలుస్తున్న చిరునామాకు నిధులను పంపుతుంది +3. వారి బ్యాలెన్స్‌ను 0కి రీసెట్ చేస్తుంది, వినియోగదారు నుండి అదనపు ఉపసంహరణలను నివారిస్తుంది + +`విక్టిమ్` కాంట్రాక్ట్‌లోని `withdraw()` ఫంక్షన్ “చెక్స్-ఇంటరాక్షన్స్-ఎఫెక్ట్స్” ప్యాటర్న్‌ను అనుసరిస్తుంది. ఇది అమలుకు అవసరమైన షరతులు సంతృప్తి చెందాయో లేదో _తనిఖీ చేస్తుంది_ (అంటే, వినియోగదారుకు సానుకూల ETH బ్యాలెన్స్ ఉంది) మరియు లావాదేవీ యొక్క _ప్రభావాలను_ వర్తింపజేయడానికి ముందు (అంటే, వినియోగదారు బ్యాలెన్స్‌ను తగ్గించడం), కాలర్ యొక్క చిరునామాకు ETH పంపడం ద్వారా _సంభాషణను_ నిర్వహిస్తుంది. + +ఒక బాహ్య యాజమాన్య ఖాతా (EOA) నుండి `withdraw()` పిలువబడితే, ఫంక్షన్ ఆశించిన విధంగా అమలు అవుతుంది: `msg.sender.call.value()` కాలర్‌కు ETH పంపుతుంది. అయితే, `msg.sender` ఒక స్మార్ట్ కాంట్రాక్ట్ ఖాతా అయి `withdraw()`ను పిలిస్తే, `msg.sender.call.value()` ఉపయోగించి నిధులు పంపడం ఆ చిరునామాలో నిల్వ చేయబడిన కోడ్‌ను కూడా అమలు చేయడానికి ట్రిగ్గర్ చేస్తుంది. + +కాంట్రాక్ట్ చిరునామాలో అమలు చేయబడిన కోడ్ ఇది అని ఊహించుకోండి: + +```solidity + contract Attacker { + function beginAttack() external payable { + Victim(victim_address).deposit.value(1 ether)(); + Victim(victim_address).withdraw(); + } + + function() external payable { + if (gasleft() > 40000) { + Victim(victim_address).withdraw(); + } + } +} +``` + +ఈ కాంట్రాక్ట్ మూడు పనులు చేయడానికి రూపొందించబడింది: + +1. మరొక ఖాతా నుండి డిపాజిట్ అంగీకరించండి (బహుశా దాడి చేసేవారి EOA) +2. విక్టిమ్ కాంట్రాక్ట్‌లో 1 ETH డిపాజిట్ చేయండి +3. స్మార్ట్ కాంట్రాక్ట్‌లో నిల్వ చేసిన 1 ETHని ఉపసంహరించుకోండి + +`Attacker` లో మరో ఫంక్షన్ ఉంది, అది ఇన్‌కమింగ్ `msg.sender.call.value` నుండి మిగిలి ఉన్న గ్యాస్ 40,000 కంటే ఎక్కువగా ఉంటే, `Victim` లో `withdraw()` ను మళ్ళీ పిలుస్తుంది, ఇది తప్ప ఇక్కడ తప్పు ఏమీ లేదు. `withdraw` యొక్క మొదటి ఆహ్వానం పూర్తికాకముందే `Attacker`కు `Victim`లోకి తిరిగి ప్రవేశించి, మరిన్ని నిధులను ఉపసంహరించుకునే సామర్థ్యాన్ని ఇది ఇస్తుంది. చక్రం ఇలా కనిపిస్తుంది: + +```solidity +- దాడి చేసేవారి EOA 1 ETHతో `Attacker.beginAttack()`ను పిలుస్తుంది +- `Attacker.beginAttack()` `విక్టిమ్`లో 1 ETH డిపాజిట్ చేస్తుంది +- `Attacker` `విక్టిమ్`లో `withdraw() ను పిలుస్తుంది` +- `విక్టిమ్` `Attacker` బ్యాలెన్స్‌ను తనిఖీ చేస్తుంది (1 ETH) +- `విక్టిమ్` 1 ETHని `Attacker`కు పంపుతుంది (ఇది డిఫాల్ట్ ఫంక్షన్‌ను ట్రిగ్గర్ చేస్తుంది) +- `Attacker` మళ్ళీ `Victim.withdraw()`ను పిలుస్తుంది (మొదటి ఉపసంహరణ నుండి `విక్టిమ్` `Attacker` బ్యాలెన్స్‌ను తగ్గించలేదని గమనించండి) +- `విక్టిమ్` `Attacker` బ్యాలెన్స్‌ను తనిఖీ చేస్తుంది (ఇది ఇప్పటికీ 1 ETH ఎందుకంటే ఇది మొదటి కాల్ యొక్క ప్రభావాలను వర్తింపజేయలేదు) +- `విక్టిమ్` 1 ETHని `Attacker`కు పంపుతుంది (ఇది డిఫాల్ట్ ఫంక్షన్‌ను ట్రిగ్గర్ చేస్తుంది మరియు `Attacker`ను `withdraw` ఫంక్షన్‌లోకి తిరిగి ప్రవేశించడానికి అనుమతిస్తుంది) +- `Attacker` గ్యాస్ అయిపోయే వరకు ఈ ప్రక్రియ పునరావృతమవుతుంది, ఆ సమయంలో `msg.sender.call.value` అదనపు ఉపసంహరణలను ట్రిగ్గర్ చేయకుండా తిరిగి వస్తుంది +- `విక్టిమ్` చివరిగా మొదటి లావాదేవీ (మరియు తదుపరివి) ఫలితాలను దాని స్టేట్‌కు వర్తింపజేస్తుంది, కాబట్టి `Attacker` బ్యాలెన్స్ 0కు సెట్ చేయబడుతుంది +``` + +సారాంశం ఏమిటంటే, ఫంక్షన్ అమలు పూర్తయ్యే వరకు కాలర్ బ్యాలెన్స్ 0కి సెట్ చేయబడనందున, తదుపరి ఆహ్వానాలు విజయవంతమవుతాయి మరియు కాలర్ వారి బ్యాలెన్స్‌ను పలుమార్లు ఉపసంహరించుకోవడానికి అనుమతిస్తాయి. ఈ రకమైన దాడి [2016 DAO హ్యాక్](https://www.coindesk.com/learn/understanding-the-dao-attack)లో జరిగినట్లుగా, ఒక స్మార్ట్ కాంట్రాక్ట్ నిధులను ఖాళీ చేయడానికి ఉపయోగించబడుతుంది. [పునఃప్రవేశ దోపిడీల పబ్లిక్ జాబితాలు](https://github.com/pcaversaccio/reentrancy-attacks) చూపిస్తున్నట్లుగా, పునఃప్రవేశ దాడులు నేటికీ స్మార్ట్ కాంట్రాక్ట్‌లకు ఒక క్లిష్టమైన సమస్యగా ఉన్నాయి. + +##### పునఃప్రవేశ దాడులను ఎలా నివారించాలి + +పునఃప్రవేశంతో వ్యవహరించడానికి ఒక విధానం [చెక్స్-ఎఫెక్ట్స్-ఇంటరాక్షన్స్ ప్యాటర్న్](https://docs.soliditylang.org/en/develop/security-considerations.html#use-the-checks-effects-interactions-pattern)ను అనుసరించడం. ఈ ప్యాటర్న్ ఫంక్షన్‌ల అమలును ఒక క్రమంలో పెడుతుంది, దీనిలో అమలుతో ముందుకు సాగే ముందు అవసరమైన తనిఖీలను చేసే కోడ్ మొదట వస్తుంది, దాని తర్వాత కాంట్రాక్ట్ స్టేట్‌ను మార్చే కోడ్, మరియు చివరిగా ఇతర కాంట్రాక్ట్‌లు లేదా EOAలతో సంభాషించే కోడ్ వస్తుంది. + +చెక్స్-ఎఫెక్ట్-ఇంటరాక్షన్ ప్యాటర్న్ కింది చూపబడిన `విక్టిమ్` కాంట్రాక్ట్ యొక్క సవరించిన వెర్షన్‌లో ఉపయోగించబడింది: + +```solidity +contract NoLongerAVictim { + function withdraw() external { + uint256 amount = balances[msg.sender]; + balances[msg.sender] = 0; + (bool success, ) = msg.sender.call.value(amount)(""); + require(success); + } +} +``` + +ఈ కాంట్రాక్ట్ వినియోగదారు బ్యాలెన్స్‌పై ఒక _తనిఖీ_ చేస్తుంది, `withdraw()` ఫంక్షన్ యొక్క _ప్రభావాలను_ వర్తింపజేస్తుంది (వినియోగదారు బ్యాలెన్స్‌ను 0కి రీసెట్ చేయడం ద్వారా), మరియు _సంభాషణను_ చేయడానికి ముందుకు సాగుతుంది (వినియోగదారు చిరునామాకు ETH పంపడం). ఇది బాహ్య కాల్‌కు ముందు కాంట్రాక్ట్ దాని స్టోరేజ్‌ను అప్‌డేట్ చేస్తుందని నిర్ధారిస్తుంది, మొదటి దాడిని ప్రారంభించిన పునఃప్రవేశ పరిస్థితిని తొలగిస్తుంది. `Attacker` కాంట్రాక్ట్ ఇప్పటికీ `NoLongerAVictim`లోకి తిరిగి కాల్ చేయగలదు, కానీ `balances[msg.sender]` 0కి సెట్ చేయబడినందున, అదనపు ఉపసంహరణలు ఒక ఎర్రర్‌ను విసురుతాయి. + +మరొక ఎంపిక మ్యూచువల్ ఎక్స్‌క్లూజన్ లాక్‌ను (సాధారణంగా “మ్యూటెక్స్”గా వర్ణించబడుతుంది) ఉపయోగించడం, ఇది ఒక ఫంక్షన్ ఆహ్వానం పూర్తయ్యే వరకు కాంట్రాక్ట్ యొక్క స్టేట్ యొక్క ఒక భాగాన్ని లాక్ చేస్తుంది. ఇది ఒక బూలియన్ వేరియబుల్‌ను ఉపయోగించి అమలు చేయబడుతుంది, ఇది ఫంక్షన్ అమలు కావడానికి ముందు `true`గా సెట్ చేయబడుతుంది మరియు ఆహ్వానం పూర్తయిన తర్వాత `false`కు తిరిగి వస్తుంది. కింది ఉదాహరణలో చూసినట్లుగా, మ్యూటెక్స్‌ను ఉపయోగించడం అసలు ఆహ్వానం ఇంకా ప్రాసెసింగ్‌లో ఉన్నప్పుడు పునరావృత కాల్స్‌కు వ్యతిరేకంగా ఒక ఫంక్షన్‌ను రక్షిస్తుంది, పునఃప్రవేశాన్ని సమర్థవంతంగా ఆపుతుంది. + +```solidity +pragma solidity ^0.7.0; + +contract MutexPattern { + bool locked = false; + mapping(address => uint256) public balances; + + modifier noReentrancy() { + require(!locked, "పునఃప్రవేశం నుండి బ్లాక్ చేయబడింది."); + locked = true; + _; + locked = false; + } + // ఈ ఫంక్షన్ ఒక మ్యూటెక్స్ ద్వారా రక్షించబడింది, కాబట్టి `msg.sender.call` లోపల నుండి పునఃప్రవేశ కాల్‌లు `withdraw`ను మళ్ళీ పిలవలేవు. + // `return` స్టేట్‌మెంట్ `true`గా మూల్యాంకనం చేస్తుంది కానీ ఇప్పటికీ మాడిఫైయర్‌లోని `locked = false` స్టేట్‌మెంట్‌ను మూల్యాంకనం చేస్తుంది + function withdraw(uint _amount) public payable noReentrancy returns(bool) { + require(balances[msg.sender] >= _amount, "ఉపసంహరించుకోవడానికి బ్యాలెన్స్ లేదు."); + + balances[msg.sender] -= _amount; + (bool success, ) = msg.sender.call{value: _amount}(""); + require(success); + + return true; + } +} +``` + +మీరు ఖాతాలకు నిధులను పంపే “పుష్ పేమెంట్స్” సిస్టమ్‌కు బదులుగా, వినియోగదారులను స్మార్ట్ కాంట్రాక్ట్‌ల నుండి నిధులను ఉపసంహరించుకోవాలని కోరే [పుల్ పేమెంట్స్](https://docs.openzeppelin.com/contracts/5.x/api/security#PullPayment) సిస్టమ్‌ను కూడా ఉపయోగించవచ్చు. ఇది తెలియని చిరునామాలలో అనుకోకుండా కోడ్‌ను ట్రిగ్గర్ చేసే అవకాశాన్ని తొలగిస్తుంది (మరియు కొన్ని డినయల్-ఆఫ్-సర్వీస్ దాడులను కూడా నివారించగలదు). + +#### ఇంటిజర్ అండర్‌ఫ్లోలు మరియు ఓవర్‌ఫ్లోలు {#integer-underflows-and-overflows} + +ఒక అంకగణిత ఆపరేషన్ ఫలితాలు ఆమోదయోగ్యమైన విలువల పరిధికి వెలుపల పడిపోయినప్పుడు ఒక ఇంటిజర్ ఓవర్‌ఫ్లో సంభవిస్తుంది, ఇది దానిని అత్యల్ప ప్రాతినిధ్య విలువకు “తిరిగి వెళ్లడానికి” కారణమవుతుంది. ఉదాహరణకు, ఒక `uint8` 2^8-1=255 వరకు మాత్రమే విలువలను నిల్వ చేయగలదు. `255` కంటే ఎక్కువ విలువలకు దారితీసే అంకగణిత కార్యకలాపాలు పొంగిపొర్లుతాయి మరియు `uint`ని `0`కు రీసెట్ చేస్తాయి, కారులోని ఓడోమీటర్ గరిష్ట మైలేజీకి (999999) చేరుకున్న తర్వాత 0కి రీసెట్ అయినట్లే. + +ఇంటిజర్ అండర్‌ఫ్లోలు ఇలాంటి కారణాల వల్ల జరుగుతాయి: ఒక అంకగణిత ఆపరేషన్ ఫలితాలు ఆమోదయోగ్యమైన పరిధి కంటే తక్కువగా పడిపోతాయి. మీరు ఒక `uint8`లో `0`ని తగ్గించడానికి ప్రయత్నించారని అనుకుందాం, ఫలితం గరిష్ట ప్రాతినిధ్య విలువకు (`255`) తిరిగి వెళ్తుంది. + +ఇంటిజర్ ఓవర్‌ఫ్లోలు మరియు అండర్‌ఫ్లోలు రెండూ ఒక కాంట్రాక్ట్ యొక్క స్టేట్ వేరియబుల్స్‌కు అనూహ్య మార్పులకు దారితీయవచ్చు మరియు ప్రణాళిక లేని అమలుకు దారితీయవచ్చు. ఒక దాడి చేసేవాడు స్మార్ట్ కాంట్రాక్ట్‌లో అంకగణిత ఓవర్‌ఫ్లోను ఉపయోగించుకుని ఒక చెల్లని ఆపరేషన్‌ను ఎలా నిర్వహించవచ్చో చూపే ఒక ఉదాహరణ కింద ఉంది: + +``` +pragma solidity ^0.7.6; + +// ఈ కాంట్రాక్ట్ టైమ్ వాల్ట్‌గా పనిచేయడానికి రూపొందించబడింది. +// వినియోగదారుడు ఈ కాంట్రాక్ట్‌లో డిపాజిట్ చేయవచ్చు కానీ కనీసం ఒక వారం పాటు ఉపసంహరించుకోలేరు. +// వినియోగదారుడు 1 వారం నిరీక్షణ వ్యవధికి మించి నిరీక్షణ సమయాన్ని కూడా పొడిగించవచ్చు. + +/* +1. టైమ్‌లాక్‌ను అమలు చేయండి +2. టైమ్‌లాక్ చిరునామాతో అటాక్‌ను అమలు చేయండి +3. 1 ఈథర్‌ను పంపి, Attack.attackను పిలవండి. మీరు వెంటనే మీ ఈథర్‌ను ఉపసంహరించుకోగలరు. + +ఏమి జరిగింది? +అటాక్ టైమ్‌లాక్.లాక్‌టైమ్ పొంగిపొర్లడానికి కారణమైంది మరియు 1 వారం నిరీక్షణ వ్యవధికి ముందే ఉపసంహరించుకోగలిగింది. +*/ + +contract TimeLock { + mapping(address => uint) public balances; + mapping(address => uint) public lockTime; + + function deposit() external payable { + balances[msg.sender] += msg.value; + lockTime[msg.sender] = block.timestamp + 1 weeks; + } + + function increaseLockTime(uint _secondsToIncrease) public { + lockTime[msg.sender] += _secondsToIncrease; + } + + function withdraw() public { + require(balances[msg.sender] > 0, "నిధులు సరిపోవు"); + require(block.timestamp > lockTime[msg.sender], "లాక్ సమయం గడువు ముగియలేదు"); + + uint amount = balances[msg.sender]; + balances[msg.sender] = 0; + + (bool sent, ) = msg.sender.call{value: amount}(""); + require(sent, "ఈథర్ పంపడంలో విఫలమైంది"); + } +} + +contract Attack { + TimeLock timeLock; + + constructor(TimeLock _timeLock) { + timeLock = TimeLock(_timeLock); + } + + fallback() external payable {} + + function attack() public payable { + timeLock.deposit{value: msg.value}(); + /* + t = ప్రస్తుత లాక్ సమయం అయితే, మనం x ను కనుగొనాలి + x + t = 2**256 = 0 + కాబట్టి x = -t + 2**256 = type(uint).max + 1 + కాబట్టి x = type(uint).max + 1 - t + */ + timeLock.increaseLockTime( + type(uint).max + 1 - timeLock.lockTime(address(this)) + ); + timeLock.withdraw(); + } +} +``` + +##### ఇంటిజర్ అండర్‌ఫ్లోలు మరియు ఓవర్‌ఫ్లోలను ఎలా నివారించాలి + +వెర్షన్ 0.8.0 నుండి, Solidity కంపైలర్ ఇంటిజర్ అండర్‌ఫ్లోలు మరియు ఓవర్‌ఫ్లోలకు దారితీసే కోడ్‌ను తిరస్కరిస్తుంది. అయితే, తక్కువ కంపైలర్ వెర్షన్‌తో కంపైల్ చేయబడిన కాంట్రాక్ట్‌లు అంకగణిత కార్యకలాపాలు ఉన్న ఫంక్షన్‌లపై తనిఖీలను నిర్వహించాలి లేదా అండర్‌ఫ్లో/ఓవర్‌ఫ్లో కోసం తనిఖీ చేసే లైబ్రరీని (ఉదా., [సేఫ్‌మ్యాత్](https://docs.openzeppelin.com/contracts/2.x/api/math)) ఉపయోగించాలి. + +#### ఒరాకిల్ మానిప్యులేషన్ {#oracle-manipulation} + +[ఒరాకిల్స్](/developers/docs/oracles/) ఆఫ్‌చైన్ సమాచారాన్ని సోర్స్ చేసి, దానిని స్మార్ట్ కాంట్రాక్ట్‌లు ఉపయోగించడానికి ఆన్‌చైన్‌కు పంపుతాయి. ఒరాకిల్స్‌తో, మీరు క్యాపిటల్ మార్కెట్‌ల వంటి ఆఫ్‌చైన్ సిస్టమ్‌లతో పరస్పరం పనిచేసే స్మార్ట్ కాంట్రాక్ట్‌లను రూపొందించవచ్చు, వాటి అప్లికేషన్‌ను బాగా విస్తరించవచ్చు. + +కానీ ఒరాకిల్ పాడైపోయి, తప్పు సమాచారాన్ని ఆన్‌చైన్‌కు పంపితే, స్మార్ట్ కాంట్రాక్ట్‌లు తప్పుడు ఇన్‌పుట్‌ల ఆధారంగా అమలు అవుతాయి, ఇది సమస్యలను కలిగిస్తుంది. ఇది “ఒరాకిల్ సమస్య” యొక్క ఆధారం, ఇది ఒక బ్లాక్‌చైన్ ఒరాకిల్ నుండి వచ్చే సమాచారం ఖచ్చితమైనదని, తాజాదని, మరియు సకాలంలో ఉందని నిర్ధారించుకునే పనికి సంబంధించినది. + +ఒక ఆస్తి యొక్క స్పాట్ ధరను పొందడానికి, వికేంద్రీకృత మార్పిడి వంటి ఆన్‌చైన్ ఒరాకిల్‌ను ఉపయోగించడం ఒక సంబంధిత భద్రతా ఆందోళన. [వికేంద్రీకృత ఫైనాన్స్ (DeFi)](/defi/) పరిశ్రమలోని రుణ ప్లాట్‌ఫారమ్‌లు ఒక వినియోగదారు యొక్క కొలేటరల్ విలువను నిర్ణయించడానికి మరియు వారు ఎంత రుణం తీసుకోగలరో నిర్ధారించడానికి తరచుగా దీనిని చేస్తాయి. + +DEX ధరలు తరచుగా ఖచ్చితమైనవి, మార్కెట్లలో సమానత్వాన్ని పునరుద్ధరించే ఆర్బిట్రేజర్‌ల కారణంగా ఇది చాలావరకు జరుగుతుంది. అయితే, అవి మానిప్యులేషన్‌కు తెరిచి ఉన్నాయి, ప్రత్యేకించి ఆన్‌చైన్ ఒరాకిల్ చారిత్రక ట్రేడింగ్ ప్యాటర్న్‌ల ఆధారంగా ఆస్తి ధరలను లెక్కిస్తే (సాధారణంగా జరిగేదే). + +ఉదాహరణకు, ఒక దాడి చేసేవాడు మీ రుణ కాంట్రాక్ట్‌తో సంభాషించడానికి ముందు ఫ్లాష్ లోన్ తీసుకోవడం ద్వారా ఒక ఆస్తి యొక్క స్పాట్ ధరను కృత్రిమంగా పెంచవచ్చు. ఆస్తి ధర కోసం DEXని ప్రశ్నించడం సాధారణం కంటే ఎక్కువ విలువను తిరిగి ఇస్తుంది (దాడి చేసేవారి పెద్ద “కొనుగోలు ఆర్డర్” ఆస్తికి డిమాండ్‌ను వక్రీకరించడం వలన), ఇది వారికి ఉండాల్సిన దానికంటే ఎక్కువ రుణం తీసుకోవడానికి అనుమతిస్తుంది. అటువంటి “ఫ్లాష్ లోన్ దాడులు” DeFi అప్లికేషన్‌లలో ధర ఒరాకిల్స్‌పై ఆధారపడటాన్ని దోపిడీ చేయడానికి ఉపయోగించబడ్డాయి, ప్రోటోకాల్స్‌కు మిలియన్ల కొద్దీ నిధులు నష్టపోయాయి. + +##### ఒరాకిల్ మానిప్యులేషన్‌ను ఎలా నివారించాలి + +[ఒరాకిల్ మానిప్యులేషన్‌ను నివారించడానికి](https://www.cyfrin.io/blog/price-oracle-manipultion-attacks-with-examples) కనీస అవసరం, సింగిల్ పాయింట్స్ ఆఫ్ ఫెయిల్యూర్‌ను నివారించడానికి బహుళ మూలాల నుండి సమాచారాన్ని ప్రశ్నించే వికేంద్రీకృత ఒరాకిల్ నెట్‌వర్క్‌ను ఉపయోగించడం. చాలా సందర్భాలలో, వికేంద్రీకృత ఒరాకిల్స్‌కు ఒరాకిల్ నోడ్స్ సరైన సమాచారాన్ని నివేదించడానికి ప్రోత్సహించడానికి అంతర్నిర్మిత క్రిప్టోఎకనామిక్ ప్రోత్సాహకాలు ఉన్నాయి, ఇది వాటిని కేంద్రీకృత ఒరాకిల్స్ కంటే సురక్షితంగా చేస్తుంది. + +మీరు ఆస్తి ధరల కోసం ఆన్‌చైన్ ఒరాకిల్‌ను ప్రశ్నించాలని ప్లాన్ చేస్తే, టైమ్-వెయిటెడ్ యావరేజ్ ప్రైస్ (TWAP) మెకానిజంను అమలు చేసే దానిని ఉపయోగించడాన్ని పరిగణించండి. ఒక [TWAP ఒరాకిల్](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles) రెండు విభిన్న సమయ బిందువుల వద్ద ఒక ఆస్తి ధరను ప్రశ్నిస్తుంది (దీనిని మీరు సవరించవచ్చు) మరియు పొందిన సగటు ఆధారంగా స్పాట్ ధరను లెక్కిస్తుంది. దీర్ఘకాలిక సమయ వ్యవధులను ఎంచుకోవడం మీ ప్రోటోకాల్‌ను ధరల మానిప్యులేషన్‌కు వ్యతిరేకంగా రక్షిస్తుంది, ఎందుకంటే ఇటీవల అమలు చేయబడిన పెద్ద ఆర్డర్‌లు ఆస్తి ధరలను ప్రభావితం చేయలేవు. + +## డెవలపర్‌ల కోసం స్మార్ట్ కాంట్రాక్ట్ భద్రతా వనరులు {#smart-contract-security-resources-for-developers} + +### స్మార్ట్ కాంట్రాక్ట్‌లను విశ్లేషించడానికి మరియు కోడ్ సరిగ్గా ఉందో లేదో ధృవీకరించడానికి ఉపకరణాలు {#code-analysis-tools} + +- **[పరీక్షా సాధనాలు మరియు లైబ్రరీలు](/developers/docs/smart-contracts/testing/#testing-tools-and-libraries)** - _స్మార్ట్ కాంట్రాక్ట్‌లపై యూనిట్ పరీక్షలు, స్టాటిక్ విశ్లేషణ మరియు డైనమిక్ విశ్లేషణలను నిర్వహించడానికి పరిశ్రమ-ప్రామాణిక సాధనాలు మరియు లైబ్రరీల సేకరణ._ + +- **[ఫార్మల్ వెరిఫికేషన్ సాధనాలు](/developers/docs/smart-contracts/formal-verification/#formal-verification-tools)** - _స్మార్ట్ కాంట్రాక్ట్‌లలో ఫంక్షనల్ ఖచ్చితత్వాన్ని ధృవీకరించడానికి మరియు ఇన్వేరియంట్‌లను తనిఖీ చేయడానికి సాధనాలు._ + +- **[స్మార్ట్ కాంట్రాక్ట్ ఆడిటింగ్ సేవలు](/developers/docs/smart-contracts/testing/#smart-contract-auditing-services)** - _ఇతీరియము అభివృద్ధి ప్రాజెక్ట్‌ల కోసం స్మార్ట్ కాంట్రాక్ట్ ఆడిటింగ్ సేవలను అందించే సంస్థల జాబితా._ + +- **[బగ్ బౌంటీ ప్లాట్‌ఫారమ్‌లు](/developers/docs/smart-contracts/testing/#bug-bounty-platforms)** - _బగ్ బౌంటీలను సమన్వయం చేయడానికి మరియు స్మార్ట్ కాంట్రాక్ట్‌లలో క్లిష్టమైన బలహీనతల యొక్క బాధ్యతాయుతమైన బహిర్గతం కోసం బహుమతి ఇవ్వడానికి ప్లాట్‌ఫారమ్‌లు._ + +- **[ఫోర్క్ చెకర్](https://forkchecker.hashex.org/)** - _ఒక ఫోర్క్డ్ కాంట్రాక్ట్‌కు సంబంధించి అందుబాటులో ఉన్న మొత్తం సమాచారాన్ని తనిఖీ చేయడానికి ఒక ఉచిత ఆన్‌లైన్ సాధనం._ + +- **[ABI ఎన్‌కోడర్](https://abi.hashex.org/)** - _మీ Solidity కాంట్రాక్ట్ ఫంక్షన్‌లు మరియు కన్‌స్ట్రక్టర్ ఆర్గ్యుమెంట్‌లను ఎన్‌కోడ్ చేయడానికి ఒక ఉచిత ఆన్‌లైన్ సేవ._ + +- **[అడెరిన్](https://github.com/Cyfrin/aderyn)** - _Solidity స్టాటిక్ అనలైజర్, అనుమానిత బలహీనతలను గుర్తించడానికి అబ్‌స్ట్రాక్ట్ సింటాక్స్ ట్రీస్ (AST)ను దాటుతుంది మరియు సులభంగా వినియోగించే మార్క్‌డౌన్ ఫార్మాట్‌లో సమస్యలను ప్రింట్ చేస్తుంది._ + +### స్మార్ట్ కాంట్రాక్ట్‌లను పర్యవేక్షించడానికి ఉపకరణాలు {#smart-contract-monitoring-tools} + +- **[టెండర్లీ రియల్-టైమ్ అలర్టింగ్](https://tenderly.co/monitoring)** - _మీ స్మార్ట్ కాంట్రాక్ట్‌లు లేదా వాలెట్‌లలో అసాధారణ లేదా ఊహించని సంఘటనలు జరిగినప్పుడు నిజ-సమయ నోటిఫికేషన్‌లను పొందడానికి ఒక సాధనం._ + +### స్మార్ట్ కాంట్రాక్ట్‌ల సురక్షిత పరిపాలన కోసం సాధనాలు {#smart-contract-administration-tools} + +- **[సేఫ్](https://safe.global/)** - _ఇతీరియములో నడుస్తున్న స్మార్ట్ కాంట్రాక్ట్ వాలెట్, ఇది ఒక లావాదేవీ జరగడానికి ముందు కనీస సంఖ్యలో వ్యక్తులు ఆమోదించాల్సిన అవసరం ఉంది (M-ఆఫ్-N)._ + +- **[OpenZeppelin కాంట్రాక్ట్‌లు](https://docs.openzeppelin.com/contracts/5.x/)** - _కాంట్రాక్ట్ యాజమాన్యం, అప్‌గ్రేడ్‌లు, యాక్సెస్ నియంత్రణలు, పాలన, పాజ్ చేయగల సామర్థ్యం మరియు మరిన్నింటితో సహా పరిపాలనా లక్షణాలను అమలు చేయడానికి కాంట్రాక్ట్ లైబ్రరీలు._ + +### స్మార్ట్ కాంట్రాక్ట్ ఆడిటింగ్ సేవలు {#smart-contract-auditing-services} + +- **[ConsenSys డిలిజెన్స్](https://diligence.consensys.io/)** - _బ్లాక్‌చైన్ పర్యావరణ వ్యవస్థ అంతటా ప్రాజెక్ట్‌లకు సహాయపడే స్మార్ట్ కాంట్రాక్ట్ ఆడిటింగ్ సేవ, వారి ప్రోటోకాల్‌లు ప్రారంభానికి సిద్ధంగా ఉన్నాయని మరియు వినియోగదారులను రక్షించడానికి నిర్మించబడ్డాయని నిర్ధారించడానికి._ + +- **[CertiK](https://www.certik.com/)** - _స్మార్ట్ కాంట్రాక్ట్‌లు మరియు బ్లాక్‌చైన్ నెట్‌వర్క్‌లపై అత్యాధునిక ఫార్మల్ వెరిఫికేషన్ టెక్నాలజీని ఉపయోగించడంలో అగ్రగామిగా ఉన్న బ్లాక్‌చైన్ సెక్యూరిటీ సంస్థ._ + +- **[ట్రెయిల్ ఆఫ్ బిట్స్](https://www.trailofbits.com/)** - _రిస్క్‌ను తగ్గించడానికి మరియు కోడ్‌ను బలోపేతం చేయడానికి దాడి చేసేవారి మనస్తత్వంతో భద్రతా పరిశోధనను కలిపే సైబర్‌ సెక్యూరిటీ కంపెనీ._ + +- **[పెక్ షీల్డ్](https://peckshield.com/)** - _మొత్తం బ్లాక్‌చైన్ పర్యావరణ వ్యవస్థ యొక్క భద్రత, గోప్యత మరియు వినియోగానికి ఉత్పత్తులు మరియు సేవలను అందించే బ్లాక్‌చైన్ సెక్యూరిటీ కంపెనీ._ + +- **[క్వాంట్‌స్టాంప్](https://quantstamp.com/)** - _భద్రత మరియు రిస్క్ అసెస్‌మెంట్ సేవల ద్వారా బ్లాక్‌చైన్ టెక్నాలజీ యొక్క ప్రధాన స్రవంతి స్వీకరణను సులభతరం చేసే ఆడిటింగ్ సేవ._ + +- **[OpenZeppelin](https://www.openzeppelin.com/security-audits)** - _పంపిణీ చేయబడిన సిస్టమ్‌ల కోసం భద్రతా ఆడిట్‌లను అందించే స్మార్ట్ కాంట్రాక్ట్ సెక్యూరిటీ కంపెనీ._ + +- **[రన్‌టైమ్ వెరిఫికేషన్](https://runtimeverification.com/)** - _స్మార్ట్ కాంట్రాక్ట్‌ల యొక్క ఫార్మల్ మోడలింగ్ మరియు వెరిఫికేషన్‌లో ప్రత్యేకత కలిగిన సెక్యూరిటీ కంపెనీ._ + +- **[Hacken](https://hacken.io)** - _బ్లాక్‌చైన్ భద్రతకు 360-డిగ్రీల విధానాన్ని తీసుకువస్తున్న Web3 సైబర్‌ సెక్యూరిటీ ఆడిటర్._ + +- **[Nethermind](https://www.nethermind.io/smart-contract-audits)** - _Solidity మరియు కైరో ఆడిటింగ్ సేవలు, ఇతీరియము మరియు స్టార్క్‌నెట్ అంతటా స్మార్ట్ కాంట్రాక్ట్‌ల సమగ్రతను మరియు వినియోగదారుల భద్రతను నిర్ధారిస్తాయి._ + +- **[HashEx](https://hashex.org/)** - _క్రిప్టోకరెన్సీల భద్రతను నిర్ధారించడానికి హాష్‌ఎక్స్ బ్లాక్‌చైన్ మరియు స్మార్ట్ కాంట్రాక్ట్ ఆడిటింగ్‌పై దృష్టి పెడుతుంది, స్మార్ట్ కాంట్రాక్ట్ డెవలప్‌మెంట్, పెనెట్రేషన్ టెస్టింగ్, బ్లాక్‌చైన్ కన్సల్టింగ్ వంటి సేవలను అందిస్తుంది._ + +- **[Code4rena](https://code4rena.com/)** - _పోటీతత్వ ఆడిట్ ప్లాట్‌ఫారమ్, ఇది స్మార్ట్ కాంట్రాక్ట్ భద్రతా నిపుణులను బలహీనతలను కనుగొనడానికి ప్రోత్సహిస్తుంది మరియు వెబ్3ను మరింత సురక్షితంగా చేయడానికి సహాయపడుతుంది._ + +- **[CodeHawks](https://codehawks.com/)** - _భద్రతా పరిశోధకుల కోసం స్మార్ట్ కాంట్రాక్ట్స్ ఆడిటింగ్ పోటీలను నిర్వహించే పోటీ ఆడిట్స్ ప్లాట్‌ఫారమ్._ + +- **[Cyfrin](https://cyfrin.io)** - _Web3 సెక్యూరిటీ పవర్‌హౌస్, ఉత్పత్తులు మరియు స్మార్ట్ కాంట్రాక్ట్ ఆడిటింగ్ సేవల ద్వారా క్రిప్టో భద్రతను ఇంక్యుబేట్ చేస్తుంది._ + +- **[ImmuneBytes](https://immunebytes.com/smart-contract-audit/)** - _అనుభవజ్ఞులైన ఆడిటర్లు మరియు ఉత్తమ-తరగతి సాధనాల బృందం ద్వారా బ్లాక్‌చైన్ సిస్టమ్‌ల కోసం భద్రతా ఆడిట్‌లను అందించే Web3 సెక్యూరిటీ సంస్థ._ + +- **[Oxorio](https://oxor.io/)** - _EVM, Solidity, ZK, క్రాస్-చైన్ టెక్నాలజీలో నిపుణులైన స్మార్ట్ కాంట్రాక్ట్ ఆడిట్‌లు మరియు బ్లాక్‌చైన్ భద్రతా సేవలు, క్రిప్టో సంస్థలు మరియు DeFi ప్రాజెక్ట్‌ల కోసం._ + +- **[Inference](https://inference.ag/)** - _భద్రతా ఆడిటింగ్ కంపెనీ, EVM-ఆధారిత బ్లాక్‌చైన్‌ల కోసం స్మార్ట్ కాంట్రాక్ట్ ఆడిటింగ్‌లో ప్రత్యేకత కలిగి ఉంది. దాని నిపుణులైన ఆడిటర్లకు ధన్యవాదాలు, వారు సంభావ్య సమస్యలను గుర్తించి, వాటిని అమలు చేయడానికి ముందు పరిష్కరించడానికి కార్యాచరణ పరిష్కారాలను సూచిస్తారు._ + +### బగ్ బౌంటీ ప్లాట్‌ఫారమ్‌లు {#bug-bounty-platforms} + +- **[Immunefi](https://immunefi.com/)** - _స్మార్ట్ కాంట్రాక్ట్‌లు మరియు DeFi ప్రాజెక్ట్‌ల కోసం బగ్ బౌంటీ ప్లాట్‌ఫారమ్, ఇక్కడ భద్రతా పరిశోధకులు కోడ్‌ను సమీక్షించి, బలహీనతలను బహిర్గతం చేసి, డబ్బు సంపాదించి, క్రిప్టోను మరింత సురక్షితంగా చేస్తారు._ + +- **[HackerOne](https://www.hackerone.com/)** - _వ్యాపారాలను పెనెట్రేషన్ టెస్టర్లు మరియు సైబర్‌ సెక్యూరిటీ పరిశోధకులతో కనెక్ట్ చేసే బలహీనత సమన్వయం మరియు బగ్ బౌంటీ ప్లాట్‌ఫారమ్._ + +- **[HackenProof](https://hackenproof.com/)** - _క్రిప్టో ప్రాజెక్ట్‌ల (DeFi, స్మార్ట్ కాంట్రాక్ట్స్, వాలెట్స్, CEX మరియు మరిన్ని) కోసం నిపుణులైన బగ్ బౌంటీ ప్లాట్‌ఫారమ్, ఇక్కడ భద్రతా నిపుణులు ట్రైయేజ్ సేవలను అందిస్తారు మరియు పరిశోధకులు సంబంధిత, ధృవీకరించబడిన బగ్ నివేదికల కోసం చెల్లించబడతారు._ + +- **[Sherlock](https://www.sherlock.xyz/)** - _స్మార్ట్ కాంట్రాక్ట్ భద్రత కోసం వెబ్3లో అండర్‌రైటర్, సంబంధిత బగ్‌లు న్యాయంగా చెల్లించబడతాయని భద్రపరచడానికి స్మార్ట్ కాంట్రాక్ట్‌ల ద్వారా నిర్వహించబడే ఆడిటర్ల కోసం చెల్లింపులతో._ + +- **[CodeHawks](https://www.codehawks.com/)** - _పోటీతత్వ బగ్ బౌంటీ ప్లాట్‌ఫారమ్, ఇక్కడ ఆడిటర్లు భద్రతా పోటీలు మరియు సవాళ్లలో పాల్గొంటారు మరియు (త్వరలో) వారి స్వంత ప్రైవేట్ ఆడిట్‌లలో పాల్గొంటారు._ + +### తెలిసిన స్మార్ట్ కాంట్రాక్ట్ బలహీనతలు మరియు దోపిడీల ప్రచురణలు {#common-smart-contract-vulnerabilities-and-exploits} + +- **[ConsenSys: స్మార్ట్ కాంట్రాక్ట్ తెలిసిన దాడులు](https://consensysdiligence.github.io/smart-contract-best-practices/attacks/)** - _చాలా సందర్భాలలో నమూనా కోడ్‌తో, అత్యంత ముఖ్యమైన కాంట్రాక్ట్ బలహీనతల యొక్క ప్రారంభ-స్నేహపూర్వక వివరణ._ + +- **[SWC రిజిస్ట్రీ](https://swcregistry.io/)** - _ఇతీరియము స్మార్ట్ కాంట్రాక్ట్‌లకు వర్తించే కామన్ వీక్‌నెస్ ఎన్యూమరేషన్ (CWE) ఐటమ్‌ల క్యూరేటెడ్ జాబితా._ + +- **[Rekt](https://rekt.news/)** - _వివరణాత్మక పోస్ట్-మార్టం నివేదికలతో పాటు, ఉన్నత-స్థాయి క్రిప్టో హ్యాక్‌లు మరియు దోపిడీల యొక్క క్రమం తప్పకుండా నవీకరించబడిన ప్రచురణ._ + +### స్మార్ట్ కాంట్రాక్ట్ భద్రతను నేర్చుకోవడానికి సవాళ్లు {#challenges-for-learning-smart-contract-security} + +- **[అద్భుతమైన బ్లాక్‌సెక్ CTF](https://github.com/blockthreat/blocksec-ctfs)** - _బ్లాక్‌చైన్ భద్రతా యుద్ధ క్రీడలు, సవాళ్లు, మరియు [క్యాప్చర్ ది ఫ్లాగ్](https://www.webopedia.com/definitions/ctf-event/amp/) పోటీలు మరియు పరిష్కారాల రైటప్‌ల క్యూరేటెడ్ జాబితా._ + +- **[డామ్న్ వల్నరబుల్ DeFi](https://www.damnvulnerabledefi.xyz/)** - _DeFi స్మార్ట్ కాంట్రాక్ట్‌ల ఆఫెన్సివ్ సెక్యూరిటీని నేర్చుకోవడానికి మరియు బగ్-హంటింగ్ మరియు సెక్యూరిటీ ఆడిటింగ్‌లో నైపుణ్యాలను పెంపొందించుకోవడానికి వార్‌గేమ్._ + +- **[Ethernaut](https://ethernaut.openzeppelin.com/)** - _Web3/Solidity-ఆధారిత వార్‌గేమ్, ఇక్కడ ప్రతి స్థాయి ఒక స్మార్ట్ కాంట్రాక్ట్, దానిని 'హ్యాక్' చేయాలి._ + +- **[HackenProof x HackTheBox](https://app.hackthebox.com/tracks/HackenProof-Track)** - _ఒక ఫాంటసీ అడ్వెంచర్‌లో సెట్ చేయబడిన స్మార్ట్ కాంట్రాక్ట్ హ్యాకింగ్ ఛాలెంజ్. ఛాలెంజ్‌ను విజయవంతంగా పూర్తి చేయడం ప్రైవేట్ బగ్ బౌంటీ ప్రోగ్రామ్‌కు యాక్సెస్‌ను కూడా ఇస్తుంది._ + +### స్మార్ట్ కాంట్రాక్ట్‌లను సురక్షితంగా ఉంచడానికి ఉత్తమ పద్ధతులు {#smart-contract-security-best-practices} + +- **[ConsenSys: ఇతీరియము స్మార్ట్ కాంట్రాక్ట్ భద్రత ఉత్తమ పద్ధతులు](https://consensys.github.io/smart-contract-best-practices/)** - _ఇతీరియము స్మార్ట్ కాంట్రాక్ట్‌లను సురక్షితంగా ఉంచడానికి మార్గదర్శకాల యొక్క సమగ్ర జాబితా._ + +- **[నాసెంట్: సింపుల్ సెక్యూరిటీ టూల్‌కిట్](https://github.com/nascentxyz/simple-security-toolkit)** - _స్మార్ట్ కాంట్రాక్ట్ అభివృద్ధి కోసం ఆచరణాత్మక భద్రత-కేంద్రీకృత గైడ్‌లు మరియు చెక్‌లిస్ట్‌ల సేకరణ._ + +- **[Solidity ప్యాటర్న్‌లు](https://fravoll.github.io/solidity-patterns/)** - _స్మార్ట్ కాంట్రాక్ట్ ప్రోగ్రామింగ్ భాష Solidity కోసం సురక్షితమైన ప్యాటర్న్‌లు మరియు ఉత్తమ పద్ధతుల యొక్క ఉపయోగకరమైన సంకలనం._ + +- **[Solidity డాక్స్: భద్రతా పరిగణనలు](https://docs.soliditylang.org/en/v0.8.16/security-considerations.html)** - _Solidity తో సురక్షితమైన స్మార్ట్ కాంట్రాక్ట్‌లను వ్రాయడానికి మార్గదర్శకాలు._ + +- **[స్మార్ట్ కాంట్రాక్ట్ సెక్యూరిటీ వెరిఫికేషన్ స్టాండర్డ్](https://github.com/securing/SCSVS)** - _డెవలపర్లు, ఆర్కిటెక్ట్‌లు, భద్రతా సమీక్షకులు మరియు విక్రేతల కోసం స్మార్ట్ కాంట్రాక్ట్‌ల భద్రతను ప్రామాణీకరించడానికి సృష్టించబడిన పద్నాలుగు-భాగాల చెక్‌లిస్ట్._ + +- **[స్మార్ట్ కాంట్రాక్ట్ సెక్యూరిటీ మరియు ఆడిటింగ్‌ను నేర్చుకోండి](https://updraft.cyfrin.io/courses/security)** - _అల్టిమేట్ స్మార్ట్ కాంట్రాక్ట్ సెక్యూరిటీ మరియు ఆడిటింగ్ కోర్సు, వారి భద్రతా ఉత్తమ పద్ధతులను మెరుగుపరచడానికి మరియు భద్రతా పరిశోధకులుగా మారడానికి చూస్తున్న స్మార్ట్ కాంట్రాక్ట్ డెవలపర్‌ల కోసం సృష్టించబడింది._ + +### స్మార్ట్ కాంట్రాక్ట్ భద్రతపై ట్యుటోరియల్స్ {#tutorials-on-smart-contract-security} + +- [సురక్షిత స్మార్ట్ కాంట్రాక్ట్‌లను ఎలా వ్రాయాలి](/developers/tutorials/secure-development-workflow/) + +- [స్మార్ట్ కాంట్రాక్ట్ బగ్‌లను కనుగొనడానికి స్లిథర్‌ను ఎలా ఉపయోగించాలి](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/) + +- [స్మార్ట్ కాంట్రాక్ట్ బగ్‌లను కనుగొనడానికి మాంటికోర్‌ను ఎలా ఉపయోగించాలి](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/) + +- [స్మార్ట్ కాంట్రాక్ట్ భద్రతా మార్గదర్శకాలు](/developers/tutorials/smart-contract-security-guidelines/) + +- [మీ టోకెన్ కాంట్రాక్ట్‌ను ఏకపక్ష టోకెన్‌లతో సురక్షితంగా ఎలా ఏకీకృతం చేయాలి](/developers/tutorials/token-integration-checklist/) + +- [సైఫ్రిన్ అప్‌డ్రాఫ్ట్ - స్మార్ట్ కాంట్రాక్ట్స్ సెక్యూరిటీ మరియు ఆడిటింగ్ పూర్తి కోర్సు](https://updraft.cyfrin.io/courses/security) diff --git a/public/content/translations/te/developers/docs/smart-contracts/testing/index.md b/public/content/translations/te/developers/docs/smart-contracts/testing/index.md new file mode 100644 index 00000000000..35a6fd18bd4 --- /dev/null +++ b/public/content/translations/te/developers/docs/smart-contracts/testing/index.md @@ -0,0 +1,310 @@ +--- +title: "స్మార్ట్ కాంట్రాక్టులను పరీక్షించడం" +description: "ఇతీరియము స్మార్ట్ కాంట్రాక్టులను పరీక్షించడానికి సాంకేతికతలు మరియు పరిగణనల యొక్క అవలోకనం." +lang: te +--- + +ఇతీరియము వంటి పబ్లిక్ బ్లాక్‌చెయిన్‌లు మార్పులేనివి, దీనివల్ల అమలు చేసిన తర్వాత స్మార్ట్ కాంట్రాక్టుల కోడ్‌ను మార్చడం కష్టం. "వర్చువల్ అప్‌గ్రేడ్‌లను" నిర్వహించడానికి [కాంట్రాక్ట్ అప్‌గ్రేడ్ నమూనాలు](/developers/docs/smart-contracts/upgrading/) ఉన్నాయి, కానీ వీటిని అమలు చేయడం కష్టం మరియు సామాజిక ఏకాభిప్రాయం అవసరం. అంతేకాకుండా, ఒక అప్‌గ్రేడ్ ఒక లోపాన్ని కనుగొన్న _తర్వాత_ మాత్రమే సరిచేయగలదు—ఒకవేళ దాడి చేసేవాడు మొదట దుర్బలత్వాన్ని కనుగొంటే, మీ స్మార్ట్ కాంట్రాక్ట్ దోపిడీకి గురయ్యే ప్రమాదం ఉంది. + +ఈ కారణాల వల్ల, మెయిన్‌నెట్‌కు [అమలు చేసే](/developers/docs/smart-contracts/deploying/) ముందు స్మార్ట్ కాంట్రాక్టులను పరీక్షించడం [భద్రత](/developers/docs/smart-contracts/security/)కు కనీస అవసరం. కాంట్రాక్టులను పరీక్షించడానికి మరియు కోడ్ సరిగ్గా ఉందో లేదో అంచనా వేయడానికి చాలా పద్ధతులు ఉన్నాయి; మీరు ఎంచుకునేది మీ అవసరాలపై ఆధారపడి ఉంటుంది. అయినప్పటికీ, కాంట్రాక్ట్ కోడ్‌లోని చిన్న మరియు పెద్ద భద్రతా లోపాలను పట్టుకోవడానికి వివిధ ఉపకరణాలు మరియు విధానాలతో కూడిన టెస్ట్ సూట్ ఆదర్శంగా ఉంటుంది. + +## అవసరాలు {#prerequisites} + +ఈ పేజీ ఇతీరియము నెట్‌వర్క్‌లో అమలు చేయడానికి ముందు స్మార్ట్ కాంట్రాక్టులను ఎలా పరీక్షించాలో వివరిస్తుంది. మీకు [స్మార్ట్ కాంట్రాక్టుల](/developers/docs/smart-contracts/) గురించి తెలిసి ఉంటుందని ఇది భావిస్తుంది. + +## స్మార్ట్ కాంట్రాక్ట్ టెస్టింగ్ అంటే ఏమిటి? {#what-is-smart-contract-testing} + +స్మార్ట్ కాంట్రాక్ట్ టెస్టింగ్ అనేది ఒక స్మార్ట్ కాంట్రాక్ట్ కోడ్ ఆశించిన విధంగా పనిచేస్తుందని ధృవీకరించే ప్రక్రియ. ఒక నిర్దిష్ట స్మార్ట్ కాంట్రాక్ట్ విశ్వసనీయత, వినియోగం మరియు భద్రత కోసం అవసరాలను తీరుస్తుందో లేదో తనిఖీ చేయడానికి టెస్టింగ్ ఉపయోగపడుతుంది. + +విధానాలు విభిన్నంగా ఉన్నప్పటికీ, చాలా టెస్టింగ్ పద్ధతులకు స్మార్ట్ కాంట్రాక్ట్‌ను అది నిర్వహించాల్సిన డేటా యొక్క చిన్న నమూనాతో అమలు చేయడం అవసరం. కాంట్రాక్ట్ నమూనా డేటా కోసం సరైన ఫలితాలను ఉత్పత్తి చేస్తే, అది సరిగ్గా పనిచేస్తున్నట్లు భావించబడుతుంది. చాలా టెస్టింగ్ ఉపకరణాలు కాంట్రాక్టుల అమలు ఆశించిన ఫలితాలతో సరిపోలుతుందో లేదో తనిఖీ చేయడానికి [టెస్ట్ కేసులను](https://en.m.wikipedia.org/wiki/Test_case) వ్రాయడానికి మరియు అమలు చేయడానికి వనరులను అందిస్తాయి. + +### స్మార్ట్ కాంట్రాక్టులను పరీక్షించడం ఎందుకు ముఖ్యం? {#importance-of-testing-smart-contracts} + +స్మార్ట్ కాంట్రాక్టులు తరచుగా అధిక-విలువ గల ఆర్థిక ఆస్తులను నిర్వహిస్తాయి కాబట్టి, చిన్న ప్రోగ్రామింగ్ లోపాలు [వినియోగదారులకు భారీ నష్టాలకు](https://rekt.news/leaderboard/) దారితీయవచ్చు మరియు తరచుగా దారితీస్తాయి. అయితే, కఠినమైన టెస్టింగ్ ఒక స్మార్ట్ కాంట్రాక్ట్ కోడ్‌లోని లోపాలు మరియు సమస్యలను ముందుగానే కనుగొని, వాటిని మెయిన్‌నెట్‌లో ప్రారంభించడానికి ముందు సరిచేయడానికి మీకు సహాయపడుతుంది. + +ఒక బగ్ కనుగొనబడితే కాంట్రాక్టును అప్‌గ్రేడ్ చేయడం సాధ్యమే అయినప్పటికీ, అప్‌గ్రేడ్‌లు సంక్లిష్టంగా ఉంటాయి మరియు సరిగ్గా నిర్వహించకపోతే [లోపాలకు దారితీయవచ్చు](https://blog.trailofbits.com/2018/09/05/contract-upgrade-anti-patterns/). ఒక కాంట్రాక్టును అప్‌గ్రేడ్ చేయడం మార్పులేని సూత్రాన్ని మరింతగా నిరాకరిస్తుంది మరియు వినియోగదారులపై అదనపు విశ్వాస అంచనాలతో భారం మోపుతుంది. దీనికి విరుద్ధంగా, మీ కాంట్రాక్టును పరీక్షించడానికి ఒక సమగ్ర ప్రణాళిక స్మార్ట్ కాంట్రాక్ట్ భద్రతా ప్రమాదాలను తగ్గిస్తుంది మరియు అమలు చేసిన తర్వాత సంక్లిష్ట లాజిక్ అప్‌గ్రేడ్‌లను నిర్వహించాల్సిన అవసరాన్ని తగ్గిస్తుంది. + +## స్మార్ట్ కాంట్రాక్టులను పరీక్షించడానికి పద్ధతులు {#methods-for-testing-smart-contracts} + +ఇతీరియము స్మార్ట్ కాంట్రాక్టులను పరీక్షించడానికి పద్ధతులు రెండు విస్తృత వర్గాల క్రిందకు వస్తాయి: **ఆటోమేటెడ్ టెస్టింగ్** మరియు **మాన్యువల్ టెస్టింగ్**. ఆటోమేటెడ్ టెస్టింగ్ మరియు మాన్యువల్ టెస్టింగ్ ప్రత్యేకమైన ప్రయోజనాలు మరియు ప్రతికూలతలను అందిస్తాయి, కానీ మీరు మీ కాంట్రాక్టులను విశ్లేషించడానికి ఒక బలమైన ప్రణాళికను రూపొందించడానికి రెండింటినీ కలపవచ్చు. + +### ఆటోమేటెడ్ టెస్టింగ్ {#automated-testing} + +ఆటోమేటెడ్ టెస్టింగ్ అమలులో లోపాల కోసం స్మార్ట్ కాంట్రాక్టుల కోడ్‌ను స్వయంచాలకంగా తనిఖీ చేసే ఉపకరణాలను ఉపయోగిస్తుంది. కాంట్రాక్ట్ కార్యాచరణల మూల్యాంకనాన్ని మార్గనిర్దేశం చేయడానికి [స్క్రిప్ట్‌లను](https://www.techtarget.com/whatis/definition/script?amp=1) ఉపయోగించడం ద్వారా ఆటోమేటెడ్ టెస్టింగ్ యొక్క ప్రయోజనం వస్తుంది. స్క్రిప్టెడ్ టెస్ట్‌లను తక్కువ మానవ ప్రమేయంతో పదేపదే అమలు చేయడానికి షెడ్యూల్ చేయవచ్చు, ఇది మాన్యువల్ టెస్టింగ్ విధానాల కంటే ఆటోమేటెడ్ టెస్టింగ్‌ను మరింత సమర్థవంతంగా చేస్తుంది. + +టెస్టులు పునరావృతమయ్యేవి మరియు సమయం తీసుకునేవి అయినప్పుడు; మాన్యువల్‌గా నిర్వహించడం కష్టమైనప్పుడు; మానవ తప్పిదాలకు గురయ్యే అవకాశం ఉన్నప్పుడు; లేదా కీలకమైన కాంట్రాక్ట్ ఫంక్షన్‌లను మూల్యాంకనం చేయడంలో ప్రమేయం ఉన్నప్పుడు ఆటోమేటెడ్ టెస్టింగ్ ప్రత్యేకంగా ఉపయోగపడుతుంది. కానీ ఆటోమేటెడ్ టెస్టింగ్ ఉపకరణాలకు లోపాలు ఉండవచ్చు—అవి కొన్ని బగ్‌లను తప్పిపోవచ్చు మరియు చాలా [తప్పుడు పాజిటివ్‌లను](https://www.contrastsecurity.com/glossary/false-positive) ఉత్పత్తి చేయవచ్చు. అందువల్ల, స్మార్ట్ కాంట్రాక్టుల కోసం ఆటోమేటెడ్ టెస్టింగ్‌ను మాన్యువల్ టెస్టింగ్‌తో జత చేయడం ఆదర్శం. + +### మాన్యువల్ టెస్టింగ్ {#manual-testing} + +మాన్యువల్ టెస్టింగ్ మానవ సహాయంతో జరుగుతుంది మరియు ఒక స్మార్ట్ కాంట్రాక్ట్ సరిగ్గా ఉందో లేదో విశ్లేషించేటప్పుడు మీ టెస్ట్ సూట్‌లోని ప్రతి టెస్ట్ కేసును ఒకదాని తర్వాత ఒకటి అమలు చేయడాన్ని కలిగి ఉంటుంది. ఇది ఆటోమేటెడ్ టెస్టింగ్ లాంటిది కాదు, ఇక్కడ మీరు ఒకేసారి ఒక కాంట్రాక్ట్‌పై బహుళ వివిక్త టెస్ట్‌లను అమలు చేయవచ్చు మరియు విఫలమైన మరియు ఉత్తీర్ణులైన అన్ని టెస్ట్‌లను చూపే నివేదికను పొందవచ్చు. + +వివిధ టెస్ట్ దృశ్యాలను కవర్ చేసే వ్రాసిన టెస్ట్ ప్లాన్‌ను అనుసరించి ఒకే వ్యక్తి ద్వారా మాన్యువల్ టెస్టింగ్ నిర్వహించబడుతుంది. మాన్యువల్ టెస్టింగ్‌లో భాగంగా మీరు ఒక నిర్దిష్ట వ్యవధిలో బహుళ వ్యక్తులు లేదా సమూహాలు స్మార్ట్ కాంట్రాక్ట్‌తో సంప్రదించేలా కూడా చేయవచ్చు. పరీక్షకులు కాంట్రాక్ట్ యొక్క వాస్తవ ప్రవర్తనను ఆశించిన ప్రవర్తనతో పోలుస్తారు, ఏదైనా వ్యత్యాసాన్ని బగ్‌గా ఫ్లాగ్ చేస్తారు. + +ప్రభావవంతమైన మాన్యువల్ టెస్టింగ్‌కు గణనీయమైన వనరులు (నైపుణ్యం, సమయం, డబ్బు మరియు కృషి) అవసరం, మరియు మానవ తప్పిదం కారణంగా—టెస్ట్‌లను అమలు చేస్తున్నప్పుడు కొన్ని లోపాలను తప్పిపోవడం సాధ్యమే. కానీ మాన్యువల్ టెస్టింగ్ కూడా ప్రయోజనకరంగా ఉంటుంది—ఉదాహరణకు, ఒక మానవ పరీక్షకుడు (ఉదా., ఒక ఆడిటర్) ఒక ఆటోమేటెడ్ టెస్టింగ్ ఉపకరణం తప్పిపోయే ఎడ్జ్ కేసులను గుర్తించడానికి అంతర్ దృష్టిని ఉపయోగించవచ్చు. + +## స్మార్ట్ కాంట్రాక్టుల కోసం ఆటోమేటెడ్ టెస్టింగ్ {#automated-testing-for-smart-contracts} + +### యూనిట్ టెస్టింగ్ {#unit-testing-for-smart-contracts} + +యూనిట్ టెస్టింగ్ కాంట్రాక్ట్ ఫంక్షన్‌లను విడిగా మూల్యాంకనం చేస్తుంది మరియు ప్రతి భాగం సరిగ్గా పనిచేస్తుందో లేదో తనిఖీ చేస్తుంది. మంచి యూనిట్ టెస్టులు సరళంగా, త్వరగా అమలు అయ్యేలా ఉండాలి మరియు టెస్టులు విఫలమైతే ఏమి తప్పు జరిగిందో స్పష్టమైన ఆలోచనను అందించాలి. + +ఫంక్షన్‌లు ఆశించిన విలువలను తిరిగి ఇస్తాయో లేదో మరియు ఫంక్షన్ అమలు తర్వాత కాంట్రాక్ట్ నిల్వ సరిగ్గా అప్‌డేట్ చేయబడిందో లేదో తనిఖీ చేయడానికి యూనిట్ టెస్టులు ఉపయోగపడతాయి. అంతేకాకుండా, ఒక కాంట్రాక్ట్ కోడ్‌బేస్‌కు మార్పులు చేసిన తర్వాత యూనిట్ టెస్ట్‌లను అమలు చేయడం కొత్త లాజిక్‌ను జోడించడం లోపాలను ప్రవేశపెట్టదని నిర్ధారిస్తుంది. ప్రభావవంతమైన యూనిట్ టెస్ట్‌లను అమలు చేయడానికి కొన్ని మార్గదర్శకాలు క్రింద ఉన్నాయి: + +#### స్మార్ట్ కాంట్రాక్టుల యూనిట్ టెస్టింగ్ కోసం మార్గదర్శకాలు {#unit-testing-guidelines} + +##### 1. మీ కాంట్రాక్టుల వ్యాపార లాజిక్ మరియు వర్క్‌ఫ్లోను అర్థం చేసుకోండి + +యూనిట్ టెస్టులు వ్రాసే ముందు, ఒక స్మార్ట్ కాంట్రాక్ట్ ఏ కార్యాచరణలను అందిస్తుందో మరియు వినియోగదారులు ఆ ఫంక్షన్‌లను ఎలా యాక్సెస్ చేస్తారు మరియు ఉపయోగిస్తారో తెలుసుకోవడం సహాయపడుతుంది. చెల్లుబాటు అయ్యే వినియోగదారు ఇన్‌పుట్‌ల కోసం ఒక కాంట్రాక్ట్‌లోని ఫంక్షన్‌లు సరైన అవుట్‌పుట్‌ను తిరిగి ఇస్తాయో లేదో నిర్ధారించే [హ్యాపీ పాత్ టెస్టులను](https://en.m.wikipedia.org/wiki/Happy_path) అమలు చేయడానికి ఇది ప్రత్యేకంగా ఉపయోగపడుతుంది. మేము ఈ భావనను [ఒక వేలం కాంట్రాక్ట్](https://docs.soliditylang.org/en/v0.8.17/solidity-by-example.html?highlight=Auction%20contract#simple-open-auction) యొక్క ఈ (సంక్షిప్త) ఉదాహరణను ఉపయోగించి వివరిస్తాము + +```solidity +constructor( + uint biddingTime, + address payable beneficiaryAddress + ) { + beneficiary = beneficiaryAddress; + auctionEndTime = block.timestamp + biddingTime; + } + +function bid() external payable { + + if (block.timestamp > auctionEndTime) + revert AuctionAlreadyEnded(); + + if (msg.value <= highestBid) + revert BidNotHighEnough(highestBid); + + if (highestBid != 0) { + pendingReturns[highestBidder] += highestBid; + } + highestBidder = msg.sender; + highestBid = msg.value; + emit HighestBidIncreased(msg.sender, msg.value); + } + + function withdraw() external returns (bool) { + uint amount = pendingReturns[msg.sender]; + if (amount > 0) { + pendingReturns[msg.sender] = 0; + + if (!payable(msg.sender).send(amount)) { + pendingReturns[msg.sender] = amount; + return false; + } + } + return true; + } + +function auctionEnd() external { + if (block.timestamp < auctionEndTime) + revert AuctionNotYetEnded(); + if (ended) + revert AuctionEndAlreadyCalled(); + + ended = true; + emit AuctionEnded(highestBidder, highestBid); + + beneficiary.transfer(highestBid); + } +} +``` + +ఇది బిడ్డింగ్ వ్యవధిలో బిడ్‌లను స్వీకరించడానికి రూపొందించబడిన ఒక సాధారణ వేలం కాంట్రాక్ట్. `highestBid` పెరిగితే, మునుపటి అత్యధిక బిడ్డర్ వారి డబ్బును అందుకుంటారు; బిడ్డింగ్ వ్యవధి ముగిసిన తర్వాత, `beneficiary` వారి డబ్బును పొందడానికి కాంట్రాక్టును కాల్ చేస్తారు. + +ఇలాంటి కాంట్రాక్ట్ కోసం యూనిట్ టెస్టులు కాంట్రాక్ట్‌తో సంప్రదించేటప్పుడు ఒక వినియోగదారు కాల్ చేయగల వివిధ ఫంక్షన్‌లను కవర్ చేస్తాయి. ఒక ఉదాహరణ, వేలం జరుగుతున్నప్పుడు ఒక వినియోగదారు బిడ్ వేయగలరో లేదో తనిఖీ చేసే యూనిట్ టెస్ట్ (అంటే, `bid()` కు కాల్స్ విజయవంతమవుతాయి) లేదా ప్రస్తుత `highestBid` కంటే ఎక్కువ బిడ్ వేయగలరో లేదో తనిఖీ చేసేది. + +ఒక కాంట్రాక్ట్ యొక్క కార్యాచరణ వర్క్‌ఫ్లోను అర్థం చేసుకోవడం అమలు అవసరాలను తీరుస్తుందో లేదో తనిఖీ చేసే యూనిట్ టెస్టులను వ్రాయడంలో కూడా సహాయపడుతుంది. ఉదాహరణకు, వేలం ముగిసినప్పుడు వినియోగదారులు బిడ్లు వేయలేరని వేలం కాంట్రాక్ట్ నిర్దేశిస్తుంది (అంటే, `auctionEndTime` `block.timestamp` కంటే తక్కువగా ఉన్నప్పుడు). అందువల్ల, ఒక అభివృద్ధి చేసేవాడు వేలం ముగిసినప్పుడు `bid()` ఫంక్షన్‌కు కాల్‌లు విజయవంతమవుతాయో లేదా విఫలమవుతాయో తనిఖీ చేసే యూనిట్ టెస్ట్‌ను అమలు చేయవచ్చు (అంటే, `auctionEndTime` > `block.timestamp` అయినప్పుడు). + +##### 2. కాంట్రాక్ట్ అమలుకు సంబంధించిన అన్ని అంచనాలను మూల్యాంకనం చేయండి + +ఒక కాంట్రాక్ట్ అమలు గురించి ఏవైనా అంచనాలను డాక్యుమెంట్ చేయడం మరియు ఆ అంచనాల యొక్క చెల్లుబాటును ధృవీకరించడానికి యూనిట్ టెస్టులను వ్రాయడం ముఖ్యం. ఊహించని అమలు నుండి రక్షణను అందించడమే కాకుండా, టెస్టింగ్ అస్సర్షన్స్ ఒక స్మార్ట్ కాంట్రాక్ట్ భద్రతా నమూనాను విచ్ఛిన్నం చేయగల కార్యకలాపాల గురించి ఆలోచించేలా మిమ్మల్ని బలవంతం చేస్తాయి. ఒక ఉపయోగకరమైన చిట్కా ఏమిటంటే, "హ్యాపీ యూజర్ టెస్టుల"కు మించి వెళ్లి తప్పుడు ఇన్‌పుట్‌ల కోసం ఒక ఫంక్షన్ విఫలమవుతుందో లేదో తనిఖీ చేసే నెగటివ్ టెస్టులను వ్రాయడం. + +చాలా యూనిట్ టెస్టింగ్ ఫ్రేమ్‌వర్క్‌లు మీకు అస్సర్షన్స్‌ను సృష్టించడానికి అనుమతిస్తాయి—ఒక కాంట్రాక్ట్ ఏమి చేయగలదు మరియు ఏమి చేయలేదో తెలిపే సాధారణ వాక్యాలు—మరియు అమలులో ఆ అస్సర్షన్స్ నిలుస్తాయో లేదో చూడటానికి టెస్టులను అమలు చేస్తాయి. ముందు వివరించిన వేలం కాంట్రాక్ట్‌పై పనిచేస్తున్న ఒక అభివృద్ధి చేసేవాడు నెగటివ్ టెస్టులను అమలు చేయడానికి ముందు దాని ప్రవర్తన గురించి క్రింది అస్సర్షన్స్‌ను చేయవచ్చు: + +- వేలం ముగిసినప్పుడు లేదా ప్రారంభం కానప్పుడు వినియోగదారులు బిడ్లు వేయలేరు. + +- ఒక బిడ్ ఆమోదయోగ్యమైన పరిమితి కంటే తక్కువగా ఉంటే వేలం కాంట్రాక్ట్ రివర్ట్ అవుతుంది. + +- బిడ్‌ను గెలవడంలో విఫలమైన వినియోగదారులకు వారి నిధులు జమ చేయబడతాయి + +**గమనిక**: అంచనాలను పరీక్షించడానికి మరొక మార్గం ఒక కాంట్రాక్ట్‌లోని [ఫంక్షన్ మాడిఫైయర్‌లను](https://docs.soliditylang.org/en/v0.8.16/contracts.html#function-modifiers) ట్రిగ్గర్ చేసే టెస్టులను వ్రాయడం, ముఖ్యంగా `require`, `assert`, మరియు `if…else` స్టేట్‌మెంట్‌లు. + +##### 3. కోడ్ కవరేజీని కొలవండి + +[కోడ్ కవరేజ్](https://en.m.wikipedia.org/wiki/Code_coverage) అనేది టెస్టుల సమయంలో మీ కోడ్‌లో అమలు చేయబడిన బ్రాంచ్‌లు, లైన్‌లు మరియు స్టేట్‌మెంట్‌ల సంఖ్యను ట్రాక్ చేసే టెస్టింగ్ మెట్రిక్. పరీక్షించని దుర్బలత్వాల ప్రమాదాన్ని తగ్గించడానికి టెస్టులకు మంచి కోడ్ కవరేజ్ ఉండాలి. తగినంత కవరేజ్ లేకుండా, అన్ని టెస్టులు పాస్ అయినందున మీ కాంట్రాక్ట్ సురక్షితమని మీరు తప్పుగా భావించవచ్చు, అయితే పరీక్షించని కోడ్ మార్గాలలో దుర్బలత్వాలు ఇంకా ఉన్నాయి. అయితే, అధిక కోడ్ కవరేజీని రికార్డ్ చేయడం, ఒక స్మార్ట్ కాంట్రాక్ట్‌లోని అన్ని స్టేట్‌మెంట్లు/ఫంక్షన్‌లు సరిగ్గా ఉన్నాయో లేదో తగినంతగా పరీక్షించబడ్డాయని భరోసా ఇస్తుంది. + +##### 4. బాగా అభివృద్ధి చెందిన టెస్టింగ్ ఫ్రేమ్‌వర్క్‌లను ఉపయోగించండి + +మీ స్మార్ట్ కాంట్రాక్టుల కోసం యూనిట్ టెస్టులను అమలు చేయడంలో ఉపయోగించే ఉపకరణాల నాణ్యత చాలా ముఖ్యం. ఒక ఆదర్శ టెస్టింగ్ ఫ్రేమ్‌వర్క్ అనేది క్రమం తప్పకుండా నిర్వహించబడేది; ఉపయోగకరమైన లక్షణాలను (ఉదా., లాగింగ్ మరియు రిపోర్టింగ్ సామర్థ్యాలు) అందిస్తుంది; మరియు ఇతర అభివృద్ధి చేసేవాళ్ల ద్వారా విస్తృతంగా ఉపయోగించబడి మరియు పరిశీలించబడి ఉండాలి. + +Solidity స్మార్ట్ కాంట్రాక్టుల కోసం యూనిట్ టెస్టింగ్ ఫ్రేమ్‌వర్క్‌లు వివిధ భాషలలో (ఎక్కువగా జావాస్క్రిప్ట్, పైథాన్, మరియు రస్ట్) వస్తాయి. వివిధ టెస్టింగ్ ఫ్రేమ్‌వర్క్‌లతో యూనిట్ టెస్టులను అమలు చేయడం ఎలా ప్రారంభించాలో సమాచారం కోసం క్రింద ఉన్న కొన్ని గైడ్‌లను చూడండి: + +- **[బ్రౌనీతో యూనిట్ టెస్టులను అమలు చేయడం](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)** +- **[ఫౌండ్రీతో యూనిట్ టెస్టులను అమలు చేయడం](https://book.getfoundry.sh/forge/writing-tests)** +- **[వాఫిల్‌తో యూనిట్ టెస్టులను అమలు చేయడం](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests)** +- **[రీమిక్స్‌తో యూనిట్ టెస్టులను అమలు చేయడం](https://remix-ide.readthedocs.io/en/latest/unittesting.html#write-tests)** +- **[ఏప్‌తో యూనిట్ టెస్టులను అమలు చేయడం](https://docs.apeworx.io/ape/stable/userguides/testing.html)** +- **[హార్డ్‌హ్యాట్‌తో యూనిట్ టెస్టులను అమలు చేయడం](https://hardhat.org/hardhat-runner/docs/guides/test-contracts)** +- **[వేక్‌తో యూనిట్ టెస్టులను అమలు చేయడం](https://ackeeblockchain.com/wake/docs/latest/testing-framework/overview/)** + +### ఇంటిగ్రేషన్ టెస్టింగ్ {#integration-testing-for-smart-contracts} + +యూనిట్ టెస్టింగ్ కాంట్రాక్ట్ ఫంక్షన్‌లను విడిగా డీబగ్ చేస్తుండగా, ఇంటిగ్రేషన్ టెస్టులు ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క భాగాలను మొత్తంగా మూల్యాంకనం చేస్తాయి. ఇంటిగ్రేషన్ టెస్టింగ్ క్రాస్-కాంట్రాక్ట్ కాల్స్ లేదా అదే స్మార్ట్ కాంట్రాక్ట్‌లోని వివిధ ఫంక్షన్‌ల మధ్య పరస్పర చర్యల నుండి ఉత్పన్నమయ్యే సమస్యలను గుర్తించగలదు. ఉదాహరణకు, [వారసత్వం](https://docs.soliditylang.org/en/v0.8.12/contracts.html#inheritance) మరియు డిపెండెన్సీ ఇంజెక్షన్ వంటివి సరిగ్గా పనిచేస్తున్నాయో లేదో తనిఖీ చేయడానికి ఇంటిగ్రేషన్ టెస్టులు సహాయపడతాయి. + +మీ కాంట్రాక్ట్ ఒక మాడ్యులర్ నిర్మాణాన్ని అవలంబించినా లేదా అమలు సమయంలో ఇతర ఆన్‌చైన్ కాంట్రాక్టులతో ఇంటర్‌ఫేస్ చేసినా ఇంటిగ్రేషన్ టెస్టింగ్ ఉపయోగపడుతుంది. ఇంటిగ్రేషన్ టెస్టులను అమలు చేయడానికి ఒక మార్గం, ఒక నిర్దిష్ట ఎత్తులో [బ్లాక్‌చెయిన్‌ను ఫోర్క్](/glossary/#fork) చేయడం ([ఫోర్జ్](https://book.getfoundry.sh/forge/fork-testing) లేదా [హార్డ్‌హ్యాట్](https://hardhat.org/hardhat-network/docs/guides/forking-other-networks) వంటి ఉపకరణాన్ని ఉపయోగించి) మరియు మీ కాంట్రాక్ట్ మరియు అమలు చేయబడిన కాంట్రాక్టుల మధ్య పరస్పర చర్యలను అనుకరించడం. + +ఫోర్క్ చేయబడిన బ్లాక్‌చెయిన్ మెయిన్‌నెట్ మాదిరిగానే ప్రవర్తిస్తుంది మరియు అనుబంధిత స్థితులు మరియు బ్యాలెన్స్‌లతో ఖాతాలను కలిగి ఉంటుంది. కానీ ఇది కేవలం ఒక శాండ్‌బాక్స్డ్ స్థానిక అభివృద్ధి వాతావరణంగా పనిచేస్తుంది, అంటే మీకు లావాదేవీల కోసం నిజమైన ETH అవసరం లేదు, ఉదాహరణకు, లేదా మీ మార్పులు నిజమైన ఇతీరియము ప్రోటోకాల్‌ను ప్రభావితం చేయవు. + +### ప్రాపర్టీ-ఆధారిత టెస్టింగ్ {#property-based-testing-for-smart-contracts} + +ప్రాపర్టీ-ఆధారిత టెస్టింగ్ అనేది ఒక స్మార్ట్ కాంట్రాక్ట్ కొన్ని నిర్వచించిన ప్రాపర్టీని సంతృప్తిపరుస్తుందో లేదో తనిఖీ చేసే ప్రక్రియ. ప్రాపర్టీలు ఒక కాంట్రాక్ట్ ప్రవర్తన గురించి వాస్తవాలను నొక్కి చెబుతాయి, ఇవి వివిధ దృశ్యాలలో నిజంగా ఉంటాయని ఆశించబడతాయి—ఒక స్మార్ట్ కాంట్రాక్ట్ ప్రాపర్టీకి ఉదాహరణగా "కాంట్రాక్ట్‌లోని అంకగణిత కార్యకలాపాలు ఎప్పుడూ ఓవర్‌ఫ్లో లేదా అండర్‌ఫ్లో కావు" అని ఉండవచ్చు. + +**స్టాటిక్ విశ్లేషణ** మరియు **డైనమిక్ విశ్లేషణ** ప్రాపర్టీ-ఆధారిత టెస్టింగ్‌ను అమలు చేయడానికి రెండు సాధారణ పద్ధతులు, మరియు రెండూ ఒక ప్రోగ్రామ్ (ఈ సందర్భంలో ఒక స్మార్ట్ కాంట్రాక్ట్) యొక్క కోడ్ కొన్ని ముందే నిర్వచించిన ప్రాపర్టీని సంతృప్తిపరుస్తుందని ధృవీకరించగలవు. కొన్ని ప్రాపర్టీ-ఆధారిత టెస్టింగ్ ఉపకరణాలు ఆశించిన కాంట్రాక్ట్ ప్రాపర్టీల గురించి ముందే నిర్వచించిన నియమాలతో వస్తాయి మరియు ఆ నియమాలకు వ్యతిరేకంగా కోడ్‌ను తనిఖీ చేస్తాయి, అయితే ఇతరులు స్మార్ట్ కాంట్రాక్ట్ కోసం అనుకూల ప్రాపర్టీలను సృష్టించడానికి మిమ్మల్ని అనుమతిస్తాయి. + +#### స్టాటిక్ విశ్లేషణ {#static-analysis} + +ఒక స్టాటిక్ ఎనలైజర్ ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క సోర్స్ కోడ్‌ను ఇన్‌పుట్‌గా తీసుకుంటుంది మరియు ఒక కాంట్రాక్ట్ ఒక ప్రాపర్టీని సంతృప్తిపరుస్తుందో లేదో ప్రకటించే ఫలితాలను అవుట్‌పుట్ చేస్తుంది. డైనమిక్ విశ్లేషణలా కాకుండా, స్టాటిక్ విశ్లేషణ సరిగ్గా ఉందో లేదో విశ్లేషించడానికి ఒక కాంట్రాక్టును అమలు చేయడాన్ని కలిగి ఉండదు. స్టాటిక్ విశ్లేషణ బదులుగా ఒక స్మార్ట్ కాంట్రాక్ట్ అమలు సమయంలో తీసుకోగల అన్ని సాధ్యమైన మార్గాల గురించి వాదిస్తుంది (అంటే, సోర్స్ కోడ్ యొక్క నిర్మాణాన్ని పరిశీలించడం ద్వారా రన్‌టైమ్‌లో కాంట్రాక్టుల ఆపరేషన్ కోసం దాని అర్థం ఏమిటో నిర్ణయించడానికి). + +[లింటింగ్](https://www.perforce.com/blog/qac/what-is-linting) మరియు [స్టాటిక్ టెస్టింగ్](https://www.techtarget.com/whatis/definition/static-analysis-static-code-analysis) కాంట్రాక్టులపై స్టాటిక్ విశ్లేషణను అమలు చేయడానికి సాధారణ పద్ధతులు. రెండూ కంపైలర్ ద్వారా అవుట్‌పుట్ చేయబడిన [అబ్స్ట్రాక్ట్ సింటాక్స్ ట్రీలు](https://en.m.wikipedia.org/wiki/Abstract_syntax_tree) మరియు [కంట్రోల్ ఫ్లో గ్రాఫ్‌లు](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/amp/) వంటి కాంట్రాక్టుల అమలు యొక్క తక్కువ-స్థాయి ప్రాతినిధ్యాలను విశ్లేషించడం అవసరం. + +చాలా సందర్భాలలో, కాంట్రాక్టుల కోడ్‌లో అసురక్షిత నిర్మాణాల ఉపయోగం, సింటాక్స్ లోపాలు, లేదా కోడింగ్ ప్రమాణాల ఉల్లంఘనల వంటి భద్రతా సమస్యలను గుర్తించడానికి స్టాటిక్ విశ్లేషణ ఉపయోగపడుతుంది. అయితే, స్టాటిక్ ఎనలైజర్లు లోతైన దుర్బలత్వాలను గుర్తించడంలో సాధారణంగా అసమర్థంగా ఉంటాయని మరియు అధిక తప్పుడు పాజిటివ్‌లను ఉత్పత్తి చేయవచ్చని అంటారు. + +#### డైనమిక్ విశ్లేషణ {#dynamic-analysis} + +డైనమిక్ విశ్లేషణ ఒక స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌లకు సింబాలిక్ ఇన్‌పుట్‌లను (ఉదా., [సింబాలిక్ ఎగ్జిక్యూషన్‌లో](https://en.m.wikipedia.org/wiki/Symbolic_execution)) లేదా కాంక్రీట్ ఇన్‌పుట్‌లను (ఉదా., [ఫజింగ్‌లో](https://owasp.org/www-community/Fuzzing)) ఉత్పత్తి చేస్తుంది, ఏదైనా ఎగ్జిక్యూషన్ ట్రేస్(లు) నిర్దిష్ట ప్రాపర్టీలను ఉల్లంఘిస్తుందో లేదో చూడటానికి. ఈ రకమైన ప్రాపర్టీ-ఆధారిత టెస్టింగ్ యూనిట్ టెస్టుల నుండి భిన్నంగా ఉంటుంది, ఎందుకంటే టెస్ట్ కేసులు బహుళ దృశ్యాలను కవర్ చేస్తాయి మరియు ఒక ప్రోగ్రామ్ టెస్ట్ కేసుల ఉత్పత్తిని నిర్వహిస్తుంది. + +[ఫజింగ్](https://www.halborn.com/blog/post/what-is-fuzz-testing-fuzzing) అనేది స్మార్ట్ కాంట్రాక్టులలో ఏకపక్ష ప్రాపర్టీలను ధృవీకరించడానికి డైనమిక్ విశ్లేషణ పద్ధతికి ఒక ఉదాహరణ. ఒక ఫజర్ ఒక లక్ష్య కాంట్రాక్ట్‌లోని ఫంక్షన్‌లను ఒక నిర్వచించిన ఇన్‌పుట్ విలువ యొక్క యాదృచ్ఛిక లేదా తప్పుగా ఏర్పడిన వైవిధ్యాలతో ప్రారంభం చేస్తుంది. ఒకవేళ స్మార్ట్ కాంట్రాక్ట్ ఒక లోప స్థితిలోకి ప్రవేశిస్తే (ఉదా., ఒక అస్సర్షన్ విఫలమైన చోట), సమస్య ఫ్లాగ్ చేయబడుతుంది మరియు దుర్బల మార్గం వైపు అమలును నడిపించే ఇన్‌పుట్‌లు ఒక నివేదికలో ఉత్పత్తి చేయబడతాయి. + +ఊహించని ఇన్‌పుట్‌లను సరిగ్గా నిర్వహించకపోవడం అనుకోని అమలుకు దారితీయవచ్చు మరియు ప్రమాదకరమైన ప్రభావాలను ఉత్పత్తి చేయవచ్చు కాబట్టి, ఒక స్మార్ట్ కాంట్రాక్ట్ ఇన్‌పుట్ ధృవీకరణ యంత్రాంగాన్ని మూల్యాంకనం చేయడానికి ఫజింగ్ ఉపయోగపడుతుంది. ఈ రకమైన ప్రాపర్టీ-ఆధారిత టెస్టింగ్ చాలా కారణాల వల్ల ఆదర్శంగా ఉంటుంది: + +1. **చాలా దృశ్యాలను కవర్ చేయడానికి టెస్ట్ కేసులను వ్రాయడం కష్టం.** ఒక ప్రాపర్టీ టెస్ట్‌కు మీరు ప్రవర్తనను పరీక్షించడానికి ఒక ప్రవర్తన మరియు డేటా పరిధిని నిర్వచించడం మాత్రమే అవసరం—ప్రోగ్రామ్ నిర్వచించిన ప్రాపర్టీ ఆధారంగా స్వయంచాలకంగా టెస్ట్ కేసులను ఉత్పత్తి చేస్తుంది. + +2. **మీ టెస్ట్ సూట్ ప్రోగ్రామ్‌లోని అన్ని సాధ్యమైన మార్గాలను తగినంతగా కవర్ చేయకపోవచ్చు.** 100% కవరేజ్‌తో కూడా, ఎడ్జ్ కేసులను తప్పిపోవడం సాధ్యమే. + +3. **యూనిట్ టెస్టులు ఒక కాంట్రాక్ట్ నమూనా డేటా కోసం సరిగ్గా అమలు అవుతుందని రుజువు చేస్తాయి, కానీ నమూనా వెలుపల ఇన్‌పుట్‌ల కోసం కాంట్రాక్ట్ సరిగ్గా అమలు అవుతుందో లేదో తెలియదు.** ప్రాపర్టీ టెస్టులు అస్సర్షన్ వైఫల్యాలకు కారణమయ్యే అమలు ట్రేస్‌లను కనుగొనడానికి ఒక ఇచ్చిన ఇన్‌పుట్ విలువ యొక్క బహుళ వైవిధ్యాలతో లక్ష్య కాంట్రాక్టును అమలు చేస్తాయి. అందువల్ల, ఒక ప్రాపర్టీ టెస్ట్ ఒక విస్తృత తరగతి ఇన్‌పుట్ డేటా కోసం ఒక కాంట్రాక్ట్ సరిగ్గా అమలు అవుతుందని మరిన్ని హామీలను అందిస్తుంది. + +### స్మార్ట్ కాంట్రాక్టుల కోసం ప్రాపర్టీ-ఆధారిత టెస్టింగ్‌ను అమలు చేయడానికి మార్గదర్శకాలు {#running-property-based-tests} + +ప్రాపర్టీ-ఆధారిత టెస్టింగ్‌ను అమలు చేయడం సాధారణంగా ఒక స్మార్ట్ కాంట్రాక్ట్‌లో మీరు ధృవీకరించాలనుకుంటున్న ఒక ప్రాపర్టీని (ఉదా., [ఇంటిజర్ ఓవర్‌ఫ్లోల](https://github.com/ConsenSys/mythril/wiki/Integer-Overflow) లేకపోవడం) లేదా ప్రాపర్టీల సేకరణను నిర్వచించడంతో ప్రారంభమవుతుంది. ప్రాపర్టీ టెస్టులు వ్రాస్తున్నప్పుడు లావాదేవీ ఇన్‌పుట్‌ల కోసం ప్రోగ్రామ్ డేటాను ఉత్పత్తి చేయగల విలువల పరిధిని కూడా మీరు నిర్వచించాల్సి రావచ్చు. + +సరిగ్గా కాన్ఫిగర్ చేసిన తర్వాత, ప్రాపర్టీ టెస్టింగ్ ఉపకరణం మీ స్మార్ట్ కాంట్రాక్టుల ఫంక్షన్‌లను యాదృచ్ఛికంగా ఉత్పత్తి చేయబడిన ఇన్‌పుట్‌లతో అమలు చేస్తుంది. ఏవైనా అస్సర్షన్ ఉల్లంఘనలు ఉంటే, మూల్యాంకనం కింద ఉన్న ప్రాపర్టీని ఉల్లంఘించే కాంక్రీట్ ఇన్‌పుట్ డేటాతో మీకు ఒక నివేదిక రావాలి. వివిధ ఉపకరణాలతో ప్రాపర్టీ-ఆధారిత టెస్టింగ్‌ను అమలు చేయడం ప్రారంభించడానికి క్రింద ఉన్న కొన్ని గైడ్‌లను చూడండి: + +- **[స్లిథర్‌తో స్మార్ట్ కాంట్రాక్టుల స్టాటిక్ విశ్లేషణ](https://github.com/crytic/slither)** +- **[వేక్‌తో స్మార్ట్ కాంట్రాక్టుల స్టాటిక్ విశ్లేషణ](https://ackeeblockchain.com/wake/docs/latest/static-analysis/using-detectors/)** +- **[బ్రౌనీతో ప్రాపర్టీ-ఆధారిత టెస్టింగ్](https://eth-brownie.readthedocs.io/en/stable/tests-hypothesis-property.html)** +- **[ఫౌండ్రీతో కాంట్రాక్టులను ఫజింగ్ చేయడం](https://book.getfoundry.sh/forge/fuzz-testing)** +- **[ఎకిడ్నాతో కాంట్రాక్టులను ఫజింగ్ చేయడం](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/echidna#echidna-tutorial)** +- **[వేక్‌తో కాంట్రాక్టులను ఫజింగ్ చేయడం](https://ackeeblockchain.com/wake/docs/latest/testing-framework/fuzzing/)** +- **[మాంటికోర్‌తో స్మార్ట్ కాంట్రాక్టుల సింబాలిక్ ఎగ్జిక్యూషన్](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore#manticore-tutorial)** +- **[మిథ్రిల్‌తో స్మార్ట్ కాంట్రాక్టుల సింబాలిక్ ఎగ్జిక్యూషన్](https://mythril-classic.readthedocs.io/en/master/tutorial.html)** + +## స్మార్ట్ కాంట్రాక్టుల కోసం మాన్యువల్ టెస్టింగ్ {#manual-testing-for-smart-contracts} + +స్మార్ట్ కాంట్రాక్టుల మాన్యువల్ టెస్టింగ్ తరచుగా ఆటోమేటెడ్ టెస్ట్‌లను అమలు చేసిన తర్వాత అభివృద్ధి చక్రంలో తర్వాత వస్తుంది. ఈ రకమైన టెస్టింగ్ స్మార్ట్ కాంట్రాక్ట్‌ను పూర్తిగా ఇంటిగ్రేటెడ్ ఉత్పత్తిగా మూల్యాంకనం చేస్తుంది, ఇది సాంకేతిక అవసరాలలో పేర్కొన్న విధంగా పనిచేస్తుందో లేదో చూడటానికి. + +### స్థానిక బ్లాక్‌చెయిన్‌పై కాంట్రాక్టులను పరీక్షించడం {#testing-on-local-blockchain} + +స్థానిక అభివృద్ధి వాతావరణంలో నిర్వహించే ఆటోమేటెడ్ టెస్టింగ్ ఉపయోగకరమైన డీబగ్గింగ్ సమాచారాన్ని అందించగలదు, అయితే మీ స్మార్ట్ కాంట్రాక్ట్ ఒక ఉత్పత్తి వాతావరణంలో ఎలా ప్రవర్తిస్తుందో మీరు తెలుసుకోవాలనుకుంటారు. అయితే, ప్రధాన ఇతీరియము చైన్‌కు అమలు చేయడం గ్యాస్ ఫీజులను భరించాల్సి వస్తుంది—మీ స్మార్ట్ కాంట్రాక్ట్‌లో ఇంకా బగ్‌లు ఉంటే మీరు లేదా మీ వినియోగదారులు నిజమైన డబ్బును కోల్పోవచ్చనే విషయం చెప్పనవసరం లేదు. + +మీ కాంట్రాక్టును స్థానిక బ్లాక్‌చెయిన్‌లో (దీనిని [డెవలప్‌మెంట్ నెట్‌వర్క్](/developers/docs/development-networks/) అని కూడా అంటారు) పరీక్షించడం మెయిన్‌నెట్‌లో పరీక్షించడానికి సిఫార్సు చేయబడిన ప్రత్యామ్నాయం. ఒక స్థానిక బ్లాక్‌చెయిన్ అనేది మీ కంప్యూటర్‌లో స్థానికంగా నడుస్తున్న ఇతీరియము బ్లాక్‌చెయిన్ యొక్క కాపీ, ఇది ఇతీరియము యొక్క ఎగ్జిక్యూషన్ లేయర్ ప్రవర్తనను అనుకరిస్తుంది. అందువల్ల, మీరు గణనీయమైన ఓవర్‌హెడ్‌ను భరించకుండా కాంట్రాక్ట్‌తో పరస్పర చర్య చేయడానికి లావాదేవీలను ప్రోగ్రామ్ చేయవచ్చు. + +స్థానిక బ్లాక్‌చెయిన్‌లో కాంట్రాక్టులను అమలు చేయడం మాన్యువల్ ఇంటిగ్రేషన్ టెస్టింగ్ రూపంలో ఉపయోగపడుతుంది. [స్మార్ట్ కాంట్రాక్టులు అత్యంత కంపోజబుల్](/developers/docs/smart-contracts/composability/), ఇది ఇప్పటికే ఉన్న ప్రోటోకాల్స్‌తో ఇంటిగ్రేట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది—కానీ మీరు ఇప్పటికీ అలాంటి సంక్లిష్ట ఆన్‌చైన్ పరస్పర చర్యలు సరైన ఫలితాలను ఉత్పత్తి చేస్తాయని నిర్ధారించుకోవాలి. + +[అభివృద్ధి నెట్వర్క్‌ల గురించి మరింత తెలుసుకోండి.](/developers/docs/development-networks/) + +### టెస్టునెట్‌లలో కాంట్రాక్టులను పరీక్షించడం {#testing-contracts-on-testnets} + +ఒక టెస్ట్ నెట్‌వర్క్ లేదా టెస్టునెట్ ఇతీరియము మెయిన్‌నెట్ మాదిరిగానే పనిచేస్తుంది, ఇది నిజమైన-ప్రపంచ విలువ లేని ఈథర్ (ETH)ను ఉపయోగిస్తుంది తప్ప. మీ కాంట్రాక్టును [టెస్టునెట్‌లో](/developers/docs/networks/#ethereum-testnets) అమలు చేయడం అంటే ఎవరైనా దానితో (ఉదా., డాప్ యొక్క ఫ్రంటెండ్ ద్వారా) నిధులను ప్రమాదంలో పెట్టకుండా పరస్పర చర్య చేయవచ్చు. + +ఈ రకమైన మాన్యువల్ టెస్టింగ్ ఒక వినియోగదారు దృష్టికోణం నుండి మీ అప్లికేషన్ యొక్క ఎండ్-టు-ఎండ్ ఫ్లోను మూల్యాంకనం చేయడానికి ఉపయోగపడుతుంది. ఇక్కడ, బీటా టెస్టర్లు కూడా ట్రయల్ రన్‌లను నిర్వహించవచ్చు మరియు కాంట్రాక్ట్ యొక్క వ్యాపార లాజిక్ మరియు మొత్తం కార్యాచరణతో ఏవైనా సమస్యలను నివేదించవచ్చు. + +స్థానిక బ్లాక్‌చెయిన్‌పై పరీక్షించిన తర్వాత టెస్టునెట్‌లో అమలు చేయడం ఆదర్శం, ఎందుకంటే రెండోది ఎథేరియం వర్చువల్ మషీన్ ప్రవర్తనకు దగ్గరగా ఉంటుంది. అందువల్ల, అనేక ఇతీరియము-స్థానిక ప్రాజెక్టులు వాస్తవ-ప్రపంచ పరిస్థితులలో స్మార్ట్ కాంట్రాక్ట్ ఆపరేషన్‌ను మూల్యాంకనం చేయడానికి టెస్టునెట్‌లలో డాప్స్‌ను అమలు చేయడం సాధారణం. + +[ఇతీరియము టెస్టునెట్‌ల గురించి మరింతగా.](/developers/docs/development-networks/#public-beacon-testchains) + +## టెస్టింగ్ వర్సెస్ ఫార్మల్ వెరిఫికేషన్ {#testing-vs-formal-verification} + +పరీక్షలు కొన్ని డేటా ఇన్‌పుట్‌ల కోసం కాంట్రాక్ట్ ఆశించిన ఫలితాలను తిరిగి ఇస్తుందని నిర్ధారించడానికి సహాయపడతాయి, అయితే పరీక్షల సమయంలో ఉపయోగించని ఇన్‌పుట్‌ల కోసం అదే విషయాన్ని నిశ్చయంగా రుజువు చేయలేవు. అందువల్ల, ఒక స్మార్ట్ కాంట్రాక్టును పరీక్షించడం "ఫంక్షనల్ కరెక్ట్‌నెస్"కు హామీ ఇవ్వదు (అంటే, ఇది ప్రోగ్రామ్ _అన్ని_ ఇన్‌పుట్ విలువల సెట్‌లకు అవసరమైన విధంగా ప్రవర్తిస్తుందని చూపించదు). + +ఫార్మల్ వెరిఫికేషన్ అనేది ప్రోగ్రామ్ యొక్క ఫార్మల్ మోడల్ ఫార్మల్ స్పెసిఫికేషన్‌తో సరిపోలుతుందో లేదో తనిఖీ చేయడం ద్వారా సాఫ్ట్‌వేర్ యొక్క సరిగ్గా ఉందో లేదో అంచనా వేయడానికి ఒక విధానం. ఒక ఫార్మల్ మోడల్ అనేది ఒక ప్రోగ్రామ్ యొక్క అబ్స్ట్రాక్ట్ గణిత ప్రాతినిధ్యం, అయితే ఒక ఫార్మల్ స్పెసిఫికేషన్ ప్రోగ్రామ్ యొక్క ప్రాపర్టీలను నిర్వచిస్తుంది (అంటే, ప్రోగ్రామ్ యొక్క అమలు గురించి తార్కిక అస్సర్షన్స్). + +ప్రాపర్టీలు గణిత పరంగా వ్రాయబడినందున, సిస్టమ్ యొక్క ఫార్మల్ (గణిత) మోడల్ తార్కిక అనుమితి నియమాలను ఉపయోగించి ఒక స్పెసిఫికేషన్‌ను సంతృప్తిపరుస్తుందని ధృవీకరించడం సాధ్యమవుతుంది. అందువల్ల, ఫార్మల్ వెరిఫికేషన్ ఉపకరణాలు ఒక సిస్టమ్ యొక్క సరిగ్గా ఉన్నదానికి ‘గణిత రుజువు’ను ఉత్పత్తి చేస్తాయని అంటారు. + +పరీక్షలా కాకుండా, ఫార్మల్ వెరిఫికేషన్ ఒక స్మార్ట్ కాంట్రాక్ట్ అమలు _అన్ని_ అమలుల కోసం ఫార్మల్ స్పెసిఫికేషన్‌ను సంతృప్తిపరుస్తుందని (అంటే, దానికి బగ్‌లు లేవని) ధృవీకరించడానికి ఉపయోగించబడుతుంది, నమూనా డేటాతో అమలు చేయాల్సిన అవసరం లేకుండా. ఇది డజన్ల కొద్దీ యూనిట్ టెస్టులను అమలు చేయడానికి గడిపిన సమయాన్ని తగ్గించడమే కాకుండా, దాగి ఉన్న దుర్బలత్వాలను పట్టుకోవడంలో కూడా మరింత ప్రభావవంతంగా ఉంటుంది. అయితే, ఫార్మల్ వెరిఫికేషన్ పద్ధతులు వాటి అమలు కష్టాన్ని మరియు ఉపయోగం ఆధారంగా ఒక స్పెక్ట్రమ్‌పై ఉంటాయి. + +[స్మార్ట్ కాంట్రాక్టుల కోసం ఫార్మల్ వెరిఫికేషన్ గురించి మరింతగా.](/developers/docs/smart-contracts/formal-verification) + +## టెస్టింగ్ వర్సెస్ ఆడిట్‌లు మరియు బగ్ బౌంటీలు {#testing-vs-audits-bug-bounties} + +పేర్కొన్నట్లుగా, కఠినమైన టెస్టింగ్ ఒక కాంట్రాక్ట్‌లో బగ్‌లు లేవని చాలా అరుదుగా హామీ ఇస్తుంది; ఫార్మల్ వెరిఫికేషన్ విధానాలు సరిగ్గా ఉన్నాయని బలమైన హామీలను అందించగలవు కానీ ప్రస్తుతం ఉపయోగించడం కష్టం మరియు గణనీయమైన ఖర్చులను కలిగి ఉంటాయి. + +అయినప్పటికీ, మీరు ఒక స్వతంత్ర కోడ్ సమీక్షను పొందడం ద్వారా కాంట్రాక్ట్ దుర్బలత్వాలను పట్టుకునే అవకాశాన్ని మరింత పెంచుకోవచ్చు. [స్మార్ట్ కాంట్రాక్ట్ ఆడిట్‌లు](https://www.immunebytes.com/blog/what-is-a-smart-contract-audit/) మరియు [బగ్ బౌంటీలు](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7) మీ కాంట్రాక్టులను విశ్లేషించడానికి ఇతరులను పొందడానికి రెండు మార్గాలు. + +స్మార్ట్ కాంట్రాక్టులలో భద్రతా లోపాలు మరియు పేలవమైన అభివృద్ధి పద్ధతుల కేసులను కనుగొనడంలో అనుభవం ఉన్న ఆడిటర్ల ద్వారా ఆడిట్‌లు నిర్వహించబడతాయి. ఒక ఆడిట్ సాధారణంగా టెస్టింగ్ (మరియు బహుశా ఫార్మల్ వెరిఫికేషన్) అలాగే మొత్తం కోడ్‌బేస్ యొక్క మాన్యువల్ సమీక్షను కలిగి ఉంటుంది. + +దీనికి విరుద్ధంగా, ఒక బగ్ బౌంటీ ప్రోగ్రామ్ సాధారణంగా ఒక స్మార్ట్ కాంట్రాక్ట్‌లో ఒక దుర్బలత్వాన్ని కనుగొని దానిని అభివృద్ధి చేసేవాళ్లకు వెల్లడించే ఒక వ్యక్తికి (సాధారణంగా [వైట్‌హ్యాట్ హ్యాకర్లుగా](https://en.wikipedia.org/wiki/White_hat_\(computer_security\)) వర్ణించబడుతుంది) ఆర్థిక బహుమతిని అందించడాన్ని కలిగి ఉంటుంది. బగ్ బౌంటీలు ఆడిట్‌ల మాదిరిగానే ఉంటాయి, ఎందుకంటే ఇది స్మార్ట్ కాంట్రాక్టులలో లోపాలను కనుగొనడంలో ఇతరుల సహాయం కోరడాన్ని కలిగి ఉంటుంది. + +ప్రధాన వ్యత్యాసం ఏమిటంటే, బగ్ బౌంటీ ప్రోగ్రామ్‌లు విస్తృత అభివృద్ధి చేసే/హ్యాకర్ కమ్యూనిటీకి తెరిచి ఉంటాయి మరియు ప్రత్యేక నైపుణ్యాలు మరియు అనుభవం ఉన్న నైతిక హ్యాకర్లు మరియు స్వతంత్ర భద్రతా నిపుణుల యొక్క విస్తృత తరగతిని ఆకర్షిస్తాయి. ఇది పరిమిత లేదా సంకుచిత నైపుణ్యం కలిగిన బృందాలపై ప్రధానంగా ఆధారపడే స్మార్ట్ కాంట్రాక్ట్ ఆడిట్‌ల కంటే ఒక ప్రయోజనంగా ఉండవచ్చు. + +## టెస్టింగ్ ఉపకరణాలు మరియు లైబ్రరీలు {#testing-tools-and-libraries} + +### యూనిట్ టెస్టింగ్ ఉపకరణాలు {#unit-testing-tools} + +- **[solidity-coverage](https://github.com/sc-forks/solidity-coverage)** - _Solidityలో వ్రాసిన స్మార్ట్ కాంట్రాక్టుల కోసం కోడ్ కవరేజ్ ఉపకరణం._ + +- **[Waffle](https://ethereum-waffle.readthedocs.io/en/latest/)** - _అధునాతన స్మార్ట్ కాంట్రాక్ట్ అభివృద్ధి మరియు టెస్టింగ్ కోసం ఫ్రేమ్‌వర్క్ (ethers.js ఆధారంగా)_. + +- **[Remix Tests](https://github.com/ethereum/remix-project/tree/master/libs/remix-tests)** - _Solidity స్మార్ట్ కాంట్రాక్టులను పరీక్షించడానికి ఉపకరణం. Remix IDE "Solidity Unit Testing" ప్లగిన్ కింద పనిచేస్తుంది, ఇది ఒక కాంట్రాక్ట్ కోసం టెస్ట్ కేసులను వ్రాయడానికి మరియు అమలు చేయడానికి ఉపయోగించబడుతుంది._ + +- **[OpenZeppelin Test Helpers](https://github.com/OpenZeppelin/openzeppelin-test-helpers)** - _ఇతీరియము స్మార్ట్ కాంట్రాక్ట్ టెస్టింగ్ కోసం అస్సర్షన్ లైబ్రరీ. మీ కాంట్రాక్టులు ఆశించిన విధంగా ప్రవర్తిస్తాయని నిర్ధారించుకోండి!_ + +- **[Brownie unit testing framework](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)** - _బ్రౌనీ Pytestను ఉపయోగిస్తుంది, ఇది ఫీచర్-రిచ్ టెస్ట్ ఫ్రేమ్‌వర్క్, ఇది తక్కువ కోడ్‌తో చిన్న టెస్ట్‌లను వ్రాయడానికి మిమ్మల్ని అనుమతిస్తుంది, పెద్ద ప్రాజెక్టుల కోసం బాగా స్కేల్ చేస్తుంది మరియు అత్యంత విస్తరించదగినది._ + +- **[Foundry Tests](https://github.com/foundry-rs/foundry/tree/master/crates/forge)** - _ఫౌండ్రీ ఫోర్జ్‌ను అందిస్తుంది, ఇది సాధారణ యూనిట్ టెస్టులు, గ్యాస్ ఆప్టిమైజేషన్ తనిఖీలు మరియు కాంట్రాక్ట్ ఫజింగ్‌ను అమలు చేయగల వేగవంతమైన మరియు సౌకర్యవంతమైన ఇతీరియము టెస్టింగ్ ఫ్రేమ్‌వర్క్._ + +- **[హార్డ్‌హ్యాట్ టెస్టులు](https://hardhat.org/hardhat-runner/docs/guides/test-contracts)** - _ethers.js, Mocha, మరియు Chai ఆధారంగా స్మార్ట్ కాంట్రాక్టులను పరీక్షించడానికి ఫ్రేమ్‌వర్క్._ + +- **[ApeWorx](https://docs.apeworx.io/ape/stable/userguides/testing.html)** - _ఎథేరియం వర్చువల్ మషీన్‌ను లక్ష్యంగా చేసుకుని స్మార్ట్ కాంట్రాక్టుల కోసం పైథాన్-ఆధారిత అభివృద్ధి మరియు టెస్టింగ్ ఫ్రేమ్‌వర్క్._ + +- **[Wake](https://ackeeblockchain.com/wake/docs/latest/testing-framework/overview/)** - _యూనిట్ టెస్టింగ్ మరియు ఫజింగ్ కోసం పైథాన్-ఆధారిత ఫ్రేమ్‌వర్క్, బలమైన డీబగ్గింగ్ సామర్థ్యాలు మరియు క్రాస్-చైన్ టెస్టింగ్ మద్దతుతో, ఉత్తమ వినియోగదారు అనుభవం మరియు పనితీరు కోసం pytest మరియు Anvilను ఉపయోగిస్తుంది._ + +### ప్రాపర్టీ-ఆధారిత టెస్టింగ్ ఉపకరణాలు {#property-based-testing-tools} + +#### స్టాటిక్ విశ్లేషణ ఉపకరణాలు {#static-analysis-tools} + +- **[Slither](https://github.com/crytic/slither)** - _దుర్బలత్వాలను కనుగొనడానికి, కోడ్ గ్రహణాన్ని మెరుగుపరచడానికి మరియు స్మార్ట్ కాంట్రాక్టుల కోసం అనుకూల విశ్లేషణలను వ్రాయడానికి పైథాన్-ఆధారిత Solidity స్టాటిక్ విశ్లేషణ ఫ్రేమ్‌వర్క్._ + +- **[Ethlint](https://ethlint.readthedocs.io/en/latest/)** - _Solidity స్మార్ట్ కాంట్రాక్ట్ ప్రోగ్రామింగ్ భాష కోసం శైలి మరియు భద్రతా ఉత్తమ పద్ధతులను అమలు చేయడానికి లింటర్._ + +- **[Cyfrin Aderyn](https://cyfrin.io/tools/aderyn)** - _Web3 స్మార్ట్ కాంట్రాక్ట్ భద్రత మరియు అభివృద్ధి కోసం ప్రత్యేకంగా రూపొందించబడిన రస్ట్-ఆధారిత స్టాటిక్ ఎనలైజర్._ + +- **[Wake](https://ackeeblockchain.com/wake/docs/latest/static-analysis/using-detectors/)** - _దుర్బలత్వం మరియు కోడ్ నాణ్యత డిటెక్టర్లతో పైథాన్-ఆధారిత స్టాటిక్ విశ్లేషణ ఫ్రేమ్‌వర్క్, కోడ్ నుండి ఉపయోగకరమైన సమాచారాన్ని సంగ్రహించడానికి ప్రింటర్లు మరియు అనుకూల సబ్‌మాడ్యూల్స్ వ్రాయడానికి మద్దతు._ + +- **[Slippy](https://github.com/fvictorio/slippy)** - _Solidity కోసం ఒక సాధారణ మరియు శక్తివంతమైన లింటర్._ + +#### డైనమిక్ విశ్లేషణ ఉపకరణాలు {#dynamic-analysis-tools} + +- **[Echidna](https://github.com/crytic/echidna/)** - _ప్రాపర్టీ-ఆధారిత టెస్టింగ్ ద్వారా స్మార్ట్ కాంట్రాక్టులలో దుర్బలత్వాలను గుర్తించడానికి వేగవంతమైన కాంట్రాక్ట్ ఫజర్._ + +- **[Diligence Fuzzing](https://consensys.net/diligence/fuzzing/)** - _స్మార్ట్ కాంట్రాక్ట్ కోడ్‌లో ప్రాపర్టీ ఉల్లంఘనలను గుర్తించడానికి ఉపయోగపడే ఆటోమేటెడ్ ఫజింగ్ ఉపకరణం._ + +- **[Manticore](https://manticore.readthedocs.io/en/latest/index.html)** - _EVM బైట్‌కోడ్‌ను విశ్లేషించడానికి డైనమిక్ సింబాలిక్ ఎగ్జిక్యూషన్ ఫ్రేమ్‌వర్క్._ + +- **[Mythril](https://github.com/ConsenSys/mythril-classic)** - _టెయింట్ విశ్లేషణ, కాంకోలిక్ విశ్లేషణ మరియు కంట్రోల్ ఫ్లో చెకింగ్‌ను ఉపయోగించి కాంట్రాక్ట్ దుర్బలత్వాలను గుర్తించడానికి EVM బైట్‌కోడ్ అంచనా ఉపకరణం._ + +- **[Diligence Scribble](https://consensys.net/diligence/scribble/)** - _Scribble అనేది ఒక స్పెసిఫికేషన్ భాష మరియు రన్‌టైమ్ వెరిఫికేషన్ ఉపకరణం, ఇది మీకు స్మార్ట్ కాంట్రాక్టులను ప్రాపర్టీలతో అనోటేట్ చేయడానికి అనుమతిస్తుంది, ఇది Diligence Fuzzing లేదా MythX వంటి ఉపకరణాలతో కాంట్రాక్టులను స్వయంచాలకంగా పరీక్షించడానికి మిమ్మల్ని అనుమతిస్తుంది._ + +## సంబంధిత ట్యుటోరియల్స్ {#related-tutorials} + +- [వివిధ టెస్టింగ్ ఉత్పత్తుల యొక్క అవలోకనం మరియు పోలిక](/developers/tutorials/guide-to-smart-contract-security-tools/) \_ +- [స్మార్ట్ కాంట్రాక్టులను పరీక్షించడానికి ఎకిడ్నాను ఎలా ఉపయోగించాలి](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/) +- [స్మార్ట్ కాంట్రాక్ట్ బగ్‌లను కనుగొనడానికి మాంటికోర్‌ను ఎలా ఉపయోగించాలి](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/) +- [స్మార్ట్ కాంట్రాక్ట్ బగ్‌లను కనుగొనడానికి స్లిథర్‌ను ఎలా ఉపయోగించాలి](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/) +- [పరీక్ష కోసం Solidity కాంట్రాక్టులను ఎలా మాక్ చేయాలి](/developers/tutorials/how-to-mock-solidity-contracts-for-testing/) +- [ఫౌండ్రీని ఉపయోగించి Solidityలో యూనిట్ టెస్టులను ఎలా అమలు చేయాలి](https://www.rareskills.io/post/foundry-testing-solidity) + +## మరింత సమాచారం {#further-reading} + +- [ఇతీరియము స్మార్ట్ కాంట్రాక్టులను పరీక్షించడానికి ఒక లోతైన గైడ్](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-2e41b2770297) +- [ఇతీరియము స్మార్ట్ కాంట్రాక్టులను ఎలా పరీక్షించాలి](https://betterprogramming.pub/how-to-test-ethereum-smart-contracts-35abc8fa199d) +- [అభివృద్ధి చేసేవాళ్ల కోసం MolochDAO యొక్క యూనిట్ టెస్టింగ్ గైడ్](https://github.com/MolochVentures/moloch/tree/4e786db8a4aa3158287e0935dcbc7b1e43416e38/test#moloch-testing-guide) +- [ఒక రాక్‌స్టార్ లాగా స్మార్ట్ కాంట్రాక్టులను ఎలా పరీక్షించాలి](https://forum.openzeppelin.com/t/test-smart-contracts-like-a-rockstar/1001) diff --git a/public/content/translations/te/developers/docs/smart-contracts/upgrading/index.md b/public/content/translations/te/developers/docs/smart-contracts/upgrading/index.md new file mode 100644 index 00000000000..3fc3f8c179c --- /dev/null +++ b/public/content/translations/te/developers/docs/smart-contracts/upgrading/index.md @@ -0,0 +1,165 @@ +--- +title: "స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడం" +description: "Ethereum స్మార్ట్ కాంట్రాక్టుల కోసం ఉన్నతీకరణ నమూనాల యొక్క అవలోకనం" +lang: te +--- + +Ethereumలోని స్మార్ట్ కాంట్రాక్టులు అనేవి ఇథీరియం వర్చువల్ మెషిన్ (EVM)లో పనిచేసే స్వీయ-నిర్వహణ ప్రోగ్రామ్‌లు. ఈ ప్రోగ్రామ్‌లు డిజైన్ ప్రకారం మార్పులేనివి, ఇది కాంట్రాక్టును అమలు చేసిన తర్వాత వ్యాపార తర్కానికి ఏవైనా నవీకరణలను నిరోధిస్తుంది. + +స్మార్ట్ కాంట్రాక్టుల యొక్క విశ్వసనీయత, వికేంద్రీకరణ మరియు భద్రత కోసం మార్పులేనితనం అవసరమైనప్పటికీ, ఇది కొన్ని సందర్భాల్లో ఒక లోపంగా ఉండవచ్చు. ఉదాహరణకు, మార్పులేని కోడ్ డెవలపర్‌లకు హాని కలిగించే కాంట్రాక్టులను సరిచేయడం అసాధ్యం చేస్తుంది. + +అయితే, స్మార్ట్ కాంట్రాక్టులను మెరుగుపరచడంలో పెరిగిన పరిశోధన అనేక ఉన్నతీకరణ నమూనాల పరిచయానికి దారితీసింది. ఈ ఉన్నతీకరణ నమూనాలు డెవలపర్‌లను వేర్వేరు కాంట్రాక్టులలో వ్యాపార తర్కాన్ని ఉంచడం ద్వారా స్మార్ట్ కాంట్రాక్టులను (మార్పులేనితనాన్ని కాపాడుకుంటూ) ఉన్నతీకరించడానికి అనుమతిస్తాయి. + +## అవసరాలు {#prerequisites} + +మీకు [స్మార్ట్ కాంట్రాక్టులు](/developers/docs/smart-contracts/), [స్మార్ట్ కాంట్రాక్ట్ అనాటమీ](/developers/docs/smart-contracts/anatomy/), మరియు [ఇథీరియం వర్చువల్ మెషీన్ (EVM)](/developers/docs/evm/) లపై మంచి అవగాహన ఉండాలి. ఈ మార్గదర్శిని పాఠకులకు స్మార్ట్ కాంట్రాక్టులను ప్రోగ్రామింగ్ చేయడంపై పట్టు ఉందని కూడా భావిస్తుంది. + +## స్మార్ట్ కాంట్రాక్ట్ ఉన్నతీకరణ అంటే ఏమిటి? {#what-is-a-smart-contract-upgrade} + +స్మార్ట్ కాంట్రాక్ట్ ఉన్నతీకరణ అనేది కాంట్రాక్ట్ యొక్క స్థితిని కాపాడుకుంటూ, ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క వ్యాపార తర్కాన్ని మార్చడం. ముఖ్యంగా స్మార్ట్ కాంట్రాక్టుల సందర్భంలో, ఉన్నతీకరణ సామర్థ్యం మరియు మార్పుచెందే గుణం ఒకటే కాదని స్పష్టం చేయడం ముఖ్యం. + +ఇథీరియం నెట్‌వర్క్‌లోని ఒక చిరునామాకు అమలు చేయబడిన ప్రోగ్రామ్‌ను మీరు ఇప్పటికీ మార్చలేరు. కానీ వినియోగదారులు స్మార్ట్ కాంట్రాక్ట్‌తో పరస్పర చర్య చేసినప్పుడు అమలు చేయబడే కోడ్‌ను మీరు మార్చవచ్చు. + +కింది పద్ధతుల ద్వారా ఇది చేయవచ్చు: + +1. స్మార్ట్ కాంట్రాక్ట్ యొక్క బహుళ సంస్కరణలను సృష్టించడం మరియు పాత కాంట్రాక్ట్ నుండి కొత్త కాంట్రాక్ట్ యొక్క ఉదాహరణకు స్థితిని (అంటే, డేటాను) వలస తీసుకురావడం. + +2. వ్యాపార తర్కం మరియు స్థితిని నిల్వ చేయడానికి వేర్వేరు కాంట్రాక్టులను సృష్టించడం. + +3. మార్పులేని ప్రాక్సీ కాంట్రాక్ట్ నుండి మార్చగల లాజిక్ కాంట్రాక్ట్‌కు ఫంక్షన్ కాల్స్‌ను అప్పగించడానికి ప్రాక్సీ నమూనాలను ఉపయోగించడం. + +4. నిర్దిష్ట విధులను అమలు చేయడానికి సరళమైన ఉపగ్రహ కాంట్రాక్టులతో పరస్పర చర్య చేసి, వాటిపై ఆధారపడే మార్పులేని ప్రధాన కాంట్రాక్ట్‌ను సృష్టించడం. + +5. ఒక ప్రాక్సీ కాంట్రాక్ట్ నుండి లాజిక్ కాంట్రాక్టులకు ఫంక్షన్ కాల్స్‌ను అప్పగించడానికి డైమండ్ నమూనాని ఉపయోగించడం. + +### ఉన్నతీకరణ యంత్రాంగం #1: కాంట్రాక్ట్ వలస {#contract-migration} + +కాంట్రాక్ట్ వలస సంస్కరణపై ఆధారపడి ఉంటుంది—అదే సాఫ్ట్‌వేర్ యొక్క ప్రత్యేకమైన స్థితులను సృష్టించడం మరియు నిర్వహించడం అనే ఆలోచన. కాంట్రాక్ట్ వలస అనేది ఇప్పటికే ఉన్న స్మార్ట్ కాంట్రాక్ట్ యొక్క కొత్త ఉదాహరణను అమలు చేయడం మరియు నిల్వ మరియు బ్యాలెన్స్‌లను కొత్త కాంట్రాక్ట్‌కు బదిలీ చేయడం. + +కొత్తగా అమలు చేయబడిన కాంట్రాక్ట్ ఖాళీ నిల్వను కలిగి ఉంటుంది, ఇది పాత కాంట్రాక్ట్ నుండి డేటాను పునరుద్ధరించి కొత్త అమలులోకి వ్రాయడానికి మిమ్మల్ని అనుమతిస్తుంది. ఆ తరువాత, పాత కాంట్రాక్ట్‌తో పరస్పర చర్య చేసిన అన్ని కాంట్రాక్టులను కొత్త చిరునామాను ప్రతిబింబించేలా మీరు నవీకరించాలి. + +కాంట్రాక్ట్ వలసలో చివరి దశ కొత్త కాంట్రాక్ట్‌ను ఉపయోగించడానికి వినియోగదారులను ఒప్పించడం. కొత్త కాంట్రాక్ట్ సంస్కరణ వినియోగదారు బ్యాలెన్స్‌లు మరియు చిరునామాలను నిలుపుకుంటుంది, ఇది మార్పులేనితనాన్ని కాపాడుతుంది. ఇది టోకెన్-ఆధారిత కాంట్రాక్ట్ అయితే, పాత కాంట్రాక్ట్‌ను విస్మరించి కొత్త కాంట్రాక్ట్‌ను ఉపయోగించడానికి మీరు మార్పిడులను కూడా సంప్రదించవలసి ఉంటుంది. + +వినియోగదారు పరస్పర చర్యలకు భంగం కలిగించకుండా స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడానికి కాంట్రాక్ట్ వలస అనేది సాపేక్షంగా సూటిగా మరియు సురక్షితమైన కొలత. అయితే, వినియోగదారు నిల్వ మరియు బ్యాలెన్స్‌లను కొత్త కాంట్రాక్ట్‌కు మాన్యువల్‌గా వలస తీసుకురావడం సమయం తీసుకునేది మరియు అధిక గ్యాస్ ఖర్చులను కలిగించవచ్చు. + +[కాంట్రాక్ట్ వలసపై మరింత.](https://blog.trailofbits.com/2018/10/29/how-contract-migration-works/) + +### ఉన్నతీకరణ యంత్రాంగం #2: డేటా వేర్పాటు {#data-separation} + +స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడానికి మరో పద్ధతి వ్యాపార తర్కం మరియు డేటా నిల్వను వేర్వేరు కాంట్రాక్టులుగా విభజించడం. దీని అర్థం వినియోగదారులు లాజిక్ కాంట్రాక్ట్‌తో పరస్పర చర్య చేస్తారు, అయితే డేటా నిల్వ కాంట్రాక్ట్‌లో నిల్వ చేయబడుతుంది. + +వినియోగదారులు అప్లికేషన్‌తో పరస్పర చర్య చేసినప్పుడు అమలు చేయబడే కోడ్‌ను లాజిక్ కాంట్రాక్ట్ కలిగి ఉంటుంది. ఇది నిల్వ కాంట్రాక్ట్ యొక్క చిరునామాను కూడా కలిగి ఉంటుంది మరియు డేటాను పొందడానికి మరియు సెట్ చేయడానికి దానితో పరస్పర చర్య చేస్తుంది. + +ఇంతలో, నిల్వ కాంట్రాక్ట్ స్మార్ట్ కాంట్రాక్ట్‌తో అనుబంధించబడిన స్థితిని కలిగి ఉంటుంది, ఉదాహరణకు వినియోగదారు బ్యాలెన్స్‌లు మరియు చిరునామాలు. నిల్వ కాంట్రాక్ట్ లాజిక్ కాంట్రాక్ట్ యాజమాన్యంలో ఉందని మరియు అమలు సమయంలో దాని చిరునామాతో కాన్ఫిగర్ చేయబడిందని గమనించండి. ఇది అనధికార కాంట్రాక్టులు నిల్వ కాంట్రాక్ట్‌ను కాల్ చేయకుండా లేదా దాని డేటాను నవీకరించకుండా నిరోధిస్తుంది. + +డిఫాల్ట్‌గా, నిల్వ కాంట్రాక్ట్ మార్పులేనిది—కానీ అది సూచించే లాజిక్ కాంట్రాక్ట్‌ను మీరు కొత్త అమలుతో భర్తీ చేయవచ్చు. ఇది EVMలో నడిచే కోడ్‌ను మారుస్తుంది, అయితే నిల్వ మరియు బ్యాలెన్స్‌లను చెక్కుచెదరకుండా ఉంచుతుంది. + +ఈ ఉన్నతీకరణ పద్ధతిని ఉపయోగించడానికి నిల్వ కాంట్రాక్ట్‌లోని లాజిక్ కాంట్రాక్ట్ యొక్క చిరునామాను నవీకరించడం అవసరం. ముందు వివరించిన కారణాల వల్ల మీరు కొత్త లాజిక్ కాంట్రాక్ట్‌ను నిల్వ కాంట్రాక్ట్ యొక్క చిరునామాతో కూడా కాన్ఫిగర్ చేయాలి. + +కాంట్రాక్ట్ వలసతో పోలిస్తే డేటా వేర్పాటు నమూనాని అమలు చేయడం వాదించదగ్గ సులభం. అయితే, మీరు బహుళ కాంట్రాక్టులను నిర్వహించవలసి ఉంటుంది మరియు దురుద్దేశపూర్వక ఉన్నతీకరణల నుండి స్మార్ట్ కాంట్రాక్టులను రక్షించడానికి సంక్లిష్టమైన అధికార పథకాలను అమలు చేయాలి. + +### ఉన్నతీకరణ యంత్రాంగం #3: ప్రాక్సీ నమూనాలు {#proxy-patterns} + +ప్రాక్సీ నమూనా కూడా వ్యాపార తర్కం మరియు డేటాను వేర్వేరు కాంట్రాక్టులలో ఉంచడానికి డేటా వేర్పాటును ఉపయోగిస్తుంది. అయితే, ఒక ప్రాక్సీ నమూనాలో, నిల్వ కాంట్రాక్ట్ (ప్రాక్సీ అని పిలుస్తారు) కోడ్ అమలు సమయంలో లాజిక్ కాంట్రాక్ట్‌ను కాల్ చేస్తుంది. ఇది డేటా వేర్పాటు పద్ధతికి రివర్స్, ఇక్కడ లాజిక్ కాంట్రాక్ట్ నిల్వ కాంట్రాక్ట్‌ను కాల్ చేస్తుంది. + +ప్రాక్సీ నమూనాలో ఇది జరుగుతుంది: + +1. వినియోగదారులు ప్రాక్సీ కాంట్రాక్ట్‌తో పరస్పర చర్య చేస్తారు, ఇది డేటాను నిల్వ చేస్తుంది, కానీ వ్యాపార తర్కాన్ని కలిగి ఉండదు. + +2. `delegatecall` ఫంక్షన్‌ను ఉపయోగించి ప్రాక్సీ కాంట్రాక్ట్ లాజిక్ కాంట్రాక్ట్ యొక్క చిరునామాను నిల్వ చేస్తుంది మరియు అన్ని ఫంక్షన్ కాల్స్‌ను లాజిక్ కాంట్రాక్ట్‌కు (ఇది వ్యాపార తర్కాన్ని కలిగి ఉంటుంది) అప్పగిస్తుంది. + +3. కాల్ లాజిక్ కాంట్రాక్ట్‌కు ఫార్వార్డ్ చేయబడిన తర్వాత, లాజిక్ కాంట్రాక్ట్ నుండి తిరిగి వచ్చిన డేటా తిరిగి పొందబడుతుంది మరియు వినియోగదారుకు తిరిగి ఇవ్వబడుతుంది. + +ప్రాక్సీ నమూనాలను ఉపయోగించడానికి **delegatecall** ఫంక్షన్ పై అవగాహన అవసరం. ప్రాథమికంగా, `delegatecall` అనేది ఒక ఆప్‌కోడ్, ఇది ఒక కాంట్రాక్ట్‌ను మరొక కాంట్రాక్ట్‌ను కాల్ చేయడానికి అనుమతిస్తుంది, అయితే వాస్తవ కోడ్ అమలు కాలింగ్ కాంట్రాక్ట్ సందర్భంలో జరుగుతుంది. ప్రాక్సీ నమూనాలలో `delegatecall` ఉపయోగించడం యొక్క ఒక సూచన ఏమిటంటే, ప్రాక్సీ కాంట్రాక్ట్ దాని నిల్వకు చదువుతుంది మరియు వ్రాస్తుంది మరియు అంతర్గత ఫంక్షన్‌ను కాల్ చేస్తున్నట్లుగా లాజిక్ కాంట్రాక్ట్‌లో నిల్వ చేయబడిన తర్కాన్ని అమలు చేస్తుంది. + +[Solidity డాక్యుమెంటేషన్](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#delegatecall-callcode-and-libraries) నుండి: + +> _సందేశ కాల్ యొక్క ఒక ప్రత్యేక రూపాంతరం ఉంది, దీనిని **డెలిగేట్ కాల్** అని పిలుస్తారు, ఇది సందేశ కాల్‌కు సమానంగా ఉంటుంది, అయితే లక్ష్య చిరునామా వద్ద ఉన్న కోడ్ కాలింగ్ కాంట్రాక్ట్ సందర్భంలో (అంటే, చిరునామాలో) అమలు చేయబడుతుంది మరియు `msg.sender` మరియు `msg.value` వాటి విలువలను మార్చవు._ _దీని అర్థం ఒక కాంట్రాక్ట్ రన్‌టైమ్‌లో వేరొక చిరునామా నుండి కోడ్‌ను డైనమిక్‌గా లోడ్ చేయగలదు. నిల్వ, ప్రస్తుత చిరునామా మరియు బ్యాలెన్స్ ఇప్పటికీ కాలింగ్ కాంట్రాక్ట్‌ను సూచిస్తాయి, కోడ్ మాత్రమే పిలువబడిన చిరునామా నుండి తీసుకోబడుతుంది._ + +ప్రాక్సీ కాంట్రాక్ట్, వినియోగదారు ఒక ఫంక్షన్‌ను కాల్ చేసినప్పుడల్లా `delegatecall` ను ప్రారంభించాలని తెలుసు, ఎందుకంటే దానిలో `fallback` ఫంక్షన్ నిర్మించబడింది. Solidity ప్రోగ్రామింగ్‌లో [ఫాల్‌బ్యాక్ ఫంక్షన్](https://docs.soliditylang.org/en/latest/contracts.html#fallback-function) ఒక కాంట్రాక్ట్‌లో పేర్కొన్న ఫంక్షన్‌లతో ఫంక్షన్ కాల్ సరిపోలనప్పుడు అమలు చేయబడుతుంది. + +ప్రాక్సీ నమూనాని పని చేయడానికి, ప్రాక్సీ కాంట్రాక్ట్ మద్దతు ఇవ్వని ఫంక్షన్ కాల్స్‌ను ఎలా నిర్వహించాలో పేర్కొనే కస్టమ్ ఫాల్‌బ్యాక్ ఫంక్షన్‌ను వ్రాయడం అవసరం. ఈ సందర్భంలో, ప్రాక్సీ యొక్క ఫాల్‌బ్యాక్ ఫంక్షన్ ఒక డెలిగేట్‌కాల్‌ను ప్రారంభించడానికి మరియు వినియోగదారు యొక్క అభ్యర్థనను ప్రస్తుత లాజిక్ కాంట్రాక్ట్ అమలుకు తిరిగి మళ్లించడానికి ప్రోగ్రామ్ చేయబడింది. + +ప్రాక్సీ కాంట్రాక్ట్ డిఫాల్ట్‌గా మార్పులేనిది, కానీ నవీకరించబడిన వ్యాపార తర్కంతో కొత్త లాజిక్ కాంట్రాక్టులను సృష్టించవచ్చు. ఉన్నతీకరణను నిర్వహించడం అప్పుడు ప్రాక్సీ కాంట్రాక్ట్‌లో సూచించబడిన లాజిక్ కాంట్రాక్ట్ యొక్క చిరునామాను మార్చడం మాత్రమే. + +ప్రాక్సీ కాంట్రాక్ట్‌ను కొత్త లాజిక్ కాంట్రాక్ట్‌కు సూచించడం ద్వారా, వినియోగదారులు ప్రాక్సీ కాంట్రాక్ట్ ఫంక్షన్‌ను కాల్ చేసినప్పుడు అమలు చేయబడిన కోడ్ మారుతుంది. ఇది వినియోగదారులను కొత్త కాంట్రాక్ట్‌తో పరస్పర చర్య చేయమని అడగకుండా కాంట్రాక్ట్ యొక్క తర్కాన్ని ఉన్నతీకరించడానికి మాకు అనుమతిస్తుంది. + +ప్రాక్సీ నమూనాలు స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడానికి ఒక ప్రసిద్ధ పద్ధతి, ఎందుకంటే అవి కాంట్రాక్ట్ వలసతో సంబంధం ఉన్న ఇబ్బందులను తొలగిస్తాయి. అయితే, ప్రాక్సీ నమూనాలు ఉపయోగించడానికి మరింత సంక్లిష్టంగా ఉంటాయి మరియు సరిగా ఉపయోగించకపోతే, [ఫంక్షన్ సెలెక్టర్ ఘర్షణలు](https://medium.com/nomic-foundation-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357) వంటి క్లిష్టమైన లోపాలను ప్రవేశపెట్టగలవు. + +[ప్రాక్సీ నమూనాలపై మరింత](https://blog.openzeppelin.com/proxy-patterns/). + +### ఉన్నతీకరణ యంత్రాంగం #4: స్ట్రాటజీ నమూనా {#strategy-pattern} + +ఈ సాంకేతికత [స్ట్రాటజీ నమూనా](https://en.wikipedia.org/wiki/Strategy_pattern) ద్వారా ప్రభావితమైంది, ఇది నిర్దిష్ట లక్షణాలను అమలు చేయడానికి ఇతర ప్రోగ్రామ్‌లతో ఇంటర్‌ఫేస్ చేసే సాఫ్ట్‌వేర్ ప్రోగ్రామ్‌లను సృష్టించడాన్ని ప్రోత్సహిస్తుంది. ఇథీరియం అభివృద్ధికి స్ట్రాటజీ నమూనాని వర్తింపజేయడం అంటే ఇతర కాంట్రాక్టుల నుండి ఫంక్షన్‌లను కాల్ చేసే స్మార్ట్ కాంట్రాక్ట్‌ను నిర్మించడం. + +ఈ సందర్భంలో ప్రధాన కాంట్రాక్ట్ కోర్ బిజినెస్ లాజిక్‌ను కలిగి ఉంటుంది, కానీ కొన్ని విధులను అమలు చేయడానికి ఇతర స్మార్ట్ కాంట్రాక్టులతో ("శాటిలైట్ కాంట్రాక్టులు") ఇంటర్‌ఫేస్ చేస్తుంది. ఈ ప్రధాన కాంట్రాక్ట్ ప్రతి శాటిలైట్ కాంట్రాక్ట్ కోసం చిరునామాను కూడా నిల్వ చేస్తుంది మరియు శాటిలైట్ కాంట్రాక్ట్ యొక్క వేర్వేరు అమలుల మధ్య మారగలదు. + +మీరు కొత్త శాటిలైట్ కాంట్రాక్ట్‌ను నిర్మించవచ్చు మరియు ప్రధాన కాంట్రాక్ట్‌ను కొత్త చిరునామాతో కాన్ఫిగర్ చేయవచ్చు. ఇది స్మార్ట్ కాంట్రాక్ట్ కోసం _వ్యూహాలను_ మార్చడానికి మిమ్మల్ని అనుమతిస్తుంది (అంటే, కొత్త తర్కాన్ని అమలు చేయడం). + +ముందు చర్చించిన ప్రాక్సీ నమూనాకు సమానంగా ఉన్నప్పటికీ, స్ట్రాటజీ నమూనా భిన్నమైనది ఎందుకంటే ప్రధాన కాంట్రాక్ట్, వినియోగదారులు పరస్పర చర్య చేసేది, వ్యాపార తర్కాన్ని కలిగి ఉంటుంది. ఈ నమూనాని ఉపయోగించడం కోర్ మౌలిక సదుపాయాలను ప్రభావితం చేయకుండా స్మార్ట్ కాంట్రాక్ట్‌కు పరిమిత మార్పులను ప్రవేశపెట్టే అవకాశాన్ని మీకు ఇస్తుంది. + +ప్రధాన లోపం ఏమిటంటే, ఈ నమూనా ఎక్కువగా చిన్న ఉన్నతీకరణలను విడుదల చేయడానికి ఉపయోగపడుతుంది. అలాగే, ప్రధాన కాంట్రాక్ట్ రాజీపడితే (ఉదా., హ్యాక్ ద్వారా), మీరు ఈ ఉన్నతీకరణ పద్ధతిని ఉపయోగించలేరు. + +### ఉన్నతీకరణ యంత్రాంగం #5: డైమండ్ నమూనా {#diamond-pattern} + +డైమండ్ నమూనాని ప్రాక్సీ నమూనాపై మెరుగుదలగా పరిగణించవచ్చు. డైమండ్ ప్రాక్సీ కాంట్రాక్ట్ ఒకటి కంటే ఎక్కువ లాజిక్ కాంట్రాక్టులకు ఫంక్షన్ కాల్స్‌ను అప్పగించగలదు కాబట్టి డైమండ్ నమూనాలు ప్రాక్సీ నమూనాల నుండి భిన్నంగా ఉంటాయి. + +డైమండ్ నమూనాలోని లాజిక్ కాంట్రాక్టులను _ఫేసెట్స్_ అని పిలుస్తారు. డైమండ్ నమూనాని పని చేయడానికి, మీరు ప్రాక్సీ కాంట్రాక్ట్‌లో ఒక మ్యాపింగ్‌ను సృష్టించాలి, ఇది [ఫంక్షన్ సెలెక్టర్లను](https://docs.soliditylang.org/en/latest/abi-spec.html#function-selector) వేర్వేరు ఫేసెట్ చిరునామాలకు మ్యాప్ చేస్తుంది. + +ఒక వినియోగదారు ఫంక్షన్ కాల్ చేసినప్పుడు, ఆ ఫంక్షన్‌ను అమలు చేయడానికి బాధ్యత వహించే ఫేసెట్‌ను కనుగొనడానికి ప్రాక్సీ కాంట్రాక్ట్ మ్యాపింగ్‌ను తనిఖీ చేస్తుంది. అప్పుడు అది `delegatecall` (ఫాల్‌బ్యాక్ ఫంక్షన్‌ను ఉపయోగించి) ను ప్రారంభిస్తుంది మరియు కాల్‌ను తగిన లాజిక్ కాంట్రాక్ట్‌కు మళ్లిస్తుంది. + +సాంప్రదాయ ప్రాక్సీ ఉన్నతీకరణ నమూనాలపై డైమండ్ ఉన్నతీకరణ నమూనాకు కొన్ని ప్రయోజనాలు ఉన్నాయి: + +1. ఇది మొత్తం కోడ్‌ను మార్చకుండా కాంట్రాక్ట్ యొక్క ఒక చిన్న భాగాన్ని ఉన్నతీకరించడానికి మిమ్మల్ని అనుమతిస్తుంది. ఉన్నతీకరణల కోసం ప్రాక్సీ నమూనాని ఉపయోగించడం అనేది చిన్న ఉన్నతీకరణలకు కూడా పూర్తిగా కొత్త లాజిక్ కాంట్రాక్ట్‌ను సృష్టించడం అవసరం. + +2. అన్ని స్మార్ట్ కాంట్రాక్టులు (ప్రాక్సీ నమూనాలలో ఉపయోగించే లాజిక్ కాంట్రాక్టులతో సహా) 24KB పరిమాణ పరిమితిని కలిగి ఉంటాయి, ఇది ఒక పరిమితిగా ఉంటుంది—ముఖ్యంగా ఎక్కువ ఫంక్షన్‌లు అవసరమయ్యే సంక్లిష్ట కాంట్రాక్టుల కోసం. డైమండ్ నమూనా బహుళ లాజిక్ కాంట్రాక్టుల మధ్య ఫంక్షన్‌లను విభజించడం ద్వారా ఈ సమస్యను పరిష్కరించడం సులభం చేస్తుంది. + +3. ప్రాక్సీ నమూనాలు యాక్సెస్ నియంత్రణలకు క్యాచ్-ఆల్ విధానాన్ని అవలంబిస్తాయి. ఉన్నతీకరణ ఫంక్షన్‌లకు యాక్సెస్ ఉన్న ఒక సంస్థ _మొత్తం_ కాంట్రాక్ట్‌ను మార్చగలదు. కానీ డైమండ్ నమూనా మాడ్యులర్ అనుమతుల విధానాన్ని ప్రారంభిస్తుంది, ఇక్కడ మీరు స్మార్ట్ కాంట్రాక్ట్‌లోని కొన్ని ఫంక్షన్‌లను ఉన్నతీకరించడానికి సంస్థలను పరిమితం చేయవచ్చు. + +[డైమండ్ నమూనాపై మరింత](https://eip2535diamonds.substack.com/p/introduction-to-the-diamond-standard?s=w). + +## స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడం యొక్క ప్రయోజనాలు మరియు నష్టాలు {#pros-and-cons-of-upgrading-smart-contracts} + +| ప్రయోజనాలు | అప్రయోజనాలు | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| స్మార్ట్ కాంట్రాక్ట్ ఉన్నతీకరణ అమలు తర్వాత దశలో కనుగొనబడిన దుర్బలత్వాలను సరిచేయడం సులభం చేస్తుంది. | స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడం కోడ్ మార్పులేనితనం అనే ఆలోచనను తిరస్కరిస్తుంది, ఇది వికేంద్రీకరణ మరియు భద్రతపై ప్రభావాలను కలిగి ఉంటుంది. | +| వికేంద్రీకృత అప్లికేషన్లకు కొత్త ఫీచర్లను జోడించడానికి డెవలపర్లు లాజిక్ ఉన్నతీకరణలను ఉపయోగించవచ్చు. | వినియోగదారులు డెవలపర్లు స్మార్ట్ కాంట్రాక్టులను ఏకపక్షంగా సవరించరని విశ్వసించాలి. | +| బగ్‌లను త్వరగా సరిచేయవచ్చు కాబట్టి స్మార్ట్ కాంట్రాక్ట్ ఉన్నతీకరణలు తుది-వినియోగదారులకు భద్రతను మెరుగుపరుస్తాయి. | స్మార్ట్ కాంట్రాక్టులలోకి ఉన్నతీకరణ కార్యాచరణను ప్రోగ్రామింగ్ చేయడం సంక్లిష్టత యొక్క మరొక పొరను జోడిస్తుంది మరియు క్లిష్టమైన లోపాల సంభావ్యతను పెంచుతుంది. | +| కాంట్రాక్ట్ ఉన్నతీకరణలు డెవలపర్‌లకు వేర్వేరు ఫీచర్లతో ప్రయోగాలు చేయడానికి మరియు కాలక్రమేణా డాప్స్‌ను మెరుగుపరచడానికి ఎక్కువ అవకాశం ఇస్తాయి. | స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించే అవకాశం అభివృద్ధి దశలో తగిన శ్రద్ధ వహించకుండా ప్రాజెక్టులను వేగంగా ప్రారంభించడానికి డెవలపర్‌లను ప్రోత్సహించవచ్చు. | +| | స్మార్ట్ కాంట్రాక్టులలో అసురక్షిత యాక్సెస్ నియంత్రణ లేదా కేంద్రీకరణ దురుద్దేశపూర్వక నటులకు అనధికారిక ఉన్నతీకరణలు చేయడం సులభం చేస్తుంది. | + +## స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడానికి పరిగణనలు {#considerations-for-upgrading-smart-contracts} + +1. అనధికారిక స్మార్ట్ కాంట్రాక్ట్ ఉన్నతీకరణలను నివారించడానికి సురక్షిత యాక్సెస్ నియంత్రణ/అధికార యంత్రాంగాలను ఉపయోగించండి, ప్రత్యేకించి ప్రాక్సీ నమూనాలు, స్ట్రాటజీ నమూనాలు లేదా డేటా వేర్పాటును ఉపయోగిస్తుంటే. ఒక ఉదాహరణ, ఉన్నతీకరణ ఫంక్షన్‌కు యాక్సెస్‌ను పరిమితం చేయడం, తద్వారా కాంట్రాక్ట్ యజమాని మాత్రమే దానిని కాల్ చేయగలరు. + +2. స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడం ఒక సంక్లిష్టమైన చర్య మరియు దుర్బలత్వాల పరిచయాన్ని నివారించడానికి అధిక స్థాయి శ్రద్ధ అవసరం. + +3. ఉన్నతీకరణలను అమలు చేసే ప్రక్రియను వికేంద్రీకరించడం ద్వారా విశ్వాస ఊహలను తగ్గించండి. సాధ్యమైన వ్యూహాలలో ఉన్నతీకరణలను నియంత్రించడానికి [మల్టీ-సిగ్ వాలెట్ కాంట్రాక్ట్](/developers/docs/smart-contracts/#multisig) ఉపయోగించడం, లేదా ఉన్నతీకరణను ఆమోదించడంపై ఓటు వేయమని [DAO సభ్యులను](/dao/) కోరడం ఉన్నాయి. + +4. కాంట్రాక్టులను ఉన్నతీకరించడంలో ఉన్న ఖర్చుల గురించి తెలుసుకోండి. ఉదాహరణకు, కాంట్రాక్ట్ వలస సమయంలో పాత కాంట్రాక్ట్ నుండి కొత్త కాంట్రాక్ట్‌కు స్థితిని (ఉదా., వినియోగదారు బ్యాలెన్స్‌లు) కాపీ చేయడానికి ఒకటి కంటే ఎక్కువ లావాదేవీలు అవసరం కావచ్చు, అంటే ఎక్కువ గ్యాస్ ఫీజులు. + +5. వినియోగదారులను రక్షించడానికి **టైమ్‌లాక్‌లను** అమలు చేయడాన్ని పరిగణించండి. టైమ్‌లాక్ అంటే ఒక వ్యవస్థకు మార్పులపై అమలు చేయబడిన ఆలస్యం. ఉన్నతీకరణలను నియంత్రించడానికి టైమ్‌లాక్‌లను మల్టీ-సిగ్ గవర్నెన్స్ సిస్టమ్‌తో కలపవచ్చు: ఒక ప్రతిపాదిత చర్య అవసరమైన ఆమోద పరిమితిని చేరుకుంటే, ముందుగా నిర్వచించిన ఆలస్య వ్యవధి ముగిసే వరకు అది అమలు కాదు. + +టైమ్‌లాక్‌లు వినియోగదారులకు ప్రతిపాదిత మార్పుతో (ఉదా., లాజిక్ ఉన్నతీకరణ లేదా కొత్త ఫీజు పథకాలు) ఏకీభవించకపోతే సిస్టమ్ నుండి నిష్క్రమించడానికి కొంత సమయం ఇస్తాయి. టైమ్‌లాక్‌లు లేకుండా, వినియోగదారులు డెవలపర్లు ముందస్తు నోటీసు లేకుండా స్మార్ట్ కాంట్రాక్ట్‌లో ఏకపక్ష మార్పులను అమలు చేయరని విశ్వసించాలి. ఇక్కడ ఉన్న లోపం ఏమిటంటే, టైమ్‌లాక్‌లు దుర్బలత్వాలను త్వరగా ప్యాచ్ చేసే సామర్థ్యాన్ని పరిమితం చేస్తాయి. + +## వనరులు {#resources} + +**OpenZeppelin అప్‌గ్రేడ్స్ ప్లగిన్లు - _ఉన్నతీకరించగల స్మార్ట్ కాంట్రాక్టులను అమలు చేయడానికి మరియు సురక్షితం చేయడానికి ఉపకరణాల సూట్._** + +- [GitHub](https://github.com/OpenZeppelin/openzeppelin-upgrades) +- [డాక్యుమెంటేషన్](https://docs.openzeppelin.com/upgrades) + +## ట్యుటోరియల్స్ {#tutorials} + +- ప్యాట్రిక్ కాలిన్స్ ద్వారా [మీ స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడం | YouTube ట్యుటోరియల్](https://www.youtube.com/watch?v=bdXJmWajZRY) +- ఆస్టిన్ గ్రిఫిత్ ద్వారా [ఇథీరియం స్మార్ట్ కాంట్రాక్ట్ వలస ట్యుటోరియల్](https://medium.com/coinmonks/ethereum-smart-contract-migration-13f6f12539bd) +- ప్రణేష్ A.S ద్వారా [స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడానికి UUPS ప్రాక్సీ నమూనాని ఉపయోగించడం](https://blog.logrocket.com/author/praneshas/) +- fangjun.eth ద్వారా [Web3 ట్యుటోరియల్: OpenZeppelin ఉపయోగించి ఉన్నతీకరించగల స్మార్ట్ కాంట్రాక్ట్ (ప్రాక్సీ) వ్రాయండి](https://dev.to/yakult/tutorial-write-upgradeable-smart-contract-proxy-contract-with-openzeppelin-1916) + +## మరింత సమాచారం {#further-reading} + +- శాంటియాగో పల్లాడినో ద్వారా [స్మార్ట్ కాంట్రాక్ట్ ఉన్నతీకరణల స్థితి](https://blog.openzeppelin.com/the-state-of-smart-contract-upgrades/) +- [ఒక Solidity స్మార్ట్ కాంట్రాక్ట్‌ను ఉన్నతీకరించడానికి బహుళ మార్గాలు](https://cryptomarketpool.com/multiple-ways-to-upgrade-a-solidity-smart-contract/) - క్రిప్టో మార్కెట్ పూల్ బ్లాగ్ +- [తెలుసుకోండి: స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడం](https://docs.openzeppelin.com/learn/upgrading-smart-contracts) - OpenZeppelin డాక్స్ +- నవీన్ సాహు ద్వారా [Solidity కాంట్రాక్టుల ఉన్నతీకరణ సామర్థ్యం కోసం ప్రాక్సీ నమూనాలు: పారదర్శక vs UUPS ప్రాక్సీలు](https://mirror.xyz/0xB38709B8198d147cc9Ff9C133838a044d78B064B/M7oTptQkBGXxox-tk9VJjL66E1V8BUF0GF79MMK4YG0) +- నిక్ మడ్జ్ ద్వారా [డైమండ్ ఉన్నతీకరణలు ఎలా పనిచేస్తాయి](https://dev.to/mudgen/how-diamond-upgrades-work-417j) diff --git a/public/content/translations/te/developers/docs/smart-contracts/verifying/index.md b/public/content/translations/te/developers/docs/smart-contracts/verifying/index.md new file mode 100644 index 00000000000..d331ed57a3b --- /dev/null +++ b/public/content/translations/te/developers/docs/smart-contracts/verifying/index.md @@ -0,0 +1,113 @@ +--- +title: "స్మార్ట్ కాంట్రాక్టులను ధృవీకరించడం" +description: "Ethereum స్మార్ట్ కాంట్రాక్టుల కోసం సోర్స్ కోడ్ ధృవీకరణ యొక్క ఒక అవలోకనం" +lang: te +--- + +[స్మార్ట్ కాంట్రాక్టులు](/developers/docs/smart-contracts/) “ట్రస్ట్‌లెస్”గా ఉండేలా రూపొందించబడ్డాయి, అంటే వినియోగదారులు ఒక కాంట్రాక్ట్‌తో పరస్పర చర్య చేసే ముందు మూడవ పక్షాలను (ఉదా., డెవలపర్‌లు మరియు కంపెనీలు) విశ్వసించాల్సిన అవసరం లేదు. ట్రస్ట్‌లెస్‌నెస్ కోసం ఒక ఆవశ్యకతగా, వినియోగదారులు మరియు ఇతర డెవలపర్‌లు ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క సోర్స్ కోడ్‌ను ధృవీకరించగలగాలి. సోర్స్ కోడ్ ధృవీకరణ, ప్రచురించిన కాంట్రాక్ట్ కోడ్ Ethereum బ్లాక్‌చైన్‌లోని కాంట్రాక్ట్ చిరునామాలో నడుస్తున్న అదే కోడ్ అని వినియోగదారులకు మరియు డెవలపర్‌లకు హామీ ఇస్తుంది. + +"సోర్స్ కోడ్ ధృవీకరణ" మరియు "[ఫార్మల్ వెరిఫికేషన్](/developers/docs/smart-contracts/formal-verification/)" మధ్య వ్యత్యాసాన్ని గుర్తించడం ముఖ్యం. సోర్స్ కోడ్ ధృవీకరణ, దాని గురించి కింద వివరంగా వివరించబడుతుంది, ఇది ఉన్నత-స్థాయి భాషలో (ఉదా., Solidity) ఉన్న ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క సోర్స్ కోడ్, కాంట్రాక్ట్ చిరునామాలో అమలు చేయబడే అదే బైట్‌కోడ్‌కు కంపైల్ అవుతుందని ధృవీకరించడాన్ని సూచిస్తుంది. అయితే, ఫార్మల్ వెరిఫికేషన్ ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క సరియైనతను ధృవీకరించడాన్ని వివరిస్తుంది, అంటే కాంట్రాక్ట్ ఆశించిన విధంగా ప్రవర్తిస్తుంది. సందర్భం-ఆధారితమైనప్పటికీ, కాంట్రాక్ట్ ధృవీకరణ సాధారణంగా సోర్స్ కోడ్ ధృవీకరణను సూచిస్తుంది. + +## సోర్స్ కోడ్ ధృవీకరణ అంటే ఏమిటి? {#what-is-source-code-verification} + +డెవలపర్‌లు [Ethereum వర్చువల్ మెషీన్ (EVM)](/developers/docs/evm/)లో ఒక స్మార్ట్ కాంట్రాక్ట్‌ను డిప్లాయ్ చేయడానికి ముందు, కాంట్రాక్ట్ యొక్క సోర్స్ కోడ్‌ను — [Solidity](/developers/docs/smart-contracts/languages/) లేదా మరొక ఉన్నత-స్థాయి ప్రోగ్రామింగ్ భాషలో వ్రాసిన సూచనలను — బైట్‌కోడ్‌కు [కంపైల్ చేస్తారు](/developers/docs/smart-contracts/compiling/). EVM ఉన్నత-స్థాయి సూచనలను అర్థం చేసుకోలేదు కాబట్టి, EVMలో కాంట్రాక్ట్ తర్కాన్ని అమలు చేయడానికి సోర్స్ కోడ్‌ను బైట్‌కోడ్‌కు (అంటే, తక్కువ-స్థాయి, మెషీన్ సూచనలకు) కంపైల్ చేయడం అవసరం. + +సోర్స్ కోడ్ ధృవీకరణ అంటే ఏవైనా తేడాలను గుర్తించడానికి, ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క సోర్స్ కోడ్ మరియు కాంట్రాక్ట్ సృష్టి సమయంలో ఉపయోగించిన కంపైల్ చేయబడిన బైట్‌కోడ్‌ను పోల్చడం. స్మార్ట్ కాంట్రాక్టులను ధృవీకరించడం ముఖ్యం, ఎందుకంటే ప్రచారం చేయబడిన కాంట్రాక్ట్ కోడ్ బ్లాక్‌చైన్‌పై నడిచే దాని నుండి భిన్నంగా ఉండవచ్చు. + +స్మార్ట్ కాంట్రాక్ట్ ధృవీకరణ, మెషీన్ కోడ్ చదవాల్సిన అవసరం లేకుండా, ఒక కాంట్రాక్ట్ అది వ్రాయబడిన ఉన్నత-స్థాయి భాష ద్వారా ఏమి చేస్తుందో దర్యాప్తు చేయడానికి వీలు కల్పిస్తుంది. కంపైల్ చేయబడి, డిప్లాయ్ చేయబడిన అసలు సోర్స్ కోడ్‌తో ఫంక్షన్లు, విలువలు, మరియు సాధారణంగా వేరియబుల్ పేర్లు మరియు వ్యాఖ్యలు సమానంగా ఉంటాయి. ఇది కోడ్ చదవడం చాలా సులభం చేస్తుంది. సోర్స్ ధృవీకరణ కోడ్ డాక్యుమెంటేషన్ కోసం కూడా వీలు కల్పిస్తుంది, తద్వారా ఒక స్మార్ట్ కాంట్రాక్ట్ ఏమి చేయడానికి రూపొందించబడిందో తుది-వినియోగదారులకు తెలుస్తుంది. + +### పూర్తి ధృవీకరణ అంటే ఏమిటి? {#full-verification} + +వ్యాఖ్యలు లేదా వేరియబుల్ పేర్లు వంటి సోర్స్ కోడ్‌లోని కొన్ని భాగాలు కంపైల్ చేయబడిన బైట్‌కోడ్‌ను ప్రభావితం చేయవు. అంటే, విభిన్న వేరియబుల్ పేర్లు మరియు విభిన్న వ్యాఖ్యలతో ఉన్న రెండు సోర్స్ కోడ్‌లు రెండూ ఒకే కాంట్రాక్ట్‌ను ధృవీకరించగలవు. దానితో, ఒక హానికరమైన నటుడు సోర్స్ కోడ్ లోపల మోసపూరిత వ్యాఖ్యలను జోడించవచ్చు లేదా తప్పుదారి పట్టించే వేరియబుల్ పేర్లను ఇవ్వవచ్చు మరియు అసలు సోర్స్ కోడ్‌కు భిన్నమైన సోర్స్ కోడ్‌తో కాంట్రాక్ట్‌ను ధృవీకరించవచ్చు. + +సోర్స్ కోడ్ యొక్క ఖచ్చితత్వానికి _క్రిప్టోగ్రాఫిక్ గ్యారెంటీ_గా మరియు కంపైలేషన్ సమాచారం యొక్క _ఫింగర్‌ప్రింట్_గా పనిచేయడానికి బైట్‌కోడ్‌కు అదనపు డేటాను జోడించడం ద్వారా దీనిని నివారించడం సాధ్యమవుతుంది. అవసరమైన సమాచారం [Solidity యొక్క కాంట్రాక్ట్ మెటాడేటా](https://docs.soliditylang.org/en/v0.8.15/metadata.html)లో ఉంటుంది మరియు ఈ ఫైల్ యొక్క హాష్ ఒక కాంట్రాక్ట్ యొక్క బైట్‌కోడ్‌కు జోడించబడుతుంది. మీరు దానిని [మెటాడేటా ప్లేగ్రౌండ్](https://playground.sourcify.dev)లో చూడవచ్చు + +మెటాడేటా ఫైల్ సోర్స్ ఫైల్స్ మరియు వాటి హాష్‌లతో సహా కాంట్రాక్ట్ కంపైలేషన్ గురించి సమాచారాన్ని కలిగి ఉంటుంది. అంటే, కంపైలేషన్ సెట్టింగ్‌లలో ఏవైనా లేదా సోర్స్ ఫైల్స్‌లో ఒక బైట్ మారినా, మెటాడేటా ఫైల్ మారుతుంది. పర్యవసానంగా, బైట్‌కోడ్‌కు జోడించబడిన మెటాడేటా ఫైల్ యొక్క హాష్ కూడా మారుతుంది. అంటే, ఒక కాంట్రాక్ట్ యొక్క బైట్‌కోడ్ + జోడించబడిన మెటాడేటా హాష్ ఇచ్చిన సోర్స్ కోడ్ మరియు కంపైలేషన్ సెట్టింగ్‌లతో సరిపోలితే, ఇది అసలు కంపైలేషన్‌లో ఉపయోగించిన ఖచ్చితమైన అదే సోర్స్ కోడ్ అని మనం నిశ్చయించుకోవచ్చు, ఒక్క బైట్ కూడా భిన్నంగా ఉండదు. + +మెటాడేటా హాష్‌ను ఉపయోగించుకునే ఈ రకమైన ధృవీకరణను **"[పూర్తి ధృవీకరణ](https://docs.sourcify.dev/docs/full-vs-partial-match/)"** (దీనిని "సంపూర్ణ ధృవీకరణ" అని కూడా అంటారు) అని అంటారు. మెటాడేటా హాష్‌లు సరిపోలకపోతే లేదా ధృవీకరణలో పరిగణించబడకపోతే, అది "పాక్షిక సరిపోలిక" అవుతుంది, ఇది ప్రస్తుతం కాంట్రాక్టులను ధృవీకరించడానికి మరింత సాధారణ మార్గం. పూర్తి ధృవీకరణ లేకుండా, ధృవీకరించబడిన సోర్స్ కోడ్‌లో ప్రతిబింబించని [హానికరమైన కోడ్‌ను చొప్పించడం](https://samczsun.com/hiding-in-plain-sight/) సాధ్యమే. చాలా మంది డెవలపర్‌లకు పూర్తి ధృవీకరణ గురించి తెలియదు మరియు వారి కంపైలేషన్ యొక్క మెటాడేటా ఫైల్‌ను ఉంచుకోరు, అందువల్ల పాక్షిక ధృవీకరణ ఇప్పటివరకు కాంట్రాక్టులను ధృవీకరించడానికి వాస్తవ పద్ధతిగా ఉంది. + +## సోర్స్ కోడ్ ధృవీకరణ ఎందుకు ముఖ్యం? {#importance-of-source-code-verification} + +### ట్రస్ట్‌లెస్‌నెస్ {#trustlessness} + +స్మార్ట్ కాంట్రాక్టులు మరియు [వికేంద్రీకృత అప్లికేషన్‌ల (డాప్స్)](/developers/docs/dapps/) కోసం ట్రస్ట్‌లెస్‌నెస్ అనేది బహుశా అతిపెద్ద ఆవరణ. స్మార్ట్ కాంట్రాక్టులు "మార్పులేనివి" మరియు మార్చబడలేవు; ఒక కాంట్రాక్ట్ డిప్లాయ్‌మెంట్ సమయంలో కోడ్‌లో నిర్వచించిన వ్యాపార తర్కాన్ని మాత్రమే అమలు చేస్తుంది. అంటే, Ethereumలో డిప్లాయ్ చేసిన తర్వాత డెవలపర్‌లు మరియు సంస్థలు ఒక కాంట్రాక్ట్ కోడ్‌తో చెలగాటం ఆడలేరు. + +ఒక స్మార్ట్ కాంట్రాక్ట్ ట్రస్ట్‌లెస్‌గా ఉండటానికి, కాంట్రాక్ట్ కోడ్ స్వతంత్ర ధృవీకరణ కోసం అందుబాటులో ఉండాలి. ప్రతి స్మార్ట్ కాంట్రాక్ట్ కోసం కంపైల్ చేయబడిన బైట్‌కోడ్ బ్లాక్‌చైన్‌లో బహిరంగంగా అందుబాటులో ఉన్నప్పటికీ, తక్కువ-స్థాయి భాషను అర్థం చేసుకోవడం డెవలపర్‌లు మరియు వినియోగదారుల ఇద్దరికీ కష్టం. + +ప్రాజెక్టులు తమ కాంట్రాక్టుల సోర్స్ కోడ్‌ను ప్రచురించడం ద్వారా నమ్మకపు అంచనాలను తగ్గిస్తాయి. కానీ ఇది మరొక సమస్యకు దారితీస్తుంది: ప్రచురించిన సోర్స్ కోడ్ కాంట్రాక్ట్ బైట్‌కోడ్‌తో సరిపోలుతుందని ధృవీకరించడం కష్టం. ఈ సందర్భంలో, ట్రస్ట్‌లెస్‌నెస్ విలువ కోల్పోబడుతుంది, ఎందుకంటే వినియోగదారులు దానిని బ్లాక్‌చైన్‌లో డిప్లాయ్ చేయడానికి ముందు కాంట్రాక్ట్ యొక్క వ్యాపార తర్కాన్ని మార్చకుండా (అంటే, బైట్‌కోడ్‌ను మార్చడం ద్వారా) డెవలపర్‌లను విశ్వసించవలసి ఉంటుంది. + +సోర్స్ కోడ్ ధృవీకరణ సాధనాలు ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క సోర్స్ కోడ్ ఫైల్స్ అసెంబ్లీ కోడ్‌తో సరిపోలుతాయని హామీలను అందిస్తాయి. ఫలితం ఒక ట్రస్ట్‌లెస్ పర్యావరణ వ్యవస్థ, ఇక్కడ వినియోగదారులు మూడవ పక్షాలను గుడ్డిగా నమ్మకుండా, బదులుగా ఒక కాంట్రాక్ట్‌లో నిధులను జమ చేయడానికి ముందు కోడ్‌ను ధృవీకరిస్తారు. + +### వినియోగదారు భద్రత {#user-safety} + +స్మార్ట్ కాంట్రాక్టులతో, సాధారణంగా చాలా డబ్బు పణంగా ఉంటుంది. దీనికి ఉన్నత భద్రతా హామీలు మరియు దానిని ఉపయోగించే ముందు ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క తర్కాన్ని ధృవీకరించడం అవసరం. సమస్య ఏమిటంటే, నీతిమాలిన డెవలపర్‌లు ఒక స్మార్ట్ కాంట్రాక్ట్‌లో హానికరమైన కోడ్‌ను చొప్పించడం ద్వారా వినియోగదారులను మోసగించగలరు. ధృవీకరణ లేకుండా, హానికరమైన స్మార్ట్ కాంట్రాక్టులు [వెనుక ద్వారాలు](https://www.trustnodes.com/2018/11/10/concerns-rise-over-backdoored-smart-contracts), వివాదాస్పద యాక్సెస్ కంట్రోల్ మెకానిజమ్స్, దోపిడీ చేయగల దుర్బలత్వాలు, మరియు వినియోగదారు భద్రతకు హాని కలిగించే ఇతర విషయాలను కలిగి ఉండవచ్చు, ఇవి గుర్తించబడకుండా పోతాయి. + +ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క సోర్స్ కోడ్ ఫైళ్లను ప్రచురించడం ఆడిటర్ల వంటి ఆసక్తి ఉన్నవారికి సంభావ్య దాడి వెక్టర్ల కోసం కాంట్రాక్ట్‌ను అంచనా వేయడాన్ని సులభతరం చేస్తుంది. బహుళ పక్షాలు స్వతంత్రంగా ఒక స్మార్ట్ కాంట్రాక్ట్‌ను ధృవీకరించడంతో, వినియోగదారులకు దాని భద్రతపై బలమైన హామీలు ఉంటాయి. + +## Ethereum స్మార్ట్ కాంట్రాక్టుల కోసం సోర్స్ కోడ్‌ను ఎలా ధృవీకరించాలి {#source-code-verification-for-ethereum-smart-contracts} + +[Ethereumలో ఒక స్మార్ట్ కాంట్రాక్ట్‌ను డిప్లాయ్ చేయడానికి](/developers/docs/smart-contracts/deploying/) డేటా పేలోడ్ (కంపైల్ చేయబడిన బైట్‌కోడ్)తో ఒక లావాదేవీని ఒక ప్రత్యేక చిరునామాకు పంపడం అవసరం. డేటా పేలోడ్ సోర్స్ కోడ్‌ను కంపైల్ చేయడం ద్వారా ఉత్పత్తి చేయబడుతుంది, ప్లస్ లావాదేవీలోని డేటా పేలోడ్‌కు జోడించబడిన కాంట్రాక్ట్ ఇన్‌స్టాన్స్ యొక్క [కన్‌స్ట్రక్టర్ ఆర్గ్యుమెంట్స్](https://docs.soliditylang.org/en/v0.8.14/contracts.html#constructor). కంపైలేషన్ అనేది నిర్ణయాత్మకమైనది, అంటే ఒకే సోర్స్ ఫైల్స్, మరియు కంపైలేషన్ సెట్టింగ్‌లు (ఉదా., కంపైలర్ వెర్షన్, ఆప్టిమైజర్) ఉపయోగించినట్లయితే అది ఎల్లప్పుడూ ఒకే అవుట్‌పుట్‌ను (అంటే, కాంట్రాక్ట్ బైట్‌కోడ్) ఉత్పత్తి చేస్తుంది. + +![స్మార్ట్ కాంట్రాక్ట్ సోర్స్ కోడ్ ధృవీకరణను చూపే రేఖాచిత్రం](./source-code-verification.png) + +ఒక స్మార్ట్ కాంట్రాక్ట్‌ను ధృవీకరించడం ప్రాథమికంగా కింది దశలను కలిగి ఉంటుంది: + +1. సోర్స్ ఫైల్స్ మరియు కంపైలేషన్ సెట్టింగ్‌లను ఒక కంపైలర్‌కు ఇన్‌పుట్ చేయండి. + +2. కంపైలర్ కాంట్రాక్ట్ యొక్క బైట్‌కోడ్‌ను అవుట్‌పుట్ చేస్తుంది + +3. ఇచ్చిన చిరునామాలో డిప్లాయ్ చేయబడిన కాంట్రాక్ట్ యొక్క బైట్‌కోడ్‌ను పొందండి + +4. డిప్లాయ్ చేయబడిన బైట్‌కోడ్‌ను తిరిగి కంపైల్ చేయబడిన బైట్‌కోడ్‌తో పోల్చండి. కోడ్‌లు సరిపోలితే, ఇచ్చిన సోర్స్ కోడ్ మరియు కంపైలేషన్ సెట్టింగ్‌లతో కాంట్రాక్ట్ ధృవీకరించబడుతుంది. + +5. అదనంగా, బైట్‌కోడ్ చివరిలో ఉన్న మెటాడేటా హాష్‌లు సరిపోలితే, అది పూర్తి సరిపోలిక అవుతుంది. + +ఇది ధృవీకరణ యొక్క సరళీకృత వివరణ అని గమనించండి మరియు దీనితో పని చేయని అనేక మినహాయింపులు ఉన్నాయి, ఉదాహరణకు [మార్పులేని వేరియబుల్స్](https://docs.sourcify.dev/docs/immutables/) కలిగి ఉండటం వంటివి. + +## సోర్స్ కోడ్ ధృవీకరణ సాధనాలు {#source-code-verification-tools} + +కాంట్రాక్టులను ధృవీకరించే సాంప్రదాయ ప్రక్రియ సంక్లిష్టంగా ఉంటుంది. అందుకే Ethereumలో డిప్లాయ్ చేయబడిన స్మార్ట్ కాంట్రాక్టుల సోర్స్ కోడ్‌ను ధృవీకరించడానికి మనకు సాధనాలు ఉన్నాయి. ఈ సాధనాలు సోర్స్ కోడ్ ధృవీకరణ యొక్క పెద్ద భాగాలను ఆటోమేట్ చేస్తాయి మరియు వినియోగదారుల ప్రయోజనాల కోసం ధృవీకరించబడిన కాంట్రాక్టులను కూడా క్యూరేట్ చేస్తాయి. + +### Etherscan {#etherscan} + +ఎక్కువగా [Ethereum బ్లాక్‌చైన్ ఎక్స్‌ప్లోరర్](/developers/docs/data-and-analytics/block-explorers/)గా తెలిసినప్పటికీ, Etherscan స్మార్ట్ కాంట్రాక్ట్ డెవలపర్‌లు మరియు వినియోగదారుల కోసం ఒక [సోర్స్ కోడ్ ధృవీకరణ సేవను](https://etherscan.io/verifyContract) కూడా అందిస్తుంది. + +Etherscan అసలు డేటా పేలోడ్ (సోర్స్ కోడ్, లైబ్రరీ చిరునామా, కంపైలర్ సెట్టింగ్‌లు, కాంట్రాక్ట్ చిరునామా, మొదలైనవి) నుండి కాంట్రాక్ట్ బైట్‌కోడ్‌ను తిరిగి కంపైల్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. తిరిగి కంపైల్ చేయబడిన బైట్‌కోడ్ ఆన్‌చైన్ కాంట్రాక్ట్ యొక్క బైట్‌కోడ్ (మరియు కన్‌స్ట్రక్టర్ పారామీటర్లు)తో అనుబంధించబడితే, అప్పుడు [కాంట్రాక్ట్ ధృవీకరించబడుతుంది](https://info.etherscan.com/types-of-contract-verification/). + +ధృవీకరించబడిన తర్వాత, మీ కాంట్రాక్ట్ యొక్క సోర్స్ కోడ్ "ధృవీకరించబడింది" అనే లేబుల్‌ను పొందుతుంది మరియు ఇతరులు ఆడిట్ చేయడానికి Etherscanలో ప్రచురించబడుతుంది. ఇది [ధృవీకరించబడిన కాంట్రాక్టులు](https://etherscan.io/contractsVerified/) విభాగానికి కూడా జోడించబడుతుంది—ఇది ధృవీకరించబడిన సోర్స్ కోడ్‌లతో ఉన్న స్మార్ట్ కాంట్రాక్టుల రిపోజిటరీ. + +కాంట్రాక్టులను ధృవీకరించడానికి Etherscan అత్యంత ఎక్కువగా ఉపయోగించే సాధనం. అయితే, Etherscan యొక్క కాంట్రాక్ట్ ధృవీకరణలో ఒక లోపం ఉంది: ఇది ఆన్‌చైన్ బైట్‌కోడ్ మరియు తిరిగి కంపైల్ చేయబడిన బైట్‌కోడ్ యొక్క **మెటాడేటా హాష్‌**ను పోల్చడంలో విఫలమవుతుంది. అందువల్ల Etherscanలోని సరిపోలికలు పాక్షిక సరిపోలికలు. + +[Etherscanలో కాంట్రాక్టులను ధృవీకరించడంపై మరింత](https://medium.com/etherscan-blog/verifying-contracts-on-etherscan-f995ab772327). + +### Blockscout {#blockscout} + +[Blockscout](https://blockscout.com/) అనేది ఒక ఓపెన్-సోర్స్ బ్లాక్‌చైన్ ఎక్స్‌ప్లోరర్, ఇది స్మార్ట్ కాంట్రాక్ట్ డెవలపర్‌లు మరియు వినియోగదారుల కోసం [కాంట్రాక్ట్ ధృవీకరణ సేవను](https://eth.blockscout.com/contract-verification) కూడా అందిస్తుంది. ఒక ఓపెన్-సోర్స్ ప్రత్యామ్నాయంగా, Blockscout ధృవీకరణ ఎలా నిర్వహించబడుతుందో పారదర్శకతను అందిస్తుంది మరియు ధృవీకరణ ప్రక్రియను మెరుగుపరచడానికి కమ్యూనిటీ సహకారాలను అనుమతిస్తుంది. + +ఇతర ధృవీకరణ సేవల మాదిరిగానే, Blockscout బైట్‌కోడ్‌ను తిరిగి కంపైల్ చేయడం ద్వారా మరియు దానిని డిప్లాయ్ చేయబడిన కాంట్రాక్ట్‌తో పోల్చడం ద్వారా మీ కాంట్రాక్ట్ సోర్స్ కోడ్‌ను ధృవీకరించడానికి మిమ్మల్ని అనుమతిస్తుంది. ధృవీకరించబడిన తర్వాత, మీ కాంట్రాక్ట్ ధృవీకరణ స్థితిని పొందుతుంది మరియు సోర్స్ కోడ్ ఆడిటింగ్ మరియు పరస్పర చర్య కోసం బహిరంగంగా అందుబాటులోకి వస్తుంది. సులభమైన బ్రౌజింగ్ మరియు కనుగొనడం కోసం ధృవీకరించబడిన కాంట్రాక్టులు Blockscout యొక్క [ధృవీకరించబడిన కాంట్రాక్టుల రిపోజిటరీ](https://eth.blockscout.com/verified-contracts)లో కూడా జాబితా చేయబడ్డాయి. + +### Sourcify {#sourcify} + +[Sourcify](https://sourcify.dev/#/verifier) అనేది కాంట్రాక్టులను ధృవీకరించడానికి మరొక సాధనం, ఇది ఓపెన్-సోర్స్ మరియు వికేంద్రీకృతమైనది. ఇది బ్లాక్ ఎక్స్‌ప్లోరర్ కాదు మరియు [వివిధ EVM ఆధారిత నెట్‌వర్క్‌ల](https://docs.sourcify.dev/docs/chains)పై మాత్రమే కాంట్రాక్టులను ధృవీకరిస్తుంది. ఇది ఇతర సాధనాలు దానిపై నిర్మించడానికి ఒక పబ్లిక్ ఇన్‌ఫ్రాస్ట్రక్చర్‌గా పనిచేస్తుంది మరియు మెటాడేటా ఫైల్‌లో కనిపించే [ABI](/developers/docs/smart-contracts/compiling/#web-applications) మరియు [NatSpec](https://docs.soliditylang.org/en/v0.8.15/natspec-format.html) వ్యాఖ్యలను ఉపయోగించి మరింత మానవ-స్నేహపూర్వక కాంట్రాక్ట్ పరస్పర చర్యలను ప్రారంభించాలని లక్ష్యంగా పెట్టుకుంది. + +Etherscan వలె కాకుండా, Sourcify మెటాడేటా హాష్‌తో పూర్తి సరిపోలికలకు మద్దతు ఇస్తుంది. ధృవీకరించబడిన కాంట్రాక్టులు దాని [పబ్లిక్ రిపోజిటరీ](https://docs.sourcify.dev/docs/repository/)లో HTTP మరియు [IPFS](https://docs.ipfs.io/concepts/what-is-ipfs/#what-is-ipfs)పై అందించబడతాయి, ఇది ఒక వికేంద్రీకృత, [కంటెంట్-అడ్రెస్డ్](https://docs.storacha.network/concepts/content-addressing/) నిల్వ. జోడించబడిన మెటాడేటా హాష్ ఒక IPFS హాష్ కాబట్టి ఇది IPFS ద్వారా ఒక కాంట్రాక్ట్ యొక్క మెటాడేటా ఫైల్‌ను పొందటానికి అనుమతిస్తుంది. + +అదనంగా, ఈ ఫైల్స్ యొక్క IPFS హాష్‌లు కూడా మెటాడేటాలో కనుగొనబడినందున, IPFS ద్వారా సోర్స్ కోడ్ ఫైల్స్‌ను కూడా తిరిగి పొందవచ్చు. దాని API లేదా [UI](https://sourcify.dev/#/verifier) ద్వారా మెటాడేటా ఫైల్ మరియు సోర్స్ ఫైల్స్‌ను అందించడం ద్వారా లేదా ప్లగిన్‌లను ఉపయోగించడం ద్వారా ఒక కాంట్రాక్ట్‌ను ధృవీకరించవచ్చు. Sourcify పర్యవేక్షణ సాధనం కొత్త బ్లాక్‌లపై కాంట్రాక్ట్ సృష్టిలను కూడా వింటుంది మరియు వాటి మెటాడేటా మరియు సోర్స్ ఫైల్స్ IPFSలో ప్రచురించబడితే కాంట్రాక్టులను ధృవీకరించడానికి ప్రయత్నిస్తుంది. + +[Sourcifyలో కాంట్రాక్టులను ధృవీకరించడంపై మరింత](https://soliditylang.org/blog/2020/06/25/sourcify-faq/). + +### Tenderly {#tenderly} + +[Tenderly ప్లాట్‌ఫారమ్](https://tenderly.co/) Web3 డెవలపర్‌లను స్మార్ట్ కాంట్రాక్టులను నిర్మించడానికి, పరీక్షించడానికి, పర్యవేక్షించడానికి మరియు ఆపరేట్ చేయడానికి అనుమతిస్తుంది. డీబగ్గింగ్ సాధనాలను పరిశీలన మరియు ఇన్‌ఫ్రాస్ట్రక్చర్ బిల్డింగ్ బ్లాక్‌లతో కలపడం ద్వారా, Tenderly డెవలపర్‌లు స్మార్ట్ కాంట్రాక్ట్ అభివృద్ధిని వేగవంతం చేయడానికి సహాయపడుతుంది. Tenderly ఫీచర్‌లను పూర్తిగా ప్రారంభించడానికి, డెవలపర్‌లు అనేక పద్ధతులను ఉపయోగించి [సోర్స్ కోడ్ ధృవీకరణను నిర్వహించాలి](https://docs.tenderly.co/monitoring/contract-verification). + +ఒక కాంట్రాక్ట్‌ను ప్రైవేట్‌గా లేదా పబ్లిక్‌గా ధృవీకరించడం సాధ్యమే. ప్రైవేట్‌గా ధృవీకరించబడితే, స్మార్ట్ కాంట్రాక్ట్ మీకు మాత్రమే (మరియు మీ ప్రాజెక్ట్‌లోని ఇతర సభ్యులకు) కనిపిస్తుంది. ఒక కాంట్రాక్ట్‌ను పబ్లిక్‌గా ధృవీకరించడం వల్ల అది Tenderly ప్లాట్‌ఫారమ్‌ను ఉపయోగించే ప్రతిఒక్కరికీ కనిపిస్తుంది. + +మీరు [డాష్‌బోర్డ్](https://docs.tenderly.co/contract-verification), [Tenderly Hardhat ప్లగిన్](https://docs.tenderly.co/contract-verification/hardhat), లేదా [CLI](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-contracts-using-cli) ఉపయోగించి మీ కాంట్రాక్టులను ధృవీకరించవచ్చు. + +డాష్‌బోర్డ్ ద్వారా కాంట్రాక్టులను ధృవీకరించేటప్పుడు, మీరు Solidity కంపైలర్ ద్వారా ఉత్పత్తి చేయబడిన సోర్స్ ఫైల్ లేదా మెటాడేటా ఫైల్, చిరునామా/నెట్‌వర్క్, మరియు కంపైలర్ సెట్టింగ్‌లను దిగుమతి చేసుకోవాలి. + +Tenderly Hardhat ప్లగిన్‌ను ఉపయోగించడం తక్కువ కృషితో ధృవీకరణ ప్రక్రియపై మరింత నియంత్రణను అనుమతిస్తుంది, ఆటోమేటిక్ (నో-కోడ్) మరియు మాన్యువల్ (కోడ్-ఆధారిత) ధృవీకరణ మధ్య ఎంచుకోవడానికి మిమ్మల్ని అనుమతిస్తుంది. + +## మరింత సమాచారం {#further-reading} + +- [కాంట్రాక్ట్ సోర్స్ కోడ్‌ను ధృవీకరించడం](https://programtheblockchain.com/posts/2018/01/16/verifying-contract-source-code/) diff --git a/public/content/translations/te/developers/docs/standards/index.md b/public/content/translations/te/developers/docs/standards/index.md new file mode 100644 index 00000000000..b7978acede7 --- /dev/null +++ b/public/content/translations/te/developers/docs/standards/index.md @@ -0,0 +1,59 @@ +--- +title: "ఇతీరియము అభివృద్ధి ప్రమాణాలు" +description: "EIPలు, ERC-20 మరియు ERC-721 వంటి టోకెన్ ప్రమాణాలు మరియు అభివృద్ధి సంప్రదాయాలతో సహా ఇతీరియము ప్రమాణాల గురించి తెలుసుకోండి." +lang: te +incomplete: true +--- + +## ప్రమాణాల అవలోకనం {#standards-overview} + +ఇతీరియము కమ్యూనిటీ అనేక ప్రమాణాలను స్వీకరించింది, ఇది ప్రాజెక్టులను ([ఇతీరియము క్లయింట్లు](/developers/docs/nodes-and-clients/) మరియు వాలెట్లు వంటివి) అమలుల అంతటా పరస్పరం పనిచేసేలా చేయడంలో సహాయపడుతుంది మరియు స్మార్ట్ కాంట్రాక్టులు మరియు డాప్స్ మిళితమై ఉండేలా నిర్ధారిస్తుంది. + +సాధారణంగా ప్రమాణాలు [ఇతీరియము ఇంప్రూవ్‌మెంట్ ప్రపోజల్స్](/eips/) (EIPలు)గా ప్రవేశపెట్టబడతాయి, వీటిని కమ్యూనిటీ సభ్యులు [ప్రామాణిక ప్రక్రియ](https://eips.ethereum.org/EIPS/eip-1) ద్వారా చర్చిస్తారు. + +- [EIPలకు పరిచయం](/eips/) +- [EIPల జాబితా](https://eips.ethereum.org/) +- [EIP GitHub రెపో](https://github.com/ethereum/EIPs) +- [EIP చర్చా బోర్డు](https://ethereum-magicians.org/c/eips) +- [ఇతీరియము పాలనకు పరిచయం](/governance/) +- [ఇతీరియము పాలన అవలోకనం](https://web.archive.org/web/20201107234050/https://blog.bmannconsulting.com/ethereum-governance/) _మార్చి 31, 2019 - బోరిస్ మాన్_ +- [ఇతీరియము ప్రోటోకాల్ అభివృద్ధి పాలన మరియు నెట్‌వర్క్ అప్‌గ్రేడ్ సమన్వయం](https://hudsonjameson.com/posts/2020-03-23-ethereum-protocol-development-governance-and-network-upgrade-coordination/) _మార్చి 23, 2020 - హడ్సన్ జేమ్సన్_ +- [అన్ని ఇతీరియము కోర్ డెవ్ సమావేశాల ప్లేలిస్ట్](https://www.youtube.com/@EthereumProtocol) _(యూట్యూబ్ ప్లేలిస్ట్)_ + +## ప్రమాణాల రకాలు {#types-of-standards} + +EIPలలో 3 రకాలు ఉన్నాయి: + +- ప్రమాణాల ట్రాక్: చాలా లేదా అన్ని ఇతీరియము అమలులను ప్రభావితం చేసే ఏదైనా మార్పును వివరిస్తుంది +- [మెటా ట్రాక్](https://eips.ethereum.org/meta): ఇతీరియము చుట్టూ ఉన్న ప్రక్రియను వివరిస్తుంది లేదా ఒక ప్రక్రియకు మార్పును ప్రతిపాదిస్తుంది +- [సమాచార ట్రాక్](https://eips.ethereum.org/informational): ఇతీరియము రూపకల్పన సమస్యను వివరిస్తుంది లేదా ఇతీరియము కమ్యూనిటీకి సాధారణ మార్గదర్శకాలు లేదా సమాచారాన్ని అందిస్తుంది + +ఇంకా, ప్రామాణిక ట్రాక్ 4 వర్గాలుగా విభజించబడింది: + +- [కోర్](https://eips.ethereum.org/core): ఏకాభిప్రాయం ఫోర్క్ అవసరమయ్యే మెరుగుదలలు +- [నెట్వర్కింగ్](https://eips.ethereum.org/networking): devp2p మరియు లైట్ ఇతీరియము సబ్‌ప్రోటోకాల్ చుట్టూ మెరుగుదలలు, అలాగే విష్పర్ మరియు స్వార్మ్ యొక్క నెట్‌వర్క్ ప్రోటోకాల్ స్పెసిఫికేషన్‌లకు ప్రతిపాదిత మెరుగుదలలు. +- [ఇంటర్‌ఫేస్](https://eips.ethereum.org/interface): క్లయింట్ API/RPC స్పెసిఫికేషన్‌లు మరియు ప్రమాణాల చుట్టూ మెరుగుదలలు, మరియు మెథడ్ పేర్లు మరియు కాంట్రాక్ట్ ABIల వంటి కొన్ని భాష-స్థాయి ప్రమాణాలు. +- [ERC](https://eips.ethereum.org/erc): అప్లికేషన్-స్థాయి ప్రమాణాలు మరియు సంప్రదాయాలు + +ఈ వివిధ రకాలు మరియు వర్గాలపై మరింత వివరణాత్మక సమాచారాన్ని [EIP-1](https://eips.ethereum.org/EIPS/eip-1#eip-types) లో కనుగొనవచ్చు + +### టోకెన్ ప్రమాణాలు {#token-standards} + +- [ERC-20](/developers/docs/standards/tokens/erc-20/) - ఓటింగ్ టోకెన్‌లు, స్టాకింగ్ టోకెన్‌లు లేదా వర్చువల్ కరెన్సీల వంటి ఫంజిబుల్ (పరస్పరం మార్చుకోగల) టోకెన్‌ల కోసం ఒక ప్రామాణిక ఇంటర్‌ఫేస్. + - [ERC-223](/developers/docs/standards/tokens/erc-223/) - ఒక ఫంగిబుల్ టోకెన్ ప్రమాణం, ఇది టోకెన్‌లను ఈథర్ మాదిరిగానే ప్రవర్తించేలా చేస్తుంది మరియు గ్రహీతల వైపు టోకెన్ బదిలీల నిర్వహణకు మద్దతు ఇస్తుంది. + - [ERC-1363](/developers/docs/standards/tokens/erc-1363/) - ERC-20 టోకెన్‌ల కోసం ఒక విస్తరణ ఇంటర్‌ఫేస్, ఇది ఒకే లావాదేవీలో స్వీకర్త కాంట్రాక్టులపై క్యాల్‌బ్యాక్‌ను అమలు చేయడానికి మద్దతు ఇస్తుంది. +- [ERC-721](/developers/docs/standards/tokens/erc-721/) - కళాఖండం లేదా పాట కోసం ఒక దస్తావేజు వంటి నాన్-ఫంజిబుల్ టోకెన్‌ల కోసం ఒక ప్రామాణిక ఇంటర్‌ఫేస్. + - [ERC-2309](https://eips.ethereum.org/EIPS/eip-2309) - వరుస టోకెన్ ఐడెంటిఫైయర్‌లను ఉపయోగించి ఒకటి లేదా అనేక నాన్-ఫంజిబుల్ టోకెన్‌లను సృష్టించేటప్పుడు/బదిలీ చేసేటప్పుడు వెలువడే ప్రామాణిక ఈవెంట్. + - [ERC-4400](https://eips.ethereum.org/EIPS/eip-4400) - EIP-721 వినియోగదారు పాత్ర కోసం ఇంటర్ఫేస్ పొడిగింపు. + - [ERC-4907](https://eips.ethereum.org/EIPS/eip-4907) - ERC-721 టోకెన్‌లకు పరిమిత అనుమతులతో సమయ-పరిమిత పాత్రను జోడించండి. +- [ERC-777](/developers/docs/standards/tokens/erc-777/) - **(సిఫార్సు చేయబడలేదు)** ERC-20పై మెరుగుపరుస్తున్న టోకెన్ ప్రమాణం. +- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - ఫంజిబుల్ మరియు నాన్-ఫంజిబుల్ ఆస్తులను కలిగి ఉండే టోకెన్ ప్రమాణం. +- [ERC-4626](/developers/docs/standards/tokens/erc-4626/) - దిగుబడినిచ్చే వాల్ట్‌ల యొక్క సాంకేతిక పారామితులను ఆప్టిమైజ్ చేయడానికి మరియు ఏకీకృతం చేయడానికి రూపొందించిన టోకెనైజ్డ్ వాల్ట్ ప్రమాణం. + +[టోకెన్ ప్రమాణాల](/developers/docs/standards/tokens/) గురించి మరింత తెలుసుకోండి. + +## మరింత సమాచారం {#further-reading} + +- [ఇతీరియము ఇంప్రూవ్‌మెంట్ ప్రపోజల్స్ (EIPలు)](/eips/) + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ diff --git a/public/content/translations/te/developers/docs/standards/tokens/erc-1155/index.md b/public/content/translations/te/developers/docs/standards/tokens/erc-1155/index.md new file mode 100644 index 00000000000..f4b255fb308 --- /dev/null +++ b/public/content/translations/te/developers/docs/standards/tokens/erc-1155/index.md @@ -0,0 +1,146 @@ +--- +title: "ERC-1155 బహుళ-టోకెన్ ప్రమాణం" +description: "ERC-1155 గురించి తెలుసుకోండి, ఇది ఒకే కాంట్రాక్టులో ఫంగిబుల్ మరియు నాన్-ఫంగిబుల్ టోకెన్‌లను కలిపే బహుళ-టోకెన్ ప్రమాణం." +lang: te +--- + +## పరిచయం {#introduction} + +బహుళ టోకెన్ రకాలను నిర్వహించే కాంట్రాక్టుల కోసం ఒక ప్రామాణిక ఇంటర్ఫేస్. ఒకే డిప్లాయ్ చేసిన కాంట్రాక్టులో ఫంగిబుల్ టోకెన్లు, నాన్-ఫంగిబుల్ టోకెన్లు లేదా ఇతర కాన్ఫిగరేషన్ల (ఉదా., సెమీ-ఫంగిబుల్ టోకెన్లు) కలయిక ఏదైనా ఉండవచ్చు. + +**బహుళ-టోకెన్ ప్రమాణం అంటే ఏమిటి?** + +ఈ ఆలోచన సరళమైనది మరియు ఫంగిబుల్ మరియు నాన్-ఫంగిబుల్ టోకెన్ రకాల యొక్క ఏ సంఖ్యనైనా ప్రాతినిధ్యం వహించగల మరియు నియంత్రించగల స్మార్ట్ కాంట్రాక్ట్ ఇంటర్‌ఫేస్‌ను రూపొందించడానికి ప్రయత్నిస్తుంది. ఈ విధంగా, ERC-1155 టోకెన్ [ERC-20](/developers/docs/standards/tokens/erc-20/) మరియు [ERC-721](/developers/docs/standards/tokens/erc-721/) టోకెన్ వలె అదే విధులను చేయగలదు మరియు ఒకే సమయంలో రెండింటినీ కూడా చేయగలదు. ఇది ERC-20 మరియు ERC-721 ప్రమాణాల రెండింటి కార్యాచరణను మెరుగుపరుస్తుంది, దానిని మరింత సమర్థవంతంగా చేస్తుంది మరియు స్పష్టమైన ఇంప్లిమెంటేషన్ లోపాలను సరిచేస్తుంది. + +ERC-1155 టోకెన్ [EIP-1155](https://eips.ethereum.org/EIPS/eip-1155)లో పూర్తిగా వివరించబడింది. + +## అవసరాలు {#prerequisites} + +ఈ పేజీని మరింత బాగా అర్థం చేసుకోవడానికి, మీరు ముందుగా [టోకెన్ ప్రమాణాలు](/developers/docs/standards/tokens/), [ERC-20](/developers/docs/standards/tokens/erc-20/), మరియు [ERC-721](/developers/docs/standards/tokens/erc-721/) గురించి చదవాలని మేము సిఫార్సు చేస్తున్నాము. + +## ERC-1155 ఫంక్షన్లు మరియు ఫీచర్లు: {#body} + +- [బ్యాచ్ బదిలీ](#batch_transfers): ఒకే కాల్‌లో బహుళ ఆస్తులను బదిలీ చేయండి. +- [బ్యాచ్ బ్యాలెన్స్](#batch_balance): ఒకే కాల్‌లో బహుళ ఆస్తుల బ్యాలెన్స్‌లను పొందండి. +- [బ్యాచ్ ఆమోదం](#batch_approval): ఒక చిరునామాకు అన్ని టోకెన్‌లను ఆమోదించండి. +- [హుక్స్](#receive_hook): టోకెన్లను స్వీకరించే హుక్. +- [NFT మద్దతు](#nft_support): సరఫరా 1 మాత్రమే అయితే, దాన్ని NFTగా పరిగణించండి. +- [సురక్షిత బదిలీ నియమాలు](#safe_transfer_rule): సురక్షిత బదిలీ కోసం నియమాల సమితి. + +### బ్యాచ్ బదిలీలు {#batch-transfers} + +బ్యాచ్ బదిలీ సాధారణ ERC-20 బదిలీల మాదిరిగానే పనిచేస్తుంది. సాధారణ ERC-20 `transferFrom` ఫంక్షన్‌ను చూద్దాం: + +```solidity +// ERC-20 +function transferFrom(address from, address to, uint256 value) external returns (bool); + +// ERC-1155 +function safeBatchTransferFrom( + address _from, + address _to, + uint256[] calldata _ids, + uint256[] calldata _values, + bytes calldata _data +) external; +``` + +ERC-1155లో ఉన్న ఏకైక తేడా ఏమిటంటే, మేము విలువలను శ్రేణిగా పంపుతాము మరియు మేము ఐడిల శ్రేణిని కూడా పంపుతాము. ఉదాహరణకు, `ids=[3, 6, 13]` మరియు `values=[100, 200, 5]` అని ఇచ్చినప్పుడు, ఫలితంగా వచ్చే బదిలీలు ఇలా ఉంటాయి + +1. `_from` నుండి `_to`కు ఐడి 3 తో 100 టోకెన్ల బదిలీ. +2. `_from` నుండి `_to`కు ఐడి 6 తో 200 టోకెన్ల బదిలీ. +3. `_from` నుండి `_to`కు ఐడి 13 తో 5 టోకెన్ల బదిలీ. + +ERC-1155లో మనకు `transferFrom` మాత్రమే ఉంది, `transfer` లేదు. దీనిని ఒక సాధారణ `transfer` లాగా ఉపయోగించడానికి, కేవలం ఫంక్షన్‌ను పిలుస్తున్న చిరునామాకు from చిరునామాను సెట్ చేయండి. + +### బ్యాచ్ బ్యాలెన్స్ {#batch-balance} + +సంబంధిత ERC-20 `balanceOf` కాల్ కూడా బ్యాచ్ మద్దతుతో దాని భాగస్వామి ఫంక్షన్‌ను కలిగి ఉంది. జ్ఞాపికగా, ఇది ERC-20 వెర్షన్: + +```solidity +// ERC-20 +function balanceOf(address owner) external view returns (uint256); + +// ERC-1155 +function balanceOfBatch( + address[] calldata _owners, + uint256[] calldata _ids +) external view returns (uint256[] memory); +``` + +బ్యాలెన్స్ కాల్ కోసం ఇంకా సరళంగా, మనం ఒకే కాల్‌లో బహుళ బ్యాలెన్స్‌లను పొందవచ్చు. మేము యజమానుల శ్రేణిని, దాని తర్వాత టోకెన్ ఐడిల శ్రేణిని పంపుతాము. + +ఉదాహరణకు `_ids=[3, 6, 13]` మరియు `_owners=[0xbeef..., 0x1337..., 0x1111...]` అని ఇచ్చినప్పుడు, తిరిగి వచ్చే విలువ ఇలా ఉంటుంది + +```solidity +[ + balanceOf(0xbeef...), + balanceOf(0x1337...), + balanceOf(0x1111...) +] +``` + +### బ్యాచ్ ఆమోదం {#batch-approval} + +```solidity +// ERC-1155 +function setApprovalForAll( + address _operator, + bool _approved +) external; + +function isApprovedForAll( + address _owner, + address _operator +) external view returns (bool); +``` + +ఆమోదాలు ERC-20 కంటే కొద్దిగా భిన్నంగా ఉంటాయి. నిర్దిష్ట మొత్తాలను ఆమోదించడానికి బదులుగా, మీరు `setApprovalForAll` ద్వారా ఒక ఆపరేటర్‌ను ఆమోదించబడిన లేదా ఆమోదించబడనిదిగా సెట్ చేస్తారు. + +ప్రస్తుత స్థితిని `isApprovedForAll` ద్వారా చదవవచ్చు. మీరు చూడగలిగినట్లుగా, ఇది అన్నీ-లేదా-ఏమీ-లేని ఆపరేషన్. ఎన్ని టోకెన్‌లను ఆమోదించాలో లేదా ఏ టోకెన్ క్లాస్‌ను ఆమోదించాలో కూడా మీరు నిర్వచించలేరు. + +ఇది ఉద్దేశపూర్వకంగా సరళతను దృష్టిలో ఉంచుకుని రూపొందించబడింది. మీరు ఒక చిరునామా కోసం అన్నింటినీ మాత్రమే ఆమోదించగలరు. + +### రిసీవ్ హుక్ {#receive-hook} + +```solidity +function onERC1155BatchReceived( + address _operator, + address _from, + uint256[] calldata _ids, + uint256[] calldata _values, + bytes calldata _data +) external returns(bytes4); +``` + +[EIP-165](https://eips.ethereum.org/EIPS/eip-165) మద్దతును బట్టి, ERC-1155 స్మార్ట్ కాంట్రాక్ట్‌ల కోసం మాత్రమే రిసీవ్ హుక్స్‌కు మద్దతు ఇస్తుంది. హుక్ ఫంక్షన్ తప్పనిసరిగా ఒక మ్యాజిక్ ముందే నిర్వచించిన bytes4 విలువను తిరిగి ఇవ్వాలి, అది ఇలా ఇవ్వబడింది: + +```solidity +bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)")) +``` + +స్వీకరించే కాంట్రాక్టు ఈ విలువను తిరిగి ఇచ్చినప్పుడు, కాంట్రాక్టు బదిలీని అంగీకరిస్తుందని మరియు ERC-1155 టోకెన్లను ఎలా నిర్వహించాలో దానికి తెలుసు అని భావించబడుతుంది. అద్భుతం, ఇకపై కాంట్రాక్ట్‌లో టోకెన్లు చిక్కుకోవు! + +### NFT మద్దతు {#nft-support} + +సరఫరా కేవలం ఒకటి మాత్రమే అయినప్పుడు, ఆ టోకెన్ ముఖ్యంగా ఒక నాన్-ఫంగిబుల్ టోకెన్ (NFT). మరియు ERC-721కి ప్రమాణంగా ఉన్నట్లుగా, మీరు ఒక మెటాడేటా URLని నిర్వచించవచ్చు. URLను ఖాతాదారులు చదవవచ్చు మరియు సవరించవచ్చు, [ఇక్కడ](https://eips.ethereum.org/EIPS/eip-1155#metadata) చూడండి. + +### సురక్షిత బదిలీ నియమం {#safe-transfer-rule} + +మేము మునుపటి వివరణలలో ఇప్పటికే కొన్ని సురక్షిత బదిలీ నియమాల గురించి ప్రస్తావించాము. అయితే, నియమాలలో అత్యంత ముఖ్యమైన వాటిని చూద్దాం: + +1. `_from` చిరునామా కోసం టోకెన్లను ఖర్చు చేయడానికి కాలర్ ఆమోదం పొంది ఉండాలి లేదా కాలర్ `_from`తో సమానంగా ఉండాలి. +2. బదిలీ కాల్ తప్పనిసరిగా రివర్ట్ అవ్వాలి, ఒకవేళ: + 1. `_to` చిరునామా 0 అయితే. + 2. `_ids` యొక్క పొడవు `_values` యొక్క పొడవుకు సమానంగా లేకపోతే. + 3. `_ids`లోని టోకెన్(ల) కోసం హోల్డర్(ల) యొక్క ఏదైనా బ్యాలెన్స్(లు), గ్రహీతకు పంపబడిన `_values`లోని సంబంధిత మొత్తం(ల) కంటే తక్కువగా ఉంటే. + 4. మరేదైనా లోపం సంభవిస్తే. + +_గమనిక_: హుక్‌తో సహా అన్ని బ్యాచ్ ఫంక్షన్లు బ్యాచ్ లేని వెర్షన్‌లుగా కూడా ఉన్నాయి. కేవలం ఒక ఆస్తిని బదిలీ చేయడమే ఇప్పటికీ అత్యంత సాధారణంగా ఉపయోగించబడే మార్గం అని పరిగణనలోకి తీసుకుని, గ్యాస్ సామర్థ్యం కోసం ఇది చేయబడింది. వివరణలలో సరళత కోసం, సురక్షిత బదిలీ నియమాలతో సహా మేము వాటిని వదిలిపెట్టాము. పేర్లు ఒకేలా ఉంటాయి, కేవలం 'బ్యాచ్'ను తొలగించండి. + +## మరింత సమాచారం {#further-reading} + +- [EIP-1155: బహుళ టోకెన్ ప్రమాణం](https://eips.ethereum.org/EIPS/eip-1155) +- [ERC-1155: Openzeppelin డాక్స్](https://docs.openzeppelin.com/contracts/5.x/erc1155) +- [ERC-1155: GitHub రెపో](https://github.com/enjin/erc-1155) +- [Alchemy NFT API](https://www.alchemy.com/docs/reference/nft-api-quickstart) diff --git a/public/content/translations/te/developers/docs/standards/tokens/erc-1363/index.md b/public/content/translations/te/developers/docs/standards/tokens/erc-1363/index.md new file mode 100644 index 00000000000..8b05c9581a9 --- /dev/null +++ b/public/content/translations/te/developers/docs/standards/tokens/erc-1363/index.md @@ -0,0 +1,212 @@ +--- +title: "ERC-1363 చెల్లించదగిన టోకెన్ ప్రమాణం" +description: "ERC-1363 అనేది ERC-20 టోకెన్‌ల కోసం ఒక విస్తరణ ఇంటర్‌ఫేస్, ఇది బదిలీల తర్వాత గ్రహీత ఒప్పందంపై లేదా ఆమోదాల తర్వాత ఖర్చు చేసే ఒప్పందంపై కస్టమ్ లాజిక్‌ను అమలు చేయడానికి మద్దతు ఇస్తుంది, అన్నీ ఒకే లావాదేవీలోనే." +lang: te +--- + +## పరిచయం {#introduction} + +### ERC-1363 అంటే ఏమిటి? {#what-is-erc1363} + +ERC-1363 అనేది ERC-20 టోకెన్‌ల కోసం ఒక విస్తరణ ఇంటర్‌ఫేస్, ఇది బదిలీల తర్వాత గ్రహీత ఒప్పందంపై లేదా ఆమోదాల తర్వాత ఖర్చు చేసే ఒప్పందంపై కస్టమ్ లాజిక్‌ను అమలు చేయడానికి మద్దతు ఇస్తుంది, అన్నీ ఒకే లావాదేవీలోనే. + +### ERC-20 నుండి తేడాలు {#erc20-differences} + +`transfer`, `transferFrom` మరియు `approve` వంటి ప్రామాణిక ERC-20 కార్యకలాపాలు, ప్రత్యేక లావాదేవీ లేకుండా గ్రహీత లేదా ఖర్చు చేసే ఒప్పందంపై కోడ్ అమలును అనుమతించవు. +ఇది UI అభివృద్ధిలో సంక్లిష్టతను మరియు స్వీకరణలో ఘర్షణను పరిచయం చేస్తుంది ఎందుకంటే వినియోగదారులు మొదటి లావాదేవీ అమలు అయ్యే వరకు వేచి ఉండి, ఆపై రెండవదాన్ని సమర్పించాలి. +వారు రెండుసార్లు GAS కూడా చెల్లించాలి. + +ERC-1363 ఫంగిబుల్ టోకెన్‌లు చర్యలను మరింత సులభంగా నిర్వహించగల సామర్థ్యాన్ని కలిగి ఉండేలా చేస్తుంది మరియు ఏ ఆఫ్-చైన్ లిజనర్‌ను ఉపయోగించకుండా పనిచేస్తుంది. +ఇది ఒకే లావాదేవీలో, బదిలీ లేదా ఆమోదం తర్వాత, రిసీవర్ లేదా స్పెండర్ ఒప్పందంపై క్యాల్‌బ్యాక్ చేయడానికి అనుమతిస్తుంది. + +## అవసరాలు {#prerequisites} + +ఈ పేజీని బాగా అర్థం చేసుకోవడానికి, మీరు ముందుగా వీటి గురించి చదవాలని మేము సిఫార్సు చేస్తున్నాము: + +- [టోకెన్ ప్రమాణాలు](/developers/docs/standards/tokens/) +- [ERC-20](/developers/docs/standards/tokens/erc-20/) + +## బాడీ {#body} + +ERC-1363, `transfer`, `transferFrom` లేదా `approve` తర్వాత స్మార్ట్ కాంట్రాక్ట్‌లతో పరస్పర చర్య చేయడానికి ERC-20 టోకెన్‌ల కోసం ఒక ప్రామాణిక APIని పరిచయం చేస్తుంది. + +ఈ ప్రమాణం టోకెన్‌లను బదిలీ చేయడానికి ప్రాథమిక కార్యాచరణను అందిస్తుంది, అలాగే టోకెన్‌లను ఆమోదించడానికి అనుమతిస్తుంది, తద్వారా వాటిని మరొక ఆన్-చైన్ మూడవ పక్షం ఖర్చు చేయవచ్చు, ఆపై రిసీవర్ లేదా స్పెండర్ ఒప్పందంపై క్యాల్‌బ్యాక్ చేయవచ్చు. + +ERC-20 క్యాల్‌బ్యాక్‌లను అంగీకరించగల స్మార్ట్ కాంట్రాక్ట్‌ల యొక్క అనేక ప్రతిపాదిత ఉపయోగాలు ఉన్నాయి. + +ఉదాహరణలు కావచ్చు: + +- **క్రౌడ్‌సేల్స్**: పంపిన టోకెన్‌లు తక్షణ రివార్డ్ కేటాయింపును ప్రేరేపిస్తాయి. +- **సేవలు**: చెల్లింపు ఒకే దశలో సేవా యాక్సెస్‌ను సక్రియం చేస్తుంది. +- **ఇన్‌వాయిస్‌లు**: టోకెన్‌లు ఇన్‌వాయిస్‌లను స్వయంచాలకంగా పరిష్కరిస్తాయి. +- **చందాలు**: వార్షిక రేటును ఆమోదించడం మొదటి నెల చెల్లింపులోనే చందాను సక్రియం చేస్తుంది. + +ఈ కారణాల వల్ల దీనికి మొదట **"చెల్లించదగిన టోకెన్"** అని పేరు పెట్టారు. + +క్యాల్‌బ్యాక్ ప్రవర్తన దాని ప్రయోజనాన్ని మరింత విస్తరిస్తుంది, ఇలాంటి అతుకులు లేని పరస్పర చర్యలను ప్రారంభిస్తుంది: + +- **స్టేకింగ్**: బదిలీ చేయబడిన టోకెన్‌లు స్టేకింగ్ ఒప్పందంలో ఆటోమేటిక్ లాకింగ్‌ను ప్రేరేపిస్తాయి. +- **ఓటింగ్**: స్వీకరించిన టోకెన్‌లు పరిపాలన వ్యవస్థలో ఓట్లను నమోదు చేస్తాయి. +- **స్వాపింగ్**: టోకెన్ ఆమోదాలు ఒకే దశలో స్వాప్ లాజిక్‌ను సక్రియం చేస్తాయి. + +బదిలీ లేదా ఆమోదం స్వీకరించిన తర్వాత క్యాల్‌బ్యాక్ అమలు చేయాల్సిన అన్ని సందర్భాల్లో నిర్దిష్ట ప్రయోజనాల కోసం ERC-1363 టోకెన్‌లను ఉపయోగించవచ్చు. +గ్రహీత టోకెన్‌లను నిర్వహించగల సామర్థ్యాన్ని ధృవీకరించడం ద్వారా స్మార్ట్ కాంట్రాక్ట్‌లలో టోకెన్ నష్టం లేదా టోకెన్ లాకింగ్‌ను నివారించడానికి కూడా ERC-1363 ఉపయోగపడుతుంది. + +ఇతర ERC-20 పొడిగింపు ప్రతిపాదనల మాదిరిగా కాకుండా, ERC-1363 ERC-20 `transfer` మరియు `transferFrom` పద్ధతులను భర్తీ చేయదు మరియు ERC-20తో వెనుకబడిన అనుకూలతను కొనసాగిస్తూ అమలు చేయాల్సిన ఇంటర్‌ఫేస్ IDలను నిర్వచిస్తుంది. + +[EIP-1363](https://eips.ethereum.org/EIPS/eip-1363) నుండి: + +### పద్ధతులు {#methods} + +ERC-1363 ప్రమాణాన్ని అమలు చేసే స్మార్ట్ కాంట్రాక్టులు `ERC1363` ఇంటర్‌ఫేస్‌లోని అన్ని ఫంక్షన్‌లను, అలాగే `ERC20` మరియు `ERC165` ఇంటర్‌ఫేస్‌లను **తప్పక** అమలు చేయాలి. + +```solidity +pragma solidity ^0.8.0; + +/** + * @title ERC1363 + * @dev ERC-20 టోకెన్‌ల కోసం ఒక విస్తరణ ఇంటర్‌ఫేస్, ఇది `transfer` లేదా `transferFrom` తర్వాత గ్రహీత ఒప్పందంపై కోడ్‌ను అమలు చేయడానికి, లేదా `approve` తర్వాత ఖర్చు చేసే ఒప్పందంపై కోడ్‌ను, ఒకే లావాదేవీలో అమలు చేయడానికి మద్దతు ఇస్తుంది. + */ +interface ERC1363 is ERC20, ERC165 { + /* + * గమనిక: ఈ ఇంటర్‌ఫేస్ కోసం ERC-165 ఐడెంటిఫైయర్ 0xb0202a11. + * 0xb0202a11 === + * bytes4(keccak256('transferAndCall(address,uint256)')) ^ + * bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^ + * bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^ + * bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^ + * bytes4(keccak256('approveAndCall(address,uint256)')) ^ + * bytes4(keccak256('approveAndCall(address,uint256,bytes)')) + */ + + /** + * @dev కాలర్ ఖాతా నుండి `to`కి `value` మొత్తంలో టోకెన్‌లను తరలిస్తుంది + * ఆపై `to`పై `ERC1363Receiver::onTransferReceived`ని పిలుస్తుంది. + * @param to టోకెన్‌లు బదిలీ చేయబడుతున్న చిరునామా. + * @param value బదిలీ చేయవలసిన టోకెన్‌ల మొత్తం. + * @return థ్రోయింగ్ చేయకపోతే ఆపరేషన్ విజయవంతమైందని సూచించే బూలియన్ విలువ. + */ + function transferAndCall(address to, uint256 value) external returns (bool); + + /** + * @dev కాలర్ ఖాతా నుండి `to`కి `value` మొత్తంలో టోకెన్‌లను తరలిస్తుంది + * ఆపై `to`పై `ERC1363Receiver::onTransferReceived`ని పిలుస్తుంది. + * @param to టోకెన్‌లు బదిలీ చేయబడుతున్న చిరునామా. + * @param value బదిలీ చేయవలసిన టోకెన్‌ల మొత్తం. + * @param data నిర్దిష్ట ఫార్మాట్ లేని అదనపు డేటా, `to`కి కాల్‌లో పంపబడుతుంది. + * @return థ్రోయింగ్ చేయకపోతే ఆపరేషన్ విజయవంతమైందని సూచించే బూలియన్ విలువ. + */ + function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool); + + /** + * @dev అలవెన్స్ మెకానిజం ఉపయోగించి `from` నుండి `to`కి `value` మొత్తంలో టోకెన్‌లను తరలిస్తుంది + * ఆపై `to`పై `ERC1363Receiver::onTransferReceived`ని పిలుస్తుంది. + * @param from టోకెన్‌లను పంపవలసిన చిరునామా. + * @param to టోకెన్‌లు బదిలీ చేయబడుతున్న చిరునామా. + * @param value బదిలీ చేయవలసిన టోకెన్‌ల మొత్తం. + * @return థ్రోయింగ్ చేయకపోతే ఆపరేషన్ విజయవంతమైందని సూచించే బూలియన్ విలువ. + */ + function transferFromAndCall(address from, address to, uint256 value) external returns (bool); + + /** + * @dev అలవెన్స్ మెకానిజం ఉపయోగించి `from` నుండి `to`కి `value` మొత్తంలో టోకెన్‌లను తరలిస్తుంది + * ఆపై `to`పై `ERC1363Receiver::onTransferReceived`ని పిలుస్తుంది. + * @param from టోకెన్‌లను పంపవలసిన చిరునామా. + * @param to టోకెన్‌లు బదిలీ చేయబడుతున్న చిరునామా. + * @param value బదిలీ చేయవలసిన టోకెన్‌ల మొత్తం. + * @param data నిర్దిష్ట ఫార్మాట్ లేని అదనపు డేటా, `to`కి కాల్‌లో పంపబడుతుంది. + * @return థ్రోయింగ్ చేయకపోతే ఆపరేషన్ విజయవంతమైందని సూచించే బూలియన్ విలువ. + */ + function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool); + + /** + * @dev కాలర్ యొక్క టోకెన్‌లపై `spender` యొక్క అలవెన్స్‌గా `value` మొత్తంలో టోకెన్‌లను సెట్ చేస్తుంది + * ఆపై `spender`పై `ERC1363Spender::onApprovalReceived`ని పిలుస్తుంది. + * @param spender నిధులను ఖర్చు చేసే చిరునామా. + * @param value ఖర్చు చేయవలసిన టోకెన్‌ల మొత్తం. + * @return థ్రోయింగ్ చేయకపోతే ఆపరేషన్ విజయవంతమైందని సూచించే బూలియన్ విలువ. + */ + function approveAndCall(address spender, uint256 value) external returns (bool); + + /** + * @dev కాలర్ యొక్క టోకెన్‌లపై `spender` యొక్క అలవెన్స్‌గా `value` మొత్తంలో టోకెన్‌లను సెట్ చేస్తుంది + * ఆపై `spender`పై `ERC1363Spender::onApprovalReceived`ని పిలుస్తుంది. + * @param spender నిధులను ఖర్చు చేసే చిరునామా. + * @param value ఖర్చు చేయవలసిన టోకెన్‌ల మొత్తం. + * @param data నిర్దిష్ట ఫార్మాట్ లేని అదనపు డేటా, `spender`కి కాల్‌లో పంపబడుతుంది. + * @return థ్రోయింగ్ చేయకపోతే ఆపరేషన్ విజయవంతమైందని సూచించే బూలియన్ విలువ. + */ + function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool); +} + +interface ERC20 { + event Transfer(address indexed from, address indexed to, uint256 value); + event Approval(address indexed owner, address indexed spender, uint256 value); + function transfer(address to, uint256 value) external returns (bool); + function transferFrom(address from, address to, uint256 value) external returns (bool); + function approve(address spender, uint256 value) external returns (bool); + function totalSupply() external view returns (uint256); + function balanceOf(address account) external view returns (uint256); + function allowance(address owner, address spender) external view returns (uint256); +} + +interface ERC165 { + function supportsInterface(bytes4 interfaceId) external view returns (bool); +} +``` + +`transferAndCall` లేదా `transferFromAndCall` ద్వారా ERC-1363 టోకెన్‌లను అంగీకరించాలనుకునే స్మార్ట్ కాంట్రాక్ట్ **తప్పక** `ERC1363Receiver` ఇంటర్‌ఫేస్‌ను అమలు చేయాలి: + +```solidity +/** + * @title ERC1363Receiver + * @dev ERC-1363 టోకెన్ కాంట్రాక్ట్‌ల నుండి `transferAndCall` లేదా `transferFromAndCall`కు మద్దతు ఇవ్వాలనుకునే ఏ కాంట్రాక్ట్ కోసం అయినా ఇంటర్‌ఫేస్. + */ +interface ERC1363Receiver { + /** + * @dev `operator` ద్వారా `from` నుండి `ERC1363::transferAndCall` లేదా `ERC1363::transferFromAndCall` ద్వారా ఈ కాంట్రాక్ట్‌కు ERC-1363 టోకెన్‌లు బదిలీ చేయబడినప్పుడల్లా + * ఈ ఫంక్షన్ పిలువబడుతుంది. + * + * గమనిక: బదిలీని అంగీకరించడానికి, ఇది తప్పక తిరిగి ఇవ్వాలి + * `bytes4(keccak256("onTransferReceived(address,address,uint256,bytes)"))` + * (అంటే 0x88a7ca5c, లేదా దాని స్వంత ఫంక్షన్ సెలెక్టర్). + * + * @param operator `transferAndCall` లేదా `transferFromAndCall` ఫంక్షన్‌ను పిలిచిన చిరునామా. + * @param from టోకెన్‌లు బదిలీ చేయబడిన చిరునామా. + * @param value బదిలీ చేయబడిన టోకెన్‌ల మొత్తం. + * @param data నిర్దిష్ట ఫార్మాట్ లేని అదనపు డేటా. + * @return బదిలీ అనుమతించబడితే `bytes4(keccak256("onTransferReceived(address,address,uint256,bytes)"))` థ్రోయింగ్ చేయకపోతే. + */ + function onTransferReceived(address operator, address from, uint256 value, bytes calldata data) external returns (bytes4); +} +``` + +`approveAndCall` ద్వారా ERC-1363 టోకెన్‌లను అంగీకరించాలనుకునే స్మార్ట్ కాంట్రాక్ట్ **తప్పక** `ERC1363Spender` ఇంటర్‌ఫేస్‌ను అమలు చేయాలి: + +```solidity +/** + * @title ERC1363Spender + * @dev ERC-1363 టోకెన్ కాంట్రాక్ట్‌ల నుండి `approveAndCall`కు మద్దతు ఇవ్వాలనుకునే ఏ కాంట్రాక్ట్ కోసం అయినా ఇంటర్‌ఫేస్. + */ +interface ERC1363Spender { + /** + * @dev ఒక ERC-1363 టోకెన్ల `owner` ఈ కాంట్రాక్ట్‌ను `ERC1363::approveAndCall` ద్వారా ఆమోదించినప్పుడల్లా + * వారి టోకెన్‌లను ఖర్చు చేయడానికి, ఈ ఫంక్షన్ పిలువబడుతుంది. + * + * గమనిక: ఆమోదాన్ని అంగీకరించడానికి, ఇది తప్పక తిరిగి ఇవ్వాలి + * `bytes4(keccak256("onApprovalReceived(address,uint256,bytes)"))` + * (అంటే 0x7b04a2d0, లేదా దాని స్వంత ఫంక్షన్ సెలెక్టర్). + * + * @param owner `approveAndCall` ఫంక్షన్‌ను పిలిచి, గతంలో టోకెన్‌లను కలిగి ఉన్న చిరునామా. + * @param value ఖర్చు చేయవలసిన టోకెన్‌ల మొత్తం. + * @param data నిర్దిష్ట ఫార్మాట్ లేని అదనపు డేటా. + * @return ఆమోదం అనుమతించబడితే `bytes4(keccak256("onApprovalReceived(address,uint256,bytes)"))` థ్రోయింగ్ చేయకపోతే. + */ + function onApprovalReceived(address owner, uint256 value, bytes calldata data) external returns (bytes4); +} +``` + +## మరింత సమాచారం {#further-reading} + +- [ERC-1363: చెల్లించదగిన టోకెన్ ప్రమాణం](https://eips.ethereum.org/EIPS/eip-1363) +- [ERC-1363: GitHub రెపో](https://github.com/vittominacori/erc1363-payable-token) diff --git a/public/content/translations/te/developers/docs/standards/tokens/erc-20/index.md b/public/content/translations/te/developers/docs/standards/tokens/erc-20/index.md new file mode 100644 index 00000000000..3a99cbf3331 --- /dev/null +++ b/public/content/translations/te/developers/docs/standards/tokens/erc-20/index.md @@ -0,0 +1,192 @@ +--- +title: "ERC-20 టోకెన్ ప్రమాణం" +description: "Ethereum లో ఫంగిబుల్ టోకెన్‌ల కొరకు ప్రమాణమైన ERC-20 గురించి తెలుసుకోండి, ఇది ఇంటర్‌ఆపరేబుల్ టోకెన్ అప్లికేషన్‌లను సాధ్యం చేస్తుంది." +lang: te +--- + +## పరిచయం {#introduction} + +**టోకెన్ అంటే ఏమిటి?** + +Ethereumలో టోకెన్‌లు వాస్తవంగా దేనికైనా ప్రాతినిధ్యం వహించగలవు: + +- ఒక ఆన్‌లైన్ ప్లాట్‌ఫారమ్‌లో ప్రతిష్టా పాయింట్లు +- ఒక గేమ్‌లోని పాత్ర యొక్క నైపుణ్యాలు +- ఒక కంపెనీలో వాటా వంటి ఆర్థిక ఆస్తులు +- USD వంటి ఫియట్ కరెన్సీ +- ఒక ఔన్స్ బంగారం +- ఇంకా మరిన్ని... + +Ethereum యొక్క అటువంటి శక్తివంతమైన ఫీచర్‌ను ఒక పటిష్టమైన ప్రమాణం ద్వారా నిర్వహించబడాలి, కదా? సరిగ్గా ఇక్కడే +ERC-20 దాని పాత్రను పోషిస్తుంది! ఈ ప్రమాణం ఇతర ఉత్పత్తులు మరియు సేవలతో ఇంటర్‌ఆపరేబుల్ అయ్యే టోకెన్ అప్లికేషన్‌లను నిర్మించడానికి డెవలపర్‌లను అనుమతిస్తుంది. [ether](/glossary/#ether)కు అదనపు కార్యాచరణను అందించడానికి ERC-20 ప్రమాణం కూడా ఉపయోగించబడుతుంది. + +**ERC-20 అంటే ఏమిటి?** + +ERC-20 ఫంగిబుల్ టోకెన్‌ల కోసం ఒక ప్రమాణాన్ని పరిచయం చేస్తుంది, మరో మాటలో చెప్పాలంటే, వాటికి ఒక గుణం ఉంటుంది, అది ప్రతి టోకెన్‌ను మరొక టోకెన్‌తో (రకం మరియు విలువలో) సరిగ్గా +సమానంగా చేస్తుంది. ఉదాహరణకు, ఒక ERC-20 టోకెన్ ETH లాగానే పనిచేస్తుంది, అంటే 1 టోకెన్ +అన్ని ఇతర టోకెన్‌లకు సమానంగా ఉంటుంది మరియు ఎల్లప్పుడూ సమానంగా ఉంటుంది. + +## అవసరాలు {#prerequisites} + +- [ఖాతాలు](/developers/docs/accounts) +- [స్మార్ట్ కాంట్రాక్టులు](/developers/docs/smart-contracts/) +- [టోకెన్ ప్రమాణాలు](/developers/docs/standards/tokens/) + +## బాడీ {#body} + +నవంబర్ 2015లో ఫాబియన్ వోగెల్‌స్టెల్లర్ ప్రతిపాదించిన ERC-20 (Ethereum రిక్వెస్ట్ ఫర్ కామెంట్స్ 20) అనేది స్మార్ట్ కాంట్రాక్టులలో టోకెన్‌ల కోసం ఒక APIని +అమలు చేసే టోకెన్ ప్రమాణం. + +ERC-20 అందించే ఉదాహరణ కార్యాచరణలు: + +- ఒక ఖాతా నుండి మరొక ఖాతాకు టోకెన్‌లను బదిలీ చేయడం +- ఒక ఖాతా యొక్క ప్రస్తుత టోకెన్ బ్యాలెన్స్‌ను పొందడం +- నెట్‌వర్క్‌లో అందుబాటులో ఉన్న టోకెన్ యొక్క మొత్తం సరఫరాను పొందడం +- ఒక ఖాతా నుండి కొంత మొత్తంలో టోకెన్‌ను మూడవ-పక్షం ఖాతా ద్వారా ఖర్చు చేయవచ్చో లేదో ఆమోదించడం + +ఒక స్మార్ట్ కాంట్రాక్ట్ కింది పద్ధతులు మరియు ఈవెంట్‌లను అమలు చేస్తే, దానిని ERC-20 టోకెన్ కాంట్రాక్ట్ అని పిలుస్తారు మరియు, ఒకసారి డిప్లాయ్ చేసిన తర్వాత, అది +Ethereumలో సృష్టించబడిన టోకెన్‌లను ట్రాక్ చేయడానికి బాధ్యత వహిస్తుంది. + +[EIP-20](https://eips.ethereum.org/EIPS/eip-20) నుండి: + +### పద్ధతులు {#methods} + +```solidity +function name() public view returns (string) +function symbol() public view returns (string) +function decimals() public view returns (uint8) +function totalSupply() public view returns (uint256) +function balanceOf(address _owner) public view returns (uint256 balance) +function transfer(address _to, uint256 _value) public returns (bool success) +function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) +function approve(address _spender, uint256 _value) public returns (bool success) +function allowance(address _owner, address _spender) public view returns (uint256 remaining) +``` + +### ఈవెంట్‌లు {#events} + +```solidity +event Transfer(address indexed _from, address indexed _to, uint256 _value) +event Approval(address indexed _owner, address indexed _spender, uint256 _value) +``` + +### ఉదాహరణలు {#web3py-example} + +Ethereum లోని ఏ ERC-20 టోకెన్ కాంట్రాక్ట్‌నైనా తనిఖీ చేయడాన్ని మనకు సులభతరం చేయడానికి ఒక ప్రమాణం ఎంత ముఖ్యమైనదో చూద్దాం. +ఏదైనా ERC-20 టోకెన్‌కు ఒక ఇంటర్‌ఫేస్ సృష్టించడానికి మనకు కాంట్రాక్ట్ అప్లికేషన్ బైనరీ ఇంటర్‌ఫేస్ (ABI) అవసరం. దిగువన మీరు చూడగలిగినట్లుగా +మేము దీనిని సులభమైన ఉదాహరణగా చేయడానికి ఒక సరళీకృత ABI ని ఉపయోగిస్తాము. + +#### Web3.py ఉదాహరణ {#web3py-example} + +మొదట, మీరు [Web3.py](https://web3py.readthedocs.io/en/stable/quickstart.html#installation) పైథాన్ లైబ్రరీని ఇన్‌స్టాల్ చేసుకున్నారని నిర్ధారించుకోండి: + +``` +pip install web3 +``` + +```python +from web3 import Web3 + + +w3 = Web3(Web3.HTTPProvider("https://cloudflare-eth.com")) + +dai_token_addr = "0x6B175474E89094C44Da98b954EedeAC495271d0F" # DAI +weth_token_addr = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" # ర్యాప్ చేసిన ఈథర్ (WETH) + +acc_address = "0xA478c2975Ab1Ea89e8196811F51A7B7Ade33eB11" # Uniswap V2: DAI 2 + +# ఇది ERC-20 టోకెన్ కాంట్రాక్ట్ యొక్క సరళీకృత కాంట్రాక్ట్ అప్లికేషన్ బైనరీ ఇంటర్‌ఫేస్ (ABI). +# ఇది కేవలం పద్ధతులను మాత్రమే బహిర్గతం చేస్తుంది: balanceOf(address), decimals(), symbol() మరియు totalSupply() +simplified_abi = [ + { + 'inputs': [{'internalType': 'address', 'name': 'account', 'type': 'address'}], + 'name': 'balanceOf', + 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], + 'stateMutability': 'view', 'type': 'function', 'constant': True + }, + { + 'inputs': [], + 'name': 'decimals', + 'outputs': [{'internalType': 'uint8', 'name': '', 'type': 'uint8'}], + 'stateMutability': 'view', 'type': 'function', 'constant': True + }, + { + 'inputs': [], + 'name': 'symbol', + 'outputs': [{'internalType': 'string', 'name': '', 'type': 'string'}], + 'stateMutability': 'view', 'type': 'function', 'constant': True + }, + { + 'inputs': [], + 'name': 'totalSupply', + 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], + 'stateMutability': 'view', 'type': 'function', 'constant': True + } +] + +dai_contract = w3.eth.contract(address=w3.to_checksum_address(dai_token_addr), abi=simplified_abi) +symbol = dai_contract.functions.symbol().call() +decimals = dai_contract.functions.decimals().call() +totalSupply = dai_contract.functions.totalSupply().call() / 10**decimals +addr_balance = dai_contract.functions.balanceOf(acc_address).call() / 10**decimals + +# DAI +print("===== %s =====" % symbol) +print("Total Supply:", totalSupply) +print("Addr Balance:", addr_balance) + +weth_contract = w3.eth.contract(address=w3.to_checksum_address(weth_token_addr), abi=simplified_abi) +symbol = weth_contract.functions.symbol().call() +decimals = weth_contract.functions.decimals().call() +totalSupply = weth_contract.functions.totalSupply().call() / 10**decimals +addr_balance = weth_contract.functions.balanceOf(acc_address).call() / 10**decimals + +# WETH +print("===== %s =====" % symbol) +print("Total Supply:", totalSupply) +print("Addr Balance:", addr_balance) +``` + +## తెలిసిన సమస్యలు {#erc20-issues} + +### ERC-20 టోకెన్ స్వీకరణ సమస్య {#reception-issue} + +**06/20/2024 నాటికి ఈ సమస్య కారణంగా కనీసం $83,656,418 విలువైన ERC-20 టోకెన్లు పోయాయి. దిగువ జాబితా చేసిన విధంగా మీరు ప్రామాణికం పైన అదనపు పరిమితుల సమితిని అమలు చేస్తే తప్ప, స్వచ్ఛమైన ERC-20 అమలు ఈ సమస్యకు గురవుతుందని గమనించండి.** + +ERC-20 టోకెన్‌లను నిర్వహించడానికి రూపొందించని స్మార్ట్ కాంట్రాక్టుకు ERC-20 టోకెన్‌లను పంపినప్పుడు, ఆ టోకెన్‌లు శాశ్వతంగా పోవచ్చు. స్వీకరించే కాంట్రాక్ట్‌కు ఇన్‌కమింగ్ టోకెన్‌లను గుర్తించే లేదా ప్రతిస్పందించే కార్యాచరణ లేనందున మరియు ఇన్‌కమింగ్ టోకెన్‌ల గురించి స్వీకరించే కాంట్రాక్ట్‌కు తెలియజేయడానికి ERC-20 ప్రమాణంలో ఎటువంటి యంత్రాంగం లేనందున ఇది జరుగుతుంది. ఈ సమస్య రూపుదిద్దుకునే ప్రధాన మార్గాలు: + +1. టోకెన్ బదిలీ యంత్రాంగం + +- ERC-20 టోకెన్‌లు ట్రాన్స్‌ఫర్ లేదా ట్రాన్స్‌ఫర్‌ఫ్రమ్ ఫంక్షన్‌లను ఉపయోగించి బదిలీ చేయబడతాయి + - ఒక వినియోగదారుడు ఈ ఫంక్షన్‌లను ఉపయోగించి కాంట్రాక్ట్ చిరునామాకు టోకెన్‌లను పంపినప్పుడు, స్వీకరించే కాంట్రాక్ట్ వాటిని నిర్వహించడానికి రూపొందించబడిందా లేదా అనే దానితో సంబంధం లేకుండా టోకెన్‌లు బదిలీ చేయబడతాయి + +2. నోటిఫికేషన్ లేకపోవడం + - స్వీకరించే కాంట్రాక్ట్ దానికి టోకెన్‌లు పంపబడ్డాయని నోటిఫికేషన్ లేదా కాల్‌బ్యాక్ అందుకోదు + - స్వీకరించే కాంట్రాక్ట్‌లో టోకెన్‌లను నిర్వహించడానికి ఒక యంత్రాంగం లేకపోతే (ఉదా., ఫాల్‌బ్యాక్ ఫంక్షన్ లేదా టోకెన్ స్వీకరణను నిర్వహించడానికి ఒక ప్రత్యేక ఫంక్షన్), టోకెన్‌లు సమర్థవంతంగా కాంట్రాక్ట్ చిరునామాలో చిక్కుకుపోతాయి +3. అంతర్నిర్మిత నిర్వహణ లేదు + - ERC-20 ప్రమాణంలో స్వీకరించే కాంట్రాక్ట్‌లు అమలు చేయడానికి తప్పనిసరి ఫంక్షన్ ఏదీ లేదు, ఇది చాలా కాంట్రాక్ట్‌లు ఇన్‌కమింగ్ టోకెన్‌లను సరిగ్గా నిర్వహించలేని పరిస్థితికి దారితీస్తుంది + +**సాధ్యమయ్యే పరిష్కారాలు** + +ERC-20 తో ఈ సమస్యను పూర్తిగా నివారించడం సాధ్యం కానప్పటికీ, తుది వినియోగదారునికి టోకెన్‌ల నష్టాన్ని గణనీయంగా తగ్గించే పద్ధతులు ఉన్నాయి: + +- ఒక వినియోగదారుడు టోకెన్‌లను టోకెన్ కాంట్రాక్ట్ చిరునామాకే పంపడం అనేది అత్యంత సాధారణ సమస్య (ఉదా., USDT టోకెన్ కాంట్రాక్ట్ చిరునామాకు USDT డిపాజిట్ చేయడం). `transfer(..)` ఫంక్షన్‌ను అటువంటి బదిలీ ప్రయత్నాలను రివర్ట్ చేయడానికి పరిమితం చేయడం సిఫార్సు చేయబడింది. `transfer(..)` ఫంక్షన్ అమలులో `require(_to != address(this));` తనిఖీని జోడించడాన్ని పరిగణించండి. +- `transfer(..)` ఫంక్షన్ సాధారణంగా కాంట్రాక్టులకు టోకెన్‌లను డిపాజిట్ చేయడానికి రూపొందించబడలేదు. `approve(..) `& transferFrom(..)`నమూనా బదులుగా ERC-20 టోకెన్‌లను కాంట్రాక్టులకు డిపాజిట్ చేయడానికి ఉపయోగించబడుతుంది. దానితో ఏ కాంట్రాక్టులలోనైనా టోకెన్‌లను డిపాజిట్ చేయడాన్ని అనుమతించకుండా ట్రాన్స్‌ఫర్ ఫంక్షన్‌ను పరిమితం చేయడం సాధ్యమే, అయితే`trasnfer(..)` ఫంక్షన్‌తో కాంట్రాక్టులలో టోకెన్‌లను డిపాజిట్ చేయవచ్చని భావించే కాంట్రాక్టులతో ఇది అనుకూలతను దెబ్బతీయవచ్చు (ఉదా., Uniswap లిక్విడిటీ పూల్స్). +- మీ కాంట్రాక్ట్ ఎప్పుడూ దేనినీ స్వీకరించకూడదని అనుకున్నా, ERC-20 టోకెన్‌లు మీ కాంట్రాక్ట్‌లో చేరవచ్చని ఎల్లప్పుడూ ఊహించండి. స్వీకర్తల వైపు నుండి ప్రమాదవశాత్తు డిపాజిట్లను నిరోధించడానికి లేదా తిరస్కరించడానికి మార్గం లేదు. ప్రమాదవశాత్తు డిపాజిట్ చేయబడిన ERC-20 టోకెన్‌లను వెలికి తీయడానికి అనుమతించే ఫంక్షన్‌ను అమలు చేయడం సిఫార్సు చేయబడింది. +- ప్రత్యామ్నాయ టోకెన్ ప్రమాణాలను ఉపయోగించడాన్ని పరిగణించండి. + +ఈ సమస్య నుండి [ERC-223](/developers/docs/standards/tokens/erc-223) లేదా [ERC-1363](/developers/docs/standards/tokens/erc-1363) వంటి కొన్ని ప్రత్యామ్నాయ ప్రమాణాలు ఉద్భవించాయి. + +## మరింత సమాచారం {#further-reading} + +- [EIP-20: ERC-20 టోకెన్ ప్రమాణం](https://eips.ethereum.org/EIPS/eip-20) +- [OpenZeppelin - టోకెన్‌లు](https://docs.openzeppelin.com/contracts/3.x/tokens#ERC20) +- [OpenZeppelin - ERC-20 అమలు](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol) +- [Alchemy - సాలిడిటీ ERC20 టోకెన్‌లకు గైడ్](https://www.alchemy.com/overviews/erc20-solidity) + +## ఇతర ఫంగిబుల్ టోకెన్ ప్రమాణాలు {#fungible-token-standards} + +- [ERC-223](/developers/docs/standards/tokens/erc-223) +- [ERC-1363](/developers/docs/standards/tokens/erc-1363) +- [ERC-777](/developers/docs/standards/tokens/erc-777) +- [ERC-4626 - టోకెనైజ్డ్ వాల్ట్‌లు](/developers/docs/standards/tokens/erc-4626) diff --git a/public/content/translations/te/developers/docs/standards/tokens/erc-223/index.md b/public/content/translations/te/developers/docs/standards/tokens/erc-223/index.md new file mode 100644 index 00000000000..055aa3c7dd5 --- /dev/null +++ b/public/content/translations/te/developers/docs/standards/tokens/erc-223/index.md @@ -0,0 +1,198 @@ +--- +title: "ERC-223 టోకెన్ ప్రమాణం" +description: "ERC-223 ఫంగిబుల్ టోకెన్ ప్రమాణం యొక్క అవలోకనం, అది ఎలా పనిచేస్తుంది, మరియు ERC-20తో పోలిక." +lang: te +--- + +## పరిచయం {#introduction} + +### ERC-223 అంటే ఏమిటి? {#what-is-erc223} + +ERC-223 అనేది ERC-20 ప్రమాణాన్ని పోలిన, ఫంగిబుల్ టోకెన్ల కోసం ఒక ప్రమాణం. ప్రధాన వ్యత్యాసం ఏమిటంటే, ERC-223 టోకెన్ APIని మాత్రమే కాకుండా, పంపినవారి నుండి గ్రహీతకు టోకెన్‌లను బదిలీ చేయడానికి లాజిక్‌ను కూడా నిర్వచిస్తుంది. ఇది గ్రహీత వైపు టోకెన్ బదిలీలను నిర్వహించడానికి అనుమతించే కమ్యూనికేషన్ నమూనాని పరిచయం చేస్తుంది. + +### ERC-20 నుండి తేడాలు {#erc20-differences} + +ERC-223, ERC-20 యొక్క కొన్ని పరిమితులను పరిష్కరిస్తుంది మరియు టోకెన్ కాంట్రాక్ట్ మరియు టోకెన్‌లను స్వీకరించగల కాంట్రాక్ట్ మధ్య పరస్పర చర్య యొక్క కొత్త పద్ధతిని పరిచయం చేస్తుంది. ERC-223తో సాధ్యమయ్యే కొన్ని విషయాలు ఉన్నాయి కానీ ERC-20తో సాధ్యం కావు: + +- గ్రహీత వైపు టోకెన్ బదిలీ నిర్వహణ: ERC-223 టోకెన్ డిపాజిట్ చేయబడుతోందని గ్రహీతలు గుర్తించగలరు. +- సరిగ్గా పంపని టోకెన్‌ల తిరస్కరణ: ఒక వినియోగదారుడు టోకెన్‌లను స్వీకరించకూడని కాంట్రాక్ట్‌కు ERC-223 టోకెన్‌లను పంపితే, కాంట్రాక్ట్ ఆ లావాదేవీని తిరస్కరించగలదు, తద్వారా టోకెన్ నష్టాన్ని నివారిస్తుంది. +- బదిలీలలో మెటాడేటా: ERC-223 టోకెన్‌లు మెటాడేటాను కలిగి ఉంటాయి, ఇది టోకెన్ లావాదేవీలకు ఏకపక్ష సమాచారాన్ని జోడించడానికి అనుమతిస్తుంది. + +## అవసరాలు {#prerequisites} + +- [ఖాతాలు](/developers/docs/accounts) +- [స్మార్ట్ కాంట్రాక్టులు](/developers/docs/smart-contracts/) +- [టోకెన్ ప్రమాణాలు](/developers/docs/standards/tokens/) +- [ERC-20](/developers/docs/standards/tokens/erc-20/) + +## బాడీ {#body} + +ERC-223 అనేది స్మార్ట్ కాంట్రాక్టులలో టోకెన్‌ల కోసం APIని అమలు చేసే ఒక టోకెన్ ప్రమాణం. ఇది ERC-223 టోకెన్‌లను స్వీకరించాల్సిన కాంట్రాక్టుల కోసం ఒక APIని కూడా ప్రకటిస్తుంది. ERC-223 రిసీవర్ APIకి మద్దతు ఇవ్వని కాంట్రాక్టులు ERC-223 టోకెన్‌లను స్వీకరించలేవు, వినియోగదారుడి పొరపాటును నివారిస్తాయి. + +ఒక స్మార్ట్ కాంట్రాక్ట్ కింది పద్ధతులు మరియు ఈవెంట్‌లను అమలు చేస్తే, దానిని ERC-223 అనుకూల టోకెన్ కాంట్రాక్ట్ అని పిలుస్తారు. ఒకసారి డిప్లాయ్ చేసిన తర్వాత, అది +Ethereumలో సృష్టించబడిన టోకెన్‌లను ట్రాక్ చేయడానికి బాధ్యత వహిస్తుంది. + +కాంట్రాక్ట్ కేవలం ఈ ఫంక్షన్‌లను మాత్రమే కలిగి ఉండవలసిన అవసరం లేదు మరియు ఒక డెవలపర్ ఈ కాంట్రాక్ట్‌కు వేర్వేరు టోకెన్ ప్రమాణాల నుండి ఏదైనా ఇతర ఫీచర్‌ను జోడించవచ్చు. ఉదాహరణకు, `approve` మరియు `transferFrom` ఫంక్షన్లు ERC-223 ప్రమాణంలో భాగం కావు కానీ అవసరమైతే ఈ ఫంక్షన్లను అమలు చేయవచ్చు. + +[EIP-223](https://eips.ethereum.org/EIPS/eip-223) నుండి: + +### పద్ధతులు {#methods} + +ERC-223 టోకెన్ తప్పనిసరిగా క్రింది పద్ధతులను అమలు చేయాలి: + +```solidity +function name() public view returns (string) +function symbol() public view returns (string) +function decimals() public view returns (uint8) +function totalSupply() public view returns (uint256) +function balanceOf(address _owner) public view returns (uint256 balance) +function transfer(address _to, uint256 _value) public returns (bool success) +function transfer(address _to, uint256 _value, bytes calldata _data) public returns (bool success) +``` + +ERC-223 టోకెన్‌లను స్వీకరించాల్సిన ఒక కాంట్రాక్ట్ తప్పనిసరిగా క్రింది పద్ధతిని అమలు చేయాలి: + +```solidity +function tokenReceived(address _from, uint _value, bytes calldata _data) +``` + +`tokenReceived(..)` ఫంక్షన్‌ను అమలు చేయని కాంట్రాక్ట్‌కు ERC-223 టోకెన్‌లు పంపబడితే, బదిలీ విఫలం కావాలి మరియు టోకెన్‌లు పంపినవారి బ్యాలెన్స్ నుండి కదలకూడదు. + +### ఈవెంట్‌లు {#events} + +```solidity +event Transfer(address indexed _from, address indexed _to, uint256 _value, bytes calldata _data) +``` + +### ఉదాహరణలు {#examples} + +ERC-223 టోకెన్ యొక్క API, ERC-20 మాదిరిగానే ఉంటుంది, కాబట్టి UI అభివృద్ధి కోణం నుండి ఎటువంటి తేడా లేదు. ఇక్కడ ఉన్న ఏకైక మినహాయింపు ఏమిటంటే, ERC-223 టోకెన్‌లకు `approve` + `transferFrom` ఫంక్షన్‌లు ఉండకపోవచ్చు, ఎందుకంటే ఈ ప్రమాణానికి ఇవి ఐచ్ఛికం. + +#### Solidity ఉదాహరణలు {#solidity-example} + +కింది ఉదాహరణ ఒక ప్రాథమిక ERC-223 టోకెన్ కాంట్రాక్ట్ ఎలా పనిచేస్తుందో వివరిస్తుంది: + +```solidity +pragma solidity ^0.8.19; +abstract contract IERC223Recipient { + function tokenReceived(address _from, uint _value, bytes memory _data) public virtual; +} +contract VeryBasicERC223Token { + event Transfer(address indexed from, address indexed to, uint value, bytes data); + string private _name; + string private _symbol; + uint8 private _decimals; + uint256 private _totalSupply; + mapping(address => uint256) private balances; + function name() public view returns (string memory) { return _name; } + function symbol() public view returns (string memory) {return _symbol; } + function decimals() public view returns (uint8) { return _decimals; } + function totalSupply() public view returns (uint256) { return _totalSupply; } + function balanceOf(address _owner) public view returns (uint256) { return balances[_owner]; } + function isContract(address account) internal view returns (bool) { + uint256 size; + assembly { size := extcodesize(account) } + return size > 0; + } + function transfer(address _to, uint _value, bytes calldata _data) public returns (bool success){ + balances[msg.sender] = balances[msg.sender] - _value; + balances[_to] = balances[_to] + _value; + if(isContract(_to)) { + IERC223Recipient(_to).tokenReceived(msg.sender, _value, _data); + } + emit Transfer(msg.sender, _to, _value, _data); + return true; + } + function transfer(address _to, uint _value) public returns (bool success){ + bytes memory _empty = hex"00000000"; + balances[msg.sender] = balances[msg.sender] - _value; + balances[_to] = balances[_to] + _value; + if(isContract(_to)) { + IERC223Recipient(_to).tokenReceived(msg.sender, _value, _empty); + } + emit Transfer(msg.sender, _to, _value, _empty); + return true; + } +} +``` + +ఇప్పుడు tokenA ఒక ERC-223 టోకెన్ అని భావించి, `tokenA` డిపాజిట్లను అంగీకరించడానికి మాకు మరొక కాంట్రాక్ట్ కావాలి. కాంట్రాక్ట్ కేవలం tokenAని మాత్రమే అంగీకరించాలి మరియు ఏవైనా ఇతర టోకెన్‌లను తిరస్కరించాలి. కాంట్రాక్ట్ tokenAని స్వీకరించినప్పుడు అది ఒక `Deposit()` ఈవెంట్‌ను విడుదల చేయాలి మరియు అంతర్గత `deposits` వేరియబుల్ విలువను పెంచాలి. + +ఇదిగో కోడ్: + +```solidity +contract RecipientContract is IERC223Recipient { + event Deposit(address whoSentTheTokens); + uint256 deposits = 0; + address tokenA; // మేము అంగీకరించాలనుకుంటున్న ఏకైక టోకెన్. + function tokenReceived(address _from, uint _value, bytes memory _data) public override + { + // ఈ ఫంక్షన్‌లో ఇది అర్థం చేసుకోవడం ముఖ్యం + // msg.sender అనేది స్వీకరించబడుతున్న టోకెన్ యొక్క చిరునామా, + // టోకెన్ కాంట్రాక్ట్ చాలా సందర్భాలలో ఈథర్‌ను కలిగి ఉండదు లేదా పంపదు కాబట్టి msg.value ఎల్లప్పుడూ 0గా ఉంటుంది, + // _from అనేది టోకెన్ బదిలీని పంపినవారు, + // _value అనేది డిపాజిట్ చేయబడిన టోకెన్‌ల మొత్తం. + require(msg.sender == tokenA); + deposits += _value; + emit Deposit(_from); + } +} +``` + +## తరచుగా అడిగే ప్రశ్నలు {#faq} + +### మనం కాంట్రాక్ట్‌కు కొంత tokenBని పంపితే ఏమి జరుగుతుంది? {#sending-tokens} + +లావాదేవీ విఫలమవుతుంది, మరియు టోకెన్‌ల బదిలీ జరగదు. టోకెన్‌లు పంపినవారి చిరునామాకు తిరిగి ఇవ్వబడతాయి. + +### ఈ కాంట్రాక్ట్‌కు మనం ఎలా డిపాజిట్ చేయవచ్చు? {#contract-deposits} + +`RecipientContract` యొక్క చిరునామాను పేర్కొంటూ, ERC-223 టోకెన్ యొక్క `transfer(address,uint256)` లేదా `transfer(address,uint256,bytes)` ఫంక్షన్‌ను కాల్ చేయండి. + +### మనం ఈ కాంట్రాక్ట్‌కు ఒక ERC-20 టోకెన్‌ను బదిలీ చేస్తే ఏమి జరుగుతుంది? {#erc-20-transfers} + +`RecipientContract`కు ఒక ERC-20 టోకెన్ పంపబడితే, టోకెన్‌లు బదిలీ చేయబడతాయి, కానీ బదిలీ గుర్తించబడదు (`Deposit()` ఈవెంట్ ఫైర్ చేయబడదు, మరియు డిపాజిట్ల విలువ మారదు). అవాంఛిత ERC-20 డిపాజిట్లను ఫిల్టర్ చేయడం లేదా నిరోధించడం సాధ్యం కాదు. + +### టోకెన్ డిపాజిట్ పూర్తయిన తర్వాత మనం ఏదైనా ఫంక్షన్‌ను ఎగ్జిక్యూట్ చేయాలనుకుంటే ఏమి చేయాలి? {#function-execution} + +అలా చేయడానికి అనేక మార్గాలు ఉన్నాయి. ఈ ఉదాహరణలో మనం ERC-223 బదిలీలను ఈథర్ బదిలీలతో సమానంగా చేసే పద్ధతిని అనుసరిస్తాము: + +```solidity +contract RecipientContract is IERC223Recipient { + event Foo(); + event Bar(uint256 someNumber); + address tokenA; // మేము అంగీకరించాలనుకుంటున్న ఏకైక టోకెన్. + function tokenReceived(address _from, uint _value, bytes memory _data) public override + { + require(msg.sender == tokenA); + address(this).call(_data); // ఇన్‌కమింగ్ లావాదేవీని హ్యాండిల్ చేయండి మరియు తదుపరి ఫంక్షన్ కాల్‌ను నిర్వహించండి. + } + function foo() public + { + emit Foo(); + } + function bar(uint256 _someNumber) public + { + emit Bar(_someNumber); + } +} +``` + +`RecipientContract` ఒక ERC-223 టోకెన్‌ను స్వీకరించినప్పుడు, ఈథర్ లావాదేవీలు ఫంక్షన్ కాల్స్‌ను లావాదేవీ `data`గా ఎలా ఎన్‌కోడ్ చేస్తాయో అదే విధంగా, టోకెన్ లావాదేవీ యొక్క `_data` పారామీటర్‌గా ఎన్‌కోడ్ చేయబడిన ఒక ఫంక్షన్‌ను కాంట్రాక్ట్ ఎగ్జిక్యూట్ చేస్తుంది. మరింత సమాచారం కోసం [డేటా ఫీల్డ్](/developers/docs/transactions/#the-data-field) చదవండి. + +పై ఉదాహరణలో `transfer(address,uin256,bytes calldata _data)` ఫంక్షన్‌తో `RecipientContract` చిరునామాకు ఒక ERC-223 టోకెన్ బదిలీ చేయబడాలి. డేటా పారామీటర్ `0xc2985578` (`foo()` ఫంక్షన్ యొక్క సిగ్నేచర్) అయితే, టోకెన్ డిపాజిట్ స్వీకరించిన తర్వాత foo() ఫంక్షన్ ఇన్వోక్ చేయబడుతుంది మరియు Foo() ఈవెంట్ ఫైర్ చేయబడుతుంది. + +టోకెన్ బదిలీ యొక్క `data`లో పారామీటర్లను కూడా ఎన్‌కోడ్ చేయవచ్చు, ఉదాహరణకు మనం `_someNumber` కోసం 12345 విలువతో bar() ఫంక్షన్‌ను కాల్ చేయవచ్చు. ఈ సందర్భంలో `data` తప్పనిసరిగా `0x0423a13200000000000000000000000000000000000000000000000000000000000004d2` ఉండాలి, ఇక్కడ `0x0423a132` అనేది `bar(uint256)` ఫంక్షన్ యొక్క సిగ్నేచర్ మరియు `00000000000000000000000000000000000000000000000000000000000004d2` అనేది uint256గా 12345. + +## పరిమితులు {#limitations} + +ERC-223 ప్రమాణంలో కనుగొనబడిన అనేక సమస్యలను ERC-223 పరిష్కరించినప్పటికీ, దానికి కూడా కొన్ని పరిమితులు ఉన్నాయి: + +- అంగీకారం మరియు అనుకూలత: ERC-223 ఇంకా విస్తృతంగా ఆమోదించబడలేదు, ఇది ఇప్పటికే ఉన్న టూల్స్ మరియు ప్లాట్‌ఫారమ్‌లతో దాని అనుకూలతను పరిమితం చేయవచ్చు. +- బ్యాక్‌వర్డ్ కంపాటిబిలిటీ: ERC-223, ERC-20తో బ్యాక్‌వర్డ్ కంపాటిబుల్ కాదు, అంటే ఇప్పటికే ఉన్న ERC-20 కాంట్రాక్టులు మరియు టూల్స్ మార్పులు లేకుండా ERC-223 టోకెన్‌లతో పనిచేయవు. +- గ్యాస్ ఖర్చులు: ERC-223 బదిలీలలో అదనపు తనిఖీలు మరియు కార్యాచరణలు ERC-20 లావాదేవీలతో పోలిస్తే అధిక గ్యాస్ ఖర్చులకు దారితీయవచ్చు. + +## మరింత సమాచారం {#further-reading} + +- [EIP-223: ERC-223 టోకెన్ ప్రమాణం](https://eips.ethereum.org/EIPS/eip-223) +- [ప్రారంభ ERC-223 ప్రతిపాదన](https://github.com/ethereum/eips/issues/223) diff --git a/public/content/translations/te/developers/docs/standards/tokens/erc-4626/index.md b/public/content/translations/te/developers/docs/standards/tokens/erc-4626/index.md new file mode 100644 index 00000000000..874117a9ca4 --- /dev/null +++ b/public/content/translations/te/developers/docs/standards/tokens/erc-4626/index.md @@ -0,0 +1,227 @@ +--- +title: "ERC-4626 టోకనైజ్డ్ వాల్ట్ ప్రమాణం" +description: "దిగుబడినిచ్చే వాల్ట్‌ల కోసం ఒక ప్రమాణం." +lang: te +--- + +## పరిచయం {#introduction} + +ERC-4626 అనేది దిగుబడినిచ్చే వాల్ట్‌ల సాంకేతిక పారామితులను ఆప్టిమైజ్ చేయడానికి మరియు ఏకీకృతం చేయడానికి ఒక ప్రమాణం. ఇది ఒకే అంతర్లీన ERC-20 టోకెన్ యొక్క వాటాలను సూచించే టోకనైజ్డ్ దిగుబడినిచ్చే వాల్ట్‌ల కోసం ఒక ప్రామాణిక APIని అందిస్తుంది. ERC-4626 ERC-20ని ఉపయోగించే టోకనైజ్డ్ వాల్ట్‌ల కోసం ఒక ఐచ్ఛిక పొడిగింపును కూడా వివరిస్తుంది, ఇది టోకెన్‌లను డిపాజిట్ చేయడం, ఉపసంహరించుకోవడం మరియు బ్యాలెన్స్‌లను చదవడం కోసం ప్రాథమిక కార్యాచరణను అందిస్తుంది. + +**దిగుబడినిచ్చే వాల్ట్‌లలో ERC-4626 పాత్ర** + +రుణ మార్కెట్లు, అగ్రిగేటర్లు మరియు అంతర్గతంగా వడ్డీనిచ్చే టోకెన్లు వివిధ వ్యూహాలను అమలు చేయడం ద్వారా వినియోగదారులు వారి క్రిప్టో టోకెన్లపై ఉత్తమ దిగుబడిని కనుగొనడంలో సహాయపడతాయి. ఈ వ్యూహాలు స్వల్ప వ్యత్యాసంతో చేయబడతాయి, ఇది దోషాలకు దారితీయవచ్చు లేదా అభివృద్ధి వనరులను వృధా చేయవచ్చు. + +దిగుబడినిచ్చే వాల్ట్‌లలోని ERC-4626 ఏకీకరణ ప్రయత్నాన్ని తగ్గిస్తుంది మరియు మరింత స్థిరమైన మరియు దృఢమైన అమలు నమూనాలను సృష్టించడం ద్వారా డెవలపర్‌ల నుండి తక్కువ ప్రత్యేక ప్రయత్నంతో వివిధ అప్లికేషన్‌లలో దిగుబడికి ప్రాప్యతను అన్‌లాక్ చేస్తుంది. + +ERC-4626 టోకెన్ గురించి [EIP-4626](https://eips.ethereum.org/EIPS/eip-4626)లో పూర్తిగా వివరించబడింది. + +**అసమకాలిక వాల్ట్ పొడిగింపు (ERC-7540)** + +ERC-4626 ఒక పరిమితి వరకు అటామిక్ డిపాజిట్లు మరియు రిడెంప్షన్‌ల కోసం ఆప్టిమైజ్ చేయబడింది. పరిమితిని చేరుకుంటే, కొత్త డిపాజిట్లు లేదా రిడెంప్షన్‌లు సమర్పించబడవు. వాల్ట్‌తో ఇంటర్‌ఫేస్ చేయడానికి ముందస్తు షరతుగా అసమకాలిక చర్యలు లేదా జాప్యాలు ఉన్న ఏ స్మార్ట్ కాంట్రాక్ట్ సిస్టమ్‌కైనా ఈ పరిమితి బాగా పనిచేయదు (ఉదా., వాస్తవ-ప్రపంచ ఆస్తి ప్రోటోకాల్‌లు, అండర్‌కొలేటరలైజ్డ్ లెండింగ్ ప్రోటోకాల్‌లు, క్రాస్-చైన్ లెండింగ్ ప్రోటోకాల్‌లు, లిక్విడ్ స్టేకింగ్ టోకెన్‌లు లేదా ఇన్సూరెన్స్ సేఫ్టీ మాడ్యూల్స్). + +ERC-7540 అసమకాలిక వినియోగ కేసుల కోసం ERC-4626 వాల్ట్‌ల యొక్క ప్రయోజనాన్ని విస్తరిస్తుంది. అసమకాలిక అభ్యర్థనలను క్లెయిమ్ చేయడానికి ఇప్పటికే ఉన్న వాల్ట్ ఇంటర్‌ఫేస్ (`deposit`/`withdraw`/`mint`/`redeem`) పూర్తిగా ఉపయోగించబడుతుంది. + +ERC-7540 పొడిగింపు గురించి [ERC-7540](https://eips.ethereum.org/EIPS/eip-7540)లో పూర్తిగా వివరించబడింది. + +**బహుళ-ఆస్తి వాల్ట్ పొడిగింపు (ERC-7575)** + +ERC-4626 మద్దతు ఇవ్వని ఒక వినియోగ సందర్భం ఏమిటంటే లిక్విడిటీ ప్రొవైడర్ (LP) టోకెన్‌ల వంటి బహుళ ఆస్తులు లేదా ఎంట్రీ పాయింట్‌లను కలిగి ఉన్న వాల్ట్‌లు. ERC-4626 స్వయంగా ERC-20గా ఉండాలనే అవసరం కారణంగా ఇవి సాధారణంగా గజిబిజిగా లేదా అననుకూలంగా ఉంటాయి. + +ERC-7575, ERC-4626 అమలు నుండి ERC-20 టోకెన్ అమలును బాహ్యీకరించడం ద్వారా బహుళ ఆస్తులతో కూడిన వాల్ట్‌లకు మద్దతును జోడిస్తుంది. + +ERC-7575 పొడిగింపు గురించి [ERC-7575](https://eips.ethereum.org/EIPS/eip-7575)లో పూర్తిగా వివరించబడింది. + +## అవసరాలు {#prerequisites} + +ఈ పేజీని బాగా అర్థం చేసుకోవడానికి, మీరు ముందుగా [టోకెన్ ప్రమాణాలు](/developers/docs/standards/tokens/) మరియు [ERC-20](/developers/docs/standards/tokens/erc-20/) గురించి చదవాలని మేము సిఫార్సు చేస్తున్నాము. + +## ERC-4626 ఫంక్షన్లు మరియు ఫీచర్లు: {#body} + +### పద్ధతులు {#methods} + +#### ఆస్తి {#asset} + +```solidity +function asset() public view returns (address assetTokenAddress) +``` + +ఈ ఫంక్షన్ అకౌంటింగ్, డిపాజిట్ చేయడం, ఉపసంహరించుకోవడం కోసం వాల్ట్ కోసం ఉపయోగించే అంతర్లీన టోకెన్ చిరునామాను అందిస్తుంది. + +#### మొత్తంఆస్తులు {#totalassets} + +```solidity +function totalAssets() public view returns (uint256) +``` + +ఈ ఫంక్షన్ వాల్ట్ ద్వారా కలిగి ఉన్న అంతర్లీన ఆస్తుల మొత్తం మొత్తాన్ని అందిస్తుంది. + +#### వాటాలుగా మార్చండి {#convertoshares} + +```solidity +function convertToShares(uint256 assets) public view returns (uint256 shares) +``` + +ఈ ఫంక్షన్ అందించిన `assets` మొత్తానికి వాల్ట్ ద్వారా మార్పిడి చేయబడే `shares` మొత్తాన్ని అందిస్తుంది. + +#### ఆస్తులుగా మార్చండి {#convertoassets} + +```solidity +function convertToAssets(uint256 shares) public view returns (uint256 assets) +``` + +ఈ ఫంక్షన్ అందించిన `shares` మొత్తానికి వాల్ట్ ద్వారా మార్పిడి చేయబడే `assets` మొత్తాన్ని అందిస్తుంది. + +#### గరిష్ట డిపాజిట్ {#maxdeposit} + +```solidity +function maxDeposit(address receiver) public view returns (uint256 maxAssets) +``` + +ఈ ఫంక్షన్ `రిసీవర్` కోసం ముద్రించిన వాటాలతో, ఒకే [`deposit`](#deposit) కాల్‌లో డిపాజిట్ చేయగల గరిష్ట మొత్తంలో అంతర్లీన ఆస్తులను అందిస్తుంది. + +#### డిపాజిట్ ప్రివ్యూ {#previewdeposit} + +```solidity +function previewDeposit(uint256 assets) public view returns (uint256 shares) +``` + +ఈ ఫంక్షన్ ప్రస్తుత బ్లాక్‌లో వారి డిపాజిట్ యొక్క ప్రభావాలను అనుకరించడానికి వినియోగదారులను అనుమతిస్తుంది. + +#### డిపాజిట్ {#deposit} + +```solidity +function deposit(uint256 assets, address receiver) public returns (uint256 shares) +``` + +ఈ ఫంక్షన్ అంతర్లీన టోకెన్‌ల `assets`ను వాల్ట్‌లోకి డిపాజిట్ చేస్తుంది మరియు `receiver`కి `shares` యాజమాన్యాన్ని మంజూరు చేస్తుంది. + +#### గరిష్ట మింట్ {#maxmint} + +```solidity +function maxMint(address receiver) public view returns (uint256 maxShares) +``` + +ఈ ఫంక్షన్ `రిసీవర్` కోసం ముద్రించిన వాటాలతో, ఒకే [`mint`](#mint) కాల్‌లో ముద్రించగల గరిష్ట వాటాల మొత్తాన్ని అందిస్తుంది. + +#### మింట్ ప్రివ్యూ {#previewmint} + +```solidity +function previewMint(uint256 shares) public view returns (uint256 assets) +``` + +ఈ ఫంక్షన్ ప్రస్తుత బ్లాక్‌లో వారి మింట్ యొక్క ప్రభావాలను అనుకరించడానికి వినియోగదారులను అనుమతిస్తుంది. + +#### మింట్ {#mint} + +```solidity +function mint(uint256 shares, address receiver) public returns (uint256 assets) +``` + +ఈ ఫంక్షన్ అంతర్లీన టోకెన్‌ల `assets`ను డిపాజిట్ చేయడం ద్వారా `receiver`కి సరిగ్గా `shares` వాల్ట్ షేర్‌లను మింట్ చేస్తుంది. + +#### గరిష్ట ఉపసంహరణ {#maxwithdraw} + +```solidity +function maxWithdraw(address owner) public view returns (uint256 maxAssets) +``` + +ఈ ఫంక్షన్ ఒకే [`withdraw`](#withdraw) కాల్‌తో `owner` బ్యాలెన్స్ నుండి ఉపసంహరించుకోగల గరిష్ట మొత్తంలో అంతర్లీన ఆస్తులను అందిస్తుంది. + +#### ఉపసంహరణ ప్రివ్యూ {#previewwithdraw} + +```solidity +function previewWithdraw(uint256 assets) public view returns (uint256 shares) +``` + +ఈ ఫంక్షన్ ప్రస్తుత బ్లాక్‌లో వారి ఉపసంహరణ యొక్క ప్రభావాలను అనుకరించడానికి వినియోగదారులను అనుమతిస్తుంది. + +#### ఉపసంహరించు {#withdraw} + +```solidity +function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares) +``` + +ఈ ఫంక్షన్ `owner` నుండి `shares`ను బర్న్ చేస్తుంది మరియు వాల్ట్ నుండి `receiver`కి సరిగ్గా `assets` టోకెన్‌ను పంపుతుంది. + +#### గరిష్ట రీడీమ్ {#maxredeem} + +```solidity +function maxRedeem(address owner) public view returns (uint256 maxShares) +``` + +ఈ ఫంక్షన్ ఒక [`redeem`](#redeem) కాల్ ద్వారా `owner` బ్యాలెన్స్ నుండి రీడీమ్ చేయగల గరిష్ట వాటాల మొత్తాన్ని అందిస్తుంది. + +#### రీడీమ్ ప్రివ్యూ {#previewredeem} + +```solidity +function previewRedeem(uint256 shares) public view returns (uint256 assets) +``` + +ఈ ఫంక్షన్ ప్రస్తుత బ్లాక్‌లో వారి రిడెంప్షన్ యొక్క ప్రభావాలను అనుకరించడానికి వినియోగదారులను అనుమతిస్తుంది. + +#### రీడీమ్ {#redeem} + +```solidity +function redeem(uint256 shares, address receiver, address owner) public returns (uint256 assets) +``` + +ఈ ఫంక్షన్ `owner` నుండి నిర్దిష్ట సంఖ్యలో `shares`ను రీడీమ్ చేస్తుంది మరియు వాల్ట్ నుండి `receiver`కి అంతర్లీన టోకెన్ యొక్క `assets`ను పంపుతుంది. + +#### మొత్తంసప్లై {#totalsupply} + +```solidity +function totalSupply() public view returns (uint256) +``` + +ప్రచారంలో ఉన్న రీడీమ్ చేయని వాల్ట్ వాటాల మొత్తం సంఖ్యను అందిస్తుంది. + +#### బ్యాలెన్స్ఆఫ్ {#balanceof} + +```solidity +function balanceOf(address owner) public view returns (uint256) +``` + +`owner` ప్రస్తుతం కలిగి ఉన్న వాల్ట్ వాటాల మొత్తం మొత్తాన్ని అందిస్తుంది. + +### ఇంటర్‌ఫేస్ యొక్క మ్యాప్ {#mapOfTheInterface} + +![ERC-4626 ఇంటర్‌ఫేస్ యొక్క మ్యాప్](./map-of-erc-4626.png) + +### ఈవెంట్‌లు {#events} + +#### డిపాజిట్ ఈవెంట్ + +[`mint`](#mint) మరియు [`deposit`](#deposit) పద్ధతుల ద్వారా వాల్ట్‌లోకి టోకెన్‌లను డిపాజిట్ చేసినప్పుడు **తప్పక** విడుదల చేయాలి. + +```solidity +event Deposit( + address indexed sender, + address indexed owner, + uint256 assets, + uint256 shares +) +``` + +ఇక్కడ `sender` `assets`ను `shares` కోసం మార్పిడి చేసిన వినియోగదారుడు మరియు ఆ `shares`ను `owner`కి బదిలీ చేశారు. + +#### ఉపసంహరణ ఈవెంట్ + +[`redeem`](#redeem) లేదా [`withdraw`](#withdraw) పద్ధతులలో డిపాజిటర్ ద్వారా వాల్ట్ నుండి వాటాలను ఉపసంహరించుకున్నప్పుడు **తప్పక** విడుదల చేయాలి. + +```solidity +event Withdraw( + address indexed sender, + address indexed receiver, + address indexed owner, + uint256 assets, + uint256 shares +) +``` + +ఇక్కడ `sender` ఉపసంహరణను ప్రేరేపించిన వినియోగదారుడు మరియు `owner` యాజమాన్యంలోని `shares`ను `assets` కోసం మార్పిడి చేసుకున్నాడు. `receiver` ఉపసంహరించబడిన `assets`ను అందుకున్న వినియోగదారుడు. + +## మరింత సమాచారం {#further-reading} + +- [EIP-4626: టోకనైజ్డ్ వాల్ట్ ప్రమాణం](https://eips.ethereum.org/EIPS/eip-4626) +- [ERC-4626: GitHub రెపో](https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC4626.sol) diff --git a/public/content/translations/te/developers/docs/standards/tokens/erc-721/index.md b/public/content/translations/te/developers/docs/standards/tokens/erc-721/index.md new file mode 100644 index 00000000000..6782887303c --- /dev/null +++ b/public/content/translations/te/developers/docs/standards/tokens/erc-721/index.md @@ -0,0 +1,248 @@ +--- +title: "ERC-721 నాన్-ఫంగిబుల్ టోకెన్ ప్రమాణం" +description: "ఇతీరియముపై ప్రత్యేకమైన డిజిటల్ ఆస్తులను సూచించే నాన్-ఫంగిబుల్ టోకెన్ల (NFTల) ప్రమాణమైన ERC-721 గురించి తెలుసుకోండి." +lang: te +--- + +## పరిచయం {#introduction} + +**నాన్-ఫంగిబుల్ టోకెన్ అంటే ఏమిటి?** + +ఒక నాన్-ఫంగిబుల్ టోకెన్ (NFT) ఏదైనా లేదా ఎవరినైనా ప్రత్యేకమైన మార్గంలో గుర్తించడానికి ఉపయోగించబడుతుంది. సేకరించదగిన వస్తువులు, యాక్సెస్ కీలు, లాటరీ టిక్కెట్లు, కచేరీలు మరియు క్రీడా మ్యాచ్‌ల కోసం నంబర్ చేసిన సీట్లు మొదలైనవాటిని అందించే ప్లాట్‌ఫారమ్‌లపై ఉపయోగించడానికి ఈ రకమైన టోకెన్ సరైనది. ఈ ప్రత్యేక రకమైన టోకెన్‌కు అద్భుతమైన అవకాశాలు ఉన్నాయి కాబట్టి ఇది సరైన ప్రమాణానికి అర్హమైనది, ERC-721 దానిని పరిష్కరించడానికి వచ్చింది! + +**ERC-721 అంటే ఏమిటి?** + +ERC-721 NFT కోసం ఒక ప్రమాణాన్ని పరిచయం చేస్తుంది, మరో మాటలో చెప్పాలంటే, ఈ రకమైన టోకెన్ ప్రత్యేకమైనది మరియు అదే స్మార్ట్ కాంట్రాక్ట్ నుండి మరొక టోకెన్ కంటే దాని వయస్సు, అరుదుగా ఉండటం లేదా దాని దృశ్యం వంటి వాటి వలన భిన్నమైన విలువను కలిగి ఉండవచ్చు. +ఆగండి, దృశ్యమా? + +అవును! అన్ని NFTలలో `tokenId` అని పిలువబడే `uint256` వేరియబుల్ ఉంటుంది, కాబట్టి ఏ ERC-721 కాంట్రాక్ట్ కోసమైనా, `కాంట్రాక్ట్ చిరునామా, uint256 tokenId` జత ప్రపంచవ్యాప్తంగా ప్రత్యేకంగా ఉండాలి. అది చెప్పాలంటే, ఒక డాప్‌కు "కన్వర్టర్" ఉండవచ్చు, అది `tokenId`ని ఇన్‌పుట్‌గా ఉపయోగించి, జాంబీలు, ఆయుధాలు, నైపుణ్యాలు లేదా అద్భుతమైన పిల్లుల వంటి అద్భుతమైన వాటి చిత్రాన్ని అవుట్‌పుట్ చేస్తుంది! + +## అవసరాలు {#prerequisites} + +- [ఖాతాలు](/developers/docs/accounts/) +- [స్మార్ట్ కాంట్రాక్టులు](/developers/docs/smart-contracts/) +- [టోకెన్ ప్రమాణాలు](/developers/docs/standards/tokens/) + +## బాడీ {#body} + +జనవరి 2018లో విలియం ఎంట్రికెన్, డీటర్ షిర్లీ, జాకబ్ ఎవాన్స్, నస్టాసియా సాచ్స్ ద్వారా ప్రతిపాదించబడిన ERC-721 (Ethereum రిక్వెస్ట్ ఫర్ కామెంట్స్ 721), స్మార్ట్ కాంట్రాక్ట్‌లలో టోకెన్‌ల కోసం APIని అమలు చేసే ఒక నాన్-ఫంగిబుల్ టోకెన్ ప్రమాణం. + +ఇది ఒక ఖాతా నుండి మరొక ఖాతాకు టోకెన్‌లను బదిలీ చేయడం, ఒక ఖాతా యొక్క ప్రస్తుత టోకెన్ బ్యాలెన్స్‌ను పొందడం, ఒక నిర్దిష్ట టోకెన్ యజమానిని పొందడం మరియు నెట్‌వర్క్‌లో అందుబాటులో ఉన్న టోకెన్ యొక్క మొత్తం సరఫరాను పొందడం వంటి కార్యాచరణలను అందిస్తుంది. +వీటితో పాటు, ఒక ఖాతా నుండి కొంత మొత్తంలో టోకెన్‌ను మూడవ పార్టీ ఖాతా ద్వారా తరలించవచ్చని ఆమోదించడం వంటి ఇతర కార్యాచరణలు కూడా దీనికి ఉన్నాయి. + +ఒక స్మార్ట్ కాంట్రాక్ట్ కింది పద్ధతులు మరియు ఈవెంట్‌లను అమలు చేస్తే దానిని ERC-721 నాన్-ఫంగిబుల్ టోకెన్ కాంట్రాక్ట్ అని పిలవవచ్చు మరియు, ఒకసారి అమలు చేయబడిన తర్వాత, ఇది ఇతీరియములో సృష్టించబడిన టోకెన్‌ల ట్రాక్‌ను ఉంచడానికి బాధ్యత వహిస్తుంది. + +[EIP-721](https://eips.ethereum.org/EIPS/eip-721) నుండి: + +### పద్ధతులు {#methods} + +```solidity + function balanceOf(address _owner) external view returns (uint256); + function ownerOf(uint256 _tokenId) external view returns (address); + function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable; + function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; + function transferFrom(address _from, address _to, uint256 _tokenId) external payable; + function approve(address _approved, uint256 _tokenId) external payable; + function setApprovalForAll(address _operator, bool _approved) external; + function getApproved(uint256 _tokenId) external view returns (address); + function isApprovedForAll(address _owner, address _operator) external view returns (bool); +``` + +### ఈవెంట్‌లు {#events} + +```solidity + event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); + event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); + event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); +``` + +### ఉదాహరణలు {#web3py-example} + +ఇతీరియములో ఏదైనా ERC-721 టోకెన్ కాంట్రాక్ట్‌ను పరిశీలించడానికి విషయాలను మన కోసం సులభతరం చేయడంలో ఒక ప్రమాణం ఎంత ముఖ్యమైనదో చూద్దాం. +ఏదైనా ERC-721 టోకెన్‌కు ఇంటర్‌ఫేస్‌ను సృష్టించడానికి మనకు కేవలం కాంట్రాక్ట్ అప్లికేషన్ బైనరీ ఇంటర్‌ఫేస్ (ABI) అవసరం. దిగువన మీరు చూడగలిగినట్లుగా +మేము దీనిని సులభమైన ఉదాహరణగా చేయడానికి ఒక సరళీకృత ABI ని ఉపయోగిస్తాము. + +#### Web3.py ఉదాహరణ {#web3py-example} + +మొదట, మీరు [Web3.py](https://web3py.readthedocs.io/en/stable/quickstart.html#installation) పైథాన్ లైబ్రరీని ఇన్‌స్టాల్ చేసుకున్నారని నిర్ధారించుకోండి: + +``` +pip install web3 +``` + +```python +from web3 import Web3 +from web3._utils.events import get_event_data + + +w3 = Web3(Web3.HTTPProvider("https://cloudflare-eth.com")) + +ck_token_addr = "0x06012c8cf97BEaD5deAe237070F9587f8E7A266d" # క్రిప్టోకిట్టీస్ కాంట్రాక్ట్ + +acc_address = "0xb1690C08E213a35Ed9bAb7B318DE14420FB57d8C" # క్రిప్టోకిట్టీస్ సేల్స్ వేలం + +# ఇది ఒక ERC-721 NFT కాంట్రాక్ట్ యొక్క సరళీకృత కాంట్రాక్ట్ అప్లికేషన్ బైనరీ ఇంటర్‌ఫేస్ (ABI). +# ఇది కేవలం పద్ధతులను మాత్రమే బహిర్గతం చేస్తుంది: balanceOf(address), name(), ownerOf(tokenId), symbol(), totalSupply() +simplified_abi = [ + { + 'inputs': [{'internalType': 'address', 'name': 'owner', 'type': 'address'}], + 'name': 'balanceOf', + 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], + 'payable': False, 'stateMutability': 'view', 'type': 'function', 'constant': True + }, + { + 'inputs': [], + 'name': 'name', + 'outputs': [{'internalType': 'string', 'name': '', 'type': 'string'}], + 'stateMutability': 'view', 'type': 'function', 'constant': True + }, + { + 'inputs': [{'internalType': 'uint256', 'name': 'tokenId', 'type': 'uint256'}], + 'name': 'ownerOf', + 'outputs': [{'internalType': 'address', 'name': '', 'type': 'address'}], + 'payable': False, 'stateMutability': 'view', 'type': 'function', 'constant': True + }, + { + 'inputs': [], + 'name': 'symbol', + 'outputs': [{'internalType': 'string', 'name': '', 'type': 'string'}], + 'stateMutability': 'view', 'type': 'function', 'constant': True + }, + { + 'inputs': [], + 'name': 'totalSupply', + 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], + 'stateMutability': 'view', 'type': 'function', 'constant': True + }, +] + +ck_extra_abi = [ + { + 'inputs': [], + 'name': 'pregnantKitties', + 'outputs': [{'name': '', 'type': 'uint256'}], + 'payable': False, 'stateMutability': 'view', 'type': 'function', 'constant': True + }, + { + 'inputs': [{'name': '_kittyId', 'type': 'uint256'}], + 'name': 'isPregnant', + 'outputs': [{'name': '', 'type': 'bool'}], + 'payable': False, 'stateMutability': 'view', 'type': 'function', 'constant': True + } +] + +ck_contract = w3.eth.contract(address=w3.to_checksum_address(ck_token_addr), abi=simplified_abi+ck_extra_abi) +name = ck_contract.functions.name().call() +symbol = ck_contract.functions.symbol().call() +kitties_auctions = ck_contract.functions.balanceOf(acc_address).call() +print(f"{name} [{symbol}] NFTs in Auctions: {kitties_auctions}") + +pregnant_kitties = ck_contract.functions.pregnantKitties().call() +print(f"{name} [{symbol}] NFTs Pregnants: {pregnant_kitties}") + +# బదిలీ చేయబడిన కిట్టీల గురించి సమాచారం పొందడానికి ట్రాన్స్‌ఫర్ ఈవెంట్ ABIని ఉపయోగించడం. +tx_event_abi = { + 'anonymous': False, + 'inputs': [ + {'indexed': False, 'name': 'from', 'type': 'address'}, + {'indexed': False, 'name': 'to', 'type': 'address'}, + {'indexed': False, 'name': 'tokenId', 'type': 'uint256'}], + 'name': 'Transfer', + 'type': 'event' +} + +# లాగ్స్‌ను ఫిల్టర్ చేయడానికి మాకు ఈవెంట్ యొక్క సంతకం అవసరం +event_signature = w3.keccak(text="Transfer(address,address,uint256)").hex() + +logs = w3.eth.get_logs({ + "fromBlock": w3.eth.block_number - 120, + "address": w3.to_checksum_address(ck_token_addr), + "topics": [event_signature] +}) + +# గమనికలు: +# - ఏ ట్రాన్స్‌ఫర్ ఈవెంట్ తిరిగి రాకపోతే బ్లాక్‌ల సంఖ్యను 120 నుండి పెంచండి. +# - మీకు ఏ ట్రాన్స్‌ఫర్ ఈవెంట్ కనుగొనబడకపోతే, మీరు ఇక్కడ కూడా ఒక tokenIdని పొందడానికి ప్రయత్నించవచ్చు: +# https://etherscan.io/address/0x06012c8cf97BEaD5deAe237070F9587f8E7A266d#events +# ఈవెంట్ యొక్క లాగ్‌లను విస్తరించడానికి క్లిక్ చేసి, దాని "tokenId" వాదనను కాపీ చేయండి +recent_tx = [get_event_data(w3.codec, tx_event_abi, log)["args"] for log in logs] + +if recent_tx: + kitty_id = recent_tx[0]['tokenId'] # పైన ఉన్న లింక్ నుండి "tokenId"ని ఇక్కడ అతికించండి + is_pregnant = ck_contract.functions.isPregnant(kitty_id).call() + print(f"{name} [{symbol}] NFTs {kitty_id} is pregnant: {is_pregnant}") +``` + +క్రిప్టోకిట్టీస్ కాంట్రాక్ట్‌లో ప్రామాణికమైన వాటి కంటే కొన్ని ఆసక్తికరమైన ఈవెంట్‌లు ఉన్నాయి. + +వాటిలో రెండింటిని చూద్దాం, `Pregnant` మరియు `Birth`. + +```python +# కొత్త కిట్టీల గురించి సమాచారం పొందడానికి ప్రెగ్నెంట్ మరియు బర్త్ ఈవెంట్స్ ABIని ఉపయోగించడం. +ck_extra_events_abi = [ + { + 'anonymous': False, + 'inputs': [ + {'indexed': False, 'name': 'owner', 'type': 'address'}, + {'indexed': False, 'name': 'matronId', 'type': 'uint256'}, + {'indexed': False, 'name': 'sireId', 'type': 'uint256'}, + {'indexed': False, 'name': 'cooldownEndBlock', 'type': 'uint256'}], + 'name': 'Pregnant', + 'type': 'event' + }, + { + 'anonymous': False, + 'inputs': [ + {'indexed': False, 'name': 'owner', 'type': 'address'}, + {'indexed': False, 'name': 'kittyId', 'type': 'uint256'}, + {'indexed': False, 'name': 'matronId', 'type': 'uint256'}, + {'indexed': False, 'name': 'sireId', 'type': 'uint256'}, + {'indexed': False, 'name': 'genes', 'type': 'uint256'}], + 'name': 'Birth', + 'type': 'event' + }] + +# లాగ్స్‌ను ఫిల్టర్ చేయడానికి మాకు ఈవెంట్ యొక్క సంతకం అవసరం +ck_event_signatures = [ + w3.keccak(text="Pregnant(address,uint256,uint256,uint256)").hex(), + w3.keccak(text="Birth(address,uint256,uint256,uint256,uint256)").hex(), +] + +# ఇది ఒక ప్రెగ్నెంట్ ఈవెంట్: +# - https://etherscan.io/tx/0xc97eb514a41004acc447ac9d0d6a27ea6da305ac8b877dff37e49db42e1f8cef#eventlog +pregnant_logs = w3.eth.get_logs({ + "fromBlock": w3.eth.block_number - 120, + "address": w3.to_checksum_address(ck_token_addr), + "topics": [ck_event_signatures[0]] +}) + +recent_pregnants = [get_event_data(w3.codec, ck_extra_events_abi[0], log)["args"] for log in pregnant_logs] + +# ఇది ఒక బర్త్ ఈవెంట్: +# - https://etherscan.io/tx/0x3978028e08a25bb4c44f7877eb3573b9644309c044bf087e335397f16356340a +birth_logs = w3.eth.get_logs({ + "fromBlock": w3.eth.block_number - 120, + "address": w3.to_checksum_address(ck_token_addr), + "topics": [ck_event_signatures[1]] +}) + +recent_births = [get_event_data(w3.codec, ck_extra_events_abi[1], log)["args"] for log in birth_logs] +``` + +## ప్రజాదరణ పొందిన NFTలు {#popular-nfts} + +- [Etherscan NFT ట్రాకర్](https://etherscan.io/nft-top-contracts) బదిలీల పరిమాణం ద్వారా ఇతీరియములో అగ్ర NFTలను జాబితా చేస్తుంది. +- [CryptoKitties](https://www.cryptokitties.co/) అనేది మనం క్రిప్టోకిట్టీస్ అని పిలిచే పెంపకానికి, సేకరించడానికి మరియు ఎంతో ఆరాధనీయమైన జీవుల చుట్టూ కేంద్రీకృతమైన ఒక గేమ్. +- [Sorare](https://sorare.com/) ఒక గ్లోబల్ ఫాంటసీ ఫుట్‌బాల్ గేమ్, ఇక్కడ మీరు పరిమిత ఎడిషన్ సేకరించదగిన వస్తువులను సేకరించవచ్చు, మీ జట్లను నిర్వహించవచ్చు మరియు బహుమతులు సంపాదించడానికి పోటీపడవచ్చు. +- [ఇతీరియము నేమ్ సర్వీస్ (ENS)](https://ens.domains/) బ్లాక్‌చైన్‌ పైన మరియు బయట వనరులను సరళమైన, మానవ-చదవగల పేర్లను ఉపయోగించి చిరునామా చేయడానికి సురక్షితమైన & వికేంద్రీకృత మార్గాన్ని అందిస్తుంది. +- [POAP](https://poap.xyz) ఈవెంట్‌లకు హాజరయ్యే లేదా నిర్దిష్ట చర్యలను పూర్తి చేసే వ్యక్తులకు ఉచిత NFTలను అందిస్తుంది. POAPలను సృష్టించడం మరియు పంపిణీ చేయడం ఉచితం. +- [Unstoppable Domains](https://unstoppabledomains.com/) అనేది శాన్ ఫ్రాన్సిస్కో ఆధారిత సంస్థ, ఇది బ్లాక్‌చైన్‌లపై డొమైన్‌లను నిర్మిస్తోంది. బ్లాక్‌చైన్ డొమైన్‌లు క్రిప్టోకరెన్సీ చిరునామాలను మానవ-చదవగల పేర్లతో భర్తీ చేస్తాయి మరియు సెన్సార్‌షిప్-నిరోధక వెబ్‌సైట్‌లను ప్రారంభించడానికి ఉపయోగించవచ్చు. +- [Gods Unchained Cards](https://godsunchained.com/) ఇతీరియము బ్లాక్‌చైన్‌పై ఒక TCG, ఇది గేమ్‌లోని ఆస్తులకు నిజమైన యాజమాన్యాన్ని తీసుకురావడానికి NFTలను ఉపయోగిస్తుంది. +- [Bored Ape Yacht Club](https://boredapeyachtclub.com) అనేది 10,000 ప్రత్యేకమైన NFTల సమాహారం, ఇది నిరూపించదగిన-అరుదైన కళాఖండంగా ఉండటంతో పాటు, క్లబ్‌కు సభ్యత్వ టోకెన్‌గా పనిచేస్తుంది, కమ్యూనిటీ ప్రయత్నాల ఫలితంగా కాలక్రమేణా పెరిగే సభ్యుల ప్రోత్సాహకాలు మరియు ప్రయోజనాలను అందిస్తుంది. + +## మరింత సమాచారం {#further-reading} + +- [EIP-721: ERC-721 నాన్-ఫంగిబుల్ టోకెన్ ప్రమాణం](https://eips.ethereum.org/EIPS/eip-721) +- [OpenZeppelin - ERC-721 పత్రాలు](https://docs.openzeppelin.com/contracts/3.x/erc721) +- [OpenZeppelin - ERC-721 అమలు](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol) +- [Alchemy NFT API](https://www.alchemy.com/docs/reference/nft-api-quickstart) diff --git a/public/content/translations/te/developers/docs/standards/tokens/erc-777/index.md b/public/content/translations/te/developers/docs/standards/tokens/erc-777/index.md new file mode 100644 index 00000000000..fa53f31e02d --- /dev/null +++ b/public/content/translations/te/developers/docs/standards/tokens/erc-777/index.md @@ -0,0 +1,45 @@ +--- +title: "ERC-777 టోకెన్ ప్రమాణం" +description: "భద్రత కోసం ERC-20 సిఫార్సు చేయబడినప్పటికీ, హుక్స్‌తో మెరుగైన ఫంగిబుల్ టోకెన్ ప్రమాణమైన ERC-777 గురించి తెలుసుకోండి." +lang: te +--- + +## హెచ్చరిక {#warning} + +**[వివిధ రూపాల్లోని దాడులకు గురయ్యే అవకాశం](https://github.com/OpenZeppelin/openzeppelin-contracts/issues/2620) కారణంగా, ERC-777ని సరిగ్గా అమలు చేయడం కష్టం. దానికి బదులుగా [ERC-20](/developers/docs/standards/tokens/erc-20/)ని ఉపయోగించాలని సిఫార్సు చేయబడింది.** ఈ పేజీ చారిత్రక ఆర్కైవ్‌గా మిగిలి ఉంది. + +## పరిచయం? {#introduction} + +ERC-777 అనేది ఇప్పటికే ఉన్న [ERC-20](/developers/docs/standards/tokens/erc-20/) ప్రమాణాన్ని మెరుగుపరిచే ఒక ఫంగిబుల్ టోకెన్ ప్రమాణం. + +## అవసరాలు {#prerequisites} + +ఈ పేజీని మరింత బాగా అర్థం చేసుకోవడానికి, మీరు మొదట [ERC-20](/developers/docs/standards/tokens/erc-20/) గురించి చదవాలని మేము సిఫార్సు చేస్తున్నాము. + +## ERC-20 కంటే ERC-777 ఏ మెరుగుదలలను ప్రతిపాదిస్తుంది? {#-erc-777-vs-erc-20} + +ERC-777, ERC-20 కంటే క్రింది మెరుగుదలలను అందిస్తుంది. + +### హుక్స్ {#hooks} + +హుక్స్ అనేవి స్మార్ట్ కాంట్రాక్ట్ కోడ్‌లో వివరించబడిన ఒక ఫంక్షన్. కాంట్రాక్ట్ ద్వారా టోకెన్‌లను పంపినప్పుడు లేదా స్వీకరించినప్పుడు హుక్స్ కాల్ చేయబడతాయి. ఇది ఇన్‌కమింగ్ లేదా అవుట్‌గోయింగ్ టోకెన్‌లకు ప్రతిస్పందించడానికి ఒక స్మార్ట్ కాంట్రాక్ట్‌ను అనుమతిస్తుంది. + +[ERC-1820](https://eips.ethereum.org/EIPS/eip-1820) ప్రమాణాన్ని ఉపయోగించి హుక్స్ నమోదు చేయబడతాయి మరియు కనుగొనబడతాయి. + +#### హుక్స్ ఎందుకు గొప్పవి? {#why-are-hooks-great} + +1. దీనిని సాధించడానికి డబుల్ కాల్ (`approve`/`transferFrom`) అవసరమయ్యే [ERC-20](https://eips.ethereum.org/EIPS/eip-20) వలె కాకుండా, ఒకే లావాదేవీలో ఒక కాంట్రాక్ట్‌కు టోకెన్‌లను పంపడానికి మరియు కాంట్రాక్ట్‌కు తెలియజేయడానికి హుక్స్ అనుమతిస్తాయి. +2. హుక్స్ నమోదు చేయని కాంట్రాక్టులు ERC-777తో అనుకూలంగా లేవు. స్వీకరించే కాంట్రాక్ట్ హుక్‌ను నమోదు చేయనప్పుడు పంపే కాంట్రాక్ట్ లావాదేవీని రద్దు చేస్తుంది. ఇది నాన్-ERC-777 స్మార్ట్ కాంట్రాక్టులకు ప్రమాదవశాత్తు బదిలీలను నివారిస్తుంది. +3. హుక్స్ లావాదేవీలను తిరస్కరించగలవు. + +### దశాంశాలు {#decimals} + +ఈ ప్రమాణం ERC-20లో `decimals` వలన కలిగే గందరగోళాన్ని కూడా పరిష్కరిస్తుంది. ఈ స్పష్టత డెవలపర్ అనుభవాన్ని మెరుగుపరుస్తుంది. + +### ERC-20తో వెనుకబడిన అనుకూలత {#backwards-compatibility-with-erc-20} + +ERC-777 కాంట్రాక్టులతో అవి ERC-20 కాంట్రాక్టులు అయినట్లుగా ఇంటరాక్ట్ అవ్వవచ్చు. + +## మరింత చదవడానికి {#further-reading} + +[EIP-777: టోకెన్ ప్రమాణం](https://eips.ethereum.org/EIPS/eip-777) diff --git a/public/content/translations/te/developers/docs/standards/tokens/index.md b/public/content/translations/te/developers/docs/standards/tokens/index.md new file mode 100644 index 00000000000..132676a3da5 --- /dev/null +++ b/public/content/translations/te/developers/docs/standards/tokens/index.md @@ -0,0 +1,41 @@ +--- +title: "టోకెన్ ప్రమాణాలు" +description: "ఫంగిబుల్ మరియు నాన్-ఫంగిబుల్ టోకెన్‌ల కొరకు ERC-20, ERC-721, మరియు ERC-1155తో సహా ఇతీరియము టోకెన్ ప్రమాణాలను అన్వేషించండి." +lang: te +incomplete: true +--- + +## పరిచయం {#introduction} + +అనేక ఇతీరియము అభివృద్ధి ప్రమాణాలు టోకెన్ ఇంటర్‌ఫేస్‌లపై దృష్టి పెడతాయి. ఈ ప్రమాణాలు స్మార్ట్ కాంట్రాక్ట్‌లు కంపోజబుల్‌గా ఉండేలా చూసుకోవడంలో సహాయపడతాయి, కాబట్టి ఒక కొత్త ప్రాజెక్ట్ ఒక టోకెన్‌ను జారీ చేసినప్పుడు, అది ఇప్పటికే ఉన్న వికేంద్రీకృత ఎక్స్ఛేంజీలు మరియు అప్లికేషన్‌లతో అనుకూలంగా ఉంటుంది. + +ఇతీరియము పర్యావరణ వ్యవస్థ అంతటా టోకెన్‌లు ఎలా ప్రవర్తిస్తాయో మరియు ఇంటరాక్ట్ అవుతాయో టోకెన్ ప్రమాణాలు నిర్వచిస్తాయి. అవి డెవలపర్‌లకు కొత్తగా ఏమీ కనుక్కోకుండా సులభంగా నిర్మించడానికి వీలు కల్పిస్తాయి, టోకెన్‌లు వాలెట్లు, ఎక్స్ఛేంజీలు మరియు DeFi ప్లాట్‌ఫామ్‌లతో సజావుగా పనిచేస్తాయని నిర్ధారిస్తాయి. గేమింగ్, పాలన, లేదా ఇతర వినియోగ సందర్భాలలో అయినా, ఈ ప్రమాణాలు స్థిరత్వాన్ని అందిస్తాయి మరియు ఇతీరియమును మరింత పరస్పరం అనుసంధానిస్తాయి. + +## అవసరాలు {#prerequisites} + +- [ఇతీరియము అభివృద్ధి ప్రమాణాలు](/developers/docs/standards/) +- [స్మార్ట్ కాంట్రాక్టులు](/developers/docs/smart-contracts/) + +## టోకెన్ ప్రమాణాలు {#token-standards} + +ఇతీరియములో అత్యంత ప్రజాదరణ పొందిన కొన్ని టోకెన్ ప్రమాణాలు ఇక్కడ ఉన్నాయి: + +- [ERC-20](/developers/docs/standards/tokens/erc-20/) - ఓటింగ్ టోకెన్‌లు, స్టాకింగ్ టోకెన్‌లు లేదా వర్చువల్ కరెన్సీల వంటి ఫంజిబుల్ (పరస్పరం మార్చుకోగల) టోకెన్‌ల కోసం ఒక ప్రామాణిక ఇంటర్‌ఫేస్. + +### NFT ప్రమాణాలు {#nft-standards} + +- [ERC-721](/developers/docs/standards/tokens/erc-721/) - కళాఖండం లేదా పాట కోసం ఒక దస్తావేజు వంటి నాన్-ఫంజిబుల్ టోకెన్‌ల కోసం ఒక ప్రామాణిక ఇంటర్‌ఫేస్. +- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - ERC-1155 మరింత సమర్థవంతమైన ట్రేడ్‌లు మరియు లావాదేవీల బండ్లింగ్‌ను అనుమతిస్తుంది – తద్వారా ఖర్చులను ఆదా చేస్తుంది. ఈ టోకెన్ ప్రమాణం యుటిలిటీ టోకెన్‌లను ($BNB లేదా $BAT వంటివి) మరియు క్రిప్టోపంక్స్ వంటి నాన్-ఫంగిబుల్ టోకెన్‌లను సృష్టించడానికి అనుమతిస్తుంది. + +[ERC](https://eips.ethereum.org/erc) ప్రతిపాదనల పూర్తి జాబితా. + +## మరింత సమాచారం {#further-reading} + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ + +## సంబంధిత ట్యుటోరియల్స్ {#related-tutorials} + +- [టోకెన్ ఇంటిగ్రేషన్ చెక్‌లిస్ట్](/developers/tutorials/token-integration-checklist/) _– టోకెన్‌లతో ఇంటరాక్ట్ అయ్యేటప్పుడు పరిగణించవలసిన విషయాల చెక్‌లిస్ట్._ +- [ERC20 టోకెన్ స్మార్ట్ కాంట్రాక్ట్‌ను అర్థం చేసుకోండి](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _– ఒక ఇతీరియము టెస్ట్ నెట్‌వర్క్‌లో మీ మొదటి స్మార్ట్ కాంట్రాక్ట్‌ను డిప్లాయ్ చేయడానికి ఒక పరిచయం._ +- [ఒక Solidity స్మార్ట్ కాంట్రాక్ట్ నుండి ERC20 టోకెన్‌ల బదిలీలు మరియు ఆమోదం](/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/) _– Solidity భాషను ఉపయోగించి టోకెన్‌తో ఇంటరాక్ట్ అవ్వడానికి స్మార్ట్ కాంట్రాక్ట్‌ను ఎలా ఉపయోగించాలో._ +- [ఒక ERC721 మార్కెట్‌ను అమలు చేయడం [ఒక హౌ-టు గైడ్]](/developers/tutorials/how-to-implement-an-erc721-market/) _– ఒక వికేంద్రీకృత క్లాసిఫైడ్స్ బోర్డులో టోకనైజ్డ్ ఐటమ్‌లను అమ్మకానికి ఎలా పెట్టాలో._ diff --git a/public/content/translations/te/developers/docs/storage/index.md b/public/content/translations/te/developers/docs/storage/index.md new file mode 100644 index 00000000000..311a20c05be --- /dev/null +++ b/public/content/translations/te/developers/docs/storage/index.md @@ -0,0 +1,216 @@ +--- +title: "వికేంద్రీకృత నిల్వ" +description: "వికేంద్రీకృత నిల్వ అంటే ఏమిటి మరియు దానిని ఒక డాప్‌లో విలీనం చేయడానికి అందుబాటులో ఉన్న సాధనాల యొక్క అవలోకనం." +lang: te +--- + +ఒకే కంపెనీ లేదా సంస్థ ద్వారా నిర్వహించబడే కేంద్రీకృత సర్వర్‌లా కాకుండా, వికేంద్రీకృత నిల్వ వ్యవస్థలు మొత్తం డేటాలో కొంత భాగాన్ని కలిగి ఉన్న యూజర్-ఆపరేటర్‌ల పీర్-టు-పీర్ నెట్‌వర్క్‌ను కలిగి ఉంటాయి, ఇది ఒక స్థితిస్థాపక ఫైల్ నిల్వ భాగస్వామ్య వ్యవస్థను సృష్టిస్తుంది. ఇవి బ్లాక్‌చెయిన్-ఆధారిత అప్లికేషన్‌లో లేదా ఏదైనా పీర్-టు-పీర్-ఆధారిత నెట్‌వర్క్‌లో ఉండవచ్చు. + +Ethereum కూడా ఒక వికేంద్రీకృత నిల్వ వ్యవస్థగా ఉపయోగించబడుతుంది, మరియు అన్ని స్మార్ట్ కాంట్రాక్టులలో కోడ్ నిల్వ విషయానికి వస్తే అది అలాగే ఉంది. అయితే, పెద్ద మొత్తంలో డేటా విషయానికి వస్తే, Ethereum దాని కోసం రూపొందించబడలేదు. చైన్ స్థిరంగా పెరుగుతోంది, కానీ ఈ రచన రాసే సమయానికి, Ethereum చైన్ సుమారుగా 500GB - 1TB ([క్లయింట్‌పై ఆధారపడి](https://etherscan.io/chartsync/chaindefault)) ఉంది మరియు నెట్‌వర్క్‌లోని ప్రతి నోడ్ మొత్తం డేటాను నిల్వ చేయగలగాలి. చైన్ పెద్ద మొత్తంలో డేటాకు (చెప్పాలంటే 5TBలు) విస్తరించినట్లయితే, అన్ని నోడ్‌లు రన్ అవ్వడం కొనసాగించడం సాధ్యం కాదు. అలాగే, [గ్యాస్](/developers/docs/gas) ఫీజుల కారణంగా మెయిన్‌నెట్‌కు ఇంత డేటాను అమలు చేయడానికి అయ్యే ఖర్చు నిషేధాత్మకంగా ఖరీదైనది. + +ఈ పరిమితుల కారణంగా, పెద్ద మొత్తంలో డేటాను వికేంద్రీకృత పద్ధతిలో నిల్వ చేయడానికి మనకు వేరే చైన్ లేదా పద్దతి అవసరం. + +వికేంద్రీకృత నిల్వ (dStorage) ఎంపికలను చూస్తున్నప్పుడు, వినియోగదారుడు కొన్ని విషయాలను గుర్తుంచుకోవాలి. + +- స్థిరత్వ యంత్రాంగం / ప్రోత్సాహక నిర్మాణం +- డేటా నిలుపుదల అమలు +- వికేంద్రీయత +- ఏకాభిప్రాయం + +## స్థిరత్వ యంత్రాంగం / ప్రోత్సాహక నిర్మాణం {#persistence-mechanism} + +### బ్లాక్‌చెయిన్-ఆధారిత {#blockchain-based} + +ఒక డేటా ముక్క శాశ్వతంగా ఉండాలంటే, మనం ఒక స్థిరత్వ యంత్రాంగాన్ని ఉపయోగించాలి. ఉదాహరణకు, Ethereumలో, స్థిరత్వ యంత్రాంగం ఏమిటంటే, ఒక నోడ్‌ను నడుపుతున్నప్పుడు మొత్తం చైన్‌ను లెక్కలోకి తీసుకోవాలి. కొత్త డేటా ముక్కలు చైన్ చివర తగిలించబడతాయి, మరియు అది పెరుగుతూనే ఉంటుంది - ప్రతి నోడ్ పొందుపరిచిన మొత్తం డేటాను పునరావృతం చేయవలసి ఉంటుంది. + +దీనిని **బ్లాక్‌చెయిన్-ఆధారిత** స్థిరత్వం అని అంటారు. + +బ్లాక్‌చెయిన్-ఆధారిత స్థిరత్వంతో ఉన్న సమస్య ఏమిటంటే, చైన్ నిర్వహించడానికి మరియు మొత్తం డేటాను సాధ్యమయ్యేలా నిల్వ చేయడానికి చాలా పెద్దదిగా మారవచ్చు (ఉదా., [అనేక మూలాలు](https://healthit.com.au/how-big-is-the-internet-and-how-do-we-measure-it/) ఇంటర్నెట్‌కు 40 జెటాబైట్ల కంటే ఎక్కువ నిల్వ సామర్థ్యం అవసరమని అంచనా వేస్తాయి). + +బ్లాక్‌చెయిన్‌లో కొంత రకమైన ప్రోత్సాహక నిర్మాణం కూడా ఉండాలి. బ్లాక్‌చెయిన్-ఆధారిత స్థిరత్వం కోసం, వాలిడేటర్‌కు చెల్లింపు చేయబడుతుంది. డేటాను చైన్‌కు జోడించినప్పుడు, డేటాను జోడించడానికి వాలిడేటర్‌లకు చెల్లించబడుతుంది. + +బ్లాక్‌చెయిన్-ఆధారిత స్థిరత్వం ఉన్న ప్లాట్‌ఫారమ్‌లు: + +- ఇతీరియము +- [Arweave](https://www.arweave.org/) + +### కాంట్రాక్ట్-ఆధారిత {#contract-based} + +**కాంట్రాక్ట్-ఆధారిత** స్థిరత్వం ప్రతి నోడ్ ద్వారా డేటాను పునరావృతం చేయలేమని మరియు శాశ్వతంగా నిల్వ చేయలేమని, బదులుగా కాంట్రాక్ట్ ఒప్పందాలతో నిర్వహించబడాలి అనే అంతర్ దృష్టిని కలిగి ఉంటుంది. ఇవి కొంత కాలం పాటు డేటా ముక్కను కలిగి ఉంటామని వాగ్దానం చేసిన బహుళ నోడ్‌లతో చేసుకున్న ఒప్పందాలు. డేటాను నిలబెట్టుకోవడానికి అవి అయిపోయినప్పుడల్లా వాటిని వాపసు చేయాలి లేదా పునరుద్ధరించాలి. + +చాలా సందర్భాలలో, మొత్తం డేటాను ఆన్‌చైన్‌లో నిల్వ చేయడానికి బదులుగా, చైన్‌లో డేటా ఎక్కడ ఉందో దాని హాష్ నిల్వ చేయబడుతుంది. ఈ విధంగా, మొత్తం డేటాను ఉంచడానికి మొత్తం చైన్‌ను స్కేల్ చేయవలసిన అవసరం లేదు. + +కాంట్రాక్ట్-ఆధారిత స్థిరత్వం ఉన్న ప్లాట్‌ఫారమ్‌లు: + +- [Filecoin](https://docs.filecoin.io/basics/what-is-filecoin) +- [Skynet](https://sia.tech/) +- [Storj](https://storj.io/) +- [Züs](https://zus.network/) +- [Crust Network](https://crust.network) +- [Swarm](https://www.ethswarm.org/) +- [4EVERLAND](https://www.4everland.org/) + +### అదనపు పరిగణనలు {#additional-consideration} + +IPFS అనేది ఫైల్‌లు, వెబ్‌సైట్‌లు, అప్లికేషన్‌లు మరియు డేటాను నిల్వ చేయడానికి మరియు యాక్సెస్ చేయడానికి ఒక పంపిణీ చేయబడిన వ్యవస్థ. దీనికి అంతర్నిర్మిత ప్రోత్సాహక పథకం లేదు, కానీ బదులుగా దీర్ఘకాలిక స్థిరత్వం కోసం పైన పేర్కొన్న ఏదైనా కాంట్రాక్ట్-ఆధారిత ప్రోత్సాహక పరిష్కారాలతో ఉపయోగించవచ్చు. IPFSలో డేటాను నిలబెట్టడానికి మరో మార్గం పిన్నింగ్ సేవతో పనిచేయడం, ఇది మీ కోసం మీ డేటాను "పిన్" చేస్తుంది. మీరు మీ స్వంత IPFS నోడ్‌ను కూడా అమలు చేయవచ్చు మరియు మీ మరియు/లేదా ఇతరుల డేటాను ఉచితంగా నిలబెట్టడానికి నెట్‌వర్క్‌కు సహకరించవచ్చు! + +- [IPFS](https://docs.ipfs.io/concepts/what-is-ipfs/) +- [Pinata](https://www.pinata.cloud/) _(IPFS పిన్నింగ్ సేవ)_ +- [web3.storage](https://web3.storage/) _(IPFS/Filecoin పిన్నింగ్ సేవ)_ +- [Infura](https://infura.io/product/ipfs) _(IPFS పిన్నింగ్ సేవ)_ +- [IPFS Scan](https://ipfs-scan.io) _(IPFS పిన్నింగ్ ఎక్స్‌ప్లోరర్)_ +- [4EVERLAND](https://www.4everland.org/)_(IPFS పిన్నింగ్ సేవ)_ +- [Filebase](https://filebase.com) _(IPFS పిన్నింగ్ సేవ)_ +- [Spheron Network](https://spheron.network/) _(IPFS/Filecoin పిన్నింగ్ సేవ)_ + +SWARM అనేది నిల్వ ప్రోత్సాహక వ్యవస్థ మరియు నిల్వ అద్దె ధర ఒరాకిల్‌తో కూడిన వికేంద్రీకృత డేటా నిల్వ మరియు పంపిణీ సాంకేతికత. + +## డేటా నిలుపుదల {#data-retention} + +డేటాను నిలుపుకోవడానికి, డేటా నిలుపుకోబడిందని నిర్ధారించుకోవడానికి సిస్టమ్‌లు కొంత రకమైన యంత్రాంగాన్ని కలిగి ఉండాలి. + +### సవాలు యంత్రాంగం {#challenge-mechanism} + +డేటా నిలుపుకోబడిందని నిర్ధారించుకోవడానికి అత్యంత ప్రజాదరణ పొందిన మార్గాలలో ఒకటి, నోడ్‌లకు వారు ఇప్పటికీ డేటాను కలిగి ఉన్నారని నిర్ధారించుకోవడానికి జారీ చేయబడిన కొన్ని రకాల క్రిప్టోగ్రాఫిక్ సవాలును ఉపయోగించడం. Arweave యొక్క ప్రూఫ్-ఆఫ్-యాక్సెస్‌ను చూడటం ఒక సులభమైనది. వారు ఇటీవలి బ్లాక్ మరియు గతంలో ఒక యాదృచ్ఛిక బ్లాక్ రెండింటిలోనూ డేటాను కలిగి ఉన్నారో లేదో చూడటానికి నోడ్‌లకు ఒక సవాలును జారీ చేస్తారు. నోడ్ సమాధానంతో రాలేకపోతే, వారు జరిమానా విధించబడతారు. + +సవాలు యంత్రాంగంతో dStorage రకాలు: + +- Züs +- Skynet +- Arweave +- Filecoin +- Crust Network +- 4EVERLAND + +### వికేంద్రీయత {#decentrality} + +ప్లాట్‌ఫారమ్‌ల వికేంద్రీకరణ స్థాయిని కొలవడానికి గొప్ప సాధనాలు లేవు, కానీ సాధారణంగా, అవి కేంద్రీకృతం కాదని రుజువు చేయడానికి KYC యొక్క కొన్ని రూపాలు లేని సాధనాలను మీరు ఉపయోగించాలనుకుంటున్నారు. + +KYC లేకుండా వికేంద్రీకృత సాధనాలు: + +- Skynet +- Arweave +- Filecoin +- IPFS +- ఇతీరియము +- Crust Network +- 4EVERLAND + +### ఏకాభిప్రాయం {#consensus} + +ఈ సాధనాలలో చాలా వరకు [ఏకాభిప్రాయ యంత్రాంగం](/developers/docs/consensus-mechanisms/) యొక్క వాటి స్వంత సంస్కరణను కలిగి ఉన్నాయి, కానీ సాధారణంగా అవి [**ప్రూఫ్-ఆఫ్-వర్క్ (PoW)**](/developers/docs/consensus-mechanisms/pow/) లేదా [**ప్రూఫ్-ఆఫ్-స్టేక్ (PoS)**](/developers/docs/consensus-mechanisms/pos/) ఆధారంగా ఉంటాయి. + +ప్రూఫ్-ఆఫ్-వర్క్ ఆధారిత: + +- Skynet +- Arweave + +ప్రూఫ్-ఆఫ్-స్టేక్ ఆధారిత: + +- ఇతీరియము +- Filecoin +- Züs +- Crust Network + +## సంబంధిత ఉపకరణాలు {#related-tools} + +**IPFS - _ఇంటర్‌ప్లానెటరీ ఫైల్ సిస్టమ్ అనేది Ethereum కోసం ఒక వికేంద్రీకృత నిల్వ మరియు ఫైల్ రిఫరెన్సింగ్ సిస్టమ్._** + +- [Ipfs.io](https://ipfs.io/) +- [దస్తావేజులను సమకూర్చుట](https://docs.ipfs.io/) +- [GitHub](https://github.com/ipfs/ipfs) + +**Storj DCS - _డెవలపర్‌ల కోసం సురక్షితమైన, ప్రైవేట్ మరియు S3-అనుకూల వికేంద్రీకృత క్లౌడ్ ఆబ్జెక్ట్ నిల్వ._** + +- [Storj.io](https://storj.io/) +- [దస్తావేజులను సమకూర్చుట](https://docs.storj.io/) +- [GitHub](https://github.com/storj/storj) + +**Sia - _విశ్వసనీయత లేని క్లౌడ్ నిల్వ మార్కెట్‌ప్లేస్‌ను సృష్టించడానికి క్రిప్టోగ్రఫీని ఉపయోగిస్తుంది, కొనుగోలుదారులు మరియు అమ్మకందారులు నేరుగా లావాదేవీలు చేయడానికి అనుమతిస్తుంది._** + +- [Skynet.net](https://sia.tech/) +- [దస్తావేజులను సమకూర్చుట](https://docs.sia.tech/) +- [GitHub](https://github.com/SiaFoundation/) + +Filecoin - _IPFS వెనుక ఉన్న అదే బృందం నుండి Filecoin సృష్టించబడింది. ఇది IPFS ఆదర్శాల పైన ఒక ప్రోత్సాహక పొర._\*\* + +- [Filecoin.io](https://filecoin.io/) +- [దస్తావేజులను సమకూర్చుట](https://docs.filecoin.io/) +- [GitHub](https://github.com/filecoin-project/) + +**Arweave - _Arweave అనేది డేటాను నిల్వ చేయడానికి ఒక dStorage ప్లాట్‌ఫారమ్._** + +- [Arweave.org](https://www.arweave.org/) +- [దస్తావేజులను సమకూర్చుట](https://docs.arweave.org/info/) +- [Arweave](https://github.com/ArweaveTeam/arweave/) + +**Züs - _Züs అనేది షార్డింగ్ మరియు బ్లాబర్‌లతో కూడిన ప్రూఫ్-ఆఫ్-స్టేక్ dStorage ప్లాట్‌ఫారమ్._** + +- [zus.network](https://zus.network/) +- [దస్తావేజులను సమకూర్చుట](https://docs.zus.network/zus-docs/) +- [GitHub](https://github.com/0chain/) + +**Crust Network - _Crust అనేది IPFS పైన ఒక dStorage ప్లాట్‌ఫారమ్._** + +- [Crust.network](https://crust.network) +- [దస్తావేజులను సమకూర్చుట](https://wiki.crust.network) +- [GitHub](https://github.com/crustio) + +**Swarm - _Ethereum web3 స్టాక్ కోసం ఒక పంపిణీ చేయబడిన నిల్వ ప్లాట్‌ఫారమ్ మరియు కంటెంట్ పంపిణీ సేవ._** + +- [EthSwarm.org](https://www.ethswarm.org/) +- [దస్తావేజులను సమకూర్చుట](https://docs.ethswarm.org/) +- [GitHub](https://github.com/ethersphere/) + +**OrbitDB - _IPFS పైన ఒక వికేంద్రీకృత పీర్ టు పీర్ డేటాబేస్._** + +- [OrbitDB.org](https://orbitdb.org/) +- [దస్తావేజులను సమకూర్చుట](https://github.com/orbitdb/field-manual/) +- [GitHub](https://github.com/orbitdb/orbit-db/) + +**Aleph.im - _వికేంద్రీకృత క్లౌడ్ ప్రాజెక్ట్ (డేటాబేస్, ఫైల్ నిల్వ, కంప్యూటింగ్ మరియు DID). ఆఫ్‌చైన్ మరియు ఆన్‌చైన్ పీర్-టు-పీర్ టెక్నాలజీ యొక్క ఒక ప్రత్యేకమైన మిశ్రమం. IPFS మరియు బహుళ-చైన్ అనుకూలత._** + +- [Aleph.im](https://aleph.cloud/) +- [దస్తావేజులను సమకూర్చుట](https://docs.aleph.cloud/) +- [GitHub](https://github.com/aleph-im/) + +**Ceramic - _డేటా-రిచ్ మరియు ఆకర్షణీయమైన అప్లికేషన్‌ల కోసం వినియోగదారు-నియంత్రిత IPFS డేటాబేస్ నిల్వ._** + +- [Ceramic.network](https://ceramic.network/) +- [దస్తావేజులను సమకూర్చుట](https://developers.ceramic.network/) +- [GitHub](https://github.com/ceramicnetwork/js-ceramic/) + +**Filebase - _S3-అనుకూల వికేంద్రీకృత నిల్వ మరియు జియో-రిడండెంట్ IPFS పిన్నింగ్ సేవ. Filebase ద్వారా IPFSకు అప్‌లోడ్ చేయబడిన అన్ని ఫైల్‌లు ప్రపంచవ్యాప్తంగా 3x ప్రతిరూపణతో Filebase మౌలిక సదుపాయాలకు స్వయంచాలకంగా పిన్ చేయబడతాయి._** + +- [Filebase.com](https://filebase.com/) +- [దస్తావేజులను సమకూర్చుట](https://docs.filebase.com/) +- [GitHub](https://github.com/filebase) + +**4EVERLAND - _ఒక Web 3.0 క్లౌడ్ కంప్యూటింగ్ ప్లాట్‌ఫారమ్, ఇది నిల్వ, కంప్యూట్ మరియు నెట్‌వర్కింగ్ కోర్ సామర్థ్యాలను అనుసంధానిస్తుంది, S3 అనుకూలంగా ఉంటుంది మరియు IPFS మరియు Arweave వంటి వికేంద్రీకృత నిల్వ నెట్‌వర్క్‌లపై సింక్రోనస్ డేటా నిల్వను అందిస్తుంది._** + +- [4everland.org](https://www.4everland.org/) +- [దస్తావేజులను సమకూర్చుట](https://docs.4everland.org/) +- [GitHub](https://github.com/4everland) + +**Kaleido - _క్లిక్-బటన్ IPFS నోడ్‌లతో కూడిన ఒక బ్లాక్‌చెయిన్-యాజ్-ఎ-సర్వీస్ ప్లాట్‌ఫారమ్_** + +- [Kaleido](https://kaleido.io/) +- [దస్తావేజులను సమకూర్చుట](https://docs.kaleido.io/kaleido-services/ipfs/) +- [GitHub](https://github.com/kaleido-io) + +**Spheron Network - _Spheron అనేది ఉత్తమ పనితీరుతో వికేంద్రీకృత ఇన్‌ఫ్రాపై వారి అప్లికేషన్‌లను ప్రారంభించాలని చూస్తున్న డాప్స్ కోసం రూపొందించబడిన ఒక ప్లాట్‌ఫారమ్-యాజ్-ఎ-సర్వీస్ (PaaS). ఇది కంప్యూట్, వికేంద్రీకృత నిల్వ, CDN & వెబ్ హోస్టింగ్‌ను సిద్ధంగా అందిస్తుంది._** + +- [spheron.network](https://spheron.network/) +- [దస్తావేజులను సమకూర్చుట](https://docs.spheron.network/) +- [GitHub](https://github.com/spheronFdn) + +## మరింత సమాచారం {#further-reading} + +- [వికేంద్రీకృత నిల్వ అంటే ఏమిటి?](https://coinmarketcap.com/academy/article/what-is-decentralized-storage-a-deep-dive-by-filecoin) - _CoinMarketCap_ +- [వికేంద్రీకృత నిల్వ గురించి ఐదు సాధారణ అపోహలను తొలగించడం](https://www.storj.io/blog/busting-five-common-myths-about-decentralized-storage) - _Storj_ + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ + +## సంబంధిత అంశాలు {#related-topics} + +- [అభివృద్ధి ఫ్రేమ్‌వర్క్‌లు](/developers/docs/frameworks/) diff --git a/public/content/translations/te/developers/docs/transactions/index.md b/public/content/translations/te/developers/docs/transactions/index.md new file mode 100644 index 00000000000..a97d12c30b8 --- /dev/null +++ b/public/content/translations/te/developers/docs/transactions/index.md @@ -0,0 +1,231 @@ +--- +title: "లావాదేవీలు" +description: "ఇతీరియము లావాదేవీల యొక్క అవలోకనం – అవి ఎలా పని చేస్తాయి, వాటి డేటా స్ట్రక్చర్, మరియు వాటిని ఒక అప్లికేషన్ ద్వారా ఎలా పంపాలి." +lang: te +--- + +లావాదేవీలు ఖాతాల నుండి క్రిప్టోగ్రాఫికల్‌గా సంతకం చేయబడిన సూచనలు. ఇతీరియము నెట్‌వర్క్ యొక్క స్థితిని నవీకరించడానికి ఒక ఖాతా లావాదేవీని ప్రారంభిస్తుంది. అత్యంత సరళమైన లావాదేవీ ఏమిటంటే ఒక ఖాతా నుండి మరొక ఖాతాకు ETHని బదిలీ చేయడం. + +## అవసరాలు {#prerequisites} + +ఈ పేజీని మీరు బాగా అర్థం చేసుకోవడంలో సహాయపడటానికి, మీరు ముందుగా [ఖాతాలు](/developers/docs/accounts/) మరియు మా [ఇతీరియముకు పరిచయం](/developers/docs/intro-to-ethereum/) చదవాలని మేము సిఫార్సు చేస్తున్నాము. + +## లావాదేవీ అంటే ఏమిటి? {#whats-a-transaction} + +ఒక ఇతీరియము లావాదేవీ అనేది బాహ్య-యాజమాన్య ఖాతా ద్వారా ప్రారంభించబడిన చర్యను సూచిస్తుంది, మరో మాటలో చెప్పాలంటే ఒక కాంట్రాక్ట్ ద్వారా కాకుండా, మానవుడిచే నిర్వహించబడే ఖాతా. ఉదాహరణకు, బాబ్ ఆలిస్‌కు 1 ETH పంపితే, బాబ్ ఖాతా నుండి డెబిట్ చేయబడాలి మరియు ఆలిస్ ఖాతాకు క్రెడిట్ చేయబడాలి. ఈ స్థితిని మార్చే చర్య ఒక లావాదేవీ లోపల జరుగుతుంది. + +![ఒక లావాదేవీ స్థితి మార్పుకు కారణమవుతుందని చూపే రేఖాచిత్రం](./tx.png) +_[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) నుండి స్వీకరించబడిన రేఖాచిత్రం_ + +EVM యొక్క స్థితిని మార్చే లావాదేవీలను మొత్తం నెట్‌వర్క్‌కు ప్రసారం చేయాలి. ఏదైనా నోడ్ EVMలో లావాదేవీని అమలు చేయడానికి ఒక అభ్యర్థనను ప్రసారం చేయగలదు; ఇది జరిగిన తర్వాత, ఒక వాలిడేటర్ లావాదేవీని అమలు చేసి, ఫలితంగా వచ్చే స్థితి మార్పును మిగిలిన నెట్‌వర్క్‌కు ప్రచారం చేస్తుంది. + +లావాదేవీలకు రుసుము అవసరం మరియు ధృవీకరించబడిన బ్లాక్‌లో చేర్చబడాలి. ఈ అవలోకనాన్ని సరళంగా చేయడానికి, మేము గ్యాస్ ఫీజులు మరియు ధృవీకరణను వేరే చోట చర్చిస్తాము. + +సమర్పించిన లావాదేవీలో క్రింది సమాచారం ఉంటుంది: + +- `from` – లావాదేవీపై సంతకం చేసే పంపినవారి చిరునామా. ఇది బాహ్య-యాజమాన్య ఖాతా అవుతుంది, ఎందుకంటే కాంట్రాక్ట్ ఖాతాలు లావాదేవీలను పంపలేవు. +- `to` – స్వీకరించే చిరునామా (ఒకవేళ బాహ్య-యాజమాన్య ఖాతా అయితే, లావాదేవీ విలువను బదిలీ చేస్తుంది. ఒకవేళ కాంట్రాక్ట్ ఖాతా అయితే, లావాదేవీ కాంట్రాక్ట్ కోడ్‌ను అమలు చేస్తుంది) +- `signature` – పంపినవారి గుర్తింపు. పంపినవారి ప్రైవేట్ కీ లావాదేవీపై సంతకం చేసినప్పుడు ఇది ఉత్పత్తి చేయబడుతుంది మరియు పంపినవారు ఈ లావాదేవీకి అధికారం ఇచ్చారని నిర్ధారిస్తుంది. +- `nonce` - ఖాతా నుండి లావాదేవీ సంఖ్యను సూచించే వరుసగా పెరిగే కౌంటర్. +- `value` – పంపినవారి నుండి స్వీకర్తకు బదిలీ చేయవలసిన ETH మొత్తం (WEI లో సూచించబడుతుంది, ఇక్కడ 1ETH = 1e+18wei). +- `input data` – ఏకపక్ష డేటాను చేర్చడానికి ఐచ్ఛిక ఫీల్డ్. +- `gasLimit` – లావాదేవీ ద్వారా వినియోగించబడే గరిష్ట గ్యాస్ యూనిట్ల మొత్తం. [EVM](/developers/docs/evm/opcodes) ప్రతి గణన దశకు అవసరమైన గ్యాస్ యూనిట్లను నిర్దేశిస్తుంది. +- `maxPriorityFeePerGas` - వినియోగించిన గ్యాస్ యొక్క గరిష్ట ధరను వాలిడేటర్‌కు చిట్కాగా చేర్చాలి. +- `maxFeePerGas` - లావాదేవీ కోసం చెల్లించడానికి సిద్ధంగా ఉన్న గ్యాస్ యూనిట్‌కు గరిష్ట రుసుము (`baseFeePerGas` మరియు `maxPriorityFeePerGas`తో సహా). + +గ్యాస్ అనేది ఒక వాలిడేటర్ ద్వారా లావాదేవీని ప్రాసెస్ చేయడానికి అవసరమైన గణనకు ఒక సూచన. వినియోగదారులు ఈ గణన కోసం రుసుము చెల్లించాలి. `gasLimit` మరియు `maxPriorityFeePerGas` వాలిడేటర్‌కు చెల్లించే గరిష్ట లావాదేవీ రుసుమును నిర్ణయిస్తాయి. [గ్యాస్ గురించి మరింత](/developers/docs/gas/). + +లావాదేవీ వస్తువు కొద్దిగా ఇలా కనిపిస్తుంది: + +```js +{ + from: "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8", + to: "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a", + gasLimit: "21000", + maxFeePerGas: "300", + maxPriorityFeePerGas: "10", + nonce: "0", + value: "10000000000" +} +``` + +కానీ ఒక లావాదేవీ వస్తువును పంపినవారి ప్రైవేట్ కీ ఉపయోగించి సంతకం చేయాలి. ఇది లావాదేవీ పంపినవారి నుండి మాత్రమే వచ్చిందని మరియు మోసపూరితంగా పంపబడలేదని రుజువు చేస్తుంది. + +Geth వంటి ఒక ఇతీరియము క్లయింట్ ఈ సంతకం ప్రక్రియను నిర్వహిస్తుంది. + +ఉదాహరణ [JSON-RPC](/developers/docs/apis/json-rpc) కాల్: + +```json +{ + "id": 2, + "jsonrpc": "2.0", + "method": "account_signTransaction", + "params": [ + { + "from": "0x1923f626bb8dc025849e00f99c25fe2b2f7fb0db", + "gas": "0x55555", + "maxFeePerGas": "0x1234", + "maxPriorityFeePerGas": "0x1234", + "input": "0xabcd", + "nonce": "0x0", + "to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0", + "value": "0x1234" + } + ] +} +``` + +ఉదాహరణ ప్రతిస్పందన: + +```json +{ + "jsonrpc": "2.0", + "id": 2, + "result": { + "raw": "0xf88380018203339407a565b7ed7d7a678680a4c162885bedbb695fe080a44401a6e4000000000000000000000000000000000000000000000000000000000000001226a0223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20ea02aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663", + "tx": { + "nonce": "0x0", + "maxFeePerGas": "0x1234", + "maxPriorityFeePerGas": "0x1234", + "gas": "0x55555", + "to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0", + "value": "0x1234", + "input": "0xabcd", + "v": "0x26", + "r": "0x223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20e", + "s": "0x2aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663", + "hash": "0xeba2df809e7a612a0a0d444ccfa5c839624bdc00dd29e3340d46df3870f8a30e" + } + } +} +``` + +- `raw` అనేది [రికర్శివ్ లెంగ్త్ ప్రిఫిక్స్ (RLP)](/developers/docs/data-structures-and-encoding/rlp) ఎన్‌కోడ్ చేయబడిన రూపంలో సంతకం చేయబడిన లావాదేవీ. +- `tx` అనేది JSON రూపంలో సంతకం చేయబడిన లావాదేవీ. + +సంతకం హాష్‌తో, లావాదేవీ క్రిప్టోగ్రాఫికల్‌గా పంపినవారి నుండి వచ్చిందని మరియు నెట్‌వర్క్‌కు సమర్పించబడిందని నిరూపించవచ్చు. + +### డేటా ఫీల్డ్ {#the-data-field} + +లావాదేవీలలో అధిక భాగం బాహ్య-యాజమాన్య ఖాతా నుండి ఒక కాంట్రాక్ట్‌ను యాక్సెస్ చేస్తాయి. +చాలా కాంట్రాక్టులు Solidity లో వ్రాయబడ్డాయి మరియు వాటి డేటా ఫీల్డ్‌ను [అప్లికేషన్ బైనరీ ఇంటర్‌ఫేస్ (ABI)](/glossary/#abi) ప్రకారం వ్యాఖ్యానిస్తాయి. + +మొదటి నాలుగు బైట్లు ఫంక్షన్ పేరు మరియు ఆర్గ్యుమెంట్ల హాష్ ఉపయోగించి ఏ ఫంక్షన్‌ను కాల్ చేయాలో నిర్దేశిస్తాయి. +మీరు కొన్నిసార్లు [ఈ డేటాబేస్](https://www.4byte.directory/signatures/) ఉపయోగించి సెలెక్టర్ నుండి ఫంక్షన్‌ను గుర్తించవచ్చు. + +మిగిలిన కాల్‌డేటా ఆర్గ్యుమెంట్లు, [ABI స్పెసిఫికేషన్లలో పేర్కొన్న విధంగా ఎన్‌కోడ్ చేయబడింది](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding). + +ఉదాహరణకు, [ఈ లావాదేవీని](https://etherscan.io/tx/0xd0dcbe007569fcfa1902dae0ab8b4e078efe42e231786312289b1eee5590f6a1) చూద్దాం. +కాల్‌డేటాను చూడటానికి **మరింత చూడటానికి క్లిక్ చేయండి** ని ఉపయోగించండి. + +ఫంక్షన్ సెలెక్టర్ `0xa9059cbb`. ఈ సంతకంతో అనేక [తెలిసిన ఫంక్షన్లు](https://www.4byte.directory/signatures/?bytes4_signature=0xa9059cbb) ఉన్నాయి. +ఈ సందర్భంలో [కాంట్రాక్ట్ సోర్స్ కోడ్](https://etherscan.io/address/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48#code) Etherscan కు అప్‌లోడ్ చేయబడింది, కాబట్టి ఫంక్షన్ `transfer(address,uint256)` అని మాకు తెలుసు. + +మిగిలిన డేటా: + +``` +0000000000000000000000004f6742badb049791cd9a37ea913f2bac38d01279 +000000000000000000000000000000000000000000000000000000003b0559f4 +``` + +ABI స్పెసిఫికేషన్ల ప్రకారం, పూర్ణాంక విలువలు (చిరునామాల వంటివి, ఇవి 20-బైట్ల పూర్ణాంకాలు) ABIలో 32-బైట్ల పదాలుగా కనిపిస్తాయి, ముందు సున్నాలతో ప్యాడ్ చేయబడి ఉంటాయి. +కాబట్టి `to` చిరునామా [`4f6742badb049791cd9a37ea913f2bac38d01279`](https://etherscan.io/address/0x4f6742badb049791cd9a37ea913f2bac38d01279) అని మనకు తెలుసు. +`value` 0x3b0559f4 = 990206452. + +## లావాదేవీల రకాలు {#types-of-transactions} + +ఇతీరియములో కొన్ని విభిన్న రకాల లావాదేవీలు ఉన్నాయి: + +- సాధారణ లావాదేవీలు: ఒక ఖాతా నుండి మరొక ఖాతాకు లావాదేవీ. +- కాంట్రాక్ట్ డిప్లాయ్‌మెంట్ లావాదేవీలు: 'to' చిరునామా లేని లావాదేవీ, ఇక్కడ డేటా ఫీల్డ్ కాంట్రాక్ట్ కోడ్ కోసం ఉపయోగించబడుతుంది. +- కాంట్రాక్ట్ అమలు: డిప్లాయ్ చేయబడిన స్మార్ట్ కాంట్రాక్ట్‌తో పరస్పర చర్య జరిపే లావాదేవీ. ఈ సందర్భంలో, 'to' చిరునామా స్మార్ట్ కాంట్రాక్ట్ చిరునామా. + +### గ్యాస్‌పై {#on-gas} + +చెప్పినట్లుగా, లావాదేవీలు అమలు చేయడానికి [గ్యాస్](/developers/docs/gas/) ఖర్చు అవుతుంది. సాధారణ బదిలీ లావాదేవీలకు 21000 యూనిట్ల గ్యాస్ అవసరం. + +కాబట్టి బాబ్ 190 gwei `baseFeePerGas` మరియు 10 gwei `maxPriorityFeePerGas` వద్ద ఆలిస్‌కు 1 ETH పంపడానికి, బాబ్ క్రింది రుసుము చెల్లించాల్సి ఉంటుంది: + +``` +(190 + 10) * 21000 = 4,200,000 gwei +--or-- +0.0042 ETH +``` + +బాబ్ ఖాతా నుండి **-1.0042 ETH** డెబిట్ చేయబడుతుంది (ఆలిస్ కోసం 1 ETH + గ్యాస్ ఫీజులో 0.0042 ETH). + +ఆలిస్ ఖాతాకు **+1.0 ETH** జమ చేయబడుతుంది. + +మూల రుసుము బర్న్ చేయబడుతుంది **-0.00399 ETH**. + +వాలిడేటర్ చిట్కాను ఉంచుకుంటుంది **+0.000210 ETH**. + +![ఉపయోగించని గ్యాస్ ఎలా వాపసు చేయబడుతుందో చూపే రేఖాచిత్రం](./gas-tx.png) +_[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) నుండి స్వీకరించబడిన రేఖాచిత్రం_ + +లావాదేవీలో ఉపయోగించని ఏదైనా గ్యాస్ వినియోగదారు ఖాతాకు వాపసు చేయబడుతుంది. + +### స్మార్ట్ కాంట్రాక్ట్ పరస్పర చర్యలు {#smart-contract-interactions} + +స్మార్ట్ కాంట్రాక్ట్‌తో కూడిన ఏ లావాదేవీకైనా గ్యాస్ అవసరం. + +స్మార్ట్ కాంట్రాక్ట్‌లలో [`view`](https://docs.soliditylang.org/en/latest/contracts.html#view-functions) లేదా [`pure`](https://docs.soliditylang.org/en/latest/contracts.html#pure-functions) ఫంక్షన్లు అని పిలవబడే ఫంక్షన్లు కూడా ఉండవచ్చు, ఇవి కాంట్రాక్ట్ స్థితిని మార్చవు. అందువల్ల, ఒక EOA నుండి ఈ ఫంక్షన్లను కాల్ చేయడానికి ఎలాంటి గ్యాస్ అవసరం లేదు. ఈ దృష్టాంతానికి అంతర్లీన RPC కాల్ [`eth_call`](/developers/docs/apis/json-rpc#eth_call). + +`eth_call` ఉపయోగించి యాక్సెస్ చేసినప్పుడు కాకుండా, ఈ `view` లేదా `pure` ఫంక్షన్లను సాధారణంగా అంతర్గతంగా (అంటే, కాంట్రాక్ట్ నుండి లేదా మరొక కాంట్రాక్ట్ నుండి) కూడా కాల్ చేస్తారు, దీనికి గ్యాస్ ఖర్చవుతుంది. + +## లావాదేవీ జీవనచక్రం {#transaction-lifecycle} + +లావాదేవీ సమర్పించబడిన తర్వాత, క్రిందివి జరుగుతాయి: + +1. ఒక లావాదేవీ హాష్ క్రిప్టోగ్రాఫికల్‌గా ఉత్పత్తి చేయబడుతుంది: + `0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017` +2. ఆ తర్వాత లావాదేవీ నెట్‌వర్క్‌కు ప్రసారం చేయబడుతుంది మరియు మిగిలిన అన్ని పెండింగ్ నెట్‌వర్క్ లావాదేవీలతో కూడిన లావాదేవీ పూల్‌కు జోడించబడుతుంది. +3. లావాదేవీని ధృవీకరించడానికి మరియు దానిని "విజయవంతం"గా పరిగణించడానికి ఒక వాలిడేటర్ మీ లావాదేవీని ఎంచుకుని, దానిని ఒక బ్లాక్‌లో చేర్చాలి. +4. సమయం గడిచేకొద్దీ మీ లావాదేవీని కలిగి ఉన్న బ్లాక్ "సమర్థించబడినది" ఆపై "తుది చేయబడినది"గా అప్‌గ్రేడ్ చేయబడుతుంది. ఈ అప్‌గ్రేడ్‌లు మీ లావాదేవీ విజయవంతమైందని మరియు ఎప్పటికీ మార్చబడదని మరింత నిశ్చయంగా చేస్తాయి. ఒక బ్లాక్ "తుది చేయబడిన" తర్వాత, దానిని కేవలం అనేక బిలియన్ల డాలర్ల ఖర్చుతో కూడిన నెట్‌వర్క్ స్థాయి దాడి ద్వారా మాత్రమే మార్చగలరు. + +## ఒక విజువల్ డెమో {#a-visual-demo} + +ఆస్టిన్ మిమ్మల్ని లావాదేవీలు, గ్యాస్ మరియు మైనింగ్ ద్వారా నడిపించడాన్ని చూడండి. + + + +## టైప్డ్ ట్రాన్సాక్షన్ ఎన్వలప్ {#typed-transaction-envelope} + +ఇతీరియము మొదట లావాదేవీల కోసం ఒకే ఒక ఫార్మాట్‌ను కలిగి ఉండేది. ప్రతి లావాదేవీలో ఒక నాన్స్, గ్యాస్ ధర, గ్యాస్ పరిమితి, గమ్య చిరునామా, విలువ, డేటా, v, r, మరియు s ఉండేవి. ఈ ఫీల్డులు [RLP-ఎన్‌కోడ్](/developers/docs/data-structures-and-encoding/rlp/) చేయబడి, ఇలా కనిపిస్తాయి: + +`RLP([nonce, gasPrice, gasLimit, to, value, data, v, r, s])` + +యాక్సెస్ జాబితాలు మరియు [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) వంటి కొత్త ఫీచర్లను లెగసీ లావాదేవీ ఫార్మాట్‌లను ప్రభావితం చేయకుండా అమలు చేయడానికి ఇతీరియము బహుళ రకాల లావాదేవీలకు మద్దతు ఇచ్చేలా అభివృద్ధి చెందింది. + +[EIP-2718](https://eips.ethereum.org/EIPS/eip-2718) ఈ ప్రవర్తనను అనుమతిస్తుంది. లావాదేవీలు ఇలా వ్యాఖ్యానించబడతాయి: + +`TransactionType || TransactionPayload` + +ఇక్కడ ఫీల్డ్‌లు ఇలా నిర్వచించబడ్డాయి: + +- `TransactionType` - 0 మరియు 0x7f మధ్య ఒక సంఖ్య, మొత్తం 128 సాధ్యమయ్యే లావాదేవీ రకాలకు. +- `TransactionPayload` - లావాదేవీ రకం ద్వారా నిర్వచించబడిన ఏకపక్ష బైట్ శ్రేణి. + +`TransactionType` విలువ ఆధారంగా, ఒక లావాదేవీని ఇలా వర్గీకరించవచ్చు: + +1. **రకం 0 (లెగసీ) లావాదేవీలు:** ఇతీరియము ప్రారంభం నుండి ఉపయోగించబడిన అసలు లావాదేవీ ఫార్మాట్. వీటిలో స్మార్ట్ కాంట్రాక్ట్‌ల కోసం డైనమిక్ గ్యాస్ ఫీజు గణనలు లేదా యాక్సెస్ జాబితాల వంటి [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) నుండి ఫీచర్లు ఉండవు. లెగసీ లావాదేవీలు వాటి సీరియలైజ్డ్ రూపంలో వాటి రకాన్ని సూచించే ఒక నిర్దిష్ట ప్రిఫిక్స్‌ను కలిగి ఉండవు, [రికర్శివ్ లెంగ్త్ ప్రిఫిక్స్ (RLP)](/developers/docs/data-structures-and-encoding/rlp) ఎన్‌కోడింగ్‌ను ఉపయోగిస్తున్నప్పుడు `0xf8` బైట్‌తో ప్రారంభమవుతాయి. ఈ లావాదేవీల కోసం TransactionType విలువ `0x0`. + +2. **రకం 1 లావాదేవీలు:** ఇతీరియము యొక్క [బెర్లిన్ అప్‌గ్రేడ్](/ethereum-forks/#berlin) లో భాగంగా [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930) లో ప్రవేశపెట్టబడిన ఈ లావాదేవీలలో `accessList` పారామీటర్ ఉంటుంది. ఈ జాబితా లావాదేవీ యాక్సెస్ చేయాలని ఆశించే చిరునామాలు మరియు స్టోరేజ్ కీలను నిర్దేశిస్తుంది, స్మార్ట్ కాంట్రాక్ట్‌లను కలిగి ఉన్న సంక్లిష్ట లావాదేవీలకు [గ్యాస్](/developers/docs/gas/) ఖర్చులను తగ్గించడంలో సహాయపడుతుంది. EIP-1559 ఫీజు మార్కెట్ మార్పులు రకం 1 లావాదేవీలలో చేర్చబడలేదు. రకం 1 లావాదేవీలలో `yParity` పారామీటర్ కూడా ఉంటుంది, ఇది `0x0` లేదా `0x1` కావచ్చు, secp256k1 సంతకం యొక్క y-విలువ యొక్క పారిటీని సూచిస్తుంది. అవి `0x01` బైట్‌తో ప్రారంభమవడం ద్వారా గుర్తించబడతాయి, మరియు వాటి TransactionType విలువ `0x1`. + +3. **రకం 2 లావాదేవీలు**, సాధారణంగా EIP-1559 లావాదేవీలుగా పిలువబడతాయి, ఇవి ఇతీరియము యొక్క [లండన్ అప్‌గ్రేడ్](/ethereum-forks/#london)లో, [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)లో ప్రవేశపెట్టబడిన లావాదేవీలు. అవి ఇతీరియము నెట్‌వర్క్‌లో ప్రామాణిక లావాదేవీ రకంగా మారాయి. ఈ లావాదేవీలు లావాదేవీ రుసుమును ఒక మూల రుసుము మరియు ప్రాధాన్యత రుసుముగా విభజించడం ద్వారా ఊహించదగినతను మెరుగుపరిచే కొత్త రుసుము మార్కెట్ యంత్రాంగాన్ని ప్రవేశపెడతాయి. అవి `0x02` బైట్‌తో ప్రారంభమవుతాయి మరియు `maxPriorityFeePerGas` మరియు `maxFeePerGas` వంటి ఫీల్డ్‌లను కలిగి ఉంటాయి. రకం 2 లావాదేవీలు ఇప్పుడు వాటి సౌలభ్యం మరియు సామర్థ్యం కారణంగా డిఫాల్ట్‌గా మారాయి, ప్రత్యేకించి అధిక నెట్‌వర్క్ రద్దీ సమయాల్లో లావాదేవీ రుసుములను మరింత ఊహించదగిన విధంగా నిర్వహించడానికి వినియోగదారులకు సహాయపడే వాటి సామర్థ్యం కోసం ఇవి అనుకూలంగా ఉంటాయి. ఈ లావాదేవీల కోసం TransactionType విలువ `0x2`. + +4. **రకం 3 (బ్లాబ్) లావాదేవీలు** ఇతీరియము యొక్క [డెన్‌కన్ అప్‌గ్రేడ్](/ethereum-forks/#dencun)లో భాగంగా [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844)లో ప్రవేశపెట్టబడ్డాయి. ఈ లావాదేవీలు "బ్లాబ్" డేటాను (బైనరీ లార్జ్ ఆబ్జెక్ట్స్) మరింత సమర్థవంతంగా నిర్వహించడానికి రూపొందించబడ్డాయి, ముఖ్యంగా ఇతీరియము నెట్‌వర్క్‌కు తక్కువ ఖర్చుతో డేటాను పోస్ట్ చేయడానికి ఒక మార్గాన్ని అందించడం ద్వారా లేయర్ 2 రోల్అప్‌లకు ప్రయోజనం చేకూరుస్తాయి. బ్లాబ్ లావాదేవీలలో `blobVersionedHashes`, `maxFeePerBlobGas`, మరియు `blobGasPrice` వంటి అదనపు ఫీల్డ్‌లు ఉంటాయి. అవి `0x03` బైట్‌తో ప్రారంభమవుతాయి, మరియు వాటి TransactionType విలువ `0x3`. బ్లాబ్ లావాదేవీలు ఇతీరియము యొక్క డేటా లభ్యత మరియు స్కేలింగ్ సామర్థ్యాలలో గణనీయమైన మెరుగుదలను సూచిస్తాయి. + +5. **రకం 4 లావాదేవీలు** ఇతీరియము యొక్క [పెక్ట్రా అప్‌గ్రేడ్](/roadmap/pectra/)లో భాగంగా [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702)లో ప్రవేశపెట్టబడ్డాయి. ఈ లావాదేవీలు ఖాతా వియుక్తతతో ఫార్వర్డ్-అనుకూలంగా ఉండేలా రూపొందించబడ్డాయి. అవి EOAలను వాటి అసలు కార్యాచరణకు రాజీ పడకుండా తాత్కాలికంగా స్మార్ట్ కాంట్రాక్ట్ ఖాతాల వలె ప్రవర్తించడానికి అనుమతిస్తాయి. వాటిలో `authorization_list` పారామీటర్ ఉంటుంది, ఇది EOA తన అధికారాన్ని ఏ స్మార్ట్ కాంట్రాక్ట్‌కు అప్పగిస్తుందో నిర్దేశిస్తుంది. లావాదేవీ తర్వాత, EOA యొక్క కోడ్ ఫీల్డ్‌లో అప్పగించబడిన స్మార్ట్ కాంట్రాక్ట్ చిరునామా ఉంటుంది. + +## మరింత సమాచారం {#further-reading} + +- [EIP-2718: టైప్డ్ ట్రాన్సాక్షన్ ఎన్వలప్](https://eips.ethereum.org/EIPS/eip-2718) + +_మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!_ + +## సంబంధిత అంశాలు {#related-topics} + +- [ఖాతాలు](/developers/docs/accounts/) +- [ఎథేరియం వర్చువల్ మషీన్ (EVM)](/developers/docs/evm/) +- [గ్యాస్](/developers/docs/gas/) diff --git a/public/content/translations/te/developers/docs/web2-vs-web3/index.md b/public/content/translations/te/developers/docs/web2-vs-web3/index.md new file mode 100644 index 00000000000..643961ed675 --- /dev/null +++ b/public/content/translations/te/developers/docs/web2-vs-web3/index.md @@ -0,0 +1,62 @@ +--- +title: "వెబ్2 vs వెబ్3" +description: "కేంద్రీకృత Web2 సేవలను ఇతీరియము బ్లాక్‌చెయిన్ టెక్నాలజీపై నిర్మించిన వికేంద్రీకృత Web3 అప్లికేషన్‌లతో పోల్చండి." +lang: te +--- + +Web2 అనేది ఈ రోజు మనలో చాలా మందికి తెలిసిన ఇంటర్నెట్ వెర్షన్‌ను సూచిస్తుంది. మీ వ్యక్తిగత డేటాకు బదులుగా సేవలను అందించే కంపెనీల ఆధిపత్యంలో ఉన్న ఇంటర్నెట్. ఇతీరియము సందర్భంలో, Web3 అనేది బ్లాక్‌చెయిన్‌పై నడిచే వికేంద్రీకృత యాప్స్ ని సూచిస్తుంది. ఇవి ఎవరి వ్యక్తిగత డేటాను డబ్బుగా మార్చకుండా, ఎవరైనా పాల్గొనడానికి అనుమతించే యాప్స్. + +మరింత బిగినర్-ఫ్రెండ్లీ వనరు కోసం చూస్తున్నారా? మా [web3 పరిచయం](/web3/) చూడండి. + +## Web3 ప్రయోజనాలు {#web3-benefits} + +చాలా మంది Web3 డెవలపర్లు ఇతీరియము యొక్క స్వాభావిక వికేంద్రీకరణ కారణంగా డాప్స్‌ను నిర్మించడానికి ఎంచుకున్నారు: + +- నెట్‌వర్క్‌లో ఉన్న ఎవరైనా సేవను ఉపయోగించడానికి అనుమతిని కలిగి ఉంటారు – లేదా మరో మాటలో చెప్పాలంటే, అనుమతి అవసరం లేదు. +- ఎవరూ మిమ్మల్ని బ్లాక్ చేయలేరు లేదా సేవకు మీ యాక్సెస్‌ను నిరాకరించలేరు. +- స్థానిక టోకెన్, ఈథర్ (ETH) ద్వారా చెల్లింపులు అంతర్నిర్మితంగా ఉంటాయి. +- ఇతీరియము ట్యూరింగ్-కంప్లీట్, అంటే మీరు దాదాపు ఏదైనా ప్రోగ్రామ్ చేయవచ్చు. + +## ఆచరణాత్మక పోలికలు {#practical-comparisons} + +| Web2 | Web3 | +| ---------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| ట్విట్టర్ ఏదైనా ఖాతా లేదా ట్వీట్‌ను సెన్సార్ చేయగలదు | Web3 ట్వీట్‌లు సెన్సార్ చేయలేనివిగా ఉంటాయి ఎందుకంటే నియంత్రణ వికేంద్రీకరించబడింది | +| చెల్లింపు సేవ కొన్ని రకాల పనులకు చెల్లింపులను అనుమతించకూడదని నిర్ణయించవచ్చు | Web3 చెల్లింపు యాప్స్‌కు వ్యక్తిగత డేటా అవసరం లేదు మరియు చెల్లింపులను నిరోధించలేవు | +| గిగ్-ఎకానమీ యాప్స్ సర్వర్‌లు డౌన్ అవ్వవచ్చు మరియు కార్మికుల ఆదాయాన్ని ప్రభావితం చేయవచ్చు | Web3 సర్వర్‌లు డౌన్ కాలేవు – అవి తమ బ్యాకెండ్‌గా వేలాది కంప్యూటర్‌లతో కూడిన వికేంద్రీకృత నెట్‌వర్క్ అయిన ఇతీరియమును ఉపయోగిస్తాయి | + +దీని అర్థం అన్ని సేవలను డాప్‌గా మార్చాల్సిన అవసరం ఉందని కాదు. ఈ ఉదాహరణలు web2 మరియు web3 సేవల మధ్య ఉన్న ప్రధాన వ్యత్యాసాలను వివరిస్తాయి. + +## Web3 పరిమితులు {#web3-limitations} + +ప్రస్తుతం Web3కి కొన్ని పరిమితులు ఉన్నాయి: + +- స్కేలబిలిటీ – లావాదేవీలు వికేంద్రీకరించబడినందున web3లో నెమ్మదిగా ఉంటాయి. చెల్లింపు వంటి స్థితికి సంబంధించిన మార్పులు, ఒక నోడ్ ద్వారా ప్రాసెస్ చేయబడాలి మరియు నెట్‌వర్క్ అంతటా ప్రచారం చేయబడాలి. +- UX – web3 అప్లికేషన్‌లతో ఇంటరాక్ట్ అవ్వడానికి అదనపు దశలు, సాఫ్ట్‌వేర్ మరియు విద్య అవసరం కావచ్చు. ఇది స్వీకరణకు ఒక అడ్డంకి కావచ్చు. +- యాక్సెసిబిలిటీ – ఆధునిక వెబ్ బ్రౌజర్‌లలో ఇంటిగ్రేషన్ లేకపోవడం వలన చాలా మంది వినియోగదారులకు web3 తక్కువ అందుబాటులో ఉంటుంది. +- ఖర్చు – అత్యంత విజయవంతమైన డాప్స్ ఖరీదైనది కాబట్టి వాటి కోడ్‌లో చాలా చిన్న భాగాలను మాత్రమే బ్లాక్‌చెయిన్‌పై ఉంచుతాయి. + +## కేంద్రీకరణ vs వికేంద్రీకరణ {#centralization-vs-decentralization} + +దిగువ పట్టికలో, మేము కేంద్రీకృత మరియు వికేంద్రీకృత డిజిటల్ నెట్‌వర్క్‌ల యొక్క కొన్ని స్థూల ప్రయోజనాలు మరియు ప్రతికూలతలను జాబితా చేసాము. + +| కేంద్రీకృత వ్యవస్థలు | వికేంద్రీకృత వ్యవస్థలు | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| తక్కువ నెట్‌వర్క్ వ్యాసం (పాల్గొనే వారందరూ ఒక కేంద్ర అధికారానికి కనెక్ట్ చేయబడతారు); సమాచారం వేగంగా వ్యాపిస్తుంది, ఎందుకంటే ప్రచారాన్ని చాలా గణన వనరులతో కేంద్ర అధికారం నిర్వహిస్తుంది. | నెట్‌వర్క్‌లో అత్యంత దూరంలో ఉన్న పాల్గొనేవారు ఒకరికొకరు అనేక అంచుల దూరంలో ఉండే అవకాశం ఉంది. నెట్‌వర్క్ యొక్క ఒక వైపు నుండి ప్రసారం చేయబడిన సమాచారం మరొక వైపుకు చేరడానికి చాలా సమయం పట్టవచ్చు. | +| సాధారణంగా అధిక పనితీరు (అధిక త్రూపుట్, తక్కువ మొత్తం గణన వనరులు ఖర్చు) మరియు అమలు చేయడం సులభం. | సాధారణంగా తక్కువ పనితీరు (తక్కువ త్రూపుట్, ఎక్కువ మొత్తం గణన వనరులు ఖర్చు) మరియు అమలు చేయడం మరింత క్లిష్టంగా ఉంటుంది. | +| విరుద్ధమైన డేటా సందర్భంలో, పరిష్కారం స్పష్టంగా మరియు సులభంగా ఉంటుంది: సత్యానికి అంతిమ మూలం కేంద్ర అధికారమే. | పాల్గొనేవారు సింక్రొనైజ్ చేయాల్సిన డేటా స్థితి గురించి పీర్స్ విరుద్ధమైన క్లెయిమ్‌లు చేస్తే, వివాద పరిష్కారం కోసం ఒక ప్రోటోకాల్ (తరచుగా సంక్లిష్టమైనది) అవసరం. | +| వైఫల్యానికి ఒకే పాయింట్: హానికరమైన నటులు కేంద్ర అధికారాన్ని లక్ష్యంగా చేసుకోవడం ద్వారా నెట్‌వర్క్‌ను కూల్చివేయగలరు. | వైఫల్యానికి ఏకైక పాయింట్ లేదు: పాల్గొనేవారిలో పెద్ద భాగం దాడికి గురైనా/తీసివేయబడ్డా నెట్‌వర్క్ ఇప్పటికీ పనిచేయగలదు. | +| నెట్‌వర్క్‌లో పాల్గొనేవారి మధ్య సమన్వయం చాలా సులభం, మరియు ఇది ఒక కేంద్ర అధికారం ద్వారా నిర్వహించబడుతుంది. కేంద్ర అధికారం చాలా తక్కువ ఘర్షణతో అప్‌గ్రేడ్‌లు, ప్రోటోకాల్ అప్‌డేట్‌లు మొదలైన వాటిని స్వీకరించడానికి నెట్‌వర్క్‌లో పాల్గొనేవారిని బలవంతం చేయగలదు. | సమన్వయం తరచుగా కష్టంగా ఉంటుంది, ఎందుకంటే నెట్‌వర్క్-స్థాయి నిర్ణయాలు, ప్రోటోకాల్ అప్‌గ్రేడ్‌లు మొదలైన వాటిలో ఏ ఒక్క ఏజెంట్‌కు తుది నిర్ణయం ఉండదు. చెత్త సందర్భంలో, ప్రోటోకాల్ మార్పులపై విభేదాలు ఉన్నప్పుడు నెట్‌వర్క్ విచ్ఛిన్నమయ్యే అవకాశం ఉంది. | +| కేంద్ర అధికారం డేటాను సెన్సార్ చేయగలదు, నెట్‌వర్క్‌లోని కొన్ని భాగాలను మిగిలిన నెట్‌వర్క్‌తో సంభాషించకుండా నిరోధించే అవకాశం ఉంది. | సెన్సార్‌షిప్ చాలా కష్టం, ఎందుకంటే సమాచారం నెట్‌వర్క్ అంతటా వ్యాపించడానికి అనేక మార్గాలు ఉన్నాయి. | +| నెట్‌వర్క్‌లో పాల్గొనడం కేంద్ర అధికారం ద్వారా నియంత్రించబడుతుంది. | నెట్‌వర్క్‌లో ఎవరైనా పాల్గొనవచ్చు; "గేట్‌కీపర్‌లు" ఎవరూ లేరు. ఆదర్శవంతంగా, పాల్గొనే ఖర్చు చాలా తక్కువ. | + +ఇవి ప్రతి నెట్‌వర్క్‌లోనూ నిజం కాకపోవచ్చని గమనించగల సాధారణ నమూనాలు. అంతేకాకుండా, వాస్తవానికి ఒక నెట్‌వర్క్ ఎంతవరకు కేంద్రీకృతం/వికేంద్రీకృతంగా ఉందనేది ఒక స్పెక్ట్రమ్‌పై ఉంటుంది; ఏ నెట్‌వర్క్ పూర్తిగా కేంద్రీకృతంగా లేదా పూర్తిగా వికేంద్రీకృతంగా ఉండదు. + +## మరింత సమాచారం {#further-reading} + +- [Web3 అంటే ఏమిటి?](/web3/) - _ethereum.org_ +- [ఒక వెబ్ 3.0 అప్లికేషన్ యొక్క నిర్మాణం](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _ప్రీతి కాశిరెడ్డి_ +- [వికేంద్రీకరణ యొక్క అర్థం](https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274) _ఫిబ్రవరి 6, 2017 - విటాలిక్ బుటెరిన్_ +- [వికేంద్రీకరణ ఎందుకు ముఖ్యమైనది](https://onezero.medium.com/why-decentralization-matters-5e3f79f7638e) _ఫిబ్రవరి 18, 2018 - క్రిస్ డిక్సన్_ +- [Web 3.0 అంటే ఏమిటి & అది ఎందుకు ముఖ్యమైనది](https://medium.com/fabric-ventures/what-is-web-3-0-why-it-matters-934eb07f3d2b) _డిసెంబర్ 31, 2019 - మాక్స్ మెర్ష్ మరియు రిచర్డ్ ముయిర్‌హెడ్_ +- [మనకు Web 3.0 ఎందుకు అవసరం](https://gavofyork.medium.com/why-we-need-web-3-0-5da4f2bf95ab) _సెప్టెంబర్ 12, 2018 - గావిన్ వుడ్_ diff --git a/public/content/translations/te/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md b/public/content/translations/te/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md new file mode 100644 index 00000000000..ba7d810bb8b --- /dev/null +++ b/public/content/translations/te/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md @@ -0,0 +1,300 @@ +--- +title: "పైథాన్ అభివృద్ధి చేసేవారికి ఇతీరియము పరిచయం, భాగం 1" +description: "ఇతీరియము అభివృద్ధికి ఒక పరిచయం, ముఖ్యంగా పైథాన్ ప్రోగ్రామింగ్ భాషపై పరిజ్ఞానం ఉన్నవారికి ఉపయోగపడుతుంది" +author: Marc Garreau +lang: te +tags: [ "python", "web3.py" ] +skill: beginner +published: 2020-09-08 +source: Snake charmers +sourceUrl: https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/ +--- + +కాబట్టి, మీరు ఈ ఇతీరియము విషయం గురించి విన్నారు మరియు ఈ కొత్త ప్రపంచంలోకి ప్రవేశించడానికి సిద్ధంగా ఉన్నారా? ఈ పోస్ట్ కొన్ని బ్లాక్ చైను ప్రాథమికాలను త్వరగా వివరిస్తుంది, ఆ తర్వాత ఒక అనుకరణ ఇతీరియము నోడ్‌తో మీరు సంభాషించేలా చేస్తుంది – బ్లాక్ డేటాను చదవడం, ఖాతా నిల్వలను తనిఖీ చేయడం, మరియు లావాదేవీలను పంపడం. ఈ క్రమంలో, యాప్‌లను నిర్మించే సాంప్రదాయ మార్గాలకు మరియు ఈ కొత్త వికేంద్రీకృత నమూనాకు మధ్య ఉన్న తేడాలను మేము హైలైట్ చేస్తాము. + +## (సాఫ్ట్) ముందస్తు అవసరాలు {#soft-prerequisites} + +ఈ పోస్ట్ విస్తృత శ్రేణి అభివృద్ధి చేసేవారికి అందుబాటులో ఉండాలని ఆశిస్తోంది. [పైథాన్ ఉపకరణాలు](/developers/docs/programming-languages/python/) ఇందులో ఉంటాయి, కానీ అవి కేవలం ఆలోచనలకు ఒక వాహనం మాత్రమే – మీరు పైథాన్ అభివృద్ధి చేసేవారు కాకపోయినా ఫర్వాలేదు. అయితే, మీకు ఇప్పటికే తెలిసిన వాటి గురించి నేను కొన్ని అంచనాలు వేస్తున్నాను, తద్వారా మనం ఇతీరియము-నిర్దిష్ట అంశాలకు త్వరగా వెళ్ళవచ్చు. + +అంచనాలు: + +- మీకు టెర్మినల్ ఉపయోగించడం తెలుసు, +- మీరు కొన్ని పైథాన్ కోడ్ పంక్తులు రాసి ఉండాలి, +- మీ మెషీన్‌లో పైథాన్ వెర్షన్ 3.6 లేదా అంతకంటే ఎక్కువ ఇన్‌స్టాల్ చేయబడి ఉండాలి ([వర్చువల్ ఎన్విరాన్‌మెంట్](https://realpython.com/effective-python-environment/#virtual-environments) వాడకాన్ని గట్టిగా ప్రోత్సహిస్తున్నాము), మరియు +- మీరు పైథాన్ ప్యాకేజీ ఇన్‌స్టాలర్ అయిన `pip`ను ఉపయోగించి ఉండాలి. + మళ్ళీ, వీటిలో ఏవైనా నిజం కాకపోయినా, లేదా ఈ వ్యాసంలోని కోడ్‌ను మీరు పునరుత్పత్తి చేయాలని ప్లాన్ చేయకపోయినా, మీరు బహుశా ఎలాంటి ఇబ్బంది లేకుండా అనుసరించగలరు. + +## బ్లాక్‌చైన్‌లు, క్లుప్తంగా {#blockchains-briefly} + +ఇతీరియమును వివరించడానికి అనేక మార్గాలు ఉన్నాయి, కానీ దాని గుండెలో ఒక బ్లాక్ చైను ఉంది. బ్లాక్ చైనులు బ్లాక్‌ల శ్రేణితో రూపొందించబడ్డాయి, కాబట్టి అక్కడి నుండి ప్రారంభిద్దాం. సరళంగా చెప్పాలంటే, ఇతీరియము బ్లాక్ చైనులోని ప్రతి బ్లాక్ కేవలం కొన్ని మెటాడేటా మరియు లావాదేవీల జాబితా మాత్రమే. JSON ఫార్మాట్‌లో, అది ఇలా కనిపిస్తుంది: + +```json +{ + "number": 1234567, + "hash": "0xabc123...", + "parentHash": "0xdef456...", + ..., + "transactions": [...] +} +``` + +ప్రతి [బ్లాక్](/developers/docs/blocks/) దాని ముందు వచ్చిన బ్లాక్‌కు ఒక రిఫరెన్స్ కలిగి ఉంటుంది; `parentHash` అనేది కేవలం మునుపటి బ్లాక్ యొక్క హాష్. + +గమనిక: ఇతీరియము స్థిర-పరిమాణ విలువలను (“హాష్‌లను”) ఉత్పత్తి చేయడానికి హాష్ ఫంక్షన్‌లను క్రమం తప్పకుండా ఉపయోగిస్తుంది. ఇతీరియములో హాష్‌లు ఒక ముఖ్యమైన పాత్ర పోషిస్తాయి, కానీ ప్రస్తుతానికి మీరు వాటిని ప్రత్యేకమైన IDలుగా సురక్షితంగా భావించవచ్చు. + +![ప్రతి బ్లాక్ లోపల డేటాతో సహా బ్లాక్‌చైన్‌ను వర్ణించే రేఖాచిత్రం](./blockchain-diagram.png) + +_బ్లాక్ చైను తప్పనిసరిగా ఒక లింక్డ్ జాబితా; ప్రతి బ్లాక్ మునుపటి బ్లాక్‌కు ఒక రిఫరెన్స్ కలిగి ఉంటుంది._ + +ఈ డేటా నిర్మాణం కొత్తదేమీ కాదు, కానీ నెట్‌వర్క్‌ను నియంత్రించే నియమాలు (అంటే, పీర్-టు-పీర్ ప్రోటోకాల్స్) కొత్తవి. కేంద్ర అధికారం లేదు; నెట్‌వర్క్‌ను నిలబెట్టడానికి పీర్‌ల నెట్‌వర్క్ సహకరించాలి, మరియు తదుపరి బ్లాక్‌లో ఏ లావాదేవీలను చేర్చాలో నిర్ణయించడానికి పోటీపడాలి. కాబట్టి, మీరు ఒక స్నేహితుడికి కొంత డబ్బు పంపాలనుకున్నప్పుడు, మీరు ఆ లావాదేవీని నెట్‌వర్క్‌కు ప్రసారం చేయాలి, ఆపై అది రాబోయే బ్లాక్‌లో చేర్చబడే వరకు వేచి ఉండాలి. + +ఒక వినియోగదారుడి నుండి మరొకరికి డబ్బు నిజంగా పంపబడిందని బ్లాక్ చైను ధృవీకరించడానికి ఏకైక మార్గం, ఆ బ్లాక్ చైనుకు చెందిన (అంటే, దానిచే సృష్టించబడిన మరియు పాలించబడే) కరెన్సీని ఉపయోగించడం. ఇతీరియములో, ఈ కరెన్సీని ఈథర్ అని పిలుస్తారు, మరియు ఇతీరియము బ్లాక్ చైను ఖాతా నిల్వల యొక్క ఏకైక అధికారిక రికార్డును కలిగి ఉంటుంది. + +## ఒక కొత్త నమూనా {#a-new-paradigm} + +ఈ కొత్త వికేంద్రీకృత టెక్ స్టాక్ కొత్త అభివృద్ధి చేసేవారి ఉపకరణాలను సృష్టించింది. అటువంటి ఉపకరణాలు అనేక ప్రోగ్రామింగ్ భాషలలో ఉన్నాయి, కానీ మనం పైథాన్ కోణం నుండి చూస్తాము. మళ్ళీ చెప్పాలంటే: పైథాన్ మీకు ఇష్టమైన భాష కాకపోయినా, అనుసరించడం పెద్ద కష్టం కాదు. + +ఇతీరియముతో సంభాషించాలనుకునే పైథాన్ అభివృద్ధి చేసేవారు బహుశా [Web3.py](https://web3py.readthedocs.io/)ని ఎంచుకుంటారు. Web3.py ఒక లైబ్రరీ, ఇది మీరు ఇతీరియము నోడ్‌కు కనెక్ట్ అయ్యే విధానాన్ని, ఆపై దాని నుండి డేటాను పంపడం మరియు స్వీకరించడాన్ని చాలా సులభతరం చేస్తుంది. + +గమనిక: “ఇతీరియము నోడ్” మరియు “ఇతీరియము క్లయింట్” అనేవి పరస్పరం మార్చుకోదగినవి. ఏ సందర్భంలోనైనా, ఇది ఇతీరియము నెట్‌వర్క్‌లోని ఒక పార్టిసిపెంట్ నడిపే సాఫ్ట్‌వేర్‌ను సూచిస్తుంది. ఈ సాఫ్ట్‌వేర్ బ్లాక్ డేటాను చదవగలదు, చైనుకు కొత్త బ్లాక్‌లు జోడించబడినప్పుడు అప్‌డేట్‌లను స్వీకరించగలదు, కొత్త లావాదేవీలను ప్రసారం చేయగలదు, మరియు మరిన్ని చేయగలదు. సాంకేతికంగా, క్లయింట్ అనేది సాఫ్ట్‌వేర్, నోడ్ అనేది ఆ సాఫ్ట్‌వేర్‌ను నడుపుతున్న కంప్యూటర్. + +[ఇతీరియము క్లయింట్లు](/developers/docs/nodes-and-clients/) [IPC](https://wikipedia.org/wiki/Inter-process_communication), HTTP, లేదా Websockets ద్వారా చేరుకునేలా కాన్ఫిగర్ చేయబడతాయి, కాబట్టి Web3.py ఈ కాన్ఫిగరేషన్‌ను ప్రతిబింబించాల్సి ఉంటుంది. Web3.py ఈ కనెక్షన్ ఎంపికలను **ప్రొవైడర్లు**గా సూచిస్తుంది. Web3.py ఇన్‌స్టాన్స్‌ను మీ నోడ్‌తో లింక్ చేయడానికి మీరు మూడు ప్రొవైడర్లలో ఒకదాన్ని ఎంచుకోవాలి. + +![మీ అప్లికేషన్‌ను ఇతీరియము నోడ్‌కు కనెక్ట్ చేయడానికి web3.py IPCని ఎలా ఉపయోగిస్తుందో చూపే రేఖాచిత్రం](./web3py-and-nodes.png) + +_ఈ రేఖాచిత్రంలో ఉదాహరణకు IPC వంటి ఒకే ప్రోటోకాల్ ద్వారా కమ్యూనికేట్ చేయడానికి ఇతీరియము నోడ్ మరియు Web3.pyలను కాన్ఫిగర్ చేయండి._ + +Web3.py సరిగ్గా కాన్ఫిగర్ చేయబడిన తర్వాత, మీరు బ్లాక్ చైనుతో సంభాషించడం ప్రారంభించవచ్చు. రాబోయే వాటికి ప్రివ్యూగా ఇక్కడ కొన్ని Web3.py వినియోగ ఉదాహరణలు ఉన్నాయి: + +```python +# బ్లాక్ డేటాను చదవండి: +w3.eth.get_block('latest') + +# లావాదేవీని పంపండి: +w3.eth.send_transaction({'from': ..., 'to': ..., 'value': ...}) +``` + +## సంస్థాపన {#installation} + +ఈ వాక్‌త్రూలో, మనం కేవలం ఒక పైథాన్ ఇంటర్‌ప్రిటర్‌లోనే పని చేస్తాము. మనం ఏ డైరెక్టరీలు, ఫైళ్లు, క్లాసులు లేదా ఫంక్షన్‌లను సృష్టించము. + +గమనిక: క్రింది ఉదాహరణలలో, `$`తో ప్రారంభమయ్యే కమాండ్‌లు టెర్మినల్‌లో రన్ చేయడానికి ఉద్దేశించబడ్డాయి. (`$`ను టైప్ చేయవద్దు, అది కేవలం లైన్ ప్రారంభాన్ని సూచిస్తుంది.) + +ముందుగా, అన్వేషించడానికి యూజర్-ఫ్రెండ్లీ వాతావరణం కోసం [IPython](https://ipython.org/)ను ఇన్‌స్టాల్ చేయండి. IPython ఇతర ఫీచర్లతో పాటు ట్యాబ్ కంప్లీషన్‌ను అందిస్తుంది, ఇది Web3.pyలో ఏమేమి సాధ్యమో చూడటాన్ని చాలా సులభం చేస్తుంది. + +```bash +pip install ipython +``` + +Web3.py `web3` అనే పేరుతో ప్రచురించబడింది. దాన్ని ఇలా ఇన్‌స్టాల్ చేయండి: + +```bash +pip install web3 +``` + +ఇంకో విషయం – మనం తర్వాత ఒక బ్లాక్ చైనును అనుకరించబోతున్నాము, దీనికి మరికొన్ని డిపెండెన్సీలు అవసరం. మీరు వాటిని దీని ద్వారా ఇన్‌స్టాల్ చేయవచ్చు: + +```bash +pip install 'web3[tester]' +``` + +మీరు వెళ్ళడానికి సిద్ధంగా ఉన్నారు! + +గమనిక: `web3[tester]` ప్యాకేజీ పైథాన్ 3.10.xx వరకు పనిచేస్తుంది + +## ఒక శాండ్‌బాక్స్‌ను ప్రారంభించండి {#spin-up-a-sandbox} + +మీ టెర్మినల్‌లో `ipython`ను రన్ చేయడం ద్వారా కొత్త పైథాన్ ఎన్విరాన్‌మెంట్‌ను తెరవండి. ఇది `python` రన్ చేయడంతో పోల్చదగినది, కానీ మరిన్ని అదనపు ఫీచర్లతో వస్తుంది. + +```bash +ipython +``` + +ఇది మీరు నడుపుతున్న పైథాన్ మరియు IPython వెర్షన్ల గురించి కొంత సమాచారాన్ని ప్రింట్ చేస్తుంది, ఆపై మీరు ఇన్‌పుట్ కోసం వేచి ఉన్న ప్రాంప్ట్‌ను చూడాలి: + +```python +In [1]: +``` + +మీరు ఇప్పుడు ఒక ఇంటరాక్టివ్ పైథాన్ షెల్‌ను చూస్తున్నారు. తప్పనిసరిగా, ఇది ఆడుకోవడానికి ఒక శాండ్‌బాక్స్. మీరు ఇంత దూరం వచ్చినట్లయితే, Web3.pyను ఇంపోర్ట్ చేయడానికి సమయం ఆసన్నమైంది: + +```python +In [1]: from web3 import Web3 +``` + +## Web3 మాడ్యూల్‌ను పరిచయం చేస్తున్నాము {#introducing-the-web3-module} + +ఇతీరియముకు ఒక గేట్‌వేగా ఉండటంతో పాటు, [Web3](https://web3py.readthedocs.io/en/stable/overview.html#base-api) మాడ్యూల్ కొన్ని సౌకర్యవంతమైన ఫంక్షన్‌లను అందిస్తుంది. కొన్నింటిని అన్వేషిద్దాం. + +ఒక ఇతీరియము అప్లికేషన్‌లో, మీరు సాధారణంగా కరెన్సీ డినామినేషన్‌లను మార్చవలసి ఉంటుంది. Web3 మాడ్యూల్ దీని కోసమే కొన్ని సహాయక పద్ధతులను అందిస్తుంది: [from_wei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.from_wei) మరియు [to_wei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.to_wei). + + +గమనిక: దశాంశ గణితాన్ని నిర్వహించడంలో కంప్యూటర్లు చాలా చెడ్డవి. దీన్ని అధిగమించడానికి, అభివృద్ధి చేసేవారు తరచుగా డాలర్ మొత్తాలను సెంట్లలో నిల్వ చేస్తారు. ఉదాహరణకు, $5.99 ధర ఉన్న ఒక వస్తువు డేటాబేస్‌లో 599గా నిల్వ చేయబడవచ్చు. + +ఈథర్లో లావాదేవీలను నిర్వహించేటప్పుడు ఇదే విధమైన నమూనా ఉపయోగించబడుతుంది. అయితే, రెండు దశాంశ స్థానాలకు బదులుగా, ఈథర్‌కు 18 ఉన్నాయి! ఈథర్ యొక్క అతి చిన్న డినామినేషన్‌ను wei అని పిలుస్తారు, కాబట్టి లావాదేవీలను పంపేటప్పుడు పేర్కొన్న విలువ అదే. + +1 ఈథర్ = 1000000000000000000 wei + +1 wei = 0.000000000000000001 ఈథర్ + + + +కొన్ని విలువలను wei నుండి మరియు weiకి మార్చడానికి ప్రయత్నించండి. ఈథర్ మరియు wei మధ్య [అనేక డినామినేషన్‌లకు పేర్లు ఉన్నాయని](https://web3py.readthedocs.io/en/stable/troubleshooting.html#how-do-i-convert-currency-denominations) గమనించండి. వాటిలో బాగా తెలిసిన వాటిలో ఒకటి **gwei**, ఎందుకంటె లావాదేవీ రుసుములు తరచుగా అలానే సూచించబడతాయి. + +```python +In [2]: Web3.to_wei(1, 'ether') +Out[2]: 1000000000000000000 + +In [3]: Web3.from_wei(500000000, 'gwei') +Out[3]: Decimal('0.5') +``` + +Web3 మాడ్యూల్‌లోని ఇతర యుటిలిటీ పద్ధతులలో డేటా ఫార్మాట్ కన్వర్టర్లు (ఉదా., [`toHex`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.toHex)), చిరునామా సహాయకులు (ఉదా., [`isAddress`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.isAddress)), మరియు హాష్ ఫంక్షన్లు (ఉదా., [`keccak`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.keccak)) ఉన్నాయి. వీటిలో చాలా వరకు ఈ సిరీస్‌లో తరువాత వివరించబడతాయి. అందుబాటులో ఉన్న అన్ని పద్ధతులు మరియు లక్షణాలను వీక్షించడానికి, IPython యొక్క ఆటో-కంప్లీట్‌ను `Web3` అని టైప్ చేసి ఉపయోగించుకోండి. మరియు పీరియడ్ తర్వాత ట్యాబ్ కీని రెండుసార్లు నొక్కండి. + +## చైన్‌తో మాట్లాడండి {#talk-to-the-chain} + +సౌకర్యవంతమైన పద్ధతులు బాగున్నాయి, కానీ బ్లాక్‌చైన్‌కు వెళ్దాం. తదుపరి దశ Web3.pyని ఒక ఇతీరియము నోడ్‌తో కమ్యూనికేట్ చేయడానికి కాన్ఫిగర్ చేయడం. ఇక్కడ మనకు IPC, HTTP, లేదా Websocket ప్రొవైడర్లను ఉపయోగించే అవకాశం ఉంది. + +మేము ఈ మార్గంలో వెళ్లడం లేదు, కానీ HTTP ప్రొవైడర్‌ని ఉపయోగించి పూర్తి వర్క్‌ఫ్లో యొక్క ఉదాహరణ ఇలా ఉంటుంది: + +- [Geth](https://geth.ethereum.org/) వంటి ఒక ఇతీరియము నోడ్‌ను డౌన్‌లోడ్ చేసుకోండి. +- ఒక టెర్మినల్ విండోలో Gethని ప్రారంభించి, అది నెట్‌వర్క్‌ను సింక్ చేసే వరకు వేచి ఉండండి. డిఫాల్ట్ HTTP పోర్ట్ `8545`, కానీ ఇది కాన్ఫిగర్ చేయదగినది. +- `localhost:8545`లో, HTTP ద్వారా నోడ్‌కి కనెక్ట్ అవ్వమని Web3.pyకి చెప్పండి. + `w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545'))` +- నోడ్‌తో ఇంటరాక్ట్ అవ్వడానికి `w3` ఉదాహరణను ఉపయోగించండి. + +ఇది చేయడానికి ఇది ఒక “నిజమైన” మార్గం అయినప్పటికీ, సింకింగ్ ప్రక్రియ గంటలు పడుతుంది మరియు మీరు కేవలం ఒక అభివృద్ధి వాతావరణం కోరుకుంటే ఇది అనవసరం. Web3.py ఈ ప్రయోజనం కోసం నాల్గవ ప్రొవైడర్‌ను బహిర్గతం చేస్తుంది, అదే **EthereumTesterProvider**. ఈ టెస్టర్ ప్రొవైడర్ సడలించిన అనుమతులు మరియు ఆడుకోవడానికి నకిలీ కరెన్సీతో అనుకరణ చేయబడిన ఇతీరియము నోడ్‌కు లింక్ చేస్తుంది. + +![మీ web3.py అప్లికేషన్‌ను అనుకరణ చేయబడిన ఇతీరియము నోడ్‌కు లింక్ చేసే EthereumTesterProviderని చూపే రేఖాచిత్రం](./ethereumtesterprovider.png) + +_EthereumTesterProvider అనుకరణ చేయబడిన నోడ్‌కి కనెక్ట్ అవుతుంది మరియు శీఘ్ర అభివృద్ధి వాతావరణాలకు సులభంగా ఉంటుంది._ + +ఆ అనుకరణ నోడ్‌ను [eth-tester](https://github.com/ethereum/eth-tester) అని పిలుస్తారు మరియు మేము దానిని `pip install web3[tester]` కమాండ్ భాగంగా ఇన్‌స్టాల్ చేసాము. ఈ టెస్టర్ ప్రొవైడర్‌ను ఉపయోగించడానికి Web3.pyని కాన్ఫిగర్ చేయడం చాలా సులభం: + +```python +In [4]: w3 = Web3(Web3.EthereumTesterProvider()) +``` + +ఇప్పుడు మీరు చైన్‌ను సర్ఫ్ చేయడానికి సిద్ధంగా ఉన్నారు! అలా జనాలు అనరు. అది నేనే కల్పించాను. ఒక చిన్న పర్యటన చేద్దాం. + +## శీఘ్ర పర్యటన {#the-quick-tour} + +అన్నింటికంటే ముందు, ఒక శానిటీ చెక్: + +```python +In [5]: w3.is_connected() +Out[5]: True +``` + +మేము టెస్టర్ ప్రొవైడర్‌ను ఉపయోగిస్తున్నందున, ఇది చాలా విలువైన పరీక్ష కాదు, కానీ ఇది విఫలమైతే, `w3` వేరియబుల్‌ను ఇన్‌స్టాన్షియేట్ చేసేటప్పుడు మీరు ఏదో తప్పుగా టైప్ చేసి ఉండవచ్చు. మీరు లోపలి కుండలీకరణాలను చేర్చారని రెండుసార్లు తనిఖీ చేయండి, అనగా, `Web3.EthereumTesterProvider()`. + +## పర్యటన స్టాప్ #1: [ఖాతాలు](/developers/docs/accounts/) {#tour-stop-1-accounts} + +ఒక సౌలభ్యంగా, టెస్టర్ ప్రొవైడర్ కొన్ని ఖాతాలను సృష్టించి, వాటిని టెస్ట్ ఈథర్‌తో ప్రీలోడ్ చేసింది. + +ముందుగా, ఆ ఖాతాల జాబితాను చూద్దాం: + +```python +In [6]: w3.eth.accounts +Out[6]: ['0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf', + '0x2B5AD5c4795c026514f8317c7a215E218DcCD6cF', + '0x6813Eb9362372EEF6200f3b1dbC3f819671cBA69', ...] +``` + +మీరు ఈ కమాండ్‌ను రన్ చేస్తే, `0x`తో ప్రారంభమయ్యే పది స్ట్రింగ్‌ల జాబితాను మీరు చూడాలి. ప్రతిదీ ఒక **పబ్లిక్ చిరునామా** మరియు కొన్ని విధాలుగా, ఒక చెకింగ్ ఖాతాలోని ఖాతా నంబర్‌కు సమానంగా ఉంటుంది. మీకు ఈథర్ పంపాలనుకునే వారికి మీరు ఈ చిరునామాను అందిస్తారు. + +చెప్పినట్లుగా, టెస్టర్ ప్రొవైడర్ ఈ ప్రతి ఖాతాను కొంత టెస్ట్ ఈథర్‌తో ప్రీలోడ్ చేసింది. మొదటి ఖాతాలో ఎంత ఉందో తెలుసుకుందాం: + +```python +In [7]: w3.eth.get_balance(w3.eth.accounts[0]) +Out[7]: 1000000000000000000000000 +``` + +అవి చాలా సున్నాలు! నకిలీ బ్యాంకుకు వెళ్ళి నవ్వే ముందు, ముందుగా కరెన్సీ డినామినేషన్ల గురించి పాఠం గుర్తుంచుకోండి. ఈథర్ విలువలు అతి చిన్న డినామినేషన్, weiలో సూచించబడతాయి. దాన్ని ఈథర్‌లోకి మార్చండి: + +```python +In [8]: w3.from_wei(1000000000000000000000000, 'ether') +Out[8]: Decimal('1000000') +``` + +ఒక మిలియన్ టెస్ట్ ఈథర్ — ఇప్పటికీ చాలా బాగుంది. + +## పర్యటన స్టాప్ #2: బ్లాక్ డేటా {#tour-stop-2-block-data} + +ఈ అనుకరణ చేయబడిన బ్లాక్‌చైన్ స్థితిని ఒకసారి చూద్దాం: + +```python +In [9]: w3.eth.get_block('latest') +Out[9]: AttributeDict({ + 'number': 0, + 'hash': HexBytes('0x9469878...'), + 'parentHash': HexBytes('0x0000000...'), + ... + 'transactions': [] +}) +``` + +ఒక బ్లాక్ గురించి చాలా సమాచారం తిరిగి వస్తుంది, కానీ ఇక్కడ కొన్ని విషయాలు మాత్రమే సూచించబడ్డాయి: + +- బ్లాక్ నంబర్ సున్నా - మీరు టెస్టర్ ప్రొవైడర్‌ను ఎంతకాలం క్రితం కాన్ఫిగర్ చేసినప్పటికీ. ప్రతి 12 సెకన్లకు కొత్త బ్లాక్‌ను జోడించే నిజమైన ఇతీరియము నెట్‌వర్క్‌కు భిన్నంగా, ఈ అనుకరణ మీరు దానికి కొంత పని ఇచ్చే వరకు వేచి ఉంటుంది. +- `లావాదేవీలు` ఒక ఖాళీ జాబితా, అదే కారణం కోసం: మేము ఇంకా ఏమీ చేయలేదు. ఈ మొదటి బ్లాక్ ఒక **ఖాళీ బ్లాక్**, చైన్‌ను ప్రారంభించడానికి మాత్రమే. +- `parentHash` కేవలం ఖాళీ బైట్ల సమూహం అని గమనించండి. ఇది చైన్‌లో మొదటి బ్లాక్ అని సూచిస్తుంది, దీనిని **జెనిసిస్ బ్లాక్** అని కూడా అంటారు. + +## పర్యటన స్టాప్ #3: [లావాదేవీలు](/developers/docs/transactions/) {#tour-stop-3-transactions} + +పెండింగ్‌లో ఉన్న లావాదేవీ ఉండే వరకు మేము బ్లాక్ సున్నా వద్ద నిలిచిపోయాము, కాబట్టి దానికి ఒకటి ఇద్దాం. ఒక ఖాతా నుండి మరొక ఖాతాకు కొన్ని టెస్ట్ ఈథర్‌ను పంపండి: + +```python +In [10]: tx_hash = w3.eth.send_transaction({ + 'from': w3.eth.accounts[0], + 'to': w3.eth.accounts[1], + 'value': w3.to_wei(3, 'ether'), + 'gas': 21000 +}) +``` + +మీ లావాదేవీ కొత్త బ్లాక్‌లో చేర్చబడటానికి మీరు చాలా సెకన్ల పాటు వేచి ఉండే పాయింట్ ఇది. పూర్తి ప్రక్రియ ఇలా ఉంటుంది: + +1. ఒక లావాదేవీని సమర్పించి, లావాదేవీ హాష్‌ను పట్టుకోండి. లావాదేవీని కలిగి ఉన్న బ్లాక్ సృష్టించబడి, ప్రసారం చేయబడే వరకు, లావాదేవీ “పెండింగ్‌లో” ఉంటుంది. + `tx_hash = w3.eth.send_transaction({ … })` +2. లావాదేవీ బ్లాక్‌లో చేర్చబడటానికి వేచి ఉండండి: + `w3.eth.wait_for_transaction_receipt(tx_hash)` +3. అప్లికేషన్ లాజిక్‌ను కొనసాగించండి. విజయవంతమైన లావాదేవీని వీక్షించడానికి: + `w3.eth.get_transaction(tx_hash)` + +మా అనుకరణ వాతావరణం లావాదేవీని వెంటనే కొత్త బ్లాక్‌లో జోడిస్తుంది, కాబట్టి మేము వెంటనే లావాదేవీని వీక్షించవచ్చు: + +```python +In [11]: w3.eth.get_transaction(tx_hash) +Out[11]: AttributeDict({ + 'hash': HexBytes('0x15e9fb95dc39...'), + 'blockNumber': 1, + 'transactionIndex': 0, + 'from': '0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf', + 'to': '0x2B5AD5c4795c026514f8317c7a215E218DcCD6cF', + 'value': 3000000000000000000, + ... +}) +``` + +ఇక్కడ మీరు కొన్ని సుపరిచితమైన వివరాలను చూస్తారు: `from`, `to`, మరియు `value` ఫీల్డ్‌లు మా `send_transaction` కాల్ ఇన్‌పుట్‌లతో సరిపోలాలి. మరొక భరోసా ఇచ్చే విషయం ఏమిటంటే, ఈ లావాదేవీ బ్లాక్ నంబర్ 1లో మొదటి లావాదేవీగా (`'transactionIndex': 0`) చేర్చబడింది. + +సంబంధిత రెండు ఖాతాల బ్యాలెన్స్‌లను తనిఖీ చేయడం ద్వారా కూడా మేము ఈ లావాదేవీ విజయాన్ని సులభంగా ధృవీకరించవచ్చు. మూడు ఈథర్ ఒకటి నుండి మరొకదానికి కదిలి ఉండాలి. + +```python +In [12]: w3.eth.get_balance(w3.eth.accounts[0]) +Out[12]: 999996999979000000000000 + +In [13]: w3.eth.get_balance(w3.eth.accounts[1]) +Out[13]: 1000003000000000000000000 +``` + +తరువాతది బాగుంది! బ్యాలెన్స్ 1,000,000 నుండి 1,000,003 ఈథర్‌కు పెరిగింది. కానీ మొదటి ఖాతాకు ఏమైంది? ఇది మూడు ఈథర్‌ల కంటే కొంచెం ఎక్కువ కోల్పోయినట్లు కనిపిస్తుంది. అయ్యో, జీవితంలో ఏదీ ఉచితం కాదు, మరియు ఇతీరియము పబ్లిక్ నెట్‌వర్క్‌ను ఉపయోగించడం వల్ల మీ తోటివారికి వారి సహాయక పాత్రకు మీరు పరిహారం చెల్లించవలసి ఉంటుంది. లావాదేవీని సమర్పించిన ఖాతా నుండి ఒక చిన్న లావాదేవీ రుసుము తీసివేయబడింది - ఈ రుసుము అనేది గ్యాస్ బర్న్ చేయబడిన మొత్తం (ఒక ETH బదిలీకి 21000 యూనిట్ల గ్యాస్) నెట్‌వర్క్ కార్యకలాపాల ప్రకారం మారే మూల రుసుముతో గుణించబడి, లావాదేవీని బ్లాక్‌లో చేర్చే వాలిడేటర్‌కు వెళ్లే చిట్కాతో కూడి ఉంటుంది. + +[గ్యాస్](/developers/docs/gas/#post-london) గురించి మరింత + +గమనిక: పబ్లిక్ నెట్‌వర్క్‌లో, లావాదేవీల రుసుములు నెట్‌వర్క్ డిమాండ్ మరియు లావాదేవీని ఎంత త్వరగా ప్రాసెస్ చేయాలనుకుంటున్నారనే దాని ఆధారంగా మారుతూ ఉంటాయి. రుసుములు ఎలా లెక్కించబడతాయనే దానిపై మీకు ఆసక్తి ఉంటే, లావాదేవీలు బ్లాక్‌లో ఎలా చేర్చబడతాయి అనే నా మునుపటి పోస్ట్‌ను చూడండి. + +## మరియు శ్వాస తీసుకోండి {#and-breathe} + +మనం కొంతకాలంగా ఈ పనిలో ఉన్నాము, కాబట్టి విరామం తీసుకోవడానికి ఇది మంచి ప్రదేశంగా అనిపిస్తుంది. కుందేలు రంధ్రం కొనసాగుతుంది, మరియు మనం ఈ సిరీస్ యొక్క రెండవ భాగంలో అన్వేషణను కొనసాగిస్తాము. రాబోయే కొన్ని భావనలు: నిజమైన నోడ్‌కు కనెక్ట్ అవ్వడం, స్మార్ట్ కాంట్రాక్టులు, మరియు టోకెన్లు. తదుపరి ప్రశ్నలు ఉన్నాయా? నాకు తెలియజేయండి! మీ అభిప్రాయం మనం ఇక్కడి నుండి ఎక్కడికి వెళ్తామో ప్రభావితం చేస్తుంది. [Twitter](https://twitter.com/wolovim) ద్వారా అభ్యర్థనలు స్వాగతం. diff --git a/public/content/translations/te/developers/tutorials/all-you-can-cache/index.md b/public/content/translations/te/developers/tutorials/all-you-can-cache/index.md new file mode 100644 index 00000000000..2b89d5235a2 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/all-you-can-cache/index.md @@ -0,0 +1,867 @@ +--- +title: "మీరు కాష్ చేయగలవన్నీ" +description: "తక్కువ ధర రోల్అప్ లావాదేవీల కోసం కాషింగ్ కాంట్రాక్ట్‌ను ఎలా సృష్టించాలో మరియు ఉపయోగించాలో తెలుసుకోండి" +author: Ori Pomerantz +tags: [ "లేయర్ 2", "కాషింగ్", "స్టోరేజ్" ] +skill: intermediate +published: 2022-09-15 +lang: te +--- + +రోల్అప్స్ ఉపయోగిస్తున్నప్పుడు, లావాదేవీలో ఒక బైట్ ఖర్చు నిల్వ స్లాట్ ఖర్చు కంటే చాలా ఎక్కువ. అందువల్ల, వీలైనంత ఎక్కువ సమాచారాన్ని ఆన్‌చెయిన్‌లో కాష్ చేయడం అర్ధవంతంగా ఉంటుంది. + +ఈ వ్యాసంలో మీరు కాషింగ్ కాంట్రాక్ట్‌ను సృష్టించడం మరియు ఉపయోగించడం ఎలాగో నేర్చుకుంటారు. దీని ద్వారా చాలాసార్లు ఉపయోగించబడే ఏవైనా పారామీటర్ విలువ కాష్ చేయబడుతుంది మరియు (మొదటిసారి తర్వాత) చాలా తక్కువ సంఖ్యలో బైట్లతో ఉపయోగం కోసం అందుబాటులో ఉంటుంది. అలాగే ఈ కాష్‌ను ఉపయోగించే ఆఫ్‌చెయిన్ కోడ్‌ను ఎలా రాయాలో కూడా నేర్చుకుంటారు. + +మీరు వ్యాసాన్ని దాటవేసి, సోర్స్ కోడ్‌ను చూడాలనుకుంటే, [అది ఇక్కడ ఉంది](https://github.com/qbzzt/20220915-all-you-can-cache). డెవలప్‌మెంట్ స్టాక్ [Foundry](https://getfoundry.sh/introduction/installation/). + +## మొత్తం రూపకల్పన {#overall-design} + +సరళత కోసం అన్ని లావాదేవీ పారామితులు `uint256`, 32 బైట్స్ పొడవు ఉంటాయని మేము ఊహిస్తాము. మేము ఒక లావాదేవీని స్వీకరించినప్పుడు, ప్రతి పారామీటర్‌ను ఇలా పార్స్ చేస్తాము: + +1. మొదటి బైట్ `0xFF` అయితే, తదుపరి 32 బైట్స్‌ను పారామీటర్ విలువగా తీసుకొని కాష్‌లో రాయండి. + +2. మొదటి బైట్ `0xFE` అయితే, తదుపరి 32 బైట్స్‌ను పారామీటర్ విలువగా తీసుకోండి, కానీ దానిని కాష్‌లో రాయవద్దు. + +3. ఏదైనా ఇతర విలువ కోసం, అదనపు బైట్ల సంఖ్యగా మొదటి నాలుగు బిట్‌లను, మరియు కాష్ కీ యొక్క అత్యంత ముఖ్యమైన బిట్‌లుగా చివరి నాలుగు బిట్‌లను తీసుకోండి. ఇక్కడ కొన్ని ఉదాహరణలు ఉన్నాయి: + + | కాల్‌డేటాలో బైట్స్ | కాష్ కీ | + | :----------------- | -------: | + | 0x0F | 0x0F | + | 0x10,0x10 | 0x10 | + | 0x12,0xAC | 0x02AC | + | 0x2D,0xEA, 0xD6 | 0x0DEAD6 | + +## కాష్ మార్పు {#cache-manipulation} + +కాష్ [`Cache.sol`](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/Cache.sol)లో అమలు చేయబడింది. దాన్ని లైన్ వారీగా చూద్దాం. + +```solidity +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + + +contract Cache { + + bytes1 public constant INTO_CACHE = 0xFF; + bytes1 public constant DONT_CACHE = 0xFE; +``` + +మేము మొత్తం సమాచారాన్ని అందించిన ప్రత్యేక సందర్భాలను అర్థం చేసుకోవడానికి ఈ స్థిరాంకాలు ఉపయోగించబడతాయి మరియు దానిని కాష్‌లో వ్రాయాలనుకుంటున్నామా లేదా అనేది తెలియజేయడానికి. కాష్ లోకి రాయడానికి ఇంతకుముందు ఉపయోగించని నిల్వ స్లాట్‌లలోకి రెండు [`SSTORE`](https://www.evm.codes/#55) ఆపరేషన్లు అవసరం, ఒక్కొక్క దానికి 22100 గ్యాస్ ఖర్చు అవుతుంది, కనుక మేము దీన్ని ఐచ్ఛికం చేసాము. + +```solidity + + mapping(uint => uint) public val2key; +``` + +విలువలు మరియు వాటి కీలకు మధ్య ఒక [మ్యాపింగ్](https://www.geeksforgeeks.org/solidity/solidity-mappings/). మీరు లావాదేవీని పంపే ముందు విలువలను ఎన్కోడ్ చేయడానికి ఈ సమాచారం అవసరం. + +```solidity + // స్థానం n కి కీ n+1 కోసం విలువ ఉంటుంది, ఎందుకంటే మనం సున్నాను + // "కాష్‌లో లేదు" అని భద్రపరచాలి. + uint[] public key2val; +``` + +కీల నుండి విలువలకు మ్యాపింగ్ కోసం మేము ఒక శ్రేణిని ఉపయోగించవచ్చు, ఎందుకంటే మేము కీలను కేటాయిస్తాము మరియు సరళత కోసం మేము దానిని వరుసగా చేస్తాము. + +```solidity + function cacheRead(uint _key) public view returns (uint) { + require(_key <= key2val.length, "ప్రారంభించని కాష్ ఎంట్రీని చదువుతోంది"); + return key2val[_key-1]; + } // cacheRead +``` + +కాష్ నుండి ఒక విలువను చదవండి. + +```solidity + // ఒక విలువ ఇప్పటికే కాష్‌లో లేకపోతే దాన్ని రాయండి + // పరీక్ష పని చేయడానికి మాత్రమే పబ్లిక్ + function cacheWrite(uint _value) public returns (uint) { + // విలువ ఇప్పటికే కాష్‌లో ఉంటే, ప్రస్తుత కీని తిరిగి ఇవ్వండి + if (val2key[_value] != 0) { + return val2key[_value]; + } +``` + +ఒకే విలువను కాష్‌లో ఒకటి కంటే ఎక్కువసార్లు ఉంచడంలో అర్థం లేదు. విలువ ఇప్పటికే అక్కడ ఉంటే, ఇప్పటికే ఉన్న కీని తిరిగి ఇవ్వండి. + +```solidity + // 0xFE ఒక ప్రత్యేక సందర్భం కాబట్టి, కాష్ పట్టుకోగల అతిపెద్ద కీ + // 0x0D తర్వాత 15 0xFFలు ఉంటాయి. కాష్ పొడవు ఇప్పటికే అంత + // పెద్దగా ఉంటే, విఫలమవుతుంది. + // 1 2 3 4 5 6 7 8 9 A B C D E F + require(key2val.length+1 < 0x0DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + "కాష్ ఓవర్‌ఫ్లో"); +``` + +అంత పెద్ద కాష్ మనకు ఎప్పటికీ లభిస్తుందని నేను అనుకోను (సుమారు 1.8\*1037 ఎంట్రీలు, దీనికి నిల్వ చేయడానికి సుమారు 1027 TB అవసరం). అయితే, ["640kB ఎల్లప్పుడూ సరిపోతుంది"](https://quoteinvestigator.com/2011/09/08/640k-enough/) అని గుర్తుంచుకోవడానికి నేను తగినంత పెద్దవాడిని. ఈ పరీక్ష చాలా చౌక. + +```solidity + // తదుపరి కీని ఉపయోగించి విలువను రాయండి + val2key[_value] = key2val.length+1; +``` + +రివర్స్ లుకప్‌ను జోడించండి (విలువ నుండి కీకి). + +```solidity + key2val.push(_value); +``` + +ఫార్వర్డ్ లుకప్‌ను జోడించండి (కీ నుండి విలువకి). మేము విలువలను వరుసగా కేటాయిస్తాము కాబట్టి, మేము దానిని చివరి శ్రేణి విలువ తర్వాత జోడించవచ్చు. + +```solidity + return key2val.length; + } // cacheWrite +``` + +`key2val` యొక్క కొత్త పొడవును తిరిగి ఇవ్వండి, ఇది కొత్త విలువ నిల్వ చేయబడిన సెల్. + +```solidity + function _calldataVal(uint startByte, uint length) + private pure returns (uint) +``` + +ఈ ఫంక్షన్ ఏకపక్ష పొడవు (32 బైట్ల వరకు, వర్డ్ సైజు) యొక్క కాల్‌డేటా నుండి ఒక విలువను చదువుతుంది. + +```solidity + { + uint _retVal; + + require(length < 0x21, + "_calldataVal పొడవు పరిమితి 32 బైట్లు"); + require(length + startByte <= msg.data.length, + "_calldataVal కాల్‌డేటాసైజ్ దాటి చదవడానికి ప్రయత్నిస్తోంది"); +``` + +ఈ ఫంక్షన్ అంతర్గతమైనది, కాబట్టి మిగిలిన కోడ్ సరిగ్గా వ్రాయబడితే ఈ పరీక్షలు అవసరం లేదు. అయితే, వాటికి ఎక్కువ ఖర్చు కాదు కాబట్టి మనం వాటిని కలిగి ఉండవచ్చు. + +```solidity + assembly { + _retVal := calldataload(startByte) + } +``` + +ఈ కోడ్ [Yul](https://docs.soliditylang.org/en/v0.8.16/yul.html) లో ఉంది. ఇది కాల్‌డేటా నుండి 32 బైట్ విలువను చదువుతుంది. EVMలో ప్రారంభించని ఖాళీ సున్నాగా పరిగణించబడుతుంది కాబట్టి, కాల్‌డేటా `startByte+32` కి ముందు ఆగిపోయినా ఇది పనిచేస్తుంది. + +```solidity + _retVal = _retVal >> (256-length*8); +``` + +మాకు తప్పనిసరిగా 32 బైట్ విలువ అవసరం లేదు. ఇది అదనపు బైట్లను తొలగిస్తుంది. + +```solidity + return _retVal; + } // _calldataVal + + + // _fromByte నుండి ప్రారంభించి, కాల్‌డేటా నుండి ఒకే పారామీటర్‌ను చదవండి + function _readParam(uint _fromByte) internal + returns (uint _nextByte, uint _parameterValue) + { +``` + +కాల్‌డేటా నుండి ఒకే పారామీటర్‌ను చదవండి. గమనించండి, మనం చదివిన విలువను మాత్రమే కాకుండా, తదుపరి బైట్ యొక్క స్థానాన్ని కూడా తిరిగి ఇవ్వాలి, ఎందుకంటే పారామితులు 1 బైట్ నుండి 33 బైట్ల వరకు ఉండవచ్చు. + +```solidity + // మొదటి బైట్ మిగిలిన వాటిని ఎలా అర్థం చేసుకోవాలో చెబుతుంది + uint8 _firstByte; + + _firstByte = uint8(_calldataVal(_fromByte, 1)); +``` + +Solidity సంభావ్య ప్రమాదకరమైన [అంతర్లీన రకం మార్పిడులను](https://docs.soliditylang.org/en/v0.8.16/types.html#implicit-conversions) నిషేధించడం ద్వారా బగ్‌ల సంఖ్యను తగ్గించడానికి ప్రయత్నిస్తుంది. ఉదాహరణకు 256 బిట్స్ నుండి 8 బిట్స్ కి డౌన్‌గ్రేడ్ చేయడం స్పష్టంగా ఉండాలి. + +```solidity + + // విలువను చదవండి, కానీ దాన్ని కాష్‌లో రాయవద్దు + if (_firstByte == uint8(DONT_CACHE)) + return(_fromByte+33, _calldataVal(_fromByte+1, 32)); + + // విలువను చదవండి, మరియు దాన్ని కాష్‌లో రాయండి + if (_firstByte == uint8(INTO_CACHE)) { + uint _param = _calldataVal(_fromByte+1, 32); + cacheWrite(_param); + return(_fromByte+33, _param); + } + + // మనం ఇక్కడకు వచ్చామంటే మనం కాష్ నుండి చదవాలి + + // చదవడానికి అదనపు బైట్ల సంఖ్య + uint8 _extraBytes = _firstByte / 16; +``` + +తక్కువ [నిబుల్](https://en.wikipedia.org/wiki/Nibble) తీసుకొని, కాష్ నుండి విలువను చదవడానికి ఇతర బైట్లతో కలపండి. + +```solidity + uint _key = (uint256(_firstByte & 0x0F) << (8*_extraBytes)) + + _calldataVal(_fromByte+1, _extraBytes); + + return (_fromByte+_extraBytes+1, cacheRead(_key)); + + } // _readParam + + + // n పారామీటర్లను చదవండి (ఫంక్షన్లు తమకు ఎన్ని పారామీటర్లు కావాలో తెలుసుకుంటాయి) + function _readParams(uint _paramNum) internal returns (uint[] memory) { +``` + +మేము కాల్‌డేటా నుండే మనకు ఉన్న పారామితుల సంఖ్యను పొందవచ్చు, కానీ మాకు కాల్ చేసే ఫంక్షన్లకు వారు ఎన్ని పారామితులను ఆశిస్తున్నారో తెలుసు. వారు మాకు చెప్పనివ్వడం సులభం. + +```solidity + // మనం చదివే పారామీటర్లు + uint[] memory params = new uint[](_paramNum); + + // పారామీటర్లు బైట్ 4 వద్ద ప్రారంభమవుతాయి, దానికి ముందు ఫంక్షన్ సిగ్నేచర్ ఉంటుంది + uint _atByte = 4; + + for(uint i=0; i<_paramNum; i++) { + (_atByte, params[i]) = _readParam(_atByte); + } +``` + +మీకు అవసరమైన సంఖ్య వచ్చేవరకు పారామీటర్లను చదవండి. మనం కాల్‌డేటా చివరికి వెళితే, `_readParams` కాల్‌ను రద్దు చేస్తుంది. + +```solidity + + return(params); + } // readParams + + // _readParams ను పరీక్షించడానికి, నాలుగు పారామీటర్లను చదవడం పరీక్షించండి + function fourParam() public + returns (uint256,uint256,uint256,uint256) + { + uint[] memory params; + params = _readParams(4); + return (params[0], params[1], params[2], params[3]); + } // fourParam +``` + +ఫౌండ్రీ యొక్క ఒక పెద్ద ప్రయోజనం ఏమిటంటే, ఇది సాలిడిటీలో పరీక్షలను వ్రాయడానికి అనుమతిస్తుంది ([క్రింద కాష్‌ని పరీక్షించడం చూడండి](#testing-the-cache)). ఇది యూనిట్ పరీక్షలను చాలా సులభం చేస్తుంది. ఇది నాలుగు పారామీటర్లను చదివి, వాటిని తిరిగి ఇచ్చే ఒక ఫంక్షన్, తద్వారా పరీక్ష వాటిని సరిగ్గా ఉన్నాయని ధృవీకరించగలదు. + +```solidity + // ఒక విలువను పొందండి, దానిని ఎన్కోడ్ చేసే బైట్లను తిరిగి ఇవ్వండి (సాధ్యమైతే కాష్ ఉపయోగించి) + function encodeVal(uint _val) public view returns(bytes memory) { +``` + +`encodeVal` అనేది కాష్‌ను ఉపయోగించే కాల్‌డేటాను సృష్టించడానికి సహాయపడటానికి ఆఫ్‌చెయిన్ కోడ్ కాల్ చేసే ఒక ఫంక్షన్. ఇది ఒకే విలువను స్వీకరించి, దానిని ఎన్కోడ్ చేసే బైట్లను తిరిగి ఇస్తుంది. ఈ ఫంక్షన్ ఒక `view`, కాబట్టి దీనికి లావాదేవీ అవసరం లేదు మరియు బాహ్యంగా కాల్ చేసినప్పుడు ఏ గ్యాస్ ఖర్చు కాదు. + +```solidity + uint _key = val2key[_val]; + + // విలువ ఇంకా కాష్‌లో లేదు, దాన్ని జోడించండి + if (_key == 0) + return bytes.concat(INTO_CACHE, bytes32(_val)); +``` + +[EVM](/developers/docs/evm/)లో ప్రారంభించని నిల్వ అంతా సున్నాలుగా భావించబడుతుంది. కాబట్టి, అక్కడ లేని విలువ కోసం కీని చూస్తే, మనకు సున్నా వస్తుంది. ఆ సందర్భంలో, దానిని ఎన్కోడ్ చేసే బైట్లు `INTO_CACHE` (కాబట్టి అది తదుపరిసారి కాష్ చేయబడుతుంది), ఆ తర్వాత వాస్తవ విలువ ఉంటుంది. + +```solidity + // కీ <0x10 అయితే, దానిని ఒకే బైట్‌గా తిరిగి ఇవ్వండి + if (_key < 0x10) + return bytes.concat(bytes1(uint8(_key))); +``` + +ఒకే బైట్లు చాలా సులభం. మేము [`bytes.concat`](https://docs.soliditylang.org/en/v0.8.16/types.html#the-functions-bytes-concat-and-string-concat) ను `bytes` రకాన్ని ఏ పొడవునైనా ఉండే బైట్ శ్రేణిగా మార్చడానికి ఉపయోగిస్తాము. పేరు ఉన్నప్పటికీ, కేవలం ఒక ఆర్గ్యుమెంట్‌తో అందించినప్పుడు ఇది బాగా పనిచేస్తుంది. + +```solidity + // రెండు బైట్ల విలువ, 0x1vvv గా ఎన్కోడ్ చేయబడింది + if (_key < 0x1000) + return bytes.concat(bytes2(uint16(_key) | 0x1000)); +``` + +మనకు 163 కన్నా తక్కువ ఉన్న కీ ఉన్నప్పుడు, దానిని రెండు బైట్లలో వ్యక్తీకరించవచ్చు. మేము మొదట 256 బిట్ విలువ అయిన `_key` ను 16 బిట్ విలువకు మార్చి, మొదటి బైట్‌కు అదనపు బైట్ల సంఖ్యను జోడించడానికి లాజికల్ ఆర్ ని ఉపయోగిస్తాము. అప్పుడు మనం దానిని `bytes2` విలువలోకి మారుస్తాము, దానిని `bytes` గా మార్చవచ్చు. + +```solidity + // కింది లైన్లను లూప్‌గా చేయడానికి బహుశా ఒక తెలివైన మార్గం ఉంది, + // కానీ ఇది ఒక వీక్షణ ఫంక్షన్ కాబట్టి నేను ప్రోగ్రామర్ సమయం మరియు + // సరళత కోసం ఆప్టిమైజ్ చేస్తున్నాను. + + if (_key < 16*256**2) + return bytes.concat(bytes3(uint24(_key) | (0x2 * 16 * 256**2))); + if (_key < 16*256**3) + return bytes.concat(bytes4(uint32(_key) | (0x3 * 16 * 256**3))); + . + . + . + if (_key < 16*256**14) + return bytes.concat(bytes15(uint120(_key) | (0xE * 16 * 256**14))); + if (_key < 16*256**15) + return bytes.concat(bytes16(uint128(_key) | (0xF * 16 * 256**15))); +``` + +ఇతర విలువలు (3 బైట్లు, 4 బైట్లు, మొదలైనవి) వివిధ ఫీల్డ్ పరిమాణాలతో ఒకే విధంగా నిర్వహించబడతాయి. + +```solidity + // మనం ఇక్కడకు వస్తే, ఏదో తప్పు జరిగింది. + revert("encodeValలో లోపం, జరగకూడదు"); +``` + +మనం ఇక్కడకు వస్తే, మనకు 16\*25615 కన్నా తక్కువ కాని కీ వచ్చింది అని అర్థం. కానీ `cacheWrite` కీలను పరిమితం చేస్తుంది కాబట్టి మనం 14\*25616 వరకు కూడా పొందలేము (దీనికి మొదటి బైట్ 0xFE ఉంటుంది, కాబట్టి ఇది `DONT_CACHE` లాగా కనిపిస్తుంది). కానీ భవిష్యత్ ప్రోగ్రామర్ ఒక బగ్‌ను ప్రవేశపెట్టిన సందర్భంలో ఒక పరీక్షను జోడించడానికి మాకు ఎక్కువ ఖర్చు కాదు. + +```solidity + } // encodeVal + +} // Cache +``` + +### కాష్‌ని పరీక్షించడం {#testing-the-cache} + +ఫౌండ్రీ యొక్క ప్రయోజనాలలో ఒకటి ఏమిటంటే, [ఇది సాలిడిటీలో పరీక్షలను వ్రాయడానికి మిమ్మల్ని అనుమతిస్తుంది](https://getfoundry.sh/forge/tests/overview/), ఇది యూనిట్ పరీక్షలను వ్రాయడాన్ని సులభం చేస్తుంది. `Cache` తరగతికి సంబంధించిన పరీక్షలు [ఇక్కడ](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/test/Cache.t.sol) ఉన్నాయి. పరీక్షా కోడ్ పునరావృతమవుతుంది కాబట్టి, ఈ వ్యాసం కేవలం ఆసక్తికరమైన భాగాలను మాత్రమే వివరిస్తుంది. + +```solidity +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import "forge-std/Test.sol"; + + +// కన్సోల్ కోసం `forge test -vv` ను అమలు చేయాలి. +import "forge-std/console.sol"; +``` + +ఇది కేవలం పరీక్షా ప్యాకేజీని మరియు `console.log` ను ఉపయోగించడానికి అవసరమైన బాయిలర్‌ప్లేట్. + +```solidity +import "src/Cache.sol"; +``` + +మేము పరీక్షిస్తున్న కాంట్రాక్టు గురించి తెలుసుకోవాలి. + +```solidity +contract CacheTest is Test { + Cache cache; + + function setUp() public { + cache = new Cache(); + } +``` + +`setUp` ఫంక్షన్ ప్రతి పరీక్షకు ముందు కాల్ చేయబడుతుంది. ఈ సందర్భంలో మేము కేవలం ఒక కొత్త కాష్‌ను సృష్టిస్తాము, తద్వారా మా పరీక్షలు ఒకదానిపై ఒకటి ప్రభావం చూపవు. + +```solidity + function testCaching() public { +``` + +పరీక్షలు అనేవి `test` తో మొదలయ్యే ఫంక్షన్లు. ఈ ఫంక్షన్ ప్రాథమిక కాష్ కార్యాచరణను, విలువలను వ్రాసి వాటిని మళ్ళీ చదవడాన్ని తనిఖీ చేస్తుంది. + +```solidity + for(uint i=1; i<5000; i++) { + cache.cacheWrite(i*i); + } + + for(uint i=1; i<5000; i++) { + assertEq(cache.cacheRead(i), i*i); +``` + +[`assert...` ఫంక్షన్లను](https://getfoundry.sh/reference/forge-std/std-assertions/) ఉపయోగించి మీరు అసలు పరీక్షను ఎలా చేస్తారో ఇది చూపిస్తుంది. ఈ సందర్భంలో, మేము వ్రాసిన విలువ చదివిన విలువతో సమానంగా ఉందని తనిఖీ చేస్తాము. కాష్ కీలు సరళంగా కేటాయించబడతాయని మాకు తెలుసు కాబట్టి `cache.cacheWrite` ఫలితాన్ని మనం విస్మరించవచ్చు. + +```solidity + } + } // testCaching + + + // ఒకే విలువను చాలాసార్లు కాష్ చేయండి, కీ అలాగే ఉండేలా చూసుకోండి + // + function testRepeatCaching() public { + for(uint i=1; i<100; i++) { + uint _key1 = cache.cacheWrite(i); + uint _key2 = cache.cacheWrite(i); + assertEq(_key1, _key2); + } +``` + +మొదట మనం ప్రతి విలువను కాష్‌లోకి రెండుసార్లు రాసి, కీలు ఒకేలా ఉన్నాయని నిర్ధారించుకుంటాము (అంటే రెండవ రైట్ నిజంగా జరగలేదు). + +```solidity + for(uint i=1; i<100; i+=3) { + uint _key = cache.cacheWrite(i); + assertEq(_key, i); + } + } // testRepeatCaching +``` + +సిద్ధాంతపరంగా, వరుసగా కాష్ రైట్‌లను ప్రభావితం చేయని బగ్ ఉండవచ్చు. కాబట్టి ఇక్కడ మనం వరుసగా లేని కొన్ని రైట్‌లను చేస్తాము మరియు విలువలు ఇప్పటికీ తిరిగి వ్రాయబడలేదని చూస్తాము. + +```solidity + // మెమరీ బఫర్ నుండి ఒక uint ను చదవండి (మనం పంపిన పారామీటర్లను తిరిగి పొందుతున్నామని నిర్ధారించుకోవడానికి + //) + function toUint256(bytes memory _bytes, uint256 _start) internal pure + returns (uint256) +``` + +ఒక `bytes memory` బఫర్ నుండి 256 బిట్ వర్డ్‌ను చదవండి. ఈ యుటిలిటీ ఫంక్షన్ కాష్‌ను ఉపయోగించే ఫంక్షన్ కాల్‌ను రన్ చేసినప్పుడు సరైన ఫలితాలను స్వీకరిస్తున్నామని ధృవీకరించడానికి మాకు సహాయపడుతుంది. + +```solidity + { + require(_bytes.length >= _start + 32, "toUint256_outOfBounds"); + uint256 tempUint; + + assembly { + tempUint := mload(add(add(_bytes, 0x20), _start)) + } +``` + +Yul `uint256` కు మించిన డేటా స్ట్రక్చర్లకు మద్దతు ఇవ్వదు, కాబట్టి మీరు మెమరీ బఫర్ `_bytes` వంటి మరింత అధునాతన డేటా స్ట్రక్చర్‌ను సూచించినప్పుడు, మీరు ఆ స్ట్రక్చర్ యొక్క చిరునామాను పొందుతారు. Solidity పొడవును కలిగి ఉన్న 32 బైట్ల పదం తర్వాత అసలు బైట్లుగా `bytes memory` విలువలను నిల్వ చేస్తుంది, కాబట్టి `_start` బైట్ నంబర్ పొందడానికి మనం `_bytes+32+_start` ను లెక్కించాలి. + +```solidity + + return tempUint; + } // toUint256 + + // fourParams() కోసం ఫంక్షన్ సిగ్నేచర్, సౌజన్యంతో + // https://www.4byte.directory/signatures/?bytes4_signature=0x3edc1e6d + bytes4 constant FOUR_PARAMS = 0x3edc1e6d; + + // మనం సరైన విలువలను తిరిగి పొందుతున్నామని చూడటానికి కేవలం కొన్ని స్థిరమైన విలువలు + uint256 constant VAL_A = 0xDEAD60A7; + uint256 constant VAL_B = 0xBEEF; + uint256 constant VAL_C = 0x600D; + uint256 constant VAL_D = 0x600D60A7; +``` + +పరీక్ష కోసం మాకు కొన్ని స్థిరాంకాలు అవసరం. + +```solidity + function testReadParam() public { +``` + +పారామీటర్లను సరిగ్గా చదవగలమని పరీక్షించడానికి `readParams` ని ఉపయోగించే `fourParams()` ఫంక్షన్‌ను కాల్ చేయండి. + +```solidity + address _cacheAddr = address(cache); + bool _success; + bytes memory _callInput; + bytes memory _callOutput; +``` + +కాష్ ఉపయోగించి ఫంక్షన్‌ను కాల్ చేయడానికి మనం సాధారణ ABI మెకానిజంను ఉపయోగించలేము, కాబట్టి మనం తక్కువ స్థాయి [`
.call()`](https://docs.soliditylang.org/en/v0.8.16/types.html#members-of-addresses) మెకానిజంను ఉపయోగించాలి. ఆ మెకానిజం ఇన్‌పుట్‌గా `bytes memory` తీసుకుంటుంది, మరియు దానిని (అలాగే ఒక బూలియన్ విలువను) అవుట్‌పుట్‌గా తిరిగి ఇస్తుంది. + +```solidity + // మొదటి కాల్, కాష్ ఖాళీగా ఉంది + _callInput = bytes.concat( + FOUR_PARAMS, +``` + +ఒకే కాంట్రాక్ట్ కాష్ చేసిన ఫంక్షన్‌లకు (లావాదేవీల నుండి నేరుగా కాల్‌ల కోసం) మరియు నాన్-కాష్ చేసిన ఫంక్షన్‌లకు (ఇతర స్మార్ట్ కాంట్రాక్ట్‌ల నుండి కాల్‌ల కోసం) మద్దతు ఇవ్వడం ఉపయోగకరం. అది చేయడానికి మనం ప్రతిదీ [ఒక `fallback` ఫంక్షన్‌లో](https://docs.soliditylang.org/en/v0.8.16/contracts.html#fallback-function) ఉంచడానికి బదులుగా, సరైన ఫంక్షన్‌ను కాల్ చేయడానికి సాలిడిటీ మెకానిజంపై ఆధారపడాలి. దీన్ని చేయడం వల్ల కంపోజబిలిటీ చాలా సులభం అవుతుంది. చాలా సందర్భాలలో ఫంక్షన్‌ను గుర్తించడానికి ఒకే బైట్ సరిపోతుంది, కాబట్టి మనం మూడు బైట్లను వృధా చేస్తున్నాము (16\*3=48 గ్యాస్). అయితే, నేను ఇది రాస్తున్నప్పుడు ఆ 48 గ్యాస్ 0.07 సెంట్లు ఖర్చవుతుంది, ఇది సరళమైన, తక్కువ బగ్ ప్రూన్ కోడ్ యొక్క సరైన ఖర్చు. + +```solidity + // మొదటి విలువ, దాన్ని కాష్‌లోకి జోడించండి + cache.INTO_CACHE(), + bytes32(VAL_A), +``` + +మొదటి విలువ: ఇది కాష్‌లోకి వ్రాయవలసిన పూర్తి విలువ అని చెప్పే ఒక ఫ్లాగ్, ఆ తర్వాత విలువ యొక్క 32 బైట్లు. ఇతర మూడు విలువలు కూడా ఇలాంటివే, అయితే `VAL_B` కాష్‌లోకి వ్రాయబడదు మరియు `VAL_C` మూడవ మరియు నాల్గవ పారామీటర్ రెండూ. + +```solidity + . + . + . + ); + (_success, _callOutput) = _cacheAddr.call(_callInput); +``` + +ఇక్కడే మనం అసలు `Cache` కాంట్రాక్ట్‌ను కాల్ చేస్తాము. + +```solidity + assertEq(_success, true); +``` + +కాల్ విజయవంతం అవుతుందని మేము ఆశిస్తున్నాము. + +```solidity + assertEq(cache.cacheRead(1), VAL_A); + assertEq(cache.cacheRead(2), VAL_C); +``` + +మనం ఖాళీ కాష్‌తో ప్రారంభించి, ఆ తర్వాత `VAL_A` తర్వాత `VAL_C` ని జోడిస్తాము. మొదటిదానికి కీ 1, మరియు రెండవదానికి 2 ఉంటుందని మేము ఆశిస్తాము. + +``` + assertEq(toUint256(_callOutput,0), VAL_A); + assertEq(toUint256(_callOutput,32), VAL_B); + assertEq(toUint256(_callOutput,64), VAL_C); + assertEq(toUint256(_callOutput,96), VAL_C); +``` + +అవుట్‌పుట్ నాలుగు పారామీటర్లు. ఇక్కడ అది సరైనదని మేము ధృవీకరిస్తాము. + +```solidity + // రెండవ కాల్, మనం కాష్‌ను ఉపయోగించవచ్చు + _callInput = bytes.concat( + FOUR_PARAMS, + + // కాష్‌లో మొదటి విలువ + bytes1(0x01), +``` + +16 కంటే తక్కువ ఉన్న కాష్ కీలు కేవలం ఒక బైట్. + +```solidity + // రెండవ విలువ, దాన్ని కాష్‌లోకి జోడించవద్దు + cache.DONT_CACHE(), + bytes32(VAL_B), + + // మూడవ మరియు నాల్గవ విలువలు, ఒకే విలువ + bytes1(0x02), + bytes1(0x02) + ); + . + . + . + } // testReadParam +``` + +కాల్ తర్వాత పరీక్షలు మొదటి కాల్ తర్వాత పరీక్షలతో సమానంగా ఉంటాయి. + +```solidity + function testEncodeVal() public { +``` + +ఈ ఫంక్షన్ `testReadParam` కు సమానమైనది, అయితే పారామీటర్లను స్పష్టంగా వ్రాయడానికి బదులుగా మనం `encodeVal()` ని ఉపయోగిస్తాము. + +```solidity + . + . + . + _callInput = bytes.concat( + FOUR_PARAMS, + cache.encodeVal(VAL_A), + cache.encodeVal(VAL_B), + cache.encodeVal(VAL_C), + cache.encodeVal(VAL_D) + ); + . + . + . + assertEq(_callInput.length, 4+1*4); + } // testEncodeVal +``` + +`testEncodeVal()` లో ఏకైక అదనపు పరీక్ష `_callInput` పొడవు సరైనదని ధృవీకరించడం. మొదటి కాల్ కోసం ఇది 4+33_4. రెండవది, ప్రతి విలువ ఇప్పటికే కాష్‌లో ఉంది, ఇది 4+1_4. + +```solidity + // కీ ఒకటి కంటే ఎక్కువ బైట్లు ఉన్నప్పుడు encodeVal ను పరీక్షించండి + // గరిష్టంగా మూడు బైట్లు ఎందుకంటే కాష్‌ను నాలుగు బైట్లకు నింపడానికి + // చాలా సమయం పడుతుంది. + function testEncodeValBig() public { + // కాష్‌లో కొన్ని విలువలను ఉంచండి. + // విషయాలను సరళంగా ఉంచడానికి, n విలువ కోసం కీ n ను ఉపయోగించండి. + for(uint i=1; i<0x1FFF; i++) { + cache.cacheWrite(i); + } +``` + +పై `testEncodeVal` ఫంక్షన్ కాష్‌లోకి నాలుగు విలువలను మాత్రమే రాస్తుంది, కాబట్టి [మల్టీ-బైట్ విలువలతో వ్యవహరించే ఫంక్షన్ భాగం](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/Cache.sol#L144-L171) తనిఖీ చేయబడదు. కానీ ఆ కోడ్ సంక్లిష్టంగా మరియు లోపాలతో కూడుకున్నది. + +ఈ ఫంక్షన్ యొక్క మొదటి భాగం 1 నుండి 0x1FFF వరకు ఉన్న అన్ని విలువలను వరుసగా కాష్‌లోకి రాసే లూప్, కాబట్టి మనం ఆ విలువలను ఎన్కోడ్ చేయగలము మరియు అవి ఎక్కడికి వెళ్తున్నాయో తెలుసుకోగలము. + +```solidity + . + . + . + + _callInput = bytes.concat( + FOUR_PARAMS, + cache.encodeVal(0x000F), // ఒక బైట్ 0x0F + cache.encodeVal(0x0010), // రెండు బైట్లు 0x1010 + cache.encodeVal(0x0100), // రెండు బైట్లు 0x1100 + cache.encodeVal(0x1000) // మూడు బైట్లు 0x201000 + ); +``` + +ఒక బైట్, రెండు బైట్, మరియు మూడు బైట్ విలువలను పరీక్షించండి. దానికంటే మించి మనం పరీక్షించము ఎందుకంటే తగినంత స్టాక్ ఎంట్రీలు (కనీసం 0x10000000, సుమారు పావు బిలియన్) రాయడానికి చాలా సమయం పడుతుంది. + +```solidity + . + . + . + . + } // testEncodeValBig + + + // చాలా చిన్న బఫర్‌తో మనం ఒక తిరస్కరణ పొందుతామని పరీక్షించండి + function testShortCalldata() public { +``` + +తగినన్ని పారామీటర్లు లేని అసాధారణ సందర్భంలో ఏమి జరుగుతుందో పరీక్షించండి. + +```solidity + . + . + . + (_success, _callOutput) = _cacheAddr.call(_callInput); + assertEq(_success, false); + } // testShortCalldata +``` + +ఇది తిరస్కరిస్తుంది కాబట్టి, మనం పొందవలసిన ఫలితం `false`. + +``` + // అక్కడ లేని కాష్ కీలతో కాల్ చేయండి + function testNoCacheKey() public { + . + . + . + _callInput = bytes.concat( + FOUR_PARAMS, + + // మొదటి విలువ, దాన్ని కాష్‌లోకి జోడించండి + cache.INTO_CACHE(), + bytes32(VAL_A), + + // రెండవ విలువ + bytes1(0x0F), + bytes2(0x1234), + bytes11(0xA10102030405060708090A) + ); +``` + +ఈ ఫంక్షన్ నాలుగు పూర్తిగా సరైన పారామీటర్లను పొందుతుంది, అయితే కాష్ ఖాళీగా ఉంది కాబట్టి అక్కడ చదవడానికి విలువలు లేవు. + +```solidity + . + . + . + // చాలా పొడవైన బఫర్‌తో ప్రతిదీ ఫైల్ పనిచేస్తుందని పరీక్షించండి + function testLongCalldata() public { + address _cacheAddr = address(cache); + bool _success; + bytes memory _callInput; + bytes memory _callOutput; + + // మొదటి కాల్, కాష్ ఖాళీగా ఉంది + _callInput = bytes.concat( + FOUR_PARAMS, + + // మొదటి విలువ, దాన్ని కాష్‌లోకి జోడించండి + cache.INTO_CACHE(), bytes32(VAL_A), + + // రెండవ విలువ, దాన్ని కాష్‌లోకి జోడించండి + cache.INTO_CACHE(), bytes32(VAL_B), + + // మూడవ విలువ, దాన్ని కాష్‌లోకి జోడించండి + cache.INTO_CACHE(), bytes32(VAL_C), + + // నాల్గవ విలువ, దాన్ని కాష్‌లోకి జోడించండి + cache.INTO_CACHE(), bytes32(VAL_D), + + // మరియు "మంచి అదృష్టం" కోసం మరొక విలువ + bytes4(0x31112233) + ); +``` + +ఈ ఫంక్షన్ ఐదు విలువలను పంపుతుంది. ఐదవ విలువ విస్మరించబడుతుందని మాకు తెలుసు ఎందుకంటే ఇది చెల్లుబాటు అయ్యే కాష్ ఎంట్రీ కాదు, ఇది చేర్చబడకపోతే ఒక తిరస్కరణకు కారణమయ్యేది. + +```solidity + (_success, _callOutput) = _cacheAddr.call(_callInput); + assertEq(_success, true); + . + . + . + } // testLongCalldata + +} // CacheTest + +``` + +## ఒక నమూనా యాప్ {#a-sample-app} + +సాలిడిటీలో పరీక్షలు రాయడం చాలా మంచిది, కానీ చివరికి ఒక డాప్ ఉపయోగకరంగా ఉండటానికి చైన్ వెలుపల నుండి అభ్యర్థనలను ప్రాసెస్ చేయగలగాలి. ఈ వ్యాసం `WORM` తో ఒక డాప్‌లో కాషింగ్ ఎలా ఉపయోగించాలో ప్రదర్శిస్తుంది, ఇది "ఒకసారి రాయండి, చాలాసార్లు చదవండి" అని సూచిస్తుంది. ఒక కీ ఇంకా వ్రాయబడకపోతే, మీరు దానికి ఒక విలువను వ్రాయవచ్చు. కీ ఇప్పటికే వ్రాయబడితే, మీకు ఒక తిరస్కరణ లభిస్తుంది. + +### ఒప్పందం {#the-contract} + +[ఇది కాంట్రాక్ట్](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/WORM.sol). ఇది ఎక్కువగా `Cache` మరియు `CacheTest` తో మనం ఇప్పటికే చేసిన దానిని పునరావృతం చేస్తుంది, కాబట్టి మేము ఆసక్తికరమైన భాగాలను మాత్రమే కవర్ చేస్తాము. + +```solidity +import "./Cache.sol"; + +contract WORM is Cache { +``` + +`Cache` ను ఉపయోగించడానికి సులభమైన మార్గం దానిని మన స్వంత కాంట్రాక్ట్‌లో వారసత్వంగా పొందడం. + +```solidity + function writeEntryCached() external { + uint[] memory params = _readParams(2); + writeEntry(params[0], params[1]); + } // writeEntryCached +``` + +ఈ ఫంక్షన్ పై `CacheTest` లోని `fourParam` కు సమానమైనది. మేము ABI స్పెసిఫికేషన్లను అనుసరించడం లేదు కాబట్టి, ఫంక్షన్‌లో ఏ పారామీటర్లను ప్రకటించకపోవడం ఉత్తమం. + +```solidity + // మమ్మల్ని కాల్ చేయడం సులభం చేయండి + // writeEntryCached() కోసం ఫంక్షన్ సిగ్నేచర్, సౌజన్యంతో + // https://www.4byte.directory/signatures/?bytes4_signature=0xe4e4f2d3 + bytes4 constant public WRITE_ENTRY_CACHED = 0xe4e4f2d3; +``` + +`writeEntryCached` ని కాల్ చేసే బాహ్య కోడ్ మాన్యువల్‌గా కాల్‌డేటాను నిర్మించవలసి ఉంటుంది, `worm.writeEntryCached` ని ఉపయోగించడానికి బదులుగా, ఎందుకంటే మేము ABI స్పెసిఫికేషన్లను అనుసరించడం లేదు. ఈ స్థిరమైన విలువను కలిగి ఉండటం దానిని వ్రాయడాన్ని సులభం చేస్తుంది. + +మనం `WRITE_ENTRY_CACHED` ను స్టేట్ వేరియబుల్‌గా నిర్వచించినప్పటికీ, దానిని బాహ్యంగా చదవడానికి దాని గెట్టర్ ఫంక్షన్, `worm.WRITE_ENTRY_CACHED()` ను ఉపయోగించడం అవసరం. + +```solidity + function readEntry(uint key) public view + returns (uint _value, address _writtenBy, uint _writtenAtBlock) +``` + +రీడ్ ఫంక్షన్ ఒక `view`, కాబట్టి దీనికి లావాదేవీ అవసరం లేదు మరియు గ్యాస్ ఖర్చు కాదు. ఫలితంగా, పారామీటర్ కోసం కాష్‌ను ఉపయోగించడం వల్ల ఎటువంటి ప్రయోజనం లేదు. వీక్షణ ఫంక్షన్లతో సరళమైన ప్రామాణిక మెకానిజంను ఉపయోగించడం ఉత్తమం. + +### పరీక్షా కోడ్ {#the-testing-code} + +[ఇది కాంట్రాక్ట్ కోసం పరీక్షా కోడ్](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/test/WORM.t.sol). మళ్ళీ, ఆసక్తికరంగా ఉన్నదాన్ని మాత్రమే చూద్దాం. + +```solidity + function testWReadWrite() public { + worm.writeEntry(0xDEAD, 0x60A7); + + vm.expectRevert(bytes("entry already written")); + worm.writeEntry(0xDEAD, 0xBEEF); +``` + +[ఇది (`vm.expectRevert`)](https://book.getfoundry.sh/cheatcodes/expect-revert#expectrevert) మనం ఒక ఫౌండ్రీ పరీక్షలో తదుపరి కాల్ విఫలం కావాలని, మరియు విఫలం కావడానికి నివేదించబడిన కారణాన్ని ఎలా పేర్కొంటామో చూపిస్తుంది. ఇది మనం సింటాక్స్ `.` ను ఉపయోగించినప్పుడు వర్తిస్తుంది.()` కాల్‌డేటాను నిర్మించి, తక్కువ స్థాయి ఇంటర్‌ఫేస్ (`.call()`, మొదలైనవి) ఉపయోగించి కాంట్రాక్ట్‌ను కాల్ చేయడానికి బదులుగా. + +```solidity + function testReadWriteCached() public { + uint cacheGoat = worm.cacheWrite(0x60A7); +``` + +ఇక్కడ మనం `cacheWrite` కాష్ కీని తిరిగి ఇస్తుందనే వాస్తవాన్ని ఉపయోగిస్తాము. ఇది మనం ఉత్పత్తిలో ఉపయోగించాలని ఆశించే విషయం కాదు, ఎందుకంటే `cacheWrite` స్థితిని మారుస్తుంది, మరియు అందువల్ల కేవలం ఒక లావాదేవీ సమయంలో మాత్రమే కాల్ చేయబడుతుంది. లావాదేవీలకు రిటర్న్ విలువలు ఉండవు, వాటికి ఫలితాలు ఉంటే ఆ ఫలితాలు ఈవెంట్‌లుగా విడుదల చేయబడతాయి. కాబట్టి `cacheWrite` రిటర్న్ విలువ కేవలం ఆన్‌చెయిన్ కోడ్ నుండి మాత్రమే అందుబాటులో ఉంటుంది, మరియు ఆన్‌చెయిన్ కోడ్‌కు పారామీటర్ కాషింగ్ అవసరం లేదు. + +```solidity + (_success,) = address(worm).call(_callInput); +``` + +ఇది `.call()` కు రెండు రిటర్న్ విలువలు ఉన్నప్పటికీ, మనం కేవలం మొదటిదానిపై మాత్రమే శ్రద్ధ వహిస్తున్నామని Solidity కి ఎలా చెబుతామో చూపిస్తుంది. + +```solidity + (_success,) = address(worm).call(_callInput); + assertEq(_success, false); +``` + +మనం తక్కువ స్థాయి `
.call()` ఫంక్షన్‌ను ఉపయోగిస్తున్నాము కాబట్టి, మనం `vm.expectRevert()` ను ఉపయోగించలేము మరియు కాల్ నుండి మనం పొందే బూలియన్ సక్సెస్ విలువను చూడాలి. + +```solidity + event EntryWritten(uint indexed key, uint indexed value); + + . + . + . + + _callInput = bytes.concat( + worm.WRITE_ENTRY_CACHED(), worm.encodeVal(a), worm.encodeVal(b)); + vm.expectEmit(true, true, false, false); + emit EntryWritten(a, b); + (_success,) = address(worm).call(_callInput); +``` + +ఫౌండ్రీలో కోడ్ [ఒక ఈవెంట్‌ను సరిగ్గా విడుదల చేస్తుందని](https://getfoundry.sh/reference/cheatcodes/expect-emit/) మనం ధృవీకరించే మార్గం ఇది. + +### క్లయింట్ {#the-client} + +Solidity పరీక్షలతో మీరు పొందలేని ఒక విషయం ఏమిటంటే, మీరు మీ స్వంత అప్లికేషన్‌లో కట్ చేసి పేస్ట్ చేయగల జావాస్క్రిప్ట్ కోడ్. ఆ కోడ్ వ్రాయడానికి నేను WORM ను [Optimism Goerli](https://community.optimism.io/docs/useful-tools/networks/#optimism-goerli), [Optimism's](https://www.optimism.io/) కొత్త టెస్టునెట్‌కు triển khai చేసాను. ఇది చిరునామా [`0xd34335b1d818cee54e3323d3246bd31d94e6a78a`](https://goerli-optimism.etherscan.io/address/0xd34335b1d818cee54e3323d3246bd31d94e6a78a) వద్ద ఉంది. + +[మీరు ఇక్కడ ఖాతాదారుల కోసం జావాస్క్రిప్ట్ కోడ్ చూడవచ్చు](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/javascript/index.js). దీన్ని ఉపయోగించడానికి: + +1. git రిపోజిటరీని క్లోన్ చేయండి: + + ```sh + git clone https://github.com/qbzzt/20220915-all-you-can-cache.git + ``` + +2. అవసరమైన ప్యాకేజీలను ఇన్‌స్టాల్ చేయండి: + + ```sh + cd javascript + yarn + ``` + +3. కాన్ఫిగరేషన్ ఫైల్‌ను కాపీ చేయండి: + + ```sh + cp .env.example .env + ``` + +4. మీ కాన్ఫిగరేషన్ కోసం `.env` ని సవరించండి: + + | పరామితి | విలువ | + | ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | MNEMONIC | లావాదేవీ కోసం చెల్లించడానికి తగినంత ETH ఉన్న ఖాతా కోసం మ్నెమోనిక్. [మీరు Optimism Goerli నెట్‌వర్క్ కోసం ఉచిత ETH ను ఇక్కడ పొందవచ్చు](https://optimismfaucet.xyz/). | + | OPTIMISM_GOERLI_URL | Optimism Goerli కు URL. పబ్లిక్ ఎండ్‌పాయింట్, `https://goerli.optimism.io`, రేట్ లిమిటెడ్ కానీ ఇక్కడ మనకు అవసరమైన దానికి సరిపోతుంది | + +5. `index.js` ను అమలు చేయండి. + + ```sh + node index.js + ``` + + ఈ నమూనా అప్లికేషన్ మొదట WORM కి ఒక ఎంట్రీని వ్రాస్తుంది, కాల్‌డేటా మరియు Etherscan పై లావాదేవీకి ఒక లింక్‌ను ప్రదర్శిస్తుంది. అప్పుడు అది ఆ ఎంట్రీని తిరిగి చదువుతుంది, మరియు అది ఉపయోగించే కీ మరియు ఎంట్రీలోని విలువలను (విలువ, బ్లాక్ నంబర్, మరియు రచయిత) ప్రదర్శిస్తుంది. + +ఖాతాదారుల చాలా వరకు సాధారణ డాప్ జావాస్క్రిప్ట్. కాబట్టి మళ్ళీ మనం కేవలం ఆసక్తికరమైన భాగాలను మాత్రమే చూస్తాము. + +```javascript +. +. +. +const main = async () => { + const func = await worm.WRITE_ENTRY_CACHED() + + // ప్రతిసారీ కొత్త కీ అవసరం + const key = await worm.encodeVal(Number(new Date())) +``` + +ఒక ఇచ్చిన స్లాట్‌లో ఒకసారి మాత్రమే వ్రాయవచ్చు, కాబట్టి మనం స్లాట్‌లను పునఃఉపయోగించకుండా చూసుకోవడానికి టైమ్‌స్టాంప్‌ను ఉపయోగిస్తాము. + +```javascript +const val = await worm.encodeVal("0x600D") + +// ఒక ఎంట్రీని వ్రాయండి +const calldata = func + key.slice(2) + val.slice(2) +``` + +Ethers కాల్ డేటా ఒక హెక్స్ స్ట్రింగ్, `0x` తర్వాత ఒక సరి సంఖ్యలో హెక్సాడెసిమల్ అంకెలు ఉండాలని ఆశిస్తుంది. `key` మరియు `val` రెండూ `0x` తో మొదలవుతాయి కాబట్టి, మనం ఆ హెడర్‌లను తొలగించాలి. + +```javascript +const tx = await worm.populateTransaction.writeEntryCached() +tx.data = calldata + +sentTx = await wallet.sendTransaction(tx) +``` + +Solidity పరీక్షా కోడ్‌తో లాగే, మనం ఒక కాష్ చేసిన ఫంక్షన్‌ను సాధారణంగా కాల్ చేయలేము. బదులుగా, మనం తక్కువ స్థాయి మెకానిజంను ఉపయోగించాలి. + +```javascript + . + . + . + // ఇప్పుడే వ్రాసిన ఎంట్రీని చదవండి + const realKey = '0x' + key.slice(4) // FF ఫ్లాగ్‌ను తొలగించండి + const entryRead = await worm.readEntry(realKey) + . + . + . +``` + +ఎంట్రీలను చదవడానికి మనం సాధారణ మెకానిజంను ఉపయోగించవచ్చు. `view` ఫంక్షన్లతో పారామీటర్ కాషింగ్ ఉపయోగించాల్సిన అవసరం లేదు. + +## ముగింపు {#conclusion} + +ఈ వ్యాసంలోని కోడ్ ఒక భావన యొక్క రుజువు, ఉద్దేశ్యం ఆలోచనను సులభంగా అర్థం చేసుకోవడం. ఉత్పత్తికి సిద్ధంగా ఉన్న సిస్టమ్ కోసం మీరు కొన్ని అదనపు కార్యాచరణలను అమలు చేయాలనుకోవచ్చు: + +- `uint256` కాని విలువలను నిర్వహించండి. ఉదాహరణకు, స్ట్రింగ్‌లు. +- గ్లోబల్ కాష్‌కు బదులుగా, బహుశా వినియోగదారులు మరియు కాష్‌ల మధ్య ఒక మ్యాపింగ్ ఉండవచ్చు. వివిధ వినియోగదారులు వివిధ విలువలను ఉపయోగిస్తారు. +- చిరునామాల కోసం ఉపయోగించే విలువలు ఇతర ప్రయోజనాల కోసం ఉపయోగించే వాటి నుండి విభిన్నంగా ఉంటాయి. కేవలం చిరునామాల కోసం ప్రత్యేక కాష్ కలిగి ఉండటం అర్ధవంతంగా ఉండవచ్చు. +- ప్రస్తుతం, కాష్ కీలు "మొదట వచ్చిన వారికి, చిన్న కీ" అల్గారిథమ్‌పై ఉన్నాయి. మొదటి పదహారు విలువలను ఒకే బైట్‌గా పంపవచ్చు. తదుపరి 4080 విలువలను రెండు బైట్లుగా పంపవచ్చు. తదుపరి సుమారు మిలియన్ విలువలు మూడు బైట్లు, మొదలైనవి. ఒక ప్రొడక్షన్ సిస్టమ్ కాష్ ఎంట్రీలపై వినియోగ కౌంటర్లను ఉంచుకోవాలి మరియు వాటిని పునర్వ్యవస్థీకరించాలి, తద్వారా పదహారు అత్యంత సాధారణ విలువలు ఒక బైట్, తదుపరి 4080 అత్యంత సాధారణ విలువలు రెండు బైట్లు, మొదలైనవి ఉంటాయి. + + అయితే, అది సంభావ్యంగా ప్రమాదకరమైన ఆపరేషన్. కింది సంఘటనల క్రమాన్ని ఊహించండి: + + 1. నోమ్ అమాయకుడు తన టోకెన్లను పంపాలనుకుంటున్న చిరునామాను ఎన్కోడ్ చేయడానికి `encodeVal` ను కాల్ చేస్తాడు. ఆ చిరునామా అప్లికేషన్‌లో మొదట ఉపయోగించిన వాటిలో ఒకటి, కాబట్టి ఎన్కోడ్ చేయబడిన విలువ 0x06. ఇది ఒక లావాదేవీ కాదు, ఒక `view` ఫంక్షన్, కాబట్టి ఇది నోమ్ మరియు అతను ఉపయోగించే నోడ్ మధ్య ఉంటుంది, మరియు దాని గురించి ఎవరికీ తెలియదు + + 2. ఓవెన్ ఓనర్ కాష్ రీఆర్డరింగ్ ఆపరేషన్‌ను రన్ చేస్తాడు. చాలా తక్కువ మంది ప్రజలు ఆ చిరునామాను ఉపయోగిస్తారు, కాబట్టి ఇది ఇప్పుడు 0x201122 గా ఎన్కోడ్ చేయబడింది. ఒక విభిన్న విలువ, 1018, కు 0x06 కేటాయించబడింది. + + 3. నోమ్ అమాయకుడు తన టోకెన్లను 0x06 కు పంపుతాడు. అవి చిరునామా `0x0000000000000000000000000de0b6b3a7640000` కు వెళ్తాయి, మరియు ఆ చిరునామా కోసం ప్రైవేట్ కీ ఎవరికీ తెలియదు కాబట్టి, అవి అక్కడే చిక్కుకుపోతాయి. నోమ్ సంతోషంగా లేడు. + + ఈ సమస్యను పరిష్కరించడానికి మార్గాలు ఉన్నాయి, మరియు కాష్ రీఆర్డర్ సమయంలో మెమ్‌పూల్‌లో ఉన్న లావాదేవీల సంబంధిత సమస్య, కానీ మీరు దాని గురించి తెలుసుకోవాలి. + +నేను ఇక్కడ ఆప్టిమిజంతో కాషింగ్‌ను ప్రదర్శించాను, ఎందుకంటే నేను ఆప్టిమిజం ఉద్యోగిని మరియు ఇది నాకు బాగా తెలిసిన రోల్అప్. కానీ ఇది అంతర్గత ప్రాసెసింగ్ కోసం కనీస ఖర్చును వసూలు చేసే ఏ రోల్అప్‌తోనైనా పని చేయాలి, తద్వారా పోల్చి చూస్తే లావాదేవీ డేటాను L1 కి వ్రాయడం ప్రధాన ఖర్చు. + +[నా మరిన్ని పనుల కోసం ఇక్కడ చూడండి](https://cryptodocguy.pro/). + diff --git a/public/content/translations/te/developers/tutorials/app-plasma/index.md b/public/content/translations/te/developers/tutorials/app-plasma/index.md new file mode 100644 index 00000000000..e7e29783cd3 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/app-plasma/index.md @@ -0,0 +1,1254 @@ +--- +title: "గోప్యతను కాపాడే యాప్-నిర్దిష్ట ప్లాస్మాను వ్రాయండి" +description: "ఈ ట్యుటోరియల్‌లో, మేము డిపాజిట్ల కోసం పాక్షిక-రహస్య బ్యాంకును నిర్మిస్తాము. బ్యాంకు ఒక కేంద్రీకృత భాగం; దానికి ప్రతి వినియోగదారుడి బ్యాలెన్స్ తెలుసు. అయితే, ఈ సమాచారం ఆన్‌చైన్‌లో నిల్వ చేయబడదు. బదులుగా, బ్యాంకు స్థితి యొక్క హాష్‌ను పోస్ట్ చేస్తుంది. ప్రతిసారీ ఒక లావాదేవీ జరిగినప్పుడు, బ్యాంకు కొత్త హాష్‌ను పోస్ట్ చేస్తుంది, దానితో పాటు హాష్ స్థితిని కొత్తదానికి మార్చే సంతకం చేసిన లావాదేవీ ఉందని రుజువు చేసే జీరో-కనౌలెడ్జి రుజువు కూడా ఉంటుంది. ఈ ట్యుటోరియల్ చదివిన తర్వాత, మీరు జీరో-కనౌలెడ్జి రుజువులను ఎలా ఉపయోగించాలో మాత్రమే కాకుండా, వాటిని ఎందుకు ఉపయోగిస్తారో మరియు సురక్షితంగా ఎలా చేయాలో కూడా అర్థం చేసుకుంటారు." +author: Ori Pomerantz +tags: [ "జీరో-కనౌలెడ్జి", "సర్వర్", "ఆఫ్‌చైన్", "గోప్యత" ] +skill: advanced +lang: te +published: 2025-10-15 +--- + +## పరిచయం {#introduction} + +[రోలప్‌లు](/developers/docs/scaling/zk-rollups/)కు భిన్నంగా, [ప్లాస్మాలు](/developers/docs/scaling/plasma) సమగ్రత కోసం ఇతీరియము మెయిన్‌నెట్‌ను ఉపయోగిస్తాయి, కానీ లభ్యత కోసం కాదు. ఈ వ్యాసంలో, మేము ప్లాస్మా లాగా ప్రవర్తించే ఒక అప్లికేషన్‌ను వ్రాస్తాము, ఇతీరియము సమగ్రతకు (అనధికార మార్పులు లేవు) హామీ ఇస్తుంది కానీ లభ్యతకు కాదు (ఒక కేంద్రీకృత భాగం డౌన్ అయి మొత్తం వ్యవస్థను నిలిపివేయవచ్చు). + +మేము ఇక్కడ వ్రాసే అప్లికేషన్ ఒక గోప్యతను కాపాడే బ్యాంకు. వివిధ చిరునామాలకు బ్యాలెన్స్‌లతో ఖాతాలు ఉన్నాయి, మరియు వారు ఇతర ఖాతాలకు డబ్బు (ETH) పంపవచ్చు. బ్యాంకు స్థితి (ఖాతాలు మరియు వాటి బ్యాలెన్స్‌లు) మరియు లావాదేవీల హాష్‌లను పోస్ట్ చేస్తుంది, కానీ అసలు బ్యాలెన్స్‌లను ఆఫ్‌చైన్‌లో ఉంచుతుంది, అక్కడ అవి ప్రైవేట్‌గా ఉండగలవు. + +## డిజైన్ {#design} + +ఇది ఉత్పత్తికి-సిద్ధమైన వ్యవస్థ కాదు, కానీ ఒక బోధనా సాధనం. అందువల్ల, ఇది అనేక సరళీకరణ అంచనాలతో వ్రాయబడింది. + +- స్థిర ఖాతా పూల్. నిర్దిష్ట సంఖ్యలో ఖాతాలు ఉన్నాయి, మరియు ప్రతి ఖాతా ముందుగా నిర్ణయించిన చిరునామాకు చెందినది. ఇది చాలా సరళమైన వ్యవస్థను చేస్తుంది ఎందుకంటే జీరో-కనౌలెడ్జి రుజువులలో వేరియబుల్-సైజ్ డేటా నిర్మాణాలను నిర్వహించడం కష్టం. ఉత్పత్తికి-సిద్ధమైన వ్యవస్థ కోసం, మనం స్థితి హాష్‌గా [మెర్కిల్ రూట్‌ను](/developers/tutorials/merkle-proofs-for-offline-data-integrity/) ఉపయోగించవచ్చు మరియు అవసరమైన బ్యాలెన్స్‌ల కోసం మెర్కిల్ రుజువులను అందించవచ్చు. + +- మెమరీ నిల్వ. ఒక ఉత్పత్తి వ్యవస్థలో, పునఃప్రారంభం అయినప్పుడు వాటిని భద్రపరచడానికి మనం అన్ని ఖాతా బ్యాలెన్స్‌లను డిస్క్‌కు వ్రాయాలి. ఇక్కడ, సమాచారం కేవలం పోయినా పర్వాలేదు. + +- బదిలీలు మాత్రమే. ఒక ఉత్పత్తి వ్యవస్థకు బ్యాంకులోకి ఆస్తులను డిపాజిట్ చేయడానికి మరియు వాటిని విత్‌డ్రా చేయడానికి ఒక మార్గం అవసరం. కానీ ఇక్కడ ఉద్దేశ్యం కేవలం భావనను వివరించడం, కాబట్టి ఈ బ్యాంకు బదిలీలకు పరిమితం చేయబడింది. + +### జీరో-కనౌలెడ్జి రుజువులు {#zero-knowledge-proofs} + +ప్రాథమిక స్థాయిలో, ఒక జీరో-కనౌలెడ్జి రుజువు ప్రూవర్‌కు కొన్ని డేటా, _Dataprivate_ తెలుసని చూపిస్తుంది, అలాంటి డేటాకు పబ్లిక్ డేటా, _Datapublic_ మరియు _Dataprivate_ మధ్య ఒక సంబంధం _Relationship_ ఉంటుంది. వెరిఫైయర్‌కు _Relationship_ మరియు _Datapublic_ తెలుసు. + +గోప్యతను కాపాడటానికి, మనకు స్థితులు మరియు లావాదేవీలు ప్రైవేట్‌గా ఉండాలి. కానీ సమగ్రతను నిర్ధారించడానికి, మనకు స్థితుల [క్రిప్టోగ్రాఫిక్ హాష్](https://en.wikipedia.org/wiki/Cryptographic_hash_function) పబ్లిక్‌గా ఉండాలి. లావాదేవీలను సమర్పించే వ్యక్తులకు ఆ లావాదేవీలు నిజంగా జరిగాయని నిరూపించడానికి, మనం లావాదేవీ హాష్‌లను కూడా పోస్ట్ చేయాలి. + +చాలా సందర్భాలలో, _Dataprivate_ జీరో-కనౌలెడ్జి రుజువు ప్రోగ్రామ్‌కు ఇన్‌పుట్, మరియు _Datapublic_ అవుట్‌పుట్. + +_Dataprivate_లో ఈ ఫీల్డులు: + +- _Staten_, పాత స్థితి +- _Staten+1_, కొత్త స్థితి +- _Transaction_, పాత స్థితి నుండి కొత్త స్థితికి మార్చే ఒక లావాదేవీ. ఈ లావాదేవీలో ఈ ఫీల్డులను చేర్చాలి: + - బదిలీని స్వీకరించే _గమ్యస్థాన చిరునామా_ + - బదిలీ చేయబడుతున్న _మొత్తం_ + - ప్రతి లావాదేవీ ఒకసారి మాత్రమే ప్రాసెస్ చేయబడుతుందని నిర్ధారించడానికి _నాన్స్_. + మూల చిరునామా లావాదేవీలో ఉండవలసిన అవసరం లేదు, ఎందుకంటే దానిని సంతకం నుండి తిరిగి పొందవచ్చు. +- _సంతకం_, లావాదేవీని నిర్వహించడానికి అధికారం పొందిన ఒక సంతకం. మా విషయంలో, లావాదేవీని నిర్వహించడానికి అధికారం పొందిన ఏకైక చిరునామా మూల చిరునామా. మా జీరో-కనౌలెడ్జి వ్యవస్థ పనిచేసే విధానం కారణంగా, ఇతీరియము సంతకంతో పాటు మాకు ఖాతా యొక్క పబ్లిక్ కీ కూడా అవసరం. + +_Datapublic_లో ఇవి ఫీల్డులు: + +- _Hash(Staten)_ పాత స్థితి యొక్క హాష్ +- _Hash(Staten+1)_ కొత్త స్థితి యొక్క హాష్ +- _Hash(Transaction)_ _Staten_ నుండి _Staten+1_కి స్థితిని మార్చే లావాదేవీ యొక్క హాష్. + +ఈ సంబంధం అనేక పరిస్థితులను తనిఖీ చేస్తుంది: + +- పబ్లిక్ హాష్‌లు నిజంగా ప్రైవేట్ ఫీల్డులకు సరైన హాష్‌లు. +- లావాదేవీ, పాత స్థితికి వర్తింపజేసినప్పుడు, కొత్త స్థితికి దారితీస్తుంది. +- సంతకం లావాదేవీ యొక్క మూల చిరునామా నుండి వస్తుంది. + +క్రిప్టోగ్రాఫిక్ హాష్ ఫంక్షన్ల లక్షణాల కారణంగా, ఈ పరిస్థితులను నిరూపించడం సమగ్రతను నిర్ధారించడానికి సరిపోతుంది. + +### డేటా స్ట్రక్చర్‌లు {#data-structures} + +ప్రాథమిక డేటా నిర్మాణం సర్వర్ ద్వారా నిర్వహించబడే స్థితి. ప్రతి ఖాతా కోసం, సర్వర్ ఖాతా బ్యాలెన్స్ మరియు [నాన్స్](https://en.wikipedia.org/wiki/Cryptographic_nonce)ను ట్రాక్ చేస్తుంది, ఇది [రీప్లే దాడులను](https://en.wikipedia.org/wiki/Replay_attack) నివారించడానికి ఉపయోగించబడుతుంది. + +### భాగాలు {#components} + +ఈ వ్యవస్థకు రెండు భాగాలు అవసరం: + +- లావాదేవీలను స్వీకరించి, వాటిని ప్రాసెస్ చేసి, జీరో-కనౌలెడ్జి రుజువులతో పాటు చైన్‌కు హాష్‌లను పోస్ట్ చేసే _సర్వర్_. +- హాష్‌లను నిల్వ చేసే మరియు స్థితి మార్పులు చట్టబద్ధమైనవని నిర్ధారించడానికి జీరో-కనౌలెడ్జి రుజువులను ధృవీకరించే _స్మార్ట్ కాంట్రాక్ట్_. + +### డేటా మరియు నియంత్రణ ప్రవాహం {#flows} + +ఒక ఖాతా నుండి మరొక ఖాతాకు బదిలీ చేయడానికి వివిధ భాగాలు సంభాషించే మార్గాలు ఇవి. + +1. ఒక వెబ్ బ్రౌజర్, సంతకం చేసినవారి ఖాతా నుండి వేరొక ఖాతాకు బదిలీ కోసం అడుగుతూ సంతకం చేసిన లావాదేవీని సమర్పిస్తుంది. + +2. సర్వర్ లావాదేవీ చెల్లుబాటు అయ్యేదని ధృవీకరిస్తుంది: + + - సంతకం చేసినవారికి బ్యాంకులో తగినంత బ్యాలెన్సుతో ఒక ఖాతా ఉంది. + - స్వీకర్తకు బ్యాంకులో ఒక ఖాతా ఉంది. + +3. సర్వర్, సంతకం చేసినవారి బ్యాలెన్స్ నుండి బదిలీ చేయబడిన మొత్తాన్ని తీసివేసి, స్వీకర్త బ్యాలెన్సుకు జోడించడం ద్వారా కొత్త స్థితిని గణిస్తుంది. + +4. సర్వర్, స్థితి మార్పు చెల్లుబాటు అయ్యేదని రుజువు చేసే జీరో-కనౌలెడ్జి రుజువును గణిస్తుంది. + +5. సర్వర్ ఇతీరియముకు ఒక లావాదేవీని సమర్పిస్తుంది, అందులో ఇవి ఉంటాయి: + + - కొత్త స్థితి హాష్ + - లావాదేవీ హాష్ (కాబట్టి లావాదేవీ పంపినవారు అది ప్రాసెస్ చేయబడిందని తెలుసుకోవచ్చు) + - కొత్త స్థితికి మార్పు చెల్లుబాటు అయ్యేదని నిరూపించే జీరో-కనౌలెడ్జి రుజువు + +6. స్మార్ట్ కాంట్రాక్ట్ జీరో-కనౌలెడ్జి రుజువును ధృవీకరిస్తుంది. + +7. జీరో-కనౌలెడ్జి రుజువు సరిపోలితే, స్మార్ట్ కాంట్రాక్ట్ ఈ చర్యలను చేస్తుంది: + - ప్రస్తుత స్థితి హాష్‌ను కొత్త స్థితి హాష్‌కి నవీకరించండి + - కొత్త స్థితి హాష్ మరియు లావాదేవీ హాష్‌తో ఒక లాగ్ ఎంట్రీని జారీ చేయండి + +### ఉపకరణాలు {#tools} + +క్లయింట్-సైడ్ కోడ్ కోసం, మేము [Vite](https://vite.dev/), [React](https://react.dev/), [Viem](https://viem.sh/), మరియు [Wagmi](https://wagmi.sh/)ని ఉపయోగించబోతున్నాము. ఇవి పరిశ్రమ-ప్రామాణిక ఉపకరణాలు; మీకు వాటితో పరిచయం లేకపోతే, మీరు [ఈ ట్యుటోరియల్](/developers/tutorials/creating-a-wagmi-ui-for-your-contract/)ను ఉపయోగించవచ్చు. + +సర్వర్‌లో అధిక భాగం జావాస్క్రిప్ట్‌లో [Node](https://nodejs.org/en) ఉపయోగించి వ్రాయబడింది. జీరో-కనౌలెడ్జి భాగం [Noir](https://noir-lang.org/)లో వ్రాయబడింది. మాకు వెర్షన్ `1.0.0-beta.10` అవసరం, కాబట్టి మీరు [Noirని సూచించిన విధంగా ఇన్‌స్టాల్ చేసిన](https://noir-lang.org/docs/getting_started/quick_start) తర్వాత, రన్ చేయండి: + +``` +noirup -v 1.0.0-beta.10 +``` + +మనం ఉపయోగించే బ్లాక్ చైను `anvil`, ఇది [Foundry](https://getfoundry.sh/introduction/installation)లో భాగమైన ఒక స్థానిక పరీక్ష బ్లాక్ చైను. + +## అమలు {#implementation} + +ఇది ఒక సంక్లిష్టమైన వ్యవస్థ కాబట్టి, మేము దానిని దశలవారీగా అమలు చేస్తాము. + +### దశ 1 - మాన్యువల్ జీరో కనౌలెడ్జి {#stage-1} + +మొదటి దశ కోసం, మేము బ్రౌజర్‌లో ఒక లావాదేవీకి సంతకం చేసి, ఆపై మాన్యువల్‌గా జీరో-కనౌలెడ్జి రుజువుకు సమాచారాన్ని అందిస్తాము. జీరో-కనౌలెడ్జి కోడ్ ఆ సమాచారాన్ని `server/noir/Prover.toml`లో పొందాలని ఆశిస్తుంది (ఇక్కడ డాక్యుమెంట్ చేయబడింది [here](https://noir-lang.org/docs/getting_started/project_breakdown#provertoml-1)). + +చర్యలో చూడటానికి: + +1. మీరు [నోడ్స్](https://nodejs.org/en/download) మరియు [Noir](https://noir-lang.org/install) ఇన్‌స్టాల్ చేసుకున్నారని నిర్ధారించుకోండి. [Node](https://nodejs.org/en/download) మరియు [Noir](https://noir-lang.org/install) ఇన్‌స్టాల్ చేయబడిందని నిర్ధారించుకోండి. ప్రాధాన్యంగా, వాటిని macOS, Linux, లేదా [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) వంటి UNIX సిస్టమ్‌లో ఇన్‌స్టాల్ చేయండి. + +2. దశ 1 కోడ్‌ను డౌన్‌లోడ్ చేసి, క్లయింట్ కోడ్‌ను అందించడానికి వెబ్ సర్వర్‌ను ప్రారంభించండి. + + ```sh + git clone https://github.com/qbzzt/250911-zk-bank.git -b 01-manual-zk + cd 250911-zk-bank + cd client + npm install + npm run dev + ``` + + మీకు ఇక్కడ ఒక వెబ్ సర్వర్ అవసరం కావడానికి కారణం, కొన్ని రకాల మోసాలను నివారించడానికి, అనేక వాలెట్‌లు (MetaMask వంటివి) డిస్క్ నుండి నేరుగా అందించబడిన ఫైల్‌లను అంగీకరించవు + +3. వాలెట్‌తో ఒక బ్రౌజర్‌ను తెరవండి. + +4. వాలెట్‌లో, కొత్త పాస్‌ఫ్రేజ్‌ను నమోదు చేయండి. గమనించండి ఇది మీ ప్రస్తుత పాస్‌ఫ్రేజ్‌ను తొలగిస్తుంది, కాబట్టి _మీకు బ్యాకప్ ఉందని నిర్ధారించుకోండి_. + + పాస్‌ఫ్రేజ్ `test test test test test test test test test test test junk`, ఇది ఆన్విల్ కోసం డిఫాల్ట్ పరీక్ష పాస్‌ఫ్రేజ్. + +5. [క్లయింట్-సైడ్ కోడ్‌కు](http://localhost:5173/) బ్రౌజ్ చేయండి. + +6. వాలెట్‌కు కనెక్ట్ అవ్వండి మరియు మీ గమ్యస్థాన ఖాతా మరియు మొత్తాన్ని ఎంచుకోండి. + +7. **Sign** క్లిక్ చేసి, లావాదేవీపై సంతకం చేయండి. + +8. **Prover.toml** శీర్షిక క్రింద, మీరు టెక్స్ట్ కనుగొంటారు. `server/noir/Prover.toml`ను ఆ టెక్స్ట్‌తో భర్తీ చేయండి. + +9. జీరో-కనౌలెడ్జి రుజువును అమలు చేయండి. + + ```sh + cd ../server/noir + nargo execute + ``` + + అవుట్‌పుట్ ఇలా ఉండాలి + + ``` + ori@CryptoDocGuy:~/noir/250911-zk-bank/server/noir$ nargo execute + + [zkBank] Circuit witness successfully solved + [zkBank] Witness saved to target/zkBank.gz + [zkBank] Circuit output: (0x199aa62af8c1d562a6ec96e66347bf3240ab2afb5d022c895e6bf6a5e617167b, 0x0cfc0a67cb7308e4e9b254026b54204e34f6c8b041be207e64c5db77d95dd82d, 0x450cf9da6e180d6159290554ae3d8787, 0x6d8bc5a15b9037e52fb59b6b98722a85) + ``` + +10. సందేశం సరిగ్గా హాష్ చేయబడిందో లేదో చూడటానికి వెబ్ బ్రౌజర్‌లో మీరు చూసే హాష్‌తో చివరి రెండు విలువలను పోల్చండి. + +#### `server/noir/Prover.toml` {#server-noir-prover-toml} + +[ఈ ఫైల్](https://github.com/qbzzt/250911-zk-bank/blob/01-manual-zk/server/noir/Prover.toml) Noir ఆశించే సమాచార ఫార్మాట్‌ను చూపిస్తుంది. + +```toml +message="send 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 500 finney (milliEth) 0 " +``` + +సందేశం టెక్స్ట్ ఫార్మాట్‌లో ఉంది, ఇది వినియోగదారుకు అర్థం చేసుకోవడానికి సులభం చేస్తుంది (ఇది సంతకం చేసేటప్పుడు అవసరం) మరియు Noir కోడ్ పార్స్ చేయడానికి సులభం చేస్తుంది. మొత్తం ఒక వైపు భిన్న బదిలీలను ప్రారంభించడానికి మరియు మరోవైపు సులభంగా చదవడానికి వీలుగా ఫిన్నీలలో కోట్ చేయబడింది. చివరి సంఖ్య [నాన్స్](https://en.wikipedia.org/wiki/Cryptographic_nonce). + +స్ట్రింగ్ 100 అక్షరాల పొడవు ఉంటుంది. జీరో-కనౌలెడ్జి రుజువులు వేరియబుల్-సైజ్ డేటాను సరిగ్గా నిర్వహించవు, కాబట్టి తరచుగా డేటాను ప్యాడ్ చేయడం అవసరం. + +```toml +pubKeyX=["0x83",...,"0x75"] +pubKeyY=["0x35",...,"0xa5"] +signature=["0xb1",...,"0x0d"] +``` + +ఈ మూడు పారామితులు స్థిర-పరిమాణ బైట్ శ్రేణులు. + +```toml +[[accounts]] +address="0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" +balance=100_000 +nonce=0 + +[[accounts]] +address="0x70997970C51812dc3A010C7d01b50e0d17dc79C8" +balance=100_000 +nonce=0 +``` + +నిర్మాణాల శ్రేణిని పేర్కొనడానికి ఇది మార్గం. ప్రతి ఎంట్రీ కోసం, మేము చిరునామా, బ్యాలెన్స్ (మిల్లీఈటీహెచ్‌లో, అంటే, [ఫిన్నీ](https://cryptovalleyjournal.com/glossary/finney/)), మరియు తదుపరి నాన్స్ విలువను పేర్కొంటాము. + +#### `client/src/Transfer.tsx` {#client-src-transfer-tsx} + +[ఈ ఫైల్](https://github.com/qbzzt/250911-zk-bank/blob/01-manual-zk/client/src/Transfer.tsx) క్లయింట్-సైడ్ ప్రాసెసింగ్‌ను అమలు చేస్తుంది మరియు `server/noir/Prover.toml` ఫైల్‌ను ఉత్పత్తి చేస్తుంది (జీరో-కనౌలెడ్జి పారామితులను కలిగి ఉన్నది). + +మరింత ఆసక్తికరమైన భాగాల వివరణ ఇక్కడ ఉంది. + +```tsx +export default attrs => { +``` + +ఈ ఫంక్షన్ `Transfer` React కాంపోనెంట్‌ను సృష్టిస్తుంది, దీనిని ఇతర ఫైళ్లు దిగుమతి చేసుకోవచ్చు. + +```tsx + const accounts = [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8", + "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC", + "0x90F79bf6EB2c4f870365E785982E1f101E93b906", + "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65", + ] +``` + +ఇవి ఖాతా చిరునామాలు, `test ...` ద్వారా సృష్టించబడిన చిరునామాలు. test junk` పాస్‌ఫ్రేజ్. మీరు మీ స్వంత చిరునామాలను ఉపయోగించాలనుకుంటే, ఈ నిర్వచనాన్ని సవరించండి. + +```tsx + const account = useAccount() + const wallet = createWalletClient({ + transport: custom(window.ethereum!) + }) +``` + +ఈ [Wagmi hooks](https://wagmi.sh/react/api/hooks) మాకు [viem](https://viem.sh/) లైబ్రరీ మరియు వాలెట్‌ను యాక్సెస్ చేయడానికి అనుమతిస్తాయి. + +```tsx + const message = `send ${toAccount} ${ethAmount*1000} finney (milliEth) ${nonce}`.padEnd(100, " ") +``` + +ఇది సందేశం, ఖాళీలతో ప్యాడ్ చేయబడింది. ప్రతిసారీ [`useState`](https://react.dev/reference/react/useState) వేరియబుల్స్ ఒకటి మారినప్పుడు, కాంపోనెంట్ తిరిగి గీయబడుతుంది మరియు `message` నవీకరించబడుతుంది. + +```tsx + const sign = async () => { +``` + +వినియోగదారు **Sign** బటన్‌ను క్లిక్ చేసినప్పుడు ఈ ఫంక్షన్ కాల్ చేయబడుతుంది. సందేశం స్వయంచాలకంగా నవీకరించబడుతుంది, కానీ సంతకానికి వాలెట్‌లో వినియోగదారు ఆమోదం అవసరం, మరియు అవసరం లేకపోతే మేము దానిని అడగాలనుకోవడం లేదు. + +```tsx + const signature = await wallet.signMessage({ + account: fromAccount, + message, + }) +``` + +వాలెట్‌ను [సందేశానికి సంతకం చేయమని](https://viem.sh/docs/accounts/local/signMessage) అడగండి. + +```tsx + const hash = hashMessage(message) +``` + +సందేశం హాష్ పొందండి. వినియోగదారుకు డీబగ్గింగ్ (Noir కోడ్ యొక్క) కోసం దీనిని అందించడం సహాయకరంగా ఉంటుంది. + +```tsx + const pubKey = await recoverPublicKey({ + hash, + signature + }) +``` + +[పబ్లిక్ కీ పొందండి](https://viem.sh/docs/utilities/recoverPublicKey). ఇది [Noir `ecrecover`](https://github.com/colinnielsen/ecrecover-noir) ఫంక్షన్ కోసం అవసరం. + +```tsx + setSignature(signature) + setHash(hash) + setPubKey(pubKey) +``` + +స్థితి వేరియబుల్స్‌ను సెట్ చేయండి. ఇది చేయడం వల్ల కాంపోనెంట్ తిరిగి గీయబడుతుంది (`sign` ఫంక్షన్ నిష్క్రమించిన తర్వాత) మరియు వినియోగదారుకు నవీకరించబడిన విలువలను చూపుతుంది. + +```tsx + let proverToml = ` +``` + +`Prover.toml` కోసం టెక్స్ట్. + +```tsx +message="${message}" + +pubKeyX=${hexToArray(pubKey.slice(4,4+2*32))} +pubKeyY=${hexToArray(pubKey.slice(4+2*32))} +``` + +Viem మాకు పబ్లిక్ కీని 65-బైట్ హెక్సాడెసిమల్ స్ట్రింగ్‌గా అందిస్తుంది. మొదటి బైట్ `0x04`, ఒక వెర్షన్ మార్కర్. దీని తర్వాత పబ్లిక్ కీ యొక్క `x` కోసం 32 బైట్లు మరియు తర్వాత పబ్లిక్ కీ యొక్క `y` కోసం 32 బైట్లు ఉంటాయి. + +అయితే, Noir ఈ సమాచారాన్ని రెండు బైట్ శ్రేణులుగా పొందాలని ఆశిస్తుంది, ఒకటి `x` కోసం మరియు మరొకటి `y` కోసం. జీరో-కనౌలెడ్జి రుజువులో భాగంగా కాకుండా ఇక్కడ క్లయింట్‌లో పార్స్ చేయడం సులభం. + +గమనించండి ఇది సాధారణంగా జీరో-కనౌలెడ్జిలో మంచి పద్ధతి. జీరో-కనౌలెడ్జి రుజువులోని కోడ్ ఖరీదైనది, కాబట్టి జీరో-కనౌలెడ్జి రుజువు వెలుపల చేయగల ఏ ప్రాసెసింగ్ అయినా జీరో-కనౌలెడ్జి రుజువు వెలుపల _చేయాలి_. + +```tsx +signature=${hexToArray(signature.slice(2,-2))} +``` + +సంతకం కూడా 65-బైట్ హెక్సాడెసిమల్ స్ట్రింగ్‌గా అందించబడుతుంది. అయితే, పబ్లిక్ కీని తిరిగి పొందడానికి చివరి బైట్ మాత్రమే అవసరం. పబ్లిక్ కీ ఇప్పటికే Noir కోడ్‌కు అందించబడుతుంది కాబట్టి, సంతకాన్ని ధృవీకరించడానికి మాకు ఇది అవసరం లేదు, మరియు Noir కోడ్‌కు ఇది అవసరం లేదు. + +```tsx +${accounts.map(accountInProverToml).reduce((a,b) => a+b, "")} +` +``` + +ఖాతాలను అందించండి. + +```tsx + setProverToml(proverToml) + } + + return ( + <> +

Transfer

+``` + +ఇది కాంపోనెంట్ యొక్క HTML (మరింత కచ్చితంగా, [JSX](https://react.dev/learn/writing-markup-with-jsx)) ఫార్మాట్. + +#### `server/noir/src/main.nr` {#server-noir-src-main-nr} + +[ఈ ఫైల్](https://github.com/qbzzt/250911-zk-bank/blob/01-manual-zk/server/noir/src/main.nr) అసలు జీరో-కనౌలెడ్జి కోడ్. + +``` +use std::hash::pedersen_hash; +``` + +[Pedersen hash](https://rya-sge.github.io/access-denied/2024/05/07/pedersen-hash-function/) [Noir స్టాండర్డ్ లైబ్రరీ](https://noir-lang.org/docs/noir/standard_library/cryptographic_primitives/hashes#pedersen_hash)తో అందించబడుతుంది. జీరో-కనౌలెడ్జి రుజువులు సాధారణంగా ఈ హాష్ ఫంక్షన్‌ను ఉపయోగిస్తాయి. స్టాండర్డ్ హాష్ ఫంక్షన్లతో పోలిస్తే [అంకగణిత సర్క్యూట్‌లలో](https://rareskills.io/post/arithmetic-circuit) గణించడం చాలా సులభం. + +``` +use keccak256::keccak256; +use dep::ecrecover; +``` + +ఈ రెండు ఫంక్షన్లు బాహ్య లైబ్రరీలు, ఇవి [`Nargo.toml`](https://github.com/qbzzt/250911-zk-bank/blob/01-manual-zk/server/noir/Nargo.toml)లో నిర్వచించబడ్డాయి. అవి ఖచ్చితంగా వాటి పేరుకు తగ్గట్టుగా ఉంటాయి, [keccak256 హాష్](https://emn178.github.io/online-tools/keccak_256.html)ను గణించే ఒక ఫంక్షన్ మరియు ఇతీరియము సంతకాలను ధృవీకరించి, సంతకం చేసినవారి ఇతీరియము చిరునామాను తిరిగి పొందే ఒక ఫంక్షన్. + +``` +global ACCOUNT_NUMBER : u32 = 5; +``` + +Noir [Rust](https://www.rust-lang.org/) నుండి ప్రేరణ పొందింది. వేరియబుల్స్, డిఫాల్ట్‌గా, స్థిరాంకాలు. గ్లోబల్ కాన్ఫిగరేషన్ స్థిరాంకాలను మనం ఇలా నిర్వచిస్తాము. ప్రత్యేకంగా, `ACCOUNT_NUMBER` అనేది మనం నిల్వ చేసే ఖాతాల సంఖ్య. + +`u` అని పేరు పెట్టబడిన డేటా రకాలు ఆ సంఖ్య బిట్స్, సంతకం చేయనివి. మద్దతు ఉన్న ఏకైక రకాలు `u8`, `u16`, `u32`, `u64`, మరియు `u128`. + +``` +global FLAT_ACCOUNT_FIELDS : u32 = 2; +``` + +ఈ వేరియబుల్ ఖాతాల పెడెర్సెన్ హాష్ కోసం ఉపయోగించబడుతుంది, క్రింద వివరించిన విధంగా. + +``` +global MESSAGE_LENGTH : u32 = 100; +``` + +పైన వివరించినట్లుగా, సందేశం పొడవు స్థిరంగా ఉంటుంది. ఇది ఇక్కడ పేర్కొనబడింది. + +``` +global ASCII_MESSAGE_LENGTH : [u8; 3] = [0x31, 0x30, 0x30]; +global HASH_BUFFER_SIZE : u32 = 26+3+MESSAGE_LENGTH; +``` + +[EIP-191 సంతకాలకు](https://eips.ethereum.org/EIPS/eip-191) 26-బైట్ ఉపసర్గతో ఒక బఫర్ అవసరం, దాని తర్వాత ASCIIలో సందేశం పొడవు, మరియు చివరగా సందేశం ఉంటుంది. + +``` +struct Account { + balance: u128, + address: Field, + nonce: u32, +} +``` + +ఖాతా గురించి మనం నిల్వ చేసే సమాచారం. [`Field`](https://noir-lang.org/docs/noir/concepts/data_types/fields) అనేది ఒక సంఖ్య, సాధారణంగా 253 బిట్ల వరకు ఉంటుంది, దీనిని జీరో-కనౌలెడ్జి రుజువును అమలు చేసే [అంకగణిత సర్క్యూట్‌లో](https://rareskills.io/post/arithmetic-circuit) నేరుగా ఉపయోగించవచ్చు. ఇక్కడ మనం `Field`ను 160-బిట్ ఇతీరియము చిరునామాను నిల్వ చేయడానికి ఉపయోగిస్తాము. + +``` +struct TransferTxn { + from: Field, + to: Field, + amount: u128, + nonce: u32 +} +``` + +బదిలీ లావాదేవీ కోసం మనం నిల్వ చేసే సమాచారం. + +``` +fn flatten_account(account: Account) -> [Field; FLAT_ACCOUNT_FIELDS] { +``` + +ఒక ఫంక్షన్ నిర్వచనం. పారామితి `Account` సమాచారం. ఫలితం `Field` వేరియబుల్స్ యొక్క శ్రేణి, దీని పొడవు `FLAT_ACCOUNT_FIELDS` + +``` + let flat = [ + account.address, + ((account.balance << 32) + account.nonce.into()).into(), + ]; +``` + +శ్రేణిలోని మొదటి విలువ ఖాతా చిరునామా. రెండవది బ్యాలెన్స్ మరియు నాన్స్ రెండింటినీ కలిగి ఉంటుంది. `.into()` కాల్స్ ఒక సంఖ్యను దాని అవసరమైన డేటా రకానికి మారుస్తాయి. `account.nonce` ఒక `u32` విలువ, కానీ దానిని `account.balance « 32`కు, ఒక `u128` విలువకు, జోడించడానికి అది `u128`గా ఉండాలి. అది మొదటి `.into()`. రెండవది `u128` ఫలితాన్ని `Field`గా మారుస్తుంది, తద్వారా అది శ్రేణిలో సరిపోతుంది. + +``` + flat +} +``` + +Noirలో, ఫంక్షన్లు చివరలో మాత్రమే ఒక విలువను తిరిగి ఇవ్వగలవు (ప్రారంభ రిటర్న్ లేదు). రిటర్న్ విలువను పేర్కొనడానికి, మీరు దానిని ఫంక్షన్ యొక్క ముగింపు బ్రాకెట్‌కు ముందు అంచనా వేస్తారు. + +``` +fn flatten_accounts(accounts: [Account; ACCOUNT_NUMBER]) -> [Field; FLAT_ACCOUNT_FIELDS*ACCOUNT_NUMBER] { +``` + +ఈ ఫంక్షన్ ఖాతాల శ్రేణిని `Field` శ్రేణిగా మారుస్తుంది, దీనిని పీటర్సన్ హాష్‌కు ఇన్‌పుట్‌గా ఉపయోగించవచ్చు. + +``` + let mut flat: [Field; FLAT_ACCOUNT_FIELDS*ACCOUNT_NUMBER] = [0; FLAT_ACCOUNT_FIELDS*ACCOUNT_NUMBER]; +``` + +మార్చదగిన వేరియబుల్‌ను పేర్కొనడానికి ఇది మార్గం, అంటే _కాదు_ ఒక స్థిరాంకం. Noirలోని వేరియబుల్స్ ఎల్లప్పుడూ ఒక విలువను కలిగి ఉండాలి, కాబట్టి మనం ఈ వేరియబుల్‌ను అన్ని సున్నాలకు ప్రారంభీకరిస్తాము. + +``` + for i in 0..ACCOUNT_NUMBER { +``` + +ఇది `for` లూప్. గమనించండి సరిహద్దులు స్థిరాంకాలు. Noir లూప్‌లు వాటి సరిహద్దులను కంపైల్ సమయంలో తెలిసి ఉండాలి. కారణం అంకగణిత సర్క్యూట్‌లు ప్రవాహ నియంత్రణకు మద్దతు ఇవ్వవు. `for` లూప్‌ను ప్రాసెస్ చేసేటప్పుడు, కంపైలర్ దానిలోని కోడ్‌ను అనేక సార్లు ఉంచుతుంది, ప్రతి పునరావృత్తికి ఒకటి. + +``` + let fields = flatten_account(accounts[i]); + for j in 0..FLAT_ACCOUNT_FIELDS { + flat[i*FLAT_ACCOUNT_FIELDS + j] = fields[j]; + } + } + + flat +} + +fn hash_accounts(accounts: [Account; ACCOUNT_NUMBER]) -> Field { + pedersen_hash(flatten_accounts(accounts)) +} +``` + +చివరగా, మనం ఖాతాల శ్రేణిని హాష్ చేసే ఫంక్షన్‌కు వచ్చాము. + +``` +fn find_account(accounts: [Account; ACCOUNT_NUMBER], address: Field) -> u32 { + let mut account : u32 = ACCOUNT_NUMBER; + + for i in 0..ACCOUNT_NUMBER { + if accounts[i].address == address { + account = i; + } + } +} +``` + +ఈ ఫంక్షన్ నిర్దిష్ట చిరునామాతో ఉన్న ఖాతాను కనుగొంటుంది. ఈ ఫంక్షన్ ప్రామాణిక కోడ్‌లో చాలా అసమర్థంగా ఉంటుంది ఎందుకంటే ఇది చిరునామాను కనుగొన్న తర్వాత కూడా అన్ని ఖాతాల మీద పునరావృతమవుతుంది. + +అయితే, జీరో-కనౌలెడ్జి రుజువులలో, ప్రవాహ నియంత్రణ లేదు. మనం ఎప్పుడైనా ఒక షరతును తనిఖీ చేయవలసి వస్తే, మనం దానిని ప్రతిసారీ తనిఖీ చేయాలి. + +`if` స్టేట్‌మెంట్లతో ఇలాంటిదే జరుగుతుంది. పైన ఉన్న లూప్‌లోని `if` స్టేట్‌మెంట్ ఈ గణిత స్టేట్‌మెంట్‌లకు అనువదించబడింది. + +_conditionresult = accounts[i].address == address_ // అవి సమానంగా ఉంటే ఒకటి, లేకపోతే సున్నా + +_accountnew = conditionresult\*i + (1-conditionresult)\*accountold_ + +```rust + assert (account < ACCOUNT_NUMBER, f"{address} does not have an account"); + + account +``` + +[`assert`](https://noir-lang.org/docs/dev/noir/concepts/assert) ఫంక్షన్, నిర్ధారణ తప్పు అయితే జీరో-కనౌలెడ్జి రుజువును క్రాష్ చేస్తుంది. ఈ సందర్భంలో, సంబంధిత చిరునామాతో ఖాతాను కనుగొనలేకపోతే. చిరునామాను నివేదించడానికి, మనం [ఫార్మాట్ స్ట్రింగ్](https://noir-lang.org/docs/noir/concepts/data_types/strings#format-strings)ను ఉపయోగిస్తాము. + +```rust +fn apply_transfer_txn(accounts: [Account; ACCOUNT_NUMBER], txn: TransferTxn) -> [Account; ACCOUNT_NUMBER] { +``` + +ఈ ఫంక్షన్ ఒక బదిలీ లావాదేవీని వర్తింపజేసి, కొత్త ఖాతాల శ్రేణిని తిరిగి ఇస్తుంది. + +```rust + let from = find_account(accounts, txn.from); + let to = find_account(accounts, txn.to); + + let (txnFrom, txnAmount, txnNonce, accountNonce) = + (txn.from, txn.amount, txn.nonce, accounts[from].nonce); +``` + +మనం Noirలోని ఫార్మాట్ స్ట్రింగ్‌లో నిర్మాణ మూలకాలను యాక్సెస్ చేయలేము, కాబట్టి మనం ఉపయోగపడే కాపీని సృష్టిస్తాము. + +```rust + assert (accounts[from].balance >= txn.amount, + f"{txnFrom} does not have {txnAmount} finney"); + + assert (accounts[from].nonce == txn.nonce, + f"Transaction has nonce {txnNonce}, but the account is expected to use {accountNonce}"); +``` + +ఇవి ఒక లావాదేవీని చెల్లనివిగా చేసే రెండు షరతులు. + +```rust + let mut newAccounts = accounts; + + newAccounts[from].balance -= txn.amount; + newAccounts[from].nonce += 1; + newAccounts[to].balance += txn.amount; + + newAccounts +``` + +కొత్త ఖాతాల శ్రేణిని సృష్టించి, ఆపై దానిని తిరిగి ఇవ్వండి. + +```rust +fn readAddress(messageBytes: [u8; MESSAGE_LENGTH]) -> Field +``` + +ఈ ఫంక్షన్ సందేశం నుండి చిరునామాను చదువుతుంది. + +```rust +{ + let mut result : Field = 0; + + for i in 7..47 { +``` + +చిరునామా ఎల్లప్పుడూ 20 బైట్లు (అంటే, 40 హెక్సాడెసిమల్ అంకెలు) పొడవు ఉంటుంది, మరియు అక్షరం #7 వద్ద ప్రారంభమవుతుంది. + +```rust + result *= 0x10; + if messageBytes[i] >= 48 & messageBytes[i] <= 57 { // 0-9 + result += (messageBytes[i]-48).into(); + } + if messageBytes[i] >= 65 & messageBytes[i] <= 70 { // A-F + result += (messageBytes[i]-65+10).into() + } + if messageBytes[i] >= 97 & messageBytes[i] <= 102 { // a-f + result += (messageBytes[i]-97+10).into() + } + } + + result +} + +fn readAmountAndNonce(messageBytes: [u8; MESSAGE_LENGTH]) -> (u128, u32) +``` + +సందేశం నుండి మొత్తం మరియు నాన్స్‌ను చదవండి. + +```rust +{ + let mut amount : u128 = 0; + let mut nonce: u32 = 0; + let mut stillReadingAmount: bool = true; + let mut lookingForNonce: bool = false; + let mut stillReadingNonce: bool = false; +``` + +సందేశంలో, చిరునామా తర్వాత మొదటి సంఖ్య బదిలీ చేయాల్సిన ఫిన్నీ మొత్తం (అంటే, ETHలో వెయ్యవ వంతు). రెండవ సంఖ్య నాన్స్. వాటి మధ్య ఉన్న ఏ టెక్స్ట్ అయినా విస్మరించబడుతుంది. + +```rust + for i in 48..MESSAGE_LENGTH { + if messageBytes[i] >= 48 & messageBytes[i] <= 57 { // 0-9 + let digit = (messageBytes[i]-48); + + if stillReadingAmount { + amount = amount*10 + digit.into(); + } + + if lookingForNonce { // We just found it + stillReadingNonce = true; + lookingForNonce = false; + } + + if stillReadingNonce { + nonce = nonce*10 + digit.into(); + } + } else { + if stillReadingAmount { + stillReadingAmount = false; + lookingForNonce = true; + } + if stillReadingNonce { + stillReadingNonce = false; + } + } + } + + (amount, nonce) +} +``` + +ఒక [ట్యూపుల్](https://noir-lang.org/docs/noir/concepts/data_types/tuples)ను తిరిగి ఇవ్వడం అనేది ఒక ఫంక్షన్ నుండి బహుళ విలువలను తిరిగి ఇవ్వడానికి Noir మార్గం. + +```rust +fn readTransferTxn(message: str) -> TransferTxn +{ + let mut txn: TransferTxn = TransferTxn { from: 0, to: 0, amount:0, nonce:0 }; + let messageBytes = message.as_bytes(); + + txn.to = readAddress(messageBytes); + let (amount, nonce) = readAmountAndNonce(messageBytes); + txn.amount = amount; + txn.nonce = nonce; + + txn +} +``` + +ఈ ఫంక్షన్ సందేశాన్ని బైట్‌లుగా మారుస్తుంది, ఆపై మొత్తాలను `TransferTxn`గా మారుస్తుంది. + +```rust +// The equivalent to Viem's hashMessage +// https://viem.sh/docs/utilities/hashMessage#hashmessage +fn hashMessage(message: str) -> [u8;32] { +``` + +మనం ఖాతాల కోసం పెడెర్సెన్ హాష్‌ను ఉపయోగించగలిగాము ఎందుకంటే అవి జీరో-కనౌలెడ్జి రుజువులో మాత్రమే హాష్ చేయబడతాయి. అయితే, ఈ కోడ్‌లో మనం సందేశం యొక్క సంతకాన్ని తనిఖీ చేయాలి, ఇది బ్రౌజర్ ద్వారా ఉత్పత్తి చేయబడుతుంది. దాని కోసం, మనం [EIP 191](https://eips.ethereum.org/EIPS/eip-191)లో ఇతీరియము సంతకం ఫార్మాట్‌ను అనుసరించాలి. అంటే మనం ఒక ప్రామాణిక ఉపసర్గ, ASCIIలో సందేశం పొడవు, మరియు సందేశాన్ని కలిగి ఉన్న ఒక మిశ్రమ బఫర్‌ను సృష్టించి, దానిని హాష్ చేయడానికి ఇతీరియము ప్రామాణిక keccak256ను ఉపయోగించాలి. + +```rust + // ASCII prefix + let prefix_bytes = [ + 0x19, // \x19 + 0x45, // 'E' + 0x74, // 't' + 0x68, // 'h' + 0x65, // 'e' + 0x72, // 'r' + 0x65, // 'e' + 0x75, // 'u' + 0x6D, // 'm' + 0x20, // ' ' + 0x53, // 'S' + 0x69, // 'i' + 0x67, // 'g' + 0x6E, // 'n' + 0x65, // 'e' + 0x64, // 'd' + 0x20, // ' ' + 0x4D, // 'M' + 0x65, // 'e' + 0x73, // 's' + 0x73, // 's' + 0x61, // 'a' + 0x67, // 'g' + 0x65, // 'e' + 0x3A, // ':' + 0x0A // '\n' + ]; +``` + +ఒక అప్లికేషన్ వినియోగదారుని ఒక లావాదేవీగా లేదా మరేదైనా ప్రయోజనం కోసం ఉపయోగించగల సందేశానికి సంతకం చేయమని అడిగే సందర్భాలను నివారించడానికి, EIP 191 అన్ని సంతకం చేసిన సందేశాలు అక్షరం 0x19 (చెల్లుబాటు అయ్యే ASCII అక్షరం కాదు) తర్వాత `Ethereum Signed Message:` మరియు ఒక కొత్త లైన్‌తో ప్రారంభం కావాలని నిర్దేశిస్తుంది. + +```rust + let mut buffer: [u8; HASH_BUFFER_SIZE] = [0u8; HASH_BUFFER_SIZE]; + for i in 0..26 { + buffer[i] = prefix_bytes[i]; + } + + let messageBytes : [u8; MESSAGE_LENGTH] = message.as_bytes(); + + if MESSAGE_LENGTH <= 9 { + for i in 0..1 { + buffer[i+26] = ASCII_MESSAGE_LENGTH[i]; + } + + for i in 0..MESSAGE_LENGTH { + buffer[i+26+1] = messageBytes[i]; + } + } + + if MESSAGE_LENGTH >= 10 & MESSAGE_LENGTH <= 99 { + for i in 0..2 { + buffer[i+26] = ASCII_MESSAGE_LENGTH[i]; + } + + for i in 0..MESSAGE_LENGTH { + buffer[i+26+2] = messageBytes[i]; + } + } + + if MESSAGE_LENGTH >= 100 { + for i in 0..3 { + buffer[i+26] = ASCII_MESSAGE_LENGTH[i]; + } + + for i in 0..MESSAGE_LENGTH { + buffer[i+26+3] = messageBytes[i]; + } + } + + assert(MESSAGE_LENGTH < 1000, "Messages whose length is over three digits are not supported"); +``` + +999 వరకు సందేశం పొడవులను నిర్వహించి, అది ఎక్కువ ఉంటే విఫలమవండి. సందేశం పొడవు ఒక స్థిరాంకం అయినప్పటికీ, నేను ఈ కోడ్‌ను జోడించాను ఎందుకంటే ఇది దానిని మార్చడం సులభం చేస్తుంది. ఒక ఉత్పత్తి వ్యవస్థలో, మీరు బహుశా మెరుగైన పనితీరు కోసం `MESSAGE_LENGTH` మారదని ఊహించుకుంటారు. + +```rust + keccak256::keccak256(buffer, HASH_BUFFER_SIZE) +} +``` + +ఇతీరియము ప్రామాణిక `keccak256` ఫంక్షన్‌ను ఉపయోగించండి. + +```rust +fn signatureToAddressAndHash( + message: str, + pubKeyX: [u8; 32], + pubKeyY: [u8; 32], + signature: [u8; 64] + ) -> (Field, Field, Field) // address, first 16 bytes of hash, last 16 bytes of hash +{ +``` + +ఈ ఫంక్షన్ సంతకాన్ని ధృవీకరిస్తుంది, దీనికి సందేశం హాష్ అవసరం. ఆపై అది సంతకం చేసిన చిరునామా మరియు సందేశం హాష్‌ను మాకు అందిస్తుంది. సందేశం హాష్ రెండు `Field` విలువలుగా అందించబడుతుంది ఎందుకంటే అవి ప్రోగ్రామ్‌లోని మిగిలిన భాగంలో ఒక బైట్ శ్రేణి కంటే ఉపయోగించడం సులభం. + +ఫీల్డ్ గణనలు ఒక పెద్ద సంఖ్యకు [మాడ్యూలో](https://en.wikipedia.org/wiki/Modulo) చేయబడతాయి కాబట్టి మనం రెండు `Field` విలువలను ఉపయోగించాలి, కానీ ఆ సంఖ్య సాధారణంగా 256 బిట్ల కంటే తక్కువగా ఉంటుంది (లేకపోతే EVMలో ఆ గణనలను చేయడం కష్టం). + +```rust + let hash = hashMessage(message); + + let mut (hash1, hash2) = (0,0); + + for i in 0..16 { + hash1 = hash1*256 + hash[31-i].into(); + hash2 = hash2*256 + hash[15-i].into(); + } +``` + +`hash1` మరియు `hash2`లను మార్చదగిన వేరియబుల్స్‌గా పేర్కొనండి, మరియు హాష్‌ను వాటిలో బైట్ బైట్‌గా వ్రాయండి. + +```rust + ( + ecrecover::ecrecover(pubKeyX, pubKeyY, signature, hash), +``` + +ఇది [Solidity యొక్క `ecrecover`](https://docs.soliditylang.org/en/v0.8.30/cheatsheet.html#mathematical-and-cryptographic-functions)తో సమానంగా ఉంటుంది, రెండు ముఖ్యమైన తేడాలతో: + +- సంతకం చెల్లనిది అయితే, కాల్ `assert`ను విఫలం చేస్తుంది మరియు ప్రోగ్రామ్ రద్దు చేయబడుతుంది. +- పబ్లిక్ కీ సంతకం మరియు హాష్ నుండి తిరిగి పొందగలిగినప్పటికీ, ఇది బాహ్యంగా చేయగల ప్రాసెసింగ్ మరియు అందువల్ల జీరో-కనౌలెడ్జి రుజువులో చేయడం విలువైనది కాదు. ఎవరైనా ఇక్కడ మమ్మల్ని మోసం చేయడానికి ప్రయత్నిస్తే, సంతకం ధృవీకరణ విఫలమవుతుంది. + +```rust + hash1, + hash2 + ) +} + +fn main( + accounts: [Account; ACCOUNT_NUMBER], + message: str, + pubKeyX: [u8; 32], + pubKeyY: [u8; 32], + signature: [u8; 64], + ) -> pub ( + Field, // Hash of old accounts array + Field, // Hash of new accounts array + Field, // First 16 bytes of message hash + Field, // Last 16 bytes of message hash + ) +``` + +చివరగా, మనం `main` ఫంక్షన్‌కు చేరుకున్నాము. ఖాతాల హాష్‌ను పాత విలువ నుండి కొత్తదానికి చెల్లుబాటు అయ్యే విధంగా మార్చే ఒక లావాదేవీ మా వద్ద ఉందని మేము నిరూపించాలి. దీనికి ఈ నిర్దిష్ట లావాదేవీ హాష్ ఉందని కూడా మేము నిరూపించాలి, తద్వారా దానిని పంపిన వ్యక్తికి వారి లావాదేవీ ప్రాసెస్ చేయబడిందని తెలుస్తుంది. + +```rust +{ + let mut txn = readTransferTxn(message); +``` + +`txn` మార్చదగినదిగా ఉండాలి ఎందుకంటే మనం సందేశం నుండి చిరునామాను చదవము, సంతకం నుండి చదువుతాము. + +```rust + let (fromAddress, txnHash1, txnHash2) = signatureToAddressAndHash( + message, + pubKeyX, + pubKeyY, + signature); + + txn.from = fromAddress; + + let newAccounts = apply_transfer_txn(accounts, txn); + + ( + hash_accounts(accounts), + hash_accounts(newAccounts), + txnHash1, + txnHash2 + ) +} +``` + +### దశ 2 - ఒక సర్వర్‌ను జోడించడం {#stage-2} + +రెండవ దశలో, మేము బ్రౌజర్ నుండి బదిలీ లావాదేవీలను స్వీకరించి, అమలు చేసే ఒక సర్వర్‌ను జోడిస్తాము. + +చర్యలో చూడటానికి: + +1. Vite నడుస్తుంటే దాన్ని ఆపండి. + +2. సర్వర్‌ను కలిగి ఉన్న శాఖను డౌన్‌లోడ్ చేయండి మరియు మీకు అవసరమైన అన్ని మాడ్యూల్స్ ఉన్నాయని నిర్ధారించుకోండి. + + ```sh + git checkout 02-add-server + cd client + npm install + cd ../server + npm install + ``` + + Noir కోడ్‌ను కంపైల్ చేయాల్సిన అవసరం లేదు, ఇది మీరు దశ 1 కోసం ఉపయోగించిన కోడ్‌తో సమానంగా ఉంటుంది. + +3. సర్వర్‌ను ప్రారంభించండి. + + ```sh + npm run start + ``` + +4. వేరే కమాండ్-లైన్ విండోలో, బ్రౌజర్ కోడ్‌ను అందించడానికి Viteని రన్ చేయండి. + + ```sh + cd client + npm run dev + ``` + +5. క్లయింట్ కోడ్‌కు [http://localhost:5173](http://localhost:5173) వద్ద బ్రౌజ్ చేయండి + +6. మీరు ఒక లావాదేవీ జారీ చేసే ముందు, మీరు నాన్స్‌ను, అలాగే మీరు పంపగల మొత్తాన్ని తెలుసుకోవాలి. ఈ సమాచారం పొందడానికి, **Update account data** క్లిక్ చేసి, సందేశానికి సంతకం చేయండి. + + ఇక్కడ మనకు ఒక సందిగ్ధత ఉంది. ఒక వైపు, మేము తిరిగి ఉపయోగించగల సందేశానికి సంతకం చేయకూడదు (ఒక [రీప్లే దాడి](https://en.wikipedia.org/wiki/Replay_attack)), అందుకే మాకు ముందుగా నాన్స్ కావాలి. అయితే, మాకు ఇంకా నాన్స్ లేదు. పరిష్కారం ఒకసారి మాత్రమే ఉపయోగించగల మరియు రెండు వైపులా ఇప్పటికే ఉన్న ఒక నాన్స్‌ను ఎంచుకోవడం, ఉదాహరణకు ప్రస్తుత సమయం. + + ఈ పరిష్కారంతో సమస్య ఏమిటంటే, సమయం సంపూర్ణంగా సమకాలీకరించబడకపోవచ్చు. కాబట్టి బదులుగా, మేము ప్రతి నిమిషానికి మారే ఒక విలువకు సంతకం చేస్తాము. అంటే రీప్లే దాడులకు మా దుర్బలత్వం యొక్క విండో గరిష్టంగా ఒక నిమిషం ఉంటుంది. ఉత్పత్తిలో సంతకం చేసిన అభ్యర్థన TLS ద్వారా రక్షించబడుతుందని మరియు టన్నెల్ యొక్క మరొక వైపు---సర్వర్---బ్యాలెన్స్ మరియు నాన్స్‌ను ఇప్పటికే వెల్లడించగలదని (పని చేయడానికి అవి దానికి తెలిసి ఉండాలి) పరిగణలోకి తీసుకుంటే, ఇది ఒక ఆమోదయోగ్యమైన ప్రమాదం. + +7. బ్రౌజర్ బ్యాలెన్స్ మరియు నాన్స్‌ను తిరిగి పొందిన తర్వాత, అది బదిలీ ఫారమ్‌ను చూపుతుంది. గమ్యస్థాన చిరునామా మరియు మొత్తాన్ని ఎంచుకుని, **Transfer** క్లిక్ చేయండి. ఈ అభ్యర్థనకు సంతకం చేయండి. + +8. బదిలీని చూడటానికి, **Update account data** చేయండి లేదా మీరు సర్వర్‌ను రన్ చేసే విండోలో చూడండి. సర్వర్ ప్రతిసారి మారినప్పుడు స్థితిని లాగ్ చేస్తుంది. + + ``` + ori@CryptoDocGuy:~/x/250911-zk-bank/server$ npm run start + + > server@1.0.0 start + > node --experimental-json-modules index.mjs + + Listening on port 3000 + Txn send 0x90F79bf6EB2c4f870365E785982E1f101E93b906 36000 finney (milliEth) 0 processed + New state: + 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 has 64000 (1) + 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 has 100000 (0) + 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC has 100000 (0) + 0x90F79bf6EB2c4f870365E785982E1f101E93b906 has 136000 (0) + 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65 has 100000 (0) + Txn send 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 7200 finney (milliEth) 1 processed + New state: + 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 has 56800 (2) + 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 has 107200 (0) + 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC has 100000 (0) + 0x90F79bf6EB2c4f870365E785982E1f101E93b906 has 136000 (0) + 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65 has 100000 (0) + Txn send 0x90F79bf6EB2c4f870365E785982E1f101E93b906 3000 finney (milliEth) 2 processed + New state: + 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 has 53800 (3) + 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 has 107200 (0) + 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC has 100000 (0) + 0x90F79bf6EB2c4f870365E785982E1f101E93b906 has 139000 (0) + 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65 has 100000 (0) + ``` + +#### `server/index.mjs` {#server-index-mjs-1} + +[ఈ ఫైల్](https://github.com/qbzzt/250911-zk-bank/blob/02-add-server/server/index.mjs) సర్వర్ ప్రాసెస్‌ను కలిగి ఉంది, మరియు [`main.nr`](https://github.com/qbzzt/250911-zk-bank/blob/02-add-server/server/noir/src/main.nr) వద్ద Noir కోడ్‌తో సంకర్షణ చెందుతుంది. ఆసక్తికరమైన భాగాల వివరణ ఇక్కడ ఉంది. + +```js +import { Noir } from '@noir-lang/noir_js' +``` + +[noir.js](https://www.npmjs.com/package/@noir-lang/noir_js) లైబ్రరీ జావాస్క్రిప్ట్ కోడ్ మరియు Noir కోడ్ మధ్య ఇంటర్ఫేస్ చేస్తుంది. + +```js +const circuit = JSON.parse(await fs.readFile("./noir/target/zkBank.json")) +const noir = new Noir(circuit) +``` + +అంకగణిత సర్క్యూట్‌ను లోడ్ చేయండి---మునుపటి దశలో మనం సృష్టించిన కంపైల్ చేయబడిన Noir ప్రోగ్రామ్---మరియు దానిని అమలు చేయడానికి సిద్ధం చేయండి. + +```js +// We only provide account information in return to a signed request +const accountInformation = async signature => { + const fromAddress = await recoverAddress({ + hash: hashMessage("Get account data " + Math.floor((new Date().getTime())/60000)), + signature + }) +``` + +ఖాతా సమాచారాన్ని అందించడానికి, మాకు సంతకం మాత్రమే అవసరం. కారణం, సందేశం ఏమి కాబోతోందో మాకు ఇప్పటికే తెలుసు, మరియు అందువల్ల సందేశం హాష్ కూడా. + +```js +const processMessage = async (message, signature) => { +``` + +ఒక సందేశాన్ని ప్రాసెస్ చేసి, అది ఎన్కోడ్ చేసే లావాదేవీని అమలు చేయండి. + +```js + // Get the public key + const pubKey = await recoverPublicKey({ + hash, + signature + }) +``` + +ఇప్పుడు మేము సర్వర్‌లో జావాస్క్రిప్ట్‌ను రన్ చేస్తున్నాము కాబట్టి, మేము పబ్లిక్ కీని క్లయింట్‌లో కాకుండా అక్కడ తిరిగి పొందవచ్చు. + +```js + let noirResult + try { + noirResult = await noir.execute({ + message, + signature: signature.slice(2,-2).match(/.{2}/g).map(x => `0x${x}`), + pubKeyX, + pubKeyY, + accounts: Accounts + }) +``` + +`noir.execute` Noir ప్రోగ్రామ్‌ను రన్ చేస్తుంది. పారామితులు [`Prover.toml`](https://github.com/qbzzt/250911-zk-bank/blob/01-manual-zk/server/noir/Prover.toml)లో అందించిన వాటికి సమానంగా ఉంటాయి. గమనించండి పొడవైన విలువలు హెక్సాడెసిమల్ స్ట్రింగ్‌ల శ్రేణిగా అందించబడతాయి (`["0x60", "0xA7"]`), ఒకే హెక్సాడెసిమల్ విలువగా కాదు (`0x60A7`), Viem చేసే విధంగా. + +```js + } catch (err) { + console.log(`Noir error: ${err}`) + throw Error("Invalid transaction, not processed") + } +``` + +ఒకవేళ లోపం ఉంటే, దాన్ని పట్టుకుని, ఆపై ఒక సరళీకృత వెర్షన్‌ను క్లయింట్‌కు పంపండి. + +```js + Accounts[fromAccountNumber].nonce++ + Accounts[fromAccountNumber].balance -= amount + Accounts[toAccountNumber].balance += amount +``` + +లావాదేవీని వర్తించండి. మేము ఇప్పటికే దానిని Noir కోడ్‌లో చేసాము, కానీ ఫలితాన్ని అక్కడ నుండి సంగ్రహించడం కంటే ఇక్కడ మళ్ళీ చేయడం సులభం. + +```js +let Accounts = [ + { + address: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + balance: 5000, + nonce: 0, + }, +``` + +ప్రారంభ `Accounts` నిర్మాణం. + +### దశ 3 - ఇతీరియము స్మార్ట్ కాంట్రాక్టులు {#stage-3} + +1. సర్వర్ మరియు క్లయింట్ ప్రక్రియలను ఆపండి. + +2. స్మార్ట్ కాంట్రాక్టులతో ఉన్న శాఖను డౌన్‌లోడ్ చేయండి మరియు మీకు అవసరమైన అన్ని మాడ్యూల్స్ ఉన్నాయని నిర్ధారించుకోండి. + + ```sh + git checkout 03-smart-contracts + cd client + npm install + cd ../server + npm install + ``` + +3. `anvil`ను వేరే కమాండ్-లైన్ విండోలో రన్ చేయండి. + +4. ధృవీకరణ కీ మరియు సాలిడిటీ వెరిఫైయర్‌ను ఉత్పత్తి చేయండి, ఆపై వెరిఫైయర్ కోడ్‌ను Solidity ప్రాజెక్ట్‌కు కాపీ చేయండి. + + ```sh + cd noir + bb write_vk -b ./target/zkBank.json -o ./target --oracle_hash keccak + bb write_solidity_verifier -k ./target/vk -o ./target/Verifier.sol + cp target/Verifier.sol ../../smart-contracts/src + ``` + +5. స్మార్ట్ కాంట్రాక్టులకు వెళ్లి, `anvil` బ్లాక్ చైనును ఉపయోగించడానికి పర్యావరణ వేరియబుల్స్‌ను సెట్ చేయండి. + + ```sh + cd ../../smart-contracts + export ETH_RPC_URL=http://localhost:8545 + ETH_PRIVATE_KEY=ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 + ``` + +6. `Verifier.sol`ను అమలు చేయండి మరియు చిరునామాను పర్యావరణ వేరియబుల్‌లో నిల్వ చేయండి. + + ```sh + VERIFIER_ADDRESS=`forge create src/Verifier.sol:HonkVerifier --private-key $ETH_PRIVATE_KEY --optimize --broadcast | awk '/Deployed to:/ {print $3}'` + echo $VERIFIER_ADDRESS + ``` + +7. `ZkBank` కాంట్రాక్టును అమలు చేయండి. + + ```sh + ZKBANK_ADDRESS=`forge create ZkBank --private-key $ETH_PRIVATE_KEY --broadcast --constructor-args $VERIFIER_ADDRESS 0x199aa62af8c1d562a6ec96e66347bf3240ab2afb5d022c895e6bf6a5e617167b | awk '/Deployed to:/ {print $3}'` + echo $ZKBANK_ADDRESS + ``` + + `0x199..67b` విలువ `Accounts` యొక్క ప్రారంభ స్థితి యొక్క పెడెర్సెన్ హాష్. మీరు `server/index.mjs`లో ఈ ప్రారంభ స్థితిని సవరించినట్లయితే, జీరో-కనౌలెడ్జి రుజువు ద్వారా నివేదించబడిన ప్రారంభ హాష్‌ను చూడటానికి ఒక లావాదేవీని రన్ చేయవచ్చు. + +8. సర్వర్‌ను రన్ చేయండి. + + ```sh + cd ../server + npm run start + ``` + +9. క్లయింట్‌ను వేరే కమాండ్-లైన్ విండోలో రన్ చేయండి. + + ```sh + cd client + npm run dev + ``` + +10. కొన్ని లావాదేవీలను రన్ చేయండి. + +11. స్థితి ఆన్‌చైన్‌లో మారిందని ధృవీకరించడానికి, సర్వర్ ప్రాసెస్‌ను పునఃప్రారంభించండి. లావాదేవీలలోని అసలు హాష్ విలువ ఆన్‌చైన్‌లో నిల్వ చేయబడిన హాష్ విలువకు భిన్నంగా ఉన్నందున, `ZkBank` ఇకపై లావాదేవీలను అంగీకరించదని చూడండి. + + ఇది ఊహించిన రకమైన లోపం. + + ``` + ori@CryptoDocGuy:~/x/250911-zk-bank/server$ npm run start + + > server@1.0.0 start + > node --experimental-json-modules index.mjs + + Listening on port 3000 + Verification error: ContractFunctionExecutionError: The contract function "processTransaction" reverted with the following reason: + Wrong old state hash + + Contract Call: + address: 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512 + function: processTransaction(bytes _proof, bytes32[] _publicInputs) + args: (0x0000000000000000000000000000000000000000000000042ab5d6d1986846cf00000000000000000000000000000000000000000000000b75c020998797da7800000000000000000000000000000000000000000000000 + ``` + +#### `server/index.mjs` {#server-index-mjs-2} + +ఈ ఫైల్‌లోని మార్పులు ఎక్కువగా అసలు రుజువును సృష్టించి, దానిని ఆన్‌చైన్‌లో సమర్పించడానికి సంబంధించినవి. + +```js +import { exec } from 'child_process' +import util from 'util' + +const execPromise = util.promisify(exec) +``` + +ఆన్‌చైన్‌కు పంపడానికి అసలు రుజువును సృష్టించడానికి మేము [బారెటెన్‌బెర్గ్ ప్యాకేజీని](https://github.com/AztecProtocol/aztec-packages/tree/next/barretenberg) ఉపయోగించాలి. మేము ఈ ప్యాకేజీని కమాండ్-లైన్ ఇంటర్‌ఫేస్ (`bb`)ని రన్ చేయడం ద్వారా లేదా [జావాస్క్రిప్ట్ లైబ్రరీ, `bb.js`](https://www.npmjs.com/package/@aztec/bb.js)ని ఉపయోగించడం ద్వారా ఉపయోగించవచ్చు. జావాస్క్రిప్ట్ లైబ్రరీ కోడ్‌ను దేశీయంగా రన్ చేయడం కంటే చాలా నెమ్మదిగా ఉంటుంది, కాబట్టి మేము కమాండ్-లైన్‌ను ఉపయోగించడానికి ఇక్కడ [`exec`](https://nodejs.org/api/child_process.html#child_processexeccommand-options-callback)ని ఉపయోగిస్తాము. + +గమనించండి మీరు `bb.js`ని ఉపయోగించాలని నిర్ణయించుకుంటే, మీరు ఉపయోగిస్తున్న Noir వెర్షన్‌తో అనుకూలమైన వెర్షన్‌ను ఉపయోగించాలి. వ్రాసే సమయంలో, ప్రస్తుత Noir వెర్షన్ (1.0.0-beta.11) `bb.js` వెర్షన్ 0.87ను ఉపయోగిస్తుంది. + +```js +const zkBankAddress = process.env.ZKBANK_ADDRESS || "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512" +``` + +ఇక్కడి చిరునామా, మీరు శుభ్రమైన `anvil`తో ప్రారంభించి, పైన ఉన్న ఆదేశాలను అనుసరించినప్పుడు పొందేది. + +```js +const walletClient = createWalletClient({ + chain: anvil, + transport: http(), + account: privateKeyToAccount("0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6") +}) +``` + +ఈ ప్రైవేట్ కీ `anvil`లోని డిఫాల్ట్ ప్రీ-ఫండెడ్ ఖాతాలలో ఒకటి. + +```js +const generateProof = async (witness, fileID) => { +``` + +`bb` ఎగ్జిక్యూటబుల్ ఉపయోగించి ఒక రుజువును రూపొందించండి. + +```js + const fname = `witness-${fileID}.gz` + await fs.writeFile(fname, witness) +``` + +సాక్షిని ఒక ఫైల్‌కు వ్రాయండి. + +```js + await execPromise(`bb prove -b ./noir/target/zkBank.json -w ${fname} -o ${fileID} --oracle_hash keccak --output_format fields`) +``` + +నిజానికి రుజువును సృష్టించండి. ఈ దశ పబ్లిక్ వేరియబుల్స్‌తో ఒక ఫైల్‌ను కూడా సృష్టిస్తుంది, కానీ మాకు అది అవసరం లేదు. మేము ఆ వేరియబుల్స్‌ను `noir.execute` నుండి ఇప్పటికే పొందాము. + +```js + const proof = "0x" + JSON.parse(await fs.readFile(`./${fileID}/proof_fields.json`)).reduce((a,b) => a+b, "").replace(/0x/g, "") +``` + +రుజువు `Field` విలువల యొక్క JSON శ్రేణి, ప్రతిదీ ఒక హెక్సాడెసిమల్ విలువగా సూచించబడుతుంది. అయితే, మేము దానిని లావాదేవీలో ఒకే `bytes` విలువగా పంపాలి, దీనిని Viem ఒక పెద్ద హెక్సాడెసిమల్ స్ట్రింగ్‌తో సూచిస్తుంది. ఇక్కడ మేము అన్ని విలువలను కలిపి, అన్ని `0x`లను తీసివేసి, ఆపై చివరలో ఒకటి జోడించడం ద్వారా ఫార్మాట్‌ను మారుస్తాము. + +```js + await execPromise(`rm -r ${fname} ${fileID}`) + + return proof +} +``` + +శుభ్రపరిచి, రుజువును తిరిగి ఇవ్వండి. + +```js +const processMessage = async (message, signature) => { + . + . + . + + const publicFields = noirResult.returnValue.map(x=>'0x' + x.slice(2).padStart(64, "0")) +``` + +పబ్లిక్ ఫీల్డ్‌లు 32-బైట్ విలువల శ్రేణిగా ఉండాలి. అయితే, లావాదేవీ హాష్‌ను రెండు `Field` విలువల మధ్య విభజించవలసి వచ్చినందున, ఇది 16-బైట్ విలువగా కనిపిస్తుంది. ఇక్కడ మేము సున్నాలను జోడిస్తాము, తద్వారా Viem అది నిజానికి 32 బైట్లు అని అర్థం చేసుకుంటుంది. + +```js + const proof = await generateProof(noirResult.witness, `${fromAddress}-${nonce}`) +``` + +ప్రతి చిరునామా ప్రతి నాన్స్‌ను ఒకసారి మాత్రమే ఉపయోగిస్తుంది, తద్వారా మేము `fromAddress` మరియు `nonce` కలయికను సాక్షి ఫైల్ మరియు అవుట్‌పుట్ డైరెక్టరీ కోసం ఒక ప్రత్యేక ఐడెంటిఫైయర్‌గా ఉపయోగించవచ్చు. + +```js + try { + await zkBank.write.processTransaction([ + proof, publicFields]) + } catch (err) { + console.log(`Verification error: ${err}`) + throw Error("Can't verify the transaction onchain") + } + . + . + . +} +``` + +లావాదేవీని చైన్‌కు పంపండి. + +#### `smart-contracts/src/ZkBank.sol` {#smart-contracts-src-zkbank-sol} + +ఇది లావాదేవీని స్వీకరించే ఆన్‌చైన్ కోడ్. + +```solidity +// SPDX-License-Identifier: MIT + +pragma solidity >=0.8.21; + +import {HonkVerifier} from "./Verifier.sol"; + +contract ZkBank { + HonkVerifier immutable myVerifier; + bytes32 currentStateHash; + + constructor(address _verifierAddress, bytes32 _initialStateHash) { + currentStateHash = _initialStateHash; + myVerifier = HonkVerifier(_verifierAddress); + } +``` + +ఆన్‌చైన్ కోడ్ రెండు వేరియబుల్స్‌ను ట్రాక్ చేయాలి: వెరిఫైయర్ (`nargo` ద్వారా సృష్టించబడిన ఒక ప్రత్యేక కాంట్రాక్ట్) మరియు ప్రస్తుత స్థితి హాష్. + +```solidity + event TransactionProcessed( + bytes32 indexed transactionHash, + bytes32 oldStateHash, + bytes32 newStateHash + ); +``` + +ప్రతిసారి స్థితి మారినప్పుడు, మేము `TransactionProcessed` ఈవెంట్‌ను విడుదల చేస్తాము. + +```solidity + function processTransaction( + bytes calldata _proof, + bytes32[] calldata _publicFields + ) public { +``` + +ఈ ఫంక్షన్ లావాదేవీలను ప్రాసెస్ చేస్తుంది. ఇది రుజువును (`bytes`గా) మరియు పబ్లిక్ ఇన్‌పుట్‌లను (`bytes32` శ్రేణిగా), వెరిఫైయర్ అవసరమైన ఫార్మాట్‌లో (ఆన్‌చైన్ ప్రాసెసింగ్‌ను మరియు అందువల్ల గ్యాస్ ఖర్చులను తగ్గించడానికి) పొందుతుంది. + +```solidity + require(_publicInputs[0] == currentStateHash, + "Wrong old state hash"); +``` + +జీరో-కనౌలెడ్జి రుజువు లావాదేవీ మన ప్రస్తుత హాష్ నుండి కొత్తదానికి మారుతుందని ఉండాలి. + +```solidity + myVerifier.verify(_proof, _publicFields); +``` + +జీరో-కనౌలెడ్జి రుజువును ధృవీకరించడానికి వెరిఫైయర్ కాంట్రాక్టును కాల్ చేయండి. జీరో-కనౌలెడ్జి రుజువు తప్పు అయితే ఈ దశ లావాదేవీని తిరిగి తీసుకుంటుంది. + +```solidity + currentStateHash = _publicFields[1]; + + emit TransactionProcessed( + _publicFields[2]<<128 | _publicFields[3], + _publicFields[0], + _publicFields[1] + ); + } +} +``` + +అన్నీ సరిగ్గా ఉంటే, స్థితి హాష్‌ను కొత్త విలువకు నవీకరించి, `TransactionProcessed` ఈవెంట్‌ను విడుదల చేయండి. + +## కేంద్రీకృత భాగం ద్వారా దుర్వినియోగాలు {#abuses} + +సమాచార భద్రత మూడు గుణాలను కలిగి ఉంటుంది: + +- _గోప్యత_, వినియోగదారులు వారు చదవడానికి అధికారం లేని సమాచారాన్ని చదవలేరు. +- _సమగ్రత_, అధీకృత వినియోగదారులు అధీకృత పద్ధతిలో తప్ప సమాచారాన్ని మార్చలేరు. +- _లభ్యత_, అధీకృత వినియోగదారులు వ్యవస్థను ఉపయోగించగలరు. + +ఈ వ్యవస్థలో, సమగ్రత జీరో-కనౌలెడ్జి రుజువుల ద్వారా అందించబడుతుంది. లభ్యతను హామీ ఇవ్వడం చాలా కష్టం, మరియు గోప్యత అసాధ్యం, ఎందుకంటే బ్యాంకు ప్రతి ఖాతా యొక్క బ్యాలెన్స్ మరియు అన్ని లావాదేవీలను తెలుసుకోవాలి. సమాచారం ఉన్న ఒక సంస్థ ఆ సమాచారాన్ని పంచుకోకుండా నిరోధించడానికి మార్గం లేదు. + +[స్టీల్త్ చిరునామాలను](https://vitalik.eth.limo/general/2023/01/20/stealth.html) ఉపయోగించి నిజంగా గోప్యమైన బ్యాంకును సృష్టించడం సాధ్యం కావచ్చు, కానీ అది ఈ వ్యాసం పరిధికి మించినది. + +### తప్పుడు సమాచారం {#false-info} + +[డేటాను అభ్యర్థించినప్పుడు](https://github.com/qbzzt/250911-zk-bank/blob/03-smart-contracts/server/index.mjs#L278-L291) తప్పుడు సమాచారాన్ని అందించడం ద్వారా సర్వర్ సమగ్రతను ఉల్లంఘించగల ఒక మార్గం. + +దీన్ని పరిష్కరించడానికి, మేము ఖాతాలను ఒక ప్రైవేట్ ఇన్‌పుట్‌గా మరియు సమాచారం అభ్యర్థించబడిన చిరునామాను ఒక పబ్లిక్ ఇన్‌పుట్‌గా స్వీకరించే రెండవ Noir ప్రోగ్రామ్‌ను వ్రాయవచ్చు. అవుట్‌పుట్ ఆ చిరునామా యొక్క బ్యాలెన్స్ మరియు నాన్స్, మరియు ఖాతాల హాష్. + +అయితే, ఈ రుజువును ఆన్‌చైన్‌లో ధృవీకరించలేము, ఎందుకంటే మేము నాన్స్‌లు మరియు బ్యాలెన్స్‌లను ఆన్‌చైన్‌లో పోస్ట్ చేయాలనుకోవడం లేదు. అయితే, దీనిని బ్రౌజర్‌లో నడుస్తున్న క్లయింట్ కోడ్ ద్వారా ధృవీకరించవచ్చు. + +### బలవంతపు లావాదేవీలు {#forced-txns} + +L2లలో లభ్యతను నిర్ధారించడానికి మరియు సెన్సార్‌షిప్‌ను నివారించడానికి సాధారణ యంత్రాంగం [బలవంతపు లావాదేవీలు](https://docs.optimism.io/stack/transactions/forced-transaction). కానీ బలవంతపు లావాదేవీలు జీరో-కనౌలెడ్జి రుజువులతో కలపబడవు. సర్వర్ మాత్రమే లావాదేవీలను ధృవీకరించగల ఏకైక సంస్థ. + +బలవంతపు లావాదేవీలను అంగీకరించడానికి మరియు అవి ప్రాసెస్ అయ్యే వరకు స్థితిని మార్చకుండా సర్వర్‌ను నిరోధించడానికి మేము `smart-contracts/src/ZkBank.sol`ను సవరించవచ్చు. అయితే, ఇది మాకు ఒక సాధారణ తిరస్కరణ-సేవ దాడికి గురి చేస్తుంది. ఒక బలవంతపు లావాదేవీ చెల్లనిది మరియు అందువల్ల ప్రాసెస్ చేయడం అసాధ్యం అయితే? + +పరిష్కారం ఒక బలవంతపు లావాదేవీ చెల్లనిదని జీరో-కనౌలెడ్జి రుజువు కలిగి ఉండటం. ఇది సర్వర్‌కు మూడు ఎంపికలను ఇస్తుంది: + +- బలవంతపు లావాదేవీని ప్రాసెస్ చేయడం, అది ప్రాసెస్ చేయబడిందని మరియు కొత్త స్థితి హాష్ ఉందని జీరో-కనౌలెడ్జి రుజువును అందించడం. +- బలవంతపు లావాదేవీని తిరస్కరించడం, మరియు లావాదేవీ చెల్లనిదని (తెలియని చిరునామా, చెడ్డ నాన్స్, లేదా తగినంత బ్యాలెన్స్ లేకపోవడం) కాంట్రాక్టుకు జీరో-కనౌలెడ్జి రుజువును అందించడం. +- బలవంతపు లావాదేవీని విస్మరించడం. సర్వర్‌ను లావాదేవీని నిజంగా ప్రాసెస్ చేయమని బలవంతం చేయడానికి మార్గం లేదు, కానీ దీని అర్థం మొత్తం వ్యవస్థ అందుబాటులో లేదు. + +#### లభ్యత బాండ్లు {#avail-bonds} + +నిజ-జీవిత అమలులో, సర్వర్‌ను నడుపుతూ ఉండటానికి బహుశా ఏదో ఒక రకమైన లాభ ప్రేరణ ఉంటుంది. నిర్దిష్ట కాలంలో బలవంతపు లావాదేవీ ప్రాసెస్ చేయబడకపోతే ఎవరైనా కాల్చగల లభ్యత బాండ్‌ను సర్వర్ పోస్ట్ చేయడం ద్వారా మేము ఈ ప్రోత్సాహాన్ని బలోపేతం చేయవచ్చు. + +### చెడ్డ Noir కోడ్ {#bad-noir-code} + +సాధారణంగా, ప్రజలు ఒక స్మార్ట్ కాంట్రాక్టును విశ్వసించేలా చేయడానికి మేము సోర్స్ కోడ్‌ను ఒక [బ్లాక్ ఎక్స్‌ప్లోరర్‌కు](https://eth.blockscout.com/address/0x7D16d2c4e96BCFC8f815E15b771aC847EcbDB48b?tab=contract) అప్‌లోడ్ చేస్తాము. అయితే, జీరో-కనౌలెడ్జి రుజువుల విషయంలో, అది సరిపోదు. + +`Verifier.sol` ధృవీకరణ కీని కలిగి ఉంటుంది, ఇది Noir ప్రోగ్రామ్ యొక్క ఫంక్షన్. అయితే, ఆ కీ మాకు Noir ప్రోగ్రామ్ ఏమిటో చెప్పదు. నిజంగా విశ్వసనీయ పరిష్కారం కలిగి ఉండటానికి, మీరు Noir ప్రోగ్రామ్ (మరియు దానిని సృష్టించిన వెర్షన్)ను అప్‌లోడ్ చేయాలి. లేకపోతే, జీరో-కనౌలెడ్జి రుజువులు వేరే ప్రోగ్రామ్‌ను ప్రతిబింబించవచ్చు, ఒక వెనుక ద్వారం ఉన్నది. + +బ్లాక్ ఎక్స్‌ప్లోరర్లు మాకు Noir ప్రోగ్రామ్‌లను అప్‌లోడ్ చేయడానికి మరియు ధృవీకరించడానికి అనుమతించే వరకు, మీరు దానిని మీరే చేయాలి (ప్రాధాన్యంగా [IPFS](/developers/tutorials/ipfs-decentralized-ui/)కి). అప్పుడు అధునాతన వినియోగదారులు సోర్స్ కోడ్‌ను డౌన్‌లోడ్ చేసుకోగలరు, దానిని స్వయంగా కంపైల్ చేయగలరు, `Verifier.sol`ని సృష్టించగలరు మరియు అది ఆన్‌చైన్‌లో ఉన్న దానికి సమానంగా ఉందని ధృవీకరించగలరు. + +## ముగింపు {#conclusion} + +ప్లాస్మా-రకం అప్లికేషన్లకు సమాచార నిల్వగా ఒక కేంద్రీకృత భాగం అవసరం. ఇది సంభావ్య దుర్బలత్వాలను తెరుస్తుంది కానీ, ప్రతిఫలంగా, బ్లాక్ చైనులో అందుబాటులో లేని మార్గాలలో గోప్యతను కాపాడటానికి మనకు అనుమతిస్తుంది. జీరో-కనౌలెడ్జి రుజువులతో మనం సమగ్రతను నిర్ధారించవచ్చు మరియు కేంద్రీకృత భాగాన్ని నడుపుతున్న ఎవరికైనా లభ్యతను నిర్వహించడానికి ఆర్థికంగా ప్రయోజనకరంగా చేయవచ్చు. + +[నా మరిన్ని పనుల కోసం ఇక్కడ చూడండి](https://cryptodocguy.pro/). + +## ధన్యవాదాలు {#acknowledgements} + +- జోష్ క్రైట్స్ ఈ వ్యాసం యొక్క డ్రాఫ్ట్‌ను చదివి, ఒక ముళ్లలాంటి Noir సమస్యతో నాకు సహాయం చేశారు. + +మిగిలిన ఏవైనా లోపాలు నా బాధ్యత. diff --git a/public/content/translations/te/developers/tutorials/calling-a-smart-contract-from-javascript/index.md b/public/content/translations/te/developers/tutorials/calling-a-smart-contract-from-javascript/index.md new file mode 100644 index 00000000000..edea8722701 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/calling-a-smart-contract-from-javascript/index.md @@ -0,0 +1,131 @@ +--- +title: "జావాస్క్రిప్ట్ నుండి స్మార్ట్ కాంట్రాక్టును పిలవడం" +description: "Dai టోకెన్ ఉదాహరణను ఉపయోగించి జావాస్క్రిప్ట్ నుండి స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌ను ఎలా పిలవాలో" +author: jdourlens +tags: [ "లావాదేవీలు", "frontend", "జావాస్క్రిప్ట్", "web3.js" ] +skill: beginner +lang: te +published: 2020-04-19 +source: EthereumDev +sourceUrl: https://ethereumdev.io/calling-a-smart-contract-from-javascript/ +address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE" +--- + +ఈ ట్యుటోరియల్‌లో మనం జావాస్క్రిప్ట్ నుండి [స్మార్ట్ కాంట్రాక్ట్](/developers/docs/smart-contracts/) ఫంక్షన్‌ను ఎలా పిలవాలో చూద్దాం. మొదటగా స్మార్ట్ కాంట్రాక్ట్ స్థితిని చదవడం (ఉదా., ERC20 హోల్డర్ యొక్క బ్యాలెన్స్), తర్వాత మనం టోకెన్ బదిలీ చేయడం ద్వారా బ్లాక్‌చైన్ స్థితిని సవరిస్తాము. [బ్లాక్‌చైన్‌తో ఇంటరాక్ట్ అవ్వడానికి JS పర్యావరణాన్ని సెటప్ చేయడం](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) గురించి మీకు ఇప్పటికే తెలిసి ఉండాలి. + +ఈ ఉదాహరణ కోసం మనం DAI టోకెన్‌తో ఆడతాము, పరీక్ష ప్రయోజనం కోసం మనం ganache-cliని ఉపయోగించి బ్లాక్‌చైన్‌ను ఫోర్క్ చేస్తాము మరియు ఇప్పటికే చాలా DAI ఉన్న చిరునామాను అన్‌లాక్ చేస్తాము: + +```bash +ganache-cli -f https://mainnet.infura.io/v3/[YOUR INFURA KEY] -d -i 66 1 --unlock 0x4d10ae710Bd8D1C31bd7465c8CBC3add6F279E81 +``` + +స్మార్ట్ కాంట్రాక్టుతో ఇంటరాక్ట్ అవ్వడానికి మనకు దాని చిరునామా మరియు ABI అవసరం: + +```js +const ERC20TransferABI = [ + { + constant: false, + inputs: [ + { + name: "_to", + type: "address", + }, + { + name: "_value", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [ + { + name: "_owner", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + name: "balance", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, +] + +const DAI_ADDRESS = "0x6b175474e89094c44da98b954eedeac495271d0f" +``` + +ఈ ప్రాజెక్ట్ కోసం మేము కేవలం `balanceOf` మరియు `transfer` ఫంక్షన్‌ను మాత్రమే ఉంచడానికి పూర్తి ERC20 ABIని కుదించాము, కానీ మీరు [పూర్తి ERC20 ABIని ఇక్కడ](https://ethereumdev.io/abi-for-erc20-contract-on-ethereum/) కనుగొనవచ్చు. + +ఆ తర్వాత మనం మన స్మార్ట్ కాంట్రాక్టును ఇన్‌స్టాన్షియేట్ చేయాలి: + +```js +const web3 = new Web3("http://localhost:8545") + +const daiToken = new web3.eth.Contract(ERC20TransferABI, DAI_ADDRESS) +``` + +మనం రెండు చిరునామాలను కూడా సెటప్ చేస్తాము: + +- బదిలీని స్వీకరించేది మరియు +- మనం ఇప్పటికే అన్‌లాక్ చేసినది, అది పంపుతుంది: + +```js +const senderAddress = "0x4d10ae710Bd8D1C31bd7465c8CBC3add6F279E81" +const receiverAddress = "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE" +``` + +తదుపరి భాగంలో, రెండు చిరునామాలు కలిగి ఉన్న టోకెన్ల ప్రస్తుత మొత్తాన్ని తిరిగి పొందడానికి మనం `balanceOf` ఫంక్షన్‌ను పిలుస్తాము. + +## పిలుపు: స్మార్ట్ కాంట్రాక్ట్ నుండి విలువను చదవడం {#call-reading-value-from-a-smart-contract} + +మొదటి ఉదాహరణ ఎటువంటి లావాదేవీని పంపకుండా EVMలో దాని స్మార్ట్ కాంట్రాక్ట్ పద్ధతిని అమలు చేయడానికి ఒక "స్థిరమైన" పద్ధతిని పిలుస్తుంది. దీని కోసం మనం ఒక చిరునామా యొక్క ERC20 బ్యాలెన్స్‌ను చదువుతాము. [ERC20 టోకెన్ల గురించి మా కథనాన్ని చదవండి](/developers/tutorials/understand-the-erc-20-token-smart-contract/). + +మీరు ABI అందించిన ఒక ఇన్‌స్టాన్షియేట్ చేయబడిన స్మార్ట్ కాంట్రాక్ట్ పద్ధతులను ఈ క్రింది విధంగా యాక్సెస్ చేయవచ్చు: `yourContract.methods.methodname`. `call` ఫంక్షన్‌ను ఉపయోగించడం ద్వారా మీరు ఫంక్షన్‌ను అమలు చేసిన ఫలితాన్ని అందుకుంటారు. + +```js +daiToken.methods.balanceOf(senderAddress).call(function (err, res) { + if (err) { + console.log("ఒక లోపం సంభవించింది", err) + return + } + console.log("బ్యాలెన్స్ ఇది: ", res) +}) +``` + +DAI ERC20కి 18 దశాంశాలు ఉన్నాయని గుర్తుంచుకోండి, అంటే సరైన మొత్తాన్ని పొందడానికి మీరు 18 సున్నాలను తొలగించాలి. జావాస్క్రిప్ట్ పెద్ద సంఖ్యా విలువలను నిర్వహించదు కాబట్టి, uint256లు స్ట్రింగ్‌లుగా తిరిగి ఇవ్వబడతాయి. [JSలో పెద్ద సంఖ్యలతో ఎలా వ్యవహరించాలో](https://ethereumdev.io/how-to-deal-with-big-numbers-in-javascript/) మీకు ఖచ్చితంగా తెలియకపోతే, bignumber.js గురించిన మా ట్యుటోరియల్‌ను చూడండి. + +## పంపండి: స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌కు లావాదేవీని పంపడం {#send-sending-a-transaction-to-a-smart-contract-function} + +రెండవ ఉదాహరణ కోసం, మన రెండవ చిరునామాకు 10 DAI పంపడానికి మనం DAI స్మార్ట్ కాంట్రాక్ట్ యొక్క బదిలీ ఫంక్షన్‌ను పిలుస్తాము. బదిలీ ఫంక్షన్ రెండు పారామితులను అంగీకరిస్తుంది: స్వీకర్త చిరునామా మరియు బదిలీ చేయవలసిన టోకెన్ మొత్తం: + +```js +daiToken.methods + .transfer(receiverAddress, "100000000000000000000") + .send({ from: senderAddress }, function (err, res) { + if (err) { + console.log("ఒక లోపం సంభవించింది", err) + return + } + console.log("లావాదేవీ యొక్క హాష్: " + res) + }) +``` + +కాల్ ఫంక్షన్ బ్లాక్‌చైన్‌లో మైన్ చేయబడే లావాదేవీ యొక్క హాష్‌ను తిరిగి ఇస్తుంది. ఇతీరియములో, లావాదేవీ హాష్‌లు ఊహించదగినవి - లావాదేవీ అమలు కావడానికి ముందే మనం దాని హాష్‌ను ఎలా పొందగలమో అదే ([హాష్‌లు ఎలా లెక్కించబడతాయో ఇక్కడ తెలుసుకోండి](https://ethereum.stackexchange.com/questions/45648/how-to-calculate-the-assigned-txhash-of-a-transaction)). + +ఫంక్షన్ లావాదేవీని బ్లాక్‌చైన్‌కు మాత్రమే సమర్పిస్తుంది కాబట్టి, అది మైన్ చేయబడి బ్లాక్‌చైన్‌లో చేర్చబడే వరకు మనం ఫలితాన్ని చూడలేము. తదుపరి ట్యుటోరియల్‌లో, [దాని హాష్ తెలుసుకోవడం ద్వారా బ్లాక్‌చైన్‌లో లావాదేవీ అమలు కోసం ఎలా వేచి ఉండాలో](https://ethereumdev.io/waiting-for-a-transaction-to-be-mined-on-ethereum-with-js/) మనం నేర్చుకుంటాము. diff --git a/public/content/translations/te/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md b/public/content/translations/te/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md new file mode 100644 index 00000000000..090f93cc8be --- /dev/null +++ b/public/content/translations/te/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md @@ -0,0 +1,585 @@ +--- +title: "మీ కాంట్రాక్ట్ కోసం యూజర్ ఇంటర్‌ఫేస్‌ను నిర్మించడం" +description: "TypeScript, React, Vite, మరియు Wagmi వంటి ఆధునిక కాంపోనెంట్లను ఉపయోగించి, మేము ఒక ఆధునిక, కానీ అతి తక్కువ, యూజర్ ఇంటర్‌ఫేస్‌ను పరిశీలిస్తాము మరియు యూజర్ ఇంటర్‌ఫేస్‌కు ఒక వాలెట్‌ను ఎలా కనెక్ట్ చేయాలో, సమాచారాన్ని చదవడానికి స్మార్ట్ కాంట్రాక్ట్‌ను ఎలా పిలవాలో, స్మార్ట్ కాంట్రాక్ట్‌కు ఒక లావాదేవీని ఎలా పంపాలో, మరియు మార్పులను గుర్తించడానికి స్మార్ట్ కాంట్రాక్ట్ నుండి ఈవెంట్‌లను ఎలా పర్యవేక్షించాలో నేర్చుకుంటాము." +author: Ori Pomerantz +tags: [ "typescript", "react", "vite", "wagmi", "frontend" ] +skill: beginner +published: 2023-11-01 +lang: te +sidebarDepth: 3 +--- + +Ethereum పర్యావరణ వ్యవస్థలో మాకు అవసరమైన ఒక ఫీచర్‌ను మీరు కనుగొన్నారు. దానిని అమలు చేయడానికి మీరు స్మార్ట్ కాంట్రాక్టులను వ్రాశారు, మరియు బహుశా ఆఫ్‌చెయిన్‌లో నడిచే కొన్ని సంబంధిత కోడ్‌ను కూడా వ్రాశారు. ఇది చాలా బాగుంది! దురదృష్టవశాత్తు, యూజర్ ఇంటర్‌ఫేస్ లేకుండా మీకు ఏ వినియోగదారులు ఉండరు, మరియు మీరు చివరిసారిగా వెబ్‌సైట్‌ను వ్రాసినప్పుడు ప్రజలు డయల్-అప్ మోడెమ్‌లను ఉపయోగించారు మరియు జావాస్క్రిప్ట్ కొత్తది. + +ఈ వ్యాసం మీ కోసం. మీకు ప్రోగ్రామింగ్ తెలుసని, మరియు బహుశా కొద్దిగా జావాస్క్రిప్ట్ మరియు HTML కూడా తెలుసని నేను భావిస్తున్నాను, కానీ మీ యూజర్ ఇంటర్‌ఫేస్ నైపుణ్యాలు తుప్పుపట్టినవి మరియు కాలం చెల్లినవి. మనం కలిసి ఒక సాధారణ ఆధునిక అప్లికేషన్‌ను పరిశీలిద్దాం, తద్వారా ఈ రోజుల్లో ఇది ఎలా జరుగుతుందో మీరు చూస్తారు. + +## ఇది ఎందుకు ముఖ్యం {#why-important} + +సిద్ధాంతపరంగా, మీ కాంట్రాక్టులతో పరస్పర చర్య చేయడానికి మీరు ప్రజలను [Etherscan](https://holesky.etherscan.io/address/0x432d810484add7454ddb3b5311f0ac2e95cecea8#writeContract) లేదా [Blockscout](https://eth-holesky.blockscout.com/address/0x432d810484AdD7454ddb3b5311f0Ac2E95CeceA8?tab=write_contract) ఉపయోగించేలా చేయవచ్చు. అది అనుభవజ్ఞులైన Ethereans కోసం చాలా బాగుంటుంది. కానీ మేము [మరొక బిలియన్ ప్రజలకు](https://blog.ethereum.org/2021/05/07/ethereum-for-the-next-billion) సేవ చేయడానికి ప్రయత్నిస్తున్నాము. గొప్ప వినియోగదారు అనుభవం లేకుండా ఇది జరగదు, మరియు స్నేహపూర్వక యూజర్ ఇంటర్‌ఫేస్ అందులో ఒక పెద్ద భాగం. + +## గ్రీటర్ అప్లికేషన్ {#greeter-app} + +ఆధునిక UI ఎలా పనిచేస్తుందనే దాని వెనుక చాలా సిద్ధాంతం ఉంది, మరియు [చాలా మంచి సైట్లు](https://react.dev/learn/thinking-in-react) [దానిని వివరిస్తాయి](https://wagmi.sh/core/getting-started). ఆ సైట్‌లు చేసిన మంచి పనిని పునరావృతం చేయడానికి బదులుగా, మీరు చేయడం ద్వారా నేర్చుకోవడానికి ఇష్టపడతారని నేను భావిస్తున్నాను మరియు మీరు ఆడగల అప్లికేషన్‌తో ప్రారంభిస్తున్నాను. విషయాలను పూర్తి చేయడానికి మీకు ఇంకా సిద్ధాంతం అవసరం, మరియు మేము దానిని చేరుకుంటాము - మేము సోర్స్ ఫైల్ ద్వారా సోర్స్ ఫైల్‌కు వెళ్తాము మరియు మేము వాటిని చేరుకున్నప్పుడు విషయాలను చర్చిస్తాము. + +### సంస్థాపన {#installation} + +1. అవసరమైతే, మీ వాలెట్‌కు [Holesky బ్లాక్ చైనును](https://chainlist.org/?search=holesky&testnets=true) జోడించండి మరియు [టెస్ట్ ETH](https://www.holeskyfaucet.io/) పొందండి. + +2. github రిపోజిటరీని క్లోన్ చేయండి. + + ```sh + git clone https://github.com/qbzzt/20230801-modern-ui.git + ``` + +3. అవసరమైన ప్యాకేజీలను ఇన్‌స్టాల్ చేయండి. + + ```sh + cd 20230801-modern-ui + pnpm install + ``` + +4. అప్లికేషన్‌ను ప్రారంభించండి. + + ```sh + pnpm dev + ``` + +5. అప్లికేషన్ చూపిన URLకు బ్రౌజ్ చేయండి. చాలా సందర్భాలలో, అది [http://localhost:5173/](http://localhost:5173/). + +6. మీరు [ఒక బ్లాక్ చైను ఎక్స్‌ప్లోరర్‌లో](https://eth-holesky.blockscout.com/address/0x432d810484AdD7454ddb3b5311f0Ac2E95CeceA8?tab=contract) కాంట్రాక్ట్ సోర్స్ కోడ్‌ను, Hardhat యొక్క గ్రీటర్ యొక్క కొద్దిగా సవరించిన సంస్కరణను చూడవచ్చు. + +### ఫైల్ వాక్ త్రూ {#file-walk-through} + +#### `index.html` {#index-html} + +ఈ ఫైల్ ప్రామాణిక HTML బాయిలర్‌ప్లేట్, ఈ పంక్తి మినహా, ఇది స్క్రిప్ట్ ఫైల్‌ను దిగుమతి చేస్తుంది. + +```html + +``` + +#### `src/main.tsx` {#main-tsx} + +ఫైల్ ఎక్స్‌టెన్షన్ ఈ ఫైల్ [TypeScript](https://www.typescriptlang.org/) లో వ్రాయబడిన [React కాంపోనెంట్](https://www.w3schools.com/react/react_components.asp) అని మనకు చెబుతుంది, ఇది [టైప్ చెకింగ్](https://en.wikipedia.org/wiki/Type_system#Type_checking)కు మద్దతు ఇచ్చే జావాస్క్రిప్ట్ యొక్క పొడిగింపు. TypeScript జావాస్క్రిప్ట్‌లోకి కంపైల్ చేయబడింది, కాబట్టి మనం క్లయింట్-సైడ్ ఎగ్జిక్యూషన్ కోసం దీనిని ఉపయోగించవచ్చు. + +```tsx +import '@rainbow-me/rainbowkit/styles.css' +import { RainbowKitProvider } from '@rainbow-me/rainbowkit' +import * as React from 'react' +import * as ReactDOM from 'react-dom/client' +import { WagmiConfig } from 'wagmi' +import { chains, config } from './wagmi' +``` + +మనకు అవసరమైన లైబ్రరీ కోడ్‌ను దిగుమతి చేసుకోండి. + +```tsx +import { App } from './App' +``` + +అప్లికేషన్‌ను అమలు చేసే React కాంపోనెంట్‌ను దిగుమతి చేయండి (క్రింద చూడండి). + +```tsx +ReactDOM.createRoot(document.getElementById('root')!).render( +``` + +రూట్ React కాంపోనెంట్‌ను సృష్టించండి. `render` కు పరామితి [JSX](https://www.w3schools.com/react/react_jsx.asp), ఇది HTML మరియు జావాస్క్రిప్ట్/TypeScript రెండింటినీ ఉపయోగించే ఒక పొడిగింపు భాష. ఇక్కడ ఆశ్చర్యార్థకం గుర్తు TypeScript కాంపోనెంట్‌కు చెబుతుంది: "`document.getElementById('root')` `ReactDOM.createRoot`కు చెల్లుబాటు అయ్యే పరామితి అవుతుందని మీకు తెలియదు, కానీ చింతించకండి - నేను అభివృద్ధి చేసేవాడిని మరియు అది అక్కడ ఉంటుందని నేను మీకు చెబుతున్నాను". + +```tsx + +``` + +అప్లికేషన్ [`React.StrictMode` కాంపోనెంట్](https://react.dev/reference/react/StrictMode) లోపల వెళ్తోంది. ఈ కాంపోనెంట్ అదనపు డీబగ్గింగ్ తనిఖీలను చేర్చమని React లైబ్రరీకి చెబుతుంది, ఇది అభివృద్ధి సమయంలో ఉపయోగపడుతుంది. + +```tsx + +``` + +అప్లికేషన్ [`WagmiConfig` కాంపోనెంట్](https://wagmi.sh/react/api/WagmiProvider) లోపల కూడా ఉంది. [వాగ్మి (మేము దీనిని తయారు చేయబోతున్నాము) లైబ్రరీ](https://wagmi.sh/) React UI నిర్వచనాలను Ethereum వికేంద్రీకృత అప్లికేషన్ వ్రాయడం కోసం [viem లైబ్రరీ](https://viem.sh/)తో కలుపుతుంది. + +```tsx + +``` + +మరియు చివరగా, [`RainbowKitProvider` కాంపోనెంట్](https://www.rainbowkit.com/). ఈ కాంపోనెంట్ లాగిన్ అవ్వడం మరియు వాలెట్ మరియు అప్లికేషన్ మధ్య కమ్యూనికేషన్‌ను నిర్వహిస్తుంది. + +```tsx + +``` + +ఇప్పుడు మనం అప్లికేషన్ కోసం కాంపోనెంట్‌ను కలిగి ఉండవచ్చు, ఇది వాస్తవానికి UIని అమలు చేస్తుంది. కాంపోనెంట్ చివరిలో ఉన్న `/>` XML ప్రమాణం ప్రకారం, ఈ కాంపోనెంట్‌లో ఎటువంటి నిర్వచనాలు లేవని Reactకు చెబుతుంది. + +```tsx + + + , +) +``` + +అయితే, మనం ఇతర కాంపోనెంట్లను కూడా మూసివేయాలి. + +#### `src/App.tsx` {#app-tsx} + +```tsx +import { ConnectButton } from '@rainbow-me/rainbowkit' +import { useAccount } from 'wagmi' +import { Greeter } from './components/Greeter' + +export function App() { +``` + +ఇది React కాంపోనెంట్‌ను సృష్టించడానికి ప్రామాణిక మార్గం - రెండర్ చేయవలసిన ప్రతిసారీ పిలువబడే ఒక ఫంక్షన్‌ను నిర్వచించడం. ఈ ఫంక్షన్ సాధారణంగా పైన కొన్ని TypeScript లేదా జావాస్క్రిప్ట్ కోడ్‌ను కలిగి ఉంటుంది, దాని తర్వాత JSX కోడ్‌ను తిరిగి ఇచ్చే `return` స్టేట్‌మెంట్ ఉంటుంది. + +```tsx + const { isConnected } = useAccount() +``` + +ఇక్కడ మనం వాలెట్ ద్వారా బ్లాక్ చైనుకు కనెక్ట్ అయ్యామా లేదా అని తనిఖీ చేయడానికి [`useAccount`](https://wagmi.sh/react/api/hooks/useAccount)ని ఉపయోగిస్తాము. + +సంప్రదాయం ప్రకారం, `use...` అని పిలువబడే React ఫంక్షన్లు కొంత రకమైన డేటాను తిరిగి ఇచ్చే [హుక్స్](https://www.w3schools.com/react/react_hooks.asp). మీరు అటువంటి హుక్స్‌ను ఉపయోగించినప్పుడు, మీ కాంపోనెంట్ డేటాను పొందడమే కాకుండా, ఆ డేటా మారినప్పుడు కాంపోనెంట్ అప్‌డేట్ చేయబడిన సమాచారంతో మళ్లీ రెండర్ చేయబడుతుంది. + +```tsx + return ( + <> +``` + +React కాంపోనెంట్ యొక్క JSX _ఒక_ కాంపోనెంట్‌ను తిరిగి ఇవ్వాలి. మనకు బహుళ కాంపోనెంట్లు ఉన్నప్పుడు మరియు మనకు "సహజంగా" చుట్టేది ఏమీ లేనప్పుడు, మనం ఖాళీ కాంపోనెంట్‌ను (`<> ...`) ఉపయోగిస్తాము. ) వాటిని ఒకే కాంపోనెంట్‌గా చేయడానికి. + +```tsx +

Greeter

+ +``` + +మేము RainbowKit నుండి [`ConnectButton` కాంపోనెంట్‌ను](https://www.rainbowkit.com/docs/connect-button) పొందుతాము. మేము కనెక్ట్ కానప్పుడు, అది మాకు `Connect Wallet` బటన్‌ను ఇస్తుంది, ఇది వాలెట్‌లను వివరించే మరియు మీరు ఏది ఉపయోగిస్తున్నారో ఎంచుకోవడానికి మిమ్మల్ని అనుమతించే ఒక మోడల్‌ను తెరుస్తుంది. మేము కనెక్ట్ అయినప్పుడు, అది మనం ఉపయోగించే బ్లాక్ చైను, మన ఖాతా చిరునామా మరియు మన ETH బ్యాలెన్స్‌ను ప్రదర్శిస్తుంది. నెట్‌వర్క్‌ను మార్చడానికి లేదా డిస్‌కనెక్ట్ చేయడానికి మనం ఈ డిస్‌ప్లేలను ఉపయోగించవచ్చు. + +```tsx + {isConnected && ( +``` + +మనం JSXలోకి వాస్తవ జావాస్క్రిప్ట్ (లేదా జావాస్క్రిప్ట్‌కు కంపైల్ చేయబడే TypeScript) ను చేర్చవలసి వచ్చినప్పుడు, మనం బ్రాకెట్లను (`{}`) ఉపయోగిస్తాము. + +`a && b` సింటాక్స్ [`a ?` కోసం సంక్షిప్త రూపం. b : a`](https://www.w3schools.com/react/react_es6_ternary.asp). అంటే, `a`నిజమైతే అది`b`కు మదింపు చేయబడుతుంది మరియు లేకపోతే అది `a`కు మదింపు చేయబడుతుంది (ఇది `false`, `0`, మొదలైనవి కావచ్చు). ఒక నిర్దిష్ట షరతు నెరవేరినప్పుడు మాత్రమే ఒక కాంపోనెంట్ ప్రదర్శించబడాలని Reactకు చెప్పడానికి ఇది ఒక సులభమైన మార్గం. + +ఈ సందర్భంలో, వినియోగదారుడు బ్లాక్ చైనుకు కనెక్ట్ అయి ఉంటే మాత్రమే వినియోగదారునికి `గ్రీటర్` చూపించాలని మేము కోరుకుంటున్నాము. + +```tsx + + )} + + ) +} +``` + +#### `src/components/Greeter.tsx` {#greeter-tsx} + +ఈ ఫైల్ చాలా UI కార్యాచరణను కలిగి ఉంది. ఇందులో సాధారణంగా బహుళ ఫైల్‌లలో ఉండే నిర్వచనాలు ఉన్నాయి, కానీ ఇది ఒక ట్యుటోరియల్ కాబట్టి ప్రోగ్రామ్ మొదటిసారి సులభంగా అర్థం చేసుకోవడానికి ఆప్టిమైజ్ చేయబడింది, పనితీరు లేదా నిర్వహణ సౌలభ్యం కోసం కాదు. + +```tsx +import { useState, ChangeEventHandler } from 'react' +import { useNetwork, + useReadContract, + usePrepareContractWrite, + useContractWrite, + useContractEvent + } from 'wagmi' +``` + +మేము ఈ లైబ్రరీ ఫంక్షన్లను ఉపయోగిస్తాము. మళ్ళీ, అవి ఉపయోగించబడిన క్రింద వివరించబడ్డాయి. + +```tsx +import { AddressType } from 'abitype' +``` + +[`abitype` లైబ్రరీ](https://abitype.dev/) మనకు వివిధ Ethereum డేటా రకాల కోసం TypeScript నిర్వచనాలను అందిస్తుంది, ఉదాహరణకు [`AddressType`](https://abitype.dev/config#addresstype). + +```tsx +let greeterABI = [ + . + . + . +] as const // greeterABI +``` + +`Greeter` కాంట్రాక్ట్ కోసం ఎబిఐ. +మీరు ఒకే సమయంలో కాంట్రాక్టులు మరియు UIని అభివృద్ధి చేస్తుంటే, మీరు సాధారణంగా వాటిని ఒకే రిపోజిటరీలో ఉంచి, Solidity కంపైలర్ ద్వారా ఉత్పత్తి చేయబడిన ఎబిఐని మీ అప్లికేషన్‌లో ఫైల్‌గా ఉపయోగిస్తారు. అయితే, ఇక్కడ ఇది అవసరం లేదు ఎందుకంటే కాంట్రాక్ట్ ఇప్పటికే అభివృద్ధి చేయబడింది మరియు మారబోదు. + +```tsx +type AddressPerBlockchainType = { + [key: number]: AddressType +} +``` + +TypeScript బలంగా టైప్ చేయబడింది. విభిన్న చెయిన్‌లపై `గ్రీటర్` కాంట్రాక్ట్ డిప్లాయ్ చేయబడిన చిరునామాను పేర్కొనడానికి మేము ఈ నిర్వచనాన్ని ఉపయోగిస్తాము. కీ ఒక సంఖ్య (chainId), మరియు విలువ ఒక `AddressType` (ఒక చిరునామా). + +```tsx +const contractAddrs: AddressPerBlockchainType = { + // Holesky + 17000: '0x432d810484AdD7454ddb3b5311f0Ac2E95CeceA8', + + // Sepolia + 11155111: '0x7143d5c190F048C8d19fe325b748b081903E3BF0' +} +``` + +రెండు మద్దతు ఉన్న నెట్‌వర్క్‌లలో కాంట్రాక్ట్ యొక్క చిరునామా: [Holesky](https://eth-holesky.blockscout.com/address/0x432d810484AdD7454ddb3b5311f0Ac2E95CeceA8?tab=contact_code) మరియు [Sepolia](https://eth-sepolia.blockscout.com/address/0x7143d5c190F048C8d19fe325b748b081903E3BF0?tab=contact_code). + +గమనిక: వాస్తవానికి మూడవ నిర్వచనం ఉంది, రెడ్‌స్టోన్ హోల్‌స్కీ కోసం, అది క్రింద వివరించబడుతుంది. + +```tsx +type ShowObjectAttrsType = { + name: string, + object: any +} +``` + +ఈ రకం `ShowObject` కాంపోనెంట్‌కు పరామితిగా ఉపయోగించబడుతుంది (తరువాత వివరించబడింది). ఇందులో ఆబ్జెక్ట్ పేరు మరియు దాని విలువ ఉంటాయి, అవి డీబగ్గింగ్ ప్రయోజనాల కోసం ప్రదర్శించబడతాయి. + +```tsx +type ShowGreetingAttrsType = { + greeting: string | undefined +} +``` + +ఏ సమయంలోనైనా మనం గ్రీటింగ్ ఏమిటో తెలుసుకోవచ్చు (ఎందుకంటే మనం దానిని బ్లాక్ చైను నుండి చదివాము) లేదా తెలియకపోవచ్చు (ఎందుకంటే మనం దానిని ఇంకా స్వీకరించలేదు). కాబట్టి ఒక స్ట్రింగ్ లేదా ఏమీ లేని రకాన్ని కలిగి ఉండటం ఉపయోగకరంగా ఉంటుంది. + +##### `Greeter` కాంపోనెంట్ {#greeter-component} + +```tsx +const Greeter = () => { +``` + +చివరగా, మేము కాంపోనెంట్‌ను నిర్వచిస్తాము. + +```tsx + const { chain } = useNetwork() +``` + +మనం ఉపయోగిస్తున్న చెయిన్ గురించి సమాచారం, [wagmi](https://wagmi.sh/react/hooks/useNetwork) సౌజన్యంతో. +ఇది ఒక హుక్ (`use...`) కాబట్టి, ఈ సమాచారం మారిన ప్రతిసారీ కాంపోనెంట్ మళ్లీ గీయబడుతుంది. + +```tsx + const greeterAddr = chain && contractAddrs[chain.id] +``` + +గ్రీటర్ కాంట్రాక్ట్ యొక్క చిరునామా, ఇది చెయిన్‌ను బట్టి మారుతుంది (మరియు మనకు చెయిన్ సమాచారం లేకపోతే లేదా ఆ కాంట్రాక్ట్ లేని చెయిన్‌లో ఉంటే ఇది `undefined`గా ఉంటుంది). + +```tsx + const readResults = useReadContract({ + address: greeterAddr, + abi: greeterABI, + functionName: "greet" , // No arguments + watch: true + }) +``` + +[`useReadContract` హుక్](https://wagmi.sh/react/api/hooks/useReadContract) ఒక కాంట్రాక్ట్ నుండి సమాచారాన్ని చదువుతుంది. UIలో `readResults`ను విస్తరించడం ద్వారా అది ఏ సమాచారాన్ని తిరిగి ఇస్తుందో మీరు సరిగ్గా చూడవచ్చు. ఈ సందర్భంలో మనం గ్రీటింగ్ మారినప్పుడు సమాచారం పొందడానికి అది చూస్తూ ఉండాలని కోరుకుంటున్నాము. + +**గమనిక:** గ్రీటింగ్ ఎప్పుడు మారుతుందో తెలుసుకోవడానికి మరియు ఆ విధంగా అప్‌డేట్ చేయడానికి మనం [`setGreeting` ఈవెంట్‌లను](https://eth-holesky.blockscout.com/address/0x432d810484AdD7454ddb3b5311f0Ac2E95CeceA8?tab=logs) వినవచ్చు. అయితే, ఇది మరింత సమర్థవంతంగా ఉండవచ్చు, కానీ ఇది అన్ని సందర్భాలలో వర్తించదు. వినియోగదారుడు విభిన్న చెయిన్‌కు మారినప్పుడు గ్రీటింగ్ కూడా మారుతుంది, కానీ ఆ మార్పుతో పాటు ఏ ఈవెంట్ ఉండదు. ఈవెంట్‌ల కోసం వినే కోడ్ యొక్క ఒక భాగం మరియు చెయిన్ మార్పులను గుర్తించడానికి మరొక భాగం మనకు ఉండవచ్చు, కానీ [`watch` పరామితిని](https://wagmi.sh/react/api/hooks/useReadContract#watch-optional) సెట్ చేయడం కంటే అది మరింత సంక్లిష్టంగా ఉంటుంది. + +```tsx + const [ newGreeting, setNewGreeting ] = useState("") +``` + +React యొక్క [`useState` హుక్](https://www.w3schools.com/react/react_usestate.asp) ఒక స్టేట్ వేరియబుల్‌ను పేర్కొనడానికి మనకు అనుమతిస్తుంది, దాని విలువ కాంపోనెంట్ యొక్క ఒక రెండరింగ్ నుండి మరొకదానికి కొనసాగుతుంది. ప్రారంభ విలువ పరామితి, ఈ సందర్భంలో ఖాళీ స్ట్రింగ్. + +`useState` హుక్ రెండు విలువలతో కూడిన జాబితాను తిరిగి ఇస్తుంది: + +1. స్టేట్ వేరియబుల్ యొక్క ప్రస్తుత విలువ. +2. అవసరమైనప్పుడు స్టేట్ వేరియబుల్‌ను సవరించడానికి ఒక ఫంక్షన్. ఇది ఒక హుక్ కాబట్టి, ఇది పిలువబడిన ప్రతిసారీ కాంపోనెంట్ మళ్లీ రెండర్ చేయబడుతుంది. + +ఈ సందర్భంలో, వినియోగదారుడు సెట్ చేయాలనుకుంటున్న కొత్త గ్రీటింగ్ కోసం మేము ఒక స్టేట్ వేరియబుల్‌ను ఉపయోగిస్తున్నాము. + +```tsx + const greetingChange : ChangeEventHandler = (evt) => + setNewGreeting(evt.target.value) +``` + +కొత్త గ్రీటింగ్ ఇన్‌పుట్ ఫీల్డ్ మారినప్పుడు ఇది ఈవెంట్ హ్యాండ్లర్. రకం, [`ChangeEventHandler`](https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/forms_and_events/), ఇది ఒక HTML ఇన్‌పుట్ మూలకం యొక్క విలువ మార్పు కోసం హ్యాండ్లర్ అని నిర్దేశిస్తుంది. `` భాగం ఉపయోగించబడింది ఎందుకంటే ఇది ఒక [సాధారణ రకం](https://www.w3schools.com/typescript/typescript_basic_generics.php). + +```tsx + const preparedTx = usePrepareContractWrite({ + address: greeterAddr, + abi: greeterABI, + functionName: 'setGreeting', + args: [ newGreeting ] + }) + const workingTx = useContractWrite(preparedTx.config) +``` + +ఖాతాదారుల దృక్కోణం నుండి బ్లాక్ చైను లావాదేవీని సమర్పించే ప్రక్రియ ఇది: + +1. [`eth_estimateGas`](https://docs.alchemy.com/reference/eth-estimategas) ఉపయోగించి బ్లాక్ చైనులోని ఒక నోడ్‌కు లావాదేవీని పంపండి. +2. నోడ్ నుండి ప్రతిస్పందన కోసం వేచి ఉండండి. +3. ప్రతిస్పందన వచ్చినప్పుడు, వాలెట్ ద్వారా లావాదేవీపై సంతకం చేయమని వినియోగదారుని అడగండి. ఈ దశ నోడ్ ప్రతిస్పందన వచ్చిన తర్వాతే జరగాలి ఎందుకంటే సంతకం చేయడానికి ముందు వినియోగదారునికి లావాదేవీ యొక్క గ్యాస్ ఖర్చు చూపబడుతుంది. +4. వినియోగదారు ఆమోదించే వరకు వేచి ఉండండి. +5. లావాదేవీని మళ్లీ పంపండి, ఈసారి [`eth_sendRawTransaction`](https://docs.alchemy.com/reference/eth-sendrawtransaction) ఉపయోగించి. + +దశ 2 గ్రహించదగినంత సమయం తీసుకునే అవకాశం ఉంది, ఈ సమయంలో వినియోగదారులు వారి ఆదేశం నిజంగా యూజర్ ఇంటర్‌ఫేస్ ద్వారా స్వీకరించబడిందా మరియు లావాదేవీపై సంతకం చేయమని వారిని ఎందుకు అడగడం లేదని ఆశ్చర్యపోతారు. అది చెడ్డ వినియోగదారు అనుభవానికి (UX) దారితీస్తుంది. + +దీనికి పరిష్కారం [ప్రిపేర్ హుక్స్](https://wagmi.sh/react/prepare-hooks) ఉపయోగించడం. ఒక పరామితి మారిన ప్రతిసారీ, వెంటనే నోడ్‌కు `eth_estimateGas` అభ్యర్థనను పంపండి. అప్పుడు, వినియోగదారుడు వాస్తవానికి లావాదేవీని పంపాలనుకున్నప్పుడు (ఈ సందర్భంలో **గ్రీటింగ్‌ను అప్‌డేట్ చేయండి** నొక్కడం ద్వారా), గ్యాస్ ఖర్చు తెలుస్తుంది మరియు వినియోగదారుడు వెంటనే వాలెట్ పేజీని చూడగలడు. + +```tsx + return ( +``` + +ఇప్పుడు మనం చివరగా తిరిగి ఇవ్వడానికి వాస్తవ HTMLని సృష్టించవచ్చు. + +```tsx + <> +

Greeter

+ { + !readResults.isError && !readResults.isLoading && + + } +
+``` + +ఒక `ShowGreeting` కాంపోనెంట్‌ను సృష్టించండి (క్రింద వివరించబడింది), కానీ గ్రీటింగ్ బ్లాక్ చైను నుండి విజయవంతంగా చదవబడితే మాత్రమే. + +```tsx + +``` + +ఇది ఇన్‌పుట్ టెక్స్ట్ ఫీల్డ్, ఇక్కడ వినియోగదారుడు కొత్త గ్రీటింగ్‌ను సెట్ చేయవచ్చు. వినియోగదారుడు ఒక కీని నొక్కిన ప్రతిసారీ, మేము `greetingChange`ను పిలుస్తాము, ఇది `setNewGreeting`ను పిలుస్తుంది. `setNewGreeting` `useState` హుక్ నుండి వచ్చినందున, ఇది `Greeter` కాంపోనెంట్‌ను మళ్లీ రెండర్ చేయడానికి కారణమవుతుంది. దీని అర్థం: + +- కొత్త గ్రీటింగ్ యొక్క విలువను ఉంచడానికి మనం `విలువ`ను పేర్కొనాలి, ఎందుకంటే లేకపోతే అది డిఫాల్ట్‌గా, ఖాళీ స్ట్రింగ్‌గా మారుతుంది. +- `newGreeting` మారిన ప్రతిసారీ `usePrepareContractWrite` పిలువబడుతుంది, దీని అర్థం ఇది ఎల్లప్పుడూ సిద్ధం చేయబడిన లావాదేవీలో తాజా `newGreeting`ను కలిగి ఉంటుంది. + +```tsx + +``` + +`workingTx.write` లేకపోతే, గ్రీటింగ్ అప్‌డేట్‌ను పంపడానికి అవసరమైన సమాచారం కోసం మేము ఇంకా వేచి ఉన్నాము, కాబట్టి బటన్ డిసేబుల్ చేయబడింది. `workingTx.write` విలువ ఉంటే, అది లావాదేవీని పంపడానికి పిలవవలసిన ఫంక్షన్. + +```tsx +
+ + + + + ) +} +``` + +చివరగా, మేము ఏమి చేస్తున్నామో మీరు చూడటానికి సహాయపడటానికి, మేము ఉపయోగించే మూడు వస్తువులను చూపండి: + +- `readResults` +- `preparedTx` +- `workingTx` + +##### `ShowGreeting` కాంపోనెంట్ {#showgreeting-component} + +ఈ కాంపోనెంట్ చూపిస్తుంది + +```tsx +const ShowGreeting = (attrs : ShowGreetingAttrsType) => { +``` + +ఒక కాంపోనెంట్ ఫంక్షన్ కాంపోనెంట్ యొక్క అన్ని లక్షణాలతో ఒక పరామితిని అందుకుంటుంది. + +```tsx + return {attrs.greeting} +} +``` + +##### `ShowObject` కాంపోనెంట్ {#showobject-component} + +సమాచార ప్రయోజనాల కోసం, ముఖ్యమైన వస్తువులను (`గ్రీటింగ్ చదవడానికి `readResults`మరియు మేము సృష్టించే లావాదేవీల కోసం`preparedTx`మరియు`workingTx`) చూపించడానికి మేము `ShowObject` కాంపోనెంట్‌ను ఉపయోగిస్తాము. + +```tsx +const ShowObject = (attrs: ShowObjectAttrsType ) => { + const keys = Object.keys(attrs.object) + const funs = keys.filter(k => typeof attrs.object[k] == "function") + return <> +
+``` + +మేము UIని మొత్తం సమాచారంతో నింపడం ఇష్టం లేదు, కాబట్టి వాటిని వీక్షించడానికి లేదా మూసివేయడానికి వీలుగా, మేము [`details`](https://www.w3schools.com/tags/tag_details.asp) ట్యాగ్‌ను ఉపయోగిస్తాము. + +```tsx + {attrs.name} +
+        {JSON.stringify(attrs.object, null, 2)}
+```
+
+చాలా ఫీల్డులు [`JSON.stringify`](https://www.w3schools.com/js/js_json_stringify.asp) ఉపయోగించి ప్రదర్శించబడతాయి.
+
+```tsx
+      
+ { funs.length > 0 && + <> + ఫంక్షన్‌లు: +
    +``` + +దీనికి మినహాయింపు ఫంక్షన్‌లు, అవి [JSON ప్రమాణం](https://www.json.org/json-en.html)లో భాగం కావు, కాబట్టి వాటిని విడిగా ప్రదర్శించాలి. + +```tsx + {funs.map((f, i) => +``` + +JSX లోపల, `{` కర్లీ బ్రాకెట్ల `}` లోపల ఉన్న కోడ్ జావాస్క్రిప్ట్‌గా వ్యాఖ్యానించబడుతుంది. అప్పుడు, `(` సాధారణ బ్రాకెట్ల `)` లోపల ఉన్న కోడ్, మళ్ళీ JSXగా వ్యాఖ్యానించబడుతుంది. + +```tsx + (
  • {f}
  • ) + )} +``` + +[DOM ట్రీ](https://www.w3schools.com/js/js_htmldom.asp)లోని ట్యాగ్‌లు విభిన్న ఐడెంటిఫైయర్‌లను కలిగి ఉండాలని Reactకు అవసరం. దీని అర్థం ఒకే ట్యాగ్ యొక్క పిల్లలకు (ఈ సందర్భంలో, [అన్‌ఆర్డర్డ్ జాబితా](https://www.w3schools.com/tags/tag_ul.asp)), విభిన్న `కీ` లక్షణాలు అవసరం. + +```tsx +
+ + } +
+ +} +``` + +వివిధ HTML ట్యాగ్‌లను ముగించండి. + +##### తుది `ఎగుమతి` {#the-final-export} + +```tsx +export { Greeter } +``` + +అప్లికేషన్ కోసం మనం ఎగుమతి చేయవలసిన కాంపోనెంట్ `గ్రీటర్`. + +#### `src/wagmi.ts` {#wagmi-ts} + +చివరగా, WAGMIకి సంబంధించిన వివిధ నిర్వచనాలు `src/wagmi.ts`లో ఉన్నాయి. ఇక్కడ నేను ప్రతిదీ వివరించబోవడం లేదు, ఎందుకంటే చాలా వరకు మీరు మార్చవలసిన అవసరం లేని బాయిలర్‌ప్లేట్. + +[githubలో](https://github.com/qbzzt/20230801-modern-ui/blob/main/src/wagmi.ts) ఉన్న కోడ్ ఇక్కడ ఉన్న కోడ్ సరిగ్గా అదే కాదు, ఎందుకంటే వ్యాసంలో తరువాత మేము మరొక చెయిన్‌ను ([Redstone Holesky](https://redstone.xyz/docs/network-info)) జోడిస్తాము. + +```ts +import { getDefaultWallets } from '@rainbow-me/rainbowkit' +import { configureChains, createConfig } from 'wagmi' +import { holesky, sepolia } from 'wagmi/chains' +``` + +అప్లికేషన్ మద్దతు ఇచ్చే బ్లాక్ చైనులను దిగుమతి చేసుకోండి. మీరు [viem githubలో](https://github.com/wagmi-dev/viem/tree/main/src/chains/definitions) మద్దతు ఉన్న చెయిన్‌ల జాబితాను చూడవచ్చు. + +```ts +import { publicProvider } from 'wagmi/providers/public' + +const walletConnectProjectId = 'c96e690bb92b6311e8e9b2a6a22df575' +``` + +[WalletConnect](https://walletconnect.com/)ను ఉపయోగించడానికి మీకు మీ అప్లికేషన్ కోసం ఒక ప్రాజెక్ట్ ID అవసరం. మీరు దానిని [cloud.walletconnect.com](https://cloud.walletconnect.com/sign-in)లో పొందవచ్చు. + +```ts +const { chains, publicClient, webSocketPublicClient } = configureChains( + [ holesky, sepolia ], + [ + publicProvider(), + ], +) + +const { connectors } = getDefaultWallets({ + appName: 'My wagmi + RainbowKit App', + chains, + projectId: walletConnectProjectId, +}) + +export const config = createConfig({ + autoConnect: true, + connectors, + publicClient, + webSocketPublicClient, +}) + +export { chains } +``` + +### మరొక బ్లాక్ చైనును జోడించడం {#add-blockchain} + +ఈ రోజుల్లో చాలా [L2 స్కేలింగ్ సొల్యూషన్స్](/layer-2/) ఉన్నాయి, మరియు viem ఇంకా మద్దతు ఇవ్వని కొన్నింటికి మీరు మద్దతు ఇవ్వాలనుకోవచ్చు. అది చేయడానికి, మీరు `src/wagmi.ts`ను సవరించండి. ఈ సూచనలు [రెడ్‌స్టోన్ హోల్‌స్కీ](https://redstone.xyz/docs/network-info)ని ఎలా జోడించాలో వివరిస్తాయి. + +1. viem నుండి `defineChain` రకాన్ని దిగుమతి చేయండి. + + ```ts + import { defineChain } from 'viem' + ``` + +2. నెట్‌వర్క్ నిర్వచనాన్ని జోడించండి. + + ```ts + const redstoneHolesky = defineChain({ + id: 17_001, + name: 'Redstone Holesky', + network: 'redstone-holesky', + nativeCurrency: { + decimals: 18, + name: 'Ether', + symbol: 'ETH', + }, + rpcUrls: { + default: { + http: ['https://rpc.holesky.redstone.xyz'], + webSocket: ['wss://rpc.holesky.redstone.xyz/ws'], + }, + public: { + http: ['https://rpc.holesky.redstone.xyz'], + webSocket: ['wss://rpc.holesky.redstone.xyz/ws'], + }, + }, + blockExplorers: { + default: { name: 'Explorer', url: 'https://explorer.holesky.redstone.xyz' }, + }, + }) + ``` + +3. `configureChains` కాల్‌కు కొత్త చెయిన్‌ను జోడించండి. + + ```ts + const { chains, publicClient, webSocketPublicClient } = configureChains( + [ holesky, sepolia, redstoneHolesky ], + [ publicProvider(), ], + ) + ``` + +4. అప్లికేషన్‌కు కొత్త నెట్‌వర్క్‌లో మీ కాంట్రాక్టుల కోసం చిరునామా తెలుసని నిర్ధారించుకోండి. ఈ సందర్భంలో, మేము `src/components/Greeter.tsx`ను సవరించాము: + + ```ts + const contractAddrs : AddressPerBlockchainType = { + // Holesky + 17000: '0x432d810484AdD7454ddb3b5311f0Ac2E95CeceA8', + + // Redstone Holesky + 17001: '0x4919517f82a1B89a32392E1BF72ec827ba9986D3', + + // Sepolia + 11155111: '0x7143d5c190F048C8d19fe325b748b081903E3BF0' + } + ``` + +## ముగింపు {#conclusion} + +అయితే, మీరు నిజంగా `గ్రీటర్` కోసం ఒక యూజర్ ఇంటర్‌ఫేస్‌ను అందించడం గురించి పట్టించుకోరు. మీరు మీ స్వంత కాంట్రాక్టుల కోసం ఒక యూజర్ ఇంటర్‌ఫేస్‌ను సృష్టించాలనుకుంటున్నారు. మీ స్వంత అప్లికేషన్‌ను సృష్టించడానికి, ఈ దశలను అమలు చేయండి: + +1. ఒక wagmi అప్లికేషన్‌ను సృష్టించడానికి పేర్కొనండి. + + ```sh copy + pnpm create wagmi + ``` + +2. అప్లికేషన్‌కు పేరు పెట్టండి. + +3. **React** ఫ్రేమ్‌వర్క్‌ను ఎంచుకోండి. + +4. **Vite** వేరియంట్‌ను ఎంచుకోండి. + +5. మీరు [రెయిన్‌బో కిట్‌ను జోడించవచ్చు](https://www.rainbowkit.com/docs/installation#manual-setup). + +ఇప్పుడు వెళ్లి మీ కాంట్రాక్టులను విస్తృత ప్రపంచానికి ఉపయోగపడేలా చేయండి. + +[నా మరిన్ని పనుల కోసం ఇక్కడ చూడండి](https://cryptodocguy.pro/). + diff --git a/public/content/translations/te/developers/tutorials/deploying-your-first-smart-contract/index.md b/public/content/translations/te/developers/tutorials/deploying-your-first-smart-contract/index.md new file mode 100644 index 00000000000..52e0ab0dff1 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/deploying-your-first-smart-contract/index.md @@ -0,0 +1,101 @@ +--- +title: "మీ మొదటి స్మార్ట్ కాంట్రాక్ట్ ను నియమించడం" +description: "ఇథిరియమ్ టెస్ట్ నెట్‌వర్క్‌లో మీ మొదటి స్మార్ట్ కాంట్రాక్ట్‌ను నియమించడానికి ఒక పరిచయం" +author: "jdourlens" +tags: + [ + "స్మార్ట్ కాంట్రాక్టులు", + "remix", + "దృఢత్వం", + "డిప్లాయ్ చేయడం" + ] +skill: beginner +lang: te +published: 2020-04-03 +source: EthereumDev +sourceUrl: https://ethereumdev.io/deploying-your-first-smart-contract/ +address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE" +--- + +ఇథిరియమ్ బ్లాక్‌చైన్‌లో మీ మొదటి [స్మార్ట్ కాంట్రాక్ట్](/developers/docs/smart-contracts/)ను [నియమించడం](/developers/docs/smart-contracts/deploying/) మరియు దానితో ఇంటరాక్ట్ అవ్వడానికి మీరు మా అంత ఉత్సాహంగా ఉన్నారని నేను అనుకుంటున్నాను. + +చింతించకండి, ఇది మా మొదటి స్మార్ట్ కాంట్రాక్ట్ కాబట్టి, మేము దీనిని [లోకల్ టెస్ట్ నెట్‌వర్క్](/developers/docs/networks/)లో నియమిస్తాము, కాబట్టి మీరు నియమించడానికి మరియు దానితో మీకు నచ్చినంతగా ఆడుకోవడానికి ఎటువంటి ఖర్చు ఉండదు. + +## మా కాంట్రాక్ట్ వ్రాయడం {#writing-our-contract} + +మొదటి అడుగు [రిమిక్స్](https://remix.ethereum.org/)ను సందర్శించి, కొత్త ఫైల్‌ను సృష్టించడం. రీమిక్స్ ఇంటర్‌ఫేస్ ఎగువ ఎడమ భాగంలో కొత్త ఫైల్‌ను జోడించి, మీకు కావలసిన ఫైల్ పేరును నమోదు చేయండి. + +![రీమిక్స్ ఇంటర్‌ఫేస్‌లో కొత్త ఫైల్‌ను జోడించడం](./remix.png) + +కొత్త ఫైల్‌లో, మేము ఈ క్రింది కోడ్‌ను పేస్ట్ చేస్తాము. + +```solidity +// SPDX-License-Identifier: MIT +pragma solidity >=0.5.17; + +contract Counter { + + // కౌంట్ల సంఖ్యను ఉంచడానికి అన్‌సైన్డ్ ఇంట్ రకానికి చెందిన పబ్లిక్ వేరియబుల్ + uint256 public count = 0; + + // మా కౌంటర్‌ను పెంచే ఫంక్షన్ + function increment() public { + count += 1; + } + + // కౌంట్ విలువను పొందడానికి అవసరం లేని గెట్టర్ + function getCount() public view returns (uint256) { + return count; + } + +} +``` + +మీకు ప్రోగ్రామింగ్ అలవాటు ఉంటే, ఈ ప్రోగ్రామ్ ఏమి చేస్తుందో మీరు సులభంగా ఊహించవచ్చు. ఇక్కడ లైన్ బై లైన్ వివరణ ఇవ్వబడింది: + +- లైన్ 4: మేము `కౌంటర్` పేరుతో ఒక కాంట్రాక్ట్ ని నిర్వచిస్తాము. +- లైన్ 7: మా కాంట్రాక్ట్ `కౌంట్` అనే ఒక అన్‌సైన్డ్ ఇంటీజర్‌ను 0 నుండి ప్రారంభించి నిల్వ చేస్తుంది. +- లైన్ 10: మొదటి ఫంక్షన్ కాంట్రాక్ట్ యొక్క స్థితిని సవరించి, మా వేరియబుల్ `కౌంట్` ను `ఇన్‌క్రిమెంట్()` చేస్తుంది. +- లైన్ 15: రెండవ ఫంక్షన్ కేవలం స్మార్ట్ కాంట్రాక్ట్ వెలుపల `కౌంట్` వేరియబుల్ యొక్క విలువను చదవడానికి వీలు కల్పించే గెట్టర్ మాత్రమే. గమనించండి, మేము మా `కౌంట్` వేరియబుల్‌ను పబ్లిక్‌గా నిర్వచించినందున ఇది అవసరం లేదు కానీ ఒక ఉదాహరణగా చూపబడింది. + +ఇది మా మొదటి సాధారణ స్మార్ట్ కాంట్రాక్ట్ కోసం అంతే. మీకు తెలిసి ఉండవచ్చు, ఇది జావా లేదా C++ వంటి OOP (ఆబ్జెక్ట్-ఓరియెంటెడ్ ప్రోగ్రామింగ్) భాషల నుండి వచ్చిన క్లాస్ లాగా కనిపిస్తుంది. ఇప్పుడు మా కాంట్రాక్ట్ తో ఆడుకునే సమయం వచ్చింది. + +## మా కాంట్రాక్ట్‌ను నియమించడం {#deploying-our-contract} + +మేము మా మొదటి స్మార్ట్ కాంట్రాక్ట్‌ను వ్రాసినందున, మేము ఇప్పుడు దానితో ఆడుకోవడానికి దానిని బ్లాక్‌చైన్‌కు నియమిస్తాము. + +[బ్లాక్‌చైన్‌లో స్మార్ట్ కాంట్రాక్ట్‌ను నియమించడం](/developers/docs/smart-contracts/deploying/) అంటే వాస్తవానికి ఏ గ్రహీతలను పేర్కొనకుండా సంకలనం చేయబడిన స్మార్ట్ కాంట్రాక్ట్ కోడ్‌ను కలిగి ఉన్న లావాదేవీని పంపడం మాత్రమే. + +మేము మొదట ఎడమ వైపున ఉన్న కంపైల్ ఐకాన్‌పై క్లిక్ చేయడం ద్వారా [కాంట్రాక్ట్‌ను కంపైల్](/developers/docs/smart-contracts/compiling/) చేస్తాము: + +![రీమిక్స్ టూల్‌బార్‌లోని కంపైల్ ఐకాన్](./remix-compile-button.png) + +తరువాత కంపైల్ బటన్‌పై క్లిక్ చేయండి: + +![రీమిక్స్ సాలిడిటీ కంపైలర్‌లోని కంపైల్ బటన్](./remix-compile.png) + +మీరు "ఆటో కంపైల్" ఎంపికను ఎంచుకోవచ్చు, తద్వారా మీరు టెక్స్ట్ ఎడిటర్‌లో కంటెంట్‌ను సేవ్ చేసినప్పుడు కాంట్రాక్ట్ ఎల్లప్పుడూ కంపైల్ చేయబడుతుంది. + +అప్పుడు "డిప్లాయ్ అండ్ రన్ ట్రాన్సాక్షన్స్" స్క్రీన్‌కి నావిగేట్ చేయండి: + +![రీమిక్స్ టూల్‌బార్‌లోని డిప్లాయ్ ఐకాన్](./remix-deploy.png) + +మీరు "డిప్లాయ్ అండ్ రన్ ట్రాన్సాక్షన్స్" స్క్రీన్‌లో ఉన్న తర్వాత, మీ కాంట్రాక్ట్ పేరు కనిపించిందని రెండుసార్లు తనిఖీ చేసి, డిప్లాయ్ బటన్‌పై క్లిక్ చేయండి. మీరు పేజీ ఎగువన చూడగలిగినట్లుగా, ప్రస్తుత పర్యావరణం “జావాస్క్రిప్ట్ విఎం” అంటే మనం వేగంగా మరియు ఎటువంటి ఫీజులు లేకుండా పరీక్షించగలిగేలా లోకల్ టెస్ట్ బ్లాక్‌చైన్‌లో మన స్మార్ట్ కాంట్రాక్ట్‌ను అమలు చేస్తాము మరియు సంప్రదిస్తాము. + +![రీమిక్స్ సాలిడిటీ కంపైలర్‌లోని డిప్లాయ్ బటన్](./remix-deploy-button.png) + +మీరు “డిప్లాయ్” బటన్‌ను క్లిక్ చేసిన తర్వాత, మీ కాంట్రాక్ట్ దిగువన కనిపిస్తుంది. మన కాంట్రాక్ట్ కంటెంట్‌ను చూడటానికి దానిని విస్తరించడానికి ఎడమ వైపున ఉన్న బాణం గుర్తుపై క్లిక్ చేయండి. ఇది మన వేరియబుల్ `కౌంటర్`, మన `ఇన్‌క్రిమెంట్()` ఫంక్షన్ మరియు గెట్టర్ `గెట్‌కౌంటర్()`. + +మీరు `కౌంట్` లేదా `గెట్‌కౌంట్` బటన్‌పై క్లిక్ చేస్తే, అది వాస్తవానికి కాంట్రాక్ట్ యొక్క `కౌంట్` వేరియబుల్ యొక్క కంటెంట్‌ను తిరిగి పొంది, దానిని ప్రదర్శిస్తుంది. మేము ఇంకా `ఇన్‌క్రిమెంట్` ఫంక్షన్‌ను కాల్ చేయనందున, ఇది 0 ను ప్రదర్శించాలి. + +![రీమిక్స్ సాలిడిటీ కంపైలర్‌లోని ఫంక్షన్ బటన్](./remix-function-button.png) + +ఇప్పుడు బటన్‌పై క్లిక్ చేయడం ద్వారా `ఇన్‌క్రిమెంట్` ఫంక్షన్‌ను కాల్ చేద్దాం. విండో దిగువన చేసిన లావాదేవీల లాగ్‌లు కనిపించడాన్ని మీరు చూస్తారు. `ఇన్‌క్రిమెంట్` బటన్‌కు బదులుగా డేటాను తిరిగి పొందడానికి మీరు బటన్‌ను నొక్కినప్పుడు లాగ్‌లు విభిన్నంగా ఉండటాన్ని మీరు చూస్తారు. ఎందుకంటే బ్లాక్‌చైన్‌లో డేటాను చదవడానికి ఎటువంటి లావాదేవీలు (వ్రాయడం) లేదా ఫీజులు అవసరం లేదు. ఎందుకంటే బ్లాక్‌చైన్ యొక్క స్థితిని సవరించడానికి మాత్రమే లావాదేవీ చేయవలసి ఉంటుంది: + +![లావాదేవీల లాగ్](./transaction-log.png) + +మా `ఇన్‌క్రిమెంట్()` ఫంక్షన్‌ను కాల్ చేయడానికి ఒక లావాదేవీని ఉత్పత్తి చేసే ఇన్‌క్రిమెంట్ బటన్‌ను నొక్కిన తర్వాత, మనం కౌంట్ లేదా గెట్‌కౌంట్ బటన్‌లపై తిరిగి క్లిక్ చేస్తే, కౌంట్ వేరియబుల్ 0 కంటే పెద్దదిగా ఉన్న మన స్మార్ట్ కాంట్రాక్ట్ యొక్క కొత్తగా నవీకరించబడిన స్థితిని మనం చదువుతాము. + +![స్మార్ట్ కాంట్రాక్ట్ యొక్క కొత్తగా నవీకరించబడిన స్థితి](./updated-state.png) + +తదుపరి ట్యుటోరియల్‌లో, [మీ స్మార్ట్ కాంట్రాక్ట్‌లకు ఈవెంట్‌లను ఎలా జోడించవచ్చో](/developers/tutorials/logging-events-smart-contracts/) మేము కవర్ చేస్తాము. లాగింగ్ ఈవెంట్‌లు మీ స్మార్ట్ కాంట్రాక్ట్‌ను డీబగ్ చేయడానికి మరియు ఫంక్షన్‌ను కాల్ చేస్తున్నప్పుడు ఏమి జరుగుతుందో అర్థం చేసుకోవడానికి అనుకూలమైన మార్గం. diff --git a/public/content/translations/te/developers/tutorials/develop-and-test-dapps-with-a-multi-client-local-eth-testnet/index.md b/public/content/translations/te/developers/tutorials/develop-and-test-dapps-with-a-multi-client-local-eth-testnet/index.md new file mode 100644 index 00000000000..aa7a4c8e714 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/develop-and-test-dapps-with-a-multi-client-local-eth-testnet/index.md @@ -0,0 +1,372 @@ +--- +title: "స్థానిక, బహుళ-క్లయింట్ టెస్టునెట్‌లో డాప్‌ను అభివృద్ధి చేసి పరీక్షించడం ఎలా" +description: "ఈ గైడ్ ముందుగా ఒక బహుళ-క్లయింట్ స్థానిక ఇథిరియం టెస్టునెట్‌ను ప్రారంభించి, కాన్ఫిగర్ చేయడం ఎలాగో వివరిస్తుంది, ఆ తర్వాత టెస్టునెట్‌ను ఉపయోగించి ఒక డాప్‌ను డిప్లాయ్ చేసి, పరీక్షించడం ఎలాగో చూపిస్తుంది." +author: "Tedi Mitiku" +tags: + [ + "క్లయింట్లు", + "నోడ్‌లు", + "స్మార్ట్ కాంట్రాక్టులు", + "కంపోజిబిలిటీ", + "ఏకాభిప్రాయ లేయర్", + "ఎగ్జిక్యూషన్ లేయర్", + "పరీక్షించడం" + ] +skill: intermediate +lang: te +published: 2023-04-11 +--- + +## పరిచయం {#introduction} + +ఈ గైడ్ మీకు కాన్ఫిగర్ చేయగల స్థానిక ఇథిరియం టెస్టునెట్‌ను ప్రారంభించడం, దానికి ఒక స్మార్ట్ కాంట్రాక్ట్‌ను డిప్లాయ్ చేయడం, మరియు మీ డాప్‌పై పరీక్షలు అమలు చేయడానికి టెస్టునెట్‌ను ఉపయోగించే ప్రక్రియ ద్వారా మార్గనిర్దేశం చేస్తుంది. లైవ్ టెస్టునెట్ లేదా మెయిన్‌నెట్‌కు డిప్లాయ్ చేయడానికి ముందు వివిధ నెట్‌వర్క్ కాన్ఫిగరేషన్‌లకు వ్యతిరేకంగా వారి డాప్‌లను స్థానికంగా అభివృద్ధి చేసి, పరీక్షించాలనుకునే డాప్ డెవలపర్‌ల కోసం ఈ గైడ్ రూపొందించబడింది. + +ఈ గైడ్‌లో, మీరు: + +- [Kurtosis](https://www.kurtosis.com/) ఉపయోగించి [`eth-network-package`](https://github.com/kurtosis-tech/eth-network-package)తో స్థానిక ఇథిరియం టెస్టునెట్‌ను ప్రారంభించండి, +- ఒక డాప్‌ను కంపైల్ చేయడానికి, డిప్లాయ్ చేయడానికి, మరియు పరీక్షించడానికి మీ హార్డ్‌హ్యాట్ డాప్ డెవలప్‌మెంట్ వాతావరణాన్ని స్థానిక టెస్టునెట్‌కు కనెక్ట్ చేయండి, మరియు +- వివిధ నెట్‌వర్క్ కాన్ఫిగరేషన్‌లకు వ్యతిరేకంగా డెవలప్‌మెంట్ మరియు టెస్టింగ్ వర్క్‌ఫ్లోలను ప్రారంభించడానికి నోడ్ల సంఖ్య మరియు నిర్దిష్ట EL/CL క్లయింట్ జతలు వంటి పారామీటర్లతో సహా స్థానిక టెస్టునెట్‌ను కాన్ఫిగర్ చేయండి. + +### కుర్టోసిస్ అంటే ఏమిటి? {#what-is-kurtosis} + +[కుర్టోసిస్](https://www.kurtosis.com/) అనేది బహుళ-కంటైనర్ టెస్ట్ వాతావరణాలను కాన్ఫిగర్ చేయడానికి రూపొందించబడిన ఒక కంపోజబుల్ బిల్డ్ సిస్టమ్. బ్లాక్‌చైన్ టెస్టునెట్‌లు వంటి డైనమిక్ సెటప్ లాజిక్ అవసరమయ్యే పునరుత్పాదక వాతావరణాలను సృష్టించడానికి ఇది ప్రత్యేకంగా డెవలపర్‌లను అనుమతిస్తుంది. + +ఈ గైడ్‌లో, కుర్టోసిస్ eth-network-package, [`geth`](https://geth.ethereum.org/) ఎగ్జిక్యూషన్ లేయర్ (EL) క్లయింట్‌తో పాటు [`teku`](https://consensys.io/teku), [`lighthouse`](https://lighthouse.sigmaprime.io/), మరియు [`lodestar`](https://lodestar.chainsafe.io/) ఏకాభిప్రాయ లేయర్ (CL) క్లయింట్‌లకు మద్దతుతో ఒక స్థానిక ఇథిరియం టెస్టునెట్‌ను స్పిన్ అప్ చేస్తుంది. ఈ ప్యాకేజీ హార్డ్‌హ్యాట్ నెట్‌వర్క్, గనాచే, మరియు అన్విల్ వంటి ఫ్రేమ్‌వర్క్‌లలోని నెట్‌వర్క్‌లకు కాన్ఫిగర్ చేయగల మరియు కంపోజబుల్ ప్రత్యామ్నాయంగా పనిచేస్తుంది. కుర్టోసిస్ డెవలపర్‌లకు వారు ఉపయోగించే టెస్టునెట్‌లపై అధిక నియంత్రణ మరియు సౌలభ్యాన్ని అందిస్తుంది, ఇది [ఇథిరియం ఫౌండేషన్ ది మెర్జ్‌ను పరీక్షించడానికి కుర్టోసిస్‌ను ఉపయోగించడానికి](https://www.kurtosis.com/blog/testing-the-ethereum-merge) మరియు నెట్‌వర్క్ అప్‌గ్రేడ్‌లను పరీక్షించడానికి దానిని ఉపయోగించడం కొనసాగించడానికి ఒక ప్రధాన కారణం. + +## కుర్టోసిస్‌ను సెటప్ చేయడం {#setting-up-kurtosis} + +మీరు కొనసాగే ముందు, మీకు ఇవి ఉన్నాయని నిర్ధారించుకోండి: + +- మీ స్థానిక మెషీన్‌లో [డాకర్ ఇంజిన్‌ను ఇన్‌స్టాల్ చేసి, ప్రారంభించారు](https://docs.kurtosis.com/install/#i-install--start-docker) +- [కుర్టోసిస్ CLIని ఇన్‌స్టాల్ చేశారు](https://docs.kurtosis.com/install#ii-install-the-cli) (లేదా మీరు ఇప్పటికే CLIని ఇన్‌స్టాల్ చేసి ఉంటే, దానిని తాజా విడుదలకు అప్‌గ్రేడ్ చేశారు) +- [Node.js](https://nodejs.org/en), [yarn](https://classic.yarnpkg.com/lang/en/docs/install/#mac-stable), మరియు [npx](https://www.npmjs.com/package/npx) (మీ డాప్ వాతావరణం కోసం) ఇన్‌స్టాల్ చేశారు + +## స్థానిక ఇథిరియం టెస్టునెట్‌ను ప్రారంభించడం {#instantiate-testnet} + +స్థానిక ఇథిరియం టెస్టునెట్‌ను స్పిన్ అప్ చేయడానికి, రన్ చేయండి: + +```python +kurtosis --enclave local-eth-testnet run github.com/kurtosis-tech/eth-network-package +``` + +గమనిక: ఈ కమాండ్ `--enclave` ఫ్లాగ్‌ను ఉపయోగించి మీ నెట్‌వర్క్‌కు పేరు పెడుతుంది: "local-eth-testnet". + +కుర్టోసిస్ సూచనలను అర్థం చేసుకోవడానికి, ధృవీకరించడానికి, ఆపై అమలు చేయడానికి పనిచేస్తున్నప్పుడు నేపథ్యంలో తీసుకుంటున్న దశలను ప్రింట్ చేస్తుంది. చివరగా, మీరు ఈ క్రింది విధంగా ఉండే అవుట్‌పుట్‌ను చూడాలి: + +```python +INFO[2023-04-04T18:09:44-04:00] ====================================================== +INFO[2023-04-04T18:09:44-04:00] || Created enclave: local-eth-testnet || +INFO[2023-04-04T18:09:44-04:00] ====================================================== +Name: local-eth-testnet +UUID: 39372d756ae8 +Status: RUNNING +Creation Time: Tue, 04 Apr 2023 18:09:03 EDT + +========================================= Files Artifacts ========================================= +UUID Name +d4085a064230 cl-genesis-data +1c62cb792e4c el-genesis-data +bd60489b73a7 genesis-generation-config-cl +b2e593fe5228 genesis-generation-config-el +d552a54acf78 geth-prefunded-keys +5f7e661eb838 prysm-password +054e7338bb59 validator-keystore-0 + +========================================== User Services ========================================== +UUID Name Ports Status +e20f129ee0c5 cl-client-0-beacon http: 4000/tcp -> RUNNING + metrics: 5054/tcp -> + tcp-discovery: 9000/tcp -> 127.0.0.1:54263 + udp-discovery: 9000/udp -> 127.0.0.1:60470 +a8b6c926cdb4 cl-client-0-validator http: 5042/tcp -> 127.0.0.1:54267 RUNNING + metrics: 5064/tcp -> +d7b802f623e8 el-client-0 engine-rpc: 8551/tcp -> 127.0.0.1:54253 RUNNING + rpc: 8545/tcp -> 127.0.0.1:54251 + tcp-discovery: 30303/tcp -> 127.0.0.1:54254 + udp-discovery: 30303/udp -> 127.0.0.1:53834 + ws: 8546/tcp -> 127.0.0.1:54252 +514a829c0a84 prelaunch-data-generator-1680646157905431468 STOPPED +62bd62d0aa7a prelaunch-data-generator-1680646157915424301 STOPPED +05e9619e0e90 prelaunch-data-generator-1680646157922872635 STOPPED + +``` + +అభినందనలు! మీరు డాకర్ ద్వారా, ఒక CL (`lighthouse`) మరియు EL క్లయింట్ (`geth`)తో ఒక స్థానిక ఇథిరియం టెస్టునెట్‌ను ప్రారంభించడానికి కుర్టోసిస్‌ను ఉపయోగించారు. + +### సమీక్ష {#review-instantiate-testnet} + +ఈ విభాగంలో, మీరు ఒక కుర్టోసిస్ [ఎన్‌క్లేవ్](https://docs.kurtosis.com/advanced-concepts/enclaves/)లో స్థానిక ఇథిరియం టెస్టునెట్‌ను స్పిన్ అప్ చేయడానికి [`eth-network-package` GitHubలో రిమోట్‌గా హోస్ట్ చేయబడిన](https://github.com/kurtosis-tech/eth-network-package) దాన్ని ఉపయోగించమని కుర్టోసిస్‌ను నిర్దేశించే ఒక కమాండ్‌ను అమలు చేశారు. మీ ఎన్‌క్లేవ్ లోపల, మీరు "ఫైల్ ఆర్టిఫ్యాక్ట్స్" మరియు "వినియోగదారు సేవలు" రెండింటినీ కనుగొంటారు. + +మీ ఎన్‌క్లేవ్‌లోని [ఫైల్ ఆర్టిఫ్యాక్ట్స్](https://docs.kurtosis.com/advanced-concepts/files-artifacts/) EL మరియు CL క్లయింట్‌లను బూట్‌స్ట్రాప్ చేయడానికి ఉత్పత్తి చేయబడిన మరియు ఉపయోగించబడిన మొత్తం డేటాను కలిగి ఉంటాయి. ఈ [డాకర్ ఇమేజ్](https://github.com/ethpandaops/ethereum-genesis-generator) నుండి నిర్మించిన `prelaunch-data-generator` సేవను ఉపయోగించి డేటా సృష్టించబడింది + +వినియోగదారు సేవలు మీ ఎన్‌క్లేవ్‌లో పనిచేస్తున్న అన్ని కంటైనరైజ్డ్ సేవలను ప్రదర్శిస్తాయి. ఒక EL క్లయింట్ మరియు ఒక CL క్లయింట్ రెండింటినీ కలిగి ఉన్న ఒకే నోడ్ సృష్టించబడిందని మీరు గమనిస్తారు. + +## మీ డాప్ డెవలప్‌మెంట్ వాతావరణాన్ని స్థానిక ఇథిరియం టెస్టునెట్‌కు కనెక్ట్ చేయండి {#connect-your-dapp} + +### డాప్ డెవలప్‌మెంట్ వాతావరణాన్ని సెటప్ చేయండి {#set-up-dapp-env} + +ఇప్పుడు మీకు రన్నింగ్‌లో ఉన్న స్థానిక టెస్టునెట్ ఉంది, మీ స్థానిక టెస్టునెట్‌ను ఉపయోగించడానికి మీ డాప్ డెవలప్‌మెంట్ వాతావరణాన్ని కనెక్ట్ చేయవచ్చు. ఈ గైడ్‌లో మీ స్థానిక టెస్టునెట్‌కు ఒక బ్లాక్‌జాక్ డాప్‌ను డిప్లాయ్ చేయడానికి హార్డ్‌హ్యాట్ ఫ్రేమ్‌వర్క్ ఉపయోగించబడుతుంది. + +మీ డాప్ డెవలప్‌మెంట్ వాతావరణాన్ని సెటప్ చేయడానికి, మా నమూనా డాప్‌ను కలిగి ఉన్న రిపోజిటరీని క్లోన్ చేసి, దాని డిపెండెన్సీలను ఇన్‌స్టాల్ చేయడానికి, రన్ చేయండి: + +```python +git clone https://github.com/kurtosis-tech/awesome-kurtosis.git && cd awesome-kurtosis/smart-contract-example && yarn +``` + +ఇక్కడ ఉపయోగించిన [smart-contract-example](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/smart-contract-example) ఫోల్డర్ [హార్డ్‌హ్యాట్](https://hardhat.org/) ఫ్రేమ్‌వర్క్‌ను ఉపయోగించే ఒక డాప్ డెవలపర్ కోసం సాధారణ సెటప్‌ను కలిగి ఉంది: + +- [`contracts/`](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/smart-contract-example/contracts) ఒక బ్లాక్‌జాక్ డాప్ కోసం కొన్ని సాధారణ స్మార్ట్ కాంట్రాక్ట్‌లను కలిగి ఉంది +- [`scripts/`](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/smart-contract-example/scripts) మీ స్థానిక ఇథిరియం నెట్‌వర్క్‌కు ఒక టోకెన్ కాంట్రాక్ట్‌ను డిప్లాయ్ చేయడానికి ఒక స్క్రిప్ట్‌ను కలిగి ఉంది +- [`test/`](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/smart-contract-example/test) మా బ్లాక్‌జాక్ డాప్‌లోని ప్రతి ప్లేయర్‌కు 1000 టోకెన్లు మింట్ చేయబడ్డాయని నిర్ధారించడానికి మీ టోకెన్ కాంట్రాక్ట్ కోసం ఒక సాధారణ .js టెస్ట్‌ను కలిగి ఉంది +- [`hardhat.config.ts`](https://github.com/kurtosis-tech/awesome-kurtosis/blob/main/smart-contract-example/hardhat.config.ts) మీ హార్డ్‌హ్యాట్ సెటప్‌ను కాన్ఫిగర్ చేస్తుంది + +### స్థానిక టెస్టునెట్‌ను ఉపయోగించడానికి హార్డ్‌హ్యాట్‌ను కాన్ఫిగర్ చేయండి {#configure-hardhat} + +మీ డాప్ డెవలప్‌మెంట్ వాతావరణం సెటప్ చేయబడిన తర్వాత, మీరు ఇప్పుడు కుర్టోసిస్ ఉపయోగించి సృష్టించబడిన స్థానిక ఇథిరియం టెస్టునెట్‌ను ఉపయోగించడానికి హార్డ్‌హ్యాట్‌ను కనెక్ట్ చేస్తారు. దీనిని సాధించడానికి, మీ `hardhat.config.ts` కాన్ఫిగ్ ఫైల్‌లోని `localnet` స్ట్రక్ట్‌లో `<$YOUR_PORT>`ను ఏదైనా `el-client-` సేవ నుండి వచ్చిన rpc uri అవుట్‌పుట్ పోర్ట్‌తో భర్తీ చేయండి. ఈ నమూనా సందర్భంలో, పోర్ట్ `64248` అవుతుంది. మీ పోర్ట్ భిన్నంగా ఉంటుంది. + +`hardhat.config.ts`లో ఉదాహరణ: + +```js +localnet: { +url: 'http://127.0.0.1:<$YOUR_PORT>',// TODO: ETH నెట్‌వర్క్ కుర్టోసిస్ ప్యాకేజీ ద్వారా ఉత్పత్తి చేయబడిన నోడ్ URI యొక్క పోర్ట్‌తో $YOUR_PORTను భర్తీ చేయండి + +// ఇవి eth-network-package ద్వారా సృష్టించబడిన ప్రీఫండెడ్ టెస్ట్ ఖాతాలతో అనుబంధించబడిన ప్రైవేట్ కీలు +// +accounts: [ + "ef5177cd0b6b21c87db5a0bf35d4084a8a57a9d6a064f86d51ac85f2b873a4e2", + "48fcc39ae27a0e8bf0274021ae6ebd8fe4a0e12623d61464c498900b28feb567", + "7988b3a148716ff800414935b305436493e1f25237a2a03e5eebc343735e2f31", + "b3c409b6b0b3aa5e65ab2dc1930534608239a478106acf6f3d9178e9f9b00b35", + "df9bb6de5d3dc59595bcaa676397d837ff49441d211878c024eabda2cd067c9f", + "7da08f856b5956d40a72968f93396f6acff17193f013e8053f6fbb6c08c194d6", + ], +}, +``` + +మీరు మీ ఫైల్‌ను సేవ్ చేసిన తర్వాత, మీ హార్డ్‌హ్యాట్ డాప్ డెవలప్‌మెంట్ వాతావరణం ఇప్పుడు మీ స్థానిక ఇథిరియం టెస్టునెట్‌కు కనెక్ట్ చేయబడింది! మీ టెస్టునెట్ పనిచేస్తోందో లేదో మీరు రన్ చేయడం ద్వారా ధృవీకరించుకోవచ్చు: + +```python +npx hardhat balances --network localnet +``` + +అవుట్‌పుట్ ఈ విధంగా ఉండాలి: + +```python +0x878705ba3f8Bc32FCf7F4CAa1A35E72AF65CF766 has balance 10000000000000000000000000 +0x4E9A3d9D1cd2A2b2371b8b3F489aE72259886f1A has balance 10000000000000000000000000 +0xdF8466f277964Bb7a0FFD819403302C34DCD530A has balance 10000000000000000000000000 +0x5c613e39Fc0Ad91AfDA24587e6f52192d75FBA50 has balance 10000000000000000000000000 +0x375ae6107f8cC4cF34842B71C6F746a362Ad8EAc has balance 10000000000000000000000000 +0x1F6298457C5d76270325B724Da5d1953923a6B88 has balance 10000000000000000000000000 +``` + +హార్డ్‌హ్యాట్ మీ స్థానిక టెస్టునెట్‌ను ఉపయోగిస్తోందని మరియు `eth-network-package` ద్వారా సృష్టించబడిన ప్రీ-ఫండెడ్ ఖాతాలను గుర్తిస్తోందని ఇది నిర్ధారిస్తుంది. + +### మీ డాప్‌ను స్థానికంగా డిప్లాయ్ చేసి పరీక్షించండి {#deploy-and-test-dapp} + +డాప్ డెవలప్‌మెంట్ వాతావరణం స్థానిక ఇథిరియం టెస్టునెట్‌కు పూర్తిగా కనెక్ట్ చేయబడినందున, మీరు ఇప్పుడు స్థానిక టెస్టునెట్‌ను ఉపయోగించి మీ డాప్‌పై డెవలప్‌మెంట్ మరియు టెస్టింగ్ వర్క్‌ఫ్లోలను అమలు చేయవచ్చు. + +స్థానిక ప్రోటోటైపింగ్ మరియు డెవలప్‌మెంట్ కోసం `ChipToken.sol` స్మార్ట్ కాంట్రాక్ట్‌ను కంపైల్ చేసి, డిప్లాయ్ చేయడానికి, రన్ చేయండి: + +```python +npx hardhat compile +npx hardhat run scripts/deploy.ts --network localnet +``` + +అవుట్‌పుట్ ఈ విధంగా ఉండాలి: + +```python +చిప్‌టోకెన్ ఇక్కడ డిప్లాయ్ చేయబడింది: 0xAb2A01BC351770D09611Ac80f1DE076D56E0487d +``` + +మా బ్లాక్‌జాక్ డాప్‌లోని ప్రతి ప్లేయర్‌కు 1000 టోకెన్లు మింట్ చేయబడ్డాయని నిర్ధారించడానికి ఇప్పుడు మీ స్థానిక డాప్‌పై `simple.js` టెస్ట్‌ను రన్ చేసి ప్రయత్నించండి: + +అవుట్‌పుట్ ఈ విధంగా ఉండాలి: + +```python +npx hardhat test --network localnet +``` + +అవుట్‌పుట్ ఈ విధంగా ఉండాలి: + +```python +చిప్‌టోకెన్ + మింట్ + ✔ ప్లేయర్ వన్ కోసం 1000 చిప్‌లను మింట్ చేయాలి + + 1 పాస్ అయ్యింది (654ms) +``` + +### సమీక్ష {#review-dapp-workflows} + +ఈ సమయంలో, మీరు ఇప్పుడు ఒక డాప్ డెవలప్‌మెంట్ వాతావరణాన్ని సెటప్ చేశారు, దానిని కుర్టోసిస్ ద్వారా సృష్టించబడిన స్థానిక ఇథిరియం నెట్‌వర్క్‌కు కనెక్ట్ చేశారు, మరియు మీ డాప్‌పై ఒక సాధారణ టెస్ట్‌ను కంపైల్ చేసి, డిప్లాయ్ చేసి, రన్ చేశారు. + +ఇప్పుడు మారుతున్న నెట్‌వర్క్ కాన్ఫిగరేషన్‌ల కింద మన డాప్‌లను పరీక్షించడానికి అంతర్లీన నెట్‌వర్క్‌ను ఎలా కాన్ఫిగర్ చేయవచ్చో అన్వేషిద్దాం. + +## స్థానిక ఇథిరియం టెస్టునెట్‌ను కాన్ఫిగర్ చేయడం {#configure-testnet} + +### క్లయింట్ కాన్ఫిగరేషన్‌లు మరియు నోడ్ల సంఖ్యను మార్చడం {#configure-client-config-and-num-nodes} + +మీరు అభివృద్ధి చేయాలనుకుంటున్న లేదా పరీక్షించాలనుకుంటున్న దృశ్యం మరియు నిర్దిష్ట నెట్‌వర్క్ కాన్ఫిగరేషన్‌పై ఆధారపడి, మీ స్థానిక ఇథిరియం టెస్టునెట్‌ను విభిన్న EL మరియు CL క్లయింట్ జతలను, అలాగే మారుతున్న సంఖ్యలో నోడ్లను ఉపయోగించడానికి కాన్ఫిగర్ చేయవచ్చు. దీని అర్థం, ఒకసారి సెటప్ చేసిన తర్వాత, మీరు ఒక అనుకూలీకరించిన స్థానిక టెస్టునెట్‌ను స్పిన్ అప్ చేసి, అదే వర్క్‌ఫ్లోలను (డిప్లాయ్‌మెంట్, టెస్ట్‌లు, మొదలైనవి) అమలు చేయడానికి దాన్ని ఉపయోగించవచ్చు. అన్నీ ఊహించిన విధంగా పనిచేస్తాయని నిర్ధారించుకోవడానికి వివిధ నెట్‌వర్క్ కాన్ఫిగరేషన్‌ల కింద. మీరు మార్పు చేయగల ఇతర పారామీటర్ల గురించి మరింత తెలుసుకోవడానికి, ఈ లింక్‌ను సందర్శించండి. + +ఒకసారి ప్రయత్నించి చూడండి! మీరు JSON ఫైల్ ద్వారా `eth-network-package`కు వివిధ కాన్ఫిగరేషన్ ఎంపికలను పంపవచ్చు. ఈ నెట్‌వర్క్ పారామీటర్ల JSON ఫైల్ స్థానిక ఇథిరియం నెట్‌వర్క్‌ను సెటప్ చేయడానికి కుర్టోసిస్ ఉపయోగించే నిర్దిష్ట కాన్ఫిగరేషన్‌లను అందిస్తుంది. + +డిఫాల్ట్ కాన్ఫిగరేషన్ ఫైల్‌ను తీసుకుని, విభిన్న EL/CL జతలతో రెండు నోడ్‌లను స్పిన్ అప్ చేయడానికి దాన్ని సవరించండి: + +- `geth`/`lighthouse`తో నోడ్ 1 +- `geth`/`lodestar`తో నోడ్ 2 +- `geth`/`teku`తో నోడ్ 3 + +ఈ కాన్ఫిగరేషన్ మీ డాప్‌ను పరీక్షించడం కోసం ఇథిరియం నోడ్ ఇంప్లిమెంటేషన్‌ల యొక్క విభిన్న నెట్‌వర్క్‌ను సృష్టిస్తుంది. మీ కాన్ఫిగరేషన్ ఫైల్ ఇప్పుడు ఇలా కనిపించాలి: + +```yaml +{ + "participants": + [ + { + "el_client_type": "geth", + "el_client_image": "", + "el_client_log_level": "", + "cl_client_type": "lighthouse", + "cl_client_image": "", + "cl_client_log_level": "", + "beacon_extra_params": [], + "el_extra_params": [], + "validator_extra_params": [], + "builder_network_params": null, + }, + { + "el_client_type": "geth", + "el_client_image": "", + "el_client_log_level": "", + "cl_client_type": "lodestar", + "cl_client_image": "", + "cl_client_log_level": "", + "beacon_extra_params": [], + "el_extra_params": [], + "validator_extra_params": [], + "builder_network_params": null, + }, + { + "el_client_type": "geth", + "el_client_image": "", + "el_client_log_level": "", + "cl_client_type": "teku", + "cl_client_image": "", + "cl_client_log_level": "", + "beacon_extra_params": [], + "el_extra_params": [], + "validator_extra_params": [], + "builder_network_params": null, + }, + ], + "network_params": + { + "preregistered_validator_keys_mnemonic": "giant issue aisle success illegal bike spike question tent bar rely arctic volcano long crawl hungry vocal artwork sniff fantasy very lucky have athlete", + "num_validator_keys_per_node": 64, + "network_id": "3151908", + "deposit_contract_address": "0x4242424242424242424242424242424242424242", + "seconds_per_slot": 12, + "genesis_delay": 120, + "capella_fork_epoch": 5, + }, +} +``` + +ప్రతి `participants` స్ట్రక్ట్ నెట్‌వర్క్‌లోని ఒక నోడ్‌కు మ్యాప్ అవుతుంది, కాబట్టి 3 `participants` స్ట్రక్ట్‌లు మీ నెట్‌వర్క్‌లో 3 నోడ్‌లను స్పిన్ అప్ చేయమని కుర్టోసిస్‌కు చెబుతాయి. ప్రతి `participants` స్ట్రక్ట్ ఆ నిర్దిష్ట నోడ్ కోసం ఉపయోగించిన EL మరియు CL జతను పేర్కొనడానికి మిమ్మల్ని అనుమతిస్తుంది. + +ప్రతి నోడ్ కోసం జెనెసిస్ ఫైల్‌లను సృష్టించడానికి ఉపయోగించే నెట్‌వర్క్ సెట్టింగ్‌లను, అలాగే నెట్‌వర్క్ యొక్క స్లాట్‌కు సెకన్లు వంటి ఇతర సెట్టింగ్‌లను `network_params` స్ట్రక్ట్ కాన్ఫిగర్ చేస్తుంది. + +మీ సవరించిన పారామీటర్ల ఫైల్‌ను మీరు కోరుకున్న ఏ డైరెక్టరీలోనైనా సేవ్ చేయండి (క్రింది ఉదాహరణలో, ఇది డెస్క్‌టాప్‌లో సేవ్ చేయబడింది) ఆపై మీ కుర్టోసిస్ ప్యాకేజీని అమలు చేయడానికి దీన్ని ఉపయోగించండి: + +```python +kurtosis clean -a && kurtosis run --enclave local-eth-testnet github.com/kurtosis-tech/eth-network-package "$(cat ~/eth-network-params.json)" +``` + +గమనిక: పాత టెస్టునెట్ మరియు దాని కంటెంట్‌లను నాశనం చేసి, కొత్తదాన్ని ప్రారంభించే ముందు `kurtosis clean -a` కమాండ్ ఇక్కడ కుర్టోసిస్‌కు సూచించడానికి ఉపయోగించబడుతుంది. + +మళ్ళీ, కుర్టోసిస్ కొంత సమయం పనిచేసి, జరుగుతున్న వ్యక్తిగత దశలను ప్రింట్ చేస్తుంది. చివరికి, అవుట్‌పుట్ ఈ విధంగా ఉండాలి: + +```python +Starlark code successfully run. No output was returned. +INFO[2023-04-07T11:43:16-04:00] ========================================================== +INFO[2023-04-07T11:43:16-04:00] || Created enclave: local-eth-testnet || +INFO[2023-04-07T11:43:16-04:00] ========================================================== +Name: local-eth-testnet +UUID: bef8c192008e +Status: RUNNING +Creation Time: Fri, 07 Apr 2023 11:41:58 EDT + +========================================= Files Artifacts ========================================= +UUID Name +cc495a8e364a cl-genesis-data +7033fcdb5471 el-genesis-data +a3aef43fc738 genesis-generation-config-cl +8e968005fc9d genesis-generation-config-el +3182cca9d3cd geth-prefunded-keys +8421166e234f prysm-password +d9e6e8d44d99 validator-keystore-0 +23f5ba517394 validator-keystore-1 +4d28dea40b5c validator-keystore-2 + +========================================== User Services ========================================== +UUID Name Ports Status +485e6fde55ae cl-client-0-beacon http: 4000/tcp -> http://127.0.0.1:65010 RUNNING + metrics: 5054/tcp -> http://127.0.0.1:65011 + tcp-discovery: 9000/tcp -> 127.0.0.1:65012 + udp-discovery: 9000/udp -> 127.0.0.1:54455 +73739bd158b2 cl-client-0-validator http: 5042/tcp -> 127.0.0.1:65016 RUNNING + metrics: 5064/tcp -> http://127.0.0.1:65017 +1b0a233cd011 cl-client-1-beacon http: 4000/tcp -> 127.0.0.1:65021 RUNNING + metrics: 8008/tcp -> 127.0.0.1:65023 + tcp-discovery: 9000/tcp -> 127.0.0.1:65024 + udp-discovery: 9000/udp -> 127.0.0.1:56031 + validator-metrics: 5064/tcp -> 127.0.0.1:65022 +949b8220cd53 cl-client-1-validator http: 4000/tcp -> 127.0.0.1:65028 RUNNING + metrics: 8008/tcp -> 127.0.0.1:65030 + tcp-discovery: 9000/tcp -> 127.0.0.1:65031 + udp-discovery: 9000/udp -> 127.0.0.1:60784 + validator-metrics: 5064/tcp -> 127.0.0.1:65029 +c34417bea5fa cl-client-2 http: 4000/tcp -> 127.0.0.1:65037 RUNNING + metrics: 8008/tcp -> 127.0.0.1:65035 + tcp-discovery: 9000/tcp -> 127.0.0.1:65036 + udp-discovery: 9000/udp -> 127.0.0.1:63581 +e19738e6329d el-client-0 engine-rpc: 8551/tcp -> 127.0.0.1:64986 RUNNING + rpc: 8545/tcp -> 127.0.0.1:64988 + tcp-discovery: 30303/tcp -> 127.0.0.1:64987 + udp-discovery: 30303/udp -> 127.0.0.1:55706 + ws: 8546/tcp -> 127.0.0.1:64989 +e904687449d9 el-client-1 engine-rpc: 8551/tcp -> 127.0.0.1:64993 RUNNING + rpc: 8545/tcp -> 127.0.0.1:64995 + tcp-discovery: 30303/tcp -> 127.0.0.1:64994 + udp-discovery: 30303/udp -> 127.0.0.1:58096 + ws: 8546/tcp -> 127.0.0.1:64996 +ad6f401126fa el-client-2 engine-rpc: 8551/tcp -> 127.0.0.1:65003 RUNNING + rpc: 8545/tcp -> 127.0.0.1:65001 + tcp-discovery: 30303/tcp -> 127.0.0.1:65000 + udp-discovery: 30303/udp -> 127.0.0.1:57269 + ws: 8546/tcp -> 127.0.0.1:65002 +12d04a9dbb69 prelaunch-data-generator-1680882122181135513 STOPPED +5b45f9c0504b prelaunch-data-generator-1680882122192182847 STOPPED +3d4aaa75e218 prelaunch-data-generator-1680882122201668972 STOPPED +``` + +అభినందనలు! మీరు మీ స్థానిక టెస్టునెట్‌ను 1కి బదులుగా 3 నోడ్‌లను కలిగి ఉండేలా విజయవంతంగా కాన్ఫిగర్ చేశారు. మీ డాప్‌పై (డిప్లాయ్ & టెస్ట్) మీరు ఇంతకు ముందు చేసిన అవే వర్క్‌ఫ్లోలను అమలు చేయడానికి, మీ కొత్త, 3-నోడ్ స్థానిక టెస్టునెట్‌లోని ఏదైనా `el-client-` సేవ నుండి వచ్చిన rpc uri అవుట్‌పుట్ పోర్ట్‌తో మీ `hardhat.config.ts` కాన్ఫిగ్ ఫైల్‌లోని `localnet` స్ట్రక్ట్‌లో `<$YOUR_PORT>`ను భర్తీ చేయడం ద్వారా మేము ఇంతకు ముందు చేసిన అవే ఆపరేషన్‌లను చేయండి. + +## ముగింపు {#conclusion} + +అంతే! ఈ చిన్న గైడ్‌ను సంగ్రహంగా చెప్పాలంటే, మీరు: + +- కుర్టోసిస్ ఉపయోగించి డాకర్ ద్వారా స్థానిక ఇథిరియం టెస్టునెట్‌ను సృష్టించారు +- మీ స్థానిక డాప్ డెవలప్‌మెంట్ వాతావరణాన్ని స్థానిక ఇథిరియం నెట్‌వర్క్‌కు కనెక్ట్ చేశారు +- ఒక డాప్‌ను డిప్లాయ్ చేసి, స్థానిక ఇథిరియం నెట్‌వర్క్‌లో దానిపై ఒక సాధారణ టెస్ట్‌ను అమలు చేశారు +- అంతర్లీన ఇథిరియం నెట్‌వర్క్‌ను 3 నోడ్‌లను కలిగి ఉండేలా కాన్ఫిగర్ చేశారు + +మీకు ఏది బాగా జరిగింది, దేనిని మెరుగుపరచవచ్చు, లేదా మీ ఏవైనా ప్రశ్నలకు సమాధానం ఇవ్వడానికి మేము మీ నుండి వినడానికి ఇష్టపడతాము. [GitHub](https://github.com/kurtosis-tech/kurtosis/issues/new/choose) ద్వారా లేదా [మాకు ఇమెయిల్](mailto:feedback@kurtosistech.com) చేయడం ద్వారా మమ్మల్ని సంప్రదించడానికి సంకోచించకండి! + +### ఇతర ఉదాహరణలు మరియు గైడ్‌లు {#other-examples-guides} + +మా [క్విక్‌స్టార్ట్](https://docs.kurtosis.com/quickstart) (ఇక్కడ మీరు పైన ఒక పోస్ట్‌గ్రెస్ డేటాబేస్ మరియు APIని నిర్మిస్తారు) మరియు మా [awesome-kurtosis రిపోజిటరీ](https://github.com/kurtosis-tech/awesome-kurtosis)లోని మా ఇతర ఉదాహరణలను చూడమని మేము మిమ్మల్ని ప్రోత్సహిస్తున్నాము, ఇక్కడ మీరు కొన్ని గొప్ప ఉదాహరణలను కనుగొంటారు, వీటిలో ప్యాకేజీలు కూడా ఉన్నాయి: + +- అదే స్థానిక ఇథిరియం టెస్టునెట్‌ను స్పిన్ అప్ చేయడం](https://github.com/kurtosis-tech/eth2-package), కానీ లావాదేవీల స్పామర్ (లావాదేవీలను అనుకరించడానికి), ఒక ఫోర్క్ మానిటర్, మరియు కనెక్ట్ చేయబడిన గ్రాఫానా మరియు ప్రోమేతియస్ ఇన్‌స్టాన్స్ వంటి అదనపు సేవలు కనెక్ట్ చేయబడి ఉంటాయి +- అదే స్థానిక ఇథిరియం నెట్‌వర్క్‌పై [సబ్-నెట్‌వర్కింగ్ టెస్ట్](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/ethereum-network-partition-test) నిర్వహించడం diff --git a/public/content/translations/te/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md b/public/content/translations/te/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md new file mode 100644 index 00000000000..7e6d3ba730d --- /dev/null +++ b/public/content/translations/te/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md @@ -0,0 +1,144 @@ +--- +title: "కాంట్రాక్ట్ పరిమాణ పరిమితిని ఎదుర్కోవడానికి కాంట్రాక్టులను తగ్గించడం" +description: "మీ స్మార్ట్ కాంట్రాక్టులు చాలా పెద్దవి కాకుండా నిరోధించడానికి మీరు ఏమి చేయవచ్చు?" +author: Markus Waas +lang: te +tags: [ "దృఢత్వం", "స్మార్ట్ కాంట్రాక్టులు", "స్టోరేజ్" ] +skill: intermediate +published: 2020-06-26 +source: soliditydeveloper.com +sourceUrl: https://soliditydeveloper.com/max-contract-size +--- + +## పరిమితి ఎందుకు ఉంది? {#why-is-there-a-limit} + +[నవంబర్ 22, 2016](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon/) నాడు, Spurious Dragon హార్డ్-ఫోర్క్ [EIP-170](https://eips.ethereum.org/EIPS/eip-170)ని ప్రవేశపెట్టింది, ఇది స్మార్ట్ కాంట్రాక్ట్ పరిమాణ పరిమితిని 24.576 kbగా చేర్చింది. ఒక Solidity డెవలపర్‌గా మీకు దీని అర్థం, మీరు మీ కాంట్రాక్టుకు మరింత ఎక్కువ కార్యాచరణను జోడించినప్పుడు, ఏదో ఒక సమయంలో మీరు పరిమితిని చేరుకుంటారు మరియు మోహరించేటప్పుడు ఈ లోపాన్ని చూస్తారు: + +`హెచ్చరిక: కాంట్రాక్ట్ కోడ్ పరిమాణం 24576 బైట్‌లను మించిపోయింది (Spurious Dragonలో ప్రవేశపెట్టిన పరిమితి).` `ఈ కాంట్రాక్ట్ Mainnetలో మోహరించదగినది కాకపోవచ్చు.` `ఆప్టిమైజర్‌ను ప్రారంభించడం (తక్కువ "runs" విలువతో!), రివర్ట్ స్ట్రింగ్‌లను ఆపివేయడం లేదా లైబ్రరీలను ఉపయోగించడం పరిగణించండి.` + +ఈ పరిమితి డినయల్-ఆఫ్-సర్వీస్ (DOS) దాడులను నిరోధించడానికి ప్రవేశపెట్టబడింది. ఒక కాంట్రాక్టుకు చేసే ఏ కాల్ అయినా గ్యాస్ పరంగా చాలా చౌకగా ఉంటుంది. అయినప్పటికీ, Ethereum నోడ్‌ల కోసం కాంట్రాక్ట్ కాల్ యొక్క ప్రభావం పిలిచే కాంట్రాక్ట్ కోడ్ పరిమాణాన్ని బట్టి (డిస్క్ నుండి కోడ్‌ను చదవడం, కోడ్‌ను ముందుగా ప్రాసెస్ చేయడం, మెర్కిల్ ప్రూఫ్‌కు డేటాను జోడించడం) అసమానంగా పెరుగుతుంది. దాడి చేసేవారికి ఇతరుల కోసం చాలా పని చేయడానికి కొన్ని వనరులు అవసరమయ్యే అటువంటి పరిస్థితి మీకు ఉన్నప్పుడల్లా, మీకు DOS దాడులకు ఆస్కారం ఉంటుంది. + +నిజానికి ఇది అంత పెద్ద సమస్య కాదు, ఎందుకంటే ఒక సహజమైన కాంట్రాక్ట్ పరిమాణ పరిమితి బ్లాక్ గ్యాస్ పరిమితి. స్పష్టంగా, కాంట్రాక్ట్ యొక్క అన్ని బైట్‌కోడ్‌లను కలిగి ఉన్న లావాదేవీలో ఒక కాంట్రాక్టును మోహరించాలి. మీరు ఒక బ్లాక్‌లో ఆ ఒక్క లావాదేవీని మాత్రమే చేర్చినట్లయితే, మీరు ఆ గ్యాస్ మొత్తాన్ని ఉపయోగించుకోవచ్చు, కానీ అది అనంతం కాదు. [లండన్ అప్‌గ్రేడ్](/ethereum-forks/#london) నుండి, నెట్‌వర్క్ డిమాండ్‌ను బట్టి బ్లాక్ గ్యాస్ పరిమితి 15M మరియు 30M యూనిట్ల మధ్య మారుతూ ఉంది. + +కింది వాటిలో వాటి సంభావ్య ప్రభావం ఆధారంగా కొన్ని పద్ధతులను చూద్దాం. బరువు తగ్గడం పరంగా దీని గురించి ఆలోచించండి. ఎవరైనా వారి లక్ష్య బరువును (మా విషయంలో 24kb) చేరుకోవడానికి ఉత్తమ వ్యూహం మొదట పెద్ద ప్రభావ పద్ధతులపై దృష్టి పెట్టడం. చాలా సందర్భాలలో కేవలం మీ ఆహారాన్ని సరిచేసుకోవడం ద్వారా మీరు అక్కడికి చేరుకుంటారు, కానీ కొన్నిసార్లు మీకు కొంచెం ఎక్కువ అవసరం. అప్పుడు మీరు కొంత వ్యాయామం (మధ్యస్థ ప్రభావం) లేదా సప్లిమెంట్లను (చిన్న ప్రభావం) కూడా జోడించవచ్చు. + +## పెద్ద ప్రభావం {#big-impact} + +### మీ కాంట్రాక్టులను వేరు చేయండి {#separate-your-contracts} + +ఇది ఎల్లప్పుడూ మీ మొదటి విధానం అయి ఉండాలి. మీరు కాంట్రాక్టును బహుళ చిన్నవిగా ఎలా వేరు చేయవచ్చు? ఇది సాధారణంగా మీ కాంట్రాక్టుల కోసం ఒక మంచి నిర్మాణాన్ని రూపొందించమని మిమ్మల్ని బలవంతం చేస్తుంది. కోడ్ చదవగలిగే దృక్కోణం నుండి చిన్న కాంట్రాక్టులకు ఎల్లప్పుడూ ప్రాధాన్యత ఇవ్వబడుతుంది. కాంట్రాక్టులను విభజించడానికి, మిమ్మల్ని మీరు ప్రశ్నించుకోండి: + +- ఏ ఫంక్షన్‌లు కలిసి ఉంటాయి? ప్రతి ఫంక్షన్‌ల సెట్ దాని స్వంత కాంట్రాక్టులో ఉత్తమంగా ఉండవచ్చు. +- ఏ ఫంక్షన్‌లకు కాంట్రాక్ట్ స్థితిని చదవాల్సిన అవసరం లేదు లేదా స్థితి యొక్క నిర్దిష్ట ఉపసమితి మాత్రమే అవసరం? +- మీరు స్టోరేజ్ మరియు కార్యాచరణను విభజించగలరా? + +### లైబ్రరీలు {#libraries} + +స్టోరేజ్ నుండి కార్యాచరణ కోడ్‌ను దూరంగా తరలించడానికి ఒక సులభమైన మార్గం [లైబ్రరీ](https://solidity.readthedocs.io/en/v0.6.10/contracts.html#libraries)ని ఉపయోగించడం. లైబ్రరీ ఫంక్షన్‌లను అంతర్గతంగా ప్రకటించవద్దు, ఎందుకంటే అవి కంపైలేషన్ సమయంలో నేరుగా [కాంట్రాక్టుకు జోడించబడతాయి](https://ethereum.stackexchange.com/questions/12975/are-internal-functions-in-libraries-not-covered-by-linking). కానీ మీరు పబ్లిక్ ఫంక్షన్‌లను ఉపయోగిస్తే, అవి వాస్తవానికి వేరే లైబ్రరీ కాంట్రాక్టులో ఉంటాయి. లైబ్రరీల వినియోగాన్ని మరింత సౌకర్యవంతంగా చేయడానికి [using for](https://solidity.readthedocs.io/en/v0.6.10/contracts.html#using-for)ని పరిగణించండి. + +### ప్రాక్సీలు {#proxies} + +మరింత అధునాతన వ్యూహం ప్రాక్సీ వ్యవస్థ. లైబ్రరీలు వెనుక `DELEGATECALL`ని ఉపయోగిస్తాయి, ఇది పిలుపు కాంట్రాక్ట్ స్థితితో మరొక కాంట్రాక్ట్ ఫంక్షన్‌ను అమలు చేస్తుంది. ప్రాక్సీ సిస్టమ్‌ల గురించి మరింత తెలుసుకోవడానికి [ఈ బ్లాగ్ పోస్ట్](https://hackernoon.com/how-to-make-smart-contracts-upgradable-2612e771d5a2)ని చూడండి. అవి మీకు మరింత కార్యాచరణను అందిస్తాయి, ఉదాహరణకు, అవి అప్‌గ్రేడబిలిటీని ప్రారంభిస్తాయి, కానీ అవి చాలా సంక్లిష్టతను కూడా జోడిస్తాయి. ఏ కారణం చేతనైనా అది మీ ఏకైక ఎంపిక అయితే తప్ప, కాంట్రాక్ట్ పరిమాణాలను తగ్గించడానికి మాత్రమే నేను వాటిని జోడించను. + +## మధ్యస్థ ప్రభావం {#medium-impact} + +### ఫంక్షన్‌లను తొలగించండి {#remove-functions} + +ఇది స్పష్టంగా ఉండాలి. ఫంక్షన్‌లు కాంట్రాక్ట్ పరిమాణాన్ని కొద్దిగా పెంచుతాయి. + +- **External**: చాలా సార్లు మేము సౌలభ్యం కారణాల కోసం చాలా వీక్షణ ఫంక్షన్‌లను జోడిస్తాము. మీరు పరిమాణ పరిమితిని తాకే వరకు అది పూర్తిగా సరైనదే. అప్పుడు మీరు ఖచ్చితంగా అవసరమైనవి తప్ప మిగిలినవన్నీ తొలగించడం గురించి నిజంగా ఆలోచించాలనుకోవచ్చు. +- **Internal**: మీరు అంతర్గత/ప్రైవేట్ ఫంక్షన్‌లను కూడా తొలగించవచ్చు మరియు ఫంక్షన్ ఒక్కసారి మాత్రమే పిలువబడినంత కాలం కోడ్‌ను ఇన్‌లైన్ చేయవచ్చు. + +### అదనపు వేరియబుల్స్‌ను నివారించండి {#avoid-additional-variables} + +```solidity +function get(uint id) returns (address,address) { + MyStruct memory myStruct = myStructs[id]; + return (myStruct.addr1, myStruct.addr2); +} +``` + +```solidity +function get(uint id) returns (address,address) { + return (myStructs[id].addr1, myStructs[id].addr2); +} +``` + +ఇలాంటి ఒక సాధారణ మార్పు **0.28kb** తేడాను కలిగిస్తుంది. మీ కాంట్రాక్టులలో ఇలాంటి అనేక పరిస్థితులను మీరు కనుగొనే అవకాశాలు ఉన్నాయి మరియు అవి నిజంగా గణనీయమైన మొత్తాలను జోడించగలవు. + +### లోప సందేశాన్ని సంక్షిప్తీకరించండి {#shorten-error-message} + +సుదీర్ఘమైన రివర్ట్ సందేశాలు మరియు ముఖ్యంగా అనేక విభిన్న రివర్ట్ సందేశాలు కాంట్రాక్టును ఉబ్బిపోయేలా చేస్తాయి. బదులుగా చిన్న లోప కోడ్‌లను ఉపయోగించండి మరియు వాటిని మీ కాంట్రాక్టులో డీకోడ్ చేయండి. ఒక పొడవైన సందేశం చాలా చిన్నదిగా మారవచ్చు: + +```solidity +require(msg.sender == owner, "ఈ కాంట్రాక్ట్ యజమాని మాత్రమే ఈ ఫంక్షన్‌ను కాల్ చేయగలరు"); +``` + +```solidity +require(msg.sender == owner, "OW1"); +``` + +### లోప సందేశాలకు బదులుగా కస్టమ్ లోపాలను ఉపయోగించండి + +[Solidity 0.8.4](https://blog.soliditylang.org/2021/04/21/custom-errors/)లో కస్టమ్ లోపాలు ప్రవేశపెట్టబడ్డాయి. అవి మీ కాంట్రాక్టుల పరిమాణాన్ని తగ్గించడానికి ఒక గొప్ప మార్గం, ఎందుకంటే అవి సెలెక్టర్‌లుగా ABI-ఎన్‌కోడ్ చేయబడతాయి (ఫంక్షన్‌ల వలె). + +```solidity +error Unauthorized(); + +if (msg.sender != owner) { + revert Unauthorized(); +} +``` + +### ఆప్టిమైజర్‌లో తక్కువ రన్ విలువను పరిగణించండి {#consider-a-low-run-value-in-the-optimizer} + +మీరు ఆప్టిమైజర్ సెట్టింగులను కూడా మార్చవచ్చు. 200 యొక్క డిఫాల్ట్ విలువ అంటే ఒక ఫంక్షన్‌ను 200 సార్లు పిలిచినట్లుగా బైట్‌కోడ్‌ను ఆప్టిమైజ్ చేయడానికి ప్రయత్నిస్తోంది. మీరు దానిని 1కి మార్చినట్లయితే, ప్రతి ఫంక్షన్‌ను ఒక్కసారి మాత్రమే అమలు చేసే సందర్భం కోసం ఆప్టిమైజ్ చేయమని మీరు ప్రాథమికంగా ఆప్టిమైజర్‌కు చెబుతారు. ఒక్కసారి మాత్రమే అమలు చేయడానికి ఆప్టిమైజ్ చేయబడిన ఫంక్షన్ అంటే అది మోహరింపు కోసమే ఆప్టిమైజ్ చేయబడింది. జాగ్రత్తగా ఉండండి, **ఇది ఫంక్షన్‌లను అమలు చేయడానికి [గ్యాస్ ఖర్చులను](/developers/docs/gas/) పెంచుతుంది**, కాబట్టి మీరు దీన్ని చేయకూడదనుకోవచ్చు. + +## చిన్న ప్రభావం {#small-impact} + +### ఫంక్షన్‌లకు స్ట్రక్ట్‌లను పంపడం మానుకోండి {#avoid-passing-structs-to-functions} + +మీరు [ABIEncoderV2](https://solidity.readthedocs.io/en/v0.6.10/layout-of-source-files.html#abiencoderv2)ని ఉపయోగిస్తుంటే, ఫంక్షన్‌కు స్ట్రక్ట్‌లను పంపకుండా ఉండటానికి ఇది సహాయపడుతుంది. పారామీటర్‌ను స్ట్రక్ట్‌గా పంపడానికి బదులుగా, అవసరమైన పారామీటర్‌లను నేరుగా పంపండి. ఈ ఉదాహరణలో మేము మరో **0.1kb** ఆదా చేసాము. + +```solidity +function get(uint id) returns (address,address) { + return _get(myStruct); +} + +function _get(MyStruct memory myStruct) private view returns(address,address) { + return (myStruct.addr1, myStruct.addr2); +} +``` + +```solidity +function get(uint id) returns(address,address) { + return _get(myStructs[id].addr1, myStructs[id].addr2); +} + +function _get(address addr1, address addr2) private view returns(address,address) { + return (addr1, addr2); +} +``` + +### ఫంక్షన్‌లు మరియు వేరియబుల్స్ కోసం సరైన విజిబిలిటీని ప్రకటించండి {#declare-correct-visibility-for-functions-and-variables} + +- బయటి నుండి మాత్రమే పిలువబడే ఫంక్షన్‌లు లేదా వేరియబుల్స్? వాటిని `public` బదులుగా `external` గా ప్రకటించండి. +- కాంట్రాక్ట్ లోపలి నుండి మాత్రమే పిలువబడే ఫంక్షన్‌లు లేదా వేరియబుల్స్? వాటిని `public` బదులుగా `private` లేదా `internal` గా ప్రకటించండి. + +### మాడిఫైయర్లను తొలగించండి {#remove-modifiers} + +మాడిఫైయర్‌లు, ప్రత్యేకించి తీవ్రంగా ఉపయోగించినప్పుడు, కాంట్రాక్ట్ పరిమాణంపై గణనీయమైన ప్రభావాన్ని చూపుతాయి. వాటిని తొలగించి, బదులుగా ఫంక్షన్‌లను ఉపయోగించడం పరిగణించండి. + +```solidity +modifier checkStuff() {} + +function doSomething() checkStuff {} +``` + +```solidity +function checkStuff() private {} + +function doSomething() { checkStuff(); } +``` + +ఆ చిట్కాలు కాంట్రాక్ట్ పరిమాణాన్ని గణనీయంగా తగ్గించడంలో మీకు సహాయపడతాయి. మరోసారి, నేను తగినంతగా నొక్కి చెప్పలేను, సాధ్యమైనంత వరకు అతిపెద్ద ప్రభావం కోసం కాంట్రాక్టులను విభజించడంపై ఎల్లప్పుడూ దృష్టి పెట్టండి. diff --git a/public/content/translations/te/developers/tutorials/eip-1271-smart-contract-signatures/index.md b/public/content/translations/te/developers/tutorials/eip-1271-smart-contract-signatures/index.md new file mode 100644 index 00000000000..c77578363e5 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/eip-1271-smart-contract-signatures/index.md @@ -0,0 +1,129 @@ +--- +title: "EIP-1271: స్మార్ట్ కాంట్రాక్ట్ సంతకాలపై సంతకం చేయడం మరియు వాటిని ధృవీకరించడం" +description: "EIP-1271తో స్మార్ట్ కాంట్రాక్ట్ సంతకం ఉత్పత్తి మరియు ధృవీకరణ యొక్క అవలోకనం. స్మార్ట్ కాంట్రాక్ట్ డెవలపర్లు దీని ఆధారంగా నిర్మించుకోవడానికి ఒక స్పష్టమైన ఉదాహరణను అందించడానికి, Safeలో (గతంలో Gnosis Safe) ఉపయోగించిన EIP-1271 అమలును కూడా మేము వివరిస్తాము." +author: Nathan H. Leung +lang: te +tags: + [ + "eip-1271", + "స్మార్ట్ కాంట్రాక్టులు", + "ధృవీకరించడం", + "సంతకం చేయడం" + ] +skill: intermediate +published: 2023-01-12 +--- + +[EIP-1271](https://eips.ethereum.org/EIPS/eip-1271) ప్రమాణం స్మార్ట్ కాంట్రాక్ట్‌లను సంతకాలను ధృవీకరించడానికి అనుమతిస్తుంది. + +ఈ ట్యుటోరియల్‌లో, మేము డిజిటల్ సంతకాలపై అవలోకనాన్ని, EIP-1271 యొక్క నేపథ్యం, మరియు [Safe](https://safe.global/) (గతంలో Gnosis Safe) ఉపయోగించే EIP-1271 యొక్క నిర్దిష్ట అమలు గురించి వివరిస్తాము. అన్నీ కలిపి, మీ స్వంత కాంట్రాక్ట్‌లలో EIP-1271ని అమలు చేయడానికి ఇది ఒక ప్రారంభ స్థానంగా ఉపయోగపడుతుంది. + +## సంతకం అంటే ఏమిటి? + +ఈ సందర్భంలో, ఒక సంతకం (మరింత ఖచ్చితంగా, ఒక "డిజిటల్ సంతకం") అనేది ఒక సందేశంతో పాటు, ఆ సందేశం ఒక నిర్దిష్ట వ్యక్తి/పంపినవారు/చిరునామా నుండి వచ్చిందని నిరూపించే ఒక రకమైన రుజువు. + +ఉదాహరణకు, ఒక డిజిటల్ సంతకం ఈ విధంగా ఉండవచ్చు: + +1. సందేశం: “నేను నా ఇతీరియం వాలెట్‌తో ఈ వెబ్‌సైట్‌లోకి లాగిన్ అవ్వాలనుకుంటున్నాను.” +2. సంతకం చేసినవారు: నా చిరునామా `0x000…` +3. రుజువు: నేను, `0x000…`, ఈ మొత్తం సందేశాన్ని వాస్తవానికి సృష్టించానని చెప్పడానికి ఇక్కడ కొంత రుజువు ఉంది (ఇది సాధారణంగా క్రిప్టోగ్రాఫిక్‌కు సంబంధించినది). + +ఒక డిజిటల్ సంతకంలో "సందేశం" మరియు "సంతకం" రెండూ ఉంటాయని గమనించడం ముఖ్యం. + +ఎందుకు? ఉదాహరణకు, మీరు నాకు సంతకం చేయడానికి ఒక కాంట్రాక్ట్ ఇస్తే, ఆపై నేను సంతకం పేజీని కత్తిరించి మిగిలిన కాంట్రాక్ట్ లేకుండా నా సంతకాలను మాత్రమే మీకు తిరిగి ఇస్తే, ఆ కాంట్రాక్ట్ చెల్లుబాటు కాదు. + +అదే విధంగా, అనుబంధ సందేశం లేకుండా డిజిటల్ సంతకానికి అర్థం ఉండదు! + +## EIP-1271 ఎందుకు ఉంది? + +ఇథీరియం-ఆధారిత బ్లాక్‌చెయిన్‌లపై ఉపయోగించడానికి ఒక డిజిటల్ సంతకాన్ని సృష్టించడానికి, మీకు సాధారణంగా మరెవ్వరికీ తెలియని ఒక రహస్య ప్రైవేట్ కీ అవసరం. ఇదే మీ సంతకాన్ని, మీదిగా చేస్తుంది (రహస్య కీ గురించి తెలియకుండా మరెవరూ అదే సంతకాన్ని సృష్టించలేరు). + +మీ ఇతీరియం ఖాతాకు (అంటే, మీ బాహ్య-యాజమాన్య ఖాతా/EOA) ఒక ప్రైవేట్ కీ అనుబంధించబడి ఉంటుంది, మరియు ఒక వెబ్‌సైట్ లేదా డాప్ మిమ్మల్ని సంతకం కోసం అడిగినప్పుడు (ఉదాహరణకు, “ఇథీరియంతో లాగిన్ అవ్వండి” కోసం) సాధారణంగా ఈ ప్రైవేట్ కీ ఉపయోగించబడుతుంది. + +ఒక యాప్, ethers.js వంటి మూడవ-పక్ష లైబ్రరీని ఉపయోగించి, [మీ ప్రైవేట్ కీ తెలియకుండానే](https://en.wikipedia.org/wiki/Public-key_cryptography) మీరు సృష్టించిన [సంతకాన్ని ధృవీకరించగలదు](https://www.alchemy.com/docs/how-to-verify-a-message-signature-on-ethereum) మరియు సంతకాన్ని సృష్టించింది _మీరే_ అని నమ్మకంగా ఉండవచ్చు. + +> వాస్తవానికి, EOA డిజిటల్ సంతకాలు పబ్లిక్-కీ క్రిప్టోగ్రఫీని ఉపయోగిస్తాయి కాబట్టి, వాటిని **ఆఫ్‌చైన్‌లో** ఉత్పత్తి చేసి, ధృవీకరించవచ్చు! గ్యాస్‌లేని DAO ఓటింగ్ ఇలాగే పనిచేస్తుంది — ఆన్‌చైన్‌లో ఓట్లను సమర్పించడానికి బదులుగా, క్రిప్టోగ్రాఫిక్ లైబ్రరీలను ఉపయోగించి డిజిటల్ సంతకాలను ఆఫ్‌చైన్‌లో సృష్టించి ధృవీకరించవచ్చు. + +EOA ఖాతాలకు ప్రైవేట్ కీ ఉన్నప్పటికీ, స్మార్ట్ కాంట్రాక్ట్ ఖాతాలకు ఎలాంటి ప్రైవేట్ లేదా రహస్య కీ ఉండదు (కాబట్టి "ఇథీరియంతో లాగిన్ అవ్వండి", మొదలైనవి స్మార్ట్ కాంట్రాక్ట్ ఖాతాలతో సహజంగా పనిచేయవు). + +EIP-1271 పరిష్కరించాలని లక్ష్యంగా పెట్టుకున్న సమస్య: స్మార్ట్ కాంట్రాక్ట్ సంతకంలో చేర్చడానికి దాని వద్ద ఏ “రహస్యం” లేకపోతే, ఒక స్మార్ట్ కాంట్రాక్ట్ సంతకం చెల్లుబాటు అవుతుందని మనకు ఎలా తెలుస్తుంది? + +## EIP-1271 ఎలా పనిచేస్తుంది? + +సందేశాలపై సంతకం చేయడానికి ఉపయోగించే ప్రైవేట్ కీలు స్మార్ట్ కాంట్రాక్ట్‌లకు ఉండవు. అలాంటప్పుడు ఒక సంతకం ప్రామాణికమైనదని మనకు ఎలా తెలుస్తుంది? + +అయితే, ఒక ఆలోచన ఏంటంటే, ఒక సంతకం ప్రామాణికమైనదా కాదా అని మనం స్మార్ట్ కాంట్రాక్ట్‌నే _అడగవచ్చు_! + +EIP-1271 చేసేది ఏమిటంటే, ఇచ్చిన సంతకం చెల్లుబాటు అవుతుందా అని స్మార్ట్ కాంట్రాక్ట్‌ను “అడగడం” అనే ఈ ఆలోచనను ఇది ప్రామాణీకరిస్తుంది. + +EIP-1271ని అమలు చేసే ఒక కాంట్రాక్ట్ తప్పనిసరిగా `isValidSignature` అనే ఫంక్షన్‌ను కలిగి ఉండాలి, ఇది ఒక సందేశాన్ని మరియు ఒక సంతకాన్ని తీసుకుంటుంది. ఆ తర్వాత కాంట్రాక్ట్ కొంత ధృవీకరణ లాజిక్‌ను అమలు చేయగలదు (స్పెసిఫికేషన్ ఇక్కడ నిర్దిష్టంగా దేనినీ అమలు చేయదు) ఆపై సంతకం చెల్లుబాటు అవుతుందో లేదో సూచించే ఒక విలువను తిరిగి ఇవ్వగలదు. + +`isValidSignature` ఒక చెల్లుబాటు అయ్యే ఫలితాన్ని తిరిగి ఇస్తే, అది దాదాపుగా కాంట్రాక్ట్ “అవును, నేను ఈ సంతకం + సందేశాన్ని ఆమోదిస్తున్నాను!” అని చెప్పినట్లే. + +### ఇంటర్‌ఫేస్ + +EIP-1271 స్పెసిఫికేషన్‌లోని ఖచ్చితమైన ఇంటర్‌ఫేస్ ఇక్కడ ఉంది (మనం కింద `_hash` పరామితి గురించి మాట్లాడుతాము, కానీ ప్రస్తుతానికి, దీనిని ధృవీకరించబడుతున్న సందేశంగా భావించండి): + +```jsx +pragma solidity ^0.5.0; + +contract ERC1271 { + + // బైట్లు4(keccak256("isValidSignature(bytes32,bytes)")) + bytes4 constant internal MAGICVALUE = 0x1626ba7e; + + /** + * @dev అందించిన సంతకం, అందించిన హాష్‌కు చెల్లుబాటు అవుతుందో లేదో తిరిగి ఇవ్వాలి + * @param _hash సంతకం చేయవలసిన డేటా యొక్క హాష్ + * @param _signature _hashతో అనుబంధించబడిన సంతకం బైట్ అర్రే + * + * ఫంక్షన్ పాస్ అయినప్పుడు తప్పనిసరిగా బైట్లు4 మ్యాజిక్ విలువ 0x1626ba7eని తిరిగి ఇవ్వాలి. + * స్థితిని మార్చకూడదు (solc < 0.5 కోసం STATICCALL ఉపయోగించి, solc > 0.5 కోసం వ్యూ మోడిఫైయర్) + * బాహ్య కాల్స్‌ను అనుమతించాలి + */ + function isValidSignature( + bytes32 _hash, + bytes memory _signature) + public + view + returns (bytes4 magicValue); +} +``` + +## ఉదాహరణ EIP-1271 అమలు: Safe + +కాంట్రాక్ట్‌లు `isValidSignature`ని అనేక విధాలుగా అమలు చేయగలవు — స్పెసిఫికేషన్ ఖచ్చితమైన అమలు గురించి పెద్దగా చెప్పదు. + +EIP-1271ని అమలు చేసే ఒక ముఖ్యమైన కాంట్రాక్ట్ Safe (గతంలో Gnosis Safe). + +Safe కోడ్‌లో, సంతకాలను [రెండు విధాలుగా](https://ethereum.stackexchange.com/questions/122635/signing-messages-as-a-gnosis-safe-eip1271-support) సృష్టించి, ధృవీకరించగలిగేలా `isValidSignature` [అమలు చేయబడింది](https://github.com/safe-global/safe-contracts/blob/main/contracts/handler/CompatibilityFallbackHandler.sol): + +1. ఆన్‌చైన్ సందేశాలు + 1. సృష్టి: ఒక సురక్షిత యజమాని ఒక సందేశాన్ని “సంతకం చేయడానికి” ఒక కొత్త సురక్షిత లావాదేవీని సృష్టిస్తాడు, సందేశాన్ని డేటాగా లావాదేవీలోకి పంపుతాడు. మల్టీసిగ్ పరిమితిని చేరుకోవడానికి తగినంత మంది యజమానులు లావాదేవీపై సంతకం చేసిన తర్వాత, లావాదేవీ ప్రసారం చేయబడి, అమలు చేయబడుతుంది. లావాదేవీలో, `signMessage(bytes calldata _data)` అని పిలువబడే ఒక సురక్షిత ఫంక్షన్ ఉంది, ఇది సందేశాన్ని "ఆమోదించబడిన" సందేశాల జాబితాకు జతచేస్తుంది. + 2. ధృవీకరణ: Safe కాంట్రాక్ట్‌పై `isValidSignature`కి కాల్ చేయండి, మరియు ధృవీకరించాల్సిన సందేశాన్ని సందేశ పరామితిగా మరియు [సంతకం పరామితి కోసం ఒక ఖాళీ విలువను](https://github.com/safe-global/safe-contracts/blob/main/contracts/handler/CompatibilityFallbackHandler.sol#L32) (అంటే, `0x`) పంపండి. Safe సంతకం పరామితి ఖాళీగా ఉందని చూసి, సంతకాన్ని క్రిప్టోగ్రాఫికల్‌గా ధృవీకరించడానికి బదులుగా, సందేశం “ఆమోదించబడిన” సందేశాల జాబితాలో ఉందో లేదో తనిఖీ చేయాలని దానికి తెలుస్తుంది. +2. ఆఫ్‌చైన్ సందేశాలు: + 1. సృష్టి: ఒక సురక్షిత యజమాని ఆఫ్‌చైన్‌లో ఒక సందేశాన్ని సృష్టిస్తాడు, ఆపై మల్టీసిగ్ ఆమోద పరిమితిని అధిగమించడానికి తగినంత సంతకాలు అయ్యే వరకు ఇతర సురక్షిత యజమానులచే ఒక్కొక్కరిగా సందేశంపై సంతకం చేయిస్తాడు. + 2. ధృవీకరణ: `isValidSignature`కి కాల్ చేయండి. సందేశ పరామితిలో, ధృవీకరించాల్సిన సందేశాన్ని పంపండి. సంతకం పరామితిలో, ప్రతి సురక్షిత యజమాని యొక్క వ్యక్తిగత సంతకాలను ఒకదాని తర్వాత ఒకటిగా కలిపి పంపండి. Safe పరిమితిని చేరుకోవడానికి తగినంత సంతకాలు ఉన్నాయని **మరియు** ప్రతి సంతకం చెల్లుబాటు అవుతుందని తనిఖీ చేస్తుంది. అలా అయితే, అది విజయవంతమైన సంతకం ధృవీకరణను సూచించే ఒక విలువను తిరిగి ఇస్తుంది. + +## `_hash` పరామితి అంటే ఖచ్చితంగా ఏమిటి? మొత్తం సందేశాన్ని ఎందుకు పంపకూడదు? + +[EIP-1271 ఇంటర్‌ఫేస్‌](https://eips.ethereum.org/EIPS/eip-1271)లోని `isValidSignature` ఫంక్షన్ సందేశాన్ని నేరుగా కాకుండా, బదులుగా ఒక `_hash` పరామితిని తీసుకుంటుందని మీరు గమనించి ఉండవచ్చు. దీని అర్థం ఏమిటంటే, `isValidSignature`కు పూర్తి ఏకపక్ష-పొడవు గల సందేశాన్ని పంపడానికి బదులుగా, మనం బదులుగా సందేశం యొక్క 32-బైట్ హాష్ (సాధారణంగా keccak256) ను పంపుతాము. + +కాల్‌డేటా యొక్క ప్రతి బైట్ — అంటే, ఒక స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌కు పంపిన ఫంక్షన్ పరామితి డేటా — [16 గ్యాస్ (సున్నా బైట్ అయితే 4 గ్యాస్) ఖర్చు అవుతుంది](https://eips.ethereum.org/EIPS/eip-2028), కాబట్టి సందేశం పొడవుగా ఉంటే ఇది చాలా గ్యాస్‌ను ఆదా చేస్తుంది. + +### మునుపటి EIP-1271 స్పెసిఫికేషన్లు + +అమలులో కొన్ని EIP-1271 స్పెసిఫికేషన్లు ఉన్నాయి, వీటిలో `isValidSignature` ఫంక్షన్ మొదటి పరామితి `bytes` రకంతో (స్థిర-పొడవు `bytes32`కి బదులుగా, ఏకపక్ష-పొడవు) మరియు పరామితి పేరు `message`తో ఉంటుంది. ఇది EIP-1271 ప్రమాణం యొక్క ఒక [పాత వెర్షన్](https://github.com/safe-global/safe-contracts/issues/391#issuecomment-1075427206). + +## నా స్వంత కాంట్రాక్ట్‌లలో EIP-1271ని ఎలా అమలు చేయాలి? + +ఇక్కడ స్పెసిఫికేషన్ చాలా స్వేచ్ఛాయుతమైనది. Safe అమలులో కొన్ని మంచి ఆలోచనలు ఉన్నాయి: + +- మీరు కాంట్రాక్ట్ యొక్క "యజమాని" నుండి వచ్చే EOA సంతకాలను చెల్లుబాటు అయ్యేవిగా పరిగణించవచ్చు. +- మీరు ఆమోదించబడిన సందేశాల జాబితాను నిల్వ చేసి, వాటిని మాత్రమే చెల్లుబాటు అయ్యేవిగా పరిగణించవచ్చు. + +చివరికి, కాంట్రాక్ట్ డెవలపర్‌గా ఇది మీ ఇష్టం! + +## ముగింపు + +[EIP-1271](https://eips.ethereum.org/EIPS/eip-1271) అనేది ఒక బహుముఖ ప్రమాణం, ఇది స్మార్ట్ కాంట్రాక్ట్‌లను సంతకాలను ధృవీకరించడానికి అనుమతిస్తుంది. ఇది స్మార్ట్ కాంట్రాక్ట్‌లు EOAల వలె ఎక్కువగా ప్రవర్తించడానికి మార్గం సుగమం చేస్తుంది — ఉదాహరణకు "ఇథీరియంతో లాగిన్ అవ్వండి" స్మార్ట్ కాంట్రాక్ట్‌లతో పనిచేయడానికి ఒక మార్గాన్ని అందిస్తుంది — మరియు దీనిని అనేక విధాలుగా అమలు చేయవచ్చు (Safe పరిగణించదగ్గ ఒక క్లిష్టమైన, ఆసక్తికరమైన అమలును కలిగి ఉంది). diff --git a/public/content/translations/te/developers/tutorials/erc-721-vyper-annotated-code/index.md b/public/content/translations/te/developers/tutorials/erc-721-vyper-annotated-code/index.md new file mode 100644 index 00000000000..d38dbf51ab9 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/erc-721-vyper-annotated-code/index.md @@ -0,0 +1,708 @@ +--- +title: "Vyper ERC-721 కాంట్రాక్ట్ వాక్‌త్రూ" +description: "ర్యూయా నకమురా వారి ERC-721 కాంట్రాక్ట్ మరియు అది ఎలా పనిచేస్తుంది" +author: Ori Pomerantz +lang: te +tags: [ "vyper", "erc-721", "python" ] +skill: beginner +published: 2021-04-01 +--- + +## పరిచయం {#introduction} + +[ERC-721](/developers/docs/standards/tokens/erc-721/) ప్రమాణం నాన్-ఫంగిబుల్ టోకెన్ల (NFT) యాజమాన్యాన్ని కలిగి ఉండటానికి ఉపయోగించబడుతుంది. +[ERC-20](/developers/docs/standards/tokens/erc-20/) టోకెన్లు ఒక వస్తువుగా ప్రవర్తిస్తాయి, ఎందుకంటే వ్యక్తిగత టోకెన్ల మధ్య తేడా ఉండదు. +దీనికి విరుద్ధంగా, ERC-721 టోకెన్లు ఒకేలా ఉండే కానీ ఒకేలా లేని ఆస్తుల కోసం రూపొందించబడ్డాయి, ఉదాహరణకు విభిన్న పిల్లి +కార్టూన్లు +లేదా విభిన్న రియల్ ఎస్టేట్ ముక్కలకు చెందిన టైటిళ్లు. + +ఈ ఆర్టికల్‌లో మేము [ర్యూయా నకమురా వారి ERC-721 కాంట్రాక్ట్‌ను](https://github.com/vyperlang/vyper/blob/master/examples/tokens/ERC721.vy) విశ్లేషిస్తాము. +ఈ కాంట్రాక్ట్ [Vyper](https://vyper.readthedocs.io/en/latest/index.html)లో వ్రాయబడింది, ఇది సోలిడిటీలో ఉన్నదానికంటే అసురక్షిత కోడ్‌ను వ్రాయడాన్ని +కష్టతరం చేయడానికి రూపొందించిన పైథాన్ లాంటి కాంట్రాక్ట్ భాష. + +## కాంట్రాక్ట్ {#contract} + +```python +# @dev ERC-721 నాన్-ఫంగిబుల్ టోకెన్ ప్రమాణం యొక్క అమలు. +# @రచయిత ర్యూయా నకమురా (@nrryuya) +# దీని నుండి సవరించబడింది: https://github.com/vyperlang/vyper/blob/de74722bf2d8718cca46902be165f9fe0e3641dd/examples/tokens/ERC721.vy +``` + +Vyperలో, పైథాన్‌లో వలె, వ్యాఖ్యలు హాష్ (`#`)తో ప్రారంభమై లైన్ చివరి వరకు కొనసాగుతాయి. `@` +ను కలిగి ఉన్న వ్యాఖ్యలు మానవ-చదవగలిగే +డాక్యుమెంటేషన్‌ను రూపొందించడానికి [NatSpec](https://vyper.readthedocs.io/en/latest/natspec.html) ద్వారా ఉపయోగించబడతాయి. + +```python +from vyper.interfaces import ERC721 + +implements: ERC721 +``` + +ERC-721 ఇంటర్‌ఫేస్ Vyper భాషలో నిర్మించబడింది. +[మీరు కోడ్ నిర్వచనాన్ని ఇక్కడ చూడవచ్చు](https://github.com/vyperlang/vyper/blob/master/vyper/builtin_interfaces/ERC721.py). +ఇంటర్‌ఫేస్ నిర్వచనం Vyperలో కాకుండా పైథాన్‌లో వ్రాయబడింది, ఎందుకంటే ఇంటర్‌ఫేసులు +బ్లాక్ చైను లోపల మాత్రమే కాకుండా, పైథాన్‌లో వ్రాయబడిన బాహ్య క్లయింట్ నుండి బ్లాక్ చైనుకు +లావాదేవీని పంపేటప్పుడు కూడా ఉపయోగించబడతాయి. + +మొదటి లైన్ ఇంటర్‌ఫేస్‌ను దిగుమతి చేస్తుంది మరియు రెండవది మనం ఇక్కడ దాన్ని అమలు చేస్తున్నామని నిర్దేశిస్తుంది. + +### ERC721రిసీవర్ ఇంటర్‌ఫేస్ {#receiver-interface} + +```python +# safeTransferFrom() ద్వారా పిలువబడే కాంట్రాక్ట్ కోసం ఇంటర్‌ఫేస్ +interface ERC721Receiver: + def onERC721Received( +``` + +ERC-721 రెండు రకాల బదిలీలకు మద్దతు ఇస్తుంది: + +- `transferFrom`, ఇది పంపినవారికి ఏదైనా గమ్యస్థాన చిరునామాను పేర్కొనడానికి వీలు కల్పిస్తుంది మరియు బదిలీ బాధ్యతను పంపినవారిపై + ఉంచుతుంది. దీని అర్థం మీరు చెల్లని చిరునామాకు బదిలీ చేయవచ్చు, ఈ సందర్భంలో + NFT శాశ్వతంగా పోతుంది. +- `safeTransferFrom`, ఇది గమ్యస్థాన చిరునామా కాంట్రాక్ట్ కాదా అని తనిఖీ చేస్తుంది. అలా అయితే, ERC-721 కాంట్రాక్ట్ + NFTని స్వీకరించాలనుకుంటున్నారా అని స్వీకరించే కాంట్రాక్ట్‌ను అడుగుతుంది. + +`safeTransferFrom` అభ్యర్థనలకు సమాధానం ఇవ్వడానికి, స్వీకరించే కాంట్రాక్ట్ `ERC721Receiver`ను అమలు చేయాలి. + +```python + _operator: address, + _from: address, +``` + +`_from` చిరునామా టోకెన్ యొక్క ప్రస్తుత యజమాని. `_operator` చిరునామా అనేది +బదిలీని అభ్యర్థించినది (అలవెన్సుల కారణంగా ఆ రెండూ ఒకేలా ఉండకపోవచ్చు). + +```python + _tokenId: uint256, +``` + +ERC-721 టోకెన్ IDలు 256 బిట్‌లు. సాధారణంగా అవి టోకెన్ దేనిని సూచిస్తుందో దాని వివరణను +హాష్ చేయడం ద్వారా సృష్టించబడతాయి. + +```python + _data: Bytes[1024] +``` + +అభ్యర్థనలో 1024 బైట్‌ల వరకు వినియోగదారు డేటా ఉండవచ్చు. + +```python + ) -> bytes32: view +``` + +ఒక కాంట్రాక్ట్ అనుకోకుండా బదిలీని అంగీకరించే సందర్భాలను నివారించడానికి, తిరిగి వచ్చే విలువ బూలియన్ కాదు, +కానీ ఒక నిర్దిష్ట విలువతో 256 బిట్‌లు. + +ఈ ఫంక్షన్ ఒక `view`, అంటే ఇది బ్లాక్ చైను యొక్క స్టేట్‌ను చదవగలదు, కానీ దానిని సవరించలేదు. + +### ఈవెంట్‌లు {#events} + +[ఈవెంట్‌లు](https://media.consensys.net/technical-introduction-to-events-and-logs-in-ethereum-a074d65dd61e) +బ్లాక్ చైను వెలుపల ఉన్న వినియోగదారులు మరియు సర్వర్‌లకు ఈవెంట్‌ల గురించి తెలియజేయడానికి విడుదల చేయబడతాయి. ఈవెంట్‌ల కంటెంట్ +బ్లాక్ చైనులోని కాంట్రాక్ట్‌లకు అందుబాటులో లేదని గమనించండి. + +```python +# @dev ఏదైనా మెకానిజం ద్వారా ఏదైనా NFT యాజమాన్యం మారినప్పుడు విడుదల అవుతుంది. NFTలు సృష్టించబడినప్పుడు ఈ ఈవెంట్ విడుదల అవుతుంది +# (`from` == 0) మరియు నాశనం చేయబడినప్పుడు (`to` == 0). మినహాయింపు: కాంట్రాక్ట్ సృష్టి సమయంలో, ఏదైనా +# బదిలీని విడుదల చేయకుండా NFTల సంఖ్యను సృష్టించవచ్చు మరియు కేటాయించవచ్చు. ఏదైనా సమయంలో +# బదిలీ, ఆ NFTకి ఆమోదించబడిన చిరునామా (ఏదైనా ఉంటే) ఏదీ లేకుండా రీసెట్ చేయబడుతుంది. +# @param _from NFT పంపినవారు (చిరునామా సున్నా చిరునామా అయితే అది టోకెన్ సృష్టిని సూచిస్తుంది). +# @param _to NFT గ్రహీత (చిరునామా సున్నా చిరునామా అయితే అది టోకెన్ నాశనాన్ని సూచిస్తుంది). +# @param _tokenId బదిలీ చేయబడిన NFT. +event Transfer: + sender: indexed(address) + receiver: indexed(address) + tokenId: indexed(uint256) +``` + +ఇది ERC-20 బదిలీ ఈవెంట్‌ను పోలి ఉంటుంది, కానీ మేము మొత్తం బదులుగా `tokenId`ని నివేదిస్తాము. +సున్నా చిరునామా ఎవరికీ స్వంతం కాదు, కాబట్టి సంప్రదాయం ప్రకారం టోకెన్ల సృష్టి మరియు నాశనాన్ని నివేదించడానికి మేము దానిని ఉపయోగిస్తాము. + +```python +# @dev NFT కోసం ఆమోదించబడిన చిరునామా మార్చబడినప్పుడు లేదా పునరుద్ఘాటించబడినప్పుడు ఇది విడుదల అవుతుంది. సున్నా +# చిరునామా ఆమోదించబడిన చిరునామా లేదని సూచిస్తుంది. బదిలీ ఈవెంట్ విడుదల అయినప్పుడు, ఇది కూడా +# ఆ NFTకి ఆమోదించబడిన చిరునామా (ఏదైనా ఉంటే) ఏదీ లేకుండా రీసెట్ చేయబడిందని సూచిస్తుంది. +# @param _owner NFT యజమాని. +# @param _approved మేము ఆమోదిస్తున్న చిరునామా. +# @param _tokenId మేము ఆమోదిస్తున్న NFT. +event Approval: + owner: indexed(address) + approved: indexed(address) + tokenId: indexed(uint256) +``` + +ERC-721 ఆమోదం ERC-20 అలవెన్సును పోలి ఉంటుంది. ఒక నిర్దిష్ట టోకెన్‌ను బదిలీ చేయడానికి ఒక నిర్దిష్ట చిరునామా +అనుమతించబడుతుంది. ఇది కాంట్రాక్ట్‌లు టోకెన్‌ను అంగీకరించినప్పుడు స్పందించడానికి ఒక యంత్రాంగాన్ని అందిస్తుంది. కాంట్రాక్ట్‌లు ఈవెంట్‌లను +వినలేవు, కాబట్టి మీరు వాటికి టోకెన్‌ను బదిలీ చేస్తే, వాటికి దాని గురించి "తెలియదు". ఈ విధంగా యజమాని +మొదట ఆమోదాన్ని సమర్పించి, ఆపై కాంట్రాక్ట్‌కు అభ్యర్థనను పంపుతారు: "టోకెన్ Xను బదిలీ చేయడానికి నేను మీకు ఆమోదం ఇచ్చాను +, దయచేసి చేయండి ...". + +ERC-721 ప్రమాణాన్ని ERC-20 ప్రమాణానికి సమానంగా చేయడానికి ఇది ఒక డిజైన్ ఎంపిక. ఎందుకంటే +ERC-721 టోకెన్లు ఫంగిబుల్ కావు, ఒక కాంట్రాక్ట్ టోకెన్ యాజమాన్యాన్ని +చూడటం ద్వారా ఒక నిర్దిష్ట టోకెన్‌ను పొందిందని కూడా గుర్తించగలదు. + +```python +# @dev ఒక యజమాని కోసం ఒక ఆపరేటర్ ఎనేబుల్ లేదా డిసేబుల్ చేయబడినప్పుడు ఇది విడుదల అవుతుంది. ఆపరేటర్ నిర్వహించగలడు +# యజమాని యొక్క అన్ని NFTలు. +# @param _owner NFT యజమాని. +# @param _operator మేము ఆపరేటర్ హక్కులను సెట్ చేస్తున్న చిరునామా. +# @param _approved ఆపరేటర్ హక్కుల స్థితి (ఆపరేటర్ హక్కులు ఇస్తే నిజం మరియు కాకపోతే తప్పు +# రద్దు చేయబడింది). +event ApprovalForAll: + owner: indexed(address) + operator: indexed(address) + approved: bool +``` + +కొన్నిసార్లు ఒక నిర్దిష్ట రకానికి చెందిన ఖాతా యొక్క అన్ని టోకెన్లను (ఒక నిర్దిష్ట కాంట్రాక్ట్ ద్వారా +నిర్వహించబడేవి) నిర్వహించగల _ఆపరేటర్_ కలిగి ఉండటం ఉపయోగకరంగా ఉంటుంది, ఇది పవర్ ఆఫ్ అటార్నీని పోలి ఉంటుంది. ఉదాహరణకు, నేను ఆరు నెలలుగా దానిని సంప్రదించలేదా అని తనిఖీ చేసే కాంట్రాక్ట్‌కు అటువంటి అధికారాన్ని ఇవ్వాలనుకోవచ్చు, మరియు అలా అయితే నా ఆస్తులను నా వారసులకు పంపిణీ చేస్తుంది (వారిలో ఒకరు అడిగితే, కాంట్రాక్ట్‌లు +లావాదేవీ ద్వారా పిలవబడకుండా ఏమీ చేయలేవు). ERC-20లో మేము వారసత్వ కాంట్రాక్ట్‌కు అధిక అలవెన్సును ఇవ్వవచ్చు, +కానీ ERC-721కి ఇది పనిచేయదు ఎందుకంటే టోకెన్లు ఫంగిబుల్ కావు. ఇది దానికి సమానం. + +ఈవెంట్ ఆమోదం కోసమా లేదా ఆమోదం ఉపసంహరణ కోసమా అనేది `approved` విలువ మాకు చెబుతుంది. + +### స్టేట్ వేరియబుల్స్ {#state-vars} + +ఈ వేరియబుల్స్ టోకెన్ల ప్రస్తుత స్టేట్‌ను కలిగి ఉంటాయి: ఏవి అందుబాటులో ఉన్నాయి మరియు వాటి యజమాని ఎవరు. వీటిలో చాలా వరకు +`HashMap` ఆబ్జెక్ట్‌లు, [రెండు రకాల మధ్య ఉన్న ఏకదిశాత్మక మ్యాపింగ్‌లు](https://vyper.readthedocs.io/en/latest/types.html#mappings). + +```python +# @dev NFT ID నుండి దాని యజమాని అయిన చిరునామాకు మ్యాపింగ్. +idToOwner: HashMap[uint256, address] + +# @dev NFT ID నుండి ఆమోదించబడిన చిరునామాకు మ్యాపింగ్. +idToApprovals: HashMap[uint256, address] +``` + +Ethereumలో వినియోగదారు మరియు కాంట్రాక్ట్ గుర్తింపులు 160-బిట్ చిరునామాల ద్వారా సూచించబడతాయి. ఈ రెండు వేరియబుల్స్ +టోకెన్ IDల నుండి వాటి యజమానులకు మరియు వాటిని బదిలీ చేయడానికి ఆమోదించబడిన వారికి మ్యాప్ చేస్తాయి (ప్రతిదానికి గరిష్టంగా ఒకటి). Ethereumలో, +ప్రారంభించని డేటా ఎల్లప్పుడూ సున్నాగా ఉంటుంది, కాబట్టి యజమాని లేదా ఆమోదించబడిన బదిలీదారు లేకపోతే ఆ టోకెన్ విలువ +సున్నాగా ఉంటుంది. + +```python +# @dev యజమాని చిరునామా నుండి అతని టోకెన్ల సంఖ్యకు మ్యాపింగ్. +ownerToNFTokenCount: HashMap[address, uint256] +``` + +ఈ వేరియబుల్ ప్రతి యజమానికి టోకెన్ల సంఖ్యను కలిగి ఉంటుంది. యజమానుల నుండి టోకెన్‌లకు మ్యాపింగ్ లేదు, కాబట్టి +ఒక నిర్దిష్ట యజమాని కలిగి ఉన్న టోకెన్‌లను గుర్తించడానికి ఏకైక మార్గం బ్లాక్ చైను ఈవెంట్ చరిత్రలో వెనక్కి తిరిగి చూడటం +మరియు తగిన `Transfer` ఈవెంట్‌లను చూడటం. మన వద్ద అన్ని NFTలు ఉన్నాయని మరియు సమయంలో మరింత వెనక్కి తిరిగి చూడాల్సిన +అవసరం లేదని తెలుసుకోవడానికి మేము ఈ వేరియబుల్‌ను ఉపయోగించవచ్చు. + +ఈ అల్గోరిథం వినియోగదారు ఇంటర్‌ఫేస్‌లు మరియు బాహ్య సర్వర్‌లకు మాత్రమే పనిచేస్తుందని గమనించండి. బ్లాక్ చైనుపై నడుస్తున్న కోడ్ +గత ఈవెంట్‌లను చదవలేదు. + +```python +# @dev యజమాని చిరునామా నుండి ఆపరేటర్ చిరునామాల మ్యాపింగ్‌కు మ్యాపింగ్. +ownerToOperators: HashMap[address, HashMap[address, bool]] +``` + +ఒక ఖాతాకు ఒకటి కంటే ఎక్కువ ఆపరేటర్లు ఉండవచ్చు. ఒక సాధారణ `HashMap` వాటిని ట్రాక్ చేయడానికి సరిపోదు, +ఎందుకంటే ప్రతి కీ ఒకే విలువకు దారితీస్తుంది. బదులుగా, మీరు విలువగా +`HashMap[address, bool]` ను ఉపయోగించవచ్చు. డిఫాల్ట్‌గా ప్రతి చిరునామాకు విలువ `False`గా ఉంటుంది, అంటే అది +ఆపరేటర్ కాదు. మీరు అవసరమైన విధంగా విలువలను `True`కి సెట్ చేయవచ్చు. + +```python +# @dev మింటర్ యొక్క చిరునామా, ఇతను ఒక టోకెన్‌ను మింట్ చేయగలడు +minter: address +``` + +కొత్త టోకెన్లను ఏదో ఒక విధంగా సృష్టించాలి. ఈ కాంట్రాక్ట్‌లో అలా చేయడానికి అనుమతించబడిన ఒకే ఒక్క సంస్థ ఉంది, అది +`మింటర్`. ఉదాహరణకు, ఒక ఆటకు ఇది సరిపోతుంది. ఇతర ప్రయోజనాల కోసం, మరింత సంక్లిష్టమైన వ్యాపార తర్కాన్ని +సృష్టించడం అవసరం కావచ్చు. + +```python +# @dev ఇంటర్‌ఫేస్ ఐడి నుండి అది మద్దతు ఇస్తుందా లేదా అనే దాని గురించి బూల్‌కి మ్యాపింగ్ +supportedInterfaces: HashMap[bytes32, bool] + +# @dev ERC165 యొక్క ERC165 ఇంటర్‌ఫేస్ ఐడి +ERC165_INTERFACE_ID: constant(bytes32) = 0x0000000000000000000000000000000000000000000000000000000001ffc9a7 + +# @dev ERC721 యొక్క ERC165 ఇంటర్‌ఫేస్ ఐడి +ERC721_INTERFACE_ID: constant(bytes32) = 0x0000000000000000000000000000000000000000000000000000000080ac58cd +``` + +[ERC-165](https://eips.ethereum.org/EIPS/eip-165) ఒక కాంట్రాక్ట్ దానితో అప్లికేషన్‌లు ఎలా కమ్యూనికేట్ చేయగలవో, అది ఏ ERCలకు అనుగుణంగా ఉంటుందో బహిర్గతం చేయడానికి ఒక యంత్రాంగాన్ని నిర్దేశిస్తుంది. ఈ సందర్భంలో, కాంట్రాక్ట్ ERC-165 మరియు ERC-721కి అనుగుణంగా ఉంటుంది. + +### ఫంక్షన్స్ {#functions} + +ఇవి వాస్తవానికి ERC-721ని అమలు చేసే ఫంక్షన్‌లు. + +#### కన్స్ట్రక్టర్ {#constructor} + +```python +@external +def __init__(): +``` + +Vyperలో, పైథాన్‌లో వలె, కన్స్ట్రక్టర్ ఫంక్షన్‌ను `__init__` అని పిలుస్తారు. + +```python + """ + @dev కాంట్రాక్ట్ కన్స్ట్రక్టర్. + """ +``` + +పైథాన్‌లో, మరియు Vyperలో, మీరు మల్టీ-లైన్ స్ట్రింగ్‌ను పేర్కొనడం ద్వారా కూడా ఒక వ్యాఖ్యను సృష్టించవచ్చు (ఇది `"""`తో ప్రారంభమై మరియు ముగుస్తుంది), మరియు దానిని ఏ విధంగానూ ఉపయోగించకుండా ఉండవచ్చు. ఈ వ్యాఖ్యలలో +[NatSpec](https://vyper.readthedocs.io/en/latest/natspec.html) కూడా ఉండవచ్చు. + +```python + self.supportedInterfaces[ERC165_INTERFACE_ID] = True + self.supportedInterfaces[ERC721_INTERFACE_ID] = True + self.minter = msg.sender +``` + +`self.<వేరియబుల్ పేరు>`ని ఉపయోగించి మీరు స్టేట్ వేరియబుల్స్‌ను యాక్సెస్ చేస్తారు` (మళ్ళీ, పైథాన్‌లో వలె). + +#### వ్యూ ఫంక్షన్లు {#views} + +ఇవి బ్లాక్ చైను యొక్క స్టేట్‌ను సవరించని ఫంక్షన్‌లు, అందువల్ల వాటిని బాహ్యంగా పిలిచినట్లయితే ఉచితంగా +అమలు చేయవచ్చు. వ్యూ ఫంక్షన్‌లను ఒక కాంట్రాక్ట్ పిలిచినట్లయితే, అవి ఇప్పటికీ ప్రతి నోడ్‌లో +అమలు చేయబడాలి మరియు అందువల్ల గ్యాస్ ఖర్చు అవుతుంది. + +```python +@view +@external +``` + +ఒక ఫంక్షన్ నిర్వచనానికి ముందు ఉన్న ఈ కీవర్డ్‌లు, ఎట్ సైన్ (`@`)తో ప్రారంభమయ్యేవి, _డెకరేషన్స్_ అని పిలువబడతాయి. ఒక ఫంక్షన్‌ను ఏ పరిస్థితులలో పిలవవచ్చో అవి +నిర్దేశిస్తాయి. + +- `@view` ఈ ఫంక్షన్ ఒక వ్యూ అని నిర్దేశిస్తుంది. +- `@external` ఈ నిర్దిష్ట ఫంక్షన్‌ను లావాదేవీల ద్వారా మరియు ఇతర కాంట్రాక్ట్‌ల ద్వారా పిలవవచ్చని నిర్దేశిస్తుంది. + +```python +def supportsInterface(_interfaceID: bytes32) -> bool: +``` + +పైథాన్‌కు విరుద్ధంగా, Vyper ఒక [స్టాటిక్ టైప్డ్ లాంగ్వేజ్](https://wikipedia.org/wiki/Type_system#Static_type_checking). +[డేటా రకాన్ని](https://vyper.readthedocs.io/en/latest/types.html) గుర్తించకుండా మీరు ఒక వేరియబుల్‌ను లేదా ఫంక్షన్ పారామీటర్‌ను ప్రకటించలేరు. ఈ సందర్భంలో ఇన్‌పుట్ పారామీటర్ `bytes32`, ఇది 256-బిట్ విలువ +([Ethereum వర్చువల్ మెషీన్](/developers/docs/evm/) యొక్క స్థానిక వర్డ్ సైజ్ 256 బిట్‌లు). అవుట్‌పుట్ ఒక బూలియన్ +విలువ. సంప్రదాయం ప్రకారం, ఫంక్షన్ పారామీటర్ల పేర్లు అండర్‌స్కోర్ (`_`)తో ప్రారంభమవుతాయి. + +```python + """ + @dev ఇంటర్‌ఫేస్ గుర్తింపు ERC-165లో పేర్కొనబడింది. + @param _interfaceID ఇంటర్‌ఫేస్ యొక్క ఐడి + """ + return self.supportedInterfaces[_interfaceID] +``` + +కన్స్ట్రక్టర్ (`__init__`)లో సెట్ చేయబడిన `self.supportedInterfaces` HashMap నుండి విలువను తిరిగి ఇవ్వండి. + +```python +### వ్యూ ఫంక్షన్లు ### + +``` + +ఇవి టోకెన్ల గురించిన సమాచారాన్ని వినియోగదారులకు మరియు ఇతర కాంట్రాక్ట్‌లకు అందుబాటులో ఉంచే వ్యూ ఫంక్షన్‌లు. + +```python +@view +@external +def balanceOf(_owner: address) -> uint256: + """ + @dev `_owner` యాజమాన్యంలోని NFTల సంఖ్యను తిరిగి ఇస్తుంది. + `_owner` సున్నా చిరునామా అయితే త్రో చేస్తుంది. సున్నా చిరునామాకు కేటాయించబడిన NFTలు చెల్లనివిగా పరిగణించబడతాయి. + @param _owner ఎవరి బ్యాలెన్స్ కోసం ప్రశ్నించాలో ఆ చిరునామా. + """ + assert _owner != ZERO_ADDRESS +``` + +ఈ లైన్ `_owner` సున్నా కాదని [నిర్ధారిస్తుంది](https://vyper.readthedocs.io/en/latest/statements.html#assert). అది అయితే, ఒక లోపం ఉంది మరియు ఆపరేషన్ తిరిగి మార్చబడుతుంది. + +```python + return self.ownerToNFTokenCount[_owner] + +@view +@external +def ownerOf(_tokenId: uint256) -> address: + """ + @dev NFT యజమాని చిరునామాను తిరిగి ఇస్తుంది. + `_tokenId` చెల్లుబాటు అయ్యే NFT కాకపోతే త్రో చేస్తుంది. + @param _tokenId ఒక NFT కోసం ఐడెంటిఫైయర్. + """ + owner: address = self.idToOwner[_tokenId] + # `_tokenId` చెల్లుబాటు అయ్యే NFT కాకపోతే త్రో చేస్తుంది + assert owner != ZERO_ADDRESS + return owner +``` + +Ethereum వర్చువల్ మెషీన్ (evm)లో విలువ నిల్వ చేయని ఏ నిల్వ అయినా సున్నాగా ఉంటుంది. +`_tokenId` వద్ద టోకెన్ లేకపోతే, `self.idToOwner[_tokenId]` విలువ సున్నాగా ఉంటుంది. ఆ సందర్భంలో +ఫంక్షన్ తిరిగి మార్చబడుతుంది. + +```python +@view +@external +def getApproved(_tokenId: uint256) -> address: + """ + @dev ఒకే NFT కోసం ఆమోదించబడిన చిరునామాను పొందండి. + `_tokenId` చెల్లుబాటు అయ్యే NFT కాకపోతే త్రో చేస్తుంది. + @param _tokenId ఆమోదం కోసం ప్రశ్నించాల్సిన NFT యొక్క ఐడి. + """ + # `_tokenId` చెల్లుబాటు అయ్యే NFT కాకపోతే త్రో చేస్తుంది + assert self.idToOwner[_tokenId] != ZERO_ADDRESS + return self.idToApprovals[_tokenId] +``` + +`getApproved` సున్నాను తిరిగి _ఇవ్వగలదని_ గమనించండి. టోకెన్ చెల్లుబాటు అయితే అది `self.idToApprovals[_tokenId]`ని తిరిగి ఇస్తుంది. +ఆమోదించేవారు లేకపోతే ఆ విలువ సున్నా. + +```python +@view +@external +def isApprovedForAll(_owner: address, _operator: address) -> bool: + """ + @dev `_owner` కోసం `_operator` ఆమోదించబడిన ఆపరేటర్ కాదా అని తనిఖీ చేస్తుంది. + @param _owner NFTల యాజమాన్యంలోని చిరునామా. + @param _operator యజమాని తరపున పనిచేసే చిరునామా. + """ + return (self.ownerToOperators[_owner])[_operator] +``` + +ఈ కాంట్రాక్ట్‌లో `_owner` యొక్క అన్ని టోకెన్‌లను నిర్వహించడానికి `_operator` అనుమతించబడిందా అని ఈ ఫంక్షన్ తనిఖీ చేస్తుంది. +బహుళ ఆపరేటర్లు ఉండవచ్చు కాబట్టి, ఇది రెండు స్థాయిల HashMap. + +#### బదిలీ సహాయక ఫంక్షన్‌లు {#transfer-helpers} + +ఈ ఫంక్షన్‌లు టోకెన్‌లను బదిలీ చేయడం లేదా నిర్వహించడంలో భాగంగా ఉండే ఆపరేషన్‌లను అమలు చేస్తాయి. + +```python + +### TRANSFER FUNCTION HELPERS ### + +@view +@internal +``` + +ఈ డెకరేషన్, `@internal`, అంటే ఈ ఫంక్షన్ అదే కాంట్రాక్ట్‌లోని +ఇతర ఫంక్షన్‌ల నుండి మాత్రమే అందుబాటులో ఉంటుంది. సంప్రదాయం ప్రకారం, ఈ ఫంక్షన్ పేర్లు కూడా అండర్‌స్కోర్ (`_`)తో ప్రారంభమవుతాయి. + +```python +def _isApprovedOrOwner(_spender: address, _tokenId: uint256) -> bool: + """ + @dev ఇవ్వబడిన స్పెండర్ ఇవ్వబడిన టోకెన్ ఐడిని బదిలీ చేయగలరా లేదా అని తిరిగి ఇస్తుంది + @param spender ప్రశ్నించాల్సిన స్పెండర్ చిరునామా + @param tokenId బదిలీ చేయవలసిన టోకెన్ యొక్క uint256 ఐడి + @return bool msg.sender ఇవ్వబడిన టోకెన్ ఐడికి ఆమోదించబడిందా, + యజమాని యొక్క ఆపరేటర్ కాదా, లేదా టోకెన్ యజమాని కాదా అని + """ + owner: address = self.idToOwner[_tokenId] + spenderIsOwner: bool = owner == _spender + spenderIsApproved: bool = _spender == self.idToApprovals[_tokenId] + spenderIsApprovedForAll: bool = (self.ownerToOperators[owner])[_spender] + return (spenderIsOwner or spenderIsApproved) or spenderIsApprovedForAll +``` + +ఒక చిరునామా ఒక టోకెన్‌ను బదిలీ చేయడానికి అనుమతించబడటానికి మూడు మార్గాలు ఉన్నాయి: + +1. చిరునామా టోకెన్ యజమాని +2. ఆ టోకెన్‌ను ఖర్చు చేయడానికి చిరునామా ఆమోదించబడింది +3. చిరునామా టోకెన్ యజమానికి ఆపరేటర్ + +పై ఫంక్షన్ ఒక వ్యూ కావచ్చు ఎందుకంటే ఇది స్టేట్‌ను మార్చదు. నిర్వహణ ఖర్చులను తగ్గించడానికి, ఏదైనా +వ్యూ కాగల ఫంక్షన్ _అవశ్యంగా_ వ్యూ అయి ఉండాలి. + +```python +@internal +def _addTokenTo(_to: address, _tokenId: uint256): + """ + @dev ఇవ్వబడిన చిరునామాకు ఒక NFTని జోడించండి + `_tokenId` ఎవరికైనా స్వంతమైతే త్రో చేస్తుంది. + """ + # `_tokenId` ఎవరికైనా స్వంతమైతే త్రో చేస్తుంది + assert self.idToOwner[_tokenId] == ZERO_ADDRESS + # యజమానిని మార్చండి + self.idToOwner[_tokenId] = _to + # కౌంట్ ట్రాకింగ్‌ను మార్చండి + self.ownerToNFTokenCount[_to] += 1 + + +@internal +def _removeTokenFrom(_from: address, _tokenId: uint256): + """ + @dev ఇవ్వబడిన చిరునామా నుండి ఒక NFTని తీసివేయండి + `_from` ప్రస్తుత యజమాని కాకపోతే త్రో చేస్తుంది. + """ + # `_from` ప్రస్తుత యజమాని కాకపోతే త్రో చేస్తుంది + assert self.idToOwner[_tokenId] == _from + # యజమానిని మార్చండి + self.idToOwner[_tokenId] = ZERO_ADDRESS + # కౌంట్ ట్రాకింగ్‌ను మార్చండి + self.ownerToNFTokenCount[_from] -= 1 +``` + +బదిలీతో సమస్య ఉన్నప్పుడు మేము కాల్‌ను తిరిగి మార్చుతాము. + +```python +@internal +def _clearApproval(_owner: address, _tokenId: uint256): + """ + @dev ఇవ్వబడిన చిరునామా యొక్క ఆమోదాన్ని క్లియర్ చేయండి + `_owner` ప్రస్తుత యజమాని కాకపోతే త్రో చేస్తుంది. + """ + # `_owner` ప్రస్తుత యజమాని కాకపోతే త్రో చేస్తుంది + assert self.idToOwner[_tokenId] == _owner + if self.idToApprovals[_tokenId] != ZERO_ADDRESS: + # ఆమోదాలను రీసెట్ చేయండి + self.idToApprovals[_tokenId] = ZERO_ADDRESS +``` + +అవసరమైతే మాత్రమే విలువను మార్చండి. స్టేట్ వేరియబుల్స్ నిల్వలో ఉంటాయి. నిల్వకు వ్రాయడం అనేది +EVM (Ethereum వర్చువల్ మెషీన్) చేసే అత్యంత ఖరీదైన ఆపరేషన్‌లలో ఒకటి ([గ్యాస్](/developers/docs/gas/) పరంగా). అందువల్ల, దానిని తగ్గించడం మంచిది, ఇప్పటికే ఉన్న విలువను +వ్రాయడానికి కూడా అధిక ఖర్చు అవుతుంది. + +```python +@internal +def _transferFrom(_from: address, _to: address, _tokenId: uint256, _sender: address): + """ + @dev ఒక NFT బదిలీని అమలు చేయండి. + `msg.sender` ప్రస్తుత యజమాని, అధీకృత ఆపరేటర్ లేదా ఈ NFTకి ఆమోదించబడిన చిరునామా కాకపోతే త్రో చేస్తుంది. (గమనిక: ప్రైవేట్ ఫంక్షన్‌లో `msg.sender` అనుమతించబడదు కాబట్టి `_sender`ను పాస్ చేయండి.) + `_to` సున్నా చిరునామా అయితే త్రో చేస్తుంది. + `_from` ప్రస్తుత యజమాని కాకపోతే త్రో చేస్తుంది. + `_tokenId` చెల్లుబాటు అయ్యే NFT కాకపోతే త్రో చేస్తుంది. + """ +``` + +టోకెన్‌లను బదిలీ చేయడానికి రెండు మార్గాలు (సాధారణ మరియు సురక్షిత) ఉన్నందున మాకు ఈ అంతర్గత ఫంక్షన్ ఉంది, కానీ +ఆడిటింగ్ సులభతరం చేయడానికి మేము దానిని చేసే కోడ్‌లో ఒకే ఒక్క స్థానం కావాలి. + +```python + # అవసరాలను తనిఖీ చేయండి + assert self._isApprovedOrOwner(_sender, _tokenId) + # `_to` సున్నా చిరునామా అయితే త్రో చేస్తుంది + assert _to != ZERO_ADDRESS + # ఆమోదాన్ని క్లియర్ చేయండి. `_from` ప్రస్తుత యజమాని కాకపోతే త్రో చేస్తుంది + self._clearApproval(_from, _tokenId) + # NFTని తీసివేయండి. `_tokenId` చెల్లుబాటు అయ్యే NFT కాకపోతే త్రో చేస్తుంది + self._removeTokenFrom(_from, _tokenId) + # NFTని జోడించండి + self._addTokenTo(_to, _tokenId) + # బదిలీని లాగ్ చేయండి + log Transfer(_from, _to, _tokenId) +``` + +Vyperలో ఒక ఈవెంట్‌ను విడుదల చేయడానికి మీరు `log` స్టేట్‌మెంట్‌ను ఉపయోగిస్తారు ([మరిన్ని వివరాల కోసం ఇక్కడ చూడండి](https://vyper.readthedocs.io/en/latest/event-logging.html#event-logging)). + +#### బదిలీ ఫంక్షన్‌లు {#transfer-funs} + +```python + +### TRANSFER FUNCTIONS ### + +@external +def transferFrom(_from: address, _to: address, _tokenId: uint256): + """ + @dev `msg.sender` ప్రస్తుత యజమాని, అధీకృత ఆపరేటర్ లేదా ఈ NFTకి ఆమోదించబడిన చిరునామా కాకపోతే త్రో చేస్తుంది. + `_from` ప్రస్తుత యజమాని కాకపోతే త్రో చేస్తుంది. + `_to` సున్నా చిరునామా అయితే త్రో చేస్తుంది. + `_tokenId` చెల్లుబాటు అయ్యే NFT కాకపోతే త్రో చేస్తుంది. + @notice `_to` NFTలను స్వీకరించగలదని నిర్ధారించుకోవాల్సిన బాధ్యత కాలర్‌పై ఉంటుంది, లేకపోతే + అవి శాశ్వతంగా కోల్పోవచ్చు. + @param _from NFT యొక్క ప్రస్తుత యజమాని. + @param _to కొత్త యజమాని. + @param _tokenId బదిలీ చేయవలసిన NFT. + """ + self._transferFrom(_from, _to, _tokenId, msg.sender) +``` + +ఈ ఫంక్షన్ మిమ్మల్ని ఏకపక్ష చిరునామాకు బదిలీ చేయడానికి అనుమతిస్తుంది. చిరునామా ఒక వినియోగదారు లేదా టోకెన్‌లను ఎలా బదిలీ చేయాలో తెలిసిన కాంట్రాక్ట్ కాకపోతే, +మీరు బదిలీ చేసే ఏ టోకెన్ అయినా ఆ చిరునామాలో చిక్కుకుపోయి పనికిరానిదిగా ఉంటుంది. + +```python +@external +def safeTransferFrom( + _from: address, + _to: address, + _tokenId: uint256, + _data: Bytes[1024]=b"" + ): + """ + @dev ఒక NFT యాజమాన్యాన్ని ఒక చిరునామా నుండి మరొక చిరునామాకు బదిలీ చేస్తుంది. + `msg.sender` ప్రస్తుత యజమాని, అధీకృత ఆపరేటర్ లేదా ఈ + NFTకి ఆమోదించబడిన చిరునామా కాకపోతే త్రో చేస్తుంది. + `_from` ప్రస్తుత యజమాని కాకపోతే త్రో చేస్తుంది. + `_to` సున్నా చిరునామా అయితే త్రో చేస్తుంది. + `_tokenId` చెల్లుబాటు అయ్యే NFT కాకపోతే త్రో చేస్తుంది. + `_to` ఒక స్మార్ట్ కాంట్రాక్ట్ అయితే, అది `_to`పై `onERC721Received`ను పిలుస్తుంది మరియు + తిరిగి వచ్చే విలువ `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` కాకపోతే త్రో చేస్తుంది. + గమనిక: bytes4 అనేది ప్యాడింగ్‌తో bytes32 ద్వారా సూచించబడుతుంది + @param _from NFT యొక్క ప్రస్తుత యజమాని. + @param _to కొత్త యజమాని. + @param _tokenId బదిలీ చేయవలసిన NFT. + @param _data `_to`కు కాల్‌లో పంపబడిన, నిర్దిష్ట ఫార్మాట్ లేని అదనపు డేటా. + """ + self._transferFrom(_from, _to, _tokenId, msg.sender) +``` + +మొదట బదిలీ చేయడం సరైందే, ఎందుకంటే ఏదైనా సమస్య ఉంటే మేము ఎలాగూ తిరిగి మార్చుతాము, +కాబట్టి కాల్‌లో చేసిన ప్రతిదీ రద్దు చేయబడుతుంది. + +```python + if _to.is_contract: # `_to` కాంట్రాక్ట్ చిరునామా కాదా అని తనిఖీ చేయండి +``` + +మొదట చిరునామా ఒక కాంట్రాక్ట్ కాదా అని తనిఖీ చేయండి (దానికి కోడ్ ఉంటే). కాకపోతే, అది ఒక వినియోగదారు చిరునామా +అని భావించండి మరియు వినియోగదారు టోకెన్‌ను ఉపయోగించగలరు లేదా దానిని బదిలీ చేయగలరు. కానీ అది మిమ్మల్ని తప్పుడు భద్రతా భావనలోకి +నెట్టనివ్వకండి. మీరు `safeTransferFrom`తో కూడా టోకెన్‌లను కోల్పోవచ్చు, ఎవరికీ ప్రైవేట్ కీ తెలియని +చిరునామాకు వాటిని బదిలీ చేస్తే. + +```python + returnValue: bytes32 = ERC721Receiver(_to).onERC721Received(msg.sender, _from, _tokenId, _data) +``` + +ఇది ERC-721 టోకెన్‌లను స్వీకరించగలదా అని చూడటానికి లక్ష్య కాంట్రాక్ట్‌ను పిలవండి. + +```python + # బదిలీ గమ్యస్థానం 'onERC721Received'ను అమలు చేయని కాంట్రాక్ట్ అయితే త్రో చేస్తుంది + assert returnValue == method_id("onERC721Received(address,address,uint256,bytes)", output_type=bytes32) +``` + +గమ్యస్థానం ఒక కాంట్రాక్ట్ అయితే, కానీ అది ERC-721 టోకెన్‌లను అంగీకరించనిది (లేదా ఈ +నిర్దిష్ట బదిలీని అంగీకరించకూడదని నిర్ణయించుకున్నది), తిరిగి మార్చండి. + +```python +@external +def approve(_approved: address, _tokenId: uint256): + """ + @dev ఒక NFT కోసం ఆమోదించబడిన చిరునామాను సెట్ చేయండి లేదా పునరుద్ఘాటించండి. సున్నా చిరునామా ఆమోదించబడిన చిరునామా లేదని సూచిస్తుంది. + `msg.sender` ప్రస్తుత NFT యజమాని, లేదా ప్రస్తుత యజమాని యొక్క అధీకృత ఆపరేటర్ కాకపోతే త్రో చేస్తుంది. + `_tokenId` చెల్లుబాటు అయ్యే NFT కాకపోతే త్రో చేస్తుంది. (గమనిక: ఇది EIPలో వ్రాయబడలేదు) + `_approved` ప్రస్తుత యజమాని అయితే త్రో చేస్తుంది. (గమనిక: ఇది EIPలో వ్రాయబడలేదు) + @param _approved ఇవ్వబడిన NFT ఐడి కోసం ఆమోదించవలసిన చిరునామా. + @param _tokenId ఆమోదించవలసిన టోకెన్ యొక్క ఐడి. + """ + owner: address = self.idToOwner[_tokenId] + # `_tokenId` చెల్లుబాటు అయ్యే NFT కాకపోతే త్రో చేస్తుంది + assert owner != ZERO_ADDRESS + # `_approved` ప్రస్తుత యజమాని అయితే త్రో చేస్తుంది + assert _approved != owner +``` + +సంప్రదాయం ప్రకారం, మీరు ఆమోదించేవారు ఉండకూడదనుకుంటే, మీరు సున్నా చిరునామాను నియమిస్తారు, మిమ్మల్ని కాదు. + +```python + # అవసరాలను తనిఖీ చేయండి + senderIsOwner: bool = self.idToOwner[_tokenId] == msg.sender + senderIsApprovedForAll: bool = (self.ownerToOperators[owner])[msg.sender] + assert (senderIsOwner or senderIsApprovedForAll) +``` + +ఆమోదాన్ని సెట్ చేయడానికి మీరు యజమాని కావచ్చు, లేదా యజమానిచే అధీకృతం చేయబడిన ఆపరేటర్ కావచ్చు. + +```python + # ఆమోదాన్ని సెట్ చేయండి + self.idToApprovals[_tokenId] = _approved + log Approval(owner, _approved, _tokenId) + + +@external +def setApprovalForAll(_operator: address, _approved: bool): + """ + @dev `msg.sender` యొక్క అన్ని ఆస్తులను నిర్వహించడానికి మూడవ పక్షం ("ఆపరేటర్") కోసం ఆమోదాన్ని + ఎనేబుల్ లేదా డిసేబుల్ చేస్తుంది. ఇది ApprovalForAll ఈవెంట్‌ను కూడా విడుదల చేస్తుంది. + `_operator` `msg.sender` అయితే త్రో చేస్తుంది. (గమనిక: ఇది EIPలో వ్రాయబడలేదు) + @notice పంపినవారు ఆ సమయంలో ఏ టోకెన్‌లను కలిగి ఉండకపోయినా ఇది పనిచేస్తుంది. + @param _operator అధీకృత ఆపరేటర్ల సెట్‌కు జోడించవలసిన చిరునామా. + @param _approved ఆపరేటర్ ఆమోదించబడితే నిజం, ఆమోదాన్ని రద్దు చేయడానికి తప్పు. + """ + # `_operator` `msg.sender` అయితే త్రో చేస్తుంది + assert _operator != msg.sender + self.ownerToOperators[msg.sender][_operator] = _approved + log ApprovalForAll(msg.sender, _operator, _approved) +``` + +#### కొత్త టోకెన్‌లను మింట్ చేయండి మరియు ఉన్నవాటిని నాశనం చేయండి {#mint-burn} + +కాంట్రాక్ట్‌ను సృష్టించిన ఖాతా `మింటర్`, ఇది కొత్త NFTలను మింట్ చేయడానికి +అధీకృతం చేయబడిన సూపర్ వినియోగదారు. అయితే, ఉన్న టోకెన్‌లను బర్న్ చేయడానికి కూడా ఇది అనుమతించబడదు. యజమాని లేదా యజమానిచే అధీకృతం చేయబడిన సంస్థ +మాత్రమే అలా చేయగలదు. + +```python +### MINT & BURN FUNCTIONS ### + +@external +def mint(_to: address, _tokenId: uint256) -> bool: +``` + +ఈ ఫంక్షన్ ఎల్లప్పుడూ `True`ని తిరిగి ఇస్తుంది, ఎందుకంటే ఆపరేషన్ విఫలమైతే అది తిరిగి మార్చబడుతుంది. + +```python + """ + @dev టోకెన్‌లను మింట్ చేయడానికి ఫంక్షన్ + `msg.sender` మింటర్ కాకపోతే త్రో చేస్తుంది. + `_to` సున్నా చిరునామా అయితే త్రో చేస్తుంది. + `_tokenId` ఎవరికైనా స్వంతమైతే త్రో చేస్తుంది. + @param _to మింట్ చేయబడిన టోకెన్‌లను స్వీకరించే చిరునామా. + @param _tokenId మింట్ చేయవలసిన టోకెన్ ఐడి. + @return ఆపరేషన్ విజయవంతమైందా లేదా అని సూచించే బూలియన్. + """ + # `msg.sender` మింటర్ కాకపోతే త్రో చేస్తుంది + assert msg.sender == self.minter +``` + +మింటర్ మాత్రమే (ERC-721 కాంట్రాక్ట్‌ను సృష్టించిన ఖాతా) కొత్త టోకెన్‌లను మింట్ చేయగలదు. భవిష్యత్తులో మనం మింటర్ గుర్తింపును మార్చాలనుకుంటే ఇది ఒక +సమస్య కావచ్చు. ఒక ప్రొడక్షన్ కాంట్రాక్ట్‌లో మీరు బహుశా మింటర్ +అధికారాలను వేరొకరికి బదిలీ చేయడానికి అనుమతించే ఫంక్షన్‌ను కోరుకుంటారు. + +```python + # `_to` సున్నా చిరునామా అయితే త్రో చేస్తుంది + assert _to != ZERO_ADDRESS + # NFTని జోడించండి. `_tokenId` ఎవరికైనా స్వంతమైతే త్రో చేస్తుంది + self._addTokenTo(_to, _tokenId) + log Transfer(ZERO_ADDRESS, _to, _tokenId) + return True +``` + +సంప్రదాయం ప్రకారం, కొత్త టోకెన్ల మింటింగ్ సున్నా చిరునామా నుండి బదిలీగా పరిగణించబడుతుంది. + +```python + +@external +def burn(_tokenId: uint256): + """ + @dev ఒక నిర్దిష్ట ERC721 టోకెన్‌ను బర్న్ చేస్తుంది. + `msg.sender` ప్రస్తుత యజమాని, అధీకృత ఆపరేటర్ లేదా ఈ + NFTకి ఆమోదించబడిన చిరునామా కాకపోతే త్రో చేస్తుంది. + `_tokenId` చెల్లుబాటు అయ్యే NFT కాకపోతే త్రో చేస్తుంది. + @param _tokenId బర్న్ చేయవలసిన ERC721 టోకెన్ యొక్క uint256 ఐడి. + """ + # అవసరాలను తనిఖీ చేయండి + assert self._isApprovedOrOwner(msg.sender, _tokenId) + owner: address = self.idToOwner[_tokenId] + # `_tokenId` చెల్లుబాటు అయ్యే NFT కాకపోతే త్రో చేస్తుంది + assert owner != ZERO_ADDRESS + self._clearApproval(owner, _tokenId) + self._removeTokenFrom(owner, _tokenId) + log Transfer(owner, ZERO_ADDRESS, _tokenId) +``` + +ఒక టోకెన్‌ను బదిలీ చేయడానికి అనుమతించబడిన ఎవరైనా దానిని బర్న్ చేయడానికి అనుమతించబడతారు. బర్న్ సున్నా చిరునామాకు బదిలీకి సమానంగా కనిపించినప్పటికీ, +సున్నా చిరునామా వాస్తవానికి టోకెన్‌ను స్వీకరించదు. ఇది టోకెన్ కోసం ఉపయోగించిన మొత్తం నిల్వను ఖాళీ చేయడానికి మాకు అనుమతిస్తుంది, +ఇది లావాదేవీ యొక్క గ్యాస్ ఖర్చును తగ్గిస్తుంది. + +## ఈ కాంట్రాక్ట్‌ను ఉపయోగించడం {#using-contract} + +సోలిడిటీకి విరుద్ధంగా, Vyperకు ఇన్హెరిటెన్స్ లేదు. కోడ్‌ను స్పష్టంగా మరియు అందువల్ల సురక్షితం చేయడానికి +ఇది ఉద్దేశపూర్వక డిజైన్ ఎంపిక. కాబట్టి మీ స్వంత Vyper ERC-721 కాంట్రాక్ట్‌ను సృష్టించడానికి మీరు ఈ +కాంట్రాక్ట్‌ను తీసుకుని, మీకు కావలసిన వ్యాపార తర్కాన్ని అమలు చేయడానికి దాన్ని +సవరించండి. + +## ముగింపు {#conclusion} + +సమీక్ష కోసం, ఈ కాంట్రాక్ట్‌లోని కొన్ని ముఖ్యమైన ఆలోచనలు ఇక్కడ ఉన్నాయి: + +- సురక్షిత బదిలీతో ERC-721 టోకెన్‌లను స్వీకరించడానికి, కాంట్రాక్ట్‌లు `ERC721Receiver` ఇంటర్‌ఫేస్‌ను అమలు చేయాలి. +- మీరు సురక్షిత బదిలీని ఉపయోగించినప్పటికీ, ప్రైవేట్ కీ తెలియని + చిరునామాకు పంపితే టోకెన్‌లు ఇప్పటికీ చిక్కుకుపోవచ్చు. +- ఒక ఆపరేషన్‌తో సమస్య ఉన్నప్పుడు, కేవలం వైఫల్య విలువను తిరిగి ఇచ్చే బదులు, + కాల్‌ను `revert` చేయడం మంచిది. +- ERC-721 టోకెన్‌లు వాటికి యజమాని ఉన్నప్పుడు ఉంటాయి. +- ఒక NFTని బదిలీ చేయడానికి అధీకృతం కావడానికి మూడు మార్గాలు ఉన్నాయి. మీరు యజమాని కావచ్చు, ఒక నిర్దిష్ట టోకెన్ కోసం ఆమోదించబడవచ్చు, + లేదా యజమాని యొక్క అన్ని టోకెన్‌లకు ఆపరేటర్ కావచ్చు. +- గత ఈవెంట్‌లు బ్లాక్ చైను వెలుపల మాత్రమే కనిపిస్తాయి. బ్లాక్ చైను లోపల నడుస్తున్న కోడ్ వాటిని చూడలేదు. + +ఇప్పుడు వెళ్లి సురక్షితమైన Vyper కాంట్రాక్ట్‌లను అమలు చేయండి. + +[నా మరిన్ని పనుల కోసం ఇక్కడ చూడండి](https://cryptodocguy.pro/). + diff --git a/public/content/translations/te/developers/tutorials/erc20-annotated-code/index.md b/public/content/translations/te/developers/tutorials/erc20-annotated-code/index.md new file mode 100644 index 00000000000..60ec55c4917 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/erc20-annotated-code/index.md @@ -0,0 +1,789 @@ +--- +title: "ERC-20 ఒప్పంద వాక్-త్రూ" +description: "OpenZeppelin ERC-20 ఒప్పందంలో ఏముంది మరియు అది అక్కడ ఎందుకు ఉంది?" +author: Ori Pomerantz +lang: te +tags: [ "దృఢత్వం", "erc-20" ] +skill: beginner +published: 2021-03-09 +--- + +## పరిచయం {#introduction} + +Ethereumకు అత్యంత సాధారణ ఉపయోగాలలో ఒకటి ఒక సమూహం వ్యాపారం చేయగల టోకెన్‌ను సృష్టించడం, ఒక రకంగా చెప్పాలంటే వారి స్వంత కరెన్సీ. ఈ టోకెన్లు సాధారణంగా ఒక ప్రామాణికాన్ని అనుసరిస్తాయి, +[ERC-20](/developers/docs/standards/tokens/erc-20/). ఈ ప్రమాణం, లిక్విడిటీ పూల్స్ మరియు వాలెట్లు వంటి సాధనాలను రాయడానికి వీలు కల్పిస్తుంది, ఇవి అన్ని ERC-20 +టోకెన్‌లతో పనిచేస్తాయి. ఈ వ్యాసంలో మేము +[OpenZeppelin సాలిడిటీ ERC20 అమలు](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol)ను, అలాగే +[ఇంటర్‌ఫేస్ నిర్వచనం](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol)ను విశ్లేషిస్తాము. + +ఇది వ్యాఖ్యానించబడిన సోర్స్ కోడ్. మీరు ERC-20ని అమలు చేయాలనుకుంటే, +[ఈ ట్యుటోరియల్ చదవండి](https://docs.openzeppelin.com/contracts/2.x/erc20-supply). + +## ఇంటర్‌ఫేస్ {#the-interface} + +ERC-20 వంటి ప్రమాణం యొక్క ఉద్దేశ్యం, వాలెట్లు మరియు వికేంద్రీకృత ఎక్స్ఛేంజీల వంటి అప్లికేషన్లలో పరస్పరం పనిచేసే అనేక టోకెన్ల అమలులను అనుమతించడం. దానిని సాధించడానికి, మేము ఒక +[ఇంటర్‌ఫేస్‌ను](https://www.geeksforgeeks.org/solidity/solidity-basics-of-interface/) సృష్టిస్తాము. టోకెన్ ఒప్పందాన్ని ఉపయోగించాల్సిన ఏదైనా కోడ్, ఇంటర్‌ఫేస్‌లో అదే నిర్వచనాలను ఉపయోగించవచ్చు మరియు దానిని ఉపయోగించే అన్ని టోకెన్ ఒప్పందాలతో అనుకూలంగా ఉంటుంది, అది +MetaMask వంటి వాలెట్ అయినా, etherscan.io వంటి డాప్ అయినా, లేదా లిక్విడిటీ పూల్ వంటి విభిన్న ఒప్పందం అయినా. + +![ERC-20 ఇంటర్‌ఫేస్ యొక్క ఉదాహరణ](erc20_interface.png) + +మీరు అనుభవజ్ఞుడైన ప్రోగ్రామర్ అయితే, మీరు [Java](https://www.w3schools.com/java/java_interface.asp)లో లేదా [C హెడర్ ఫైల్స్‌లో](https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html) కూడా ఇలాంటి నిర్మాణాలను చూసినట్లు గుర్తుండే ఉంటుంది. + +ఇది OpenZeppelin నుండి వచ్చిన [ERC-20 ఇంటర్‌ఫేస్](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol) యొక్క నిర్వచనం. ఇది [మానవులు చదవగలిగే ప్రమాణం](https://eips.ethereum.org/EIPS/eip-20) యొక్క సాలిడిటీ కోడ్‌లోకి అనువాదం. వాస్తవానికి, +ఏదైనా _ఎలా_ చేయాలో ఇంటర్‌ఫేస్ స్వయంగా నిర్వచించదు. అది కింద ఉన్న ఒప్పంద సోర్స్ కోడ్‌లో వివరించబడింది. + +  + +```solidity +// SPDX-License-Identifier: MIT +``` + +సాలిడిటీ ఫైళ్లు ఒక లైసెన్స్ ఐడెంటిఫైయర్‌ను కలిగి ఉండాలి. [మీరు ఇక్కడ లైసెన్స్‌ల జాబితాను చూడవచ్చు](https://spdx.org/licenses/). మీకు విభిన్న +లైసెన్స్ అవసరమైతే, వ్యాఖ్యలలో దానిని వివరించండి. + +  + +```solidity +pragma solidity >=0.6.0 <0.8.0; +``` + +సాలిడిటీ భాష ఇంకా వేగంగా అభివృద్ధి చెందుతోంది, మరియు కొత్త వెర్షన్లు పాత కోడ్‌తో అనుకూలంగా ఉండకపోవచ్చు +([ఇక్కడ చూడండి](https://docs.soliditylang.org/en/v0.7.0/070-breaking-changes.html)). అందువల్ల, కేవలం భాష యొక్క కనీస +వెర్షన్‌ను మాత్రమే కాకుండా, గరిష్ట వెర్షన్‌ను కూడా పేర్కొనడం మంచిది, ఇది మీరు కోడ్‌ను పరీక్షించిన తాజాది. + +  + +```solidity +/** + * @dev EIPలో నిర్వచించిన విధంగా ERC20 ప్రమాణం యొక్క ఇంటర్‌ఫేస్. + */ +``` + +వ్యాఖ్యలోని `@dev` అనేది [NatSpec ఫార్మాట్](https://docs.soliditylang.org/en/develop/natspec-format.html)లో ఒక భాగం, ఇది సోర్స్ కోడ్ నుండి +డాక్యుమెంటేషన్‌ను రూపొందించడానికి ఉపయోగపడుతుంది. + +  + +```solidity +interface IERC20 { +``` + +సంప్రదాయం ప్రకారం, ఇంటర్‌ఫేస్ పేర్లు `I`తో ప్రారంభమవుతాయి. + +  + +```solidity + /** + * @dev ఉనికిలో ఉన్న టోకెన్ల మొత్తాన్ని అందిస్తుంది. + */ + function totalSupply() external view returns (uint256); +``` + +ఈ ఫంక్షన్ `external`, అంటే [ఇది ఒప్పందం బయట నుండి మాత్రమే పిలువబడుతుంది](https://docs.soliditylang.org/en/v0.7.0/cheatsheet.html#index-2). +ఇది ఒప్పందంలోని టోకెన్ల మొత్తం సరఫరాను తిరిగి ఇస్తుంది. ఈ విలువ ఇతీరియములో అత్యంత సాధారణ రకం, గుర్తులేని 256 బిట్స్ (256 బిట్స్ EVM యొక్క స్థానిక పదం పరిమాణం) ఉపయోగించి తిరిగి ఇవ్వబడుతుంది. ఈ ఫంక్షన్ కూడా ఒక `view`, అంటే ఇది స్టేట్‌ను మార్చదు, కాబట్టి దీనిని బ్లాక్ చైనులోని ప్రతి నోడ్ అమలు చేసే బదులు ఒకే నోడ్‌లో అమలు చేయవచ్చు. ఈ రకమైన ఫంక్షన్ లావాదేవీని సృష్టించదు మరియు [గ్యాస్](/developers/docs/gas/) ఖర్చు కాదు. + +**గమనిక:** సిద్ధాంతపరంగా, ఒక ఒప్పందం యొక్క సృష్టికర్త నిజమైన విలువ కంటే తక్కువ మొత్తం సరఫరాను తిరిగి ఇవ్వడం ద్వారా మోసం చేయవచ్చు, ప్రతి టోకెన్ వాస్తవానికి ఉన్నదానికంటే విలువైనదిగా కనిపించేలా చేస్తుంది. అయితే, ఆ భయం బ్లాక్ చైను యొక్క నిజమైన స్వభావాన్ని విస్మరిస్తుంది. బ్లాక్ చైనులో జరిగే ప్రతిదీ ప్రతి నోడ్ ద్వారా ధృవీకరించబడుతుంది. దీనిని సాధించడానికి, ప్రతి ఒప్పందం యొక్క మెషిన్ లాంగ్వేజ్ కోడ్ మరియు నిల్వ ప్రతి నోడ్‌లో అందుబాటులో ఉంటుంది. మీ ఒప్పందం కోసం మీరు సాలిడిటీ +కోడ్‌ను ప్రచురించాల్సిన అవసరం లేనప్పటికీ, మీరు సోర్స్ కోడ్‌ను మరియు అది కంపైల్ చేయబడిన సాలిడిటీ వెర్షన్‌ను ప్రచురిస్తే తప్ప మిమ్మల్ని ఎవరూ సీరియస్‌గా తీసుకోరు, తద్వారా మీరు అందించిన మెషిన్ లాంగ్వేజ్ కోడ్‌తో దానిని సరిపోల్చి ధృవీకరించవచ్చు. +ఉదాహరణకు, [ఈ ఒప్పందం](https://eth.blockscout.com/address/0xa530F85085C6FE2f866E7FdB716849714a89f4CD?tab=contract) చూడండి. + +  + +```solidity + /** + * @dev `ఖాతా` యాజమాన్యంలో ఉన్న టోకెన్ల మొత్తాన్ని అందిస్తుంది. + */ + function balanceOf(address account) external view returns (uint256); +``` + +పేరు చెప్పినట్లు, `balanceOf` ఒక ఖాతా యొక్క బ్యాలెన్స్‌ను తిరిగి ఇస్తుంది. ఇతీరియము ఖాతాలు సాలిడిటీలో `చిరునామా` రకం ఉపయోగించి గుర్తించబడతాయి, ఇది 160 బిట్‌లను కలిగి ఉంటుంది. +ఇది `external` మరియు `view` కూడా. + +  + +```solidity + /** + * @dev కాలర్ ఖాతా నుండి `గ్రహీత`కు `మొత్తం` టోకెన్లను తరలిస్తుంది. + * + * ఆపరేషన్ విజయవంతమైందో లేదో సూచించే బూలియన్ విలువను తిరిగి ఇస్తుంది. + * + * ఒక {Transfer} ఈవెంట్‌ను విడుదల చేస్తుంది. + */ + function transfer(address recipient, uint256 amount) external returns (bool); +``` + +`బదిలీ` ఫంక్షన్ కాలర్ నుండి వేరే చిరునామాకు టోకెన్లను బదిలీ చేస్తుంది. ఇందులో స్టేట్ మార్పు ఉంటుంది, కాబట్టి ఇది `view` కాదు. +ఒక వినియోగదారు ఈ ఫంక్షన్‌ను పిలిచినప్పుడు, అది లావాదేవీని సృష్టిస్తుంది మరియు గ్యాస్ ఖర్చవుతుంది. ఇది బ్లాక్ చైనులో ఉన్న ప్రతిఒక్కరికీ ఈ సంఘటన గురించి తెలియజేయడానికి `Transfer` అనే ఈవెంట్‌ను కూడా విడుదల చేస్తుంది. + +ఫంక్షన్ రెండు విభిన్న రకాల కాలర్‌ల కోసం రెండు రకాల అవుట్‌పుట్‌లను కలిగి ఉంది: + +- యూజర్ ఇంటర్‌ఫేస్ నుండి నేరుగా ఫంక్షన్‌ను కాల్ చేసే వినియోగదారులు. సాధారణంగా వినియోగదారు లావాదేవీని సమర్పించి, ప్రతిస్పందన కోసం వేచి ఉండడు, దీనికి నిరవధిక సమయం పట్టవచ్చు. లావాదేవీ రసీదు (ఇది లావాదేవీ హాష్ ద్వారా గుర్తించబడుతుంది) కోసం వెతకడం ద్వారా లేదా + `Transfer` ఈవెంట్ కోసం వెతకడం ద్వారా వినియోగదారు ఏమి జరిగిందో చూడవచ్చు. +- మొత్తం లావాదేవీలో భాగంగా ఫంక్షన్‌ను కాల్ చేసే ఇతర ఒప్పందాలు. ఆ ఒప్పందాలు ఫలితాన్ని వెంటనే పొందుతాయి, ఎందుకంటే అవి అదే లావాదేవీలో నడుస్తాయి, కాబట్టి అవి ఫంక్షన్ రిటర్న్ విలువను ఉపయోగించుకోవచ్చు. + +ఒప్పందం యొక్క స్టేట్‌ను మార్చే ఇతర ఫంక్షన్‌ల ద్వారా కూడా అదే రకమైన అవుట్‌పుట్ సృష్టించబడుతుంది. + +  + +అలవెన్సులు ఒక ఖాతాను వేరొక యజమానికి చెందిన కొన్ని టోకెన్లను ఖర్చు చేయడానికి అనుమతిస్తాయి. +ఇది ఉపయోగకరంగా ఉంటుంది, ఉదాహరణకు, అమ్మకందారులుగా వ్యవహరించే ఒప్పందాల కోసం. ఒప్పందాలు ఈవెంట్‌లను పర్యవేక్షించలేవు, కాబట్టి కొనుగోలుదారు నేరుగా అమ్మకందారు ఒప్పందానికి టోకెన్‌లను బదిలీ చేస్తే, ఆ ఒప్పందానికి అది చెల్లించబడిందని తెలియదు. బదులుగా, కొనుగోలుదారు అమ్మకందారు ఒప్పందాన్ని ఒక నిర్దిష్ట మొత్తాన్ని ఖర్చు చేయడానికి అనుమతిస్తాడు, మరియు అమ్మకందారు ఆ మొత్తాన్ని బదిలీ చేస్తాడు. +ఇది అమ్మకందారు ఒప్పందం పిలిచే ఒక ఫంక్షన్ ద్వారా జరుగుతుంది, కాబట్టి అమ్మకందారు ఒప్పందం అది విజయవంతమైందో లేదో తెలుసుకోగలదు. + +```solidity + /** + * @dev `ఖర్చుదారు` {transferFrom} ద్వారా `యజమాని` తరపున ఖర్చు చేయడానికి అనుమతించబడే మిగిలిన టోకెన్ల సంఖ్యను తిరిగి ఇస్తుంది. ఇది డిఫాల్ట్‌గా సున్నాగా ఉంటుంది. + * + * {approve} లేదా {transferFrom} పిలిచినప్పుడు ఈ విలువ మారుతుంది. + */ + function allowance(address owner, address spender) external view returns (uint256); +``` + +`allowance` ఫంక్షన్ ఒక చిరునామా (`యజమాని`) మరొక చిరునామా (`ఖర్చుదారు`)కు ఎంత ఖర్చు చేయడానికి అనుమతి ఇస్తుందో చూడటానికి ఎవరికైనా అనుమతిస్తుంది. + +  + +```solidity + /** + * @dev కాలర్ యొక్క టోకెన్లపై `ఖర్చుదారు` యొక్క అలవెన్సుగా `మొత్తాన్ని` సెట్ చేస్తుంది. + * + * ఆపరేషన్ విజయవంతమైందో లేదో సూచించే బూలియన్ విలువను తిరిగి ఇస్తుంది. + * + * ముఖ్యం: ఈ పద్ధతితో అలవెన్సును మార్చడం వలన దురదృష్టవశాత్తు లావాదేవీల క్రమం ద్వారా ఎవరైనా పాత మరియు కొత్త అలవెన్సు రెండింటినీ ఉపయోగించుకునే ప్రమాదం ఉందని తెలుసుకోండి. ఈ రేస్ కండిషన్‌ను తగ్గించడానికి ఒక సాధ్యమైన పరిష్కారం మొదట ఖర్చుదారు యొక్క అలవెన్సును 0కి తగ్గించి, ఆపై కావలసిన విలువను సెట్ చేయడం: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 + * + * ఒక {Approval} ఈవెంట్‌ను విడుదల చేస్తుంది. + */ + function approve(address spender, uint256 amount) external returns (bool); +``` + +`approve` ఫంక్షన్ ఒక అలవెన్సును సృష్టిస్తుంది. దానిని ఎలా దుర్వినియోగం చేయవచ్చనే సందేశాన్ని తప్పకుండా చదవండి. ఇతీరియములో మీరు మీ స్వంత లావాదేవీల క్రమాన్ని నియంత్రించగలరు, +కానీ ఇతర వ్యక్తుల లావాదేవీలు ఏ క్రమంలో అమలు చేయబడతాయో మీరు నియంత్రించలేరు, అవతలి పక్షం యొక్క లావాదేవీ జరిగిందని మీరు చూసే వరకు మీరు మీ స్వంత లావాదేవీని సమర్పించకపోతే తప్ప. + +  + +```solidity + /** + * @dev `అలవెన్స్` మెకానిజం ఉపయోగించి `పంపినవారి` నుండి `గ్రహీత`కు `మొత్తం` టోకెన్‌లను తరలిస్తుంది. + * ఆ తర్వాత కాలర్ యొక్క `అలవెన్స్` నుండి `amount` తీసివేయబడుతుంది. + * + * ఆపరేషన్ విజయవంతమైందో లేదో సూచించే బూలియన్ విలువను తిరిగి ఇస్తుంది. + * + * ఒక {Transfer} ఈవెంట్‌ను విడుదల చేస్తుంది. + */ + function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); +``` + +చివరగా, `అలవెన్స్‌`ను వాస్తవంగా ఖర్చు చేయడానికి ఖర్చు చేసేవారు `transferFrom`ను ఉపయోగిస్తారు. + +  + +```solidity + /** + * @dev ఒక ఖాతా (`from`) నుండి మరొక ఖాతాకు (`to`) `విలువ` టోకెన్‌లను తరలించినప్పుడు విడుదల చేయబడుతుంది. + * + * `విలువ` సున్నాగా ఉండవచ్చని గమనించండి. + */ + event Transfer(address indexed from, address indexed to, uint256 value); + + /** + * @dev {approve}కు కాల్ చేయడం ద్వారా `యజమాని` కోసం `ఖర్చు చేసేవారి` యొక్క అలవెన్స్ సెట్ చేయబడినప్పుడు విడుదల చేయబడుతుంది. + * `విలువ` అనేది కొత్త అలవెన్స్. + */ + event Approval(address indexed owner, address indexed spender, uint256 value); +} +``` + +ERC-20 కాంట్రాక్ట్ యొక్క స్థితి మారినప్పుడు ఈ ఈవెంట్‌లు విడుదల చేయబడతాయి. + +## వాస్తవ కాంట్రాక్ట్ {#the-actual-contract} + +ఇది ERC-20 ప్రమాణాన్ని అమలు చేసే వాస్తవ కాంట్రాక్ట్, [ఇక్కడ నుండి తీసుకోబడింది](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol). +ఇది ఉన్నది ఉన్నట్లుగా ఉపయోగించడానికి ఉద్దేశించబడలేదు, కానీ మీరు దాని నుండి ఉపయోగపడే విధంగా విస్తరించడానికి [వారసత్వంగా](https://www.tutorialspoint.com/solidity/solidity_inheritance.htm) పొందవచ్చు. + +```solidity +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.0 <0.8.0; +``` + +  + +### దిగుమతి ప్రకటనలు {#import-statements} + +పైన ఉన్న ఇంటర్‌ఫేస్ నిర్వచనాలతో పాటు, కాంట్రాక్ట్ నిర్వచనం రెండు ఇతర ఫైల్‌లను దిగుమతి చేస్తుంది: + +```solidity + +import "../../GSN/Context.sol"; +import "./IERC20.sol"; +import "../../math/SafeMath.sol"; +``` + +- `GSN/Context.sol` అనేది ఈథర్ లేని వినియోగదారులు బ్లాక్‌చెయిన్‌ను ఉపయోగించడానికి అనుమతించే ఒక వ్యవస్థ అయిన [OpenGSN](https://www.opengsn.org/) ను ఉపయోగించడానికి అవసరమైన నిర్వచనాలు. ఇది పాత వెర్షన్ అని గమనించండి, మీరు OpenGSNతో ఇంటిగ్రేట్ చేయాలనుకుంటే [ఈ ట్యుటోరియల్‌ని ఉపయోగించండి](https://docs.opengsn.org/javascript-client/tutorial.html). +- [SafeMath లైబ్రరీ](https://ethereumdev.io/using-safe-math-library-to-prevent-from-overflows/), ఇది Solidity వెర్షన్లు **<0.8.0** కోసం అంకగణిత ఓవర్‌ఫ్లోలు/అండర్‌ఫ్లోలను నివారిస్తుంది. Solidity ≥0.8.0 లో, అంకగణిత కార్యకలాపాలు ఓవర్‌ఫ్లో/అండర్‌ఫ్లో అయినప్పుడు స్వయంచాలకంగా తిరిగి వస్తాయి, ఇది SafeMathను అనవసరంగా చేస్తుంది. ఈ కాంట్రాక్ట్ పాత కంపైలర్ వెర్షన్‌లతో వెనుకకు అనుకూలత కోసం SafeMathను ఉపయోగిస్తుంది. + +  + +ఈ వ్యాఖ్య కాంట్రాక్ట్ యొక్క ఉద్దేశ్యాన్ని వివరిస్తుంది. + +```solidity +/** + * @dev {IERC20} ఇంటర్‌ఫేస్ యొక్క అమలు. + * + * ఈ అమలు టోకెన్‌లు సృష్టించబడే విధానానికి అజ్ఞాతంగా ఉంటుంది. దీని అర్థం {_mint} ఉపయోగించి ఉత్పన్నమైన కాంట్రాక్ట్‌లో సరఫరా యంత్రాంగాన్ని జోడించాలి. + * సాధారణ యంత్రాంగం కోసం {ERC20PresetMinterPauser} చూడండి. + * + * చిట్కా: వివరణాత్మక రచన కోసం మా గైడ్ చూడండి + * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[సరఫరా యంత్రాంగాలను ఎలా అమలు చేయాలి]. + * + * మేము సాధారణ OpenZeppelin మార్గదర్శకాలను అనుసరించాము: వైఫల్యంపై `false` తిరిగి ఇవ్వడానికి బదులుగా ఫంక్షన్‌లు తిరిగి వస్తాయి. అయినప్పటికీ ఈ ప్రవర్తన సాంప్రదాయబద్ధమైనది + * మరియు ERC20 అప్లికేషన్‌ల అంచనాలతో విభేదించదు. + * + * అదనంగా, {transferFrom}కు కాల్‌లపై {Approval} ఈవెంట్ విడుదల చేయబడుతుంది. + * ఇది చెప్పబడిన ఈవెంట్‌లను వినడం ద్వారా అన్ని ఖాతాల కోసం అలవెన్స్‌ను పునర్నిర్మించడానికి అప్లికేషన్‌లను అనుమతిస్తుంది. EIP యొక్క ఇతర అమలులు ఈ ఈవెంట్‌లను విడుదల చేయకపోవచ్చు, + * ఎందుకంటే స్పెసిఫికేషన్ ద్వారా ఇది అవసరం లేదు. + * + * చివరగా, అలవెన్స్‌లను సెట్ చేయడం చుట్టూ ఉన్న ప్రసిద్ధ సమస్యలను తగ్గించడానికి ప్రామాణికం కాని {decreaseAllowance} మరియు {increaseAllowance} + * ఫంక్షన్‌లు జోడించబడ్డాయి. {IERC20-approve} చూడండి. + */ +``` + +### కాంట్రాక్ట్ నిర్వచనం {#contract-definition} + +```solidity +contract ERC20 is Context, IERC20 { +``` + +ఈ లైన్ వారసత్వాన్ని నిర్దేశిస్తుంది, ఈ సందర్భంలో OpenGSN కోసం పైన ఉన్న `IERC20` మరియు `Context` నుండి. + +  + +```solidity + using SafeMath for uint256; +``` + +ఈ లైన్ `SafeMath` లైబ్రరీని `uint256` రకానికి జతచేస్తుంది. మీరు ఈ లైబ్రరీని [ఇక్కడ](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/SafeMath.sol) కనుగొనవచ్చు. + +### వేరియబుల్ నిర్వచనాలు {#variable-definitions} + +ఈ నిర్వచనాలు కాంట్రాక్ట్ యొక్క స్థితి వేరియబుల్స్‌ను నిర్దేశిస్తాయి. ఈ వేరియబుల్స్ `private`గా ప్రకటించబడ్డాయి, కానీ దాని అర్థం బ్లాక్‌చెయిన్‌లోని ఇతర కాంట్రాక్టులు వాటిని చదవలేవు అని మాత్రమే. _బ్లాక్‌చెయిన్‌లో రహస్యాలు లేవు_, ప్రతి నోడ్‌లోని సాఫ్ట్‌వేర్ ప్రతి బ్లాక్‌లో ప్రతి కాంట్రాక్ట్ యొక్క స్థితిని కలిగి ఉంటుంది. సంప్రదాయం ప్రకారం, స్థితి వేరియబుల్స్‌కు `_` అని పేరు పెట్టారు. + +మొదటి రెండు వేరియబుల్స్ [మ్యాపింగ్‌లు](https://www.tutorialspoint.com/solidity/solidity_mappings.htm), అంటే అవి దాదాపుగా [అసోసియేటివ్ అర్రేల](https://wikipedia.org/wiki/Associative_array) వలె ప్రవర్తిస్తాయి, కీలు సంఖ్యా విలువలుగా ఉండటం మినహా. డిఫాల్ట్ (సున్నా) నుండి భిన్నమైన విలువలను కలిగి ఉన్న ఎంట్రీల కోసం మాత్రమే నిల్వ కేటాయించబడుతుంది. + +```solidity + mapping (address => uint256) private _balances; +``` + +మొదటి మ్యాపింగ్, `_balances`, ఈ టోకెన్ యొక్క చిరునామాలు మరియు వాటి సంబంధిత బ్యాలెన్స్‌లు. బ్యాలెన్స్‌ను యాక్సెస్ చేయడానికి, ఈ సింటాక్స్‌ను ఉపయోగించండి: `_balances[
]`. + +  + +```solidity + mapping (address => mapping (address => uint256)) private _allowances; +``` + +ఈ వేరియబుల్, `_allowances`, ముందుగా వివరించిన అలవెన్సులను నిల్వ చేస్తుంది. మొదటి ఇండెక్స్ టోకెన్‌ల యజమాని, మరియు రెండవది అలవెన్స్ ఉన్న కాంట్రాక్ట్. చిరునామా B యొక్క ఖాతా నుండి చిరునామా A ఖర్చు చేయగల మొత్తాన్ని యాక్సెస్ చేయడానికి, `_allowances[B][A]` ఉపయోగించండి. + +  + +```solidity + uint256 private _totalSupply; +``` + +పేరు సూచించినట్లుగా, ఈ వేరియబుల్ టోకెన్‌ల మొత్తం సరఫరాను ట్రాక్ చేస్తుంది. + +  + +```solidity + string private _name; + string private _symbol; + uint8 private _decimals; +``` + +ఈ మూడు వేరియబుల్స్ చదవడానికి వీలుగా మెరుగుపరచడానికి ఉపయోగించబడతాయి. మొదటి రెండు స్వీయ-వివరణాత్మకమైనవి, కానీ `_decimals` కాదు. + +ఒకవైపు, ఇతీరియములో ఫ్లోటింగ్ పాయింట్ లేదా భిన్నమైన వేరియబుల్స్ లేవు. మరోవైపు, మానవులు టోకెన్‌లను విభజించగలగడాన్ని ఇష్టపడతారు. కరెన్సీ కోసం ప్రజలు బంగారంపై స్థిరపడటానికి ఒక కారణం ఏమిటంటే, ఎవరైనా ఆవు విలువ గల బాతును కొనాలనుకున్నప్పుడు చిల్లర ఇవ్వడం కష్టంగా ఉండేది. + +పరిష్కారం పూర్ణాంకాలను ట్రాక్ చేయడం, కానీ నిజమైన టోకెన్‌కు బదులుగా దాదాపు విలువలేని భిన్నమైన టోకెన్‌ను లెక్కించడం. ఈథర్ విషయంలో, భిన్నమైన టోకెన్‌ను wei అని పిలుస్తారు, మరియు 10^18 wei ఒక ETHకి సమానం. రాసే సమయంలో, 10,000,000,000,000 wei సుమారుగా ఒక US లేదా యూరో సెంట్‌కు సమానం. + +అప్లికేషన్‌లు టోకెన్ బ్యాలెన్స్‌ను ఎలా ప్రదర్శించాలో తెలుసుకోవాలి. ఒక వినియోగదారుడికి 3,141,000,000,000,000,000 wei ఉంటే, అది 3.14 ETHనా? 31.41 ETH? 3,141 ETH? ఈథర్ విషయంలో ఇది ETHకి 10^18 weiగా నిర్వచించబడింది, కానీ మీ టోకెన్ కోసం మీరు వేరే విలువను ఎంచుకోవచ్చు. టోకెన్‌ను విభజించడం అర్థవంతం కాకపోతే, మీరు సున్నా `_decimals` విలువను ఉపయోగించవచ్చు. మీరు ETH వలె అదే ప్రమాణాన్ని ఉపయోగించాలనుకుంటే, **18** విలువను ఉపయోగించండి. + +### నిర్మాణకర్త {#the-constructor} + +```solidity + /** + * @dev {name} మరియు {symbol} కోసం విలువలను సెట్ చేస్తుంది, {decimals} ను 18 యొక్క డిఫాల్ట్ విలువతో ప్రారంభిస్తుంది. + * + * {decimals} కోసం వేరే విలువను ఎంచుకోవడానికి, {_setupDecimals} ఉపయోగించండి. + * + * ఈ మూడు విలువలు మార్పులేనివి: అవి నిర్మాణం సమయంలో ఒకసారి మాత్రమే సెట్ చేయబడతాయి. + */ + constructor (string memory name_, string memory symbol_) public { + // Solidity ≥0.7.0 లో, 'public' అంతర్లీనంగా ఉంటుంది మరియు దానిని వదిలివేయవచ్చు. + + _name = name_; + _symbol = symbol_; + _decimals = 18; + } +``` + +కాంట్రాక్ట్ మొదటిసారి సృష్టించబడినప్పుడు నిర్మాణకర్తను పిలుస్తారు. సంప్రదాయం ప్రకారం, ఫంక్షన్ పారామితులకు `_` అని పేరు పెట్టారు. + +### వినియోగదారు ఇంటర్‌ఫేస్ ఫంక్షన్‌లు {#user-interface-functions} + +```solidity + /** + * @dev టోకెన్ పేరును తిరిగి ఇస్తుంది. + */ + function name() public view returns (string memory) { + return _name; + } + + /** + * @dev టోకెన్ యొక్క చిహ్నాన్ని తిరిగి ఇస్తుంది, సాధారణంగా పేరు యొక్క చిన్న వెర్షన్. + */ + function symbol() public view returns (string memory) { + return _symbol; + } + + /** + * @dev దాని వినియోగదారు ప్రాతినిధ్యాన్ని పొందడానికి ఉపయోగించే దశాంశాల సంఖ్యను తిరిగి ఇస్తుంది. + * ఉదాహరణకు, `decimals` `2` కి సమానమైతే, `505` టోకెన్‌ల బ్యాలెన్స్ వినియోగదారునికి `5,05` (`505 / 10 ** 2`)గా ప్రదర్శించబడాలి. + * + * టోకెన్‌లు సాధారణంగా 18 విలువను ఎంచుకుంటాయి, ఈథర్ మరియు wei మధ్య సంబంధాన్ని అనుకరిస్తాయి. {_setupDecimals} పిలవబడకపోతే, {ERC20} ఉపయోగించే విలువ ఇదే. + * + * గమనిక: ఈ సమాచారం కేవలం _ప్రదర్శన_ ప్రయోజనాల కోసం మాత్రమే ఉపయోగించబడుతుంది: ఇది + * {IERC20-balanceOf} మరియు {IERC20-transfer}తో సహా కాంట్రాక్ట్ యొక్క ఏ అంకగణితాన్ని ఏ విధంగానూ ప్రభావితం చేయదు. + */ + function decimals() public view returns (uint8) { + return _decimals; + } +``` + +ఈ ఫంక్షన్‌లు, `name`, `symbol`, మరియు `decimals` వినియోగదారు ఇంటర్‌ఫేస్‌లకు మీ కాంట్రాక్ట్ గురించి తెలుసుకోవడానికి సహాయపడతాయి, తద్వారా వారు దానిని సరిగ్గా ప్రదర్శించగలరు. + +రిటర్న్ రకం `string memory`, అంటే మెమరీలో నిల్వ చేయబడిన స్ట్రింగ్‌ను తిరిగి ఇవ్వడం. స్ట్రింగ్‌ల వంటి వేరియబుల్స్‌ను మూడు ప్రదేశాలలో నిల్వ చేయవచ్చు: + +| | జీవితకాలం | కాంట్రాక్ట్ యాక్సెస్ | గ్యాస్ ఖర్చు | +| --------- | ------------ | -------------------- | ----------------------------------------------------------------- | +| మెమరీ | ఫంక్షన్ కాల్ | చదవండి/రాయండి | పదులు లేదా వందలు (అధిక ప్రదేశాలకు ఎక్కువ) | +| కాల్‌డేటా | ఫంక్షన్ కాల్ | చదవడానికి మాత్రమే | రిటర్న్ రకంగా ఉపయోగించలేము, కేవలం ఫంక్షన్ పారామీటర్ రకంగా మాత్రమే | +| స్టోరేజ్ | మారే వరకు | చదవండి/రాయండి | అధికం (చదవడానికి 800, రాయడానికి 20k) | + +ఈ సందర్భంలో, `memory` ఉత్తమ ఎంపిక. + +### టోకెన్ సమాచారం చదవండి {#read-token-information} + +ఇవి టోకెన్ గురించి సమాచారాన్ని అందించే ఫంక్షన్‌లు, మొత్తం సరఫరా లేదా ఖాతా యొక్క బ్యాలెన్స్. + +```solidity + /** + * @dev {IERC20-totalSupply} చూడండి. + */ + function totalSupply() public view override returns (uint256) { + return _totalSupply; + } +``` + +`totalSupply` ఫంక్షన్ టోకెన్‌ల మొత్తం సరఫరాను తిరిగి ఇస్తుంది. + +  + +```solidity + /** + * @dev {IERC20-balanceOf} చూడండి. + */ + function balanceOf(address account) public view override returns (uint256) { + return _balances[account]; + } +``` + +ఒక ఖాతా యొక్క బ్యాలెన్స్ చదవండి. ఎవరైనా ఇతరుల ఖాతా బ్యాలెన్స్‌ను పొందడానికి అనుమతించబడతారని గమనించండి. ఈ సమాచారాన్ని దాచడానికి ప్రయత్నించడంలో అర్థం లేదు, ఎందుకంటే ఇది ఏమైనప్పటికీ ప్రతి నోడ్‌లో అందుబాటులో ఉంటుంది. _బ్లాక్‌చెయిన్‌లో రహస్యాలు లేవు._ + +### టోకెన్‌లను బదిలీ చేయండి {#transfer-tokens} + +```solidity + /** + * @dev {IERC20-transfer} చూడండి. + * + * అవసరాలు: + * + * - `recipient` సున్నా చిరునామాగా ఉండకూడదు. + * - కాలర్ కనీసం `amount` బ్యాలెన్స్ కలిగి ఉండాలి. + */ + function transfer(address recipient, uint256 amount) public virtual override returns (bool) { +``` + +`transfer` ఫంక్షన్ పంపినవారి ఖాతా నుండి వేరొకదానికి టోకెన్‌లను బదిలీ చేయడానికి పిలువబడుతుంది. ఇది బూలియన్ విలువను తిరిగి ఇచ్చినా, ఆ విలువ ఎల్లప్పుడూ **నిజం** అని గమనించండి. బదిలీ విఫలమైతే కాంట్రాక్ట్ కాల్‌ను తిరిగి మారుస్తుంది. + +  + +```solidity + _transfer(_msgSender(), recipient, amount); + return true; + } +``` + +`_transfer` ఫంక్షన్ అసలు పని చేస్తుంది. ఇది ఒక ప్రైవేట్ ఫంక్షన్, దీనిని ఇతర కాంట్రాక్ట్ ఫంక్షన్‌లు మాత్రమే పిలవగలవు. సంప్రదాయం ప్రకారం ప్రైవేట్ ఫంక్షన్‌లకు `_` అని పేరు పెట్టారు, స్థితి వేరియబుల్స్‌లాగే. + +సాధారణంగా Solidity లో మేము సందేశం పంపినవారి కోసం `msg.sender` ను ఉపయోగిస్తాము. అయితే, అది [OpenGSN](http://opengsn.org/) ను విచ్ఛిన్నం చేస్తుంది. మన టోకెన్‌తో ఈథర్‌లెస్ లావాదేవీలను అనుమతించాలనుకుంటే, మనం `_msgSender()` ను ఉపయోగించాలి. ఇది సాధారణ లావాదేవీల కోసం `msg.sender` ను తిరిగి ఇస్తుంది, కానీ ఈథర్‌లెస్ వాటి కోసం అసలు సంతకం చేసినవారిని తిరిగి ఇస్తుంది మరియు సందేశాన్ని ప్రసారం చేసిన కాంట్రాక్ట్‌ను కాదు. + +### అలవెన్స్ ఫంక్షన్‌లు {#allowance-functions} + +ఇవి అలవెన్స్ ఫంక్షనాలిటీని అమలు చేసే ఫంక్షన్‌లు: `allowance`, `approve`, `transferFrom`, మరియు `_approve`. అదనంగా, OpenZeppelin అమలు భద్రతను మెరుగుపరిచే కొన్ని ఫీచర్లను చేర్చడానికి ప్రాథమిక ప్రమాణానికి మించి ఉంటుంది: `increaseAllowance`, మరియు `decreaseAllowance`. + +#### అలవెన్స్ ఫంక్షన్ {#allowance} + +```solidity + /** + * @dev {IERC20-allowance} చూడండి. + */ + function allowance(address owner, address spender) public view virtual override returns (uint256) { + return _allowances[owner][spender]; + } +``` + +`allowance` ఫంక్షన్ ఎవరైనా ఏ అలవెన్స్‌నైనా తనిఖీ చేయడానికి అనుమతిస్తుంది. + +#### అప్రూవ్ ఫంక్షన్ {#approve} + +```solidity + /** + * @dev {IERC20-approve} చూడండి. + * + * అవసరాలు: + * + * - `spender` సున్నా చిరునామాగా ఉండకూడదు. + */ + function approve(address spender, uint256 amount) public virtual override returns (bool) { +``` + +ఈ ఫంక్షన్ ఒక అలవెన్స్ సృష్టించడానికి పిలువబడుతుంది. ఇది పైన ఉన్న `transfer` ఫంక్షన్‌ను పోలి ఉంటుంది: + +- ఈ ఫంక్షన్ నిజమైన పని చేసే అంతర్గత ఫంక్షన్‌ను (ఈ సందర్భంలో, `_approve`) పిలుస్తుంది. +- ఈ ఫంక్షన్ `నిజం` (విజయవంతమైతే) తిరిగి ఇస్తుంది లేదా రివర్ట్ అవుతుంది (కాకపోతే). + +  + +```solidity + _approve(_msgSender(), spender, amount); + return true; + } +``` + +స్థితి మార్పులు జరిగే ప్రదేశాల సంఖ్యను తగ్గించడానికి మేము అంతర్గత ఫంక్షన్‌లను ఉపయోగిస్తాము. స్థితిని మార్చే _ఏదైనా_ ఫంక్షన్ భద్రత కోసం ఆడిట్ చేయవలసిన సంభావ్య భద్రతా ప్రమాదం. ఈ విధంగా మనం తప్పు చేసే అవకాశాలు తక్కువగా ఉంటాయి. + +#### `transferFrom` ఫంక్షన్ {#transferFrom} + +ఇది ఒక అలవెన్స్‌ను ఖర్చు చేయడానికి ఖర్చు చేసేవారు పిలిచే ఫంక్షన్. దీనికి రెండు కార్యకలాపాలు అవసరం: ఖర్చు చేస్తున్న మొత్తాన్ని బదిలీ చేయడం మరియు ఆ మొత్తం ద్వారా అలవెన్స్‌ను తగ్గించడం. + +```solidity + /** + * @dev {IERC20-transferFrom} చూడండి. + * + * అప్‌డేట్ చేయబడిన అలవెన్స్‌ను సూచించే {Approval} ఈవెంట్‌ను విడుదల చేస్తుంది. ఇది + * EIP ద్వారా అవసరం లేదు. {ERC20} ప్రారంభంలో గమనిక చూడండి. + * + * అవసరాలు: + * + * - `sender` మరియు `recipient` సున్నా చిరునామాగా ఉండకూడదు. + * - `sender` కనీసం `amount` బ్యాలెన్స్ కలిగి ఉండాలి. + * - కాలర్ ``sender`` యొక్క టోకెన్‌ల కోసం కనీసం + * `amount` అలవెన్స్ కలిగి ఉండాలి. + */ + function transferFrom(address sender, address recipient, uint256 amount) public virtual + override returns (bool) { + _transfer(sender, recipient, amount); +``` + +  + +`a.sub(b, "సందేశం")` ఫంక్షన్ కాల్ రెండు పనులు చేస్తుంది. మొదట, ఇది `a-b`ను లెక్కిస్తుంది, ఇది కొత్త అలవెన్స్. +రెండవది, ఈ ఫలితం ప్రతికూలంగా లేదని ఇది తనిఖీ చేస్తుంది. ఇది ప్రతికూలంగా ఉంటే, కాల్ అందించిన సందేశంతో తిరిగి వస్తుంది. ఒక కాల్ తిరిగి వచ్చినప్పుడు, ఆ కాల్ సమయంలో ముందుగా చేసిన ఏ ప్రాసెసింగ్ అయినా విస్మరించబడుతుంది కాబట్టి మనం `_transfer`ను రద్దు చేయవలసిన అవసరం లేదని గమనించండి. + +```solidity + _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, + "ERC20: బదిలీ మొత్తం అలవెన్స్‌ను మించిపోయింది")); + return true; + } +``` + +#### OpenZeppelin భద్రతా చేర్పులు {#openzeppelin-safety-additions} + +సున్నా కాని అలవెన్స్‌ను మరొక సున్నా కాని విలువకు సెట్ చేయడం ప్రమాదకరం, ఎందుకంటే మీరు మీ స్వంత లావాదేవీల క్రమాన్ని మాత్రమే నియంత్రిస్తారు, మరెవరిదీ కాదు. మీకు ఇద్దరు వినియోగదారులు ఉన్నారని ఊహించుకోండి, అమాయకురాలైన ఆలిస్ మరియు నిజాయితీ లేని బిల్. ఆలిస్‌కు బిల్ నుండి కొంత సేవ కావాలి, దాని ధర ఐదు టోకెన్‌లు అని ఆమె అనుకుంటుంది - కాబట్టి ఆమె బిల్‌కు ఐదు టోకెన్‌ల అలవెన్స్ ఇస్తుంది. + +అప్పుడు ఏదో మారుతుంది మరియు బిల్ ధర పది టోకెన్‌లకు పెరుగుతుంది. ఇంకా సేవ కావాలనుకునే ఆలిస్, బిల్ అలవెన్స్‌ను పదికి సెట్ చేసే లావాదేవీని పంపుతుంది. లావాదేవీల పూల్‌లో ఈ కొత్త లావాదేవీని చూసిన క్షణం, బిల్ ఆలిస్ యొక్క ఐదు టోకెన్‌లను ఖర్చు చేసే లావాదేవీని పంపుతాడు మరియు అది వేగంగా మైన్ చేయబడటానికి చాలా ఎక్కువ గ్యాస్ ధరను కలిగి ఉంటుంది. ఆ విధంగా బిల్ మొదట ఐదు టోకెన్‌లను ఖర్చు చేయగలడు మరియు తరువాత, ఆలిస్ యొక్క కొత్త అలవెన్స్ మైన్ చేయబడిన తర్వాత, మొత్తం పదిహేను టోకెన్‌ల ధరకు మరో పది ఖర్చు చేయగలడు, ఇది ఆలిస్ అధికారం ఇవ్వడానికి ఉద్దేశించిన దానికంటే ఎక్కువ. ఇతీరియములో మీరు మీ స్వంత లావాదేవీల క్రమాన్ని నియంత్రించగలరు, కానీ ఇతర వ్యక్తుల లావాదేవీలు ఏ క్రమంలో అమలు చేయబడతాయో మీరు నియంత్రించలేరు, అవతలి పక్షం లావాదేవీ జరిగిందని మీరు చూసే వరకు మీరు మీ స్వంత లావాదేవీని సమర్పించకపోతే తప్ప. + +| ఆలిస్ లావాదేవీ | ఆలిస్ నాన్స్ | బిల్ లావాదేవీ | బిల్ నాన్స్ | బిల్ అలవెన్స్ | ఆలిస్ నుండి బిల్ మొత్తం ఆదాయం | +| ------------------------------------ | ------------ | ------------------------------------------------ | ----------- | ------------- | ----------------------------- | +| approve(Bill, 5) | 10 | | | 5 | 0 | +| | | transferFrom(Alice, Bill, 5) | 10,123 | 0 | 5 | +| approve(Bill, 10) | 11 | | | 10 | 5 | +| | | transferFrom(Alice, Bill, 10) | 10,124 | 0 | 15 | + +ఈ సమస్యను నివారించడానికి, ఈ రెండు ఫంక్షన్‌లు (`increaseAllowance` మరియు `decreaseAllowance`) అలవెన్స్‌ను ఒక నిర్దిష్ట మొత్తం ద్వారా సవరించడానికి మిమ్మల్ని అనుమతిస్తాయి. కాబట్టి బిల్ ఇప్పటికే ఐదు టోకెన్‌లను ఖర్చు చేసి ఉంటే, అతను కేవలం మరో ఐదు ఖర్చు చేయగలడు. సమయాన్ని బట్టి, ఇది పని చేయడానికి రెండు మార్గాలు ఉన్నాయి, రెండూ బిల్ కేవలం పది టోకెన్‌లను పొందడంతో ముగుస్తాయి: + +A: + +| ఆలిస్ లావాదేవీ | ఆలిస్ నాన్స్ | బిల్ లావాదేవీ | బిల్ నాన్స్ | బిల్ అలవెన్స్ | ఆలిస్ నుండి బిల్ మొత్తం ఆదాయం | +| --------------------------------------------- | -----------: | ----------------------------------------------- | ----------: | ------------: | ----------------------------- | +| approve(Bill, 5) | 10 | | | 5 | 0 | +| | | transferFrom(Alice, Bill, 5) | 10,123 | 0 | 5 | +| increaseAllowance(Bill, 5) | 11 | | | 0+5 = 5 | 5 | +| | | transferFrom(Alice, Bill, 5) | 10,124 | 0 | 10 | + +B: + +| ఆలిస్ లావాదేవీ | ఆలిస్ నాన్స్ | బిల్ లావాదేవీ | బిల్ నాన్స్ | బిల్ అలవెన్స్ | ఆలిస్ నుండి బిల్ మొత్తం ఆదాయం | +| --------------------------------------------- | -----------: | ------------------------------------------------ | ----------: | ------------: | ----------------------------: | +| approve(Bill, 5) | 10 | | | 5 | 0 | +| increaseAllowance(Bill, 5) | 11 | | | 5+5 = 10 | 0 | +| | | transferFrom(Alice, Bill, 10) | 10,124 | 0 | 10 | + +```solidity + /** + * @dev కాలర్ ద్వారా `spender`కు మంజూరు చేయబడిన అలవెన్స్‌ను అణురూపంగా పెంచుతుంది. + * + * ఇది {approve}కు ఒక ప్రత్యామ్నాయం, ఇది {IERC20-approve}లో వివరించిన సమస్యలకు ఉపశమనంగా ఉపయోగించబడుతుంది. + * + * అప్‌డేట్ చేయబడిన అలవెన్స్‌ను సూచించే {Approval} ఈవెంట్‌ను విడుదల చేస్తుంది. + * + * అవసరాలు: + * + * - `spender` సున్నా చిరునామాగా ఉండకూడదు. + */ + function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { + _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); + return true; + } +``` + +`a.add(b)` ఫంక్షన్ ఒక సురక్షితమైన కూడిక. `a`+`b`>=`2^256` అయ్యే అసంభవమైన సందర్భంలో, ఇది సాధారణ కూడిక వలె చుట్టుముట్టదు. + +```solidity + /** + * @dev కాలర్ ద్వారా `spender`కు మంజూరు చేయబడిన అలవెన్స్‌ను అణురూపంగా తగ్గిస్తుంది. + * + * ఇది {approve}కు ఒక ప్రత్యామ్నాయం, ఇది {IERC20-approve}లో వివరించిన సమస్యలకు ఉపశమనంగా ఉపయోగించబడుతుంది. + * + * అప్‌డేట్ చేయబడిన అలవెన్స్‌ను సూచించే {Approval} ఈవెంట్‌ను విడుదల చేస్తుంది. + * + * అవసరాలు: + * + * - `spender` సున్నా చిరునామాగా ఉండకూడదు. + * - `spender` కనీసం + * `subtractedValue` కాలర్ కోసం అలవెన్స్ కలిగి ఉండాలి. + */ + function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { + _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, + "ERC20: అలవెన్స్ సున్నా కంటే తక్కువకు తగ్గించబడింది")); + return true; + } +``` + +### టోకెన్ సమాచారాన్ని సవరించే ఫంక్షన్‌లు {#functions-that-modify-token-information} + +ఇవి అసలు పని చేసే నాలుగు ఫంక్షన్‌లు: `_transfer`, `_mint`, `_burn`, మరియు `_approve`. + +#### `_transfer` ఫంక్షన్ {#_transfer} + +```solidity + /** + * @dev `పంపినవారి` నుండి `గ్రహీత`కు `మొత్తం` టోకెన్‌లను తరలిస్తుంది. + * + * ఈ అంతర్గత ఫంక్షన్ {transfer}కు సమానం, మరియు దీనిని + * ఉదాహరణకు, ఆటోమేటిక్ టోకెన్ ఫీజులు, స్లాషింగ్ మెకానిజమ్స్ మొదలైనవాటిని అమలు చేయడానికి ఉపయోగించవచ్చు. + * + * ఒక {Transfer} ఈవెంట్‌ను విడుదల చేస్తుంది. + * + * అవసరాలు: + * + * - `sender` సున్నా చిరునామాగా ఉండకూడదు. + * - `recipient` సున్నా చిరునామాగా ఉండకూడదు. + * - `sender` కనీసం `amount` బ్యాలెన్స్ కలిగి ఉండాలి. + */ + function _transfer(address sender, address recipient, uint256 amount) internal virtual { +``` + +ఈ ఫంక్షన్, `_transfer`, టోకెన్‌లను ఒక ఖాతా నుండి మరొకదానికి బదిలీ చేస్తుంది. ఇది `transfer` (పంపినవారి స్వంత ఖాతా నుండి బదిలీల కోసం) మరియు `transferFrom` (ఇతరుల ఖాతా నుండి బదిలీ చేయడానికి అలవెన్సులను ఉపయోగించడం కోసం) రెండింటి ద్వారా పిలువబడుతుంది. + +  + +```solidity + require(sender != address(0), "ERC20: సున్నా చిరునామా నుండి బదిలీ"); + require(recipient != address(0), "ERC20: సున్నా చిరునామాకు బదిలీ"); +``` + +ఇతీరియములో సున్నా చిరునామాను ఎవరూ నిజంగా కలిగి లేరు (అంటే, ఎవరికి సరిపోలే పబ్లిక్ కీ సున్నా చిరునామాకు రూపాంతరం చెందుతుందో ఆ ప్రైవేట్ కీ ఎవరికీ తెలియదు). ప్రజలు ఆ చిరునామాను ఉపయోగించినప్పుడు, అది సాధారణంగా ఒక సాఫ్ట్‌వేర్ బగ్ - కాబట్టి పంపినవారు లేదా గ్రహీతగా సున్నా చిరునామాను ఉపయోగించినట్లయితే మేము విఫలమవుతాము. + +  + +```solidity + _beforeTokenTransfer(sender, recipient, amount); +``` + +ఈ కాంట్రాక్ట్‌ను ఉపయోగించడానికి రెండు మార్గాలు ఉన్నాయి: + +1. మీ స్వంత కోడ్ కోసం దీనిని ఒక టెంప్లేట్‌గా ఉపయోగించండి +2. [దాని నుండి వారసత్వం పొందండి](https://www.bitdegree.org/learn/solidity-inheritance), మరియు మీరు సవరించాల్సిన ఫంక్షన్‌లను మాత్రమే ఓవర్‌రైడ్ చేయండి + +రెండవ పద్ధతి చాలా మంచిది ఎందుకంటే OpenZeppelin ERC-20 కోడ్ ఇప్పటికే ఆడిట్ చేయబడింది మరియు సురక్షితమని చూపబడింది. మీరు వారసత్వాన్ని ఉపయోగించినప్పుడు మీరు సవరించే ఫంక్షన్‌లు ఏమిటో స్పష్టంగా ఉంటుంది, మరియు మీ కాంట్రాక్ట్‌ను విశ్వసించడానికి ప్రజలు ఆ నిర్దిష్ట ఫంక్షన్‌లను మాత్రమే ఆడిట్ చేయాలి. + +ప్రతిసారీ టోకెన్‌లు చేతులు మారినప్పుడు ఒక ఫంక్షన్‌ను నిర్వహించడం తరచుగా ఉపయోగకరంగా ఉంటుంది. అయితే, `_transfer` చాలా ముఖ్యమైన ఫంక్షన్ మరియు దానిని అసురక్షితంగా రాయడం సాధ్యమవుతుంది (క్రింద చూడండి), కాబట్టి దానిని ఓవర్‌రైడ్ చేయకపోవడమే మంచిది. పరిష్కారం `_beforeTokenTransfer`, ఒక [హుక్ ఫంక్షన్](https://wikipedia.org/wiki/Hooking). మీరు ఈ ఫంక్షన్‌ను ఓవర్‌రైడ్ చేయవచ్చు, మరియు ఇది ప్రతి బదిలీపై పిలువబడుతుంది. + +  + +```solidity + _balances[sender] = _balances[sender].sub(amount, "ERC20: బదిలీ మొత్తం బ్యాలెన్స్‌ను మించిపోయింది"); + _balances[recipient] = _balances[recipient].add(amount); +``` + +ఇవి వాస్తవానికి బదిలీ చేసే లైన్లు. వాటి మధ్య **ఏమీ** లేదని గమనించండి, మరియు మేము బదిలీ చేయబడిన మొత్తాన్ని పంపినవారి నుండి తీసివేసి, ఆ తర్వాత గ్రహీతకు జోడిస్తాము. ఇది ముఖ్యం ఎందుకంటే మధ్యలో వేరే కాంట్రాక్ట్‌కు కాల్ ఉంటే, అది ఈ కాంట్రాక్ట్‌ను మోసం చేయడానికి ఉపయోగించబడి ఉండవచ్చు. ఈ విధంగా బదిలీ అణురూపంగా ఉంటుంది, దాని మధ్యలో ఏమీ జరగదు. + +  + +```solidity + emit Transfer(sender, recipient, amount); + } +``` + +చివరగా, ఒక `Transfer` ఈవెంట్‌ను విడుదల చేయండి. ఈవెంట్‌లు స్మార్ట్ కాంట్రాక్ట్‌లకు అందుబాటులో ఉండవు, కానీ బ్లాక్‌చెయిన్ వెలుపల నడుస్తున్న కోడ్ ఈవెంట్‌లను విని వాటికి ప్రతిస్పందించగలదు. ఉదాహరణకు, ఒక వాలెట్ యజమానికి ఎక్కువ టోకెన్‌లు వచ్చినప్పుడు ట్రాక్ చేయగలదు. + +#### `_mint` మరియు `_burn` ఫంక్షన్‌లు {#_mint-and-_burn} + +ఈ రెండు ఫంక్షన్‌లు (`_mint` మరియు `_burn`) టోకెన్‌ల మొత్తం సరఫరాను సవరిస్తాయి. +అవి అంతర్గతమైనవి మరియు ఈ కాంట్రాక్ట్‌లో వాటిని పిలిచే ఫంక్షన్ ఏదీ లేదు, కాబట్టి మీరు కాంట్రాక్ట్ నుండి వారసత్వం పొంది, కొత్త టోకెన్‌లను ఏ పరిస్థితులలో మింట్ చేయాలో లేదా ఉన్నవాటిని బర్న్ చేయాలో నిర్ణయించడానికి మీ స్వంత లాజిక్‌ను జోడిస్తేనే అవి ఉపయోగపడతాయి. + +**గమనిక:** ప్రతి ERC-20 టోకెన్ టోకెన్ నిర్వహణను నిర్దేశించే దాని స్వంత వ్యాపార తర్కాన్ని కలిగి ఉంటుంది. +ఉదాహరణకు, ఒక స్థిర సరఫరా కాంట్రాక్ట్ నిర్మాణకర్తలో మాత్రమే `_mint`ను పిలవవచ్చు మరియు `_burn`ను ఎప్పుడూ పిలవకపోవచ్చు. టోకెన్‌లను అమ్మే ఒక కాంట్రాక్ట్ చెల్లింపు జరిగినప్పుడు `_mint`ను పిలుస్తుంది, మరియు నియంత్రణ లేని ద్రవ్యోల్బణాన్ని నివారించడానికి ఏదో ఒక సమయంలో `_burn`ను పిలుస్తుంది. + +```solidity + /** @dev `amount` టోకెన్‌లను సృష్టిస్తుంది మరియు వాటిని `account`కు కేటాయిస్తుంది, మొత్తం సరఫరాను పెంచుతుంది. + * + * `from`ను సున్నా చిరునామాకు సెట్ చేసి {Transfer} ఈవెంట్‌ను విడుదల చేస్తుంది. + * + * అవసరాలు: + * + * - `to` సున్నా చిరునామాగా ఉండకూడదు. + */ + function _mint(address account, uint256 amount) internal virtual { + require(account != address(0), "ERC20: సున్నా చిరునామాకు మింట్"); + _beforeTokenTransfer(address(0), account, amount); + _totalSupply = _totalSupply.add(amount); + _balances[account] = _balances[account].add(amount); + emit Transfer(address(0), account, amount); + } +``` + +టోకెన్‌ల మొత్తం సంఖ్య మారినప్పుడు `_totalSupply`ను అప్‌డేట్ చేయాలని నిర్ధారించుకోండి. + +  + +```solidity + /** + * @dev `account` నుండి `amount` టోకెన్‌లను నాశనం చేస్తుంది, మొత్తం సరఫరాను తగ్గిస్తుంది. + * + * `to`ను సున్నా చిరునామాకు సెట్ చేసి {Transfer} ఈవెంట్‌ను విడుదల చేస్తుంది. + * + * అవసరాలు: + * + * - `account` సున్నా చిరునామాగా ఉండకూడదు. + * - `account` కనీసం `amount` టోకెన్‌లను కలిగి ఉండాలి. + */ + function _burn(address account, uint256 amount) internal virtual { + require(account != address(0), "ERC20: సున్నా చిరునామా నుండి బర్న్"); + + _beforeTokenTransfer(account, address(0), amount); + + _balances[account] = _balances[account].sub(amount, "ERC20: బర్న్ మొత్తం బ్యాలెన్స్‌ను మించిపోయింది"); + _totalSupply = _totalSupply.sub(amount); + emit Transfer(account, address(0), amount); + } +``` + +`_burn` ఫంక్షన్ దాదాపుగా `_mint` వలె ఉంటుంది, అయితే ఇది వ్యతిరేక దిశలో వెళ్తుంది. + +#### `_approve` ఫంక్షన్ {#_approve} + +ఇది వాస్తవానికి అలవెన్సులను నిర్దేశించే ఫంక్షన్. యజమాని ప్రస్తుత బ్యాలెన్స్ కంటే ఎక్కువ ఉన్న అలవెన్స్‌ను నిర్దేశించడానికి ఇది అనుమతిస్తుందని గమనించండి. ఇది సరే ఎందుకంటే బదిలీ సమయంలో బ్యాలెన్స్ తనిఖీ చేయబడుతుంది, అప్పుడు అది అలవెన్స్ సృష్టించబడినప్పుడు ఉన్న బ్యాలెన్స్ నుండి భిన్నంగా ఉండవచ్చు. + +```solidity + /** + * @dev `యజమాని` టోకెన్‌లపై `ఖర్చు చేసేవారి` యొక్క అలవెన్స్‌గా `మొత్తాన్ని` సెట్ చేస్తుంది. + * + * ఈ అంతర్గత ఫంక్షన్ `approve`కు సమానం, మరియు దీనిని + * ఉదాహరణకు, కొన్ని ఉపవ్యవస్థల కోసం ఆటోమేటిక్ అలవెన్సులను సెట్ చేయడానికి మొదలైన వాటికి ఉపయోగించవచ్చు. + * + * ఒక {Approval} ఈవెంట్‌ను విడుదల చేస్తుంది. + * + * అవసరాలు: + * + * - `owner` సున్నా చిరునామాగా ఉండకూడదు. + * - `spender` సున్నా చిరునామాగా ఉండకూడదు. + */ + function _approve(address owner, address spender, uint256 amount) internal virtual { + require(owner != address(0), "ERC20: సున్నా చిరునామా నుండి ఆమోదం"); + require(spender != address(0), "ERC20: సున్నా చిరునామాకు ఆమోదం"); + + _allowances[owner][spender] = amount; +``` + +  + +ఒక `Approval` ఈవెంట్‌ను విడుదల చేయండి. అప్లికేషన్ ఎలా వ్రాయబడింది అనేదానిపై ఆధారపడి, ఖర్చు చేసే కాంట్రాక్ట్‌కు యజమాని ద్వారా లేదా ఈ ఈవెంట్‌లను వినే సర్వర్ ద్వారా ఆమోదం గురించి తెలియజేయవచ్చు. + +```solidity + emit Approval(owner, spender, amount); + } +``` + +### దశాంశాల వేరియబుల్‌ను సవరించండి {#modify-the-decimals-variable} + +```solidity + /** + * @dev {decimals}ను 18 యొక్క డిఫాల్ట్ విలువ కాకుండా వేరే విలువకు సెట్ చేస్తుంది. + * + * హెచ్చరిక: ఈ ఫంక్షన్ నిర్మాణకర్త నుండి మాత్రమే పిలవబడాలి. టోకెన్ కాంట్రాక్ట్‌లతో పరస్పర చర్య జరిపే చాలా అప్లికేషన్‌లు + * {decimals} ఎప్పుడూ మారుతుందని ఊహించవు, మరియు అలా మారితే తప్పుగా పని చేయవచ్చు. + */ + function _setupDecimals(uint8 decimals_) internal { + _decimals = decimals_; + } +``` + +ఈ ఫంక్షన్ `_decimals` వేరియబుల్‌ను సవరిస్తుంది, ఇది వినియోగదారు ఇంటర్‌ఫేస్‌లకు మొత్తాన్ని ఎలా అర్థం చేసుకోవాలో చెప్పడానికి ఉపయోగించబడుతుంది. +మీరు దీనిని నిర్మాణకర్త నుండి పిలవాలి. తర్వాతి ఏ సమయంలోనైనా దీనిని పిలవడం నిజాయితీ లేనిదిగా ఉంటుంది, మరియు అప్లికేషన్‌లు దీనిని నిర్వహించడానికి రూపొందించబడలేదు. + +### హుక్స్ {#hooks} + +```solidity + /** + * @dev టోకెన్‌ల ఏ బదిలీకి ముందు పిలవబడే హుక్. ఇందులో + * మింటింగ్ మరియు బర్నింగ్ కూడా ఉంటాయి. + * + * పిలిచే పరిస్థితులు: + * + * - `from` మరియు `to` రెండూ సున్నా కానివి అయినప్పుడు, ``from`` యొక్క టోకెన్‌ల `మొత్తం` + * `to`కు బదిలీ చేయబడుతుంది. + * - `from` సున్నా అయినప్పుడు, `to` కోసం `amount` టోకెన్‌లు మింట్ చేయబడతాయి. + * - `to` సున్నా అయినప్పుడు, ``from`` యొక్క టోకెన్‌ల `amount` బర్న్ చేయబడుతుంది. + * - `from` మరియు `to` రెండూ ఎప్పుడూ సున్నా కావు. + * + * హుక్స్ గురించి మరింత తెలుసుకోవడానికి, xref:ROOT:extending-contracts.adoc#using-hooks[హుక్స్ ఉపయోగించడం]కు వెళ్లండి. + */ + function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } +``` + +ఇది బదిలీల సమయంలో పిలవబడే హుక్ ఫంక్షన్. ఇక్కడ ఇది ఖాళీగా ఉంది, కానీ మీకు అది ఏదైనా చేయవలసి వస్తే మీరు దానిని ఓవర్‌రైడ్ చేయండి. + +## ముగింపు {#conclusion} + +సమీక్ష కోసం, ఈ కాంట్రాక్ట్‌లోని కొన్ని ముఖ్యమైన ఆలోచనలు ఇక్కడ ఉన్నాయి (నా అభిప్రాయం ప్రకారం, మీది మారే అవకాశం ఉంది): + +- _బ్లాక్‌చెయిన్‌లో రహస్యాలు లేవు_. ఒక స్మార్ట్ కాంట్రాక్ట్ యాక్సెస్ చేయగల ఏ సమాచారం అయినా ప్రపంచం మొత్తానికి అందుబాటులో ఉంటుంది. +- మీరు మీ స్వంత లావాదేవీల క్రమాన్ని నియంత్రించగలరు, కానీ ఇతర వ్యక్తుల లావాదేవీలు ఎప్పుడు జరుగుతాయో కాదు. అలవెన్స్‌ను మార్చడం ప్రమాదకరంగా ఉండటానికి ఇదే కారణం, ఎందుకంటే ఇది ఖర్చు చేసేవారికి రెండు అలవెన్స్‌ల మొత్తాన్ని ఖర్చు చేయడానికి అనుమతిస్తుంది. +- `uint256` రకం విలువలు చుట్టుముడతాయి. మరో మాటలో చెప్పాలంటే, _0-1=2^256-1_. అది కావాల్సిన ప్రవర్తన కాకపోతే, మీరు దాని కోసం తనిఖీ చేయాలి (లేదా మీ కోసం చేసే SafeMath లైబ్రరీని ఉపయోగించండి). [Solidity 0.8.0](https://docs.soliditylang.org/en/breaking/080-breaking-changes.html)లో ఇది మారిందని గమనించండి. +- ఒక నిర్దిష్ట రకానికి చెందిన అన్ని స్థితి మార్పులను ఒక నిర్దిష్ట ప్రదేశంలో చేయండి, ఎందుకంటే ఇది ఆడిటింగ్‌ను సులభతరం చేస్తుంది. + ఉదాహరణకు, `approve`, `transferFrom`, `increaseAllowance`, మరియు `decreaseAllowance` ద్వారా పిలువబడే `_approve` మనకు ఉండటానికి ఇదే కారణం +- స్థితి మార్పులు అణురూపంగా ఉండాలి, వాటి మధ్యలో మరే ఇతర చర్య లేకుండా (`_transfer`లో మీరు చూడవచ్చు). ఇది ఎందుకంటే స్థితి మార్పు సమయంలో మీకు అస్థిరమైన స్థితి ఉంటుంది. ఉదాహరణకు, మీరు పంపినవారి బ్యాలెన్స్ నుండి తీసివేసే సమయం మరియు గ్రహీత బ్యాలెన్స్‌కు జోడించే సమయం మధ్యలో ఉండాల్సిన దానికంటే తక్కువ టోకెన్‌లు ఉనికిలో ఉంటాయి. వాటి మధ్య కార్యకలాపాలు ఉంటే, ముఖ్యంగా వేరే కాంట్రాక్ట్‌కు కాల్స్ ఉంటే ఇది దుర్వినియోగం చేయబడే అవకాశం ఉంది. + +ఇప్పుడు మీరు OpenZeppelin ERC-20 కాంట్రాక్ట్ ఎలా వ్రాయబడింది, మరియు ముఖ్యంగా అది ఎలా మరింత సురక్షితంగా చేయబడింది అని చూశారు, వెళ్లి మీ స్వంత సురక్షితమైన కాంట్రాక్ట్‌లు మరియు అప్లికేషన్‌లను వ్రాయండి. + +[నా మరిన్ని పనుల కోసం ఇక్కడ చూడండి](https://cryptodocguy.pro/). diff --git a/public/content/translations/te/developers/tutorials/erc20-with-safety-rails/index.md b/public/content/translations/te/developers/tutorials/erc20-with-safety-rails/index.md new file mode 100644 index 00000000000..57a4b2e6bac --- /dev/null +++ b/public/content/translations/te/developers/tutorials/erc20-with-safety-rails/index.md @@ -0,0 +1,217 @@ +--- +title: "సేఫ్టీ రైల్స్‌తో ERC-20" +description: "చిన్న పొరపాట్లను నివారించడంలో ప్రజలకు ఎలా సహాయం చేయాలి" +author: Ori Pomerantz +lang: te +tags: [ "erc-20" ] +skill: beginner +published: 2022-08-15 +--- + +## పరిచయం {#introduction} + +ఇతీరియము గురించి గొప్ప విషయాలలో ఒకటి ఏమిటంటే, మీ లావాదేవీలను సవరించగల లేదా రద్దు చేయగల కేంద్ర అధికారం ఏదీ లేదు. ఇతీరియముతో ఉన్న పెద్ద సమస్యలలో ఒకటి ఏమిటంటే, వినియోగదారుడి పొరపాట్లను లేదా చట్టవిరుద్ధమైన లావాదేవీలను రద్దు చేసే అధికారం ఉన్న కేంద్ర అధికారం ఏదీ లేదు. ఈ ఆర్టికల్‌లో మీరు [ERC-20](/developers/docs/standards/tokens/erc-20/) టోకెన్‌లతో వినియోగదారులు చేసే కొన్ని సాధారణ తప్పుల గురించి, అలాగే ఆ తప్పులను నివారించడానికి వినియోగదారులకు సహాయపడే ERC-20 ఒప్పందాలను ఎలా సృష్టించాలో లేదా కేంద్ర అధికారానికి కొంత శక్తిని (ఉదాహరణకు ఖాతాలను ఫ్రీజ్ చేయడానికి) ఎలా ఇవ్వాలో నేర్చుకుంటారు. + +[OpenZeppelin ERC-20 టోకెన్ ఒప్పందాన్ని](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20) మేము ఉపయోగిస్తున్నప్పటికీ, ఈ కథనం దానిని పెద్దగా వివరంగా వివరించదని గమనించండి. మీరు ఈ సమాచారాన్ని [ఇక్కడ](/developers/tutorials/erc20-annotated-code) కనుగొనవచ్చు. + +మీరు పూర్తి మూల సంకేత భాషను చూడాలనుకుంటే: + +1. [రీమిక్స్ IDE](https://remix.ethereum.org/)ని తెరవండి. +2. క్లోన్ గిట్‌హబ్ ఐకాన్‌ను (![క్లోన్ గిట్‌హబ్ ఐకాన్](icon-clone.png)) క్లిక్ చేయండి. +3. గిట్‌హబ్ రిపోజిటరీని `https://github.com/qbzzt/20220815-erc20-safety-rails` క్లోన్ చేయండి. +4. **contracts > erc20-safety-rails.sol** తెరవండి. + +## ఒక ERC-20 ఒప్పందాన్ని సృష్టించడం {#creating-an-erc-20-contract} + +మేము సేఫ్టీ రైల్ ఫంక్షనాలిటీని జోడించే ముందు, మాకు ERC-20 ఒప్పందం అవసరం. ఈ ఆర్టికల్‌లో మనం [ది ఓపెన్‌జెప్పెలిన్ కాంట్రాక్ట్స్ విజార్డ్](https://docs.openzeppelin.com/contracts/5.x/wizard) ను ఉపయోగిస్తాము. దీన్ని మరొక బ్రౌజర్‌లో తెరిచి, ఈ సూచనలను పాటించండి: + +1. **ERC20** ఎంచుకోండి. + +2. ఈ సెట్టింగులను నమోదు చేయండి: + + | పరామితి | విలువ | + | ----------------- | ---------------- | + | పేరు | SafetyRailsToken | + | చిహ్నం | SAFE | + | ప్రీమింట్ | 1000 | + | లక్షణాలు | ఏదీ లేదు | + | యాక్సెస్ కంట్రోల్ | Ownable | + | అప్‌గ్రేడబిలిటీ | ఏదీ లేదు | + +3. పైకి స్క్రోల్ చేసి, **Remix లో తెరవండి** (Remix కోసం) లేదా వేరొక వాతావరణాన్ని ఉపయోగించడానికి **డౌన్లోడ్** క్లిక్ చేయండి. మీరు రీమిక్స్ వాడుతున్నారని నేను భావిస్తున్నాను, మీరు వేరేది ఏదైనా వాడితే, తగిన మార్పులు చేసుకోండి. + +4. మన దగ్గర ఇప్పుడు పూర్తిస్థాయిలో పనిచేసే ERC-20 ఒప్పందం ఉంది. దిగుమతి చేసుకున్న సంకేత భాషను చూడటానికి మీరు `.deps` > `npm`ను విస్తరించవచ్చు. + +5. ఇది ERC-20 ఒప్పందంగా పనిచేస్తుందని చూడటానికి ఒప్పందాన్ని కంపైల్ చేయండి, డిప్లాయ్ చేయండి మరియు దానితో ప్రయోగాలు చేయండి. రీమిక్స్‌ను ఎలా ఉపయోగించాలో మీరు నేర్చుకోవలసి వస్తే, [ఈ ట్యుటోరియల్‌ను ఉపయోగించండి](https://remix.ethereum.org/?#activate=udapp,solidity,LearnEth). + +## సాధారణ తప్పులు {#common-mistakes} + +### తప్పులు {#the-mistakes} + +వినియోగదారులు కొన్నిసార్లు తప్పు చిరునామాకు టోకెన్లను పంపుతారు. వారు ఏమి చేయాలనుకుంటున్నారో తెలుసుకోవడానికి మేము వారి మనస్సులను చదవలేనప్పటికీ, చాలా తరచుగా జరిగే మరియు గుర్తించడం సులభం అయిన రెండు రకాల లోపాలు ఉన్నాయి: + +1. ఒప్పందం యొక్క సొంత చిరునామాకు టోకెన్లను పంపడం. ఉదాహరణకు, [ఆప్టిమిజం యొక్క OP టోకెన్](https://optimism.mirror.xyz/qvd0WfuLKnePm1Gxb9dpGchPf5uDz5NSMEFdgirDS4c) రెండు నెలల కన్నా తక్కువ సమయంలో [120,000 కన్నా ఎక్కువ](https://optimism.blockscout.com/address/0x4200000000000000000000000000000000000042) OP టోకెన్లను సేకరించగలిగింది. ఇది ప్రజలు బహుశా కోల్పోయిన గణనీయమైన సంపదను సూచిస్తుంది. + +2. టోకెన్లను ఖాళీ చిరునామాకు పంపడం, అది ఒక [బాహ్యంగా యాజమాన్యం గల ఖాతా](/developers/docs/accounts/#externally-owned-accounts-and-key-pairs) లేదా [స్మార్ట్ ఒప్పందం](/developers/docs/smart-contracts)కు చెందనిది. ఇది ఎంత తరచుగా జరుగుతుందనే దానిపై నా దగ్గర గణాంకాలు లేనప్పటికీ, [ఒక సంఘటన 20,000,000 టోకెన్‌లకు ఖర్చు కావచ్చు](https://gov.optimism.io/t/message-to-optimism-community-from-wintermute/2595). + +### బదిలీలను నిరోధించడం {#preventing-transfers} + +OpenZeppelin ERC-20 ఒప్పందం ఒక టోకెన్ బదిలీ చేయబడటానికి ముందు పిలువబడే [ఒక హుక్, `_beforeTokenTransfer`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol#L364-L368) ను కలిగి ఉంటుంది. డిఫాల్ట్‌గా ఈ హుక్ ఏమీ చేయదు, కానీ మనం దానిపై మన స్వంత ఫంక్షనాలిటీని తగిలించవచ్చు, ఉదాహరణకు సమస్య ఉంటే వెనక్కితిప్పే తనిఖీలు. + +హుక్‌ను ఉపయోగించడానికి, కన్‌స్ట్రక్టర్ తర్వాత ఈ ఫంక్షన్‌ను జోడించండి: + +```solidity + function _beforeTokenTransfer(address from, address to, uint256 amount) + internal virtual + override(ERC20) + { + super._beforeTokenTransfer(from, to, amount); + } +``` + +మీకు సాలిడిటీతో పెద్దగా పరిచయం లేకపోతే ఈ ఫంక్షన్‌లోని కొన్ని భాగాలు కొత్తగా ఉండవచ్చు: + +```solidity + internal virtual +``` + +`virtual` అనే కీవర్డ్ అర్థం ఏమిటంటే, మనం `ERC20` నుండి ఫంక్షనాలిటీని వారసత్వంగా పొంది, ఈ ఫంక్షన్‌ను భర్తీ చేసినట్లే, ఇతర ఒప్పందాలు మన నుండి వారసత్వంగా పొంది ఈ ఫంక్షన్‌ను భర్తీ చేయవచ్చు. + +```solidity + override(ERC20) +``` + +`_beforeTokenTransfer` యొక్క ERC20 టోకెన్ నిర్వచనాన్ని మనం [ఓవర్‌రైడ్](https://docs.soliditylang.org/en/v0.8.15/contracts.html#function-overriding) చేస్తున్నామని మనం స్పష్టంగా పేర్కొనాలి. సాధారణంగా, భద్రతా దృక్కోణం నుండి, అవ్యక్త నిర్వచనాల కంటే స్పష్టమైన నిర్వచనాలు చాలా మేలు - మీరు చేసినది మీ కళ్ళ ముందు ఉంటే దాన్ని మీరు మర్చిపోలేరు. అందుకే మనం ఏ సూపర్‌క్లాస్ యొక్క `_beforeTokenTransfer` ను ఓవర్‌రైడ్ చేస్తున్నామో పేర్కొనవలసి ఉంటుంది. + +```solidity + super._beforeTokenTransfer(from, to, amount); +``` + +ఈ లైన్ మనం వారసత్వంగా పొందిన ఒప్పందం లేదా ఒప్పందాల యొక్క `_beforeTokenTransfer` ఫంక్షన్‌ను పిలుస్తుంది. ఈ సందర్భంలో, అది `ERC20` మాత్రమే, `Ownable` కి ఈ హుక్ లేదు. ప్రస్తుతానికి `ERC20._beforeTokenTransfer` ఏమీ చేయనప్పటికీ, భవిష్యత్తులో ఫంక్షనాలిటీ జోడించబడినప్పుడు (మరియు మేము ఒప్పందాన్ని మళ్లీ అమలు చేయాలని నిర్ణయించుకున్నప్పుడు, ఎందుకంటే ఒప్పందాలు అమలు చేసిన తర్వాత మారవు) మేము దానిని పిలుస్తాము. + +### అవసరాలను కోడింగ్ చేయడం {#coding-the-requirements} + +మేము ఈ అవసరాలను ఫంక్షన్‌కు జోడించాలనుకుంటున్నాము: + +- `to` చిరునామా `address(this)`కు, అంటే ERC-20 ఒప్పందం యొక్క చిరునామాకు సమానంగా ఉండకూడదు. +- `to` చిరునామా ఖాళీగా ఉండకూడదు, అది ఈ రెండిటిలో ఒకటి అయి ఉండాలి: + - ఒక బాహ్యంగా యాజమాన్యం గల ఖాతా (EOA). ఒక చిరునామా EOA అవునో కాదో మనం నేరుగా తనిఖీ చేయలేము, కానీ మనం ఒక చిరునామా యొక్క ETH బ్యాలెన్స్‌ను తనిఖీ చేయవచ్చు. EOAలు దాదాపు ఎల్లప్పుడూ బ్యాలెన్స్‌ను కలిగి ఉంటాయి, అవి ఇకపై ఉపయోగించనప్పటికీ - వాటిని చివరి వీ వరకు క్లియర్ చేయడం కష్టం. + - ఒక స్మార్ట్ ఒప్పందం. ఒక చిరునామా స్మార్ట్ ఒప్పందం అవునో కాదో పరీక్షించడం కొంచెం కష్టం. బాహ్య సంకేత భాష పొడవును తనిఖీ చేసే ఒక ఆప్‌కోడ్ ఉంది, దానిని [`EXTCODESIZE`](https://www.evm.codes/#3b) అని పిలుస్తారు, కానీ అది సాలిడిటీలో నేరుగా అందుబాటులో లేదు. దాని కోసం మనం [యుల్](https://docs.soliditylang.org/en/v0.8.15/yul.html) ను ఉపయోగించాలి, ఇది EVM అసెంబ్లీ. సాలిడిటీ నుండి మనం ఉపయోగించగల ఇతర విలువలు ఉన్నాయి ([`
.code` మరియు `
.codehash`](https://docs.soliditylang.org/en/v0.8.15/units-and-global-variables.html#members-of-address-types)), కానీ అవి ఎక్కువ ఖర్చు అవుతాయి. + +కొత్త సంకేత భాషను లైన్ వారీగా పరిశీలిద్దాం: + +```solidity + require(to != address(this), "ఒప్పందం చిరునామాకు టోకెన్లను పంపలేరు"); +``` + +ఇది మొదటి అవసరం, `to` మరియు `this(address)` ఒకటే కాదని తనిఖీ చేయండి. + +```solidity + bool isToContract; + assembly { + isToContract := gt(extcodesize(to), 0) + } +``` + +ఒక చిరునామా ఒప్పందం అవునో కాదో మనం ఈ విధంగా తనిఖీ చేస్తాము. మేము Yul నుండి నేరుగా అవుట్‌పుట్‌ను స్వీకరించలేము, కాబట్టి బదులుగా మేము ఫలితాన్ని ఉంచడానికి ఒక వేరియబుల్‌ను నిర్వచిస్తాము (ఈ సందర్భంలో `isToContract`). Yul పనిచేసే విధానం ఏమిటంటే, ప్రతి ఆప్‌కోడ్ ఒక ఫంక్షన్‌గా పరిగణించబడుతుంది. కాబట్టి మొదట మనం ఒప్పందం పరిమాణాన్ని పొందడానికి [`EXTCODESIZE`](https://www.evm.codes/#3b) ను పిలుస్తాము, ఆపై అది సున్నా కాదని తనిఖీ చేయడానికి [`GT`](https://www.evm.codes/#11) ని ఉపయోగిస్తాము (మేము అన్‌సైన్డ్ పూర్ణాంకాలతో వ్యవహరిస్తున్నాము, కాబట్టి అది ప్రతికూలంగా ఉండదు). ఆ తర్వాత మనం ఫలితాన్ని `isToContract` కు వ్రాస్తాము. + +```solidity + require(to.balance != 0 || isToContract, "ఖాళీ చిరునామాకు టోకెన్లను పంపలేరు"); +``` + +చివరగా, ఖాళీ చిరునామాల కోసం అసలైన తనిఖీ మనకు ఉంది. + +## పరిపాలనా యాక్సెస్ {#admin-access} + +తప్పులను రద్దు చేయగల నిర్వాహకుడు ఉండటం కొన్నిసార్లు ఉపయోగకరంగా ఉంటుంది. దుర్వినియోగం యొక్క సంభావ్యతను తగ్గించడానికి, ఈ నిర్వాహకుడు ఒక [మల్టీసిగ్](https://blog.logrocket.com/security-choices-multi-signature-wallets/) కావచ్చు, తద్వారా ఒక చర్యపై బహుళ వ్యక్తులు అంగీకరించాలి. ఈ ఆర్టికల్‌లో మనకు రెండు పరిపాలనా లక్షణాలు ఉంటాయి: + +1. ఖాతాలను ఫ్రీజింగ్ మరియు అన్‌ఫ్రీజింగ్ చేయడం. ఉదాహరణకు, ఒక ఖాతా రాజీ పడినప్పుడు ఇది ఉపయోగకరంగా ఉంటుంది. +2. ఆస్తి శుభ్రపరచడం. + + చట్టబద్ధతను పొందటానికి కొన్నిసార్లు మోసగాళ్ళు నిజమైన టోకెన్ యొక్క ఒప్పందానికి మోసపూరిత టోకెన్లను పంపుతారు. ఉదాహరణకు, [ఇక్కడ చూడండి](https://optimism.blockscout.com/token/0x2348B1a1228DDCd2dB668c3d30207c3E1852fBbe?tab=holders). చట్టబద్ధమైన ERC-20 ఒప్పందం [0x4200....0042](https://optimism.blockscout.com/token/0x4200000000000000000000000000000000000042). అదిగా నటిస్తున్న స్కామ్ [0x234....bbe](https://optimism.blockscout.com/token/0x2348B1a1228DDCd2dB668c3d30207c3E1852fBbe). + + ప్రజలు పొరపాటున మన ఒప్పందానికి చట్టబద్ధమైన ERC-20 టోకెన్లను పంపే అవకాశం కూడా ఉంది, వాటిని బయటకు తీయడానికి ఒక మార్గం కావడానికి ఇది మరొక కారణం. + +OpenZeppelin పరిపాలనా యాక్సెస్‌ను ప్రారంభించడానికి రెండు యంత్రాంగాలను అందిస్తుంది: + +- [`Ownable`](https://docs.openzeppelin.com/contracts/5.x/access-control#ownership-and-ownable) ఒప్పందాలకు ఒకే యజమాని ఉంటారు. `onlyOwner` [మాడిఫైయర్](https://www.tutorialspoint.com/solidity/solidity_function_modifiers.htm) ఉన్న ఫంక్షన్లను ఆ యజమాని మాత్రమే పిలవగలరు. యజమానులు యాజమాన్యాన్ని వేరొకరికి బదిలీ చేయవచ్చు లేదా పూర్తిగా త్యజించవచ్చు. అన్ని ఇతర ఖాతాల హక్కులు సాధారణంగా ఒకే విధంగా ఉంటాయి. +- [`AccessControl`](https://docs.openzeppelin.com/contracts/5.x/access-control#role-based-access-control)ఒప్పందాలు [రోల్ బేస్డ్ యాక్సెస్ కంట్రోల్ (RBAC)](https://en.wikipedia.org/wiki/Role-based_access_control) ను కలిగి ఉంటాయి. + +సరళత కోసం, ఈ ఆర్టికల్‌లో మనం `Ownable` ని ఉపయోగిస్తాము. + +### ఒప్పందాలను ఫ్రీజింగ్ మరియు థావింగ్ చేయడం {#freezing-and-thawing-contracts} + +ఒప్పందాలను ఫ్రీజింగ్ మరియు థావింగ్ చేయడానికి అనేక మార్పులు అవసరం: + +- ఏ చిరునామాలు ఫ్రీజ్ చేయబడ్డాయో ట్రాక్ చేయడానికి చిరునామాల నుండి [బూలియన్‌లకు](https://en.wikipedia.org/wiki/Boolean_data_type) ఒక [మ్యాపింగ్](https://www.tutorialspoint.com/solidity/solidity_mappings.htm). అన్ని విలువలు ప్రారంభంలో సున్నా, ఇది బూలియన్ విలువల కోసం తప్పుగా వ్యాఖ్యానించబడుతుంది. డిఫాల్ట్‌గా ఖాతాలు ఫ్రీజ్ చేయబడవు కాబట్టి మనం కోరుకునేది ఇదే. + + ```solidity + mapping(address => bool) public frozenAccounts; + ``` + +- ఒక ఖాతా ఫ్రీజ్ చేయబడినప్పుడు లేదా థా చేయబడినప్పుడు ఆసక్తి ఉన్న ఎవరికైనా తెలియజేయడానికి [ఈవెంట్‌లు](https://www.tutorialspoint.com/solidity/solidity_events.htm). సాంకేతికంగా చెప్పాలంటే ఈ చర్యలకు ఈవెంట్‌లు అవసరం లేదు, కానీ ఇది ఆఫ్‌చైన్ సంకేత భాషకు ఈ ఈవెంట్‌లను వినడానికి మరియు ఏమి జరుగుతుందో తెలుసుకోవడానికి సహాయపడుతుంది. వేరొకరికి సంబంధించినది ఏదైనా జరిగినప్పుడు వాటిని విడుదల చేయడం స్మార్ట్ ఒప్పందం యొక్క మంచి పద్ధతిగా పరిగణించబడుతుంది. + + ఈవెంట్‌లు ఇండెక్స్ చేయబడ్డాయి కాబట్టి ఒక ఖాతా ఫ్రీజ్ చేయబడిన లేదా థా చేయబడిన అన్ని సార్లు శోధించడం సాధ్యమవుతుంది. + + ```solidity + // ఖాతాలు ఫ్రీజ్ చేయబడినప్పుడు లేదా అన్‌ఫ్రీజ్ చేయబడినప్పుడు + event AccountFrozen(address indexed _addr); + event AccountThawed(address indexed _addr); + ``` + +- ఖాతాలను ఫ్రీజింగ్ మరియు థావింగ్ చేయడానికి ఫంక్షన్లు. ఈ రెండు ఫంక్షన్లు దాదాపు ఒకే విధంగా ఉంటాయి, కాబట్టి మనం ఫ్రీజ్ ఫంక్షన్‌ను మాత్రమే పరిశీలిస్తాము. + + ```solidity + function freezeAccount(address addr) + public + onlyOwner + ``` + + [`public`](https://www.tutorialspoint.com/solidity/solidity_contracts.htm) అని మార్క్ చేయబడిన ఫంక్షన్లను ఇతర స్మార్ట్ ఒప్పందాల నుండి లేదా నేరుగా లావాదేవీ ద్వారా పిలవవచ్చు. + + ```solidity + { + require(!frozenAccounts[addr], "ఖాతా ఇప్పటికే ఫ్రీజ్ చేయబడింది"); + frozenAccounts[addr] = true; + emit AccountFrozen(addr); + } // ఫ్రీజ్అకౌంట్ + ``` + + ఖాతా ఇప్పటికే ఫ్రీజ్ చేయబడితే, వెనక్కి తిప్పండి. లేకపోతే, దానిని ఫ్రీజ్ చేసి, ఒక ఈవెంట్‌ను `emit` చేయండి. + +- ఫ్రీజ్ చేయబడిన ఖాతా నుండి డబ్బు తరలించకుండా నిరోధించడానికి `_beforeTokenTransfer`ని మార్చండి. ఫ్రీజ్ చేయబడిన ఖాతాలోకి ఇంకా డబ్బు బదిలీ చేయవచ్చని గమనించండి. + + ```solidity + require(!frozenAccounts[from], "ఖాతా ఫ్రీజ్ చేయబడింది"); + ``` + +### ఆస్తి శుభ్రపరచడం {#asset-cleanup} + +ఈ ఒప్పందం ద్వారా ఉంచబడిన ERC-20 టోకెన్లను విడుదల చేయడానికి, మనం అవి చెందిన టోకెన్ ఒప్పందంపై ఒక ఫంక్షన్‌ను పిలవాలి, అది [`transfer`](https://eips.ethereum.org/EIPS/eip-20#transfer) లేదా [`approve`](https://eips.ethereum.org/EIPS/eip-20#approve). ఈ సందర్భంలో అనుమతులపై గ్యాస్‌ను వృథా చేయడంలో అర్థం లేదు, మనం నేరుగా బదిలీ చేయవచ్చు. + +```solidity + function cleanupERC20( + address erc20, + address dest + ) + public + onlyOwner + { + IERC20 token = IERC20(erc20); +``` + +మనం చిరునామాను స్వీకరించినప్పుడు ఒక ఒప్పందం కోసం ఒక ఆబ్జెక్ట్‌ను సృష్టించడానికి ఇది సింటాక్స్. మనం దీన్ని చేయగలం ఎందుకంటే మనకు మూల సంకేత భాషలో భాగంగా ERC20 టోకెన్‌ల నిర్వచనం ఉంది (లైన్ 4 చూడండి), మరియు ఆ ఫైల్ [IERC20 కోసం నిర్వచనాన్ని](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol), అంటే OpenZeppelin ERC-20 ఒప్పందం కోసం ఇంటర్‌ఫేస్‌ను కలిగి ఉంది. + +```solidity + uint balance = token.balanceOf(address(this)); + token.transfer(dest, balance); + } +``` + +ఇది ఒక శుభ్రపరిచే ఫంక్షన్, కాబట్టి మనం ఏ టోకెన్లను వదిలివేయకూడదని భావించవచ్చు. వినియోగదారుడి నుండి బ్యాలెన్స్‌ను మాన్యువల్‌గా పొందడానికి బదులుగా, మనం ఈ ప్రక్రియను ఆటోమేట్ చేయవచ్చు. + +## ముగింపు {#conclusion} + +ఇది ఒక సంపూర్ణ పరిష్కారం కాదు - "వినియోగదారుడు తప్పు చేసాడు" అనే సమస్యకు సంపూర్ణ పరిష్కారం లేదు. అయితే, ఈ రకమైన తనిఖీలను ఉపయోగించడం కనీసం కొన్ని తప్పులను నివారించగలదు. ఖాతాలను స్తంభింపజేసే సామర్థ్యం ప్రమాదకరమైనప్పటికీ, హ్యాకర్‌కు దొంగిలించబడిన నిధులను నిరాకరించడం ద్వారా కొన్ని హ్యాక్‌ల నష్టాన్ని పరిమితం చేయడానికి ఉపయోగించవచ్చు. + +[నా మరిన్ని పనుల కోసం ఇక్కడ చూడండి](https://cryptodocguy.pro/). diff --git a/public/content/translations/te/developers/tutorials/ethereum-for-web2-auth/index.md b/public/content/translations/te/developers/tutorials/ethereum-for-web2-auth/index.md new file mode 100644 index 00000000000..2e58270e558 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/ethereum-for-web2-auth/index.md @@ -0,0 +1,886 @@ +--- +title: "web2 ప్రమాణీకరణ కోసం ఇతీరియమును ఉపయోగించడం" +description: "ఈ ట్యుటోరియల్ చదివిన తర్వాత, ఒక డెవలపర్ ఇతీరియము లాగిన్ (web3)ను SAML లాగిన్‌తో ఇంటిగ్రేట్ చేయగలరు, ఇది web2లో సింగిల్ సైన్-ఆన్ మరియు ఇతర సంబంధిత సేవలను అందించడానికి ఉపయోగించే ఒక ప్రామాణికం. ఇది ఇతీరియము సంతకాల ద్వారా web2 వనరులకు ప్రామాణీకరణను అనుమతిస్తుంది, వినియోగదారు గుణాలు ధృవీకరణల నుండి వస్తాయి." +author: Ori Pomerantz +tags: [ "web2", "ప్రమాణీకరణ", "eas" ] +skill: beginner +lang: te +published: 2025-04-30 +--- + +## పరిచయం + +[SAML](https://www.onelogin.com/learn/saml) అనేది web2లో ఉపయోగించే ఒక ప్రామాణికం, ఇది [గుర్తింపు ప్రదాత (IdP)](https://en.wikipedia.org/wiki/Identity_provider#SAML_identity_provider)కి [సేవా ప్రదాతల (SP)](https://en.wikipedia.org/wiki/Service_provider_\(SAML\)) కోసం వినియోగదారుడి సమాచారాన్ని అందించడానికి అనుమతిస్తుంది. + +ఈ ట్యుటోరియల్‌లో మీరు ఇతీరియమును ఇంకా స్థానికంగా సపోర్ట్ చేయని web2 సేవలకు తమను తాము ప్రామాణీకరించుకోవడానికి వినియోగదారులను వారి ఇతీరియము వాలెట్‌లను ఉపయోగించడానికి అనుమతించడానికి, ఇతీరియము సంతకాలను SAMLతో ఎలా ఇంటిగ్రేట్ చేయాలో నేర్చుకుంటారు. + +ఈ ట్యుటోరియల్ ఇద్దరు వేర్వేరు ప్రేక్షకుల కోసం వ్రాయబడిందని గమనించండి: + +- ఇతీరియమును అర్థం చేసుకుని, SAML నేర్చుకోవాల్సిన ఇతీరియము వ్యక్తులు +- SAML మరియు web2 ప్రామాణీకరణను అర్థం చేసుకుని, ఇతీరియము నేర్చుకోవాల్సిన Web2 వ్యక్తులు + +ఫలితంగా, ఇది మీకు ఇప్పటికే తెలిసిన చాలా పరిచయ విషయాలను కలిగి ఉండబోతోంది. దాన్ని దాటవేయడానికి సంకోచించకండి. + +### ఇతీరియము వ్యక్తుల కోసం SAML + +SAML ఒక కేంద్రీకృత ప్రోటోకాల్. ఒక సేవా ప్రదాత (SP) ఒక గుర్తింపు ప్రదాత (IdP) నుండి వాదనలను (ఉదాహరణకు "ఇది నా వినియోగదారుడు జాన్, అతనికి A, B, మరియు C చేయడానికి అనుమతులు ఉండాలి") అంగీకరించాలంటే, దానితో గానీ, లేదా ఆ IdP యొక్క సర్టిఫికేట్‌పై సంతకం చేసిన [సర్టిఫికేట్ అథారిటీ](https://www.ssl.com/article/what-is-a-certificate-authority-ca/)తో గానీ ముందుగా ఉన్న విశ్వాస సంబంధం ఉండాలి. + +ఉదాహరణకు, SP కంపెనీలకు ప్రయాణ సేవలను అందించే ఒక ప్రయాణ ఏజెన్సీ కావచ్చు, మరియు IdP ఒక కంపెనీ యొక్క అంతర్గత వెబ్ సైట్ కావచ్చు. ఉద్యోగులు వ్యాపార ప్రయాణాన్ని బుక్ చేసుకోవాల్సిన అవసరం వచ్చినప్పుడు, ప్రయాణ ఏజెన్సీ వాస్తవానికి ప్రయాణాన్ని బుక్ చేసుకోనివ్వడానికి ముందు కంపెనీ ద్వారా ప్రామాణీకరణ కోసం వారిని పంపుతుంది. + +![దశలవారీగా SAML ప్రక్రియ](./fig-01-saml.png) + +యాక్సెస్ కోసం బ్రౌజర్, SP, మరియు IdP అనే మూడు సంస్థలు ఈ విధంగా చర్చలు జరుపుతాయి. SPకి ముందుగా బ్రౌజర్‌ని ఉపయోగించే వినియోగదారుడి గురించి ఏమీ తెలియాల్సిన అవసరం లేదు, కేవలం IdPని విశ్వసిస్తే చాలు. + +### SAML వ్యక్తుల కోసం ఇతీరియము + +ఇతీరియము ఒక వికేంద్రీకృత వ్యవస్థ. + +![ఇతీరియము లాగాన్](./fig-02-eth-logon.png) + +వినియోగదారులు ఒక ప్రైవేట్ కీని కలిగి ఉంటారు (సాధారణంగా బ్రౌజర్ పొడిగింపులో ఉంచబడుతుంది). ప్రైవేట్ కీ నుండి మీరు పబ్లిక్ కీని, మరియు దాని నుండి 20-బైట్ చిరునామాను పొందవచ్చు. వినియోగదారులు ఒక సిస్టమ్‌లోకి లాగ్ ఇన్ చేయాల్సిన అవసరం వచ్చినప్పుడు, వారు ఒక నాన్స్ (ఒకే-వినియోగ విలువ)తో ఒక సందేశంపై సంతకం చేయమని అభ్యర్థించబడతారు. ఆ చిరునామా ద్వారా సంతకం సృష్టించబడిందని సర్వర్ ధృవీకరించగలదు. + +![ధృవీకరణల నుండి అదనపు డేటాను పొందడం](./fig-03-eas-data.png) + +సంతకం కేవలం ఇతీరియము చిరునామాను మాత్రమే ధృవీకరిస్తుంది. ఇతర వినియోగదారు గుణాలను పొందడానికి, మీరు సాధారణంగా [ధృవీకరణలు](https://attest.org/) ఉపయోగిస్తారు. ఒక ధృవీకరణలో సాధారణంగా ఈ ఫీల్డ్‌లు ఉంటాయి: + +- **ధృవీకర్త**, ధృవీకరణ చేసిన చిరునామా +- **గ్రహీత**, ధృవీకరణ వర్తించే చిరునామా +- **డేటా**, పేరు, అనుమతులు మొదలైన ధృవీకరించబడుతున్న డేటా. +- **స్కీమా**, డేటాను అర్థం చేసుకోవడానికి ఉపయోగించే స్కీమా యొక్క ID. + +ఇతీరియము యొక్క వికేంద్రీకృత స్వభావం కారణంగా, ఏ వినియోగదారుడైనా ధృవీకరణలు చేయవచ్చు. మేము ఏ ధృవీకరణలను నమ్మదగినవిగా పరిగణిస్తామో గుర్తించడానికి ధృవీకర్త యొక్క గుర్తింపు ముఖ్యం. + +## సెటప్ + +మొదటి దశ SAML SP మరియు SAML IdP తమ మధ్య సంభాషించుకోవడం. + +1. సాఫ్ట్‌వేర్‌ను డౌన్‌లోడ్ చేయండి. ఈ వ్యాసం కోసం నమూనా సాఫ్ట్‌వేర్ [githubలో ఉంది](https://github.com/qbzzt/250420-saml-ethereum). వివిధ దశలు వివిధ బ్రాంచ్‌లలో నిల్వ చేయబడతాయి, ఈ దశ కోసం మీకు `saml-only` కావాలి + + ```sh + git clone https://github.com/qbzzt/250420-saml-ethereum -b saml-only + cd 250420-saml-ethereum + pnpm install + ``` + +2. స్వీయ-సంతకం చేసిన సర్టిఫికేట్‌లతో కీలను సృష్టించండి. అంటే కీ దాని స్వంత సర్టిఫికేట్ అథారిటీ, మరియు దానిని సేవా ప్రదాతకు మాన్యువల్‌గా దిగుమతి చేసుకోవాలి. మరింత సమాచారం కోసం [OpenSSL డాక్స్](https://docs.openssl.org/master/man1/openssl-req/) చూడండి. + + ```sh + mkdir keys + cd keys + openssl req -new -x509 -days 365 -nodes -sha256 -out saml-sp.crt -keyout saml-sp.pem -subj /CN=sp/ + openssl req -new -x509 -days 365 -nodes -sha256 -out saml-idp.crt -keyout saml-idp.pem -subj /CN=idp/ + cd .. + ``` + +3. సర్వర్‌లను ప్రారంభించండి (SP మరియు IdP రెండూ) + + ```sh + pnpm start + ``` + +4. URL [http://localhost:3000/](http://localhost:3000/) వద్ద SPకి బ్రౌజ్ చేసి, IdP (పోర్ట్ 3001)కి మళ్ళించబడటానికి బటన్‌ను క్లిక్ చేయండి. + +5. IdPకి మీ ఇమెయిల్ చిరునామాను అందించి, **సేవా ప్రదాతకు లాగిన్ చేయండి** క్లిక్ చేయండి. మీరు తిరిగి సేవా ప్రదాతకు (పోర్ట్ 3000) మళ్ళించబడటాన్ని మరియు అది మీ ఇమెయిల్ చిరునామా ద్వారా మిమ్మల్ని గుర్తించడాన్ని చూడండి. + +### వివరణాత్మక వివరణ + +దశలవారీగా ఇది జరుగుతుంది: + +![ఇతీరియము లేకుండా సాధారణ SAML లాగాన్](./fig-04-saml-no-eth.png) + +#### src/config.mts + +ఈ ఫైల్ గుర్తింపు ప్రదాత మరియు సేవా ప్రదాత రెండింటికీ కాన్ఫిగరేషన్‌ను కలిగి ఉంది. సాధారణంగా ఈ రెండూ వివిధ సంస్థలుగా ఉంటాయి, కానీ ఇక్కడ మనం సరళత కోసం కోడ్‌ను పంచుకోవచ్చు. + +```typescript +const fs = await import("fs") + +const protocol="http" +``` + +ఇప్పుడైతే మనం కేవలం పరీక్షిస్తున్నాం, కాబట్టి HTTP ఉపయోగించడం పర్వాలేదు. + +```typescript +export const spCert = fs.readFileSync("keys/saml-sp.crt").toString() +export const idpCert = fs.readFileSync("keys/saml-idp.crt").toString() +``` + +పబ్లిక్ కీలను చదవండి, ఇవి సాధారణంగా రెండు కాంపోనెంట్‌లకు అందుబాటులో ఉంటాయి (మరియు నేరుగా విశ్వసించబడతాయి, లేదా విశ్వసనీయ సర్టిఫికేట్ అథారిటీ ద్వారా సంతకం చేయబడతాయి). + +```typescript +export const spPort = 3000 +export const spHostname = "localhost" +export const spDir = "sp" + +export const idpPort = 3001 +export const idpHostname = "localhost" +export const idpDir = "idp" + +export const spUrl = `${protocol}://${spHostname}:${spPort}/${spDir}` +export const idpUrl = `${protocol}://${idpHostname}:${idpPort}/${idpDir}` +``` + +రెండు కాంపోనెంట్‌ల కోసం URLలు. + +```typescript +export const spPublicData = { +``` + +సేవా ప్రదాత కోసం పబ్లిక్ డేటా. + +```typescript + entityID: `${spUrl}/metadata`, +``` + +సంప్రదాయం ప్రకారం, SAMLలో `entityID` అనేది సంస్థ యొక్క మెటాడేటా అందుబాటులో ఉండే URL. ఈ మెటాడేటా ఇక్కడ ఉన్న పబ్లిక్ డేటాకు అనుగుణంగా ఉంటుంది, అయితే ఇది XML రూపంలో ఉంటుంది. + +```typescript + wantAssertionsSigned: true, + authnRequestsSigned: false, + signingCert: spCert, + allowCreate: true, + assertionConsumerService: [{ + Binding: 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', + Location: `${spUrl}/assertion`, + }] + } +``` + +మన ప్రయోజనాల కోసం అత్యంత ముఖ్యమైన నిర్వచనం `assertionConsumerServer`. అంటే సేవా ప్రదాతకు ఏదైనా చెప్పడానికి (ఉదాహరణకు, "మీకు ఈ సమాచారం పంపిన వినియోగదారుడు somebody@example.com") మనం [HTTP POST](https://www.w3schools.com/tags/ref_httpmethods.asp)ని URL `http://localhost:3000/sp/assertion`కు ఉపయోగించాలి. + +```typescript +export const idpPublicData = { + entityID: `${idpUrl}/metadata`, + signingCert: idpCert, + wantAuthnRequestsSigned: false, + singleSignOnService: [{ + Binding: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", + Location: `${idpUrl}/login` + }], + singleLogoutService: [{ + Binding: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", + Location: `${idpUrl}/logout` + }], + } +``` + +గుర్తింపు ప్రదాత కోసం పబ్లిక్ డేటా ఇలాంటిదే. ఒక వినియోగదారుడిని లాగ్ ఇన్ చేయడానికి మీరు `http://localhost:3001/idp/login`కు POST చేయాలని మరియు ఒక వినియోగదారుడిని లాగ్ అవుట్ చేయడానికి మీరు `http://localhost:3001/idp/logout`కు POST చేయాలని ఇది నిర్దేశిస్తుంది. + +#### src/sp.mts + +ఇది సేవా ప్రదాతను అమలు చేసే కోడ్. + +```typescript +import * as config from "./config.mts" +const fs = await import("fs") +const saml = await import("samlify") +``` + +SAMLని అమలు చేయడానికి మేము [`samlify`](https://www.npmjs.com/package/samlify) లైబ్రరీని ఉపయోగిస్తాము. + +```typescript +import * as validator from "@authenio/samlify-node-xmllint" +saml.setSchemaValidator(validator) +``` + +XML సరైనదని, ఊహించిన పబ్లిక్ కీతో సంతకం చేయబడిందని మొదలైనవాటిని ధృవీకరించడానికి `samlify` లైబ్రరీ ఒక ప్యాకేజీని కలిగి ఉండాలని ఆశిస్తుంది. ఈ ప్రయోజనం కోసం మేము [`@authenio/samlify-node-xmllint`](https://www.npmjs.com/package/@authenio/samlify-node-xmllint)ని ఉపయోగిస్తాము. + +```typescript +const express = (await import("express")).default +const spRouter = express.Router() +const app = express() +``` + +ఒక [`express`](https://expressjs.com/) [`Router`](https://expressjs.com/en/5x/api.html#router) అనేది ఒక వెబ్ సైట్‌లో మౌంట్ చేయగల "మినీ వెబ్ సైట్". ఈ సందర్భంలో, మేము అన్ని సేవా ప్రదాత నిర్వచనాలను ఒకచోట చేర్చడానికి దీనిని ఉపయోగిస్తాము. + +```typescript +const spPrivateKey = fs.readFileSync("keys/saml-sp.pem").toString() + +const sp = saml.ServiceProvider({ + privateKey: spPrivateKey, + ...config.spPublicData +}) +``` + +సేవా ప్రదాత యొక్క స్వీయ ప్రాతినిధ్యం అనేది మొత్తం పబ్లిక్ డేటా, మరియు సమాచారాన్ని సంతకం చేయడానికి అది ఉపయోగించే ప్రైవేట్ కీ. + +```typescript +const idp = saml.IdentityProvider(config.idpPublicData); +``` + +పబ్లిక్ డేటాలో సేవా ప్రదాతకు గుర్తింపు ప్రదాత గురించి తెలియవలసినవన్నీ ఉంటాయి. + +```typescript +spRouter.get(`/metadata`, + (req, res) => res.header("Content-Type", "text/xml").send(sp.getMetadata()) +) +``` + +ఇతర SAML కాంపోనెంట్‌లతో పరస్పర చర్యను ప్రారంభించడానికి, సేవ మరియు గుర్తింపు ప్రదాతలు వారి పబ్లిక్ డేటాను (మెటాడేటా అని పిలుస్తారు) `/metadata`లో XML ఫార్మాట్‌లో అందుబాటులో ఉంచాలి. + +```typescript +spRouter.post(`/assertion`, +``` + +ఇది బ్రౌజర్ తనను తాను గుర్తించుకోవడానికి యాక్సెస్ చేసే పేజీ. ఈ వాదనలో వినియోగదారు గుర్తింపు (ఇక్కడ మనం ఇమెయిల్ చిరునామాను ఉపయోగిస్తాము) ఉంటుంది, మరియు అదనపు గుణాలను కూడా కలిగి ఉండవచ్చు. ఇది పైన ఉన్న సీక్వెన్స్ రేఖాచిత్రంలో 7వ దశకు హ్యాండ్లర్. + +```typescript + async (req, res) => { + // console.log(`SAML response:\n${Buffer.from(req.body.SAMLResponse, 'base64').toString('utf-8')}`) +``` + +వాదనలో అందించిన XML డేటాను చూడటానికి మీరు వ్యాఖ్యానించిన ఆదేశాన్ని ఉపయోగించవచ్చు. ఇది [బేస్64 ఎన్‌కోడ్](https://en.wikipedia.org/wiki/Base64) చేయబడింది. + +```typescript + try { + const loginResponse = await sp.parseLoginResponse(idp, 'post', req); +``` + +గుర్తింపు సర్వర్ నుండి లాగిన్ అభ్యర్థనను విశ్లేషించండి. + +```typescript + res.send(` + + +

Hello ${loginResponse.extract.nameID}

+ + + `) + res.send(); +``` + +వినియోగదారుడికి మేము లాగిన్ పొందామని చూపించడానికి, ఒక HTML ప్రతిస్పందనను పంపండి. + +```typescript + } catch (err) { + console.error('Error processing SAML response:', err); + res.status(400).send('SAML authentication failed'); + } + } +) +``` + +వైఫల్యం సంభవించినప్పుడు వినియోగదారుడికి తెలియజేయండి. + +```typescript +spRouter.get('/login', +``` + +బ్రౌజర్ ఈ పేజీని పొందడానికి ప్రయత్నించినప్పుడు ఒక లాగిన్ అభ్యర్థనను సృష్టించండి. ఇది పైన ఉన్న సీక్వెన్స్ రేఖాచిత్రంలో 1వ దశకు హ్యాండ్లర్. + +```typescript + async (req, res) => { + const loginRequest = await sp.createLoginRequest(idp, "post") +``` + +ఒక లాగిన్ అభ్యర్థనను పోస్ట్ చేయడానికి సమాచారం పొందండి. + +```typescript + res.send(` + + + +``` + +ఈ పేజీ ఫారమ్‌ను (క్రింద చూడండి) స్వయంచాలకంగా సమర్పిస్తుంది. ఈ విధంగా వినియోగదారుడు మళ్ళించబడటానికి ఏమీ చేయనవసరం లేదు. ఇది పైన ఉన్న సీక్వెన్స్ రేఖాచిత్రంలో 2వ దశ. + +```typescript +
+``` + +`loginRequest.entityEndpoint` (గుర్తింపు ప్రదాత ఎండ్‌పాయింట్ యొక్క URL)కి పోస్ట్ చేయండి. + +```typescript + +``` + +ఇన్‌పుట్ పేరు `loginRequest.type` (`SAMLRequest`). ఆ ఫీల్డ్ కోసం కంటెంట్ `loginRequest.context`, ఇది మళ్ళీ బేస్64 ఎన్‌కోడ్ చేయబడిన XML. + +```typescript +
+ + + `) + } +) + +app.use(express.urlencoded({extended: true})) +``` + +[ఈ మిడిల్‌వేర్](https://expressjs.com/en/5x/api.html#express.urlencoded) [HTTP అభ్యర్థన](https://www.tutorialspoint.com/http/http_requests.htm) యొక్క బాడీని చదువుతుంది. డిఫాల్ట్‌గా ఎక్స్‌ప్రెస్ దానిని పట్టించుకోదు, ఎందుకంటే చాలా అభ్యర్థనలకు అది అవసరం లేదు. POST బాడీని ఉపయోగిస్తుంది కాబట్టి మాకు అది అవసరం. + +```typescript +app.use(`/${config.spDir}`, spRouter) +``` + +సేవా ప్రదాత డైరెక్టరీ (`/sp`)లో రౌటర్‌ను మౌంట్ చేయండి. + +```typescript +app.get("/", (req, res) => { + res.send(` + + + + + + `) +}) +``` + +ఒక బ్రౌజర్ రూట్ డైరెక్టరీని పొందడానికి ప్రయత్నిస్తే, దానికి లాగిన్ పేజీకి ఒక లింక్‌ను అందించండి. + +```typescript +app.listen(config.spPort, () => { + console.log(`service provider is running on http://${config.spHostname}:${config.spPort}`) +}) +``` + +ఈ ఎక్స్‌ప్రెస్ అప్లికేషన్‌తో `spPort`కి వినండి. + +#### src/idp.mts + +ఇది గుర్తింపు ప్రదాత. ఇది సేవా ప్రదాతకు చాలా ఇలాంటిది, దిగువ వివరణలు వివిధ భాగాల కోసం. + +```typescript +const xmlParser = new (await import("fast-xml-parser")).XMLParser( + { + ignoreAttributes: false, // Preserve attributes + attributeNamePrefix: "@_", // Prefix for attributes + } +) +``` + +సేవా ప్రదాత నుండి మేము స్వీకరించే XML అభ్యర్థనను మేము చదివి అర్థం చేసుకోవాలి. + +```typescript +const getLoginPage = requestId => ` +``` + +ఈ ఫంక్షన్ పైన ఉన్న సీక్వెన్స్ రేఖాచిత్రంలో 4వ దశలో తిరిగి ఇవ్వబడిన స్వీయ-సమర్పిత ఫారమ్‌తో పేజీని సృష్టిస్తుంది. + +```typescript + + + Login page + + +

Login page

+
+ + Email address: +
+ +``` + +మేము సేవా ప్రదాతకు పంపే రెండు ఫీల్డ్‌లు ఉన్నాయి: + +1. మేము ప్రతిస్పందిస్తున్న `requestId`. +2. వినియోగదారు గుర్తింపు (మేము ఇప్పటికి వినియోగదారుడు అందించిన ఇమెయిల్ చిరునామాను ఉపయోగిస్తాము). + +```typescript +
+ + + +const idpRouter = express.Router() + +idpRouter.post("/loginSubmitted", async (req, res) => { + const loginResponse = await idp.createLoginResponse( +``` + +ఇది పైన ఉన్న సీక్వెన్స్ రేఖాచిత్రంలో 5వ దశకు హ్యాండ్లర్. [`idp.createLoginResponse`](https://github.com/tngan/samlify/blob/master/src/entity-idp.ts#L73-L125) లాగిన్ ప్రతిస్పందనను సృష్టిస్తుంది. + +```typescript + sp, + { + authnContextClassRef: 'urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport', + audience: sp.entityID, +``` + +ప్రేక్షకులు సేవా ప్రదాత. + +```typescript + extract: { + request: { + id: req.body.requestId + } + }, +``` + +అభ్యర్థన నుండి సంగ్రహించిన సమాచారం. అభ్యర్థనలో మనకు ఆసక్తి ఉన్న ఒకే ఒక పరామితి requestId, ఇది సేవా ప్రదాతకు అభ్యర్థనలను మరియు వాటి ప్రతిస్పందనలను సరిపోల్చడానికి అనుమతిస్తుంది. + +```typescript + signingKey: { privateKey: idpPrivateKey, publicKey: config.idpCert } // Ensure signing +``` + +ప్రతిస్పందనను సంతకం చేయడానికి డేటాను కలిగి ఉండటానికి మాకు `signingKey` అవసరం. సేవా ప్రదాత సంతకం చేయని అభ్యర్థనలను విశ్వసించడు. + +```typescript + }, + "post", + { + email: req.body.email +``` + +ఇది మేము సేవా ప్రదాతకు తిరిగి పంపే వినియోగదారు సమాచారంతో ఉన్న ఫీల్డ్. + +```typescript + } + ); + + res.send(` + + + + +
+ +
+ + + `) +}) +``` + +మళ్ళీ, ఒక స్వీయ-సమర్పిత ఫారమ్‌ను ఉపయోగించండి. ఇది పైన ఉన్న సీక్వెన్స్ రేఖాచిత్రంలో 6వ దశ. + +```typescript + +// IdP endpoint for login requests +idpRouter.post(`/login`, +``` + +ఇది సేవా ప్రదాత నుండి లాగిన్ అభ్యర్థనను స్వీకరించే ఎండ్‌పాయింట్. ఇది పైన ఉన్న సీక్వెన్స్ రేఖాచిత్రంలో 3వ దశకు హ్యాండ్లర్. + +```typescript + async (req, res) => { + try { + // Workaround because I couldn't get parseLoginRequest to work. + // const loginRequest = await idp.parseLoginRequest(sp, 'post', req) + const samlRequest = xmlParser.parse(Buffer.from(req.body.SAMLRequest, 'base64').toString('utf-8')) + res.send(getLoginPage(samlRequest["samlp:AuthnRequest"]["@_ID"])) +``` + +మేము [`idp.parseLoginRequest`](https://github.com/tngan/samlify/blob/master/src/entity-idp.ts#L127-L144)ని ఉపయోగించి ప్రామాణీకరణ అభ్యర్థన యొక్క IDని చదవగలగాలి. అయితే, నేను దానిని పని చేసేలా చేయలేకపోయాను మరియు దానిపై ఎక్కువ సమయం వెచ్చించడం విలువైనది కాదు కాబట్టి నేను కేవలం ఒక [సాధారణ-ప్రయోజన XML పార్సర్](https://www.npmjs.com/package/fast-xml-parser)ని ఉపయోగిస్తాను. మాకు కావలసిన సమాచారం `` ట్యాగ్‌లోని `ID` గుణం, ఇది XML యొక్క అత్యున్నత స్థాయిలో ఉంటుంది. + +## ఇతీరియము సంతకాలను ఉపయోగించడం + +ఇప్పుడు మనం సేవా ప్రదాతకు ఒక వినియోగదారు గుర్తింపును పంపగలుగుతున్నాం కాబట్టి, తదుపరి దశ వినియోగదారు గుర్తింపును విశ్వసనీయ పద్ధతిలో పొందడం. Viem మనకు వినియోగదారు చిరునామా కోసం వాలెట్‌ను అడగడానికి అనుమతిస్తుంది, కానీ దీని అర్థం బ్రౌజర్ నుండి సమాచారం అడగడం. మేము బ్రౌజర్‌ను నియంత్రించలేము, కాబట్టి దాని నుండి మనకు లభించే ప్రతిస్పందనను మనం స్వయంచాలకంగా విశ్వసించలేము. + +బదులుగా, IdP బ్రౌజర్‌కు సంతకం చేయడానికి ఒక స్ట్రింగ్‌ను పంపుతుంది. బ్రౌజర్‌లోని వాలెట్ ఈ స్ట్రింగ్‌పై సంతకం చేస్తే, అది నిజంగా ఆ చిరునామా అని అర్థం (అంటే, దానికి చిరునామాకు సంబంధించిన ప్రైవేట్ కీ తెలుసు). + +దీనిని చర్యలో చూడటానికి, ఉన్న IdP మరియు SPలను ఆపి, ఈ ఆదేశాలను అమలు చేయండి: + +```sh +git checkout eth-signatures +pnpm install +pnpm start +``` + +ఆపై [SPకి](http://localhost:3000) బ్రౌజ్ చేసి, సూచనలను అనుసరించండి. + +ఈ సమయంలో ఇతీరియము చిరునామా నుండి ఇమెయిల్ చిరునామాను ఎలా పొందాలో మాకు తెలియదు, కాబట్టి బదులుగా మేము SPకి `<ఇతీరియము చిరునామా>@bad.email.address` అని రిపోర్ట్ చేస్తాము. + +### వివరణాత్మక వివరణ + +మునుపటి రేఖాచిత్రంలో 4-5 దశలలో మార్పులు ఉన్నాయి. + +![ఒక ఇతీరియము సంతకంతో SAML](./fig-05-saml-w-signature.png) + +మేము మార్చిన ఏకైక ఫైల్ `idp.mts`. ఇక్కడ మార్చబడిన భాగాలు ఉన్నాయి. + +```typescript +import { v4 as uuidv4 } from 'uuid' +import { verifyMessage } from 'viem' +``` + +మాకు ఈ రెండు అదనపు లైబ్రరీలు అవసరం. మేము [నాన్స్](https://en.wikipedia.org/wiki/Cryptographic_nonce) విలువను సృష్టించడానికి [`uuid`](https://www.npmjs.com/package/uuid)ని ఉపయోగిస్తాము. విలువకు ప్రాముఖ్యత లేదు, కేవలం అది ఒక్కసారి మాత్రమే ఉపయోగించబడుతుంది అనే వాస్తవం ముఖ్యం. + +[`viem`](https://viem.sh/) లైబ్రరీ మనకు ఇతీరియము నిర్వచనాలను ఉపయోగించడానికి అనుమతిస్తుంది. ఇక్కడ సంతకం నిజంగా చెల్లుబాటు అయ్యేదని ధృవీకరించడానికి మాకు ఇది అవసరం. + +```typescript +const loginPrompt = "To access the service provider, sign this nonce: " +``` + +వాలెట్ సందేశంపై సంతకం చేయడానికి వినియోగదారుని అనుమతి అడుగుతుంది. కేవలం ఒక నాన్స్ మాత్రమే ఉన్న సందేశం వినియోగదారులను గందరగోళానికి గురి చేస్తుంది, కాబట్టి మేము ఈ ప్రాంప్ట్‌ను చేర్చుతాము. + +```typescript +// Keep requestIDs here +let nonces = {} +``` + +దానికి ప్రతిస్పందించడానికి మాకు అభ్యర్థన సమాచారం అవసరం. మేము దానిని అభ్యర్థనతో (దశ 4) పంపవచ్చు, మరియు దానిని తిరిగి స్వీకరించవచ్చు (దశ 5). అయితే, మేము బ్రౌజర్ నుండి పొందే సమాచారాన్ని విశ్వసించలేము, ఇది సంభావ్యంగా హానికరమైన వినియోగదారు నియంత్రణలో ఉంటుంది. కాబట్టి నాన్స్‌ను కీగా ఇక్కడ నిల్వ చేయడం మంచిది. + +సరళత కోసం మనం ఇక్కడ ఒక వేరియబుల్‌గా చేస్తున్నామని గమనించండి. అయితే, దీనికి అనేక ప్రతికూలతలు ఉన్నాయి: + +- మేము సేవా నిరాకరణ దాడికి గురవుతాము. ఒక హానికరమైన వినియోగదారుడు చాలాసార్లు లాగ్ ఆన్ చేయడానికి ప్రయత్నించవచ్చు, మా మెమరీని నింపవచ్చు. +- IdP ప్రక్రియను పునఃప్రారంభించాల్సిన అవసరం వస్తే, మనం ఇప్పటికే ఉన్న విలువలను కోల్పోతాము. +- మేము బహుళ ప్రక్రియలలో లోడ్ బ్యాలెన్స్ చేయలేము, ఎందుకంటే ప్రతిదానికి దాని స్వంత వేరియబుల్ ఉంటుంది. + +ఒక ప్రొడక్షన్ సిస్టమ్‌లో మనం ఒక డేటాబేస్‌ను ఉపయోగిస్తాము మరియు ఏదో ఒక రకమైన గడువు ముగింపు యంత్రాంగాన్ని అమలు చేస్తాము. + +```typescript +const getSignaturePage = requestId => { + const nonce = uuidv4() + nonces[nonce] = requestId +``` + +ఒక నాన్స్‌ను సృష్టించి, భవిష్యత్ ఉపయోగం కోసం `requestId`ని నిల్వ చేయండి. + +```typescript + return ` + + + + + +

Please sign

+ +
+ + + +` +} +``` + +మిగిలినది కేవలం ప్రామాణిక HTML. + +```typescript +idpRouter.get("/signature/:nonce/:account/:signature", async (req, res) => { +``` + +ఇది సీక్వెన్స్ రేఖాచిత్రంలో 5వ దశకు హ్యాండ్లర్. + +```typescript + const requestId = nonces[req.params.nonce] + if (requestId === undefined) { + res.send("Bad nonce") + return ; + } + + nonces[req.params.nonce] = undefined +``` + +అభ్యర్థన IDని పొందండి, మరియు దానిని తిరిగి ఉపయోగించలేకుండా చూసుకోవడానికి `nonces` నుండి నాన్స్‌ను తొలగించండి. + +```typescript + try { +``` + +సంతకం చెల్లనిదిగా ఉండటానికి చాలా మార్గాలు ఉన్నందున, మేము దీనిని `try ...`లో చుట్టుతాము. బ్లాక్ విసిరిన ఏవైనా లోపాలను పట్టుకోవడానికి `catch` చేయండి. + +```typescript + const validSignature = await verifyMessage({ + address: req.params.account, + message: `${loginPrompt}${req.params.nonce}`, + signature: req.params.signature + }) +``` + +సీక్వెన్స్ రేఖాచిత్రంలో 5.5వ దశను అమలు చేయడానికి [`verifyMessage`](https://viem.sh/docs/actions/public/verifyMessage#verifymessage)ని ఉపయోగించండి. + +```typescript + if (!validSignature) + throw("Bad signature") + } catch (err) { + res.send("Error:" + err) + return ; + } +``` + +హ్యాండ్లర్ యొక్క మిగిలిన భాగం మనం ఇంతకు ముందు `/loginSubmitted` హ్యాండ్లర్‌లో చేసిన దానికి సమానంగా ఉంటుంది, ఒక చిన్న మార్పు మినహా. + +```typescript + const loginResponse = await idp.createLoginResponse( + . + . + . + { + email: req.params.account + "@bad.email.address" + } + ); +``` + +మాకు అసలు ఇమెయిల్ చిరునామా లేదు (మేము దానిని తదుపరి విభాగంలో పొందుతాము), కాబట్టి ఇప్పటికి మేము ఇతీరియము చిరునామాను తిరిగి ఇస్తాము మరియు దానిని స్పష్టంగా ఇమెయిల్ చిరునామా కాదని గుర్తిస్తాము. + +```typescript +// IdP endpoint for login requests +idpRouter.post(`/login`, + async (req, res) => { + try { + // Workaround because I couldn't get parseLoginRequest to work. + // const loginRequest = await idp.parseLoginRequest(sp, 'post', req) + const samlRequest = xmlParser.parse(Buffer.from(req.body.SAMLRequest, 'base64').toString('utf-8')) + res.send(getSignaturePage(samlRequest["samlp:AuthnRequest"]["@_ID"])) + } catch (err) { + console.error('Error processing SAML response:', err); + res.status(400).send('SAML authentication failed'); + } + } +) +``` + +`getLoginPage` బదులుగా, ఇప్పుడు 3వ దశ హ్యాండ్లర్‌లో `getSignaturePage`ని ఉపయోగించండి. + +## ఇమెయిల్ చిరునామాను పొందడం + +తదుపరి దశ ఇమెయిల్ చిరునామాను పొందడం, సేవా ప్రదాత అభ్యర్థించిన గుర్తింపు. అది చేయడానికి, మేము [Ethereum Attestation Service (EAS)](https://attest.org/)ని ఉపయోగిస్తాము. + +ధృవీకరణలను పొందడానికి సులభమైన మార్గం [GraphQL API](https://docs.attest.org/docs/developer-tools/api)ని ఉపయోగించడం. మేము ఈ ప్రశ్నను ఉపయోగిస్తాము: + +``` +query GetAttestationsByRecipient { + attestations( + where: { + recipient: { equals: "${getAddress(ethAddr)}" } + schemaId: { equals: "0xfa2eff59a916e3cc3246f9aec5e0ca00874ae9d09e4678e5016006f07622f977" } + } + take: 1 + ) { + data + id + attester + } +} +``` + +ఈ [`schemaId`](https://optimism.easscan.org/schema/view/0xfa2eff59a916e3cc3246f9aec5e0ca00874ae9d09e4678e5016006f07622f977) కేవలం ఒక ఇ-మెయిల్ చిరునామాను మాత్రమే కలిగి ఉంటుంది. ఈ ప్రశ్న ఈ స్కీమా యొక్క ధృవీకరణల కోసం అడుగుతుంది. ధృవీకరణ యొక్క విషయం `గ్రహీత` అని పిలువబడుతుంది. ఇది ఎల్లప్పుడూ ఒక ఇతీరియము చిరునామా. + +హెచ్చరిక: మనం ఇక్కడ ధృవీకరణలను పొందుతున్న విధానంలో రెండు భద్రతా సమస్యలు ఉన్నాయి. + +- మేము API ఎండ్‌పాయింట్, `https://optimism.easscan.org/graphql`కు వెళ్తున్నాము, ఇది ఒక కేంద్రీకృత భాగం. మేము `id` గుణాన్ని పొంది, ఆ తర్వాత ఒక ధృవీకరణ నిజమైనదని ధృవీకరించడానికి ఆన్‌చెయిన్‌లో లుకప్ చేయవచ్చు, కానీ API ఎండ్‌పాయింట్ వాటి గురించి మాకు చెప్పకుండా ధృవీకరణలను సెన్సార్ చేయగలదు. + + ఈ సమస్యను పరిష్కరించడం అసాధ్యం కాదు, మనం మన స్వంత GraphQL ఎండ్‌పాయింట్‌ను అమలు చేయవచ్చు మరియు చైన్ లాగ్‌ల నుండి ధృవీకరణలను పొందవచ్చు, కానీ అది మన ప్రయోజనాల కోసం అధికం. + +- మేము ధృవీకర్త గుర్తింపును చూడము. ఎవరైనా మనకు తప్పుడు సమాచారాన్ని అందించవచ్చు. ఒక నిజ ప్రపంచ అమలులో మనకు విశ్వసనీయ ధృవీకర్తల సెట్ ఉంటుంది మరియు వారి ధృవీకరణలను మాత్రమే చూస్తాము. + +దీనిని చర్యలో చూడటానికి, ఉన్న IdP మరియు SPలను ఆపి, ఈ ఆదేశాలను అమలు చేయండి: + +```sh +git checkout email-address +pnpm install +pnpm start +``` + +ఆపై మీ ఇ-మెయిల్ చిరునామాను అందించండి. అది చేయడానికి మీకు రెండు మార్గాలు ఉన్నాయి: + +- ఒక ప్రైవేట్ కీని ఉపయోగించి ఒక వాలెట్‌ను దిగుమతి చేసుకోండి, మరియు `0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80` అనే టెస్టింగ్ ప్రైవేట్ కీని ఉపయోగించండి. + +- మీ స్వంత ఇ-మెయిల్ చిరునామా కోసం ఒక ధృవీకరణను జోడించండి: + + 1. ధృవీకరణ ఎక్స్‌ప్లోరర్‌లో [స్కీమాకు బ్రౌజ్ చేయండి](https://optimism.easscan.org/schema/view/0xfa2eff59a916e3cc3246f9aec5e0ca00874ae9d09e4678e5016006f07622f977). + + 2. **స్కీమాతో ధృవీకరించండి** క్లిక్ చేయండి. + + 3. మీ ఇతీరియము చిరునామాను గ్రహీతగా, మీ ఇ-మెయిల్ చిరునామాను ఇమెయిల్ చిరునామాగా నమోదు చేయండి, మరియు **ఆన్‌చెయిన్** ఎంచుకోండి. ఆపై **ధృవీకరణ చేయండి** క్లిక్ చేయండి. + + 4. మీ వాలెట్‌లో లావాదేవీని ఆమోదించండి. గ్యాస్ కోసం చెల్లించడానికి మీకు [Optimism బ్లాక్ చైను](https://app.optimism.io/bridge/deposit) పై కొంత ETH అవసరం. + +ఏ విధంగానైనా, మీరు ఇది చేసిన తర్వాత [http://localhost:3000](http://localhost:3000)కు బ్రౌజ్ చేసి, సూచనలను అనుసరించండి. మీరు టెస్టింగ్ ప్రైవేట్ కీని దిగుమతి చేసుకుంటే, మీరు స్వీకరించే ఇ-మెయిల్ `test_addr_0@example.com`. మీరు మీ స్వంత చిరునామాను ఉపయోగిస్తే, అది మీరు ధృవీకరించినదిగా ఉండాలి. + +### వివరణాత్మక వివరణ + +![ఇతీరియము చిరునామా నుండి ఇ-మెయిల్‌కు పొందడం](./fig-06-saml-sig-n-email.png) + +కొత్త దశలు GraphQL సంభాషణ, 5.6 మరియు 5.7 దశలు. + +మళ్ళీ, ఇక్కడ `idp.mts` యొక్క మార్చబడిన భాగాలు ఉన్నాయి. + +```typescript +import { GraphQLClient } from 'graphql-request' +import { SchemaEncoder } from '@ethereum-attestation-service/eas-sdk' +``` + +మాకు అవసరమైన లైబ్రరీలను దిగుమతి చేయండి. + +```typescript +const graphqlEndpointUrl = "https://optimism.easscan.org/graphql" +``` + +ప్రతి బ్లాక్ చైను కోసం [ఒక ప్రత్యేక ఎండ్‌పాయింట్ ఉంది](https://docs.attest.org/docs/developer-tools/api). + +```typescript +const graphqlClient = new GraphQLClient(graphqlEndpointUrl, { fetch }) +``` + +ఎండ్‌పాయింట్‌ను ప్రశ్నించడానికి మనం ఉపయోగించగల కొత్త `GraphQLClient` క్లయింట్‌ను సృష్టించండి. + +```typescript +const graphqlSchema = 'string emailAddress' +const graphqlEncoder = new SchemaEncoder(graphqlSchema) +``` + +GraphQL మనకు బైట్‌లతో అపారదర్శక డేటా వస్తువును మాత్రమే ఇస్తుంది. దాన్ని అర్థం చేసుకోవడానికి మాకు స్కీమా అవసరం. + +```typescript +const ethereumAddressToEmail = async ethAddr => { +``` + +ఒక ఇతీరియము చిరునామా నుండి ఒక ఇ-మెయిల్ చిరునామాకు పొందడానికి ఒక ఫంక్షన్. + +```typescript + const query = ` + query GetAttestationsByRecipient { +``` + +ఇది ఒక GraphQL ప్రశ్న. + +```typescript + attestations( +``` + +మేము ధృవీకరణల కోసం చూస్తున్నాము. + +```typescript + where: { + recipient: { equals: "${getAddress(ethAddr)}" } + schemaId: { equals: "0xfa2eff59a916e3cc3246f9aec5e0ca00874ae9d09e4678e5016006f07622f977" } + } +``` + +మాకు కావలసిన ధృవీకరణలు మా స్కీమాలోనివి, ఇక్కడ గ్రహీత `getAddress(ethAddr)`. [`getAddress`](https://viem.sh/docs/utilities/getAddress#getaddress) ఫంక్షన్ మన చిరునామా సరైన [చెక్‌సమ్](https://github.com/ethereum/ercs/blob/master/ERCS/erc-55.md) కలిగి ఉందని నిర్ధారిస్తుంది. GraphQL కేస్-సిగ్నిఫికెంట్ కావడం వల్ల ఇది అవసరం. "0xBAD060A7", "0xBad060A7", మరియు "0xbad060a7" వేర్వేరు విలువలు. + +```typescript + take: 1 +``` + +మేము ఎన్ని ధృవీకరణలను కనుగొన్నా, మాకు మొదటిది మాత్రమే కావాలి. + +```typescript + ) { + data + id + attester + } + }` +``` + +మేము స్వీకరించాలనుకుంటున్న ఫీల్డ్‌లు. + +- `attester`: ధృవీకరణను సమర్పించిన చిరునామా. సాధారణంగా ఇది ధృవీకరణను విశ్వసించాలా వద్దా అని నిర్ణయించడానికి ఉపయోగించబడుతుంది. +- `id`: ధృవీకరణ ID. GraphQL ప్రశ్న నుండి వచ్చిన సమాచారం సరైనదని ధృవీకరించడానికి మీరు ఈ విలువను [ఆన్‌చెయిన్‌లో ధృవీకరణను చదవడానికి](https://optimism.blockscout.com/address/0x4200000000000000000000000000000000000021?tab=read_proxy&source_address=0x4E0275Ea5a89e7a3c1B58411379D1a0eDdc5b088#0xa3112a64) ఉపయోగించవచ్చు. +- `data`: స్కీమా డేటా (ఈ సందర్భంలో, ఇ-మెయిల్ చిరునామా). + +```typescript + const queryResult = await graphqlClient.request(query) + + if (queryResult.attestations.length == 0) + return "no_address@available.is" +``` + +ధృవీకరణ లేకపోతే, స్పష్టంగా తప్పుగా ఉన్న విలువను తిరిగి ఇవ్వండి, కానీ అది సేవా ప్రదాతకు చెల్లుబాటు అయ్యేదిగా కనిపిస్తుంది. + +```typescript + const attestationDataFields = graphqlEncoder.decodeData(queryResult.attestations[0].data) + return attestationDataFields[0].value.value +} +``` + +ఒక విలువ ఉంటే, డేటాను డీకోడ్ చేయడానికి `decodeData`ని ఉపయోగించండి. అది అందించే మెటాడేటా మాకు అవసరం లేదు, కేవలం విలువ మాత్రమే. + +```typescript + const loginResponse = await idp.createLoginResponse( + sp, + { + . + . + . + }, + "post", + { + email: await ethereumAddressToEmail(req.params.account) + } + ); +``` + +ఇ-మెయిల్ చిరునామాను పొందడానికి కొత్త ఫంక్షన్‌ను ఉపయోగించండి. + +## వికేంద్రీకరణ గురించి ఏమిటి? + +ఈ కాన్ఫిగరేషన్‌లో వినియోగదారులు తాము కాని వారిలా నటించలేరు, మనం ఇతీరియము నుండి ఇ-మెయిల్ చిరునామా మ్యాపింగ్ కోసం విశ్వసనీయ ధృవీకర్తలపై ఆధారపడినంత కాలం. అయితే, మన గుర్తింపు ప్రదాత ఇప్పటికీ ఒక కేంద్రీకృత భాగం. గుర్తింపు ప్రదాత యొక్క ప్రైవేట్ కీ ఉన్న ఎవరైనా సేవా ప్రదాతకు తప్పుడు సమాచారం పంపవచ్చు. + +[మల్టీ-పార్టీ కంప్యూటేషన్ (MPC)](https://en.wikipedia.org/wiki/Secure_multi-party_computation) ఉపయోగించి ఒక పరిష్కారం ఉండవచ్చు. భవిష్యత్ ట్యుటోరియల్‌లో దాని గురించి వ్రాయాలని నేను ఆశిస్తున్నాను. + +## ముగింపు + +ఇతీరియము సంతకాలు వంటి లాగ్ ఆన్ ప్రామాణికాన్ని స్వీకరించడం, కోడి మరియు గుడ్డు సమస్యను ఎదుర్కొంటుంది. సేవా ప్రదాతలు సాధ్యమైనంత విస్తృత మార్కెట్‌కు విజ్ఞప్తి చేయాలనుకుంటున్నారు. వినియోగదారులు వారి లాగ్ ఆన్ ప్రామాణికానికి మద్దతు ఇవ్వడం గురించి చింతించకుండా సేవలను యాక్సెస్ చేయగలగాలని కోరుకుంటారు. +ఒక ఇతీరియము IdP వంటి అడాప్టర్‌లను సృష్టించడం, ఈ అడ్డంకిని అధిగమించడానికి మాకు సహాయం చేస్తుంది. + +[నా మరిన్ని పనుల కోసం ఇక్కడ చూడండి](https://cryptodocguy.pro/). diff --git a/public/content/translations/te/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md b/public/content/translations/te/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md new file mode 100644 index 00000000000..bd85654973c --- /dev/null +++ b/public/content/translations/te/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md @@ -0,0 +1,156 @@ +--- +title: "ఇతీరియము అభివృద్ధితో ప్రారంభించడం" +description: "ఇతీరియము అభివృద్ధితో ప్రారంభించడానికి ఇది కొత్తవారికి ఒక మార్గదర్శి. మేము మిమ్మల్ని ఒక API ఎండ్‌పాయింట్‌ను ఏర్పాటు చేయడం నుండి, ఒక కమాండ్ లైన్ అభ్యర్థన చేయడం వరకు, మీ మొదటి వెబ్3 స్క్రిప్ట్ రాయడం వరకు మేము మిమ్మల్ని తీసుకువెళతాము! బ్లాక్ చైను అభివృద్ధి అనుభవం అవసరం లేదు!" +author: "Elan Halpern" +tags: + [ + "జావాస్క్రిప్ట్", + "ethers.js", + "నోడ్‌లు", + "ప్రశ్నించడం", + "alchemy" + ] +skill: beginner +lang: te +published: 2020-10-30 +source: Medium +sourceUrl: https://medium.com/alchemy-api/getting-started-with-ethereum-development-using-alchemy-c3d6a45c567f +--- + +![ఇతీరియము మరియు Alchemy లోగోలు](./ethereum-alchemy.png) + +ఇది ఇతీరియము అభివృద్ధితో ప్రారంభించడానికి కొత్తవారికి ఒక మార్గదర్శి. ఈ ట్యుటోరియల్ కోసం మేము, మేకర్, 0x, MyEtherWallet, ధర్మ మరియు కైబర్‌తో సహా అగ్రశ్రేణి బ్లాక్ చైను అనువర్తనాలలో 70% నుండి మిలియన్ల కొద్దీ వినియోగదారులకు శక్తినిచ్చే ప్రముఖ బ్లాక్ చైను అభివృద్ధి చేసేవారి ప్లాట్‌ఫారమ్ అయిన [Alchemy](https://alchemyapi.io/)ని ఉపయోగిస్తాము. Alchemy మాకు ఇతీరియము చైనుపై ఉన్న ఒక ఎపిఐ ఎండ్‌పాయింట్‌కు యాక్సెస్ ఇస్తుంది, తద్వారా మనం లావాదేవీలను చదవగలము మరియు వ్రాయగలము. + +మేము మిమ్మల్ని Alchemy తో సైన్ అప్ చేయడం నుండి మీ మొదటి వెబ్3 స్క్రిప్ట్‌ను వ్రాయడం వరకు తీసుకువెళతాము! బ్లాక్ చైను అభివృద్ధి అనుభవం అవసరం లేదు! + +## 1. ఉచిత Alchemy ఖాతా కోసం సైన్ అప్ చేయండి {#sign-up-for-a-free-alchemy-account} + +Alchemy తో ఖాతా సృష్టించడం సులభం, [ఇక్కడ ఉచితంగా సైన్ అప్ చేయండి](https://auth.alchemy.com/). + +## 2. ఒక Alchemy యాప్‌ను సృష్టించండి {#create-an-alchemy-app} + +ఇతీరియము చైనుతో కమ్యూనికేట్ చేయడానికి మరియు Alchemy ఉత్పత్తులను ఉపయోగించడానికి, మీ అభ్యర్థనలను ప్రామాణీకరించడానికి మీకు ఒక ఎపిఐ కీ అవసరం. + +మీరు [డాష్‌బోర్డ్ నుండి ఎపిఐ కీలను సృష్టించవచ్చు](https://dashboard.alchemy.com/). కొత్త కీని తయారు చేయడానికి, కింద చూపిన విధంగా “యాప్‌ను సృష్టించు”కు నావిగేట్ చేయండి: + +[_ShapeShift_](https://shapeshift.com/)కి _వారి డాష్‌బోర్డ్‌ను చూపించడానికి మమ్మల్ని అనుమతించినందుకు ప్రత్యేక ధన్యవాదాలు!_ + +![Alchemy డాష్‌బోర్డ్](./alchemy-dashboard.png) + +మీ కొత్త కీని పొందడానికి “యాప్‌ను సృష్టించు” కింద వివరాలను పూరించండి. మీరు గతంలో చేసిన యాప్‌లను మరియు మీ బృందం చేసిన వాటిని కూడా ఇక్కడ చూడవచ్చు. ఏదైనా యాప్ కోసం “కీని వీక్షించు” పై క్లిక్ చేయడం ద్వారా ఇప్పటికే ఉన్న కీలను పొందండి. + +![Alchemy తో యాప్‌ను సృష్టించు స్క్రీన్‌షాట్](./create-app.png) + +“యాప్‌లు” పై హోవర్ చేసి, ఒకదాన్ని ఎంచుకోవడం ద్వారా మీరు ఇప్పటికే ఉన్న ఎపిఐ కీలను కూడా పొందవచ్చు. నిర్దిష్ట డొమైన్‌లను వైట్‌లిస్ట్ చేయడానికి, అనేక అభివృద్ధి చేసేవారి ఉపకరణాలను చూడటానికి మరియు విశ్లేషణలను వీక్షించడానికి మీరు ఇక్కడ “కీని వీక్షించవచ్చు”, అలాగే “యాప్‌ను సవరించవచ్చు”. + +![ఒక వినియోగదారుడు ఎపిఐ కీలను ఎలా పొందాలో చూపిస్తున్న Gif](./pull-api-keys.gif) + +## 3. కమాండ్ లైన్ నుండి ఒక అభ్యర్థన చేయండి {#make-a-request-from-the-command-line} + +JSON-RPC మరియు curl ఉపయోగించి Alchemy ద్వారా ఇతీరియము బ్లాక్ చైనుతో సంకర్షణ చెందండి. + +మాన్యువల్ అభ్యర్థనల కోసం, `POST` అభ్యర్థనల ద్వారా `JSON-RPC`తో సంకర్షణ చెందమని మేము సిఫార్సు చేస్తున్నాము. కేవలం `Content-Type: application/json` హెడర్‌ను మరియు మీ ప్రశ్నను కింది ఫీల్డ్‌లతో `POST` బాడీగా పంపండి: + +- `jsonrpc`: JSON-RPC వెర్షన్—ప్రస్తుతానికి, `2.0` మాత్రమే సపోర్ట్ చేయబడింది. +- `method`: ETH ఎపిఐ పద్ధతి. [ఎపిఐ రిఫరెన్స్ చూడండి.](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc) +- `params`: పద్ధతికి పంపవలసిన పారామితుల జాబితా. +- `id`: మీ అభ్యర్థన యొక్క ఐడి. ప్రతిస్పందన ఏ అభ్యర్థనకు చెందిందో మీరు ట్రాక్ చేయగలిగేలా అది ప్రతిస్పందన ద్వారా తిరిగి ఇవ్వబడుతుంది. + +ప్రస్తుత గ్యాస్ ధరను తిరిగి పొందడానికి మీరు కమాండ్ లైన్ నుండి అమలు చేయగల ఉదాహరణ ఇక్కడ ఉంది: + +```bash +curl https://eth-mainnet.alchemyapi.io/v2/demo \ +-X POST \ +-H "Content-Type: application/json" \ +-d '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}' +``` + +_**గమనిక:** [https://eth-mainnet.alchemyapi.io/v2/demo](https://eth-mainnet.alchemyapi.io/jsonrpc/demo)ని మీ స్వంత ఎపిఐ కీ `https://eth-mainnet.alchemyapi.io/v2/**your-api-key`తో భర్తీ చేయండి._ + +**ఫలితాలు:** + +```json +{ "id": 73,"jsonrpc": "2.0","result": "0x09184e72a000" // 10000000000000 } +``` + +## 4. మీ వెబ్3 క్లయింట్‌ను సెటప్ చేయండి {#set-up-your-web3-client} + +**మీకు ఇప్పటికే ఉన్న క్లయింట్ ఉంటే,** మీ ప్రస్తుత నోడ్ ప్రొవైడర్ URLని మీ ఎపిఐ కీతో ఉన్న Alchemy URLకు మార్చండి: `“https://eth-mainnet.alchemyapi.io/v2/your-api-key"` + +**_గమనిక:_** కింది స్క్రిప్ట్‌లు **నోడ్ సందర్భంలో** అమలు చేయబడాలి లేదా **ఒక ఫైల్‌లో సేవ్ చేయబడాలి**, కమాండ్ లైన్ నుండి అమలు చేయబడకూడదు. మీరు ఇప్పటికే Node లేదా npm ఇన్‌స్టాల్ చేయకపోతే, macs కోసం ఈ శీఘ్ర [సెటప్ గైడ్‌ను](https://app.gitbook.com/@alchemyapi/s/alchemy/guides/alchemy-for-macs) చూడండి. + +మీరు Alchemyతో ఇంటిగ్రేట్ చేయగల అనేక [వెబ్3 లైబ్రరీలు](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries) ఉన్నాయి, అయితే, మేము [Alchemy వెబ్3](https://docs.alchemy.com/reference/api-overview)ని ఉపయోగించమని సిఫార్సు చేస్తున్నాము, ఇది web3.js కోసం ఒక డ్రాప్-ఇన్ రీప్లేస్‌మెంట్, Alchemyతో సజావుగా పనిచేయడానికి నిర్మించబడింది మరియు కాన్ఫిగర్ చేయబడింది. ఇది ఆటోమేటిక్ రీట్రైలు మరియు బలమైన WebSocket మద్దతు వంటి అనేక ప్రయోజనాలను అందిస్తుంది. + +AlchemyWeb3.jsను ఇన్‌స్టాల్ చేయడానికి, **మీ ప్రాజెక్ట్ డైరెక్టరీకి నావిగేట్ చేసి** అమలు చేయండి: + +**Yarnతో:** + +``` +yarn add @alch/alchemy-web3 +``` + +**NPMతో:** + +``` +npm install @alch/alchemy-web3 +``` + +Alchemy యొక్క నోడ్ ఇన్‌ఫ్రాస్ట్రక్చర్‌తో సంకర్షణ చెందడానికి, NodeJSలో అమలు చేయండి లేదా దీనిని జావాస్క్రిప్ట్ ఫైల్‌కు జోడించండి: + +```js +const { createAlchemyWeb3 } = require("@alch/alchemy-web3") +const web3 = createAlchemyWeb3( + "https://eth-mainnet.alchemyapi.io/v2/your-api-key" +) +``` + +## 5. మీ మొదటి వెబ్3 స్క్రిప్ట్‌ను వ్రాయండి! {#write-your-first-web3-script} + +ఇప్పుడు కొద్దిగా వెబ్3 ప్రోగ్రామింగ్‌లోకి దిగి, ఇతీరియము మెయిన్‌నెట్ నుండి తాజా బ్లాక్ నంబర్‌ను ప్రింట్ చేసే ఒక సాధారణ స్క్రిప్ట్‌ను వ్రాద్దాం. + +**1. మీరు ఇప్పటికే చేయకపోతే, మీ టెర్మినల్‌లో కొత్త ప్రాజెక్ట్ డైరెక్టరీని సృష్టించి, దానిలోకి cd చేయండి:** + +``` +mkdir web3-example +cd web3-example +``` + +**2. మీరు ఇప్పటికే చేయకపోతే, Alchemy వెబ్3 (లేదా ఏదైనా వెబ్3) డిపెండెన్సీని మీ ప్రాజెక్ట్‌లోకి ఇన్‌స్టాల్ చేయండి:** + +``` +npm install @alch/alchemy-web3 +``` + +**3. `index.js` అనే ఫైల్‌ను సృష్టించి, కింది కంటెంట్‌లను జోడించండి:** + +> మీరు చివరికి `demo`ను మీ Alchemy HTTP ఎపిఐ కీతో భర్తీ చేయాలి. + +```js +async function main() { + const { createAlchemyWeb3 } = require("@alch/alchemy-web3") + const web3 = createAlchemyWeb3("https://eth-mainnet.alchemyapi.io/v2/demo") + const blockNumber = await web3.eth.getBlockNumber() + console.log("తాజా బ్లాక్ నంబర్ " + blockNumber) +} +main() +``` + +async విషయాలతో పరిచయం లేదా? ఈ [మీడియం పోస్ట్‌ను](https://medium.com/better-programming/understanding-async-await-in-javascript-1d81bb079b2c) చూడండి. + +**4.** node ఉపయోగించి మీ టెర్మినల్‌లో దీన్ని అమలు చేయండి\*\* + +``` +node index.js +``` + +**5.** మీరు ఇప్పుడు మీ కన్సోల్‌లో తాజా బ్లాక్ నంబర్ అవుట్‌పుట్‌ను చూడగలరు!\*\* + +``` +తాజా బ్లాక్ నంబర్ 11043912 +``` + +**వావ్!** అభినందనలు! మీరు ఇప్పుడే Alchemyని ఉపయోగించి మీ మొదటి వెబ్3 స్క్రిప్ట్‌ను వ్రాసారు 🎉\*\* + +తర్వాత ఏం చేయాలో తెలియడం లేదా? మా [హలో వరల్డ్ స్మార్ట్ కాంట్రాక్ట్ గైడ్‌](https://www.alchemy.com/docs/hello-world-smart-contract)లో మీ మొదటి స్మార్ట్ కాంట్రాక్ట్‌ను డిప్లాయ్ చేయడానికి ప్రయత్నించండి మరియు కొంత సాలిడిటీ ప్రోగ్రామింగ్‌తో ప్రయోగాలు చేయండి, లేదా [డాష్‌బోర్డ్ డెమో యాప్](https://docs.alchemyapi.io/tutorials/demo-app)తో మీ డాష్‌బోర్డ్ పరిజ్ఞానాన్ని పరీక్షించుకోండి! + +_[ఉచితంగా Alchemyతో సైన్ అప్ చేయండి](https://auth.alchemy.com/), మా [డాక్యుమెంటేషన్](https://www.alchemy.com/docs/)ను చూడండి, మరియు తాజా వార్తల కోసం, మమ్మల్ని [Twitter](https://twitter.com/AlchemyPlatform)లో అనుసరించండి_. diff --git a/public/content/translations/te/developers/tutorials/guide-to-smart-contract-security-tools/index.md b/public/content/translations/te/developers/tutorials/guide-to-smart-contract-security-tools/index.md new file mode 100644 index 00000000000..9a80b5a619d --- /dev/null +++ b/public/content/translations/te/developers/tutorials/guide-to-smart-contract-security-tools/index.md @@ -0,0 +1,102 @@ +--- +title: "స్మార్ట్ కాంట్రాక్ట్ భద్రతా ఉపకరణాలకు మార్గదర్శి" +description: "మూడు విభిన్న పరీక్ష మరియు ప్రోగ్రామ్ విశ్లేషణ పద్ధతుల అవలోకనం" +author: "Trailofbits" +lang: te +tags: [ "దృఢత్వం", "స్మార్ట్ కాంట్రాక్టులు", "భద్రత" ] +skill: intermediate +published: 2020-09-07 +source: Building secure contracts +sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis +--- + +మేము మూడు విలక్షణమైన పరీక్ష మరియు ప్రోగ్రామ్ విశ్లేషణ పద్ధతులను ఉపయోగించబోతున్నాము: + +- **[Slither](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)తో స్టాటిక్ విశ్లేషణ.** ప్రోగ్రామ్ యొక్క అన్ని మార్గాలు ఒకే సమయంలో, విభిన్న ప్రోగ్రామ్ ప్రెజెంటేషన్‌ల ద్వారా (ఉదా., కంట్రోల్-ఫ్లో-గ్రాఫ్) అంచనా వేయబడతాయి మరియు విశ్లేషించబడతాయి +- **[Echidna](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/)తో ఫజ్జింగ్.** లావాదేవీల యొక్క సూడో-రాండమ్ జనరేషన్‌తో కోడ్ అమలు చేయబడుతుంది. ఇచ్చిన ఆస్తిని ఉల్లంఘించడానికి లావాదేవీల క్రమాన్ని కనుగొనడానికి ఫజర్ ప్రయత్నిస్తుంది. +- **[Manticore](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)తో సింబాలిక్ ఎగ్జిక్యూషన్.** ఒక అధికారిక ధృవీకరణ పద్ధతి, ఇది ప్రతి ఎగ్జిక్యూషన్ మార్గాన్ని ఒక గణిత సూత్రానికి అనువదిస్తుంది, దానిపై పరిమితులను తనిఖీ చేయవచ్చు. + +ప్రతి పద్ధతికి ప్రయోజనాలు మరియు ఆపదలు ఉన్నాయి మరియు [నిర్దిష్ట సందర్భాలలో](#determining-security-properties) ఉపయోగకరంగా ఉంటుంది: + +| పద్ధతి | సాధనం | వినియోగం | వేగం | తప్పిపోయిన బగ్స్ | తప్పుడు అలారాలు | +| ---------------------- | --------- | ----------------------------------------------------- | -------- | ---------------- | --------------- | +| స్టాటిక్ విశ్లేషణ | Slither | CLI & స్క్రిప్ట్‌లు | సెకన్లు | మధ్యస్తంగా | తక్కువ | +| ఫజ్జింగ్ | Echidna | Solidity లక్షణాలు | నిమిషాలు | తక్కువ | ఏదీ లేదు | +| సింబాలిక్ ఎగ్జిక్యూషన్ | Manticore | Solidity లక్షణాలు & స్క్రిప్ట్‌లు | గంటలు | ఏదీ లేదు\* | ఏదీ లేదు | + +\* టైమౌట్ లేకుండా అన్ని మార్గాలు అన్వేషించబడితే + +**Slither** సెకన్ల వ్యవధిలో కాంట్రాక్టులను విశ్లేషిస్తుంది, అయితే, స్టాటిక్ విశ్లేషణ తప్పుడు అలారాలకు దారితీయవచ్చు మరియు సంక్లిష్ట తనిఖీలకు (ఉదా., అంకగణిత తనిఖీలు) తక్కువ అనుకూలంగా ఉంటుంది. అంతర్నిర్మిత డిటెక్టర్లకు పుష్-బటన్ యాక్సెస్ కోసం API ద్వారా లేదా వినియోగదారు-నిర్వచించిన తనిఖీల కోసం API ద్వారా Slitherను అమలు చేయండి. + +**Echidna** అనేక నిమిషాల పాటు అమలు కావాలి మరియు నిజమైన పాజిటివ్‌లను మాత్రమే ఉత్పత్తి చేస్తుంది. Echidna, Solidityలో వ్రాయబడిన వినియోగదారు-అందించిన భద్రతా లక్షణాలను తనిఖీ చేస్తుంది. ఇది రాండమ్ అన్వేషణపై ఆధారపడి ఉన్నందున బగ్‌లను కోల్పోయే అవకాశం ఉంది. + +**Manticore** "అత్యంత బరువైన" విశ్లేషణను నిర్వహిస్తుంది. Echidna వలె, Manticore వినియోగదారు-అందించిన లక్షణాలను ధృవీకరిస్తుంది. ఇది అమలు కావడానికి ఎక్కువ సమయం పడుతుంది, కానీ ఇది ఒక ఆస్తి యొక్క ప్రామాణికతను నిరూపించగలదు మరియు తప్పుడు అలారాలను నివేదించదు. + +## సూచించిన వర్క్‌ఫ్లో {#suggested-workflow} + +ప్రస్తుతం ఎలాంటి సాధారణ బగ్‌లు లేవని లేదా తరువాత ప్రవేశపెట్టబడవని నిర్ధారించుకోవడానికి Slither అంతర్నిర్మిత డిటెక్టర్‌లతో ప్రారంభించండి. వారసత్వం, వేరియబుల్ డిపెండెన్సీలు మరియు నిర్మాణ సమస్యలకు సంబంధించిన లక్షణాలను తనిఖీ చేయడానికి Slitherను ఉపయోగించండి. కోడ్‌బేస్ పెరిగేకొద్దీ, స్టేట్ మెషీన్ యొక్క మరింత సంక్లిష్టమైన లక్షణాలను పరీక్షించడానికి Echidnaను ఉపయోగించండి. ఫంక్షన్ ఓవర్‌రైడ్ చేయబడకుండా రక్షించడం వంటి, Solidity నుండి అందుబాటులో లేని రక్షణల కోసం కస్టమ్ తనిఖీలను అభివృద్ధి చేయడానికి Slitherని తిరిగి సందర్శించండి. చివరగా, క్లిష్టమైన భద్రతా లక్షణాల యొక్క లక్ష్య ధృవీకరణను నిర్వహించడానికి Manticoreను ఉపయోగించండి, ఉదా., అంకగణిత కార్యకలాపాలు. + +- సాధారణ సమస్యలను గుర్తించడానికి Slither's CLIని ఉపయోగించండి +- మీ కాంట్రాక్ట్ యొక్క ఉన్నత-స్థాయి భద్రతా లక్షణాలను పరీక్షించడానికి Echidnaను ఉపయోగించండి +- కస్టమ్ స్టాటిక్ తనిఖీలను వ్రాయడానికి Slitherను ఉపయోగించండి +- మీరు క్లిష్టమైన భద్రతా లక్షణాల గురించి లోతైన హామీని కోరుకున్న తర్వాత Manticoreను ఉపయోగించండి + +**యూనిట్ పరీక్షలపై ఒక గమనిక**. అధిక-నాణ్యత సాఫ్ట్‌వేర్‌ను రూపొందించడానికి యూనిట్ పరీక్షలు అవసరం. అయితే, భద్రతా లోపాలను కనుగొనడానికి ఈ పద్ధతులు ఉత్తమంగా సరిపోవు. అవి సాధారణంగా కోడ్ యొక్క సానుకూల ప్రవర్తనలను పరీక్షించడానికి ఉపయోగిస్తారు (అంటే, సాధారణ సందర్భంలో కోడ్ ఊహించిన విధంగా పనిచేస్తుంది), అయితే భద్రతా లోపాలు డెవలపర్లు పరిగణించని ఎడ్జ్ కేసులలో ఉండే అవకాశం ఉంది. డజన్ల కొద్దీ స్మార్ట్ కాంట్రాక్ట్ భద్రతా సమీక్షల మా అధ్యయనంలో, మేము మా క్లయింట్ కోడ్‌లో కనుగొన్న [భద్రతా లోపాల సంఖ్య లేదా తీవ్రతపై యూనిట్ టెస్ట్ కవరేజ్‌కు ఎలాంటి ప్రభావం లేదు](https://blog.trailofbits.com/2019/08/08/246-findings-from-our-smart-contract-audits-an-executive-summary/). + +## భద్రతా లక్షణాలను నిర్ణయించడం {#determining-security-properties} + +మీ కోడ్‌ను సమర్థవంతంగా పరీక్షించడానికి మరియు ధృవీకరించడానికి, మీరు శ్రద్ధ అవసరమైన ప్రాంతాలను గుర్తించాలి. భద్రతపై మీరు ఖర్చు చేసే వనరులు పరిమితంగా ఉన్నందున, మీ ప్రయత్నాన్ని ఆప్టిమైజ్ చేయడానికి మీ కోడ్‌బేస్ యొక్క బలహీనమైన లేదా అధిక-విలువ భాగాలను స్కోప్ చేయడం ముఖ్యం. థ్రెట్ మోడలింగ్ సహాయపడుతుంది. సమీక్షించడాన్ని పరిగణించండి: + +- [రాపిడ్ రిస్క్ అసెస్‌మెంట్స్](https://infosec.mozilla.org/guidelines/risk/rapid_risk_assessment.html) (సమయం తక్కువగా ఉన్నప్పుడు మా ప్రాధాన్య విధానం) +- [గైడ్ టు డేటా-సెంట్రిక్ సిస్టమ్ థ్రెట్ మోడలింగ్](https://csrc.nist.gov/pubs/sp/800/154/ipd) (NIST 800-154 అని కూడా పిలుస్తారు) +- [షోస్టాక్ థ్రెట్ మోడలింగ్](https://www.amazon.com/Threat-Modeling-Designing-Adam-Shostack/dp/1118809998) +- [STRIDE](https://wikipedia.org/wiki/STRIDE_\(security\)) / [DREAD](https://wikipedia.org/wiki/DREAD_\(risk_assessment_model\)) +- [PASTA](https://wikipedia.org/wiki/Threat_model#P.A.S.T.A.) +- [అస్సర్షన్ల ఉపయోగం](https://blog.regehr.org/archives/1091) + +### భాగాలు {#components} + +మీరు ఏమి తనిఖీ చేయాలనుకుంటున్నారో తెలుసుకోవడం సరైన సాధనాన్ని ఎంచుకోవడానికి కూడా మీకు సహాయపడుతుంది. + +స్మార్ట్ కాంట్రాక్టులకు తరచుగా సంబంధించిన విస్తృత ప్రాంతాలు: + +- **స్టేట్ మెషీన్.** చాలా కాంట్రాక్టులను స్టేట్ మెషీన్‌గా సూచించవచ్చు. (1) చెల్లని స్థితిని చేరుకోలేమని, (2) ఒక స్థితి చెల్లుబాటు అయితే దాన్ని చేరుకోగలమని, మరియు (3) ఏ స్థితి కాంట్రాక్టును ట్రాప్ చేయదని తనిఖీ చేయడాన్ని పరిగణించండి. + + - స్టేట్-మెషీన్ స్పెసిఫికేషన్‌లను పరీక్షించడానికి Echidna మరియు Manticore అనుకూలమైన సాధనాలు. + +- **యాక్సెస్ నియంత్రణలు.** మీ సిస్టమ్‌లో ప్రత్యేక హక్కులు కలిగిన వినియోగదారులు (ఉదా., యజమాని, కంట్రోలర్లు, ...) ఉంటే (1) ప్రతి వినియోగదారు అధీకృత చర్యలను మాత్రమే చేయగలరని మరియు (2) ఏ వినియోగదారు కూడా మరింత ప్రత్యేక హక్కులు కలిగిన వినియోగదారు నుండి చర్యలను నిరోధించలేరని మీరు నిర్ధారించుకోవాలి. + + - Slither, Echidna మరియు Manticore సరైన యాక్సెస్ నియంత్రణల కోసం తనిఖీ చేయగలవు. ఉదాహరణకు, Slither వైట్‌లిస్ట్ చేయబడిన ఫంక్షన్‌లకు మాత్రమే onlyOwner మాడిఫైయర్ లేదని తనిఖీ చేయగలదు. కాంట్రాక్ట్ ఒక నిర్దిష్ట స్థితికి చేరుకుంటే మాత్రమే ఇవ్వబడిన అనుమతి వంటి మరింత సంక్లిష్టమైన యాక్సెస్ నియంత్రణ కోసం Echidna మరియు Manticore ఉపయోగపడతాయి. + +- **అంకగణిత కార్యకలాపాలు.** అంకగణిత కార్యకలాపాల యొక్క పటిష్టతను తనిఖీ చేయడం చాలా ముఖ్యం. ఓవర్‌ఫ్లో/అండర్‌ఫ్లోను నివారించడానికి ప్రతిచోటా `SafeMath` ఉపయోగించడం ఒక మంచి అడుగు, అయితే, రౌండింగ్ సమస్యలు మరియు కాంట్రాక్టును ట్రాప్ చేసే లోపాలతో సహా ఇతర అంకగణిత లోపాలను మీరు ఇప్పటికీ పరిగణించాలి. + + - ఇక్కడ Manticore ఉత్తమ ఎంపిక. SMT సాల్వర్ యొక్క స్కోప్ వెలుపల అంకగణితం ఉంటే Echidnaను ఉపయోగించవచ్చు. + +- **వారసత్వ సరియైనత.** Solidity కాంట్రాక్టులు బహుళ వారసత్వంపై ఎక్కువగా ఆధారపడతాయి. `super` కాల్ లేని షాడోయింగ్ ఫంక్షన్ మరియు తప్పుగా అన్వయించబడిన c3 లీనియరైజేషన్ ఆర్డర్ వంటి పొరపాట్లు సులభంగా జరగవచ్చు. + + - ఈ సమస్యలను గుర్తించడాన్ని నిర్ధారించడానికి Slither ఒక సాధనం. + +- **బాహ్య పరస్పర చర్యలు.** కాంట్రాక్టులు ఒకదానితో ఒకటి సంకర్షణ చెందుతాయి, మరియు కొన్ని బాహ్య కాంట్రాక్టులను విశ్వసించకూడదు. ఉదాహరణకు, మీ కాంట్రాక్ట్ బాహ్య ఒరాకిల్స్‌పై ఆధారపడితే, అందుబాటులో ఉన్న ఒరాకిల్స్‌లో సగం రాజీపడితే అది సురక్షితంగా ఉంటుందా? + + - మీ కాంట్రాక్టులతో బాహ్య పరస్పర చర్యలను పరీక్షించడానికి Manticore మరియు Echidna ఉత్తమ ఎంపిక. Manticore బాహ్య కాంట్రాక్టులను స్టబ్ చేయడానికి అంతర్నిర్మిత యంత్రాంగాన్ని కలిగి ఉంది. + +- **ప్రామాణిక అనుగుణ్యత.** Ethereum ప్రమాణాలకు (ఉదా., ERC20) వాటి రూపకల్పనలో లోపాల చరిత్ర ఉంది. మీరు నిర్మిస్తున్న ప్రమాణం యొక్క పరిమితుల గురించి తెలుసుకోండి. + - ఇచ్చిన ప్రమాణం నుండి విచలనాలను గుర్తించడంలో Slither, Echidna మరియు Manticore మీకు సహాయపడతాయి. + +### సాధన ఎంపిక చీట్‌షీట్ {#tool-selection-cheatsheet} + +| భాగం | ఉపకరణాలు | ఉదాహరణలు | +| -------------------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| స్టేట్ మెషీన్ | Echidna, Manticore | | +| యాక్సెస్ నియంత్రణ | Slither, Echidna, Manticore | [Slither వ్యాయామం 2](https://github.com/crytic/slither/blob/7f54c8b948c34fb35e1d61adaa1bd568ca733253/docs/src/tutorials/exercise2.md), [Echidna వ్యాయామం 2](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/exercises/Exercise-2.md) | +| అంకగణిత కార్యకలాపాలు | Manticore, Echidna | [Echidna వ్యాయామం 1](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/exercises/Exercise-1.md), [Manticore వ్యాయామాలు 1 - 3](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore/exercises) | +| వారసత్వ సరియైనత | Slither | [Slither వ్యాయామం 1](https://github.com/crytic/slither/blob/7f54c8b948c34fb35e1d61adaa1bd568ca733253/docs/src/tutorials/exercise1.md) | +| బాహ్య పరస్పర చర్యలు | Manticore, Echidna | | +| ప్రామాణిక అనుగుణ్యత | Slither, Echidna, Manticore | [`slither-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance) | + +మీ లక్ష్యాలను బట్టి ఇతర ప్రాంతాలను తనిఖీ చేయవలసి ఉంటుంది, కానీ ఈ విస్తృత దృష్టి ప్రాంతాలు ఏదైనా స్మార్ట్ కాంట్రాక్ట్ సిస్టమ్‌కు మంచి ప్రారంభం. + +మా పబ్లిక్ ఆడిట్‌లలో ధృవీకరించబడిన లేదా పరీక్షించబడిన లక్షణాల ఉదాహరణలు ఉన్నాయి. నిజ-ప్రపంచ భద్రతా లక్షణాలను సమీక్షించడానికి క్రింది నివేదికల యొక్క `ఆటోమేటెడ్ టెస్టింగ్ మరియు వెరిఫికేషన్` విభాగాలను చదవడాన్ని పరిగణించండి: + +- [0x](https://github.com/trailofbits/publications/blob/master/reviews/0x-protocol.pdf) +- [Balancer](https://github.com/trailofbits/publications/blob/master/reviews/BalancerCore.pdf) diff --git a/public/content/translations/te/developers/tutorials/hello-world-smart-contract-fullstack/index.md b/public/content/translations/te/developers/tutorials/hello-world-smart-contract-fullstack/index.md new file mode 100644 index 00000000000..1fe948cffee --- /dev/null +++ b/public/content/translations/te/developers/tutorials/hello-world-smart-contract-fullstack/index.md @@ -0,0 +1,1540 @@ +--- +title: "ప్రారంభకుల కోసం హలో వరల్డ్ స్మార్ట్ కాంట్రాక్టు - ఫుల్‌స్టాక్" +description: "Ethereumలో ఒక సాధారణ స్మార్ట్ కాంట్రాక్టును రాయడం మరియు డిప్లాయ్ చేయడంపై పరిచయ ట్యుటోరియల్." +author: "nstrike2" +tags: + [ + "దృఢత్వం", + "hardhat", + "alchemy", + "స్మార్ట్ కాంట్రాక్టులు", + "డిప్లాయ్ చేయడం", + "బ్లాక్ ఎక్స్‌ప్లోరర్", + "frontend", + "లావాదేవీలు" + ] +skill: beginner +lang: te +published: 2021-10-25 +--- + +మీరు బ్లాక్‌చెయిన్ డెవలప్‌మెంట్‌కు కొత్తవారైతే మరియు స్మార్ట్ కాంట్రాక్ట్‌లతో ఎక్కడ ప్రారంభించాలో లేదా ఎలా అమలు చేయాలో మరియు ఇంటరాక్ట్ అవ్వాలో తెలియకపోతే ఈ గైడ్ మీ కోసం. [MetaMask](https://metamask.io), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org), మరియు [Alchemy](https://alchemy.com/eth) ఉపయోగించి Goerli టెస్టునెట్‌లో ఒక సాధారణ, స్మార్ట్ కాంట్రాక్టును సృష్టించడం మరియు అమలు చేయడం ద్వారా మేము మీకు మార్గనిర్దేశం చేస్తాము. + +ఈ ట్యుటోరియల్‌ను పూర్తి చేయడానికి మీకు ఆల్కెమీ ఖాతా అవసరం. [ఉచిత ఖాతా కోసం సైన్ అప్ చేయండి](https://www.alchemy.com/). + +మీకు ఏ సమయంలోనైనా ప్రశ్నలు ఉంటే, [ఆల్కెమీ డిస్కార్డ్](https://discord.gg/gWuC7zB)లో అడగడానికి సంకోచించకండి! + +## భాగం 1 - హార్డ్‌హ్యాట్ ఉపయోగించి మీ స్మార్ట్ కాంట్రాక్ట్‌ను సృష్టించండి మరియు అమలు చేయండి {#part-1} + +### ఇథీరియం నెట్‌వర్క్‌కి కనెక్ట్ అవ్వండి {#connect-to-the-ethereum-network} + +Ethereum చైన్‌కు అభ్యర్థనలు చేయడానికి చాలా మార్గాలు ఉన్నాయి. సులభంగా ఉండటానికి, మేము ఆల్కెమీలో ఉచిత ఖాతాను ఉపయోగిస్తాము, ఇది ఒక బ్లాక్‌చెయిన్ డెవలపర్ ప్లాట్‌ఫారమ్ మరియు API, ఇది మనమే ఒక నోడ్‌ను అమలు చేయకుండా ఇథీరియం చైన్‌తో కమ్యూనికేట్ చేయడానికి అనుమతిస్తుంది. ఆల్కెమీకి పర్యవేక్షణ మరియు విశ్లేషణల కోసం డెవలపర్ సాధనాలు కూడా ఉన్నాయి; మన స్మార్ట్ కాంట్రాక్ట్ అమలులో తెర వెనుక ఏమి జరుగుతుందో అర్థం చేసుకోవడానికి ఈ ట్యుటోరియల్‌లో మేము వీటిని సద్వినియోగం చేసుకుంటాము. + +### మీ యాప్‌ను మరియు API కీని సృష్టించండి {#create-your-app-and-api-key} + +మీరు ఒక ఆల్కెమీ ఖాతాను సృష్టించిన తర్వాత, మీరు ఒక యాప్‌ను సృష్టించడం ద్వారా ఒక API కీని రూపొందించవచ్చు. ఇది Goerli టెస్టునెట్‌కు అభ్యర్థనలు చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. మీకు టెస్టునెట్‌ల గురించి తెలియకపోతే, మీరు [నెట్‌వర్క్‌ను ఎంచుకోవడానికి ఆల్కెమీ యొక్క గైడ్‌ను చదవవచ్చు](https://www.alchemy.com/docs/choosing-a-web3-network). + +ఆల్కెమీ డాష్‌బోర్డ్‌లో, నావిగేషన్ బార్‌లో **యాప్స్** డ్రాప్‌డౌన్‌ను కనుగొని, **యాప్‌ను సృష్టించు** క్లిక్ చేయండి. + +![హలో వరల్డ్ యాప్‌ను సృష్టించు](./hello-world-create-app.png) + +మీ యాప్‌కు '_Hello World_' అని పేరు పెట్టండి మరియు ఒక చిన్న వివరణ వ్రాయండి. మీ వాతావరణంగా **స్టేజింగ్** మరియు మీ నెట్‌వర్క్‌గా **గోర్లీ**ని ఎంచుకోండి. + +![యాప్ వీక్షణను సృష్టించు హలో వరల్డ్](./create-app-view-hello-world.png) + +_గమనిక: **గోర్లీ**ని ఎంచుకున్నారని నిర్ధారించుకోండి, లేకపోతే ఈ ట్యుటోరియల్ పని చేయదు._ + +**యాప్‌ను సృష్టించు** బటన్‌ను క్లిక్ చేయండి. మీ యాప్ క్రింది పట్టికలో కనిపిస్తుంది. + +### ఒక ఇథీరియం ఖాతాను సృష్టించండి {#create-an-ethereum-account} + +లావాదేవీలను పంపడానికి మరియు స్వీకరించడానికి మీకు ఒక ఇథీరియం ఖాతా అవసరం. మేము మెటామాస్క్‌ను ఉపయోగిస్తాము, ఇది బ్రౌజర్‌లో ఒక వర్చువల్ వాలెట్, ఇది వినియోగదారులు తమ ఇథీరియం ఖాతా చిరునామాను నిర్వహించడానికి అనుమతిస్తుంది. + +మీరు [ఇక్కడ](https://metamask.io/download) ఉచితంగా MetaMask అకౌంట్‌ను డౌన్‌లోడ్ చేసి, సృష్టించవచ్చు. మీరు ఖాతాను సృష్టించేటప్పుడు, లేదా మీకు ఇప్పటికే ఖాతా ఉంటే, కుడివైపు ఎగువన ఉన్న “గోర్లీ టెస్ట్ నెట్‌వర్క్”కు మారినట్లు నిర్ధారించుకోండి (అలాగే మనం నిజమైన డబ్బుతో వ్యవహరించడం లేదు). + +### దశ 4: ఒక ఫాసెట్ నుండి ఈథర్‌ను జోడించండి {#step-4-add-ether-from-a-faucet} + +మీ స్మార్ట్ కాంట్రాక్ట్‌ను టెస్ట్ నెట్‌వర్క్‌కు అమలు చేయడానికి, మీకు కొంత నకిలీ ETH అవసరం. గోర్లీ నెట్‌వర్క్‌లో ETH పొందడానికి, ఒక గోర్లీ ఫాసెట్‌కు వెళ్లి మీ గోర్లీ ఖాతా చిరునామాను నమోదు చేయండి. గోర్లీ ఫాసెట్‌లు ఇటీవల కొంచెం నమ్మశక్యంగా లేవని గమనించండి - ప్రయత్నించడానికి ఎంపికల జాబితా కోసం [టెస్ట్ నెట్‌వర్క్‌ల పేజీని](/developers/docs/networks/#goerli) చూడండి: + +_గమనిక: నెట్‌వర్క్ రద్దీ కారణంగా, దీనికి కొంత సమయం పట్టవచ్చు._ +`` + +### దశ 5: మీ బ్యాలెన్స్‌ను తనిఖీ చేయండి {#step-5-check-your-balance} + +మీ వాలెట్‌లో ETH ఉందని నిర్ధారించుకోవడానికి, [ఆల్కెమీ యొక్క కంపోజర్ టూల్](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D) ఉపయోగించి [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) అభ్యర్థన చేద్దాం. ఇది మన వాలెట్‌లోని ETH మొత్తాన్ని తిరిగి ఇస్తుంది. మరింత తెలుసుకోవడానికి [కంపోజర్ సాధనాన్ని ఎలా ఉపయోగించాలో ఆల్కెమీ యొక్క చిన్న ట్యుటోరియల్ చూడండి](https://youtu.be/r6sjRxBZJuU). + +మీ మెటామాస్క్ ఖాతా చిరునామాను ఇన్‌పుట్ చేసి, **అభ్యర్థన పంపించు** బటన్‌ను క్లిక్ చేయండి. మీకు క్రింది కోడ్ స్నిప్పెట్ లాంటి ప్రతిస్పందన కనిపిస్తుంది. + +```json +{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" } +``` + +> _గమనిక: ఈ ఫలితం వీలో ఉంది, ETHలో కాదు. వీ ఈథర్ యొక్క అతి చిన్న విభాగంగా ఉపయోగించబడుతుంది._ + +అమ్మయ్య! మా నకిలీ డబ్బు అంతా ఉంది. + +### దశ 6: మా ప్రాజెక్ట్‌ను ప్రారంభించండి {#step-6-initialize-our-project} + +ముందుగా, మన ప్రాజెక్ట్ కోసం ఒక ఫోల్డర్‌ను సృష్టించాలి. మీ కమాండ్ లైన్‌కు నావిగేట్ చేసి, ఈ క్రింది వాటిని ఇన్‌పుట్ చేయండి. + +``` +mkdir hello-world +cd hello-world +``` + +ఇప్పుడు మనం మన ప్రాజెక్ట్ ఫోల్డర్‌లో ఉన్నాము కాబట్టి, ప్రాజెక్టును ప్రారంభించడానికి `npm init`ని ఉపయోగిస్తాము. + +> మీరు ఇంకా npm ఇన్‌స్టాల్ చేయకపోతే, [Node.js మరియు npm ఇన్‌స్టాల్ చేయడానికి ఈ సూచనలను పాటించండి](https://docs.alchemyapi.io/alchemy/guides/alchemy-for-macs#1-install-nodejs-and-npm). + +ఈ ట్యుటోరియల్ ప్రయోజనం కోసం, మీరు ప్రారంభ ప్రశ్నలకు ఎలా సమాధానం ఇస్తారనేది ముఖ్యం కాదు. మేము దానిని ఎలా చేసామో ఇక్కడ సూచన కోసం ఇవ్వబడింది: + +``` +ప్యాకేజీ పేరు: (hello-world) +వెర్షన్: (1.0.0) +వివరణ: హలో వరల్డ్ స్మార్ట్ కాంట్రాక్టు +ఎంట్రీ పాయింట్: (index.js) +టెస్ట్ కమాండ్: +git రిపోజిటరీ: +కీవర్డ్‌లు: +రచయిత: +లైసెన్స్: (ISC) + +/Users/.../.../.../hello-world/package.json కు వ్రాయబోతున్నారు: + +{ + "name": "hello-world", + "version": "1.0.0", + "description": "హలో వరల్డ్ స్మార్ట్ కాంట్రాక్టు", + "main": "index.js", + "scripts": { + "test": "echo \"లోపం: పరీక్ష పేర్కొనబడలేదు\" && exit 1" + }, + "author": "", + "license": "ISC" +} +``` + +package.jsonని ఆమోదించండి మరియు మనం సిద్ధంగా ఉన్నాము! + +### దశ 7: హార్డ్‌హ్యాట్ డౌన్‌లోడ్ చేయండి {#step-7-download-hardhat} + +Hardhat అనేది మీ ఇతీరియము సాఫ్ట్‌వేర్‌ను కంపైల్ చేయడానికి, డిప్లోయ్ చేయడానికి, పరీక్షించడానికి మరియు డీబగ్ చేయడానికి ఒక డెవలప్‌మెంట్ ఎన్విరాన్‌మెంట్. ఇది లైవ్ చైన్‌కు డిప్లోయ్ చేయడానికి ముందు స్థానికంగా స్మార్ట్ కాంట్రాక్ట్‌లను మరియు డాప్స్‌ను రూపొందించడంలో డెవలపర్‌లకు సహాయపడుతుంది. + +మన `hello-world` ప్రాజెక్ట్ లోపల రన్ చేయండి: + +``` +npm install --save-dev hardhat +``` + +[ఇన్‌స్టాలేషన్ సూచనల](https://hardhat.org/getting-started/#overview)పై మరిన్ని వివరాల కోసం ఈ పేజీని చూడండి. + +### దశ 8: హార్డ్‌హ్యాట్ ప్రాజెక్ట్‌ను సృష్టించండి {#step-8-create-hardhat-project} + +మా `hello-world` ప్రాజెక్ట్ ఫోల్డర్ లోపల, దీన్ని అమలు చేయండి: + +``` +npx hardhat +``` + +అప్పుడు మీరు స్వాగత సందేశం మరియు మీరు ఏమి చేయాలనుకుంటున్నారో ఎంచుకోవడానికి ఒక ఎంపికను చూడాలి. “ఖాళీ hardhat.config.jsని సృష్టించండి” ఎంచుకోండి: + +``` +888 888 888 888 888 888 +888 888 888 888 888 888 +888 888 888 888 888 888 +8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888 +888 888 "88b 888P" d88" 888 888 "88b "88b 888 +888 888 .d888888 888 888 888 888 888 .d888888 888 +888 888 888 888 888 Y88b 888 888 888 888 888 Y88b. +888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888 + +👷 Hardhat v2.0.11 కు స్వాగతం 👷‍ + +మీరు ఏమి చేయాలనుకుంటున్నారు? … +ఒక నమూనా ప్రాజెక్ట్‌ను సృష్టించండి +❯ ఒక ఖాళీ hardhat.config.js ని సృష్టించండి +నిష్క్రమించు +``` + +ఇది ప్రాజెక్ట్‌లో `hardhat.config.js` ఫైల్‌ను రూపొందిస్తుంది. మన ప్రాజెక్ట్ కోసం సెటప్‌ను పేర్కొనడానికి మనం ఈ ట్యుటోరియల్‌లో తరువాత దీనిని ఉపయోగిస్తాము. + +### దశ 9: ప్రాజెక్ట్ ఫోల్డర్‌లను జోడించండి {#step-9-add-project-folders} + +ప్రాజెక్ట్‌ను వ్యవస్థీకృతంగా ఉంచడానికి, రెండు కొత్త ఫోల్డర్‌లను సృష్టిద్దాం. కమాండ్ లైన్‌లో, మీ `hello-world` ప్రాజెక్ట్ యొక్క రూట్ డైరెక్టరీకి నావిగేట్ చేసి టైప్ చేయండి: + +``` +mkdir contracts +mkdir scripts +``` + +- `contracts/` అనేది మనం మన హలో వరల్డ్ స్మార్ట్ కాంట్రాక్ట్ కోడ్ ఫైల్‌ను ఉంచే చోటు +- `scripts/` అనేది మన కాంట్రాక్టును డిప్లాయ్ చేయడానికి మరియు దానితో ఇంటరాక్ట్ అవ్వడానికి స్క్రిప్ట్‌లను ఉంచే చోటు + +### దశ 10: మా కాంట్రాక్టును వ్రాయండి {#step-10-write-our-contract} + +మీరు మిమ్మల్ని మీరు అడగవచ్చు, మనం ఎప్పుడు కోడ్ వ్రాయబోతున్నాం? ఇదే సమయం! + +మీకు ఇష్టమైన ఎడిటర్‌లో hello-world ప్రాజెక్ట్‌ను తెరవండి. స్మార్ట్ కాంట్రాక్టులు సాధారణంగా సాలిడిటీలో వ్రాయబడతాయి, దీనిని మేము మా స్మార్ట్ కాంట్రాక్టును వ్రాయడానికి ఉపయోగిస్తాము.‌ + +1. `contracts` ఫోల్డర్‌కు నావిగేట్ చేసి, `HelloWorld.sol` అనే కొత్త ఫైల్‌ను సృష్టించండి +2. ఈ ట్యుటోరియల్ కోసం మేము ఉపయోగించబోయే నమూనా హలో వరల్డ్ స్మార్ట్ కాంట్రాక్టు క్రింద ఉంది. క్రింది కంటెంట్‌లను `HelloWorld.sol` ఫైల్‌లోకి కాపీ చేయండి. + +_గమనిక: ఈ కాంట్రాక్ట్ ఏమి చేస్తుందో అర్థం చేసుకోవడానికి వ్యాఖ్యలను చదివినట్లు నిర్ధారించుకోండి._ + +``` +// సాలిడిటీ యొక్క సంస్కరణను, సెమాంటిక్ వర్షనింగ్‌ని ఉపయోగించి నిర్దేశిస్తుంది. +// మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma +pragma solidity >=0.7.3; + +// 'HelloWorld' పేరుతో ఒక కాంట్రాక్టును నిర్వచిస్తుంది. +// ఒక కాంట్రాక్టు అనేది ఫంక్షన్‌లు మరియు డేటా (దాని స్థితి) యొక్క సేకరణ. ఒకసారి అమలు చేసిన తర్వాత, ఒక కాంట్రాక్టు ఇథీరియం బ్లాక్‌చెయిన్‌లో ఒక నిర్దిష్ట చిరునామాలో నివసిస్తుంది. మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html +contract HelloWorld { + + //నవీకరణ ఫంక్షన్ పిలిచినప్పుడు విడుదల చేయబడుతుంది + //స్మార్ట్ కాంట్రాక్ట్ ఈవెంట్‌లు మీ కాంట్రాక్ట్ కోసం బ్లాక్‌చెయిన్‌లో ఏదో జరిగిందని మీ యాప్ ఫ్రంట్-ఎండ్‌కు కమ్యూనికేట్ చేయడానికి ఒక మార్గం, ఇది నిర్దిష్ట ఈవెంట్‌ల కోసం 'వినడం' మరియు అవి జరిగినప్పుడు చర్య తీసుకోవచ్చు. + event UpdatedMessages(string oldStr, string newStr); + + // `string` రకానికి చెందిన `message` అనే స్థితి వేరియబుల్‌ను ప్రకటిస్తుంది. + // స్టేట్ వేరియబుల్స్ అనేవి కాంట్రాక్ట్ నిల్వలో వాటి విలువలు శాశ్వతంగా నిల్వ చేయబడిన వేరియబుల్స్. `public` కీవర్డ్ వేరియబుల్స్‌ను కాంట్రాక్ట్ వెలుపల నుండి అందుబాటులో ఉండేలా చేస్తుంది మరియు ఇతర కాంట్రాక్ట్‌లు లేదా క్లయింట్లు విలువను యాక్సెస్ చేయడానికి పిలవగల ఫంక్షన్‌ను సృష్టిస్తుంది. + string public message; + + // అనేక తరగతి-ఆధారిత వస్తువు-ఆధారిత భాషల మాదిరిగానే, కన్‌స్ట్రక్టర్ అనేది కాంట్రాక్ట్ సృష్టిపై మాత్రమే అమలు చేయబడే ఒక ప్రత్యేక ఫంక్షన్. + // కాంట్రాక్ట్ యొక్క డేటాను ప్రారంభించడానికి కన్‌స్ట్రక్టర్లు ఉపయోగించబడతాయి. మరింత తెలుసుకోండి:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors + constructor(string memory initMessage) { + + // స్ట్రింగ్ ఆర్గ్యుమెంట్ `initMessage`ని అంగీకరించి, విలువను కాంట్రాక్ట్ యొక్క `message` నిల్వ వేరియబుల్‌లోకి సెట్ చేస్తుంది). + message = initMessage; + } + + // ఒక స్ట్రింగ్ ఆర్గ్యుమెంట్‌ను అంగీకరించి, `message` నిల్వ వేరియబుల్‌ను నవీకరించే ఒక పబ్లిక్ ఫంక్షన్. + function update(string memory newMessage) public { + string memory oldMsg = message; + message = newMessage; + emit UpdatedMessages(oldMsg, newMessage); + } +} +``` + +ఇది సృష్టి సమయంలో ఒక సందేశాన్ని నిల్వ చేసే ఒక ప్రాథమిక స్మార్ట్ కాంట్రాక్టు. దీనిని `నవీకరణ` ఫంక్షన్‌ను పిలవడం ద్వారా నవీకరించవచ్చు. + +### దశ 11: మెటామాస్క్ & ఆల్కెమీని మీ ప్రాజెక్ట్‌కు కనెక్ట్ చేయండి {#step-11-connect-metamask-alchemy-to-your-project} + +మనం ఒక MetaMask వాలెట్‌ను, Alchemy ఖాతాను సృష్టించాము మరియు మన స్మార్ట్ కాంట్రాక్టును వ్రాశాము, ఇప్పుడు ఈ మూడింటిని కనెక్ట్ చేసే సమయం వచ్చింది. + +మీ వాలెట్ నుండి పంపిన ప్రతి లావాదేవీకి మీ ప్రత్యేక ప్రైవేట్ కీని ఉపయోగించి సంతకం అవసరం. మా ప్రోగ్రామ్‌కు ఈ అనుమతిని అందించడానికి, మేము మా ప్రైవేట్ కీని పర్యావరణ ఫైల్‌లో సురక్షితంగా నిల్వ చేయవచ్చు. మేము ఇక్కడ ఆల్కెమీ కోసం ఒక API కీని కూడా నిల్వ చేస్తాము. + +> లావాదేవీలను పంపడం గురించి మరింత తెలుసుకోవడానికి, web3 ఉపయోగించి లావాదేవీలను పంపడంపై [ఈ ట్యుటోరియల్ చూడండి](https://www.alchemy.com/docs/hello-world-smart-contract#step-11-connect-metamask--alchemy-to-your-project). + +మొదట, మీ ప్రాజెక్ట్ డైరెక్టరీలో dotenv ప్యాకేజీని ఇన్‌స్టాల్ చేయండి: + +``` +npm install dotenv --save +``` + +అప్పుడు, ప్రాజెక్ట్ యొక్క రూట్ డైరెక్టరీలో ఒక `.env` ఫైల్‌ను సృష్టించండి. మీ మెటామాస్క్ ప్రైవేట్ కీ మరియు HTTP ఆల్కెమీ API URL ను దానికి జోడించండి. + +మీ పర్యావరణ ఫైల్‌కు `.env` అని పేరు పెట్టాలి లేదా అది పర్యావరణ ఫైల్‌గా గుర్తించబడదు. + +దానికి `process.env` లేదా `.env-custom` లేదా మరే ఇతర పేరు పెట్టవద్దు. + +- మీ ప్రైవేట్ కీని ఎగుమతి చేయడానికి [ఈ సూచనలను](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key) అనుసరించండి +- HTTP Alchemy API URL పొందడానికి క్రింద చూడండి + +![](./get-alchemy-api-key.gif) + +మీ `.env` ఈ విధంగా కనిపించాలి: + +``` +API_URL = "https://eth-goerli.alchemyapi.io/v2/your-api-key" +PRIVATE_KEY = "your-metamask-private-key" +``` + +వీటిని వాస్తవంగా మన కోడ్‌కు కనెక్ట్ చేయడానికి, మనం ఈ వేరియబుల్స్‌ను దశ 13లో మన `hardhat.config.js` ఫైల్‌లో రిఫరెన్స్ చేస్తాము. + +### దశ 12: Ethers.jsని ఇన్‌స్టాల్ చేయండి {#step-12-install-ethersjs} + +Ethers.js అనేది ఒక లైబ్రరీ, ఇది [ప్రామాణిక JSON-RPC పద్ధతులను](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc) మరింత వినియోగదారు స్నేహపూర్వక పద్ధతులతో చుట్టడం ద్వారా ఇథీరియంకు ఇంటరాక్ట్ చేయడం మరియు అభ్యర్థనలు చేయడం సులభం చేస్తుంది. + +హార్డ్‌హ్యాట్ అదనపు టూలింగ్ మరియు విస్తరించిన కార్యాచరణ కోసం [ప్లగిన్‌లను](https://hardhat.org/plugins/) ఏకీకృతం చేయడానికి మాకు అనుమతిస్తుంది. కాంట్రాక్ట్ అమలు కోసం మేము [ఈథర్స్ ప్లగిన్](https://hardhat.org/docs/plugins/official-plugins#hardhat-ethers) ను సద్వినియోగం చేసుకుంటాము. + +మీ ప్రాజెక్ట్ డైరెక్టరీలో టైప్ చేయండి: + +```bash +npm install --save-dev @nomiclabs/hardhat-ethers "ethers@^5.0.0" +``` + +### దశ 13: hardhat.config.js నవీకరించండి {#step-13-update-hardhat-configjs} + +మనం ఇప్పటివరకు అనేక డిపెండెన్సీలు మరియు ప్లగిన్‌లను జోడించాము, ఇప్పుడు మన ప్రాజెక్ట్ వాటన్నిటి గురించి తెలుసుకునేలా `hardhat.config.js`ని అప్‌డేట్ చేయాలి. + +మీ `hardhat.config.js`ని ఈ విధంగా కనిపించేలా అప్‌డేట్ చేయండి: + +```javascript +/** + * @type import('hardhat/config').HardhatUserConfig + */ + +require("dotenv").config() +require("@nomiclabs/hardhat-ethers") + +const { API_URL, PRIVATE_KEY } = process.env + +module.exports = { + solidity: "0.7.3", + defaultNetwork: "goerli", + networks: { + hardhat: {}, + goerli: { + url: API_URL, + accounts: [`0x${PRIVATE_KEY}`], + }, + }, +} +``` + +### దశ 14: మా కాంట్రాక్టును కంపైల్ చేయండి {#step-14-compile-our-contract} + +ఇప్పటివరకు ప్రతిదీ పనిచేస్తుందని నిర్ధారించుకోవడానికి, మా కాంట్రాక్ట్‌ను కంపైల్ చేద్దాం. `compile` టాస్క్ అనేది అంతర్నిర్మిత హార్డ్‌హ్యాట్ టాస్క్‌లలో ఒకటి. + +కమాండ్ లైన్ నుండి రన్ చేయండి: + +```bash +npx hardhat compile +``` + +మీకు `మూల ఫైల్‌లో SPDX లైసెన్స్ ఐడెంటిఫైయర్ అందించబడలేదు` గురించి హెచ్చరిక రావచ్చు, కానీ దాని గురించి చింతించాల్సిన అవసరం లేదు - ఆశాజనకంగా మిగతావన్నీ బాగున్నాయి! కాకపోతే, మీరు ఎల్లప్పుడూ [ఆల్కెమీ డిస్కార్డ్](https://discord.gg/u72VCg3)లో సందేశం పంపవచ్చు. + +### దశ 15: మా అమలు స్క్రిప్ట్‌ను వ్రాయండి {#step-15-write-our-deploy-script} + +ఇప్పుడు మా కాంట్రాక్ట్ వ్రాయబడింది మరియు మా కాన్ఫిగరేషన్ ఫైల్ సిద్ధంగా ఉంది, మా కాంట్రాక్ట్ డిప్లోయ్ స్క్రిప్ట్‌ను వ్రాసే సమయం వచ్చింది. + +`scripts/` ఫోల్డర్‌కు నావిగేట్ చేసి, `deploy.js` అనే కొత్త ఫైల్‌ను సృష్టించి, దానికి క్రింది కంటెంట్‌లను జోడించండి: + +```javascript +async function main() { + const HelloWorld = await ethers.getContractFactory("HelloWorld") + + // అమలును ప్రారంభించండి, కాంట్రాక్ట్ ఆబ్జెక్ట్‌కు పరిష్కరించే వాగ్దానాన్ని తిరిగి ఇస్తుంది + const hello_world = await HelloWorld.deploy("Hello World!") + console.log("కాంట్రాక్ట్ చిరునామాకు అమలు చేయబడింది:", hello_world.address) +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) +``` + +Hardhat వారి [కాంట్రాక్ట్స్ ట్యుటోరియల్](https://hardhat.org/tutorial/testing-contracts.html#writing-tests)లో ఈ కోడ్ లైన్‌లు ప్రతి ఒక్కటి ఏమి చేస్తుందో అద్భుతంగా వివరిస్తుంది, మేము వారి వివరణలను ఇక్కడ స్వీకరించాము. + +```javascript +const HelloWorld = await ethers.getContractFactory("HelloWorld") +``` + +ethers.js లో ఒక `ContractFactory` అనేది కొత్త స్మార్ట్ కాంట్రాక్టులను అమలు చేయడానికి ఉపయోగించే ఒక నైరూప్యత, కాబట్టి ఇక్కడ `HelloWorld` అనేది మా హలో వరల్డ్ కాంట్రాక్ట్ యొక్క ఉదాహరణల కోసం ఒక [ఫ్యాక్టరీ](https://en.wikipedia.org/wiki/Factory_\(object-oriented_programming\)). `hardhat-ethers` ప్లగిన్‌ని ఉపయోగిస్తున్నప్పుడు `ContractFactory` మరియు `Contract` ఉదాహరణలు డిఫాల్ట్‌గా మొదటి సంతకం చేసిన వ్యక్తికి (యజమానికి) కనెక్ట్ చేయబడతాయి. + +```javascript +const hello_world = await HelloWorld.deploy() +``` + +`ContractFactory`పై `deploy()`ను పిలవడం అమలును ప్రారంభిస్తుంది, మరియు ఒక `Contract` ఆబ్జెక్ట్‌కు పరిష్కరించే ఒక `Promise`ను తిరిగి ఇస్తుంది. ఇది మా స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌ల ప్రతిదానికీ ఒక పద్ధతిని కలిగి ఉన్న ఆబ్జెక్ట్. + +### దశ 16: మన కాంట్రాక్టును డిప్లాయ్ చేయండి {#step-16-deploy-our-contract} + +మేము చివరికి మా స్మార్ట్ కాంట్రాక్ట్‌ను డిప్లోయ్ చేయడానికి సిద్ధంగా ఉన్నాము! కమాండ్ లైన్‌కు నావిగేట్ చేసి రన్ చేయండి: + +```bash +npx hardhat run scripts/deploy.js --network goerli +``` + +మీరు అప్పుడు ఇలాంటిది చూడాలి: + +```bash +కాంట్రాక్ట్ ఈ చిరునామాకు డిప్లాయ్ చేయబడింది: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570 +``` + +**దయచేసి ఈ చిరునామాను సేవ్ చేయండి**. మనం ట్యుటోరియల్‌లో తరువాత దీనిని ఉపయోగిస్తాము. + +మనం [Goerli etherscan](https://goerli.etherscan.io) కి వెళ్లి మన కాంట్రాక్ట్ చిరునామా కోసం శోధిస్తే, అది విజయవంతంగా అమలు చేయబడిందని మనం చూడగలగాలి. లావాదేవీ ఇలా కనిపిస్తుంది: + +![](./etherscan-contract.png) + +`From` చిరునామా మీ మెటామాస్క్ ఖాతా చిరునామాతో సరిపోలాలి మరియు `To` చిరునామా **కాంట్రాక్ట్ క్రియేషన్** అని చెబుతుంది. మనం లావాదేవీలోకి క్లిక్ చేస్తే, మన కాంట్రాక్ట్ చిరునామాను `To` ఫీల్డ్‌లో చూస్తాము. + +![](./etherscan-transaction.png) + +అభినందనలు! మీరు ఇప్పుడే ఇథీరియం టెస్టునెట్‌కు ఒక స్మార్ట్ కాంట్రాక్టును అమలు చేసారు. + +తెర వెనుక ఏమి జరుగుతుందో అర్థం చేసుకోవడానికి, మన [ఆల్కెమీ డాష్‌బోర్డ్](https://dashboard.alchemy.com/explorer)లోని ఎక్స్‌ప్లోరర్ ట్యాబ్‌కు నావిగేట్ చేద్దాం. మీకు బహుళ ఆల్కెమీ యాప్‌లు ఉంటే, యాప్ ద్వారా ఫిల్టర్ చేసి, **హలో వరల్డ్**ని ఎంచుకున్నట్లు నిర్ధారించుకోండి. + +![](./hello-world-explorer.png) + +ఇక్కడ మీరు `.deploy()` ఫంక్షన్‌ను పిలిచినప్పుడు Hardhat/Ethers మా కోసం తెర వెనుక చేసిన కొన్ని JSON-RPC పద్ధతులను చూస్తారు. ఇక్కడ రెండు ముఖ్యమైన పద్ధతులు [`eth_sendRawTransaction`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction), ఇది మన కాంట్రాక్టును Goerli చైన్‌పై వ్రాయడానికి అభ్యర్థన, మరియు [`eth_getTransactionByHash`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_gettransactionbyhash), ఇది హాష్ ఇచ్చిన మన లావాదేవీ గురించి సమాచారాన్ని చదవడానికి అభ్యర్థన. లావాదేవీలను పంపడం గురించి మరింత తెలుసుకోవడానికి, [Web3 ఉపయోగించి లావాదేవీలను పంపడంపై మా ట్యుటోరియల్ చూడండి](/developers/tutorials/sending-transactions-using-web3-and-alchemy/). + +## భాగం 2: మీ స్మార్ట్ కాంట్రాక్ట్‌తో సంభాషించండి {#part-2-interact-with-your-smart-contract} + +ఇప్పుడు మనం Goerli నెట్‌వర్క్‌కు ఒక స్మార్ట్ కాంట్రాక్ట్‌ను విజయవంతంగా అమలు చేశాము, దానితో ఎలా సంభాషించాలో నేర్చుకుందాం. + +### ఒక interact.js ఫైల్‌ను సృష్టించండి {#create-a-interactjs-file} + +ఇది మన సంభాషణ స్క్రిప్ట్‌ను వ్రాసే ఫైల్. మేము మీరు ఇంతకు ముందు భాగం 1 లో ఇన్‌స్టాల్ చేసిన Ethers.js లైబ్రరీని ఉపయోగిస్తాము. + +`scripts/`ఫోల్డర్ లోపల, `interact.js` అనే కొత్త ఫైల్‌ను సృష్టించి, క్రింది కోడ్‌ను జోడించండి: + +```javascript +// interact.js + +const API_KEY = process.env.API_KEY +const PRIVATE_KEY = process.env.PRIVATE_KEY +const CONTRACT_ADDRESS = process.env.CONTRACT_ADDRESS +``` + +### మీ .env ఫైల్‌ను నవీకరించండి {#update-your-env-file} + +మేము కొత్త పర్యావరణ వేరియబుల్స్‌ను ఉపయోగిస్తున్నాము, కాబట్టి వాటిని [మేము ఇంతకుముందు సృష్టించిన](#step-11-connect-metamask-&-alchemy-to-your-project) `.env` ఫైల్‌లో నిర్వచించాలి. + +మేము మా ఆల్కెమీ `API_KEY` మరియు మీ స్మార్ట్ కాంట్రాక్ట్ అమలు చేయబడిన `CONTRACT_ADDRESS` కోసం ఒక నిర్వచనాన్ని జోడించాలి. + +మీ `.env` ఫైల్ ఈ విధంగా కనిపించాలి: + +```bash +# .env + +API_URL = "https://eth-goerli.alchemyapi.io/v2/<మీ-api-కీ>" +API_KEY = "<మీ-api-కీ>" +PRIVATE_KEY = "<మీ-మెటామాస్క్-ప్రైవేట్-కీ>" +CONTRACT_ADDRESS = "0x<మీ కాంట్రాక్ట్ చిరునామా>" +``` + +### మీ కాంట్రాక్ట్ ABI ని పొందండి {#grab-your-contract-ABI} + +మా కాంట్రాక్ట్ [ABI (అప్లికేషన్ బైనరీ ఇంటర్‌ఫేస్)](/glossary/#abi) అనేది మా స్మార్ట్ కాంట్రాక్ట్‌తో ఇంటరాక్ట్ అవ్వడానికి ఇంటర్‌ఫేస్. హార్డ్‌హ్యాట్ స్వయంచాలకంగా ఒక ABIని రూపొందించి, దానిని `HelloWorld.json`లో సేవ్ చేస్తుంది. ABIని ఉపయోగించడానికి, మన `interact.js` ఫైల్‌కు క్రింది కోడ్ లైన్‌లను జోడించడం ద్వారా కంటెంట్‌లను పార్స్ చేయాలి: + +```javascript +// interact.js +const contract = require("../artifacts/contracts/HelloWorld.sol/HelloWorld.json") +``` + +మీరు ABIని చూడాలనుకుంటే, దాన్ని మీ కన్సోల్లో ప్రింట్ చేయవచ్చు: + +```javascript +console.log(JSON.stringify(contract.abi)) +``` + +మీ ABI కన్సోల్‌కు ముద్రించబడి చూడటానికి, మీ టెర్మినల్‌కు నావిగేట్ చేసి, అమలు చేయండి: + +```bash +npx hardhat run scripts/interact.js +``` + +### మీ కాంట్రాక్ట్ యొక్క ఉదాహరణను సృష్టించండి {#create-an-instance-of-your-contract} + +మా కాంట్రాక్ట్‌తో సంభాషించడానికి, మేము మా కోడ్‌లో ఒక కాంట్రాక్ట్ ఉదాహరణను సృష్టించాలి. Ethers.js తో అలా చేయడానికి, మేము మూడు భావనలతో పని చేయాలి: + +1. ప్రొవైడర్ - బ్లాక్‌చెయిన్‌కు చదవడానికి మరియు వ్రాయడానికి యాక్సెస్ ఇచ్చే ఒక నోడ్ ప్రొవైడర్ +2. సంతకం చేసేవాడు - లావాదేవీలపై సంతకం చేయగల ఇథీరియం ఖాతాను సూచిస్తుంది +3. కాంట్రాక్ట్ - ఆన్‌చైన్‌లో అమలు చేయబడిన ఒక నిర్దిష్ట కాంట్రాక్టును సూచించే ఒక Ethers.js ఆబ్జెక్ట్ + +మేము కాంట్రాక్ట్ యొక్క ఉదాహరణను సృష్టించడానికి మునుపటి దశ నుండి కాంట్రాక్ట్ ABI ని ఉపయోగిస్తాము: + +```javascript +// interact.js + +// ప్రొవైడర్ +const alchemyProvider = new ethers.providers.AlchemyProvider( + (network = "goerli"), + API_KEY +) + +// సంతకం చేసేవాడు +const signer = new ethers.Wallet(PRIVATE_KEY, alchemyProvider) + +// కాంట్రాక్ట్ +const helloWorldContract = new ethers.Contract( + CONTRACT_ADDRESS, + contract.abi, + signer +) +``` + +[ethers.js డాక్యుమెంటేషన్](https://docs.ethers.io/v5/)లో ప్రొవైడర్లు, సంతకం చేసేవారు మరియు కాంట్రాక్టుల గురించి మరింత తెలుసుకోండి. + +### ప్రారంభ సందేశాన్ని చదవండి {#read-the-init-message} + +మేము `initMessage = "Hello world!"` తో మా కాంట్రాక్టును అమలు చేసినప్పుడు గుర్తుందా? మేము ఇప్పుడు మా స్మార్ట్ కాంట్రాక్టులో నిల్వ చేసిన ఆ సందేశాన్ని చదివి, దానిని కన్సోల్‌కు ముద్రిస్తాము. + +జావాస్క్రిప్ట్‌లో, నెట్‌వర్క్‌లతో సంభాషించేటప్పుడు అసమకాలిక ఫంక్షన్‌లు ఉపయోగించబడతాయి. అసమకాలిక ఫంక్షన్‌ల గురించి మరింత తెలుసుకోవడానికి, [ఈ మీడియం కథనాన్ని చదవండి](https://blog.bitsrc.io/understanding-asynchronous-javascript-the-event-loop-74cd408419ff). + +మా స్మార్ట్ కాంట్రాక్టులో `సందేశం` ఫంక్షన్‌ను పిలిచి, ప్రారంభ సందేశాన్ని చదవడానికి క్రింది కోడ్‌ను ఉపయోగించండి: + +```javascript +// interact.js + +// ... + +async function main() { + const message = await helloWorldContract.message() + console.log("సందేశం ఇది: " + message) +} +main() +``` + +టెర్మినల్‌లో `npx hardhat run scripts/interact.js` ఉపయోగించి ఫైల్‌ను అమలు చేసిన తర్వాత మనం ఈ ప్రతిస్పందనను చూడాలి: + +``` +సందేశం ఇది: హలో వరల్డ్! +``` + +అభినందనలు! మీరు ఇప్పుడే ఇథీరియం బ్లాక్‌చెయిన్ నుండి స్మార్ట్ కాంట్రాక్ట్ డేటాను విజయవంతంగా చదివారు, అద్భుతం! + +### సందేశాన్ని నవీకరించండి {#update-the-message} + +కేవలం సందేశాన్ని చదవడమే కాకుండా, `నవీకరణ` ఫంక్షన్‌ని ఉపయోగించి మన స్మార్ట్ కాంట్రాక్టులో సేవ్ చేసిన సందేశాన్ని కూడా నవీకరించవచ్చు! అద్భుతం కదా? + +సందేశాన్ని నవీకరించడానికి, మనం మన ఇన్‌స్టాంటియేటెడ్ కాంట్రాక్ట్ ఆబ్జెక్ట్‌పై నేరుగా `నవీకరణ` ఫంక్షన్‌ను పిలవవచ్చు: + +```javascript +// interact.js + +// ... + +async function main() { + const message = await helloWorldContract.message() + console.log("సందేశం ఇది: " + message) + + console.log("సందేశాన్ని నవీకరిస్తోంది...") + const tx = await helloWorldContract.update("ఇది కొత్త సందేశం.") + await tx.wait() +} +main() +``` + +లైన్ 11 లో, తిరిగి వచ్చిన లావాదేవీ ఆబ్జెక్ట్‌పై `.wait()` కు కాల్ చేస్తామని గమనించండి. ఇది ఫంక్షన్ నుండి నిష్క్రమించే ముందు లావాదేవీ బ్లాక్‌చెయిన్‌పై మైన్ అయ్యే వరకు మన స్క్రిప్ట్ వేచి ఉండేలా చేస్తుంది. `.wait()` కాల్ చేర్చకపోతే, స్క్రిప్ట్ కాంట్రాక్టులో నవీకరించబడిన `సందేశం` విలువను చూడకపోవచ్చు. + +### కొత్త సందేశాన్ని చదవండి {#read-the-new-message} + +నవీకరించబడిన `సందేశం` విలువను చదవడానికి మీరు [మునుపటి దశను](#read-the-init-message) పునరావృతం చేయగలగాలి. ఒక క్షణం తీసుకుని, ఆ కొత్త విలువను ప్రింట్ చేయడానికి అవసరమైన మార్పులు చేయగలరేమో చూడండి! + +మీకు సూచన అవసరమైతే, ఈ సమయంలో మీ `interact.js` ఫైల్ ఎలా ఉండాలో ఇక్కడ ఉంది: + +```javascript +// interact.js + +const API_KEY = process.env.API_KEY +const PRIVATE_KEY = process.env.PRIVATE_KEY +const CONTRACT_ADDRESS = process.env.CONTRACT_ADDRESS + +const contract = require("../artifacts/contracts/HelloWorld.sol/HelloWorld.json") + +// ప్రొవైడర్ - ఆల్కెమీ +const alchemyProvider = new ethers.providers.AlchemyProvider( + (network = "goerli"), + API_KEY +) + +// సంతకం చేసేవాడు - మీరు +const signer = new ethers.Wallet(PRIVATE_KEY, alchemyProvider) + +// కాంట్రాక్ట్ ఉదాహరణ +const helloWorldContract = new ethers.Contract( + CONTRACT_ADDRESS, + contract.abi, + signer +) + +async function main() { + const message = await helloWorldContract.message() + console.log("సందేశం ఇది: " + message) + + console.log("సందేశాన్ని నవీకరిస్తోంది...") + const tx = await helloWorldContract.update("ఇది కొత్త సందేశం") + await tx.wait() + + const newMessage = await helloWorldContract.message() + console.log("కొత్త సందేశం ఇది: " + newMessage) +} + +main() +``` + +ఇప్పుడు స్క్రిప్ట్‌ను అమలు చేయండి మరియు మీరు పాత సందేశాన్ని, నవీకరణ స్థితిని మరియు మీ టెర్మినల్‌కు ముద్రించబడిన కొత్త సందేశాన్ని చూడగలగాలి! + +`npx hardhat run scripts/interact.js --network goerli` + +``` +సందేశం ఇది: హలో వరల్డ్! +సందేశాన్ని నవీకరిస్తోంది... +కొత్త సందేశం ఇది: ఇది కొత్త సందేశం. +``` + +ఆ స్క్రిప్ట్‌ను అమలు చేస్తున్నప్పుడు, కొత్త సందేశం లోడ్ అవ్వడానికి ముందు `సందేశాన్ని నవీకరిస్తోంది...` దశ లోడ్ అవ్వడానికి కొంత సమయం పడుతుందని మీరు గమనించవచ్చు. అది మైనింగ్ ప్రక్రియ కారణంగా; లావాదేవీలు మైన్ అవుతున్నప్పుడు వాటిని ట్రాక్ చేయడంపై మీకు ఆసక్తి ఉంటే, ఒక లావాదేవీ స్థితిని చూడటానికి [ఆల్కెమీ మెమ్‌పూల్‌ను](https://dashboard.alchemyapi.io/mempool) సందర్శించండి. లావాదేవీ డ్రాప్ అయితే, [Goerli Etherscan](https://goerli.etherscan.io) ను తనిఖీ చేసి, మీ లావాదేవీ హాష్ కోసం శోధించడం కూడా సహాయపడుతుంది. + +## భాగం 3: మీ స్మార్ట్ కాంట్రాక్ట్‌ను Etherscanకు ప్రచురించండి {#part-3-publish-your-smart-contract-to-etherscan} + +మీరు మీ స్మార్ట్ కాంట్రాక్టుకు జీవం పోయడానికి చాలా కష్టపడ్డారు; ఇప్పుడు దానిని ప్రపంచంతో పంచుకునే సమయం వచ్చింది! + +Etherscanలో మీ స్మార్ట్ కాంట్రాక్టును ధృవీకరించడం ద్వారా, ఎవరైనా మీ మూల కోడ్‌ను వీక్షించవచ్చు మరియు మీ స్మార్ట్ కాంట్రాక్ట్‌తో సంభాషించవచ్చు. మొదలు పెడదాము. + +### దశ 1: మీ Etherscan ఖాతాలో ఒక API కీని రూపొందించండి {#step-1-generate-an-api-key-on-your-etherscan-account} + +మీరు ప్రచురించడానికి ప్రయత్నిస్తున్న స్మార్ట్ కాంట్రాక్ట్ మీకు చెందినదేనని ధృవీకరించడానికి ఒక Etherscan API కీ అవసరం. + +మీకు ఇప్పటికే Etherscan ఖాతా లేకపోతే, [ఒక ఖాతా కోసం సైన్ అప్ చేయండి](https://etherscan.io/register). + +లాగిన్ అయిన తర్వాత, నావిగేషన్ బార్‌లో మీ వినియోగదారు పేరును కనుగొని, దానిపై హోవర్ చేసి, **నా ప్రొఫైల్** బటన్‌ను ఎంచుకోండి. + +మీ ప్రొఫైల్ పేజీలో, మీరు ఒక సైడ్ నావిగేషన్ బార్‌ను చూడాలి. సైడ్ నావిగేషన్ బార్ నుండి, **API కీలు** ఎంచుకోండి. తరువాత, కొత్త API కీని సృష్టించడానికి "జోడించు" బటన్‌ను నొక్కండి, మీ యాప్‌కు **hello-world** అని పేరు పెట్టి, **కొత్త API కీని సృష్టించు** బటన్‌ను నొక్కండి. + +మీ కొత్త API కీ API కీ పట్టికలో కనిపించాలి. API కీని మీ క్లిప్‌బోర్డ్‌కు కాపీ చేయండి. + +తరువాత, మనం Etherscan API కీని మన `.env` ఫైల్‌కు జోడించాలి. + +జోడించిన తర్వాత, మీ `.env` ఫైల్ ఈ విధంగా కనిపించాలి: + +```javascript +API_URL = "https://eth-goerli.alchemyapi.io/v2/your-api-key" +PUBLIC_KEY = "మీ-పబ్లిక్-ఖాతా-చిరునామా" +PRIVATE_KEY = "మీ-ప్రైవేట్-ఖాతా-చిరునామా" +CONTRACT_ADDRESS = "మీ-కాంట్రాక్ట్-చిరునామా" +ETHERSCAN_API_KEY = "మీ-etherscan-కీ" +``` + +### హార్డ్‌హ్యాట్-అమలు చేయబడిన స్మార్ట్ కాంట్రాక్టులు {#hardhat-deployed-smart-contracts} + +#### hardhat-etherscan ఇన్‌స్టాల్ చేయండి {#install-hardhat-etherscan} + +హార్డ్‌హ్యాట్ ఉపయోగించి మీ కాంట్రాక్టును Etherscanకు ప్రచురించడం చాలా సులభం. ప్రారంభించడానికి మీరు ముందుగా `hardhat-etherscan` ప్లగిన్‌ను ఇన్‌స్టాల్ చేయాలి. `hardhat-etherscan` స్వయంచాలకంగా స్మార్ట్ కాంట్రాక్ట్ యొక్క మూల కోడ్ మరియు ABI ని Etherscan లో ధృవీకరిస్తుంది. దీనిని జోడించడానికి, `hello-world` డైరెక్టరీలో దీన్ని అమలు చేయండి: + +```text +npm install --save-dev @nomiclabs/hardhat-etherscan +``` + +ఇన్‌స్టాల్ చేసిన తర్వాత, మీ `hardhat.config.js` ఎగువన క్రింది స్టేట్‌మెంట్‌ను చేర్చండి మరియు Etherscan కాన్ఫిగ్ ఎంపికలను జోడించండి: + +```javascript +// hardhat.config.js + +require("dotenv").config() +require("@nomiclabs/hardhat-ethers") +require("@nomiclabs/hardhat-etherscan") + +const { API_URL, PRIVATE_KEY, ETHERSCAN_API_KEY } = process.env + +module.exports = { + solidity: "0.7.3", + defaultNetwork: "goerli", + networks: { + hardhat: {}, + goerli: { + url: API_URL, + accounts: [`0x${PRIVATE_KEY}`], + }, + }, + etherscan: { + // Etherscan కోసం మీ API కీ + // https://etherscan.io/ లో ఒకటి పొందండి + apiKey: ETHERSCAN_API_KEY, + }, +} +``` + +#### Etherscanలో మీ స్మార్ట్ కాంట్రాక్టును ధృవీకరించండి {#verify-your-smart-contract-on-etherscan} + +అన్ని ఫైల్‌లు సేవ్ చేయబడి ఉన్నాయని మరియు అన్ని `.env` వేరియబుల్స్ సరిగ్గా కాన్ఫిగర్ చేయబడి ఉన్నాయని నిర్ధారించుకోండి. + +`ధృవీకరించు` టాస్క్‌ను అమలు చేయండి, కాంట్రాక్ట్ చిరునామాను మరియు అది అమలు చేయబడిన నెట్‌వర్క్‌ను పంపండి: + +```text +npx hardhat verify --network goerli DEPLOYED_CONTRACT_ADDRESS 'హలో వరల్డ్!' +``` + +`DEPLOYED_CONTRACT_ADDRESS` అనేది Goerli టెస్ట్ నెట్‌వర్క్‌లో మీ అమలు చేయబడిన స్మార్ట్ కాంట్రాక్ట్ యొక్క చిరునామా అని నిర్ధారించుకోండి. అలాగే, చివరి ఆర్గ్యుమెంట్ (`'హలో వరల్డ్!'`) భాగం 1 లోని [అమలు దశలో](#write-our-deploy-script) ఉపయోగించిన అదే స్ట్రింగ్ విలువ అయి ఉండాలి. + +అన్నీ సరిగ్గా జరిగితే, మీ టెర్మినల్‌లో క్రింది సందేశాన్ని చూస్తారు: + +```text +కాంట్రాక్ట్ కోసం మూల కోడ్ విజయవంతంగా సమర్పించబడింది +contracts/HelloWorld.sol:HelloWorld at 0xdeployed-contract-address +Etherscanలో ధృవీకరణ కోసం. ధృవీకరణ ఫలితం కోసం వేచి ఉంది... + + +Etherscanలో HelloWorld కాంట్రాక్ట్ విజయవంతంగా ధృవీకరించబడింది. +https://goerli.etherscan.io/address/#contracts +``` + +అభినందనలు! మీ స్మార్ట్ కాంట్రాక్ట్ కోడ్ Etherscanలో ఉంది! + +### Etherscanలో మీ స్మార్ట్ కాంట్రాక్టును చూడండి! {#check-out-your-smart-contract-on-etherscan} + +మీ టెర్మినల్‌లో అందించిన లింక్‌కు మీరు నావిగేట్ చేసినప్పుడు, మీరు మీ స్మార్ట్ కాంట్రాక్ట్ కోడ్ మరియు ABI Etherscanలో ప్రచురించబడి ఉండటం చూడగలగాలి! + +**వాహూ - మీరు చేసారు ఛాంప్! ఇప్పుడు ఎవరైనా మీ స్మార్ట్ కాంట్రాక్టుకు కాల్ చేయవచ్చు లేదా వ్రాయవచ్చు! మీరు తరువాత ఏమి నిర్మిస్తారో చూడటానికి మేము వేచి ఉండలేము!** + +## భాగం 4 - మీ స్మార్ట్ కాంట్రాక్టును ఫ్రంటెండ్‌తో ఏకీకృతం చేయడం {#part-4-integrating-your-smart-contract-with-the-frontend} + +ఈ ట్యుటోరియల్ చివరి నాటికి, మీరు ఎలా చేయాలో తెలుసుకుంటారు: + +- మీ డాప్‌కు మెటామాస్క్ వాలెట్‌ను కనెక్ట్ చేయండి +- మీ స్మార్ట్ కాంట్రాక్టు నుండి [Alchemy Web3](https://docs.alchemy.com/alchemy/documentation/alchemy-web3) API ఉపయోగించి డేటాను చదవండి +- మెటామాస్క్ ఉపయోగించి ఇథీరియం లావాదేవీలపై సంతకం చేయండి + +ఈ డాప్ కోసం, మేము [React](https://react.dev/) ను మన ఫ్రంటెండ్ ఫ్రేమ్‌వర్క్‌గా ఉపయోగిస్తాము; అయితే, మేము దాని ప్రాథమికాలను విడదీయడానికి ఎక్కువ సమయం వెచ్చించబోమని గమనించడం ముఖ్యం, ఎందుకంటే మేము ఎక్కువగా మన ప్రాజెక్టుకు Web3 కార్యాచరణను తీసుకురావడంపై దృష్టి పెడతాము. + +ముందస్తు అవసరంగా, మీరు React గురించి ప్రాథమిక స్థాయి అవగాహన కలిగి ఉండాలి. లేకపోతే, అధికారిక [React కు పరిచయం ట్యుటోరియల్](https://react.dev/learn) పూర్తి చేయాలని మేము సిఫార్సు చేస్తున్నాము. + +### స్టార్టర్ ఫైల్‌లను క్లోన్ చేయండి {#clone-the-starter-files} + +ముందుగా, ఈ ప్రాజెక్ట్ కోసం స్టార్టర్ ఫైల్‌లను పొందడానికి [హలో-వరల్డ్-పార్ట్-ఫోర్ GitHub రిపోజిటరీకి](https://github.com/alchemyplatform/hello-world-part-four-tutorial) వెళ్లి, ఈ రిపోజిటరీని మీ స్థానిక యంత్రానికి క్లోన్ చేయండి. + +స్థానికంగా క్లోన్ చేయబడిన రిపోజిటరీని తెరవండి. ఇందులో రెండు ఫోల్డర్‌లు ఉన్నాయని గమనించండి: `స్టార్టర్-ఫైల్స్` మరియు `పూర్తి చేయబడినవి`. + +- `స్టార్టర్-ఫైల్స్`- **మేము ఈ డైరెక్టరీలో పని చేస్తాము**, మేము UI ని మీ ఇథీరియం వాలెట్‌కు మరియు [భాగం 3](#part-3) లో Etherscan కు ప్రచురించిన స్మార్ట్ కాంట్రాక్టుకు కనెక్ట్ చేస్తాము. +- `పూర్తి చేయబడినది` మొత్తం పూర్తి చేయబడిన ట్యుటోరియల్‌ను కలిగి ఉంటుంది మరియు మీరు ఇరుక్కుపోతే మాత్రమే సూచనగా ఉపయోగించాలి. + +తరువాత, మీ `స్టార్టర్-ఫైల్స్` కాపీని మీకు ఇష్టమైన కోడ్ ఎడిటర్‌కు తెరిచి, ఆపై `src` ఫోల్డర్‌లోకి నావిగేట్ చేయండి. + +మేము వ్రాసే కోడ్ అంతా `src` ఫోల్డర్ కింద ఉంటుంది. మా ప్రాజెక్టుకు Web3 కార్యాచరణను అందించడానికి మేము `HelloWorld.js` కాంపోనెంట్ మరియు `util/interact.js` జావాస్క్రిప్ట్ ఫైల్‌లను సవరించబోతున్నాము. + +### స్టార్టర్ ఫైల్‌లను చూడండి {#check-out-the-starter-files} + +మేము కోడింగ్ ప్రారంభించే ముందు, స్టార్టర్ ఫైల్స్‌లో మనకు ఏమి అందించబడిందో అన్వేషిద్దాం. + +#### మీ react ప్రాజెక్ట్‌ను రన్ చేయండి {#get-your-react-project-running} + +మా బ్రౌజర్‌లో React ప్రాజెక్ట్‌ను రన్ చేయడం ద్వారా ప్రారంభిద్దాం. React యొక్క అందం ఏమిటంటే, మా బ్రౌజర్‌లో మా ప్రాజెక్ట్ రన్ అవుతున్నప్పుడు, మేము సేవ్ చేసే ఏవైనా మార్పులు మా బ్రౌజర్‌లో ప్రత్యక్షంగా అప్‌డేట్ చేయబడతాయి. + +ప్రాజెక్ట్‌ను అమలు చేయడానికి, `స్టార్టర్-ఫైల్స్` ఫోల్డర్ యొక్క రూట్ డైరెక్టరీకి నావిగేట్ చేసి, ప్రాజెక్ట్ యొక్క డిపెండెన్సీలను ఇన్‌స్టాల్ చేయడానికి మీ టెర్మినల్‌లో `npm install` ను అమలు చేయండి: + +```bash +cd starter-files +npm install +``` + +అవి ఇన్‌స్టాల్ చేయడం పూర్తయిన తర్వాత, మీ టెర్మినల్‌లో `npm start` రన్ చేయండి: + +```bash +npm start +``` + +అలా చేయడం వలన మీ బ్రౌజర్‌లో [http://localhost:3000/](http://localhost:3000/) తెరుచుకుంటుంది, ఇక్కడ మీరు మా ప్రాజెక్ట్ యొక్క ఫ్రంటెండ్‌ను చూస్తారు. ఇది ఒక ఫీల్డ్ (మీ స్మార్ట్ కాంట్రాక్టులో నిల్వ చేసిన సందేశాన్ని నవీకరించడానికి ఒక స్థలం), ఒక "వాలెట్ కనెక్ట్ చేయి" బటన్ మరియు ఒక "నవీకరించు" బటన్‌ను కలిగి ఉండాలి. + +మీరు ఏ బటన్‌ను క్లిక్ చేయడానికి ప్రయత్నించినా, అవి పని చేయవని మీరు గమనిస్తారు - ఎందుకంటే మేము ఇంకా వాటి కార్యాచరణను ప్రోగ్రామ్ చేయాలి. + +#### `HelloWorld.js` కాంపోనెంట్ {#the-helloworld-js-component} + +మన ఎడిటర్‌లో `src` ఫోల్డర్‌కు తిరిగి వెళ్లి, `HelloWorld.js` ఫైల్‌ను తెరుద్దాం. ఈ ఫైల్‌లోని ప్రతిదాన్ని మనం అర్థం చేసుకోవడం చాలా ముఖ్యం, ఎందుకంటే ఇది మనం పని చేయబోయే ప్రాథమిక React కాంపోనెంట్. + +ఈ ఫైల్ ఎగువన, మన ప్రాజెక్ట్ అమలు కావడానికి అవసరమైన అనేక ఇంపోర్ట్ స్టేట్‌మెంట్‌లు ఉన్నాయని మీరు గమనించవచ్చు, ఇందులో React లైబ్రరీ, useEffect మరియు useState హుక్స్, `./util/interact.js` నుండి కొన్ని అంశాలు (మేము వాటిని త్వరలో మరింత వివరంగా వివరిస్తాము!), మరియు ఆల్కెమీ లోగో ఉన్నాయి. + +```javascript +// HelloWorld.js + +import React from "react" +import { useEffect, useState } from "react" +import { + helloWorldContract, + connectWallet, + updateMessage, + loadCurrentMessage, + getCurrentWalletConnected, +} from "./util/interact.js" + +import alchemylogo from "./alchemylogo.svg" +``` + +తరువాత, మేము నిర్దిష్ట ఈవెంట్‌ల తర్వాత నవీకరించే మా స్థితి వేరియబుల్స్ ఉన్నాయి. + +```javascript +// HelloWorld.js + +//స్థితి వేరియబుల్స్ +const [walletAddress, setWallet] = useState("") +const [status, setStatus] = useState("") +const [message, setMessage] = useState("నెట్‌వర్క్‌కు కనెక్షన్ లేదు.") +const [newMessage, setNewMessage] = useState("") +``` + +ప్రతి వేరియబుల్ దేనిని సూచిస్తుందో ఇక్కడ ఉంది: + +- `walletAddress` - వినియోగదారుడి వాలెట్ చిరునామాను నిల్వ చేసే ఒక స్ట్రింగ్ +- `స్థితి`- వినియోగదారునికి డాప్‌తో ఎలా ఇంటరాక్ట్ అవ్వాలో మార్గనిర్దేశం చేసే సహాయక సందేశాన్ని నిల్వ చేసే స్ట్రింగ్ +- `సందేశం` - స్మార్ట్ కాంట్రాక్టులో ప్రస్తుత సందేశాన్ని నిల్వ చేసే స్ట్రింగ్ +- `కొత్తసందేశం` - స్మార్ట్ కాంట్రాక్టుకు వ్రాయబడే కొత్త సందేశాన్ని నిల్వ చేసే స్ట్రింగ్ + +స్థితి వేరియబుల్స్ తర్వాత, మీరు ఐదు అమలు చేయని ఫంక్షన్‌లను చూస్తారు: `useEffect` ,`addSmartContractListener`, `addWalletListener` , `connectWalletPressed`, మరియు `onUpdatePressed`. అవి ఏమి చేస్తాయో క్రింద వివరిస్తాము: + +```javascript +// HelloWorld.js + +//కేవలం ఒకసారి పిలువబడుతుంది +useEffect(async () => { + //TODO: అమలు చేయండి +}, []) + +function addSmartContractListener() { + //TODO: అమలు చేయండి +} + +function addWalletListener() { + //TODO: అమలు చేయండి +} + +const connectWalletPressed = async () => { + //TODO: అమలు చేయండి +} + +const onUpdatePressed = async () => { + //TODO: అమలు చేయండి +} +``` + +- [`useEffect`](https://legacy.reactjs.org/docs/hooks-effect.html)- ఇది మీ కాంపోనెంట్ రెండర్ అయిన తర్వాత పిలువబడే ఒక React హుక్. దీనికి ఖాళీ శ్రేణి `[]` ప్రాప్ పంపబడినందున (లైన్ 4 చూడండి), ఇది కేవలం కాంపోనెంట్ యొక్క _మొదటి_ రెండర్‌లో మాత్రమే పిలువబడుతుంది. ఇక్కడ మనం మన స్మార్ట్ కాంట్రాక్టులో నిల్వ చేసిన ప్రస్తుత సందేశాన్ని లోడ్ చేస్తాము, మన స్మార్ట్ కాంట్రాక్ట్ మరియు వాలెట్ శ్రోతలను పిలుస్తాము, మరియు ఇప్పటికే వాలెట్ కనెక్ట్ చేయబడిందో లేదో ప్రతిబింబించడానికి మన UI ను నవీకరిస్తాము. +- `addSmartContractListener`- ఈ ఫంక్షన్ మన HelloWorld కాంట్రాక్ట్ యొక్క `UpdatedMessages` ఈవెంట్ కోసం చూసే ఒక శ్రోతను సెటప్ చేస్తుంది మరియు మన స్మార్ట్ కాంట్రాక్టులో సందేశం మార్చబడినప్పుడు మన UI ను నవీకరిస్తుంది. +- `addWalletListener`- ఈ ఫంక్షన్ వినియోగదారు యొక్క మెటామాస్క్ వాలెట్ స్థితిలో మార్పులను గుర్తించే ఒక శ్రోతను సెటప్ చేస్తుంది, ఉదాహరణకు వినియోగదారు తన వాలెట్‌ను డిస్‌కనెక్ట్ చేసినప్పుడు లేదా చిరునామాలను మార్చినప్పుడు. +- `connectWalletPressed`- ఈ ఫంక్షన్ వినియోగదారు యొక్క మెటామాస్క్ వాలెట్‌ను మన డాప్‌కు కనెక్ట్ చేయడానికి పిలువబడుతుంది. +- `onUpdatePressed` - వినియోగదారు స్మార్ట్ కాంట్రాక్టులో నిల్వ చేసిన సందేశాన్ని నవీకరించాలనుకున్నప్పుడు ఈ ఫంక్షన్ పిలువబడుతుంది. + +ఈ ఫైల్ చివరిలో, మా కాంపోనెంట్ యొక్క UI ఉంది. + +```javascript +// HelloWorld.js + +//మా కాంపోనెంట్ యొక్క UI +return ( +
+ + + +

ప్రస్తుత సందేశం:

+

{message}

+ +

కొత్త సందేశం:

+ +
+ setNewMessage(e.target.value)} + value={newMessage} + /> +

{status}

+ + +
+ +
+) +``` + +మీరు ఈ కోడ్‌ను జాగ్రత్తగా స్కాన్ చేస్తే, మన UIలో మన వివిధ స్థితి వేరియబుల్స్‌ను ఎక్కడ ఉపయోగిస్తామో మీరు గమనిస్తారు: + +- 6-12 లైన్లలో, వినియోగదారు వాలెట్ కనెక్ట్ చేయబడితే (అంటే, `walletAddress.length > 0`), మేము "walletButton" ID ఉన్న బటన్‌లో వినియోగదారు `walletAddress` యొక్క సంక్షిప్త రూపాన్ని ప్రదర్శిస్తాము; లేకపోతే అది కేవలం "వాలెట్ కనెక్ట్ చేయి" అని చెబుతుంది. +- 17వ లైన్‌లో, స్మార్ట్ కాంట్రాక్టులో నిల్వ చేసిన ప్రస్తుత సందేశాన్ని ప్రదర్శిస్తాము, ఇది `సందేశం` స్ట్రింగ్‌లో సంగ్రహించబడింది. +- 23-26 లైన్లలో, టెక్స్ట్ ఫీల్డ్‌లోని ఇన్‌పుట్ మారినప్పుడు మన `కొత్తసందేశం` స్థితి వేరియబుల్‌ను నవీకరించడానికి మేము ఒక [నియంత్రిత కాంపోనెంట్‌ను](https://legacy.reactjs.org/docs/forms.html#controlled-components) ఉపయోగిస్తాము. + +మా స్థితి వేరియబుల్స్‌తో పాటు, `publishButton` మరియు `walletButton` ID లతో ఉన్న బటన్‌లు క్లిక్ చేయబడినప్పుడు వరుసగా `connectWalletPressed` మరియు `onUpdatePressed` ఫంక్షన్‌లు పిలువబడతాయని మీరు చూస్తారు. + +చివరగా, ఈ `HelloWorld.js` కాంపోనెంట్ ఎక్కడ జోడించబడిందో చూద్దాం. + +మీరు `App.js` ఫైల్‌కు వెళితే, ఇది React లో ప్రధాన కాంపోనెంట్ మరియు అన్ని ఇతర కాంపోనెంట్‌లకు కంటైనర్‌గా పనిచేస్తుంది, మీరు మా `HelloWorld.js` కాంపోనెంట్ 7వ లైన్‌లో ఇంజెక్ట్ చేయబడిందని చూస్తారు. + +చివరగా, కానీ ముఖ్యంగా, మీ కోసం అందించిన మరో ఫైల్‌ను చూద్దాం, `interact.js` ఫైల్. + +#### `interact.js` ఫైల్ {#the-interact-js-file} + +మేము [M-V-C](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) పద్ధతిని పాటించాలనుకుంటున్నందున, మన డాప్ యొక్క తర్కం, డేటా మరియు నియమాలను నిర్వహించడానికి అన్ని ఫంక్షన్‌లను కలిగి ఉన్న ఒక ప్రత్యేక ఫైల్ కావాలి, మరియు ఆ ఫంక్షన్‌లను మన ఫ్రంటెండ్‌కు (మన `HelloWorld.js` కాంపోనెంట్‌కు) ఎగుమతి చేయగలగాలి. + +👆🏽ఇది మా `interact.js` ఫైల్ యొక్క ఖచ్చితమైన ఉద్దేశ్యం! + +మీ `src` డైరెక్టరీలోని `util` ఫోల్డర్‌కు నావిగేట్ చేయండి, మరియు మేము `interact.js` అనే ఫైల్‌ను చేర్చినట్లు మీరు గమనించవచ్చు, ఇది మా అన్ని స్మార్ట్ కాంట్రాక్ట్ ఇంటరాక్షన్ మరియు వాలెట్ ఫంక్షన్‌లు మరియు వేరియబుల్స్‌ను కలిగి ఉంటుంది. + +```javascript +// interact.js + +//export const helloWorldContract; + +export const loadCurrentMessage = async () => {} + +export const connectWallet = async () => {} + +const getCurrentWalletConnected = async () => {} + +export const updateMessage = async (message) => {} +``` + +ఫైల్ ఎగువన, మేము `helloWorldContract` ఆబ్జెక్ట్‌ను వ్యాఖ్యానించినట్లు మీరు గమనించవచ్చు. ఈ ట్యుటోరియల్‌లో తరువాత, మేము ఈ ఆబ్జెక్ట్‌ను అన్‌కామెంట్ చేసి, ఈ వేరియబుల్‌లో మా స్మార్ట్ కాంట్రాక్టును ఇన్‌స్టాంటియేట్ చేస్తాము, దీనిని మేము మా `HelloWorld.js` కాంపోనెంట్‌లోకి ఎగుమతి చేస్తాము. + +మా `helloWorldContract` ఆబ్జెక్ట్ తర్వాత నాలుగు అమలు చేయని ఫంక్షన్‌లు ఈ క్రిందివి చేస్తాయి: + +- `loadCurrentMessage` - ఈ ఫంక్షన్ స్మార్ట్ కాంట్రాక్టులో నిల్వ చేసిన ప్రస్తుత సందేశాన్ని లోడ్ చేసే తర్కాన్ని నిర్వహిస్తుంది. ఇది [ఆల్కెమీ Web3 API](https://github.com/alchemyplatform/alchemy-web3)ని ఉపయోగించి హలో వరల్డ్ స్మార్ట్ కాంట్రాక్టుకు _చదివే_ కాల్ చేస్తుంది. +- `connectWallet` - ఈ ఫంక్షన్ వినియోగదారు యొక్క మెటామాస్క్‌ను మన డాప్‌కు కనెక్ట్ చేస్తుంది. +- `getCurrentWalletConnected` - ఈ ఫంక్షన్ పేజీ లోడ్ అయినప్పుడు మన డాప్‌కు ఇథీరియం ఖాతా ఇప్పటికే కనెక్ట్ చేయబడిందో లేదో తనిఖీ చేసి, తదనుగుణంగా మన UI ను నవీకరిస్తుంది. +- `updateMessage` - ఈ ఫంక్షన్ స్మార్ట్ కాంట్రాక్టులో నిల్వ చేసిన సందేశాన్ని నవీకరిస్తుంది. ఇది హలో వరల్డ్ స్మార్ట్ కాంట్రాక్టుకు _వ్రాయు_ కాల్ చేస్తుంది, కాబట్టి సందేశాన్ని నవీకరించడానికి వినియోగదారు యొక్క మెటామాస్క్ వాలెట్ ఇథీరియం లావాదేవీపై సంతకం చేయాల్సి ఉంటుంది. + +ఇప్పుడు మనం ఏమి పని చేస్తున్నామో అర్థం చేసుకున్నాము, మన స్మార్ట్ కాంట్రాక్టు నుండి ఎలా చదవాలో తెలుసుకుందాం! + +### దశ 3: మీ స్మార్ట్ కాంట్రాక్టు నుండి చదవండి {#step-3-read-from-your-smart-contract} + +మీ స్మార్ట్ కాంట్రాక్టు నుండి చదవడానికి, మీరు విజయవంతంగా సెటప్ చేయాలి: + +- ఇథీరియం చైన్‌కు API కనెక్షన్ +- మీ స్మార్ట్ కాంట్రాక్ట్ యొక్క లోడ్ చేయబడిన ఉదాహరణ +- మీ స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌కు కాల్ చేయడానికి ఒక ఫంక్షన్ +- మీరు స్మార్ట్ కాంట్రాక్టు నుండి చదువుతున్న డేటా మారినప్పుడు నవీకరణల కోసం చూడటానికి ఒక శ్రోత + +ఇది చాలా దశలలా అనిపించవచ్చు, కానీ చింతించకండి! వాటిలో ప్రతి ఒక్కటి ఎలా చేయాలో మేము మీకు దశలవారీగా వివరిస్తాము! :\) + +#### ఇథీరియం చైన్‌కు API కనెక్షన్‌ను ఏర్పాటు చేయండి {#establish-an-api-connection-to-the-ethereum-chain} + +ఈ ట్యుటోరియల్ యొక్క 2వ భాగంలో, మన స్మార్ట్ కాంట్రాక్టు నుండి చదవడానికి మన [ఆల్కెమీ Web3 కీని ఉపయోగించామని](https://docs.alchemy.com/alchemy/tutorials/hello-world-smart-contract/interacting-with-a-smart-contract#step-1-install-web3-library) గుర్తుందా? చైన్ నుండి చదవడానికి మీ డాప్‌లో మీకు ఆల్కెమీ Web3 కీ కూడా అవసరం. + +మీరు ఇప్పటికే దానిని కలిగి లేకపోతే, ముందుగా మీ `స్టార్టర్-ఫైల్స్` యొక్క రూట్ డైరెక్టరీకి నావిగేట్ చేసి, మీ టెర్మినల్‌లో క్రింది వాటిని అమలు చేయడం ద్వారా [ఆల్కెమీ Web3](https://github.com/alchemyplatform/alchemy-web3)ని ఇన్‌స్టాల్ చేయండి: + +```text +npm install @alch/alchemy-web3 +``` + +[Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) అనేది [Web3.js](https://docs.web3js.org/) చుట్టూ ఉన్న ఒక చుట్టు, ఇది వెబ్3 డెవలపర్‌గా మీ జీవితాన్ని సులభతరం చేయడానికి మెరుగైన API పద్ధతులు మరియు ఇతర కీలక ప్రయోజనాలను అందిస్తుంది. ఇది కనిష్ట కాన్ఫిగరేషన్ అవసరం అయ్యేలా రూపొందించబడింది, తద్వారా మీరు వెంటనే మీ అనువర్తనంలో దాన్ని ఉపయోగించడం ప్రారంభించవచ్చు! + +అప్పుడు, మీ ప్రాజెక్ట్ డైరెక్టరీలో [dotenv](https://www.npmjs.com/package/dotenv) ప్యాకేజీని ఇన్‌స్టాల్ చేయండి, కాబట్టి మేము దానిని పొందిన తర్వాత మా API కీని నిల్వ చేయడానికి మాకు సురక్షితమైన స్థలం ఉంటుంది. + +```text +npm install dotenv --save +``` + +మా డాప్ కోసం, **మేము మా HTTP API కీకి బదులుగా మా వెబ్‌సాకెట్స్ API కీని ఉపయోగిస్తాము**, ఎందుకంటే ఇది స్మార్ట్ కాంట్రాక్టులో నిల్వ చేసిన సందేశం మారినప్పుడు గుర్తించే ఒక శ్రోతను సెటప్ చేయడానికి మాకు అనుమతిస్తుంది. + +మీరు మీ API కీని పొందిన తర్వాత, మీ రూట్ డైరెక్టరీలో ఒక `.env` ఫైల్‌ను సృష్టించి, దానికి మీ ఆల్కెమీ వెబ్‌సాకెట్స్ url ని జోడించండి. ఆ తరువాత, మీ `.env` ఫైల్ ఈ విధంగా కనిపించాలి: + +```javascript +REACT_APP_ALCHEMY_KEY = wss://eth-goerli.ws.alchemyapi.io/v2/ +``` + +ఇప్పుడు, మేము మా డాప్‌లో మా ఆల్కెమీ Web3 ఎండ్‌పాయింట్‌ను సెటప్ చేయడానికి సిద్ధంగా ఉన్నాము! మా `util` ఫోల్డర్‌లో ఉన్న మా `interact.js` కు తిరిగి వెళ్దాం మరియు ఫైల్ ఎగువన క్రింది కోడ్‌ను జోడిద్దాం: + +```javascript +// interact.js + +require("dotenv").config() +const alchemyKey = process.env.REACT_APP_ALCHEMY_KEY +const { createAlchemyWeb3 } = require("@alch/alchemy-web3") +const web3 = createAlchemyWeb3(alchemyKey) + +//export const helloWorldContract; +``` + +పైన, మేము ముందుగా మా `.env` ఫైల్ నుండి ఆల్కెమీ కీని దిగుమతి చేసుకున్నాము మరియు మా ఆల్కెమీ Web3 ఎండ్‌పాయింట్‌ను ఏర్పాటు చేయడానికి `createAlchemyWeb3` కు మా `alchemyKey` ను పంపాము. + +ఈ ఎండ్‌పాయింట్ సిద్ధంగా ఉన్నందున, మా స్మార్ట్ కాంట్రాక్టును లోడ్ చేసే సమయం వచ్చింది! + +#### మీ హలో వరల్డ్ స్మార్ట్ కాంట్రాక్టును లోడ్ చేస్తోంది {#loading-your-hello-world-smart-contract} + +మీ హలో వరల్డ్ స్మార్ట్ కాంట్రాక్టును లోడ్ చేయడానికి, మీకు దాని కాంట్రాక్ట్ చిరునామా మరియు ABI అవసరం, ఈ ట్యుటోరియల్ యొక్క [భాగం 3](/developers/tutorials/hello-world-smart-contract-fullstack/#part-3-publish-your-smart-contract-to-etherscan-part-3-publish-your-smart-contract-to-etherscan) పూర్తి చేస్తే Etherscanలో రెండూ కనుగొనవచ్చు. + +#### Etherscan నుండి మీ కాంట్రాక్ట్ ABIని ఎలా పొందాలి {#how-to-get-your-contract-abi-from-etherscan} + +మీరు ఈ ట్యుటోరియల్ యొక్క 3వ భాగాన్ని దాటవేస్తే, మీరు HelloWorld కాంట్రాక్టును చిరునామా [0x6f3f635A9762B47954229Ea479b4541eAF402A6A](https://goerli.etherscan.io/address/0x6f3f635a9762b47954229ea479b4541eaf402a6a#code) తో ఉపయోగించవచ్చు. దాని ABI [ఇక్కడ](https://goerli.etherscan.io/address/0x6f3f635a9762b47954229ea479b4541eaf402a6a#code) కనుగొనవచ్చు. + +ఒక కాంట్రాక్ట్ ఏ ఫంక్షన్‌ను పిలుస్తుందో పేర్కొనడానికి మరియు ఫంక్షన్ మీరు ఆశిస్తున్న ఫార్మాట్‌లో డేటాను తిరిగి ఇస్తుందని నిర్ధారించుకోవడానికి ఒక కాంట్రాక్ట్ ABI అవసరం. మేము మా కాంట్రాక్ట్ ABIని కాపీ చేసిన తర్వాత, దానిని మీ `src` డైరెక్టరీలో `contract-abi.json` అనే JSON ఫైల్‌గా సేవ్ చేద్దాం. + +మీ contract-abi.json మీ src ఫోల్డర్‌లో నిల్వ చేయబడాలి. + +మా కాంట్రాక్ట్ చిరునామా, ABI మరియు ఆల్కెమీ Web3 ఎండ్‌పాయింట్‌తో సన్నద్ధమై, మా స్మార్ట్ కాంట్రాక్ట్ యొక్క ఉదాహరణను లోడ్ చేయడానికి మేము [కాంట్రాక్ట్ పద్ధతిని](https://docs.web3js.org/api/web3-eth-contract/class/Contract) ఉపయోగించవచ్చు. మీ కాంట్రాక్ట్ ABI ని `interact.js` ఫైల్‌లోకి దిగుమతి చేసుకోండి మరియు మీ కాంట్రాక్ట్ చిరునామాను జోడించండి. + +```javascript +// interact.js + +const contractABI = require("../contract-abi.json") +const contractAddress = "0x6f3f635A9762B47954229Ea479b4541eAF402A6A" +``` + +మేము ఇప్పుడు చివరకు మా `helloWorldContract` వేరియబుల్‌ను అన్‌కామెంట్ చేసి, మా AlchemyWeb3 ఎండ్‌పాయింట్‌ని ఉపయోగించి స్మార్ట్ కాంట్రాక్టును లోడ్ చేయవచ్చు: + +```javascript +// interact.js +export const helloWorldContract = new web3.eth.Contract( + contractABI, + contractAddress +) +``` + +పునరావృతం చేయడానికి, మీ `interact.js` యొక్క మొదటి 12 లైన్‌లు ఇప్పుడు ఈ విధంగా కనిపించాలి: + +```javascript +// interact.js + +require("dotenv").config() +const alchemyKey = process.env.REACT_APP_ALCHEMY_KEY +const { createAlchemyWeb3 } = require("@alch/alchemy-web3") +const web3 = createAlchemyWeb3(alchemyKey) + +const contractABI = require("../contract-abi.json") +const contractAddress = "0x6f3f635A9762B47954229Ea479b4541eAF402A6A" + +export const helloWorldContract = new web3.eth.Contract( + contractABI, + contractAddress +) +``` + +ఇప్పుడు మేము మా కాంట్రాక్ట్ లోడ్ చేశాము, మేము మా `loadCurrentMessage` ఫంక్షన్‌ను అమలు చేయవచ్చు! + +#### మీ `interact.js` ఫైల్‌లో `loadCurrentMessage` అమలు చేయడం {#implementing-loadCurrentMessage-in-your-interact-js-file} + +ఈ ఫంక్షన్ చాలా సులభం. మేము మా కాంట్రాక్టు నుండి చదవడానికి ఒక సాధారణ అసమకాలిక web3 కాల్ చేయబోతున్నాము. మా ఫంక్షన్ స్మార్ట్ కాంట్రాక్టులో నిల్వ చేసిన సందేశాన్ని తిరిగి ఇస్తుంది: + +మీ `interact.js` ఫైల్‌లో `loadCurrentMessage` ని క్రిందికి నవీకరించండి: + +```javascript +// interact.js + +export const loadCurrentMessage = async () => { + const message = await helloWorldContract.methods.message().call() + return message +} +``` + +మేము ఈ స్మార్ట్ కాంట్రాక్టును మా UI లో ప్రదర్శించాలనుకుంటున్నందున, `HelloWorld.js` కాంపోనెంట్‌లోని `useEffect` ఫంక్షన్‌ను క్రిందికి నవీకరిద్దాం: + +```javascript +// HelloWorld.js + +//కేవలం ఒకసారి పిలువబడుతుంది +useEffect(async () => { + const message = await loadCurrentMessage() + setMessage(message) +}, []) +``` + +గమనించండి, కాంపోనెంట్ యొక్క మొదటి రెండర్ సమయంలో మా `loadCurrentMessage` కేవలం ఒకసారి పిలువబడాలని మేము కోరుకుంటున్నాము. స్మార్ట్ కాంట్రాక్టులో సందేశం మారిన తర్వాత UIని స్వయంచాలకంగా నవీకరించడానికి మేము త్వరలో `addSmartContractListener`ని అమలు చేస్తాము. + +మేము మా శ్రోతలోకి ప్రవేశించే ముందు, ఇప్పటివరకు మా వద్ద ఉన్నదాన్ని చూద్దాం! మీ `HelloWorld.js` మరియు `interact.js` ఫైల్‌లను సేవ్ చేసి, ఆపై [http://localhost:3000/](http://localhost:3000/) కి వెళ్లండి + +ప్రస్తుత సందేశం ఇకపై "నెట్‌వర్క్‌కు కనెక్షన్ లేదు" అని చెప్పదని మీరు గమనించవచ్చు. బదులుగా ఇది స్మార్ట్ కాంట్రాక్టులో నిల్వ చేసిన సందేశాన్ని ప్రతిబింబిస్తుంది. అద్భుతం! + +#### మీ UI ఇప్పుడు స్మార్ట్ కాంట్రాక్టులో నిల్వ చేసిన సందేశాన్ని ప్రతిబింబించాలి {#your-UI-should-now-reflect-the-message-stored-in-the-smart-contract} + +ఇప్పుడు ఆ శ్రోత గురించి మాట్లాడుతూ... + +#### `addSmartContractListener` అమలు చేయండి {#implement-addsmartcontractlistener} + +ఈ ట్యుటోరియల్ సిరీస్‌లోని [భాగం 1లో](https://docs.alchemy.com/alchemy/tutorials/hello-world-smart-contract#step-10-write-our-contract) మేము వ్రాసిన `HelloWorld.sol` ఫైల్‌ను మీరు తిరిగి ఆలోచిస్తే, మా స్మార్ట్ కాంట్రాక్ట్ యొక్క `నవీకరణ` ఫంక్షన్ పిలవబడిన తర్వాత `UpdatedMessages` అనే స్మార్ట్ కాంట్రాక్ట్ ఈవెంట్ విడుదల చేయబడుతుందని మీరు గుర్తుంచుకుంటారు (9 మరియు 27 లైన్‌లు చూడండి): + +```javascript +// HelloWorld.sol + +// సాలిడిటీ యొక్క సంస్కరణను, సెమాంటిక్ వర్షనింగ్‌ని ఉపయోగించి నిర్దేశిస్తుంది. +// మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma +pragma solidity ^0.7.3; + +// 'HelloWorld' పేరుతో ఒక కాంట్రాక్టును నిర్వచిస్తుంది. +// ఒక కాంట్రాక్టు అనేది ఫంక్షన్‌లు మరియు డేటా (దాని స్థితి) యొక్క సేకరణ. ఒకసారి అమలు చేసిన తర్వాత, ఒక కాంట్రాక్టు ఇథీరియం బ్లాక్‌చెయిన్‌లో ఒక నిర్దిష్ట చిరునామాలో నివసిస్తుంది. మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html +contract HelloWorld { + + //నవీకరణ ఫంక్షన్ పిలిచినప్పుడు విడుదల చేయబడుతుంది + //స్మార్ట్ కాంట్రాక్ట్ ఈవెంట్‌లు మీ కాంట్రాక్ట్ కోసం బ్లాక్‌చెయిన్‌లో ఏదో జరిగిందని మీ యాప్ ఫ్రంట్-ఎండ్‌కు కమ్యూనికేట్ చేయడానికి ఒక మార్గం, ఇది నిర్దిష్ట ఈవెంట్‌ల కోసం 'వినడం' మరియు అవి జరిగినప్పుడు చర్య తీసుకోవచ్చు. + event UpdatedMessages(string oldStr, string newStr); + + // `string` రకానికి చెందిన `message` అనే స్థితి వేరియబుల్‌ను ప్రకటిస్తుంది. + // స్టేట్ వేరియబుల్స్ అనేవి కాంట్రాక్ట్ నిల్వలో వాటి విలువలు శాశ్వతంగా నిల్వ చేయబడిన వేరియబుల్స్. `public` కీవర్డ్ వేరియబుల్స్‌ను కాంట్రాక్ట్ వెలుపల నుండి అందుబాటులో ఉండేలా చేస్తుంది మరియు ఇతర కాంట్రాక్ట్‌లు లేదా క్లయింట్లు విలువను యాక్సెస్ చేయడానికి పిలవగల ఫంక్షన్‌ను సృష్టిస్తుంది. + string public message; + + // అనేక తరగతి-ఆధారిత వస్తువు-ఆధారిత భాషల మాదిరిగానే, కన్‌స్ట్రక్టర్ అనేది కాంట్రాక్ట్ సృష్టిపై మాత్రమే అమలు చేయబడే ఒక ప్రత్యేక ఫంక్షన్. + // కాంట్రాక్ట్ యొక్క డేటాను ప్రారంభించడానికి కన్‌స్ట్రక్టర్లు ఉపయోగించబడతాయి. మరింత తెలుసుకోండి:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors + constructor(string memory initMessage) { + + // స్ట్రింగ్ ఆర్గ్యుమెంట్ `initMessage`ని అంగీకరించి, విలువను కాంట్రాక్ట్ యొక్క `message` నిల్వ వేరియబుల్‌లోకి సెట్ చేస్తుంది). + message = initMessage; + } + + // ఒక స్ట్రింగ్ ఆర్గ్యుమెంట్‌ను అంగీకరించి, `message` నిల్వ వేరియబుల్‌ను నవీకరించే ఒక పబ్లిక్ ఫంక్షన్. + function update(string memory newMessage) public { + string memory oldMsg = message; + message = newMessage; + emit UpdatedMessages(oldMsg, newMessage); + } +} +``` + +స్మార్ట్ కాంట్రాక్ట్ ఈవెంట్‌లు మీ కాంట్రాక్ట్ కోసం బ్లాక్‌చెయిన్‌లో ఏదో జరిగిందని (అంటే, ఒక _ఈవెంట్_ జరిగింది) మీ ఫ్రంట్-ఎండ్ అప్లికేషన్‌కు కమ్యూనికేట్ చేయడానికి ఒక మార్గం, ఇది నిర్దిష్ట ఈవెంట్‌ల కోసం 'వినడం' మరియు అవి జరిగినప్పుడు చర్య తీసుకోవచ్చు. + +`addSmartContractListener` ఫంక్షన్ ప్రత్యేకంగా మా హలో వరల్డ్ స్మార్ట్ కాంట్రాక్ట్ యొక్క `UpdatedMessages` ఈవెంట్ కోసం వింటుంది, మరియు కొత్త సందేశాన్ని ప్రదర్శించడానికి మా UI ని నవీకరిస్తుంది. + +`addSmartContractListener` ని క్రిందికి సవరించండి: + +```javascript +// HelloWorld.js + +function addSmartContractListener() { + helloWorldContract.events.UpdatedMessages({}, (error, data) => { + if (error) { + setStatus("😥 " + error.message) + } else { + setMessage(data.returnValues[1]) + setNewMessage("") + setStatus("🎉 మీ సందేశం నవీకరించబడింది!") + } + }) +} +``` + +శ్రోత ఒక ఈవెంట్‌ను గుర్తించినప్పుడు ఏమి జరుగుతుందో విడదీద్దాం: + +- ఈవెంట్ విడుదలైనప్పుడు ఒక లోపం సంభవిస్తే, అది మా `స్థితి` స్థితి వేరియబుల్ ద్వారా UI లో ప్రతిబింబిస్తుంది. +- లేకపోతే, మేము తిరిగి వచ్చిన `డేటా` ఆబ్జెక్ట్‌ను ఉపయోగిస్తాము. `data.returnValues` అనేది సున్నా వద్ద సూచించబడిన ఒక శ్రేణి, ఇక్కడ శ్రేణిలోని మొదటి మూలకం మునుపటి సందేశాన్ని నిల్వ చేస్తుంది మరియు రెండవ మూలకం నవీకరించబడిన దానిని నిల్వ చేస్తుంది. మొత్తంగా, విజయవంతమైన ఈవెంట్‌లో మేము మా `సందేశం` స్ట్రింగ్‌ను నవీకరించబడిన సందేశానికి సెట్ చేస్తాము, `కొత్తసందేశం` స్ట్రింగ్‌ను క్లియర్ చేస్తాము మరియు మా స్మార్ట్ కాంట్రాక్టులో కొత్త సందేశం ప్రచురించబడిందని ప్రతిబింబించడానికి మా `స్థితి` స్థితి వేరియబుల్‌ను నవీకరిస్తాము. + +చివరగా, `HelloWorld.js` కాంపోనెంట్ యొక్క మొదటి రెండర్‌లో ఇది ప్రారంభించబడటానికి మా `useEffect` ఫంక్షన్‌లో మా శ్రోతను పిలుద్దాం. మొత్తంగా, మీ `useEffect` ఫంక్షన్ ఈ విధంగా కనిపించాలి: + +```javascript +// HelloWorld.js + +useEffect(async () => { + const message = await loadCurrentMessage() + setMessage(message) + addSmartContractListener() +}, []) +``` + +ఇప్పుడు మనం మన స్మార్ట్ కాంట్రాక్టు నుండి చదవగలుగుతున్నాము, దానికి ఎలా వ్రాయాలో కూడా తెలుసుకోవడం చాలా బాగుంటుంది! అయితే, మా డాప్‌కు వ్రాయడానికి, మేము ముందుగా దానికి కనెక్ట్ చేయబడిన ఇథీరియం వాలెట్‌ను కలిగి ఉండాలి. + +కాబట్టి, తరువాత మేము మా ఇథీరియం వాలెట్‌ను (మెటామాస్క్) సెటప్ చేయడం మరియు దానిని మా డాప్‌కు కనెక్ట్ చేయడం గురించి చర్చిస్తాము! + +### దశ 4: మీ ఇథీరియం వాలెట్‌ను సెటప్ చేయండి {#step-4-set-up-your-ethereum-wallet} + +ఇథీరియం చైన్‌పై ఏదైనా వ్రాయడానికి, వినియోగదారులు తమ వర్చువల్ వాలెట్ యొక్క ప్రైవేట్ కీలను ఉపయోగించి లావాదేవీలపై సంతకం చేయాలి. ఈ ట్యుటోరియల్ కోసం, మేము [మెటామాస్క్‌ను](https://metamask.io/) ఉపయోగిస్తాము, ఇది మీ ఇథీరియం ఖాతా చిరునామాను నిర్వహించడానికి ఉపయోగించే బ్రౌజర్‌లోని ఒక వర్చువల్ వాలెట్, ఎందుకంటే ఇది తుది-వినియోగదారు కోసం ఈ లావాదేవీ సంతకాన్ని చాలా సులభం చేస్తుంది. + +ఇతీరియములో లావాదేవీలు ఎలా పనిచేస్తాయో మీరు మరింత అర్థం చేసుకోవాలనుకుంటే, ఇతీరియము ఫౌండేషన్ నుండి [ఈ పేజీ](/developers/docs/transactions/)ని చూడండి. + +#### MetaMaskను డౌన్‌లోడ్ చేయండి {#download-metamask} + +మీరు [ఇక్కడ](https://metamask.io/download) ఉచితంగా MetaMask అకౌంట్‌ను డౌన్‌లోడ్ చేసి, సృష్టించవచ్చు. మీరు ఖాతాను సృష్టించేటప్పుడు, లేదా మీకు ఇప్పటికే ఖాతా ఉంటే, కుడివైపు ఎగువన ఉన్న “గోర్లీ టెస్ట్ నెట్‌వర్క్”కు మారినట్లు నిర్ధారించుకోండి (అలాగే మనం నిజమైన డబ్బుతో వ్యవహరించడం లేదు). + +#### ఒక ఫాసెట్ నుండి ఈథర్‌ను జోడించండి {#add-ether-from-a-faucet} + +ఇథీరియం బ్లాక్‌చెయిన్‌లో ఒక లావాదేవీపై సంతకం చేయడానికి, మాకు కొంత నకిలీ Eth అవసరం. Eth పొందడానికి మీరు [FaucETH](https://fauceth.komputing.org) కు వెళ్లి, మీ Goerli ఖాతా చిరునామాను నమోదు చేసి, “నిధులను అభ్యర్థించు” క్లిక్ చేసి, ఆపై డ్రాప్‌డౌన్‌లో “Ethereum Testnet Goerli” ని ఎంచుకుని, చివరగా “నిధులను అభ్యర్థించు” బటన్‌ను మళ్లీ క్లిక్ చేయండి. త్వరలోనే మీ MetaMask ఖాతాలో Eth కనిపించాలి! + +#### మీ బ్యాలెన్స్‌ను తనిఖీ చేయండి {#check-your-balance} + +మా బ్యాలెన్స్ అక్కడ ఉందని నిర్ధారించుకోవడానికి, [Alchemy యొక్క కంపోజర్ సాధనాన్ని](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D) ఉపయోగించి ఒక [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) అభ్యర్థన చేద్దాం. ఇది మా వాలెట్‌లోని Eth మొత్తాన్ని తిరిగి ఇస్తుంది. మీరు మీ MetaMask అకౌంట్ చిరునామాను ఇన్‌పుట్ చేసి, “అభ్యర్థన పంపు” క్లిక్ చేసిన తర్వాత, మీరు ఇలాంటి ప్రతిస్పందనను చూడాలి: + +```text +{"jsonrpc": "2.0", "id": 0, "result": "0xde0b6b3a7640000"} +``` + +**గమనిక:** ఈ ఫలితం weiలో ఉంది, ethలో కాదు. ఈథర్ యొక్క అతి చిన్న ప్రమాణంగా వీని ఉపయోగిస్తారు. wei నుండి ethకి మార్పిడి: 1 eth = 10¹⁸ wei. కాబట్టి మనం 0xde0b6b3a7640000 ను దశాంశానికి మార్చితే మనకు 1\*10¹⁸ వస్తుంది, ఇది 1 ethకి సమానం. + +అమ్మయ్య! మా నకిలీ డబ్బు అంతా అక్కడే ఉంది! 🤑 + +### దశ 5: మీ UI కి మెటామాస్క్‌ను కనెక్ట్ చేయండి {#step-5-connect-metamask-to-your-UI} + +ఇప్పుడు మా MetaMask వాలెట్ సెటప్ చేయబడింది, మా డాప్‌ను దానికి కనెక్ట్ చేద్దాం! + +#### `connectWallet` ఫంక్షన్ {#the-connectWallet-function} + +మా `interact.js` ఫైల్‌లో, `connectWallet` ఫంక్షన్‌ను అమలు చేద్దాం, దీనిని మనం మా `HelloWorld.js` కాంపోనెంట్‌లో పిలవవచ్చు. + +`connectWallet` ని క్రిందికి సవరించండి: + +```javascript +// interact.js + +export const connectWallet = async () => { + if (window.ethereum) { + try { + const addressArray = await window.ethereum.request({ + method: "eth_requestAccounts", + }) + const obj = { + status: "👆🏽 పైన ఉన్న టెక్స్ట్-ఫీల్డ్‌లో ఒక సందేశాన్ని వ్రాయండి.", + address: addressArray[0], + } + return obj + } catch (err) { + return { + address: "", + status: "😥 " + err.message, + } + } + } else { + return { + address: "", + status: ( + +

+ {" "} + 🦊 + మీరు మీ బ్రౌజర్‌లో వర్చువల్ ఇథీరియం వాలెట్ అయిన మెటామాస్క్‌ను ఇన్‌స్టాల్ చేయాలి. + +

+
+ ), + } + } +} +``` + +ఈ భారీ కోడ్ బ్లాక్ ఖచ్చితంగా ఏమి చేస్తుంది? + +ముందుగా, ఇది మీ బ్రౌజర్‌లో `window.ethereum` ప్రారంభించబడిందో లేదో తనిఖీ చేస్తుంది. + +`window.ethereum` అనేది MetaMask మరియు ఇతర వాలెట్ ప్రొవైడర్‌ల ద్వారా ఇంజెక్ట్ చేయబడిన గ్లోబల్ API, ఇది వెబ్‌సైట్‌లు వినియోగదారుల Ethereum ఖాతాలను అభ్యర్థించడానికి అనుమతిస్తుంది. ఆమోదించబడితే, ఇది వినియోగదారు కనెక్ట్ చేయబడిన బ్లాక్‌చెయిన్‌ల నుండి డేటాను చదవగలదు, మరియు వినియోగదారు సందేశాలు మరియు లావాదేవీలపై సంతకం చేయమని సూచించగలదు. మరింత సమాచారం కోసం [MetaMask డాక్స్](https://docs.metamask.io/guide/ethereum-provider.html#table-of-contents) చూడండి! + +`window.ethereum` _ఉండకపోతే_, అప్పుడు MetaMask ఇన్‌స్టాల్ చేయబడలేదని అర్థం. దీని ఫలితంగా ఒక JSON వస్తువు తిరిగి వస్తుంది, ఇక్కడ `address` తిరిగి వచ్చినది ఖాళీ స్ట్రింగ్, మరియు `status` JSX వస్తువు వినియోగదారుడు MetaMaskను ఇన్‌స్టాల్ చేయాలని తెలియజేస్తుంది. + +ఇప్పుడు `window.ethereum` _ఉంటే_, అప్పుడు విషయాలు ఆసక్తికరంగా మారతాయి. + +ఒక try/catch లూప్‌ను ఉపయోగించి, మేము [`window.ethereum.request({ method: "eth_requestAccounts" });`](https://docs.metamask.io/guide/rpc-api.html#eth-requestaccounts) కాల్ చేయడం ద్వారా MetaMaskకు కనెక్ట్ చేయడానికి ప్రయత్నిస్తాము. ఈ ఫంక్షన్‌ను కాల్ చేయడం వలన బ్రౌజర్‌లో MetaMask తెరుచుకుంటుంది, దీని ద్వారా వినియోగదారుడు తమ వాలెట్‌ను మీ డాప్‌కు కనెక్ట్ చేయమని ప్రాంప్ట్ చేయబడతారు. + +- వినియోగదారు కనెక్ట్ చేయడానికి ఎంచుకుంటే, `method: "eth_requestAccounts"` డాప్‌కు కనెక్ట్ చేయబడిన వినియోగదారు యొక్క అన్ని ఖాతా చిరునామాలను కలిగి ఉన్న ఒక శ్రేణిని తిరిగి ఇస్తుంది. మొత్తం మీద, మా `connectWallet` ఫంక్షన్ ఈ శ్రేణిలోని _మొదటి_ `address` (9వ పంక్తిని చూడండి) మరియు స్మార్ట్ కాంట్రాక్ట్‌కు ఒక సందేశం వ్రాయమని వినియోగదారుడిని ప్రాంప్ట్ చేసే ఒక `status` సందేశాన్ని కలిగి ఉన్న ఒక JSON వస్తువును తిరిగి ఇస్తుంది. +- వినియోగదారుడు కనెక్షన్‌ను తిరస్కరిస్తే, అప్పుడు JSON వస్తువు తిరిగి వచ్చిన `address` కోసం ఖాళీ స్ట్రింగ్‌ను మరియు వినియోగదారుడు కనెక్షన్‌ను తిరస్కరించినట్లు ప్రతిబింబించే ఒక `status` సందేశాన్ని కలిగి ఉంటుంది. + +ఇప్పుడు మేము ఈ `connectWallet` ఫంక్షన్‌ను వ్రాసాము, తదుపరి దశ దానిని మా `HelloWorld.js` కాంపోనెంట్‌కు పిలవడం. + +#### `connectWallet` ఫంక్షన్‌ను మీ `HelloWorld.js` UI కాంపోనెంట్‌కు జోడించండి {#add-the-connectWallet-function-to-your-HelloWorld-js-ui-component} + +`HelloWorld.js`లోని `connectWalletPressed` ఫంక్షన్‌కు నావిగేట్ చేసి, దానిని క్రిందికి నవీకరించండి: + +```javascript +// HelloWorld.js + +const connectWalletPressed = async () => { + const walletResponse = await connectWallet() + setStatus(walletResponse.status) + setWallet(walletResponse.address) +} +``` + +మా `interact.js` ఫైల్ నుండి మా `HelloWorld.js` కాంపోనెంట్ నుండి మా కార్యాచరణలో ఎక్కువ భాగం ఎలా నైరూప్యీకరించబడిందో గమనించారా? ఇది మేము M-V-C పారడైమ్‌కు కట్టుబడి ఉండటానికి! + +`connectWalletPressed`లో, మేము కేవలం మా దిగుమతి చేసుకున్న `connectWallet` ఫంక్షన్‌కు ఒక await కాల్ చేస్తాము, మరియు దాని ప్రతిస్పందనను ఉపయోగించి, మేము మా `status` మరియు `walletAddress` వేరియబుల్స్‌ను వాటి స్టేట్ హుక్స్ ద్వారా అప్‌డేట్ చేస్తాము. + +ఇప్పుడు, రెండు ఫైల్‌లను సేవ్ చేద్దాం (`HelloWorld.js` మరియు `interact.js`) మరియు ఇప్పటివరకు మా UI ని పరీక్షిద్దాం. + +పేజీ యొక్క కుడివైపు ఎగువన ఉన్న [http://localhost:3000/](http://localhost:3000/) పేజీలో మీ బ్రౌజర్‌ను తెరిచి, "వాలెట్ కనెక్ట్ చేయి" బటన్‌ను నొక్కండి. + +మీరు MetaMaskను ఇన్‌స్టాల్ చేసి ఉంటే, మీ వాలెట్‌ను మీ డాప్‌కు కనెక్ట్ చేయమని మిమ్మల్ని ప్రాంప్ట్ చేయాలి. కనెక్ట్ చేయడానికి ఆహ్వానాన్ని అంగీకరించండి. + +వాలెట్ బటన్ ఇప్పుడు మీ చిరునామా కనెక్ట్ చేయబడిందని ప్రతిబింబిస్తుందని మీరు చూడాలి! యాస్స్స్స్స్ 🔥 + +తరువాత, పేజీని రిఫ్రెష్ చేయడానికి ప్రయత్నించండి... ఇది వింతగా ఉంది. మా వాలెట్ బటన్ MetaMaskను కనెక్ట్ చేయమని మమ్మల్ని ప్రాంప్ట్ చేస్తోంది, అది ఇప్పటికే కనెక్ట్ చేయబడి ఉన్నప్పటికీ... + +అయితే, భయపడవద్దు! మేము దానిని సులభంగా పరిష్కరించగలము (అర్థమైందా?) `getCurrentWalletConnected`ను అమలు చేయడం ద్వారా, ఇది ఒక చిరునామా మా డాప్‌కు ఇప్పటికే కనెక్ట్ చేయబడిందో లేదో తనిఖీ చేసి, మా UI ని తదనుగుణంగా నవీకరిస్తుంది! + +#### `getCurrentWalletConnected` ఫంక్షన్ {#the-getcurrentwalletconnected-function} + +`interact.js` ఫైల్‌లోని మీ `getCurrentWalletConnected` ఫంక్షన్‌ను క్రిందికి నవీకరించండి: + +```javascript +// interact.js + +export const getCurrentWalletConnected = async () => { + if (window.ethereum) { + try { + const addressArray = await window.ethereum.request({ + method: "eth_accounts", + }) + if (addressArray.length > 0) { + return { + address: addressArray[0], + status: "👆🏽 పైన ఉన్న టెక్స్ట్-ఫీల్డ్‌లో ఒక సందేశాన్ని వ్రాయండి.", + } + } else { + return { + address: "", + status: "🦊 కుడివైపు ఎగువన ఉన్న బటన్‌ని ఉపయోగించి మెటామాస్క్‌కు కనెక్ట్ అవ్వండి.", + } + } + } catch (err) { + return { + address: "", + status: "😥 " + err.message, + } + } + } else { + return { + address: "", + status: ( + +

+ {" "} + 🦊 + మీరు మీ బ్రౌజర్‌లో వర్చువల్ ఇథీరియం వాలెట్ అయిన మెటామాస్క్‌ను ఇన్‌స్టాల్ చేయాలి. + +

+
+ ), + } + } +} +``` + +ఈ కోడ్ మునుపటి దశలో మేము వ్రాసిన `connectWallet` ఫంక్షన్‌కు _చాలా_ పోలి ఉంటుంది. + +ప్రధాన వ్యత్యాసం ఏమిటంటే, ఇక్కడ మేము `eth_requestAccounts` పద్ధతిని కాల్ చేయడానికి బదులుగా, ఇది వినియోగదారుడు తమ వాలెట్‌ను కనెక్ట్ చేయడానికి MetaMaskను తెరుస్తుంది, ఇక్కడ మేము `eth_accounts` పద్ధతిని కాల్ చేస్తాము, ఇది కేవలం మా డాప్‌కు ప్రస్తుతం కనెక్ట్ చేయబడిన MetaMask చిరునామాలను కలిగి ఉన్న ఒక శ్రేణిని తిరిగి ఇస్తుంది. + +ఈ ఫంక్షన్‌ను చర్యలో చూడటానికి, దానిని మా `HelloWorld.js` కాంపోనెంట్ యొక్క `useEffect` ఫంక్షన్‌లో పిలుద్దాం: + +```javascript +// HelloWorld.js + +useEffect(async () => { + const message = await loadCurrentMessage() + setMessage(message) + addSmartContractListener() + + const { address, status } = await getCurrentWalletConnected() + setWallet(address) + setStatus(status) +}, []) +``` + +గమనించండి, మేము మా `walletAddress` మరియు `status` స్టేట్ వేరియబుల్స్‌ను అప్‌డేట్ చేయడానికి మా `getCurrentWalletConnected` కాల్ యొక్క ప్రతిస్పందనను ఉపయోగిస్తాము. + +ఇప్పుడు మీరు ఈ కోడ్‌ను జోడించారు, మా బ్రౌజర్ విండోను రిఫ్రెష్ చేయడానికి ప్రయత్నిద్దాం. + +అద్భుతం! బటన్ మీరు కనెక్ట్ అయ్యారని చెప్పాలి, మరియు మీరు రిఫ్రెష్ చేసిన తర్వాత కూడా మీ కనెక్ట్ చేయబడిన వాలెట్ చిరునామా యొక్క ప్రివ్యూను చూపాలి! + +#### `addWalletListener` అమలు చేయండి {#implement-addwalletlistener} + +మా డాప్ వాలెట్ సెటప్‌లో చివరి దశ వాలెట్ లిజనర్‌ను అమలు చేయడం, తద్వారా మా వాలెట్ స్టేట్ మారినప్పుడు, ఉదాహరణకు వినియోగదారుడు డిస్‌కనెక్ట్ చేసినప్పుడు లేదా ఖాతాలను మార్చినప్పుడు మా UI అప్‌డేట్ అవుతుంది. + +మీ `HelloWorld.js` ఫైల్‌లో, మీ `addWalletListener` ఫంక్షన్‌ను క్రింది విధంగా సవరించండి: + +```javascript +// HelloWorld.js + +function addWalletListener() { + if (window.ethereum) { + window.ethereum.on("accountsChanged", (accounts) => { + if (accounts.length > 0) { + setWallet(accounts[0]) + setStatus("👆🏽 పైన ఉన్న టెక్స్ట్-ఫీల్డ్‌లో ఒక సందేశాన్ని వ్రాయండి.") + } else { + setWallet("") + setStatus("🦊 కుడివైపు ఎగువన ఉన్న బటన్‌ని ఉపయోగించి మెటామాస్క్‌కు కనెక్ట్ అవ్వండి.") + } + }) + } else { + setStatus( +

+ {" "} + 🦊 + మీరు మీ బ్రౌజర్‌లో వర్చువల్ ఇథీరియం వాలెట్ అయిన మెటామాస్క్‌ను ఇన్‌స్టాల్ చేయాలి. + +

+ ) + } +} +``` + +ఈ సమయంలో ఇక్కడ ఏమి జరుగుతుందో అర్థం చేసుకోవడానికి మీకు మా సహాయం కూడా అవసరం లేదని నేను పందెం వేస్తున్నాను, కానీ సంపూర్ణత ప్రయోజనాల కోసం, దానిని త్వరగా విడదీద్దాం: + +- మొదట, మా ఫంక్షన్ `window.ethereum` ప్రారంభించబడిందో లేదో తనిఖీ చేస్తుంది (అనగా, MetaMask ఇన్‌స్టాల్ చేయబడింది). + - అది కాకపోతే, మేము కేవలం మా `status` స్టేట్ వేరియబుల్‌ను వినియోగదారుడిని MetaMaskను ఇన్‌స్టాల్ చేయమని ప్రాంప్ట్ చేసే ఒక JSX స్ట్రింగ్‌కు సెట్ చేస్తాము. + - అది ప్రారంభించబడితే, మేము 3వ పంక్తిలో `window.ethereum.on("accountsChanged")` లిజనర్‌ను సెట్ చేస్తాము, ఇది MetaMask వాలెట్‌లోని స్టేట్ మార్పులను వింటుంది, ఇందులో వినియోగదారుడు డాప్‌కు అదనపు ఖాతాను కనెక్ట్ చేసినప్పుడు, ఖాతాలను మార్చినప్పుడు, లేదా ఒక ఖాతాను డిస్‌కనెక్ట్ చేసినప్పుడు ఉంటాయి. కనీసం ఒక ఖాతా కనెక్ట్ చేయబడి ఉంటే, `walletAddress` స్టేట్ వేరియబుల్ లిజనర్ ద్వారా తిరిగి వచ్చిన `accounts` శ్రేణిలోని మొదటి ఖాతాగా అప్‌డేట్ చేయబడుతుంది. లేకపోతే, `walletAddress` ఖాళీ స్ట్రింగ్‌గా సెట్ చేయబడుతుంది. + +చివరగా, మేము దానిని మా `useEffect` ఫంక్షన్‌లో పిలవాలి: + +```javascript +// HelloWorld.js + +useEffect(async () => { + const message = await loadCurrentMessage() + setMessage(message) + addSmartContractListener() + + const { address, status } = await getCurrentWalletConnected() + setWallet(address) + setStatus(status) + + addWalletListener() +}, []) +``` + +అంతే! మేము మా వాలెట్ కార్యాచరణను విజయవంతంగా పూర్తి చేసాము! ఇప్పుడు మా చివరి పనికి: మా స్మార్ట్ కాంట్రాక్టులో నిల్వ చేసిన సందేశాన్ని నవీకరించడం! + +### దశ 6: `updateMessage` ఫంక్షన్‌ను అమలు చేయండి {#step-6-implement-the-updateMessage-function} + +అలాగే మిత్రులారా, మేము చివరి దశకు చేరుకున్నాము! మీ `interact.js` ఫైల్ యొక్క `updateMessage` లో, మేము ఈ క్రిందివి చేయబోతున్నాము: + +1. మేము మా స్మార్ట్ కాంటాక్టులో ప్రచురించాలనుకుంటున్న సందేశం చెల్లుబాటు అయ్యేదని నిర్ధారించుకోండి +2. మెటామాస్క్ ఉపయోగించి మా లావాదేవీపై సంతకం చేయండి +3. మా `HelloWorld.js` ఫ్రంటెండ్ కాంపోనెంట్ నుండి ఈ ఫంక్షన్‌ను పిలవండి + +దీనికి ఎక్కువ సమయం పట్టదు; ఈ డాప్‌ను పూర్తి చేద్దాం! + +#### ఇన్‌పుట్ దోష నిర్వహణ {#input-error-handling} + +సహజంగానే, ఫంక్షన్ ప్రారంభంలో కొంత రకమైన ఇన్‌పుట్ లోపం నిర్వహణ ఉండటం అర్ధమే. + +మెటామాస్క్ పొడిగింపు ఇన్‌స్టాల్ చేయకపోతే, వాలెట్ కనెక్ట్ చేయకపోతే (అంటే, పంపిన `చిరునామా` ఖాళీ స్ట్రింగ్ అయితే), లేదా `సందేశం` ఖాళీ స్ట్రింగ్ అయితే మా ఫంక్షన్ ముందుగానే తిరిగి రావాలని మేము కోరుకుంటాము. `updateMessage` కు క్రింది లోపం నిర్వహణను జోడిద్దాం: + +```javascript +// interact.js + +export const updateMessage = async (address, message) => { + if (!window.ethereum || address === null) { + return { + status: + "💡 బ్లాక్‌చెయిన్‌లో సందేశాన్ని నవీకరించడానికి మీ మెటామాస్క్ వాలెట్‌ను కనెక్ట్ చేయండి.", + } + } + + if (message.trim() === "") { + return { + status: "❌ మీ సందేశం ఖాళీ స్ట్రింగ్ కాకూడదు.", + } + } +} +``` + +ఇప్పుడు దానికి సరైన ఇన్‌పుట్ లోపం నిర్వహణ ఉంది, మెటామాస్క్ ద్వారా లావాదేవీపై సంతకం చేసే సమయం వచ్చింది! + +#### మా లావాదేవీపై సంతకం చేయడం {#signing-our-transaction} + +మీరు ఇప్పటికే సాంప్రదాయ web3 ఇథీరియం లావాదేవీలతో సౌకర్యవంతంగా ఉంటే, మేము తరువాత వ్రాసే కోడ్ చాలా సుపరిచితంగా ఉంటుంది. మీ ఇన్‌పుట్ లోపం నిర్వహణ కోడ్ క్రింద, `updateMessage` కు క్రింది వాటిని జోడించండి: + +```javascript +// interact.js + +//లావాదేవీ పారామితులను సెటప్ చేయండి +const transactionParameters = { + to: contractAddress, // కాంట్రాక్ట్ ప్రచురణల సమయంలో తప్ప అవసరం. + from: address, // వినియోగదారు యొక్క క్రియాశీల చిరునామాతో సరిపోలాలి. + data: helloWorldContract.methods.update(message).encodeABI(), +} + +//లావాదేవీపై సంతకం చేయండి +try { + const txHash = await window.ethereum.request({ + method: "eth_sendTransaction", + params: [transactionParameters], + }) + return { + status: ( + + ✅{" "} + + Etherscanలో మీ లావాదేవీ స్థితిని వీక్షించండి! + +
+ ℹ️ నెట్‌వర్క్ ద్వారా లావాదేవీ ధృవీకరించబడిన తర్వాత, సందేశం స్వయంచాలకంగా నవీకరించబడుతుంది. +
+ ), + } +} catch (error) { + return { + status: "😥 " + error.message, + } +} +``` + +ఏమి జరుగుతుందో విడదీద్దాం. ముందుగా, మేము మా లావాదేవీల పారామితులను సెటప్ చేస్తాము, ఇక్కడ: + +- `to` గ్రహీత చిరునామాను నిర్దేశిస్తుంది (మా స్మార్ట్ కాంట్రాక్ట్) +- `from` లావాదేవీ సంతకం చేసిన వ్యక్తిని నిర్దేశిస్తుంది, మా ఫంక్షన్‌లోకి మేము పంపిన `చిరునామా` వేరియబుల్ +- `data` మా హలో వరల్డ్ స్మార్ట్ కాంట్రాక్ట్ యొక్క `నవీకరణ` పద్ధతికి కాల్‌ను కలిగి ఉంది, మా `సందేశం` స్ట్రింగ్ వేరియబుల్‌ను ఇన్‌పుట్‌గా స్వీకరిస్తుంది + +అప్పుడు, మేము ఒక await కాల్, `window.ethereum.request` చేస్తాము, ఇక్కడ మేము మెటామాస్క్‌ను లావాదేవీపై సంతకం చేయమని అడుగుతాము. గమనించండి, 11 మరియు 12 లైన్లలో, మేము మా eth పద్ధతి, `eth_sendTransaction`ని నిర్దేశిస్తున్నాము మరియు మా `transactionParameters`ను పంపుతున్నాము. + +ఈ సమయంలో, MetaMask బ్రౌజర్‌లో తెరుచుకుంటుంది మరియు లావాదేవీపై సంతకం చేయమని లేదా తిరస్కరించమని వినియోగదారుడిని ప్రాంప్ట్ చేస్తుంది. + +- లావాదేవీ విజయవంతమైతే, ఫంక్షన్ ఒక JSON ఆబ్జెక్ట్‌ను తిరిగి ఇస్తుంది, ఇక్కడ `స్థితి` JSX స్ట్రింగ్ వినియోగదారుని వారి లావాదేవీ గురించి మరింత సమాచారం కోసం Etherscan ను తనిఖీ చేయమని ప్రేరేపిస్తుంది. +- లావాదేవీ విఫలమైతే, ఫంక్షన్ ఒక JSON ఆబ్జెక్ట్‌ను తిరిగి ఇస్తుంది, ఇక్కడ `స్థితి` స్ట్రింగ్ లోపం సందేశాన్ని తెలియజేస్తుంది. + +మొత్తంగా, మా `updateMessage` ఫంక్షన్ ఈ విధంగా కనిపించాలి: + +```javascript +// interact.js + +export const updateMessage = async (address, message) => { + //ఇన్‌పుట్ లోపం నిర్వహణ + if (!window.ethereum || address === null) { + return { + status: + "💡 బ్లాక్‌చెయిన్‌లో సందేశాన్ని నవీకరించడానికి మీ మెటామాస్క్ వాలెట్‌ను కనెక్ట్ చేయండి.", + } + } + + if (message.trim() === "") { + return { + status: "❌ మీ సందేశం ఖాళీ స్ట్రింగ్ కాకూడదు.", + } + } + + //లావాదేవీ పారామితులను సెటప్ చేయండి + const transactionParameters = { + to: contractAddress, // కాంట్రాక్ట్ ప్రచురణల సమయంలో తప్ప అవసరం. + from: address, // వినియోగదారు యొక్క క్రియాశీల చిరునామాతో సరిపోలాలి. + data: helloWorldContract.methods.update(message).encodeABI(), + } + + //లావాదేవీపై సంతకం చేయండి + try { + const txHash = await window.ethereum.request({ + method: "eth_sendTransaction", + params: [transactionParameters], + }) + return { + status: ( + + ✅{" "} + + Etherscanలో మీ లావాదేవీ స్థితిని వీక్షించండి! + +
+ ℹ️ నెట్‌వర్క్ ద్వారా లావాదేవీ ధృవీకరించబడిన తర్వాత, సందేశం స్వయంచాలకంగా నవీకరించబడుతుంది. +
+ ), + } + } catch (error) { + return { + status: "😥 " + error.message, + } + } +} +``` + +చివరగా, మేము మా `updateMessage` ఫంక్షన్‌ను మా `HelloWorld.js` కాంపోనెంట్‌కు కనెక్ట్ చేయాలి. + +#### `updateMessage`ని `HelloWorld.js` ఫ్రంటెండ్‌కు కనెక్ట్ చేయండి {#connect-updatemessage-to-the-helloworld-js-frontend} + +మా `onUpdatePressed` ఫంక్షన్ దిగుమతి చేయబడిన `updateMessage` ఫంక్షన్‌కు await కాల్ చేసి, మా లావాదేవీ విజయవంతమైందో లేదా విఫలమైందో ప్రతిబింబించడానికి `స్థితి` స్థితి వేరియబుల్‌ను సవరించాలి: + +```javascript +// HelloWorld.js + +const onUpdatePressed = async () => { + const { status } = await updateMessage(walletAddress, newMessage) + setStatus(status) +} +``` + +ఇది చాలా శుభ్రంగా మరియు సరళంగా ఉంటుంది. మరియు ఏమనుకుంటున్నారు... మీ డాప్ పూర్తయింది!!! + +ముందుకు వెళ్లి **నవీకరించు** బటన్‌ను పరీక్షించండి! + +### మీ స్వంత కస్టమ్ డాప్‌ను తయారు చేసుకోండి {#make-your-own-custom-dapp} + +వూహూ, మీరు ట్యుటోరియల్ చివరికి వచ్చారు! పునరావృతం చేయడానికి, మీరు నేర్చుకున్నవి: + +- మీ డాప్ ప్రాజెక్టుకు మెటామాస్క్ వాలెట్‌ను కనెక్ట్ చేయండి +- మీ స్మార్ట్ కాంట్రాక్టు నుండి [Alchemy Web3](https://docs.alchemy.com/alchemy/documentation/alchemy-web3) API ఉపయోగించి డేటాను చదవండి +- మెటామాస్క్ ఉపయోగించి ఇథీరియం లావాదేవీలపై సంతకం చేయండి + +ఇప్పుడు మీరు మీ స్వంత కస్టమ్ డాప్ ప్రాజెక్ట్‌ను నిర్మించడానికి ఈ ట్యుటోరియల్ నుండి నైపుణ్యాలను వర్తింపజేయడానికి పూర్తిగా సన్నద్ధమయ్యారు! ఎప్పటిలాగే, మీకు ఏవైనా ప్రశ్నలు ఉంటే, [ఆల్కెమీ డిస్కార్డ్](https://discord.gg/gWuC7zB)లో సహాయం కోసం మమ్మల్ని సంప్రదించడానికి సంకోచించకండి. 🧙‍♂️ + +మీరు ఈ ట్యుటోరియల్‌ను పూర్తి చేసిన తర్వాత, మీ అనుభవం ఎలా ఉందో లేదా మీకు ఏవైనా అభిప్రాయాలు ఉంటే Twitter [@alchemyplatform](https://twitter.com/AlchemyPlatform)లో మమ్మల్ని ట్యాగ్ చేయడం ద్వారా మాకు తెలియజేయండి! diff --git a/public/content/translations/te/developers/tutorials/hello-world-smart-contract/index.md b/public/content/translations/te/developers/tutorials/hello-world-smart-contract/index.md new file mode 100644 index 00000000000..2217a22f229 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/hello-world-smart-contract/index.md @@ -0,0 +1,366 @@ +--- +title: "ప్రారంభకుల కోసం హలో వరల్డ్ స్మార్ట్ కాంట్రాక్ట్" +description: "Ethereumలో ఒక సాధారణ స్మార్ట్ కాంట్రాక్టును రాయడం మరియు డిప్లాయ్ చేయడంపై పరిచయ ట్యుటోరియల్." +author: "elanh" +tags: + [ + "దృఢత్వం", + "hardhat", + "alchemy", + "స్మార్ట్ కాంట్రాక్టులు", + "డిప్లాయ్ చేయడం" + ] +skill: beginner +lang: te +published: 2021-03-31 +--- + +మీరు బ్లాక్‌చైన్ అభివృద్ధికి కొత్తవారైతే మరియు ఎక్కడ ప్రారంభించాలో తెలియకపోతే లేదా మీరు స్మార్ట్ కాంట్రాక్ట్‌లను ఎలా డిప్లాయ్ చేయాలో మరియు వాటితో ఎలా సంకర్షణ చెందాలో అర్థం చేసుకోవాలనుకుంటే, ఈ గైడ్ మీ కోసం. మేము ఒక వర్చువల్ వాలెట్ [MetaMask](https://metamask.io/), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org/), మరియు [Alchemy](https://www.alchemy.com/eth) ఉపయోగించి Sepolia టెస్టునెట్ నెట్‌వర్క్‌లో ఒక సాధారణ స్మార్ట్ కాంట్రాక్టును సృష్టించడం మరియు డిప్లాయ్ చేయడం గురించి వివరిస్తాము (వీటిలో దేని గురించైనా మీకు ఇంకా అర్థం కాకపోతే చింతించకండి, మేము దానిని వివరిస్తాము). + +ఈ ట్యుటోరియల్ యొక్క [భాగం 2](https://docs.alchemy.com/docs/interacting-with-a-smart-contract)లో మన స్మార్ట్ కాంట్రాక్ట్ ఇక్కడ డిప్లాయ్ అయిన తర్వాత దానితో ఎలా సంకర్షణ చెందవచ్చో చూద్దాం, మరియు [భాగం 3](https://www.alchemy.com/docs/submitting-your-smart-contract-to-etherscan)లో దానిని Etherscanలో ఎలా ప్రచురించాలో వివరిస్తాము. + +ఏ సమయంలోనైనా మీకు ప్రశ్నలు ఉంటే [Alchemy Discord](https://discord.gg/gWuC7zB)లో సంప్రదించడానికి సంకోచించకండి! + +## దశ 1: Ethereum నెట్‌వర్క్‌కు కనెక్ట్ అవ్వండి {#step-1} + +Ethereum చైన్‌కు అభ్యర్థనలు చేయడానికి చాలా మార్గాలు ఉన్నాయి. సరళత కోసం, మేము Alchemyలో ఉచిత ఖాతాను ఉపయోగిస్తాము, ఇది మన స్వంత నోడ్స్‌ను నడపాల్సిన అవసరం లేకుండా Ethereum చైన్‌తో కమ్యూనికేట్ చేయడానికి అనుమతించే బ్లాక్‌చైన్ డెవలపర్ ప్లాట్‌ఫారమ్ మరియు API. ఈ ప్లాట్‌ఫారమ్‌లో పర్యవేక్షణ మరియు విశ్లేషణల కోసం డెవలపర్ ఉపకరణాలు కూడా ఉన్నాయి, మన స్మార్ట్ కాంట్రాక్ట్ డిప్లాయ్‌మెంట్ నేపథ్యంలో ఏమి జరుగుతుందో అర్థం చేసుకోవడానికి ఈ ట్యుటోరియల్‌లో మనం వాటిని సద్వినియోగం చేసుకుంటాము. మీకు ఇప్పటికే Alchemy ఖాతా లేకపోతే, [మీరు ఇక్కడ ఉచితంగా సైన్ అప్ చేయవచ్చు](https://dashboard.alchemy.com/signup). + +## దశ 2: మీ యాప్‌ను సృష్టించండి (మరియు API కీ) {#step-2} + +మీరు ఆల్కెమీ అకౌంట్‌ను సృష్టించిన తర్వాత, యాప్‌ను సృష్టించడం ద్వారా మీరు API కీని రూపొందించవచ్చు. ఇది సెపోలియా టెస్ట్ నెట్‌వర్క్‌కు అభ్యర్థనలు చేయడానికి మాకు అనుమతిస్తుంది. మీకు టెస్టునెట్‌ల గురించి తెలియకపోతే, [ఈ పేజీని](/developers/docs/networks/) చూడండి. + +1. నావ్ బార్‌లో "ఒక యాప్‌ను ఎంచుకోండి"ని ఎంచుకుని, "కొత్త యాప్‌ను సృష్టించు" క్లిక్ చేయడం ద్వారా మీ Alchemy డ్యాష్‌బోర్డ్‌లోని "కొత్త యాప్‌ను సృష్టించు" పేజీకి నావిగేట్ చేయండి + +![హలో వరల్డ్ యాప్‌ను సృష్టించు](./hello-world-create-app.png) + +2. మీ యాప్‌కు “హలో వరల్డ్” అని పేరు పెట్టండి, ఒక చిన్న వివరణను అందించండి మరియు ఒక వినియోగ సందర్భాన్ని ఎంచుకోండి, ఉదా., "ఇన్‌ఫ్రా & టూలింగ్." తరువాత, "Ethereum" కోసం వెతకండి మరియు నెట్‌వర్క్‌ను ఎంచుకోండి. + +![యాప్ వీక్షణను సృష్టించు హలో వరల్డ్](./create-app-view-hello-world.png) + +3. ముందుకు సాగడానికి "తరువాత" క్లిక్ చేయండి, ఆపై “యాప్‌ను సృష్టించు” క్లిక్ చేయండి మరియు అంతే! మీ యాప్ నావ్ బార్ డ్రాప్‌డౌన్ మెనూలో కనిపించాలి, కాపీ చేయడానికి ఒక API కీ అందుబాటులో ఉంటుంది. + +## దశ 3: ఒక Ethereum ఖాతా (చిరునామా) సృష్టించండి {#step-3} + +లావాదేవీలను పంపడానికి మరియు స్వీకరించడానికి మాకు ఇతీరియము అకౌంట్ అవసరం. ఈ ట్యుటోరియల్ కోసం, మేము MetaMaskను ఉపయోగిస్తాము, ఇది మీ ఇతీరియము అకౌంట్ చిరునామాను నిర్వహించడానికి ఉపయోగించే బ్రౌజర్‌లోని వర్చువల్ వాలెట్. [లావాదేవీల](/developers/docs/transactions/) గురించి మరింత. + +మీరు [ఇక్కడ](https://metamask.io/download) MetaMaskని డౌన్‌లోడ్ చేసుకోవచ్చు మరియు ఉచితంగా ఒక Ethereum ఖాతాను సృష్టించుకోవచ్చు. మీరు ఒక ఖాతాను సృష్టిస్తున్నప్పుడు, లేదా మీకు ఇప్పటికే ఒక ఖాతా ఉన్నట్లయితే, నెట్‌వర్క్ డ్రాప్‌డౌన్ మెనూని ఉపయోగించి "Sepolia" టెస్టునెట్‌కు మారారని నిర్ధారించుకోండి (దీనివల్ల మనం నిజమైన డబ్బుతో వ్యవహరించము). + +మీకు జాబితాలో Sepolia కనిపించకపోతే, మెనూలోకి వెళ్లి, ఆపై అడ్వాన్స్‌డ్‌కి వెళ్లి "టెస్ట్ నెట్‌వర్క్‌లను చూపించు"ని ఆన్ చేయడానికి క్రిందికి స్క్రోల్ చేయండి. నెట్‌వర్క్ ఎంపిక మెనూలో, టెస్టునెట్‌ల జాబితాను కనుగొనడానికి "కస్టమ్" ట్యాబ్‌ను ఎంచుకుని, "Sepolia"ని ఎంచుకోండి. + +![మెటామాస్క్ సెపోలియా ఉదాహరణ](./metamask-sepolia-example.png) + +## దశ 4: ఒక ఫాసెట్ నుండి ఈథర్‌ను జోడించండి {#step-4} + +మన స్మార్ట్ కాంట్రాక్టును టెస్టునెట్‌లో డిప్లాయ్ చేయడానికి, మనకు కొంత నకిలీ Eth అవసరం. Sepolia ETH పొందడానికి మీరు వివిధ ఫాసెట్‌ల జాబితాను చూడటానికి [Sepolia నెట్‌వర్క్ వివరాలు](/developers/docs/networks/#sepolia) పేజీకి వెళ్లవచ్చు. ఒకటి పని చేయకపోతే, మరొకటి ప్రయత్నించండి, ఎందుకంటే అవి కొన్నిసార్లు ఖాళీ అయిపోవచ్చు. నెట్‌వర్క్ ట్రాఫిక్ కారణంగా మీ నకిలీ ETHని స్వీకరించడానికి కొంత సమయం పట్టవచ్చు. ఆ తర్వాత కొద్దిసేపటికే మీ Metamask ఖాతాలో ETHని మీరు చూడాలి! + +## దశ 5: మీ బ్యాలెన్స్‌ను తనిఖీ చేయండి {#step-5} + +మన బ్యాలెన్స్ ఉందో లేదో రెండుసార్లు తనిఖీ చేయడానికి, [Alchemy యొక్క కంపోజర్ టూల్](https://sandbox.alchemy.com/?network=ETH_SEPOLIA&method=eth_getBalance&body.id=1&body.jsonrpc=2.0&body.method=eth_getBalance&body.params%5B0%5D=&body.params%5B1%5D=latest)ని ఉపయోగించి [eth_getBalance](/developers/docs/apis/json-rpc/#eth_getbalance) అభ్యర్థనను చేద్దాం. ఇది మన వాలెట్‌లోని ETH మొత్తాన్ని తిరిగి ఇస్తుంది. మీరు మీ MetaMask అకౌంట్ చిరునామాను ఇన్‌పుట్ చేసి, “అభ్యర్థన పంపు” క్లిక్ చేసిన తర్వాత, మీరు ఇలాంటి ప్రతిస్పందనను చూడాలి: + +```json +{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" } +``` + +> **గమనిక:** ఈ ఫలితం weiలో ఉంది, ETHలో కాదు. ఈథర్ యొక్క అతి చిన్న ప్రమాణంగా వీని ఉపయోగిస్తారు. wei నుండి ETHకి మార్పిడి: 1 eth = 1018 wei. కాబట్టి మనం 0x2B5E3AF16B1880000ని దశాంశానికి మార్చినట్లయితే, మనకు 5\*10¹⁸ వస్తుంది, ఇది 5 ETHకి సమానం. +> +> అమ్మయ్య! మన నకిలీ డబ్బు అంతా అక్కడే ఉంది . + +## దశ 6: మన ప్రాజెక్టును ప్రారంభించండి {#step-6} + +మొదట, మేము మా ప్రాజెక్ట్ కోసం ఒక ఫోల్డర్‌ను సృష్టించాలి. మీ కమాండ్ లైన్‌కి నావిగేట్ చేసి, టైప్ చేయండి: + +``` +mkdir hello-world +cd hello-world +``` + +ఇప్పుడు మనం మన ప్రాజెక్ట్ ఫోల్డర్‌లో ఉన్నాము కాబట్టి, ప్రాజెక్టును ప్రారంభించడానికి `npm init`ని ఉపయోగిస్తాము. మీరు ఇప్పటికే npmని ఇన్‌స్టాల్ చేయకపోతే, [ఈ సూచనలను](https://docs.alchemyapi.io/alchemy/guides/alchemy-for-macs#1-install-nodejs-and-npm) అనుసరించండి (మనకు Node.js కూడా అవసరం కాబట్టి దాన్ని కూడా డౌన్‌లోడ్ చేసుకోండి!). + +``` +npm init +``` + +ఇన్‌స్టాలేషన్ ప్రశ్నలకు మీరు ఎలా సమాధానం ఇస్తారనేది ముఖ్యం కాదు, సూచన కోసం మేము దానిని ఎలా చేశామో ఇక్కడ ఉంది: + +``` +ప్యాకేజీ పేరు: (hello-world) +వెర్షన్: (1.0.0) +వివరణ: హలో వరల్డ్ స్మార్ట్ కాంట్రాక్ట్ +ప్రవేశ స్థానం: (index.js) +టెస్ట్ కమాండ్: +గిట్ రిపోజిటరీ: +కీలకపదాలు: +రచయిత: +లైసెన్స్: (ISC) +/Users/.../.../.../hello-world/package.json కు వ్రాయబోతున్నారు: + +{ + "name": "hello-world", + "version": "1.0.0", + "description": "హలో వరల్డ్ స్మార్ట్ కాంట్రాక్ట్", + "main": "index.js", + "scripts": { + "test": "echo \\"లోపం: ఏ పరీక్ష పేర్కొనబడలేదు\\" && exit 1" + }, + "author": "", + "license": "ISC" +} +``` + +package.jsonని ఆమోదించండి మరియు మనం సిద్ధంగా ఉన్నాము! + +## దశ 7: [Hardhat](https://hardhat.org/getting-started/#overview)ను డౌన్‌లోడ్ చేయండి {#step-7} + +Hardhat అనేది మీ ఇతీరియము సాఫ్ట్‌వేర్‌ను కంపైల్ చేయడానికి, డిప్లోయ్ చేయడానికి, పరీక్షించడానికి మరియు డీబగ్ చేయడానికి ఒక డెవలప్‌మెంట్ ఎన్విరాన్‌మెంట్. ఇది లైవ్ చైన్‌కు డిప్లోయ్ చేయడానికి ముందు స్థానికంగా స్మార్ట్ కాంట్రాక్ట్‌లను మరియు డాప్స్‌ను రూపొందించడంలో డెవలపర్‌లకు సహాయపడుతుంది. + +మన `hello-world` ప్రాజెక్ట్ లోపల రన్ చేయండి: + +``` +npm install --save-dev hardhat +``` + +[ఇన్‌స్టాలేషన్ సూచనల](https://hardhat.org/getting-started/#overview)పై మరిన్ని వివరాల కోసం ఈ పేజీని చూడండి. + +## దశ 8: Hardhat ప్రాజెక్టును సృష్టించండి {#step-8} + +మా ప్రాజెక్ట్ ఫోల్డర్‌లో రన్ చేయండి: + +``` +npx hardhat +``` + +అప్పుడు మీరు స్వాగత సందేశం మరియు మీరు ఏమి చేయాలనుకుంటున్నారో ఎంచుకోవడానికి ఒక ఎంపికను చూడాలి. “ఖాళీ hardhat.config.jsని సృష్టించండి” ఎంచుకోండి: + +``` +888 888 888 888 888 +888 888 888 888 888 +888 888 888 888 888 +8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888 +888 888 "88b 888P" d88" 888 888 "88b "88b 888 +888 888 .d888888 888 888 888 888 888 .d888888 888 +888 888 888 888 888 Y88b 888 888 888 888 888 Y88b. +888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888 + +👷 Hardhat v2.0.11 👷‍కి స్వాగతం? + +మీరు ఏమి చేయాలనుకుంటున్నారు? … +నమూనా ప్రాజెక్టును సృష్టించండి +❯ ఖాళీ hardhat.config.jsని సృష్టించండి +నిష్క్రమించు +``` + +ఇది మన కోసం ఒక `hardhat.config.js` ఫైల్‌ను ఉత్పత్తి చేస్తుంది, ఇక్కడ మనం మన ప్రాజెక్ట్ కోసం అన్ని సెటప్‌లను నిర్దేశిస్తాము (దశ 13లో). + +## దశ 9: ప్రాజెక్ట్ ఫోల్డర్‌లను జోడించండి {#step-9} + +మన ప్రాజెక్టును వ్యవస్థీకృతంగా ఉంచడానికి మనం రెండు కొత్త ఫోల్డర్‌లను సృష్టిస్తాము. మీ కమాండ్ లైన్‌లోని మీ ప్రాజెక్ట్ యొక్క రూట్ డైరెక్టరీకి నావిగేట్ చేసి, టైప్ చేయండి: + +``` +mkdir contracts +mkdir scripts +``` + +- `contracts/` అనేది మనం మన హలో వరల్డ్ స్మార్ట్ కాంట్రాక్ట్ కోడ్ ఫైల్‌ను ఉంచే చోటు +- `scripts/` అనేది మన కాంట్రాక్టును డిప్లాయ్ చేయడానికి మరియు దానితో ఇంటరాక్ట్ అవ్వడానికి స్క్రిప్ట్‌లను ఉంచే చోటు + +## దశ 10: మన కాంట్రాక్టును రాయండి {#step-10} + +అసలు మనం ఎప్పుడు కోడ్ రాయబోతున్నాము?? అని మీరు మిమ్మల్ని మీరు ప్రశ్నించుకోవచ్చు. సరే, మనం ఇక్కడున్నాం, దశ 10లో. + +మీకు ఇష్టమైన ఎడిటర్‌లో hello-world ప్రాజెక్టును తెరవండి (మేము [VSCode](https://code.visualstudio.com/)ను ఇష్టపడతాము). స్మార్ట్ కాంట్రాక్టులు Solidity అనే భాషలో వ్రాయబడతాయి, దీనినే మనం మన HelloWorld.sol స్మార్ట్ కాంట్రాక్టును వ్రాయడానికి ఉపయోగిస్తాము.‌ + +1. “contracts” ఫోల్డర్‌కు నావిగేట్ చేసి HelloWorld.sol అనే కొత్త ఫైల్‌ను సృష్టించండి +2. ఈ ట్యుటోరియల్ కోసం మనం ఉపయోగించబోయే Ethereum ఫౌండేషన్ నుండి ఒక నమూనా హలో వరల్డ్ స్మార్ట్ కాంట్రాక్ట్ క్రింద ఉంది. క్రింది కంటెంట్‌లను మీ HelloWorld.sol ఫైల్‌లో కాపీ చేసి పేస్ట్ చేయండి మరియు ఈ కాంట్రాక్ట్ ఏమి చేస్తుందో అర్థం చేసుకోవడానికి వ్యాఖ్యలను తప్పకుండా చదవండి: + +```solidity +// సెమాంటిక్ వెర్షనింగ్ ఉపయోగించి, Solidity వెర్షన్‌ను నిర్దేశిస్తుంది. +// మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma +pragma solidity ^0.7.0; + +// `HelloWorld` అనే పేరుతో ఒక కాంట్రాక్టును నిర్వచిస్తుంది. +// కాంట్రాక్ట్ అనేది ఫంక్షన్‌లు మరియు డేటా (దాని స్థితి) యొక్క సమాహారం. ఒకసారి డిప్లాయ్ చేసిన తర్వాత, ఒక కాంట్రాక్ట్ Ethereum బ్లాక్‌చైన్‌లో ఒక నిర్దిష్ట చిరునామాలో ఉంటుంది. మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html +contract HelloWorld { + + // `string` రకానికి చెందిన `message` అనే ఒక స్టేట్ వేరియబుల్‌ను ప్రకటిస్తుంది. + // స్టేట్ వేరియబుల్స్ అనేవి కాంట్రాక్ట్ స్టోరేజ్‌లో శాశ్వతంగా నిల్వ చేయబడిన విలువలు కలిగిన వేరియబుల్స్. `public` అనే కీవర్డ్ వేరియబుల్స్‌ను కాంట్రాక్ట్ బయటి నుండి యాక్సెస్ చేయడానికి వీలు కల్పిస్తుంది మరియు విలువను యాక్సెస్ చేయడానికి ఇతర కాంట్రాక్టులు లేదా క్లయింట్లు కాల్ చేయగల ఫంక్షన్‌ను సృష్టిస్తుంది. + string public message; + + // అనేక తరగతి ఆధారిత ఆబ్జెక్ట్-ఓరియెంటెడ్ భాషల మాదిరిగానే, కన్‌స్ట్రక్టర్ అనేది కాంట్రాక్ట్ సృష్టి సమయంలో మాత్రమే అమలు చేయబడే ఒక ప్రత్యేక ఫంక్షన్. + // కాంట్రాక్ట్ యొక్క డేటాను ప్రారంభించడానికి కన్‌స్ట్రక్టర్లు ఉపయోగించబడతాయి. మరింత తెలుసుకోండి:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors + constructor(string memory initMessage) { + + // `initMessage` అనే స్ట్రింగ్ ఆర్గ్యుమెంట్‌ను అంగీకరించి, దాని విలువను కాంట్రాక్ట్ యొక్క `message` స్టోరేజ్ వేరియబుల్‌లో సెట్ చేస్తుంది). + message = initMessage; + } + + // ఒక స్ట్రింగ్ ఆర్గ్యుమెంట్‌ను అంగీకరించి, `message` స్టోరేజ్ వేరియబుల్‌ను అప్‌డేట్ చేసే ఒక పబ్లిక్ ఫంక్షన్. + function update(string memory newMessage) public { + message = newMessage; + } +} +``` + +ఇది చాలా సులభమైన స్మార్ట్ కాంట్రాక్ట్, ఇది సృష్టి సమయంలో ఒక సందేశాన్ని నిల్వ చేస్తుంది మరియు `update` ఫంక్షన్‌ను కాల్ చేయడం ద్వారా అప్‌డేట్ చేయవచ్చు. + +## దశ 11: మీ ప్రాజెక్టుకు MetaMask & Alchemyని కనెక్ట్ చేయండి {#step-11} + +మనం ఒక MetaMask వాలెట్‌ను, Alchemy ఖాతాను సృష్టించాము మరియు మన స్మార్ట్ కాంట్రాక్టును వ్రాశాము, ఇప్పుడు ఈ మూడింటిని కనెక్ట్ చేసే సమయం వచ్చింది. + +మీ వర్చువల్ వాలెట్ నుండి పంపిన ప్రతి లావాదేవీకి మీ ప్రత్యేక ప్రైవేట్ కీని ఉపయోగించి ఒక సంతకం అవసరం. మా ప్రోగ్రామ్‌కు ఈ అనుమతిని అందించడానికి, మేము మా ప్రైవేట్ కీని (మరియు ఆల్కెమీ API కీని) ఒక ఎన్విరాన్‌మెంట్ ఫైల్‌లో సురక్షితంగా నిల్వ చేయవచ్చు. + +> లావాదేవీలను పంపడం గురించి మరింత తెలుసుకోవడానికి, వెబ్3ని ఉపయోగించి లావాదేవీలను పంపడంపై [ఈ ట్యుటోరియల్](/developers/tutorials/sending-transactions-using-web3-and-alchemy/)ను చూడండి. + +మొదట, మీ ప్రాజెక్ట్ డైరెక్టరీలో dotenv ప్యాకేజీని ఇన్‌స్టాల్ చేయండి: + +``` +npm install dotenv --save +``` + +అప్పుడు, మా ప్రాజెక్ట్ యొక్క రూట్ డైరెక్టరీలో `.env` ఫైల్‌ను సృష్టించి, మీ MetaMask ప్రైవేట్ కీ మరియు HTTP ఆల్కెమీ API URLను దానికి జోడించండి. + +- మీ ప్రైవేట్ కీని ఎగుమతి చేయడానికి [ఈ సూచనలను](https://support.metamask.io/configure/accounts/how-to-export-an-accounts-private-key/) అనుసరించండి +- HTTP Alchemy API URL పొందడానికి క్రింద చూడండి + +![alchemy api కీని పొందండి](./get-alchemy-api-key.png) + +Alchemy API URLని కాపీ చేయండి + +మీ `.env` ఈ విధంగా కనిపించాలి: + +``` +API_URL = "https://eth-sepolia.g.alchemy.com/v2/మీ-api-కీ" +PRIVATE_KEY = "మీ-మెటామాస్క్-ప్రైవేట్-కీ" +``` + +వీటిని వాస్తవంగా మన కోడ్‌కు కనెక్ట్ చేయడానికి, మనం ఈ వేరియబుల్స్‌ను దశ 13లో మన `hardhat.config.js` ఫైల్‌లో రిఫరెన్స్ చేస్తాము. + + + + +.env ను కమిట్ చేయవద్దు! దయచేసి మీ .env ఫైల్‌ను ఎవరితోనూ పంచుకోకుండా లేదా బహిర్గతం చేయకుండా చూసుకోండి, అలా చేయడం ద్వారా మీరు మీ రహస్యాలను రాజీ పడుతున్నారు. మీరు వెర్షన్ నియంత్రణను ఉపయోగిస్తుంటే, మీ .env ని gitignore ఫైల్‌కు జోడించండి. + + + + +## దశ 12: Ethers.jsని ఇన్‌స్టాల్ చేయండి {#step-12-install-ethersjs} + +Ethers.js అనేది ఒక లైబ్రరీ, ఇది ఇతీరియముతో సులభంగా ఇంటరాక్ట్ అవ్వడానికి మరియు అభ్యర్థనలు చేయడానికి [ప్రామాణిక JSON-RPC పద్ధతులను](/developers/docs/apis/json-rpc/) మరింత యూజర్ ఫ్రెండ్లీ పద్ధతులతో చుట్టడం ద్వారా చేస్తుంది. + +Hardhat అదనపు పనిముట్లు మరియు విస్తరించిన కార్యాచరణ కోసం [ప్లగిన్‌లను](https://hardhat.org/plugins/) ఏకీకృతం చేయడం చాలా సులభం చేస్తుంది. కాంట్రాక్ట్ డిప్లాయ్‌మెంట్ కోసం మనం [Ethers ప్లగిన్](https://hardhat.org/docs/plugins/official-plugins#hardhat-ethers) యొక్క ప్రయోజనాన్ని పొందుతాము ([Ethers.js](https://github.com/ethers-io/ethers.js/)లో కొన్ని చాలా శుభ్రమైన కాంట్రాక్ట్ డిప్లాయ్‌మెంట్ పద్ధతులు ఉన్నాయి). + +మీ ప్రాజెక్ట్ డైరెక్టరీలో టైప్ చేయండి: + +``` +npm install --save-dev @nomiclabs/hardhat-ethers "ethers@^5.0.0" +``` + +మనం తదుపరి దశలో మన `hardhat.config.js`లో ఈథర్‌లను కూడా రిక్వైర్ చేస్తాము. + +## దశ 13: hardhat.config.jsని అప్‌డేట్ చేయండి {#step-13-update-hardhatconfigjs} + +మనం ఇప్పటివరకు అనేక డిపెండెన్సీలు మరియు ప్లగిన్‌లను జోడించాము, ఇప్పుడు మన ప్రాజెక్ట్ వాటన్నిటి గురించి తెలుసుకునేలా `hardhat.config.js`ని అప్‌డేట్ చేయాలి. + +మీ `hardhat.config.js`ని ఈ విధంగా కనిపించేలా అప్‌డేట్ చేయండి: + +``` +require('dotenv').config(); + +require("@nomiclabs/hardhat-ethers"); +const { API_URL, PRIVATE_KEY } = process.env; + +/** +* @type import('hardhat/config').HardhatUserConfig +*/ +module.exports = { + solidity: "0.7.3", + defaultNetwork: "sepolia", + networks: { + hardhat: {}, + sepolia: { + url: API_URL, + accounts: [`0x${PRIVATE_KEY}`] + } + }, +} +``` + +## దశ 14: మన కాంట్రాక్టును కంపైల్ చేయండి {#step-14-compile-our-contracts} + +ఇప్పటివరకు ప్రతిదీ పనిచేస్తుందని నిర్ధారించుకోవడానికి, మా కాంట్రాక్ట్‌ను కంపైల్ చేద్దాం. `compile` టాస్క్ అనేది అంతర్నిర్మిత హార్డ్‌హ్యాట్ టాస్క్‌లలో ఒకటి. + +కమాండ్ లైన్ నుండి రన్ చేయండి: + +``` +npx hardhat compile +``` + +మీకు `SPDX license identifier not provided in source file` గురించి హెచ్చరిక రావచ్చు, కానీ దాని గురించి చింతించాల్సిన అవసరం లేదు — ఆశాజనకంగా మిగతావన్నీ బాగానే కనిపిస్తాయి! కాకపోతే, మీరు ఎల్లప్పుడూ [ఆల్కెమీ డిస్కార్డ్](https://discord.gg/u72VCg3)లో సందేశం పంపవచ్చు. + +## దశ 15: మన డిప్లాయ్ స్క్రిప్ట్‌ను రాయండి {#step-15-write-our-deploy-scripts} + +ఇప్పుడు మా కాంట్రాక్ట్ వ్రాయబడింది మరియు మా కాన్ఫిగరేషన్ ఫైల్ సిద్ధంగా ఉంది, మా కాంట్రాక్ట్ డిప్లోయ్ స్క్రిప్ట్‌ను వ్రాసే సమయం వచ్చింది. + +`scripts/` ఫోల్డర్‌కు నావిగేట్ చేసి, `deploy.js` అనే కొత్త ఫైల్‌ను సృష్టించి, దానికి క్రింది కంటెంట్‌లను జోడించండి: + +``` +async function main() { + const HelloWorld = await ethers.getContractFactory("HelloWorld"); + + // డిప్లాయ్‌మెంట్‌ను ప్రారంభించండి, ఇది కాంట్రాక్ట్ ఆబ్జెక్ట్‌కు పరిష్కరించే ప్రామిస్‌ను అందిస్తుంది + const hello_world = await HelloWorld.deploy("హలో వరల్డ్!"); + console.log("కాంట్రాక్ట్ ఈ చిరునామాకు డిప్లాయ్ చేయబడింది:", hello_world.address);} + +main() + .then(() => process.exit(0)) + .catch(error => { + console.error(error); + process.exit(1); + }); +``` + +Hardhat వారి [కాంట్రాక్ట్స్ ట్యుటోరియల్](https://hardhat.org/tutorial/testing-contracts.html#writing-tests)లో ఈ కోడ్ లైన్‌లు ప్రతి ఒక్కటి ఏమి చేస్తుందో అద్భుతంగా వివరిస్తుంది, మేము వారి వివరణలను ఇక్కడ స్వీకరించాము. + +``` +const HelloWorld = await ethers.getContractFactory("HelloWorld"); +``` + +ethers.jsలో `ContractFactory` అనేది కొత్త స్మార్ట్ కాంట్రాక్టులను డిప్లాయ్ చేయడానికి ఉపయోగించే ఒక అబ్‌స్ట్రాక్షన్, కాబట్టి ఇక్కడ `HelloWorld` అనేది మన హలో వరల్డ్ కాంట్రాక్ట్ యొక్క ఇన్‌స్టాన్స్‌ల కోసం ఒక ఫ్యాక్టరీ. `hardhat-ethers` ప్లగిన్‌ను ఉపయోగిస్తున్నప్పుడు `ContractFactory` మరియు `Contract` ఇన్‌స్టాన్స్‌లు డిఫాల్ట్‌గా మొదటి సంతకం చేసిన వ్యక్తికి కనెక్ట్ చేయబడతాయి. + +``` +const hello_world = await HelloWorld.deploy(); +``` + +`ContractFactory` పై `deploy()`ని కాల్ చేయడం డిప్లాయ్‌మెంట్‌ను ప్రారంభిస్తుంది మరియు `Contract`కి పరిష్కరించే `Promise`ను అందిస్తుంది. ఇది మా స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌ల ప్రతిదానికీ ఒక పద్ధతిని కలిగి ఉన్న ఆబ్జెక్ట్. + +## దశ 16: మన కాంట్రాక్టును డిప్లాయ్ చేయండి {#step-16-deploy-our-contract} + +మేము చివరికి మా స్మార్ట్ కాంట్రాక్ట్‌ను డిప్లోయ్ చేయడానికి సిద్ధంగా ఉన్నాము! కమాండ్ లైన్‌కు నావిగేట్ చేసి రన్ చేయండి: + +``` +npx hardhat run scripts/deploy.js --network sepolia +``` + +మీరు అప్పుడు ఇలాంటిది చూడాలి: + +``` +కాంట్రాక్ట్ ఈ చిరునామాకు డిప్లాయ్ చేయబడింది: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570 +``` + +మనం [Sepolia etherscan](https://sepolia.etherscan.io/)కి వెళ్లి మన కాంట్రాక్ట్ చిరునామా కోసం వెతికితే, అది విజయవంతంగా డిప్లాయ్ చేయబడిందని మనం చూడగలుగుతాము. లావాదేవీ ఇలా కనిపిస్తుంది: + +![ఈథర్‌స్కాన్ కాంట్రాక్ట్](./etherscan-contract.png) + +`నుండి` చిరునామా మీ MetaMask ఖాతా చిరునామాతో సరిపోలాలి మరియు `కు` చిరునామా “కాంట్రాక్ట్ సృష్టి” అని చెబుతుంది, కానీ మనం లావాదేవీలోకి క్లిక్ చేస్తే, మన కాంట్రాక్ట్ చిరునామాను `కు` ఫీల్డ్‌లో చూస్తాము: + +![ఈథర్‌స్కాన్ లావాదేవీ](./etherscan-transaction.png) + +అభినందనలు! మీరు ఇప్పుడే Ethereum చైన్‌కు ఒక స్మార్ట్ కాంట్రాక్టును డిప్లాయ్ చేసారు 🎉 + +తెర వెనుక ఏమి జరుగుతుందో అర్థం చేసుకోవడానికి, మా [ఆల్కెమీ డాష్‌బోర్డ్](https://dashboard.alchemyapi.io/explorer)లోని ఎక్స్‌ప్లోరర్ ట్యాబ్‌కు నావిగేట్ చేద్దాం. మీకు బహుళ Alchemy యాప్‌లు ఉంటే, యాప్ ద్వారా ఫిల్టర్ చేసి, “హలో వరల్డ్”ను ఎంచుకున్నారని నిర్ధారించుకోండి. +![హలో వరల్డ్ ఎక్స్‌ప్లోరర్](./hello-world-explorer.png) + +ఇక్కడ మీరు మనం `.deploy()` ఫంక్షన్‌ను కాల్ చేసినప్పుడు Hardhat/Ethers మన కోసం నేపథ్యంలో చేసిన కొన్ని JSON-RPC కాల్స్‌ను చూస్తారు. ఇక్కడ పేర్కొనవలసిన రెండు ముఖ్యమైనవి [`eth_sendRawTransaction`](https://www.alchemy.com/docs/node/abstract/abstract-api-endpoints/eth-send-raw-transaction), ఇది మన కాంట్రాక్టును వాస్తవానికి Sepolia చైన్‌పై వ్రాయడానికి చేసే అభ్యర్థన, మరియు [`eth_getTransactionByHash`](https://www.alchemy.com/docs/node/abstract/abstract-api-endpoints/eth-get-transaction-by-hash) ఇది హాష్ ఇచ్చినప్పుడు మన లావాదేవీ గురించి సమాచారాన్ని చదవడానికి చేసే అభ్యర్థన (లావాదేవీల సమయంలో ఒక సాధారణ నమూనా). లావాదేవీలను పంపడం గురించి మరింత తెలుసుకోవడానికి, [Web3 ఉపయోగించి లావాదేవీలను పంపడం](/developers/tutorials/sending-transactions-using-web3-and-alchemy/)పై ఈ ట్యుటోరియల్‌ను చూడండి + +ఈ ట్యుటోరియల్ యొక్క భాగం 1 కోసం అంతే, భాగం 2లో మనం మన ప్రారంభ సందేశాన్ని అప్‌డేట్ చేయడం ద్వారా వాస్తవానికి [మన స్మార్ట్ కాంట్రాక్టుతో ఇంటరాక్ట్ అవుతాము](https://www.alchemy.com/docs/interacting-with-a-smart-contract), మరియు భాగం 3లో మనం [మన స్మార్ట్ కాంట్రాక్టును Etherscanకు ప్రచురిస్తాము](https://www.alchemy.com/docs/submitting-your-smart-contract-to-etherscan) తద్వారా ప్రతి ఒక్కరికీ దానితో ఎలా ఇంటరాక్ట్ అవ్వాలో తెలుస్తుంది. + +**Alchemy గురించి మరింత తెలుసుకోవాలనుకుంటున్నారా? మా [వెబ్‌సైట్](https://www.alchemy.com/eth)ని చూడండి. అప్‌డేట్‌ను ఎప్పుడూ మిస్ అవ్వకూడదనుకుంటున్నారా? [ఇక్కడ](https://www.alchemy.com/newsletter) మా వార్తాలేఖకు సబ్‌స్క్రయిబ్ చేసుకోండి! మా [Discord](https://discord.gg/u72VCg3)లో కూడా తప్పకుండా చేరండి.**. diff --git a/public/content/translations/te/developers/tutorials/how-to-implement-an-erc721-market/index.md b/public/content/translations/te/developers/tutorials/how-to-implement-an-erc721-market/index.md new file mode 100644 index 00000000000..e4038f724b4 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/how-to-implement-an-erc721-market/index.md @@ -0,0 +1,151 @@ +--- +title: "ERC-721 మార్కెట్‌ను ఎలా అమలు చేయాలి" +description: "టోకెనైజ్డ్ వస్తువులను వికేంద్రీకృత క్లాసిఫైడ్స్ బోర్డులో అమ్మకానికి ఎలా పెట్టాలి" +author: "Alberto Cuesta Cañada" +tags: + [ + "స్మార్ట్ కాంట్రాక్టులు", + "erc-721", + "దృఢత్వం", + "టోకెన్లు" + ] +skill: intermediate +lang: te +published: 2020-03-19 +source: Hackernoon +sourceUrl: https://hackernoon.com/how-to-implement-an-erc721-market-1e1a32j9 +--- + +ఈ వ్యాసంలో, Ethereum బ్లాక్‌చైన్ కోసం Craigslistని ఎలా కోడ్ చేయాలో నేను మీకు చూపించబోతున్నాను. + +Gumtree, Ebay మరియు Craigslist కంటే ముందు, క్లాసిఫైడ్ బోర్డులు ఎక్కువగా కార్క్ లేదా కాగితంతో తయారు చేయబడేవి. పాఠశాల కారిడార్లలో, వార్తాపత్రికలలో, వీధి దీపాల వద్ద, దుకాణాల ముందు క్లాసిఫైడ్ బోర్డులు ఉండేవి. + +ఇంటర్నెట్‌తో అదంతా మారిపోయింది. ఒక నిర్దిష్ట క్లాసిఫైడ్ బోర్డును చూడగల వ్యక్తుల సంఖ్య అనేక రెట్లు పెరిగింది. దానితో, అవి ప్రాతినిధ్యం వహించే మార్కెట్లు చాలా సమర్థవంతంగా మారాయి మరియు ప్రపంచ స్థాయికి విస్తరించాయి. Ebay ఒక భారీ వ్యాపారం, దాని మూలాలు ఈ భౌతిక క్లాసిఫైడ్ బోర్డులలో ఉన్నాయి. + +బ్లాక్‌చైన్‌తో ఈ మార్కెట్లు మరోసారి మారబోతున్నాయి, అదెలాగో నేను మీకు చూపిస్తాను. + +## మానిటైజేషన్ {#monetization} + +ఒక పబ్లిక్ బ్లాక్‌చైన్ క్లాసిఫైడ్ బోర్డు యొక్క వ్యాపార నమూనా Ebay మరియు కంపెనీల వాటి కంటే భిన్నంగా ఉండాలి. + +మొదట, [వికేంద్రీకరణ కోణం](/developers/docs/web2-vs-web3/) ఉంది. ప్రస్తుత ప్లాట్‌ఫారమ్‌లు వాటి స్వంత సర్వర్‌లను నిర్వహించాలి. ఒక వికేంద్రీకృత ప్లాట్‌ఫారం దాని వినియోగదారులచే నిర్వహించబడుతుంది, కాబట్టి కోర్ ప్లాట్‌ఫారమ్‌ను నడపడానికి అయ్యే ఖర్చు ప్లాట్‌ఫారం యజమానికి సున్నాకి పడిపోతుంది. + +ఆపై ఫ్రంట్ ఎండ్, అంటే ప్లాట్‌ఫారమ్‌కు యాక్సెస్ ఇచ్చే వెబ్‌సైట్ లేదా ఇంటర్‌ఫేస్ ఉంది. ఇక్కడ అనేక ఎంపికలు ఉన్నాయి. ప్లాట్‌ఫారం యజమానులు యాక్సెస్‌ను పరిమితం చేయవచ్చు మరియు ఒక రుసుము వసూలు చేస్తూ, ప్రతి ఒక్కరినీ వారి ఇంటర్‌ఫేస్‌ను ఉపయోగించమని బలవంతం చేయవచ్చు. ప్లాట్‌ఫారం యజమానులు యాక్సెస్‌ను తెరవాలని కూడా నిర్ణయించుకోవచ్చు (ప్రజలకే అధికారం!) మరియు ప్లాట్‌ఫారమ్‌కు ఇంటర్‌ఫేస్‌లను నిర్మించడానికి ఎవరినైనా అనుమతించవచ్చు. లేదా ఆ రెండు తీవ్రతల మధ్యలో ఏదైనా విధానాన్ని యజమానులు నిర్ణయించుకోవచ్చు. + +_నా కంటే ఎక్కువ దార్శనికత ఉన్న వ్యాపార నాయకులకు దీనిని ఎలా మానిటైజ్ చేయాలో తెలుస్తుంది._ _నాకు కనిపించేది ఏమిటంటే ఇది యథాతథ స్థితికి భిన్నంగా ఉంది మరియు బహుశా లాభదాయకం._ + +ఇంకా, ఆటోమేషన్ మరియు చెల్లింపుల కోణం ఉంది. కొన్ని విషయాలు చాలా [సమర్థవంతంగా టోకెనైజ్ చేయబడతాయి](https://hackernoon.com/tokenization-of-digital-assets-g0ffk3v8s?ref=hackernoon.com) మరియు ఒక క్లాసిఫైడ్ బోర్డులో వర్తకం చేయబడతాయి. టోకెనైజ్డ్ ఆస్తులు ఒక బ్లాక్‌చైన్‌లో సులభంగా బదిలీ చేయబడతాయి. అత్యంత సంక్లిష్టమైన చెల్లింపు పద్ధతులను ఒక బ్లాక్‌చైన్‌లో సులభంగా అమలు చేయవచ్చు. + +నాకు ఇక్కడ ఒక వ్యాపార అవకాశం కనిపిస్తోంది. నడిపించడానికి ఖర్చులు లేని ఒక క్లాసిఫైడ్ బోర్డును, ప్రతి లావాదేవీలో సంక్లిష్టమైన చెల్లింపు మార్గాలను చేర్చి సులభంగా అమలు చేయవచ్చు. దీనిని దేనికి ఉపయోగించాలనే దాని గురించి ఎవరో ఒకరు ఒక ఆలోచనతో వస్తారని నాకు నమ్మకం ఉంది. + +నేను దీనిని నిర్మించడంలో సంతోషంగా ఉన్నాను. కోడ్‌ను ఒకసారి చూద్దాం. + +## అమలు {#implementation} + +కొంత కాలం క్రితం మేము వ్యాపార కేసు ఉదాహరణ అమలులు మరియు ఇతర మంచి విషయాలతో కూడిన ఒక [ఓపెన్ సోర్స్ రిపోజిటరీని](https://github.com/HQ20/contracts?ref=hackernoon.com) ప్రారంభించాము, దయచేసి ఒకసారి చూడండి. + +ఈ [Ethereum క్లాసిఫైడ్స్ బోర్డు](https://github.com/HQ20/contracts/tree/master/contracts/classifieds?ref=hackernoon.com) కోసం కోడ్ అక్కడ ఉంది, దయచేసి దానిని ఉపయోగించండి మరియు విరివిగా వాడండి. ఒక విషయం గుర్తుంచుకోండి, కోడ్ ఆడిట్ చేయబడలేదు మరియు దానిలో డబ్బు పెట్టే ముందు మీరు మీ స్వంత తగిన శ్రద్ధ వహించాలి. + +బోర్డు యొక్క ప్రాథమికాలు సంక్లిష్టంగా లేవు. బోర్డులోని అన్ని ప్రకటనలు కేవలం కొన్ని ఫీల్డ్‌లతో ఒక స్ట్రక్ట్‌గా ఉంటాయి: + +```solidity +struct Trade { + address poster; + uint256 item; + uint256 price; + bytes32 status; // ఓపెన్, ఎగ్జిక్యూటెడ్, క్యాన్సిల్డ్ +} +``` + +కాబట్టి ప్రకటనను పోస్ట్ చేసే వారు ఒకరు ఉంటారు. అమ్మకానికి ఒక వస్తువు. వస్తువుకు ఒక ధర. వర్తకం యొక్క స్థితి, అది ఓపెన్, ఎగ్జిక్యూటెడ్ లేదా క్యాన్సిల్డ్ కావచ్చు. + +ఈ వర్తకాలన్నీ ఒక మ్యాపింగ్‌లో ఉంచబడతాయి. ఎందుకంటే Solidity లో ప్రతీదీ ఒక మ్యాపింగ్‌లా కనిపిస్తుంది. అంతేకాకుండా ఇది సౌకర్యవంతంగా ఉంటుంది. + +```solidity +mapping(uint256 => Trade) public trades; +``` + +ఒక మ్యాపింగ్‌ను ఉపయోగించడం అంటే ప్రతి ప్రకటనను పోస్ట్ చేసే ముందు దానికోసం ఒక ఐడిని మనం సృష్టించాలి, మరియు దానిపై పనిచేయడానికి ముందు మనకు ప్రకటన యొక్క ఐడి తెలిసి ఉండాలి. దీనిని స్మార్ట్ కాంట్రాక్ట్‌లో గానీ లేదా ఫ్రంట్-ఎండ్‌లో గానీ పరిష్కరించడానికి అనేక మార్గాలు ఉన్నాయి. మీకు కొన్ని సూచనలు కావాలంటే దయచేసి అడగండి. + +తరువాత వచ్చే ప్రశ్న ఏమిటంటే, మనం వ్యవహరించే ఆ వస్తువులు ఏమిటి, మరియు లావాదేవీకి చెల్లించడానికి ఉపయోగించే ఈ కరెన్సీ ఏమిటి. + +వస్తువుల కోసం, అవి [ERC-721](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/IERC721.sol?ref=hackernoon.com) ఇంటర్‌ఫేస్‌ను అమలు చేయాలని మేము అడగబోతున్నాము, ఇది నిజానికి ఒక బ్లాక్‌చైన్‌లో నిజ ప్రపంచ వస్తువులను సూచించే ఒక మార్గం, అయినప్పటికీ ఇది [డిజిటల్ ఆస్తులతో ఉత్తమంగా పనిచేస్తుంది](https://hackernoon.com/tokenization-of-digital-assets-g0ffk3v8s?ref=hackernoon.com). మేము కన్స్ట్రక్టర్‌లో మా స్వంత ERC721 కాంట్రాక్ట్‌ను పేర్కొనబోతున్నాము, అంటే మన క్లాసిఫైడ్ బోర్డులోని ఏవైనా ఆస్తులు ముందుగానే టోకెనైజ్ చేయబడి ఉండాలి. + +చెల్లింపుల కోసం, మేము ఇలాంటిదే చేయబోతున్నాము. చాలా బ్లాక్‌చైన్ ప్రాజెక్టులు వాటి స్వంత [ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol?ref=hackernoon.com) క్రిప్టోకరెన్సీని నిర్వచిస్తాయి. కొంతమంది ఇతరులు DAI వంటి ప్రధానమైన దాన్ని ఉపయోగించడానికి ఇష్టపడతారు. ఈ క్లాసిఫైడ్ బోర్డులో, నిర్మాణ సమయంలో మీ కరెన్సీ ఏమిటో మీరు నిర్ణయించుకోవాలి. సులభం. + +```solidity +constructor ( + address _currencyTokenAddress, address _itemTokenAddress +) public { + currencyToken = IERC20(_currencyTokenAddress); + itemToken = IERC721(_itemTokenAddress); + tradeCounter = 0; +} +``` + +మనం అక్కడికి చేరుకుంటున్నాం. మన దగ్గర ప్రకటనలు, వర్తకం కోసం వస్తువులు మరియు చెల్లింపుల కోసం ఒక కరెన్సీ ఉన్నాయి. ఒక ప్రకటన చేయడం అంటే, అది మీ దగ్గర ఉందని మరియు మీరు దానిని రెండుసార్లు, బహుశా వేరొక బోర్డులో పోస్ట్ చేయలేదని చూపించడానికి ఒక వస్తువును ఎస్క్రోలో పెట్టడం. + +కింది కోడ్ ఖచ్చితంగా అదే చేస్తుంది. వస్తువును ఎస్క్రోలో పెడుతుంది, ప్రకటనను సృష్టిస్తుంది, కొంత హౌస్‌కీపింగ్ చేస్తుంది. + +```solidity +function openTrade(uint256 _item, uint256 _price) + public +{ + itemToken.transferFrom(msg.sender, address(this), _item); + trades[tradeCounter] = Trade({ + poster: msg.sender, + item: _item, + price: _price, + status: "Open" + }); + tradeCounter += 1; + emit TradeStatusChange(tradeCounter - 1, "Open"); +} +``` + +వర్తకాన్ని అంగీకరించడం అంటే ఒక ప్రకటనను (వర్తకం) ఎంచుకోవడం, ధర చెల్లించడం, వస్తువును అందుకోవడం. కింది కోడ్ ఒక వర్తకాన్ని తిరిగి పొందుతుంది. అది అందుబాటులో ఉందో లేదో తనిఖీ చేస్తుంది. వస్తువుకు చెల్లిస్తుంది. వస్తువును పొందుతుంది. ప్రకటనను అప్‌డేట్ చేస్తుంది. + +```solidity +function executeTrade(uint256 _trade) + public +{ + Trade memory trade = trades[_trade]; + require(trade.status == "Open", "వర్తకం ఓపెన్‌లో లేదు."); + currencyToken.transferFrom(msg.sender, trade.poster, trade.price); + itemToken.transferFrom(address(this), msg.sender, trade.item); + trades[_trade].status = "Executed"; + emit TradeStatusChange(_trade, "Executed"); +} +``` + +చివరగా, ఒక కొనుగోలుదారు దానిని అంగీకరించే ముందు అమ్మకందారులు ఒక వర్తకం నుండి వెనక్కి తగ్గడానికి మా వద్ద ఒక ఎంపిక ఉంది. కొన్ని నమూనాలలో, ప్రకటనలు గడువు ముగిసే ముందు కొంత కాలం పాటు బదులుగా లైవ్‌లో ఉంటాయి. మీ మార్కెట్ రూపకల్పనపై ఆధారపడి, అది మీ ఇష్టం. + +ఈ కోడ్ ఒక వర్తకాన్ని అమలు చేయడానికి ఉపయోగించే కోడ్‌కు చాలా పోలి ఉంటుంది, కేవలం కరెన్సీ చేతులు మారదు మరియు వస్తువు ప్రకటన పోస్టర్‌కు తిరిగి వెళుతుంది. + +```solidity +function cancelTrade(uint256 _trade) + public +{ + Trade memory trade = trades[_trade]; + require( + msg.sender == trade.poster, + "వర్తకాన్ని పోస్టర్ మాత్రమే రద్దు చేయగలరు." + ); + require(trade.status == "Open", "వర్తకం ఓపెన్‌లో లేదు."); + itemToken.transferFrom(address(this), trade.poster, trade.item); + trades[_trade].status = "Cancelled"; + emit TradeStatusChange(_trade, "Cancelled"); +} +``` + +అంతే. మీరు అమలు యొక్క చివరికి చేరుకున్నారు. కొన్ని వ్యాపార భావనలను కోడ్‌లో వ్యక్తీకరించినప్పుడు అవి ఎంత కాంపాక్ట్‌గా ఉంటాయో చూడటం చాలా ఆశ్చర్యకరంగా ఉంటుంది, మరియు ఇది అలాంటి కేసులలో ఒకటి. పూర్తి కాంట్రాక్ట్‌ను [మా రెపోలో](https://github.com/HQ20/contracts/blob/master/contracts/classifieds/Classifieds.sol) తనిఖీ చేయండి. + +## ముగింపు {#conclusion} + +క్లాసిఫైడ్ బోర్డులు ఒక సాధారణ మార్కెట్ కాన్ఫిగరేషన్, ఇవి ఇంటర్నెట్‌తో భారీగా విస్తరించి, కొంతమంది గుత్తాధిపత్య విజేతలతో అత్యంత ప్రజాదరణ పొందిన వ్యాపార నమూనాగా మారాయి. + +క్లాసిఫైడ్ బోర్డులు ఒక బ్లాక్‌చైన్ వాతావరణంలో పునరావృతం చేయడానికి కూడా ఒక సులభమైన సాధనం, ఇవి ప్రస్తుత దిగ్గజాలకు సవాలును సాధ్యం చేసే చాలా నిర్దిష్ట లక్షణాలను కలిగి ఉంటాయి. + +ఈ వ్యాసంలో, నేను ఒక క్లాసిఫైడ్ బోర్డు వ్యాపారం యొక్క వ్యాపార వాస్తవికతను సాంకేతిక అమలుతో అనుసంధానించడానికి ఒక ప్రయత్నం చేశాను. మీకు సరైన నైపుణ్యాలు ఉంటే, అమలు కోసం ఒక దార్శనికతను మరియు ఒక రోడ్‌మ్యాప్‌ను సృష్టించడానికి ఈ జ్ఞానం మీకు సహాయపడాలి. + +ఎప్పటిలాగే, మీరు ఏదైనా సరదాగా నిర్మించబోతున్నట్లయితే మరియు కొన్ని సలహాలను స్వాగతిస్తే, దయచేసి [నాకు ఒక సందేశం పంపండి](https://albertocuesta.es/)! నేను సహాయం చేయడానికి ఎల్లప్పుడూ సంతోషిస్తాను. diff --git a/public/content/translations/te/developers/tutorials/how-to-mint-an-nft/index.md b/public/content/translations/te/developers/tutorials/how-to-mint-an-nft/index.md new file mode 100644 index 00000000000..ee8d806da49 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/how-to-mint-an-nft/index.md @@ -0,0 +1,335 @@ +--- +title: "NFTని ఎలా ముద్రించాలి (NFT ట్యుటోరియల్ సిరీస్లో 2/3వ భాగం)" +description: "ఈ ట్యుటోరియల్ మా స్మార్ట్ కాంట్రాక్ట్ మరియు Web3ని ఉపయోగించి ఇతీరియము బ్లాక్ చైనులో NFTని ఎలా ముద్రించాలో వివరిస్తుంది." +author: "Sumi Mudgil" +tags: + [ + "ERC-721", + "alchemy", + "దృఢత్వం", + "స్మార్ట్ కాంట్రాక్టులు" + ] +skill: beginner +lang: te +published: 2021-04-22 +--- + +[Beeple](https://www.nytimes.com/2021/03/11/arts/design/nft-auction-christies-beeple.html): $69 మిలియన్ +[3LAU](https://www.forbes.com/sites/abrambrown/2021/03/03/3lau-nft-nonfungible-tokens-justin-blau/?sh=5f72ef64643b): $11 మిలియన్ +[Grimes](https://www.theguardian.com/music/2021/mar/02/grimes-sells-digital-art-collection-non-fungible-tokens): $6 మిలియన్ + +వారందరూ Alchemy యొక్క శక్తివంతమైన APIని ఉపయోగించి వారి NFTలను ముద్రించారు. ఈ ట్యుటోరియల్లో, \<10 నిమిషాల్లో అదే విధంగా ఎలా చేయాలో మేము మీకు నేర్పిస్తాము. + +“NFTని ముద్రించడం” అనేది మీ ERC-721 టోకెన్ యొక్క ఒక ప్రత్యేక ఉదాహరణను బ్లాక్ చైనులో ప్రచురించే చర్య. [ఈ NFT ట్యుటోరియల్ సిరీస్లోని 1వ భాగం](/developers/tutorials/how-to-write-and-deploy-an-nft/) నుండి మా స్మార్ట్ కాంట్రాక్ట్ను ఉపయోగించి, మన Web3 నైపుణ్యాలను ప్రదర్శిస్తూ ఒక NFTని ముద్రిద్దాం. ఈ ట్యుటోరియల్ ముగిసేసరికి, మీ హృదయం (మరియు వాలెట్) కోరుకున్నన్ని NFTలను మీరు ముద్రించగలుగుతారు! + +మొదలు పెడదాము! + +## దశ 1: Web3ని ఇన్స్టాల్ చేయండి {#install-web3} + +మీరు మీ NFT స్మార్ట్ కాంట్రాక్ట్ను సృష్టించడంపై మొదటి ట్యుటోరియల్ని అనుసరించి ఉంటే, మీకు ఇప్పటికే Ethers.jsను ఉపయోగించడంలో అనుభవం ఉంటుంది. Web3 కూడా Ethers లాంటిదే, ఎందుకంటే ఇది ఇతీరియము బ్లాక్ చైనుకు అభ్యర్థనలను సృష్టించడాన్ని సులభతరం చేయడానికి ఉపయోగించే ఒక లైబ్రరీ. ఈ ట్యుటోరియల్లో మనం [Alchemy Web3](https://docs.alchemyapi.io/alchemy/documentation/alchemy-web3)ని ఉపయోగిస్తాము, ఇది ఆటోమేటిక్ రీట్రైలు మరియు బలమైన WebSocket మద్దతును అందించే ఒక మెరుగైన Web3 లైబ్రరీ. + +మీ ప్రాజెక్ట్ హోమ్ డైరెక్టరీలో రన్ చేయండి: + +``` +npm install @alch/alchemy-web3 +``` + +## దశ 2: `mint-nft.js` ఫైల్ను సృష్టించండి {#create-mintnftjs} + +మీ స్క్రిప్ట్స్ డైరెక్టరీ లోపల, `mint-nft.js` ఫైల్ను సృష్టించి, కింది కోడ్ లైన్లను జోడించండి: + +```js +require("dotenv").config() +const API_URL = process.env.API_URL +const { createAlchemyWeb3 } = require("@alch/alchemy-web3") +const web3 = createAlchemyWeb3(API_URL) +``` + +## దశ 3: మీ కాంట్రాక్ట్ ABIని తీసుకోండి {#contract-abi} + +మన కాంట్రాక్ట్ ABI (అప్లికేషన్ బైనరీ ఇంటర్ఫేస్) అనేది మన స్మార్ట్ కాంట్రాక్ట్తో ఇంటరాక్ట్ అవ్వడానికి ఉపయోగపడే ఇంటర్ఫేస్. మీరు కాంట్రాక్ట్ ABIల గురించి మరింత [ఇక్కడ](https://docs.alchemyapi.io/alchemy/guides/eth_getlogs#what-are-ab-is) తెలుసుకోవచ్చు. Hardhat మన కోసం స్వయంచాలకంగా ఒక ABIని ఉత్పత్తి చేసి, దాన్ని `MyNFT.json` ఫైల్లో సేవ్ చేస్తుంది. దీన్ని ఉపయోగించడానికి, మన `mint-nft.js` ఫైల్కు కింది కోడ్ లైన్లను జోడించి, కంటెంట్లను పార్స్ చేయాలి: + +```js +const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json") +``` + +మీరు ABIని చూడాలనుకుంటే, దాన్ని మీ కన్సోల్లో ప్రింట్ చేయవచ్చు: + +```js +console.log(JSON.stringify(contract.abi)) +``` + +`mint-nft.js`ని రన్ చేసి, మీ ABI కన్సోల్లో ప్రింట్ అవడాన్ని చూడటానికి, మీ టెర్మినల్కి నావిగేట్ చేసి, ఇలా రన్ చేయండి: + +```js +node scripts/mint-nft.js +``` + +## దశ 4: IPFSని ఉపయోగించి మీ NFT కోసం మెటాడేటాను కాన్ఫిగర్ చేయండి {#config-meta} + +1వ భాగంలోని మన ట్యుటోరియల్ నుండి మీకు గుర్తున్నట్లయితే, మన `mintNFT` స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్ ఒక tokenURI పారామీటర్ను తీసుకుంటుంది. అది NFT యొక్క మెటాడేటాను వివరించే ఒక JSON డాక్యుమెంట్కి రిసాల్వ్ అవ్వాలి — ఇది నిజానికి NFTకి జీవం పోస్తుంది, దీనికి పేరు, వివరణ, చిత్రం మరియు ఇతర లక్షణాల వంటి కాన్ఫిగర్ చేయగల ప్రాపర్టీలు ఉండేలా అనుమతిస్తుంది. + +> _ఇంటర్‌ప్లానెటరీ ఫైల్ సిస్టమ్ (IPFS) అనేది ఒక డిస్ట్రిబ్యూటెడ్ ఫైల్ సిస్టమ్లో డేటాను నిల్వ చేయడానికి మరియు పంచుకోవడానికి ఉపయోగించే ఒక వికేంద్రీకృత ప్రోటోకాల్ మరియు పీర్-టు-పీర్ నెట్వర్క్._ + +మన NFT ఆస్తిని మరియు మెటాడేటాను నిల్వ చేయడానికి, మన NFT నిజంగా వికేంద్రీకృతంగా ఉందని నిర్ధారించుకోవడానికి, మనం Pinata, ఒక సౌకర్యవంతమైన IPFS API మరియు టూల్కిట్ను ఉపయోగిస్తాము. మీకు Pinata ఖాతా లేకపోతే, [ఇక్కడ](https://app.pinata.cloud) ఉచిత ఖాతా కోసం సైన్ అప్ చేసి, మీ ఇమెయిల్ను ధృవీకరించడానికి దశలను పూర్తి చేయండి. + +మీరు ఖాతాను సృష్టించిన తర్వాత: + +- “Files” పేజీకి నావిగేట్ చేసి, పేజీ యొక్క ఎగువ-ఎడమ వైపున ఉన్న నీలం రంగు "Upload" బటన్ను క్లిక్ చేయండి. + +- Pinataకు ఒక చిత్రాన్ని అప్లోడ్ చేయండి — ఇది మీ NFT కోసం చిత్ర ఆస్తి అవుతుంది. మీకు నచ్చిన పేరును ఆస్తికి పెట్టడానికి సంకోచించకండి + +- మీరు అప్లోడ్ చేసిన తర్వాత, "Files" పేజీలోని పట్టికలో మీరు ఫైల్ సమాచారాన్ని చూస్తారు. మీరు ఒక CID కాలమ్ను కూడా చూస్తారు. దాని పక్కన ఉన్న కాపీ బటన్ను క్లిక్ చేయడం ద్వారా మీరు CIDని కాపీ చేయవచ్చు. మీరు మీ అప్లోడ్ను ఇక్కడ చూడవచ్చు: `https://gateway.pinata.cloud/ipfs/`. ఉదాహరణకు, మేము IPFSలో ఉపయోగించిన చిత్రాన్ని మీరు [ఇక్కడ](https://gateway.pinata.cloud/ipfs/QmZdd5KYdCFApWn7eTZJ1qgJu18urJrP9Yh1TZcZrZxxB5) కనుగొనవచ్చు. + +దృశ్యపరంగా నేర్చుకునేవారి కోసం, పై దశలు ఇక్కడ సంగ్రహించబడ్డాయి: + +![Pinataకు మీ చిత్రాన్ని ఎలా అప్లోడ్ చేయాలి](./instructionsPinata.gif) + +ఇప్పుడు, మనం Pinataకు ఇంకొక డాక్యుమెంట్ను అప్లోడ్ చేయాలి. కానీ అలా చేసే ముందు, మనం దాన్ని సృష్టించాలి! + +మీ రూట్ డైరెక్టరీలో, `nft-metadata.json` అనే కొత్త ఫైల్ను తయారు చేసి, కింది json కోడ్ను జోడించండి: + +```json +{ + "attributes": [ + { + "trait_type": "జాతి", + "value": "మాల్టిపూ" + }, + { + "trait_type": "కంటి రంగు", + "value": "మోచా" + } + ], + "description": "ప్రపంచంలోనే అత్యంత పూజ్యమైన మరియు సున్నితమైన కుక్కపిల్ల.", + "image": "ipfs://QmWmvTJmJU3pozR9ZHFmQC2DNDwi2XJtf3QGyYiiagFSWb", + "name": "రామ్సెస్" +} +``` + +jsonలోని డేటాను మార్చడానికి సంకోచించకండి. మీరు గుణాల విభాగానికి తీసివేయవచ్చు లేదా జోడించవచ్చు. అన్నింటికన్నా ముఖ్యంగా, చిత్ర ఫీల్డ్ మీ IPFS చిత్రం యొక్క స్థానాన్ని సూచిస్తుందని నిర్ధారించుకోండి — లేకపోతే, మీ NFTలో ఒక (చాలా అందమైన!) ఫోటో ఉంటుంది కుక్క. + +మీరు JSON ఫైల్ను సవరించడం పూర్తి చేసిన తర్వాత, దాన్ని సేవ్ చేసి, చిత్రాన్ని అప్లోడ్ చేయడానికి మనం చేసిన అవే దశలను అనుసరిస్తూ Pinataకు అప్లోడ్ చేయండి. + +![మీ nft-metadata.jsonను Pinataకు ఎలా అప్లోడ్ చేయాలి](./uploadPinata.gif) + +## దశ 5: మీ కాంట్రాక్ట్ యొక్క ఉదాహరణను సృష్టించండి {#instance-contract} + +ఇప్పుడు, మన కాంట్రాక్ట్తో ఇంటరాక్ట్ అవ్వడానికి, మనం మన కోడ్లో దాని యొక్క ఒక ఉదాహరణను సృష్టించాలి. అలా చేయడానికి మనకు మన కాంట్రాక్ట్ చిరునామా అవసరం, దాన్ని మనం కాంట్రాక్ట్ను డిప్లాయ్ చేయడానికి ఉపయోగించిన చిరునామాను డిప్లాయ్మెంట్ నుండి లేదా [Blockscout](https://eth-sepolia.blockscout.com/) లో వెతకడం ద్వారా పొందవచ్చు. + +![Etherscanలో మీ కాంట్రాక్ట్ చిరునామాను వీక్షించండి](./view-contract-etherscan.png) + +పై ఉదాహరణలో, మన కాంట్రాక్ట్ చిరునామా 0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778. + +తరువాత మనం ABI మరియు చిరునామాను ఉపయోగించి మన కాంట్రాక్ట్ను సృష్టించడానికి Web3 [కాంట్రాక్ట్ మెథడ్](https://docs.web3js.org/api/web3-eth-contract/class/Contract)ని ఉపయోగిస్తాము. మీ `mint-nft.js` ఫైల్లో, కింది వాటిని జోడించండి: + +```js +const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778" + +const nftContract = new web3.eth.Contract(contract.abi, contractAddress) +``` + +## దశ 6: `.env` ఫైల్ను అప్డేట్ చేయండి {#update-env} + +ఇప్పుడు, ఇతీరియము చైన్కు లావాదేవీలను సృష్టించి, పంపడానికి, ఖాతా నాన్స్ను పొందడానికి మనం మీ పబ్లిక్ ఇతీరియము ఖాతా చిరునామాను ఉపయోగిస్తాము (కింద వివరిస్తాము). + +మీ పబ్లిక్ కీని మీ `.env` ఫైల్కు జోడించండి — మీరు ట్యుటోరియల్ యొక్క 1వ భాగాన్ని పూర్తి చేసి ఉంటే, మన `.env` ఫైల్ ఇప్పుడు ఇలా కనిపించాలి: + +```js +API_URL = "https://eth-sepolia.g.alchemy.com/v2/మీ-ఎపిఐ-కీ" +PRIVATE_KEY = "మీ-ప్రైవేట్-ఖాతా-చిరునామా" +PUBLIC_KEY = "మీ-పబ్లిక్-ఖాతా-చిరునామా" +``` + +## దశ 7: మీ లావాదేవీని సృష్టించండి {#create-txn} + +మొదట, `mintNFT(tokenData)` అనే ఫంక్షన్ను నిర్వచించి, కింది వాటిని చేయడం ద్వారా మన లావాదేవీని సృష్టిద్దాం: + +1. `.env` ఫైల్ నుండి మీ _PRIVATE_KEY_ మరియు _PUBLIC_KEY_లను తీసుకోండి. + +2. తరువాత, మనం ఖాతా నాన్స్ను కనుక్కోవాలి. మీ చిరునామా నుండి పంపిన లావాదేవీల సంఖ్యను ట్రాక్ చేయడానికి నాన్స్ స్పెసిఫికేషన్ ఉపయోగించబడుతుంది — ఇది మనకు భద్రతా ప్రయోజనాల కోసం మరియు [రీప్లే దాడులను](https://docs.alchemyapi.io/resources/blockchain-glossary#account-nonce) నివారించడానికి అవసరం. మీ చిరునామా నుండి పంపిన లావాదేవీల సంఖ్యను పొందడానికి, మనం [getTransactionCount](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_gettransactioncount)ని ఉపయోగిస్తాము. + +3. చివరగా మనం మన లావాదేవీని కింది సమాచారంతో సెటప్ చేస్తాము: + +- `'from': PUBLIC_KEY` — మన లావాదేవీ యొక్క మూలం మన పబ్లిక్ చిరునామా + +- `'to': contractAddress` — మనం ఇంటరాక్ట్ అవ్వాలనుకుంటున్న మరియు లావాదేవీని పంపాలనుకుంటున్న కాంట్రాక్ట్ + +- `'nonce': nonce` — మన చిరునామా నుండి పంపిన లావాదేవీల సంఖ్యతో కూడిన ఖాతా నాన్స్ + +- `'gas': estimatedGas` — లావాదేవీని పూర్తి చేయడానికి అవసరమైన అంచనా గ్యాస్ + +- `'data': nftContract.methods.mintNFT(PUBLIC_KEY, md).encodeABI()` — ఈ లావాదేవీలో మనం చేయాలనుకుంటున్న కంప్యూటేషన్ — ఈ సందర్భంలో ఇది ఒక NFTని ముద్రించడం + +మీ `mint-nft.js` ఫైల్ ఇప్పుడు ఇలా కనిపించాలి: + +```js + require('dotenv').config(); + const API_URL = process.env.API_URL; + const PUBLIC_KEY = process.env.PUBLIC_KEY; + const PRIVATE_KEY = process.env.PRIVATE_KEY; + + const { createAlchemyWeb3 } = require("@alch/alchemy-web3"); + const web3 = createAlchemyWeb3(API_URL); + + const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json"); + const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778"; + const nftContract = new web3.eth.Contract(contract.abi, contractAddress); + + async function mintNFT(tokenURI) { + const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, 'latest'); //తాజా నాన్స్ను పొందండి + + //లావాదేవీ + const tx = { + 'from': PUBLIC_KEY, + 'to': contractAddress, + 'nonce': nonce, + 'gas': 500000, + 'data': nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI() + }; + }​ +``` + +## దశ 8: లావాదేవీపై సంతకం చేయండి {#sign-txn} + +ఇప్పుడు మనం మన లావాదేవీని సృష్టించాము కాబట్టి, దాన్ని పంపడానికి మనం దానిపై సంతకం చేయాలి. ఇక్కడే మనం మన ప్రైవేట్ కీని ఉపయోగిస్తాము. + +`web3.eth.sendSignedTransaction` మనకు లావాదేవీ హాష్ను ఇస్తుంది, దాన్ని మనం మన లావాదేవీ మైన్ చేయబడిందని మరియు నెట్వర్క్ ద్వారా డ్రాప్ అవ్వలేదని నిర్ధారించుకోవడానికి ఉపయోగించవచ్చు. లావాదేవీ సంతకం విభాగంలో, మన లావాదేవీ విజయవంతంగా జరిగిందో లేదో తెలుసుకోవడానికి మనం కొన్ని ఎర్రర్ చెకింగ్ను జోడించామని మీరు గమనిస్తారు. + +```js +require("dotenv").config() +const API_URL = process.env.API_URL +const PUBLIC_KEY = process.env.PUBLIC_KEY +const PRIVATE_KEY = process.env.PRIVATE_KEY + +const { createAlchemyWeb3 } = require("@alch/alchemy-web3") +const web3 = createAlchemyWeb3(API_URL) + +const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json") +const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778" +const nftContract = new web3.eth.Contract(contract.abi, contractAddress) + +async function mintNFT(tokenURI) { + const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, "latest") //తాజా నాన్స్ను పొందండి + + //లావాదేవీ + const tx = { + from: PUBLIC_KEY, + to: contractAddress, + nonce: nonce, + gas: 500000, + data: nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI(), + } + + const signPromise = web3.eth.accounts.signTransaction(tx, PRIVATE_KEY) + signPromise + .then((signedTx) => { + web3.eth.sendSignedTransaction( + signedTx.rawTransaction, + function (err, hash) { + if (!err) { + console.log( + "మీ లావాదేవీ యొక్క హాష్: ", + hash, + "\nమీ లావాదేవీ యొక్క స్థితిని వీక్షించడానికి Alchemy యొక్క Mempoolని తనిఖీ చేయండి!" + ) + } else { + console.log( + "మీ లావాదేవీని సమర్పించేటప్పుడు ఏదో తప్పు జరిగింది:", + err + ) + } + } + ) + }) + .catch((err) => { + console.log(" ప్రామిస్ విఫలమైంది:", err) + }) +} +``` + +## దశ 9: `mintNFT`ని కాల్ చేసి, నోడ్ `mint-nft.js`ని రన్ చేయండి {#call-mintnft-fn} + +మీరు Pinataకు అప్లోడ్ చేసిన `metadata.json` గుర్తుందా? Pinata నుండి దాని హాష్కోడ్ను పొంది, కింది వాటిని `mintNFT` ఫంక్షన్కు పారామీటర్గా పాస్ చేయండి: `https://gateway.pinata.cloud/ipfs/` + +హాష్కోడ్ను ఎలా పొందాలో ఇక్కడ ఉంది: + +![Pinataలో మీ nft మెటాడేటా హాష్కోడ్ను ఎలా పొందాలి](./metadataPinata.gif)_Pinataలో మీ nft మెటాడేటా హాష్కోడ్ను ఎలా పొందాలి_ + +> `https://gateway.pinata.cloud/ipfs/` ను ఒక ప్రత్యేక విండోలో లోడ్ చేయడం ద్వారా మీరు కాపీ చేసిన హాష్కోడ్ మీ **metadata.json**కు లింక్ అవుతుందో లేదో డబుల్ చెక్ చేసుకోండి. పేజీ కింది స్క్రీన్షాట్ లాగా కనిపించాలి: + +![మీ పేజీ json మెటాడేటాను ప్రదర్శించాలి](./metadataJSON.png)_మీ పేజీ json మెటాడేటాను ప్రదర్శించాలి_ + +మొత్తం మీద, మీ కోడ్ ఇలా కనిపించాలి: + +```js +require("dotenv").config() +const API_URL = process.env.API_URL +const PUBLIC_KEY = process.env.PUBLIC_KEY +const PRIVATE_KEY = process.env.PRIVATE_KEY + +const { createAlchemyWeb3 } = require("@alch/alchemy-web3") +const web3 = createAlchemyWeb3(API_URL) + +const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json") +const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778" +const nftContract = new web3.eth.Contract(contract.abi, contractAddress) + +async function mintNFT(tokenURI) { + const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, "latest") //తాజా నాన్స్ను పొందండి + + //లావాదేవీ + const tx = { + from: PUBLIC_KEY, + to: contractAddress, + nonce: nonce, + gas: 500000, + data: nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI(), + } + + const signPromise = web3.eth.accounts.signTransaction(tx, PRIVATE_KEY) + signPromise + .then((signedTx) => { + web3.eth.sendSignedTransaction( + signedTx.rawTransaction, + function (err, hash) { + if (!err) { + console.log( + "మీ లావాదేవీ యొక్క హాష్: ", + hash, + "\nమీ లావాదేవీ యొక్క స్థితిని వీక్షించడానికి Alchemy యొక్క Mempoolని తనిఖీ చేయండి!" + ) + } else { + console.log( + "మీ లావాదేవీని సమర్పించేటప్పుడు ఏదో తప్పు జరిగింది:", + err + ) + } + } + ) + }) + .catch((err) => { + console.log("ప్రామిస్ విఫలమైంది:", err) + }) +} + +mintNFT("ipfs://QmYueiuRNmL4MiA2GwtVMm6ZagknXnSpQnB3z2gWbz36hP") +``` + +ఇప్పుడు, మీ NFTని డిప్లాయ్ చేయడానికి `node scripts/mint-nft.js`ని రన్ చేయండి. కొన్ని సెకన్ల తర్వాత, మీ టెర్మినల్లో మీరు ఇలాంటి స్పందనను చూడాలి: + + ``` + మీ లావాదేవీ యొక్క హాష్: 0x301791fdf492001fcd9d5e5b12f3aa1bbbea9a88ed24993a8ab2cdae2d06e1e8 + + మీ లావాదేవీ యొక్క స్థితిని వీక్షించడానికి Alchemy యొక్క Mempoolని తనిఖీ చేయండి! + ``` + +తరువాత, మీ లావాదేవీ యొక్క స్థితిని చూడటానికి (అది పెండింగ్లో ఉందా, మైన్ చేయబడిందా, లేదా నెట్వర్క్ ద్వారా డ్రాప్ చేయబడిందా అని) మీ [Alchemy mempool](https://dashboard.alchemyapi.io/mempool)ని సందర్శించండి. మీ లావాదేవీ డ్రాప్ అయితే, [Blockscout](https://eth-sepolia.blockscout.com/)ని తనిఖీ చేసి, మీ లావాదేవీ హాష్ కోసం శోధించడం కూడా సహాయపడుతుంది. + +![Etherscanలో మీ NFT లావాదేవీ హాష్ను వీక్షించండి](./view-nft-etherscan.png)_Etherscanలో మీ NFT లావాదేవీ హాష్ను వీక్షించండి_ + +అంతే! మీరు ఇప్పుడు ఇతీరియము బ్లాక్ చైనులో ఒక NFTని డిప్లాయ్ చేసి, ముద్రించారు + +`mint-nft.js`ను ఉపయోగించి మీ హృదయం (మరియు వాలెట్) కోరుకున్నన్ని NFTలను మీరు ముద్రించవచ్చు! NFT యొక్క మెటాడేటాను వివరించే కొత్త tokenURIని పాస్ చేయాలని నిర్ధారించుకోండి (లేకపోతే, మీరు వేర్వేరు IDలతో ఒకేలాంటి వాటిని చాలా తయారు చేస్తారు). + +బహుశా, మీరు మీ వాలెట్లో మీ NFTని ప్రదర్శించాలనుకుంటారు — కాబట్టి [3వ భాగం: మీ వాలెట్లో మీ NFTని ఎలా చూడాలి](/developers/tutorials/how-to-view-nft-in-metamask/)ని తప్పకుండా చూడండి! diff --git a/public/content/translations/te/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md b/public/content/translations/te/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md new file mode 100644 index 00000000000..2ffa206c4c8 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md @@ -0,0 +1,108 @@ +--- +title: "పరీక్షించడం కోసం సొలిడిటీ స్మార్ట్ కాంట్రాక్ట్‌లను ఎలా మాక్ చేయాలి" +description: "పరీక్షిస్తున్నప్పుడు మీ కాంట్రాక్టులను ఎందుకు ఎగతాళి చేయాలి" +author: Markus Waas +lang: te +tags: + [ + "దృఢత్వం", + "స్మార్ట్ కాంట్రాక్టులు", + "పరీక్షించడం", + "మాకింగ్" + ] +skill: intermediate +published: 2020-05-02 +source: soliditydeveloper.com +sourceUrl: https://soliditydeveloper.com/mocking-contracts +--- + +[మాక్ ఆబ్జెక్ట్‌లు](https://wikipedia.org/wiki/Mock_object) అనేవి ఆబ్జెక్ట్-ఓరియెంటెడ్ ప్రోగ్రామింగ్‌లో ఒక సాధారణ డిజైన్ ప్యాటర్న్. పాత ఫ్రెంచ్ పదం 'mocquer' నుండి 'ఎగతాళి చేయడం' అనే అర్థంతో వచ్చిన ఇది, 'నిజమైన దాన్ని అనుకరించడం'గా పరిణామం చెందింది, ఇది వాస్తవానికి మనం ప్రోగ్రామింగ్‌లో చేసే పని. దయచేసి మీకు కావాలనుకుంటేనే మీ స్మార్ట్ కాంట్రాక్ట్‌లను ఎగతాళి చేయండి, కానీ మీకు వీలైనప్పుడల్లా వాటిని మాక్ చేయండి. ఇది మీ జీవితాన్ని సులభతరం చేస్తుంది. + +## మాక్స్‌తో కాంట్రాక్ట్‌లను యూనిట్-టెస్టింగ్ చేయడం {#unit-testing-contracts-with-mocks} + +ఒక కాంట్రాక్ట్‌ను మాక్ చేయడం అంటే ఆ కాంట్రాక్ట్ యొక్క రెండవ వెర్షన్‌ను సృష్టించడం, ఇది అసలైన దానికి చాలా పోలి ఉంటుంది, కానీ డెవలపర్ సులభంగా నియంత్రించగల విధంగా ఉంటుంది. మీరు తరచుగా సంక్లిష్టమైన కాంట్రాక్టులతో ముగుస్తారు, అక్కడ మీరు [కాంట్రాక్టులోని చిన్న భాగాలను మాత్రమే యూనిట్-టెస్ట్ చేయాలనుకుంటారు](/developers/docs/smart-contracts/testing/). సమస్య ఏమిటంటే, ఈ చిన్న భాగాన్ని పరీక్షించడానికి ఒక నిర్దిష్ట కాంట్రాక్ట్ స్టేట్ అవసరమై, దాన్ని చేరుకోవడం కష్టమైతే ఏం చేయాలి? + +కాంట్రాక్ట్‌ను అవసరమైన స్టేట్‌లోకి తీసుకువచ్చే సంక్లిష్టమైన టెస్ట్ సెటప్ లాజిక్‌ను మీరు ప్రతిసారీ వ్రాయవచ్చు లేదా మీరు ఒక మాక్‌ను వ్రాయవచ్చు. ఇన్హెరిటెన్స్‌తో ఒక కాంట్రాక్ట్‌ను మాక్ చేయడం సులభం. అసలు కాంట్రాక్ట్ నుండి ఇన్హెరిట్ అయ్యే రెండవ మాక్ కాంట్రాక్ట్‌ను సృష్టించండి. ఇప్పుడు మీరు మీ మాక్‌కు ఫంక్షన్‌లను ఓవర్‌రైడ్ చేయవచ్చు. ఒక ఉదాహరణతో చూద్దాం. + +## ఉదాహరణ: ప్రైవేట్ ERC20 {#example-private-erc20} + +మేము ఒక ఉదాహరణ ERC-20 కాంట్రాక్ట్‌ను ఉపయోగిస్తాము, దీనికి ప్రారంభ ప్రైవేట్ సమయం ఉంటుంది. యజమాని ప్రైవేట్ వినియోగదారులను నిర్వహించగలరు మరియు ప్రారంభంలో టోకెన్‌లను స్వీకరించడానికి వారికి మాత్రమే అనుమతి ఉంటుంది. ఒక నిర్దిష్ట సమయం గడిచిన తర్వాత, ప్రతి ఒక్కరూ టోకెన్‌లను ఉపయోగించడానికి అనుమతించబడతారు. మీకు ఆసక్తి ఉంటే, మేము కొత్త OpenZeppelin కాంట్రాక్టులు v3 నుండి [`_beforeTokenTransfer`](https://docs.openzeppelin.com/contracts/5.x/extending-contracts#using-hooks) హుక్‌ను ఉపయోగిస్తున్నాము. + +```solidity +pragma solidity ^0.6.0; + +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; + +contract PrivateERC20 is ERC20, Ownable { + mapping (address => bool) public isPrivateUser; + uint256 private publicAfterTime; + + constructor(uint256 privateERC20timeInSec) ERC20("PrivateERC20", "PRIV") public { + publicAfterTime = now + privateERC20timeInSec; + } + + function addUser(address user) external onlyOwner { + isPrivateUser[user] = true; + } + + function isPublic() public view returns (bool) { + return now >= publicAfterTime; + } + + function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override { + super._beforeTokenTransfer(from, to, amount); + + require(_validRecipient(to), "PrivateERC20: చెల్లని గ్రహీత"); + } + + function _validRecipient(address to) private view returns (bool) { + if (isPublic()) { + return true; + } + + return isPrivateUser[to]; + } +} +``` + +ఇప్పుడు దానిని మాక్ చేద్దాం. + +```solidity +pragma solidity ^0.6.0; +import "../PrivateERC20.sol"; + +contract PrivateERC20Mock is PrivateERC20 { + bool isPublicConfig; + + constructor() public PrivateERC20(0) {} + + function setIsPublic(bool isPublic) external { + isPublicConfig = isPublic; + } + + function isPublic() public view returns (bool) { + return isPublicConfig; + } +} +``` + +మీకు కింది దోష సందేశాలలో ఒకటి వస్తుంది: + +- `PrivateERC20Mock.sol: TypeError: Overriding function is missing "override" specifier.` +- `PrivateERC20.sol: TypeError: Trying to override non-virtual function. Did you forget to add "virtual"?.` + +మనం కొత్త 0.6 సొలిడిటీ వెర్షన్‌ను ఉపయోగిస్తున్నందున, ఓవర్‌రైడ్ చేయగల ఫంక్షన్‌ల కోసం `virtual` కీవర్డ్‌ను మరియు ఓవర్‌రైడ్ చేస్తున్న ఫంక్షన్ కోసం `override`ను జోడించాలి. కాబట్టి ఆ రెండింటినీ `isPublic` ఫంక్షన్‌లకు జోడిద్దాం. + +ఇప్పుడు మీ యూనిట్ టెస్టులలో, మీరు బదులుగా `PrivateERC20Mock`ని ఉపయోగించవచ్చు. మీరు ప్రైవేట్ వినియోగ సమయంలో ప్రవర్తనను పరీక్షించాలనుకున్నప్పుడు, `setIsPublic(false)` ఉపయోగించండి మరియు అదేవిధంగా పబ్లిక్ వినియోగ సమయాన్ని పరీక్షించడానికి `setIsPublic(true)`ని ఉపయోగించండి. అయితే మన ఉదాహరణలో, సమయాలను తదనుగుణంగా మార్చడానికి మనం [టైమ్ హెల్పర్‌లను](https://docs.openzeppelin.com/test-helpers/0.5/api#increase) కూడా ఉపయోగించవచ్చు. అయితే ఇప్పుడు మాకింగ్ యొక్క ఆలోచన స్పష్టంగా ఉండాలి మరియు సమయాన్ని కేవలం ముందుకు జరపడం అంత సులభం కాని సందర్భాలను మీరు ఊహించగలరు. + +## అనేక కాంట్రాక్టులను మాక్ చేయడం {#mocking-many-contracts} + +ప్రతి ఒక్క మాక్ కోసం మీరు మరొక కాంట్రాక్ట్‌ను సృష్టించవలసి వస్తే అది గందరగోళంగా మారవచ్చు. ఇది మీకు ఇబ్బందిగా అనిపిస్తే, మీరు [మాక్‌కాంట్రాక్ట్](https://github.com/gnosis/mock-contract) లైబ్రరీని చూడవచ్చు. ఇది కాంట్రాక్ట్‌ల ప్రవర్తనలను అప్పటికప్పుడు ఓవర్‌రైడ్ చేయడానికి మరియు మార్చడానికి మిమ్మల్ని అనుమతిస్తుంది. అయితే, ఇది మరొక కాంట్రాక్ట్‌కు కాల్స్‌ను మాక్ చేయడానికి మాత్రమే పనిచేస్తుంది, కాబట్టి ఇది మన ఉదాహరణకు పనిచేయదు. + +## మాకింగ్ మరింత శక్తివంతంగా ఉంటుంది {#mocking-can-be-even-more-powerful} + +మాకింగ్ యొక్క శక్తులు అంతటితో ముగియవు. + +- ఫంక్షన్‌లను జోడించడం: ఒక నిర్దిష్ట ఫంక్షన్‌ను ఓవర్‌రైడ్ చేయడం మాత్రమే కాదు, అదనపు ఫంక్షన్‌లను జోడించడం కూడా ఉపయోగకరంగా ఉంటుంది. టోకెన్‌లకు ఒక మంచి ఉదాహరణ, అదనంగా ఒక `mint` ఫంక్షన్‌ను కలిగి ఉండటం. ఇది ఏ వినియోగదారుడైనా ఉచితంగా కొత్త టోకెన్‌లను పొందడానికి అనుమతిస్తుంది. +- టెస్టునెట్‌లలో వాడకం: మీరు మీ డాప్‌తో పాటు టెస్టునెట్‌లలో మీ కాంట్రాక్టులను డిప్లాయ్ చేసి, పరీక్షించేటప్పుడు, మాక్ చేసిన వెర్షన్‌ను ఉపయోగించడాన్ని పరిగణించండి. మీకు నిజంగా అవసరమైతే తప్ప ఫంక్షన్‌లను ఓవర్‌రైడ్ చేయడం మానుకోండి. అంతిమంగా, మీరు నిజమైన లాజిక్‌ను పరీక్షించాలనుకుంటున్నారు. కానీ ఉదాహరణకు, ఒక రీసెట్ ఫంక్షన్‌ను జోడించడం ఉపయోగకరంగా ఉంటుంది, ఇది కాంట్రాక్ట్ స్టేట్‌ను ప్రారంభానికి రీసెట్ చేస్తుంది, కొత్త డిప్లాయ్‌మెంట్ అవసరం లేదు. సహజంగానే మీరు ఒక Mainnet కాంట్రాక్ట్‌లో దానిని కలిగి ఉండాలని కోరుకోరు. diff --git a/public/content/translations/te/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md b/public/content/translations/te/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md new file mode 100644 index 00000000000..aab2797d287 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md @@ -0,0 +1,705 @@ +--- +title: "స్మార్ట్ కాంట్రాక్టులను పరీక్షించడానికి ఎకిడ్నాని ఎలా ఉపయోగించాలి" +description: "స్మార్ట్ కాంట్రాక్టులను స్వయంచాలకంగా పరీక్షించడానికి ఎకిడ్నాని ఎలా ఉపయోగించాలి" +author: "Trailofbits" +lang: te +tags: + [ + "దృఢత్వం", + "స్మార్ట్ కాంట్రాక్టులు", + "భద్రత", + "పరీక్షించడం", + "fuzzing" + ] +skill: advanced +published: 2020-04-10 +source: Building secure contracts +sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/echidna +--- + +## సంస్థాపన {#installation} + +డాకర్ ద్వారా లేదా ముందుగా కంపైల్ చేసిన బైనరీని ఉపయోగించి ఎకిడ్నాని ఇన్‌స్టాల్ చేయవచ్చు. + +### డాకర్ ద్వారా ఎకిడ్నా {#echidna-through-docker} + +```bash +docker pull trailofbits/eth-security-toolbox +docker run -it -v "$PWD":/home/training trailofbits/eth-security-toolbox +``` + +_చివరి కమాండ్ మీ ప్రస్తుత డైరెక్టరీకి యాక్సెస్ ఉన్న డాకర్‌లో eth-security-toolboxను రన్ చేస్తుంది. మీరు మీ హోస్ట్ నుండి ఫైల్‌లను మార్చవచ్చు, మరియు డాకర్_ నుండి ఫైల్‌లపై సాధనాలను అమలు చేయండి + +డాకర్ లోపల, రన్ చేయండి : + +```bash +solc-select 0.5.11 +cd /home/training +``` + +### బైనరీ {#binary} + +[https://github.com/crytic/echidna/releases/tag/v1.4.0.0](https://github.com/crytic/echidna/releases/tag/v1.4.0.0) + +## ప్రాపర్టీ-ఆధారిత ఫజ్జింగ్‌కు పరిచయం {#introduction-to-property-based-fuzzing} + +ఎకిడ్నా ఒక ప్రాపర్టీ-ఆధారిత ఫజర్, మేము మా మునుపటి బ్లాగ్‌పోస్ట్‌లలో వివరించాము ([1](https://blog.trailofbits.com/2018/03/09/echidna-a-smart-fuzzer-for-ethereum/), [2](https://blog.trailofbits.com/2018/05/03/state-machine-testing-with-echidna/), [3](https://blog.trailofbits.com/2020/03/30/an-echidna-for-all-seasons/)). + +### ఫజ్జింగ్ {#fuzzing} + +[ఫజ్జింగ్](https://wikipedia.org/wiki/Fuzzing) అనేది భద్రతా సంఘంలో ఒక ప్రసిద్ధ సాంకేతికత. ప్రోగ్రామ్‌లో బగ్‌లను కనుగొనడానికి, ఇది ఎక్కువ లేదా తక్కువ యాదృచ్ఛికంగా ఉండే ఇన్‌పుట్‌లను ఉత్పత్తి చేస్తుంది. సాంప్రదాయ సాఫ్ట్‌వేర్ కోసం ఫజర్‌లు (ఉదాహరణకు [AFL](http://lcamtuf.coredump.cx/afl/) లేదా [LibFuzzer](https://llvm.org/docs/LibFuzzer.html)) బగ్‌లను కనుగొనడానికి సమర్థవంతమైన సాధనాలుగా ప్రసిద్ధి చెందాయి. + +కేవలం యాదృచ్ఛిక ఇన్‌పుట్‌ల ఉత్పత్తికి మించి, మంచి ఇన్‌పుట్‌లను ఉత్పత్తి చేయడానికి అనేక పద్ధతులు మరియు వ్యూహాలు ఉన్నాయి, వాటితో సహా: + +- ప్రతి అమలు నుండి అభిప్రాయాన్ని పొందడం మరియు దానిని ఉపయోగించి ఉత్పత్తికి మార్గనిర్దేశం చేయడం. ఉదాహరణకు, కొత్తగా ఉత్పత్తి చేయబడిన ఇన్‌పుట్ కొత్త మార్గం ఆవిష్కరణకు దారితీస్తే, దానికి దగ్గరగా కొత్త ఇన్‌పుట్‌లను ఉత్పత్తి చేయడం అర్ధవంతంగా ఉంటుంది. +- నిర్మాణాత్మక పరిమితిని గౌరవిస్తూ ఇన్‌పుట్‌ను ఉత్పత్తి చేయడం. ఉదాహరణకు, మీ ఇన్‌పుట్‌లో చెక్‌సమ్‌తో కూడిన హెడర్ ఉంటే, చెక్‌సమ్‌ను ధ్రువీకరించే ఇన్‌పుట్‌ను ఫజర్ ఉత్పత్తి చేసేలా చేయడం అర్ధవంతంగా ఉంటుంది. +- కొత్త ఇన్‌పుట్‌లను ఉత్పత్తి చేయడానికి తెలిసిన ఇన్‌పుట్‌లను ఉపయోగించడం: మీకు చెల్లుబాటు అయ్యే ఇన్‌పుట్ యొక్క పెద్ద డేటాసెట్‌కు ప్రాప్యత ఉంటే, మీ ఫజర్ దాని ఉత్పత్తిని మొదటి నుండి ప్రారంభించడం కంటే వాటి నుండి కొత్త ఇన్‌పుట్‌లను ఉత్పత్తి చేయగలదు. వీటిని సాధారణంగా _సీడ్స్_ అని అంటారు. + +### ప్రాపర్టీ-ఆధారిత ఫజ్జింగ్ {#property-based-fuzzing} + +ఎకిడ్నా ఒక నిర్దిష్ట రకం ఫజర్‌కు చెందినది: [QuickCheck](https://wikipedia.org/wiki/QuickCheck) నుండి బాగా ప్రేరణ పొందిన ప్రాపర్టీ-ఆధారిత ఫజ్జింగ్. క్రాష్‌లను కనుగొనడానికి ప్రయత్నించే క్లాసిక్ ఫజర్‌కు విరుద్ధంగా, ఎకిడ్నా వినియోగదారు-నిర్వచించిన ఇన్‌వేరియంట్‌లను బ్రేక్ చేయడానికి ప్రయత్నిస్తుంది. + +స్మార్ట్ కాంట్రాక్టులలో, ఇన్‌వేరియంట్‌లు అనేవి Solidity ఫంక్షన్‌లు, ఇవి కాంట్రాక్ట్ చేరగల ఏదైనా తప్పు లేదా చెల్లని స్థితిని సూచించగలవు, వాటితో సహా: + +- తప్పు యాక్సెస్ నియంత్రణ: దాడి చేసేవాడు కాంట్రాక్ట్ యజమాని అయ్యాడు. +- తప్పు స్టేట్ మెషిన్: కాంట్రాక్ట్ పాజ్ చేయబడినప్పుడు టోకెన్‌లను బదిలీ చేయవచ్చు. +- తప్పు అంకగణితం: వినియోగదారుడు తన బ్యాలెన్స్‌ను అండర్‌ఫ్లో చేసి, అపరిమిత ఉచిత టోకెన్‌లను పొందవచ్చు. + +### ఎకిడ్నాతో ఒక ప్రాపర్టీని పరీక్షించడం {#testing-a-property-with-echidna} + +ఎకిడ్నాతో ఒక స్మార్ట్ కాంట్రాక్టును ఎలా పరీక్షించాలో మనం చూద్దాం. లక్ష్యం కింది స్మార్ట్ కాంట్రాక్ట్ [`token.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/token.sol): + +```solidity +contract Token{ + mapping(address => uint) public balances; + function airdrop() public{ + balances[msg.sender] = 1000; + } + function consume() public{ + require(balances[msg.sender]>0); + balances[msg.sender] -= 1; + } + function backdoor() public{ + balances[msg.sender] += 1; + } +} +``` + +ఈ టోకెన్‌కు కింది గుణాలు తప్పనిసరిగా ఉండాలని మనం ఊహిద్దాం: + +- ఎవరైనా గరిష్టంగా 1000 టోకెన్‌లను కలిగి ఉండవచ్చు +- టోకెన్‌ను బదిలీ చేయలేరు (ఇది ERC20 టోకెన్ కాదు) + +### ఒక ప్రాపర్టీని రాయండి {#write-a-property} + +ఎకిడ్నా ప్రాపర్టీలు Solidity ఫంక్షన్‌లు. ఒక ప్రాపర్టీకి తప్పనిసరిగా: + +- ఆర్గ్యుమెంట్ ఏదీ ఉండకూడదు +- విజయవంతమైతే `true` తిరిగి ఇవ్వాలి +- దాని పేరు `echidna`తో ప్రారంభం కావాలి + +ఎకిడ్నా: + +- ప్రాపర్టీని పరీక్షించడానికి యాదృచ్ఛిక లావాదేవీలను స్వయంచాలకంగా ఉత్పత్తి చేయండి. +- ఒక ప్రాపర్టీని `false` అని తిరిగి ఇచ్చేలా చేసే లేదా ఒక లోపాన్ని త్రో చేసే ఏవైనా లావాదేవీలను నివేదించండి. +- ఒక ప్రాపర్టీని కాల్ చేస్తున్నప్పుడు సైడ్-ఎఫెక్ట్‌ను విస్మరించండి (అంటే, ఒకవేళ ప్రాపర్టీ ఒక స్టేట్ వేరియబుల్‌ను మార్చినట్లయితే, పరీక్ష తర్వాత అది విస్మరించబడుతుంది) + +కింది ప్రాపర్టీ కాలర్‌కు 1000 కంటే ఎక్కువ టోకెన్‌లు లేవని తనిఖీ చేస్తుంది: + +```solidity +function echidna_balance_under_1000() public view returns(bool){ + return balances[msg.sender] <= 1000; +} +``` + +మీ కాంట్రాక్టును మీ ప్రాపర్టీల నుండి వేరు చేయడానికి వారసత్వాన్ని ఉపయోగించండి: + +```solidity +contract TestToken is Token{ + function echidna_balance_under_1000() public view returns(bool){ + return balances[msg.sender] <= 1000; + } + } +``` + +[`token.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/token.sol) ప్రాపర్టీని అమలు చేస్తుంది మరియు టోకెన్ నుండి వారసత్వంగా పొందుతుంది. + +### ఒక కాంట్రాక్టును ప్రారంభించండి {#initiate-a-contract} + +ఎకిడ్నాకు ఆర్గ్యుమెంట్ లేని [కన్స్ట్రక్టర్](/developers/docs/smart-contracts/anatomy/#constructor-functions) అవసరం. మీ కాంట్రాక్టుకు ఒక నిర్దిష్ట ప్రారంభీకరణ అవసరమైతే, మీరు దానిని కన్స్ట్రక్టర్‌లో చేయాలి. + +ఎకిడ్నాలో కొన్ని నిర్దిష్ట చిరునామాలు ఉన్నాయి: + +- `0x00a329c0648769A73afAc7F9381E08FB43dBEA72` ఇది కన్స్ట్రక్టర్‌ను కాల్ చేస్తుంది. +- `0x10000`, `0x20000`, మరియు `0x00a329C0648769a73afAC7F9381e08fb43DBEA70` ఇవి ఇతర ఫంక్షన్‌లను యాదృచ్ఛికంగా పిలుస్తాయి. + +మన ప్రస్తుత ఉదాహరణలో మనకు ఏ ప్రత్యేక ప్రారంభీకరణ అవసరం లేదు, ఫలితంగా మన కన్స్ట్రక్టర్ ఖాళీగా ఉంది. + +### ఎకిడ్నాని రన్ చేయండి {#run-echidna} + +ఎకిడ్నాని దీనితో లాంచ్ చేస్తారు: + +```bash +echidna-test contract.sol +``` + +ఒకవేళ contract.solలో బహుళ కాంట్రాక్టులు ఉంటే, మీరు లక్ష్యాన్ని ఇలా పేర్కొనవచ్చు: + +```bash +echidna-test contract.sol --contract MyContract +``` + +### సారాంశం: ఒక ప్రాపర్టీని పరీక్షించడం {#summary-testing-a-property} + +కిందిది మన ఉదాహరణపై ఎకిడ్నా రన్‌ను సంగ్రహిస్తుంది: + +```solidity +contract TestToken is Token{ + constructor() public {} + function echidna_balance_under_1000() public view returns(bool){ + return balances[msg.sender] <= 1000; + } + } +``` + +```bash +echidna-test testtoken.sol --contract TestToken +... + +echidna_balance_under_1000: failed!💥 + Call sequence, shrinking (1205/5000): + airdrop() + backdoor() + +... +``` + +`backdoor`ను కాల్ చేసినప్పుడు ప్రాపర్టీ ఉల్లంఘించబడిందని ఎకిడ్నా కనుగొంది. + +## ఫజ్జింగ్ క్యాంపెయిన్ సమయంలో కాల్ చేయడానికి ఫంక్షన్‌లను ఫిల్టర్ చేయడం {#filtering-functions-to-call-during-a-fuzzing-campaign} + +ఫజ్ చేయవలసిన ఫంక్షన్‌లను ఎలా ఫిల్టర్ చేయాలో మనం చూద్దాం. +లక్ష్యం కింది స్మార్ట్ కాంట్రాక్ట్: + +```solidity +contract C { + bool state1 = false; + bool state2 = false; + bool state3 = false; + bool state4 = false; + + function f(uint x) public { + require(x == 12); + state1 = true; + } + + function g(uint x) public { + require(state1); + require(x == 8); + state2 = true; + } + + function h(uint x) public { + require(state2); + require(x == 42); + state3 = true; + } + + function i() public { + require(state3); + state4 = true; + } + + function reset1() public { + state1 = false; + state2 = false; + state3 = false; + return; + } + + function reset2() public { + state1 = false; + state2 = false; + state3 = false; + return; + } + + function echidna_state4() public returns (bool) { + return (!state4); + } +} +``` + +ఈ చిన్న ఉదాహరణ ఒక స్టేట్ వేరియబుల్‌ను మార్చడానికి లావాదేవీల యొక్క ఒక నిర్దిష్ట క్రమాన్ని కనుగొనమని ఎకిడ్నాని బలవంతం చేస్తుంది. +ఇది ఫజర్ కోసం కష్టం (సింబాలిక్ ఎగ్జిక్యూషన్ సాధనం [Manticore](https://github.com/trailofbits/manticore) ను ఉపయోగించమని సిఫార్సు చేయబడింది). +దీనిని ధృవీకరించడానికి మనం ఎకిడ్నాని రన్ చేయవచ్చు: + +```bash +echidna-test multi.sol +... +echidna_state4: passed! 🎉 +Seed: -3684648582249875403 +``` + +### ఫంక్షన్‌లను ఫిల్టర్ చేయడం {#filtering-functions} + +రెండు రీసెట్ ఫంక్షన్‌లు (`reset1` మరియు `reset2`) అన్ని స్టేట్ వేరియబుల్స్‌ను `false`కి సెట్ చేస్తాయి కాబట్టి, ఈ కాంట్రాక్టును పరీక్షించడానికి సరైన క్రమాన్ని కనుగొనడంలో ఎకిడ్నాకు ఇబ్బంది ఉంది. +అయితే, రీసెట్ ఫంక్షన్‌ను బ్లాక్‌లిస్ట్ చేయడానికి లేదా `f`, `g`, `h` మరియు `i` ఫంక్షన్‌లను మాత్రమే వైట్‌లిస్ట్ చేయడానికి మనం ఒక ప్రత్యేక ఎకిడ్నా ఫీచర్‌ను ఉపయోగించవచ్చు. + +ఫంక్షన్‌లను బ్లాక్‌లిస్ట్ చేయడానికి, మనం ఈ కాన్ఫిగరేషన్ ఫైల్‌ను ఉపయోగించవచ్చు: + +```yaml +filterBlacklist: true +filterFunctions: ["reset1", "reset2"] +``` + +ఫంక్షన్‌లను ఫిల్టర్ చేయడానికి మరొక విధానం వైట్‌లిస్ట్ చేయబడిన ఫంక్షన్‌లను జాబితా చేయడం. అది చేయడానికి, మనం ఈ కాన్ఫిగరేషన్ ఫైల్‌ను ఉపయోగించవచ్చు: + +```yaml +filterBlacklist: false +filterFunctions: ["f", "g", "h", "i"] +``` + +- `filterBlacklist` డిఫాల్ట్‌గా `true`. +- ఫిల్టరింగ్ పేరుతో మాత్రమే నిర్వహించబడుతుంది (పరామితులు లేకుండా). మీకు `f()` మరియు `f(uint256)` ఉంటే, `"f"` ఫిల్టర్ రెండు ఫంక్షన్‌లకు సరిపోతుంది. + +### ఎకిడ్నాని రన్ చేయండి {#run-echidna-1} + +కాన్ఫిగరేషన్ ఫైల్ `blacklist.yaml`తో ఎకిడ్నాని రన్ చేయడానికి: + +```bash +echidna-test multi.sol --config blacklist.yaml +... +echidna_state4: failed!💥 + Call sequence: + f(12) + g(8) + h(42) + i() +``` + +ప్రాపర్టీని తప్పుగా నిరూపించడానికి లావాదేవీల క్రమాన్ని ఎకిడ్నా దాదాపు వెంటనే కనుగొంటుంది. + +### సారాంశం: ఫంక్షన్‌లను ఫిల్టర్ చేయడం {#summary-filtering-functions} + +ఎకిడ్నా ఒక ఫజ్జింగ్ క్యాంపెయిన్ సమయంలో కాల్ చేయడానికి ఫంక్షన్‌లను బ్లాక్‌లిస్ట్ లేదా వైట్‌లిస్ట్ చేయగలదు: + +```yaml +filterBlacklist: true +filterFunctions: ["f1", "f2", "f3"] +``` + +```bash +echidna-test contract.sol --config config.yaml +... +``` + +`filterBlacklist` బూలియన్ విలువ ప్రకారం, ఎకిడ్నా `f1`, `f2` మరియు `f3`లను బ్లాక్‌లిస్ట్ చేయడం లేదా కేవలం వీటిని కాల్ చేయడం ద్వారా ఫజ్జింగ్ ప్రచారాన్ని ప్రారంభిస్తుంది. + +## ఎకిడ్నాతో Solidity యొక్క assert ను ఎలా పరీక్షించాలి {#how-to-test-soliditys-assert-with-echidna} + +ఈ చిన్న ట్యుటోరియల్‌లో, కాంట్రాక్టులలోని అసెర్షన్ చెకింగ్‌ను పరీక్షించడానికి ఎకిడ్నాని ఎలా ఉపయోగించాలో మేము చూపబోతున్నాము. మన దగ్గర ఇలాంటి కాంట్రాక్ట్ ఉందని అనుకుందాం: + +```solidity +contract Incrementor { + uint private counter = 2**200; + + function inc(uint val) public returns (uint){ + uint tmp = counter; + counter += val; + // tmp <= counter + return (counter - tmp); + } +} +``` + +### ఒక అసర్షన్‌ను రాయండి {#write-an-assertion} + +దాని వ్యత్యాసాన్ని తిరిగి ఇచ్చిన తర్వాత `tmp` అనేది `counter` కంటే తక్కువ లేదా సమానంగా ఉందని మనం నిర్ధారించుకోవాలి. మనం ఒక ఎకిడ్నా ప్రాపర్టీని వ్రాయవచ్చు, కానీ మనం `tmp` విలువను ఎక్కడో నిల్వ చేయవలసి ఉంటుంది. దానికి బదులుగా, మనం ఇలాంటి ఒక అసర్షన్‌ను ఉపయోగించవచ్చు: + +```solidity +contract Incrementor { + uint private counter = 2**200; + + function inc(uint val) public returns (uint){ + uint tmp = counter; + counter += val; + assert (tmp <= counter); + return (counter - tmp); + } +} +``` + +### ఎకిడ్నాని రన్ చేయండి {#run-echidna-2} + +అసర్షన్ వైఫల్యం పరీక్షను ప్రారంభించడానికి, ఒక [Echidna కాన్ఫిగరేషన్ ఫైల్](https://github.com/crytic/echidna/wiki/Config) `config.yaml`ను సృష్టించండి: + +```yaml +checkAsserts: true +``` + +మనం ఈ కాంట్రాక్టును ఎకిడ్నాలో రన్ చేసినప్పుడు, మనం ఆశించిన ఫలితాలను పొందుతాము: + +```bash +echidna-test assert.sol --config config.yaml +Analyzing contract: assert.sol:Incrementor +assertion in inc: failed!💥 + Call sequence, shrinking (2596/5000): + inc(21711016731996786641919559689128982722488122124807605757398297001483711807488) + inc(7237005577332262213973186563042994240829374041602535252466099000494570602496) + inc(86844066927987146567678238756515930889952488499230423029593188005934847229952) + +Seed: 1806480648350826486 +``` + +మీరు చూడగలిగినట్లుగా, ఎకిడ్నా `inc` ఫంక్షన్‌లో కొన్ని అసర్షన్ వైఫల్యాలను నివేదిస్తుంది. ప్రతి ఫంక్షన్‌కు ఒకటి కంటే ఎక్కువ అసర్షన్‌లను జోడించడం సాధ్యమే, కానీ ఏ అసర్షన్ విఫలమైందో ఎకిడ్నా చెప్పలేదు. + +### అసర్షన్‌లను ఎప్పుడు మరియు ఎలా ఉపయోగించాలి {#when-and-how-use-assertions} + +తనిఖీ చేయవలసిన షరతులు నేరుగా కొన్ని ఆపరేషన్ `f` యొక్క సరైన వాడకంతో సంబంధం కలిగి ఉంటే, అసర్షన్‌లను స్పష్టమైన లక్షణాలకు ప్రత్యామ్నాయంగా ఉపయోగించవచ్చు. కొన్ని కోడ్ తర్వాత అసర్షన్‌లను జోడించడం వలన అది అమలు చేయబడిన వెంటనే తనిఖీ జరుగుతుందని నిర్ధారిస్తుంది: + +```solidity +function f(..) public { + // some complex code + ... + assert (condition); + ... +} + +``` + +దీనికి విరుద్ధంగా, స్పష్టమైన ఎకిడ్నా ప్రాపర్టీని ఉపయోగించడం యాదృచ్ఛికంగా లావాదేవీలను అమలు చేస్తుంది మరియు అది ఎప్పుడు తనిఖీ చేయబడుతుందో కచ్చితంగా అమలు చేయడానికి సులభమైన మార్గం లేదు. ఈ తాత్కాలిక పరిష్కారాన్ని చేయడం ఇంకా సాధ్యమే: + +```solidity +function echidna_assert_after_f() public returns (bool) { + f(..); + return(condition); +} +``` + +అయితే, కొన్ని సమస్యలు ఉన్నాయి: + +- ఒకవేళ `f`ను `internal` లేదా `external`గా ప్రకటించినట్లయితే ఇది విఫలమవుతుంది. +- `f`ను కాల్ చేయడానికి ఏ ఆర్గ్యుమెంట్‌లను ఉపయోగించాలో అస్పష్టంగా ఉంది. +- ఒకవేళ `f` తిరిగి వస్తే, ప్రాపర్టీ విఫలమవుతుంది. + +సాధారణంగా, అసర్షన్‌లను ఎలా ఉపయోగించాలనే దానిపై [జాన్ రెగెర్ యొక్క సిఫార్సు](https://blog.regehr.org/archives/1091) ను అనుసరించమని మేము సిఫార్సు చేస్తున్నాము: + +- అసర్షన్ చెకింగ్ సమయంలో ఏ సైడ్ ఎఫెక్ట్‌ను బలవంతం చేయవద్దు. ఉదాహరణకు: `assert(ChangeStateAndReturn() == 1)` +- స్పష్టమైన వాక్యాలను అసర్ట్ చేయవద్దు. ఉదాహరణకు `assert(var >= 0)` ఇక్కడ `var` ను `uint` గా ప్రకటించారు. + +చివరగా, దయచేసి `assert`కు బదులుగా `require`ను **ఉపయోగించవద్దు**, ఎందుకంటే ఎకిడ్నా దానిని గుర్తించలేదు (కానీ కాంట్రాక్ట్ ఏమైనప్పటికీ రివర్ట్ అవుతుంది). + +### సారాంశం: అసర్షన్ తనిఖీ {#summary-assertion-checking} + +కిందిది మన ఉదాహరణపై ఎకిడ్నా రన్‌ను సంగ్రహిస్తుంది: + +```solidity +contract Incrementor { + uint private counter = 2**200; + + function inc(uint val) public returns (uint){ + uint tmp = counter; + counter += val; + assert (tmp <= counter); + return (counter - tmp); + } +} +``` + +```bash +echidna-test assert.sol --config config.yaml +Analyzing contract: assert.sol:Incrementor +assertion in inc: failed!💥 + Call sequence, shrinking (2596/5000): + inc(21711016731996786641919559689128982722488122124807605757398297001483711807488) + inc(7237005577332262213973186563042994240829374041602535252466099000494570602496) + inc(86844066927987146567678238756515930889952488499230423029593188005934847229952) + +Seed: 1806480648350826486 +``` + +ఈ ఫంక్షన్‌ను పెద్ద ఆర్గ్యుమెంట్‌లతో చాలాసార్లు కాల్ చేస్తే `inc` లోని అసర్షన్ విఫలమవుతుందని ఎకిడ్నా కనుగొంది. + +## ఎకిడ్నా కార్పస్‌ను సేకరించడం మరియు సవరించడం {#collecting-and-modifying-an-echidna-corpus} + +ఎకిడ్నాతో లావాదేవీల కార్పస్‌ను ఎలా సేకరించాలో మరియు ఉపయోగించాలో మనం చూద్దాం. లక్ష్యం కింది స్మార్ట్ కాంట్రాక్ట్ [`magic.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/magic.sol): + +```solidity +contract C { + bool value_found = false; + function magic(uint magic_1, uint magic_2, uint magic_3, uint magic_4) public { + require(magic_1 == 42); + require(magic_2 == 129); + require(magic_3 == magic_4+333); + value_found = true; + return; + } + + function echidna_magic_values() public returns (bool) { + return !value_found; + } + +} +``` + +ఈ చిన్న ఉదాహరణ ఒక స్టేట్ వేరియబుల్‌ను మార్చడానికి కొన్ని విలువలను కనుగొనమని ఎకిడ్నాని బలవంతం చేస్తుంది. ఇది ఫజర్ కోసం కష్టం +(సింబాలిక్ ఎగ్జిక్యూషన్ సాధనం [Manticore](https://github.com/trailofbits/manticore) ను ఉపయోగించమని సిఫార్సు చేయబడింది). +దీనిని ధృవీకరించడానికి మనం ఎకిడ్నాని రన్ చేయవచ్చు: + +```bash +echidna-test magic.sol +... + +echidna_magic_values: passed! 🎉 + +Seed: 2221503356319272685 +``` + +అయితే, ఈ ఫజ్జింగ్ క్యాంపెయిన్‌ను అమలు చేస్తున్నప్పుడు కార్పస్ సేకరించడానికి మనం ఇంకా ఎకిడ్నాని ఉపయోగించవచ్చు. + +### ఒక కార్పస్‌ను సేకరించడం {#collecting-a-corpus} + +కార్పస్ సేకరణను ప్రారంభించడానికి, ఒక కార్పస్ డైరెక్టరీని సృష్టించండి: + +```bash +mkdir corpus-magic +``` + +మరియు ఒక [Echidna కాన్ఫిగరేషన్ ఫైల్](https://github.com/crytic/echidna/wiki/Config) `config.yaml`: + +```yaml +coverage: true +corpusDir: "corpus-magic" +``` + +ఇప్పుడు మనం మన సాధనాన్ని రన్ చేయవచ్చు మరియు సేకరించిన కార్పస్‌ను తనిఖీ చేయవచ్చు: + +```bash +echidna-test magic.sol --config config.yaml +``` + +ఎకిడ్నా ఇప్పటికీ సరైన మేజిక్ విలువలను కనుగొనలేదు, కానీ అది సేకరించిన కార్పస్‌ను మనం చూడవచ్చు. +ఉదాహరణకు, ఈ ఫైళ్ళలో ఒకటి: + +```json +[ + { + "_gas'": "0xffffffff", + "_delay": ["0x13647", "0xccf6"], + "_src": "00a329c0648769a73afac7f9381e08fb43dbea70", + "_dst": "00a329c0648769a73afac7f9381e08fb43dbea72", + "_value": "0x0", + "_call": { + "tag": "SolCall", + "contents": [ + "magic", + [ + { + "contents": [ + 256, + "93723985220345906694500679277863898678726808528711107336895287282192244575836" + ], + "tag": "AbiUInt" + }, + { + "contents": [256, "334"], + "tag": "AbiUInt" + }, + { + "contents": [ + 256, + "68093943901352437066264791224433559271778087297543421781073458233697135179558" + ], + "tag": "AbiUInt" + }, + { + "tag": "AbiUInt", + "contents": [256, "332"] + } + ] + ] + }, + "_gasprice'": "0xa904461f1" + } +] +``` + +స్పష్టంగా, ఈ ఇన్‌పుట్ మన ప్రాపర్టీలో వైఫల్యాన్ని ప్రేరేపించదు. అయితే, తదుపరి దశలో, దాని కోసం దాన్ని ఎలా సవరించాలో మనం చూద్దాం. + +### ఒక కార్పస్‌ను సీడింగ్ చేయడం {#seeding-a-corpus} + +`magic` ఫంక్షన్‌తో వ్యవహరించడానికి ఎకిడ్నాకు కొంత సహాయం అవసరం. దాని కోసం తగిన పరామితులను ఉపయోగించడానికి ఇన్‌పుట్‌ను కాపీ చేసి, సవరించబోతున్నాము: + +```bash +cp corpus/2712688662897926208.txt corpus/new.txt +``` + +మనం `magic(42,129,333,0)`ను కాల్ చేయడానికి `new.txt`ని సవరిస్తాము. ఇప్పుడు, మనం ఎకిడ్నాని మళ్లీ రన్ చేయవచ్చు: + +```bash +echidna-test magic.sol --config config.yaml +... +echidna_magic_values: failed!💥 + Call sequence: + magic(42,129,333,0) + + +Unique instructions: 142 +Unique codehashes: 1 +Seed: -7293830866560616537 + +``` + +ఈసారి, ప్రాపర్టీ వెంటనే ఉల్లంఘించబడిందని అది కనుగొంది. + +## అధిక గ్యాస్ వినియోగంతో లావాదేవీలను కనుగొనడం {#finding-transactions-with-high-gas-consumption} + +ఎకిడ్నాతో అధిక గ్యాస్ వినియోగంతో లావాదేవీలను ఎలా కనుగొనాలో మనం చూద్దాం. లక్ష్యం కింది స్మార్ట్ కాంట్రాక్ట్: + +```solidity +contract C { + uint state; + + function expensive(uint8 times) internal { + for(uint8 i=0; i < times; i++) + state = state + i; + } + + function f(uint x, uint y, uint8 times) public { + if (x == 42 && y == 123) + expensive(times); + else + state = 0; + } + + function echidna_test() public returns (bool) { + return true; + } + +} +``` + +ఇక్కడ `expensive`కు పెద్ద గ్యాస్ వినియోగం ఉండవచ్చు. + +ప్రస్తుతం, ఎకిడ్నాకు ఎల్లప్పుడూ పరీక్షించడానికి ఒక ప్రాపర్టీ అవసరం: ఇక్కడ `echidna_test` ఎల్లప్పుడూ `true`ను తిరిగి ఇస్తుంది. +దీనిని ధృవీకరించడానికి మనం ఎకిడ్నాని రన్ చేయవచ్చు: + +``` +echidna-test gas.sol +... +echidna_test: passed! 🎉 + +Seed: 2320549945714142710 +``` + +### గ్యాస్ వినియోగాన్ని కొలవడం {#measuring-gas-consumption} + +ఎకిడ్నాతో గ్యాస్ వినియోగాన్ని ప్రారంభించడానికి, ఒక కాన్ఫిగరేషన్ ఫైల్ `config.yaml`ను సృష్టించండి: + +```yaml +estimateGas: true +``` + +ఈ ఉదాహరణలో, ఫలితాలను సులభంగా అర్థం చేసుకోవడానికి లావాదేవీల క్రమం యొక్క పరిమాణాన్ని కూడా తగ్గిస్తాము: + +```yaml +seqLen: 2 +estimateGas: true +``` + +### ఎకిడ్నాని రన్ చేయండి {#run-echidna-3} + +మనం కాన్ఫిగరేషన్ ఫైల్‌ను సృష్టించిన తర్వాత, మనం ఎకిడ్నాని ఇలా రన్ చేయవచ్చు: + +```bash +echidna-test gas.sol --config config.yaml +... +echidna_test: passed! 🎉 + +f used a maximum of 1333608 gas + Call sequence: + f(42,123,249) Gas price: 0x10d5733f0a Time delay: 0x495e5 Block delay: 0x88b2 + +Unique instructions: 157 +Unique codehashes: 1 +Seed: -325611019680165325 + +``` + +- చూపిన గ్యాస్ అనేది [HEVM](https://github.com/dapphub/dapptools/tree/master/src/hevm#hevm-) ద్వారా అందించబడిన అంచనా. + +### గ్యాస్ తగ్గించే కాల్స్‌ను ఫిల్టర్ చేయడం {#filtering-out-gas-reducing-calls} + +పైన ఉన్న **ఫజ్జింగ్ ప్రచారం సమయంలో కాల్ చేయడానికి ఫంక్షన్‌లను ఫిల్టర్ చేయడం** అనే ట్యుటోరియల్ మీ పరీక్షల నుండి కొన్ని ఫంక్షన్‌లను ఎలా తొలగించాలో చూపిస్తుంది. +ఖచ్చితమైన గ్యాస్ అంచనా పొందడానికి ఇది చాలా ముఖ్యం. +కింది ఉదాహరణను పరిగణించండి: + +```solidity +contract C { + address [] addrs; + function push(address a) public { + addrs.push(a); + } + function pop() public { + addrs.pop(); + } + function clear() public{ + addrs.length = 0; + } + function check() public{ + for(uint256 i = 0; i < addrs.length; i++) + for(uint256 j = i+1; j < addrs.length; j++) + if (addrs[i] == addrs[j]) + addrs[j] = address(0x0); + } + function echidna_test() public returns (bool) { + return true; + } +} +``` + +ఎకిడ్నా అన్ని ఫంక్షన్‌లను కాల్ చేయగలిగితే, అది అధిక గ్యాస్ ఖర్చుతో కూడిన లావాదేవీలను సులభంగా కనుగొనదు: + +``` +echidna-test pushpop.sol --config config.yaml +... +pop used a maximum of 10746 gas +... +check used a maximum of 23730 gas +... +clear used a maximum of 35916 gas +... +push used a maximum of 40839 gas +``` + +ఎందుకంటే ఖర్చు `addrs` పరిమాణంపై ఆధారపడి ఉంటుంది మరియు యాదృచ్ఛిక కాల్స్ అర్రేని దాదాపు ఖాళీగా వదిలివేస్తాయి. +`pop` మరియు `clear` లను బ్లాక్‌లిస్ట్ చేయడం, అయితే, మనకు చాలా మెరుగైన ఫలితాలను ఇస్తుంది: + +```yaml +filterBlacklist: true +filterFunctions: ["pop", "clear"] +``` + +``` +echidna-test pushpop.sol --config config.yaml +... +push used a maximum of 40839 gas +... +check used a maximum of 1484472 gas +``` + +### సారాంశం: అధిక గ్యాస్ వినియోగంతో లావాదేవీలను కనుగొనడం {#summary-finding-transactions-with-high-gas-consumption} + +`estimateGas` కాన్ఫిగరేషన్ ఎంపికను ఉపయోగించి ఎకిడ్నా అధిక గ్యాస్ వినియోగంతో లావాదేవీలను కనుగొనగలదు: + +```yaml +estimateGas: true +``` + +```bash +echidna-test contract.sol --config config.yaml +... +``` + +ఫజ్జింగ్ క్యాంపెయిన్ ముగిసిన తర్వాత, ప్రతి ఫంక్షన్‌కు గరిష్ట గ్యాస్ వినియోగంతో కూడిన క్రమాన్ని ఎకిడ్నా నివేదిస్తుంది. diff --git a/public/content/translations/te/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md b/public/content/translations/te/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md new file mode 100644 index 00000000000..dc4044a1cfb --- /dev/null +++ b/public/content/translations/te/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md @@ -0,0 +1,524 @@ +--- +title: "స్మార్ట్ కాంట్రాక్ట్‌లలో బగ్‌లను కనుగొనడానికి మాంటికోర్‌ను ఎలా ఉపయోగించాలి" +description: "స్మార్ట్ కాంట్రాక్ట్‌లలో స్వయంచాలకంగా బగ్‌లను కనుగొనడానికి మాంటికోర్‌ను ఎలా ఉపయోగించాలి" +author: Trailofbits +lang: te +tags: + [ + "దృఢత్వం", + "స్మార్ట్ కాంట్రాక్టులు", + "భద్రత", + "పరీక్షించడం", + "ఫార్మల్ వెరిఫికేషన్" + ] +skill: advanced +published: 2020-01-13 +source: Building secure contracts +sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore +--- + +ఈ ట్యుటోరియల్ యొక్క లక్ష్యం స్మార్ట్ కాంట్రాక్ట్‌లలో స్వయంచాలకంగా బగ్‌లను కనుగొనడానికి మాంటికోర్‌ను ఎలా ఉపయోగించాలో చూపించడం. + +## సంస్థాపన {#installation} + +మాంటికోర్‌కు >= పైథాన్ 3.6 అవసరం. దీనిని పిప్ ద్వారా లేదా డాకర్‌ని ఉపయోగించి ఇన్‌స్టాల్ చేయవచ్చు. + +### డాకర్ ద్వారా మాంటికోర్ {#manticore-through-docker} + +```bash +docker pull trailofbits/eth-security-toolbox +docker run -it -v "$PWD":/home/training trailofbits/eth-security-toolbox +``` + +_చివరి కమాండ్ మీ ప్రస్తుత డైరెక్టరీకి యాక్సెస్ ఉన్న డాకర్‌లో eth-security-toolboxను రన్ చేస్తుంది. మీరు మీ హోస్ట్ నుండి ఫైల్‌లను మార్చవచ్చు, మరియు డాకర్_ నుండి ఫైల్‌లపై సాధనాలను అమలు చేయండి + +డాకర్ లోపల, రన్ చేయండి: + +```bash +solc-select 0.5.11 +cd /home/trufflecon/ +``` + +### పిప్ ద్వారా మాంటికోర్ {#manticore-through-pip} + +```bash +pip3 install --user manticore +``` + +solc 0.5.11 సిఫార్సు చేయబడింది. + +### ఒక స్క్రిప్ట్‌ను అమలు చేయడం {#running-a-script} + +పైథాన్ 3 తో పైథాన్ స్క్రిప్ట్‌ను అమలు చేయడానికి: + +```bash +python3 script.py +``` + +## డైనమిక్ సింబాలిక్ ఎగ్జిక్యూషన్‌కు పరిచయం {#introduction-to-dynamic-symbolic-execution} + +### సంక్షిప్తంగా డైనమిక్ సింబాలిక్ ఎగ్జిక్యూషన్ {#dynamic-symbolic-execution-in-a-nutshell} + +డైనమిక్ సింబాలిక్ ఎగ్జిక్యూషన్ (DSE) అనేది అధిక స్థాయి సెమాంటిక్ అవగాహనతో ఒక స్టేట్ స్పేస్‌ను అన్వేషించే ఒక ప్రోగ్రామ్ విశ్లేషణ పద్ధతి. ఈ పద్ధతి "ప్రోగ్రామ్ పాత్‌ల" ఆవిష్కరణపై ఆధారపడి ఉంటుంది, వీటిని `పాత్ ప్రిడికేట్స్` అని పిలిచే గణిత సూత్రాలుగా సూచిస్తారు. సంభావితంగా, ఈ పద్ధతి పాత్ ప్రిడికేట్‌లపై రెండు దశలలో పనిచేస్తుంది: + +1. ప్రోగ్రామ్ ఇన్‌పుట్‌పై పరిమితులను ఉపయోగించి అవి నిర్మించబడ్డాయి. +2. అనుబంధిత పాత్‌లను అమలు చేయడానికి కారణమయ్యే ప్రోగ్రామ్ ఇన్‌పుట్‌లను రూపొందించడానికి అవి ఉపయోగించబడతాయి. + +గుర్తించబడిన అన్ని ప్రోగ్రామ్ స్టేట్‌లు కాంక్రీట్ ఎగ్జిక్యూషన్ సమయంలో ప్రేరేపించబడతాయి అనే అర్థంలో ఈ విధానం ఎటువంటి తప్పుడు పాజిటివ్‌లను ఉత్పత్తి చేయదు. ఉదాహరణకు, విశ్లేషణలో ఒక పూర్ణాంక ఓవర్‌ఫ్లో కనుగొనబడితే, అది పునరుత్పత్తి చేయబడుతుందని హామీ ఇవ్వబడింది. + +### పాత్ ప్రిడికేట్ ఉదాహరణ {#path-predicate-example} + +DSE ఎలా పనిచేస్తుందో ఒక అవగాహన పొందడానికి, కింది ఉదాహరణను పరిగణించండి: + +```solidity +function f(uint a){ + + if (a == 65) { + // ఒక బగ్ ఉంది + } + +} +``` + +`f()` రెండు పాత్‌లను కలిగి ఉన్నందున, ఒక DSE రెండు వేర్వేరు పాత్ ప్రిడికేట్‌లను నిర్మిస్తుంది: + +- పాత్ 1: `a == 65` +- పాత్ 2: `కాదు (a == 65)` + +ప్రతి పాత్ ప్రిడికేట్ ఒక గణిత సూత్రం, దీనిని [SMT సాల్వర్](https://wikipedia.org/wiki/Satisfiability_modulo_theories) అని పిలవబడే దానికి ఇవ్వవచ్చు, అది సమీకరణాన్ని పరిష్కరించడానికి ప్రయత్నిస్తుంది. `పాత్ 1` కోసం, సాల్వర్ `a = 65` తో పాత్‌ను అన్వేషించవచ్చని చెబుతుంది. `పాత్ 2` కోసం, సాల్వర్ `a` కు 65 కాకుండా ఏదైనా విలువను ఇవ్వగలదు, ఉదాహరణకు `a = 0`. + +### లక్షణాలను ధృవీకరించడం {#verifying-properties} + +మాంటికోర్ ప్రతి పాత్ యొక్క అన్ని ఎగ్జిక్యూషన్‌పై పూర్తి నియంత్రణను అనుమతిస్తుంది. ఫలితంగా, ఇది దాదాపు దేనికైనా యాదృచ్ఛిక పరిమితులను జోడించడానికి మిమ్మల్ని అనుమతిస్తుంది. ఈ నియంత్రణ కాంట్రాక్ట్‌పై లక్షణాల సృష్టికి అనుమతిస్తుంది. + +కింది ఉదాహరణను పరిగణించండి: + +```solidity +function unsafe_add(uint a, uint b) returns(uint c){ + c = a + b; // ఓవర్‌ఫ్లో రక్షణ లేదు + return c; +} +``` + +ఇక్కడ ఫంక్షన్‌లో అన్వేషించడానికి ఒకే ఒక్క పాత్ ఉంది: + +- పాత్ 1: `c = a + b` + +మాంటికోర్‌ను ఉపయోగించి, మీరు ఓవర్‌ఫ్లో కోసం తనిఖీ చేయవచ్చు, మరియు పాత్ ప్రిడికేట్‌కు పరిమితులను జోడించవచ్చు: + +- `c = a + b AND (c < a OR c < b)` + +పైన ఉన్న పాత్ ప్రిడికేట్ సాధ్యమయ్యే `a` మరియు `b` యొక్క మూల్యాంకనాన్ని కనుగొనడం సాధ్యమైతే, మీరు ఒక ఓవర్‌ఫ్లోను కనుగొన్నారని అర్థం. ఉదాహరణకు సాల్వర్ ఇన్‌పుట్ `a = 10 , b = MAXUINT256`ను రూపొందించగలదు. + +మీరు ఒక స్థిరమైన సంస్కరణను పరిగణించినట్లయితే: + +```solidity +function safe_add(uint a, uint b) returns(uint c){ + c = a + b; + require(c>=a); + require(c>=b); + return c; +} +``` + +ఓవర్‌ఫ్లో తనిఖీతో అనుబంధిత సూత్రం ఇలా ఉంటుంది: + +- `c = a + b AND (c >= a) AND (c=>b) AND (c < a OR c < b)` + +ఈ సూత్రాన్ని పరిష్కరించలేము; మరో మాటలో చెప్పాలంటే, ఇది `safe_add`లో `c` ఎల్లప్పుడూ పెరుగుతుందనడానికి ఒక **రుజువు**. + +అందువల్ల DSE ఒక శక్తివంతమైన సాధనం, ఇది మీ కోడ్‌పై యాదృచ్ఛిక పరిమితులను ధృవీకరించగలదు. + +## మాంటికోర్ కింద నడుస్తోంది {#running-under-manticore} + +మాంటికోర్ API తో స్మార్ట్ కాంట్రాక్ట్‌ను ఎలా అన్వేషించాలో మనం చూస్తాము. లక్ష్యం కింది స్మార్ట్ కాంట్రాక్ట్ [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol): + +```solidity +pragma solidity >=0.4.24 <0.6.0; + +contract Simple { + function f(uint a) payable public{ + if (a == 65) { + revert(); + } + } +} +``` + +### ఒక స్వతంత్ర అన్వేషణను అమలు చేయండి {#run-a-standalone-exploration} + +మీరు కింది కమాండ్ ద్వారా నేరుగా స్మార్ట్ కాంట్రాక్ట్‌పై మాంటికోర్‌ను అమలు చేయవచ్చు (`project` ఒక సాలిడిటీ ఫైల్ లేదా ప్రాజెక్ట్ డైరెక్టరీ కావచ్చు): + +```bash +$ manticore project +``` + +మీరు ఇలాంటి టెస్ట్‌కేసుల అవుట్‌పుట్‌ను పొందుతారు (ఆర్డర్ మారవచ్చు): + +``` +... +... m.c.manticore:INFO: Generated testcase No. 0 - STOP +... m.c.manticore:INFO: Generated testcase No. 1 - REVERT +... m.c.manticore:INFO: Generated testcase No. 2 - RETURN +... m.c.manticore:INFO: Generated testcase No. 3 - REVERT +... m.c.manticore:INFO: Generated testcase No. 4 - STOP +... m.c.manticore:INFO: Generated testcase No. 5 - REVERT +... m.c.manticore:INFO: Generated testcase No. 6 - REVERT +... m.c.manticore:INFO: Results in /home/ethsec/workshops/Automated Smart Contracts Audit - TruffleCon 2018/manticore/examples/mcore_t6vi6ij3 +... +``` + +అదనపు సమాచారం లేకుండా, మాంటికోర్ కొత్త సింబాలిక్ లావాదేవీలతో కాంట్రాక్ట్‌ను అన్వేషిస్తుంది, అది కాంట్రాక్ట్‌లో కొత్త పాత్‌లను అన్వేషించే వరకు. విఫలమైన దాని తర్వాత మాంటికోర్ కొత్త లావాదేవీలను అమలు చేయదు (ఉదా: రివర్ట్ తర్వాత). + +మాంటికోర్ సమాచారాన్ని `mcore_*` డైరెక్టరీలో అవుట్‌పుట్ చేస్తుంది. ఇతర వాటితో పాటు, మీరు ఈ డైరెక్టరీలో కనుగొంటారు: + +- `global.summary`: కవరేజ్ మరియు కంపైలర్ హెచ్చరికలు +- `test_XXXXX.summary`: కవరేజ్, చివరి సూచన, ప్రతి టెస్ట్ కేసుకు ఖాతా బ్యాలెన్స్‌లు +- `test_XXXXX.tx`: ప్రతి టెస్ట్ కేసుకు లావాదేవీల వివరణాత్మక జాబితా + +ఇక్కడ మాంటికోర్ 7 టెస్ట్ కేసులను కనుగొంది, అవి వీటికి అనుగుణంగా ఉంటాయి (ఫైల్‌నేమ్ ఆర్డర్ మారవచ్చు): + +| | లావాదేవీ 0 | లావాదేవీ 1 | లావాదేవీ 2 | ఫలితం | +| :-------------------------------------------------------: | :----------------: | :------------------------: | -------------------------- | :----: | +| **test_00000000.tx** | కాంట్రాక్ట్ సృష్టి | f(!=65) | f(!=65) | STOP | +| **test_00000001.tx** | కాంట్రాక్ట్ సృష్టి | ఫాల్‌బ్యాక్ ఫంక్షన్ | | REVERT | +| **test_00000002.tx** | కాంట్రాక్ట్ సృష్టి | | | RETURN | +| **test_00000003.tx** | కాంట్రాక్ట్ సృష్టి | f(65) | | REVERT | +| **test_00000004.tx** | కాంట్రాక్ట్ సృష్టి | f(!=65) | | STOP | +| **test_00000005.tx** | కాంట్రాక్ట్ సృష్టి | f(!=65) | f(65) | REVERT | +| **test_00000006.tx** | కాంట్రాక్ట్ సృష్టి | f(!=65) | ఫాల్‌బ్యాక్ ఫంక్షన్ | REVERT | + +_అన్వేషణ సారాంశం f(!=65) అంటే 65 కంటే భిన్నమైన ఏదైనా విలువతో f పిలువబడిందని సూచిస్తుంది._ + +మీరు గమనించినట్లుగా, మాంటికోర్ ప్రతి విజయవంతమైన లేదా రివర్ట్ చేయబడిన లావాదేవీకి ఒక ప్రత్యేకమైన టెస్ట్ కేసును ఉత్పత్తి చేస్తుంది. + +మీరు వేగవంతమైన కోడ్ అన్వేషణను కోరుకుంటే `--quick-mode` ఫ్లాగ్‌ను ఉపయోగించండి (ఇది బగ్ డిటెక్టర్లు, గ్యాస్ గణన మొదలైనవాటిని నిలిపివేస్తుంది) + +### API ద్వారా స్మార్ట్ కాంట్రాక్ట్‌ను మార్చడం {#manipulate-a-smart-contract-through-the-api} + +ఈ విభాగం మాంటికోర్ పైథాన్ API ద్వారా స్మార్ట్ కాంట్రాక్ట్‌ను ఎలా మార్చాలో వివరిస్తుంది. మీరు పైథాన్ ఎక్స్‌టెన్షన్ `*.py` తో కొత్త ఫైల్‌ను సృష్టించవచ్చు మరియు API ఆదేశాలను (వీటి ప్రాథమికాలు క్రింద వివరించబడతాయి) ఈ ఫైల్‌లోకి జోడించడం ద్వారా అవసరమైన కోడ్‌ను వ్రాయవచ్చు, ఆపై `$ python3 *.py` ఆదేశంతో దాన్ని అమలు చేయండి. అలాగే మీరు కింది ఆదేశాలను నేరుగా పైథాన్ కన్సోల్‌లోకి అమలు చేయవచ్చు, కన్సోల్‌ను అమలు చేయడానికి `$ python3` ఆదేశాన్ని ఉపయోగించండి. + +### ఖాతాలను సృష్టించడం {#creating-accounts} + +మీరు చేయవలసిన మొదటి విషయం కింది ఆదేశాలతో కొత్త బ్లాక్ చైనును ప్రారంభించడం: + +```python +from manticore.ethereum import ManticoreEVM + +m = ManticoreEVM() +``` + +ఒక నాన్-కాంట్రాక్ట్ ఖాతా [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account) ఉపయోగించి సృష్టించబడుతుంది: + +```python +user_account = m.create_account(balance=1000) +``` + +ఒక సాలిడిటీ కాంట్రాక్ట్‌ను [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract) ఉపయోగించి అమలు చేయవచ్చు: + +```solidity +source_code = ''' +pragma solidity >=0.4.24 <0.6.0; +contract Simple { + function f(uint a) payable public{ + if (a == 65) { + revert(); + } + } +} +''' +# Initiate the contract +contract_account = m.solidity_create_contract(source_code, owner=user_account) +``` + +#### సారాంశం {#summary} + +- మీరు [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account) మరియు [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract) తో వినియోగదారు మరియు కాంట్రాక్ట్ ఖాతాలను సృష్టించవచ్చు. + +### లావాదేవీలను అమలు చేయడం {#executing-transactions} + +మాంటికోర్ రెండు రకాల లావాదేవీలకు మద్దతు ఇస్తుంది: + +- రా లావాదేవీ: అన్ని ఫంక్షన్లు అన్వేషించబడతాయి +- పేరున్న లావాదేవీ: ఒకే ఒక ఫంక్షన్ అన్వేషించబడుతుంది + +#### రా లావాదేవీ {#raw-transaction} + +ఒక రా లావాదేవీ [m.transaction](https://manticore.readthedocs.io/en/latest/evm.html?highlight=transaction#manticore.ethereum.ManticoreEVM.transaction) ఉపయోగించి అమలు చేయబడుతుంది: + +```python +m.transaction(caller=user_account, + address=contract_account, + data=data, + value=value) +``` + +కాలర్, చిరునామా, డేటా, లేదా లావాదేవీ యొక్క విలువ కాంక్రీట్ లేదా సింబాలిక్ కావచ్చు: + +- [m.make_symbolic_value](https://manticore.readthedocs.io/en/latest/evm.html?highlight=make_symbolic_value#manticore.ethereum.ManticoreEVM.make_symbolic_value) ఒక సింబాలిక్ విలువను సృష్టిస్తుంది. +- [m.make_symbolic_buffer(size)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=make_symbolic_buffer#manticore.ethereum.ManticoreEVM.make_symbolic_buffer) ఒక సింబాలిక్ బైట్ శ్రేణిని సృష్టిస్తుంది. + +ఉదాహరణకి: + +```python +symbolic_value = m.make_symbolic_value() +symbolic_data = m.make_symbolic_buffer(320) +m.transaction(caller=user_account, + address=contract_address, + data=symbolic_data, + value=symbolic_value) +``` + +డేటా సింబాలిక్ అయితే, మాంటికోర్ లావాదేవీ అమలు సమయంలో కాంట్రాక్ట్ యొక్క అన్ని ఫంక్షన్లను అన్వేషిస్తుంది. ఫంక్షన్ ఎంపిక ఎలా పనిచేస్తుందో అర్థం చేసుకోవడానికి [హ్యాండ్స్ ఆన్ ది ఈథర్నాట్ CTF](https://blog.trailofbits.com/2017/11/06/hands-on-the-ethernaut-ctf/) కథనంలో ఫాల్‌బ్యాక్ ఫంక్షన్ వివరణను చూడటం సహాయకరంగా ఉంటుంది. + +#### పేరున్న లావాదేవీ {#named-transaction} + +ఫంక్షన్లను వాటి పేరు ద్వారా అమలు చేయవచ్చు. +సింబాలిక్ విలువతో `f(uint var)` ను user_account నుండి, మరియు 0 ఈథర్‌తో అమలు చేయడానికి, ఉపయోగించండి: + +```python +symbolic_var = m.make_symbolic_value() +contract_account.f(symbolic_var, caller=user_account, value=0) +``` + +లావాదేవీ యొక్క `value` పేర్కొనకపోతే, అది డిఫాల్ట్‌గా 0 అవుతుంది. + +#### సారాంశం {#summary-1} + +- ఒక లావాదేవీ యొక్క వాదనలు కాంక్రీట్ లేదా సింబాలిక్ కావచ్చు +- ఒక రా లావాదేవీ అన్ని ఫంక్షన్లను అన్వేషిస్తుంది +- ఫంక్షన్‌ను వాటి పేరు ద్వారా పిలవవచ్చు + +### వర్క్‌స్పేస్ {#workspace} + +`m.workspace` అనేది రూపొందించబడిన అన్ని ఫైల్‌ల కోసం అవుట్‌పుట్ డైరెక్టరీగా ఉపయోగించబడే డైరెక్టరీ: + +```python +print("Results are in {}".format(m.workspace)) +``` + +### అన్వేషణను ముగించండి {#terminate-the-exploration} + +అన్వేషణను ఆపడానికి [m.finalize()](https://manticore.readthedocs.io/en/latest/evm.html?highlight=finalize#manticore.ethereum.ManticoreEVM.finalize)ని ఉపయోగించండి. ఈ పద్ధతిని పిలిచిన తర్వాత తదుపరి లావాదేవీలు పంపకూడదు మరియు మాంటికోర్ అన్వేషించబడిన ప్రతి పాత్‌కు టెస్ట్ కేసులను ఉత్పత్తి చేస్తుంది. + +### సారాంశం: మాంటికోర్ కింద నడుస్తోంది {#summary-running-under-manticore} + +మునుపటి దశలన్నింటినీ కలిపి, మనం పొందుతాము: + +```python +from manticore.ethereum import ManticoreEVM + +m = ManticoreEVM() + +with open('example.sol') as f: + source_code = f.read() + +user_account = m.create_account(balance=1000) +contract_account = m.solidity_create_contract(source_code, owner=user_account) + +symbolic_var = m.make_symbolic_value() +contract_account.f(symbolic_var) + +print("Results are in {}".format(m.workspace)) +m.finalize() # stop the exploration +``` + +పై కోడ్ అంతా మీరు [`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)లో కనుగొనవచ్చు + +## త్రోయింగ్ పాత్‌లను పొందడం {#getting-throwing-paths} + +ఇప్పుడు మనం `f()`లో మినహాయింపును పెంచే పాత్‌ల కోసం నిర్దిష్ట ఇన్‌పుట్‌లను రూపొందిస్తాము. లక్ష్యం ఇప్పటికీ కింది స్మార్ట్ కాంట్రాక్ట్ [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol): + +```solidity +pragma solidity >=0.4.24 <0.6.0; +contract Simple { + function f(uint a) payable public{ + if (a == 65) { + revert(); + } + } +} +``` + +### స్టేట్ సమాచారాన్ని ఉపయోగించడం {#using-state-information} + +అమలు చేయబడిన ప్రతి పాత్ బ్లాక్ చైను యొక్క దాని స్థితిని కలిగి ఉంటుంది. ఒక స్థితి సిద్ధంగా ఉంటుంది లేదా అది చంపబడుతుంది, అంటే అది THROW లేదా REVERT సూచనను చేరుకుంటుంది: + +- [m.ready_states](https://manticore.readthedocs.io/en/latest/states.html#accessing): సిద్ధంగా ఉన్న స్థితుల జాబితా (అవి REVERT/INVALID ను అమలు చేయలేదు) +- [m.killed_states](https://manticore.readthedocs.io/en/latest/states.html#accessings): చంపబడిన స్థితుల జాబితా +- [m.all_states](https://manticore.readthedocs.io/en/latest/states.html#accessings): అన్ని స్థితులు + +```python +for state in m.all_states: + # స్టేట్‌తో ఏదైనా చేయండి +``` + +మీరు స్థితి సమాచారాన్ని యాక్సెస్ చేయవచ్చు. ఉదాహరణకి: + +- `state.platform.get_balance(account.address)`: ఖాతా యొక్క బ్యాలెన్స్ +- `state.platform.transactions`: లావాదేవీల జాబితా +- `state.platform.transactions[-1].return_data`: చివరి లావాదేవీ ద్వారా తిరిగి ఇవ్వబడిన డేటా + +చివరి లావాదేవీ ద్వారా తిరిగి ఇవ్వబడిన డేటా ఒక శ్రేణి, దీనిని ABI.deserialize తో ఒక విలువగా మార్చవచ్చు, ఉదాహరణకు: + +```python +data = state.platform.transactions[0].return_data +data = ABI.deserialize("uint", data) +``` + +### టెస్ట్‌కేస్‌ను ఎలా రూపొందించాలి {#how-to-generate-testcase} + +టెస్ట్‌కేస్‌ను రూపొందించడానికి [m.generate_testcase(state, name)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=generate_testcase#manticore.ethereum.ManticoreEVM.generate_testcase)ని ఉపయోగించండి: + +```python +m.generate_testcase(state, 'BugFound') +``` + +### సారాంశం {#summary-2} + +- మీరు m.all_states తో స్థితిపై పునరావృతం చేయవచ్చు +- `state.platform.get_balance(account.address)` ఖాతా బ్యాలెన్స్‌ను తిరిగి ఇస్తుంది +- `state.platform.transactions` లావాదేవీల జాబితాను తిరిగి ఇస్తుంది +- `transaction.return_data` అనేది తిరిగి ఇవ్వబడిన డేటా +- `m.generate_testcase(state, name)` స్థితి కోసం ఇన్‌పుట్‌లను ఉత్పత్తి చేస్తుంది + +### సారాంశం: త్రోయింగ్ పాత్‌ను పొందడం {#summary-getting-throwing-path} + +```python +from manticore.ethereum import ManticoreEVM + +m = ManticoreEVM() + +with open('example.sol') as f: + source_code = f.read() + +user_account = m.create_account(balance=1000) +contract_account = m.solidity_create_contract(source_code, owner=user_account) + +symbolic_var = m.make_symbolic_value() +contract_account.f(symbolic_var) + +## Check if an execution ends with a REVERT or INVALID + +for state in m.terminated_states: + last_tx = state.platform.transactions[-1] + if last_tx.result in ['REVERT', 'INVALID']: + print('Throw found {}'.format(m.workspace)) + m.generate_testcase(state, 'ThrowFound') +``` + +పై కోడ్ అంతా మీరు [`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)లో కనుగొనవచ్చు + +_గమనిక మేము చాలా సరళమైన స్క్రిప్ట్‌ను రూపొందించగలిగేవాళ్లం, ఎందుకంటే terminated_state ద్వారా తిరిగి ఇవ్వబడిన అన్ని స్థితుల ఫలితంలో REVERT లేదా INVALID ఉంది: ఈ ఉదాహరణ కేవలం APIని ఎలా మార్చాలో ప్రదర్శించడానికి మాత్రమే ఉద్దేశించబడింది._ + +## పరిమితులను జోడించడం {#adding-constraints} + +అన్వేషణను ఎలా నియంత్రించాలో చూద్దాం. ఫంక్షన్ ఎప్పుడూ `a == 65` తో పిలువబడదని `f()` యొక్క డాక్యుమెంటేషన్ పేర్కొంటుందని మేము ఊహిస్తాము, కాబట్టి `a == 65` తో ఉన్న ఏ బగ్ అయినా నిజమైన బగ్ కాదు. లక్ష్యం ఇప్పటికీ కింది స్మార్ట్ కాంట్రాక్ట్ [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol): + +```solidity +pragma solidity >=0.4.24 <0.6.0; +contract Simple { + function f(uint a) payable public{ + if (a == 65) { + revert(); + } + } +} +``` + +### ఆపరేటర్లు {#operators} + +[ఆపరేటర్లు](https://github.com/trailofbits/manticore/blob/master/manticore/core/smtlib/operators.py) మాడ్యూల్ పరిమితుల మార్పును సులభతరం చేస్తుంది, ఇతర వాటితో పాటు ఇది అందిస్తుంది: + +- Operators.AND, +- Operators.OR, +- Operators.UGT (unsigned greater than), +- Operators.UGE (unsigned greater than or equal to), +- Operators.ULT (unsigned lower than), +- Operators.ULE (unsigned lower than or equal to). + +మాడ్యూల్‌ను దిగుమతి చేయడానికి కింది వాటిని ఉపయోగించండి: + +```python +from manticore.core.smtlib import Operators +``` + +`Operators.CONCAT` అనేది ఒక శ్రేణిని ఒక విలువకు కలపడానికి ఉపయోగించబడుతుంది. ఉదాహరణకు, ఒక లావాదేవీ యొక్క return_data ను మరొక విలువతో సరిపోల్చడానికి ఒక విలువగా మార్చాలి: + +```python +last_return = Operators.CONCAT(256, *last_return) +``` + +### పరిమితులు {#state-constraint} + +మీరు పరిమితులను ప్రపంచవ్యాప్తంగా లేదా ఒక నిర్దిష్ట స్థితి కోసం ఉపయోగించవచ్చు. + +#### గ్లోబల్ పరిమితి {#state-constraint} + +గ్లోబల్ పరిమితిని జోడించడానికి `m.constrain(constraint)` ను ఉపయోగించండి. +ఉదాహరణకు, మీరు ఒక సింబాలిక్ చిరునామా నుండి ఒక కాంట్రాక్ట్‌ను పిలవవచ్చు మరియు ఈ చిరునామాను నిర్దిష్ట విలువలకు పరిమితం చేయవచ్చు: + +```python +symbolic_address = m.make_symbolic_value() +m.constraint(Operators.OR(symbolic == 0x41, symbolic_address == 0x42)) +m.transaction(caller=user_account, + address=contract_account, + data=m.make_symbolic_buffer(320), + value=0) +``` + +#### స్థితి పరిమితి {#state-constraint} + +ఒక నిర్దిష్ట స్థితికి పరిమితిని జోడించడానికి [state.constrain(constraint)](https://manticore.readthedocs.io/en/latest/states.html?highlight=StateBase#manticore.core.state.StateBase.constrain)ని ఉపయోగించండి. +దానిపై కొన్ని లక్షణాలను తనిఖీ చేయడానికి దాని అన్వేషణ తర్వాత స్థితిని పరిమితం చేయడానికి దీనిని ఉపయోగించవచ్చు. + +### పరిమితిని తనిఖీ చేయడం {#checking-constraint} + +ఒక పరిమితి ఇప్పటికీ సాధ్యమేనా అని తెలుసుకోవడానికి `solver.check(state.constraints)` ను ఉపయోగించండి. +ఉదాహరణకు, కిందిది symbolic_value ను 65 కంటే భిన్నంగా ఉండేలా పరిమితం చేస్తుంది మరియు స్థితి ఇప్పటికీ సాధ్యమేనా అని తనిఖీ చేస్తుంది: + +```python +state.constrain(symbolic_var != 65) +if solver.check(state.constraints): + # state is feasible +``` + +### సారాంశం: పరిమితులను జోడించడం {#summary-adding-constraints} + +మునుపటి కోడ్‌కు పరిమితిని జోడిస్తే, మనం పొందుతాము: + +```python +from manticore.ethereum import ManticoreEVM +from manticore.core.smtlib.solver import Z3Solver + +solver = Z3Solver.instance() + +m = ManticoreEVM() + +with open("example.sol") as f: + source_code = f.read() + +user_account = m.create_account(balance=1000) +contract_account = m.solidity_create_contract(source_code, owner=user_account) + +symbolic_var = m.make_symbolic_value() +contract_account.f(symbolic_var) + +no_bug_found = True + +## ఒక ఎగ్జిక్యూషన్ REVERT లేదా INVALID తో ముగుస్తుందో లేదో తనిఖీ చేయండి + +for state in m.terminated_states: + last_tx = state.platform.transactions[-1] + if last_tx.result in ['REVERT', 'INVALID']: + # a == 65 అయిన పాత్‌ను మేము పరిగణించము + condition = symbolic_var != 65 + if m.generate_testcase(state, name="BugFound", only_if=condition): + print(f'బగ్ కనుగొనబడింది, ఫలితాలు {m.workspace} లో ఉన్నాయి') + no_bug_found = False + +if no_bug_found: + print(f'బగ్ ఏదీ కనుగొనబడలేదు') +``` + +పై కోడ్ అంతా మీరు [`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)లో కనుగొనవచ్చు diff --git a/public/content/translations/te/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md b/public/content/translations/te/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md new file mode 100644 index 00000000000..870df6406c7 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md @@ -0,0 +1,239 @@ +--- +title: "స్మార్ట్ కాంట్రాక్ట్ బగ్స్‌ను కనుగొనడానికి స్లిథర్‌ను ఎలా ఉపయోగించాలి" +description: "స్మార్ట్ కాంట్రాక్ట్‌లలో బగ్స్‌ను స్వయంచాలకంగా కనుగొనడానికి స్లిథర్‌ను ఎలా ఉపయోగించాలి" +author: Trailofbits +lang: te +tags: + [ + "దృఢత్వం", + "స్మార్ట్ కాంట్రాక్టులు", + "భద్రత", + "పరీక్షించడం" + ] +skill: advanced +published: 2020-06-09 +source: Building secure contracts +sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/slither +--- + +## స్లిథర్‌ను ఎలా ఉపయోగించాలి {#how-to-use-slither} + +స్మార్ట్ కాంట్రాక్ట్‌లలో బగ్స్‌ను స్వయంచాలకంగా కనుగొనడానికి స్లిథర్‌ను ఎలా ఉపయోగించాలో చూపడమే ఈ ట్యుటోరియల్ లక్ష్యం. + +- [ఇన్‌స్టాలేషన్](#installation) +- [కమాండ్ లైన్ వినియోగం](#command-line) +- [స్టాటిక్ అనాలిసిస్‌కు పరిచయం](#static-analysis): స్టాటిక్ అనాలిసిస్‌కు సంక్షిప్త పరిచయం +- [API](#api-basics): పైథాన్ API వివరణ + +## సంస్థాపన {#installation} + +స్లిథర్‌కు పైథాన్ >= 3.6 అవసరం. దీనిని పిప్ ద్వారా లేదా డాకర్‌ని ఉపయోగించి ఇన్‌స్టాల్ చేయవచ్చు. + +pip ద్వారా స్లిథర్: + +```bash +pip3 install --user slither-analyzer +``` + +డాకర్ ద్వారా స్లిథర్: + +```bash +docker pull trailofbits/eth-security-toolbox +docker run -it -v "$PWD":/home/trufflecon trailofbits/eth-security-toolbox +``` + +_చివరి కమాండ్ మీ ప్రస్తుత డైరెక్టరీకి యాక్సెస్ ఉన్న డాకర్‌లో eth-security-toolboxను రన్ చేస్తుంది. మీరు మీ హోస్ట్ నుండి ఫైల్‌లను మార్చవచ్చు, మరియు డాకర్_ నుండి ఫైల్‌లపై సాధనాలను అమలు చేయండి + +డాకర్ లోపల, రన్ చేయండి: + +```bash +solc-select 0.5.11 +cd /home/trufflecon/ +``` + +### ఒక స్క్రిప్ట్‌ను అమలు చేయడం {#running-a-script} + +పైథాన్ 3 తో పైథాన్ స్క్రిప్ట్‌ను అమలు చేయడానికి: + +```bash +python3 script.py +``` + +### కమాండ్ లైన్ {#command-line} + +**కమాండ్ లైన్ వర్సెస్ యూజర్-డిఫైన్డ్ స్క్రిప్ట్‌లు.** స్లిథర్ అనేక సాధారణ బగ్‌లను కనుగొనే ముందే నిర్వచించిన డిటెక్టర్‌ల సమితితో వస్తుంది. కమాండ్ లైన్ నుండి స్లిథర్‌ను కాల్ చేయడం వల్ల అన్ని డిటెక్టర్లు రన్ అవుతాయి, స్టాటిక్ అనాలిసిస్ గురించి వివరణాత్మక జ్ఞానం అవసరం లేదు: + +```bash +slither project_paths +``` + +డిటెక్టర్లతో పాటు, స్లిథర్ దాని [ప్రింటర్లు](https://github.com/crytic/slither#printers) మరియు [టూల్స్](https://github.com/crytic/slither#tools) ద్వారా కోడ్ సమీక్ష సామర్థ్యాలను కలిగి ఉంది. + +ప్రైవేట్ డిటెక్టర్లు మరియు GitHub ఇంటిగ్రేషన్‌కు యాక్సెస్ పొందడానికి [crytic.io](https://github.com/crytic)ని ఉపయోగించండి. + +## స్టాటిక్ విశ్లేషణ {#static-analysis} + +స్లిథర్ స్టాటిక్ అనాలిసిస్ ఫ్రేమ్‌వర్క్ యొక్క సామర్థ్యాలు మరియు డిజైన్ బ్లాగ్ పోస్టులలో ([1](https://blog.trailofbits.com/2018/10/19/slither-a-solidity-static-analysis-framework/), [2](https://blog.trailofbits.com/2019/05/27/slither-the-leading-static-analyzer-for-smart-contracts/)) మరియు ఒక [అకాడెమిక్ పేపర్](https://github.com/trailofbits/publications/blob/master/papers/wetseb19.pdf)లో వివరించబడింది. + +స్టాటిక్ విశ్లేషణ వివిధ రకాలుగా ఉంటుంది. [clang](https://clang-analyzer.llvm.org/) మరియు [gcc](https://lwn.net/Articles/806099/) వంటి కంపైలర్లు ఈ పరిశోధన పద్ధతులపై ఆధారపడతాయని మీరు బహుశా గ్రహించి ఉంటారు, కానీ ఇది ([Infer](https://fbinfer.com/), [CodeClimate](https://codeclimate.com/), [FindBugs](http://findbugs.sourceforge.net/) మరియు [Frama-C](https://frama-c.com/) మరియు [Polyspace](https://www.mathworks.com/products/polyspace.html) వంటి ఫార్మల్ మెథడ్స్ ఆధారిత టూల్స్‌కు) కూడా ఆధారం. + +మేము ఇక్కడ స్టాటిక్ విశ్లేషణ పద్ధతులు మరియు పరిశోధకులను సమగ్రంగా సమీక్షించము. దానికి బదులుగా, స్లిథర్ ఎలా పనిచేస్తుందో అర్థం చేసుకోవడానికి ఏమి అవసరమో దానిపై మేము దృష్టి పెడతాము, తద్వారా మీరు బగ్‌లను కనుగొనడానికి మరియు కోడ్‌ను అర్థం చేసుకోవడానికి దాన్ని మరింత సమర్థవంతంగా ఉపయోగించవచ్చు. + +- [కోడ్ ప్రాతినిధ్యం](#code-representation) +- [కోడ్ విశ్లేషణ](#analysis) +- [మధ్యంతర ప్రాతినిధ్యం](#intermediate-representation) + +### కోడ్ ప్రాతినిధ్యం {#code-representation} + +ఒకే ఒక ఎగ్జిక్యూషన్ పాత్ గురించి తర్కించే డైనమిక్ అనాలిసిస్‌కు విరుద్ధంగా, స్టాటిక్ అనాలిసిస్ అన్ని పాత్‌ల గురించి ఒకేసారి తర్కిస్తుంది. అలా చేయడానికి, ఇది వేరే కోడ్ ప్రాతినిధ్యంపై ఆధారపడుతుంది. అబ్‌స్ట్రాక్ట్ సింటాక్స్ ట్రీ (AST) మరియు కంట్రోల్ ఫ్లో గ్రాఫ్ (CFG) అనేవి రెండు అత్యంత సాధారణమైనవి. + +### అబ్‌స్ట్రాక్ట్ సింటాక్స్ ట్రీలు (AST) {#abstract-syntax-trees-ast} + +కంపైలర్ కోడ్‌ను పార్స్ చేసిన ప్రతిసారీ ASTలు ఉపయోగించబడతాయి. స్టాటిక్ విశ్లేషణను నిర్వహించగల అత్యంత ప్రాథమిక నిర్మాణం బహుశా ఇదే. + +సంక్షిప్తంగా, AST అనేది ఒక నిర్మాణాత్మక ట్రీ, ఇక్కడ సాధారణంగా, ప్రతి లీఫ్‌లో ఒక వేరియబుల్ లేదా ఒక కాన్‌స్టాంట్ ఉంటుంది మరియు అంతర్గత నోడ్స్ ఆపరాండ్‌లు లేదా కంట్రోల్ ఫ్లో ఆపరేషన్‌లు. కింది కోడ్‌ను పరిగణించండి: + +```solidity +function safeAdd(uint a, uint b) pure internal returns(uint){ + if(a + b <= a){ + revert(); + } + return a + b; +} +``` + +సంబంధిత AST ఇందులో చూపబడింది: + +![AST](./ast.png) + +స్లిథర్ solc ద్వారా ఎగుమతి చేయబడిన ASTని ఉపయోగిస్తుంది. + +నిర్మించడానికి సులభమైనప్పటికీ, AST ఒక నెస్ట్ చేయబడిన నిర్మాణం. కొన్నిసార్లు, విశ్లేషించడానికి ఇది చాలా సరళమైనది కాదు. `a + b <= a` అనే ఎక్స్‌ప్రెషన్ ద్వారా ఉపయోగించే ఆపరేషన్‌లను గుర్తించడానికి, మీరు మొదట `<=` మరియు తర్వాత `+`ని విశ్లేషించాలి. ఒక సాధారణ పద్ధతి విజిటర్ ప్యాటర్న్‌ను ఉపయోగించడం, ఇది ట్రీ ద్వారా పునరావృతంగా నావిగేట్ చేస్తుంది. స్లిథర్ [`ExpressionVisitor`](https://github.com/crytic/slither/blob/master/slither/visitors/expression/expression.py)లో ఒక జెనరిక్ విజిటర్‌ను కలిగి ఉంది. + +కింది కోడ్ ఒక ఎక్స్‌ప్రెషన్‌లో అడిషన్ ఉందో లేదో గుర్తించడానికి `ExpressionVisitor`ని ఉపయోగిస్తుంది: + +```python +from slither.visitors.expression.expression import ExpressionVisitor +from slither.core.expressions.binary_operation import BinaryOperationType + +class HasAddition(ExpressionVisitor): + + def result(self): + return self._result + + def _post_binary_operation(self, expression): + if expression.type == BinaryOperationType.ADDITION: + self._result = True + +visitor = HasAddition(expression) # expression అనేది పరీక్షించాల్సిన ఎక్స్‌ప్రెషన్ +print(f'The expression {expression} has a addition: {visitor.result()}') +``` + +### కంట్రోల్ ఫ్లో గ్రాఫ్ (CFG) {#control-flow-graph-cfg} + +రెండవ అత్యంత సాధారణ కోడ్ ప్రాతినిధ్యం కంట్రోల్ ఫ్లో గ్రాఫ్ (CFG). దాని పేరు సూచించినట్లుగా, ఇది అన్ని ఎగ్జిక్యూషన్ పాత్‌లను బహిర్గతం చేసే గ్రాఫ్-ఆధారిత ప్రాతినిధ్యం. ప్రతి నోడ్ ఒకటి లేదా అంతకంటే ఎక్కువ సూచనలను కలిగి ఉంటుంది. గ్రాఫ్‌లోని ఎడ్జ్‌లు కంట్రోల్ ఫ్లో ఆపరేషన్‌లను (if/then/else, loop, etc) సూచిస్తాయి. మా మునుపటి ఉదాహరణ యొక్క CFG: + +![CFG](./cfg.png) + +చాలా విశ్లేషణలు నిర్మించబడిన ప్రాతినిధ్యం CFG. + +అనేక ఇతర కోడ్ ప్రాతినిధ్యాలు ఉన్నాయి. మీరు చేయాలనుకుంటున్న విశ్లేషణ ప్రకారం ప్రతి ప్రాతినిధ్యానికి ప్రయోజనాలు మరియు నష్టాలు ఉన్నాయి. + +### విశ్లేషణ {#analysis} + +మీరు స్లిథర్‌తో చేయగల సరళమైన విశ్లేషణ రకాలు సింటాక్టిక్ విశ్లేషణలు. + +### సింటాక్స్ విశ్లేషణ {#syntax-analysis} + +ఒక ప్యాట్రన్ మ్యాచింగ్-లాంటి పద్ధతిని ఉపయోగించి, అననుకూలతలు మరియు లోపాలను కనుగొనడానికి స్లిథర్ కోడ్ యొక్క వివిధ భాగాలు మరియు వాటి ప్రాతినిధ్యం ద్వారా నావిగేట్ చేయగలదు. + +ఉదాహరణకు, కింది డిటెక్టర్లు సింటాక్స్‌కు సంబంధించిన సమస్యల కోసం చూస్తాయి: + +- [స్టేట్ వేరియబుల్ షాడోయింగ్](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variable-shadowing): అన్ని స్టేట్ వేరియబుల్స్‌పై పునరావృతమవుతుంది మరియు ఏదైనా ఒక ఇన్హెరిట్ చేయబడిన కాంట్రాక్ట్ నుండి వేరియబుల్‌ను షాడో చేస్తుందో లేదో తనిఖీ చేస్తుంది ([state.py#L51-L62](https://github.com/crytic/slither/blob/0441338e055ab7151b30ca69258561a5a793f8ba/slither/detectors/shadowing/state.py#L51-L62)) + +- [తప్పు ERC20 ఇంటర్‌ఫేస్](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc20-interface): తప్పు ERC20 ఫంక్షన్ సంతకాల కోసం చూడండి ([incorrect_erc20_interface.py#L34-L55](https://github.com/crytic/slither/blob/0441338e055ab7151b30ca69258561a5a793f8ba/slither/detectors/erc/incorrect_erc20_interface.py#L34-L55)) + +### సెమాంటిక్ విశ్లేషణ {#semantic-analysis} + +సింటాక్స్ విశ్లేషణకు విరుద్ధంగా, ఒక సెమాంటిక్ విశ్లేషణ లోతుగా వెళ్లి కోడ్ యొక్క “అర్థాన్ని” విశ్లేషిస్తుంది. ఈ కుటుంబంలో కొన్ని విస్తృత రకాల విశ్లేషణలు ఉన్నాయి. అవి మరింత శక్తివంతమైన మరియు ఉపయోగకరమైన ఫలితాలకు దారితీస్తాయి, కానీ వ్రాయడానికి కూడా చాలా క్లిష్టంగా ఉంటాయి. + +అత్యంత అధునాతన దుర్బలత్వ గుర్తింపుల కోసం సెమాంటిక్ విశ్లేషణలు ఉపయోగించబడతాయి. + +#### డేటా డిపెండెన్సీ విశ్లేషణ {#fixed-point-computation} + +`variable_a` విలువ `variable_b` ద్వారా ప్రభావితమయ్యే మార్గం ఉంటే, `variable_a` వేరియబుల్ `variable_b`పై డేటా-ఆధారితమని చెప్పబడుతుంది. + +కింది కోడ్‌లో, `variable_a` `variable_b`పై ఆధారపడి ఉంటుంది: + +```solidity +// ... +variable_a = variable_b + 1; +``` + +స్లిథర్ దాని ఇంటర్మీడియట్ రిప్రజెంటేషన్ (తరువాతి విభాగంలో చర్చించబడింది) కారణంగా, అంతర్నిర్మిత [డేటా డిపెండెన్సీ](https://github.com/crytic/slither/wiki/data-dependency) సామర్థ్యాలతో వస్తుంది. + +డేటా డిపెండెన్సీ వినియోగం యొక్క ఉదాహరణ [ప్రమాదకరమైన కఠినమైన సమానత్వ డిటెక్టర్](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities)లో కనుగొనవచ్చు. ఇక్కడ స్లిథర్ ఒక ప్రమాదకరమైన విలువతో కఠినమైన సమానత్వ పోలిక కోసం చూస్తుంది ([incorrect_strict_equality.py#L86-L87](https://github.com/crytic/slither/blob/6d86220a53603476f9567c3358524ea4db07fb25/slither/detectors/statements/incorrect_strict_equality.py#L86-L87)), మరియు దాడి చేసే వ్యక్తి కాంట్రాక్ట్‌ను ట్రాప్ చేయకుండా నిరోధించడానికి, `==`కి బదులుగా `>=` లేదా `<=`ని ఉపయోగించాలని వినియోగదారునికి తెలియజేస్తుంది. ఇతర వాటితో పాటు, డిటెక్టర్ `balanceOf(address)`కి కాల్ యొక్క రిటర్న్ విలువను ప్రమాదకరమైనదిగా పరిగణిస్తుంది ([incorrect_strict_equality.py#L63-L64](https://github.com/crytic/slither/blob/6d86220a53603476f9567c3358524ea4db07fb25/slither/detectors/statements/incorrect_strict_equality.py#L63-L64)), మరియు దాని వినియోగాన్ని ట్రాక్ చేయడానికి డేటా డిపెండెన్సీ ఇంజిన్‌ను ఉపయోగిస్తుంది. + +#### ఫిక్స్‌డ్-పాయింట్ కంప్యూటేషన్ {#fixed-point-computation} + +మీ విశ్లేషణ CFG ద్వారా నావిగేట్ చేసి, ఎడ్జ్‌లను అనుసరిస్తే, మీరు ఇప్పటికే సందర్శించిన నోడ్స్‌ను చూసే అవకాశం ఉంది. ఉదాహరణకు, ఒక లూప్ క్రింద చూపిన విధంగా ఉంటే: + +```solidity +for(uint i; i < range; ++){ + variable_a += 1 +} +``` + +మీ విశ్లేషణ ఎప్పుడు ఆపాలో తెలుసుకోవాలి. ఇక్కడ రెండు ప్రధాన వ్యూహాలు ఉన్నాయి: (1) ప్రతి నోడ్‌పై పరిమిత సంఖ్యలో పునరావృతం చేయడం, (2) _ఫిక్స్‌పాయింట్_ అని పిలవబడే దానిని లెక్కించడం. ఒక ఫిక్స్‌పాయింట్ అంటే ప్రాథమికంగా ఈ నోడ్‌ను విశ్లేషించడం వల్ల ఎటువంటి అర్థవంతమైన సమాచారం లభించదు. + +ఫిక్స్‌పాయింట్ ఉపయోగించిన ఉదాహరణ రీఎంట్రన్సీ డిటెక్టర్లలో కనుగొనవచ్చు: స్లిథర్ నోడ్స్‌ను అన్వేషిస్తుంది మరియు బాహ్య కాల్స్, స్టోరేజ్‌కు వ్రాయడం మరియు చదవడం కోసం చూస్తుంది. ఒకసారి అది ఒక ఫిక్స్‌పాయింట్‌ను చేరుకున్న తర్వాత ([reentrancy.py#L125-L131](https://github.com/crytic/slither/blob/master/slither/detectors/reentrancy/reentrancy.py#L125-L131)), అది అన్వేషణను ఆపివేస్తుంది మరియు వివిధ రీఎంట్రన్సీ ప్యాట్రన్‌ల ద్వారా రీఎంట్రన్సీ ఉందో లేదో చూడటానికి ఫలితాలను విశ్లేషిస్తుంది ([reentrancy_benign.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_benign.py), [reentrancy_read_before_write.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_read_before_write.py), [reentrancy_eth.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_eth.py)). + +సమర్థవంతమైన ఫిక్స్‌డ్ పాయింట్ కంప్యూటేషన్‌ను ఉపయోగించి విశ్లేషణలు రాయడానికి, విశ్లేషణ దాని సమాచారాన్ని ఎలా ప్రచారం చేస్తుందనే దానిపై మంచి అవగాహన అవసరం. + +### మధ్యంతర ప్రాతినిధ్యం {#intermediate-representation} + +ఇంటర్మీడియట్ రిప్రజెంటేషన్ (IR) అనేది అసలు భాష కంటే స్టాటిక్ విశ్లేషణకు మరింత అనుకూలంగా ఉండేలా ఉద్దేశించిన భాష. స్లిథర్ సాలిడిటీని దాని స్వంత IR: [SlithIR](https://github.com/crytic/slither/wiki/SlithIR)కి అనువదిస్తుంది. + +మీరు కేవలం ప్రాథమిక తనిఖీలను వ్రాయాలనుకుంటే SlithIRను అర్థం చేసుకోవడం అవసరం లేదు. అయితే, మీరు అధునాతన సెమాంటిక్ విశ్లేషణలను వ్రాయాలని ప్లాన్ చేస్తే ఇది ఉపయోగపడుతుంది. [SlithIR](https://github.com/crytic/slither/wiki/Printer-documentation#slithir) మరియు [SSA](https://github.com/crytic/slither/wiki/Printer-documentation#slithir-ssa) ప్రింటర్లు కోడ్ ఎలా అనువదించబడిందో అర్థం చేసుకోవడానికి మీకు సహాయపడతాయి. + +## API బేసిక్స్ {#api-basics} + +స్లిథర్ ఒక APIని కలిగి ఉంది, ఇది కాంట్రాక్ట్ మరియు దాని ఫంక్షన్ల యొక్క ప్రాథమిక లక్షణాలను అన్వేషించడానికి మిమ్మల్ని అనుమతిస్తుంది. + +ఒక కోడ్‌బేస్‌ను లోడ్ చేయడానికి: + +```python +from slither import Slither +slither = Slither('/path/to/project') + +``` + +### కాంట్రాక్ట్‌లు మరియు ఫంక్షన్లను అన్వేషించడం {#exploring-contracts-and-functions} + +ఒక `Slither` ఆబ్జెక్ట్ కలిగి ఉంది: + +- `contracts (list(Contract)`: కాంట్రాక్ట్‌ల జాబితా +- `contracts_derived (list(Contract)`: మరొక కాంట్రాక్ట్ ద్వారా ఇన్హెరిట్ చేయబడని కాంట్రాక్ట్‌ల జాబితా (కాంట్రాక్ట్‌ల ఉపసమితి) +- `get_contract_from_name (str)`: దాని పేరు నుండి ఒక కాంట్రాక్ట్‌ను తిరిగి ఇస్తుంది + +ఒక `Contract` ఆబ్జెక్ట్ కలిగి ఉంది: + +- `name (str)`: కాంట్రాక్ట్ పేరు +- `functions (list(Function))`: ఫంక్షన్ల జాబితా +- `modifiers (list(Modifier))`: మాడిఫైయర్ల జాబితా +- `all_functions_called (list(Function/Modifier))`: కాంట్రాక్ట్ ద్వారా చేరగల అన్ని అంతర్గత ఫంక్షన్ల జాబితా +- `inheritance (list(Contract))`: ఇన్హెరిట్ చేయబడిన కాంట్రాక్ట్‌ల జాబితా +- `get_function_from_signature (str)`: దాని సంతకం నుండి ఒక ఫంక్షన్‌ను తిరిగి ఇస్తుంది +- `get_modifier_from_signature (str)`: దాని సంతకం నుండి ఒక మాడిఫైయర్‌ను తిరిగి ఇస్తుంది +- `get_state_variable_from_name (str)`: దాని పేరు నుండి ఒక స్టేట్‌వేరియబుల్‌ను తిరిగి ఇస్తుంది + +ఒక `Function` లేదా `Modifier` ఆబ్జెక్ట్ కలిగి ఉంది: + +- `name (str)`: ఫంక్షన్ పేరు +- `contract (contract)`: ఫంక్షన్ ప్రకటించబడిన కాంట్రాక్ట్ +- `nodes (list(Node))`: ఫంక్షన్/మాడిఫైయర్ యొక్క CFGని కంపోజ్ చేసే నోడ్స్ జాబితా +- `entry_point (Node)`: CFG యొక్క ఎంట్రీ పాయింట్ +- `variables_read (list(Variable))`: చదవబడిన వేరియబుల్స్ జాబితా +- `variables_written (list(Variable))`: వ్రాయబడిన వేరియబుల్స్ జాబితా +- `state_variables_read (list(StateVariable))`: చదవబడిన స్టేట్ వేరియబుల్స్ జాబితా (వేరియబుల్స్ `read` యొక్క ఉపసమితి) +- `state_variables_written (list(StateVariable))`: వ్రాయబడిన స్టేట్ వేరియబుల్స్ జాబితా (వేరియబుల్స్ `written` యొక్క ఉపసమితి) diff --git a/public/content/translations/te/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md b/public/content/translations/te/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md new file mode 100644 index 00000000000..1bdf48d71a7 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md @@ -0,0 +1,81 @@ +--- +title: "మీ ఒరాకిల్‌గా Tellorను ఎలా సెటప్ చేయాలి" +description: "మీ ప్రోటోకాల్‌లో Tellor ఒరాకిల్‌ను ఇంటిగ్రేట్ చేయడం ప్రారంభించడానికి ఒక గైడ్" +author: "Tellor" +lang: te +tags: [ "దృఢత్వం", "స్మార్ట్ కాంట్రాక్టులు", "ఒరాకిల్స్" ] +skill: beginner +published: 2021-06-29 +source: Tellor Docs +sourceUrl: https://docs.tellor.io/tellor/ +--- + +పాప్ క్విజ్: మీ ప్రోటోకాల్ దాదాపుగా పూర్తయింది, కానీ ఆఫ్‌చైన్ డేటాకు యాక్సెస్ పొందడానికి దానికి ఒక ఒరాకిల్ అవసరం... మీరు ఏమి చేస్తారు? + +## (సాఫ్ట్) ముందస్తు అవసరాలు {#soft-prerequisites} + +ఈ పోస్ట్ ఒక ఒరాకిల్ ఫీడ్‌ను యాక్సెస్ చేయడాన్ని వీలైనంత సులభంగా మరియు సూటిగా మార్చాలని లక్ష్యంగా పెట్టుకుంది. అలా చెప్పినప్పటికీ, ఒరాకిల్ అంశంపై దృష్టి సారించడానికి మీ కోడింగ్ నైపుణ్య స్థాయి గురించి మేము ఈ క్రింది వాటిని ఊహిస్తున్నాము. + +అంచనాలు: + +- మీరు ఒక టెర్మినల్‌ను నావిగేట్ చేయగలరు +- మీరు npm ఇన్‌స్టాల్ చేసారు +- డిపెండెన్సీలను నిర్వహించడానికి npmను ఎలా ఉపయోగించాలో మీకు తెలుసు + +Tellor అనేది అమలుకు సిద్ధంగా ఉన్న ఒక లైవ్ మరియు ఓపెన్-సోర్స్డ్ ఒరాకిల్. Tellorతో ఎంత సులభంగా ప్రారంభించవచ్చో ప్రదర్శించడానికి ఈ బిగినర్స్ గైడ్ ఇక్కడ ఉంది, ఇది మీ ప్రాజెక్ట్‌కు పూర్తిగా వికేంద్రీకృత మరియు సెన్సార్‌షిప్-నిరోధక ఒరాకిల్‌ను అందిస్తుంది. + +## అవలోకనం {#overview} + +Tellor అనేది ఒక ఒరాకిల్ సిస్టమ్, ఇక్కడ పార్టీలు ఒక ఆఫ్‌చైన్ డేటా పాయింట్ (ఉదా., BTC/USD) విలువను అభ్యర్థించవచ్చు మరియు ఈ విలువను ఒక ఆన్‌చైన్ డేటా-బ్యాంక్‌కు జోడించడానికి రిపోర్టర్‌లు పోటీపడతారు, ఇది అన్ని Ethereum స్మార్ట్ కాంట్రాక్ట్‌ల ద్వారా యాక్సెస్ చేయబడుతుంది. ఈ డేటా-బ్యాంక్‌లోని ఇన్‌పుట్‌లు స్టేక్ చేసిన రిపోర్టర్ల నెట్‌వర్క్ ద్వారా భద్రపరచబడ్డాయి. Tellor క్రిప్టో-ఎకనామిక్ ప్రోత్సాహక యంత్రాంగాలను ఉపయోగిస్తుంది, రిపోర్టర్ల ద్వారా నిజాయితీగల డేటా సమర్పణలకు బహుమతి ఇస్తుంది మరియు Tellor యొక్క టోకెన్, ట్రిబ్యూట్స్ (TRB) జారీ చేయడం ద్వారా మరియు ఒక వివాద యంత్రాంగం ద్వారా చెడ్డ నటులను శిక్షిస్తుంది. + +ఈ ట్యుటోరియల్‌లో మేము వీటి గురించి చర్చిస్తాము: + +- ప్రారంభించడానికి మరియు పని చేయడానికి మీకు అవసరమైన ప్రాథమిక టూల్‌కిట్‌ను సెటప్ చేయడం. +- ఒక సులభమైన ఉదాహరణ ద్వారా నడవడం. +- మీరు ప్రస్తుతం Tellorను పరీక్షించగల నెట్‌వర్క్‌ల యొక్క టెస్టునెట్ చిరునామాలను జాబితా చేయడం. + +## UsingTellor {#usingtellor} + +మీరు చేయాలనుకుంటున్న మొదటి పని Tellorను మీ ఒరాకిల్‌గా ఉపయోగించడానికి అవసరమైన ప్రాథమిక సాధనాలను ఇన్‌స్టాల్ చేయడం. టెల్లర్ యూజర్ కాంట్రాక్టులను ఇన్‌స్టాల్ చేయడానికి [ఈ ప్యాకేజీని](https://github.com/tellor-io/usingtellor) ఉపయోగించండి: + +`npm install usingtellor` + +ఇన్‌స్టాల్ చేసిన తర్వాత, ఇది మీ కాంట్రాక్ట్‌లను 'UsingTellor' కాంట్రాక్ట్ నుండి ఫంక్షన్‌లను ఇన్హెరిట్ చేయడానికి అనుమతిస్తుంది. + +అద్భుతం! ఇప్పుడు మీరు టూల్స్ సిద్ధం చేసుకున్నారు కాబట్టి, మనం బిట్‌కాయిన్ ధరను పొందే ఒక సులభమైన వ్యాయామం చేద్దాం: + +### BTC/USD ఉదాహరణ {#btcusd-example} + +UsingTellor కాంట్రాక్ట్‌ను ఇన్హెరిట్ చేసుకోండి, Tellor చిరునామాను ఒక కన్‌స్ట్రక్టర్ ఆర్గ్యుమెంట్‌గా పంపండి: + +ఒక ఉదాహరణ: + +```solidity +import "usingtellor/contracts/UsingTellor.sol"; + +contract PriceContract is UsingTellor { + uint256 public btcPrice; + + //ఈ కాంట్రాక్ట్ ఇప్పుడు UsingTellorలోని అన్ని ఫంక్షన్‌లకు యాక్సెస్ కలిగి ఉంది + +constructor(address payable _tellorAddress) UsingTellor(_tellorAddress) public {} + +function setBtcPrice() public { + bytes memory _b = abi.encode("SpotPrice",abi.encode("btc","usd")); + bytes32 _queryId = keccak256(_b); + + uint256 _timestamp; + bytes _value; + + (_value, _timestamp) = getDataBefore(_queryId, block.timestamp - 15 minutes); + + btcPrice = abi.decode(_value,(uint256)); + } +} +``` + +కాంట్రాక్ట్ చిరునామాల పూర్తి జాబితా కోసం [ఇక్కడ](https://docs.tellor.io/tellor/the-basics/contracts-reference) చూడండి. + +వాడుకలో సౌలభ్యం కోసం, సులభమైన ఇంటిగ్రేషన్ కోసం UsingTellor రెపో [Tellor ప్లేగ్రౌండ్](https://github.com/tellor-io/TellorPlayground) కాంట్రాక్ట్ యొక్క ఒక వెర్షన్‌తో వస్తుంది. సహాయకరమైన ఫంక్షన్‌ల జాబితా కోసం [ఇక్కడ](https://github.com/tellor-io/sampleUsingTellor#tellor-playground) చూడండి. + +Tellor ఒరాకిల్ యొక్క మరింత పటిష్టమైన అమలు కోసం, అందుబాటులో ఉన్న ఫంక్షన్‌ల పూర్తి జాబితాను [ఇక్కడ](https://github.com/tellor-io/usingtellor/blob/master/README.md) తనిఖీ చేయండి. diff --git a/public/content/translations/te/developers/tutorials/how-to-view-nft-in-metamask/index.md b/public/content/translations/te/developers/tutorials/how-to-view-nft-in-metamask/index.md new file mode 100644 index 00000000000..f0e4718e5e3 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/how-to-view-nft-in-metamask/index.md @@ -0,0 +1,33 @@ +--- +title: "మీ వాలెట్‌లో మీ NFTని ఎలా చూడాలి (NFT ట్యుటోరియల్ సిరీస్‌లో పార్ట్ 3/3)" +description: "ఈ ట్యుటోరియల్ MetaMaskలో ఇప్పటికే ఉన్న NFTని ఎలా చూడాలో వివరిస్తుంది!" +author: "Sumi Mudgil" +tags: [ "ERC-721", "Alchemy", "Solidity" ] +skill: beginner +lang: te +published: 2021-04-22 +--- + +ఈ ట్యుటోరియల్ NFT ట్యుటోరియల్ సిరీస్‌లో పార్ట్ 3/3, ఇక్కడ మనం కొత్తగా మింట్ చేసిన NFTని చూస్తాము. అయినప్పటికీ, మీరు Mainnet లేదా ఏదైనా టెస్టునెట్‌లో సహా MetaMaskను ఉపయోగించి ఏదైనా ERC-721 టోకెన్ కోసం సాధారణ ట్యుటోరియల్‌ను ఉపయోగించవచ్చు. మీరు ఇతీరియములో మీ స్వంత NFTని ఎలా మింట్ చేయాలో నేర్చుకోవాలనుకుంటే, మీరు [ఒక NFT స్మార్ట్ కాంట్రాక్ట్‌ను ఎలా రాయాలి & అమలు చేయాలి అనే దానిపై పార్ట్ 1](/developers/tutorials/how-to-write-and-deploy-an-nft)ను చూడాలి! + +అభినందనలు! మీరు మా NFT ట్యుటోరియల్ సిరీస్‌లో అతి చిన్న మరియు సరళమైన భాగానికి చేరుకున్నారు — ఒక వర్చువల్ వాలెట్‌లో మీ కొత్తగా మింట్ చేసిన NFTని ఎలా చూడాలి. ఈ ఉదాహరణ కోసం మేము MetaMaskను ఉపయోగిస్తాము ఎందుకంటే దీనిని మేము ముందున్న రెండు భాగాలలో ఉపయోగించాము. + +ముందస్తు అవసరంగా, మీరు ఇప్పటికే మీ మొబైల్‌లో MetaMaskను ఇన్‌స్టాల్ చేసి ఉండాలి, మరియు దానిలో మీరు మీ NFTని మింట్ చేసిన అకౌంట్ ఉండాలి — మీరు ఈ యాప్‌ను [iOS](https://apps.apple.com/us/app/metamask-blockchain-wallet/id1438144202) లేదా [Android](https://play.google.com/store/apps/details?id=io.metamask&hl=en_US&gl=US)లో ఉచితంగా పొందవచ్చు. + +## దశ 1: మీ నెట్‌వర్క్‌ను Sepoliaకు సెట్ చేయండి {#set-network-to-sepolia} + +యాప్ పైభాగంలో, “వాలెట్” బటన్‌ను నొక్కండి, ఆ తర్వాత నెట్‌వర్క్‌ను ఎంచుకోమని మిమ్మల్ని అడుగుతుంది. మా NFT Sepolia నెట్‌వర్క్‌లో మింట్ చేయబడినందున, మీరు మీ నెట్‌వర్క్‌గా Sepoliaను ఎంచుకోవాలి. + +![MetaMask మొబైల్‌లో Sepoliaను మీ నెట్‌వర్క్‌గా ఎలా సెట్ చేయాలి](./goerliMetamask.gif) + +## దశ 2: మీ సేకరించదగినదాన్ని MetaMaskకు జోడించండి {#add-nft-to-metamask} + +మీరు Sepolia నెట్‌వర్క్‌లో ఉన్న తర్వాత, కుడి వైపున ఉన్న “సేకరించదగినవి” ట్యాబ్‌ను ఎంచుకుని, NFT స్మార్ట్ కాంట్రాక్ట్ చిరునామా మరియు మీ NFT యొక్క ERC-721 టోకెన్ IDని జోడించండి — దీనిని మీరు మా ట్యుటోరియల్‌లోని పార్ట్ IIలో అమలు చేయబడిన మీ NFT నుండి లావాదేవీ హాష్ ఆధారంగా Etherscanలో కనుగొనగలరు. + +![మీ లావాదేవీ హాష్ మరియు ERC-721 టోకెన్ IDని ఎలా కనుగొనాలి](./findNFTEtherscan.png) + +మీ NFTని చూడటానికి మీరు కొన్ని సార్లు రిఫ్రెష్ చేయవలసి రావచ్చు — కానీ అది అక్కడ ఉంటుంది ! + +![మీ NFTని MetaMaskకు ఎలా అప్‌లోడ్ చేయాలి](./findNFTMetamask.gif) + +అభినందనలు! మీరు విజయవంతంగా ఒక NFTని మింట్ చేసారు, మరియు మీరు ఇప్పుడు దానిని చూడవచ్చు! మీరు NFT ప్రపంచాన్ని ఎలా ఉర్రూతలూగిస్తారో చూడటానికి మేము వేచి ఉండలేము! diff --git a/public/content/translations/te/developers/tutorials/how-to-write-and-deploy-an-nft/index.md b/public/content/translations/te/developers/tutorials/how-to-write-and-deploy-an-nft/index.md new file mode 100644 index 00000000000..13bced20f6f --- /dev/null +++ b/public/content/translations/te/developers/tutorials/how-to-write-and-deploy-an-nft/index.md @@ -0,0 +1,386 @@ +--- +title: "NFT (NFT ట్యుటోరియల్ సిరీస్‌లో పార్ట్ 1/3)ను ఎలా వ్రాయాలి & డిప్లోయ్ చేయాలి" +description: "ఈ ట్యుటోరియల్ NFTs సిరీస్‌లో పార్ట్ 1, ఇది ఇతీరియము మరియు ఇంటర్ ప్లానెటరీ ఫైల్ సిస్టమ్ (IPFS) ఉపయోగించి ఒక నాన్ ఫంగిబుల్ టోకెన్ (ERC-721 టోకెన్) స్మార్ట్ కాంట్రాక్ట్‌ను ఎలా వ్రాయాలి మరియు డిప్లోయ్ చేయాలో మీకు స్టెప్ బై స్టెప్ వివరిస్తుంది." +author: "Sumi Mudgil" +tags: + [ + "ERC-721", + "Alchemy", + "Solidity", + "స్మార్ట్ కాంట్రాక్టులు" + ] +skill: beginner +lang: te +published: 2021-04-22 +--- + +NFTలు బ్లాక్‌చైన్‌ను ప్రజల దృష్టికి తీసుకువస్తున్నందున, ఇతీరియము బ్లాక్‌చైన్‌లో మీ స్వంత NFT కాంట్రాక్ట్ (ERC-721 టోకెన్)ను ప్రచురించడం ద్వారా ఈ హైప్‌ను మీరే అర్థం చేసుకోవడానికి ఇది ఒక అద్భుతమైన అవకాశం! + +Makersplace (ఇటీవల క్రిస్టీస్‌లో $69 మిలియన్లకు రికార్డు డిజిటల్ ఆర్ట్‌వర్క్ అమ్మకం చేసింది), డ్యాపర్ ల్యాబ్స్ (NBA టాప్ షాట్ & క్రిప్టో కిట్టీస్ సృష్టికర్తలు), OpenSea (ప్రపంచంలోనే అతిపెద్ద NFT మార్కెట్‌ప్లేస్), జోరా, సూపర్ రేర్, NFTfi, ఫౌండేషన్, ఎంజిన్, ఆరిజిన్ ప్రొటోకాల్, ఇమ్మ్యుటబుల్ మరియు మరెన్నో సహా NFT స్పేస్‌లోని అతిపెద్ద పేర్లకు శక్తినివ్వడం పట్ల ఆల్కెమీ చాలా గర్వంగా ఉంది. + +ఈ ట్యుటోరియల్‌లో, మేము [MetaMask](https://metamask.io/), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org/), [Pinata](https://pinata.cloud/) మరియు [Alchemy](https://alchemy.com/signup/eth) ఉపయోగించి Sepolia టెస్టు నెట్‌వర్క్‌లో ERC-721 స్మార్ట్ కాంట్రాక్ట్‌ను సృష్టించడం మరియు డిప్లోయ్ చేయడం గురించి వివరిస్తాము (వీటిలో ఏవైనా అర్థం కాకపోయినా చింతించకండి — మేము దానిని వివరిస్తాము!). + +ఈ ట్యుటోరియల్ యొక్క పార్ట్ 2లో మనం NFTని మింట్ చేయడానికి మన స్మార్ట్ కాంట్రాక్ట్‌ను ఎలా ఉపయోగించవచ్చో చర్చిస్తాము, మరియు పార్ట్ 3లో మీ NFTని MetaMaskలో ఎలా చూడాలో వివరిస్తాము. + +మరియు వాస్తవానికి, మీకు ఏ సమయంలోనైనా ప్రశ్నలు ఉంటే, [ఆల్కెమీ డిస్కార్డ్](https://discord.gg/gWuC7zB)లో సంప్రదించడానికి లేదా [ఆల్కెమీ యొక్క NFT API డాక్స్](https://docs.alchemy.com/alchemy/enhanced-apis/nft-api)ను సందర్శించడానికి వెనుకాడకండి! + +## దశ 1: ఇతీరియము నెట్‌వర్క్‌కి కనెక్ట్ అవ్వండి {#connect-to-ethereum} + +ఇతీరియము బ్లాక్‌చైన్‌కు అభ్యర్థనలు చేయడానికి చాలా మార్గాలు ఉన్నాయి, కానీ విషయాలను సులభతరం చేయడానికి, మేము [Alchemy](https://alchemy.com/signup/eth)లో ఉచిత అకౌంట్‌ను ఉపయోగిస్తాము, ఇది ఒక బ్లాక్‌చైన్ డెవలపర్ ప్లాట్‌ఫారమ్ మరియు API, ఇది మన స్వంత నోడ్‌లను అమలు చేయకుండానే ఇతీరియము చైన్‌తో కమ్యూనికేట్ చేయడానికి అనుమతిస్తుంది. + +ఈ ట్యుటోరియల్‌లో, మన స్మార్ట్ కాంట్రాక్ట్ డిప్లోయ్‌మెంట్‌లో తెర వెనుక ఏమి జరుగుతుందో అర్థం చేసుకోవడానికి పర్యవేక్షణ మరియు విశ్లేషణల కోసం మేము ఆల్కెమీ యొక్క డెవలపర్ టూల్స్‌ను కూడా ఉపయోగించుకుంటాము. మీకు ఇప్పటికే ఆల్కెమీ అకౌంట్ లేకపోతే, మీరు [ఇక్కడ](https://alchemy.com/signup/eth) ఉచితంగా సైన్ అప్ చేయవచ్చు. + +## దశ 2: మీ యాప్‌ను సృష్టించండి (మరియు API కీ) {#make-api-key} + +మీరు ఆల్కెమీ అకౌంట్‌ను సృష్టించిన తర్వాత, యాప్‌ను సృష్టించడం ద్వారా మీరు API కీని రూపొందించవచ్చు. ఇది సెపోలియా టెస్ట్ నెట్‌వర్క్‌కు అభ్యర్థనలు చేయడానికి మాకు అనుమతిస్తుంది. టెస్ట్ నెట్‌వర్క్‌ల గురించి మరింత తెలుసుకోవాలనే ఆసక్తి మీకు ఉంటే [ఈ గైడ్](https://docs.alchemyapi.io/guides/choosing-a-network)ని చూడండి. + +1. మీ ఆల్కెమీ డాష్‌బోర్డ్‌లోని “యాప్‌లను సృష్టించు” పేజీకి నావిగేట్ చేయడానికి, నావ్ బార్‌లోని “యాప్స్” మీద హోవర్ చేసి, “యాప్‌ను సృష్టించు” క్లిక్ చేయండి + +![మీ యాప్‌ను సృష్టించండి](./create-your-app.png) + +2. మీ యాప్‌కు పేరు పెట్టండి (మేము “నా మొదటి NFT!” అని ఎంచుకున్నాము), చిన్న వివరణను అందించండి, చైన్ కోసం “ఇతీరియము”ను ఎంచుకోండి మరియు మీ నెట్‌వర్క్ కోసం “సెపోలియా”ను ఎంచుకోండి. విలీనం అయినప్పటి నుండి ఇతర టెస్టునెట్‌లు నిలిపివేయబడ్డాయి. + +![మీ యాప్‌ను కాన్ఫిగర్ చేసి ప్రచురించండి](./alchemy-explorer-sepolia.png) + +3. “యాప్‌ను సృష్టించు” క్లిక్ చేయండి, అంతే! మీ యాప్ దిగువ పట్టికలో కనిపించాలి. + +## దశ 3: ఇతీరియము అకౌంట్‌ను (చిరునామా) సృష్టించండి {#create-eth-address} + +లావాదేవీలను పంపడానికి మరియు స్వీకరించడానికి మాకు ఇతీరియము అకౌంట్ అవసరం. ఈ ట్యుటోరియల్ కోసం, మేము MetaMaskను ఉపయోగిస్తాము, ఇది మీ ఇతీరియము అకౌంట్ చిరునామాను నిర్వహించడానికి ఉపయోగించే బ్రౌజర్‌లోని వర్చువల్ వాలెట్. ఇతీరియములో లావాదేవీలు ఎలా పనిచేస్తాయో మీరు మరింత అర్థం చేసుకోవాలనుకుంటే, ఇతీరియము ఫౌండేషన్ నుండి [ఈ పేజీ](/developers/docs/transactions/)ని చూడండి. + +మీరు [ఇక్కడ](https://metamask.io/download) ఉచితంగా MetaMask అకౌంట్‌ను డౌన్‌లోడ్ చేసి, సృష్టించవచ్చు. మీరు అకౌంట్‌ను సృష్టిస్తున్నప్పుడు, లేదా మీకు ఇప్పటికే అకౌంట్ ఉంటే, కుడివైపు ఎగువన ఉన్న “సెపోలియా టెస్ట్ నెట్‌వర్క్”కు మారారని నిర్ధారించుకోండి (అందువల్ల మేము నిజమైన డబ్బుతో వ్యవహరించడం లేదు). + +![మీ నెట్‌వర్క్‌గా సెపోలియాను సెట్ చేయండి](./metamask-goerli.png) + +## దశ 4: ఒక ఫాసెట్ నుండి ఈథర్‌ను జోడించండి {#step-4-add-ether-from-a-faucet} + +మా స్మార్ట్ కాంట్రాక్ట్‌ను టెస్ట్ నెట్‌వర్క్‌కి డిప్లోయ్ చేయడానికి, మాకు కొన్ని నకిలీ ETH అవసరం. ETH పొందడానికి మీరు ఆల్కెమీ హోస్ట్ చేసిన [సెపోలియా ఫాసెట్](https://sepoliafaucet.com/)కు వెళ్లి, లాగిన్ చేసి, మీ అకౌంట్ చిరునామాను నమోదు చేసి, “నాకు ETH పంపండి” క్లిక్ చేయండి. వెంటనే మీ MetaMask అకౌంట్‌లో మీరు ETHని చూడాలి! + +## దశ 5: మీ బ్యాలెన్స్‌ను తనిఖీ చేయండి {#check-balance} + +మన బ్యాలెన్స్ ఉందో లేదో రెండుసార్లు తనిఖీ చేయడానికి, [ఆల్కెమీ యొక్క కంపోజర్ టూల్](https://composer.alchemyapi.io?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D)ని ఉపయోగించి [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) అభ్యర్థన చేద్దాం. ఇది మన వాలెట్‌లోని ETH మొత్తాన్ని తిరిగి ఇస్తుంది. మీరు మీ MetaMask అకౌంట్ చిరునామాను ఇన్‌పుట్ చేసి, “అభ్యర్థన పంపు” క్లిక్ చేసిన తర్వాత, మీరు ఇలాంటి ప్రతిస్పందనను చూడాలి: + + ``` + `{"jsonrpc": "2.0", "id": 0, "result": "0xde0b6b3a7640000"}` + ``` + +> **గమనిక** ఈ ఫలితం weiలో ఉంది, ETHలో కాదు. ఈథర్ యొక్క అతి చిన్న ప్రమాణంగా వీని ఉపయోగిస్తారు. wei నుండి ETHకి మార్పిడి 1 eth = 1018 wei. కాబట్టి మనం 0xde0b6b3a7640000ని దశాంశానికి మార్చినట్లయితే మనకు 1\*1018 wei వస్తుంది, ఇది 1 ETHకి సమానం. + +అమ్మయ్య! మా నకిలీ డబ్బు అంతా ఉంది. + +## దశ 6: మా ప్రాజెక్ట్‌ను ప్రారంభించండి {#initialize-project} + +మొదట, మేము మా ప్రాజెక్ట్ కోసం ఒక ఫోల్డర్‌ను సృష్టించాలి. మీ కమాండ్ లైన్‌కి నావిగేట్ చేసి, టైప్ చేయండి: + + ``` + mkdir my-nft + cd my-nft + ``` + +ఇప్పుడు మేము మా ప్రాజెక్ట్ ఫోల్డర్‌లో ఉన్నాము, ప్రాజెక్ట్‌ను ప్రారంభించడానికి మేము npm initని ఉపయోగిస్తాము. మీరు ఇప్పటికే npmని ఇన్‌స్టాల్ చేయకపోతే, [ఈ సూచనలను](https://docs.alchemyapi.io/alchemy/guides/alchemy-for-macs#1-install-nodejs-and-npm) అనుసరించండి (మాకు [Node.js](https://nodejs.org/en/download/) కూడా అవసరం, కాబట్టి దానిని కూడా డౌన్‌లోడ్ చేసుకోండి!). + + ``` + npm init + ``` + +ఇన్‌స్టాలేషన్ ప్రశ్నలకు మీరు ఎలా సమాధానం ఇస్తారనేది ముఖ్యం కాదు; మేము దానిని సూచన కోసం ఎలా చేసామో ఇక్కడ ఉంది: + +```json + package name: (my-nft) + version: (1.0.0) + description: నా మొదటి NFT! + entry point: (index.js) + test command: + git repository: + keywords: + author: + license: (ISC) + /Users/thesuperb1/Desktop/my-nft/package.jsonకు వ్రాయబోతున్నారు: + + { + "name": "my-nft", + "version": "1.0.0", + "description": "నా మొదటి NFT!", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC" + } +``` + +package.jsonని ఆమోదించండి, మనం ముందుకు వెళ్లవచ్చు! + +## దశ 7: [Hardhat](https://hardhat.org/getting-started/#overview)ను ఇన్‌స్టాల్ చేయండి {#install-hardhat} + +Hardhat అనేది మీ ఇతీరియము సాఫ్ట్‌వేర్‌ను కంపైల్ చేయడానికి, డిప్లోయ్ చేయడానికి, పరీక్షించడానికి మరియు డీబగ్ చేయడానికి ఒక డెవలప్‌మెంట్ ఎన్విరాన్‌మెంట్. ఇది లైవ్ చైన్‌కు డిప్లోయ్ చేయడానికి ముందు స్థానికంగా స్మార్ట్ కాంట్రాక్ట్‌లను మరియు డాప్స్‌ను రూపొందించడంలో డెవలపర్‌లకు సహాయపడుతుంది. + +మా my-nft ప్రాజెక్ట్‌లో రన్ చేయండి: + + ``` + npm install --save-dev hardhat + ``` + +[ఇన్‌స్టాలేషన్ సూచనల](https://hardhat.org/getting-started/#overview)పై మరిన్ని వివరాల కోసం ఈ పేజీని చూడండి. + +## దశ 8: Hardhat ప్రాజెక్ట్‌ను సృష్టించండి {#create-hardhat-project} + +మా ప్రాజెక్ట్ ఫోల్డర్‌లో రన్ చేయండి: + + ``` + npx hardhat + ``` + +అప్పుడు మీరు స్వాగత సందేశం మరియు మీరు ఏమి చేయాలనుకుంటున్నారో ఎంచుకోవడానికి ఒక ఎంపికను చూడాలి. “ఖాళీ hardhat.config.jsని సృష్టించండి” ఎంచుకోండి: + + ``` + 888 888 888 888 888 + 888 888 888 888 888 + 888 888 888 888 888 + 8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888 + 888 888 "88b 888P" d88" 888 888 "88b "88b 888 + 888 888 .d888888 888 888 888 888 888 .d888888 888 + 888 888 888 888 888 Y88b 888 888 888 888 888 Y88b. + 888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888 + 👷 Hardhat v2.0.11కి స్వాగతం 👷‍ + ? మీరు ఏమి చేయాలనుకుంటున్నారు? … + ఒక నమూనా ప్రాజెక్ట్‌ను సృష్టించండి + ❯ ఒక ఖాళీ hardhat.config.jsని సృష్టించండి + నిష్క్రమించు + ``` + +ఇది మన కోసం ఒక hardhat.config.js ఫైల్‌ను ఉత్పత్తి చేస్తుంది, ఇక్కడ మేము మా ప్రాజెక్ట్ కోసం అన్ని సెటప్‌లను నిర్దేశిస్తాము (దశ 13లో). + +## దశ 9: ప్రాజెక్ట్ ఫోల్డర్‌లను జోడించండి {#add-project-folders} + +మా ప్రాజెక్ట్‌ను క్రమబద్ధంగా ఉంచడానికి, మేము రెండు కొత్త ఫోల్డర్‌లను సృష్టిస్తాము. మీ కమాండ్ లైన్‌లోని మీ ప్రాజెక్ట్ యొక్క రూట్ డైరెక్టరీకి నావిగేట్ చేసి, టైప్ చేయండి: + + ``` + mkdir contracts + mkdir scripts + ``` + +- contracts/ లో మేము మా NFT స్మార్ట్ కాంట్రాక్ట్ కోడ్‌ను ఉంచుతాము + +- scripts/ లో మేము మా స్మార్ట్ కాంట్రాక్ట్‌తో డిప్లోయ్ చేయడానికి మరియు ఇంటరాక్ట్ అవ్వడానికి స్క్రిప్ట్‌లను ఉంచుతాము + +## దశ 10: మా కాంట్రాక్ట్‌ను వ్రాయండి {#write-contract} + +ఇప్పుడు మన పర్యావరణం సెటప్ చేయబడింది, మరింత ఉత్తేజకరమైన విషయాలకు వెళ్దాం: _మన స్మార్ట్ కాంట్రాక్ట్ కోడ్‌ను వ్రాయడం!_ + +మీకు ఇష్టమైన ఎడిటర్‌లో my-nft ప్రాజెక్ట్‌ను తెరవండి (మాకు [VSCode](https://code.visualstudio.com/) ఇష్టం). స్మార్ట్ కాంట్రాక్ట్‌లు సొలిడిటీ అనే భాషలో వ్రాయబడ్డాయి, దీనిని మేము మా MyNFT.sol స్మార్ట్ కాంట్రాక్ట్‌ను వ్రాయడానికి ఉపయోగిస్తాము.‌ + +1. `contracts` ఫోల్డర్‌కి నావిగేట్ చేసి, MyNFT.sol అనే కొత్త ఫైల్‌ను సృష్టించండి + +2. దిగువన మా NFT స్మార్ట్ కాంట్రాక్ట్ కోడ్ ఉంది, దీనిని మేము [OpenZeppelin](https://docs.openzeppelin.com/contracts/3.x/erc721) లైబ్రరీ యొక్క ERC-721 అమలు ఆధారంగా రూపొందించాము. దిగువన ఉన్న కంటెంట్‌లను కాపీ చేసి మీ MyNFT.sol ఫైల్‌లో పేస్ట్ చేయండి. + + ```solidity + //[https://docs.openzeppelin.com/contracts/3.x/erc721](https://docs.openzeppelin.com/contracts/3.x/erc721) ఆధారిత కాంట్రాక్ట్ + // SPDX-License-Identifier: MIT + pragma solidity ^0.8.0; + + import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; + import "@openzeppelin/contracts/utils/Counters.sol"; + import "@openzeppelin/contracts/access/Ownable.sol"; + import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol"; + + contract MyNFT is ERC721URIStorage, Ownable { + using Counters for Counters.Counter; + Counters.Counter private _tokenIds; + + constructor() ERC721("MyNFT", "NFT") {} + + function mintNFT(address recipient, string memory tokenURI) + public onlyOwner + returns (uint256) + { + _tokenIds.increment(); + + uint256 newItemId = _tokenIds.current(); + _mint(recipient, newItemId); + _setTokenURI(newItemId, tokenURI); + + return newItemId; + } + } + ``` + +3. మేము OpenZeppelin కాంట్రాక్ట్స్ లైబ్రరీ నుండి క్లాసులను వారసత్వంగా పొందుతున్నందున, మీ కమాండ్ లైన్‌లో `npm install @openzeppelin/contracts^4.0.0` రన్ చేసి మా ఫోల్డర్‌లోకి లైబ్రరీని ఇన్‌స్టాల్ చేయండి. + +కాబట్టి, ఈ కోడ్ సరిగ్గా _ఏమి_ చేస్తుంది? దానిని లైన్-బై-లైన్ విడదీద్దాం. + +మా స్మార్ట్ కాంట్రాక్ట్ పైన, మేము మూడు [OpenZeppelin](https://openzeppelin.com/) స్మార్ట్ కాంట్రాక్ట్ క్లాసులను దిగుమతి చేసుకుంటాము: + +- @openzeppelin/contracts/token/ERC721/ERC721.sol ERC-721 ప్రమాణం యొక్క అమలును కలిగి ఉంది, దీనిని మా NFT స్మార్ట్ కాంట్రాక్ట్ వారసత్వంగా పొందుతుంది. (చెల్లుబాటు అయ్యే NFT కావాలంటే, మీ స్మార్ట్ కాంట్రాక్ట్ తప్పనిసరిగా ERC-721 ప్రమాణం యొక్క అన్ని పద్ధతులను అమలు చేయాలి.) వారసత్వంగా పొందిన ERC-721 ఫంక్షన్‌ల గురించి మరింత తెలుసుకోవడానికి, [ఇక్కడ](https://eips.ethereum.org/EIPS/eip-721) ఇంటర్‌ఫేస్ నిర్వచనాన్ని చూడండి. + +- @openzeppelin/contracts/utils/Counters.sol కౌంటర్‌లను అందిస్తుంది, వీటిని ఒకటి పెంచవచ్చు లేదా తగ్గించవచ్చు. మా స్మార్ట్ కాంట్రాక్ట్ మింట్ చేయబడిన NFTల మొత్తం సంఖ్యను ట్రాక్ చేయడానికి మరియు మా కొత్త NFTలో ప్రత్యేక IDని సెట్ చేయడానికి ఒక కౌంటర్‌ను ఉపయోగిస్తుంది. (స్మార్ట్ కాంట్రాక్ట్ ఉపయోగించి మింట్ చేయబడిన ప్రతి NFTకి ఒక ప్రత్యేక ID కేటాయించబడాలి—ఇక్కడ మా ప్రత్యేక ID ఉనికిలో ఉన్న NFTల మొత్తం సంఖ్య ద్వారా నిర్ణయించబడుతుంది. ఉదాహరణకు, మా స్మార్ట్ కాంట్రాక్ట్‌తో మేము మింట్ చేసే మొదటి NFTకి ID "1" ఉంటుంది, మా రెండవ NFTకి ID "2" ఉంటుంది, మొదలైనవి.) + +- @openzeppelin/contracts/access/Ownable.sol మా స్మార్ట్ కాంట్రాక్ట్‌పై [యాక్సెస్ కంట్రోల్](https://docs.openzeppelin.com/contracts/3.x/access-control)ని సెటప్ చేస్తుంది, కాబట్టి స్మార్ట్ కాంట్రాక్ట్ యజమాని (మీరు) మాత్రమే NFTలను మింట్ చేయగలరు. (గమనిక, యాక్సెస్ కంట్రోల్‌ను చేర్చడం పూర్తిగా ఒక ప్రాధాన్యత. మీరు మీ స్మార్ట్ కాంట్రాక్ట్‌ను ఉపయోగించి ఎవరైనా NFTని మింట్ చేయగలిగేలా చేయాలనుకుంటే, లైన్ 10లో Ownable పదాన్ని మరియు లైన్ 17లో onlyOwnerని తీసివేయండి.) + +మా దిగుమతి స్టేట్‌మెంట్‌ల తర్వాత, మా కస్టమ్ NFT స్మార్ట్ కాంట్రాక్ట్ ఉంది, ఇది ఆశ్చర్యకరంగా చిన్నది — ఇది కేవలం ఒక కౌంటర్, ఒక కన్స్ట్రక్టర్ మరియు ఒకే ఫంక్షన్‌ను మాత్రమే కలిగి ఉంటుంది! ఇది మా వారసత్వంగా పొందిన OpenZeppelin కాంట్రాక్ట్‌ల వల్లే, ఇవి NFTని సృష్టించడానికి అవసరమైన చాలా పద్ధతులను అమలు చేస్తాయి, ఉదాహరణకు `ownerOf` ఇది NFT యజమానిని తిరిగి ఇస్తుంది, మరియు `transferFrom` ఇది NFT యాజమాన్యాన్ని ఒక ఖాతా నుండి మరొక ఖాతాకు బదిలీ చేస్తుంది. + +మా ERC-721 కన్స్ట్రక్టర్‌లో, మేము 2 స్ట్రింగ్‌లు, “MyNFT” మరియు “NFT”ని పాస్ చేస్తామని మీరు గమనిస్తారు. మొదటి వేరియబుల్ స్మార్ట్ కాంట్రాక్ట్ పేరు, మరియు రెండవది దాని చిహ్నం. మీరు ఈ వేరియబుల్స్ ప్రతిదానికీ మీకు కావలసిన పేరు పెట్టవచ్చు! + +చివరగా, మాకు `mintNFT(address recipient, string memory tokenURI)` అనే ఫంక్షన్ ఉంది, ఇది మనకు NFTని మింట్ చేయడానికి అనుమతిస్తుంది! ఈ ఫంక్షన్ రెండు వేరియబుల్స్‌ను తీసుకుంటుందని మీరు గమనిస్తారు: + +- `address recipient` మీరు తాజాగా మింట్ చేసిన NFTని స్వీకరించే చిరునామాను నిర్దేశిస్తుంది + +- `string memory tokenURI` అనేది NFT యొక్క మెటాడేటాను వివరించే JSON పత్రానికి పరిష్కరించాల్సిన స్ట్రింగ్. ఒక NFT యొక్క మెటాడేటా నిజంగా దానికి జీవం పోస్తుంది, ఇది పేరు, వివరణ, చిత్రం మరియు ఇతర లక్షణాల వంటి కాన్ఫిగర్ చేయగల లక్షణాలను కలిగి ఉండటానికి అనుమతిస్తుంది. ఈ ట్యుటోరియల్ యొక్క పార్ట్ 2లో, మేము ఈ మెటాడేటాను ఎలా కాన్ఫిగర్ చేయాలో వివరిస్తాము. + +`mintNFT` వారసత్వంగా పొందిన ERC-721 లైబ్రరీ నుండి కొన్ని పద్ధతులను పిలుస్తుంది, మరియు చివరికి తాజాగా మింట్ చేయబడిన NFT యొక్క IDని సూచించే సంఖ్యను తిరిగి ఇస్తుంది. + +## దశ 11: మీ ప్రాజెక్ట్‌కు MetaMask & ఆల్కెమీని కనెక్ట్ చేయండి {#connect-metamask-and-alchemy} + +ఇప్పుడు మేము ఒక MetaMask వాలెట్‌ను, ఆల్కెమీ అకౌంట్‌ను సృష్టించి, మా స్మార్ట్ కాంట్రాక్ట్‌ను వ్రాశాము, ఈ మూడింటినీ కనెక్ట్ చేసే సమయం వచ్చింది. + +మీ వర్చువల్ వాలెట్ నుండి పంపిన ప్రతి లావాదేవీకి మీ ప్రత్యేక ప్రైవేట్ కీని ఉపయోగించి ఒక సంతకం అవసరం. మా ప్రోగ్రామ్‌కు ఈ అనుమతిని అందించడానికి, మేము మా ప్రైవేట్ కీని (మరియు ఆల్కెమీ API కీని) ఒక ఎన్విరాన్‌మెంట్ ఫైల్‌లో సురక్షితంగా నిల్వ చేయవచ్చు. + +లావాదేవీలను పంపడం గురించి మరింత తెలుసుకోవడానికి, వెబ్3ని ఉపయోగించి లావాదేవీలను పంపడంపై [ఈ ట్యుటోరియల్](/developers/tutorials/sending-transactions-using-web3-and-alchemy/)ను చూడండి. + +మొదట, మీ ప్రాజెక్ట్ డైరెక్టరీలో dotenv ప్యాకేజీని ఇన్‌స్టాల్ చేయండి: + + ``` + npm install dotenv --save + ``` + +అప్పుడు, మా ప్రాజెక్ట్ యొక్క రూట్ డైరెక్టరీలో `.env` ఫైల్‌ను సృష్టించి, మీ MetaMask ప్రైవేట్ కీ మరియు HTTP ఆల్కెమీ API URLను దానికి జోడించండి. + +- MetaMask నుండి మీ ప్రైవేట్ కీని ఎగుమతి చేయడానికి [ఈ సూచనలను](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key) అనుసరించండి + +- HTTP ఆల్కెమీ API URLను పొందడానికి మరియు దానిని మీ క్లిప్‌బోర్డ్‌కు కాపీ చేయడానికి క్రింద చూడండి + +![మీ ఆల్కెమీ API URLను కాపీ చేయండి](./copy-alchemy-api-url.gif) + +మీ `.env` ఇప్పుడు ఇలా కనిపించాలి: + + ``` + API_URL="https://eth-sepolia.g.alchemy.com/v2/your-api-key" + PRIVATE_KEY="your-metamask-private-key" + ``` + +వీటిని వాస్తవానికి మా కోడ్‌కు కనెక్ట్ చేయడానికి, మేము దశ 13లో మా hardhat.config.js ఫైల్‌లో ఈ వేరియబుల్స్‌ను సూచిస్తాము. + + + +## దశ 12: Ethers.jsని ఇన్‌స్టాల్ చేయండి {#install-ethers} + +Ethers.js అనేది ఒక లైబ్రరీ, ఇది ఇతీరియముతో సులభంగా ఇంటరాక్ట్ అవ్వడానికి మరియు అభ్యర్థనలు చేయడానికి [ప్రామాణిక JSON-RPC పద్ధతులను](/developers/docs/apis/json-rpc/) మరింత యూజర్ ఫ్రెండ్లీ పద్ధతులతో చుట్టడం ద్వారా చేస్తుంది. + +Hardhat అదనపు పనిముట్లు మరియు విస్తరించిన కార్యాచరణ కోసం [ప్లగిన్‌లను](https://hardhat.org/plugins/) ఏకీకృతం చేయడం చాలా సులభం చేస్తుంది. కాంట్రాక్ట్ డిప్లాయ్‌మెంట్ కోసం మనం [Ethers ప్లగిన్](https://hardhat.org/docs/plugins/official-plugins#hardhat-ethers) యొక్క ప్రయోజనాన్ని పొందుతాము ([Ethers.js](https://github.com/ethers-io/ethers.js/)లో కొన్ని చాలా శుభ్రమైన కాంట్రాక్ట్ డిప్లాయ్‌మెంట్ పద్ధతులు ఉన్నాయి). + +మీ ప్రాజెక్ట్ డైరెక్టరీలో టైప్ చేయండి: + + ``` + npm install --save-dev @nomiclabs/hardhat-ethers ethers@^5.0.0 + ``` + +మేము తదుపరి దశలో మా hardhat.config.jsలో కూడా ఈథర్స్ అవసరం. + +## దశ 13: hardhat.config.jsని నవీకరించండి {#update-hardhat-config} + +మేము ఇప్పటివరకు అనేక డిపెండెన్సీలు మరియు ప్లగిన్‌లను జోడించాము, ఇప్పుడు మా ప్రాజెక్ట్‌కు వాటి గురించి తెలియజేయడానికి మేము hardhat.config.jsని నవీకరించాలి. + +మీ hardhat.config.jsని ఇలా కనిపించేలా నవీకరించండి: + +```js + /** + * @type import('hardhat/config').HardhatUserConfig + */ + require('dotenv').config(); + require("@nomiclabs/hardhat-ethers"); + const { API_URL, PRIVATE_KEY } = process.env; + module.exports = { + solidity: "0.8.1", + defaultNetwork: "sepolia", + networks: { + hardhat: {}, + sepolia: { + url: API_URL, + accounts: [`0x${PRIVATE_KEY}`] + } + }, + } +``` + +## దశ 14: మా కాంట్రాక్ట్‌ను కంపైల్ చేయండి {#compile-contract} + +ఇప్పటివరకు ప్రతిదీ పనిచేస్తుందని నిర్ధారించుకోవడానికి, మా కాంట్రాక్ట్‌ను కంపైల్ చేద్దాం. కంపైల్ టాస్క్ అనేది అంతర్నిర్మిత హార్డ్‌హ్యాట్ టాస్క్‌లలో ఒకటి. + +కమాండ్ లైన్ నుండి రన్ చేయండి: + + ``` + npx hardhat compile + ``` + +మీకు సోర్స్ ఫైల్‌లో SPDX లైసెన్స్ ఐడెంటిఫైయర్ అందించబడలేదని ఒక హెచ్చరిక రావచ్చు, కానీ దాని గురించి చింతించాల్సిన అవసరం లేదు — మిగతా అంతా బాగానే ఉంటుందని ఆశిస్తున్నాము! కాకపోతే, మీరు ఎల్లప్పుడూ [ఆల్కెమీ డిస్కార్డ్](https://discord.gg/u72VCg3)లో సందేశం పంపవచ్చు. + +## దశ 15: మా డిప్లోయ్ స్క్రిప్ట్‌ను వ్రాయండి {#write-deploy} + +ఇప్పుడు మా కాంట్రాక్ట్ వ్రాయబడింది మరియు మా కాన్ఫిగరేషన్ ఫైల్ సిద్ధంగా ఉంది, మా కాంట్రాక్ట్ డిప్లోయ్ స్క్రిప్ట్‌ను వ్రాసే సమయం వచ్చింది. + +`scripts/` ఫోల్డర్‌కి నావిగేట్ చేసి, `deploy.js` అనే కొత్త ఫైల్‌ను సృష్టించి, దానికి క్రింది కంటెంట్‌లను జోడించండి: + +```js +async function main() { + const MyNFT = await ethers.getContractFactory("MyNFT") + + // డిప్లోయ్‌మెంట్‌ను ప్రారంభించండి, ఇది ఒక కాంట్రాక్ట్ ఆబ్జెక్ట్‌కు పరిష్కరించే ఒక ప్రామిస్‌ను తిరిగి ఇస్తుంది + const myNFT = await MyNFT.deploy() + await myNFT.deployed() + console.log("కాంట్రాక్ట్ డిప్లోయ్ చేయబడిన చిరునామా:", myNFT.address) +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) +``` + +Hardhat వారి [కాంట్రాక్ట్స్ ట్యుటోరియల్](https://hardhat.org/tutorial/testing-contracts.html#writing-tests)లో ఈ కోడ్ లైన్‌లు ప్రతి ఒక్కటి ఏమి చేస్తుందో అద్భుతంగా వివరిస్తుంది, మేము వారి వివరణలను ఇక్కడ స్వీకరించాము. + + ``` + const MyNFT = await ethers.getContractFactory("MyNFT"); + ``` + +ethers.jsలోని ఒక కాంట్రాక్ట్‌ఫ్యాక్టరీ కొత్త స్మార్ట్ కాంట్రాక్ట్‌లను డిప్లోయ్ చేయడానికి ఉపయోగించే ఒక సంగ్రహణ, కాబట్టి ఇక్కడ MyNFT అనేది మా NFT కాంట్రాక్ట్ యొక్క ఉదాహరణల కోసం ఒక ఫ్యాక్టరీ. hardhat-ethers ప్లగిన్‌ను ఉపయోగిస్తున్నప్పుడు కాంట్రాక్ట్‌ఫ్యాక్టరీ మరియు కాంట్రాక్ట్ ఉదాహరణలు డిఫాల్ట్‌గా మొదటి సంతకం చేసేవారికి కనెక్ట్ చేయబడతాయి. + + ``` + const myNFT = await MyNFT.deploy(); + ``` + +ఒక కాంట్రాక్ట్‌ఫ్యాక్టరీపై deploy()ని కాల్ చేయడం డిప్లోయ్‌మెంట్‌ను ప్రారంభిస్తుంది, మరియు ఒక కాంట్రాక్ట్‌కు పరిష్కరించే ఒక ప్రామిస్‌ను తిరిగి ఇస్తుంది. ఇది మా స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌ల ప్రతిదానికీ ఒక పద్ధతిని కలిగి ఉన్న ఆబ్జెక్ట్. + +## దశ 16: మా కాంట్రాక్ట్‌ను డిప్లోయ్ చేయండి {#deploy-contract} + +మేము చివరికి మా స్మార్ట్ కాంట్రాక్ట్‌ను డిప్లోయ్ చేయడానికి సిద్ధంగా ఉన్నాము! మీ ప్రాజెక్ట్ డైరెక్టరీ యొక్క రూట్‌కు తిరిగి నావిగేట్ చేసి, కమాండ్ లైన్‌లో రన్ చేయండి: + + ``` + npx hardhat --network sepolia run scripts/deploy.js + ``` + +మీరు అప్పుడు ఇలాంటిది చూడాలి: + + ``` + కాంట్రాక్ట్ డిప్లోయ్ చేయబడిన చిరునామా: 0x4C5266cCc4b3F426965d2f51b6D910325a0E7650 + ``` + +మేము [సెపోలియా ఈథర్‌స్కాన్](https://sepolia.etherscan.io/)కి వెళ్లి, మా కాంట్రాక్ట్ చిరునామా కోసం శోధిస్తే, అది విజయవంతంగా డిప్లోయ్ చేయబడిందని మనం చూడగలుగుతాము. మీరు వెంటనే దానిని చూడలేకపోతే, దయచేసి కొంతసేపు వేచి ఉండండి, ఎందుకంటే దీనికి కొంత సమయం పట్టవచ్చు. లావాదేవీ ఇలా కనిపిస్తుంది: + +![Etherscanలో మీ లావాదేవీ చిరునామాను వీక్షించండి](./etherscan-sepoila-contract-creation.png) + +నుండి చిరునామా మీ MetaMask అకౌంట్ చిరునామాతో సరిపోలాలి మరియు కు చిరునామా “కాంట్రాక్ట్ క్రియేషన్” అని చెబుతుంది. మనం లావాదేవీలోకి క్లిక్ చేస్తే, కు ఫీల్డ్‌లో మన కాంట్రాక్ట్ చిరునామాను చూస్తాము: + +![Etherscanలో మీ కాంట్రాక్ట్ చిరునామాను వీక్షించండి](./etherscan-sepolia-tx-details.png) + +అద్భుతం! మీరు ఇప్పుడే మీ NFT స్మార్ట్ కాంట్రాక్ట్‌ను ఇతీరియము (టెస్టునెట్) చైన్‌కు డిప్లోయ్ చేసారు! + +తెర వెనుక ఏమి జరుగుతుందో అర్థం చేసుకోవడానికి, మా [ఆల్కెమీ డాష్‌బోర్డ్](https://dashboard.alchemyapi.io/explorer)లోని ఎక్స్‌ప్లోరర్ ట్యాబ్‌కు నావిగేట్ చేద్దాం. మీకు బహుళ ఆల్కెమీ యాప్‌లు ఉంటే, యాప్ ద్వారా ఫిల్టర్ చేసి “MyNFT”ని ఎంచుకున్నారని నిర్ధారించుకోండి. + +![ఆల్కెమీ యొక్క ఎక్స్‌ప్లోరర్ డాష్‌బోర్డ్‌తో “తెర వెనుక” చేసిన కాల్స్‌ను వీక్షించండి](./alchemy-explorer-goerli.png) + +ఇక్కడ మీరు Hardhat/Ethers మా కోసం .deploy() ఫంక్షన్‌ను కాల్ చేసినప్పుడు తెర వెనుక చేసిన కొన్ని JSON-RPC కాల్స్‌ను చూస్తారు. ఇక్కడ రెండు ముఖ్యమైనవి [eth_sendRawTransaction](/developers/docs/apis/json-rpc/#eth_sendrawtransaction), ఇది వాస్తవానికి మా స్మార్ట్ కాంట్రాక్ట్‌ను సెపోలియా చైన్‌పై వ్రాయడానికి చేసే అభ్యర్థన, మరియు [eth_getTransactionByHash](/developers/docs/apis/json-rpc/#eth_gettransactionbyhash) ఇది హాష్ ఇచ్చినప్పుడు మా లావాదేవీ గురించి సమాచారాన్ని చదవడానికి చేసే అభ్యర్థన (లావాదేవీలను పంపేటప్పుడు ఒక సాధారణ నమూనా). లావాదేవీలను పంపడం గురించి మరింత తెలుసుకోవడానికి, [వెబ్3ని ఉపయోగించి లావాదేవీలను పంపడం](/developers/tutorials/sending-transactions-using-web3-and-alchemy/)పై ఈ ట్యుటోరియల్‌ను చూడండి. + +ఈ ట్యుటోరియల్ యొక్క పార్ట్ 1 కోసం ఇంతే. [పార్ట్ 2లో, మేము వాస్తవానికి ఒక NFTని మింట్ చేయడం ద్వారా మా స్మార్ట్ కాంట్రాక్ట్‌తో ఇంటరాక్ట్ అవుతాము](/developers/tutorials/how-to-mint-an-nft/), మరియు [పార్ట్ 3లో మీ ఇతీరియము వాలెట్‌లో మీ NFTని ఎలా చూడాలో మీకు చూపిస్తాము](/developers/tutorials/how-to-view-nft-in-metamask/)! diff --git a/public/content/translations/te/developers/tutorials/interact-with-other-contracts-from-solidity/index.md b/public/content/translations/te/developers/tutorials/interact-with-other-contracts-from-solidity/index.md new file mode 100644 index 00000000000..50577377562 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/interact-with-other-contracts-from-solidity/index.md @@ -0,0 +1,179 @@ +--- +title: "Solidity నుండి ఇతర కాంట్రాక్టులతో ఇంటరాక్ట్ అవ్వండి" +description: "ఇప్పటికే ఉన్న కాంట్రాక్ట్ నుండి స్మార్ట్ కాంట్రాక్ట్‌ను ఎలా డిప్లాయ్ చేయాలి మరియు దానితో ఇంటరాక్ట్ అవ్వాలి" +author: "jdourlens" +tags: + [ + "స్మార్ట్ కాంట్రాక్టులు", + "దృఢత్వం", + "remix", + "డిప్లాయ్ చేయడం", + "కంపోజిబిలిటీ" + ] +skill: advanced +lang: te +published: 2020-04-05 +source: EthereumDev +sourceUrl: https://ethereumdev.io/interact-with-other-contracts-from-solidity/ +address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE" +--- + +మునుపటి ట్యుటోరియల్స్‌లో మేము [మీ మొదటి స్మార్ట్ కాంట్రాక్ట్‌ను ఎలా డిప్లాయ్ చేయాలి](/developers/tutorials/deploying-your-first-smart-contract/) మరియు దానికి [మాడిఫైయర్‌లతో యాక్సెస్‌ను నియంత్రించడం](https://ethereumdev.io/organize-your-code-and-control-access-to-your-smart-contract-with-modifiers/) లేదా [Solidityలో ఎర్రర్ హ్యాండ్లింగ్](https://ethereumdev.io/handle-errors-in-solidity-with-require-and-revert/) వంటి కొన్ని ఫీచర్‌లను జోడించడం వంటి చాలా విషయాలు నేర్చుకున్నాము. ఈ ట్యుటోరియల్‌లో, ఇప్పటికే ఉన్న కాంట్రాక్ట్ నుండి ఒక స్మార్ట్ కాంట్రాక్ట్‌ను ఎలా డిప్లాయ్ చేయాలో మరియు దానితో ఎలా ఇంటరాక్ట్ అవ్వాలో మనం నేర్చుకుంటాము. + +మేము ఒక కాంట్రాక్ట్‌ను తయారు చేస్తాము, అది దానికోసం ఒక ఫ్యాక్టరీని సృష్టించడం ద్వారా ఎవరికైనా తన సొంత `Counter` స్మార్ట్ కాంట్రాక్ట్‌ను కలిగి ఉండటానికి వీలు కల్పిస్తుంది, దాని పేరు `CounterFactory` అవుతుంది. ముందుగా, మా ప్రారంభ `Counter` స్మార్ట్ కాంట్రాక్ట్ యొక్క కోడ్ ఇక్కడ ఉంది: + +```solidity +pragma solidity 0.5.17; + +contract Counter { + + uint256 private _count; + address private _owner; + address private _factory; + + + modifier onlyOwner(address caller) { + require(caller == _owner, "మీరు కాంట్రాక్ట్ యజమాని కాదు"); + _; + } + + modifier onlyFactory() { + require(msg.sender == _factory, "మీరు ఫ్యాక్టరీని ఉపయోగించాలి"); + _; + } + + constructor(address owner) public { + _owner = owner; + _factory = msg.sender; + } + + function getCount() public view returns (uint256) { + return _count; + } + + function increment(address caller) public onlyFactory onlyOwner(caller) { + _count++; + } + +} +``` + +ఫ్యాక్టరీ యొక్క చిరునామా మరియు కాంట్రాక్ట్ యజమాని యొక్క చిరునామాను ట్రాక్ చేయడానికి మేము కాంట్రాక్ట్ కోడ్‌ను కొద్దిగా సవరించామని గమనించండి. మీరు మరొక కాంట్రాక్ట్ నుండి కాంట్రాక్ట్ కోడ్‌ను కాల్ చేసినప్పుడు, `msg.sender` మా కాంట్రాక్ట్ ఫ్యాక్టరీ యొక్క చిరునామాను సూచిస్తుంది. ఇతర కాంట్రాక్ట్‌లతో ఇంటరాక్ట్ అవ్వడానికి ఒక కాంట్రాక్ట్‌ను ఉపయోగించడం ఒక సాధారణ పద్ధతి కాబట్టి ఇది అర్థం చేసుకోవడానికి **ఒక చాలా ముఖ్యమైన విషయం**. అందువల్ల సంక్లిష్టమైన సందర్భాల్లో పంపినవారు ఎవరో మీరు జాగ్రత్తగా చూసుకోవాలి. + +దీనికోసం, మేము `onlyFactory` మాడిఫైయర్‌ను కూడా జోడించాము, ఇది అసలు కాలర్‌ను ఒక పారామీటర్‌గా పంపే ఫ్యాక్టరీ ద్వారా మాత్రమే స్టేట్‌ను మార్చే ఫంక్షన్‌ను కాల్ చేయగలదని నిర్ధారిస్తుంది. + +అన్ని ఇతర కౌంటర్లను నిర్వహించే మా కొత్త `కౌంటర్ ఫ్యాక్టరీ` లోపల, మేము ఒక యజమానిని అతని కౌంటర్ కాంట్రాక్ట్ చిరునామాకు అనుబంధించే ఒక మ్యాపింగ్‌ను జోడిస్తాము: + +```solidity +mapping(address => Counter) _counters; +``` + +Ethereumలో, మ్యాపింగ్‌లు జావాస్క్రిప్ట్‌లోని ఆబ్జెక్ట్‌లకు సమానం, అవి A రకం కీని B రకం విలువకు మ్యాప్ చేయడానికి వీలు కల్పిస్తాయి. ఈ సందర్భంలో మేము ఒక యజమాని యొక్క చిరునామాను దాని కౌంటర్ యొక్క ఇన్‌స్టాన్స్‌తో మ్యాప్ చేస్తాము. + +ఒకరి కోసం కొత్త కౌంటర్‌ను ఇన్‌స్టాన్షియేట్ చేయడం ఇలా కనిపిస్తుంది: + +```solidity + function createCounter() public { + require (_counters[msg.sender] == Counter(0)); + _counters[msg.sender] = new Counter(msg.sender); + } +``` + +మేము మొదట ఆ వ్యక్తికి ఇప్పటికే కౌంటర్ ఉందో లేదో తనిఖీ చేస్తాము. అతనికి కౌంటర్ లేకపోతే, అతని చిరునామాను `Counter` కన్‌స్ట్రక్టర్‌కు పంపడం ద్వారా మేము ఒక కొత్త కౌంటర్‌ను ఇన్‌స్టాన్షియేట్ చేసి, కొత్తగా సృష్టించబడిన ఇన్‌స్టాన్స్‌ను మ్యాపింగ్‌కు కేటాయిస్తాము. + +ఒక నిర్దిష్ట కౌంటర్ యొక్క కౌంట్ పొందడానికి ఇది ఇలా కనిపిస్తుంది: + +```solidity +function getCount(address account) public view returns (uint256) { + require (_counters[account] != Counter(0)); + return (_counters[account].getCount()); +} + +function getMyCount() public view returns (uint256) { + return (getCount(msg.sender)); +} +``` + +మొదటి ఫంక్షన్ ఇచ్చిన చిరునామా కోసం కౌంటర్ కాంట్రాక్ట్ ఉందో లేదో తనిఖీ చేసి, ఆపై ఇన్‌స్టాన్స్ నుండి `getCount` పద్ధతిని కాల్ చేస్తుంది. రెండవ ఫంక్షన్: `getMyCount` అనేది `msg.sender`ను నేరుగా `getCount` ఫంక్షన్‌కు పంపడానికి ఒక చిన్న మార్గం. + +`increment` ఫంక్షన్ చాలా పోలి ఉంటుంది, కానీ అసలు లావాదేవీ పంపినవారిని `Counter` కాంట్రాక్ట్‌కు పంపుతుంది: + +```solidity +function increment() public { + require (_counters[msg.sender] != Counter(0)); + Counter(_counters[msg.sender]).increment(msg.sender); + } +``` + +చాలా సార్లు కాల్ చేస్తే, మా కౌంటర్ ఓవర్‌ఫ్లోకు గురికావచ్చని గమనించండి. ఈ సంభావ్య కేసు నుండి రక్షించడానికి మీరు వీలైనంత వరకు [సేఫ్‌మ్యాథ్ లైబ్రరీ](https://ethereumdev.io/using-safe-math-library-to-prevent-from-overflows/)ని ఉపయోగించాలి. + +మా కాంట్రాక్ట్‌ను డిప్లాయ్ చేయడానికి, మీరు `CounterFactory` మరియు `Counter` రెండింటి కోడ్‌ను అందించాల్సి ఉంటుంది. ఉదాహరణకు రీమిక్స్‌లో డిప్లాయ్ చేస్తున్నప్పుడు మీరు కౌంటర్‌ఫ్యాక్టరీని ఎంచుకోవాలి. + +పూర్తి కోడ్ ఇక్కడ ఉంది: + +```solidity +pragma solidity 0.5.17; + +contract Counter { + + uint256 private _count; + address private _owner; + address private _factory; + + + modifier onlyOwner(address caller) { + require(caller == _owner, "మీరు కాంట్రాక్ట్ యజమాని కాదు"); + _; + } + + modifier onlyFactory() { + require(msg.sender == _factory, "మీరు ఫ్యాక్టరీని ఉపయోగించాలి"); + _; + } + + constructor(address owner) public { + _owner = owner; + _factory = msg.sender; + } + + function getCount() public view returns (uint256) { + return _count; + } + + function increment(address caller) public onlyFactory onlyOwner(caller) { + _count++; + } + +} + +contract CounterFactory { + + mapping(address => Counter) _counters; + + function createCounter() public { + require (_counters[msg.sender] == Counter(0)); + _counters[msg.sender] = new Counter(msg.sender); + } + + function increment() public { + require (_counters[msg.sender] != Counter(0)); + Counter(_counters[msg.sender]).increment(msg.sender); + } + + function getCount(address account) public view returns (uint256) { + require (_counters[account] != Counter(0)); + return (_counters[account].getCount()); + } + + function getMyCount() public view returns (uint256) { + return (getCount(msg.sender)); + } + +} +``` + +కంపైల్ చేసిన తర్వాత, రీమిక్స్ డిప్లాయ్ విభాగంలో మీరు డిప్లాయ్ చేయాల్సిన ఫ్యాక్టరీని ఎంచుకుంటారు: + +![రీమిక్స్‌లో డిప్లాయ్ చేయాల్సిన ఫ్యాక్టరీని ఎంచుకోవడం](./counterfactory-deploy.png) + +ఆ తర్వాత మీరు మీ కాంట్రాక్ట్ ఫ్యాక్టరీతో ఆడుకోవచ్చు మరియు విలువ మారడాన్ని తనిఖీ చేయవచ్చు. మీరు వేరే చిరునామా నుండి స్మార్ట్ కాంట్రాక్ట్‌ను కాల్ చేయాలనుకుంటే, మీరు రీమిక్స్ యొక్క అకౌంట్ ఎంపికలో చిరునామాను మార్చవలసి ఉంటుంది. diff --git a/public/content/translations/te/developers/tutorials/ipfs-decentralized-ui/index.md b/public/content/translations/te/developers/tutorials/ipfs-decentralized-ui/index.md new file mode 100644 index 00000000000..172095611df --- /dev/null +++ b/public/content/translations/te/developers/tutorials/ipfs-decentralized-ui/index.md @@ -0,0 +1,73 @@ +--- +title: "వికేంద్రీకృత వినియోగదారు ఇంటర్ఫేస్‌ల కోసం IPFS" +description: "ఒక డాప్ కోసం వినియోగదారు ఇంటర్‌ఫేస్‌ను నిల్వ చేయడానికి IPFSను ఎలా ఉపయోగించాలో ఈ ట్యుటోరియల్ చదివేవారికి బోధిస్తుంది. అప్లికేషన్ యొక్క డేటా మరియు వ్యాపార తర్కం వికేంద్రీకరించబడినప్పటికీ, సెన్సార్‌షిప్ నిరోధక వినియోగదారు ఇంటర్‌ఫేస్ లేకుండా వినియోగదారులు ఏమైనప్పటికీ దానికి యాక్సెస్ కోల్పోవచ్చు." +author: Ori Pomerantz +tags: [ "ipfs" ] +skill: beginner +lang: te +published: 2024-06-29 +--- + +మీరు ఒక అద్భుతమైన కొత్త డాప్‌ను రాశారు. మీరు దాని కోసం ఒక [వినియోగదారు ఇంటర్ఫేస్](/developers/tutorials/creating-a-wagmi-ui-for-your-contract/) కూడా రాశారు. కానీ ఇప్పుడు, క్లౌడ్‌లో ఒకే ఒక్క సర్వర్‌గా ఉన్న మీ వినియోగదారు ఇంటర్‌ఫేస్‌ను డౌన్ చేయడం ద్వారా ఎవరైనా దాన్ని సెన్సార్ చేయడానికి ప్రయత్నిస్తారని మీరు భయపడుతున్నారు. మీ వినియోగదారు ఇంటర్‌ఫేస్‌ను \*\*[ఇంటర్‌ప్లానెటరీ ఫైల్ సిస్టమ్ (IPFS)](https://ipfs.tech/developers/)\*\*లో పెట్టడం ద్వారా సెన్సార్‌షిప్‌ను ఎలా నివారించాలో ఈ ట్యుటోరియల్‌లో మీరు నేర్చుకుంటారు, తద్వారా ఆసక్తి ఉన్న ఎవరైనా భవిష్యత్తు యాక్సెస్ కోసం సర్వర్‌లో దీన్ని పిన్ చేయగలుగుతారు. + +మొత్తం పని చేయడానికి మీరు [Fleek](https://resources.fleek.xyz/docs/) వంటి థర్డ్-పార్టీ సేవను ఉపయోగించవచ్చు. ఈ ట్యుటోరియల్ ఎక్కువ పని అయినప్పటికీ, వారు ఏమి చేస్తున్నారో అర్థం చేసుకోవడానికి తగినంత చేయాలనుకునే వారి కోసం ఉద్దేశించబడింది. + +## స్థానికంగా ప్రారంభించడం {#getting-started-locally} + +అనేక [థర్డ్-పార్టీ IPFS ప్రొవైడర్లు](https://docs.ipfs.tech/how-to/work-with-pinning-services/#use-a-third-party-pinning-service) ఉన్నాయి, కానీ పరీక్ష కోసం స్థానికంగా IPFSను రన్ చేయడంతో ప్రారంభించడం ఉత్తమం. + +1. [IPFS వినియోగదారు ఇంటర్‌ఫేస్](https://docs.ipfs.tech/install/ipfs-desktop/#install-instructions)ను ఇన్‌స్టాల్ చేయండి. + +2. మీ వెబ్‌సైట్‌తో ఒక డైరెక్టరీని సృష్టించండి. మీరు [Vite](https://vite.dev/)ని ఉపయోగిస్తుంటే, ఈ కమాండ్‌ను ఉపయోగించండి: + + ```sh + pnpm vite build + ``` + +3. IPFS డెస్క్‌టాప్‌లో, **దిగుమతి > ఫోల్డర్** పై క్లిక్ చేసి, మునుపటి దశలో మీరు సృష్టించిన డైరెక్టరీని ఎంచుకోండి. + +4. మీరు ఇప్పుడే అప్‌లోడ్ చేసిన ఫోల్డర్‌ని ఎంచుకుని, **పేరు మార్చండి** పై క్లిక్ చేయండి. దానికి మరింత అర్థవంతమైన పేరు ఇవ్వండి. + +5. దాన్ని మళ్లీ ఎంచుకుని, **లింక్‌ను షేర్ చేయండి** పై క్లిక్ చేయండి. URLని క్లిప్‌బోర్డ్‌కి కాపీ చేయండి. లింక్ `https://ipfs.io/ipfs/QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJ` వంటిదిగా ఉంటుంది. + +6. **స్థితి** పై క్లిక్ చేయండి. గేట్‌వే చిరునామాను చూడటానికి **అధునాతన** ట్యాబ్‌ను విస్తరించండి. ఉదాహరణకు, నా సిస్టమ్‌లో చిరునామా `http://127.0.0.1:8080`. + +7. మీ చిరునామాను కనుగొనడానికి లింక్ స్టెప్ నుండి పాత్‌ను గేట్‌వే చిరునామాతో కలపండి. ఉదాహరణకు, పై ఉదాహరణ కోసం, URL `http://127.0.0.1:8080/ipfs/QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJ`. మీ సైట్‌ను చూడటానికి ఆ URLను బ్రౌజర్‌లో తెరవండి. + +## అప్‌లోడ్ చేస్తోంది {#uploading} + +కాబట్టి ఇప్పుడు మీరు ఫైల్‌లను స్థానికంగా అందించడానికి IPFSను ఉపయోగించవచ్చు, ఇది అంత ఉత్సాహంగా ఏమీ ఉండదు. తదుపరి దశ మీరు ఆఫ్‌లైన్‌లో ఉన్నప్పుడు వాటిని ప్రపంచానికి అందుబాటులో ఉంచడం. + +అనేక ప్రసిద్ధ [పిన్నింగ్ సేవలు](https://docs.ipfs.tech/concepts/persistence/#pinning-services) ఉన్నాయి. వాటిలో ఒకదాన్ని ఎంచుకోండి. మీరు ఏ సేవను ఉపయోగించినా, మీరు ఒక అకౌంట్‌ను సృష్టించి, మీ IPFS డెస్క్‌టాప్‌లోని \*\*కంటెంట్ ఐడెంటిఫైయర్ (CID)\*\*తో దాన్ని అందించాలి. + +వ్యక్తిగతంగా, నేను [4EVERLAND](https://docs.4everland.org/storage/4ever-pin/guides) ఉపయోగించడానికి చాలా సులభం అని కనుగొన్నాను. దాని కోసం ఇక్కడ సూచనలు ఉన్నాయి: + +1. [డాష్‌బోర్డ్](https://dashboard.4everland.org/overview)కి బ్రౌజ్ చేసి, మీ వాలెట్‌తో లాగిన్ అవ్వండి. + +2. ఎడమ సైడ్‌బార్‌లో **స్టోరేజ్ > 4EVER పిన్** పై క్లిక్ చేయండి. + +3. **అప్‌లోడ్ > ఎంచుకున్న CID** పై క్లిక్ చేయండి. మీ కంటెంట్‌కు పేరు ఇచ్చి, IPFS డెస్క్‌టాప్ నుండి CIDని అందించండి. ప్రస్తుతం ఒక CID అనేది `Qm`తో మొదలయ్యే ఒక స్ట్రింగ్, దాని తర్వాత [బేస్-58 ఎన్‌కోడ్ చేయబడిన](https://medium.com/bootdotdev/base64-vs-base58-encoding-c25553ff4524) హాష్‌ను సూచించే 44 అక్షరాలు మరియు అంకెలు ఉంటాయి, ఉదాహరణకు `QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJ`, కానీ [అది మారే అవకాశం ఉంది](https://docs.ipfs.tech/concepts/content-addressing/#version-1-v1). + +4. ప్రారంభ స్థితి **క్యూలో ఉంది**. అది **పిన్ చేయబడింది**గా మారే వరకు రీలోడ్ చేయండి. + +5. లింక్ పొందడానికి మీ CIDపై క్లిక్ చేయండి. మీరు నా అప్లికేషన్‌ను [ఇక్కడ](https://bafybeifqka2odrne5b6l5guthqvbxu4pujko2i6rx2zslvr3qxs6u5o7im/) చూడవచ్చు. + +6. ఒక నెల కంటే ఎక్కువ కాలం పిన్ చేసి ఉంచడానికి మీరు మీ అకౌంట్‌ను యాక్టివేట్ చేయవలసి ఉంటుంది. అకౌంట్ యాక్టివేషన్ ఖర్చు సుమారు $1. మీరు దాన్ని మూసివేస్తే, లాగ్ అవుట్ చేసి, మళ్లీ యాక్టివేట్ చేయమని అడగబడటానికి తిరిగి లాగిన్ అవ్వండి. + +## IPFS నుండి ఉపయోగించడం {#using-from-ipfs} + +ఈ సమయంలో, మీ IPFS కంటెంట్‌ను అందించే కేంద్రీకృత గేట్‌వేకి మీకు ఒక లింక్ ఉంది. సంక్షిప్తంగా, మీ వినియోగదారు ఇంటర్‌ఫేస్ కొంచెం సురక్షితంగా ఉండవచ్చు కానీ అది ఇంకా సెన్సార్‌షిప్ నిరోధకం కాదు. నిజమైన సెన్సార్‌షిప్ నిరోధకత కోసం, వినియోగదారులు IPFSను [నేరుగా బ్రౌజర్ నుండి](https://docs.ipfs.tech/install/ipfs-companion/#prerequisites) ఉపయోగించాలి. + +మీరు దాన్ని ఇన్‌స్టాల్ చేసిన తర్వాత (మరియు డెస్క్‌టాప్ IPFS పని చేస్తున్నప్పుడు), మీరు ఏ సైట్‌లోనైనా [/ipfs/``](https://any.site/ipfs/bafybeifqka2odrne5b6l5guthqvbxu4pujko2i6rx2zslvr3qxs6u5o7im)కు వెళ్లవచ్చు మరియు మీరు ఆ కంటెంట్‌ను వికేంద్రీకృత పద్ధతిలో పొందుతారు. + +## లోపాలు {#drawbacks} + +మీరు IPFS ఫైల్‌లను విశ్వసనీయంగా తొలగించలేరు, కాబట్టి మీరు మీ వినియోగదారు ఇంటర్‌ఫేస్‌ను సవరిస్తున్నంత కాలం, దానిని కేంద్రీకృతంగా వదిలివేయడం లేదా IPFS పైన మార్పుచేయగల సామర్థ్యాన్ని అందించే సిస్టమ్ అయిన [ఇంటర్‌ప్లానెటరీ నేమ్ సిస్టమ్ (IPNS)](https://docs.ipfs.tech/concepts/ipns/#mutability-in-ipfs)ను ఉపయోగించడం ఉత్తమం. వాస్తవానికి, మార్చగలిగే ఏదైనా సెన్సార్ చేయబడవచ్చు, IPNS విషయంలో, దానికి సంబంధించిన ప్రైవేట్ కీ ఉన్న వ్యక్తిపై ఒత్తిడి తీసుకురావడం ద్వారా. + +అదనంగా, కొన్ని ప్యాకేజీలకు IPFSతో సమస్య ఉంది, కాబట్టి మీ వెబ్‌సైట్ చాలా క్లిష్టంగా ఉంటే అది మంచి పరిష్కారం కాకపోవచ్చు. మరియు వాస్తవానికి, సర్వర్ ఇంటిగ్రేషన్‌పై ఆధారపడే ఏదైనా కేవలం క్లయింట్ వైపు IPFSలో ఉంచడం ద్వారా వికేంద్రీకరించబడదు. + +## ముగింపు {#conclusion} + +మీ డాప్ యొక్క డేటాబేస్ మరియు వ్యాపార తర్కం అంశాలను వికేంద్రీకరించడానికి ఇతీరియము మిమ్మల్ని అనుమతించినట్లే, వినియోగదారు ఇంటర్‌ఫేస్‌ను వికేంద్రీకరించడానికి IPFS మిమ్మల్ని అనుమతిస్తుంది. ఇది మీ డాప్‌పై మరో దాడి మార్గాన్ని మూసివేయడానికి మిమ్మల్ని అనుమతిస్తుంది. + +[నా మరిన్ని పనుల కోసం ఇక్కడ చూడండి](https://cryptodocguy.pro/). diff --git a/public/content/translations/te/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/index.md b/public/content/translations/te/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/index.md new file mode 100644 index 00000000000..2cc37436bf1 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/index.md @@ -0,0 +1,111 @@ +--- +title: "create-eth-appతో మీ డాప్ ఫ్రంటెండ్ అభివృద్ధిని ప్రారంభించండి" +description: "create-eth-appను ఎలా ఉపయోగించాలి మరియు దాని ఫీచర్ల యొక్క ఒక అవలోకనం" +author: "Markus Waas" +tags: + [ + "frontend", + "జావాస్క్రిప్ట్", + "ethers.js", + "ది గ్రాఫ్", + "defi" + ] +skill: beginner +lang: te +published: 2020-04-27 +source: soliditydeveloper.com +sourceUrl: https://soliditydeveloper.com/create-eth-app +--- + +గతసారి మనం [Solidity యొక్క పెద్ద చిత్రాన్ని](https://soliditydeveloper.com/solidity-overview-2020) చూశాము మరియు ఇప్పటికే [create-eth-app](https://github.com/PaulRBerg/create-eth-app) గురించి పేర్కొన్నాము. ఇప్పుడు దాన్ని ఎలా ఉపయోగించాలో, ఏ ఫీచర్లు విలీనం చేయబడ్డాయో మరియు దానిని ఎలా విస్తరించాలనే దానిపై అదనపు ఆలోచనలను మీరు తెలుసుకుంటారు. [Sablier](http://sablier.com/) వ్యవస్థాపకుడైన పాల్ రాజ్ వాన్ బెర్గ్ ద్వారా ప్రారంభించబడిన ఈ యాప్, మీ ఫ్రంటెండ్ అభివృద్ధిని ప్రారంభిస్తుంది మరియు ఎంచుకోవడానికి అనేక ఐచ్ఛిక ఇంటిగ్రేషన్‌లతో వస్తుంది. + +## సంస్థాపన {#installation} + +ఇన్‌స్టాలేషన్‌కు Yarn 0.25 లేదా అంతకంటే ఎక్కువ అవసరం (`npm install yarn --global`). ఇది అమలు చేయడం చాలా సులభం: + +```bash +yarn create eth-app my-eth-app +cd my-eth-app +yarn react-app:start +``` + +ఇది తెర వెనుక [create-react-app](https://github.com/facebook/create-react-app)ని ఉపయోగిస్తోంది. మీ యాప్‌ను చూడటానికి, `http://localhost:3000/`ని తెరవండి. మీరు ప్రొడక్షన్‌కు డిప్లాయ్ చేయడానికి సిద్ధంగా ఉన్నప్పుడు, yarn buildతో ఒక మినిఫైడ్ బండిల్‌ను సృష్టించండి. దీనిని హోస్ట్ చేయడానికి ఒక సులభమైన మార్గం [Netlify](https://www.netlify.com/). మీరు ఒక GitHub రెపోను సృష్టించి, దానిని Netlifyకి జోడించి, బిల్డ్ కమాండ్‌ను సెటప్ చేయవచ్చు మరియు మీరు పూర్తి చేశారు! మీ యాప్ హోస్ట్ చేయబడుతుంది మరియు ప్రతిఒక్కరికీ ఉపయోగపడేలా ఉంటుంది. మరియు ఇదంతా ఉచితంగా. + +## ఫీచర్లు {#features} + +### React & create-react-app {#react--create-react-app} + +అన్నింటికన్నా ముందు యాప్ యొక్క గుండె: React మరియు _create-react-app_తో వచ్చే అన్ని అదనపు ఫీచర్లు. మీరు ఇతీరియమును ఏకీకృతం చేయకూడదనుకుంటే, దీనిని మాత్రమే ఉపయోగించడం ఒక గొప్ప ఎంపిక. [React](https://react.dev/) స్వయంగా ఇంటరాక్టివ్ UI'లను నిర్మించడాన్ని చాలా సులభం చేస్తుంది. ఇది [Vue](https://vuejs.org/) వలె ప్రారంభకులకు అనుకూలంగా ఉండకపోవచ్చు, కానీ ఇది ఇప్పటికీ ఎక్కువగా ఉపయోగించబడుతుంది, మరిన్ని ఫీచర్లను కలిగి ఉంది మరియు ముఖ్యంగా ఎంచుకోవడానికి వేలాది అదనపు లైబ్రరీలు ఉన్నాయి. _create-react-app_ కూడా దానితో ప్రారంభించడాన్ని చాలా సులభం చేస్తుంది మరియు వీటిని కలిగి ఉంటుంది: + +- React, JSX, ES6, TypeScript, Flow సింటాక్స్ మద్దతు. +- ఆబ్జెక్ట్ స్ప్రెడ్ ఆపరేటర్ వంటి ES6కు మించిన భాషా ఎక్స్‌ట్రాలు. +- ఆటోప్రిఫిక్స్డ్ CSS, కాబట్టి మీకు -webkit- లేదా ఇతర ప్రిఫిక్స్‌లు అవసరం లేదు. +- కవరేజ్ రిపోర్టింగ్ కోసం అంతర్నిర్మిత మద్దతుతో కూడిన వేగవంతమైన ఇంటరాక్టివ్ యూనిట్ టెస్ట్ రన్నర్. +- సాధారణ తప్పుల గురించి హెచ్చరించే ఒక లైవ్ డెవలప్‌మెంట్ సర్వర్. +- హాష్‌లు మరియు సోర్స్‌మ్యాప్‌లతో, ప్రొడక్షన్ కోసం JS, CSS, మరియు చిత్రాలను బండిల్ చేయడానికి ఒక బిల్డ్ స్క్రిప్ట్. + +ప్రత్యేకించి _create-eth-app_, కొత్త [హుక్స్ ఎఫెక్ట్స్](https://legacy.reactjs.org/docs/hooks-effect.html)ని ఉపయోగిస్తోంది. శక్తివంతమైన, అయినప్పటికీ చాలా చిన్నవైన ఫంక్షనల్ కాంపోనెంట్స్ అని పిలవబడే వాటిని వ్రాయడానికి ఒక పద్ధతి. _create-eth-app_లో వాటిని ఎలా ఉపయోగిస్తారో తెలుసుకోవడానికి అపోలో గురించిన క్రింది విభాగాన్ని చూడండి. + +### Yarn Workspaces {#yarn-workspaces} + +[Yarn Workspaces](https://classic.yarnpkg.com/en/docs/workspaces/) మిమ్మల్ని బహుళ ప్యాకేజీలను కలిగి ఉండటానికి అనుమతిస్తాయి, కానీ `yarn install` ఉపయోగించి వాటన్నింటినీ రూట్ ఫోల్డర్ నుండి నిర్వహించడం మరియు ఒకేసారి అన్నింటికీ డిపెండెన్సీలను ఇన్‌స్టాల్ చేయడం సాధ్యమవుతుంది. ఇది స్మార్ట్ కాంట్రాక్ట్ చిరునామాలు/ABI నిర్వహణ (మీరు ఏ స్మార్ట్ కాంట్రాక్టులను ఎక్కడ డిప్లాయ్ చేసారు మరియు వాటితో ఎలా కమ్యూనికేట్ చేయాలో గురించిన సమాచారం) లేదా గ్రాఫ్ ఇంటిగ్రేషన్ వంటి చిన్న అదనపు ప్యాకేజీలకు ప్రత్యేకంగా అర్ధవంతంగా ఉంటుంది, రెండూ `create-eth-app`లో భాగమే. + +### ethers.js {#ethersjs} + +[Web3](https://docs.web3js.org/) ఇప్పటికీ ఎక్కువగా ఉపయోగించబడుతున్నప్పటికీ, [ethers.js](https://docs.ethers.io/) గత సంవత్సరంలో ప్రత్యామ్నాయంగా చాలా ఎక్కువ ఆకర్షణను పొందింది మరియు ఇది _create-eth-app_లో విలీనం చేయబడింది. మీరు దీనితో పని చేయవచ్చు, దానిని Web3కి మార్చవచ్చు లేదా దాదాపు బీటా నుండి బయటపడిన [ethers.js v5](https://docs.ethers.org/v5/)కి అప్‌గ్రేడ్ చేయడాన్ని పరిగణించవచ్చు. + +### ది గ్రాఫ్ {#the-graph} + +[Restful API](https://restfulapi.net/)తో పోలిస్తే డేటాను నిర్వహించడానికి [GraphQL](https://graphql.org/) ఒక ప్రత్యామ్నాయ మార్గం. రెస్ట్‌ఫుల్ APIల కంటే వీటికి అనేక ప్రయోజనాలు ఉన్నాయి, ముఖ్యంగా వికేంద్రీకృత బ్లాక్‌చెయిన్ డేటా కోసం. దీని వెనుక ఉన్న కారణంపై మీకు ఆసక్తి ఉంటే, [వికేంద్రీకృత వెబ్‌ను GraphQL శక్తివంతం చేస్తుంది](https://medium.com/graphprotocol/graphql-will-power-the-decentralized-web-d7443a69c69a)ని చూడండి. + +సాధారణంగా మీరు మీ స్మార్ట్ కాంట్రాక్ట్ నుండి నేరుగా డేటాను పొందుతారు. తాజా ట్రేడ్ సమయాన్ని చదవాలనుకుంటున్నారా? కేవలం `MyContract.methods.latestTradeTime().call()` అని కాల్ చేయండి, ఇది ఒక ఇతీరియము నోడ్ నుండి మీ డాప్‌లోకి డేటాను పొందుతుంది. కానీ మీకు వందలాది విభిన్న డేటా పాయింట్లు అవసరమైతే ఏమిటి? అది నోడ్‌కు వందలాది డేటా ఫెచ్‌లకు దారితీస్తుంది, ప్రతిసారీ ఒక [RTT](https://wikipedia.org/wiki/Round-trip_delay_time) అవసరం అవుతుంది, ఇది మీ డాప్‌ను నెమ్మదిగా మరియు అసమర్థంగా చేస్తుంది. మీ కాంట్రాక్ట్ లోపల ఒకేసారి బహుళ డేటాను తిరిగి ఇచ్చే ఫెచర్ కాల్ ఫంక్షన్ ఒక పరిష్కారం కావచ్చు. అయితే ఇది ఎల్లప్పుడూ ఆదర్శప్రాయం కాదు. + +ఆపై మీరు చారిత్రక డేటాపై కూడా ఆసక్తి కలిగి ఉండవచ్చు. మీరు చివరి ట్రేడ్ సమయాన్ని మాత్రమే కాకుండా, మీరు స్వయంగా చేసిన అన్ని ట్రేడ్‌ల సమయాలను కూడా తెలుసుకోవాలనుకుంటున్నారు. _create-eth-app_ సబ్‌గ్రాఫ్ ప్యాకేజీని ఉపయోగించండి, [డాక్యుమెంటేషన్](https://thegraph.com/docs/en/subgraphs/developing/creating/starting-your-subgraph) చదవండి మరియు దానిని మీ స్వంత కాంట్రాక్ట్‌లకు అనుగుణంగా మార్చుకోండి. మీరు ప్రసిద్ధ స్మార్ట్ కాంట్రాక్ట్‌ల కోసం చూస్తున్నట్లయితే, ఇప్పటికే ఒక సబ్‌గ్రాఫ్ కూడా ఉండవచ్చు. [సబ్‌గ్రాఫ్ ఎక్స్‌ప్లోరర్](https://thegraph.com/explorer/)ని చూడండి. + +మీకు ఒక సబ్‌గ్రాఫ్ ఉన్న తర్వాత, అది మీకు అవసరమైన చారిత్రక డేటాతో సహా అన్ని ముఖ్యమైన బ్లాక్‌చెయిన్ డేటాను తిరిగి పొందే ఒక సాధారణ క్వెరీని మీ డాప్‌లో వ్రాయడానికి మిమ్మల్ని అనుమతిస్తుంది, కేవలం ఒకే ఒక్క ఫెచ్ మాత్రమే అవసరం. + +### Apollo {#apollo} + +[అపోలో బూస్ట్](https://www.apollographql.com/docs/react/get-started/) ఇంటిగ్రేషన్‌కు ధన్యవాదాలు, మీరు మీ React డాప్‌లో గ్రాఫ్‌ను సులభంగా విలీనం చేయవచ్చు. ముఖ్యంగా [React హుక్స్ మరియు అపోలో](https://www.apollographql.com/blog/apollo-client-now-with-react-hooks)ను ఉపయోగిస్తున్నప్పుడు, మీ కాంపోనెంట్‌లో ఒకే ఒక GraphQL క్వెరీని వ్రాయడం వలె డేటాను పొందడం చాలా సులభం: + +```js +const { loading, error, data } = useQuery(myGraphQlQuery) + +React.useEffect(() => { + if (!loading && !error && data) { + console.log({ data }) + } +}, [loading, error, data]) +``` + +## టెంప్లేట్‌లు {#templates} + +దానిపైన మీరు అనేక విభిన్న టెంప్లేట్‌ల నుండి ఎంచుకోవచ్చు. ఇప్పటివరకు మీరు Aave, Compound, UniSwap లేదా sablier ఇంటిగ్రేషన్‌ను ఉపయోగించవచ్చు. అవన్నీ ముఖ్యమైన సర్వీస్ స్మార్ట్ కాంట్రాక్ట్ చిరునామాలను ముందుగా తయారు చేసిన సబ్‌గ్రాఫ్ ఇంటిగ్రేషన్‌లతో పాటు జోడిస్తాయి. `yarn create eth-app my-eth-app --with-template aave` వంటి క్రియేషన్ కమాండ్‌కు టెంప్లేట్‌ను జోడించండి. + +### Aave {#aave} + +[Aave](https://aave.com/) ఒక వికేంద్రీకృత డబ్బు అప్పు ఇచ్చే మార్కెట్. డిపాజిటర్లు నిష్క్రియ ఆదాయాన్ని సంపాదించడానికి మార్కెట్‌కు లిక్విడిటీని అందిస్తారు, అయితే రుణగ్రహీతలు పూచీకత్తులను ఉపయోగించి రుణం తీసుకోగలరు. Aave యొక్క ఒక ప్రత్యేక లక్షణం [ఫ్లాష్ లోన్లు](https://aave.com/docs/developers/flash-loans), ఇవి మీరు ఒకే లావాదేవీలో రుణాన్ని తిరిగి చెల్లించినంత వరకు, ఎలాంటి పూచీకత్తు లేకుండా డబ్బును రుణం తీసుకోవడానికి మిమ్మల్ని అనుమతిస్తాయి. ఉదాహరణకు, ఆర్బిట్రేజ్ ట్రేడింగ్‌లో మీకు అదనపు నగదు ఇవ్వడానికి ఇది ఉపయోగకరంగా ఉంటుంది. + +మీకు వడ్డీని సంపాదించి పెట్టే ట్రేడ్ చేయబడిన టోకెన్‌లను _aTokens_ అని పిలుస్తారు. + +మీరు _create-eth-app_తో Aaveని ఇంటిగ్రేట్ చేయడానికి ఎంచుకున్నప్పుడు, మీరు ఒక [సబ్‌గ్రాఫ్ ఇంటిగ్రేషన్](https://docs.aave.com/developers/getting-started/using-graphql) పొందుతారు. Aave ది గ్రాఫ్‌ను ఉపయోగిస్తుంది మరియు ఇప్పటికే [Ropsten](https://thegraph.com/explorer/subgraph/aave/protocol-ropsten) మరియు [Mainnet](https://thegraph.com/explorer/subgraph/aave/protocol)లో అనేక ఉపయోగించడానికి సిద్ధంగా ఉన్న సబ్‌గ్రాఫ్‌లను [రా](https://thegraph.com/explorer/subgraph/aave/protocol-raw) లేదా [ఫార్మాటెడ్](https://thegraph.com/explorer/subgraph/aave/protocol) రూపంలో మీకు అందిస్తుంది. + +![Aave ఫ్లాష్ లోన్ మీమ్ – "అవును, నా ఫ్లాష్ లోన్‌ను 1 లావాదేవీ కంటే ఎక్కువసేపు ఉంచుకోగలిగితే, అది చాలా బాగుంటుంది"](./flashloan-meme.png) + +### Compound {#compound} + +[Compound](https://compound.finance/) Aaveని పోలి ఉంటుంది. ఈ ఇంటిగ్రేషన్‌లో ఇప్పటికే కొత్త [Compound v2 Subgraph](https://medium.com/graphprotocol/https-medium-com-graphprotocol-compound-v2-subgraph-highlight-a5f38f094195) చేర్చబడింది. ఇక్కడ వడ్డీని సంపాదించే టోకెన్‌లను ఆశ్చర్యకరంగా _cTokens_ అని పిలుస్తారు. + +### Uniswap {#uniswap} + +[Uniswap](https://uniswap.exchange/) ఒక వికేంద్రీకృత మార్పిడి (DEX). లిక్విడిటీ ప్రొవైడర్లు ఒక ట్రేడ్ యొక్క రెండు వైపులా అవసరమైన టోకెన్‌లు లేదా ఈథర్‌ను అందించడం ద్వారా ఫీజులను సంపాదించవచ్చు. ఇది విస్తృతంగా ఉపయోగించబడుతుంది మరియు అందువల్ల చాలా విస్తృత శ్రేణి టోకెన్‌ల కోసం అత్యధిక లిక్విడిటీలలో ఒకటిగా ఉంది. ఉదాహరణకు, వినియోగదారులు వారి ETHని DAI కోసం మార్చుకోవడానికి అనుమతించడానికి, మీరు మీ డాప్‌లో దీన్ని సులభంగా ఇంటిగ్రేట్ చేయవచ్చు. + +దురదృష్టవశాత్తు, ఇది వ్రాసే సమయానికి, ఈ ఇంటిగ్రేషన్ Uniswap v1 కోసం మాత్రమే కానీ [ఇప్పుడే విడుదలైన v2](https://uniswap.org/blog/uniswap-v2/) కోసం కాదు. + +### Sablier {#sablier} + +[Sablier](https://sablier.com/) వినియోగదారులకు డబ్బు చెల్లింపులను స్ట్రీమ్ చేయడానికి అనుమతిస్తుంది. ఒకే జీతం రోజుకు బదులుగా, ప్రారంభ సెటప్ తర్వాత తదుపరి పరిపాలన లేకుండా మీరు వాస్తవానికి మీ డబ్బును నిరంతరం పొందుతారు. ఈ ఇంటిగ్రేషన్‌లో దాని [సొంత సబ్‌గ్రాఫ్](https://thegraph.com/explorer/subgraph/sablierhq/sablier) కూడా ఉంది. + +## తర్వాత ఏమిటి? {#whats-next} + +మీకు _create-eth-app_ గురించి ఏవైనా ప్రశ్నలు ఉంటే, [Sablier కమ్యూనిటీ సర్వర్‌](https://discord.gg/bsS8T47)కు వెళ్లండి, అక్కడ మీరు _create-eth-app_ రచయితలతో సంప్రదించవచ్చు. కొన్ని మొదటి తదుపరి దశలుగా మీరు [Material UI](https://mui.com/material-ui/) వంటి UI ఫ్రేమ్‌వర్క్‌ను ఇంటిగ్రేట్ చేయాలనుకోవచ్చు, మీకు వాస్తవంగా అవసరమైన డేటా కోసం GraphQL క్వెరీలను వ్రాయండి మరియు డిప్లాయ్‌మెంట్‌ను సెటప్ చేయండి. diff --git a/public/content/translations/te/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md b/public/content/translations/te/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md new file mode 100644 index 00000000000..514edcb2b3c --- /dev/null +++ b/public/content/translations/te/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md @@ -0,0 +1,269 @@ +--- +title: "SQL తో ఇతీరియము పునాది అంశాలు నేర్చుకోండి" +description: "స్ట్రక్చర్డ్ క్వెరీ లాంగ్వేజ్ (SQL)తో ఆన్‌చైన్ డేటాను ప్రశ్నించడం ద్వారా లావాదేవీలు, బ్లాక్‌లు మరియు గ్యాస్‌తో సహా ప్రాథమిక ఇతీరియము భావనలను అర్థం చేసుకోవడానికి ఈ ట్యుటోరియల్ పాఠకులకు సహాయపడుతుంది." +author: "Paul Apivat" +tags: [ "SQL", "ప్రశ్నించడం", "లావాదేవీలు" ] +skill: beginner +lang: te +published: 2021-05-11 +source: paulapivat.com +sourceUrl: https://paulapivat.com/post/query_ethereum/ +--- + +చాలా ఇతీరియము ట్యుటోరియల్స్ డెవలపర్‌లను లక్ష్యంగా చేసుకుంటాయి, కానీ క్లయింట్ లేదా నోడ్‌ను రన్ చేయకుండా ఆన్‌చైన్ డేటాను చూడాలనుకునే డేటా విశ్లేషకులు లేదా వ్యక్తుల కోసం విద్యా వనరుల కొరత ఉంది. + +[Dune Analytics](https://dune.com/) అందించిన ఇంటర్‌ఫేస్ ద్వారా స్ట్రక్చర్డ్ క్వెరీ లాంగ్వేజ్ (SQL)తో ఆన్‌చైన్ డేటాను ప్రశ్నించడం ద్వారా, ఈ ట్యుటోరియల్ లావాదేవీలు, బ్లాక్‌లు మరియు గ్యాస్ వంటి ప్రాథమిక ఇతీరియము భావనలను అర్థం చేసుకోవడానికి పాఠకులకు సహాయపడుతుంది. + +ఆన్‌చైన్ డేటా మనకు ఇతీరియమును, నెట్‌వర్క్‌ను మరియు కంప్యూటింగ్ శక్తి కోసం ఒక ఆర్థిక వ్యవస్థగా అర్థం చేసుకోవడంలో సహాయపడుతుంది మరియు నేడు ఇతీరియము ఎదుర్కొంటున్న సవాళ్లను (అంటే, పెరుగుతున్న గ్యాస్ ధరలు) మరియు, మరింత ముఖ్యంగా, స్కేలింగ్ పరిష్కారాల చుట్టూ జరిగే చర్చలను అర్థం చేసుకోవడానికి ఒక ఆధారంగా ఉపయోగపడాలి. + +### లావాదేవీలు {#transactions} + +ఇతీరియములో ఒక వినియోగదారుడి ప్రయాణం, వినియోగదారు-నియంత్రిత ఖాతాను లేదా ETH బ్యాలెన్స్‌తో ఉన్న ఒక సంస్థను ప్రారంభించడంతో మొదలవుతుంది. రెండు రకాల ఖాతాలు ఉన్నాయి - వినియోగదారు-నియంత్రిత లేదా ఒక స్మార్ట్ కాంట్రాక్ట్ ([ethereum.org](/developers/docs/accounts/) చూడండి). + +[Etherscan](https://etherscan.io/) లేదా [Blockscout](https://eth.blockscout.com/) వంటి బ్లాక్ ఎక్స్‌ప్లోరర్‌లో ఏ ఖాతానైనా చూడవచ్చు. బ్లాక్ ఎక్స్‌ప్లోరర్లు ఇతీరియము డేటాకు ఒక పోర్టల్. అవి నిజ-సమయంలో బ్లాక్‌లు, లావాదేవీలు, మైనర్లు, ఖాతాలు మరియు ఇతర ఆన్‌చైన్ కార్యకలాపాలపై డేటాను ప్రదర్శిస్తాయి ([ఇక్కడ](/developers/docs/data-and-analytics/block-explorers/) చూడండి). + +అయితే, బాహ్య బ్లాక్ ఎక్స్‌ప్లోరర్లు అందించిన సమాచారాన్ని సరిపోల్చుకోవడానికి ఒక వినియోగదారుడు డేటాను నేరుగా ప్రశ్నించాలని కోరుకోవచ్చు. [Dune Analytics](https://dune.com/) SQL గురించి కొంత పరిజ్ఞానం ఉన్న ఎవరికైనా ఈ సామర్థ్యాన్ని అందిస్తుంది. + +సూచన కోసం, ఇతీరియము ఫౌండేషన్ (EF) యొక్క స్మార్ట్ కాంట్రాక్ట్ ఖాతాను [Blockscout](https://eth.blockscout.com/address/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe) లో చూడవచ్చు. + +గమనించవలసిన ఒక విషయం ఏమిటంటే, EF తో సహా అన్ని ఖాతాలు లావాదేవీలను పంపడానికి మరియు స్వీకరించడానికి ఉపయోగించగల పబ్లిక్ చిరునామాను కలిగి ఉంటాయి. + +Etherscan లోని ఖాతా బ్యాలెన్స్ సాధారణ లావాదేవీలు మరియు అంతర్గత లావాదేవీలను కలిగి ఉంటుంది. అంతర్గత లావాదేవీలు, పేరు సూచించినప్పటికీ, చైన్ యొక్క స్థితిని మార్చే _అసలు_ లావాదేవీలు కావు. అవి ఒక కాంట్రాక్ట్‌ను అమలు చేయడం ద్వారా ప్రారంభించబడిన విలువ బదిలీలు ([మూలం](https://ethereum.stackexchange.com/questions/3417/how-to-get-contract-internal-transactions)). అంతర్గత లావాదేవీలకు సంతకం లేనందున, అవి బ్లాక్‌చైన్‌లో చేర్చబడ **వు** మరియు Dune Analytics తో ప్రశ్నించలేము. + +అందువల్ల, ఈ ట్యుటోరియల్ సాధారణ లావాదేవీలపై దృష్టి పెడుతుంది. దీనిని ఈ విధంగా ప్రశ్నించవచ్చు: + +```sql +WITH temp_table AS ( +SELECT + hash, + block_number, + block_time, + "from", + "to", + value / 1e18 AS ether, + gas_used, + gas_price / 1e9 AS gas_price_gwei +FROM ethereum."transactions" +WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe' +ORDER BY block_time DESC +) +SELECT + hash, + block_number, + block_time, + "from", + "to", + ether, + (gas_used * gas_price_gwei) / 1e9 AS txn_fee +FROM temp_table +``` + +ఇది Etherscan యొక్క లావాదేవీ పేజీలో అందించిన అదే సమాచారాన్ని ఇస్తుంది. పోలిక కోసం, ఇక్కడ రెండు మూలాలు ఉన్నాయి: + +#### Etherscan {#etherscan} + +![](./etherscan_view.png) + +[Blockscout లో EF యొక్క కాంట్రాక్ట్ పేజీ.](https://eth.blockscout.com/address/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe) + +#### డూన్ అనలిటిక్స్ {#dune-analytics} + +![](./dune_view.png) + +డాష్‌బోర్డ్‌ను [ఇక్కడ](https://dune.com/paulapivat/Learn-Ethereum) కనుగొనవచ్చు. క్వెరీని చూడటానికి పట్టికపై క్లిక్ చేయండి (పైన కూడా చూడండి). + +### లావాదేవీలను విడదీయడం {#breaking_down_transactions} + +సమర్పించిన లావాదేవీలో అనేక రకాల సమాచారం ఉంటుంది ([మూలం](/developers/docs/transactions/)): + +- **గ్రహీత**: స్వీకరించే చిరునామా ("to"గా ప్రశ్నించబడింది) +- **సంతకం**: పంపినవారి ప్రైవేట్ కీలు లావాదేవీపై సంతకం చేసినప్పటికీ, SQL తో మనం ప్రశ్నించగలిగేది పంపినవారి పబ్లిక్ చిరునామా ("from"). +- **విలువ**: ఇది బదిలీ చేయబడిన ETH మొత్తం (`ether` కాలమ్ చూడండి). +- **డేటా**: ఇది హ్యాష్ చేయబడిన ఏకపక్ష డేటా (`data` కాలమ్ చూడండి) +- **gasLimit** – లావాదేవీ ద్వారా వినియోగించబడగల గ్యాస్ యూనిట్ల గరిష్ట మొత్తం. గ్యాస్ యూనిట్లు గణన దశలను సూచిస్తాయి +- **maxPriorityFeePerGas** - మైనర్‌కు చిట్కాగా చేర్చడానికి గ్యాస్ యొక్క గరిష్ట మొత్తం +- **maxFeePerGas** - లావాదేవీ కోసం చెల్లించడానికి సిద్ధంగా ఉన్న గరిష్ట గ్యాస్ మొత్తం (baseFeePerGas మరియు maxPriorityFeePerGas తో సహా) + +ఇతీరియము ఫౌండేషన్ పబ్లిక్ చిరునామాకు లావాదేవీల కోసం మనం ఈ నిర్దిష్ట సమాచారాన్ని ప్రశ్నించవచ్చు: + +```sql +SELECT + "to", + "from", + value / 1e18 AS ether, + data, + gas_limit, + gas_price / 1e9 AS gas_price_gwei, + gas_used, + ROUND(((gas_used / gas_limit) * 100),2) AS gas_used_pct +FROM ethereum."transactions" +WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe' +ORDER BY block_time DESC +``` + +### బ్లాక్‌లు {#blocks} + +ప్రతి లావాదేవీ ఎథేరియం వర్చువల్ మషీన్ ([EVM](/developers/docs/evm/)) యొక్క స్థితిని మారుస్తుంది ([మూలం](/developers/docs/transactions/)). ధృవీకరించబడటానికి మరియు ఒక బ్లాక్‌లో చేర్చబడటానికి లావాదేవీలు నెట్‌వర్క్‌కు ప్రసారం చేయబడతాయి. ప్రతి లావాదేవీ ఒక బ్లాక్ నంబర్‌తో అనుబంధించబడి ఉంటుంది. డేటాను చూడటానికి, మనం ఒక నిర్దిష్ట బ్లాక్ నంబర్‌ను ప్రశ్నించవచ్చు: 12396854 (ఈ రచన నాటికి, 11/5/21, ఇతీరియము ఫౌండేషన్ లావాదేవీలలో అత్యంత ఇటీవలి బ్లాక్). + +అంతేకాకుండా, మనం తదుపరి రెండు బ్లాక్‌లను ప్రశ్నించినప్పుడు, ప్రతి బ్లాక్‌లో మునుపటి బ్లాక్ యొక్క హ్యాష్ (అంటే, పేరెంట్ హ్యాష్) ఉంటుందని మనం చూడవచ్చు, ఇది బ్లాక్‌చైన్ ఎలా ఏర్పడుతుందో వివరిస్తుంది. + +ప్రతి బ్లాక్‌లో దాని పేరెంట్ బ్లాక్‌కు ఒక సూచన ఉంటుంది. ఇది `hash` మరియు `parent_hash` కాలమ్‌ల మధ్య కింద చూపబడింది ([మూలం](/developers/docs/blocks/)): + +![parent_hash](./parent_hash.png) + +Dune Analytics లో [క్వెరీ](https://dune.com/queries/44856/88292) ఇక్కడ ఉంది: + +```sql +SELECT + time, + number, + hash, + parent_hash, + nonce +FROM ethereum."blocks" +WHERE "number" = 12396854 OR "number" = 12396855 OR "number" = 12396856 +LIMIT 10 +``` + +మనం సమయం, బ్లాక్ నంబర్, కఠినత, హ్యాష్, పేరెంట్ హ్యాష్, మరియు నాన్స్ లను ప్రశ్నించడం ద్వారా ఒక బ్లాక్‌ను పరిశీలించవచ్చు. + +ఈ క్వెరీ కవర్ చేయని ఏకైక విషయం _లావాదేవీల జాబితా_, దీనికి కింద ఒక ప్రత్యేక క్వెరీ అవసరం, మరియు _స్టేట్ రూట్_. ఒక పూర్తి లేదా ఆర్కైవల్ నోడ్ అన్ని లావాదేవీలను మరియు స్టేట్ పరివర్తనలను నిల్వ చేస్తుంది, ఇది క్లయింట్లు ఎప్పుడైనా చైన్ యొక్క స్థితిని ప్రశ్నించడానికి అనుమతిస్తుంది. దీనికి పెద్ద నిల్వ స్థలం అవసరం కాబట్టి, మనం చైన్ డేటాను స్టేట్ డేటా నుండి వేరు చేయవచ్చు: + +- చైన్ డేటా (బ్లాక్‌ల జాబితా, లావాదేవీలు) +- స్టేట్ డేటా (ప్రతి లావాదేలీ యొక్క స్టేట్ పరివర్తన ఫలితం) + +స్టేట్ రూట్ రెండవ దానిలోకి వస్తుంది మరియు అది _అంతర్లీన_ డేటా (ఆన్‌చైన్‌లో నిల్వ చేయబడదు), అయితే చైన్ డేటా స్పష్టంగా మరియు చైన్‌పైనే నిల్వ చేయబడుతుంది ([మూలం](https://ethereum.stackexchange.com/questions/359/where-is-the-state-data-stored)). + +ఈ ట్యుటోరియల్ కోసం, మనం Dune Analytics ద్వారా SQL తో ప్రశ్నించ_గల_ ఆన్‌చైన్ డేటాపై దృష్టి పెడతాము. + +పైన చెప్పినట్లుగా, ప్రతి బ్లాక్‌లో లావాదేవీల జాబితా ఉంటుంది, మనం ఒక నిర్దిష్ట బ్లాక్ కోసం ఫిల్టర్ చేయడం ద్వారా దీనిని ప్రశ్నించవచ్చు. మనం అత్యంత ఇటీవలి బ్లాక్, 12396854 ని ప్రయత్నిద్దాం: + +```sql +SELECT * FROM ethereum."transactions" +WHERE block_number = 12396854 +ORDER BY block_time DESC` +``` + +Dune లో SQL అవుట్‌పుట్ ఇక్కడ ఉంది: + +![](./list_of_txn.png) + +చైన్‌కు జోడించబడిన ఈ ఒక్క బ్లాక్ ఎథేరియం వర్చువల్ మషీన్ ([EVM](/developers/docs/evm/)) యొక్క స్థితిని మారుస్తుంది. డజన్ల కొద్దీ, కొన్నిసార్లు వందల కొద్దీ లావాదేవీలు ఒకేసారి ధృవీకరించబడతాయి. ఈ నిర్దిష్ట సందర్భంలో, 222 లావాదేవీలు చేర్చబడ్డాయి. + +వాస్తవానికి ఎన్ని విజయవంతమయ్యాయో చూడటానికి, విజయవంతమైన లావాదేవీలను లెక్కించడానికి మనం మరొక ఫిల్టర్‌ను జోడిస్తాము: + +```sql +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 విజయవంతంగా ధృవీకరించబడ్డాయి: + +![](./successful_txn.png) + +లావాదేవీల అభ్యర్థనలు సెకనుకు డజన్ల కొద్దీ సార్లు జరుగుతాయి, కానీ బ్లాక్‌లు సుమారుగా ప్రతి 15 సెకన్లకు ఒకసారి కమిట్ చేయబడతాయి ([మూలం](/developers/docs/blocks/)). + +సుమారుగా ప్రతి 15 సెకన్లకు ఒక బ్లాక్ ఉత్పత్తి అవుతుందని చూడటానికి, మనం ఒక రోజులోని సెకన్ల సంఖ్యను (86400) 15తో భాగించి రోజుకు సగటు బ్లాక్‌ల అంచనా సంఖ్యను (~ 5760) పొందవచ్చు. + +రోజుకు ఉత్పత్తి చేయబడిన ఇతీరియము బ్లాక్‌ల కోసం చార్ట్ (2016 - ప్రస్తుతం) ఇదిగో: + +![](./daily_blocks.png) + +ఈ కాలంలో రోజుకు ఉత్పత్తి చేయబడిన బ్లాక్‌ల సగటు సంఖ్య ~5,874: + +![](./avg_daily_blocks.png) + +క్వెరీలు ఇవి: + +```sql +# 2016 నుండి రోజుకు ఉత్పత్తి చేయబడిన బ్లాక్‌ల సంఖ్యను దృశ్యమానం చేయడానికి క్వెరీ + +SELECT + DATE_TRUNC('day', time) AS dt, + COUNT(*) AS block_count +FROM ethereum."blocks" +GROUP BY dt +OFFSET 1 + +# రోజుకు ఉత్పత్తి చేయబడిన బ్లాక్‌ల సగటు సంఖ్య + +WITH temp_table AS ( +SELECT + DATE_TRUNC('day', time) AS dt, + COUNT(*) AS block_count +FROM ethereum."blocks" +GROUP BY dt +OFFSET 1 +) +SELECT + AVG(block_count) AS avg_block_count +FROM temp_table +``` + +2016 నుండి రోజుకు ఉత్పత్తి చేయబడిన బ్లాక్‌ల సగటు సంఖ్య ఆ సంఖ్య కంటే కొంచెం ఎక్కువగా 5,874. ప్రత్యామ్నాయంగా, 86400 సెకన్లను 5874 సగటు బ్లాక్‌లతో భాగిస్తే 14.7 సెకన్లు లేదా సుమారుగా ప్రతి 15 సెకన్లకు ఒక బ్లాక్ వస్తుంది. + +### గ్యాస్ {#gas} + +బ్లాక్‌లు పరిమాణంలో పరిమితంగా ఉంటాయి. గరిష్ట బ్లాక్ పరిమాణం డైనమిక్‌గా ఉంటుంది మరియు నెట్‌వర్క్ డిమాండ్ ప్రకారం 12,500,000 మరియు 25,000,000 యూనిట్ల మధ్య మారుతుంది. డిస్క్ స్థలం మరియు వేగం అవసరాల పరంగా పూర్తి నోడ్‌లపై భారం పడకుండా, ఏకపక్షంగా పెద్ద బ్లాక్ పరిమాణాలను నివారించడానికి పరిమితులు అవసరం ([మూలం](/developers/docs/blocks/)). + +బ్లాక్ గ్యాస్ పరిమితిని సంభావితం చేయడానికి ఒక మార్గం ఏమిటంటే, లావాదేవీలను బ్యాచ్ చేయడానికి అందుబాటులో ఉన్న బ్లాక్ స్పేస్ యొక్క **సరఫరా**గా దానిని భావించడం. బ్లాక్ గ్యాస్ పరిమితిని 2016 నుండి నేటి వరకు ప్రశ్నించి, దృశ్యమానం చేయవచ్చు: + +![](./avg_gas_limit.png) + +```sql +SELECT + DATE_TRUNC('day', time) AS dt, + AVG(gas_limit) AS avg_block_gas_limit +FROM ethereum."blocks" +GROUP BY dt +OFFSET 1 +``` + +అప్పుడు ఇతీరియము చైన్‌లో చేసిన కంప్యూటింగ్ కోసం చెల్లించడానికి (అంటే, లావాదేవీని పంపడం, స్మార్ట్ కాంట్రాక్ట్‌ను కాల్ చేయడం, ఒక NFT ని మింట్ చేయడం) రోజూ ఉపయోగించే వాస్తవ గ్యాస్ ఉంది. ఇది అందుబాటులో ఉన్న ఇతీరియము బ్లాక్ స్పేస్ కోసం **డిమాండ్**: + +![](./daily_gas_used.png) + +```sql +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](./gas_demand_supply.png) + +అందువల్ల, అందుబాటులో ఉన్న సరఫరాను బట్టి మనం గ్యాస్ ధరలను ఇతీరియము బ్లాక్ స్పేస్ కోసం డిమాండ్ యొక్క ఫంక్షన్‌గా అర్థం చేసుకోవచ్చు. + +చివరగా, మనం ఇతీరియము చైన్ కోసం సగటు రోజువారీ గ్యాస్ ధరలను ప్రశ్నించాలనుకోవచ్చు, అయితే, అలా చేయడం వలన చాలా ఎక్కువ క్వెరీ సమయం పడుతుంది, కాబట్టి మనం మన క్వెరీని ఇతీరియము ఫౌండేషన్ ద్వారా ప్రతి లావాదేవీకి చెల్లించిన సగటు గ్యాస్ మొత్తానికి ఫిల్టర్ చేస్తాము. + +![](./ef_daily_gas.png) + +సంవత్సరాలుగా ఇతీరియము ఫౌండేషన్ చిరునామాకు చేసిన అన్ని లావాదేవీలకు చెల్లించిన గ్యాస్ ధరలను మనం చూడవచ్చు. క్వెరీ ఇక్కడ ఉంది: + +```sql +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 +``` + +### సారాంశం {#summary} + +ఈ ట్యుటోరియల్‌తో, ఆన్‌చైన్ డేటాను ప్రశ్నించి, దానిపై ఒక అవగాహన పొందడం ద్వారా మనం ప్రాథమిక ఇతీరియము భావనలను మరియు ఇతీరియము బ్లాక్‌చైన్ ఎలా పనిచేస్తుందో అర్థం చేసుకుంటాము. + +ఈ ట్యుటోరియల్‌లో ఉపయోగించిన మొత్తం కోడ్‌ను కలిగి ఉన్న డాష్‌బోర్డ్‌ను [ఇక్కడ](https://dune.com/paulapivat/Learn-Ethereum) కనుగొనవచ్చు. + +web3ని అన్వేషించడానికి డేటాను మరింతగా ఉపయోగించడం కోసం [Twitterలో నన్ను కనుగొనండి](https://twitter.com/paulapivat). diff --git a/public/content/translations/te/developers/tutorials/logging-events-smart-contracts/index.md b/public/content/translations/te/developers/tutorials/logging-events-smart-contracts/index.md new file mode 100644 index 00000000000..ac815bdadb1 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/logging-events-smart-contracts/index.md @@ -0,0 +1,68 @@ +--- +title: "ఈవెంట్‌లతో స్మార్ట్ కాంట్రాక్ట్‌ల నుండి డేటాను లాగింగ్ చేయడం" +description: "స్మార్ట్ కాంట్రాక్ట్ ఈవెంట్‌లకు ఒక పరిచయం మరియు డేటాను లాగ్ చేయడానికి మీరు వాటిని ఎలా ఉపయోగించవచ్చో" +author: "jdourlens" +tags: + [ + "స్మార్ట్ కాంట్రాక్టులు", + "remix", + "దృఢత్వం", + "ఈవెంట్‌లు" + ] +skill: intermediate +lang: te +published: 2020-04-03 +source: EthereumDev +sourceUrl: https://ethereumdev.io/logging-data-with-events/ +address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE" +--- + +Solidityలో, [ఈవెంట్‌లు](/developers/docs/smart-contracts/anatomy/#events-and-logs) అనేవి స్మార్ట్ కాంట్రాక్టులు ప్రేరేపించగల సంకేతాలు. డాప్స్, లేదా Ethereum JSON-RPC APIకి కనెక్ట్ చేయబడిన ఏదైనా, ఈ ఈవెంట్‌లను వినగలవు మరియు తదనుగుణంగా వ్యవహరించగలవు. ఒక ఈవెంట్‌ను ఇండెక్స్ కూడా చేయవచ్చు, తద్వారా ఈవెంట్ చరిత్రను తరువాత శోధించవచ్చు. + +## ఈవెంట్‌లు {#events} + +ఈ ఆర్టికల్ రాసే సమయంలో Ethereum బ్లాక్‌చెయిన్‌లో అత్యంత సాధారణ ఈవెంట్ Transfer ఈవెంట్, ఇది ఎవరైనా టోకెన్‌లను బదిలీ చేసినప్పుడు ERC20 టోకెన్‌ల ద్వారా విడుదల చేయబడుతుంది. + +```solidity +event Transfer(address indexed from, address indexed to, uint256 value); +``` + +ఈవెంట్ సిగ్నేచర్ కాంట్రాక్ట్ కోడ్‌లో డిక్లేర్ చేయబడుతుంది మరియు `emit` కీవర్డ్‌తో విడుదల చేయబడుతుంది. ఉదాహరణకు, బదిలీ ఈవెంట్, బదిలీని ఎవరు పంపారు (_from_), ఎవరికి (_to_) మరియు ఎన్ని టోకెన్‌లు బదిలీ చేయబడ్డాయి (_value_) అనే వివరాలను లాగ్ చేస్తుంది. + +మనం మన Counter స్మార్ట్ కాంట్రాక్ట్‌కు తిరిగి వెళ్లి, ప్రతిసారీ విలువ మారినప్పుడు లాగ్ చేయాలని నిర్ణయించుకుంటే. ఈ కాంట్రాక్ట్‌ను డిప్లాయ్ చేయడానికి బదులుగా, దానిని విస్తరించి మరో కాంట్రాక్ట్‌ను నిర్మించడానికి ఆధారంగా ఉపయోగపడేలా ఉద్దేశించారు కాబట్టి: దీనిని అబ్‌స్ట్రాక్ట్ కాంట్రాక్ట్ అని అంటారు. మన కౌంటర్ ఉదాహరణ విషయంలో, అది ఇలా కనిపిస్తుంది: + +```solidity +pragma solidity 0.5.17; + +contract Counter { + + event ValueChanged(uint oldValue, uint256 newValue); + + // గణనల సంఖ్యను ఉంచడానికి సంజ్ఞలేని పూర్ణాంకం రకం యొక్క ప్రైవేట్ వేరియబుల్ + uint256 private count = 0; + + // మన కౌంటర్‌ను పెంచే ఫంక్షన్ + function increment() public { + count += 1; + emit ValueChanged(count - 1, count); + } + + // కౌంట్ విలువను పొందడానికి గెట్టర్ + function getCount() public view returns (uint256) { + return count; + } + +} +``` + +గమనించండి: + +- **లైన్ 5**: మనం మన ఈవెంట్‌ను మరియు అది ఏమి కలిగి ఉందో, అంటే పాత విలువ మరియు కొత్త విలువను డిక్లేర్ చేస్తాము. + +- **లైన్ 13**: మనం మన కౌంట్ వేరియబుల్‌ను పెంచినప్పుడు, మనం ఈవెంట్‌ను విడుదల చేస్తాము. + +మనం ఇప్పుడు కాంట్రాక్ట్‌ను డిప్లాయ్ చేసి, `increment` ఫంక్షన్‌ను కాల్ చేస్తే, `logs` అనే పేరుగల అర్రేలో కొత్త లావాదేవీపై మీరు క్లిక్ చేసినప్పుడు Remix దానిని ఆటోమేటిక్‌గా ప్రదర్శిస్తుందని మనం చూస్తాము. + +![Remix స్క్రీన్‌షాట్](./remix-screenshot.png) + +మీ స్మార్ట్ కాంట్రాక్ట్‌లను డీబగ్గింగ్ చేయడానికి లాగ్‌లు చాలా ఉపయోగకరంగా ఉంటాయి, కానీ మీరు వివిధ వ్యక్తులు ఉపయోగించే అప్లికేషన్‌లను రూపొందించినప్పుడు మరియు మీ స్మార్ట్ కాంట్రాక్ట్ ఎలా ఉపయోగించబడుతుందో ట్రాక్ చేయడానికి మరియు అర్థం చేసుకోవడానికి విశ్లేషణలను సులభతరం చేయడానికి కూడా అవి ముఖ్యమైనవి. లావాదేవీల ద్వారా ఉత్పత్తి చేయబడిన లాగ్‌లు ప్రముఖ బ్లాక్ ఎక్స్‌ప్లోరర్‌లలో ప్రదర్శించబడతాయి మరియు మీరు వాటిని నిర్దిష్ట ఈవెంట్‌లను వినడానికి మరియు అవి జరిగినప్పుడు చర్య తీసుకోవడానికి ఆఫ్‌చైన్ స్క్రిప్ట్‌లను సృష్టించడానికి కూడా ఉపయోగించవచ్చు. diff --git a/public/content/translations/te/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md b/public/content/translations/te/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md new file mode 100644 index 00000000000..d1bd23649e1 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md @@ -0,0 +1,246 @@ +--- +title: "ఆఫ్‌లైన్ డేటా సమగ్రత కొరకు మెర్కిల్ ప్రూఫ్‌లు" +description: "ఎక్కువగా ఆఫ్‌చెయిన్‌లో నిల్వ చేయబడిన డేటా కోసం ఆన్‌చెయిన్‌లో డేటా సమగ్రతను నిర్ధారించడం" +author: Ori Pomerantz +tags: [ "స్టోరేజ్" ] +skill: advanced +lang: te +published: 2021-12-30 +--- + +## పరిచయం {#introduction} + +ఆదర్శప్రాయంగా మనం ప్రతిదాన్నీ ఇథీరియం నిల్వలో నిల్వ చేయాలనుకుంటున్నాం, ఇది వేలాది కంప్యూటర్‌లలో నిల్వ చేయబడి, అత్యంత అధిక లభ్యతను (డేటాను సెన్సార్ చేయలేరు) మరియు సమగ్రతను (డేటాను అనధికారిక పద్ధతిలో సవరించలేరు) కలిగి ఉంది, కానీ ఒక 32-బైట్ పదాన్ని నిల్వ చేయడానికి సాధారణంగా 20,000 గ్యాస్ ఖర్చు అవుతుంది. నేను ఇది వ్రాస్తున్నప్పుడు, ఆ ఖర్చు $6.60కి సమానం. ఒక బైట్‌కు 21 సెంట్లతో ఇది అనేక ఉపయోగాలకు చాలా ఖరీదైనది. + +ఈ సమస్యను పరిష్కరించడానికి ఇథీరియం పర్యావరణ వ్యవస్థ వికేంద్రీకృత పద్ధతిలో డేటాను నిల్వ చేయడానికి [అనేక ప్రత్యామ్నాయ మార్గాలను](/developers/docs/storage/) అభివృద్ధి చేసింది. సాధారణంగా అవి లభ్యత మరియు ధర మధ్య రాజీని కలిగి ఉంటాయి. అయితే, సమగ్రత సాధారణంగా హామీ ఇవ్వబడుతుంది. + +ఈ వ్యాసంలో మీరు డేటాను బ్లాక్‌చెయిన్‌లో నిల్వ చేయకుండా డేటా సమగ్రతను ఎలా నిర్ధారించుకోవాలో [మెర్కిల్ ప్రూఫ్స్](https://computersciencewiki.org/index.php/Merkle_proof) ఉపయోగించి నేర్చుకుంటారు. + +## ఇది ఎలా పనిచేస్తుంది? {#how-does-it-work} + +సిద్ధాంతపరంగా మనం డేటా యొక్క హాష్‌ను ఆన్‌చెయిన్‌లో నిల్వ చేసి, అవసరమైన లావాదేవీలలో మొత్తం డేటాను పంపవచ్చు. అయితే, ఇది ఇప్పటికీ చాలా ఖరీదైనది. ఒక లావాదేవీకి ఒక బైట్ డేటాకు సుమారు 16 గ్యాస్ ఖర్చు అవుతుంది, ప్రస్తుతం అది సుమారు అర సెంట్, లేదా ఒక కిలోబైట్‌కు సుమారు $5. మెగాబైట్‌కు $5000 వద్ద, డేటాను హాష్ చేసే అదనపు ఖర్చు లేకుండా కూడా ఇది అనేక ఉపయోగాలకు చాలా ఖరీదైనది. + +పరిష్కారం ఏమిటంటే, డేటా యొక్క వివిధ ఉపసమితులను పదేపదే హాష్ చేయడం, కాబట్టి మీరు పంపాల్సిన అవసరం లేని డేటా కోసం మీరు కేవలం ఒక హాష్‌ను పంపవచ్చు. మీరు దీన్ని ఒక మెర్కిల్ ట్రీ ఉపయోగించి చేస్తారు, ఇది ఒక ట్రీ డేటా నిర్మాణం, ఇక్కడ ప్రతి నోడ్ దాని క్రింద ఉన్న నోడ్‌ల యొక్క హాష్: + +![మెర్కిల్ ట్రీ](tree.png) + +రూట్ హాష్ మాత్రమే ఆన్‌చెయిన్‌లో నిల్వ చేయవలసిన భాగం. ఒక నిర్దిష్ట విలువను నిరూపించడానికి, రూట్‌ను పొందడానికి దానితో కలపాల్సిన అన్ని హాష్‌లను మీరు అందిస్తారు. ఉదాహరణకు, `C`ని నిరూపించడానికి మీరు `D`, `H(A-B)`, మరియు `H(E-H)`లను అందిస్తారు. + +![C విలువ యొక్క రుజువు](proof-c.png) + +## అమలు {#implementation} + +[నమూనా కోడ్ ఇక్కడ అందించబడింది](https://github.com/qbzzt/merkle-proofs-for-offline-data-integrity). + +### ఆఫ్‌చెయిన్ కోడ్ {#offchain-code} + +ఈ వ్యాసంలో మనం ఆఫ్‌చెయిన్ గణనల కోసం జావాస్క్రిప్ట్‌ను ఉపయోగిస్తాము. చాలా వికేంద్రీకృత అప్లికేషన్‌లు వాటి ఆఫ్‌చెయిన్ భాగాన్ని జావాస్క్రిప్ట్‌లో కలిగి ఉంటాయి. + +#### మెర్కిల్ రూట్‌ను సృష్టించడం {#creating-the-merkle-root} + +మొదట మనం మెర్కిల్ రూట్‌ను చైన్‌కు అందించాలి. + +```javascript +const ethers = require("ethers") +``` + +[మేము ఈథర్స్ ప్యాకేజీ నుండి హాష్ ఫంక్షన్‌ను ఉపయోగిస్తాము](https://docs.ethers.io/v5/api/utils/hashing/#utils-keccak256). + +```javascript +// మనం సమగ్రతను ధృవీకరించాల్సిన ముడి డేటా. మొదటి రెండు బైట్‌లు +// ఒక వినియోగదారు ఐడెంటిఫైయర్, మరియు చివరి రెండు బైట్‌లు ప్రస్తుతం +// వినియోగదారు సొంతం చేసుకున్న టోకెన్‌ల మొత్తం. +const dataArray = [ + 0x0bad0010, 0x60a70020, 0xbeef0030, 0xdead0040, 0xca110050, 0x0e660060, + 0xface0070, 0xbad00080, 0x060d0091, +] +``` + +ఉదాహరణకు, JSON ఉపయోగించడం కంటే ప్రతి ఎంట్రీని ఒకే 256-బిట్ పూర్ణాంకంలోకి ఎన్‌కోడ్ చేయడం వల్ల తక్కువ చదవగలిగే కోడ్ వస్తుంది. అయితే, దీని అర్థం కాంట్రాక్ట్‌లో డేటాను తిరిగి పొందడానికి చాలా తక్కువ ప్రాసెసింగ్, కాబట్టి చాలా తక్కువ గ్యాస్ ఖర్చులు. [మీరు ఆన్‌చెయిన్‌లో JSON చదవవచ్చు](https://github.com/chrisdotn/jsmnSol), వీలైతే అది ఒక చెడ్డ ఆలోచన. + +```javascript +// హాష్ విలువలు, BigIntsగా +const hashArray = dataArray +``` + +ఈ సందర్భంలో మన డేటా ప్రారంభంలో 256-బిట్ విలువలు, కాబట్టి ప్రాసెసింగ్ అవసరం లేదు. మనం స్ట్రింగ్‌ల వంటి మరింత సంక్లిష్టమైన డేటా నిర్మాణాన్ని ఉపయోగిస్తే, హాష్‌ల శ్రేణిని పొందడానికి ముందుగా డేటాను హాష్ చేశామని నిర్ధారించుకోవాలి. వినియోగదారులకు ఇతర వినియోగదారుల సమాచారం తెలిసినా మేము పట్టించుకోము అనే కారణం కూడా ఇది అని గమనించండి. లేకపోతే మేము హాష్ చేయవలసి వచ్చేది, తద్వారా వినియోగదారు 1కి వినియోగదారు 0 విలువ తెలియదు, వినియోగదారు 2కి వినియోగదారు 3 విలువ తెలియదు, మొదలైనవి. + +```javascript +// హాష్ ఫంక్షన్ ఆశించే స్ట్రింగ్ మరియు మనం అన్ని చోట్లా ఉపయోగించే +// BigInt మధ్య మార్చండి. +const hash = (x) => + BigInt(ethers.utils.keccak256("0x" + x.toString(16).padStart(64, 0))) +``` + +ఈథర్స్ హాష్ ఫంక్షన్ `0x60A7` వంటి హెక్సాడెసిమల్ సంఖ్యతో కూడిన జావాస్క్రిప్ట్ స్ట్రింగ్‌ను పొందాలని ఆశిస్తుంది మరియు అదే నిర్మాణంతో మరో స్ట్రింగ్‌తో ప్రతిస్పందిస్తుంది. అయితే, మిగిలిన కోడ్ కోసం `BigInt`ని ఉపయోగించడం సులభం, కాబట్టి మేము హెక్సాడెసిమల్ స్ట్రింగ్‌కి మరియు మళ్లీ వెనక్కి మారుస్తాము. + +```javascript +// ఒక జత యొక్క సౌష్టవ హాష్, కాబట్టి క్రమం తారుమారైనా మేము పట్టించుకోము. +const pairHash = (a, b) => hash(hash(a) ^ hash(b)) +``` + +ఈ ఫంక్షన్ సౌష్టవమైనది (ఒక [xor](https://en.wikipedia.org/wiki/Exclusive_or) బి యొక్క హాష్). దీని అర్థం, మనం మెర్కిల్ ప్రూఫ్‌ను తనిఖీ చేసినప్పుడు, ప్రూఫ్ నుండి వచ్చిన విలువను లెక్కించిన విలువకు ముందు లేదా తర్వాత ఉంచాలా అనే దాని గురించి మనం ఆందోళన చెందాల్సిన అవసరం లేదు. మెర్కిల్ ప్రూఫ్ తనిఖీ ఆన్‌చెయిన్‌లో జరుగుతుంది, కాబట్టి అక్కడ మనం ఎంత తక్కువ చేయవలసి వస్తే అంత మంచిది. + +హెచ్చరిక: +క్రిప్టోగ్రఫీ కనిపించే దానికంటే కష్టం. +ఈ వ్యాసం యొక్క ప్రారంభ వెర్షన్‌లో హాష్ ఫంక్షన్ `hash(a^b)` ఉంది. +అది ఒక **చెడ్డ** ఆలోచన, ఎందుకంటే మీరు `a` మరియు `b` యొక్క చట్టబద్ధమైన విలువలను తెలిస్తే, మీరు ఏ కావలసిన `a'` విలువనైనా నిరూపించడానికి `b' = a^b^a'` ని ఉపయోగించగలరని దాని అర్థం. +ఈ ఫంక్షన్‌తో మీరు `b'`ను లెక్కించాలి, తద్వారా `hash(a') ^ hash(b')` ఒక తెలిసిన విలువకు (రూట్‌కు వెళ్లే మార్గంలో తదుపరి శాఖ) సమానంగా ఉంటుంది, ఇది చాలా కష్టం. + +```javascript +// ఒక నిర్దిష్ట శాఖ ఖాళీగా ఉందని సూచించడానికి విలువ, +// ఒక విలువ లేదు +const empty = 0n +``` + +విలువల సంఖ్య రెండు యొక్క పూర్ణాంక ఘాతం కానప్పుడు మనం ఖాళీ శాఖలను నిర్వహించాలి. ఈ ప్రోగ్రామ్ చేసే విధానం ఏమిటంటే, సున్నాను ప్లేస్‌హోల్డర్‌గా ఉంచడం. + +![కొమ్మలు లేని మెర్కిల్ ట్రీ](merkle-empty-hash.png) + +```javascript +// క్రమంలో ప్రతి జత యొక్క హాష్‌ను తీసుకోవడం ద్వారా హాష్ శ్రేణి యొక్క ట్రీ నుండి ఒక స్థాయి పైకి లెక్కించండి +// +const oneLevelUp = (inputArray) => { + var result = [] + var inp = [...inputArray] // ఇన్‌పుట్‌ను ఓవర్‌రైట్ చేయకుండా ఉండటానికి // అవసరమైతే ఖాళీ విలువను జోడించండి (మనకు అన్ని ఆకులు // జతగా ఉండాలి) + + if (inp.length % 2 === 1) inp.push(empty) + + for (var i = 0; i < inp.length; i += 2) + result.push(pairHash(inp[i], inp[i + 1])) + + return result +} // oneLevelUp +``` + +ఈ ఫంక్షన్ ప్రస్తుత లేయర్‌లోని విలువల జతలను హాష్ చేయడం ద్వారా మెర్కిల్ ట్రీలో ఒక స్థాయి "ఎక్కుతుంది". ఇది అత్యంత సమర్థవంతమైన అమలు కాదని గమనించండి, మేము ఇన్‌పుట్‌ను కాపీ చేయకుండా మరియు లూప్‌లో సముచితమైనప్పుడు `hashEmpty`ని జోడించి ఉండవచ్చు, కానీ ఈ కోడ్ చదవడానికి వీలుగా ఆప్టిమైజ్ చేయబడింది. + +```javascript +const getMerkleRoot = (inputArray) => { + var result + + result = [...inputArray] // ఒకే ఒక విలువ మిగిలే వరకు ట్రీని ఎక్కండి, అదే // రూట్. // // ఒక లేయర్‌లో బేసి సంఖ్యలో ఎంట్రీలు ఉంటే // వన్‌లెవల్‌అప్‌లోని కోడ్ ఒక ఖాళీ విలువను జోడిస్తుంది, కాబట్టి మనకు, ఉదాహరణకు, // 10 ఆకులు ఉంటే, రెండవ లేయర్‌లో 5 శాఖలు, మూడవ లేయర్‌లో 3 // శాఖలు, నాల్గవ దానిలో 2 మరియు రూట్ ఐదవది + + while (result.length > 1) result = oneLevelUp(result) + + return result[0] +} +``` + +రూట్‌ను పొందడానికి, ఒకే ఒక విలువ మిగిలి ఉండే వరకు ఎక్కండి. + +#### మెర్కిల్ ప్రూఫ్‌ను సృష్టించడం {#creating-a-merkle-proof} + +మెర్కిల్ ప్రూఫ్ అనేది మెర్కిల్ రూట్‌ను తిరిగి పొందడానికి నిరూపించబడుతున్న విలువతో పాటు కలిసి హాష్ చేయవలసిన విలువలు. నిరూపించాల్సిన విలువ తరచుగా ఇతర డేటా నుండి అందుబాటులో ఉంటుంది, కాబట్టి నేను దానిని కోడ్‌లో భాగంగా కాకుండా విడిగా అందించడానికి ఇష్టపడతాను. + +```javascript +// ఒక మెర్కిల్ ప్రూఫ్, హాష్ చేయడానికి ఎంట్రీల +// జాబితా విలువను కలిగి ఉంటుంది. మనం ఒక సౌష్టవ హాష్ ఫంక్షన్‌ను ఉపయోగిస్తున్నందున, ప్రూఫ్‌ను ధృవీకరించడానికి మనకు +// ఐటెమ్ యొక్క స్థానం అవసరం లేదు, దాన్ని సృష్టించడానికి మాత్రమే అవసరం +const getMerkleProof = (inputArray, n) => { +    var result = [], currentLayer = [...inputArray], currentN = n + +    // మనం పైకి చేరే వరకు +    while (currentLayer.length > 1) { +        // బేసి పొడవు లేయర్లు లేవు +        if (currentLayer.length % 2) +            currentLayer.push(empty) + +        result.push(currentN % 2 +               // currentN బేసి అయితే, దాని ముందున్న విలువతో ప్రూఫ్‌కు జోడించండి +            ? currentLayer[currentN-1] +               // అది సరి అయితే, దాని తర్వాత విలువను జోడించండి +            : currentLayer[currentN+1]) + +``` + +మేము `(v[0],v[1])`, `(v[2],v[3])`, మొదలైన వాటిని హాష్ చేస్తాము. కాబట్టి సరి విలువల కోసం మనకు తదుపరిది అవసరం, బేసి విలువల కోసం మునుపటిది అవసరం. + +```javascript +        // తదుపరి లేయర్‌కు వెళ్లండి +        currentN = Math.floor(currentN/2) +        currentLayer = oneLevelUp(currentLayer) +    }   // currentLayer.length > 1 అయితే + +    return result +}   // getMerkleProof +``` + +### ఆన్‌చెయిన్ కోడ్ {#onchain-code} + +చివరగా మనకు ప్రూఫ్‌ను తనిఖీ చేసే కోడ్ ఉంది. ఆన్‌చెయిన్ కోడ్ [Solidity](https://docs.soliditylang.org/en/v0.8.11/)లో వ్రాయబడింది. ఇక్కడ ఆప్టిమైజేషన్ చాలా ముఖ్యం ఎందుకంటే గ్యాస్ చాలా ఖరీదైనది. + +```solidity +//SPDX-License-Identifier: Public Domain +pragma solidity ^0.8.0; + +import "hardhat/console.sol"; +``` + +నేను దీనిని [హార్డ్‌హ్యాట్ డెవలప్‌మెంట్ ఎన్విరాన్‌మెంట్](https://hardhat.org/)ని ఉపయోగించి వ్రాశాను, ఇది అభివృద్ధి చేస్తున్నప్పుడు [Solidity నుండి కన్సోల్ అవుట్‌పుట్](https://hardhat.org/docs/cookbook/debug-logs)ను కలిగి ఉండటానికి అనుమతిస్తుంది. + +```solidity + +contract MerkleProof { +    uint merkleRoot; + +    function getRoot() public view returns (uint) { +      return merkleRoot; +    } + +    // అత్యంత అసురక్షితం, ప్రొడక్షన్ కోడ్‌లో దీనికి యాక్సెస్ +    // ఈ ఫంక్షన్ ఖచ్చితంగా పరిమితం చేయబడాలి, బహుశా ఒక +    // యజమానికి +    function setRoot(uint _merkleRoot) external { +      merkleRoot = _merkleRoot; +    }   // setRoot +``` + +మెర్కిల్ రూట్ కోసం సెట్ మరియు గెట్ ఫంక్షన్‌లు. ప్రొడక్షన్ సిస్టమ్‌లో ప్రతి ఒక్కరినీ మెర్కిల్ రూట్‌ను అప్‌డేట్ చేయడానికి అనుమతించడం _అత్యంత చెడ్డ ఆలోచన_. నమూనా కోడ్ కోసం సరళత కొరకు నేను ఇక్కడ చేస్తున్నాను. **డేటా సమగ్రత నిజంగా ముఖ్యమైన సిస్టమ్‌లో దీన్ని చేయవద్దు**. + +```solidity +    function hash(uint _a) internal pure returns(uint) { +      return uint(keccak256(abi.encode(_a))); +    } + +    function pairHash(uint _a, uint _b) internal pure returns(uint) { +      return hash(hash(_a) ^ hash(_b)); +    } +``` + +ఈ ఫంక్షన్ ఒక జత హాష్‌ను ఉత్పత్తి చేస్తుంది. ఇది `hash` మరియు `pairHash` కోసం జావాస్క్రిప్ట్ కోడ్ యొక్క సాలిడిటీ అనువాదం మాత్రమే. + +**గమనిక:** ఇది చదవడానికి వీలుగా ఆప్టిమైజేషన్ యొక్క మరో సందర్భం. [ఫంక్షన్ నిర్వచనం](https://www.tutorialspoint.com/solidity/solidity_cryptographic_functions.htm) ఆధారంగా, డేటాను [`bytes32`](https://docs.soliditylang.org/en/v0.5.3/types.html#fixed-size-byte-arrays) విలువగా నిల్వ చేయడం మరియు మార్పిడులను నివారించడం సాధ్యం కావచ్చు. + +```solidity +    // ఒక మెర్కిల్ ప్రూఫ్‌ను ధృవీకరించండి +    function verifyProof(uint _value, uint[] calldata _proof) +        public view returns (bool) { +      uint temp = _value; +      uint i; + +      for(i=0; i<_proof.length; i++) { +        temp = pairHash(temp, _proof[i]); +      } + +      return temp == merkleRoot; +    } + +}  // MarkleProof +``` + +గణిత సంజ్ఞామానంలో మెర్కిల్ ప్రూఫ్ ధృవీకరణ ఇలా కనిపిస్తుంది: `H(proof_n, H(proof_n-1, H(proof_n-2, ...` H(proof_1, H(proof_0, value))...)))`. ఈ కోడ్ దీనిని అమలు చేస్తుంది. + +## మెర్కిల్ ప్రూఫ్‌లు మరియు రోలప్‌లు కలవవు {#merkle-proofs-and-rollups} + +మెర్కిల్ ప్రూఫ్‌లు [రోలప్‌లతో](/developers/docs/scaling/#rollups) సరిగ్గా పనిచేయవు. కారణం ఏమిటంటే, రోలప్‌లు మొత్తం లావాదేవీల డేటాను L1లో వ్రాస్తాయి, కానీ L2లో ప్రాసెస్ చేస్తాయి. ఒక లావాదేవీతో మెర్కిల్ ప్రూఫ్‌ను పంపడానికి అయ్యే ఖర్చు సగటున ఒక లేయర్‌కు 638 గ్యాస్ (ప్రస్తుతం కాల్ డేటాలో ఒక బైట్ సున్నా కాకపోతే 16 గ్యాస్, మరియు సున్నా అయితే 4 ఖర్చు అవుతుంది). మనకు 1024 పదాల డేటా ఉంటే, ఒక మెర్కిల్ ప్రూఫ్‌కు పది లేయర్లు లేదా మొత్తం 6380 గ్యాస్ అవసరం. + +ఉదాహరణకు [ఆప్టిమిజం](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m)లో చూస్తే, L1 గ్యాస్ రాయడానికి సుమారు 100 gwei మరియు L2 గ్యాస్ 0.001 gwei ఖర్చు అవుతుంది (ఇది సాధారణ ధర, రద్దీతో ఇది పెరగవచ్చు). కాబట్టి ఒక L1 గ్యాస్ ఖర్చుతో మనం L2 ప్రాసెసింగ్‌పై లక్ష గ్యాస్ ఖర్చు చేయవచ్చు. మనం నిల్వను ఓవర్‌రైట్ చేయలేదని ఊహిస్తే, ఒక L1 గ్యాస్ ధరకు L2లోని నిల్వకు సుమారు ఐదు పదాలు వ్రాయగలమని దీని అర్థం. ఒకే మెర్కిల్ ప్రూఫ్ కోసం మనం మొత్తం 1024 పదాలను నిల్వకు వ్రాయవచ్చు (అవి లావాదేవీలో అందించబడకుండా, ప్రారంభంలో ఆన్‌చెయిన్‌లో లెక్కించబడతాయని ఊహిస్తే) మరియు ఇంకా చాలా గ్యాస్ మిగిలి ఉంటుంది. + +## ముగింపు {#conclusion} + +నిజ జీవితంలో మీరు మీ స్వంతంగా మెర్కిల్ ట్రీలను ఎప్పటికీ అమలు చేయకపోవచ్చు. మీరు ఉపయోగించగల బాగా తెలిసిన మరియు ఆడిట్ చేయబడిన లైబ్రరీలు ఉన్నాయి మరియు సాధారణంగా చెప్పాలంటే, క్రిప్టోగ్రాఫిక్ ప్రిమిటివ్‌లను మీ స్వంతంగా అమలు చేయకపోవడమే మంచిది. కానీ ఇప్పుడు మీరు మెర్కిల్ ప్రూఫ్‌లను బాగా అర్థం చేసుకున్నారని మరియు అవి ఎప్పుడు ఉపయోగించడం విలువైనవో నిర్ణయించుకోగలరని నేను ఆశిస్తున్నాను. + +మెర్కిల్ ప్రూఫ్‌లు _సమగ్రత_ను కాపాడతాయి, కానీ అవి _లభ్యత_ను కాపాడవు అని గమనించండి. డేటా నిల్వ యాక్సెస్‌ను నిరాకరించాలని నిర్ణయించుకుంటే మరియు మీరు వాటిని యాక్సెస్ చేయడానికి మెర్కిల్ ట్రీని నిర్మించలేకపోతే, మీ ఆస్తులను మరెవరూ తీసుకోలేరని తెలుసుకోవడం చిన్న ఓదార్పు. కాబట్టి మెర్కిల్ ట్రీలను IPFS వంటి వికేంద్రీకృత నిల్వతో ఉత్తమంగా ఉపయోగిస్తారు. + +[నా మరిన్ని పనుల కోసం ఇక్కడ చూడండి](https://cryptodocguy.pro/). diff --git a/public/content/translations/te/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md b/public/content/translations/te/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md new file mode 100644 index 00000000000..5c47ab00c57 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md @@ -0,0 +1,151 @@ +--- +title: "InfluxDB మరియు Grafanaతో Gethను పర్యవేక్షించడం" +description: "పనితీరును ట్రాక్ చేయడానికి మరియు సమస్యలను గుర్తించడానికి InfluxDB మరియు Grafanaను ఉపయోగించి మీ Geth నోడ్ కోసం పర్యవేక్షణను ఏర్పాటు చేసుకోండి." +author: "Mario Havel" +tags: [ "క్లయింట్లు", "నోడ్‌లు" ] +skill: intermediate +lang: te +published: 2021-01-13 +--- + +ఈ ట్యుటోరియల్ మీ Geth నోడ్ కోసం పర్యవేక్షణను ఏర్పాటు చేసుకోవడానికి మీకు సహాయపడుతుంది, తద్వారా మీరు దాని పనితీరును బాగా అర్థం చేసుకోగలరు మరియు సంభావ్య సమస్యలను గుర్తించగలరు. + +## అవసరాలు {#prerequisites} + +- మీరు ఇప్పటికే Geth యొక్క ఒక ఇన్‌స్టాన్స్‌ను రన్ చేస్తూ ఉండాలి. +- చాలా దశలు మరియు ఉదాహరణలు లైనక్స్ పర్యావరణం కోసం ఉన్నాయి, ప్రాథమిక టెర్మినల్ పరిజ్ఞానం సహాయకరంగా ఉంటుంది. +- Geth యొక్క మెట్రిక్స్ సూట్ గురించి ఈ వీడియో ఓవర్‌వ్యూను చూడండి: [Péter Szilágyi ద్వారా Ethereum ఇన్‌ఫ్రాస్ట్రక్చర్‌ను పర్యవేక్షించడం](https://www.youtube.com/watch?v=cOBab8IJMYI). + +## పర్యవేక్షణ స్టాక్ {#monitoring-stack} + +ఒక Ethereum క్లయింట్ చాలా డేటాను సేకరిస్తుంది, దీనిని ఒక కాలక్రమానుసార డేటాబేస్ రూపంలో చదవవచ్చు. పర్యవేక్షణను సులభతరం చేయడానికి, మీరు దీనిని డేటా విజువలైజేషన్ సాఫ్ట్‌వేర్‌లోకి ఫీడ్ చేయవచ్చు. అనేక ఎంపికలు అందుబాటులో ఉన్నాయి: + +- [ప్రోమేతియస్](https://prometheus.io/) (పుల్ మోడల్) +- [InfluxDB](https://www.influxdata.com/get-influxdb/) (పుష్ మోడల్) +- [టెలిగ్రాఫ్](https://www.influxdata.com/get-influxdb/) +- [గ్రాఫానా](https://www.grafana.com/) +- [డేటాడాగ్](https://www.datadoghq.com/) +- [క్రోనోగ్రాఫ్](https://www.influxdata.com/time-series-platform/chronograf/) + +InfluxDB మరియు Grafanaతో ముందే కాన్ఫిగర్ చేయబడిన [Geth Prometheus Exporter](https://github.com/hunterlong/gethexporter) అనే ఎంపిక కూడా ఉంది. + +ఈ ట్యుటోరియల్‌లో, ఒక డేటాబేస్ సృష్టించడానికి InfluxDBకి డేటాను పంపడానికి మరియు డేటా యొక్క గ్రాఫ్ విజువలైజేషన్ సృష్టించడానికి Grafanaని ఉపయోగించేలా మీ Geth క్లయింట్‌ను మేము సెటప్ చేస్తాము. దీనిని మాన్యువల్‌గా చేయడం వల్ల మీరు ప్రక్రియను బాగా అర్థం చేసుకోవడానికి, దానిని మార్చడానికి మరియు విభిన్న పర్యావరణాలలో డిప్లాయ్ చేయడానికి సహాయపడుతుంది. + +## InfluxDBని సెటప్ చేయడం {#setting-up-influxdb} + +మొదట, InfluxDBని డౌన్‌లోడ్ చేసి, ఇన్‌స్టాల్ చేద్దాం. వివిధ డౌన్‌లోడ్ ఎంపికలను [Influxdata విడుదల పేజీ](https://portal.influxdata.com/downloads/)లో చూడవచ్చు. మీ పర్యావరణానికి సరిపోయేదాన్ని ఎంచుకోండి. +మీరు దీనిని ఒక [రిపోజిటరీ](https://repos.influxdata.com/) నుండి కూడా ఇన్‌స్టాల్ చేయవచ్చు. ఉదాహరణకు డెబియన్ ఆధారిత పంపిణీలో: + +``` +curl -tlsv1.3 --proto =https -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add +source /etc/lsb-release +echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list +sudo apt update +sudo apt install influxdb -y +sudo systemctl enable influxdb +sudo systemctl start influxdb +sudo apt install influxdb-client +``` + +InfluxDBని విజయవంతంగా ఇన్‌స్టాల్ చేసిన తర్వాత, అది బ్యాక్‌గ్రౌండ్‌లో నడుస్తోందని నిర్ధారించుకోండి. డిఫాల్ట్‌గా, ఇది `localhost:8086` వద్ద అందుబాటులో ఉంటుంది. +`influx` క్లయింట్‌ను ఉపయోగించే ముందు, మీరు అడ్మిన్ అధికారాలతో కొత్త యూజర్‌ను సృష్టించాలి. ఈ యూజర్ ఉన్నత స్థాయి నిర్వహణ, డేటాబేస్‌లు మరియు యూజర్‌లను సృష్టించడం కోసం ఉపయోగపడుతుంది. + +``` +curl -XPOST "http://localhost:8086/query" --data-urlencode "q=CREATE USER username WITH PASSWORD 'password' WITH ALL PRIVILEGES" +``` + +ఇప్పుడు మీరు ఈ యూజర్‌తో [InfluxDB షెల్](https://docs.influxdata.com/influxdb/v1.8/tools/shell/)లోకి ప్రవేశించడానికి influx క్లయింట్‌ను ఉపయోగించవచ్చు. + +``` +influx -username 'username' -password 'password' +``` + +దాని షెల్‌లో InfluxDBతో నేరుగా కమ్యూనికేట్ చేస్తూ, మీరు geth మెట్రిక్స్ కోసం డేటాబేస్ మరియు యూజర్‌ను సృష్టించవచ్చు. + +``` +create database geth +create user geth with password choosepassword +``` + +సృష్టించిన ఎంట్రీలను దీనితో ధృవీకరించండి: + +``` +show databases +show users +``` + +InfluxDB షెల్ నుండి నిష్క్రమించండి. + +``` +exit +``` + +Geth నుండి మెట్రిక్స్‌ను నిల్వ చేయడానికి InfluxDB నడుస్తోంది మరియు కాన్ఫిగర్ చేయబడింది. + +## Gethను సిద్ధం చేయడం {#preparing-geth} + +డేటాబేస్‌ను సెటప్ చేసిన తర్వాత, మనం Gethలో మెట్రిక్స్ సేకరణను ఎనేబుల్ చేయాలి. `geth --help`లో `METRICS AND STATS OPTIONS`కి శ్రద్ధ వహించండి. అక్కడ అనేక ఎంపికలను కనుగొనవచ్చు, ఈ సందర్భంలో Geth InfluxDBకి డేటాను పంపాలని మేము కోరుకుంటున్నాము. +ప్రాథమిక సెటప్ InfluxDB అందుబాటులో ఉండే ఎండ్‌పాయింట్ మరియు డేటాబేస్ కోసం ప్రామాణీకరణను నిర్దేశిస్తుంది. + +``` +geth --metrics --metrics.influxdb --metrics.influxdb.endpoint "http://0.0.0.0:8086" --metrics.influxdb.username "geth" --metrics.influxdb.password "chosenpassword" +``` + +ఈ ఫ్లాగ్‌లను క్లయింట్‌ను ప్రారంభించే ఆదేశానికి జతచేయవచ్చు లేదా కాన్ఫిగరేషన్ ఫైల్‌లో సేవ్ చేయవచ్చు. + +Geth విజయవంతంగా డేటాను పంపుతోందని మీరు ధృవీకరించవచ్చు, ఉదాహరణకు డేటాబేస్‌లోని మెట్రిక్స్‌ను జాబితా చేయడం ద్వారా. InfluxDB షెల్‌లో: + +``` +use geth +show measurements +``` + +## Grafanaను సెటప్ చేయడం {#setting-up-grafana} + +తదుపరి దశ Grafanaను ఇన్‌స్టాల్ చేయడం, ఇది డేటాను గ్రాఫికల్‌గా వివరిస్తుంది. మీ పర్యావరణం కోసం Grafana డాక్యుమెంటేషన్‌లో ఇన్‌స్టాలేషన్ ప్రక్రియను అనుసరించండి. మీరు మరోలా కోరుకోకపోతే OSS వెర్షన్‌ను ఇన్‌స్టాల్ చేసినట్లు నిర్ధారించుకోండి. +రిపోజిటరీని ఉపయోగించి డెబియన్ పంపిణీల కోసం ఉదాహరణ ఇన్‌స్టాలేషన్ దశలు: + +``` +curl -tlsv1.3 --proto =https -sL https://packages.grafana.com/gpg.key | sudo apt-key add - +echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list +sudo apt update +sudo apt install grafana +sudo systemctl enable grafana-server +sudo systemctl start grafana-server +``` + +మీరు Grafanaను నడుపుతున్నప్పుడు, ఇది `localhost:3000` వద్ద అందుబాటులో ఉండాలి. +ఈ మార్గాన్ని యాక్సెస్ చేయడానికి మీకు నచ్చిన బ్రౌజర్‌ను ఉపయోగించండి, ఆపై డిఫాల్ట్ ఆధారాలతో లాగిన్ చేయండి (యూజర్: `admin` మరియు పాస్‌వర్డ్: `admin`). ప్రాంప్ట్ చేసినప్పుడు, డిఫాల్ట్ పాస్‌వర్డ్‌ను మార్చి సేవ్ చేయండి. + +![](./grafana1.png) + +మీరు Grafana హోమ్ పేజీకి మళ్లించబడతారు. మొదట, మీ సోర్స్ డేటాను సెటప్ చేయండి. ఎడమ బార్‌లోని కాన్ఫిగరేషన్ ఐకాన్‌పై క్లిక్ చేసి, "డేటా సోర్సెస్"ని ఎంచుకోండి. + +![](./grafana2.png) + +ఇంకా ఏ డేటా సోర్సెస్ సృష్టించబడలేదు, ఒకదాన్ని నిర్వచించడానికి "యాడ్ డేటా సోర్స్" పై క్లిక్ చేయండి. + +![](./grafana3.png) + +ఈ సెటప్ కోసం, "InfluxDB"ని ఎంచుకుని కొనసాగండి. + +![](./grafana4.png) + +మీరు ఒకే మెషీన్‌లో టూల్స్‌ను నడుపుతున్నట్లయితే డేటా సోర్స్ కాన్ఫిగరేషన్ చాలా సూటిగా ఉంటుంది. మీరు InfluxDB చిరునామా మరియు డేటాబేస్‌ను యాక్సెస్ చేయడానికి వివరాలను సెట్ చేయాలి. క్రింది చిత్రాన్ని చూడండి. + +![](./grafana5.png) + +అన్నీ పూర్తయి, InfluxDB అందుబాటులో ఉంటే, "సేవ్ అండ్ టెస్ట్" పై క్లిక్ చేసి, నిర్ధారణ పాప్ అప్ అయ్యే వరకు వేచి ఉండండి. + +![](./grafana6.png) + +InfluxDB నుండి డేటాను చదవడానికి Grafana ఇప్పుడు సెటప్ చేయబడింది. ఇప్పుడు మీరు ఒక డాష్‌బోర్డ్‌ను సృష్టించాలి, ఇది దానిని వివరిస్తుంది మరియు ప్రదర్శిస్తుంది. డాష్‌బోర్డ్‌ల లక్షణాలు JSON ఫైల్స్‌లో ఎన్‌కోడ్ చేయబడతాయి, వీటిని ఎవరైనా సృష్టించవచ్చు మరియు సులభంగా దిగుమతి చేసుకోవచ్చు. ఎడమ బార్‌లో, "క్రియేట్ అండ్ ఇంపోర్ట్" పై క్లిక్ చేయండి. + +![](./grafana7.png) + +Geth పర్యవేక్షణ డాష్‌బోర్డ్ కోసం, [ఈ డాష్‌బోర్డ్](https://grafana.com/grafana/dashboards/13877/) యొక్క IDని కాపీ చేసి, దానిని Grafanaలోని "ఇంపోర్ట్ పేజీ"లో అతికించండి. డాష్‌బోర్డ్‌ను సేవ్ చేసిన తర్వాత, ఇది ఇలా కనిపించాలి: + +![](./grafana8.png) + +మీరు మీ డాష్‌బోర్డ్‌లను సవరించవచ్చు. ప్రతి ప్యానెల్‌ను సవరించవచ్చు, తరలించవచ్చు, తీసివేయవచ్చు లేదా జోడించవచ్చు. మీరు మీ కాన్ఫిగరేషన్‌లను మార్చవచ్చు. అది మీ ఇష్టం! డాష్‌బోర్డ్‌లు ఎలా పనిచేస్తాయో మరింత తెలుసుకోవడానికి, [Grafana డాక్యుమెంటేషన్](https://grafana.com/docs/grafana/latest/dashboards/)ను చూడండి. +మీరు [అలర్టింగ్](https://grafana.com/docs/grafana/latest/alerting/)పై కూడా ఆసక్తి కలిగి ఉండవచ్చు. మెట్రిక్స్ నిర్దిష్ట విలువలను చేరుకున్నప్పుడు అలర్ట్ నోటిఫికేషన్‌లను సెటప్ చేయడానికి ఇది మిమ్మల్ని అనుమతిస్తుంది. వివిధ కమ్యూనికేషన్ ఛానెల్‌లకు మద్దతు ఉంది. diff --git a/public/content/translations/te/developers/tutorials/nft-minter/index.md b/public/content/translations/te/developers/tutorials/nft-minter/index.md new file mode 100644 index 00000000000..c2475d78266 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/nft-minter/index.md @@ -0,0 +1,874 @@ +--- +title: "NFT మింటర్ ట్యుటోరియల్" +description: "ఈ ట్యుటోరియల్‌లో, మీరు ఒక NFT మింటర్‌ను నిర్మిస్తారు మరియు మీ స్మార్ట్ కాంట్రాక్ట్‌ను MetaMask మరియు Web3 సాధనాలను ఉపయోగించి ఒక React ఫ్రంటెండ్‌కు కనెక్ట్ చేయడం ద్వారా పూర్తి స్టాక్ డాప్‌ను ఎలా సృష్టించాలో నేర్చుకుంటారు." +author: "smudgil" +tags: + [ + "దృఢత్వం", + "నాన్-ఫంగబుల్ టోకెన్", + "alchemy", + "స్మార్ట్ కాంట్రాక్టులు", + "frontend", + "Pinata" + ] +skill: intermediate +lang: te +published: 2021-10-06 +--- + +Web2 నేపథ్యం నుండి వచ్చే డెవలపర్‌లకు ఎదురయ్యే అతిపెద్ద సవాళ్లలో ఒకటి, మీ స్మార్ట్ కాంట్రాక్ట్‌ను ఫ్రంటెండ్ ప్రాజెక్ట్‌కు ఎలా కనెక్ట్ చేయాలో మరియు దానితో ఎలా సంభాషించాలో గుర్తించడం. + +ఒక NFT మింటర్‌ను నిర్మించడం ద్వారా — మీ డిజిటల్ ఆస్తికి ఒక లింక్, ఒక శీర్షిక మరియు ఒక వివరణను మీరు ఇన్‌పుట్ చేయగల ఒక సులభమైన UI — మీరు ఎలాగో నేర్చుకుంటారు: + +- మీ ఫ్రంటెండ్ ప్రాజెక్ట్ ద్వారా MetaMaskకు కనెక్ట్ అవ్వండి +- మీ ఫ్రంటెండ్ నుండి స్మార్ట్ కాంట్రాక్ట్ పద్ధతులను కాల్ చేయండి +- MetaMask ఉపయోగించి లావాదేవీలపై సంతకం చేయండి + +ఈ ట్యుటోరియల్‌లో, మేము మా ఫ్రంటెండ్ ఫ్రేమ్‌వర్క్‌గా [React](https://react.dev/) ను ఉపయోగిస్తాము. ఈ ట్యుటోరియల్ ప్రధానంగా Web3 అభివృద్ధిపై దృష్టి సారించినందున, మేము React ప్రాథమిక అంశాలను విడమరచి చెప్పడానికి ఎక్కువ సమయం వెచ్చించము. బదులుగా, మేము మా ప్రాజెక్ట్‌కు కార్యాచరణను తీసుకురావడంపై దృష్టి పెడతాము. + +ఒక ముందస్తు అవసరంగా, మీకు React గురించి ప్రాథమిక స్థాయి అవగాహన ఉండాలి—కాంపోనెంట్లు, ప్రాప్స్, useState/useEffect, మరియు ప్రాథమిక ఫంక్షన్ కాలింగ్ ఎలా పనిచేస్తాయో తెలిసి ఉండాలి. మీరు ఇంతకు ముందు ఆ పదాలలో దేనినీ విని ఉండకపోతే, మీరు ఈ [React ట్యుటోరియల్‌కు పరిచయం](https://react.dev/learn/tutorial-tic-tac-toe) ను చూడాలనుకోవచ్చు. దృశ్య అభ్యాసకుల కోసం, మేము Net Ninja ద్వారా రూపొందించబడిన ఈ అద్భుతమైన [పూర్తి ఆధునిక React ట్యుటోరియల్](https://www.youtube.com/playlist?list=PL4cUxeGkcC9gZD-Tvwfod2gaISzfRiP9d) వీడియో సిరీస్‌ను గట్టిగా సిఫార్సు చేస్తున్నాము. + +మరియు మీరు ఇప్పటికే చేయకపోతే, ఈ ట్యుటోరియల్‌ను పూర్తి చేయడానికి అలాగే బ్లాక్‌చైన్‌లో ఏదైనా నిర్మించడానికి మీకు ఖచ్చితంగా ఒక Alchemy ఖాతా అవసరం. [ఇక్కడ](https://alchemy.com/) ఒక ఉచిత ఖాతా కోసం సైన్ అప్ చేయండి. + +ఇంకా ఆలస్యం చేయకుండా, ప్రారంభిద్దాం! + +## NFTలను తయారు చేయడం 101 {#making-nfts-101} + +మేము ఏదైనా కోడ్‌ను చూడటం ప్రారంభించడానికి ముందు, ఒక NFTని తయారు చేయడం ఎలా పనిచేస్తుందో అర్థం చేసుకోవడం ముఖ్యం. ఇందులో రెండు దశలు ఉంటాయి: + +### Ethereum బ్లాక్‌చైన్‌పై ఒక NFT స్మార్ట్ కాంట్రాక్ట్‌ను ప్రచురించండి {#publish-nft} + +రెండు NFT స్మార్ట్ కాంట్రాక్ట్ ప్రమాణాల మధ్య అతిపెద్ద వ్యత్యాసం ఏమిటంటే, ERC-1155 ఒక మల్టీ-టోకెన్ ప్రమాణం మరియు బ్యాచ్ కార్యాచరణను కలిగి ఉంటుంది, అయితే ERC-721 ఒక సింగిల్-టోకెన్ ప్రమాణం మరియు అందువల్ల ఒకేసారి ఒక టోకెన్‌ను మాత్రమే బదిలీ చేయడానికి మద్దతు ఇస్తుంది. + +### మింటింగ్ ఫంక్షన్‌ను కాల్ చేయండి {#minting-function} + +సాధారణంగా, ఈ మింటింగ్ ఫంక్షన్‌కు మీరు రెండు వేరియబుల్స్‌ను పారామీటర్‌లుగా పాస్ చేయవలసి ఉంటుంది, మొదట `recipient`, ఇది మీ తాజాగా ముద్రించబడిన NFTని స్వీకరించే చిరునామాను నిర్దేశిస్తుంది, మరియు రెండవది NFT యొక్క `tokenURI`, ఇది NFT యొక్క మెటాడేటాను వివరించే ఒక JSON డాక్యుమెంట్‌కు పరిష్కరించే ఒక స్ట్రింగ్. + +ఒక NFT యొక్క మెటాడేటా నిజంగా దానికి జీవం పోస్తుంది, దానిని ఒక పేరు, వివరణ, చిత్రం (లేదా విభిన్న డిజిటల్ ఆస్తి), మరియు ఇతర గుణాలను కలిగి ఉండటానికి అనుమతిస్తుంది. ఇక్కడ [ఒక tokenURI ఉదాహరణ](https://gateway.pinata.cloud/ipfs/QmSvBcb4tjdFpajGJhbFAWeK3JAxCdNQLQtr6ZdiSi42V2) ఉంది, ఇందులో ఒక NFT యొక్క మెటాడేటా ఉంటుంది. + +ఈ ట్యుటోరియల్‌లో, మేము రెండవ భాగంపై దృష్టి పెట్టబోతున్నాము, మా React UIని ఉపయోగించి ఇప్పటికే ఉన్న NFT యొక్క స్మార్ట్ కాంట్రాక్ట్ మింటింగ్ ఫంక్షన్‌ను కాల్ చేయడం. + +ఈ ట్యుటోరియల్‌లో మేము కాల్ చేయబోయే ERC-721 NFT స్మార్ట్ కాంట్రాక్ట్‌కి [ఇక్కడ ఒక లింక్](https://ropsten.etherscan.io/address/0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE) ఉంది. మేము దానిని ఎలా తయారు చేశామో మీరు తెలుసుకోవాలనుకుంటే, మా ఇతర ట్యుటోరియల్, ["ఒక NFTని ఎలా సృష్టించాలి"](https://www.alchemy.com/docs/how-to-create-an-nft) ను చూడమని మేము గట్టిగా సిఫార్సు చేస్తున్నాము. + +బాగుంది, ఇప్పుడు ఒక NFTని తయారు చేయడం ఎలా పనిచేస్తుందో మనకు అర్థమైంది, మా స్టార్టర్ ఫైల్‌లను క్లోన్ చేద్దాం! + +## స్టార్టర్ ఫైల్‌లను క్లోన్ చేయండి {#clone-the-starter-files} + +మొదట, ఈ ప్రాజెక్ట్ కోసం స్టార్టర్ ఫైల్‌లను పొందడానికి [nft-minter-tutorial GitHub రిపోజిటరీ](https://github.com/alchemyplatform/nft-minter-tutorial) కి వెళ్ళండి. ఈ రిపోజిటరీని మీ స్థానిక వాతావరణంలోకి క్లోన్ చేయండి. + +మీరు ఈ క్లోన్ చేయబడిన `nft-minter-tutorial` రిపోజిటరీని తెరిచినప్పుడు, అందులో రెండు ఫోల్డర్‌లు ఉన్నాయని మీరు గమనిస్తారు: `minter-starter-files` మరియు `nft-minter`. + +- `minter-starter-files` లో ఈ ప్రాజెక్ట్ కోసం స్టార్టర్ ఫైల్‌లు (ముఖ్యంగా React UI) ఉన్నాయి. ఈ ట్యుటోరియల్‌లో, **మేము ఈ డైరెక్టరీలో పని చేస్తాము**, మీరు ఈ UIని మీ Ethereum వాలెట్ మరియు ఒక NFT స్మార్ట్ కాంట్రాక్ట్‌కు కనెక్ట్ చేయడం ద్వారా దానికి జీవం పోయడం ఎలాగో నేర్చుకుంటారు. +- `nft-minter` పూర్తి ట్యుటోరియల్‌ను కలిగి ఉంది మరియు **మీరు ఇరుక్కుపోయినట్లయితే** **సూచనగా** మీ కోసం అక్కడ ఉంది. + +తరువాత, మీ కోడ్ ఎడిటర్‌లో మీ `minter-starter-files` కాపీని తెరిచి, ఆపై మీ `src` ఫోల్డర్‌లోకి నావిగేట్ చేయండి. + +మేము వ్రాసే కోడ్ అంతా `src` ఫోల్డర్ కింద ఉంటుంది. మేము `Minter.js` కాంపోనెంట్‌ను సవరించడం మరియు మా ప్రాజెక్ట్‌కు Web3 కార్యాచరణను అందించడానికి అదనపు జావాస్క్రిప్ట్ ఫైల్‌లను వ్రాయడం చేస్తాము. + +## దశ 2: మా స్టార్టర్ ఫైల్‌లను చూడండి {#step-2-check-out-our-starter-files} + +మేము కోడింగ్ ప్రారంభించడానికి ముందు, స్టార్టర్ ఫైల్‌లలో మాకు ఇప్పటికే ఏమి అందించబడిందో చూడటం ముఖ్యం. + +### మీ react ప్రాజెక్ట్‌ను రన్ చేయండి {#get-your-react-project-running} + +మా బ్రౌజర్‌లో React ప్రాజెక్ట్‌ను రన్ చేయడం ద్వారా ప్రారంభిద్దాం. React యొక్క అందం ఏమిటంటే, మా బ్రౌజర్‌లో మా ప్రాజెక్ట్ రన్ అవుతున్నప్పుడు, మేము సేవ్ చేసే ఏవైనా మార్పులు మా బ్రౌజర్‌లో ప్రత్యక్షంగా అప్‌డేట్ చేయబడతాయి. + +ప్రాజెక్ట్‌ను రన్ చేయడానికి, `minter-starter-files` ఫోల్డర్ యొక్క రూట్ డైరెక్టరీకి నావిగేట్ చేయండి, మరియు ప్రాజెక్ట్ యొక్క డిపెండెన్సీలను ఇన్‌స్టాల్ చేయడానికి మీ టెర్మినల్‌లో `npm install` రన్ చేయండి: + +```bash +cd minter-starter-files +npm install +``` + +అవి ఇన్‌స్టాల్ చేయడం పూర్తయిన తర్వాత, మీ టెర్మినల్‌లో `npm start` రన్ చేయండి: + +```bash +npm start +``` + +అలా చేయడం వలన మీ బ్రౌజర్‌లో http://localhost:3000/ తెరుచుకోవాలి, అక్కడ మీరు మా ప్రాజెక్ట్ కోసం ఫ్రంటెండ్‌ను చూస్తారు. ఇది 3 ఫీల్డ్‌లను కలిగి ఉండాలి: మీ NFT యొక్క ఆస్తికి ఒక లింక్‌ను ఇన్‌పుట్ చేయడానికి ఒక స్థలం, మీ NFT పేరును నమోదు చేయండి మరియు ఒక వివరణను అందించండి. + +మీరు "వాలెట్‌ను కనెక్ట్ చేయండి" లేదా "NFTని ముద్రించండి" బటన్‌లను క్లిక్ చేయడానికి ప్రయత్నిస్తే, అవి పనిచేయవని మీరు గమనిస్తారు—అందుకు కారణం మేము ఇంకా వాటి కార్యాచరణను ప్రోగ్రామ్ చేయాలి! :\) + +### Minter.js కాంపోనెంట్ {#minter-js} + +**గమనిక:** మీరు `minter-starter-files` ఫోల్డర్‌లో ఉన్నారని మరియు `nft-minter` ఫోల్డర్‌లో లేరని నిర్ధారించుకోండి! + +మా ఎడిటర్‌లోని `src` ఫోల్డర్‌లోకి తిరిగి వెళ్లి, `Minter.js` ఫైల్‌ను తెరుద్దాం. ఈ ఫైల్‌లోని ప్రతిదాన్ని మనం అర్థం చేసుకోవడం చాలా ముఖ్యం, ఎందుకంటే ఇది మనం పని చేయబోయే ప్రాథమిక React కాంపోనెంట్. + +ఈ ఫైల్ పైన, మా స్టేట్ వేరియబుల్స్ ఉన్నాయి, వాటిని మేము నిర్దిష్ట ఈవెంట్‌ల తర్వాత అప్‌డేట్ చేస్తాము. + +```javascript +//స్టేట్ వేరియబుల్స్ +const [walletAddress, setWallet] = useState("") +const [status, setStatus] = useState("") +const [name, setName] = useState("") +const [description, setDescription] = useState("") +const [url, setURL] = useState("") +``` + +React స్టేట్ వేరియబుల్స్ లేదా స్టేట్ హుక్స్ గురించి ఎప్పుడూ వినలేదా? [ఈ](https://legacy.reactjs.org/docs/hooks-state.html) డాక్స్‌ను చూడండి. + +ప్రతి వేరియబుల్ దేనిని సూచిస్తుందో ఇక్కడ ఉంది: + +- `walletAddress` - వినియోగదారుడి వాలెట్ చిరునామాను నిల్వ చేసే ఒక స్ట్రింగ్ +- `status` - UI దిగువన ప్రదర్శించడానికి ఒక సందేశాన్ని కలిగి ఉన్న ఒక స్ట్రింగ్ +- `name` - NFT పేరును నిల్వ చేసే ఒక స్ట్రింగ్ +- `description` - NFT వివరణను నిల్వ చేసే ఒక స్ట్రింగ్ +- `url` - NFT యొక్క డిజిటల్ ఆస్తికి ఒక లింక్ అయిన ఒక స్ట్రింగ్ + +స్టేట్ వేరియబుల్స్ తర్వాత, మీరు మూడు అమలు చేయని ఫంక్షన్లను చూస్తారు: `useEffect`, `connectWalletPressed`, మరియు `onMintPressed`. ఈ ఫంక్షన్లన్నీ `async` అని మీరు గమనిస్తారు, అందుకు కారణం మేము వాటిలో అసమకాలిక API కాల్స్ చేస్తాము! వాటి పేర్లు వాటి కార్యాచరణలకు పర్యాయపదాలుగా ఉన్నాయి: + +```javascript +useEffect(async () => { + //TODO: అమలు చేయండి +}, []) + +const connectWalletPressed = async () => { + //TODO: అమలు చేయండి +} + +const onMintPressed = async () => { + //TODO: అమలు చేయండి +} +``` + +- [`useEffect`](https://legacy.reactjs.org/docs/hooks-effect.html) - ఇది మీ కాంపోనెంట్ రెండర్ అయిన తర్వాత కాల్ చేయబడే ఒక React హుక్. దీనికి ఒక ఖాళీ శ్రేణి `[]` ప్రాప్ పాస్ చేయబడినందున (3వ పంక్తిని చూడండి), ఇది కాంపోనెంట్ యొక్క _మొదటి_ రెండర్‌లో మాత్రమే కాల్ చేయబడుతుంది. ఒక వాలెట్ ఇప్పటికే కనెక్ట్ చేయబడిందో లేదో ప్రతిబింబించేలా మా UIని అప్‌డేట్ చేయడానికి ఇక్కడ మేము మా వాలెట్ లిజనర్ మరియు మరొక వాలెట్ ఫంక్షన్‌ను కాల్ చేస్తాము. +- `connectWalletPressed` - ఈ ఫంక్షన్ వినియోగదారుడి MetaMask వాలెట్‌ను మా డాప్‌కు కనెక్ట్ చేయడానికి కాల్ చేయబడుతుంది. +- `onMintPressed` - ఈ ఫంక్షన్ వినియోగదారుడి NFTని ముద్రించడానికి కాల్ చేయబడుతుంది. + +ఈ ఫైల్ చివరిలో, మా కాంపోనెంట్ యొక్క UI ఉంది. మీరు ఈ కోడ్‌ను జాగ్రత్తగా స్కాన్ చేస్తే, వాటి సంబంధిత టెక్స్ట్ ఫీల్డ్‌లలోని ఇన్‌పుట్ మారినప్పుడు మేము మా `url`, `name`, మరియు `description` స్టేట్ వేరియబుల్స్‌ను అప్‌డేట్ చేస్తామని మీరు గమనిస్తారు. + +మీరు `mintButton` మరియు `walletButton` ఐడీలతో ఉన్న బటన్‌లను వరుసగా క్లిక్ చేసినప్పుడు `connectWalletPressed` మరియు `onMintPressed` కాల్ చేయబడతాయని కూడా మీరు చూస్తారు. + +```javascript +//మా కాంపోనెంట్ యొక్క UI +return ( +
+ + +

+

🧙‍♂️ Alchemy NFT మింటర్

+

+ కేవలం మీ ఆస్తి యొక్క లింక్, పేరు మరియు వివరణను జోడించి, ఆపై "ముద్రించు." నొక్కండి. +

+
+

🖼 ఆస్తికి లింక్:

+ setURL(event.target.value)} + /> +

🤔 పేరు:

+ setName(event.target.value)} + /> +

✍️ వివరణ:

+ setDescription(event.target.value)} + /> +
+ +

{status}

+
+) +``` + +చివరగా, ఈ Minter కాంపోనెంట్ ఎక్కడ జోడించబడిందో చూద్దాం. + +మీరు `App.js` ఫైల్‌కు వెళితే, ఇది React లోని ప్రధాన కాంపోనెంట్, ఇది అన్ని ఇతర కాంపోనెంట్‌లకు ఒక కంటైనర్‌గా పనిచేస్తుంది, మా Minter కాంపోనెంట్ 7వ పంక్తిలో ఇంజెక్ట్ చేయబడిందని మీరు చూస్తారు. + +**ఈ ట్యుటోరియల్‌లో, మేము కేవలం `Minter.js ఫైల్‌`ను సవరించడం మరియు మా `src` ఫోల్డర్‌లో ఫైల్‌లను జోడించడం మాత్రమే చేస్తాము.** + +ఇప్పుడు మనం దేనితో పనిచేస్తున్నామో అర్థమైంది, మా Ethereum వాలెట్‌ను సెటప్ చేద్దాం! + +## మీ Ethereum వాలెట్‌ను సెటప్ చేయండి {#set-up-your-ethereum-wallet} + +వినియోగదారులు మీ స్మార్ట్ కాంట్రాక్ట్‌తో సంభాషించగలగడానికి, వారు తమ Ethereum వాలెట్‌ను మీ డాప్‌కు కనెక్ట్ చేయవలసి ఉంటుంది. + +### MetaMaskను డౌన్‌లోడ్ చేయండి {#download-metamask} + +ఈ ట్యుటోరియల్ కోసం, మేము MetaMaskను ఉపయోగిస్తాము, ఇది మీ ఇతీరియము అకౌంట్ చిరునామాను నిర్వహించడానికి ఉపయోగించే బ్రౌజర్‌లోని వర్చువల్ వాలెట్. Ethereum పై లావాదేవీలు ఎలా పనిచేస్తాయో మీరు మరింత అర్థం చేసుకోవాలనుకుంటే, [ఈ పేజీ](/developers/docs/transactions/)ని చూడండి. + +మీరు [ఇక్కడ](https://metamask.io/download) ఉచితంగా MetaMask అకౌంట్‌ను డౌన్‌లోడ్ చేసి, సృష్టించవచ్చు. మీరు ఒక ఖాతాను సృష్టిస్తున్నప్పుడు, లేదా మీకు ఇప్పటికే ఒక ఖాతా ఉన్నట్లయితే, కుడి ఎగువన ఉన్న “Ropsten టెస్టునెట్” కు మారారని నిర్ధారించుకోండి \(తద్వారా మనం నిజమైన డబ్బుతో వ్యవహరించడం లేదు\). + +### ఫాసెట్ నుండి ఈథర్ జోడించండి {#add-ether-from-faucet} + +మా NFTలను ముద్రించడానికి (లేదా Ethereum బ్లాక్‌చైన్‌లో ఏవైనా లావాదేవీలపై సంతకం చేయడానికి), మాకు కొంత నకిలీ Eth అవసరం. Eth పొందడానికి మీరు [Ropsten ఫాసెట్](https://faucet.ropsten.be/) కు వెళ్లి, మీ Ropsten ఖాతా చిరునామాను నమోదు చేసి, ఆపై “Ropsten Eth పంపించు.” క్లిక్ చేయవచ్చు. త్వరలోనే మీ MetaMask ఖాతాలో Eth కనిపించాలి! + +### మీ బ్యాలెన్స్‌ను తనిఖీ చేయండి {#check-your-balance} + +మా బ్యాలెన్స్ అక్కడ ఉందని నిర్ధారించుకోవడానికి, [Alchemy యొక్క కంపోజర్ సాధనాన్ని](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D) ఉపయోగించి ఒక [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) అభ్యర్థన చేద్దాం. ఇది మా వాలెట్‌లోని Eth మొత్తాన్ని తిరిగి ఇస్తుంది. మీరు మీ MetaMask అకౌంట్ చిరునామాను ఇన్‌పుట్ చేసి, “అభ్యర్థన పంపు” క్లిక్ చేసిన తర్వాత, మీరు ఇలాంటి ప్రతిస్పందనను చూడాలి: + +```text +{"jsonrpc": "2.0", "id": 0, "result": "0xde0b6b3a7640000"} +``` + +**గమనిక:** ఈ ఫలితం weiలో ఉంది, ethలో కాదు. ఈథర్ యొక్క అతి చిన్న ప్రమాణంగా వీని ఉపయోగిస్తారు. wei నుండి ethకి మార్పిడి: 1 eth = 10¹⁸ wei. కాబట్టి మనం 0xde0b6b3a7640000 ను దశాంశానికి మార్చితే మనకు 1\*10¹⁸ వస్తుంది, ఇది 1 ethకి సమానం. + +అమ్మయ్య! మా నకిలీ డబ్బు అంతా అక్కడే ఉంది! + +## మీ UIకి MetaMaskని కనెక్ట్ చేయండి {#connect-metamask-to-your-UI} + +ఇప్పుడు మా MetaMask వాలెట్ సెటప్ చేయబడింది, మా డాప్‌ను దానికి కనెక్ట్ చేద్దాం! + +మేము [MVC](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) పారడైమ్‌కు కట్టుబడి ఉండాలని కోరుకుంటున్నందున, మా డాప్ యొక్క లాజిక్, డేటా మరియు నియమాలను నిర్వహించడానికి మా ఫంక్షన్లను కలిగి ఉన్న ఒక ప్రత్యేక ఫైల్‌ను సృష్టించి, ఆపై ఆ ఫంక్షన్లను మా ఫ్రంటెండ్ (మా Minter.js కాంపోనెంట్) కు పాస్ చేయబోతున్నాము. + +### `connectWallet` ఫంక్షన్ {#connect-wallet-function} + +అలా చేయడానికి, మీ `src` డైరెక్టరీలో `utils` అనే కొత్త ఫోల్డర్‌ను సృష్టించి, దాని లోపల `interact.js` అనే ఫైల్‌ను జోడిద్దాం, ఇందులో మా వాలెట్ మరియు స్మార్ట్ కాంట్రాక్ట్ ఇంటరాక్షన్ ఫంక్షన్లు అన్నీ ఉంటాయి. + +మా `interact.js` ఫైల్‌లో, మేము ఒక `connectWallet` ఫంక్షన్‌ను వ్రాస్తాము, దానిని మేము మా `Minter.js` కాంపోనెంట్‌లో దిగుమతి చేసుకుని కాల్ చేస్తాము. + +మీ `interact.js` ఫైల్‌లో, కింది వాటిని జోడించండి + +```javascript +export const connectWallet = async () => { + if (window.ethereum) { + try { + const addressArray = await window.ethereum.request({ + method: "eth_requestAccounts", + }) + const obj = { + status: "👆🏽 పైన ఉన్న టెక్స్ట్-ఫీల్డ్‌లో ఒక సందేశం వ్రాయండి.", + address: addressArray[0], + } + return obj + } catch (err) { + return { + address: "", + status: "😥 " + err.message, + } + } + } else { + return { + address: "", + status: ( + +

+ {" "} + 🦊 + మీరు మీ బ్రౌజర్‌లో MetaMask, ఒక వర్చువల్ Ethereum వాలెట్‌ను ఇన్‌స్టాల్ చేయాలి. + +

+
+ ), + } + } +} +``` + +ఈ కోడ్ ఏమి చేస్తుందో విడమరచి చూద్దాం: + +మొదట, మా ఫంక్షన్ మీ బ్రౌజర్‌లో `window.ethereum` ప్రారంభించబడిందో లేదో తనిఖీ చేస్తుంది. + +`window.ethereum` అనేది MetaMask మరియు ఇతర వాలెట్ ప్రొవైడర్‌ల ద్వారా ఇంజెక్ట్ చేయబడిన గ్లోబల్ API, ఇది వెబ్‌సైట్‌లు వినియోగదారుల Ethereum ఖాతాలను అభ్యర్థించడానికి అనుమతిస్తుంది. ఆమోదించబడితే, ఇది వినియోగదారుడు కనెక్ట్ చేయబడిన బ్లాక్‌చైన్‌ల నుండి డేటాను చదవగలదు మరియు వినియోగదారుడు సందేశాలు మరియు లావాదేవీలపై సంతకం చేయమని సూచించగలదు. మరింత సమాచారం కోసం [MetaMask డాక్స్](https://docs.metamask.io/guide/ethereum-provider.html#table-of-contents) చూడండి! + +`window.ethereum` _ఉండకపోతే_, అప్పుడు MetaMask ఇన్‌స్టాల్ చేయబడలేదని అర్థం. దీని ఫలితంగా ఒక JSON వస్తువు తిరిగి వస్తుంది, ఇక్కడ `address` తిరిగి వచ్చినది ఖాళీ స్ట్రింగ్, మరియు `status` JSX వస్తువు వినియోగదారుడు MetaMaskను ఇన్‌స్టాల్ చేయాలని తెలియజేస్తుంది. + +**మేము వ్రాసే చాలా ఫంక్షన్లు JSON వస్తువులను తిరిగి ఇస్తాయి, వాటిని మేము మా స్టేట్ వేరియబుల్స్ మరియు UIని అప్‌డేట్ చేయడానికి ఉపయోగించవచ్చు.** + +ఇప్పుడు `window.ethereum` _ఉంటే_, అప్పుడు విషయాలు ఆసక్తికరంగా మారతాయి. + +ఒక try/catch లూప్‌ను ఉపయోగించి, మేము [`window.ethereum.request({ method: "eth_requestAccounts" });`](https://docs.metamask.io/guide/rpc-api.html#eth-requestaccounts) కాల్ చేయడం ద్వారా MetaMaskకు కనెక్ట్ చేయడానికి ప్రయత్నిస్తాము. ఈ ఫంక్షన్‌ను కాల్ చేయడం వలన బ్రౌజర్‌లో MetaMask తెరుచుకుంటుంది, దీని ద్వారా వినియోగదారుడు తమ వాలెట్‌ను మీ డాప్‌కు కనెక్ట్ చేయమని ప్రాంప్ట్ చేయబడతారు. + +- వినియోగదారుడు కనెక్ట్ చేయడానికి ఎంచుకుంటే, `method: "eth_requestAccounts"` డాప్‌కు కనెక్ట్ చేయబడిన వినియోగదారుడి అన్ని ఖాతా చిరునామాలను కలిగి ఉన్న ఒక శ్రేణిని తిరిగి ఇస్తుంది. మొత్తం మీద, మా `connectWallet` ఫంక్షన్ ఈ శ్రేణిలోని _మొదటి_ `address` (9వ పంక్తిని చూడండి) మరియు స్మార్ట్ కాంట్రాక్ట్‌కు ఒక సందేశం వ్రాయమని వినియోగదారుడిని ప్రాంప్ట్ చేసే ఒక `status` సందేశాన్ని కలిగి ఉన్న ఒక JSON వస్తువును తిరిగి ఇస్తుంది. +- వినియోగదారుడు కనెక్షన్‌ను తిరస్కరిస్తే, అప్పుడు JSON వస్తువు తిరిగి వచ్చిన `address` కోసం ఖాళీ స్ట్రింగ్‌ను మరియు వినియోగదారుడు కనెక్షన్‌ను తిరస్కరించినట్లు ప్రతిబింబించే ఒక `status` సందేశాన్ని కలిగి ఉంటుంది. + +### మీ Minter.js UI కాంపోనెంట్‌కు connectWallet ఫంక్షన్‌ను జోడించండి {#add-connect-wallet} + +ఇప్పుడు మేము ఈ `connectWallet` ఫంక్షన్‌ను వ్రాశాము, దానిని మా `Minter.js.` కాంపోనెంట్‌కు కనెక్ట్ చేద్దాం. + +మొదట, మేము మా ఫంక్షన్‌ను మా `Minter.js` ఫైల్‌లోకి `import { connectWallet } from "./utils/interact.js";` ను `Minter.js` ఫైల్ పైభాగానికి జోడించడం ద్వారా దిగుమతి చేసుకోవాలి. `Minter.js` యొక్క మీ మొదటి 11 పంక్తులు ఇప్పుడు ఇలా కనిపించాలి: + +```javascript +import { useEffect, useState } from "react"; +import { connectWallet } from "./utils/interact.js"; + +const Minter = (props) => { + + //స్టేట్ వేరియబుల్స్ + const [walletAddress, setWallet] = useState(""); + const [status, setStatus] = useState(""); + const [name, setName] = useState(""); + const [description, setDescription] = useState(""); + const [url, setURL] = useState(""); +``` + +అప్పుడు, మా `connectWalletPressed` ఫంక్షన్ లోపల, మేము మా దిగుమతి చేసుకున్న `connectWallet` ఫంక్షన్‌ను ఇలా కాల్ చేస్తాము: + +```javascript +const connectWalletPressed = async () => { + const walletResponse = await connectWallet() + setStatus(walletResponse.status) + setWallet(walletResponse.address) +} +``` + +మా `Minter.js` కాంపోనెంట్ నుండి `interact.js` ఫైల్ నుండి మా కార్యాచరణలో చాలా వరకు ఎలా సంగ్రహించబడిందో గమనించండి? ఇది మేము M-V-C పారడైమ్‌కు కట్టుబడి ఉండటానికి! + +`connectWalletPressed`లో, మేము కేవలం మా దిగుమతి చేసుకున్న `connectWallet` ఫంక్షన్‌కు ఒక await కాల్ చేస్తాము, మరియు దాని ప్రతిస్పందనను ఉపయోగించి, మేము మా `status` మరియు `walletAddress` వేరియబుల్స్‌ను వాటి స్టేట్ హుక్స్ ద్వారా అప్‌డేట్ చేస్తాము. + +ఇప్పుడు, `Minter.js` మరియు `interact.js` రెండు ఫైల్‌లను సేవ్ చేసి, ఇప్పటివరకు మా UIని పరీక్షిద్దాం. + +localhost:3000లో మీ బ్రౌజర్‌ను తెరిచి, పేజీ యొక్క కుడి ఎగువన ఉన్న "వాలెట్‌ను కనెక్ట్ చేయండి" బటన్‌ను నొక్కండి. + +మీరు MetaMaskను ఇన్‌స్టాల్ చేసి ఉంటే, మీ వాలెట్‌ను మీ డాప్‌కు కనెక్ట్ చేయమని మిమ్మల్ని ప్రాంప్ట్ చేయాలి. కనెక్ట్ చేయడానికి ఆహ్వానాన్ని అంగీకరించండి. + +వాలెట్ బటన్ ఇప్పుడు మీ చిరునామా కనెక్ట్ చేయబడిందని ప్రతిబింబిస్తుందని మీరు చూడాలి. + +తరువాత, పేజీని రిఫ్రెష్ చేయడానికి ప్రయత్నించండి... ఇది వింతగా ఉంది. మా వాలెట్ బటన్ MetaMaskను కనెక్ట్ చేయమని మమ్మల్ని ప్రాంప్ట్ చేస్తోంది, అది ఇప్పటికే కనెక్ట్ చేయబడి ఉన్నప్పటికీ... + +అయినప్పటికీ చింతించకండి! `getCurrentWalletConnected` అనే ఫంక్షన్‌ను అమలు చేయడం ద్వారా మేము దానిని సులభంగా పరిష్కరించవచ్చు, ఇది మా డాప్‌కు ఒక చిరునామా ఇప్పటికే కనెక్ట్ చేయబడిందో లేదో తనిఖీ చేస్తుంది మరియు తదనుగుణంగా మా UIని అప్‌డేట్ చేస్తుంది! + +### getCurrentWalletConnected ఫంక్షన్ {#get-current-wallet} + +మీ `interact.js` ఫైల్‌లో, కింది `getCurrentWalletConnected` ఫంక్షన్‌ను జోడించండి: + +```javascript +export const getCurrentWalletConnected = async () => { + if (window.ethereum) { + try { + const addressArray = await window.ethereum.request({ + method: "eth_accounts", + }) + if (addressArray.length > 0) { + return { + address: addressArray[0], + status: "👆🏽 పైన ఉన్న టెక్స్ట్-ఫీల్డ్‌లో ఒక సందేశం వ్రాయండి.", + } + } else { + return { + address: "", + status: "🦊 కుడి ఎగువ బటన్‌ను ఉపయోగించి MetaMaskకు కనెక్ట్ అవ్వండి.", + } + } + } catch (err) { + return { + address: "", + status: "😥 " + err.message, + } + } + } else { + return { + address: "", + status: ( + +

+ {" "} + 🦊 + మీరు మీ బ్రౌజర్‌లో MetaMask, ఒక వర్చువల్ Ethereum వాలెట్‌ను ఇన్‌స్టాల్ చేయాలి. + +

+
+ ), + } + } +} +``` + +ఈ కోడ్ మేము ఇందాక వ్రాసిన `connectWallet` ఫంక్షన్‌కు _చాలా_ సారూప్యంగా ఉంటుంది. + +ప్రధాన వ్యత్యాసం ఏమిటంటే, ఇక్కడ మేము `eth_requestAccounts` పద్ధతిని కాల్ చేయడానికి బదులుగా, ఇది వినియోగదారుడు తమ వాలెట్‌ను కనెక్ట్ చేయడానికి MetaMaskను తెరుస్తుంది, ఇక్కడ మేము `eth_accounts` పద్ధతిని కాల్ చేస్తాము, ఇది కేవలం మా డాప్‌కు ప్రస్తుతం కనెక్ట్ చేయబడిన MetaMask చిరునామాలను కలిగి ఉన్న ఒక శ్రేణిని తిరిగి ఇస్తుంది. + +ఈ ఫంక్షన్‌ను చర్యలో చూడటానికి, మా `Minter.js` కాంపోనెంట్ యొక్క `useEffect` ఫంక్షన్‌లో దానిని కాల్ చేద్దాం. + +మేము `connectWallet` కోసం చేసినట్లే, మేము ఈ ఫంక్షన్‌ను మా `interact.js` ఫైల్ నుండి మా `Minter.js` ఫైల్‌లోకి ఇలా దిగుమతి చేసుకోవాలి: + +```javascript +import { useEffect, useState } from "react" +import { + connectWallet, + getCurrentWalletConnected, //ఇక్కడ దిగుమతి చేసుకోండి +} from "./utils/interact.js" +``` + +ఇప్పుడు, మేము దానిని మా `useEffect` ఫంక్షన్‌లో కేవలం కాల్ చేస్తాము: + +```javascript +useEffect(async () => { + const { address, status } = await getCurrentWalletConnected() + setWallet(address) + setStatus(status) +}, []) +``` + +గమనించండి, మేము మా `walletAddress` మరియు `status` స్టేట్ వేరియబుల్స్‌ను అప్‌డేట్ చేయడానికి మా `getCurrentWalletConnected` కాల్ యొక్క ప్రతిస్పందనను ఉపయోగిస్తాము. + +మీరు ఈ కోడ్‌ను జోడించిన తర్వాత, మా బ్రౌజర్ విండోను రిఫ్రెష్ చేయడానికి ప్రయత్నించండి. బటన్ మీరు కనెక్ట్ అయ్యారని చెప్పాలి, మరియు మీరు రిఫ్రెష్ చేసిన తర్వాత కూడా మీ కనెక్ట్ చేయబడిన వాలెట్ చిరునామా యొక్క ప్రివ్యూను చూపాలి! + +### addWalletListenerని అమలు చేయండి {#implement-add-wallet-listener} + +మా డాప్ వాలెట్ సెటప్‌లో చివరి దశ వాలెట్ లిజనర్‌ను అమలు చేయడం, తద్వారా మా వాలెట్ స్టేట్ మారినప్పుడు, ఉదాహరణకు వినియోగదారుడు డిస్‌కనెక్ట్ చేసినప్పుడు లేదా ఖాతాలను మార్చినప్పుడు మా UI అప్‌డేట్ అవుతుంది. + +మీ `Minter.js` ఫైల్‌లో, కింది విధంగా కనిపించే `addWalletListener` అనే ఫంక్షన్‌ను జోడించండి: + +```javascript +function addWalletListener() { + if (window.ethereum) { + window.ethereum.on("accountsChanged", (accounts) => { + if (accounts.length > 0) { + setWallet(accounts[0]) + setStatus("👆🏽 పైన ఉన్న టెక్స్ట్-ఫీల్డ్‌లో ఒక సందేశం వ్రాయండి.") + } else { + setWallet("") + setStatus("🦊 కుడి ఎగువ బటన్‌ను ఉపయోగించి MetaMaskకు కనెక్ట్ అవ్వండి.") + } + }) + } else { + setStatus( +

+ {" "} + 🦊 + మీరు మీ బ్రౌజర్‌లో MetaMask, ఒక వర్చువల్ Ethereum వాలెట్‌ను ఇన్‌స్టాల్ చేయాలి. + +

+ ) + } +} +``` + +ఇక్కడ ఏమి జరుగుతుందో త్వరగా విడమరచి చూద్దాం: + +- మొదట, మా ఫంక్షన్ `window.ethereum` ప్రారంభించబడిందో లేదో తనిఖీ చేస్తుంది (అనగా, MetaMask ఇన్‌స్టాల్ చేయబడింది). + - అది కాకపోతే, మేము కేవలం మా `status` స్టేట్ వేరియబుల్‌ను వినియోగదారుడిని MetaMaskను ఇన్‌స్టాల్ చేయమని ప్రాంప్ట్ చేసే ఒక JSX స్ట్రింగ్‌కు సెట్ చేస్తాము. + - అది ప్రారంభించబడితే, మేము 3వ పంక్తిలో `window.ethereum.on("accountsChanged")` లిజనర్‌ను సెట్ చేస్తాము, ఇది MetaMask వాలెట్‌లోని స్టేట్ మార్పులను వింటుంది, ఇందులో వినియోగదారుడు డాప్‌కు అదనపు ఖాతాను కనెక్ట్ చేసినప్పుడు, ఖాతాలను మార్చినప్పుడు, లేదా ఒక ఖాతాను డిస్‌కనెక్ట్ చేసినప్పుడు ఉంటాయి. కనీసం ఒక ఖాతా కనెక్ట్ చేయబడి ఉంటే, `walletAddress` స్టేట్ వేరియబుల్ లిజనర్ ద్వారా తిరిగి వచ్చిన `accounts` శ్రేణిలోని మొదటి ఖాతాగా అప్‌డేట్ చేయబడుతుంది. లేకపోతే, `walletAddress` ఖాళీ స్ట్రింగ్‌గా సెట్ చేయబడుతుంది. + +చివరగా, మేము దానిని మా `useEffect` ఫంక్షన్‌లో కాల్ చేయాలి: + +```javascript +useEffect(async () => { + const { address, status } = await getCurrentWalletConnected() + setWallet(address) + setStatus(status) + + addWalletListener() +}, []) +``` + +మరియు ఇదుగో! మేము మా వాలెట్ కార్యాచరణ అంతా ప్రోగ్రామింగ్ పూర్తి చేసాము! ఇప్పుడు మా వాలెట్ సెటప్ చేయబడింది, మా NFTని ఎలా ముద్రించాలో కనుగొందాం! + +## NFT మెటాడేటా 101 {#nft-metadata-101} + +కాబట్టి ఈ ట్యుటోరియల్ యొక్క 0వ దశలో మనం మాట్లాడిన NFT మెటాడేటా గుర్తుందా—ఇది ఒక NFTకి జీవం పోస్తుంది, దానికి డిజిటల్ ఆస్తి, పేరు, వివరణ మరియు ఇతర గుణాలు వంటి లక్షణాలను కలిగి ఉండటానికి అనుమతిస్తుంది. + +మేము ఈ మెటాడేటాను ఒక JSON వస్తువుగా కాన్ఫిగర్ చేసి, దానిని నిల్వ చేయవలసి ఉంటుంది, తద్వారా మా స్మార్ట్ కాంట్రాక్ట్ యొక్క `mintNFT` ఫంక్షన్‌ను కాల్ చేసేటప్పుడు దానిని `tokenURI` పారామీటర్‌గా పాస్ చేయవచ్చు. + +"ఆస్తికి లింక్", "పేరు", "వివరణ" ఫీల్డ్‌లలోని టెక్స్ట్ మా NFT యొక్క మెటాడేటా యొక్క విభిన్న లక్షణాలను కలిగి ఉంటుంది. మేము ఈ మెటాడేటాను ఒక JSON వస్తువుగా ఫార్మాట్ చేస్తాము, కానీ ఈ JSON వస్తువును ఎక్కడ నిల్వ చేయవచ్చో కొన్ని ఎంపికలు ఉన్నాయి: + +- మేము దానిని Ethereum బ్లాక్‌చైన్‌లో నిల్వ చేయవచ్చు; అయితే, అలా చేయడం చాలా ఖరీదైనది. +- మేము దానిని AWS లేదా Firebase వంటి కేంద్రీకృత సర్వర్‌లో నిల్వ చేయవచ్చు. కానీ అది మా వికేంద్రీకరణ నీతిని ఓడిస్తుంది. +- మేము IPFS, ఒక వికేంద్రీకృత ప్రోటోకాల్ మరియు ఒక పంపిణీ చేయబడిన ఫైల్ సిస్టమ్‌లో డేటాను నిల్వ చేయడానికి మరియు పంచుకోవడానికి పీర్-టు-పీర్ నెట్‌వర్క్‌ను ఉపయోగించవచ్చు. ఈ ప్రోటోకాల్ వికేంద్రీకృతం మరియు ఉచితం కాబట్టి, ఇది మా ఉత్తమ ఎంపిక! + +IPFSలో మా మెటాడేటాను నిల్వ చేయడానికి, మేము [Pinata](https://pinata.cloud/), ఒక సౌకర్యవంతమైన IPFS API మరియు టూల్‌కిట్‌ను ఉపయోగిస్తాము. తదుపరి దశలో, దీన్ని ఖచ్చితంగా ఎలా చేయాలో మేము వివరిస్తాము! + +## మీ మెటాడేటాను IPFSకి పిన్ చేయడానికి Pinataను ఉపయోగించండి {#use-pinata-to-pin-your-metadata-to-IPFS} + +మీకు [Pinata](https://pinata.cloud/) ఖాతా లేకపోతే, [ఇక్కడ](https://app.pinata.cloud/auth/signup) ఒక ఉచిత ఖాతా కోసం సైన్ అప్ చేయండి మరియు మీ ఇమెయిల్ మరియు ఖాతాను ధృవీకరించడానికి దశలను పూర్తి చేయండి. + +### మీ Pinata API కీని సృష్టించండి {#create-pinata-api-key} + +[https://pinata.cloud/keys](https://pinata.cloud/keys) పేజీకి నావిగేట్ చేయండి, ఆపై పైన ఉన్న "కొత్త కీ" బటన్‌ను ఎంచుకోండి, అడ్మిన్ విడ్జెట్‌ను ప్రారంభించబడినట్లు సెట్ చేయండి మరియు మీ కీకి పేరు పెట్టండి. + +అప్పుడు మీకు మీ API సమాచారంతో ఒక పాపప్ చూపబడుతుంది. దీన్ని ఎక్కడైనా భద్రంగా ఉంచారని నిర్ధారించుకోండి. + +ఇప్పుడు మా కీ సెట్ చేయబడింది, దాన్ని మా ప్రాజెక్ట్‌కు జోడిద్దాం, తద్వారా దాన్ని ఉపయోగించవచ్చు. + +### ఒక .env ఫైల్‌ను సృష్టించండి {#create-a-env} + +మేము మా Pinata కీ మరియు రహస్యాన్ని ఒక పర్యావరణ ఫైల్‌లో సురక్షితంగా నిల్వ చేయవచ్చు. మీ ప్రాజెక్ట్ డైరెక్టరీలో [dotenv ప్యాకేజీని](https://www.npmjs.com/package/dotenv) ఇన్‌స్టాల్ చేద్దాం. + +మీ టెర్మినల్‌లో కొత్త ట్యాబ్‌ను తెరవండి \(లోకల్ హోస్ట్‌ను నడుపుతున్న దాని నుండి వేరుగా\) మరియు మీరు `minter-starter-files` ఫోల్డర్‌లో ఉన్నారని నిర్ధారించుకోండి, ఆపై మీ టెర్మినల్‌లో కింది ఆదేశాన్ని అమలు చేయండి: + +```text +npm install dotenv --save +``` + +తరువాత, మీ కమాండ్ లైన్‌లో కింది వాటిని నమోదు చేయడం ద్వారా మీ `minter-starter-files` యొక్క రూట్ డైరెక్టరీలో ఒక `.env` ఫైల్‌ను సృష్టించండి: + +```javascript +vim.env +``` + +ఇది vim (ఒక టెక్స్ట్ ఎడిటర్)లో మీ `.env` ఫైల్‌ను పాప్ అప్ చేస్తుంది. దాన్ని సేవ్ చేయడానికి మీ కీబోర్డ్‌లో "esc" + ":" + "q" ను ఆ క్రమంలో నొక్కండి. + +తరువాత, VSCodeలో, మీ `.env` ఫైల్‌కు నావిగేట్ చేయండి మరియు మీ Pinata API కీ మరియు API రహస్యాన్ని దానికి జోడించండి, ఇలా: + +```text +REACT_APP_PINATA_KEY = +REACT_APP_PINATA_SECRET = +``` + +ఫైల్‌ను సేవ్ చేయండి, ఆపై మీరు మీ JSON మెటాడేటాను IPFSకి అప్‌లోడ్ చేయడానికి ఫంక్షన్‌ను వ్రాయడానికి సిద్ధంగా ఉన్నారు! + +### pinJSONToIPFSని అమలు చేయండి {#pin-json-to-ipfs} + +అదృష్టవశాత్తు మాకు, Pinata కు [IPFSకి JSON డేటాను అప్‌లోడ్ చేయడానికి ప్రత్యేకంగా ఒక API](https://docs.pinata.cloud/api-reference/endpoint/ipfs/pin-json-to-ipfs#pin-json) మరియు కొన్ని స్వల్ప మార్పులతో మేము ఉపయోగించగల ఒక అనుకూలమైన JavaScript తో axios ఉదాహరణ ఉంది. + +మీ `utils` ఫోల్డర్‌లో, `pinata.js` అనే మరొక ఫైల్‌ను సృష్టించి, ఆపై మా Pinata రహస్యం మరియు కీని .env ఫైల్ నుండి ఇలా దిగుమతి చేసుకుందాం: + +```javascript +require("dotenv").config() +const key = process.env.REACT_APP_PINATA_KEY +const secret = process.env.REACT_APP_PINATA_SECRET +``` + +తరువాత, కింద నుండి అదనపు కోడ్‌ను మీ `pinata.js` ఫైల్‌లో అతికించండి. చింతించకండి, ప్రతిదీ ఏమిటో మేము విడమరచి చెబుతాము! + +```javascript +require("dotenv").config() +const key = process.env.REACT_APP_PINATA_KEY +const secret = process.env.REACT_APP_PINATA_SECRET + +const axios = require("axios") + +export const pinJSONToIPFS = async (JSONBody) => { + const url = `https://api.pinata.cloud/pinning/pinJSONToIPFS` + //Pinata కు axios POST అభ్యర్థన చేయడం ⬇️ + return axios + .post(url, JSONBody, { + headers: { + pinata_api_key: key, + pinata_secret_api_key: secret, + }, + }) + .then(function (response) { + return { + success: true, + pinataUrl: + "https://gateway.pinata.cloud/ipfs/" + response.data.IpfsHash, + } + }) + .catch(function (error) { + console.log(error) + return { + success: false, + message: error.message, + } + }) +} +``` + +కాబట్టి ఈ కోడ్ ఖచ్చితంగా ఏమి చేస్తుంది? + +మొదట, ఇది [axios](https://www.npmjs.com/package/axios), బ్రౌజర్ మరియు node.js కోసం ఒక ప్రామిస్ ఆధారిత HTTP క్లయింట్‌ను దిగుమతి చేసుకుంటుంది, దీనిని మేము Pinata కు ఒక అభ్యర్థన చేయడానికి ఉపయోగిస్తాము. + +అప్పుడు మాకు మా అసమకాలిక ఫంక్షన్ `pinJSONToIPFS` ఉంది, ఇది ఒక `JSONBody`ని దాని ఇన్‌పుట్‌గా మరియు దాని హెడర్‌లో Pinata api కీ మరియు రహస్యాన్ని తీసుకుంటుంది, అన్నీ వారి `pinJSONToIPFS` APIకి ఒక POST అభ్యర్థన చేయడానికి. + +- ఈ POST అభ్యర్థన విజయవంతమైతే, అప్పుడు మా ఫంక్షన్ `success` బూలియన్ నిజంగా మరియు మా మెటాడేటా పిన్ చేయబడిన `pinataUrl` తో ఒక JSON వస్తువును తిరిగి ఇస్తుంది. మేము ఈ `pinataUrl` ను మా స్మార్ట్ కాంట్రాక్ట్ మింట్ ఫంక్షన్‌కు `tokenURI` ఇన్‌పుట్‌గా ఉపయోగిస్తాము. +- ఈ పోస్ట్ అభ్యర్థన విఫలమైతే, అప్పుడు మా ఫంక్షన్ `success` బూలియన్ తప్పుగా మరియు మా లోపాన్ని తెలియజేసే ఒక `message` స్ట్రింగ్‌తో ఒక JSON వస్తువును తిరిగి ఇస్తుంది. + +మా `connectWallet` ఫంక్షన్ రిటర్న్ రకాలతో పాటు, మేము JSON వస్తువులను తిరిగి ఇస్తున్నాము, తద్వారా వాటి పారామీటర్లను మా స్టేట్ వేరియబుల్స్ మరియు UIని అప్‌డేట్ చేయడానికి ఉపయోగించవచ్చు. + +## మీ స్మార్ట్ కాంట్రాక్ట్‌ను లోడ్ చేయండి {#load-your-smart-contract} + +ఇప్పుడు మా `pinJSONToIPFS` ఫంక్షన్ ద్వారా IPFSకి మా NFT మెటాడేటాను అప్‌లోడ్ చేయడానికి ఒక మార్గం ఉంది, దాని `mintNFT` ఫంక్షన్‌ను కాల్ చేయడానికి మా స్మార్ట్ కాంట్రాక్ట్ యొక్క ఒక ఉదాహరణను లోడ్ చేయడానికి ఒక మార్గం అవసరం. + +మేము ఇందాక చెప్పినట్లు, ఈ ట్యుటోరియల్‌లో మేము [ఈ ఇప్పటికే ఉన్న NFT స్మార్ట్ కాంట్రాక్ట్‌](https://ropsten.etherscan.io/address/0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE)ను ఉపయోగిస్తాము; అయితే, మేము దాన్ని ఎలా తయారు చేశామో తెలుసుకోవాలనుకుంటే, లేదా మీరే ఒకటి తయారు చేసుకోవాలనుకుంటే, మా ఇతర ట్యుటోరియల్, ["ఒక NFTని ఎలా సృష్టించాలి."](https://www.alchemy.com/docs/how-to-create-an-nft)ని చూడమని మేము గట్టిగా సిఫార్సు చేస్తున్నాము. + +### కాంట్రాక్ట్ ABI {#contract-abi} + +మీరు మా ఫైల్‌లను జాగ్రత్తగా పరిశీలిస్తే, మా `src` డైరెక్టరీలో, ఒక `contract-abi.json` ఫైల్ ఉందని మీరు గమనించి ఉంటారు. ఒక కాంట్రాక్ట్ ఏ ఫంక్షన్‌ను పిలుస్తుందో నిర్దేశించడానికి అలాగే ఫంక్షన్ మీరు ఆశించే ఫార్మాట్‌లో డేటాను తిరిగి ఇస్తుందని నిర్ధారించడానికి ఒక ABI అవసరం. + +Ethereum బ్లాక్‌చైన్‌కు కనెక్ట్ అవ్వడానికి మరియు మా స్మార్ట్ కాంట్రాక్ట్‌ను లోడ్ చేయడానికి మాకు ఒక Alchemy API కీ మరియు Alchemy Web3 API కూడా అవసరం. + +### మీ Alchemy API కీని సృష్టించండి {#create-alchemy-api} + +మీకు ఇప్పటికే Alchemy ఖాతా లేకపోతే, [ఇక్కడ ఉచితంగా సైన్ అప్ చేసుకోండి.](https://alchemy.com/?a=eth-org-nft-minter) + +మీరు ఆల్కెమీ అకౌంట్‌ను సృష్టించిన తర్వాత, యాప్‌ను సృష్టించడం ద్వారా మీరు API కీని రూపొందించవచ్చు. ఇది Ropsten టెస్టునెట్‌కు అభ్యర్థనలు చేయడానికి మాకు అనుమతిస్తుంది. + +మీ Alchemy డాష్‌బోర్డ్‌లో నావ్ బార్‌లో “Apps” పై హోవర్ చేసి “Create App” క్లిక్ చేయడం ద్వారా “Create App” పేజీకి నావిగేట్ చేయండి. + +మీ అనువర్తనానికి పేరు పెట్టండి మేము "నా మొదటి NFT!"ని ఎంచుకున్నాము, ఒక చిన్న వివరణను అందించండి, మీ అనువర్తన బుక్‌కీపింగ్ కోసం ఉపయోగించే పర్యావరణం కోసం “స్టేజింగ్”ని ఎంచుకోండి, మరియు మీ నెట్‌వర్క్ కోసం “Ropsten”ని ఎంచుకోండి. + +“యాప్‌ను సృష్టించు” క్లిక్ చేయండి, అంతే! మీ యాప్ దిగువ పట్టికలో కనిపించాలి. + +అద్భుతం, ఇప్పుడు మేము మా HTTP Alchemy API URLని సృష్టించాము, దాన్ని మీ క్లిప్‌బోర్డ్‌కు కాపీ చేయండి... + +… ఆపై దానిని మా `.env` ఫైల్‌కు జోడిద్దాం. మొత్తం మీద, మీ .env ఫైల్ ఇలా కనిపించాలి: + +```text +REACT_APP_PINATA_KEY = +REACT_APP_PINATA_SECRET = +REACT_APP_ALCHEMY_KEY = https://eth-ropsten.alchemyapi.io/v2/ +``` + +ఇప్పుడు మా కాంట్రాక్ట్ ABI మరియు మా Alchemy API కీ ఉన్నాయి, మేము [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) ఉపయోగించి మా స్మార్ట్ కాంట్రాక్ట్‌ను లోడ్ చేయడానికి సిద్ధంగా ఉన్నాము. + +### మీ Alchemy Web3 ఎండ్‌పాయింట్ మరియు కాంట్రాక్ట్‌ను సెటప్ చేయండి {#setup-alchemy-endpoint} + +మొదట, మీకు ఇప్పటికే లేకపోతే, టెర్మినల్‌లో హోమ్ డైరెక్టరీ: `nft-minter-tutorial` కి నావిగేట్ చేయడం ద్వారా మీరు [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3)ని ఇన్‌స్టాల్ చేయాలి: + +```text +cd .. +npm install @alch/alchemy-web3 +``` + +తరువాత మా `interact.js` ఫైల్‌కు తిరిగి వెళ్దాం. ఫైల్ పైభాగంలో, మీ .env ఫైల్ నుండి మీ Alchemy కీని దిగుమతి చేసుకోవడానికి మరియు మీ Alchemy Web3 ఎండ్‌పాయింట్‌ను సెటప్ చేయడానికి కింది కోడ్‌ను జోడించండి: + +```javascript +require("dotenv").config() +const alchemyKey = process.env.REACT_APP_ALCHEMY_KEY +const { createAlchemyWeb3 } = require("@alch/alchemy-web3") +const web3 = createAlchemyWeb3(alchemyKey) +``` + +[Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) అనేది [Web3.js](https://docs.web3js.org/) చుట్టూ ఉన్న ఒక చుట్టు, ఇది వెబ్3 డెవలపర్‌గా మీ జీవితాన్ని సులభతరం చేయడానికి మెరుగైన API పద్ధతులు మరియు ఇతర కీలక ప్రయోజనాలను అందిస్తుంది. ఇది కనిష్ట కాన్ఫిగరేషన్ అవసరం అయ్యేలా రూపొందించబడింది, తద్వారా మీరు వెంటనే మీ అనువర్తనంలో దాన్ని ఉపయోగించడం ప్రారంభించవచ్చు! + +తరువాత, మా కాంట్రాక్ట్ ABI మరియు కాంట్రాక్ట్ చిరునామాను మా ఫైల్‌కు జోడిద్దాం. + +```javascript +require("dotenv").config() +const alchemyKey = process.env.REACT_APP_ALCHEMY_KEY +const { createAlchemyWeb3 } = require("@alch/alchemy-web3") +const web3 = createAlchemyWeb3(alchemyKey) + +const contractABI = require("../contract-abi.json") +const contractAddress = "0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE" +``` + +మాకు రెండూ ఉన్న తర్వాత, మేము మా మింట్ ఫంక్షన్‌ను కోడింగ్ చేయడం ప్రారంభించడానికి సిద్ధంగా ఉన్నాము! + +## మింట్‌ఎన్‌ఎఫ్‌టి ఫంక్షన్‌ను అమలు చేయండి {#implement-the-mintnft-function} + +మీ `interact.js` ఫైల్ లోపల, మా ఫంక్షన్, `mintNFT`ని నిర్వచిద్దాం, ఇది దాని పేరుకు తగినట్లుగా మా NFTని ముద్రిస్తుంది. + +మేము అనేక అసమకాలిక కాల్స్ చేయబోతున్నందున (మా మెటాడేటాను IPFSకి పిన్ చేయడానికి Pinataకు, మా స్మార్ట్ కాంట్రాక్ట్‌ను లోడ్ చేయడానికి Alchemy Web3కు, మరియు మా లావాదేవీలపై సంతకం చేయడానికి MetaMaskకు), మా ఫంక్షన్ కూడా అసమకాలికంగా ఉంటుంది. + +మా ఫంక్షన్‌కు మూడు ఇన్‌పుట్‌లు మా డిజిటల్ ఆస్తి యొక్క `url`, `name`, మరియు `description`. `connectWallet` ఫంక్షన్ కింద కింది ఫంక్షన్ సంతకాన్ని జోడించండి: + +```javascript +export const mintNFT = async (url, name, description) => {} +``` + +### ఇన్‌పుట్ దోష నిర్వహణ {#input-error-handling} + +సహజంగానే, ఫంక్షన్ ప్రారంభంలో కొంత ఇన్‌పుట్ దోష నిర్వహణ ఉండటం అర్ధవంతంగా ఉంటుంది, తద్వారా మా ఇన్‌పుట్ పారామీటర్లు సరిగ్గా లేకపోతే మేము ఈ ఫంక్షన్ నుండి నిష్క్రమిస్తాము. మా ఫంక్షన్ లోపల, కింది కోడ్‌ను జోడిద్దాం: + +```javascript +export const mintNFT = async (url, name, description) => { + //దోష నిర్వహణ + if (url.trim() == "" || name.trim() == "" || description.trim() == "") { + return { + success: false, + status: "❗మింట్ చేయడానికి ముందు దయచేసి అన్ని ఫీల్డ్‌లు పూర్తి చేశారని నిర్ధారించుకోండి.", + } + } +} +``` + +ముఖ్యంగా, ఇన్‌పుట్ పారామీటర్లలో ఏదైనా ఖాళీ స్ట్రింగ్ అయితే, అప్పుడు మేము `success` బూలియన్ తప్పుగా మరియు మా UIలోని అన్ని ఫీల్డ్‌లు పూర్తి చేయాలని తెలియజేసే `status` స్ట్రింగ్‌తో ఒక JSON వస్తువును తిరిగి ఇస్తాము. + +### మెటాడేటాను IPFSకి అప్‌లోడ్ చేయండి {#upload-metadata-to-ipfs} + +మా మెటాడేటా సరిగ్గా ఫార్మాట్ చేయబడిందని మాకు తెలిసిన తర్వాత, తదుపరి దశ దానిని ఒక JSON వస్తువులో చుట్టి, మేము వ్రాసిన `pinJSONToIPFS` ద్వారా IPFSకి అప్‌లోడ్ చేయడం! + +అలా చేయడానికి, మేము మొదట `pinJSONToIPFS` ఫంక్షన్‌ను మా `interact.js` ఫైల్‌లోకి దిగుమతి చేసుకోవాలి. `interact.js` పైభాగాన, ఇలా జోడిద్దాం: + +```javascript +import { pinJSONToIPFS } from "./pinata.js" +``` + +`pinJSONToIPFS` ఒక JSON బాడీని తీసుకుంటుందని గుర్తుంచుకోండి. కాబట్టి దానికి కాల్ చేయడానికి ముందు, మేము మా `url`, `name`, మరియు `description` పారామీటర్లను ఒక JSON వస్తువుగా ఫార్మాట్ చేయాలి. + +`metadata` అనే JSON వస్తువును సృష్టించడానికి మా కోడ్‌ను అప్‌డేట్ చేసి, ఆపై ఈ `metadata` పారామీటర్‌తో `pinJSONToIPFS`కు కాల్ చేద్దాం: + +```javascript +export const mintNFT = async (url, name, description) => { + //దోష నిర్వహణ + if (url.trim() == "" || name.trim() == "" || description.trim() == "") { + return { + success: false, + status: "❗మింట్ చేయడానికి ముందు దయచేసి అన్ని ఫీల్డ్‌లు పూర్తి చేశారని నిర్ధారించుకోండి.", + } + } + + //మెటాడేటా తయారు చేయండి + const metadata = new Object() + metadata.name = name + metadata.image = url + metadata.description = description + + //pinata కాల్ చేయండి + const pinataResponse = await pinJSONToIPFS(metadata) + if (!pinataResponse.success) { + return { + success: false, + status: "😢 మీ tokenURIని అప్‌లోడ్ చేస్తున్నప్పుడు ఏదో తప్పు జరిగింది.", + } + } + const tokenURI = pinataResponse.pinataUrl +} +``` + +గమనించండి, మేము `pinJSONToIPFS(metadata)`కు మా కాల్ యొక్క ప్రతిస్పందనను `pinataResponse` వస్తువులో నిల్వ చేస్తాము. అప్పుడు, మేము ఏవైనా దోషాల కోసం ఈ వస్తువును పార్స్ చేస్తాము. + +దోషం ఉంటే, మేము `success` బూలియన్ తప్పుగా మరియు మా `status` స్ట్రింగ్ మా కాల్ విఫలమైందని తెలియజేసే ఒక JSON వస్తువును తిరిగి ఇస్తాము. లేకపోతే, మేము `pinataResponse` నుండి `pinataURL`ను సంగ్రహించి, దానిని మా `tokenURI` వేరియబుల్‌గా నిల్వ చేస్తాము. + +ఇప్పుడు మేము మా ఫైల్ పైభాగంలో ప్రారంభించిన Alchemy Web3 APIని ఉపయోగించి మా స్మార్ట్ కాంట్రాక్ట్‌ను లోడ్ చేసే సమయం వచ్చింది. `mintNFT` ఫంక్షన్ దిగువన `window.contract` గ్లోబల్ వేరియబుల్‌లో కాంట్రాక్ట్‌ను సెట్ చేయడానికి కింది కోడ్ పంక్తిని జోడించండి: + +```javascript +window.contract = await new web3.eth.Contract(contractABI, contractAddress) +``` + +మా `mintNFT` ఫంక్షన్‌లో జోడించాల్సిన చివరి విషయం మా Ethereum లావాదేవీ: + +```javascript +//మీ Ethereum లావాదేవీని సెటప్ చేయండి +const transactionParameters = { + to: contractAddress, // కాంట్రాక్ట్ ప్రచురణల సమయంలో తప్ప అవసరం. + from: window.ethereum.selectedAddress, // వినియోగదారుడి క్రియాశీల చిరునామాతో సరిపోలాలి. + data: window.contract.methods + .mintNFT(window.ethereum.selectedAddress, tokenURI) + .encodeABI(), //NFT స్మార్ట్ కాంట్రాక్ట్‌కు కాల్ చేయండి +} + +//MetaMask ద్వారా లావాదేవీపై సంతకం చేయండి +try { + const txHash = await window.ethereum.request({ + method: "eth_sendTransaction", + params: [transactionParameters], + }) + return { + success: true, + status: + "✅ Etherscanలో మీ లావాదేవీని చూడండి: https://ropsten.etherscan.io/tx/" + + txHash, + } +} catch (error) { + return { + success: false, + status: "😥 ఏదో తప్పు జరిగింది: " + error.message, + } +} +``` + +మీకు ఇప్పటికే Ethereum లావాదేవీలతో పరిచయం ఉంటే, మీరు చూసిన దానితో నిర్మాణం చాలా సారూప్యంగా ఉందని మీరు గమనిస్తారు. + +- మొదట, మేము మా లావాదేవీల పారామీటర్లను సెటప్ చేస్తాము. + - `to` గ్రహీత చిరునామాను నిర్దేశిస్తుంది (మా స్మార్ట్ కాంట్రాక్ట్) + - `from` లావాదేవీ యొక్క సంతకం చేసేవారిని నిర్దేశిస్తుంది (వినియోగదారుడి కనెక్ట్ చేయబడిన చిరునామా MetaMaskకు: `window.ethereum.selectedAddress`) + - `data` మా స్మార్ట్ కాంట్రాక్ట్ `mintNFT` పద్ధతికి కాల్‌ను కలిగి ఉంటుంది, ఇది మా `tokenURI` మరియు వినియోగదారుడి వాలెట్ చిరునామా, `window.ethereum.selectedAddress`ను ఇన్‌పుట్‌లుగా స్వీకరిస్తుంది +- అప్పుడు, మేము ఒక await కాల్, `window.ethereum.request,` చేస్తాము, ఇక్కడ మేము లావాదేవీపై సంతకం చేయమని MetaMaskను అడుగుతాము. గమనించండి, ఈ అభ్యర్థనలో, మేము మా eth పద్ధతిని (eth_SentTransaction) నిర్దేశిస్తున్నాము మరియు మా `transactionParameters`ను పాస్ చేస్తున్నాము. ఈ సమయంలో, MetaMask బ్రౌజర్‌లో తెరుచుకుంటుంది మరియు లావాదేవీపై సంతకం చేయమని లేదా తిరస్కరించమని వినియోగదారుడిని ప్రాంప్ట్ చేస్తుంది. + - లావాదేవీ విజయవంతమైతే, ఫంక్షన్ `success` బూలియన్ నిజంగా సెట్ చేయబడిన ఒక JSON వస్తువును మరియు `status` స్ట్రింగ్ వినియోగదారుడిని వారి లావాదేవీ గురించి మరింత సమాచారం కోసం Etherscanను చూడమని ప్రాంప్ట్ చేసే ఒక JSON వస్తువును తిరిగి ఇస్తుంది. + - లావాదేవీ విఫలమైతే, ఫంక్షన్ `success` బూలియన్ తప్పుగా సెట్ చేయబడిన ఒక JSON వస్తువును మరియు `status` స్ట్రింగ్ దోష సందేశాన్ని తెలియజేసే ఒక JSON వస్తువును తిరిగి ఇస్తుంది. + +మొత్తం మీద, మా `mintNFT` ఫంక్షన్ ఇలా కనిపించాలి: + +```javascript +export const mintNFT = async (url, name, description) => { + //దోష నిర్వహణ + if (url.trim() == "" || name.trim() == "" || description.trim() == "") { + return { + success: false, + status: "❗మింట్ చేయడానికి ముందు దయచేసి అన్ని ఫీల్డ్‌లు పూర్తి చేశారని నిర్ధారించుకోండి.", + } + } + + //మెటాడేటా తయారు చేయండి + const metadata = new Object() + metadata.name = name + metadata.image = url + metadata.description = description + + //pinata పిన్ అభ్యర్థన + const pinataResponse = await pinJSONToIPFS(metadata) + if (!pinataResponse.success) { + return { + success: false, + status: "😢 మీ tokenURIని అప్‌లోడ్ చేస్తున్నప్పుడు ఏదో తప్పు జరిగింది.", + } + } + const tokenURI = pinataResponse.pinataUrl + + //స్మార్ట్ కాంట్రాక్ట్ లోడ్ చేయండి + window.contract = await new web3.eth.Contract(contractABI, contractAddress) //loadContract(); + + //మీ Ethereum లావాదేవీని సెటప్ చేయండి + const transactionParameters = { + to: contractAddress, // కాంట్రాక్ట్ ప్రచురణల సమయంలో తప్ప అవసరం. + from: window.ethereum.selectedAddress, // వినియోగదారుడి క్రియాశీల చిరునామాతో సరిపోలాలి. + data: window.contract.methods + .mintNFT(window.ethereum.selectedAddress, tokenURI) + .encodeABI(), //NFT స్మార్ట్ కాంట్రాక్ట్‌కు కాల్ చేయండి + } + + //MetaMask ద్వారా లావాదేవీపై సంతకం చేయండి + try { + const txHash = await window.ethereum.request({ + method: "eth_sendTransaction", + params: [transactionParameters], + }) + return { + success: true, + status: + "✅ Etherscanలో మీ లావాదేవీని చూడండి: https://ropsten.etherscan.io/tx/" + + txHash, + } + } catch (error) { + return { + success: false, + status: "😥 ఏదో తప్పు జరిగింది: " + error.message, + } + } +} +``` + +అది ఒక పెద్ద ఫంక్షన్! ఇప్పుడు, మేము మా `mintNFT` ఫంక్షన్‌ను మా `Minter.js` కాంపోనెంట్‌కు కనెక్ట్ చేయాలి... + +## mintNFTని మా Minter.js ఫ్రంటెండ్‌కు కనెక్ట్ చేయండి {#connect-our-frontend} + +మీ `Minter.js` ఫైల్‌ను తెరిచి, పైభాగంలో ఉన్న `import { connectWallet, getCurrentWalletConnected } from "./utils/interact.js";` పంక్తిని ఇలా అప్‌డేట్ చేయండి: + +```javascript +import { + connectWallet, + getCurrentWalletConnected, + mintNFT, +} from "./utils/interact.js" +``` + +చివరగా, మీ దిగుమతి చేసుకున్న `mintNFT` ఫంక్షన్‌కు await కాల్ చేయడానికి మరియు మా లావాదేవీ విజయవంతమైందో లేదా విఫలమైందో ప్రతిబింబించేలా `status` స్టేట్ వేరియబుల్‌ను అప్‌డేట్ చేయడానికి `onMintPressed` ఫంక్షన్‌ను అమలు చేయండి: + +```javascript +const onMintPressed = async () => { + const { status } = await mintNFT(url, name, description) + setStatus(status) +} +``` + +## మీ NFTని ప్రత్యక్ష వెబ్‌సైట్‌కు అమలు చేయండి {#deploy-your-NFT} + +వినియోగదారులు సంభాషించడానికి మీ ప్రాజెక్ట్‌ను ప్రత్యక్షంగా తీసుకెళ్లడానికి సిద్ధంగా ఉన్నారా? మీ మింటర్‌ను ప్రత్యక్ష వెబ్‌సైట్‌కు అమలు చేయడానికి [ఈ ట్యుటోరియల్](https://docs.alchemy.com/alchemy/tutorials/nft-minter/how-do-i-deploy-nfts-online)ని చూడండి. + +ఒక చివరి దశ... + +## బ్లాక్‌చైన్ ప్రపంచాన్ని తుఫానులా ముంచెత్తండి {#take-the-blockchain-world-by-storm} + +కేవలం సరదాకి, మీరు ట్యుటోరియల్ చివరికి చేరుకున్నారు! + +సంక్షిప్తంగా, ఒక NFT మింటర్‌ను నిర్మించడం ద్వారా, మీరు విజయవంతంగా ఎలాగో నేర్చుకున్నారు: + +- మీ ఫ్రంటెండ్ ప్రాజెక్ట్ ద్వారా MetaMaskకు కనెక్ట్ అవ్వండి +- మీ ఫ్రంటెండ్ నుండి స్మార్ట్ కాంట్రాక్ట్ పద్ధతులను కాల్ చేయండి +- MetaMask ఉపయోగించి లావాదేవీలపై సంతకం చేయండి + +బహుశా, మీరు మీ వాలెట్‌లో మీ డాప్ ద్వారా ముద్రించబడిన NFTలను చూపించాలనుకుంటారు — కాబట్టి మా శీఘ్ర ట్యుటోరియల్ [మీ వాలెట్‌లో మీ NFTని ఎలా చూడాలి](https://www.alchemy.com/docs/how-to-view-your-nft-in-your-mobile-wallet)ని తప్పకుండా చూడండి! + +మరియు, ఎప్పటిలాగే, మీకు ఏవైనా ప్రశ్నలు ఉంటే, మేము [Alchemy Discord](https://discord.gg/gWuC7zB)లో సహాయం చేయడానికి ఇక్కడ ఉన్నాము. ఈ ట్యుటోరియల్ నుండి మీరు నేర్చుకున్న భావనలను మీ భవిష్యత్ ప్రాజెక్ట్‌లకు ఎలా వర్తింపజేస్తారో చూడటానికి మేము వేచి ఉండలేము! diff --git a/public/content/translations/te/developers/tutorials/optimism-std-bridge-annotated-code/index.md b/public/content/translations/te/developers/tutorials/optimism-std-bridge-annotated-code/index.md new file mode 100644 index 00000000000..e0428eb69e8 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/optimism-std-bridge-annotated-code/index.md @@ -0,0 +1,1339 @@ +--- +title: "ఆప్టిమిజం స్టాండర్డ్ బ్రిడ్జ్ కాంట్రాక్ట్ విశ్లేషణ" +description: "ఆప్టిమిజం కోసం స్టాండర్డ్ బ్రిడ్జ్ ఎలా పనిచేస్తుంది? ఇది ఈ విధంగా ఎందుకు పనిచేస్తుంది?" +author: Ori Pomerantz +tags: [ "దృఢత్వం", "బ్రిడ్జ్", "లేయర్ 2" ] +skill: intermediate +published: 2022-03-30 +lang: te +--- + +[Optimism](https://www.optimism.io/) అనేది ఒక [Optimistic Rollup](/developers/docs/scaling/optimistic-rollups/). +ఆప్టిమిస్టిక్ రోలప్‌లు ఇథిరియం మెయిన్‌నెట్ (లేయర్ 1 లేదా L1 అని కూడా పిలుస్తారు) కంటే చాలా తక్కువ ధరకు లావాదేవీలను ప్రాసెస్ చేయగలవు, ఎందుకంటే లావాదేవీలు నెట్‌వర్క్‌లోని ప్రతి నోడ్ ద్వారా కాకుండా, కొన్ని నోడ్‌ల ద్వారా మాత్రమే ప్రాసెస్ చేయబడతాయి. +అదే సమయంలో, డేటా మొత్తం L1కి వ్రాయబడుతుంది, కాబట్టి మెయిన్‌నెట్ యొక్క అన్ని సమగ్రత మరియు లభ్యత హామీలతో ప్రతిదీ నిరూపించబడుతుంది మరియు పునర్నిర్మించబడుతుంది. + +Optimism (లేదా ఏదైనా ఇతర L2)లో L1 ఆస్తులను ఉపయోగించడానికి, ఆస్తులను [బ్రిడ్జ్ చేయాలి](/bridges/#prerequisites). +దీనిని సాధించడానికి ఒక మార్గం ఏమిటంటే, వినియోగదారులు L1పై ఆస్తులను (ETH మరియు [ERC-20 టోకెన్లు](/developers/docs/standards/tokens/erc-20/) అత్యంత సాధారణమైనవి) లాక్ చేసి, L2లో ఉపయోగించడానికి సమానమైన ఆస్తులను స్వీకరించడం. +చివరికి, వాటిని పొందిన ఎవరైనా వాటిని తిరిగి L1కి బ్రిడ్జ్ చేయాలనుకోవచ్చు. +ఇలా చేస్తున్నప్పుడు, ఆస్తులు L2లో బర్న్ చేయబడతాయి మరియు ఆ తర్వాత L1లో వినియోగదారునికి తిరిగి విడుదల చేయబడతాయి. + +[Optimism స్టాండర్డ్ బ్రిడ్జ్](https://docs.optimism.io/app-developers/bridging/standard-bridge) ఈ విధంగా పనిచేస్తుంది. +ఈ వ్యాసంలో మేము ఆ బ్రిడ్జ్ ఎలా పనిచేస్తుందో చూడటానికి దాని సోర్స్ కోడ్‌ను పరిశీలిస్తాము మరియు దానిని బాగా వ్రాసిన Solidity కోడ్‌కు ఉదాహరణగా అధ్యయనం చేస్తాము. + +## కంట్రోల్ ఫ్లోస్ {#control-flows} + +బ్రిడ్జ్‌కు రెండు ప్రధాన ఫ్లోలు ఉన్నాయి: + +- డిపాజిట్ (L1 నుండి L2కి) +- విత్‌డ్రాయల్ (L2 నుండి L1కి) + +### డిపాజిట్ ఫ్లో {#deposit-flow} + +#### లేయర్ 1 {#deposit-flow-layer-1} + +1. ERC-20ని డిపాజిట్ చేస్తుంటే, డిపాజిటర్ డిపాజిట్ చేయబడుతున్న మొత్తాన్ని ఖర్చు చేయడానికి బ్రిడ్జ్‌కు అనుమతి ఇస్తాడు +2. డిపాజిటర్ L1 బ్రిడ్జ్‌ని పిలుస్తాడు (`depositERC20`, `depositERC20To`, `depositETH`, లేదా `depositETHTo`) +3. L1 బ్రిడ్జ్ బ్రిడ్జ్ చేయబడిన ఆస్తిని స్వాధీనం చేసుకుంటుంది + - ETH: కాల్‌లో భాగంగా డిపాజిటర్ ద్వారా ఆస్తి బదిలీ చేయబడుతుంది + - ERC-20: డిపాజిటర్ అందించిన అనుమతిని ఉపయోగించి బ్రిడ్జ్ ద్వారా ఆస్తి దానికి బదిలీ చేయబడుతుంది +4. L1 బ్రిడ్జ్ క్రాస్-డొమైన్ మెసేజ్ మెకానిజంను ఉపయోగించి L2 బ్రిడ్జ్‌పై `finalizeDeposit`ని పిలుస్తుంది + +#### లేయర్ 2 {#deposit-flow-layer-2} + +5. L2 బ్రిడ్జ్ `finalizeDeposit`కి వచ్చిన కాల్ చట్టబద్ధమైనదని ధృవీకరిస్తుంది: + - క్రాస్ డొమైన్ మెసేజ్ కాంట్రాక్ట్ నుండి వచ్చింది + - వాస్తవానికి L1లోని బ్రిడ్జ్ నుండి వచ్చింది +6. L2 బ్రిడ్జ్ L2లోని ERC-20 టోకెన్ కాంట్రాక్ట్ సరైనదేనా అని తనిఖీ చేస్తుంది: + - L2 కాంట్రాక్ట్ దాని L1 ప్రతిరూపం L1 నుండి టోకెన్లు వచ్చిన దానితో సమానమని నివేదిస్తుంది + - L2 కాంట్రాక్ట్ అది సరైన ఇంటర్‌ఫేస్‌కు మద్దతు ఇస్తుందని నివేదిస్తుంది ([ERC-165ని ఉపయోగించి](https://eips.ethereum.org/EIPS/eip-165)). +7. L2 కాంట్రాక్ట్ సరైనది అయితే, తగిన చిరునామాకు తగినన్ని టోకెన్‌లను ముద్రించడానికి దానిని కాల్ చేయండి. కాకపోతే, L1పై టోకెన్‌లను క్లెయిమ్ చేయడానికి వినియోగదారుని అనుమతించడానికి విత్‌డ్రాయల్ ప్రక్రియను ప్రారంభించండి. + +### విత్‌డ్రాయల్ ఫ్లో {#withdrawal-flow} + +#### లేయర్ 2 {#withdrawal-flow-layer-2} + +1. విత్‌డ్రాయర్ L2 బ్రిడ్జ్‌ని పిలుస్తాడు (`withdraw` లేదా `withdrawTo`) +2. L2 బ్రిడ్జ్ `msg.sender`కి చెందిన తగిన సంఖ్యలో టోకెన్‌లను బర్న్ చేస్తుంది +3. L2 బ్రిడ్జ్ క్రాస్-డొమైన్ మెసేజ్ మెకానిజంను ఉపయోగించి L1 బ్రిడ్జ్‌పై `finalizeETHWithdrawal` లేదా `finalizeERC20Withdrawal`ని పిలుస్తుంది + +#### లేయర్ 1 {#withdrawal-flow-layer-1} + +4. L1 బ్రిడ్జ్ `finalizeETHWithdrawal` లేదా `finalizeERC20Withdrawal`కి వచ్చిన కాల్ చట్టబద్ధమైనదని ధృవీకరిస్తుంది: + - క్రాస్ డొమైన్ మెసేజ్ మెకానిజం నుండి వచ్చింది + - వాస్తవానికి L2లోని బ్రిడ్జ్ నుండి వచ్చింది +5. L1 బ్రిడ్జ్ తగిన ఆస్తిని (ETH లేదా ERC-20) తగిన చిరునామాకు బదిలీ చేస్తుంది + +## లేయర్ 1 కోడ్ {#layer-1-code} + +ఇది L1, ఇథిరియం మెయిన్‌నెట్‌పై నడిచే కోడ్. + +### IL1ERC20Bridge {#IL1ERC20Bridge} + +[ఈ ఇంటర్‌ఫేస్ ఇక్కడ నిర్వచించబడింది](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/IL1ERC20Bridge.sol). +ఇందులో ERC-20 టోకెన్‌లను బ్రిడ్జ్ చేయడానికి అవసరమైన ఫంక్షన్‌లు మరియు నిర్వచనాలు ఉంటాయి. + +```solidity +// SPDX-License-Identifier: MIT +``` + +[ఆప్టిమిజం యొక్క చాలా కోడ్ MIT లైసెన్సు క్రింద విడుదల చేయబడింది](https://help.optimism.io/hc/en-us/articles/4411908707995-What-software-license-does-Optimism-use-). + +```solidity +pragma solidity >0.5.0 <0.9.0; +``` + +ఈ రచన సమయంలో Solidity యొక్క తాజా వెర్షన్ 0.8.12. +వెర్షన్ 0.9.0 విడుదలయ్యే వరకు, ఈ కోడ్ దానికి అనుకూలంగా ఉందో లేదో మాకు తెలియదు. + +```solidity +/** + * @title IL1ERC20Bridge + */ +interface IL1ERC20Bridge { + /********** + * ఈవెంట్‌లు * + **********/ + + event ERC20DepositInitiated( +``` + +ఆప్టిమిజం బ్రిడ్జ్ పరిభాషలో _deposit_ అంటే L1 నుండి L2కి బదిలీ, మరియు _withdrawal_ అంటే L2 నుండి L1కి బదిలీ. + +```solidity + address indexed _l1Token, + address indexed _l2Token, +``` + +చాలా సందర్భాలలో L1లోని ERC-20 యొక్క చిరునామా L2లోని సమానమైన ERC-20 చిరునామాతో సమానంగా ఉండదు. +[మీరు టోకెన్ చిరునామాల జాబితాను ఇక్కడ చూడవచ్చు](https://static.optimism.io/optimism.tokenlist.json). +`chainId` 1 ఉన్న చిరునామా L1 (మెయిన్‌నెట్) పై ఉంది మరియు `chainId` 10 ఉన్న చిరునామా L2 (ఆప్టిమిజం) పై ఉంది. +మిగిలిన రెండు `chainId` విలువలు కోవన్ టెస్ట్ నెట్‌వర్క్ (42) మరియు ఆప్టిమిస్టిక్ కోవన్ టెస్ట్ నెట్‌వర్క్ (69) కోసం ఉన్నాయి. + +```solidity + address indexed _from, + address _to, + uint256 _amount, + bytes _data + ); +``` + +బదిలీలకు గమనికలను జోడించడం సాధ్యమే, ఈ సందర్భంలో అవి వాటిని నివేదించే ఈవెంట్‌లకు జోడించబడతాయి. + +```solidity + event ERC20WithdrawalFinalized( + address indexed _l1Token, + address indexed _l2Token, + address indexed _from, + address _to, + uint256 _amount, + bytes _data + ); +``` + +అదే బ్రిడ్జ్ కాంట్రాక్ట్ రెండు దిశలలో బదిలీలను నిర్వహిస్తుంది. +L1 బ్రిడ్జ్ విషయంలో, దీని అర్థం డిపాజిట్‌లను ప్రారంభించడం మరియు విత్‌డ్రాయల్‌లను ఖరారు చేయడం. + +```solidity + + /******************** + * పబ్లిక్ ఫంక్షన్‌లు * + ********************/ + + /** + * @dev సంబంధిత L2 బ్రిడ్జ్ కాంట్రాక్ట్ యొక్క చిరునామాను పొందండి. + * @return సంబంధిత L2 బ్రిడ్జ్ కాంట్రాక్ట్ యొక్క చిరునామా. + */ + function l2TokenBridge() external returns (address); +``` + +ఈ ఫంక్షన్ నిజంగా అవసరం లేదు, ఎందుకంటే L2లో ఇది ముందుగా డిప్లాయ్ చేయబడిన కాంట్రాక్ట్, కాబట్టి ఇది ఎల్లప్పుడూ `0x4200000000000000000000000000000000000010` చిరునామాలో ఉంటుంది. +ఇది L2 బ్రిడ్జ్‌తో సౌష్టవం కోసం ఇక్కడ ఉంది, ఎందుకంటే L1 బ్రిడ్జ్ యొక్క చిరునామాను తెలుసుకోవడం చాలా సులభం కాదు. + +```solidity + /** + * @dev L2లోని కాలర్ బ్యాలెన్స్‌కు ERC20 మొత్తాన్ని డిపాజిట్ చేయండి. + * @param _l1Token మేము డిపాజిట్ చేస్తున్న L1 ERC20 యొక్క చిరునామా + * @param _l2Token L1 సంబంధిత L2 ERC20 యొక్క చిరునామా + * @param _amount డిపాజిట్ చేయడానికి ERC20 మొత్తం + * @param _l2Gas L2లో డిపాజిట్‌ను పూర్తి చేయడానికి అవసరమైన గ్యాస్ పరిమితి. + * @param _data L2కి ఫార్వార్డ్ చేయడానికి ఐచ్ఛిక డేటా. ఈ డేటా బాహ్య కాంట్రాక్టుల సౌలభ్యం కోసం మాత్రమే అందించబడుతుంది. గరిష్ట పొడవును అమలు చేయడం మినహా, ఈ కాంట్రాక్టులు దాని కంటెంట్ గురించి ఎటువంటి హామీలను ఇవ్వవు. + */ + function depositERC20( + address _l1Token, + address _l2Token, + uint256 _amount, + uint32 _l2Gas, + bytes calldata _data + ) external; +``` + +`_l2Gas` పరామితి లావాదేవీ ఖర్చు చేయడానికి అనుమతించబడిన L2 గ్యాస్ మొత్తం. +[ఒక నిర్దిష్ట (అధిక) పరిమితి వరకు, ఇది ఉచితం](https://community.optimism.io/docs/developers/bridge/messaging/#for-l1-%E2%87%92-l2-transactions-2), కాబట్టి ERC-20 కాంట్రాక్ట్ మింటింగ్ చేసేటప్పుడు నిజంగా వింతగా ఏమీ చేయకపోతే, అది ఒక సమస్య కాకూడదు. +ఈ ఫంక్షన్ ఒక వినియోగదారు వేరొక బ్లాక్‌చైన్‌లోని అదే చిరునామాకు ఆస్తులను బ్రిడ్జ్ చేసే సాధారణ దృశ్యాన్ని చూసుకుంటుంది. + +```solidity + /** + * @dev L2లోని ఒక గ్రహీత యొక్క బ్యాలెన్స్‌కు ERC20 మొత్తాన్ని డిపాజిట్ చేయండి. + * @param _l1Token మేము డిపాజిట్ చేస్తున్న L1 ERC20 యొక్క చిరునామా + * @param _l2Token L1 సంబంధిత L2 ERC20 యొక్క చిరునామా + * @param _to విత్‌డ్రాయల్‌ను క్రెడిట్ చేయడానికి L2 చిరునామా. + * @param _amount డిపాజిట్ చేయడానికి ERC20 మొత్తం. + * @param _l2Gas L2లో డిపాజిట్ పూర్తి చేయడానికి అవసరమైన గ్యాస్ పరిమితి. + * @param _data L2కి ఫార్వార్డ్ చేయడానికి ఐచ్ఛిక డేటా. ఈ డేటా బాహ్య కాంట్రాక్టుల సౌలభ్యం కోసం మాత్రమే అందించబడుతుంది. గరిష్ట పొడవును అమలు చేయడం మినహా, ఈ కాంట్రాక్టులు దాని కంటెంట్ గురించి ఎటువంటి హామీలను ఇవ్వవు. + */ + function depositERC20To( + address _l1Token, + address _l2Token, + address _to, + uint256 _amount, + uint32 _l2Gas, + bytes calldata _data + ) external; +``` + +ఈ ఫంక్షన్ దాదాపుగా `depositERC20`తో సమానంగా ఉంటుంది, కానీ ఇది వేరొక చిరునామాకు ERC-20ని పంపడానికి మిమ్మల్ని అనుమతిస్తుంది. + +```solidity + /************************* + * క్రాస్-చైన్ ఫంక్షన్‌లు * + *************************/ + + /** + * @dev L2 నుండి L1కి విత్‌డ్రాయల్‌ను పూర్తి చేసి, గ్రహీత యొక్క L1 ERC20 టోకెన్ బ్యాలెన్స్‌కు నిధులను క్రెడిట్ చేయండి. + * L2 నుండి ప్రారంభించబడిన విత్‌డ్రాయల్ ఖరారు చేయబడకపోతే ఈ కాల్ విఫలమవుతుంది. + * + * @param _l1Token finalizeWithdrawal కోసం L1 టోకెన్ చిరునామా. + * @param _l2Token విత్‌డ్రాయల్ ప్రారంభించబడిన L2 టోకెన్ చిరునామా. + * @param _from బదిలీని ప్రారంభించే L2 చిరునామా. + * @param _to విత్‌డ్రాయల్‌ను క్రెడిట్ చేయడానికి L1 చిరునామా. + * @param _amount డిపాజిట్ చేయడానికి ERC20 మొత్తం. + * @param _data L2లో పంపినవారు అందించిన డేటా. ఈ డేటా + * బాహ్య కాంట్రాక్టుల సౌలభ్యం కోసం మాత్రమే అందించబడుతుంది. గరిష్ట + * పొడవును అమలు చేయడం మినహా, ఈ కాంట్రాక్టులు దాని కంటెంట్ గురించి ఎటువంటి హామీలను ఇవ్వవు. + */ + function finalizeERC20Withdrawal( + address _l1Token, + address _l2Token, + address _from, + address _to, + uint256 _amount, + bytes calldata _data + ) external; +} +``` + +ఆప్టిమిజంలో విత్‌డ్రాయల్స్ (మరియు L2 నుండి L1కి ఇతర సందేశాలు) రెండు దశల ప్రక్రియ: + +1. L2లో ఒక ప్రారంభ లావాదేవీ. +2. L1లో ఒక ఖరారు చేసే లేదా క్లెయిమ్ చేసే లావాదేవీ. + L2 లావాదేవీ కోసం [ఫాల్ట్ ఛాలెంజ్ వ్యవధి](https://community.optimism.io/docs/how-optimism-works/#fault-proofs) ముగిసిన తర్వాత ఈ లావాదేవీ జరగాలి. + +### IL1StandardBridge {#il1standardbridge} + +[ఈ ఇంటర్‌ఫేస్ ఇక్కడ నిర్వచించబడింది](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/IL1StandardBridge.sol). +ఈ ఫైల్‌లో ETH కోసం ఈవెంట్ మరియు ఫంక్షన్ నిర్వచనాలు ఉన్నాయి. +ఈ నిర్వచనాలు పైన ERC-20 కోసం `IL1ERC20Bridge`లో నిర్వచించిన వాటికి చాలా పోలి ఉంటాయి. + +కొన్ని ERC-20 టోకెన్‌లకు కస్టమ్ ప్రాసెసింగ్ అవసరం మరియు స్టాండర్డ్ బ్రిడ్జ్ ద్వారా నిర్వహించబడనందున బ్రిడ్జ్ ఇంటర్‌ఫేస్ రెండు ఫైల్‌ల మధ్య విభజించబడింది. +ఈ విధంగా అలాంటి టోకెన్‌ను నిర్వహించే కస్టమ్ బ్రిడ్జ్ `IL1ERC20Bridge`ని అమలు చేయగలదు మరియు ETHని కూడా బ్రిడ్జ్ చేయవలసిన అవసరం లేదు. + +```solidity +// SPDX-License-Identifier: MIT +pragma solidity >0.5.0 <0.9.0; + +import "./IL1ERC20Bridge.sol"; + +/** + * @title IL1StandardBridge + */ +interface IL1StandardBridge is IL1ERC20Bridge { + /********** + * ఈవెంట్‌లు * + **********/ + event ETHDepositInitiated( + address indexed _from, + address indexed _to, + uint256 _amount, + bytes _data + ); +``` + +ఈ ఈవెంట్ ERC-20 వెర్షన్ (`ERC20DepositInitiated`)తో దాదాపు సమానంగా ఉంటుంది, L1 మరియు L2 టోకెన్ చిరునామాలు మినహా. +ఇతర ఈవెంట్‌లు మరియు ఫంక్షన్‌లకు కూడా ఇదే వర్తిస్తుంది. + +```solidity + event ETHWithdrawalFinalized( + . + . + . + ); + + /******************** + * పబ్లిక్ ఫంక్షన్‌లు * + ********************/ + + /** + * @dev L2లోని కాలర్ బ్యాలెన్స్‌కు ETH మొత్తాన్ని డిపాజిట్ చేయండి. + . + . + . + */ + function depositETH(uint32 _l2Gas, bytes calldata _data) external payable; + + /** + * @dev L2లోని గ్రహీత బ్యాలెన్స్‌కు ETH మొత్తాన్ని డిపాజిట్ చేయండి. + . + . + . + */ + function depositETHTo( + address _to, + uint32 _l2Gas, + bytes calldata _data + ) external payable; + + /************************* + * క్రాస్-చైన్ ఫంక్షన్‌లు * + *************************/ + + /** + * @dev L2 నుండి L1కి విత్‌డ్రాయల్‌ను పూర్తి చేసి, గ్రహీత యొక్క బ్యాలెన్స్‌కు నిధులను క్రెడిట్ చేయండి + * L1 ETH టోకెన్. xDomainMessenger మాత్రమే ఈ ఫంక్షన్‌ను కాల్ చేయగలదు కాబట్టి, ఇది ఎప్పటికీ కాల్ చేయబడదు + * విత్‌డ్రాయల్ ఖరారు చేయబడక ముందు. + . + . + . + */ + function finalizeETHWithdrawal( + address _from, + address _to, + uint256 _amount, + bytes calldata _data + ) external; +} +``` + +### CrossDomainEnabled {#crossdomainenabled} + +[ఈ కాంట్రాక్ట్](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/libraries/bridge/CrossDomainEnabled.sol) ఇతర లేయర్‌కు సందేశాలను పంపడానికి రెండు బ్రిడ్జ్‌ల ([L1](#the-l1-bridge-contract) మరియు [L2](#the-l2-bridge-contract)) ద్వారా వారసత్వంగా పొందబడుతుంది. + +```solidity +// SPDX-License-Identifier: MIT +pragma solidity >0.5.0 <0.9.0; + +/* Interface Imports */ +import { ICrossDomainMessenger } from "./ICrossDomainMessenger.sol"; +``` + +[ఈ ఇంటర్‌ఫేస్](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/libraries/bridge/ICrossDomainMessenger.sol) క్రాస్ డొమైన్ మెసెంజర్‌ను ఉపయోగించి ఇతర లేయర్‌కు సందేశాలను ఎలా పంపాలో కాంట్రాక్ట్‌కు చెబుతుంది. +ఈ క్రాస్ డొమైన్ మెసెంజర్ పూర్తిగా వేరే సిస్టమ్, మరియు దాని స్వంత వ్యాసం అవసరం, దీనిని నేను భవిష్యత్తులో వ్రాయాలని ఆశిస్తున్నాను. + +```solidity +/** + * @title CrossDomainEnabled + * @dev క్రాస్-డొమైన్ కమ్యూనికేషన్‌లను నిర్వహించే కాంట్రాక్ట్‌ల కోసం సహాయక కాంట్రాక్ట్ + * + * ఉపయోగించిన కంపైలర్: వారసత్వ కాంట్రాక్ట్ ద్వారా నిర్వచించబడింది + */ +contract CrossDomainEnabled { + /************* + * వేరియబుల్స్ * + *************/ + + // ఇతర డొమైన్ నుండి సందేశాలను పంపడానికి మరియు స్వీకరించడానికి ఉపయోగించే మెసెంజర్ కాంట్రాక్ట్. + address public messenger; + + /*************** + * కన్‌స్ట్రక్టర్ * + ***************/ + + /** + * @param _messenger ప్రస్తుత లేయర్‌పై ఉన్న CrossDomainMessenger యొక్క చిరునామా. + */ + constructor(address _messenger) { + messenger = _messenger; + } +``` + +కాంట్రాక్ట్‌కు తెలియాల్సిన ఒక పరామితి, ఈ లేయర్‌లోని క్రాస్ డొమైన్ మెసెంజర్ యొక్క చిరునామా. +ఈ పరామితి కన్‌స్ట్రక్టర్‌లో ఒక్కసారి సెట్ చేయబడుతుంది మరియు ఎప్పటికీ మారదు. + +```solidity + + /********************** + * ఫంక్షన్ మాడిఫైయర్‌లు * + **********************/ + + /** + * మార్పు చేసిన ఫంక్షన్‌ను నిర్దిష్ట క్రాస్-డొమైన్ ఖాతా ద్వారా మాత్రమే పిలవగలరని నిర్ధారిస్తుంది. + * @param _sourceDomainAccount ఈ ఫంక్షన్‌ను కాల్ చేయడానికి ప్రామాణీకరించబడిన ఆరిజినేటింగ్ డొమైన్‌లోని ఏకైక ఖాతా. + */ + modifier onlyFromCrossDomainAccount(address _sourceDomainAccount) { +``` + +క్రాస్ డొమైన్ మెసేజింగ్ అది నడుస్తున్న బ్లాక్‌చైన్‌లోని (ఇథిరియం మెయిన్‌నెట్ లేదా ఆప్టిమిజం) ఏ కాంట్రాక్ట్ ద్వారానైనా యాక్సెస్ చేయబడుతుంది. +కానీ ప్రతి వైపు ఉన్న బ్రిడ్జ్ ఇతర వైపు ఉన్న బ్రిడ్జ్ నుండి వచ్చినట్లయితే _మాత్రమే_ కొన్ని సందేశాలను విశ్వసించాలి. + +```solidity + require( + msg.sender == address(getCrossDomainMessenger()), + "OVM_XCHAIN: messenger contract unauthenticated" + ); +``` + +తగిన క్రాస్ డొమైన్ మెసెంజర్ (`messenger`, మీరు క్రింద చూసినట్లుగా) నుండి వచ్చిన సందేశాలను మాత్రమే విశ్వసించవచ్చు. + +```solidity + + require( + getCrossDomainMessenger().xDomainMessageSender() == _sourceDomainAccount, + "OVM_XCHAIN: wrong sender of cross-domain message" + ); +``` + +క్రాస్ డొమైన్ మెసెంజర్ ఇతర లేయర్‌తో సందేశాన్ని పంపిన చిరునామాను అందించే మార్గం [`.xDomainMessageSender()` ఫంక్షన్](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol#L122-L128). +సందేశం ద్వారా ప్రారంభించబడిన లావాదేవీలో ఇది పిలవబడినంత కాలం ఇది ఈ సమాచారాన్ని అందించగలదు. + +మాకు వచ్చిన సందేశం ఇతర బ్రిడ్జ్ నుండి వచ్చిందని మేము నిర్ధారించుకోవాలి. + +```solidity + + _; + } + + /********************** + * అంతర్గత ఫంక్షన్‌లు * + **********************/ + + /** + * సాధారణంగా స్టోరేజ్ నుండి మెసెంజర్‌ను పొందుతుంది. చైల్డ్ కాంట్రాక్ట్‌కు + * ఓవర్‌రైడ్ చేయాల్సిన అవసరం ఉంటే ఈ ఫంక్షన్ బహిర్గతం చేయబడుతుంది. + * @return ఉపయోగించాల్సిన క్రాస్-డొమైన్ మెసెంజర్ కాంట్రాక్ట్ యొక్క చిరునామా. + */ + function getCrossDomainMessenger() internal virtual returns (ICrossDomainMessenger) { + return ICrossDomainMessenger(messenger); + } +``` + +ఈ ఫంక్షన్ క్రాస్ డొమైన్ మెసెంజర్‌ను తిరిగి ఇస్తుంది. +మేము `messenger` వేరియబుల్‌కు బదులుగా ఒక ఫంక్షన్‌ను ఉపయోగిస్తాము, దీని నుండి వారసత్వంగా వచ్చే కాంట్రాక్టులు ఏ క్రాస్ డొమైన్ మెసెంజర్‌ను ఉపయోగించాలో పేర్కొనడానికి ఒక అల్గారిథమ్‌ను ఉపయోగించడానికి అనుమతిస్తాయి. + +```solidity + + /** + * మరొక డొమైన్‌లోని ఒక ఖాతాకు సందేశాన్ని పంపుతుంది + * @param _crossDomainTarget గమ్యస్థాన డొమైన్‌లోని ఉద్దేశించిన గ్రహీత + * @param _message లక్ష్యానికి పంపాల్సిన డేటా (సాధారణంగా `onlyFromCrossDomainAccount()`తో + * ఒక ఫంక్షన్‌కు కాల్‌డేటా) + * @param _gasLimit లక్ష్య డొమైన్‌పై సందేశ రసీదు కోసం గ్యాస్‌లిమిట్. + */ + function sendCrossDomainMessage( + address _crossDomainTarget, + uint32 _gasLimit, + bytes memory _message +``` + +చివరగా, ఇతర లేయర్‌కు సందేశాన్ని పంపే ఫంక్షన్. + +```solidity + ) internal { + // slither-disable-next-line reentrancy-events, reentrancy-benign +``` + +[Slither](https://github.com/crytic/slither) అనేది బలహీనతలు మరియు ఇతర సంభావ్య సమస్యల కోసం ప్రతి కాంట్రాక్ట్‌పై ఆప్టిమిజం నడిపే ఒక స్టాటిక్ అనలైజర్. +ఈ సందర్భంలో, కింది లైన్ రెండు బలహీనతలను ప్రేరేపిస్తుంది: + +1. [రీఎంట్రాన్సీ ఈవెంట్‌లు](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3) +2. [నిరపాయమైన రీఎంట్రాన్సీ](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2) + +```solidity + getCrossDomainMessenger().sendMessage(_crossDomainTarget, _message, _gasLimit); + } +} +``` + +ఈ సందర్భంలో, `getCrossDomainMessenger()` ఒక విశ్వసనీయ చిరునామాను తిరిగి ఇస్తుందని మాకు తెలిసినప్పటికీ, Slitherకు అది తెలుసుకునే మార్గం లేనప్పటికీ, మేము రీఎంట్రాన్సీ గురించి ఆందోళన చెందము. + +### L1 బ్రిడ్జ్ కాంట్రాక్ట్ {#the-l1-bridge-contract} + +[ఈ కాంట్రాక్ట్ కోసం సోర్స్ కోడ్ ఇక్కడ ఉంది](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1StandardBridge.sol). + +```solidity +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; +``` + +ఇంటర్‌ఫేస్‌లు ఇతర కాంట్రాక్టులలో భాగంగా ఉండవచ్చు, కాబట్టి అవి విస్తృత శ్రేణి Solidity వెర్షన్‌లకు మద్దతు ఇవ్వాలి. +కానీ బ్రిడ్జ్ అనేది మన కాంట్రాక్ట్, మరియు అది ఏ Solidity వెర్షన్‌ను ఉపయోగిస్తుందనే దానిపై మేము కఠినంగా ఉండవచ్చు. + +```solidity +/* Interface Imports */ +import { IL1StandardBridge } from "./IL1StandardBridge.sol"; +import { IL1ERC20Bridge } from "./IL1ERC20Bridge.sol"; +``` + +[IL1ERC20Bridge](#IL1ERC20Bridge) మరియు [IL1StandardBridge](#IL1StandardBridge) పైన వివరించబడ్డాయి. + +```solidity +import { IL2ERC20Bridge } from "../../L2/messaging/IL2ERC20Bridge.sol"; +``` + +[ఈ ఇంటర్‌ఫేస్](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/IL2ERC20Bridge.sol) L2లోని స్టాండర్డ్ బ్రిడ్జ్‌ను నియంత్రించడానికి సందేశాలను సృష్టించడానికి మాకు అనుమతిస్తుంది. + +```solidity +import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +``` + +[ఈ ఇంటర్‌ఫేస్](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol) ERC-20 కాంట్రాక్టులను నియంత్రించడానికి మాకు అనుమతిస్తుంది. +[మీరు దాని గురించి ఇక్కడ మరింత చదవవచ్చు](/developers/tutorials/erc20-annotated-code/#the-interface). + +```solidity +/* Library Imports */ +import { CrossDomainEnabled } from "../../libraries/bridge/CrossDomainEnabled.sol"; +``` + +[పైన వివరించినట్లు](#crossdomainenabled), ఈ కాంట్రాక్ట్ ఇంటర్‌లేయర్ మెసేజింగ్ కోసం ఉపయోగించబడుతుంది. + +```solidity +import { Lib_PredeployAddresses } from "../../libraries/constants/Lib_PredeployAddresses.sol"; +``` + +[`Lib_PredeployAddresses`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol) ఎల్లప్పుడూ ఒకే చిరునామాను కలిగి ఉండే L2 కాంట్రాక్టుల కోసం చిరునామాలను కలిగి ఉంటుంది. ఇందులో L2లోని స్టాండర్డ్ బ్రిడ్జ్ కూడా ఉంటుంది. + +```solidity +import { Address } from "@openzeppelin/contracts/utils/Address.sol"; +``` + +[ఓపెన్‌జెప్పెలిన్ యొక్క అడ్రస్ యుటిలిటీస్](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol). ఇది కాంట్రాక్ట్ చిరునామాలు మరియు బాహ్యంగా యాజమాన్య ఖాతాలకు (EOA) చెందిన వాటి మధ్య తేడాను గుర్తించడానికి ఉపయోగించబడుతుంది. + +గమనించండి, ఇది ఒక పరిపూర్ణ పరిష్కారం కాదు, ఎందుకంటే ప్రత్యక్ష కాల్స్ మరియు కాంట్రాక్ట్ కన్‌స్ట్రక్టర్ నుండి చేసిన కాల్స్ మధ్య తేడాను గుర్తించడానికి మార్గం లేదు, కానీ కనీసం ఇది కొన్ని సాధారణ వినియోగదారు లోపాలను గుర్తించడానికి మరియు నివారించడానికి మాకు అనుమతిస్తుంది. + +```solidity +import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +``` + +[ERC-20 స్టాండర్డ్](https://eips.ethereum.org/EIPS/eip-20) వైఫల్యాన్ని నివేదించడానికి ఒక కాంట్రాక్ట్‌కు రెండు మార్గాలకు మద్దతు ఇస్తుంది: + +1. తిరిగి వెళ్లు +2. `false`ని తిరిగి ఇవ్వండి + +రెండు కేసులను నిర్వహించడం మా కోడ్‌ను మరింత క్లిష్టతరం చేస్తుంది, కాబట్టి బదులుగా మేము [ఓపెన్‌జెప్పెలిన్ యొక్క `SafeERC20`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol)ను ఉపయోగిస్తాము, ఇది [అన్ని వైఫల్యాలు తిరిగి వెళ్ళడానికి దారితీస్తాయని](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol#L96) నిర్ధారిస్తుంది. + +```solidity +/** + * @title L1StandardBridge + * @dev L1 ETH మరియు ERC20 బ్రిడ్జ్ అనేది డిపాజిట్ చేయబడిన L1 నిధులను మరియు L2లో ఉపయోగంలో ఉన్న స్టాండర్డ్ టోకెన్‌లను నిల్వ చేసే కాంట్రాక్ట్. ఇది సంబంధిత L2 బ్రిడ్జ్‌ను సింక్రొనైజ్ చేస్తుంది, డిపాజిట్ల గురించి తెలియజేస్తుంది మరియు కొత్తగా ఖరారు చేయబడిన విత్‌డ్రాయల్స్ కోసం దాని నుండి వింటుంది. + * + */ +contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled { + using SafeERC20 for IERC20; +``` + +మేము `IERC20` ఇంటర్‌ఫేస్‌ను ఉపయోగించిన ప్రతిసారీ `SafeERC20` రేపర్‌ను ఉపయోగించమని పేర్కొనడానికి ఈ లైన్ మార్గం. + +```solidity + + /******************************** + * బాహ్య కాంట్రాక్ట్ రిఫరెన్స్‌లు * + ********************************/ + + address public l2TokenBridge; +``` + +[L2StandardBridge](#the-l2-bridge-contract) యొక్క చిరునామా. + +```solidity + + // L1 టోకెన్‌ను L2 టోకెన్‌కు మ్యాప్ చేస్తుంది మరియు డిపాజిట్ చేయబడిన L1 టోకెన్ యొక్క బ్యాలెన్స్ + mapping(address => mapping(address => uint256)) public deposits; +``` + +ఇటువంటి డబుల్ [మ్యాపింగ్](https://www.tutorialspoint.com/solidity/solidity_mappings.htm) మీరు [రెండు-డైమెన్షనల్ స్పార్స్ శ్రేణిని](https://en.wikipedia.org/wiki/Sparse_matrix) నిర్వచించే మార్గం. +ఈ డేటా స్ట్రక్చర్‌లోని విలువలు `deposit[L1 టోకెన్ addr][L2 టోకెన్ addr]`గా గుర్తించబడతాయి. +డిఫాల్ట్ విలువ సున్నా. +వేరొక విలువకు సెట్ చేయబడిన సెల్స్ మాత్రమే స్టోరేజ్‌కు వ్రాయబడతాయి. + +```solidity + + /*************** + * కన్‌స్ట్రక్టర్ * + ***************/ + + // ఈ కాంట్రాక్ట్ ప్రాక్సీ వెనుక ఉంటుంది, కాబట్టి కన్‌స్ట్రక్టర్ పరామితులు ఉపయోగించబడవు. + constructor() CrossDomainEnabled(address(0)) {} +``` + +స్టోరేజ్‌లోని అన్ని వేరియబుల్స్‌ను కాపీ చేయకుండానే ఈ కాంట్రాక్ట్‌ను అప్‌గ్రేడ్ చేయగలగాలి. +అలా చేయడానికి, మేము [`ప్రాక్సీ`](https://docs.openzeppelin.com/contracts/3.x/api/proxy)ని ఉపయోగిస్తాము, ఇది ప్రాక్సీ కాంట్రాక్ట్ ద్వారా నిల్వ చేయబడిన చిరునామా ఉన్న వేరొక కాంట్రాక్ట్‌కు కాల్స్‌ను బదిలీ చేయడానికి [`delegatecall`](https://solidity-by-example.org/delegatecall/)ని ఉపయోగించే ఒక కాంట్రాక్ట్ (మీరు అప్‌గ్రేడ్ చేసినప్పుడు మీరు ప్రాక్సీకి ఆ చిరునామాను మార్చమని చెబుతారు). +మీరు `delegatecall`ని ఉపయోగించినప్పుడు, స్టోరేజ్ _కాలింగ్_ కాంట్రాక్ట్ యొక్క స్టోరేజ్‌గానే ఉంటుంది, కాబట్టి అన్ని కాంట్రాక్ట్ స్టేట్ వేరియబుల్స్ యొక్క విలువలు ప్రభావితం కావు. + +ఈ నమూనా యొక్క ఒక ప్రభావం ఏమిటంటే, `delegatecall` యొక్క _కాల్డ్_ అయిన కాంట్రాక్ట్ యొక్క స్టోరేజ్ ఉపయోగించబడదు మరియు అందువల్ల దానికి పంపిన కన్‌స్ట్రక్టర్ విలువలు పట్టింపు లేదు. +`CrossDomainEnabled` కన్‌స్ట్రక్టర్‌కు మేము ఒక అర్థరహిత విలువను అందించడానికి ఇదే కారణం. +కింది ఇనిషియలైజేషన్ కన్‌స్ట్రక్టర్ నుండి వేరుగా ఉండటానికి కూడా ఇదే కారణం. + +```solidity + /****************** + * ఇనిషియలైజేషన్ * + ******************/ + + /** + * @param _l1messenger క్రాస్-చైన్ కమ్యూనికేషన్స్ కోసం ఉపయోగించే L1 మెసెంజర్ చిరునామా. + * @param _l2TokenBridge L2 స్టాండర్డ్ బ్రిడ్జ్ చిరునామా. + */ + // slither-disable-next-line external-function +``` + +ఈ [Slither టెస్ట్](https://github.com/crytic/slither/wiki/Detector-Documentation#public-function-that-could-be-declared-external) కాంట్రాక్ట్ కోడ్ నుండి పిలవబడని మరియు అందువల్ల `public`కు బదులుగా `external`గా ప్రకటించగల ఫంక్షన్‌లను గుర్తిస్తుంది. +`external` ఫంక్షన్‌ల యొక్క గ్యాస్ ఖర్చు తక్కువగా ఉండవచ్చు, ఎందుకంటే వాటికి కాల్‌డేటాలో పరామితులు అందించబడవచ్చు. +`public`గా ప్రకటించబడిన ఫంక్షన్‌లు కాంట్రాక్ట్ లోపల నుండి యాక్సెస్ చేయగలవుగా ఉండాలి. +కాంట్రాక్టులు తమ సొంత కాల్‌డేటాను మార్చలేవు, కాబట్టి పరామితులు మెమరీలో ఉండాలి. +అటువంటి ఫంక్షన్‌ను బాహ్యంగా పిలిచినప్పుడు, కాల్‌డేటాను మెమరీకి కాపీ చేయడం అవసరం, దీనికి గ్యాస్ ఖర్చవుతుంది. +ఈ సందర్భంలో, ఫంక్షన్ ఒక్కసారి మాత్రమే పిలవబడుతుంది, కాబట్టి అసమర్థత మాకు పట్టింపు లేదు. + +```solidity + function initialize(address _l1messenger, address _l2TokenBridge) public { + require(messenger == address(0), "Contract has already been initialized."); +``` + +`initialize` ఫంక్షన్ ఒక్కసారి మాత్రమే పిలవబడాలి. +L1 క్రాస్ డొమైన్ మెసెంజర్ లేదా L2 టోకెన్ బ్రిడ్జ్ యొక్క చిరునామా మారితే, మేము కొత్త ప్రాక్సీని మరియు దానిని పిలిచే కొత్త బ్రిడ్జ్‌ను సృష్టిస్తాము. +మొత్తం సిస్టమ్ అప్‌గ్రేడ్ చేయబడినప్పుడు తప్ప ఇది జరగడం చాలా అరుదు. + +గమనించండి, ఈ ఫంక్షన్‌లో _ఎవరు_ దీనిని పిలవగలరో పరిమితం చేసే ఏ యంత్రాంగం లేదు. +దీని అర్థం, సిద్ధాంతపరంగా ఒక దాడి చేసేవాడు మేము ప్రాక్సీని మరియు బ్రిడ్జ్ యొక్క మొదటి వెర్షన్‌ను డిప్లాయ్ చేసే వరకు వేచి ఉండి, ఆ తర్వాత చట్టబద్ధమైన వినియోగదారు చేసే ముందు `initialize` ఫంక్షన్‌ను చేరుకోవడానికి [ఫ్రంట్-రన్](https://solidity-by-example.org/hacks/front-running/) చేయగలడు. కానీ దీనిని నివారించడానికి రెండు పద్ధతులు ఉన్నాయి: + +1. కాంట్రాక్టులు నేరుగా EOA ద్వారా కాకుండా [వాటిని సృష్టించడానికి మరొక కాంట్రాక్ట్ ఉన్న లావాదేవీలో](https://medium.com/upstate-interactive/creating-a-contract-with-a-smart-contract-bdb67c5c8595) డిప్లాయ్ చేయబడితే, మొత్తం ప్రక్రియ పరమాణువుగా ఉంటుంది, మరియు ఏ ఇతర లావాదేవీ అమలు చేయబడకముందే పూర్తి అవుతుంది. +2. `initialize`కు చట్టబద్ధమైన కాల్ విఫలమైతే, కొత్తగా సృష్టించబడిన ప్రాక్సీ మరియు బ్రిడ్జ్‌ను విస్మరించి, కొత్త వాటిని సృష్టించడం ఎల్లప్పుడూ సాధ్యమే. + +```solidity + messenger = _l1messenger; + l2TokenBridge = _l2TokenBridge; + } +``` + +బ్రిడ్జ్‌కు తెలియాల్సిన రెండు పరామితులు ఇవి. + +```solidity + + /************** + * డిపాజిటింగ్ * + **************/ + + /** @dev పంపినవారు EOA అయి ఉండాలని కోరే మాడిఫైయర్. ఈ తనిఖీని ఒక దురుద్దేశపూర్వక + * కాంట్రాక్ట్ ద్వారా initcode ద్వారా తప్పించుకోవచ్చు, కానీ ఇది మనం నివారించాలనుకుంటున్న వినియోగదారు లోపాన్ని చూసుకుంటుంది. + */ + modifier onlyEOA() { + // కాంట్రాక్ట్‌ల నుండి డిపాజిట్‌లను ఆపడానికి ఉపయోగించబడుతుంది (ప్రమాదవశాత్తు కోల్పోయిన టోకెన్‌లను నివారించడానికి) + require(!Address.isContract(msg.sender), "Account not EOA"); + _; + } +``` + +ఓపెన్‌జెప్పెలిన్ యొక్క `Address` యుటిలిటీస్ మాకు అవసరం కావడానికి ఇదే కారణం. + +```solidity + /** + * @dev ఈ ఫంక్షన్‌ను ఏ డేటా లేకుండా పిలవవచ్చు + * L2లోని కాలర్ బ్యాలెన్స్‌కు ETH మొత్తాన్ని డిపాజిట్ చేయడానికి. + * receive ఫంక్షన్ డేటాను తీసుకోదు కాబట్టి, ఒక సంప్రదాయవాద + * డిఫాల్ట్ మొత్తం L2కి ఫార్వార్డ్ చేయబడుతుంది. + */ + receive() external payable onlyEOA { + _initiateETHDeposit(msg.sender, msg.sender, 200_000, bytes("")); + } +``` + +ఈ ఫంక్షన్ పరీక్ష ప్రయోజనాల కోసం ఉంది. +గమనించండి, ఇది ఇంటర్‌ఫేస్ నిర్వచనాలలో కనిపించదు - ఇది సాధారణ ఉపయోగం కోసం కాదు. + +```solidity + /** + * @inheritdoc IL1StandardBridge + */ + function depositETH(uint32 _l2Gas, bytes calldata _data) external payable onlyEOA { + _initiateETHDeposit(msg.sender, msg.sender, _l2Gas, _data); + } + + /** + * @inheritdoc IL1StandardBridge + */ + function depositETHTo( + address _to, + uint32 _l2Gas, + bytes calldata _data + ) external payable { + _initiateETHDeposit(msg.sender, _to, _l2Gas, _data); + } +``` + +ఈ రెండు ఫంక్షన్‌లు `_initiateETHDeposit` చుట్టూ రేపర్స్, ఇది వాస్తవ ETH డిపాజిట్‌ను నిర్వహించే ఫంక్షన్. + +```solidity + /** + * @dev ETHని నిల్వ చేయడం మరియు డిపాజిట్ గురించి L2 ETH గేట్‌వేకు తెలియజేయడం ద్వారా డిపాజిట్‌ల కోసం తర్కాన్ని నిర్వహిస్తుంది. + * @param _from L1పై డిపాజిట్‌ను లాగాల్సిన ఖాతా. + * @param _to L2పై డిపాజిట్‌ను ఇవ్వాల్సిన ఖాతా. + * @param _l2Gas L2లో డిపాజిట్ పూర్తి చేయడానికి అవసరమైన గ్యాస్ పరిమితి. + * @param _data L2కి ఫార్వార్డ్ చేయడానికి ఐచ్ఛిక డేటా. ఈ డేటా బాహ్య కాంట్రాక్టుల సౌలభ్యం కోసం మాత్రమే అందించబడుతుంది. గరిష్ట పొడవును అమలు చేయడం మినహా, ఈ కాంట్రాక్టులు దాని కంటెంట్ గురించి ఎటువంటి హామీలను ఇవ్వవు. + */ + function _initiateETHDeposit( + address _from, + address _to, + uint32 _l2Gas, + bytes memory _data + ) internal { + // finalizeDeposit కాల్ కోసం కాల్‌డేటాను నిర్మించండి + bytes memory message = abi.encodeWithSelector( +``` + +క్రాస్ డొమైన్ సందేశాలు పనిచేసే విధానం ఏమిటంటే, గమ్యస్థాన కాంట్రాక్ట్ దాని కాల్‌డేటాగా సందేశంతో పిలవబడుతుంది. +Solidity కాంట్రాక్టులు ఎల్లప్పుడూ తమ కాల్‌డేటాను +[ABI స్పెసిఫికేషన్‌లకు](https://docs.soliditylang.org/en/v0.8.12/abi-spec.html) అనుగుణంగా వివరిస్తాయి. +Solidity ఫంక్షన్ [`abi.encodeWithSelector`](https://docs.soliditylang.org/en/v0.8.12/units-and-global-variables.html#abi-encoding-and-decoding-functions) ఆ కాల్‌డేటాను సృష్టిస్తుంది. + +```solidity + IL2ERC20Bridge.finalizeDeposit.selector, + address(0), + Lib_PredeployAddresses.OVM_ETH, + _from, + _to, + msg.value, + _data + ); +``` + +ఇక్కడి సందేశం ఈ పరామితులతో [`finalizeDeposit` ఫంక్షన్‌ను](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/L2StandardBridge.sol#L141-L148) పిలవడం: + +| పరామితి | విలువ | అర్థం | +| ------------------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| \_l1Token | చిరునామా(0) | L1లో ETH (ఇది ఒక ERC-20 టోకెన్ కాదు) కోసం ప్రత్యేక విలువ | +| \_l2Token | Lib_PredeployAddresses.OVM_ETH | ఆప్టిమిజంలో ETHని నిర్వహించే L2 కాంట్రాక్ట్, `0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000` (ఈ కాంట్రాక్ట్ అంతర్గత ఆప్టిమిజం ఉపయోగం కోసం మాత్రమే) | +| \_from | \_from | ETHని పంపే L1లోని చిరునామా | +| \_to | \_to | ETHని స్వీకరించే L2లోని చిరునామా | +| మొత్తం | msg.value | పంపిన wei మొత్తం (ఇది ఇప్పటికే బ్రిడ్జ్‌కు పంపబడింది) | +| \_data | \_data | డిపాజిట్‌కు జోడించడానికి అదనపు డేటా | + +```solidity + // కాల్‌డేటాను L2కి పంపండి + // slither-disable-next-line reentrancy-events + sendCrossDomainMessage(l2TokenBridge, _l2Gas, message); +``` + +సందేశాన్ని క్రాస్ డొమైన్ మెసెంజర్ ద్వారా పంపండి. + +```solidity + // slither-disable-next-line reentrancy-events + emit ETHDepositInitiated(_from, _to, msg.value, _data); + } +``` + +ఈ బదిలీ గురించి వినే ఏ వికేంద్రీకృత అప్లికేషన్‌కు తెలియజేయడానికి ఒక ఈవెంట్‌ను విడుదల చేయండి. + +```solidity + /** + * @inheritdoc IL1ERC20Bridge + */ + function depositERC20( + . + . + . + ) external virtual onlyEOA { + _initiateERC20Deposit(_l1Token, _l2Token, msg.sender, msg.sender, _amount, _l2Gas, _data); + } + + /** + * @inheritdoc IL1ERC20Bridge + */ + function depositERC20To( + . + . + . + ) external virtual { + _initiateERC20Deposit(_l1Token, _l2Token, msg.sender, _to, _amount, _l2Gas, _data); + } +``` + +ఈ రెండు ఫంక్షన్‌లు `_initiateERC20Deposit` చుట్టూ రేపర్స్, ఇది వాస్తవ ERC-20 డిపాజిట్‌ను నిర్వహించే ఫంక్షన్. + +```solidity + /** + * @dev డిపాజిట్ గురించి L2 డిపాజిటెడ్ టోకెన్ + * కాంట్రాక్ట్‌కు తెలియజేయడం మరియు L1 నిధులను లాక్ చేయడానికి ఒక హ్యాండ్లర్‌ను పిలవడం ద్వారా డిపాజిట్‌ల కోసం తర్కాన్ని నిర్వహిస్తుంది. (ఉదా., transferFrom) + * + * @param _l1Token మేము డిపాజిట్ చేస్తున్న L1 ERC20 యొక్క చిరునామా + * @param _l2Token L1 సంబంధిత L2 ERC20 యొక్క చిరునామా + * @param _from L1పై డిపాజిట్‌ను లాగాల్సిన ఖాతా + * @param _to L2పై డిపాజిట్‌ను ఇవ్వాల్సిన ఖాతా + * @param _amount డిపాజిట్ చేయడానికి ERC20 మొత్తం. + * @param _l2Gas L2లో డిపాజిట్ పూర్తి చేయడానికి అవసరమైన గ్యాస్ పరిమితి. + * @param _data L2కి ఫార్వార్డ్ చేయడానికి ఐచ్ఛిక డేటా. ఈ డేటా బాహ్య కాంట్రాక్టుల సౌలభ్యం కోసం మాత్రమే అందించబడుతుంది. గరిష్ట పొడవును అమలు చేయడం మినహా, ఈ కాంట్రాక్టులు దాని కంటెంట్ గురించి ఎటువంటి హామీలను ఇవ్వవు. + */ + function _initiateERC20Deposit( + address _l1Token, + address _l2Token, + address _from, + address _to, + uint256 _amount, + uint32 _l2Gas, + bytes calldata _data + ) internal { +``` + +ఈ ఫంక్షన్ పైన ఉన్న `_initiateETHDeposit`తో సమానంగా ఉంటుంది, కొన్ని ముఖ్యమైన తేడాలతో. +మొదటి తేడా ఏమిటంటే, ఈ ఫంక్షన్ టోకెన్ చిరునామాలను మరియు బదిలీ చేయాల్సిన మొత్తాన్ని పరామితులుగా స్వీకరిస్తుంది. +ETH విషయంలో, బ్రిడ్జ్‌కు కాల్ ఇప్పటికే బ్రిడ్జ్ ఖాతాకు ఆస్తి బదిలీని కలిగి ఉంటుంది (`msg.value`). + +```solidity + // L1లో డిపాజిట్ ప్రారంభించబడినప్పుడు, L1 బ్రిడ్జ్ భవిష్యత్ + // విత్‌డ్రాయల్స్ కోసం నిధులను దానికి బదిలీ చేస్తుంది. safeTransferFrom కాంట్రాక్ట్‌లో కోడ్ ఉందో లేదో కూడా తనిఖీ చేస్తుంది, కాబట్టి + // _from ఒక EOA లేదా చిరునామా(0) అయితే ఇది విఫలమవుతుంది. + // slither-disable-next-line reentrancy-events, reentrancy-benign + IERC20(_l1Token).safeTransferFrom(_from, address(this), _amount); +``` + +ERC-20 టోకెన్ బదిలీలు ETH నుండి భిన్నమైన ప్రక్రియను అనుసరిస్తాయి: + +1. వినియోగదారు (`_from`) తగిన టోకెన్‌లను బదిలీ చేయడానికి బ్రిడ్జ్‌కు అనుమతి ఇస్తాడు. +2. వినియోగదారు టోకెన్ కాంట్రాక్ట్ చిరునామా, మొత్తం మొదలైన వాటితో బ్రిడ్జ్‌ను పిలుస్తాడు. +3. బ్రిడ్జ్ డిపాజిట్ ప్రక్రియలో భాగంగా టోకెన్‌లను (దానికి) బదిలీ చేస్తుంది. + +మొదటి దశ చివరి రెండు నుండి వేరొక లావాదేవీలో జరగవచ్చు. +అయినప్పటికీ, ఫ్రంట్-రన్నింగ్ ఒక సమస్య కాదు ఎందుకంటే `_initiateERC20Deposit` (`depositERC20` మరియు `depositERC20To`) అని పిలిచే రెండు ఫంక్షన్‌లు ఈ ఫంక్షన్‌ను `msg.sender`ని `_from` పరామితిగా మాత్రమే పిలుస్తాయి. + +```solidity + // _l2Token.finalizeDeposit(_to, _amount) కోసం కాల్‌డేటాను నిర్మించండి + bytes memory message = abi.encodeWithSelector( + IL2ERC20Bridge.finalizeDeposit.selector, + _l1Token, + _l2Token, + _from, + _to, + _amount, + _data + ); + + // కాల్‌డేటాను L2కి పంపండి + // slither-disable-next-line reentrancy-events, reentrancy-benign + sendCrossDomainMessage(l2TokenBridge, _l2Gas, message); + + // slither-disable-next-line reentrancy-benign + deposits[_l1Token][_l2Token] = deposits[_l1Token][_l2Token] + _amount; +``` + +డిపాజిట్ చేయబడిన టోకెన్ల మొత్తాన్ని `deposits` డేటా స్ట్రక్చర్‌కు జోడించండి. +అదే L1 ERC-20 టోకెన్‌కు సంబంధించిన అనేక చిరునామాలు L2లో ఉండవచ్చు, కాబట్టి డిపాజిట్‌లను ట్రాక్ చేయడానికి బ్రిడ్జ్ యొక్క L1 ERC-20 టోకెన్ బ్యాలెన్స్‌ను ఉపయోగించడం సరిపోదు. + +```solidity + + // slither-disable-next-line reentrancy-events + emit ERC20DepositInitiated(_l1Token, _l2Token, _from, _to, _amount, _data); + } + + /************************* + * క్రాస్-చైన్ ఫంక్షన్‌లు * + *************************/ + + /** + * @inheritdoc IL1StandardBridge + */ + function finalizeETHWithdrawal( + address _from, + address _to, + uint256 _amount, + bytes calldata _data +``` + +L2 బ్రిడ్జ్ L2 క్రాస్ డొమైన్ మెసెంజర్‌కు సందేశాన్ని పంపుతుంది, ఇది L1 క్రాస్ డొమైన్ మెసెంజర్ ఈ ఫంక్షన్‌ను పిలవడానికి కారణమవుతుంది (వాస్తవానికి, [సందేశాన్ని ఖరారు చేసే లావాదేవీ](https://community.optimism.io/docs/developers/bridge/messaging/#fees-for-l2-%E2%87%92-l1-transactions) L1లో సమర్పించబడిన తర్వాత). + +```solidity + ) external onlyFromCrossDomainAccount(l2TokenBridge) { +``` + +ఇది క్రాస్ డొమైన్ మెసెంజర్ నుండి మరియు L2 టోకెన్ బ్రిడ్జ్ నుండి వచ్చిన ఒక _చట్టబద్ధమైన_ సందేశం అని నిర్ధారించుకోండి. +ఈ ఫంక్షన్ బ్రిడ్జ్ నుండి ETHని ఉపసంహరించుకోవడానికి ఉపయోగించబడుతుంది, కాబట్టి ఇది అధీకృత కాలర్ ద్వారా మాత్రమే పిలవబడుతుందని మేము నిర్ధారించుకోవాలి. + +```solidity + // slither-disable-next-line reentrancy-events + (bool success, ) = _to.call{ value: _amount }(new bytes(0)); +``` + +ETHని బదిలీ చేయడానికి మార్గం `msg.value`లో wei మొత్తంతో గ్రహీతను పిలవడం. + +```solidity + require(success, "TransferHelper::safeTransferETH: ETH transfer failed"); + + // slither-disable-next-line reentrancy-events + emit ETHWithdrawalFinalized(_from, _to, _amount, _data); +``` + +విత్‌డ్రాయల్ గురించి ఒక ఈవెంట్‌ను విడుదల చేయండి. + +```solidity + } + + /** + * @inheritdoc IL1ERC20Bridge + */ + function finalizeERC20Withdrawal( + address _l1Token, + address _l2Token, + address _from, + address _to, + uint256 _amount, + bytes calldata _data + ) external onlyFromCrossDomainAccount(l2TokenBridge) { +``` + +ఈ ఫంక్షన్ పైన ఉన్న `finalizeETHWithdrawal`తో సమానంగా ఉంటుంది, ERC-20 టోకెన్‌ల కోసం అవసరమైన మార్పులతో. + +```solidity + deposits[_l1Token][_l2Token] = deposits[_l1Token][_l2Token] - _amount; +``` + +`deposits` డేటా స్ట్రక్చర్‌ను అప్‌డేట్ చేయండి. + +```solidity + + // L1లో విత్‌డ్రాయల్ ఖరారు చేయబడినప్పుడు, L1 బ్రిడ్జ్ నిధులను విత్‌డ్రాయర్‌కు బదిలీ చేస్తుంది + // slither-disable-next-line reentrancy-events + IERC20(_l1Token).safeTransfer(_to, _amount); + + // slither-disable-next-line reentrancy-events + emit ERC20WithdrawalFinalized(_l1Token, _l2Token, _from, _to, _amount, _data); + } + + + /***************************** + * తాత్కాలికం - ETHని మైగ్రేట్ చేయడం * + *****************************/ + + /** + * @dev ఖాతాకు ETH బ్యాలెన్స్‌ను జోడిస్తుంది. ఇది పాత గేట్‌వే నుండి కొత్త గేట్‌వేకు + * ETHని మైగ్రేట్ చేయడానికి అనుమతించడానికి ఉద్దేశించబడింది. + * గమనిక: ఇది ఒక అప్‌గ్రేడ్ కోసం మాత్రమే మిగిలి ఉంది, తద్వారా పాత కాంట్రాక్ట్ నుండి + * మైగ్రేట్ చేయబడిన ETHని మేము స్వీకరించగలుగుతాము + */ + function donateETH() external payable {} +} +``` + +బ్రిడ్జ్ యొక్క మునుపటి అమలు ఒకటి ఉండేది. +మేము ఆ అమలు నుండి దీనికి మారినప్పుడు, మేము అన్ని ఆస్తులను తరలించవలసి వచ్చింది. +ERC-20 టోకెన్‌లను కేవలం తరలించవచ్చు. +అయితే, ఒక కాంట్రాక్ట్‌కు ETHని బదిలీ చేయడానికి మీకు ఆ కాంట్రాక్ట్ ఆమోదం అవసరం, అదే `donateETH` మాకు అందిస్తుంది. + +## L2లో ERC-20 టోకెన్లు {#erc-20-tokens-on-l2} + +ఒక ERC-20 టోకెన్ స్టాండర్డ్ బ్రిడ్జ్‌కు సరిపోవాలంటే, అది స్టాండర్డ్ బ్రిడ్జ్‌కు, మరియు _మాత్రమే_ స్టాండర్డ్ బ్రిడ్జ్‌కు టోకెన్‌లను ముద్రించడానికి అనుమతించాలి. +ఆప్టిమిజంలో చలామణిలో ఉన్న టోకెన్ల సంఖ్య L1 బ్రిడ్జ్ కాంట్రాక్ట్‌లో లాక్ చేయబడిన టోకెన్ల సంఖ్యకు సమానంగా ఉందని బ్రిడ్జ్‌లు నిర్ధారించుకోవాలి కాబట్టి ఇది అవసరం. +L2లో ఎక్కువ టోకెన్లు ఉంటే, కొంతమంది వినియోగదారులు తమ ఆస్తులను తిరిగి L1కి బ్రిడ్జ్ చేయలేరు. +విశ్వసనీయమైన బ్రిడ్జ్‌కు బదులుగా, మేము తప్పనిసరిగా [ఫ్రాక్షనల్ రిజర్వ్ బ్యాంకింగ్‌ను](https://www.investopedia.com/terms/f/fractionalreservebanking.asp) పునఃసృష్టిస్తాము. +L1లో ఎక్కువ టోకెన్లు ఉంటే, ఆ టోకెన్లలో కొన్ని బ్రిడ్జ్ కాంట్రాక్ట్‌లో శాశ్వతంగా లాక్ చేయబడి ఉంటాయి, ఎందుకంటే L2 టోకెన్‌లను బర్న్ చేయకుండా వాటిని విడుదల చేయడానికి మార్గం లేదు. + +### IL2StandardERC20 {#il2standarderc20} + +L2లో స్టాండర్డ్ బ్రిడ్జ్‌ను ఉపయోగించే ప్రతి ERC-20 టోకెన్ [ఈ ఇంటర్‌ఫేస్‌ను](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/standards/IL2StandardERC20.sol) అందించాలి, ఇందులో స్టాండర్డ్ బ్రిడ్జ్‌కు అవసరమైన ఫంక్షన్‌లు మరియు ఈవెంట్‌లు ఉంటాయి. + +```solidity +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +``` + +[స్టాండర్డ్ ERC-20 ఇంటర్‌ఫేస్](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol)లో `mint` మరియు `burn` ఫంక్షన్‌లు ఉండవు. +ఆ పద్ధతులు [ERC-20 స్టాండర్డ్](https://eips.ethereum.org/EIPS/eip-20)చే అవసరం లేదు, ఇది టోకెన్‌లను సృష్టించడానికి మరియు నాశనం చేయడానికి యంత్రాంగాలను పేర్కొనలేదు. + +```solidity +import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; +``` + +[ERC-165 ఇంటర్‌ఫేస్](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol) ఒక కాంట్రాక్ట్ ఏ ఫంక్షన్‌లను అందిస్తుందో పేర్కొనడానికి ఉపయోగించబడుతుంది. +[మీరు ఇక్కడ స్టాండర్డ్ చదవవచ్చు](https://eips.ethereum.org/EIPS/eip-165). + +```solidity +interface IL2StandardERC20 is IERC20, IERC165 { + function l1Token() external returns (address); +``` + +ఈ ఫంక్షన్ ఈ కాంట్రాక్ట్‌కు బ్రిడ్జ్ చేయబడిన L1 టోకెన్ చిరునామాను అందిస్తుంది. +గమనించండి, వ్యతిరేక దిశలో మనకు సమానమైన ఫంక్షన్ లేదు. +L2 మద్దతు అది అమలు చేయబడినప్పుడు ప్రణాళిక చేయబడిందా లేదా అనే దానితో సంబంధం లేకుండా మేము ఏ L1 టోకెన్‌ను అయినా బ్రిడ్జ్ చేయగలగాలి. + +```solidity + + function mint(address _to, uint256 _amount) external; + + function burn(address _from, uint256 _amount) external; + + event Mint(address indexed _account, uint256 _amount); + event Burn(address indexed _account, uint256 _amount); +} +``` + +టోకెన్‌లను ముద్రించడానికి (సృష్టించడానికి) మరియు బర్న్ చేయడానికి (నాశనం చేయడానికి) ఫంక్షన్‌లు మరియు ఈవెంట్‌లు. +టోకెన్ల సంఖ్య సరైనదని (L1లో లాక్ చేయబడిన టోకెన్ల సంఖ్యకు సమానం) నిర్ధారించడానికి బ్రిడ్జ్ మాత్రమే ఈ ఫంక్షన్‌లను అమలు చేయగల ఏకైక సంస్థగా ఉండాలి. + +### L2StandardERC20 {#L2StandardERC20} + +[ఇది `IL2StandardERC20` ఇంటర్‌ఫేస్ యొక్క మా అమలు](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/standards/L2StandardERC20.sol). +మీకు ఏ రకమైన కస్టమ్ లాజిక్ అవసరం లేకపోతే, మీరు దీనిని ఉపయోగించాలి. + +```solidity +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +``` + +[ఓపెన్‌జెప్పెలిన్ ERC-20 కాంట్రాక్ట్](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol). +ఆప్టిమిజం చక్రాన్ని తిరిగి ఆవిష్కరించడంలో నమ్మకం లేదు, ప్రత్యేకించి ఆ చక్రం బాగా ఆడిట్ చేయబడి, ఆస్తులను కలిగి ఉండేంత విశ్వసనీయంగా ఉండాల్సినప్పుడు. + +```solidity +import "./IL2StandardERC20.sol"; + +contract L2StandardERC20 is IL2StandardERC20, ERC20 { + address public l1Token; + address public l2Bridge; +``` + +మాకు అవసరమైన మరియు సాధారణంగా ERC-20కి అవసరం లేని రెండు అదనపు కాన్ఫిగరేషన్ పరామితులు ఇవి. + +```solidity + + /** + * @param _l2Bridge L2 స్టాండర్డ్ బ్రిడ్జ్ యొక్క చిరునామా. + * @param _l1Token సంబంధిత L1 టోకెన్ యొక్క చిరునామా. + * @param _name ERC20 పేరు. + * @param _symbol ERC20 చిహ్నం. + */ + constructor( + address _l2Bridge, + address _l1Token, + string memory _name, + string memory _symbol + ) ERC20(_name, _symbol) { + l1Token = _l1Token; + l2Bridge = _l2Bridge; + } +``` + +మొదట మనం వారసత్వంగా వచ్చే కాంట్రాక్ట్ కోసం కన్‌స్ట్రక్టర్‌ను పిలిచి (`ERC20(_name, _symbol)`) ఆ తర్వాత మన సొంత వేరియబుల్స్‌ను సెట్ చేయాలి. + +```solidity + + modifier onlyL2Bridge() { + require(msg.sender == l2Bridge, "Only L2 Bridge can mint and burn"); + _; + } + + + // slither-disable-next-line external-function + function supportsInterface(bytes4 _interfaceId) public pure returns (bool) { + bytes4 firstSupportedInterface = bytes4(keccak256("supportsInterface(bytes4)")); // ERC165 + bytes4 secondSupportedInterface = IL2StandardERC20.l1Token.selector ^ + IL2StandardERC20.mint.selector ^ + IL2StandardERC20.burn.selector; + return _interfaceId == firstSupportedInterface || _interfaceId == secondSupportedInterface; + } +``` + +ఇది [ERC-165](https://eips.ethereum.org/EIPS/eip-165) పనిచేసే విధానం. +ప్రతి ఇంటర్‌ఫేస్ అనేక మద్దతు ఉన్న ఫంక్షన్‌లను కలిగి ఉంటుంది, మరియు ఆ ఫంక్షన్‌ల యొక్క [ABI ఫంక్షన్ సెలెక్టర్ల](https://docs.soliditylang.org/en/v0.8.12/abi-spec.html#function-selector) యొక్క [ఎక్స్‌క్లూజివ్ లేదా](https://en.wikipedia.org/wiki/Exclusive_or)గా గుర్తించబడుతుంది. + +L2 బ్రిడ్జ్ అది ఆస్తులను పంపే ERC-20 కాంట్రాక్ట్ ఒక `IL2StandardERC20` అని నిర్ధారించుకోవడానికి ERC-165ని ఒక శానిటీ చెక్‌గా ఉపయోగిస్తుంది. + +**గమనిక:** `supportsInterface`కు తప్పుడు సమాధానాలు ఇవ్వకుండా రోగ్ కాంట్రాక్ట్‌లను నిరోధించడానికి ఏమీ లేదు, కాబట్టి ఇది ఒక శానిటీ చెక్ మెకానిజం, _కాదు_ ఒక భద్రతా మెకానిజం. + +```solidity + // slither-disable-next-line external-function + function mint(address _to, uint256 _amount) public virtual onlyL2Bridge { + _mint(_to, _amount); + + emit Mint(_to, _amount); + } + + // slither-disable-next-line external-function + function burn(address _from, uint256 _amount) public virtual onlyL2Bridge { + _burn(_from, _amount); + + emit Burn(_from, _amount); + } +} +``` + +L2 బ్రిడ్జ్ మాత్రమే ఆస్తులను ముద్రించడానికి మరియు బర్న్ చేయడానికి అనుమతించబడుతుంది. + +`_mint` మరియు `_burn` వాస్తవానికి [ఓపెన్‌జెప్పెలిన్ ERC-20 కాంట్రాక్ట్‌లో](/developers/tutorials/erc20-annotated-code/#the-_mint-and-_burn-functions-_mint-and-_burn) నిర్వచించబడ్డాయి. +ఆ కాంట్రాక్ట్ వాటిని బాహ్యంగా బహిర్గతం చేయదు, ఎందుకంటే టోకెన్‌లను ముద్రించడానికి మరియు బర్న్ చేయడానికి పరిస్థితులు ERC-20ని ఉపయోగించే మార్గాల సంఖ్యంత వైవిధ్యంగా ఉంటాయి. + +## L2 బ్రిడ్జ్ కోడ్ {#l2-bridge-code} + +ఇది ఆప్టిమిజంలో బ్రిడ్జ్‌ను నడిపే కోడ్. +[ఈ కాంట్రాక్ట్ కోసం సోర్స్ ఇక్కడ ఉంది](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/L2StandardBridge.sol). + +```solidity +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +/* Interface Imports */ +import { IL1StandardBridge } from "../../L1/messaging/IL1StandardBridge.sol"; +import { IL1ERC20Bridge } from "../../L1/messaging/IL1ERC20Bridge.sol"; +import { IL2ERC20Bridge } from "./IL2ERC20Bridge.sol"; +``` + +[IL2ERC20Bridge](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/IL2ERC20Bridge.sol) ఇంటర్‌ఫేస్ పైన మనం చూసిన [L1 సమానమైన](#IL1ERC20Bridge)దానికి చాలా పోలి ఉంటుంది. +రెండు ముఖ్యమైన తేడాలు ఉన్నాయి: + +1. L1లో మీరు డిపాజిట్‌లను ప్రారంభిస్తారు మరియు విత్‌డ్రాయల్స్‌ను ఖరారు చేస్తారు. + ఇక్కడ మీరు విత్‌డ్రాయల్స్‌ను ప్రారంభిస్తారు మరియు డిపాజిట్‌లను ఖరారు చేస్తారు. +2. L1లో ETH మరియు ERC-20 టోకెన్ల మధ్య తేడాను గుర్తించడం అవసరం. + L2లో మేము రెండింటికీ ఒకే ఫంక్షన్‌లను ఉపయోగించవచ్చు, ఎందుకంటే ఆప్టిమిజంలో అంతర్గతంగా ETH బ్యాలెన్స్‌లు [0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000](https://explorer.optimism.io/address/0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000) చిరునామాతో ERC-20 టోకెన్‌గా నిర్వహించబడతాయి. + +```solidity +/* Library Imports */ +import { ERC165Checker } from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol"; +import { CrossDomainEnabled } from "../../libraries/bridge/CrossDomainEnabled.sol"; +import { Lib_PredeployAddresses } from "../../libraries/constants/Lib_PredeployAddresses.sol"; + +/* Contract Imports */ +import { IL2StandardERC20 } from "../../standards/IL2StandardERC20.sol"; + +/** + * @title L2StandardBridge + * @dev L2 స్టాండర్డ్ బ్రిడ్జ్ అనేది L1 మరియు L2 మధ్య ETH మరియు ERC20 పరివర్తనలను ప్రారంభించడానికి L1 స్టాండర్డ్ బ్రిడ్జ్‌తో కలిసి పనిచేసే కాంట్రాక్ట్. + * ఈ కాంట్రాక్ట్ L1 స్టాండర్డ్ బ్రిడ్జ్‌లో డిపాజిట్ల గురించి విన్నప్పుడు కొత్త టోకెన్ల కోసం మింటర్‌గా పనిచేస్తుంది. + * ఈ కాంట్రాక్ట్ విత్‌డ్రాయల్ కోసం ఉద్దేశించిన టోకెన్ల బర్నర్‌గా కూడా పనిచేస్తుంది, L1 నిధులను విడుదల చేయమని L1 బ్రిడ్జ్‌కు తెలియజేస్తుంది. + */ +contract L2StandardBridge is IL2ERC20Bridge, CrossDomainEnabled { + /******************************** + * బాహ్య కాంట్రాక్ట్ రిఫరెన్స్‌లు * + ********************************/ + + address public l1TokenBridge; +``` + +L1 బ్రిడ్జ్ చిరునామాను ట్రాక్ చేయండి. +L1 సమానమైన దానికి విరుద్ధంగా, ఇక్కడ మాకు ఈ వేరియబుల్ _అవసరం_ అని గమనించండి. +L1 బ్రిడ్జ్ చిరునామా ముందుగానే తెలియదు. + +```solidity + + /*************** + * కన్‌స్ట్రక్టర్ * + ***************/ + + /** + * @param _l2CrossDomainMessenger ఈ కాంట్రాక్ట్ ఉపయోగించే క్రాస్-డొమైన్ మెసెంజర్. + * @param _l1TokenBridge ప్రధాన చైన్‌కు డిప్లాయ్ చేయబడిన L1 బ్రిడ్జ్ చిరునామా. + */ + constructor(address _l2CrossDomainMessenger, address _l1TokenBridge) + CrossDomainEnabled(_l2CrossDomainMessenger) + { + l1TokenBridge = _l1TokenBridge; + } + + /*************** + * విత్‌డ్రాయింగ్ * + ***************/ + + /** + * @inheritdoc IL2ERC20Bridge + */ + function withdraw( + address _l2Token, + uint256 _amount, + uint32 _l1Gas, + bytes calldata _data + ) external virtual { + _initiateWithdrawal(_l2Token, msg.sender, msg.sender, _amount, _l1Gas, _data); + } + + /** + * @inheritdoc IL2ERC20Bridge + */ + function withdrawTo( + address _l2Token, + address _to, + uint256 _amount, + uint32 _l1Gas, + bytes calldata _data + ) external virtual { + _initiateWithdrawal(_l2Token, msg.sender, _to, _amount, _l1Gas, _data); + } +``` + +ఈ రెండు ఫంక్షన్‌లు విత్‌డ్రాయల్స్‌ను ప్రారంభిస్తాయి. +L1 టోకెన్ చిరునామాను పేర్కొనవలసిన అవసరం లేదని గమనించండి. +L2 టోకెన్లు మాకు L1 సమానమైన చిరునామాను చెబుతాయని ఆశించబడుతుంది. + +```solidity + + /** + * @dev టోకెన్‌ను బర్న్ చేయడం మరియు విత్‌డ్రాయల్ గురించి L1 టోకెన్ + * గేట్‌వేకు తెలియజేయడం ద్వారా విత్‌డ్రాయల్స్ కోసం తర్కాన్ని నిర్వహిస్తుంది. + * @param _l2Token విత్‌డ్రాయల్ ప్రారంభించబడిన L2 టోకెన్ చిరునామా. + * @param _from L2పై విత్‌డ్రాయల్‌ను లాగాల్సిన ఖాతా. + * @param _to L1పై విత్‌డ్రాయల్‌ను ఇవ్వాల్సిన ఖాతా. + * @param _amount విత్‌డ్రా చేయడానికి టోకెన్ మొత్తం. + * @param _l1Gas ఉపయోగించబడలేదు, కానీ సంభావ్య ఫార్వర్డ్ కంపాటిబిలిటీ పరిగణనల కోసం చేర్చబడింది. + * @param _data L1కి ఫార్వార్డ్ చేయడానికి ఐచ్ఛిక డేటా. ఈ డేటా బాహ్య కాంట్రాక్టుల సౌలభ్యం కోసం మాత్రమే అందించబడుతుంది. గరిష్ట పొడవును అమలు చేయడం మినహా, ఈ కాంట్రాక్టులు దాని కంటెంట్ గురించి ఎటువంటి హామీలను ఇవ్వవు. + */ + function _initiateWithdrawal( + address _l2Token, + address _from, + address _to, + uint256 _amount, + uint32 _l1Gas, + bytes calldata _data + ) internal { + // విత్‌డ్రాయల్ ప్రారంభించబడినప్పుడు, మేము తదుపరి L2 + // వినియోగాన్ని నివారించడానికి విత్‌డ్రాయర్ నిధులను బర్న్ చేస్తాము + // slither-disable-next-line reentrancy-events + IL2StandardERC20(_l2Token).burn(msg.sender, _amount); +``` + +గమనించండి, మేము `_from` పరామితిపై ఆధారపడటం లేదు కానీ `msg.sender`పై ఆధారపడుతున్నాము, ఇది నకిలీ చేయడం చాలా కష్టం (నాకు తెలిసినంతవరకు అసాధ్యం). + +```solidity + + // l1TokenBridge.finalizeERC20Withdrawal(_to, _amount) కోసం కాల్‌డేటాను నిర్మించండి + // slither-disable-next-line reentrancy-events + address l1Token = IL2StandardERC20(_l2Token).l1Token(); + bytes memory message; + + if (_l2Token == Lib_PredeployAddresses.OVM_ETH) { +``` + +L1లో ETH మరియు ERC-20 మధ్య తేడాను గుర్తించడం అవసరం. + +```solidity + message = abi.encodeWithSelector( + IL1StandardBridge.finalizeETHWithdrawal.selector, + _from, + _to, + _amount, + _data + ); + } else { + message = abi.encodeWithSelector( + IL1ERC20Bridge.finalizeERC20Withdrawal.selector, + l1Token, + _l2Token, + _from, + _to, + _amount, + _data + ); + } + + // సందేశాన్ని L1 బ్రిడ్జ్‌కు పంపండి + // slither-disable-next-line reentrancy-events + sendCrossDomainMessage(l1TokenBridge, _l1Gas, message); + + // slither-disable-next-line reentrancy-events + emit WithdrawalInitiated(l1Token, _l2Token, msg.sender, _to, _amount, _data); + } + + /************************************ + * క్రాస్-చైన్ ఫంక్షన్: డిపాజిటింగ్ * + ************************************/ + + /** + * @inheritdoc IL2ERC20Bridge + */ + function finalizeDeposit( + address _l1Token, + address _l2Token, + address _from, + address _to, + uint256 _amount, + bytes calldata _data +``` + +ఈ ఫంక్షన్ `L1StandardBridge` ద్వారా పిలవబడుతుంది. + +```solidity + ) external virtual onlyFromCrossDomainAccount(l1TokenBridge) { +``` + +సందేశం యొక్క మూలం చట్టబద్ధమైనదని నిర్ధారించుకోండి. +ఇది ముఖ్యం ఎందుకంటే ఈ ఫంక్షన్ `_mint`ను పిలుస్తుంది మరియు L1లో బ్రిడ్జ్ యాజమాన్యంలోని టోకెన్ల ద్వారా కవర్ చేయబడని టోకెన్లను ఇవ్వడానికి ఉపయోగించబడుతుంది. + +```solidity + // లక్ష్య టోకెన్ అనుగుణంగా ఉందో లేదో తనిఖీ చేయండి మరియు + // L1లో డిపాజిట్ చేయబడిన టోకెన్ ఇక్కడ L2 డిపాజిటెడ్ టోకెన్ ప్రాతినిధ్యంతో సరిపోలుతుందో లేదో ధృవీకరించండి + if ( + // slither-disable-next-line reentrancy-events + ERC165Checker.supportsInterface(_l2Token, 0x1d1d8b63) && + _l1Token == IL2StandardERC20(_l2Token).l1Token() +``` + +శానిటీ చెక్స్: + +1. సరైన ఇంటర్‌ఫేస్‌కు మద్దతు ఉంది +2. L2 ERC-20 కాంట్రాక్ట్ యొక్క L1 చిరునామా టోకెన్ల L1 మూలంతో సరిపోలుతుంది + +```solidity + ) { + // డిపాజిట్ ఖరారు చేయబడినప్పుడు, మేము అదే మొత్తంలో టోకెన్లతో + // L2లోని ఖాతాను క్రెడిట్ చేస్తాము. + // slither-disable-next-line reentrancy-events + IL2StandardERC20(_l2Token).mint(_to, _amount); + // slither-disable-next-line reentrancy-events + emit DepositFinalized(_l1Token, _l2Token, _from, _to, _amount, _data); +``` + +శానిటీ చెక్స్ పాస్ అయితే, డిపాజిట్‌ను ఖరారు చేయండి: + +1. టోకెన్లను ముద్రించండి +2. తగిన ఈవెంట్‌ను విడుదల చేయండి + +```solidity + } else { + // డిపాజిట్ చేయబడుతున్న L2 టోకెన్ దాని L1 టోకెన్ యొక్క సరైన చిరునామా + // గురించి విభేదిస్తుంది, లేదా సరైన ఇంటర్‌ఫేస్‌కు మద్దతు ఇవ్వదు. + // ఇది దురుద్దేశపూర్వక L2 టోకెన్ ఉన్నప్పుడు, లేదా ఒక వినియోగదారు ఎలాగైనా + // డిపాజిట్ చేయడానికి తప్పు L2 టోకెన్ చిరునామాను పేర్కొన్నప్పుడు మాత్రమే జరగాలి. + // ఏ సందర్భంలోనైనా, మేము ఇక్కడ ప్రక్రియను ఆపి, ఒక విత్‌డ్రాయల్ + // సందేశాన్ని నిర్మిస్తాము, తద్వారా వినియోగదారులు కొన్ని సందర్భాల్లో తమ నిధులను బయటకు తీయగలరు. + // దురుద్దేశపూర్వక టోకెన్ కాంట్రాక్ట్‌లను పూర్తిగా నిరోధించడానికి మార్గం లేదు, కానీ ఇది వినియోగదారు + // లోపాన్ని పరిమితం చేస్తుంది మరియు కొన్ని రకాల దురుద్దేశపూర్వక కాంట్రాక్ట్ ప్రవర్తనను తగ్గిస్తుంది. +``` + +ఒక వినియోగదారు తప్పు L2 టోకెన్ చిరునామాను ఉపయోగించడం ద్వారా గుర్తించగల లోపాన్ని చేస్తే, మేము డిపాజిట్‌ను రద్దు చేసి, L1లో టోకెన్లను తిరిగి ఇవ్వాలనుకుంటున్నాము. +L2 నుండి మేము దీనిని చేయగల ఏకైక మార్గం ఫాల్ట్ ఛాలెంజ్ వ్యవధి కోసం వేచి ఉండవలసిన సందేశాన్ని పంపడం, కానీ అది వినియోగదారుకు టోకెన్లను శాశ్వతంగా కోల్పోవడం కంటే చాలా మంచిది. + +```solidity + bytes memory message = abi.encodeWithSelector( + IL1ERC20Bridge.finalizeERC20Withdrawal.selector, + _l1Token, + _l2Token, + _to, // డిపాజిట్‌ను పంపినవారికి తిరిగి పంపడానికి ఇక్కడ _to మరియు _fromని మార్చాము + _from, + _amount, + _data + ); + + // సందేశాన్ని L1 బ్రిడ్జ్‌కు పంపండి + // slither-disable-next-line reentrancy-events + sendCrossDomainMessage(l1TokenBridge, 0, message); + // slither-disable-next-line reentrancy-events + emit DepositFailed(_l1Token, _l2Token, _from, _to, _amount, _data); + } + } +} +``` + +## ముగింపు {#conclusion} + +ఆస్తి బదిలీల కోసం స్టాండర్డ్ బ్రిడ్జ్ అత్యంత అనువైన యంత్రాంగం. +అయితే, ఇది చాలా సాధారణమైనది కాబట్టి, ఇది ఎల్లప్పుడూ ఉపయోగించడానికి సులభమైన యంత్రాంగం కాదు. +ముఖ్యంగా విత్‌డ్రాయల్స్ కోసం, చాలా మంది వినియోగదారులు ఛాలెంజ్ వ్యవధి కోసం వేచి ఉండని మరియు విత్‌డ్రాయల్‌ను ఖరారు చేయడానికి మెర్కిల్ ప్రూఫ్ అవసరం లేని [థర్డ్ పార్టీ బ్రిడ్జ్‌లను](https://optimism.io/apps#bridge) ఉపయోగించడానికి ఇష్టపడతారు. + +ఈ బ్రిడ్జ్‌లు సాధారణంగా L1లో ఆస్తులను కలిగి ఉండటం ద్వారా పనిచేస్తాయి, అవి తక్షణమే చిన్న రుసుముకు అందిస్తాయి (తరచుగా స్టాండర్డ్ బ్రిడ్జ్ విత్‌డ్రాయల్ కోసం గ్యాస్ ఖర్చు కంటే తక్కువ). +బ్రిడ్జ్ (లేదా దానిని నడుపుతున్న వ్యక్తులు) L1 ఆస్తుల కొరతను ఊహించినప్పుడు, అది L2 నుండి తగినన్ని ఆస్తులను బదిలీ చేస్తుంది. ఇవి చాలా పెద్ద విత్‌డ్రాయల్స్ కాబట్టి, విత్‌డ్రాయల్ ఖర్చు పెద్ద మొత్తంపై రుణ విమోచన చేయబడుతుంది మరియు చాలా తక్కువ శాతంగా ఉంటుంది. + +ఈ వ్యాసం లేయర్ 2 ఎలా పనిచేస్తుందో, మరియు స్పష్టంగా మరియు సురక్షితంగా ఉండే Solidity కోడ్‌ను ఎలా వ్రాయాలో మరింత అర్థం చేసుకోవడానికి మీకు సహాయపడిందని ఆశిస్తున్నాము. + +[నా మరిన్ని పనుల కోసం ఇక్కడ చూడండి](https://cryptodocguy.pro/). diff --git a/public/content/translations/te/developers/tutorials/reverse-engineering-a-contract/index.md b/public/content/translations/te/developers/tutorials/reverse-engineering-a-contract/index.md new file mode 100644 index 00000000000..b856ef34e4a --- /dev/null +++ b/public/content/translations/te/developers/tutorials/reverse-engineering-a-contract/index.md @@ -0,0 +1,744 @@ +--- +title: "ఒక కాంట్రాక్ట్‌ను రివర్స్ ఇంజనీరింగ్ చేయడం" +description: "మీ వద్ద సోర్స్ కోడ్ లేనప్పుడు ఒక కాంట్రాక్ట్‌ను ఎలా అర్థం చేసుకోవాలి" +author: Ori Pomerantz +lang: te +tags: [ "evm", "ఆప్కోడ్లు" ] +skill: advanced +published: 2021-12-30 +--- + +## పరిచయం {#introduction} + +_బ్లాక్ చైనులో రహస్యాలు ఏవీ ఉండవు_, జరిగే ప్రతిదీ స్థిరంగా, ధృవీకరించదగినదిగా మరియు బహిరంగంగా అందుబాటులో ఉంటుంది. ఆదర్శవంతంగా, [కాంట్రాక్టులు వాటి సోర్స్ కోడ్‌ను ప్రచురించి Etherscanలో ధృవీకరించాలి](https://etherscan.io/address/0xb8901acb165ed027e32754e0ffe830802919727f#code). అయితే, [అది ఎప్పుడూ అలా ఉండదు](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f#code). ఈ వ్యాసంలో మీరు సోర్స్ కోడ్ లేని కాంట్రాక్ట్ [`0x2510c039cc3b061d79e564b38836da87e31b342f`](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f) ను చూడటం ద్వారా కాంట్రాక్ట్‌లను ఎలా రివర్స్ ఇంజనీరింగ్ చేయాలో నేర్చుకుంటారు. + +రివర్స్ కంపైలర్లు ఉన్నాయి, కానీ అవి ఎల్లప్పుడూ [ఉపయోగపడే ఫలితాలను](https://etherscan.io/bytecode-decompiler?a=0x2510c039cc3b061d79e564b38836da87e31b342f) ఇవ్వవు. ఈ వ్యాసంలో మీరు [ఆప్కోడ్ల](https://github.com/wolflo/evm-opcodes) నుండి ఒక కాంట్రాక్ట్‌ను మాన్యువల్‌గా ఎలా రివర్స్ ఇంజనీరింగ్ చేసి అర్థం చేసుకోవాలో, అలాగే డీకంపైలర్ ఫలితాలను ఎలా అర్థం చేసుకోవాలో నేర్చుకుంటారు. + +ఈ వ్యాసాన్ని అర్థం చేసుకోవడానికి, మీరు ఇప్పటికే EVM యొక్క ప్రాథమికాలను తెలుసుకోవాలి, మరియు కనీసం EVM అసెంబ్లర్‌తో కొంతవరకు పరిచయం కలిగి ఉండాలి. [మీరు ఈ అంశాల గురించి ఇక్కడ చదవవచ్చు](https://medium.com/mycrypto/the-ethereum-virtual-machine-how-does-it-work-9abac2b7c9e). + +## ఎగ్జిక్యూటబుల్ కోడ్‌ను సిద్ధం చేయండి {#prepare-the-executable-code} + +మీరు కాంట్రాక్ట్ కోసం Etherscanకు వెళ్లి, **కాంట్రాక్ట్** ట్యాబ్‌పై క్లిక్ చేసి, ఆపై **ఆప్కోడ్స్ వీక్షణకు మారండి** పై క్లిక్ చేయడం ద్వారా ఆప్కోడ్లను పొందవచ్చు. మీరు ఒక లైన్‌కు ఒక ఆప్కోడ్ ఉన్న వీక్షణను పొందుతారు. + +![Etherscan నుండి ఆప్కోడ్ వీక్షణ](opcode-view.png) + +జంప్‌లను అర్థం చేసుకోవడానికి, అయితే, ప్రతి ఆప్కోడ్ కోడ్‌లో ఎక్కడ ఉందో మీరు తెలుసుకోవాలి. అది చేయడానికి, ఒక మార్గం ఏమిటంటే Google స్ప్రెడ్‌షీట్‌ను తెరిచి కాలమ్ Cలో ఆప్కోడ్లను అతికించడం. [ఇప్పటికే సిద్ధం చేసిన ఈ స్ప్రెడ్‌షీట్‌ను కాపీ చేయడం ద్వారా మీరు ఈ క్రింది దశలను దాటవేయవచ్చు](https://docs.google.com/spreadsheets/d/1tKmTJiNjUwHbW64wCKOSJxHjmh0bAUapt6btUYE7kDA/edit?usp=sharing). + +తరువాత దశ సరైన కోడ్ స్థానాలను పొందడం, తద్వారా మనం జంప్‌లను అర్థం చేసుకోగలుగుతాము. మేము ఆప్కోడ్ పరిమాణాన్ని కాలమ్ Bలో మరియు స్థానాన్ని (హెక్సాడెసిమల్‌లో) కాలమ్ Aలో ఉంచుతాము. సెల్ `B1`లో ఈ ఫంక్షన్‌ను టైప్ చేసి, ఆపై కోడ్ చివరి వరకు మిగిలిన కాలమ్ B కోసం దాన్ని కాపీ చేసి అతికించండి. మీరు ఇది చేసిన తర్వాత కాలమ్ Bని దాచవచ్చు. + +``` +=1+IF(REGEXMATCH(C1,"PUSH"),REGEXEXTRACT(C1,"PUSH(\d+)"),0) +``` + +మొదట ఈ ఫంక్షన్ ఆప్కోడ్ కోసం ఒక బైట్‌ను జోడిస్తుంది, ఆపై `PUSH` కోసం చూస్తుంది. పుష్ ఆప్కోడ్లు ప్రత్యేకమైనవి ఎందుకంటే వాటికి పుష్ చేయబడుతున్న విలువ కోసం అదనపు బైట్లు అవసరం. ఆప్కోడ్ `PUSH` అయితే, మేము బైట్ల సంఖ్యను సంగ్రహించి దాన్ని జోడిస్తాము. + +`A1`లో మొదటి ఆఫ్‌సెట్, సున్నాను ఉంచండి. ఆ తర్వాత, `A2`లో, ఈ ఫంక్షన్‌ను ఉంచి, మళ్లీ కాలమ్ Aలోని మిగిలిన వాటి కోసం కాపీ చేసి పేస్ట్ చేయండి: + +``` +=dec2hex(hex2dec(A1)+B1) +``` + +జంప్స్ (`JUMP` మరియు `JUMPI`) కంటే ముందు పుష్ చేయబడిన విలువలు మాకు హెక్సాడెసిమల్‌లో ఇవ్వబడినందున, హెక్సాడెసిమల్ విలువను ఇవ్వడానికి మాకు ఈ ఫంక్షన్ అవసరం. + +## ప్రవేశ స్థానం (0x00) {#the-entry-point-0x00} + +కాంట్రాక్టులు ఎల్లప్పుడూ మొదటి బైట్ నుండి అమలు చేయబడతాయి. ఇది కోడ్ యొక్క ప్రారంభ భాగం: + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ (ఆప్కోడ్ తర్వాత) | +| -------: | ------------ | ---------------------------------------------- | +| 0 | PUSH1 0x80 | 0x80 | +| 2 | PUSH1 0x40 | 0x40, 0x80 | +| 4 | MSTORE | ఖాళీ | +| 5 | PUSH1 0x04 | 0x04 | +| 7 | CALLDATASIZE | CALLDATASIZE 0x04 | +| 8 | LT | CALLDATASIZE\<4 | +| 9 | PUSH2 0x005e | 0x5E CALLDATASIZE\<4 | +| C | JUMPI | ఖాళీ | + +ఈ కోడ్ రెండు పనులు చేస్తుంది: + +1. 0x80 ను 32 బైట్ల విలువగా మెమరీ స్థానాలు 0x40-0x5F కు వ్రాయండి (0x80 0x5F లో నిల్వ చేయబడింది, మరియు 0x40-0x5E అన్నీ సున్నాలు). +2. కాల్‌డేటా పరిమాణాన్ని చదవండి. సాధారణంగా ఒక ఎథేరియం కాంట్రాక్ట్ కోసం కాల్ డేటా [ABI (అప్లికేషన్ బైనరీ ఇంటర్‌ఫేస్)](https://docs.soliditylang.org/en/v0.8.10/abi-spec.html)ను అనుసరిస్తుంది, దీనికి ఫంక్షన్ సెలెక్టర్ కోసం కనీసం నాలుగు బైట్లు అవసరం. కాల్ డేటా పరిమాణం నాలుగు కన్నా తక్కువ ఉంటే, 0x5E కు జంప్ చేయండి. + +![ఈ భాగానికి ఫ్లోచార్ట్](flowchart-entry.png) + +### 0x5E వద్ద హ్యాండ్లర్ (నాన్-ABI కాల్ డేటా కోసం) {#the-handler-at-0x5e-for-non-abi-call-data} + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | +| -------: | ------------ | +| 5E | JUMPDEST | +| 5F | CALLDATASIZE | +| 60 | PUSH2 0x007c | +| 63 | JUMPI | + +ఈ స్నిప్పెట్ `JUMPDEST`తో మొదలవుతుంది. `JUMPDEST` కాని ఆప్కోడ్‌కు మీరు జంప్ చేస్తే EVM (ఎథేరియం వర్చువల్ మషీన్) ప్రోగ్రామ్‌లు ఒక ఎక్సెప్షన్‌ను త్రో చేస్తాయి. ఆ తర్వాత అది CALLDATASIZEను చూస్తుంది, మరియు అది "నిజం" (అంటే, సున్నా కాదు) అయితే 0x7Cకు జంప్ చేస్తుంది. మేము దాని గురించి క్రింద చర్చిస్తాము. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ (ఆప్కోడ్ తర్వాత) | +| -------: | ---------- | --------------------------------------------------------------------------------------------------- | +| 64 | CALLVALUE | కాల్ ద్వారా అందించబడిన [వీ](/glossary/#wei). Solidity లో `msg.value` అని పిలుస్తారు | +| 65 | PUSH1 0x06 | 6 CALLVALUE | +| 67 | PUSH1 0x00 | 0 6 CALLVALUE | +| 69 | DUP3 | CALLVALUE 0 6 CALLVALUE | +| 6A | DUP3 | 6 CALLVALUE 0 6 CALLVALUE | +| 6B | SLOAD | స్టోరేజ్[6] CALLVALUE 0 6 CALLVALUE | + +కాబట్టి కాల్ డేటా లేనప్పుడు మేము స్టోరేజ్[6] విలువను చదువుతాము. ఈ విలువ ఏమిటో మాకు ఇంకా తెలియదు, కానీ కాల్ డేటా లేకుండా కాంట్రాక్ట్ అందుకున్న లావాదేవీల కోసం మేము చూడవచ్చు. కేవలం ఎలాంటి కాల్ డేటా లేకుండా (అందువల్ల పద్ధతి లేకుండా) ETHని బదిలీ చేసే లావాదేవీలు Etherscanలో `Transfer` పద్ధతిని కలిగి ఉంటాయి. నిజానికి, [కాంట్రాక్ట్ అందుకున్న మొదటి లావాదేవీ](https://etherscan.io/tx/0xeec75287a583c36bcc7ca87685ab41603494516a0f5986d18de96c8e630762e7) ఒక బదిలీ. + +మేము ఆ లావాదేవీని చూసి **మరింత చూడటానికి క్లిక్ చేయండి** పై క్లిక్ చేస్తే, ఇన్‌పుట్ డేటా అని పిలువబడే కాల్ డేటా నిజానికి ఖాళీగా (`0x`) ఉందని చూస్తాము. విలువ 1.559 ETH అని కూడా గమనించండి, అది తర్వాత సంబంధితంగా ఉంటుంది. + +![కాల్ డేటా ఖాళీగా ఉంది](calldata-empty.png) + +తరువాత, **స్టేట్** ట్యాబ్‌పై క్లిక్ చేసి, మనం రివర్స్ ఇంజనీరింగ్ చేస్తున్న కాంట్రాక్ట్‌ను (0x2510...) విస్తరించండి. లావాదేవీ సమయంలో `స్టోరేజ్[6]` మారిందని మీరు చూడవచ్చు, మరియు మీరు హెక్స్‌ను **సంఖ్య**కు మార్చినట్లయితే, అది 1,559,000,000,000,000,000గా మారిందని మీరు చూస్తారు, వీలో బదిలీ చేయబడిన విలువ (స్పష్టత కోసం నేను కామాలను జోడించాను), ఇది తదుపరి కాంట్రాక్ట్ విలువకు అనుగుణంగా ఉంటుంది. + +![స్టోరేజ్[6]లో మార్పు](storage6.png) + +అదే కాలం నుండి [ఇతర `Transfer` లావాదేవీల](https://etherscan.io/tx/0xf708d306de39c422472f43cb975d97b66fd5d6a6863db627067167cbf93d84d1#statechange) వల్ల కలిగే స్టేట్ మార్పులలో మనం చూస్తే, `స్టోరేజ్[6]` కొంతకాలం కాంట్రాక్ట్ విలువను ట్రాక్ చేసిందని చూస్తాము. ఇప్పటికి దాన్ని `Value*` అని పిలుద్దాం. నక్షత్రం (`*`) మాకు గుర్తు చేస్తుంది, ఈ వేరియబుల్ ఇంకా ఏమి చేస్తుందో మాకు తెలియదు, కానీ ఇది కేవలం కాంట్రాక్ట్ విలువను ట్రాక్ చేయడానికి మాత్రమే ఉండదు, ఎందుకంటే `ADDRESS BALANCE` ఉపయోగించి మీరు మీ ఖాతాల బ్యాలెన్స్‌ను పొందగలిగినప్పుడు, చాలా ఖరీదైన స్టోరేజ్‌ను ఉపయోగించాల్సిన అవసరం లేదు. మొదటి ఆప్కోడ్ కాంట్రాక్ట్ యొక్క సొంత చిరునామాను పుష్ చేస్తుంది. రెండవది స్టాక్ పైభాగంలో ఉన్న చిరునామాను చదివి, దానిని ఆ చిరునామా బ్యాలెన్స్‌తో భర్తీ చేస్తుంది. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------------ | ------------------------------------------- | +| 6C | PUSH2 0x0075 | 0x75 Value\* CALLVALUE 0 6 CALLVALUE | +| 6F | SWAP2 | CALLVALUE Value\* 0x75 0 6 CALLVALUE | +| 70 | SWAP1 | Value\* CALLVALUE 0x75 0 6 CALLVALUE | +| 71 | PUSH2 0x01a7 | 0x01A7 Value\* CALLVALUE 0x75 0 6 CALLVALUE | +| 74 | JUMP | | + +మేము జంప్ గమ్యస్థానంలో ఈ కోడ్‌ను ట్రేస్ చేయడం కొనసాగిస్తాము. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ---------- | ----------------------------------------------------------- | +| 1A7 | JUMPDEST | Value\* CALLVALUE 0x75 0 6 CALLVALUE | +| 1A8 | PUSH1 0x00 | 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE | +| 1AA | DUP3 | CALLVALUE 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE | +| 1AB | NOT | 2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE | + +`NOT` బిట్‌వైస్, కాబట్టి ఇది కాల్ విలువలోని ప్రతి బిట్ విలువను రివర్స్ చేస్తుంది. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------------ | ------------------------------------------------------------------------------------------------------ | +| 1AC | DUP3 | Value\* 2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE | +| 1AD | GT | Value\*>2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE | +| 1AE | ISZERO | Value\*\<=2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE | +| 1AF | PUSH2 0x01df | 0x01DF Value\*\<=2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE | +| 1B2 | JUMPI | | + +`Value*` 2^256-CALLVALUE-1 కంటే చిన్నదిగా లేదా దానికి సమానంగా ఉంటే మేము జంప్ చేస్తాము. ఇది పొంగి పొర్లడాన్ని నిరోధించడానికి తర్కంలా కనిపిస్తుంది. మరియు నిజానికి, కొన్ని అర్ధంలేని ఆపరేషన్ల తర్వాత (ఉదాహరణకు, మెమరీకి వ్రాయడం తొలగించబడబోతోంది) 0x01DE ఆఫ్‌సెట్‌లో ఓవర్‌ఫ్లో గుర్తించబడితే కాంట్రాక్ట్ రివర్ట్ అవుతుందని మనం చూస్తాము, ఇది సాధారణ ప్రవర్తన. + +అలాంటి ఓవర్‌ఫ్లో చాలా అసంభవమని గమనించండి, ఎందుకంటే దీనికి కాల్ విలువ మరియు `Value*` 2^256 వీ, అంటే సుమారు 10^59 ETHతో పోల్చదగినదిగా ఉండాలి. [రాసే సమయానికి మొత్తం ETH సరఫరా రెండు వందల మిలియన్ల కన్నా తక్కువ](https://etherscan.io/stat/supply). + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | -------- | ----------------------------------------- | +| 1DF | JUMPDEST | 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE | +| 1E0 | POP | Value\* CALLVALUE 0x75 0 6 CALLVALUE | +| 1E1 | ADD | Value\*+CALLVALUE 0x75 0 6 CALLVALUE | +| 1E2 | SWAP1 | 0x75 Value\*+CALLVALUE 0 6 CALLVALUE | +| 1E3 | JUMP | | + +మేము ఇక్కడకు వస్తే, `Value* + CALLVALUE` పొంది, 0x75 ఆఫ్‌సెట్‌కు జంప్ చేయండి. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | -------- | ------------------------------- | +| 75 | JUMPDEST | Value\*+CALLVALUE 0 6 CALLVALUE | +| 76 | SWAP1 | 0 Value\*+CALLVALUE 6 CALLVALUE | +| 77 | SWAP2 | 6 Value\*+CALLVALUE 0 CALLVALUE | +| 78 | SSTORE | 0 CALLVALUE | + +మేము ఇక్కడకు వస్తే (దీనికి కాల్ డేటా ఖాళీగా ఉండాలి) మేము `Value*`కు కాల్ విలువను జోడిస్తాము. ఇది `ట్రాన్స్ఫర్` లావాదేవీలు ఏమి చేస్తాయో దానితో స్థిరంగా ఉంటుంది. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | +| -------: | ------- | +| 79 | POP | +| 7A | POP | +| 7B | STOP | + +చివరగా, స్టాక్‌ను క్లియర్ చేసి (అది అవసరం లేదు) మరియు లావాదేవీ విజయవంతంగా ముగిసినట్లు సిగ్నల్ చేయండి. + +అన్నింటినీ కలిపి, ప్రారంభ కోడ్ కోసం ఇక్కడ ఒక ఫ్లోచార్ట్ ఉంది. + +![ప్రవేశ స్థానం ఫ్లోచార్ట్](flowchart-entry.png) + +## 0x7C వద్ద హ్యాండ్లర్ {#the-handler-at-0x7c} + +ఈ హ్యాండ్లర్ ఏమి చేస్తుందో నేను ఉద్దేశపూర్వకంగా హెడ్డింగ్‌లో పెట్టలేదు. అంశం ఈ ప్రత్యేక కాంట్రాక్ట్ ఎలా పనిచేస్తుందో మీకు నేర్పించడం కాదు, కానీ కాంట్రాక్టులను ఎలా రివర్స్ ఇంజనీరింగ్ చేయాలో నేర్పించడం. కోడ్‌ను అనుసరించడం ద్వారా నేను చేసినట్లే ఇది ఏమి చేస్తుందో మీరు నేర్చుకుంటారు. + +మేము ఇక్కడికి అనేక ప్రదేశాల నుండి వస్తాము: + +- 1, 2, లేదా 3 బైట్ల కాల్ డేటా ఉంటే (0x63 ఆఫ్‌సెట్ నుండి) +- పద్ధతి సంతకం తెలియకపోతే (0x42 మరియు 0x5D ఆఫ్‌సెట్‌ల నుండి) + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------------ | ------------------------------------------------------------------------- | +| 7C | JUMPDEST | | +| 7D | PUSH1 0x00 | 0x00 | +| 7F | PUSH2 0x009d | 0x9D 0x00 | +| 82 | PUSH1 0x03 | 0x03 0x9D 0x00 | +| 84 | SLOAD | స్టోరేజ్[3] 0x9D 0x00 | + +ఇది మరో స్టోరేజ్ సెల్, ఏ లావాదేవీలలోనూ నేను కనుగొనలేకపోయాను, కాబట్టి దాని అర్థం ఏమిటో తెలుసుకోవడం కష్టం. క్రింది కోడ్ దానిని స్పష్టత చేస్తుంది. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| 85 | PUSH20 0xffffffffffffffffffffffffffffffffffffffff | 0xff....ff స్టోరేజ్[3] 0x9D 0x00 | +| 9A | AND | స్టోరేజ్[3]-గా-చిరునామా 0x9D 0x00 | + +ఈ ఆప్కోడ్లు మేము స్టోరేజ్[3] నుండి చదివిన విలువను 160 బిట్‌లకు కట్ చేస్తాయి, ఇది ఒక ఎథేరియం చిరునామా పొడవు. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------- | ------------------------------------------------------------------------------------- | +| 9B | SWAP1 | 0x9D స్టోరేజ్[3]-గా-చిరునామా 0x00 | +| 9C | JUMP | స్టోరేజ్[3]-గా-చిరునామా 0x00 | + +ఈ జంప్ అదనపుది, ఎందుకంటే మేము తదుపరి ఆప్కోడ్‌కు వెళ్తున్నాము. ఈ కోడ్ గ్యాస్-సామర్థ్యం ఉన్నంతగా లేదు. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| 9D | JUMPDEST | స్టోరేజ్[3]-గా-చిరునామా 0x00 | +| 9E | SWAP1 | 0x00 స్టోరేజ్[3]-గా-చిరునామా | +| 9F | POP | స్టోరేజ్[3]-గా-చిరునామా | +| A0 | PUSH1 0x40 | 0x40 స్టోరేజ్[3]-గా-చిరునామా | +| A2 | MLOAD | Mem[0x40] స్టోరేజ్[3]-గా-చిరునామా | + +కోడ్ ప్రారంభంలోనే మేము Mem[0x40]ను 0x80కి సెట్ చేసాము. తర్వాత మనం 0x40 కోసం చూస్తే, మనం దానిని మార్చలేదని చూస్తాము - కాబట్టి మనం దానిని 0x80 అని ఊహించవచ్చు. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------------ | ------------------------------------------------------------------------------------------------------- | +| A3 | CALLDATASIZE | CALLDATASIZE 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| A4 | PUSH1 0x00 | 0x00 CALLDATASIZE 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| A6 | DUP3 | 0x80 0x00 CALLDATASIZE 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| A7 | CALLDATACOPY | 0x80 స్టోరేజ్[3]-గా-చిరునామా | + +0x80 నుండి ప్రారంభించి, అన్ని కాల్ డేటాను మెమరీకి కాపీ చేయండి. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| A8 | PUSH1 0x00 | 0x00 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| AA | DUP1 | 0x00 0x00 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| AB | CALLDATASIZE | CALLDATASIZE 0x00 0x00 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| AC | DUP4 | 0x80 CALLDATASIZE 0x00 0x00 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| AD | DUP6 | స్టోరేజ్[3]-గా-చిరునామా 0x80 CALLDATASIZE 0x00 0x00 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| AE | GAS | GAS స్టోరేజ్[3]-గా-చిరునామా 0x80 CALLDATASIZE 0x00 0x00 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| AF | DELEGATE_CALL | | + +ఇప్పుడు విషయాలు చాలా స్పష్టంగా ఉన్నాయి. ఈ కాంట్రాక్ట్ ఒక [ప్రాక్సీ](https://blog.openzeppelin.com/proxy-patterns/)గా పనిచేయగలదు, నిజమైన పని చేయడానికి స్టోరేజ్[3]లోని చిరునామాను పిలుస్తుంది. `DELEGATE_CALL` వేరే కాంట్రాక్ట్‌ను పిలుస్తుంది, కానీ అదే స్టోరేజ్‌లో ఉంటుంది. అంటే, ప్రతినిధి కాంట్రాక్ట్, మనం ప్రాక్సీగా ఉన్నది, అదే స్టోరేజ్ స్థలాన్ని యాక్సెస్ చేస్తుంది. కాల్ కోసం పారామీటర్లు: + +- _గ్యాస్_: మిగిలిన అన్ని గ్యాస్ +- _పిలువబడిన చిరునామా_: స్టోరేజ్[3]-గా-చిరునామా +- _కాల్ డేటా_: 0x80 వద్ద ప్రారంభమయ్యే CALLDATASIZE బైట్లు, ఇది మనం అసలు కాల్ డేటాను ఉంచిన చోట. +- _తిరిగి వచ్చే డేటా_: ఏదీ లేదు (0x00 - 0x00) మనం ఇతర మార్గాల ద్వారా తిరిగి వచ్చే డేటాను పొందుతాము (క్రింద చూడండి) + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| B0 | RETURNDATASIZE | RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| B1 | DUP1 | RETURNDATASIZE RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| B2 | PUSH1 0x00 | 0x00 RETURNDATASIZE RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| B4 | DUP5 | 0x80 0x00 RETURNDATASIZE RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| B5 | RETURNDATACOPY | RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) 0x80 స్టోరేజ్[3]-గా-చిరునామా | + +ఇక్కడ మేము అన్ని రిటర్న్ డేటాను 0x80 నుండి ప్రారంభమయ్యే మెమరీ బఫర్‌కు కాపీ చేస్తాము. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| B6 | DUP2 | (((కాల్ సక్సెస్/ఫెయిల్యూర్))) RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| B7 | DUP1 | (((కాల్ సక్సెస్/ఫెయిల్యూర్))) (((కాల్ సక్సెస్/ఫెయిల్యూర్))) RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| B8 | ISZERO | (((కాల్ విఫలమైందా))) (((కాల్ సక్సెస్/ఫెయిల్యూర్))) RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| B9 | PUSH2 0x00c0 | 0xC0 (((కాల్ విఫలమైందా))) (((కాల్ సక్సెస్/ఫెయిల్యూర్))) RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| BC | JUMPI | (((కాల్ సక్సెస్/ఫెయిల్యూర్))) RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| BD | DUP2 | RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| BE | DUP5 | 0x80 RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| BF | RETURN | | + +కాబట్టి కాల్ తర్వాత మేము రిటర్న్ డేటాను బఫర్ 0x80 - 0x80+RETURNDATASIZEకు కాపీ చేస్తాము, మరియు కాల్ విజయవంతమైతే మేము అదే బఫర్‌తో `RETURN` చేస్తాము. + +### DELEGATECALL విఫలమైంది {#delegatecall-failed} + +మేము ఇక్కడకు వస్తే, 0xC0కి, దాని అర్థం మనం పిలిచిన కాంట్రాక్ట్ రివర్ట్ అయ్యిందని. మనం ఆ కాంట్రాక్ట్‌కు కేవలం ఒక ప్రాక్సీ మాత్రమే కాబట్టి, మనం అదే డేటాను తిరిగి ఇవ్వాలనుకుంటున్నాము మరియు రివర్ట్ చేయాలనుకుంటున్నాము. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| C0 | JUMPDEST | (((కాల్ సక్సెస్/ఫెయిల్యూర్))) RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| C1 | DUP2 | RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| C2 | DUP5 | 0x80 RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) RETURNDATASIZE (((కాల్ సక్సెస్/ఫెయిల్యూర్))) 0x80 స్టోరేజ్[3]-గా-చిరునామా | +| C3 | REVERT | | + +కాబట్టి మనం `RETURN` కోసం ముందు ఉపయోగించిన అదే బఫర్‌తో `REVERT` చేస్తాము: 0x80 - 0x80+RETURNDATASIZE + +![ప్రాక్సీకి కాల్ ఫ్లోచార్ట్](flowchart-proxy.png) + +## ఎబిఐ కాల్స్ {#abi-calls} + +కాల్ డేటా పరిమాణం నాలుగు బైట్లు లేదా అంతకంటే ఎక్కువ ఉంటే ఇది ఒక చెల్లుబాటు అయ్యే ఎబిఐ కాల్ కావచ్చు. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------------ | ----------------------------------------------------------------------------------------------------------------------------- | +| D | PUSH1 0x00 | 0x00 | +| F | CALLDATALOAD | (((కాల్ డేటా యొక్క మొదటి పదం (256 బిట్లు)))) | +| 10 | PUSH1 0xe0 | 0xE0 (((కాల్ డేటా యొక్క మొదటి పదం (256 బిట్లు)))) | +| 12 | SHR | (((కాల్ డేటా యొక్క మొదటి 32 బిట్లు (4 బైట్లు)))) | + +Etherscan మనకు `1C` ఒక తెలియని ఆప్కోడ్ అని చెబుతుంది, ఎందుకంటే [Etherscan ఈ ఫీచర్‌ను రాసిన తర్వాత ఇది జోడించబడింది](https://eips.ethereum.org/EIPS/eip-145) మరియు వారు దానిని నవీకరించలేదు. [నవీకరించబడిన ఆప్కోడ్ పట్టిక](https://github.com/wolflo/evm-opcodes) మనకు ఇది షిఫ్ట్ రైట్ అని చూపిస్తుంది + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 13 | DUP1 | (((కాల్ డేటా యొక్క మొదటి 32 బిట్లు (4 బైట్లు))) (((కాల్ డేటా యొక్క మొదటి 32 బిట్లు (4 బైట్లు)))) | +| 14 | PUSH4 0x3cd8045e | 0x3CD8045E (((కాల్ డేటా యొక్క మొదటి 32 బిట్లు (4 బైట్లు))) (((కాల్ డేటా యొక్క మొదటి 32 బిట్లు (4 బైట్లు)))) | +| 19 | GT | 0x3CD8045E>కాల్-డేటా-యొక్క-మొదటి-32-బిట్లు (((కాల్ డేటా యొక్క మొదటి 32 బిట్లు (4 బైట్లు)))) | +| 1A | PUSH2 0x0043 | 0x43 0x3CD8045E>కాల్-డేటా-యొక్క-మొదటి-32-బిట్లు (((కాల్ డేటా యొక్క మొదటి 32 బిట్లు (4 బైట్లు)))) | +| 1D | JUMPI | (((కాల్ డేటా యొక్క మొదటి 32 బిట్లు (4 బైట్లు)))) | + +పద్ధతి సంతకం సరిపోలిక పరీక్షలను ఇలా రెండుగా విభజించడం ద్వారా సగటున సగం పరీక్షలను ఆదా చేస్తుంది. దీని తర్వాత వెంటనే వచ్చే కోడ్ మరియు 0x43లోని కోడ్ అదే నమూనాను అనుసరిస్తాయి: కాల్ డేటా యొక్క మొదటి 32 బిట్‌లను `DUP1` చేయండి, `PUSH4 (((పద్ధతి సంతకం>`, సమానత్వం కోసం తనిఖీ చేయడానికి `EQ`ని అమలు చేయండి, ఆపై పద్ధతి సంతకం సరిపోలితే `JUMPI`. ఇక్కడ పద్ధతి సంతకాలు, వాటి చిరునామాలు, మరియు తెలిస్తే [సంబంధిత పద్ధతి నిర్వచనం](https://www.4byte.directory/): + +| పద్ధతి | పద్ధతి సంతకం | జంప్ చేయడానికి ఆఫ్‌సెట్ | +| --------------------------------------------------------------------------------------------------------- | ------------ | ----------------------- | +| [splitter()](https://www.4byte.directory/signatures/?bytes4_signature=0x3cd8045e) | 0x3cd8045e | 0x0103 | +| ??? | 0x81e580d3 | 0x0138 | +| [currentWindow()](https://www.4byte.directory/signatures/?bytes4_signature=0xba0bafb4) | 0xba0bafb4 | 0x0158 | +| ??? | 0x1f135823 | 0x00C4 | +| [merkleRoot()](https://www.4byte.directory/signatures/?bytes4_signature=0x2eb4a7ab) | 0x2eb4a7ab | 0x00ED | + +ఏ సరిపోలిక కనుగొనబడకపోతే, కోడ్ [0x7C వద్ద ఉన్న ప్రాక్సీ హ్యాండ్లర్‌కు](#the-handler-at-0x7c) జంప్ చేస్తుంది, మనం ప్రాక్సీగా ఉన్న కాంట్రాక్ట్‌లో సరిపోలిక ఉంటుందనే ఆశతో. + +![ఎబిఐ కాల్స్ ఫ్లోచార్ట్](flowchart-abi.png) + +## splitter() {#splitter} + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------------ | ----------------------------- | +| 103 | JUMPDEST | | +| 104 | CALLVALUE | CALLVALUE | +| 105 | DUP1 | CALLVALUE CALLVALUE | +| 106 | ISZERO | CALLVALUE==0 CALLVALUE | +| 107 | PUSH2 0x010f | 0x010F CALLVALUE==0 CALLVALUE | +| 10A | JUMPI | CALLVALUE | +| 10B | PUSH1 0x00 | 0x00 CALLVALUE | +| 10D | DUP1 | 0x00 0x00 CALLVALUE | +| 10E | REVERT | | + +ఈ ఫంక్షన్ చేసే మొదటి పని ఏమిటంటే కాల్ ఏ ETHని పంపలేదని తనిఖీ చేయడం. ఈ ఫంక్షన్ [`payable`](https://solidity-by-example.org/payable/) కాదు. ఎవరైనా మాకు ETH పంపితే అది తప్పనిసరిగా ఒక పొరపాటు మరియు వారు దానిని తిరిగి పొందలేని చోట ఆ ETH ఉండకుండా ఉండటానికి మేము `REVERT` చేయాలనుకుంటున్నాము. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 10F | JUMPDEST | | +| 110 | POP | | +| 111 | PUSH1 0x03 | 0x03 | +| 113 | SLOAD | (((స్టోరేజ్[3] అకా మనం ప్రాక్సీగా ఉన్న కాంట్రాక్ట్))) | +| 114 | PUSH1 0x40 | 0x40 (((స్టోరేజ్[3] అకా మనం ప్రాక్సీగా ఉన్న కాంట్రాక్ట్))) | +| 116 | MLOAD | 0x80 (((స్టోరేజ్[3] అకా మనం ప్రాక్సీగా ఉన్న కాంట్రాక్ట్))) | +| 117 | PUSH20 0xffffffffffffffffffffffffffffffffffffffff | 0xFF...FF 0x80 (((స్టోరేజ్[3] అకా మనం ప్రాక్సీగా ఉన్న కాంట్రాక్ట్))) | +| 12C | SWAP1 | 0x80 0xFF...FF (((స్టోరేజ్[3] అకా మనం ప్రాక్సీగా ఉన్న కాంట్రాక్ట్))) | +| 12D | SWAP2 | (((స్టోరేజ్[3] అకా మనం ప్రాక్సీగా ఉన్న కాంట్రాక్ట్))) 0xFF...FF 0x80 | +| 12E | AND | ProxyAddr 0x80 | +| 12F | DUP2 | 0x80 ProxyAddr 0x80 | +| 130 | MSTORE | 0x80 | + +మరియు 0x80 ఇప్పుడు ప్రాక్సీ చిరునామాను కలిగి ఉంది + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------------ | --------- | +| 131 | PUSH1 0x20 | 0x20 0x80 | +| 133 | ADD | 0xA0 | +| 134 | PUSH2 0x00e4 | 0xE4 0xA0 | +| 137 | JUMP | 0xA0 | + +### E4 కోడ్ {#the-e4-code} + +ఇవి మేము మొదటిసారి చూస్తున్న లైన్లు, కానీ అవి ఇతర పద్ధతులతో పంచుకోబడ్డాయి (క్రింద చూడండి). కాబట్టి మనం స్టాక్‌లోని విలువను X అని పిలుస్తాము, మరియు `splitter()`లో ఈ X విలువ 0xA0 అని గుర్తుంచుకోండి. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ---------- | ----------- | +| E4 | JUMPDEST | X | +| E5 | PUSH1 0x40 | 0x40 X | +| E7 | MLOAD | 0x80 X | +| E8 | DUP1 | 0x80 0x80 X | +| E9 | SWAP2 | X 0x80 0x80 | +| EA | SUB | X-0x80 0x80 | +| EB | SWAP1 | 0x80 X-0x80 | +| EC | RETURN | | + +కాబట్టి ఈ కోడ్ స్టాక్ (X)లో ఒక మెమరీ పాయింటర్‌ను అందుకుంటుంది మరియు 0x80 - X బఫర్‌తో కాంట్రాక్ట్‌ను `RETURN` చేయడానికి కారణమవుతుంది. + +`splitter()` విషయంలో, ఇది మనం ప్రాక్సీగా ఉన్న చిరునామాను తిరిగి ఇస్తుంది. `RETURN` 0x80-0x9Fలో బఫర్‌ను తిరిగి ఇస్తుంది, ఇది మనం ఈ డేటాను రాసిన చోట (పైన ఆఫ్‌సెట్ 0x130). + +## currentWindow() {#currentwindow} + +0x158-0x163 ఆఫ్‌సెట్‌లలోని కోడ్ `splitter()`లో 0x103-0x10Eలో చూసిన దానికి సమానంగా ఉంటుంది (`JUMPI` గమ్యస్థానం మినహా), కాబట్టి `currentWindow()` కూడా `payable` కాదని మనకు తెలుసు. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------------ | ------------------------------------------------------------------------- | +| 164 | JUMPDEST | | +| 165 | POP | | +| 166 | PUSH2 0x00da | 0xDA | +| 169 | PUSH1 0x01 | 0x01 0xDA | +| 16B | SLOAD | స్టోరేజ్[1] 0xDA | +| 16C | DUP2 | 0xDA స్టోరేజ్[1] 0xDA | +| 16D | JUMP | స్టోరేజ్[1] 0xDA | + +### DA కోడ్ {#the-da-code} + +ఈ కోడ్ ఇతర పద్ధతులతో కూడా పంచుకోబడింది. కాబట్టి మనం స్టాక్‌లోని విలువను Y అని పిలుస్తాము, మరియు `currentWindow()`లో ఈ Y విలువ స్టోరేజ్[1] అని గుర్తుంచుకోండి. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ---------- | ---------------- | +| DA | JUMPDEST | Y 0xDA | +| DB | PUSH1 0x40 | 0x40 Y 0xDA | +| DD | MLOAD | 0x80 Y 0xDA | +| DE | SWAP1 | Y 0x80 0xDA | +| DF | DUP2 | 0x80 Y 0x80 0xDA | +| E0 | MSTORE | 0x80 0xDA | + +Yని 0x80-0x9Fకు వ్రాయండి. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ---------- | -------------- | +| E1 | PUSH1 0x20 | 0x20 0x80 0xDA | +| E3 | ADD | 0xA0 0xDA | + +మరియు మిగిలినవి ఇప్పటికే [పైన](#the-e4-code) వివరించబడ్డాయి. కాబట్టి 0xDAకు జంప్‌లు స్టాక్ టాప్ (Y)ని 0x80-0x9Fకు వ్రాసి, ఆ విలువను తిరిగి ఇస్తాయి. `currentWindow()` విషయంలో, ఇది స్టోరేజ్[1]ను తిరిగి ఇస్తుంది. + +## merkleRoot() {#merkleroot} + +0xED-0xF8 ఆఫ్‌సెట్‌లలోని కోడ్ `splitter()`లో 0x103-0x10Eలో చూసిన దానికి సమానంగా ఉంటుంది (`JUMPI` గమ్యస్థానం మినహా), కాబట్టి `merkleRoot()` కూడా `payable` కాదని మనకు తెలుసు. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------------ | ------------------------------------------------------------------------- | +| F9 | JUMPDEST | | +| FA | POP | | +| FB | PUSH2 0x00da | 0xDA | +| FE | PUSH1 0x00 | 0x00 0xDA | +| 100 | SLOAD | స్టోరేజ్[0] 0xDA | +| 101 | DUP2 | 0xDA స్టోరేజ్[0] 0xDA | +| 102 | JUMP | స్టోరేజ్[0] 0xDA | + +జంప్ తర్వాత ఏమి జరుగుతుందో [మేము ఇప్పటికే కనుగొన్నాము](#the-da-code). కాబట్టి `merkleRoot()` స్టోరేజ్[0]ను తిరిగి ఇస్తుంది. + +## 0x81e580d3 {#0x81e580d3} + +0x138-0x143 ఆఫ్‌సెట్‌లలోని కోడ్ `splitter()`లో 0x103-0x10Eలో చూసిన దానికి సమానంగా ఉంటుంది (`JUMPI` గమ్యస్థానం మినహా), కాబట్టి ఈ ఫంక్షన్ కూడా `payable` కాదని మనకు తెలుసు. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------------ | ------------------------------------------------------------------------------- | +| 144 | JUMPDEST | | +| 145 | POP | | +| 146 | PUSH2 0x00da | 0xDA | +| 149 | PUSH2 0x0153 | 0x0153 0xDA | +| 14C | CALLDATASIZE | CALLDATASIZE 0x0153 0xDA | +| 14D | PUSH1 0x04 | 0x04 CALLDATASIZE 0x0153 0xDA | +| 14F | PUSH2 0x018f | 0x018F 0x04 CALLDATASIZE 0x0153 0xDA | +| 152 | JUMP | 0x04 CALLDATASIZE 0x0153 0xDA | +| 18F | JUMPDEST | 0x04 CALLDATASIZE 0x0153 0xDA | +| 190 | PUSH1 0x00 | 0x00 0x04 CALLDATASIZE 0x0153 0xDA | +| 192 | PUSH1 0x20 | 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA | +| 194 | DUP3 | 0x04 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA | +| 195 | DUP5 | CALLDATASIZE 0x04 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA | +| 196 | SUB | CALLDATASIZE-4 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA | +| 197 | SLT | CALLDATASIZE-4\<32 0x00 0x04 CALLDATASIZE 0x0153 0xDA | +| 198 | ISZERO | CALLDATASIZE-4>=32 0x00 0x04 CALLDATASIZE 0x0153 0xDA | +| 199 | PUSH2 0x01a0 | 0x01A0 CALLDATASIZE-4>=32 0x00 0x04 CALLDATASIZE 0x0153 0xDA | +| 19C | JUMPI | 0x00 0x04 CALLDATASIZE 0x0153 0xDA | + +ఈ ఫంక్షన్ కనీసం 32 బైట్ల (ఒక పదం) కాల్ డేటాను తీసుకుంటుందని అనిపిస్తుంది. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------- | -------------------------------------------- | +| 19D | DUP1 | 0x00 0x00 0x04 CALLDATASIZE 0x0153 0xDA | +| 19E | DUP2 | 0x00 0x00 0x00 0x04 CALLDATASIZE 0x0153 0xDA | +| 19F | REVERT | | + +దానికి కాల్ డేటా లభించకపోతే, లావాదేవీ ఏ రిటర్న్ డేటా లేకుండా రివర్ట్ చేయబడుతుంది. + +ఫంక్షన్ _నిజంగా_ తనకు అవసరమైన కాల్ డేటాను పొందితే ఏమి జరుగుతుందో చూద్దాం. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------------ | ----------------------------------------------------------- | +| 1A0 | JUMPDEST | 0x00 0x04 CALLDATASIZE 0x0153 0xDA | +| 1A1 | POP | 0x04 CALLDATASIZE 0x0153 0xDA | +| 1A2 | CALLDATALOAD | calldataload(4) CALLDATASIZE 0x0153 0xDA | + +`calldataload(4)` అనేది పద్ధతి సంతకం _తర్వాత_ కాల్ డేటా యొక్క మొదటి పదం + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1A3 | SWAP2 | 0x0153 CALLDATASIZE calldataload(4) 0xDA | +| 1A4 | SWAP1 | CALLDATASIZE 0x0153 calldataload(4) 0xDA | +| 1A5 | POP | 0x0153 calldataload(4) 0xDA | +| 1A6 | JUMP | calldataload(4) 0xDA | +| 153 | JUMPDEST | calldataload(4) 0xDA | +| 154 | PUSH2 0x016e | 0x016E calldataload(4) 0xDA | +| 157 | JUMP | calldataload(4) 0xDA | +| 16E | JUMPDEST | calldataload(4) 0xDA | +| 16F | PUSH1 0x04 | 0x04 calldataload(4) 0xDA | +| 171 | DUP2 | calldataload(4) 0x04 calldataload(4) 0xDA | +| 172 | DUP2 | 0x04 calldataload(4) 0x04 calldataload(4) 0xDA | +| 173 | SLOAD | స్టోరేజ్[4] calldataload(4) 0x04 calldataload(4) 0xDA | +| 174 | DUP2 | calldataload(4) స్టోరేజ్[4] calldataload(4) 0x04 calldataload(4) 0xDA | +| 175 | LT | calldataload(4)\<స్టోరేజ్[4] calldataload(4) 0x04 calldataload(4) 0xDA | +| 176 | PUSH2 0x017e | 0x017EC calldataload(4)\<స్టోరేజ్[4] calldataload(4) 0x04 calldataload(4) 0xDA | +| 179 | JUMPI | calldataload(4) 0x04 calldataload(4) 0xDA | + +మొదటి పదం స్టోరేజ్[4] కంటే తక్కువ కాకపోతే, ఫంక్షన్ విఫలమవుతుంది. ఇది ఏ రిటర్న్ విలువ లేకుండా రివర్ట్ అవుతుంది: + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ---------- | ------------------------------------------------------------- | +| 17A | PUSH1 0x00 | 0x00 ... | +| 17C | DUP1 | 0x00 0x00 ... | +| 17D | REVERT | | + +calldataload(4) స్టోరేజ్[4] కంటే తక్కువగా ఉంటే, మనకు ఈ కోడ్ వస్తుంది: + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ---------- | ----------------------------------------------------------------------------------------- | +| 17E | JUMPDEST | calldataload(4) 0x04 calldataload(4) 0xDA | +| 17F | PUSH1 0x00 | 0x00 calldataload(4) 0x04 calldataload(4) 0xDA | +| 181 | SWAP2 | 0x04 calldataload(4) 0x00 calldataload(4) 0xDA | +| 182 | DUP3 | 0x00 0x04 calldataload(4) 0x00 calldataload(4) 0xDA | +| 183 | MSTORE | calldataload(4) 0x00 calldataload(4) 0xDA | + +మరియు మెమరీ స్థానాలు 0x00-0x1F ఇప్పుడు 0x04 డేటాను కలిగి ఉన్నాయి (0x00-0x1E అన్నీ సున్నాలు, 0x1F నాలుగు) + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 184 | PUSH1 0x20 | 0x20 calldataload(4) 0x00 calldataload(4) 0xDA | +| 186 | SWAP1 | calldataload(4) 0x20 0x00 calldataload(4) 0xDA | +| 187 | SWAP2 | 0x00 0x20 calldataload(4) calldataload(4) 0xDA | +| 188 | SHA3 | (((0x00-0x1F యొక్క SHA3))) calldataload(4) calldataload(4) 0xDA | +| 189 | ADD | (((0x00-0x1F యొక్క SHA3)))+calldataload(4) calldataload(4) 0xDA | +| 18A | SLOAD | స్టోరేజ్[(((0x00-0x1F యొక్క SHA3))) + calldataload(4)] calldataload(4) 0xDA | + +కాబట్టి స్టోరేజ్‌లో ఒక లుకప్ టేబుల్ ఉంది, ఇది 0x000...0004 యొక్క SHA3 వద్ద మొదలవుతుంది మరియు ప్రతి చట్టబద్ధమైన కాల్ డేటా విలువ కోసం ఒక ఎంట్రీని కలిగి ఉంటుంది (స్టోరేజ్[4] కంటే తక్కువ విలువ). + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 18B | SWAP1 | calldataload(4) స్టోరేజ్[(((0x00-0x1F యొక్క SHA3))) + calldataload(4)] 0xDA | +| 18C | POP | స్టోరేజ్[(((0x00-0x1F యొక్క SHA3))) + calldataload(4)] 0xDA | +| 18D | DUP2 | 0xDA స్టోరేజ్[(((0x00-0x1F యొక్క SHA3))) + calldataload(4)] 0xDA | +| 18E | JUMP | స్టోరేజ్[(((0x00-0x1F యొక్క SHA3))) + calldataload(4)] 0xDA | + +[0xDA ఆఫ్‌సెట్ వద్ద ఉన్న కోడ్](#the-da-code) ఏమి చేస్తుందో మాకు ఇప్పటికే తెలుసు, అది స్టాక్ టాప్ విలువను కాలర్‌కు తిరిగి ఇస్తుంది. కాబట్టి ఈ ఫంక్షన్ లుకప్ టేబుల్ నుండి విలువను కాలర్‌కు తిరిగి ఇస్తుంది. + +## 0x1f135823 {#0x1f135823} + +0xC4-0xCF ఆఫ్‌సెట్‌లలోని కోడ్ `splitter()`లో 0x103-0x10Eలో చూసిన దానికి సమానంగా ఉంటుంది (`JUMPI` గమ్యస్థానం మినహా), కాబట్టి ఈ ఫంక్షన్ కూడా `payable` కాదని మనకు తెలుసు. + +| ఆఫ్‌సెట్ | ఆప్కోడ్ | స్టాక్ | +| -------: | ------------ | ----------------- | +| D0 | JUMPDEST | | +| D1 | POP | | +| D2 | PUSH2 0x00da | 0xDA | +| D5 | PUSH1 0x06 | 0x06 0xDA | +| D7 | SLOAD | Value\* 0xDA | +| D8 | DUP2 | 0xDA Value\* 0xDA | +| D9 | JUMP | Value\* 0xDA | + +[0xDA ఆఫ్‌సెట్ వద్ద ఉన్న కోడ్](#the-da-code) ఏమి చేస్తుందో మాకు ఇప్పటికే తెలుసు, అది స్టాక్ టాప్ విలువను కాలర్‌కు తిరిగి ఇస్తుంది. కాబట్టి ఈ ఫంక్షన్ `Value*`ను తిరిగి ఇస్తుంది. + +### పద్ధతి సారాంశం {#method-summary} + +ఈ సమయంలో మీరు కాంట్రాక్ట్‌ను అర్థం చేసుకున్నారని మీకు అనిపిస్తుందా? నాకు అలా అనిపించడం లేదు. ఇప్పటివరకు మాకు ఈ పద్ధతులు ఉన్నాయి: + +| పద్ధతి | అర్థం | +| ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | +| బదిలీ | కాల్ ద్వారా అందించిన విలువను అంగీకరించి, `Value*`ను ఆ మొత్తంతో పెంచండి | +| [splitter()](#splitter) | స్టోరేజ్[3], ప్రాక్సీ చిరునామాను తిరిగి ఇవ్వండి | +| [currentWindow()](#currentwindow) | స్టోరేజ్[1]ను తిరిగి ఇవ్వండి | +| [merkleRoot()](#merkeroot) | స్టోరేజ్[0]ను తిరిగి ఇవ్వండి | +| [0x81e580d3](#0x81e580d3) | పారామీటర్ స్టోరేజ్[4] కంటే తక్కువగా ఉంటే, ఒక లుకప్ టేబుల్ నుండి విలువను తిరిగి ఇవ్వండి | +| [0x1f135823](#0x1f135823) | స్టోరేజ్[6]ను తిరిగి ఇవ్వండి, అకా విలువ\* | + +కానీ మాకు తెలుసు, ఇతర ఏ కార్యాచరణ అయినా స్టోరేజ్[3]లోని కాంట్రాక్ట్ ద్వారా అందించబడుతుంది. ఆ కాంట్రాక్ట్ ఏమిటో మాకు తెలిస్తే అది మాకు ఒక క్లూ ఇస్తుంది. అదృష్టవశాత్తూ, ఇది బ్లాక్ చైను మరియు ప్రతిదీ సిద్ధాంతపరంగా అయినా తెలుసు. మేము స్టోరేజ్[3]ను సెట్ చేసే ఏ పద్ధతులను చూడలేదు, కాబట్టి అది కన్‌స్ట్రక్టర్ ద్వారా సెట్ చేయబడి ఉండాలి. + +## నిర్మాణకర్త {#the-constructor} + +మేము [ఒక కాంట్రాక్ట్‌ను చూసినప్పుడు](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f) దాన్ని సృష్టించిన లావాదేవీని కూడా చూడవచ్చు. + +![సృష్టి లావాదేవీని క్లిక్ చేయండి](create-tx.png) + +మేము ఆ లావాదేవీని క్లిక్ చేసి, ఆపై **స్టేట్** ట్యాబ్‌ను క్లిక్ చేస్తే, పారామీటర్ల యొక్క ప్రారంభ విలువలను చూడవచ్చు. నిర్దిష్టంగా, స్టోరేజ్[3] [0x2f81e57ff4f4d83b40a9f719fd892d8e806e0761](https://etherscan.io/address/0x2f81e57ff4f4d83b40a9f719fd892d8e806e0761)ను కలిగి ఉందని మనం చూడవచ్చు. ఆ కాంట్రాక్ట్ తప్పనిసరిగా తప్పిపోయిన కార్యాచరణను కలిగి ఉండాలి. మనం పరిశోధిస్తున్న కాంట్రాక్ట్ కోసం ఉపయోగించిన అదే సాధనాలను ఉపయోగించి మనం దానిని అర్థం చేసుకోవచ్చు. + +## ప్రాక్సీ కాంట్రాక్ట్ {#the-proxy-contract} + +పైన అసలు కాంట్రాక్ట్ కోసం మనం ఉపయోగించిన అవే పద్ధతులను ఉపయోగించి కాంట్రాక్ట్ రివర్ట్ అవుతుందని మనం చూడవచ్చు: + +- కాల్‌కు ఏదైనా ETH జతచేయబడి ఉంటే (0x05-0x0F) +- కాల్ డేటా పరిమాణం నాలుగు కంటే తక్కువ (0x10-0x19 మరియు 0xBE-0xC2) + +మరియు అది మద్దతు ఇచ్చే పద్ధతులు: + +| పద్ధతి | పద్ధతి సంతకం | జంప్ చేయడానికి ఆఫ్‌సెట్ | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------- | +| [scaleAmountByPercentage(uint256,uint256)](https://www.4byte.directory/signatures/?bytes4_signature=0x8ffb5c97) | 0x8ffb5c97 | 0x0135 | +| [isClaimed(uint256,address)](https://www.4byte.directory/signatures/?bytes4_signature=0xd2ef0795) | 0xd2ef0795 | 0x0151 | +| [claim(uint256,address,uint256,bytes32[])](https://www.4byte.directory/signatures/?bytes4_signature=0x2e7ba6ef) | 0x2e7ba6ef | 0x00F4 | +| [incrementWindow()](https://www.4byte.directory/signatures/?bytes4_signature=0x338b1d31) | 0x338b1d31 | 0x0110 | +| ??? | 0x3f26479e | 0x0118 | +| ??? | 0x1e7df9d3 | 0x00C3 | +| [currentWindow()](https://www.4byte.directory/signatures/?bytes4_signature=0xba0bafb4) | [0xba0bafb4](#currentwindow) | 0x0148 | +| [merkleRoot()](https://www.4byte.directory/signatures/?bytes4_signature=0x2eb4a7ab) | [0x2eb4a7ab](#merkleroot) | 0x0107 | +| ??? | [0x81e580d3](#0x81e580d3) | 0x0122 | +| ??? | [0x1f135823](#0x1f135823) | 0x00D8 | + +మేము దిగువన ఉన్న నాలుగు పద్ధతులను విస్మరించవచ్చు, ఎందుకంటే మనం వాటికి ఎప్పటికీ చేరుకోలేము. వాటి సంతకాలు అలాంటివి, మన అసలు కాంట్రాక్ట్ వాటిని స్వయంగా చూసుకుంటుంది (మీరు పైన వివరాలను చూడటానికి సంతకాలపై క్లిక్ చేయవచ్చు), కాబట్టి అవి తప్పనిసరిగా [ఓవర్‌రైడ్ చేయబడిన పద్ధతులు](https://medium.com/upstate-interactive/solidity-override-vs-virtual-functions-c0a5dfb83aaf) అయి ఉండాలి. + +మిగిలిన పద్ధతులలో ఒకటి `claim()`, మరియు మరొకటి `isClaimed()`, కాబట్టి ఇది ఒక ఎయిర్‌డ్రాప్ కాంట్రాక్ట్ లాగా కనిపిస్తుంది. మిగిలినవాటిని ఆప్కోడ్ ద్వారా ఆప్కోడ్ చూడటానికి బదులుగా, మనం [డీకంపైలర్‌ను ప్రయత్నించవచ్చు](https://etherscan.io/bytecode-decompiler?a=0x2f81e57ff4f4d83b40a9f719fd892d8e806e0761), ఇది ఈ కాంట్రాక్ట్ నుండి మూడు ఫంక్షన్ల కోసం ఉపయోగపడే ఫలితాలను ఉత్పత్తి చేస్తుంది. ఇతర వాటిని రివర్స్ ఇంజనీరింగ్ చేయడం పాఠకులకు అభ్యాసంగా వదిలివేయబడింది. + +### scaleAmountByPercentage {#scaleamountbypercentage} + +ఈ ఫంక్షన్ కోసం డీకంపైలర్ మాకు ఇచ్చేది ఇదే: + +```python +def unknown8ffb5c97(uint256 _param1, uint256 _param2) payable: + require calldata.size - 4 >=′ 64 + if _param1 and _param2 > -1 / _param1: + revert with 0, 17 + return (_param1 * _param2 / 100 * 10^6) +``` + +మొదటి `require` ఫంక్షన్ సంతకం యొక్క నాలుగు బైట్లకు అదనంగా, కాల్ డేటా కనీసం 64 బైట్లను కలిగి ఉందని పరీక్షిస్తుంది, ఇది రెండు పారామీటర్లకు సరిపోతుంది. లేకపోతే స్పష్టంగా ఏదో తప్పు ఉంది. + +`if` స్టేట్‌మెంట్ `_param1` సున్నా కాదని మరియు `_param1 * _param2` ప్రతికూలంగా లేదని తనిఖీ చేస్తున్నట్లు అనిపిస్తుంది. ఇది బహుశా వ్రాప్ అరౌండ్ కేసులను నివారించడానికి కావచ్చు. + +చివరగా, ఫంక్షన్ ఒక స్కేల్ చేయబడిన విలువను తిరిగి ఇస్తుంది. + +### claim {#claim} + +డీకంపైలర్ సృష్టించే కోడ్ సంక్లిష్టంగా ఉంటుంది, మరియు దానిలో అన్నీ మాకు సంబంధితంగా ఉండవు. ఉపయోగకరమైన సమాచారాన్ని అందించే లైన్‌లపై దృష్టి పెట్టడానికి నేను దానిలో కొంత భాగాన్ని వదిలివేయబోతున్నాను + +```python +def unknown2e7ba6ef(uint256 _param1, uint256 _param2, uint256 _param3, array _param4) payable: + ... + require _param2 == addr(_param2) + ... + if currentWindow <= _param1: + revert with 0, 'cannot claim for a future window' +``` + +మేము ఇక్కడ రెండు ముఖ్యమైన విషయాలను చూస్తాము: + +- `_param2`, `uint256`గా ప్రకటించబడినప్పటికీ, వాస్తవానికి ఒక చిరునామా +- `_param1` అనేది క్లెయిమ్ చేయబడుతున్న విండో, ఇది `currentWindow` లేదా అంతకంటే ముందు ఉండాలి. + +```python + ... + if stor5[_claimWindow][addr(_claimFor)]: + revert with 0, 'Account already claimed the given window' +``` + +కాబట్టి ఇప్పుడు మనకు తెలుసు, స్టోరేజ్[5] అనేది విండోలు మరియు చిరునామల శ్రేణి, మరియు ఆ విండో కోసం చిరునామా రివార్డును క్లెయిమ్ చేసిందా లేదా అనేది. + +```python + ... + idx = 0 + s = 0 + while idx < _param4.length: + ... + if s + sha3(mem[(32 * _param4.length) + 328 len mem[(32 * _param4.length) + 296]]) > mem[(32 * idx) + 296]: + mem[mem[64] + 32] = mem[(32 * idx) + 296] + ... + s = sha3(mem[_62 + 32 len mem[_62]]) + continue + ... + s = sha3(mem[_66 + 32 len mem[_66]]) + continue + if unknown2eb4a7ab != s: + revert with 0, 'Invalid proof' +``` + +`unknown2eb4a7ab` వాస్తవానికి `merkleRoot()` ఫంక్షన్ అని మనకు తెలుసు, కాబట్టి ఈ కోడ్ ఒక [మెర్కిల్ ప్రూఫ్](https://medium.com/crypto-0-nite/merkle-proofs-explained-6dd429623dc5)ను ధృవీకరిస్తున్నట్లు కనిపిస్తుంది. అంటే `_param4` ఒక మెర్కిల్ ప్రూఫ్. + +```python + call addr(_param2) with: + value unknown81e580d3[_param1] * _param3 / 100 * 10^6 wei + gas 30000 wei +``` + +ఒక కాంట్రాక్ట్ తన సొంత ETHను మరొక చిరునామాకు (కాంట్రాక్ట్ లేదా బాహ్యంగా యాజమాన్యంలో ఉన్న) ఎలా బదిలీ చేస్తుందో ఇది. బదిలీ చేయవలసిన మొత్తాన్ని విలువగా పిలుస్తుంది. కాబట్టి ఇది ETH యొక్క ఎయిర్‌డ్రాప్ లాగా కనిపిస్తుంది. + +```python + if not return_data.size: + if not ext_call.success: + require ext_code.size(stor2) + call stor2.deposit() with: + value unknown81e580d3[_param1] * _param3 / 100 * 10^6 wei +``` + +కింది రెండు లైన్లు మాకు చెబుతున్నాయి, స్టోరేజ్[2] కూడా మనం పిలిచే ఒక కాంట్రాక్ట్ అని. మనం [కన్‌స్ట్రక్టర్ లావాదేవీని చూస్తే](https://etherscan.io/tx/0xa1ea0549fb349eb7d3aff90e1d6ce7469fdfdcd59a2fd9b8d1f5e420c0d05b58#statechange) ఈ కాంట్రాక్ట్ [0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2) అని చూస్తాము, ఇది ఒక వ్రాప్డ్ ఈథర్ కాంట్రాక్ట్, [దీని సోర్స్ కోడ్ Etherscanకు అప్‌లోడ్ చేయబడింది](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2#code). + +కాబట్టి కాంట్రాక్టులు `_param2`కు ETH పంపడానికి ప్రయత్నిస్తున్నట్లు అనిపిస్తుంది. అది చేయగలిగితే, చాలా మంచిది. లేకపోతే, అది [WETH](https://weth.tkn.eth.limo/) పంపడానికి ప్రయత్నిస్తుంది. `_param2` ఒక బాహ్యంగా యాజమాన్యంలో ఉన్న ఖాతా (EOA) అయితే అది ఎల్లప్పుడూ ETHను అందుకోగలదు, కానీ కాంట్రాక్టులు ETHను అందుకోవడానికి నిరాకరించవచ్చు. అయితే, WETH అనేది ERC-20 మరియు కాంట్రాక్టులు దానిని అంగీకరించడానికి నిరాకరించలేవు. + +```python + ... + log 0xdbd5389f: addr(_param2), unknown81e580d3[_param1] * _param3 / 100 * 10^6, bool(ext_call.success) +``` + +ఫంక్షన్ చివరిలో ఒక లాగ్ ఎంట్రీ ఉత్పత్తి చేయబడటం మనం చూస్తాము. [ఉత్పత్తి చేయబడిన లాగ్ ఎంట్రీలను చూడండి](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f#events) మరియు `0xdbd5...`తో ప్రారంభమయ్యే టాపిక్‌పై ఫిల్టర్ చేయండి. అలాంటి ఎంట్రీని ఉత్పత్తి చేసిన లావాదేవీలలో ఒకదానిపై [క్లిక్ చేస్తే](https://etherscan.io/tx/0xe7d3b7e00f645af17dfbbd010478ef4af235896c65b6548def1fe95b3b7d2274), అది నిజానికి ఒక క్లెయిమ్ లాగా కనిపిస్తుంది - ఖాతా మనం రివర్స్ ఇంజనీరింగ్ చేస్తున్న కాంట్రాక్ట్‌కు ఒక సందేశం పంపింది, మరియు బదులుగా ETH పొందింది. + +![ఒక క్లెయిమ్ లావాదేవీ](claim-tx.png) + +### 1e7df9d3 {#1e7df9d3} + +ఈ ఫంక్షన్ పైన ఉన్న [`claim`](#claim)కు చాలా పోలి ఉంటుంది. ఇది కూడా ఒక మెర్కిల్ ప్రూఫ్‌ను తనిఖీ చేస్తుంది, మొదటి దానికి ETHను బదిలీ చేయడానికి ప్రయత్నిస్తుంది, మరియు అదే రకమైన లాగ్ ఎంట్రీని ఉత్పత్తి చేస్తుంది. + +```python +def unknown1e7df9d3(uint256 _param1, uint256 _param2, array _param3) payable: + ... + idx = 0 + s = 0 + while idx < _param3.length: + if idx >= mem[96]: + revert with 0, 50 + _55 = mem[(32 * idx) + 128] + if s + sha3(mem[(32 * _param3.length) + 160 len mem[(32 * _param3.length) + 128]]) > mem[(32 * idx) + 128]: + ... + s = sha3(mem[_58 + 32 len mem[_58]]) + continue + mem[mem[64] + 32] = s + sha3(mem[(32 * _param3.length) + 160 len mem[(32 * _param3.length) + 128]]) + ... + if unknown2eb4a7ab != s: + revert with 0, 'Invalid proof' + ... + call addr(_param1) with: + value s wei + gas 30000 wei + if not return_data.size: + if not ext_call.success: + require ext_code.size(stor2) + call stor2.deposit() with: + value s wei + gas gas_remaining wei + ... + log 0xdbd5389f: addr(_param1), s, bool(ext_call.success) +``` + +ప్రధాన వ్యత్యాసం ఏమిటంటే, మొదటి పారామీటర్, ఉపసంహరించుకోవడానికి విండో, అక్కడ లేదు. బదులుగా, క్లెయిమ్ చేయగల అన్ని విండోల మీద ఒక లూప్ ఉంది. + +```python + idx = 0 + s = 0 + while idx < currentWindow: + ... + if stor5[mem[0]]: + if idx == -1: + revert with 0, 17 + idx = idx + 1 + s = s + continue + ... + stor5[idx][addr(_param1)] = 1 + if idx >= unknown81e580d3.length: + revert with 0, 50 + mem[0] = 4 + if unknown81e580d3[idx] and _param2 > -1 / unknown81e580d3[idx]: + revert with 0, 17 + if s > !(unknown81e580d3[idx] * _param2 / 100 * 10^6): + revert with 0, 17 + if idx == -1: + revert with 0, 17 + idx = idx + 1 + s = s + (unknown81e580d3[idx] * _param2 / 100 * 10^6) + continue +``` + +కాబట్టి ఇది అన్ని విండోలను క్లెయిమ్ చేసే `claim` వేరియంట్ లాగా కనిపిస్తుంది. + +## ముగింపు {#conclusion} + +ఇప్పటికి మీరు సోర్స్ కోడ్ అందుబాటులో లేని కాంట్రాక్టులను, ఆప్కోడ్లను లేదా (అది పనిచేసినప్పుడు) డీకంపైలర్‌ను ఉపయోగించి ఎలా అర్థం చేసుకోవాలో తెలుసుకోవాలి. ఈ వ్యాసం యొక్క పొడవు నుండి స్పష్టంగా కనిపించే విధంగా, ఒక కాంట్రాక్ట్‌ను రివర్స్ ఇంజనీరింగ్ చేయడం చిన్న విషయం కాదు, కానీ భద్రత అవసరమైన వ్యవస్థలో, కాంట్రాక్టులు వాగ్దానం చేసినట్లుగా పనిచేస్తాయని ధృవీకరించగలగడం ఒక ముఖ్యమైన నైపుణ్యం. + +[నా మరిన్ని పనుల కోసం ఇక్కడ చూడండి](https://cryptodocguy.pro/). diff --git a/public/content/translations/te/developers/tutorials/run-node-raspberry-pi/index.md b/public/content/translations/te/developers/tutorials/run-node-raspberry-pi/index.md new file mode 100644 index 00000000000..78aa0f493fe --- /dev/null +++ b/public/content/translations/te/developers/tutorials/run-node-raspberry-pi/index.md @@ -0,0 +1,190 @@ +--- +title: "రాస్ప్బెర్రీ పై 4లో ఇతీరియము నోడ్‌ను నడపండి" +description: "మీ రాస్ప్బెర్రీ పై 4ను ఫ్లాష్ చేయండి, ఈథర్నెట్ కేబుల్‌ను ప్లగ్ ఇన్ చేయండి, SSD డిస్క్‌ను కనెక్ట్ చేయండి, రాస్ప్బెర్రీ పై 4ను పూర్తి ఇతీరియము నోడ్ + వ్యాలిడేటర్‌గా మార్చడానికి పరికరాన్ని పవర్ అప్ చేయండి" +author: "EthereumOnArm" +tags: + [ + "క్లయింట్లు", + "ఎగ్జిక్యూషన్ లేయర్", + "ఏకాభిప్రాయ లేయర్", + "నోడ్‌లు" + ] +lang: te +skill: intermediate +published: 2022-06-10 +source: Ethereum on ARM +sourceUrl: https://ethereum-on-arm-documentation.readthedocs.io/en/latest/ +--- + +**ARMపై ఇతీరియము అనేది ఒక కస్టమ్ లైనక్స్ ఇమేజ్, ఇది ఒక రాస్ప్బెర్రీ పైను ఇతీరియము నోడ్‌గా మార్చగలదు.** + +ఒక రాస్ప్బెర్రీ పైను ఒక ఇతీరియము నోడ్‌గా మార్చడానికి ARMపై ఇతీరియమును ఉపయోగించడానికి, కింది హార్డ్‌వేర్ సిఫార్సు చేయబడింది: + +- రాస్ప్బెర్రీ 4 (మోడల్ B 8GB), Odroid M1 లేదా Rock 5B (8GB/16GB RAM) బోర్డ్ +- మైక్రోSD కార్డ్ (కనీసం 16 GB క్లాస్ 10) +- కనీసం 2 TB SSD USB 3.0 డిస్క్ లేదా USB నుండి SATA కేస్‌తో కూడిన SSD. +- విద్యుత్ సరఫరా +- ఈథర్నెట్ కేబుల్ +- పోర్ట్ ఫార్వార్డింగ్ (మరింత సమాచారం కోసం ఖాతాదారులను చూడండి) +- హీట్‌సింక్ మరియు ఫ్యాన్‌తో కూడిన ఒక కేస్ +- USB కీబోర్డ్, మానిటర్ మరియు HDMI కేబుల్ (మైక్రో-HDMI) (ఐచ్ఛికం) + +## ARMపై ఇతీరియము ఎందుకు అమలుచేయాలి? {#why-run-ethereum-on-arm} + +ARM బోర్డులు చాలా సరసమైన, ఫ్లెక్సిబుల్, చిన్న కంప్యూటర్లు. అవి ఇతీరియము నోడ్‌లను అమలుచేయడానికి మంచి ఎంపికలు, ఎందుకంటే వాటిని చౌకగా కొనుగోలు చేయవచ్చు, వాటి వనరులన్నీ నోడ్‌పైనే దృష్టి పెట్టేలా కాన్ఫిగర్ చేయవచ్చు, ఇది వాటిని సమర్థవంతంగా చేస్తుంది, అవి తక్కువ శక్తిని వినియోగిస్తాయి మరియు భౌతికంగా చిన్నవిగా ఉంటాయి కాబట్టి ఏ ఇంట్లోనైనా ఇబ్బంది లేకుండా సరిపోతాయి. నోడ్‌లను ప్రారంభించడం కూడా చాలా సులభం ఎందుకంటే రాస్ప్బెర్రీ పై యొక్క మైక్రో SDని సాఫ్ట్‌వేర్‌ను డౌన్‌లోడ్ చేయకుండా లేదా రూపొందించకుండా ముందుగా నిర్మించిన ఇమేజ్‌తో ఫ్లాష్ చేయవచ్చు. + +## ఇది ఎలా పనిచేస్తుంది? {#how-does-it-work} + +రాస్ప్బెర్రీ పై మెమరీ కార్డ్ ముందుగా నిర్మించిన ఇమేజ్‌తో ఫ్లాష్ చేయబడుతుంది. ఈ ఇమేజ్‌లో ఇతీరియము నోడ్‌ను అమలుచేయడానికి అవసరమైన ప్రతిదీ ఉంటుంది. ఫ్లాష్ చేసిన కార్డ్‌తో, వినియోగదారుడు చేయాల్సిందల్లా రాస్ప్బెర్రీ పైను పవర్-ఆన్ చేయడమే. నోడ్‌ను అమలుచేయడానికి అవసరమైన అన్ని ప్రక్రియలు స్వయంచాలకంగా ప్రారంభించబడతాయి. ఇది పనిచేస్తుంది ఎందుకంటే మెమరీ కార్డ్‌లో లైనక్స్ ఆధారిత ఆపరేటింగ్ సిస్టమ్ (OS) ఉంటుంది, దీనిపై సిస్టమ్-స్థాయి ప్రక్రియలు స్వయంచాలకంగా అమలు చేయబడతాయి, ఇవి యూనిట్‌ను ఇతీరియము నోడ్‌గా మారుస్తాయి. + +ప్రముఖ రాస్ప్బెర్రీ పై లైనక్స్ OS "రాస్ప్బియన్" ఉపయోగించి ఇతీరియమును అమలుచేయలేరు, ఎందుకంటే రాస్ప్బియన్ ఇప్పటికీ 32-బిట్ ఆర్కిటెక్చర్‌ను ఉపయోగిస్తుంది, ఇది ఇతీరియము వినియోగదారులకు మెమరీ సమస్యలను ఎదుర్కొనేలా చేస్తుంది మరియు ఏకాభిప్రాయం క్లయింట్‌లు 32-బిట్ బైనరీలకు మద్దతు ఇవ్వవు. దీన్ని అధిగమించడానికి, ARMపై ఇతీరియము బృందం "ఆర్మ్బియన్" అనే స్థానిక 64-బిట్ OSకి మారింది. + +**పర్యావరణాన్ని ఏర్పాటు చేయడం, SSD డిస్క్‌ను ఫార్మాట్ చేయడం, ఇతీరియము సాఫ్ట్‌వేర్‌ను ఇన్‌స్టాల్ చేసి అమలుచేయడం, అలాగే బ్లాక్ చైను సమకాలీకరణను ప్రారంభించడం వంటి అన్ని అవసరమైన దశలను ఇమేజ్‌లు చూసుకుంటాయి.** + +## ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయం క్లయింట్‌లపై గమనిక {#note-on-execution-and-consensus-clients} + +ARMపై ఇతీరియము ఇమేజ్‌లో సేవలుగా ముందుగా నిర్మించిన ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయం క్లయింట్‌లు ఉంటాయి. ఒక ఇతీరియము నోడ్‌కు రెండు క్లయింట్‌లు సమకాలీకరించబడాలి మరియు అమలు కావాలి. మీరు ఇమేజ్‌ను డౌన్‌లోడ్ చేసి, ఫ్లాష్ చేసి, ఆపై సేవలను ప్రారంభించాల్సి ఉంటుంది. కింది ఎగ్జిక్యూషన్ క్లయింట్‌లతో ఇమేజ్ ముందుగా లోడ్ చేయబడింది: + +- Geth +- Nethermind +- Besu + +మరియు కింది ఏకాభిప్రాయం క్లయింట్‌లు: + +- లైట్‌హౌస్ +- నింబస్ +- ప్రిస్మ్ +- టెకు + +మీరు అమలుచేయడానికి ప్రతి దాని నుండి ఒకదాన్ని ఎంచుకోవాలి - అన్ని ఎగ్జిక్యూషన్ క్లయింట్‌లు అన్ని ఏకాభిప్రాయం క్లయింట్‌లతో అనుకూలంగా ఉంటాయి. మీరు క్లయింట్‌ను స్పష్టంగా ఎంచుకోకపోతే, నోడ్ దాని డిఫాల్ట్‌లకు - Geth మరియు Lighthouse - తిరిగి వస్తుంది మరియు బోర్డ్ పవర్ అప్ అయినప్పుడు వాటిని స్వయంచాలకంగా అమలు చేస్తుంది. మీరు మీ రూటర్‌లో పోర్ట్ 30303ను తెరవాలి, తద్వారా Geth పీర్‌లను కనుగొని కనెక్ట్ చేయగలదు. + +## ఇమేజ్‌ను డౌన్‌లోడ్ చేస్తోంది {#downloading-the-image} + +రాస్ప్బెర్రీ పై 4 ఇతీరియము ఇమేజ్ అనేది ఒక "ప్లగ్ అండ్ ప్లే" ఇమేజ్, ఇది ఎగ్జిక్యూషన్ మరియు ఏకాభిప్రాయం క్లయింట్‌లు రెండింటినీ స్వయంచాలకంగా ఇన్‌స్టాల్ చేసి, సెటప్ చేస్తుంది, అవి ఒకదానితో ఒకటి మాట్లాడుకునేలా మరియు ఇతీరియము నెట్‌వర్క్‌కి కనెక్ట్ అయ్యేలా కాన్ఫిగర్ చేస్తుంది. వినియోగదారుడు చేయాల్సిందల్లా ఒక సాధారణ కమాండ్‌ను ఉపయోగించి వారి ప్రక్రియలను ప్రారంభించడమే. + +[ARMపై ఇతీరియము](https://ethereumonarm-my.sharepoint.com/:u:/p/dlosada/Ec_VmUvr80VFjf3RYSU-NzkBmj2JOteDECj8Bibde929Gw?download=1) నుండి రాస్ప్బెర్రీ పై ఇమేజ్‌ను డౌన్‌లోడ్ చేయండి మరియు SHA256 హాష్‌ను ధృవీకరించండి: + +```sh +# డౌన్‌లోడ్ చేసిన ఇమేజ్‌ను కలిగి ఉన్న డైరెక్టరీ నుండి +shasum -a 256 ethonarm_22.04.00.img.zip +# హాష్ అవుట్‌పుట్ చేయాలి: fb497e8f8a7388b62d6e1efbc406b9558bee7ef46ec7e53083630029c117444f +``` + +Rock 5B మరియు Odroid M1 బోర్డుల కోసం ఇమేజ్‌లు Ethereum-on-Arm [డౌన్‌లోడ్‌ల పేజీ](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/quick-guide/download-and-install.html)లో అందుబాటులో ఉన్నాయని గమనించండి. + +## మైక్రోSDని ఫ్లాష్ చేయడం {#flashing-the-microsd} + +రాస్ప్బెర్రీ పై కోసం ఉపయోగించబడే మైక్రోSD కార్డ్‌ను మొదట డెస్క్‌టాప్ లేదా ల్యాప్‌టాప్‌లో చేర్చాలి, తద్వారా దానిని ఫ్లాష్ చేయవచ్చు. అప్పుడు, కింది టెర్మినల్ కమాండ్‌లు డౌన్‌లోడ్ చేసిన ఇమేజ్‌ను SD కార్డ్‌లో ఫ్లాష్ చేస్తాయి: + +```shell +# మైక్రోSD కార్డ్ పేరును తనిఖీ చేయండి +sudo fdisk -l + +>> sdxxx +``` + +పేరును సరిగ్గా పొందడం చాలా ముఖ్యం ఎందుకంటే తదుపరి కమాండ్‌లో `dd` ఉంటుంది, ఇది ఇమేజ్‌ను దానిపైకి పంపే ముందు కార్డ్ యొక్క ప్రస్తుత కంటెంట్‌ను పూర్తిగా తొలగిస్తుంది. కొనసాగించడానికి, జిప్ చేసిన ఇమేజ్‌ను కలిగి ఉన్న డైరెక్టరీకి నావిగేట్ చేయండి: + +```shell +# ఇమేజ్‌ని అన్‌జిప్ చేసి ఫ్లాష్ చేయండి +unzip ethonarm_22.04.00.img.zip +sudo dd bs=1M if=ethonarm_22.04.00.img of=/dev/ conv=fdatasync status=progress +``` + +కార్డ్ ఇప్పుడు ఫ్లాష్ చేయబడింది, కాబట్టి దానిని రాస్ప్బెర్రీ పైలో చేర్చవచ్చు. + +## నోడ్‌ను ప్రారంభించండి {#start-the-node} + +SD కార్డ్‌ను రాస్ప్బెర్రీ పైలో చొప్పించి, ఈథర్నెట్ కేబుల్ మరియు SSDని కనెక్ట్ చేసి, ఆపై పవర్‌ను ఆన్ చేయండి. OS బూట్ అవుతుంది మరియు క్లయింట్ సాఫ్ట్‌వేర్‌ను ఇన్‌స్టాల్ చేయడం మరియు రూపొందించడంతో సహా, రాస్ప్బెర్రీ పైను ఇతీరియము నోడ్‌గా మార్చే ముందుగా కాన్ఫిగర్ చేసిన పనులను స్వయంచాలకంగా చేయడం ప్రారంభిస్తుంది. దీనికి బహుశా 10-15 నిమిషాలు పట్టవచ్చు. + +ప్రతిదీ ఇన్‌స్టాల్ చేయబడి, కాన్ఫిగర్ చేయబడిన తర్వాత, ssh కనెక్షన్ ద్వారా పరికరంలోకి లాగిన్ అవ్వండి లేదా బోర్డుకు మానిటర్ మరియు కీబోర్డ్ జోడించబడి ఉంటే నేరుగా టెర్మినల్‌ను ఉపయోగించండి. `ethereum` ఖాతాను లాగిన్ చేయడానికి ఉపయోగించండి, ఎందుకంటే దీనికి నోడ్‌ను ప్రారంభించడానికి అవసరమైన అనుమతులు ఉన్నాయి. + +```shell +వినియోగదారుడు: ethereum +పాస్వర్డ్: ethereum +``` + +డిఫాల్ట్ ఎగ్జిక్యూషన్ క్లయింట్, Geth, స్వయంచాలకంగా ప్రారంభమవుతుంది. కింది టెర్మినల్ కమాండ్‌ను ఉపయోగించి లాగ్‌లను తనిఖీ చేయడం ద్వారా మీరు దీన్ని నిర్ధారించవచ్చు: + +```sh +sudo journalctl -u geth -f +``` + +ఏకాభిప్రాయం క్లయింట్‌ను స్పష్టంగా ప్రారంభించాలి. ఇలా చేయడానికి, మొదట మీ రూటర్‌లో పోర్ట్ 9000ని తెరవండి, తద్వారా Lighthouse పీర్‌లను కనుగొని కనెక్ట్ చేయగలదు. అప్పుడు lighthouse సేవను ఎనేబుల్ చేసి, ప్రారంభించండి: + +```sh +sudo systemctl enable lighthouse-beacon +sudo systemctl start lighthouse-beacon +``` + +లాగ్‌లను ఉపయోగించి క్లయింట్‌ను తనిఖీ చేయండి: + +```sh +sudo journalctl -u lighthouse-beacon +``` + +ఏకాభిప్రాయం క్లయింట్ చెక్‌పాయింట్ సమకాలీకరణను ఉపయోగిస్తుంది కాబట్టి కొన్ని నిమిషాల్లో సమకాలీకరిస్తుందని గమనించండి. ఎగ్జిక్యూషన్ క్లయింట్‌కు ఎక్కువ సమయం పడుతుంది - బహుశా చాలా గంటలు, మరియు ఏకాభిప్రాయం క్లయింట్ సమకాలీకరణ పూర్తి చేసే వరకు ఇది ప్రారంభం కాదు (ఎందుకంటే ఎగ్జిక్యూషన్ క్లయింట్‌కు సమకాలీకరించడానికి ఒక లక్ష్యం అవసరం, దీనిని సమకాలీకరించిన ఏకాభిప్రాయం క్లయింట్ అందిస్తుంది). + +Geth మరియు Lighthouse సేవలు రన్ అవుతూ మరియు సమకాలీకరించబడినప్పుడు, మీ రాస్ప్బెర్రీ పై ఇప్పుడు ఇతీరియము నోడ్! Geth యొక్క జావాస్క్రిప్ట్ కన్సోల్‌ను ఉపయోగించి ఇతీరియము నెట్‌వర్క్‌తో పరస్పర చర్య చేయడం సర్వసాధారణం, దీనిని పోర్ట్ 8545లో Geth క్లయింట్‌కు జోడించవచ్చు. Curl వంటి అభ్యర్థన సాధనాన్ని ఉపయోగించి JSON ఆబ్జెక్ట్‌లుగా ఫార్మాట్ చేయబడిన ఆదేశాలను సమర్పించడం కూడా సాధ్యమే. [Geth డాక్యుమెంటేషన్](https://geth.ethereum.org/)లో మరింత చూడండి. + +Geth బ్రౌజర్‌లో చూడగలిగే Grafana డాష్‌బోర్డ్‌కు మెట్రిక్‌లను నివేదించడానికి ముందుగా కాన్ఫిగర్ చేయబడింది. మరింత ఆధునిక వినియోగదారులు `ipaddress:3000`కి నావిగేట్ చేయడం ద్వారా, `user: admin` మరియు `passwd: ethereum`ని పాస్ చేయడం ద్వారా వారి నోడ్ యొక్క ఆరోగ్యాన్ని పర్యవేక్షించడానికి ఈ లక్షణాన్ని ఉపయోగించాలనుకోవచ్చు. + +## వాలిడేటర్లు {#validators} + +ఏకాభిప్రాయం క్లయింట్‌కు ఒక వ్యాలిడేటర్‌ను ఐచ్ఛికంగా జోడించవచ్చు. వ్యాలిడేటర్ సాఫ్ట్‌వేర్ మీ నోడ్‌ను ఏకాభిప్రాయంలో చురుకుగా పాల్గొనడానికి అనుమతిస్తుంది మరియు నెట్‌వర్క్‌కు క్రిప్టో ఎకనామిక్ భద్రతను అందిస్తుంది. ఈ పనికి మీకు ETHలో రివార్డ్ లభిస్తుంది. ఒక వ్యాలిడేటర్‌ను అమలుచేయడానికి, మీరు ముందుగా 32 ETHని కలిగి ఉండాలి, దానిని డిపాజిట్ కాంట్రాక్ట్‌లో డిపాజిట్ చేయాలి. [Launchpad](https://launchpad.ethereum.org/)లో దశల వారీ గైడ్‌ను అనుసరించడం ద్వారా డిపాజిట్ చేయవచ్చు. దీన్ని డెస్క్‌టాప్/ల్యాప్‌టాప్‌లో చేయండి, కానీ కీలను రూపొందించవద్దు — దీన్ని నేరుగా రాస్ప్బెర్రీ పైలో చేయవచ్చు. + +రాస్ప్బెర్రీ పైలో టెర్మినల్ తెరిచి, డిపాజిట్ కీలను రూపొందించడానికి కింది ఆదేశాన్ని అమలు చేయండి: + +``` +sudo apt-get update +sudo apt-get install staking-deposit-cli +cd && deposit new-mnemonic --num_validators 1 +``` + +(లేదా ఎయిర్-గ్యాప్డ్ మెషీన్‌లో అమలు చేయడానికి [staking-deposit-cli](https://github.com/ethereum/staking-deposit-cli)ని డౌన్‌లోడ్ చేసుకోండి మరియు `deposit new-mnemnonic` కమాండ్‌ను అమలు చేయండి) + +స్మృతి పదబంధాన్ని సురక్షితంగా ఉంచండి! పై కమాండ్ నోడ్ యొక్క కీస్టోర్‌లో రెండు ఫైల్‌లను రూపొందించింది: వ్యాలిడేటర్ కీలు మరియు డిపాజిట్ డేటా ఫైల్. డిపాజిట్ డేటాను లాంచ్‌ప్యాడ్‌లోకి అప్‌లోడ్ చేయాలి, కాబట్టి దానిని రాస్ప్బెర్రీ పై నుండి డెస్క్‌టాప్/ల్యాప్‌టాప్‌కి కాపీ చేయాలి. దీన్ని ssh కనెక్షన్ లేదా మరేదైనా కాపీ/పేస్ట్ పద్ధతిని ఉపయోగించి చేయవచ్చు. + +లాంచ్‌ప్యాడ్‌ను నడుపుతున్న కంప్యూటర్‌లో డిపాజిట్ డేటా ఫైల్ అందుబాటులోకి వచ్చిన తర్వాత, దానిని లాంచ్‌ప్యాడ్ స్క్రీన్‌పై ఉన్న `+` మీదకు లాగి, వదలవచ్చు. డిపాజిట్ కాంట్రాక్ట్‌కు లావాదేవీని పంపడానికి తెరపై సూచనలను అనుసరించండి. + +తిరిగి రాస్ప్బెర్రీ పైలో, ఒక వ్యాలిడేటర్‌ను ప్రారంభించవచ్చు. దీనికి వ్యాలిడేటర్ కీలను దిగుమతి చేసుకోవడం, రివార్డ్‌లను సేకరించడానికి చిరునామాను సెట్ చేయడం, ఆపై ముందుగా కాన్ఫిగర్ చేయబడిన వ్యాలిడేటర్ ప్రక్రియను ప్రారంభించడం అవసరం. కింది ఉదాహరణ Lighthouse కోసం—ఇతర ఏకాభిప్రాయం క్లయింట్‌ల కోసం సూచనలు [ARMపై ఇతీరియము డాక్స్](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/)లో అందుబాటులో ఉన్నాయి: + +```shell +# వ్యాలిడేటర్ కీలను దిగుమతి చేయండి +lighthouse account validator import --directory=/home/ethereum/validator_keys + +# రివార్డ్ చిరునామాను సెట్ చేయండి +sudo sed -i 's/' /etc/ethereum/lighthouse-validator.conf + +# వ్యాలిడేటర్‌ను ప్రారంభించండి +sudo systemctl start lighthouse-validator +``` + +అభినందనలు, ఇప్పుడు మీరు రాస్ప్బెర్రీ పైలో పూర్తి ఇతీరియము నోడ్ మరియు వ్యాలిడేటర్‌ను నడుపుతున్నారు! + +## మరిన్ని వివరాలు {#more-details} + +ఈ పేజీ రాస్ప్బెర్రీ పై ఉపయోగించి Geth-Lighthouse నోడ్ మరియు వ్యాలిడేటర్‌ను ఎలా సెటప్ చేయాలో ఒక అవలోకనాన్ని ఇచ్చింది. [Ethereum-on-Arm వెబ్‌సైట్](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/index.html)లో మరింత వివరణాత్మక సూచనలు అందుబాటులో ఉన్నాయి. + +## అభిప్రాయం అభినందనీయం {#feedback-appreciated} + +రాస్ప్బెర్రీ పైకి భారీ వినియోగదారుల సంఖ్య ఉందని మాకు తెలుసు, ఇది ఇతీరియము నెట్‌వర్క్ ఆరోగ్యంపై చాలా సానుకూల ప్రభావాన్ని చూపుతుంది. +దయచేసి ఈ ట్యుటోరియల్‌లోని వివరాలను పరిశీలించండి, టెస్టునెట్‌లలో అమలుచేసి ప్రయత్నించండి, ARMపై ఇతీరియము GitHubని తనిఖీ చేయండి, అభిప్రాయాన్ని తెలియజేయండి, సమస్యలను మరియు పుల్ అభ్యర్థనలను పెంచండి మరియు సాంకేతికత మరియు డాక్యుమెంటేషన్‌ను ముందుకు తీసుకెళ్లడంలో సహాయపడండి! + +## సూచనలు {#references} + +1. https://ubuntu.com/download/raspberry-pi +2. https://wikipedia.org/wiki/Port_forwarding +3. https://prometheus.io +4. https://grafana.com +5. https://forum.armbian.com/topic/5565-zram-vs-swap/ +6. https://geth.ethereum.org +7. https://nethermind.io +8. https://www.hyperledger.org/projects/besu +9. https://github.com/prysmaticlabs/prysm +10. https://lighthouse.sigmaprime.io +11. https://ethersphere.github.io/swarm-home +12. https://raiden.network +13. https://ipfs.io +14. https://status.im +15. https://vipnode.org diff --git a/public/content/translations/te/developers/tutorials/scam-token-tricks/index.md b/public/content/translations/te/developers/tutorials/scam-token-tricks/index.md new file mode 100644 index 00000000000..9fc5dea86b5 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/scam-token-tricks/index.md @@ -0,0 +1,470 @@ +--- +title: "స్కామ్ టోకెన్‌లు ఉపయోగించే కొన్ని ఉపాయాలు మరియు వాటిని ఎలా గుర్తించాలి" +description: "ఈ ట్యుటోరియల్‌లో స్కామర్లు ఆడే కొన్ని ఉపాయాలు, వారు వాటిని ఎలా అమలు చేస్తారు మరియు మనం వాటిని ఎలా గుర్తించవచ్చో చూడటానికి మేము ఒక స్కామ్ టోకెన్‌ను విడదీస్తాము." +author: Ori Pomerantz +tags: + [ + "స్కామ్", + "దృఢత్వం", + "erc-20", + "జావాస్క్రిప్ట్", + "typescript" + ] +skill: intermediate +published: 2023-09-15 +lang: te +--- + +ఈ ట్యుటోరియల్‌లో స్కామర్‌లు ఆడే కొన్ని ఉపాయాలు మరియు వారు వాటిని ఎలా అమలు చేస్తారో చూడటానికి మేము [ఒక స్కామ్ టోకెన్‌ను](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82#code) విడదీస్తాము. ట్యుటోరియల్ ముగిసేనాటికి మీరు ERC-20 టోకెన్ కాంట్రాక్టులు, వాటి సామర్థ్యాలు మరియు సంశయవాదం ఎందుకు అవసరమో అనే దానిపై మరింత సమగ్రమైన దృక్పథాన్ని కలిగి ఉంటారు. ఆ తర్వాత మేము ఆ స్కామ్ టోకెన్ ద్వారా వెలువడే ఈవెంట్‌లను పరిశీలించి, అది చట్టబద్ధమైనది కాదని మేము స్వయంచాలకంగా ఎలా గుర్తించగలమో చూస్తాము. + +## స్కామ్ టోకెన్లు - అవి ఏమిటి, ప్రజలు వాటిని ఎందుకు చేస్తారు మరియు వాటిని ఎలా నివారించాలి {#scam-tokens} + +Ethereumకు అత్యంత సాధారణ ఉపయోగాలలో ఒకటి ఒక సమూహం వ్యాపారం చేయగల టోకెన్‌ను సృష్టించడం, ఒక రకంగా చెప్పాలంటే వారి స్వంత కరెన్సీ. అయినప్పటికీ, చాలా చోట్ల మంచిగా విలువ తెచ్చే విధంగా ఉంటాయి, దీనితో పాటు దొంగలు కూడా దీనిని దొంగతనం చేయాలి అని చూస్తున్నారు అవి వాళ్ళకి విలువ ని ఇస్తాయి. + +మీరు ఈ విషయం గురించి వినియోగదారుడి దృష్టికోణం నుండి [ethereum.orgలో వేరే చోట](/guides/how-to-id-scam-tokens/) మరింత చదవవచ్చు. ఈ ట్యుటోరియల్ ఒక స్కామ్ టోకెన్‌ను విడదీసి అది ఎలా చేయబడుతుంది మరియు ఎలా గుర్తించబడుతుంది అని చూడటంపై దృష్టి పెడుతుంది. + +### wARB ఒక స్కామ్ అని నాకు ఎలా తెలుసు? {#warb-scam} + +మేము విడదీసే టోకెన్ [wARB](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82#code), ఇది చట్టబద్ధమైన [ARB టోకెన్‌కు](https://etherscan.io/token/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1) సమానమైనదిగా నటిస్తుంది. + +ఏది చట్టబద్ధమైన టోకెన్ అని తెలుసుకోవడానికి సులభమైన మార్గం, దానిని ప్రారంభించిన సంస్థ, [ఆర్బిట్రమ్‌ను](https://arbitrum.foundation/) చూడటమే. చట్టబద్ధమైన చిరునామాలు [వారి డాక్యుమెంటేషన్‌లో](https://docs.arbitrum.foundation/deployment-addresses#token) పేర్కొనబడ్డాయి. + +### సోర్స్ కోడ్ ఎందుకు అందుబాటులో ఉంది? {#why-source} + +సాధారణంగా ఇతరులను మోసం చేయడానికి ప్రయత్నించే వ్యక్తులు రహస్యంగా ఉంటారని మేము ఆశిస్తాము, మరియు నిజానికి చాలా స్కామ్ టోకెన్‌లకు వాటి కోడ్ అందుబాటులో ఉండదు (ఉదాహరణకు, [ఇది](https://optimistic.etherscan.io/token/0x15992f382d8c46d667b10dc8456dc36651af1452#code) మరియు [ఇది](https://optimistic.etherscan.io/token/0x026b623eb4aada7de37ef25256854f9235207178#code)). + +అయితే, చట్టబద్ధమైన టోకెన్లు సాధారణంగా వాటి సోర్స్ కోడ్‌ను ప్రచురిస్తాయి, కాబట్టి చట్టబద్ధంగా కనిపించడానికి స్కామ్ టోకెన్‌ల రచయితలు కూడా కొన్నిసార్లు అదే పని చేస్తారు. [wARB](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82#code) అనేది సోర్స్ కోడ్ అందుబాటులో ఉన్న ఆ టోకెన్‌లలో ఒకటి, ఇది దానిని అర్థం చేసుకోవడాన్ని సులభతరం చేస్తుంది. + +కాంట్రాక్ట్ డిప్లాయర్లు సోర్స్ కోడ్‌ను ప్రచురించాలా వద్దా అని ఎంచుకోగలిగినప్పటికీ, వారు తప్పుడు సోర్స్ కోడ్‌ను ప్రచురించ _లేరు_. బ్లాక్ ఎక్స్‌ప్లోరర్ అందించిన సోర్స్ కోడ్‌ను స్వతంత్రంగా కంపైల్ చేస్తుంది మరియు అది ఖచ్చితమైన అదే బైట్‌కోడ్‌ను పొందకపోతే, అది ఆ సోర్స్ కోడ్‌ను తిరస్కరిస్తుంది. [మీరు దీని గురించి ఈథర్‌స్కాన్ సైట్‌లో మరింత చదవవచ్చు](https://etherscan.io/verifyContract). + +## చట్టబద్ధమైన ERC-20 టోకెన్లతో పోలిక {#compare-legit-erc20} + +మేము ఈ టోకెన్‌ను చట్టబద్ధమైన ERC-20 టోకెన్‌లతో పోల్చబోతున్నాము. చట్టబద్ధమైన ERC-20 టోకెన్లు సాధారణంగా ఎలా వ్రాయబడతాయో మీకు తెలిసి ఉండకపోతే, [ఈ ట్యుటోరియల్ చూడండి](/developers/tutorials/erc20-annotated-code/). + +### విశేషాధికార చిరునామాలకు స్థిరాంకాలు {#constants-for-privileged-addresses} + +కాంట్రాక్టులకు కొన్నిసార్లు విశేషాధికార చిరునామాలు అవసరం. దీర్ఘకాలిక ఉపయోగం కోసం రూపొందించబడిన కాంట్రాక్టులు కొన్ని విశేషాధికార చిరునామాలను మార్చడానికి అనుమతిస్తాయి, ఉదాహరణకు కొత్త మల్టీసిగ్ కాంట్రాక్ట్ వాడకాన్ని ప్రారంభించడానికి. ఇది చేయడానికి అనేక మార్గాలు ఉన్నాయి. + +[`HOP` టోకెన్ కాంట్రాక్ట్](https://etherscan.io/address/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc#code) [`Ownable`](https://docs.openzeppelin.com/contracts/2.x/access-control#ownership-and-ownable) నమూనాని ఉపయోగిస్తుంది. విశేషాధికార చిరునామా `_owner` అని పిలవబడే ఫీల్డ్‌లో, స్టోరేజ్‌లో ఉంచబడుతుంది (మూడవ ఫైల్, `Ownable.sol` చూడండి). + +```solidity +abstract contract Ownable is Context { + address private _owner; + . + . + . +} +``` + +[`ARB` టోకెన్ కాంట్రాక్ట్‌కు](https://etherscan.io/address/0xad0c361ef902a7d9851ca7dcc85535da2d3c6fc7#code) నేరుగా విశేషాధికార చిరునామా లేదు. అయితే, దానికి ఒకటి అవసరం లేదు. ఇది [చిరునామా `0xb50721bcf8d664c30412cfbc6cf7a15145234ad1`](https://etherscan.io/address/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1#code) వద్ద ఉన్న [`ప్రాక్సీ`](https://docs.openzeppelin.com/contracts/5.x/api/proxy) వెనుక ఉంటుంది. ఆ కాంట్రాక్ట్‌కు విశేషాధికార చిరునామా ఉంది (నాలుగవ ఫైల్, `ERC1967Upgrade.sol` చూడండి) ఇది అప్‌గ్రేడ్‌ల కోసం ఉపయోగించబడుతుంది. + +```solidity + /** + * @dev EIP1967 అడ్మిన్ స్లాట్‌లో కొత్త చిరునామాను నిల్వ చేస్తుంది. + */ + function _setAdmin(address newAdmin) private { + require(newAdmin != address(0), "ERC1967: కొత్త అడ్మిన్ సున్నా చిరునామా"); + StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin; + } +``` + +దీనికి విరుద్ధంగా, `wARB` కాంట్రాక్ట్‌లో హార్డ్ కోడెడ్ `contract_owner` ఉంది. + +```solidity +contract WrappedArbitrum is Context, IERC20 { + . + . + . + address deployer = 0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1; + address public contract_owner = 0xb40dE7b1beE84Ff2dc22B70a049A07A13a411A33; + . + . + . +} +``` + +[ఈ కాంట్రాక్ట్ యజమాని](https://etherscan.io/address/0xb40dE7b1beE84Ff2dc22B70a049A07A13a411A33) అనేది వేర్వేరు సమయాల్లో వేర్వేరు ఖాతాల ద్వారా నియంత్రించబడే కాంట్రాక్ట్ కాదు, కానీ ఒక [బాహ్యంగా యాజమాన్యం గల ఖాతా](/developers/docs/accounts/#externally-owned-accounts-and-key-pairs). దీనర్థం ఇది బహుశా ఒక వ్యక్తి ద్వారా స్వల్పకాలిక ఉపయోగం కోసం రూపొందించబడింది, విలువైనదిగా మిగిలిపోయే ఒక ERC-20ని నియంత్రించడానికి దీర్ఘకాలిక పరిష్కారంగా కాకుండా. + +మరియు నిజానికి, మనం ఈథర్‌స్కాన్‌లో చూస్తే, మోసగాడు ఈ కాంట్రాక్ట్‌ను మే 19, 2023న కేవలం 12 గంటలు మాత్రమే ([మొదటి లావాదేవీ](https://etherscan.io/tx/0xf49136198c3f925fcb401870a669d43cecb537bde36eb8b41df77f06d5f6fbc2) నుండి [చివరి లావాదేవీ](https://etherscan.io/tx/0xdfd6e717157354e64bbd5d6adf16761e5a5b3f914b1948d3545d39633244d47b) వరకు) ఉపయోగించినట్లు మనం చూస్తాము. + +### నకిలీ `_transfer` ఫంక్షన్ {#the-fake-transfer-function} + +వాస్తవ బదిలీలు [అంతర్గత `_transfer` ఫంక్షన్‌ను](/developers/tutorials/erc20-annotated-code/#the-_transfer-function-_transfer) ఉపయోగించి జరగడం అనేది ప్రామాణికం. + +`wARB`లో ఈ ఫంక్షన్ దాదాపు చట్టబద్ధంగా కనిపిస్తుంది: + +```solidity + function _transfer(address sender, address recipient, uint256 amount) internal virtual{ + require(sender != address(0), "ERC20: సున్నా చిరునామా నుండి బదిలీ"); + require(recipient != address(0), "ERC20: సున్నా చిరునామాకు బదిలీ"); + + _beforeTokenTransfer(sender, recipient, amount); + + _balances[sender] = _balances[sender].sub(amount, "ERC20: బదిలీ మొత్తం బ్యాలెన్స్‌ను మించిపోయింది"); + _balances[recipient] = _balances[recipient].add(amount); + if (sender == contract_owner){ + sender = deployer; + } + emit Transfer(sender, recipient, amount); + } +``` + +అనుమానాస్పద భాగం: + +```solidity + if (sender == contract_owner){ + sender = deployer; + } + emit Transfer(sender, recipient, amount); +``` + +కాంట్రాక్ట్ యజమాని టోకెన్లను పంపితే, `Transfer` ఈవెంట్ అవి `deployer` నుండి వచ్చినట్లు ఎందుకు చూపిస్తుంది? + +అయితే, ఒక మరింత ముఖ్యమైన సమస్య ఉంది. ఈ `_transfer` ఫంక్షన్‌ను ఎవరు పిలుస్తారు? దీనిని బయటి నుండి పిలవలేరు, ఇది `internal`గా గుర్తించబడింది. మరియు మన వద్ద ఉన్న కోడ్‌లో `_transfer`కు ఏ కాల్స్ లేవు. స్పష్టంగా, ఇది ఇక్కడ ఒక ఎరగా ఉంది. + +```solidity + function transfer(address recipient, uint256 amount) public virtual override returns (bool) { + _f_(_msgSender(), recipient, amount); + return true; + } + + function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { + _f_(sender, recipient, amount); + _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: బదిలీ మొత్తం అనుమతిని మించిపోయింది")); + return true; + } +``` + +టోకెన్‌లను బదిలీ చేయడానికి పిలవబడే ఫంక్షన్‌లైన `transfer` మరియు `transferFrom`ను మనం చూసినప్పుడు, అవి `_f_` అనే పూర్తిగా భిన్నమైన ఫంక్షన్‌ను పిలుస్తాయని మనం చూస్తాము. + +### నిజమైన `_f_` ఫంక్షన్ {#the-real-f-function} + +```solidity + function _f_(address sender, address recipient, uint256 amount) internal _mod_(sender,recipient,amount) virtual { + require(sender != address(0), "ERC20: సున్నా చిరునామా నుండి బదిలీ"); + require(recipient != address(0), "ERC20: సున్నా చిరునామాకు బదిలీ"); + + _beforeTokenTransfer(sender, recipient, amount); + + _balances[sender] = _balances[sender].sub(amount, "ERC20: బదిలీ మొత్తం బ్యాలెన్స్‌ను మించిపోయింది"); + _balances[recipient] = _balances[recipient].add(amount); + if (sender == contract_owner){ + + sender = deployer; + } + emit Transfer(sender, recipient, amount); + } +``` + +ఈ ఫంక్షన్‌లో రెండు సంభావ్య రెడ్ ఫ్లాగ్‌లు ఉన్నాయి. + +- [ఫంక్షన్ మాడిఫైయర్](https://www.tutorialspoint.com/solidity/solidity_function_modifiers.htm) `_mod_` యొక్క ఉపయోగం. అయితే, మనం సోర్స్ కోడ్‌ను చూసినప్పుడు `_mod_` వాస్తవానికి హానిరహితమైనదని మనం చూస్తాము. + + ```solidity + modifier _mod_(address sender, address recipient, uint256 amount){ + _; + } + ``` + +- `_transfer`లో మనం చూసిన అదే సమస్య, అంటే `contract_owner` టోకెన్లను పంపినప్పుడు అవి `deployer` నుండి వచ్చినట్లు కనిపించడం. + +### నకిలీ ఈవెంట్‌ల ఫంక్షన్ `dropNewTokens` {#the-fake-events-function-dropNewTokens} + +ఇప్పుడు మనం అసలు స్కామ్ లాగా కనిపించే ఒక విషయానికి వస్తాము. చదవడానికి వీలుగా నేను ఫంక్షన్‌ను కొద్దిగా సవరించాను, కానీ ఇది ఫంక్షనల్‌గా సమానమైనది. + +```solidity +function dropNewTokens(address uPool, + address[] memory eReceiver, + uint256[] memory eAmounts) public auth() +``` + +ఈ ఫంక్షన్‌కు `auth()` మాడిఫైయర్ ఉంది, అంటే దీనిని కేవలం కాంట్రాక్ట్ యజమాని మాత్రమే పిలవగలరు. + +```solidity +modifier auth() { + require(msg.sender == contract_owner, "సంభాషించడానికి అనుమతి లేదు"); + _; +} +``` + +ఈ పరిమితి చాలా అర్ధవంతమైనది, ఎందుకంటే యాదృచ్ఛిక ఖాతాలు టోకెన్‌లను పంపిణీ చేయడాన్ని మేము కోరుకోము. అయితే, ఫంక్షన్‌లో మిగిలిన భాగం అనుమానాస్పదంగా ఉంది. + +```solidity +{ + for (uint256 i = 0; i < eReceiver.length; i++) { + emit Transfer(uPool, eReceiver[i], eAmounts[i]); + } +} +``` + +ఒక పూల్ ఖాతా నుండి స్వీకర్తల శ్రేణికి మొత్తాల శ్రేణిని బదిలీ చేసే ఫంక్షన్ చాలా అర్ధవంతమైనది. పేరోల్, ఎయిర్‌డ్రాప్‌లు మొదలైన అనేక వినియోగ సందర్భాలలో మీరు ఒకే మూలం నుండి బహుళ గమ్యస్థానాలకు టోకెన్‌లను పంపిణీ చేయాలనుకుంటారు. బహుళ లావాదేవీలను జారీ చేయడం లేదా ఒకే లావాదేవీలో భాగంగా వేరొక కాంట్రాక్ట్ నుండి ERC-20ని చాలాసార్లు కాల్ చేయడం కంటే ఒకే లావాదేవీలో చేయడం చౌకగా (గ్యాస్‌లో) ఉంటుంది. + +అయితే, `dropNewTokens` అలా చేయదు. ఇది [`Transfer` ఈవెంట్‌లను](https://eips.ethereum.org/EIPS/eip-20#transfer-1) విడుదల చేస్తుంది, కానీ వాస్తవానికి ఏ టోకెన్‌లను బదిలీ చేయదు. నిజంగా జరగని బదిలీ గురించి ఆఫ్‌చైన్ అప్లికేషన్‌లకు చెప్పి వాటిని గందరగోళానికి గురి చేయడానికి ఎలాంటి చట్టబద్ధమైన కారణం లేదు. + +### దహనం చేసే `Approve` ఫంక్షన్ {#the-burning-approve-function} + +ERC-20 కాంట్రాక్టులు అనుమతుల కోసం [ఒక `approve` ఫంక్షన్‌ను](/developers/tutorials/erc20-annotated-code/#approve) కలిగి ఉండాలి, మరియు నిజానికి మా స్కామ్ టోకెన్‌కు అలాంటి ఫంక్షన్ ఉంది, మరియు అది సరిగ్గా కూడా ఉంది. అయితే, సాలిడిటీ C నుండి వచ్చింది కాబట్టి ఇది కేస్ సిగ్నిఫికెంట్. "Approve" మరియు "approve" వేర్వేరు స్ట్రింగ్‌లు. + +అలాగే, ఫంక్షనాలిటీ `approve`కి సంబంధించినది కాదు. + +```solidity + function Approve( + address[] memory holders) +``` + +ఈ ఫంక్షన్‌ను టోకెన్ హోల్డర్‌ల చిరునామాల శ్రేణితో పిలుస్తారు. + +```solidity + public approver() { +``` + +`approver()` మాడిఫైయర్ ఈ ఫంక్షన్‌ను కేవలం `contract_owner` మాత్రమే పిలవడానికి అనుమతిస్తుందని నిర్ధారిస్తుంది (క్రింద చూడండి). + +```solidity + for (uint256 i = 0; i < holders.length; i++) { + uint256 amount = _balances[holders[i]]; + _beforeTokenTransfer(holders[i], 0x0000000000000000000000000000000000000001, amount); + _balances[holders[i]] = _balances[holders[i]].sub(amount, + "ERC20: బర్న్ మొత్తం బ్యాలెన్స్‌ను మించిపోయింది"); + _balances[0x0000000000000000000000000000000000000001] = + _balances[0x0000000000000000000000000000000000000001].add(amount); + } + } + +``` + +ప్రతి హోల్డర్ చిరునామా కోసం ఫంక్షన్ హోల్డర్ యొక్క మొత్తం బ్యాలెన్స్‌ను `0x00...01` చిరునామాకు తరలిస్తుంది, దానిని సమర్థవంతంగా కాల్చివేస్తుంది (ప్రామాణికంలో వాస్తవ `burn` కూడా మొత్తం సరఫరాను మారుస్తుంది మరియు టోకెన్‌లను `0x00...00`కు బదిలీ చేస్తుంది). దీనర్థం `contract_owner` ఏ యూజర్ ఆస్తులైనా తీసివేయగలరు. అది మీరు ఒక పాలనా టోకెన్‌లో కోరుకునే ఫీచర్ లాగా అనిపించదు. + +### కోడ్ నాణ్యత సమస్యలు {#code-quality-issues} + +ఈ కోడ్ నాణ్యత సమస్యలు ఈ కోడ్ ఒక స్కామ్ అని _నిరూపించవు_, కానీ అవి దానిని అనుమానాస్పదంగా చూపిస్తాయి. ఆర్బిట్రమ్ వంటి వ్యవస్థీకృత కంపెనీలు సాధారణంగా ఇంత చెడ్డ కోడ్‌ను విడుదల చేయవు. + +#### `mount` ఫంక్షన్ {#the-mount-function} + +[ప్రామాణికంలో](https://eips.ethereum.org/EIPS/eip-20) పేర్కొనబడనప్పటికీ, సాధారణంగా కొత్త టోకెన్లను సృష్టించే ఫంక్షన్‌ను [`mint`](https://ethereum.org/el/developers/tutorials/erc20-annotated-code/#the-_mint-and-_burn-functions-_mint-and-_burn) అంటారు. + +మనం `wARB` కన్‌స్ట్రక్టర్‌లో చూస్తే, మింట్ ఫంక్షన్ పేరును ఏదో ఒక కారణం చేత `mount`గా మార్చారని, మరియు సమర్థత కోసం మొత్తం మొత్తానికి బదులుగా ప్రాథమిక సరఫరాలో ఐదవ వంతుతో ఐదుసార్లు పిలవబడిందని మనం చూస్తాము. + +```solidity + constructor () public { + + _name = "Wrapped Arbitrum"; + _symbol = "wARB"; + _decimals = 18; + uint256 initialSupply = 1000000000000; + + mount(deployer, initialSupply*(10**18)/5); + mount(deployer, initialSupply*(10**18)/5); + mount(deployer, initialSupply*(10**18)/5); + mount(deployer, initialSupply*(10**18)/5); + mount(deployer, initialSupply*(10**18)/5); + } +``` + +`mount` ఫంక్షన్ కూడా అనుమానాస్పదంగా ఉంది. + +```solidity + function mount(address account, uint256 amount) public { + require(msg.sender == contract_owner, "ERC20: mint to the zero address"); +``` + +`require`ని చూస్తే, కేవలం కాంట్రాక్ట్ యజమాని మాత్రమే మింట్ చేయడానికి అనుమతించబడ్డారని మనం చూస్తాము. అది చట్టబద్ధమైనది. కానీ ఎర్రర్ మెసేజ్ _కేవలం యజమాని మాత్రమే మింట్ చేయడానికి అనుమతించబడ్డారు_ లేదా అలాంటిది ఉండాలి. బదులుగా, ఇది సంబంధం లేని _ERC20: సున్నా చిరునామాకు మింట్_. సున్నా చిరునామాకు మింట్ చేయడం కోసం సరైన పరీక్ష `require(account != address(0), "")`, దీనిని కాంట్రాక్ట్ ఎప్పుడూ తనిఖీ చేయదు. + +```solidity + _totalSupply = _totalSupply.add(amount); + _balances[contract_owner] = _balances[contract_owner].add(amount); + emit Transfer(address(0), account, amount); + } +``` + +మింటింగ్‌కు నేరుగా సంబంధించిన మరో రెండు అనుమానాస్పద వాస్తవాలు ఉన్నాయి: + +- ఒక `account` పారామీటర్ ఉంది, ఇది బహుశా మింట్ చేయబడిన మొత్తాన్ని అందుకోవలసిన ఖాతా. కానీ పెరిగే బ్యాలెన్స్ వాస్తవానికి `contract_owner`ది. + +- పెరిగిన బ్యాలెన్స్ `contract_owner`కి చెందినదైతే, విడుదలైన ఈవెంట్ `account`కు బదిలీని చూపిస్తుంది. + +### `auth` మరియు `approver` రెండూ ఎందుకు? ఏమీ చేయని `mod` ఎందుకు? {#why-both-autho-and-approver-why-the-mod-that-does-nothing} + +ఈ కాంట్రాక్ట్‌లో మూడు మాడిఫైయర్లు ఉన్నాయి: `_mod_`, `auth`, మరియు `approver`. + +```solidity + modifier _mod_(address sender, address recipient, uint256 amount){ + _; + } +``` + +`_mod_` మూడు పారామీటర్లను తీసుకుంటుంది మరియు వాటితో ఏమీ చేయదు. అది ఎందుకు ఉండాలి? + +```solidity + modifier auth() { + require(msg.sender == contract_owner, "సంభాషించడానికి అనుమతి లేదు"); + _; + } + + modifier approver() { + require(msg.sender == contract_owner, "సంభాషించడానికి అనుమతి లేదు"); + _; + } +``` + +`auth` మరియు `approver` మరింత అర్ధవంతంగా ఉన్నాయి, ఎందుకంటే అవి కాంట్రాక్ట్‌ను `contract_owner` పిలిచారని తనిఖీ చేస్తాయి. మింటింగ్ వంటి కొన్ని విశేషాధికార చర్యలు ఆ ఖాతాకు పరిమితం చేయబడాలని మేము ఆశిస్తాము. అయితే, _ఖచ్చితంగా అదే పని_ చేసే రెండు వేర్వేరు ఫంక్షన్‌లు ఉండటంలో అర్థం ఏమిటి? + +## మేము స్వయంచాలకంగా ఏమి గుర్తించగలము? {#what-can-we-detect-automatically} + +ఈథర్‌స్కాన్‌ను చూడటం ద్వారా `wARB` ఒక స్కామ్ టోకెన్ అని మనం చూడవచ్చు. అయితే, అది కేంద్రీకృత పరిష్కారం. సిద్ధాంతపరంగా, ఈథర్‌స్కాన్‌ను పడగొట్టవచ్చు లేదా హ్యాక్ చేయవచ్చు. ఒక టోకెన్ చట్టబద్ధమైనదా కాదా అని స్వతంత్రంగా గుర్తించగలగడం మంచిది. + +ఒక ERC-20 టోకెన్ అనుమానాస్పదంగా (ఒక స్కామ్ లేదా చాలా చెడ్డగా వ్రాయబడినది) ఉందని గుర్తించడానికి, అవి విడుదల చేసే ఈవెంట్‌లను చూడటం ద్వారా మనం ఉపయోగించగల కొన్ని ఉపాయాలు ఉన్నాయి. + +## అనుమానాస్పద `Approval` ఈవెంట్లు {#suspicious-approval-events} + +[`Approval` ఈవెంట్లు](https://eips.ethereum.org/EIPS/eip-20#approval) కేవలం ఒక ప్రత్యక్ష అభ్యర్థనతో మాత్రమే జరగాలి (అనుమతి ఫలితంగా జరగగల [`Transfer` ఈవెంట్‌లకు](https://eips.ethereum.org/EIPS/eip-20#transfer-1) విరుద్ధంగా). ఈ సమస్యపై మరియు అభ్యర్థనలు ఒక కాంట్రాక్ట్ ద్వారా మధ్యవర్తిత్వం చేయబడటానికి బదులుగా ప్రత్యక్షంగా ఉండవలసిన అవసరంపై వివరణాత్మక వివరణ కోసం [సాలిడిటీ డాక్స్‌ను చూడండి](https://docs.soliditylang.org/en/v0.8.20/security-considerations.html#tx-origin). + +దీనర్థం [బాహ్యంగా యాజమాన్యం గల ఖాతా](/developers/docs/accounts/#types-of-account) నుండి ఖర్చును ఆమోదించే `Approval` ఈవెంట్లు ఆ ఖాతాలో ఉద్భవించిన లావాదేవీల నుండి రావాలి మరియు దీని గమ్యస్థానం ERC-20 కాంట్రాక్ట్. బాహ్యంగా యాజమాన్యం గల ఖాతా నుండి ఏ ఇతర రకమైన ఆమోదం అయినా అనుమానాస్పదమే. + +ఇక్కడ [viem](https://viem.sh/) మరియు [TypeScript](https://www.typescriptlang.org/docs/) (టైప్ సేఫ్టీ ఉన్న ఒక జావాస్క్రిప్ట్ వేరియంట్) ఉపయోగించి, [ఈ రకమైన ఈవెంట్‌ను గుర్తించే ప్రోగ్రామ్](https://github.com/qbzzt/20230915-scam-token-detection) ఉంది. దానిని నడపడానికి: + +1. `.env.example`ని `.env`కి కాపీ చేయండి. +2. Ethereum మెయిన్‌నెట్ నోడ్‌కు URLను అందించడానికి `.env`ను సవరించండి. +3. అవసరమైన ప్యాకేజీలను ఇన్‌స్టాల్ చేయడానికి `pnpm install` నడపండి. +4. అనుమానాస్పద ఆమోదాల కోసం చూడటానికి `pnpm susApproval` నడపండి. + +ఇక్కడ లైన్-బై-లైన్ వివరణ ఉంది: + +```typescript +import { + Address, + TransactionReceipt, + createPublicClient, + http, + parseAbiItem, +} from "viem" +import { mainnet } from "viem/chains" +``` + +`viem` నుండి టైప్ నిర్వచనాలు, ఫంక్షన్‌లు, మరియు చైన్ నిర్వచనాన్ని దిగుమతి చేయండి. + +```typescript +import { config } from "dotenv" +config() +``` + +URLను పొందడానికి `.env`ను చదవండి. + +```typescript +const client = createPublicClient({ + chain: mainnet, + transport: http(process.env.URL), +}) +``` + +ఒక Viem క్లయింట్‌ను సృష్టించండి. మనకు కేవలం బ్లాక్‌చైన్ నుండి చదవాలి, కాబట్టి ఈ క్లయింట్‌కు ప్రైవేట్ కీ అవసరం లేదు. + +```typescript +const testedAddress = "0xb047c8032b99841713b8e3872f06cf32beb27b82" +const fromBlock = 16859812n +const toBlock = 16873372n +``` + +అనుమానాస్పద ERC-20 కాంట్రాక్ట్ చిరునామా, మరియు ఈవెంట్‌ల కోసం మనం వెతకబోయే బ్లాక్‌లు. బ్యాండ్‌విడ్త్ ఖరీదైనది కావడంతో నోడ్ ప్రొవైడర్లు సాధారణంగా ఈవెంట్‌లను చదివే మన సామర్థ్యాన్ని పరిమితం చేస్తారు. అదృష్టవశాత్తూ `wARB` పద్దెనిమిది గంటల కాలం పాటు ఉపయోగంలో లేదు, కాబట్టి మనం అన్ని ఈవెంట్‌ల కోసం చూడవచ్చు (మొత్తం 13 మాత్రమే ఉన్నాయి). + +```typescript +const approvalEvents = await client.getLogs({ + address: testedAddress, + fromBlock, + toBlock, + event: parseAbiItem( + "event Approval(address indexed _owner, address indexed _spender, uint256 _value)" + ), +}) +``` + +Viem నుండి ఈవెంట్ సమాచారం అడగడానికి ఇది మార్గం. మనం దీనికి ఫీల్డ్ పేర్లతో సహా ఖచ్చితమైన ఈవెంట్ సంతకాన్ని అందించినప్పుడు, అది మన కోసం ఈవెంట్‌ను పార్స్ చేస్తుంది. + +```typescript +const isContract = async (addr: Address): boolean => + await client.getBytecode({ address: addr }) +``` + +మా అల్గారిథమ్ కేవలం బాహ్యంగా యాజమాన్యం గల ఖాతాలకు మాత్రమే వర్తిస్తుంది. `client.getBytecode` ద్వారా ఏదైనా బైట్‌కోడ్ తిరిగి వస్తే, అది ఒక కాంట్రాక్ట్ అని అర్థం మరియు మనం దానిని వదిలివేయాలి. + +మీరు ఇంతకుముందు TypeScriptని ఉపయోగించకపోతే, ఫంక్షన్ నిర్వచనం కొంచెం వింతగా కనిపించవచ్చు. మనం కేవలం మొదటి (మరియు ఏకైక) పారామీటర్‌ను `addr` అని పిలుస్తామని మాత్రమే చెప్పము, కానీ అది `Address` రకానికి చెందినదని కూడా చెబుతాము. అదేవిధంగా, `: boolean` భాగం ఫంక్షన్ యొక్క తిరిగి వచ్చే విలువ ఒక బూలియన్ అని TypeScriptకు చెబుతుంది. + +```typescript +const getEventTxn = async (ev: Event): TransactionReceipt => + await client.getTransactionReceipt({ hash: ev.transactionHash }) +``` + +ఈ ఫంక్షన్ ఒక ఈవెంట్ నుండి లావాదేవీ రసీదును పొందుతుంది. లావాదేవీ గమ్యం ఏమిటో తెలుసుకోవడానికి మనకు రసీదు అవసరం. + +```typescript +const suspiciousApprovalEvent = async (ev : Event) : (Event | null) => { +``` + +ఇది అత్యంత ముఖ్యమైన ఫంక్షన్, ఒక ఈవెంట్ అనుమానాస్పదమైనదా కాదా అని నిర్ణయించేది. రిటర్న్ రకం, `(Event | null)`, ఈ ఫంక్షన్ ఒక `Event` లేదా `null`ను తిరిగి ఇవ్వగలదని TypeScriptకు చెబుతుంది. ఈవెంట్ అనుమానాస్పదంగా లేకపోతే మనం `null`ను తిరిగి ఇస్తాము. + +```typescript +const owner = ev.args._owner +``` + +Viemకు ఫీల్డ్ పేర్లు ఉన్నాయి, కాబట్టి అది మన కోసం ఈవెంట్‌ను పార్స్ చేసింది. `_owner` ఖర్చు చేయవలసిన టోకెన్‌ల యజమాని. + +```typescript +// కాంట్రాక్టుల ద్వారా ఆమోదాలు అనుమానాస్పదమైనవి కావు +if (await isContract(owner)) return null +``` + +యజమాని ఒక కాంట్రాక్ట్ అయితే, ఈ ఆమోదం అనుమానాస్పదమైనది కాదని ఊహించండి. ఒక కాంట్రాక్ట్ ఆమోదం అనుమానాస్పదమైనదా కాదా అని తనిఖీ చేయడానికి, లావాదేవీ యొక్క పూర్తి అమలును ట్రేస్ చేయాలి, అది ఎప్పుడైనా యజమాని కాంట్రాక్ట్‌కు చేరిందో లేదో, మరియు ఆ కాంట్రాక్ట్ నేరుగా ERC-20 కాంట్రాక్ట్‌ను పిలిచిందో లేదో చూడాలి. అది మనం చేయాలనుకునే దానికంటే చాలా ఎక్కువ వనరులను ఖర్చు చేస్తుంది. + +```typescript +const txn = await getEventTxn(ev) +``` + +ఆమోదం బాహ్యంగా యాజమాన్యం గల ఖాతా నుండి వస్తే, దానికి కారణమైన లావాదేవీని పొందండి. + +```typescript +// లావాదేవీ యొక్క `from` కాని EOA యజమాని నుండి వస్తే ఆమోదం అనుమానాస్పదంగా ఉంటుంది +if (owner.toLowerCase() != txn.from.toLowerCase()) return ev +``` + +మనం కేవలం స్ట్రింగ్ సమానత్వం కోసం తనిఖీ చేయలేము ఎందుకంటే చిరునామాలు హెక్సాడెసిమల్, కాబట్టి వాటిలో అక్షరాలు ఉంటాయి. కొన్నిసార్లు, ఉదాహరణకు `txn.from`లో, ఆ అక్షరాలు అన్నీ చిన్న అక్షరాలలో ఉంటాయి. ఇతర సందర్భాల్లో, `ev.args._owner` వంటివి, చిరునామా [దోష గుర్తింపు కోసం మిశ్రమ-కేస్‌లో](https://eips.ethereum.org/EIPS/eip-55) ఉంటుంది. + +కానీ లావాదేవీ యజమాని నుండి కాకపోతే, మరియు ఆ యజమాని బాహ్యంగా యాజమాన్యం గలవాడైతే, అప్పుడు మనకు అనుమానాస్పద లావాదేవీ ఉంది. + +```typescript +// లావాదేవీ గమ్యం మనం పరిశోధిస్తున్న ERC-20 కాంట్రాక్ట్ కాకపోయినా కూడా అనుమానాస్పదమే +// పరిశోధిస్తున్నాము +if (txn.to.toLowerCase() != testedAddress) return ev +``` + +అదేవిధంగా, లావాదేవీ యొక్క `to` చిరునామా, మొదట పిలవబడిన కాంట్రాక్ట్, పరిశోధనలో ఉన్న ERC-20 కాంట్రాక్ట్ కాకపోతే అది అనుమానాస్పదమైనది. + +```typescript + // అనుమానించడానికి ఏ కారణం లేకపోతే, nullని తిరిగి ఇవ్వండి. + return null +} +``` + +ఏ షరతు కూడా నిజం కాకపోతే, `Approval` ఈవెంట్ అనుమానాస్పదమైనది కాదు. + +```typescript +const testPromises = approvalEvents.map((ev) => suspiciousApprovalEvent(ev)) +const testResults = (await Promise.all(testPromises)).filter((x) => x != null) + +console.log(testResults) +``` + +[ఒక `async` ఫంక్షన్](https://www.w3schools.com/js/js_async.asp) ఒక `Promise` ఆబ్జెక్ట్‌ను తిరిగి ఇస్తుంది. సాధారణ సింటాక్స్‌తో, `await x()`, మనం ప్రాసెసింగ్‌ను కొనసాగించే ముందు ఆ `Promise` నెరవేరే వరకు వేచి ఉంటాము. ఇది ప్రోగ్రామ్ చేయడానికి మరియు అనుసరించడానికి సులభం, కానీ ఇది అసమర్థమైనది కూడా. ఒక నిర్దిష్ట ఈవెంట్ కోసం `Promise` నెరవేరే వరకు మనం వేచి ఉన్నప్పుడు, మనం ఇప్పటికే తదుపరి ఈవెంట్‌పై పని చేయవచ్చు. + +ఇక్కడ మనం `Promise` ఆబ్జెక్ట్‌ల శ్రేణిని సృష్టించడానికి [`map`](https://www.w3schools.com/jsref/jsref_map.asp) ఉపయోగిస్తాము. ఆ తర్వాత ఆ వాగ్దానాలన్నీ పరిష్కరించబడటానికి వేచి ఉండటానికి [`Promise.all`](https://www.javascripttutorial.net/es6/javascript-promise-all/) ఉపయోగిస్తాము. ఆ తర్వాత అనుమానాస్పదంగా లేని ఈవెంట్‌లను తీసివేయడానికి ఆ ఫలితాలను [`filter`](https://www.w3schools.com/jsref/jsref_filter.asp) చేస్తాము. + +### అనుమానాస్పద `Transfer` ఈవెంట్లు {#suspicious-transfer-events} + +స్కామ్ టోకెన్‌లను గుర్తించడానికి మరొక సంభావ్య మార్గం వాటికి ఏవైనా అనుమానాస్పద బదిలీలు ఉన్నాయో లేదో చూడటం. ఉదాహరణకు, అంతగా టోకెన్లు లేని ఖాతాల నుండి బదిలీలు. మీరు [ఈ పరీక్షను ఎలా అమలు చేయాలో చూడవచ్చు](https://github.com/qbzzt/20230915-scam-token-detection/blob/main/susTransfer.ts), కానీ `wARB`కి ఈ సమస్య లేదు. + +## ముగింపు {#conclusion} + +ERC-20 స్కామ్‌ల స్వయంచాలక గుర్తింపు [తప్పుడు ప్రతికూలతల](https://en.wikipedia.org/wiki/False_positives_and_false_negatives#False_negative_error)తో బాధపడుతుంది, ఎందుకంటే ఒక స్కామ్ పూర్తిగా సాధారణ ERC-20 టోకెన్ కాంట్రాక్ట్‌ను ఉపయోగించవచ్చు, అది కేవలం ఏమీ వాస్తవాన్ని సూచించదు. కాబట్టి మీరు ఎల్లప్పుడూ _విశ్వసనీయ మూలం నుండి టోకెన్ చిరునామాను పొందడానికి_ ప్రయత్నించాలి. + +స్వయంచాలక గుర్తింపు DeFi భాగాల వంటి కొన్ని సందర్భాల్లో సహాయపడుతుంది, ఇక్కడ చాలా టోకెన్‌లు ఉంటాయి మరియు వాటిని స్వయంచాలకంగా నిర్వహించాలి. కానీ ఎప్పటిలాగే [కేవియట్ ఎంపటర్](https://www.investopedia.com/terms/c/caveatemptor.asp), మీ స్వంత పరిశోధన చేయండి, మరియు మీ వినియోగదారులను కూడా అదే విధంగా ప్రోత్సహించండి. + +[నా మరిన్ని పనుల కోసం ఇక్కడ చూడండి](https://cryptodocguy.pro/). diff --git a/public/content/translations/te/developers/tutorials/secret-state/index.md b/public/content/translations/te/developers/tutorials/secret-state/index.md new file mode 100644 index 00000000000..71c0edec020 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/secret-state/index.md @@ -0,0 +1,741 @@ +--- +title: "రహస్య స్థితి కోసం జీరో-కనౌలెడ్జిని ఉపయోగించడం" +description: "ఆన్‌చైన్ ఆటలు పరిమితంగా ఉంటాయి ఎందుకంటే అవి ఎలాంటి రహస్య సమాచారాన్ని ఉంచలేవు. ఈ ట్యుటోరియల్ చదివిన తర్వాత, ఒక రీడర్ రహస్య స్థితి, ఆఫ్‌చైన్, కాంపోనెంట్‌తో ధృవీకరించదగిన ఆటలను సృష్టించడానికి జీరో-కనౌలెడ్జి రుజువులు మరియు సర్వర్ కాంపోనెంట్‌లను కలపగలుగుతారు. ఇది చేయడానికి సాంకేతికత మైన్‌స్వీపర్ గేమ్ సృష్టించడం ద్వారా ప్రదర్శించబడుతుంది." +author: Ori Pomerantz +tags: + [ + "సర్వర్", + "ఆఫ్‌చైన్", + "కేంద్రీకృతం", + "జీరో-కనౌలెడ్జి", + "zokrates", + "mud" + ] +skill: advanced +lang: te +published: 2025-03-15 +--- + +_బ్లాక్‌చెయిన్‌లో రహస్యాలు లేవు_. బ్లాక్‌చెయిన్‌లో పోస్ట్ చేయబడిన ప్రతిదీ అందరూ చదవడానికి తెరిచి ఉంటుంది. ఇది అవసరం, ఎందుకంటే బ్లాక్‌చెయిన్ ఎవరైనా ధృవీకరించగలిగే దానిపై ఆధారపడి ఉంటుంది. అయితే, ఆటలు తరచుగా రహస్య స్థితిపై ఆధారపడతాయి. ఉదాహరణకు, మీరు బ్లాక్‌చెయిన్ ఎక్స్‌ప్లోరర్‌కి వెళ్లి మ్యాప్‌ని చూడగలిగితే [మైన్‌స్వీపర్](https://en.wikipedia.org/wiki/Minesweeper_\(video_game\)) గేమ్‌కి ఎటువంటి అర్థం ఉండదు. + +రహస్య స్థితిని ఉంచడానికి [సర్వర్ కాంపోనెంట్‌ను](/developers/tutorials/server-components/) ఉపయోగించడం సులభమయిన పరిష్కారం. అయితే, గేమ్ డెవలపర్ చేత మోసాన్ని నివారించడానికి మేము బ్లాక్‌చెయిన్‌ను ఉపయోగిస్తాము. సర్వర్ కాంపోనెంట్ యొక్క నిజాయితీని మేము నిర్ధారించుకోవాలి. సర్వర్ స్థితి యొక్క హాష్‌ను అందిస్తుంది మరియు కదలిక ఫలితాన్ని లెక్కించడానికి ఉపయోగించే స్థితి సరైనదని రుజువు చేయడానికి [జీరో-కనౌలెడ్జి రుజువులను](/zero-knowledge-proofs/#why-zero-knowledge-proofs-are-important) ఉపయోగించవచ్చు. + +ఈ ఆర్టికల్ చదివిన తర్వాత మీరు ఈ రకమైన రహస్య స్థితిని కలిగి ఉన్న సర్వర్‌ను, స్థితిని చూపించడానికి ఒక క్లయింట్‌ను మరియు రెండింటి మధ్య కమ్యూనికేషన్ కోసం ఆన్‌చైన్ కాంపోనెంట్‌ను ఎలా సృష్టించాలో తెలుసుకుంటారు. మేము ఉపయోగించే ప్రధాన సాధనాలు: + +| సాధనం | ఉద్దేశం | వెర్షన్‌లో ధృవీకరించబడింది | +| --------------------------------------------- | -------------------------------------------------- | --------------------------------------: | +| [Zokrates](https://zokrates.github.io/) | జీరో-కనౌలెడ్జి రుజువులు మరియు వాటి ధృవీకరణ | 1.1.9 | +| [Typescript](https://www.typescriptlang.org/) | సర్వర్ మరియు క్లయింట్ రెండింటికీ ప్రోగ్రామింగ్ భాష | 5.4.2 | +| [Node](https://nodejs.org/en) | సర్వర్‌ను నడుపుతోంది | 20.18.2 | +| [Viem](https://viem.sh/) | బ్లాక్‌చెయిన్‌తో కమ్యూనికేషన్ | 2.9.20 | +| [MUD](https://mud.dev/) | ఆన్‌చైన్ డేటా నిర్వహణ | 2.0.12 | +| [React](https://react.dev/) | క్లయింట్ వినియోగదారు ఇంటర్‌ఫేస్ | 18.2.0 | +| [Vite](https://vitejs.dev/) | క్లయింట్ కోడ్‌ను అందిస్తోంది | 4.2.1 | + +## మైన్‌స్వీపర్ ఉదాహరణ {#minesweeper} + +[మైన్‌స్వీపర్](https://en.wikipedia.org/wiki/Minesweeper_\(video_game\)) అనేది మైన్‌ఫీల్డ్‌తో కూడిన రహస్య మ్యాప్‌ను కలిగి ఉన్న గేమ్. ఆటగాడు ఒక నిర్దిష్ట ప్రదేశంలో తవ్వడానికి ఎంచుకుంటాడు. ఆ ప్రదేశంలో మైన్ ఉంటే, ఆట ముగిసింది. లేకపోతే, ఆ ప్రదేశం చుట్టూ ఉన్న ఎనిమిది చతురస్రాల్లోని మైన్‌ల సంఖ్యను ఆటగాడు పొందుతాడు. + +ఈ అప్లికేషన్ [MUD](https://mud.dev/) ఉపయోగించి వ్రాయబడింది, ఇది [కీ-విలువ డేటాబేస్](https://aws.amazon.com/nosql/key-value/) ఉపయోగించి ఆన్‌చైన్‌లో డేటాను నిల్వ చేయడానికి మరియు ఆ డేటాను ఆఫ్‌చైన్ కాంపోనెంట్‌లతో స్వయంచాలకంగా సింక్రొనైజ్ చేయడానికి అనుమతిస్తుంది. సింక్రొనైజేషన్‌తో పాటు, యాక్సెస్ నియంత్రణను అందించడానికి మరియు ఇతర వినియోగదారులు మా అప్లికేషన్‌ను అనుమతి లేకుండా [విస్తరించడానికి](https://mud.dev/guides/extending-a-world) MUD సులభం చేస్తుంది. + +### మైన్‌స్వీపర్ ఉదాహరణను నడుపుతోంది {#running-minesweeper-example} + +మైన్‌స్వీపర్ ఉదాహరణను నడపడానికి: + +1. మీరు [ముందస్తు అవసరాలను ఇన్‌స్టాల్ చేశారని](https://mud.dev/quickstart#prerequisites) నిర్ధారించుకోండి: [Node](https://mud.dev/quickstart#prerequisites), [Foundry](https://book.getfoundry.sh/getting-started/installation), [`git`](https://git-scm.com/downloads), [`pnpm`](https://git-scm.com/downloads), మరియు [`mprocs`](https://github.com/pvolok/mprocs). + +2. రిపోజిటరీని క్లోన్ చేయండి. + + ```sh copy + git clone https://github.com/qbzzt/20240901-secret-state.git + ``` + +3. ప్యాకేజీలను ఇన్‌స్టాల్ చేయండి. + + ```sh copy + cd 20240901-secret-state/ + pnpm install + npm install -g mprocs + ``` + + `pnpm install`లో భాగంగా ఫౌండ్రీ ఇన్‌స్టాల్ చేయబడితే, మీరు కమాండ్-లైన్ షెల్‌ను పునఃప్రారంభించాలి. + +4. ఒప్పందాలను కంపైల్ చేయండి + + ```sh copy + cd packages/contracts + forge build + cd ../.. + ``` + +5. ప్రోగ్రామ్‌ను ప్రారంభించి ([యాన్విల్](https://book.getfoundry.sh/anvil/) బ్లాక్‌చెయిన్‌తో సహా) వేచి ఉండండి. + + ```sh copy + mprocs + ``` + + స్టార్టప్ చాలా సమయం పడుతుందని గమనించండి. పురోగతిని చూడటానికి, ముందుగా MUD ఒప్పందాలు అమలు చేయబడుతున్నట్లు చూడటానికి _contracts_ ట్యాబ్‌కు స్క్రోల్ చేయడానికి డౌన్ బాణం ఉపయోగించండి. మీరు _Waiting for file changes…_ సందేశాన్ని పొందినప్పుడు, ఒప్పందాలు అమలు చేయబడతాయి మరియు తదుపరి పురోగతి _server_ ట్యాబ్‌లో జరుగుతుంది. అక్కడ, మీరు _Verifier address: 0x...._ సందేశాన్ని పొందే వరకు వేచి ఉండండి. + + ఈ దశ విజయవంతమైతే, మీరు `mprocs` స్క్రీన్‌ను చూస్తారు, ఎడమవైపున వివిధ ప్రక్రియలు మరియు కుడివైపున ప్రస్తుతం ఎంచుకున్న ప్రక్రియ కోసం కన్సోల్ అవుట్‌పుట్ ఉంటుంది. + + ![mprocs స్క్రీన్](./mprocs.png) + + `mprocs`తో సమస్య ఉంటే, మీరు నాలుగు ప్రక్రియలను మాన్యువల్‌గా అమలు చేయవచ్చు, ప్రతి ఒక్కటి దాని స్వంత కమాండ్ లైన్ విండోలో: + + - **యాన్విల్** + + ```sh + cd packages/contracts + anvil --base-fee 0 --block-time 2 + ``` + + - **ఒప్పందాలు** + + ```sh + cd packages/contracts + pnpm mud dev-contracts --rpc http://127.0.0.1:8545 + ``` + + - **సర్వర్** + + ```sh + cd packages/server + pnpm start + ``` + + - **క్లయింట్** + + ```sh + cd packages/client + pnpm run dev + ``` + +6. ఇప్పుడు మీరు [క్లయింట్‌కి](http://localhost:3000) బ్రౌజ్ చేయవచ్చు, **కొత్త గేమ్** క్లిక్ చేసి, ఆడటం ప్రారంభించవచ్చు. + +### పట్టికలు {#tables} + +మాకు ఆన్‌చైన్‌లో [అనేక పట్టికలు](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/mud.config.ts) అవసరం. + +- `Configuration`: ఈ పట్టిక ఒక సింగిల్టన్, దీనికి కీ మరియు ఒకే రికార్డ్ లేదు. ఇది గేమ్ కాన్ఫిగరేషన్ సమాచారాన్ని ఉంచడానికి ఉపయోగించబడుతుంది: + - `height`: ఒక మైన్‌ఫీల్డ్ ఎత్తు + - `width`: ఒక మైన్‌ఫీల్డ్ వెడల్పు + - `numberOfBombs`: ప్రతి మైన్‌ఫీల్డ్‌లోని బాంబుల సంఖ్య + +- `VerifierAddress`: ఈ పట్టిక కూడా ఒక సింగిల్టన్. ఇది కాన్ఫిగరేషన్‌లోని ఒక భాగాన్ని, వెరిఫైయర్ కాంట్రాక్ట్ (`verifier`) చిరునామాను ఉంచడానికి ఉపయోగించబడుతుంది. మేము ఈ సమాచారాన్ని `Configuration` పట్టికలో ఉంచవచ్చు, కానీ ఇది సర్వర్ అనే వేరే కాంపోనెంట్ ద్వారా సెట్ చేయబడింది, కాబట్టి దానిని వేరే పట్టికలో ఉంచడం సులభం. + +- `PlayerGame`: కీ అనేది ప్లేయర్ యొక్క చిరునామా. డేటా: + + - `gameId`: ప్లేయర్ ఆడుతున్న మ్యాప్ యొక్క హాష్ (గేమ్ ఐడెంటిఫైయర్) అయిన 32-బైట్ విలువ. + - `win`: ప్లేయర్ గేమ్‌ను గెలిచాడా లేదా అనేది సూచించే బూలియన్. + - `lose`: ప్లేయర్ గేమ్‌ను ఓడిపోయాడా లేదా అనేది సూచించే బూలియన్. + - `digNumber`: గేమ్‌లో విజయవంతమైన తవ్వకాల సంఖ్య. + +- `GamePlayer`: ఈ పట్టిక `gameId` నుండి ప్లేయర్ చిరునామాకు రివర్స్ మ్యాపింగ్‌ను కలిగి ఉంటుంది. + +- `Map`: కీ అనేది మూడు విలువల టపుల్: + + - `gameId`: ప్లేయర్ ఆడుతున్న మ్యాప్ యొక్క హాష్ (గేమ్ ఐడెంటిఫైయర్) అయిన 32-బైట్ విలువ. + - `x` కోఆర్డినేట్ + - `y` కోఆర్డినేట్ + + విలువ ఒకే సంఖ్య. బాంబు గుర్తించబడితే అది 255. లేకపోతే, ఇది ఆ స్థానం చుట్టూ ఉన్న బాంబుల సంఖ్య ప్లస్ ఒకటి. మేము కేవలం బాంబుల సంఖ్యను ఉపయోగించలేము, ఎందుకంటే డిఫాల్ట్‌గా EVMలోని అన్ని నిల్వలు మరియు MUDలోని అన్ని వరుస విలువలు సున్నా. మేము "ప్లేయర్ ఇంకా ఇక్కడ తవ్వలేదు" మరియు "ప్లేయర్ ఇక్కడ తవ్వాడు, మరియు చుట్టూ సున్నా బాంబులు ఉన్నాయని కనుగొన్నాడు" మధ్య తేడాను గుర్తించాలి. + +అదనంగా, క్లయింట్ మరియు సర్వర్ మధ్య కమ్యూనికేషన్ ఆన్‌చైన్ కాంపోనెంట్ ద్వారా జరుగుతుంది. ఇది పట్టికలను ఉపయోగించి కూడా అమలు చేయబడుతుంది. + +- `PendingGame`: కొత్త గేమ్‌ను ప్రారంభించడానికి సేవ చేయని అభ్యర్థనలు. +- `PendingDig`: ఒక నిర్దిష్ట గేమ్‌లో ఒక నిర్దిష్ట ప్రదేశంలో తవ్వడానికి సేవ చేయని అభ్యర్థనలు. ఇది ఒక [ఆఫ్‌చైన్ టేబుల్](https://mud.dev/store/tables#types-of-tables), అంటే ఇది EVM నిల్వకు వ్రాయబడదు, ఇది ఈవెంట్‌లను ఉపయోగించి ఆఫ్‌చైన్‌లో మాత్రమే చదవబడుతుంది. + +### అమలు మరియు డేటా ప్రవాహాలు {#execution-data-flows} + +ఈ ప్రవాహాలు క్లయింట్, ఆన్‌చైన్ కాంపోనెంట్ మరియు సర్వర్ మధ్య అమలును సమన్వయం చేస్తాయి. + +#### ప్రారంభీకరణ {#initialization-flow} + +మీరు `mprocs` ను అమలు చేసినప్పుడు, ఈ దశలు జరుగుతాయి: + +1. [`mprocs`](https://github.com/pvolok/mprocs) నాలుగు భాగాలను నడుపుతుంది: + + - [యాన్విల్](https://book.getfoundry.sh/anvil/), ఇది స్థానిక బ్లాక్‌చెయిన్‌ను నడుపుతుంది + - [ఒప్పందాలు](https://github.com/qbzzt/20240901-secret-state/tree/main/packages/contracts), ఇది MUD కోసం ఒప్పందాలను కంపైల్ చేస్తుంది (అవసరమైతే) మరియు అమలు చేస్తుంది + - [క్లయింట్](https://github.com/qbzzt/20240901-secret-state/tree/main/packages/client), ఇది UI మరియు క్లయింట్ కోడ్‌ను వెబ్ బ్రౌజర్‌లకు అందించడానికి [Vite](https://vitejs.dev/) ను నడుపుతుంది. + - [సర్వర్](https://github.com/qbzzt/20240901-secret-state/tree/main/packages/server), ఇది సర్వర్ చర్యలను నిర్వహిస్తుంది + +2. `contracts` ప్యాకేజీ MUD ఒప్పందాలను అమలు చేస్తుంది మరియు ఆ తర్వాత [`PostDeploy.s.sol` స్క్రిప్ట్‌ను](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/script/PostDeploy.s.sol) నడుపుతుంది. ఈ స్క్రిప్ట్ కాన్ఫిగరేషన్‌ను సెట్ చేస్తుంది. github నుండి కోడ్ [దానిలో ఎనిమిది మైన్‌లతో కూడిన 10x5 మైన్‌ఫీల్డ్‌ను](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/script/PostDeploy.s.sol#L23) నిర్దేశిస్తుంది. + +3. [సర్వర్](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts) [MUDని సెటప్ చేయడం](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L6) ద్వారా ప్రారంభమవుతుంది. ఇతర విషయాలతోపాటు, ఇది డేటా సింక్రొనైజేషన్‌ను సక్రియం చేస్తుంది, తద్వారా సంబంధిత పట్టికల కాపీ సర్వర్ మెమరీలో ఉంటుంది. + +4. సర్వర్ [`Configuration` పట్టిక మారినప్పుడు](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L23) అమలు చేయడానికి ఒక ఫంక్షన్‌ను సబ్‌స్క్రయిబ్ చేస్తుంది. `PostDeploy.s.sol` పట్టికను అమలు చేసి, సవరించిన తర్వాత [ఈ ఫంక్షన్](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L24-L168) పిలువబడుతుంది. + +5. సర్వర్ ప్రారంభ ఫంక్షన్ కాన్ఫిగరేషన్‌ను కలిగి ఉన్నప్పుడు, [సర్వర్ యొక్క జీరో-కనౌలెడ్జి భాగాన్ని](#using-zokrates-from-typescript) ప్రారంభించడానికి [ఇది `zkFunctions` ను పిలుస్తుంది](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L34-L35). మేము కాన్ఫిగరేషన్ పొందే వరకు ఇది జరగదు ఎందుకంటే జీరో-కనౌలెడ్జి ఫంక్షన్లు మైన్‌ఫీల్డ్ యొక్క వెడల్పు మరియు ఎత్తును స్థిరాంకాలుగా కలిగి ఉండాలి. + +6. సర్వర్ యొక్క జీరో-కనౌలెడ్జి భాగం ప్రారంభించబడిన తర్వాత, తదుపరి దశ [బ్లాక్‌చెయిన్‌కు జీరో-కనౌలెడ్జి వెరిఫికేషన్ కాంట్రాక్ట్‌ను అమలు చేయడం](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L42-L53) మరియు MUDలో వెరిఫైయీ చిరునామాను సెట్ చేయడం. + +7. చివరగా, మేము అప్‌డేట్‌లకు సబ్‌స్క్రయిబ్ చేస్తాము, తద్వారా ప్లేయర్ [కొత్త గేమ్‌ను ప్రారంభించమని](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L55-L71) లేదా [ఇప్పటికే ఉన్న గేమ్‌లో తవ్వమని](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L73-L108) అభ్యర్థించినప్పుడు మనం చూస్తాము. + +#### కొత్త గేమ్ {#new-game-flow} + +ప్లేయర్ కొత్త గేమ్ కోసం అభ్యర్థించినప్పుడు ఇది జరుగుతుంది. + +1. ఈ ప్లేయర్ కోసం ప్రోగ్రెస్‌లో గేమ్ లేకపోతే, లేదా ఒకటి ఉండి కానీ సున్నా gameId తో ఉంటే, క్లయింట్ [కొత్త గేమ్ బటన్‌ను](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L175) ప్రదర్శిస్తుంది. వినియోగదారు ఈ బటన్‌ను నొక్కినప్పుడు, [React `newGame` ఫంక్షన్‌ను](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L96) నడుపుతుంది. + +2. [`newGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/mud/createSystemCalls.ts#L43-L46) ఒక `System` కాల్. MUDలో అన్ని కాల్‌లు `World` కాంట్రాక్ట్ ద్వారా రూట్ చేయబడతాయి మరియు చాలా సందర్భాల్లో మీరు `__` ను పిలుస్తారు. ఈ సందర్భంలో, కాల్ `app__newGame` కు, MUD తర్వాత [`GameSystem`లో `newGame`కు](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L16-L22) దారి మళ్లిస్తుంది. + +3. ఆన్‌చైన్ ఫంక్షన్ ప్లేయర్‌కు ప్రోగ్రెస్‌లో గేమ్ లేదని తనిఖీ చేస్తుంది మరియు ఒకటి లేకపోతే [`PendingGame` పట్టికకు](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L21) అభ్యర్థనను జోడిస్తుంది. + +4. సర్వర్ `PendingGame`లో మార్పును గుర్తించి, [సబ్‌స్క్రయిబ్ చేసిన ఫంక్షన్‌ను](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L55-L71) నడుపుతుంది. ఈ ఫంక్షన్ [`newGame` ను](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L110-L114) పిలుస్తుంది, ఇది [`createGame` ను](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L116-L144) పిలుస్తుంది. + +5. `createGame` చేసే మొదటి పని [తగిన సంఖ్యలో మైన్‌లతో యాదృచ్ఛిక మ్యాప్‌ను సృష్టించడం](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L120-L135). ఆ తర్వాత, Zokrates కోసం అవసరమైన ఖాళీ అంచులతో కూడిన మ్యాప్‌ను సృష్టించడానికి [`makeMapBorders`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L147-L166) ను పిలుస్తుంది. చివరగా, `createGame` మ్యాప్ యొక్క హాష్‌ను పొందడానికి [`calculateMapHash`](#calculateMapHash) ను పిలుస్తుంది, ఇది గేమ్ IDగా ఉపయోగించబడుతుంది. + +6. `newGame` ఫంక్షన్ కొత్త గేమ్‌ను `gamesInProgress`కు జోడిస్తుంది. + +7. సర్వర్ చేసే చివరి పని [`app__newGameResponse`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L38-L43) ను పిలవడం, ఇది ఆన్‌చైన్‌లో ఉంటుంది. యాక్సెస్ నియంత్రణను ప్రారంభించడానికి ఈ ఫంక్షన్ [`ServerSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol) అనే వేరే `System`లో ఉంది. యాక్సెస్ నియంత్రణ [MUD కాన్ఫిగరేషన్ ఫైల్‌లో](https://mud.dev/config), [`mud.config.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/mud.config.ts#L67-L72) నిర్వచించబడింది. + + యాక్సెస్ జాబితా `System`ను పిలవడానికి ఒకే చిరునామాను మాత్రమే అనుమతిస్తుంది. ఇది సర్వర్ ఫంక్షన్‌లకు యాక్సెస్‌ను ఒకే చిరునామాకు పరిమితం చేస్తుంది, కాబట్టి ఎవరూ సర్వర్‌ను అనుకరించలేరు. + +8. ఆన్‌చైన్ కాంపోనెంట్ సంబంధిత పట్టికలను అప్‌డేట్ చేస్తుంది: + + - `PlayerGame`లో గేమ్‌ను సృష్టించండి. + - `GamePlayer`లో రివర్స్ మ్యాపింగ్‌ను సెట్ చేయండి. + - `PendingGame` నుండి అభ్యర్థనను తొలగించండి. + +9. సర్వర్ `PendingGame` లో మార్పును గుర్తిస్తుంది, కానీ [`wantsGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L58-L60) తప్పు కాబట్టి ఏమీ చేయదు. + +10. క్లయింట్‌లో [`gameRecord`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L143-L148) ప్లేయర్ చిరునామా కోసం `PlayerGame` ఎంట్రీకి సెట్ చేయబడింది. `PlayerGame` మారినప్పుడు, `gameRecord` కూడా మారుతుంది. + +11. `gameRecord` లో విలువ ఉండి, మరియు గేమ్ గెలవకపోయినా లేదా ఓడిపోకపోయినా, క్లయింట్ [మ్యాప్‌ను ప్రదర్శిస్తుంది](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L175-L190). + +#### తవ్వడం {#dig-flow} + +1. ఆటగాడు [మ్యాప్ సెల్ యొక్క బటన్‌ను క్లిక్ చేస్తాడు](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L188), ఇది [`dig` ఫంక్షన్‌ను](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/mud/createSystemCalls.ts#L33-L36) పిలుస్తుంది. ఈ ఫంక్షన్ [`dig` ఆన్‌చైన్‌ను](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L24-L32) పిలుస్తుంది. + +2. ఆన్‌చైన్ కాంపోనెంట్ [అనేక శానిటీ తనిఖీలను నిర్వహిస్తుంది](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L25-L30), మరియు విజయవంతమైతే తవ్వకం అభ్యర్థనను [`PendingDig`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L31)కు జోడిస్తుంది. + +3. సర్వర్ [`PendingDig`లో మార్పును గుర్తిస్తుంది](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L73). [ఇది చెల్లుబాటు అయితే](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L75-L84), ఇది ఫలితం మరియు అది చెల్లుబాటు అవుతుందని రుజువు రెండింటినీ ఉత్పత్తి చేయడానికి [జీరో-కనౌలెడ్జి కోడ్‌ను పిలుస్తుంది](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L86-L95) (క్రింద వివరించబడింది). + +4. [సర్వర్](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L97-L107) [`digResponse`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L45-L64)ను ఆన్‌చైన్‌లో పిలుస్తుంది. + +5. `digResponse` రెండు పనులు చేస్తుంది. మొదట, ఇది [జీరో కనౌలెడ్జి రుజువును](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L47-L61) తనిఖీ చేస్తుంది. ఆ తర్వాత, రుజువు సరిపోలితే, ఇది ఫలితాన్ని వాస్తవంగా ప్రాసెస్ చేయడానికి [`processDigResult`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L67-L86) ను పిలుస్తుంది. + +6. `processDigResult` గేమ్ [ఓడిపోయిందా](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L76-L78) లేదా [గెలిచిందా](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L83-L86) అని తనిఖీ చేస్తుంది మరియు [`Map`ను, ఆన్‌చైన్ మ్యాప్‌ను అప్‌డేట్ చేస్తుంది](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L80). + +7. క్లయింట్ స్వయంచాలకంగా అప్‌డేట్‌లను తీసుకుంటుంది మరియు [ప్లేయర్‌కు ప్రదర్శించబడే మ్యాప్‌ను అప్‌డేట్ చేస్తుంది](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L175-L190), మరియు వర్తిస్తే అది గెలుపు లేదా ఓటమి అని ప్లేయర్‌కు చెబుతుంది. + +## Zokrates ను ఉపయోగించడం {#using-zokrates} + +పైన వివరించిన ప్రవాహాలలో మేము జీరో-కనౌలెడ్జి భాగాలను దాటవేసి, వాటిని బ్లాక్ బాక్స్‌గా పరిగణించాము. ఇప్పుడు దానిని తెరిచి, ఆ కోడ్ ఎలా వ్రాయబడిందో చూద్దాం. + +### మ్యాప్‌ను హ్యాష్ చేయడం {#hashing-map} + +[Poseidon](https://www.poseidon-hash.info) ను అమలు చేయడానికి మేము [ఈ JavaScript కోడ్‌ను](https://github.com/ZK-Plus/ICBC24_Tutorial_Compute-Offchain-Verify-onchain/tree/solutions/exercise) ఉపయోగించవచ్చు, ఇది మేము ఉపయోగించే Zokrates హాష్ ఫంక్షన్. అయితే, ఇది వేగంగా ఉన్నప్పటికీ, దానిని చేయడానికి కేవలం Zokrates హాష్ ఫంక్షన్‌ను ఉపయోగించడం కంటే ఇది మరింత క్లిష్టంగా ఉంటుంది. ఇది ఒక ట్యుటోరియల్, అందువల్ల కోడ్ పనితీరు కోసం కాకుండా, సరళత కోసం ఆప్టిమైజ్ చేయబడింది. అందువల్ల, మాకు రెండు వేర్వేరు Zokrates ప్రోగ్రామ్‌లు అవసరం, ఒకటి మ్యాప్ యొక్క హాష్‌ను లెక్కించడానికి (`hash`) మరియు మరొకటి వాస్తవానికి మ్యాప్‌లోని ఒక ప్రదేశంలో తవ్వకం ఫలితం యొక్క జీరో-కనౌలెడ్జి రుజువును సృష్టించడానికి (`dig`). + +### హాష్ ఫంక్షన్ {#hash-function} + +ఇది మ్యాప్ యొక్క హాష్‌ను లెక్కించే ఫంక్షన్. మేము ఈ కోడ్‌ను లైన్ ద్వారా లైన్ చూస్తాము. + +``` +import "hashes/poseidon/poseidon.zok" as poseidon; +import "utils/pack/bool/pack128.zok" as pack128; +``` + +ఈ రెండు లైన్లు [Zokrates స్టాండర్డ్ లైబ్రరీ](https://zokrates.github.io/toolbox/stdlib.html) నుండి రెండు ఫంక్షన్‌లను దిగుమతి చేసుకుంటాయి. [మొదటి ఫంక్షన్](https://github.com/Zokrates/ZoKrates/blob/latest/zokrates_stdlib/stdlib/hashes/poseidon/poseidon.zok) [పోసిడాన్ హాష్](https://www.poseidon-hash.info/). ఇది [`field` ఎలిమెంట్స్](https://zokrates.github.io/language/types.html#field) యొక్క ఒక శ్రేణిని తీసుకుంటుంది మరియు ఒక `field` ను తిరిగి ఇస్తుంది. + +Zokrates లో ఫీల్డ్ ఎలిమెంట్ సాధారణంగా 256 బిట్ల కంటే తక్కువ పొడవు ఉంటుంది, కానీ అంత ఎక్కువ కాదు. కోడ్‌ను సరళీకృతం చేయడానికి, మేము మ్యాప్‌ను 512 బిట్ల వరకు పరిమితం చేస్తాము మరియు నాలుగు ఫీల్డ్‌ల శ్రేణిని హాష్ చేస్తాము మరియు ప్రతి ఫీల్డ్‌లో మేము కేవలం 128 బిట్లను ఉపయోగిస్తాము. [`pack128` ఫంక్షన్](https://github.com/Zokrates/ZoKrates/blob/latest/zokrates_stdlib/stdlib/utils/pack/bool/pack128.zok) ఈ ప్రయోజనం కోసం 128 బిట్ల శ్రేణిని ఒక `field` గా మారుస్తుంది. + +``` + def hashMap(bool[${width+2}][${height+2}] map) -> field { +``` + +ఈ లైన్ ఒక ఫంక్షన్ నిర్వచనాన్ని ప్రారంభిస్తుంది. `hashMap` `map` అని పిలువబడే ఒకే పరామితిని, రెండు డైమెన్షనల్ `bool`(ean) శ్రేణిని పొందుతుంది. [క్రింద వివరించిన](#why-map-border) కారణాల వల్ల మ్యాప్ పరిమాణం `width+2` by `height+2` ఉంటుంది. + +మేము `${width+2}` మరియు `${height+2}` ను ఉపయోగించవచ్చు ఎందుకంటే Zokrates ప్రోగ్రామ్‌లు ఈ అప్లికేషన్‌లో [టెంప్లేట్ స్ట్రింగ్‌లుగా](https://www.w3schools.com/js/js_string_templates.asp) నిల్వ చేయబడతాయి. `${` మరియు `}` మధ్య కోడ్ JavaScript ద్వారా మూల్యాంకనం చేయబడుతుంది, మరియు ఈ విధంగా ప్రోగ్రామ్ విభిన్న మ్యాప్ పరిమాణాల కోసం ఉపయోగించబడుతుంది. మ్యాప్ పరామితి దాని చుట్టూ ఎలాంటి బాంబులు లేకుండా ఒక స్థానం వెడల్పు అంచుని కలిగి ఉంటుంది, అందుకే మనం వెడల్పు మరియు ఎత్తుకు రెండు జోడించాలి. + +తిరిగి వచ్చే విలువ హాష్‌ను కలిగి ఉన్న ఒక `field`. + +``` + bool[512] mut map1d = [false; 512]; +``` + +మ్యాప్ రెండు-డైమెన్షనల్. అయితే, `pack128` ఫంక్షన్ రెండు-డైమెన్షనల్ శ్రేణులతో పనిచేయదు. కాబట్టి మేము మొదట `map1d` ను ఉపయోగించి మ్యాప్‌ను 512-బైట్ శ్రేణిగా ఫ్లాటెన్ చేస్తాము. డిఫాల్ట్‌గా Zokrates వేరియబుల్స్ స్థిరాంకాలు, కానీ మేము లూప్‌లో ఈ శ్రేణికి విలువలను కేటాయించాలి, కాబట్టి మేము దానిని [`mut`](https://zokrates.github.io/language/variables.html#mutability)గా నిర్వచిస్తాము. + +మేము శ్రేణిని ప్రారంభించాలి ఎందుకంటే Zokrates `undefined` కలిగి లేదు. `[false; 512]` వ్యక్తీకరణ అంటే [512 `false` విలువల శ్రేణి](https://zokrates.github.io/language/types.html#declaration-and-initialization). + +``` + u32 mut counter = 0; +``` + +`map1d` లో మేము ఇప్పటికే నింపిన బిట్స్ మరియు మేము నింపని వాటి మధ్య తేడాను గుర్తించడానికి మాకు ఒక కౌంటర్ కూడా అవసరం. + +``` + for u32 x in 0..${width+2} { +``` + +Zokrates లో [`for` loop](https://zokrates.github.io/language/control_flow.html#for-loops) ను మీరు ఇలా ప్రకటిస్తారు. ఒక Zokrates `for` loop స్థిర సరిహద్దులను కలిగి ఉండాలి, ఎందుకంటే ఇది లూప్‌గా కనిపించినప్పటికీ, కంపైలర్ వాస్తవానికి దానిని "విప్పుతుంది". వ్యక్తీకరణ `${width+2}` ఒక కంపైల్ టైమ్ స్థిరాంకం ఎందుకంటే కంపైలర్‌ను పిలవడానికి ముందు TypeScript కోడ్ ద్వారా `width` సెట్ చేయబడింది. + +``` + for u32 y in 0..${height+2} { + map1d[counter] = map[x][y]; + counter = counter+1; + } + } +``` + +మ్యాప్‌లోని ప్రతి స్థానానికి, ఆ విలువను `map1d` శ్రేణిలో ఉంచి, కౌంటర్‌ను పెంచండి. + +``` + field[4] hashMe = [ + pack128(map1d[0..128]), + pack128(map1d[128..256]), + pack128(map1d[256..384]), + pack128(map1d[384..512]) + ]; +``` + +`map1d` నుండి నాలుగు `field` విలువల శ్రేణిని సృష్టించడానికి `pack128`. Zokrates లో `array[a..b]` అంటే `a` వద్ద ప్రారంభమై `b-1` వద్ద ముగిసే శ్రేణి యొక్క స్లైస్. + +``` + return poseidon(hashMe); +} +``` + +ఈ శ్రేణిని హాష్‌గా మార్చడానికి `poseidon` ఉపయోగించండి. + +### హాష్ ప్రోగ్రామ్ {#hash-program} + +గేమ్ ఐడెంటిఫైయర్‌లను సృష్టించడానికి సర్వర్ నేరుగా `hashMap` ను పిలవాలి. అయితే, Zokrates ప్రారంభించడానికి ఒక ప్రోగ్రామ్‌లో `main` ఫంక్షన్‌ను మాత్రమే పిలవగలదు, కాబట్టి మేము హాష్ ఫంక్షన్‌ను పిలిచే `main` తో ఒక ప్రోగ్రామ్‌ను సృష్టిస్తాము. + +``` +${hashFragment} + +def main(bool[${width+2}][${height+2}] map) -> field { + return hashMap(map); +} +``` + +### తవ్వకం ప్రోగ్రామ్ {#dig-program} + +ఇది అప్లికేషన్ యొక్క జీరో-కనౌలెడ్జి భాగం యొక్క హృదయం, ఇక్కడ మేము తవ్వకం ఫలితాలను ధృవీకరించడానికి ఉపయోగించే రుజువులను ఉత్పత్తి చేస్తాము. + +``` +${hashFragment} + +// స్థానం (x,y) లో మైన్‌ల సంఖ్య +def map2mineCount(bool[${width+2}][${height+2}] map, u32 x, u32 y) -> u8 { + return if map[x+1][y+1] { 1 } else { 0 }; +} +``` + +#### మ్యాప్ బార్డర్ ఎందుకు {#why-map-border} + +జీరో-కనౌలెడ్జి రుజువులు [అంకగణిత సర్క్యూట్‌లను](https://medium.com/web3studio/simple-explanations-of-arithmetic-circuits-and-zero-knowledge-proofs-806e59a79785) ఉపయోగిస్తాయి, వీటికి `if` స్టేట్‌మెంట్‌కు సులభమైన సమానం లేదు. బదులుగా, వారు [షరతులతో కూడిన ఆపరేటర్](https://en.wikipedia.org/wiki/Ternary_conditional_operator)కు సమానమైనదాన్ని ఉపయోగిస్తారు. `a` సున్నా లేదా ఒకటి కాగలిగితే, మీరు `if a { b } else { c }`ను `ab+(1-a)c` గా లెక్కించవచ్చు. + +ఈ కారణంగా, Zokrates `if` స్టేట్‌మెంట్ ఎల్లప్పుడూ రెండు శాఖలను మూల్యాంకనం చేస్తుంది. ఉదాహరణకు, మీకు ఈ కోడ్ ఉంటే: + +``` +bool[5] arr = [false; 5]; +u32 index=10; +return if index>4 { 0 } else { arr[index] } +``` + +ఇది లోపం చూపుతుంది, ఎందుకంటే ఇది `arr[10]` ను లెక్కించాలి, ఆ విలువ తర్వాత సున్నాతో గుణించబడినప్పటికీ. + +మ్యాప్ చుట్టూ ఒక స్థానం వెడల్పు సరిహద్దు అవసరం కావడానికి ఇదే కారణం. మేము ఒక స్థానం చుట్టూ ఉన్న మొత్తం మైన్‌ల సంఖ్యను లెక్కించాలి, మరియు దాని అర్థం మనం తవ్వుతున్న స్థానానికి ఒక వరుస పైన మరియు క్రింద, ఎడమ మరియు కుడివైపున ఉన్న స్థానాన్ని చూడాలి. అంటే Zokrates అందించిన మ్యాప్ శ్రేణిలో ఆ స్థానాలు ఉండాలి. + +``` +def main(private bool[${width+2}][${height+2}] map, u32 x, u32 y) -> (field, u8) { +``` + +డిఫాల్ట్‌గా Zokrates రుజువులు వాటి ఇన్‌పుట్‌లను కలిగి ఉంటాయి. ఒక ప్రదేశం చుట్టూ ఐదు మైన్‌లు ఉన్నాయని తెలుసుకోవడం వల్ల ప్రయోజనం లేదు, అది ఏ ప్రదేశం అని మీకు వాస్తవంగా తెలియనంత వరకు (మరియు మీరు దానిని మీ అభ్యర్థనతో సరిపోల్చలేరు, ఎందుకంటే అప్పుడు ప్రూవర్ విభిన్న విలువలను ఉపయోగించి దాని గురించి మీకు చెప్పకపోవచ్చు). అయితే, Zokrates కు అందిస్తూనే మనం మ్యాప్‌ను రహస్యంగా ఉంచాలి. రుజువు ద్వారా _బహిర్గతం_ కాని `private` పరామితిని ఉపయోగించడం పరిష్కారం. + +ఇది దుర్వినియోగానికి మరొక మార్గాన్ని తెరుస్తుంది. ప్రూవర్ సరైన కోఆర్డినేట్‌లను ఉపయోగించవచ్చు, కానీ స్థానం చుట్టూ ఏదైనా సంఖ్యలో మైన్‌లతో ఒక మ్యాప్‌ను సృష్టించవచ్చు, మరియు బహుశా స్థానంలోనే. ఈ దుర్వినియోగాన్ని నివారించడానికి, మేము జీరో కనౌలెడ్జి రుజువులో మ్యాప్ యొక్క హాష్‌ను చేర్చుతాము, ఇది గేమ్ ఐడెంటిఫైయర్. + +``` + return (hashMap(map), +``` + +ఇక్కడ రిటర్న్ విలువ మ్యాప్ హాష్ శ్రేణితో పాటు తవ్వకం ఫలితాన్ని కలిగి ఉన్న టపుల్. + +``` + if map2mineCount(map, x, y) > 0 { 0xFF } else { +``` + +స్థానంలోనే బాంబు ఉంటే మేము 255 ను ప్రత్యేక విలువగా ఉపయోగిస్తాము. + +``` + map2mineCount(map, x-1, y-1) + map2mineCount(map, x, y-1) + map2mineCount(map, x+1, y-1) + + map2mineCount(map, x-1, y) + map2mineCount(map, x+1, y) + + map2mineCount(map, x-1, y+1) + map2mineCount(map, x, y+1) + map2mineCount(map, x+1, y+1) + } + ); +} +``` + +ప్లేయర్ మైన్‌ను తాకకపోతే, స్థానం చుట్టూ ఉన్న ప్రాంతానికి మైన్ గణనలను జోడించి, దానిని తిరిగి ఇవ్వండి. + +### TypeScript నుండి Zokrates ను ఉపయోగించడం {#using-zokrates-from-typescript} + +Zokrates కు కమాండ్ లైన్ ఇంటర్‌ఫేస్ ఉంది, కానీ ఈ ప్రోగ్రామ్‌లో మేము దానిని [TypeScript కోడ్‌లో](https://zokrates.github.io/toolbox/zokrates_js.html) ఉపయోగిస్తాము. + +Zokrates నిర్వచనాలను కలిగి ఉన్న లైబ్రరీని [`zero-knowledge.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts) అంటారు. + +```typescript +import { initialize as zokratesInitialize } from "zokrates-js" +``` + +[Zokrates JavaScript బైండింగ్‌లను](https://zokrates.github.io/toolbox/zokrates_js.html) దిగుమతి చేయండి. మాకు కేవలం [`initialize`](https://zokrates.github.io/toolbox/zokrates_js.html#initialize) ఫంక్షన్ మాత్రమే అవసరం ఎందుకంటే ఇది అన్ని Zokrates నిర్వచనాలకు పరిష్కారమయ్యే వాగ్దానాన్ని తిరిగి ఇస్తుంది. + +```typescript +export const zkFunctions = async (width: number, height: number) : Promise => { +``` + +Zokrates వలె, మేము కూడా ఒకే ఒక ఫంక్షన్‌ను ఎగుమతి చేస్తాము, ఇది కూడా [అసింక్రోనస్](https://www.w3schools.com/js/js_async.asp). ఇది చివరకు తిరిగి వచ్చినప్పుడు, మేము క్రింద చూసే విధంగా ఇది అనేక ఫంక్షన్‌లను అందిస్తుంది. + +```typescript +const zokrates = await zokratesInitialize() +``` + +Zokrates ను ప్రారంభించండి, లైబ్రరీ నుండి మాకు అవసరమైన ప్రతిదాన్ని పొందండి. + +```typescript +const hashFragment = ` + import "utils/pack/bool/pack128.zok" as pack128; + import "hashes/poseidon/poseidon.zok" as poseidon; + . + . + . + } + ` + +const hashProgram = ` + ${hashFragment} + . + . + . + ` + +const digProgram = ` + ${hashFragment} + . + . + . + ` +``` + +తరువాత మేము పైన చూసిన హాష్ ఫంక్షన్ మరియు రెండు Zokrates ప్రోగ్రామ్‌లను కలిగి ఉన్నాము. + +```typescript +const digCompiled = zokrates.compile(digProgram) +const hashCompiled = zokrates.compile(hashProgram) +``` + +ఇక్కడ మేము ఆ ప్రోగ్రామ్‌లను కంపైల్ చేస్తాము. + +```typescript +// జీరో కనౌలెడ్జి వెరిఫికేషన్ కోసం కీలను సృష్టించండి. +// ప్రొడక్షన్ సిస్టమ్‌లో మీరు సెటప్ వేడుకను ఉపయోగించాలనుకుంటారు. +// (https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony). +const keySetupResults = zokrates.setup(digCompiled.program, "") +const verifierKey = keySetupResults.vk +const proverKey = keySetupResults.pk +``` + +ప్రొడక్షన్ సిస్టమ్‌లో మేము మరింత క్లిష్టమైన [సెటప్ వేడుకను](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony) ఉపయోగించవచ్చు, కానీ ఇది ప్రదర్శన కోసం సరిపోతుంది. వినియోగదారులు ప్రూవర్ కీని తెలుసుకోవడం సమస్య కాదు - అవి నిజమైతే తప్ప వారు దానిని విషయాలను రుజువు చేయడానికి ఉపయోగించలేరు. మేము ఎంట్రోపీని పేర్కొన్నందున (రెండవ పరామితి, `""`), ఫలితాలు ఎల్లప్పుడూ ఒకే విధంగా ఉంటాయి. + +**గమనిక:** Zokrates ప్రోగ్రామ్‌ల సంకలనం మరియు కీ సృష్టి నెమ్మదిగా జరిగే ప్రక్రియలు. ప్రతిసారీ వాటిని పునరావృతం చేయవలసిన అవసరం లేదు, మ్యాప్ పరిమాణం మారినప్పుడు మాత్రమే. ప్రొడక్షన్ సిస్టమ్‌లో మీరు వాటిని ఒకసారి చేసి, ఆపై అవుట్‌పుట్‌ను నిల్వ చేస్తారు. నేను ఇక్కడ చేయకపోవడానికి ఏకైక కారణం సరళత కోసం. + +#### `calculateMapHash` {#calculateMapHash} + +```typescript +const calculateMapHash = function (hashMe: boolean[][]): string { + return ( + "0x" + + BigInt(zokrates.computeWitness(hashCompiled, [hashMe]).output.slice(1, -1)) + .toString(16) + .padStart(64, "0") + ) +} +``` + +[`computeWitness`](https://zokrates.github.io/toolbox/zokrates_js.html#computewitnessartifacts-args-options) ఫంక్షన్ వాస్తవానికి Zokrates ప్రోగ్రామ్‌ను నడుపుతుంది. ఇది రెండు ఫీల్డ్‌లతో ఒక నిర్మాణాన్ని తిరిగి ఇస్తుంది: `output`, ఇది ప్రోగ్రామ్ యొక్క అవుట్‌పుట్‌ను JSON స్ట్రింగ్‌గా, మరియు `witness`, ఇది ఫలితం యొక్క జీరో కనౌలెడ్జి రుజువును సృష్టించడానికి అవసరమైన సమాచారం. ఇక్కడ మనకు అవుట్‌పుట్ మాత్రమే అవసరం. + +అవుట్‌పుట్ `"31337"` రూపంలో ఒక స్ట్రింగ్, కొటేషన్ మార్కులలో ఉంచబడిన దశాంశ సంఖ్య. కానీ `viem` కోసం మనకు అవసరమైన అవుట్‌పుట్ `0x60A7` రూపంలో ఒక హెక్సాడెసిమల్ సంఖ్య. కాబట్టి మేము కొటేషన్ మార్కులను తొలగించడానికి `.slice(1,-1)` ఉపయోగిస్తాము మరియు ఆ తర్వాత మిగిలిన స్ట్రింగ్‌ను, ఇది దశాంశ సంఖ్య, [`BigInt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt)కు నడపడానికి `BigInt` ఉపయోగిస్తాము. `.toString(16)` ఈ `BigInt`ను హెక్సాడెసిమల్ స్ట్రింగ్‌గా మారుస్తుంది, మరియు `"0x"+` హెక్సాడెసిమల్ సంఖ్యల కోసం మార్కర్‌ను జోడిస్తుంది. + +```typescript +// తవ్వి, ఫలితం యొక్క జీరో కనౌలెడ్జి రుజువును తిరిగి ఇవ్వండి +// (సర్వర్-సైడ్ కోడ్) +``` + +జీరో కనౌలెడ్జి రుజువులో పబ్లిక్ ఇన్‌పుట్‌లు (`x` మరియు `y`) మరియు ఫలితాలు (మ్యాప్ యొక్క హాష్ మరియు బాంబుల సంఖ్య) ఉంటాయి. + +```typescript + const zkDig = function(map: boolean[][], x: number, y: number) : any { + if (x<0 || x>=width || y<0 || y>=height) + throw new Error("Trying to dig outside the map") +``` + +Zokrates లో ఒక సూచిక సరిహద్దుల వెలుపల ఉందో లేదో తనిఖీ చేయడం ఒక సమస్య, కాబట్టి మేము దానిని ఇక్కడ చేస్తాము. + +```typescript +const runResults = zokrates.computeWitness(digCompiled, [map, `${x}`, `${y}`]) +``` + +తవ్వకం ప్రోగ్రామ్‌ను అమలు చేయండి. + +```typescript + const proof = zokrates.generateProof( + digCompiled.program, + runResults.witness, + proverKey) + + return proof + } +``` + +[`generateProof`](https://zokrates.github.io/toolbox/zokrates_js.html#generateproofprogram-witness-provingkey-entropy) ఉపయోగించి, రుజువును తిరిగి ఇవ్వండి. + +```typescript +const solidityVerifier = ` + // మ్యాప్ పరిమాణం: ${width} x ${height} + \n${zokrates.exportSolidityVerifier(verifierKey)} + ` +``` + +ఒక సోలిడిటీ వెరిఫైయర్, `digCompiled.program` ద్వారా ఉత్పత్తి చేయబడిన రుజువులను ధృవీకరించడానికి మేము బ్లాక్‌చెయిన్‌కు అమలు చేయగల మరియు ఉపయోగించగల స్మార్ట్ కాంట్రాక్ట్. + +```typescript + return { + zkDig, + calculateMapHash, + solidityVerifier, + } +} +``` + +చివరగా, ఇతర కోడ్‌కు అవసరమయ్యే ప్రతిదాన్ని తిరిగి ఇవ్వండి. + +## భద్రతా పరీక్షలు {#security-tests} + +భద్రతా పరీక్షలు ముఖ్యమైనవి ఎందుకంటే కార్యాచరణ బగ్ చివరికి తనను తాను బహిర్గతం చేస్తుంది. కానీ అప్లికేషన్ అభద్రంగా ఉంటే, ఇతరులకు చెందిన వనరులతో మోసం చేసి పారిపోయే వ్యక్తి ద్వారా బహిర్గతం కావడానికి ముందు అది చాలా కాలం పాటు రహస్యంగా ఉండే అవకాశం ఉంది. + +### అనుమతులు {#permissions} + +ఈ గేమ్‌లో ఒక ప్రత్యేక అధికారం ఉన్న సంస్థ ఉంది, సర్వర్. ఇది [`ServerSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol) లోని ఫంక్షన్‌లను పిలవడానికి అనుమతించబడిన ఏకైక వినియోగదారు. సర్వర్ ఖాతాగా మాత్రమే అనుమతించబడిన ఫంక్షన్‌లకు కాల్‌లను ధృవీకరించడానికి మేము [`cast`](https://book.getfoundry.sh/cast/) ను ఉపయోగించవచ్చు. + +[సర్వర్ యొక్క ప్రైవేట్ కీ `setupNetwork.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/mud/setupNetwork.ts#L52)లో ఉంది. + +1. `anvil` (బ్లాక్‌చెయిన్) ను నడిపే కంప్యూటర్‌లో, ఈ పర్యావరణ వేరియబుల్స్‌ను సెట్ చేయండి. + + ```sh copy + WORLD_ADDRESS=0x8d8b6b8414e1e3dcfd4168561b9be6bd3bf6ec4b + UNAUTHORIZED_KEY=0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a + AUTHORIZED_KEY=0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d + ``` + +2. అనధికార చిరునామాగా వెరిఫైయర్ చిరునామాను సెట్ చేయడానికి `cast` ను ఉపయోగించండి. + + ```sh copy + cast send $WORLD_ADDRESS 'app__setVerifier(address)' `cast address-zero` --private-key $UNAUTHORIZED_KEY + ``` + + `cast` వైఫల్యాన్ని నివేదించడమే కాకుండా, బ్రౌజర్‌లో గేమ్‌లోని **MUD డెవ్ టూల్స్** ను తెరిచి, **పట్టికలు** క్లిక్ చేసి, **app\_\_VerifierAddress** ను ఎంచుకోవచ్చు. చిరునామా సున్నా కాదని చూడండి. + +3. సర్వర్ చిరునామాగా వెరిఫైయర్ చిరునామాను సెట్ చేయండి. + + ```sh copy + cast send $WORLD_ADDRESS 'app__setVerifier(address)' `cast address-zero` --private-key $AUTHORIZED_KEY + ``` + + **app\_\_VerifiedAddress** లోని చిరునామా ఇప్పుడు సున్నా అయి ఉండాలి. + +అదే `System`లోని అన్ని MUD ఫంక్షన్లు ఒకే యాక్సెస్ నియంత్రణ ద్వారా వెళ్తాయి, కాబట్టి నేను ఈ పరీక్షను సరిపోతుందని భావిస్తున్నాను. మీకు నచ్చకపోతే, మీరు [`ServerSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol)లోని ఇతర ఫంక్షన్‌లను తనిఖీ చేయవచ్చు. + +### జీరో-కనౌలెడ్జి దుర్వినియోగాలు {#zero-knowledge-abuses} + +Zokrates ను ధృవీకరించడానికి గణితం ఈ ట్యుటోరియల్ యొక్క పరిధికి మించినది (మరియు నా సామర్థ్యాలకు). అయితే, జీరో-కనౌలెడ్జి కోడ్‌ను సరిగ్గా చేయకపోతే అది విఫలమవుతుందని ధృవీకరించడానికి మేము దానిపై వివిధ తనిఖీలను అమలు చేయవచ్చు. ఈ పరీక్షలన్నింటికీ మేము [`zero-knowledge.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts) ను మార్చాలి మరియు మొత్తం అప్లికేషన్‌ను పునఃప్రారంభించాలి. సర్వర్ ప్రక్రియను పునఃప్రారంభించడం సరిపోదు, ఎందుకంటే ఇది అప్లికేషన్‌ను అసాధ్యమైన స్థితిలో ఉంచుతుంది (ప్లేయర్‌కు ఒక గేమ్ ప్రోగ్రెస్‌లో ఉంది, కానీ ఆ గేమ్ సర్వర్‌కు అందుబాటులో లేదు). + +#### తప్పు సమాధానం {#wrong-answer} + +జీరో-కనౌలెడ్జి రుజువులో తప్పు సమాధానం అందించడం సరళమైన అవకాశం. అది చేయడానికి, మేము `zkDig` లోపలికి వెళ్లి [లైన్ 91 ను సవరించండి](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L91): + +```ts +proof.inputs[3] = "0x" + "1".padStart(64, "0") +``` + +దీని అర్థం సరైన సమాధానంతో సంబంధం లేకుండా మేము ఎల్లప్పుడూ ఒక బాంబు ఉందని క్లెయిమ్ చేస్తాము. ఈ వెర్షన్‌తో ఆడి ప్రయత్నించండి, మరియు మీరు `pnpm dev` స్క్రీన్ యొక్క **సర్వర్** ట్యాబ్‌లో ఈ లోపాన్ని చూస్తారు: + +``` + cause: { + code: 3, + message: 'execution reverted: revert: Zero knowledge verification fail', + data: '0x08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000 +000000000000000000000000000000000000000000000000205a65726f206b6e6f776c6564676520766572696669636174696f6 +e206661696c' + }, +``` + +కాబట్టి ఈ రకమైన మోసం విఫలమవుతుంది. + +#### తప్పు రుజువు {#wrong-proof} + +మేము సరైన సమాచారాన్ని అందించి, కానీ కేవలం తప్పు రుజువు డేటాను కలిగి ఉంటే ఏమి జరుగుతుంది? ఇప్పుడు, లైన్ 91 ను దీనితో భర్తీ చేయండి: + +```ts +proof.proof = { + a: ["0x" + "1".padStart(64, "0"), "0x" + "2".padStart(64, "0")], + b: [ + ["0x" + "1".padStart(64, "0"), "0x" + "2".padStart(64, "0")], + ["0x" + "1".padStart(64, "0"), "0x" + "2".padStart(64, "0")], + ], + c: ["0x" + "1".padStart(64, "0"), "0x" + "2".padStart(64, "0")], +} +``` + +ఇది ఇంకా విఫలమవుతుంది, కానీ ఇప్పుడు ఇది వెరిఫైయర్ కాల్ సమయంలో జరుగుతుంది కాబట్టి కారణం లేకుండా విఫలమవుతుంది. + +### ఒక వినియోగదారు జీరో ట్రస్ట్ కోడ్‌ను ఎలా ధృవీకరించగలరు? {#user-verify-zero-trust} + +స్మార్ట్ కాంట్రాక్టులను ధృవీకరించడం సాపేక్షంగా సులభం. సాధారణంగా, డెవలపర్ సోర్స్ కోడ్‌ను బ్లాక్ ఎక్స్‌ప్లోరర్‌కు ప్రచురిస్తాడు, మరియు బ్లాక్ ఎక్స్‌ప్లోరర్ [ఒప్పందం అమలు లావాదేవీ](/developers/docs/smart-contracts/deploying/) లోని కోడ్‌కు సోర్స్ కోడ్ కంపైల్ అవుతుందని ధృవీకరిస్తుంది. MUD `System`s విషయంలో ఇది [కొద్దిగా క్లిష్టంగా](https://mud.dev/cli/verify) ఉంటుంది, కానీ అంతగా కాదు. + +జీరో-కనౌలెడ్జితో ఇది కష్టం. వెరిఫైయర్ కొన్ని స్థిరాంకాలను కలిగి ఉంటుంది మరియు వాటిపై కొన్ని గణనలను నడుపుతుంది. ఏమి రుజువు చేయబడుతోందో ఇది మీకు చెప్పదు. + +```solidity + function verifyingKey() pure internal returns (VerifyingKey memory vk) { + vk.alpha = Pairing.G1Point(uint256(0x0f43f4fe7b5c2326fed4ac6ed2f4003ab9ab4ea6f667c2bdd77afb068617ee16), uint256(0x25a77832283f9726935219b5f4678842cda465631e72dbb24708a97ba5d0ce6f)); + vk.beta = Pairing.G2Point([uint256(0x2cebd0fbd21aca01910581537b21ae4fed46bc0e524c055059aa164ba0a6b62b), uint256(0x18fd4a7bc386cf03a95af7163d5359165acc4e7961cb46519e6d9ee4a1e2b7e9)], [uint256(0x11449dee0199ef6d8eebfe43b548e875c69e7ce37705ee9a00c81fe52f11a009), uint256(0x066d0c83b32800d3f335bb9e8ed5e2924cf00e77e6ec28178592eac9898e1a00)]); +``` + +బ్లాక్ ఎక్స్‌ప్లోరర్‌లు తమ వినియోగదారు ఇంటర్‌ఫేస్‌లకు Zokrates వెరిఫికేషన్‌ను జోడించే వరకు, పరిష్కారం, అప్లికేషన్ డెవలపర్లు Zokrates ప్రోగ్రామ్‌లను అందుబాటులో ఉంచడం, మరియు కనీసం కొంతమంది వినియోగదారులు వాటిని తగిన వెరిఫికేషన్ కీతో తమంతట తాము కంపైల్ చేయడం. + +అలా చేయడానికి: + +1. [Zokrates ను ఇన్‌స్టాల్ చేయండి](https://zokrates.github.io/gettingstarted.html). + +2. Zokrates ప్రోగ్రామ్‌తో `dig.zok` అనే ఫైల్‌ను సృష్టించండి. క్రింది కోడ్ మీరు అసలు మ్యాప్ పరిమాణం, 10x5, ను ఉంచారని ఊహిస్తుంది. + + ```zokrates + import "utils/pack/bool/pack128.zok" as pack128; + import "hashes/poseidon/poseidon.zok" as poseidon; + + def hashMap(bool[12][7] map) -> field { + bool[512] mut map1d = [false; 512]; + u32 mut counter = 0; + + for u32 x in 0..12 { + for u32 y in 0..7 { + map1d[counter] = map[x][y]; + counter = counter+1; + } + } + + field[4] hashMe = [ + pack128(map1d[0..128]), + pack128(map1d[128..256]), + pack128(map1d[256..384]), + pack128(map1d[384..512]) + ]; + + return poseidon(hashMe); + } + + + // The number of mines in location (x,y) + def map2mineCount(bool[12][7] map, u32 x, u32 y) -> u8 { + return if map[x+1][y+1] { 1 } else { 0 }; + } + + def main(private bool[12][7] map, u32 x, u32 y) -> (field, u8) { + return (hashMap(map) , + if map2mineCount(map, x, y) > 0 { 0xFF } else { + map2mineCount(map, x-1, y-1) + map2mineCount(map, x, y-1) + map2mineCount(map, x+1, y-1) + + map2mineCount(map, x-1, y) + map2mineCount(map, x+1, y) + + map2mineCount(map, x-1, y+1) + map2mineCount(map, x, y+1) + map2mineCount(map, x+1, y+1) + } + ); + } + ``` + +3. Zokrates కోడ్‌ను కంపైల్ చేసి, వెరిఫికేషన్ కీని సృష్టించండి. అసలు సర్వర్‌లో ఉపయోగించిన అదే ఎంట్రోపీతో వెరిఫికేషన్ కీ సృష్టించబడాలి, [ఈ సందర్భంలో ఖాళీ స్ట్రింగ్](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L67). + + ```sh copy + zokrates compile --input dig.zok + zokrates setup -e "" + ``` + +4. సోలిడిటీ వెరిఫైయర్‌ను మీ స్వంతంగా సృష్టించండి, మరియు అది బ్లాక్‌చెయిన్‌లో ఉన్న దానికి కార్యాచరణపరంగా ఒకేలా ఉందని ధృవీకరించండి (సర్వర్ ఒక వ్యాఖ్యను జోడిస్తుంది, కానీ అది ముఖ్యం కాదు). + + ```sh copy + zokrates export-verifier + diff verifier.sol ~/20240901-secret-state/packages/contracts/src/verifier.sol + ``` + +## డిజైన్ నిర్ణయాలు {#design} + +ఏదైనా తగినంత సంక్లిష్టమైన అప్లికేషన్‌లో పోటీ డిజైన్ లక్ష్యాలు ఉంటాయి, వాటికి ట్రేడ్-ఆఫ్‌లు అవసరం. కొన్ని ట్రేడ్-ఆఫ్‌లను మరియు ప్రస్తుత పరిష్కారం ఇతర ఎంపికల కంటే ఎందుకు ప్రాధాన్యత కలిగి ఉందో చూద్దాం. + +### ఎందుకు జీరో-కనౌలెడ్జి {#why-zero-knowledge} + +మైన్‌స్వీపర్ కోసం మీకు నిజంగా జీరో-కనౌలెడ్జి అవసరం లేదు. సర్వర్ ఎల్లప్పుడూ మ్యాప్‌ను ఉంచుకోవచ్చు, ఆపై గేమ్ ముగిసినప్పుడు దాని మొత్తాన్ని బహిర్గతం చేయవచ్చు. ఆ తర్వాత, గేమ్ చివరిలో, స్మార్ట్ కాంట్రాక్ట్ మ్యాప్ హాష్‌ను లెక్కించవచ్చు, అది సరిపోలుతుందని ధృవీకరించవచ్చు, మరియు అది సరిపోకపోతే సర్వర్‌ను శిక్షించవచ్చు లేదా గేమ్‌ను పూర్తిగా విస్మరించవచ్చు. + +నేను ఈ సరళమైన పరిష్కారాన్ని ఉపయోగించలేదు ఎందుకంటే ఇది స్పష్టంగా నిర్వచించబడిన ముగింపు స్థితితో చిన్న ఆటలకు మాత్రమే పనిచేస్తుంది. ఒక గేమ్ సంభావ్యంగా అనంతంగా ఉన్నప్పుడు ([స్వయంప్రతిపత్త ప్రపంచాల](https://0xparc.org/blog/autonomous-worlds) విషయంలో వలె), మీకు స్థితిని _బహిర్గతం_ చేయకుండా రుజువు చేసే పరిష్కారం అవసరం. + +ఒక ట్యుటోరియల్‌గా ఈ ఆర్టికల్‌కు అర్థం చేసుకోవడానికి సులభమైన చిన్న గేమ్ అవసరం, కానీ ఈ సాంకేతికత సుదీర్ఘ ఆటలకు చాలా ఉపయోగకరంగా ఉంటుంది. + +### ఎందుకు Zokrates? {#why-zokrates} + +[Zokrates](https://zokrates.github.io/) అందుబాటులో ఉన్న ఏకైక జీరో-కనౌలెడ్జి లైబ్రరీ కాదు, కానీ ఇది ఒక సాధారణ, [అవసరమైన](https://en.wikipedia.org/wiki/Imperative_programming) ప్రోగ్రామింగ్ భాష వలె ఉంటుంది మరియు బూలియన్ వేరియబుల్స్‌కు మద్దతు ఇస్తుంది. + +మీ అప్లికేషన్ కోసం, విభిన్న అవసరాలతో, మీరు [Circum](https://docs.circom.io/getting-started/installation/) లేదా [Cairo](https://www.cairo-lang.org/tutorials/getting-started-with-cairo/) ఉపయోగించడానికి ఇష్టపడవచ్చు. + +### Zokrates ను ఎప్పుడు కంపైల్ చేయాలి {#when-compile-zokrates} + +ఈ ప్రోగ్రామ్‌లో మేము Zokrates ప్రోగ్రామ్‌లను [సర్వర్ ప్రారంభమైన ప్రతిసారీ](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L60-L61) కంపైల్ చేస్తాము. ఇది స్పష్టంగా వనరుల వృధా, కానీ ఇది సరళత కోసం ఆప్టిమైజ్ చేయబడిన ట్యుటోరియల్. + +నేను ప్రొడక్షన్-స్థాయి అప్లికేషన్ వ్రాస్తుంటే, ఈ మైన్‌ఫీల్డ్ పరిమాణంలో కంపైల్ చేయబడిన Zokrates ప్రోగ్రామ్‌లతో నా దగ్గర ఒక ఫైల్ ఉందో లేదో తనిఖీ చేస్తాను, మరియు అలా అయితే దానిని ఉపయోగిస్తాను. ఆన్‌చైన్‌లో వెరిఫైయర్ కాంట్రాక్ట్‌ను అమలు చేయడం విషయంలో కూడా ఇదే నిజం. + +### వెరిఫైయర్ మరియు ప్రూవర్ కీలను సృష్టించడం {#key-creation} + +[కీ సృష్టి](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L63-L69) అనేది ఇచ్చిన మైన్‌ఫీల్డ్ పరిమాణానికి ఒకటి కంటే ఎక్కువసార్లు చేయవలసిన అవసరం లేని మరొక స్వచ్ఛమైన గణన. మళ్ళీ, ఇది సరళత కోసం మాత్రమే ఒకసారి చేయబడుతుంది. + +అదనంగా, మేము [ఒక సెటప్ వేడుకను](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony) ఉపయోగించవచ్చు. సెటప్ వేడుక యొక్క ప్రయోజనం ఏమిటంటే, జీరో-కనౌలెడ్జి రుజువుపై మోసం చేయడానికి మీకు ప్రతి పాల్గొనేవారి నుండి ఎంట్రోపీ లేదా ఏదైనా మధ్యంతర ఫలితం అవసరం. కనీసం ఒక వేడుక పాల్గొనేవాడు నిజాయితీగా ఉండి, ఆ సమాచారాన్ని తొలగిస్తే, జీరో-కనౌలెడ్జి రుజువులు కొన్ని దాడుల నుండి సురక్షితంగా ఉంటాయి. అయితే, సమాచారం ప్రతిచోటా నుండి తొలగించబడిందని ధృవీకరించడానికి _ఏ యంత్రాంగం_ లేదు. జీరో-కనౌలెడ్జి రుజువులు చాలా ముఖ్యమైనవి అయితే, మీరు సెటప్ వేడుకలో పాల్గొనాలని కోరుకుంటారు. + +ఇక్కడ మేము [టౌ యొక్క శాశ్వత శక్తుల](https://github.com/privacy-scaling-explorations/perpetualpowersoftau)పై ఆధారపడతాము, ఇందులో డజన్ల కొద్దీ పాల్గొనేవారు ఉన్నారు. ఇది బహుశా తగినంత సురక్షితమైనది మరియు చాలా సరళమైనది. కీ సృష్టి సమయంలో మేము ఎంట్రోపీని కూడా జోడించము, ఇది వినియోగదారులకు [జీరో-కనౌలెడ్జి కాన్ఫిగరేషన్‌ను ధృవీకరించడం](#user-verify-zero-trust) సులభం చేస్తుంది. + +### ఎక్కడ ధృవీకరించాలి {#where-verification} + +మేము జీరో-కనౌలెడ్జి రుజువులను ఆన్‌చైన్‌లో (దీనికి గ్యాస్ ఖర్చవుతుంది) లేదా క్లయింట్‌లో ([`verify`](https://zokrates.github.io/toolbox/zokrates_js.html#verifyverificationkey-proof) ఉపయోగించి) ధృవీకరించవచ్చు. నేను మొదటిదాన్ని ఎంచుకున్నాను, ఎందుకంటే ఇది మిమ్మల్ని ఒకసారి [వెరిఫైయర్‌ను ధృవీకరించడానికి](#user-verify-zero-trust) అనుమతిస్తుంది మరియు ఆ తర్వాత దాని కాంట్రాక్ట్ చిరునామా ఒకేలా ఉన్నంత వరకు అది మారదని విశ్వసించవచ్చు. ధృవీకరణ క్లయింట్‌లో జరిగితే, మీరు క్లయింట్‌ను డౌన్‌లోడ్ చేసిన ప్రతిసారీ మీరు అందుకున్న కోడ్‌ను ధృవీకరించాలి. + +అలాగే, ఈ గేమ్ సింగిల్ ప్లేయర్ అయినప్పటికీ, చాలా బ్లాక్‌చెయిన్ ఆటలు మల్టీ-ప్లేయర్. ఆన్‌చైన్ వెరిఫికేషన్ అంటే మీరు జీరో-కనౌలెడ్జి రుజువును ఒకసారి మాత్రమే ధృవీకరిస్తారు. క్లయింట్‌లో దీన్ని చేయడం వలన ప్రతి క్లయింట్ స్వతంత్రంగా ధృవీకరించవలసి ఉంటుంది. + +### మ్యాప్‌ను TypeScript లో లేదా Zokrates లో ఫ్లాటెన్ చేయాలా? {#where-flatten} + +సాధారణంగా, ప్రాసెసింగ్ TypeScript లో లేదా Zokrates లో చేయగలిగితే, దానిని TypeScript లో చేయడం మంచిది, ఇది చాలా వేగంగా ఉంటుంది మరియు జీరో-కనౌలెడ్జి రుజువులు అవసరం లేదు. ఉదాహరణకు, మేము Zokrates కు హాష్‌ను అందించి, అది సరైనదని ధృవీకరించమని చేయకపోవడానికి ఇదే కారణం. హ్యాషింగ్ Zokrates లోపల జరగాలి, కానీ తిరిగి వచ్చిన హాష్ మరియు ఆన్‌చైన్‌లోని హాష్ మధ్య సరిపోలిక దాని వెలుపల జరగవచ్చు. + +అయితే, మేము ఇంకా [Zokrates లో మ్యాప్‌ను ఫ్లాటెన్ చేస్తాము](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L15-L20), అయితే మేము దానిని TypeScript లో చేసి ఉండవచ్చు. కారణం ఏమిటంటే ఇతర ఎంపికలు, నా అభిప్రాయం ప్రకారం, అధ్వాన్నంగా ఉన్నాయి. + +- Zokrates కోడ్‌కు ఒక డైమెన్షనల్ బూలియన్ శ్రేణిని అందించి, రెండు డైమెన్షనల్ మ్యాప్‌ను పొందడానికి `x*(height+2) + +y` వంటి వ్యక్తీకరణను ఉపయోగించండి. ఇది [కోడ్‌ను](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L44-L47) కొంత క్లిష్టంగా చేస్తుంది, కాబట్టి నేను ట్యుటోరియల్ కోసం పనితీరు లాభం విలువైనది కాదని నిర్ణయించుకున్నాను. + +- Zokrates కు ఒక డైమెన్షనల్ శ్రేణి మరియు రెండు డైమెన్షనల్ శ్రేణి రెండింటినీ పంపండి. అయితే, ఈ పరిష్కారం మనకు ఏమీ లాభం చేయదు. Zokrates కోడ్ దానికి అందించబడిన ఒక డైమెన్షనల్ శ్రేణి వాస్తవానికి రెండు డైమెన్షనల్ శ్రేణి యొక్క సరైన ప్రాతినిధ్యం అని ధృవీకరించవలసి ఉంటుంది. కాబట్టి ఎలాంటి పనితీరు లాభం ఉండదు. + +- Zokrates లో రెండు డైమెన్షనల్ శ్రేణిని ఫ్లాటెన్ చేయండి. ఇది సరళమైన ఎంపిక, కాబట్టి నేను దానిని ఎంచుకున్నాను. + +### మ్యాప్‌లను ఎక్కడ నిల్వ చేయాలి {#where-store-maps} + +ఈ అప్లికేషన్‌లో [`gamesInProgress`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L20) కేవలం మెమరీలో ఒక వేరియబుల్. దీని అర్థం మీ సర్వర్ చనిపోయి, పునఃప్రారంభించవలసి వస్తే, అది నిల్వ చేసిన మొత్తం సమాచారం పోతుంది. ఆటగాళ్లు తమ గేమ్‌ను కొనసాగించలేకపోవడమే కాకుండా, ఆన్‌చైన్ కాంపోనెంట్ వారు ఇంకా ఒక గేమ్ ప్రోగ్రెస్‌లో ఉన్నారని భావించడం వల్ల వారు కొత్త గేమ్‌ను కూడా ప్రారంభించలేరు. + +ప్రొడక్షన్ సిస్టమ్ కోసం ఇది స్పష్టంగా చెడ్డ డిజైన్, ఇందులో మీరు ఈ సమాచారాన్ని డేటాబేస్‌లో నిల్వ చేస్తారు. ఇక్కడ నేను ఒక వేరియబుల్ ఉపయోగించడానికి ఏకైక కారణం ఇది ట్యుటోరియల్ మరియు సరళత ప్రధాన పరిగణన. + +## ముగింపు: ఏ పరిస్థితులలో ఇది తగిన టెక్నిక్? {#conclusion} + +కాబట్టి, ఇప్పుడు మీకు ఆన్‌చైన్‌లో ఉండని రహస్య స్థితిని నిల్వ చేసే సర్వర్‌తో ఒక గేమ్ ఎలా వ్రాయాలో తెలుసు. కానీ ఏ సందర్భాల్లో మీరు దీన్ని చేయాలి? రెండు ప్రధాన పరిగణనలు ఉన్నాయి. + +- _సుదీర్ఘంగా నడిచే గేమ్_: [పైన చెప్పినట్లుగా](#why-zero-knowledge), ఒక చిన్న గేమ్‌లో మీరు గేమ్ ముగిసిన తర్వాత స్థితిని ప్రచురించి, ఆ తర్వాత ప్రతిదీ ధృవీకరించవచ్చు. కానీ గేమ్ ఎక్కువ లేదా నిరవధిక సమయం తీసుకున్నప్పుడు మరియు స్థితి రహస్యంగా ఉండవలసి వచ్చినప్పుడు అది ఒక ఎంపిక కాదు. + +- _కొంత కేంద్రీకరణ ఆమోదయోగ్యం_: జీరో-కనౌలెడ్జి రుజువులు సమగ్రతను ధృవీకరించగలవు, ఒక సంస్థ ఫలితాలను నకిలీ చేయడం లేదని. వారు చేయలేనిది ఏమిటంటే, ఆ సంస్థ ఇంకా అందుబాటులో ఉంటుందని మరియు సందేశాలకు సమాధానం ఇస్తుందని నిర్ధారించడం. అందుబాటు కూడా వికేంద్రీకరించవలసిన పరిస్థితులలో, జీరో-కనౌలెడ్జి రుజువులు తగిన పరిష్కారం కాదు, మరియు మీకు [బహు-పక్ష గణన](https://en.wikipedia.org/wiki/Secure_multi-party_computation) అవసరం. + +[నా మరిన్ని పనుల కోసం ఇక్కడ చూడండి](https://cryptodocguy.pro/). + +### ధన్యవాదాలు {#acknowledgements} + +- అల్వారో అలోన్సో ఈ ఆర్టికల్ యొక్క డ్రాఫ్ట్‌ను చదివి, Zokrates గురించి నా కొన్ని అపార్థాలను తొలగించారు. + +మిగిలిన ఏవైనా లోపాలు నా బాధ్యత. diff --git a/public/content/translations/te/developers/tutorials/secure-development-workflow/index.md b/public/content/translations/te/developers/tutorials/secure-development-workflow/index.md new file mode 100644 index 00000000000..1a0ca4ff005 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/secure-development-workflow/index.md @@ -0,0 +1,52 @@ +--- +title: "స్మార్ట్ కాంట్రాక్టు భద్రత తనిఖీ జాబితా" +description: "సురక్షితమైన స్మార్ట్ కాంట్రాక్టులను రాయడానికి సూచించబడిన కార్యప్రవాహం" +author: "Trailofbits" +tags: [ "స్మార్ట్ కాంట్రాక్టులు", "భద్రత", "దృఢత్వం" ] +skill: intermediate +lang: te +published: 2020-09-07 +source: Building secure contracts +sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/workflow.md +--- + +## స్మార్ట్ కాంట్రాక్టు అభివృద్ధి తనిఖీ జాబితా {#smart-contract-development-checklist} + +మీరు మీ స్మార్ట్ కాంట్రాక్టులను వ్రాసేటప్పుడు మేము అనుసరించమని సిఫార్సు చేస్తున్న ఉన్నత-స్థాయి ప్రక్రియ ఇక్కడ ఉంది. + +తెలిసిన భద్రతా సమస్యల కోసం తనిఖీ చేయండి: + +- [Slither](https://github.com/crytic/slither)తో మీ కాంట్రాక్టులను సమీక్షించండి. సాధారణ బలహీనతల కోసం దీనిలో 40 కంటే ఎక్కువ అంతర్నిర్మిత డిటెక్టర్లు ఉన్నాయి. కొత్త కోడ్‌తో ప్రతి చెక్-ఇన్‌లో దీన్ని అమలు చేయండి మరియు అది ఒక క్లీన్ నివేదికను పొందేలా చూసుకోండి (లేదా కొన్ని సమస్యలను నిశ్శబ్దం చేయడానికి ట్రయేజ్ మోడ్‌ను ఉపయోగించండి). +- [Crytic](https://crytic.io/)తో మీ కాంట్రాక్టులను సమీక్షించండి. Slither చేయని 50 సమస్యలను ఇది తనిఖీ చేస్తుంది. GitHub లోని పుల్ అభ్యర్థనలలో భద్రతా సమస్యలను సులభంగా గుర్తించడం ద్వారా, మీ బృంద సభ్యులు ఒకరి పురోగతిని మరొకరు తెలుసుకోవడానికి Crytic సహాయపడుతుంది. + +మీ కాంట్రాక్టు యొక్క ప్రత్యేక లక్షణాలను పరిగణించండి: + +- మీ కాంట్రాక్టులు అప్‌గ్రేడ్ చేయదగినవిగా ఉన్నాయా? [`slither-check-upgradeability`](https://github.com/crytic/slither/wiki/Upgradeability-Checks) లేదా [Crytic](https://blog.trailofbits.com/2020/06/12/upgradeable-contracts-made-safer-with-crytic/) తో లోపాల కోసం మీ అప్‌గ్రేడ్ సామర్థ్య కోడ్‌ను సమీక్షించండి. అప్‌గ్రేడ్‌లు తప్పుదారి పట్టగల 17 మార్గాలను మేము డాక్యుమెంట్ చేసాము. +- మీ కాంట్రాక్టులు ERC లకు అనుగుణంగా ఉన్నాయని చెప్పుకుంటున్నాయా? [`slither-check-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance) తో వాటిని తనిఖీ చేయండి. ఈ సాధనం ఆరు సాధారణ స్పెక్స్ నుండి విచలనాలను తక్షణమే గుర్తిస్తుంది. +- మీరు 3వ పార్టీ టోకెన్లతో ఇంటిగ్రేట్ అవుతున్నారా? బాహ్య కాంట్రాక్టులపై ఆధారపడటానికి ముందు మా [టోకెన్ ఇంటిగ్రేషన్ చెక్‌లిస్ట్](/developers/tutorials/token-integration-checklist/)ను సమీక్షించండి. + +మీ కోడ్ యొక్క క్లిష్టమైన భద్రతా లక్షణాలను దృశ్యమానంగా తనిఖీ చేయండి: + +- Slither యొక్క [inheritance-graph](https://github.com/trailofbits/slither/wiki/Printer-documentation#inheritance-graph) ప్రింటర్‌ను సమీక్షించండి. అనుకోకుండా జరిగే షాడోయింగ్ మరియు C3 లీనియరైజేషన్ సమస్యలను నివారించండి. +- Slither యొక్క [function-summary](https://github.com/trailofbits/slither/wiki/Printer-documentation#function-summary) ప్రింటర్‌ను సమీక్షించండి. ఇది ఫంక్షన్ దృశ్యమానతను మరియు యాక్సెస్ నియంత్రణలను నివేదిస్తుంది. +- Slither యొక్క [vars-and-auth](https://github.com/trailofbits/slither/wiki/Printer-documentation#variables-written-and-authorization) ప్రింటర్‌ను సమీక్షించండి. ఇది స్టేట్ వేరియబుల్స్‌పై యాక్సెస్ నియంత్రణలను నివేదిస్తుంది. + +క్లిష్టమైన భద్రతా లక్షణాలను డాక్యుమెంట్ చేయండి మరియు వాటిని మూల్యాంకనం చేయడానికి ఆటోమేటెడ్ పరీక్ష జనరేటర్‌లను ఉపయోగించండి: + +- [మీ కోడ్ కోసం భద్రతా లక్షణాలను డాక్యుమెంట్ చేయడం](/developers/tutorials/guide-to-smart-contract-security-tools/) ఎలాగో నేర్చుకోండి. మొదట ఇది కష్టంగా ఉంటుంది, కానీ మంచి ఫలితాన్ని సాధించడానికి ఇది అత్యంత ముఖ్యమైన కార్యాచరణ. ఈ ట్యుటోరియల్‌లోని ఏ అధునాతన పద్ధతులనైనా ఉపయోగించడానికి ఇది ఒక ఆవశ్యకత కూడా. +- [Echidna](https://github.com/crytic/echidna) మరియు [Manticore](https://manticore.readthedocs.io/en/latest/verifier.html)తో ఉపయోగం కోసం Solidityలో భద్రతా లక్షణాలను నిర్వచించండి. మీ స్టేట్ మషీన్, యాక్సెస్ నియంత్రణలు, అంకగణిత కార్యకలాపాలు, బాహ్య పరస్పర చర్యలు, మరియు ప్రమాణాల అనుగుణ్యతపై దృష్టి పెట్టండి. +- [Slither's Python API](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)తో భద్రతా లక్షణాలను నిర్వచించండి. వారసత్వం, వేరియబుల్ ఆధారపడటాలు, యాక్సెస్ నియంత్రణలు, మరియు ఇతర నిర్మాణాత్మక సమస్యలపై దృష్టి పెట్టండి. +- [Crytic](https://crytic.io)తో ప్రతి కమిట్‌లో మీ ప్రాపర్టీ పరీక్షలను అమలు చేయండి. Crytic భద్రతా ప్రాపర్టీ పరీక్షలను వినియోగించుకుని మూల్యాంకనం చేయగలదు, కాబట్టి మీ బృందంలోని ప్రతిఒక్కరూ అవి GitHubలో పాస్ అయ్యాయని సులభంగా చూడగలరు. విఫలమైన పరీక్షలు కమిట్‌లను బ్లాక్ చేయగలవు. + +చివరగా, ఆటోమేటెడ్ సాధనాలు సులభంగా కనుగొనలేని సమస్యల పట్ల శ్రద్ధ వహించండి: + +- గోప్యత లేకపోవడం: అవి పూల్‌లో క్యూలో ఉన్నప్పుడు ప్రతిఒక్కరూ మీ లావాదేవీలను చూడగలరు +- ఫ్రంట్ రన్నింగ్ లావాదేవీలు +- క్రిప్టోగ్రాఫిక్ కార్యకలాపాలు +- బాహ్య DeFi భాగాలతో ప్రమాదకరమైన పరస్పర చర్యలు + +## సహాయం కోసం అడగండి {#ask-for-help} + +[Ethereum ఆఫీస్ అవర్స్](https://calendly.com/dan-trailofbits/office-hours) ప్రతి మంగళవారం మధ్యాహ్నం జరుగుతాయి. ఈ 1-గంట, 1-ఆన్-1 సెషన్‌లు భద్రత గురించి మీకు ఏవైనా ప్రశ్నలు అడగడానికి, మా సాధనాలను ఉపయోగించి సమస్యలను పరిష్కరించడానికి, మరియు మీ ప్రస్తుత విధానం గురించి నిపుణుల నుండి అభిప్రాయం పొందడానికి ఒక అవకాశం. ఈ గైడ్‌ను అనుసరించడంలో మేము మీకు సహాయం చేస్తాము. + +మా Slackలో చేరండి: [Empire Hacking](https://join.slack.com/t/empirehacking/shared_invite/zt-h97bbrj8-1jwuiU33nnzg67JcvIciUw). మీకు ఏవైనా ప్రశ్నలు ఉంటే, మేము #crytic మరియు #ethereum ఛానెల్‌లలో ఎల్లప్పుడూ అందుబాటులో ఉంటాము. diff --git a/public/content/translations/te/developers/tutorials/send-token-ethersjs/index.md b/public/content/translations/te/developers/tutorials/send-token-ethersjs/index.md new file mode 100644 index 00000000000..c6b33ea540b --- /dev/null +++ b/public/content/translations/te/developers/tutorials/send-token-ethersjs/index.md @@ -0,0 +1,210 @@ +--- +title: "ethers.js ఉపయోగించి టోకెన్‌లను పంపడం" +description: "ethers.js ఉపయోగించి టోకెన్‌లను పంపడానికి ప్రారంభకులకు అనుకూలమైన మార్గదర్శి." +author: Kim YongJun +tags: [ "ETHERS.JS", "ERC-20", "టోకెన్లు" ] +skill: beginner +lang: te +published: 2021-04-06 +--- + +## ethers.js(5.0) ఉపయోగించి టోకెన్‌ను పంపండి {#send-token} + +### ఈ ట్యుటోరియల్‌లో మీరు ఎలాగో నేర్చుకుంటారు {#you-learn-about} + +- ethers.js ను దిగుమతి చేయండి +- టోకెన్ బదిలీ +- నెట్‌వర్క్ ట్రాఫిక్ పరిస్థితి ప్రకారం గ్యాస్ ధరను సెట్ చేయండి + +### ప్రారంభించడానికి {#to-get-started} + +ప్రారంభించడానికి, మనము మొదట మన జావాస్క్రిప్ట్‌లో ethers.js లైబ్రరీని దిగుమతి చేసుకోవాలి +ethers.js(5.0)ను చేర్చండి + +### ఇన్‌స్టాల్ చేస్తోంది {#install-ethersjs} + +```shell +/home/ricmoo> npm install --save ethers +``` + +బ్రౌజర్‌లో ES6 + +```html + +``` + +బ్రౌజర్‌లో ES3(UMD) + +```html + +``` + +### పరామితులు {#param} + +1. **`contract_address`**: టోకెన్ కాంట్రాక్టు చిరునామా (మీరు బదిలీ చేయాలనుకుంటున్న టోకెన్ ఈథర్ కానప్పుడు కాంట్రాక్టు చిరునామా అవసరం) +2. **`send_token_amount`**: మీరు రిసీవర్‌కు పంపాలనుకుంటున్న మొత్తం +3. **`to_address`**: రిసీవర్ చిరునామా +4. **`send_account`**: పంపినవారి చిరునామా +5. **`private_key`**: లావాదేవీపై సంతకం చేయడానికి మరియు వాస్తవానికి టోకెన్‌లను బదిలీ చేయడానికి పంపినవారి ప్రైవేట్ కీ + +## గమనిక {#notice} + +`signTransaction(tx)` తీసివేయబడింది ఎందుకంటే `sendTransaction()` దానిని అంతర్గతంగా చేస్తుంది. + +## పంపే విధానాలు {#procedure} + +### 1. నెట్‌వర్క్‌కు కనెక్ట్ అవ్వండి (టెస్టునెట్) {#connect-to-network} + +#### ప్రొవైడర్‌ను సెట్ చేయండి (Infura) {#set-provider} + +Ropsten టెస్టునెట్‌కు కనెక్ట్ అవ్వండి + +```javascript +window.ethersProvider = new ethers.providers.InfuraProvider("ropsten") +``` + +### 2. వాలెట్‌ను సృష్టించండి {#create-wallet} + +```javascript +let wallet = new ethers.Wallet(private_key) +``` + +### 3. వాలెట్‌ను నెట్‌కు కనెక్ట్ చేయండి {#connect-wallet-to-net} + +```javascript +let walletSigner = wallet.connect(window.ethersProvider) +``` + +### 4. ప్రస్తుత గ్యాస్ ధరను పొందండి {#get-gas} + +```javascript +window.ethersProvider.getGasPrice() // gasPrice +``` + +### 5. లావాదేవీని నిర్వచించండి {#define-transaction} + +క్రింద నిర్వచించబడిన ఈ వేరియబుల్స్ `send_token()` పై ఆధారపడి ఉంటాయి + +### లావాదేవీ పరామితులు {#transaction-params} + +1. **`send_account`**: టోకెన్ పంపినవారి చిరునామా +2. **`to_address`**: టోకెన్ రిసీవర్ చిరునామా +3. **`send_token_amount`**: పంపాల్సిన టోకెన్ల మొత్తం +4. **`gas_limit`**: గ్యాస్ పరిమితి +5. **`gas_price`**: గ్యాస్ ధర + +[ఎలా ఉపయోగించాలో క్రింద చూడండి](#how-to-use) + +```javascript +const tx = { + from: send_account, + to: to_address, + value: ethers.utils.parseEther(send_token_amount), + nonce: window.ethersProvider.getTransactionCount(send_account, "latest"), + gasLimit: ethers.utils.hexlify(gas_limit), // 100000 + gasPrice: gas_price, +} +``` + +### 6. బదిలీ {#transfer} + +```javascript +walletSigner.sendTransaction(tx).then((transaction) => { + console.dir(transaction) + alert("పంపడం పూర్తయింది!") +}) +``` + +## దీన్ని ఎలా ఉపయోగించాలి {#how-to-use} + +```javascript +let private_key = + "41559d28e936dc92104ff30691519693fc753ffbee6251a611b9aa1878f12a4d" +let send_token_amount = "1" +let to_address = "0x4c10D2734Fb76D3236E522509181CC3Ba8DE0e80" +let send_address = "0xda27a282B5B6c5229699891CfA6b900A716539E6" +let gas_limit = "0x100000" +let wallet = new ethers.Wallet(private_key) +let walletSigner = wallet.connect(window.ethersProvider) +let contract_address = "" +window.ethersProvider = new ethers.providers.InfuraProvider("ropsten") + +send_token( + contract_address, + send_token_amount, + to_address, + send_address, + private_key +) +``` + +### విజయం! {#success} + +![లావాదేవీ విజయవంతంగా జరిగిన చిత్రం](./successful-transaction.png) + +## send_token() {#send-token-method} + +```javascript +function send_token( + contract_address, + send_token_amount, + to_address, + send_account, + private_key +) { + let wallet = new ethers.Wallet(private_key) + let walletSigner = wallet.connect(window.ethersProvider) + + window.ethersProvider.getGasPrice().then((currentGasPrice) => { + let gas_price = ethers.utils.hexlify(parseInt(currentGasPrice)) + console.log(`gas_price: ${gas_price}`) + + if (contract_address) { + // సాధారణ టోకెన్ పంపడం + let contract = new ethers.Contract( + contract_address, + send_abi, + walletSigner + ) + + // ఎన్ని టోకెన్లు? + let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18) + console.log(`numberOfTokens: ${numberOfTokens}`) + + // టోకెన్లను పంపండి + contract.transfer(to_address, numberOfTokens).then((transferResult) => { + console.dir(transferResult) + alert("టోకెన్ పంపబడింది") + }) + } // ఈథర్ పంపడం + else { + const tx = { + from: send_account, + to: to_address, + value: ethers.utils.parseEther(send_token_amount), + nonce: window.ethersProvider.getTransactionCount( + send_account, + "latest" + ), + gasLimit: ethers.utils.hexlify(gas_limit), // 100000 + gasPrice: gas_price, + } + console.dir(tx) + try { + walletSigner.sendTransaction(tx).then((transaction) => { + console.dir(transaction) + alert("పంపడం పూర్తయింది!") + }) + } catch (error) { + alert("పంపడంలో విఫలమైంది!!") + } + } + }) +} +``` diff --git a/public/content/translations/te/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md b/public/content/translations/te/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md new file mode 100644 index 00000000000..053606fce19 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md @@ -0,0 +1,208 @@ +--- +title: "Web3 ఉపయోగించి లావాదేవీలను పంపడం" +description: "Web3 ఉపయోగించి ఇతీరియము లావాదేవీలను పంపడానికి ఇది ఒక ప్రారంభ స్నేహపూర్వక మార్గదర్శి. ఇతీరియము బ్లాక్‌చైన్‌కు లావాదేవీని పంపడానికి మూడు ప్రధాన దశలు ఉన్నాయి: సృష్టించడం, సంతకం చేయడం మరియు ప్రసారం చేయడం. మేము ఈ మూడింటినీ చర్చిద్దాం." +author: "Elan Halpern" +tags: [ "లావాదేవీలు", "web3.js", "alchemy" ] +skill: beginner +lang: te +published: 2020-11-04 +source: Alchemy docs +sourceUrl: https://www.alchemy.com/docs/how-to-send-transactions-on-ethereum +--- + +Web3 ఉపయోగించి ఇతీరియము లావాదేవీలను పంపడానికి ఇది ఒక ప్రారంభ స్నేహపూర్వక మార్గదర్శి. ఇతీరియము బ్లాక్‌చైన్‌కు లావాదేవీని పంపడానికి మూడు ప్రధాన దశలు ఉన్నాయి: సృష్టించడం, సంతకం చేయడం మరియు ప్రసారం చేయడం. మేము ఈ మూడింటినీ చర్చిద్దాం, మీకు ఉండగల ఏవైనా ప్రశ్నలకు సమాధానం ఇస్తామని ఆశిస్తున్నాము! ఈ ట్యుటోరియల్‌లో, మా లావాదేవీలను ఇతీరియము చైన్‌కు పంపడానికి మేము [Alchemy](https://www.alchemy.com/)ని ఉపయోగిస్తాము. మీరు [ఇక్కడ ఉచిత Alchemy ఖాతాను సృష్టించవచ్చు](https://auth.alchemyapi.io/signup). + +**గమనిక:** ఈ మార్గదర్శి మీ యాప్ కోసం _బ్యాకెండ్_ లో మీ లావాదేవీలపై సంతకం చేయడానికి ఉద్దేశించబడింది. మీరు ఫ్రంటెండ్‌లో మీ లావాదేవీలపై సంతకం చేయడాన్ని ఇంటిగ్రేట్ చేయాలనుకుంటే, [బ్రౌజర్ ప్రొవైడర్‌తో Web3ని ఇంటిగ్రేట్ చేయడం](https://docs.alchemy.com/reference/api-overview#with-a-browser-provider) చూడండి. + +## ప్రాథమిక అంశాలు {#the-basics} + +చాలా మంది బ్లాక్‌చైన్ డెవలపర్‌ల వలె, వారు మొదటిసారి ప్రారంభించినప్పుడు, మీరు ఒక లావాదేవీని ఎలా పంపాలనే దానిపై కొంత పరిశోధన చేసి ఉండవచ్చు (చాలా సులభంగా ఉండాల్సిన విషయం) మరియు అనేక మార్గదర్శకాలను చూసి ఉండవచ్చు, ప్రతిదీ వేర్వేరు విషయాలు చెప్పడంతో మీరు కొద్దిగా నిరుత్సాహపడి, గందరగోళానికి గురై ఉండవచ్చు. మీరు ఆ పరిస్థితిలో ఉంటే, చింతించకండి; మనమందరం ఏదో ఒక సమయంలో అలానే ఉన్నాము! కాబట్టి, మనం ప్రారంభించడానికి ముందు, కొన్ని విషయాలను స్పష్టం చేసుకుందాం: + +### 1. Alchemy మీ ప్రైవేట్ కీలను నిల్వ చేయదు {#alchemy-does-not-store-your-private-keys} + +- దీని అర్థం Alchemy మీ తరపున లావాదేవీలపై సంతకం చేసి పంపలేదు. దీనికి కారణం భద్రతా ప్రయోజనాలు. Alchemy మీ ప్రైవేట్ కీని పంచుకోమని మిమ్మల్ని ఎప్పటికీ అడగదు, మరియు మీరు మీ ప్రైవేట్ కీని హోస్ట్ చేయబడిన నోడ్‌తో (లేదా ఆ విషయానికి వస్తే ఎవరితోనైనా) ఎప్పుడూ పంచుకోకూడదు. +- మీరు Alchemy యొక్క కోర్ APIని ఉపయోగించి బ్లాక్‌చైన్ నుండి చదవవచ్చు, కానీ దానికి రాయడానికి, మీరు మీ లావాదేవీలను Alchemy ద్వారా పంపే ముందు వాటిపై సంతకం చేయడానికి వేరేదాన్ని ఉపయోగించాల్సి ఉంటుంది (ఇది ఏదైనా ఇతర [నోడ్ సేవకు](/developers/docs/nodes-and-clients/nodes-as-a-service/) కూడా వర్తిస్తుంది). + +### 2. “సంతకం చేసేవారు” అంటే ఎవరు? {#what-is-a-signer} + +- సంతకం చేసేవారు మీ ప్రైవేట్ కీని ఉపయోగించి మీ కోసం లావాదేవీలపై సంతకం చేస్తారు. ఈ ట్యుటోరియల్‌లో మా లావాదేవీపై సంతకం చేయడానికి మేము [Alchemy web3](https://docs.alchemyapi.io/alchemy/documentation/alchemy-web3) ని ఉపయోగిస్తాము, కానీ మీరు ఏదైనా ఇతర web3 లైబ్రరీని కూడా ఉపయోగించవచ్చు. +- ఫ్రంటెండ్‌లో, సంతకం చేసేవారికి ఒక మంచి ఉదాహరణ [MetaMask](https://metamask.io/), ఇది మీ తరపున లావాదేవీలపై సంతకం చేసి పంపుతుంది. + +### 3. నేను నా లావాదేవీలపై ఎందుకు సంతకం చేయాలి? {#why-do-i-need-to-sign-my-transactions} + +- ఇతీరియము నెట్‌వర్క్‌లో లావాదేవీని పంపాలనుకునే ప్రతి వినియోగదారుడు లావాదేవీ యొక్క మూలం ఎవరో ధృవీకరించడానికి, లావాదేవీపై (వారి ప్రైవేట్ కీని ఉపయోగించి) సంతకం చేయాలి. +- ఈ ప్రైవేట్ కీని రక్షించడం చాలా ముఖ్యం, ఎందుకంటే దీనికి ప్రాప్యత కలిగి ఉండటం మీ ఇతీరియము ఖాతాపై పూర్తి నియంత్రణను ఇస్తుంది, ఇది మిమ్మల్ని (లేదా ప్రాప్యత ఉన్న ఎవరినైనా) మీ తరపున లావాదేవీలను నిర్వహించడానికి అనుమతిస్తుంది. + +### 4. నా ప్రైవేట్ కీని నేను ఎలా రక్షించుకోవాలి? {#how-do-i-protect-my-private-key} + +- మీ ప్రైవేట్ కీని రక్షించడానికి మరియు లావాదేవీలను పంపడానికి దానిని ఉపయోగించడానికి అనేక మార్గాలు ఉన్నాయి. ఈ ట్యుటోరియల్‌లో మేము `.env` ఫైల్‌ను ఉపయోగిస్తాము. అయితే, మీరు ప్రైవేట్ కీలను నిల్వ చేసే ప్రత్యేక ప్రొవైడర్‌ను కూడా ఉపయోగించవచ్చు, కీస్టోర్ ఫైల్‌ను లేదా ఇతర ఎంపికలను ఉపయోగించవచ్చు. + +### 5. `eth_sendTransaction` మరియు `eth_sendRawTransaction` మధ్య తేడా ఏమిటి? {#difference-between-send-and-send-raw} + +`eth_sendTransaction` మరియు `eth_sendRawTransaction` రెండూ ఇతీరియము API ఫంక్షన్‌లు, ఇవి ఇతీరియము నెట్‌వర్క్‌కు లావాదేవీని ప్రసారం చేస్తాయి, తద్వారా ఇది భవిష్యత్తు బ్లాక్‌కు జోడించబడుతుంది. అవి లావాదేవీలపై సంతకం చేయడాన్ని నిర్వహించే విధానంలో విభిన్నంగా ఉంటాయి. + +- [`eth_sendTransaction`](https://docs.web3js.org/api/web3-eth/function/sendTransaction) _సంతకం చేయని_ లావాదేవీలను పంపడానికి ఉపయోగించబడుతుంది, దీని అర్థం మీరు పంపుతున్న నోడ్ మీ ప్రైవేట్ కీని నిర్వహించాలి, తద్వారా అది చైన్‌కు ప్రసారం చేయడానికి ముందు లావాదేవీపై సంతకం చేయగలదు. Alchemy వినియోగదారుల ప్రైవేట్ కీలను కలిగి ఉండదు కాబట్టి, వారు ఈ పద్ధతికి మద్దతు ఇవ్వరు. +- [`eth_sendRawTransaction`](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction) ఇప్పటికే సంతకం చేసిన లావాదేవీలను ప్రసారం చేయడానికి ఉపయోగించబడుతుంది. దీని అర్థం మీరు మొదట [`signTransaction(tx, private_key)`](https://docs.web3js.org/api/web3-eth-accounts/function/signTransaction) ని ఉపయోగించాలి, ఆ తర్వాత ఫలితాన్ని `eth_sendRawTransaction` లోకి పంపాలి. + +web3ని ఉపయోగిస్తున్నప్పుడు, [web3.eth.sendSignedTransaction](https://docs.web3js.org/api/web3-eth/function/sendSignedTransaction) ఫంక్షన్‌ను కాల్ చేయడం ద్వారా `eth_sendRawTransaction` యాక్సెస్ చేయబడుతుంది. + +ఈ ట్యుటోరియల్‌లో మనం ఉపయోగించబోయేది ఇదే. + +### 6. web3 లైబ్రరీ అంటే ఏమిటి? {#what-is-the-web3-library} + +- Web3.js అనేది ప్రామాణిక JSON-RPC కాల్స్ చుట్టూ ఉన్న ఒక వ్రాపర్ లైబ్రరీ, ఇది ఇతీరియము అభివృద్ధిలో ఉపయోగించడం చాలా సాధారణం. +- వివిధ భాషల కోసం అనేక web3 లైబ్రరీలు ఉన్నాయి. ఈ ట్యుటోరియల్‌లో మనం జావాస్క్రిప్ట్‌లో వ్రాసిన [Alchemy Web3](https://docs.alchemy.com/reference/api-overview)ని ఉపయోగిస్తాము. మీరు [ethers.js](https://docs.ethers.org/v5/) వంటి ఇతర ఎంపికలను [ఇక్కడ](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries) చూడవచ్చు. + +సరే, ఇప్పుడు మనకు ఈ ప్రశ్నలలో కొన్నింటికి సమాధానం దొరికింది, ట్యుటోరియల్‌కు వెళ్దాం. Alchemy [discord](https://discord.gg/gWuC7zB)లో ఎప్పుడైనా ప్రశ్నలు అడగడానికి సంకోచించకండి! + +### 7. సురక్షితమైన, గ్యాస్-ఆప్టిమైజ్ చేయబడిన, మరియు ప్రైవేట్ లావాదేవీలను ఎలా పంపాలి? {#how-to-send-secure-gas-optimized-and-private-transactions} + +- [Alchemy ట్రాన్సాక్ట్ APIల సూట్‌ను కలిగి ఉంది](https://docs.alchemy.com/reference/transact-api-quickstart). బలోపేతం చేయబడిన లావాదేవీలను పంపడానికి, లావాదేవీలు జరగడానికి ముందే వాటిని అనుకరించడానికి, ప్రైవేట్ లావాదేవీలను పంపడానికి, మరియు గ్యాస్-ఆప్టిమైజ్ చేయబడిన లావాదేవీలను పంపడానికి మీరు వీటిని ఉపయోగించవచ్చు +- మీ లావాదేవీ మెమ్‌పూల్ నుండి తీసివేయబడి, చైన్‌కు జోడించబడినప్పుడు హెచ్చరించబడటానికి మీరు [Notify API](https://docs.alchemy.com/docs/alchemy-notify)ని కూడా ఉపయోగించవచ్చు + +**గమనిక:** ఈ మార్గదర్శికి Alchemy ఖాతా, ఒక ఇతీరియము చిరునామా లేదా MetaMask వాలెట్, NodeJs, మరియు npm ఇన్‌స్టాల్ చేయబడి ఉండాలి. లేకపోతే, ఈ దశలను అనుసరించండి: + +1. [ఉచిత Alchemy ఖాతాను సృష్టించండి](https://auth.alchemyapi.io/signup) +2. [MetaMask ఖాతాను సృష్టించండి](https://metamask.io/) (లేదా ఒక ఇతీరియము చిరునామా పొందండి) +3. [NodeJs మరియు NPM ఇన్‌స్టాల్ చేయడానికి ఈ దశలను అనుసరించండి](https://docs.alchemy.com/alchemy/guides/alchemy-for-macs) + +## మీ లావాదేవీని పంపే దశలు {#steps-to-sending-your-transaction} + +### 1. Sepolia టెస్ట్‌నెట్‌లో Alchemy యాప్‌ను సృష్టించండి {#create-an-alchemy-app-on-the-sepolia-testnet} + +మీ [Alchemy డాష్‌బోర్డ్](https://dashboard.alchemyapi.io/) కు నావిగేట్ చేసి, మీ నెట్‌వర్క్ కోసం Sepolia (లేదా ఏదైనా ఇతర టెస్ట్‌నెట్) ను ఎంచుకుని కొత్త యాప్‌ను సృష్టించండి. + +### 2. Sepolia ఫాసెట్ నుండి ETH అభ్యర్థించండి {#request-eth-from-sepolia-faucet} + +ETH స్వీకరించడానికి [Alchemy Sepolia faucet](https://www.sepoliafaucet.com/)లోని సూచనలను అనుసరించండి. మీ **Sepolia** ఇతీరియము చిరునామాను (MetaMask నుండి) చేర్చారని మరియు మరొక నెట్‌వర్క్‌ది కాదని నిర్ధారించుకోండి. సూచనలను అనుసరించిన తర్వాత, మీ వాలెట్‌లో ETH స్వీకరించారని రెండుసార్లు తనిఖీ చేసుకోండి. + +### 3. కొత్త ప్రాజెక్ట్ డైరెక్టరీని సృష్టించి, దానిలోకి `cd` అవ్వండి {#create-a-new-project-direction} + +కమాండ్ లైన్ (macs కోసం టెర్మినల్) నుండి కొత్త ప్రాజెక్ట్ డైరెక్టరీని సృష్టించి, దానిలోకి నావిగేట్ చేయండి: + +``` +mkdir sendtx-example +cd sendtx-example +``` + +### 4. Alchemy Web3 (లేదా ఏదైనా web3 లైబ్రరీ) ని ఇన్‌స్టాల్ చేయండి {#install-alchemy-web3} + +[Alchemy Web3](https://docs.alchemy.com/reference/api-overview)ని ఇన్‌స్టాల్ చేయడానికి మీ ప్రాజెక్ట్ డైరెక్టరీలో కింది కమాండ్‌ను అమలు చేయండి: + +గమనిక, మీరు ethers.js లైబ్రరీని ఉపయోగించాలనుకుంటే, [ఇక్కడి సూచనలను అనుసరించండి](https://docs.alchemy.com/docs/how-to-send-transactions-on-ethereum). + +``` +npm install @alch/alchemy-web3 +``` + +### 5. dotenv ఇన్‌స్టాల్ చేయండి {#install-dotenv} + +మా API కీ మరియు ప్రైవేట్ కీని సురక్షితంగా నిల్వ చేయడానికి మేము `.env` ఫైల్‌ను ఉపయోగిస్తాము. + +``` +npm install dotenv --save +``` + +### 6. `.env` ఫైల్‌ను సృష్టించండి {#create-the-dotenv-file} + +మీ ప్రాజెక్ట్ డైరెక్టరీలో `.env` ఫైల్‌ను సృష్టించి, కింది వాటిని జోడించండి (“`your-api-url`" మరియు "`your-private-key`" లను భర్తీ చేస్తూ) + +- మీ Alchemy API URL ను కనుగొనడానికి, మీ డాష్‌బోర్డ్‌లో మీరు ఇప్పుడే సృష్టించిన యాప్ యొక్క యాప్ వివరాల పేజీకి నావిగేట్ చేయండి, కుడి ఎగువ మూలలోని “View Key” పై క్లిక్ చేసి, HTTP URLని తీసుకోండి. +- MetaMask ఉపయోగించి మీ ప్రైవేట్ కీని కనుగొనడానికి, ఈ [మార్గదర్శి](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key)ని చూడండి. + +``` +API_URL = "your-api-url" +PRIVATE_KEY = "your-private-key" +``` + + + + +.env ను కమిట్ చేయవద్దు! దయచేసి మీ .env ఫైల్‌ను ఎవరితోనూ పంచుకోకుండా లేదా బహిర్గతం చేయకుండా చూసుకోండి, అలా చేయడం ద్వారా మీరు మీ రహస్యాలను రాజీ పడుతున్నారు. మీరు వెర్షన్ నియంత్రణను ఉపయోగిస్తుంటే, మీ .env ని gitignore ఫైల్‌కు జోడించండి. + + + + +### 7. `sendTx.js` ఫైల్‌ను సృష్టించండి {#create-sendtx-js} + +గొప్పది, ఇప్పుడు మన సున్నితమైన డేటా `.env` ఫైల్‌లో రక్షించబడింది, కోడింగ్ ప్రారంభిద్దాం. మా లావాదేవీ పంపే ఉదాహరణ కోసం, మేము ETHని Sepolia ఫాసెట్‌కు తిరిగి పంపుతాము. + +`sendTx.js` ఫైల్‌ను సృష్టించండి, ఇక్కడే మేము మా ఉదాహరణ లావాదేవీని కాన్ఫిగర్ చేసి పంపుతాము మరియు దానికి కింది కోడ్ లైన్‌లను జోడించండి: + +``` +async function main() { + require('dotenv').config(); + const { API_URL, PRIVATE_KEY } = process.env; + const { createAlchemyWeb3 } = require("@alch/alchemy-web3"); + const web3 = createAlchemyWeb3(API_URL); + const myAddress = '0x610Ae88399fc1687FA7530Aac28eC2539c7d6d63' //TODO: ఈ చిరునామాను మీ స్వంత పబ్లిక్ చిరునామాతో భర్తీ చేయండి + + const nonce = await web3.eth.getTransactionCount(myAddress, 'latest'); // నాన్స్ 0 నుండి లెక్కించడం ప్రారంభిస్తుంది + + const transaction = { + 'to': '0x31B98D14007bDEe637298086988A0bBd31184523', // eth తిరిగి పంపడానికి ఫాసెట్ చిరునామా + 'value': 1000000000000000000, // 1 ETH + 'gas': 30000, + 'nonce': nonce, + // సందేశం పంపడానికి లేదా స్మార్ట్ కాంట్రాక్ట్‌ను అమలు చేయడానికి ఐచ్ఛిక డేటా ఫీల్డ్ + }; + + const signedTx = await web3.eth.accounts.signTransaction(transaction, PRIVATE_KEY); + + web3.eth.sendSignedTransaction(signedTx.rawTransaction, function(error, hash) { + if (!error) { + console.log("🎉 మీ లావాదేవీ యొక్క హాష్ ఇది: ", hash, "\n మీ లావాదేవీ స్థితిని వీక్షించడానికి Alchemy's Mempoolని తనిఖీ చేయండి!"); + } else { + console.log("❗మీ లావాదేవీని సమర్పించేటప్పుడు ఏదో తప్పు జరిగింది:", error) + } + }); +} + +main(); +``` + +**లైన్ 6** లోని చిరునామాను మీ స్వంత పబ్లిక్ చిరునామాతో భర్తీ చేయాలని నిర్ధారించుకోండి. + +ఇప్పుడు, ఈ కోడ్‌ను అమలు చేయడానికి ముందు, ఇక్కడ ఉన్న కొన్ని భాగాల గురించి మాట్లాడుకుందాం. + +- `nonce` : మీ చిరునామా నుండి పంపిన లావాదేవీల సంఖ్యను ట్రాక్ చేయడానికి నాన్స్ స్పెసిఫికేషన్ ఉపయోగించబడుతుంది. భద్రతా ప్రయోజనాల కోసం మరియు [రీప్లే దాడులను](https://docs.alchemyapi.io/resources/blockchain-glossary#account-nonce) నివారించడానికి మాకు ఇది అవసరం. మీ చిరునామా నుండి పంపిన లావాదేవీల సంఖ్యను పొందడానికి మేము [getTransactionCount](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_gettransactioncount)ని ఉపయోగిస్తాము. +- `transaction`: లావాదేవీ ఆబ్జెక్ట్ కొన్ని అంశాలను కలిగి ఉంది, వాటిని మేము పేర్కొనాలి + - `to`: ఇది మేము ETH పంపాలనుకుంటున్న చిరునామా. ఈ సందర్భంలో, మేము మొదట అభ్యర్థించిన [Sepolia faucet](https://sepoliafaucet.com/)కు ETHని తిరిగి పంపుతున్నాము. + - `value`: ఇది మేము పంపాలనుకుంటున్న మొత్తం, Wei లో పేర్కొనబడింది, ఇక్కడ 10^18 Wei = 1 ETH + - `gas`: మీ లావాదేవీతో చేర్చడానికి సరైన గ్యాస్ మొత్తాన్ని నిర్ణయించడానికి అనేక మార్గాలు ఉన్నాయి. గ్యాస్ ధర ఒక నిర్దిష్ట పరిమితిలోకి పడిపోయినప్పుడు మీకు తెలియజేయడానికి Alchemyకి [గ్యాస్ ధర వెబ్‌హుక్](https://docs.alchemyapi.io/guides/alchemy-notify#address-activity-1) కూడా ఉంది. Mainnet లావాదేవీల కోసం, చేర్చవలసిన సరైన గ్యాస్ మొత్తాన్ని నిర్ణయించడానికి [ETH గ్యాస్ స్టేషన్](https://ethgasstation.info/) వంటి గ్యాస్ ఎస్టిమేటర్‌ను తనిఖీ చేయడం మంచి పద్ధతి. 21000 అనేది ఇతీరియములో ఒక ఆపరేషన్ ఉపయోగించే కనీస గ్యాస్ మొత్తం, కాబట్టి మా లావాదేవీ అమలు చేయబడుతుందని నిర్ధారించుకోవడానికి మేము ఇక్కడ 30000 పెట్టాము. + - `nonce`: పైన ఉన్న నాన్స్ నిర్వచనం చూడండి. నాన్స్ సున్నా నుండి లెక్కించడం ప్రారంభిస్తుంది. + - [ఐచ్ఛికం] డేటా: మీ బదిలీతో అదనపు సమాచారాన్ని పంపడానికి లేదా స్మార్ట్ కాంట్రాక్ట్‌ను కాల్ చేయడానికి ఉపయోగించబడుతుంది, బ్యాలెన్స్ బదిలీలకు అవసరం లేదు, కింద ఉన్న గమనికను చూడండి. +- `signedTx`: మా లావాదేవీ ఆబ్జెక్ట్‌పై సంతకం చేయడానికి, మేము మా `PRIVATE_KEY`తో `signTransaction` పద్ధతిని ఉపయోగిస్తాము +- `sendSignedTransaction`: మన వద్ద సంతకం చేసిన లావాదేవీ ఉన్న తర్వాత, `sendSignedTransaction`ని ఉపయోగించి దాన్ని తదుపరి బ్లాక్‌లో చేర్చడానికి పంపవచ్చు + +**డేటాపై ఒక గమనిక** +ఇతీరియములో పంపగల రెండు ప్రధాన రకాల లావాదేవీలు ఉన్నాయి. + +- బ్యాలెన్స్ బదిలీ: ఒక చిరునామా నుండి మరొక చిరునామాకు ETH పంపండి. డేటా ఫీల్డ్ అవసరం లేదు, అయితే, మీరు మీ లావాదేవీతో పాటు అదనపు సమాచారాన్ని పంపాలనుకుంటే, మీరు ఆ సమాచారాన్ని ఈ ఫీల్డ్‌లో HEX ఫార్మాట్‌లో చేర్చవచ్చు. + - ఉదాహరణకు, మనం ఒక IPFS పత్రం యొక్క హాష్‌ను ఇతీరియము చైన్‌కు రాయాలనుకుంటున్నామని అనుకుందాం, దానికి మార్పులేని టైమ్‌స్టాంప్ ఇవ్వడానికి. అప్పుడు మా డేటా ఫీల్డ్ ఇలా ఉండాలి: `web3.utils.toHex(‘IPFS hash‘)`. ఇప్పుడు ఎవరైనా చైన్‌ను క్వెరీ చేసి, ఆ పత్రం ఎప్పుడు జోడించబడిందో చూడవచ్చు. +- స్మార్ట్ కాంట్రాక్ట్ లావాదేవీ: చైన్‌పై కొంత స్మార్ట్ కాంట్రాక్ట్ కోడ్‌ను అమలు చేయండి. ఈ సందర్భంలో, డేటా ఫీల్డ్‌లో మీరు అమలు చేయాలనుకుంటున్న స్మార్ట్ ఫంక్షన్, ఏవైనా పారామీటర్‌లతో పాటు ఉండాలి. + - ఒక ఆచరణాత్మక ఉదాహరణ కోసం, ఈ [హలో వరల్డ్ ట్యుటోరియల్](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#step-8-create-the-transaction)లో 8వ దశను చూడండి. + +### 8. `node sendTx.js` ఉపయోగించి కోడ్‌ను అమలు చేయండి {#run-the-code-using-node-sendtx-js} + +మీ టెర్మినల్ లేదా కమాండ్ లైన్‌కు తిరిగి వెళ్లి అమలు చేయండి: + +``` +node sendTx.js +``` + +### 9. Mempoolలో మీ లావాదేవీని చూడండి {#see-your-transaction-in-the-mempool} + +మీ Alchemy డాష్‌బోర్డ్‌లో [Mempool పేజీ](https://dashboard.alchemyapi.io/mempool)ని తెరిచి, మీ లావాదేవీని కనుగొనడానికి మీరు సృష్టించిన యాప్ ద్వారా ఫిల్టర్ చేయండి. ఇక్కడే మన లావాదేవీ పెండింగ్ స్థితి నుండి మైన్డ్ స్థితికి (విజయవంతమైతే) లేదా విఫలమైతే డ్రాప్డ్ స్థితికి మారడాన్ని మనం చూడవచ్చు. “mined”, “pending”, మరియు “dropped” లావాదేవీలను మీరు క్యాప్చర్ చేయడానికి దాన్ని “All” పై ఉంచారని నిర్ధారించుకోండి. `0x31b98d14007bdee637298086988a0bbd31184523` చిరునామాకు పంపిన లావాదేవీల కోసం వెతకడం ద్వారా కూడా మీరు మీ లావాదేవీని శోధించవచ్చు . + +మీరు దాన్ని కనుగొన్న తర్వాత మీ లావాదేవీ వివరాలను వీక్షించడానికి, tx హాష్‌ను ఎంచుకోండి, ఇది మిమ్మల్ని ఇలా కనిపించే వీక్షణకు తీసుకువెళుతుంది: + +![Mempool వాచర్ స్క్రీన్‌షాట్](./mempool.png) + +అక్కడ నుండి మీరు ఎరుపు రంగులో చుట్టబడిన ఐకాన్‌పై క్లిక్ చేయడం ద్వారా Etherscanలో మీ లావాదేవీని వీక్షించవచ్చు! + +**భలే!** మీరు ఇప్పుడే Alchemy ఉపయోగించి మీ మొదటి ఇతీరియము లావాదేవీని పంపారు 🎉\*\* + +_ఈ మార్గదర్శి గురించి అభిప్రాయం మరియు సూచనల కోసం, దయచేసి Alchemy యొక్క [Discord](https://discord.gg/A39JVCM)లో Elanకు సందేశం పంపండి!_ + +_మొదట [https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy](https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy) వద్ద ప్రచురించబడింది_ diff --git a/public/content/translations/te/developers/tutorials/server-components/index.md b/public/content/translations/te/developers/tutorials/server-components/index.md new file mode 100644 index 00000000000..eaabe613f71 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/server-components/index.md @@ -0,0 +1,295 @@ +--- +title: "వెబ్3 యాప్‌ల కోసం సర్వర్ భాగాలు మరియు ఏజెంట్లు" +description: "ఈ ట్యుటోరియల్ చదివిన తర్వాత, మీరు బ్లాక్‌చైన్‌లోని ఈవెంట్‌లను వినే మరియు వాటి స్వంత లావాదేవీలతో తదనుగుణంగా స్పందించే టైప్‌స్క్రిప్ట్ సర్వర్‌లను వ్రాయగలుగుతారు. ఇది కేంద్రీకృత అప్లికేషన్‌లను (సర్వర్ వైఫల్యానికి ఒక పాయింట్ కాబట్టి) వ్రాయడానికి మిమ్మల్ని అనుమతిస్తుంది, కానీ వెబ్3 ఎంటిటీలతో పరస్పర చర్య చేయగలదు. మానవ ప్రమేయం లేకుండా ఆన్‌చైన్ ఈవెంట్‌లకు స్పందించే ఒక ఏజెంట్‌ను వ్రాయడానికి కూడా అవే పద్ధతులను ఉపయోగించవచ్చు." + +author: Ori Pomerantz +lang: te +tags: [ "ఏజెంట్", "సర్వర్", "ఆఫ్‌చైన్" ] +skill: beginner +published: 2024-07-15 +--- + +## పరిచయం {#introduction} + +చాలా సందర్భాలలో, ఒక వికేంద్రీకృత యాప్ సాఫ్ట్‌వేర్‌ను పంపిణీ చేయడానికి సర్వర్‌ను ఉపయోగిస్తుంది, కానీ వాస్తవ పరస్పర చర్య అంతా క్లయింట్ (సాధారణంగా, వెబ్ బ్రౌజర్) మరియు బ్లాక్‌చైన్ మధ్య జరుగుతుంది. + +![వెబ్ సర్వర్, క్లయింట్ మరియు బ్లాక్‌చైన్ మధ్య సాధారణ పరస్పర చర్య](./fig-1.svg) + +అయినప్పటికీ, స్వతంత్రంగా నడిచే సర్వర్ భాగం ఉండటం వల్ల ఒక అప్లికేషన్ ప్రయోజనం పొందే కొన్ని సందర్భాలు ఉన్నాయి. అలాంటి సర్వర్ లావాదేవీలను జారీ చేయడం ద్వారా, ఈవెంట్‌లకు మరియు API వంటి ఇతర వనరుల నుండి వచ్చే అభ్యర్థనలకు స్పందించగలదు. + +![సర్వర్‌ను జోడించడంతో పరస్పర చర్య](./fig-2.svg) + +అటువంటి సర్వర్ నెరవేర్చగల అనేక సంభావ్య పనులు ఉన్నాయి. + +- రహస్య స్థితిని కలిగి ఉండటం. గేమింగ్‌లో ఆటకు తెలిసిన మొత్తం సమాచారం ఆటగాళ్లకు అందుబాటులో లేకుండా ఉండటం తరచుగా ఉపయోగకరంగా ఉంటుంది. అయినప్పటికీ, _బ్లాక్‌చైన్‌లో రహస్యాలు లేవు_, బ్లాక్‌చైన్‌లో ఉన్న ఏ సమాచారమైనా ఎవరైనా సులభంగా కనుక్కోగలరు. అందువల్ల, గేమ్ స్థితిలో కొంత భాగాన్ని రహస్యంగా ఉంచాలంటే, దాన్ని మరెక్కడైనా నిల్వ చేయాలి (మరియు బహుశా ఆ స్థితి యొక్క ప్రభావాలను [జీరో-నాలెడ్జ్ ప్రూఫ్స్](/zero-knowledge-proofs) ఉపయోగించి ధృవీకరించాలి). + +- కేంద్రీకృత ఒరాకిల్. స్టేక్స్ తగినంత తక్కువగా ఉంటే, ఆన్‌లైన్‌లో కొంత సమాచారాన్ని చదివి, ఆ తర్వాత చైన్‌కు పోస్ట్ చేసే బాహ్య సర్వర్ [ఒరాకిల్](/developers/docs/oracles/)గా ఉపయోగించడానికి సరిపోతుంది. + +- ఏజెంట్. దాన్ని యాక్టివేట్ చేయడానికి లావాదేవీ లేకుండా బ్లాక్‌చైన్‌లో ఏమీ జరగదు. అవకాశం వచ్చినప్పుడు [ఆర్బిట్రేజ్](/developers/docs/mev/#mev-examples-dex-arbitrage) వంటి చర్యలను నిర్వహించడానికి ఒక సర్వర్ వినియోగదారుడి తరఫున పని చేయగలదు. + +## నమూనా ప్రోగ్రామ్ {#sample-program} + +మీరు [githubలో](https://github.com/qbzzt/20240715-server-component) ఒక నమూనా సర్వర్‌ను చూడవచ్చు. ఈ సర్వర్ [ఈ కాంట్రాక్ట్](https://eth-holesky.blockscout.com/address/0xB8f6460Dc30c44401Be26B0d6eD250873d8a50A6?tab=contract_code) నుండి వచ్చే ఈవెంట్‌లను వింటుంది, ఇది Hardhat యొక్క గ్రీటర్ యొక్క సవరించిన వెర్షన్. గ్రీటింగ్ మార్చబడినప్పుడు, అది దానిని తిరిగి మారుస్తుంది. + +దానిని నడపడానికి: + +1. రిపోజిటరీని క్లోన్ చేయండి. + + ```sh copy + git clone https://github.com/qbzzt/20240715-server-component.git + cd 20240715-server-component + ``` + +2. అవసరమైన ప్యాకేజీలను ఇన్‌స్టాల్ చేయండి. మీకు ఇప్పటికే అది లేకపోతే, [మొదట Nodeను ఇన్‌స్టాల్ చేయండి](https://nodejs.org/en/download/package-manager). + + ```sh copy + npm install + ``` + +3. Holesky టెస్టునెట్‌లో ETH ఉన్న ఖాతా యొక్క ప్రైవేట్ కీని పేర్కొనడానికి `.env`ను సవరించండి. మీకు Holeskyలో ETH లేకపోతే, మీరు [ఈ ఫాసెట్‌ను ఉపయోగించవచ్చు](https://holesky-faucet.pk910.de/). + + ```sh filename=".env" copy + PRIVATE_KEY=0x + ``` + +4. సర్వర్‌ను ప్రారంభించండి. + + ```sh copy + npm start + ``` + +5. [ఒక బ్లాక్ ఎక్స్‌ప్లోరర్‌కు](https://eth-holesky.blockscout.com/address/0xB8f6460Dc30c44401Be26B0d6eD250873d8a50A6?tab=write_contract) వెళ్లి, ప్రైవేట్ కీ ఉన్న చిరునామా కాకుండా వేరే చిరునామాను ఉపయోగించి గ్రీటింగ్‌ను సవరించండి. గ్రీటింగ్ ఆటోమేటిక్‌గా తిరిగి సవరించబడిందని చూడండి. + +### ఇది ఎలా పనిచేస్తుంది? {#how-it-works} + +సర్వర్ భాగాన్ని ఎలా వ్రాయాలో అర్థం చేసుకోవడానికి సులభమైన మార్గం నమూనాను లైన్ బై లైన్ పరిశీలించడం. + +#### `src/app.ts` {#src-app-ts} + +ప్రోగ్రామ్ యొక్క అధిక భాగం [`src/app.ts`](https://github.com/qbzzt/20240715-server-component/blob/main/src/app.ts)లో ఉంది. + +##### అవసరమైన ఆబ్జెక్ట్‌లను సృష్టించడం + +```typescript +import { + createPublicClient, + createWalletClient, + getContract, + http, + Address, +} from "viem" +``` + +ఇవి మనకు అవసరమైన [Viem](https://viem.sh/) ఎంటిటీలు, ఫంక్షన్‌లు మరియు [`Address` రకం](https://viem.sh/docs/glossary/types#address). ఈ సర్వర్ [TypeScript](https://www.typescriptlang.org/)లో వ్రాయబడింది, ఇది జావాస్క్రిప్ట్‌కు ఒక పొడిగింపు, ఇది దానిని [స్ట్రాంగ్లీ టైప్డ్](https://en.wikipedia.org/wiki/Strong_and_weak_typing) చేస్తుంది. + +```typescript +import { privateKeyToAccount } from "viem/accounts" +``` + +[ఈ ఫంక్షన్](https://viem.sh/docs/accounts/privateKey) ఒక ప్రైవేట్ కీకి సంబంధించిన చిరునామాతో సహా వాలెట్ సమాచారాన్ని రూపొందించడానికి మనకు అనుమతిస్తుంది. + +```typescript +import { holesky } from "viem/chains" +``` + +Viemలో బ్లాక్‌చైన్‌ను ఉపయోగించడానికి మీరు దాని నిర్వచనాన్ని ఇంపోర్ట్ చేయాలి. ఈ సందర్భంలో, మేము [Holesky](https://github.com/eth-clients/holesky) టెస్ట్ బ్లాక్‌చైన్‌కు కనెక్ట్ కావాలనుకుంటున్నాము. + +```typescript +// .env లోని నిర్వచనాలను process.env కు ఈ విధంగా జోడిస్తాము. +import * as dotenv from "dotenv" +dotenv.config() +``` + +ఈ విధంగా మనం `.env`ను ఎన్విరాన్‌మెంట్‌లోకి చదువుతాము. ప్రైవేట్ కీ కోసం మాకు ఇది అవసరం (తర్వాత చూడండి). + +```typescript +const greeterAddress : Address = "0xB8f6460Dc30c44401Be26B0d6eD250873d8a50A6" +const greeterABI = [ + { + "inputs": [ + { + "internalType": "string", + "name": "_greeting", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + . + . + . + { + "inputs": [ + { + "internalType": "string", + "name": "_greeting", + "type": "string" + } + ], + "name": "setGreeting", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] as const +``` + +ఒక కాంట్రాక్ట్‌ను ఉపయోగించడానికి మనకు దాని చిరునామా మరియు దాని కోసం [ABI](/glossary/#abi) అవసరం. మేము ఇక్కడ రెండింటినీ అందిస్తాము. + +జావాస్క్రిప్ట్ (మరియు అందువల్ల టైప్‌స్క్రిప్ట్)లో మీరు ఒక కాన్స్టాంట్‌కు కొత్త విలువను కేటాయించలేరు, కానీ మీరు దానిలో నిల్వ చేసిన ఆబ్జెక్ట్‌ను _మార్చవచ్చు_. `as const` ప్రత్యయాన్ని ఉపయోగించడం ద్వారా, జాబితా కూడా కాన్స్టాంట్ అని మరియు మార్చబడదని మేము టైప్‌స్క్రిప్ట్‌కు చెబుతున్నాము. + +```typescript +const publicClient = createPublicClient({ + chain: holesky, + transport: http(), +}) +``` + +ఒక Viem [పబ్లిక్ క్లయింట్‌ను](https://viem.sh/docs/clients/public.html) సృష్టించండి. పబ్లిక్ క్లయింట్‌లకు జోడించిన ప్రైవేట్ కీ ఉండదు, అందువల్ల అవి లావాదేవీలను పంపలేవు. అవి [`view` ఫంక్షన్‌లను](https://www.tutorialspoint.com/solidity/solidity_view_functions.htm) కాల్ చేయగలవు, ఖాతా బ్యాలెన్స్‌లను చదవగలవు, మొదలైనవి. + +```typescript +const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`) +``` + +ఎన్విరాన్‌మెంట్ వేరియబుల్స్ [`process.env`](https://www.totaltypescript.com/how-to-strongly-type-process-env)లో అందుబాటులో ఉంటాయి. అయినప్పటికీ, టైప్‌స్క్రిప్ట్ స్ట్రాంగ్లీ టైప్డ్. ఒక ఎన్విరాన్‌మెంట్ వేరియబుల్ ఏదైనా స్ట్రింగ్ లేదా ఖాళీగా ఉండవచ్చు, కాబట్టి ఒక ఎన్విరాన్‌మెంట్ వేరియబుల్ కోసం రకం `string | undefined`. అయినప్పటికీ, Viemలో ఒక కీ `0x${string}` (`0x` తరువాత ఒక స్ట్రింగ్)గా నిర్వచించబడింది. ఇక్కడ `PRIVATE_KEY` ఎన్విరాన్‌మెంట్ వేరియబుల్ ఆ రకంగా ఉంటుందని మేము టైప్‌స్క్రిప్ట్‌కు చెబుతున్నాము. అది కాకపోతే, మనకు రన్‌టైమ్ ఎర్రర్ వస్తుంది. + +[`privateKeyToAccount`](https://viem.sh/docs/accounts/privateKey) ఫంక్షన్ ఈ ప్రైవేట్ కీని ఉపయోగించి పూర్తి ఖాతా ఆబ్జెక్ట్‌ను సృష్టిస్తుంది. + +```typescript +const walletClient = createWalletClient({ + account, + chain: holesky, + transport: http(), +}) +``` + +తర్వాత, మేము ఖాతా ఆబ్జెక్ట్‌ను ఉపయోగించి ఒక [వాలెట్ క్లయింట్‌ను](https://viem.sh/docs/clients/wallet) సృష్టిస్తాము. ఈ క్లయింట్‌కు ఒక ప్రైవేట్ కీ మరియు చిరునామా ఉన్నాయి, కాబట్టి దీనిని లావాదేవీలను పంపడానికి ఉపయోగించవచ్చు. + +```typescript +const greeter = getContract({ + address: greeterAddress, + abi: greeterABI, + client: { public: publicClient, wallet: walletClient }, +}) +``` + +ఇప్పుడు మనకు అన్ని అవసరాలు ఉన్నాయి కాబట్టి, మనం చివరకు ఒక [కాంట్రాక్ట్ ఉదాహరణను](https://viem.sh/docs/contract/getContract) సృష్టించగలము. ఆన్‌చైన్ కాంట్రాక్ట్‌తో కమ్యూనికేట్ చేయడానికి మేము ఈ కాంట్రాక్ట్ ఉదాహరణను ఉపయోగిస్తాము. + +##### బ్లాక్‌చైన్ నుండి చదవడం + +```typescript +console.log(`Current greeting:`, await greeter.read.greet()) +``` + +చదవడానికి మాత్రమే ఉండే కాంట్రాక్ట్ ఫంక్షన్‌లు ([`view`](https://www.tutorialspoint.com/solidity/solidity_view_functions.htm) మరియు [`pure`](https://www.tutorialspoint.com/solidity/solidity_pure_functions.htm)) `read` క్రింద అందుబాటులో ఉంటాయి. ఈ సందర్భంలో, మేము దానిని గ్రీటింగ్‌ను తిరిగి ఇచ్చే [`greet`](https://eth-holesky.blockscout.com/address/0xB8f6460Dc30c44401Be26B0d6eD250873d8a50A6?tab=read_contract#cfae3217) ఫంక్షన్‌ను యాక్సెస్ చేయడానికి ఉపయోగిస్తాము. + +జావాస్క్రిప్ట్ సింగిల్-థ్రెడ్, కాబట్టి మనం సుదీర్ఘంగా నడిచే ప్రక్రియను ప్రారంభించినప్పుడు, దానిని [అసమకాలికంగా చేస్తామని పేర్కొనాలి](https://eloquentjavascript.net/11_async.html#h-XvLsfAhtsE). బ్లాక్‌చైన్‌ను కాల్ చేయడం, చదవడానికి మాత్రమే చేసే ఆపరేషన్ కోసం కూడా, కంప్యూటర్ మరియు బ్లాక్‌చైన్ నోడ్ మధ్య రౌండ్-ట్రిప్ అవసరం. ఫలితం కోసం కోడ్ `await` చేయాలని ఇక్కడ పేర్కొనడానికి ఇదే కారణం. + +ఇది ఎలా పనిచేస్తుందో మీరు ఆసక్తి కలిగి ఉంటే, మీరు [దాని గురించి ఇక్కడ చదవవచ్చు](https://www.w3schools.com/js/js_promise.asp), కానీ ఆచరణాత్మకంగా మీరు తెలుసుకోవలసినది ఏమిటంటే, మీరు ఎక్కువ సమయం తీసుకునే ఆపరేషన్‌ను ప్రారంభిస్తే, మీరు ఫలితాల కోసం `await` చేయాలి, మరియు ఇలా చేసే ఏ ఫంక్షన్‌ అయినా `async`గా ప్రకటించబడాలి. + +##### లావాదేవీలను జారీ చేయడం + +```typescript +const setGreeting = async (greeting: string): Promise => { +``` + +గ్రీటింగ్‌ను మార్చే లావాదేవీని జారీ చేయడానికి మీరు కాల్ చేసే ఫంక్షన్ ఇది. ఇది సుదీర్ఘమైన ఆపరేషన్ కాబట్టి, ఫంక్షన్ `async`గా ప్రకటించబడింది. అంతర్గత అమలు కారణంగా, ఏ `async` ఫంక్షన్ అయినా `Promise` ఆబ్జెక్ట్‌ను తిరిగి ఇవ్వాలి. ఈ సందర్భంలో, `Promise` అంటే `Promise`లో కచ్చితంగా ఏమి తిరిగి ఇవ్వబడుతుందో మేము పేర్కొనడం లేదు. + +```typescript +const txHash = await greeter.write.setGreeting([greeting]) +``` + +కాంట్రాక్ట్ ఉదాహరణ యొక్క `write` ఫీల్డ్ బ్లాక్‌చైన్ స్థితికి వ్రాసే అన్ని ఫంక్షన్‌లను కలిగి ఉంటుంది (లావాదేవీని పంపడం అవసరమైనవి), [`setGreeting`](https://eth-holesky.blockscout.com/address/0xB8f6460Dc30c44401Be26B0d6eD250873d8a50A6?tab=write_contract#a4136862) వంటివి. పారామితులు, ఏవైనా ఉంటే, జాబితాగా అందించబడతాయి, మరియు ఫంక్షన్ లావాదేవీ యొక్క హాష్‌ను తిరిగి ఇస్తుంది. + +```typescript + console.log(`Working on a fix, see https://eth-holesky.blockscout.com/tx/${txHash}`) + + return txHash +} +``` + +లావాదేవీ యొక్క హాష్‌ను నివేదించండి (దానిని వీక్షించడానికి బ్లాక్ ఎక్స్‌ప్లోరర్‌కు URL భాగంగా) మరియు దానిని తిరిగి ఇవ్వండి. + +##### ఈవెంట్‌లకు స్పందించడం + +```typescript +greeter.watchEvent.SetGreeting({ +``` + +[`watchEvent` ఫంక్షన్](https://viem.sh/docs/actions/public/watchEvent) ఒక ఈవెంట్ విడుదల అయినప్పుడు ఒక ఫంక్షన్ నడవాలని పేర్కొనడానికి మిమ్మల్ని అనుమతిస్తుంది. మీరు ఒకే రకమైన ఈవెంట్ (ఈ సందర్భంలో, `SetGreeting`) గురించి మాత్రమే శ్రద్ధ వహిస్తే, ఆ ఈవెంట్ రకానికి మిమ్మల్ని పరిమితం చేయడానికి మీరు ఈ సింటాక్స్‌ను ఉపయోగించవచ్చు. + +```typescript + onLogs: logs => { +``` + +`onLogs` ఫంక్షన్ లాగ్ ఎంట్రీలు ఉన్నప్పుడు కాల్ చేయబడుతుంది. Ethereumలో "లాగ్" మరియు "ఈవెంట్" సాధారణంగా పరస్పరం మార్చుకోబడతాయి. + +```typescript +console.log( + `Address ${logs[0].args.sender} changed the greeting to ${logs[0].args.greeting}` +) +``` + +అనేక ఈవెంట్‌లు ఉండవచ్చు, కానీ సరళత కోసం మేము మొదటి దాని గురించి మాత్రమే శ్రద్ధ వహిస్తాము. `logs[0].args` ఈవెంట్ యొక్క ఆర్గ్యుమెంట్లు, ఈ సందర్భంలో `sender` మరియు `greeting`. + +```typescript + if (logs[0].args.sender != account.address) + setGreeting(`${account.address} insists on it being Hello!`) + } +}) +``` + +పంపినవారు ఈ సర్వర్ _కాకపోతే_, గ్రీటింగ్‌ను మార్చడానికి `setGreeting` ఉపయోగించండి. + +#### `package.json` {#package-json} + +[ఈ ఫైల్](https://github.com/qbzzt/20240715-server-component/blob/main/package.json) [Node.js](https://nodejs.org/en) కాన్ఫిగరేషన్‌ను నియంత్రిస్తుంది. ఈ వ్యాసం ముఖ్యమైన నిర్వచనాలను మాత్రమే వివరిస్తుంది. + +```json +{ + "main": "dist/index.js", +``` + +ఈ నిర్వచనం ఏ జావాస్క్రిప్ట్ ఫైల్‌ను నడపాలో నిర్దేశిస్తుంది. + +```json + "scripts": { + "start": "tsc && node dist/app.js", + }, +``` + +స్క్రిప్ట్‌లు వివిధ అప్లికేషన్ చర్యలు. ఈ సందర్భంలో, మనకు ఉన్న ఏకైకది `start`, ఇది సర్వర్‌ను కంపైల్ చేసి, ఆపై నడుపుతుంది. `tsc` కమాండ్ `typescript` ప్యాకేజీలో భాగం మరియు టైప్‌స్క్రిప్ట్‌ను జావాస్క్రిప్ట్‌లోకి కంపైల్ చేస్తుంది. మీరు దానిని మాన్యువల్‌గా నడపాలనుకుంటే, అది `node_modules/.bin`లో ఉంది. రెండవ కమాండ్ సర్వర్‌ను నడుపుతుంది. + +```json + "type": "module", +``` + +అనేక రకాల జావాస్క్రిప్ట్ నోడ్ అప్లికేషన్‌లు ఉన్నాయి. `module` రకం టాప్ లెవల్ కోడ్‌లో `await` కలిగి ఉండటానికి మనకు అనుమతిస్తుంది, ఇది మీరు నెమ్మదిగా (మరియు అక్కడ అసమకాలిక) ఆపరేషన్‌లు చేసినప్పుడు ముఖ్యమైనది. + +```json + "devDependencies": { + "@types/node": "^20.14.2", + "typescript": "^5.4.5" + }, +``` + +ఇవి అభివృద్ధికి మాత్రమే అవసరమైన ప్యాకేజీలు. ఇక్కడ మాకు `typescript` అవసరం మరియు మేము దానిని Node.jsతో ఉపయోగిస్తున్నందున, మేము `process` వంటి నోడ్ వేరియబుల్స్ మరియు ఆబ్జెక్ట్‌ల కోసం రకాలను కూడా పొందుతున్నాము. [`^` సంజ్ఞామానం](https://github.com/npm/node-semver?tab=readme-ov-file#caret-ranges-123-025-004) అంటే ఆ వెర్షన్ లేదా బ్రేకింగ్ మార్పులు లేని అధిక వెర్షన్. వెర్షన్ నంబర్ల అర్థం గురించి మరింత సమాచారం కోసం [ఇక్కడ](https://semver.org) చూడండి. + +```json + "dependencies": { + "dotenv": "^16.4.5", + "viem": "2.14.1" + } +} +``` + +ఇవి `dist/app.js` నడుస్తున్నప్పుడు, రన్‌టైమ్‌లో అవసరమైన ప్యాకేజీలు. + +## ముగింపు {#conclusion} + +మేము ఇక్కడ సృష్టించిన కేంద్రీకృత సర్వర్ దాని పనిని చేస్తుంది, ఇది ఒక వినియోగదారుడికి ఏజెంట్‌గా పనిచేయడం. డాప్ పని చేస్తూనే ఉండాలని కోరుకునే మరియు గ్యాస్ ఖర్చు చేయడానికి ఇష్టపడే ఎవరైనా తమ సొంత చిరునామాతో సర్వర్ యొక్క కొత్త ఉదాహరణను నడపవచ్చు. + +అయినప్పటికీ, కేంద్రీకృత సర్వర్ యొక్క చర్యలను సులభంగా ధృవీకరించగలిగినప్పుడు మాత్రమే ఇది పనిచేస్తుంది. కేంద్రీకృత సర్వర్‌లో ఏదైనా రహస్య స్థితి సమాచారం ఉంటే, లేదా కష్టమైన గణనలను నడిపితే, అది మీరు అప్లికేషన్‌ను ఉపయోగించడానికి నమ్మకం అవసరమైన కేంద్రీకృత ఎంటిటీ, ఇది ఖచ్చితంగా బ్లాక్‌చైన్‌లు నివారించడానికి ప్రయత్నిస్తాయి. భవిష్యత్ వ్యాసంలో ఈ సమస్యను అధిగమించడానికి [జీరో-నాలెడ్జ్ ప్రూఫ్‌లను](/zero-knowledge-proofs) ఎలా ఉపయోగించాలో చూపించాలని నేను ప్లాన్ చేస్తున్నాను. + +[నా మరిన్ని పనుల కోసం ఇక్కడ చూడండి](https://cryptodocguy.pro/). diff --git a/public/content/translations/te/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md b/public/content/translations/te/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md new file mode 100644 index 00000000000..f3bcfb1f3ef --- /dev/null +++ b/public/content/translations/te/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md @@ -0,0 +1,92 @@ +--- +title: "జావాస్క్రిప్ట్‌లో ఇతీరియము బ్లాక్ చైనును ఉపయోగించడానికి web3.js ను ఏర్పాటు చేయండి" +description: "జావాస్క్రిప్ట్ అప్లికేషన్ల నుండి ఇతీరియము బ్లాక్ చైనుతో సంప్రదించడానికి web3.js లైబ్రరీని ఎలా ఏర్పాటు చేయాలో మరియు కాన్ఫిగర్ చేయాలో తెలుసుకోండి." +author: "jdourlens" +tags: [ "web3.js", "జావాస్క్రిప్ట్" ] +skill: beginner +lang: te +published: 2020-04-11 +source: EthereumDev +sourceUrl: https://ethereumdev.io/setup-web3js-to-use-the-ethereum-blockchain-in-javascript/ +address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE" +--- + +ఈ ట్యుటోరియల్‌లో, ఇతీరియము బ్లాక్ చైనుతో సంప్రదించడానికి [web3.js](https://web3js.readthedocs.io/)తో ఎలా ప్రారంభించాలో చూద్దాం. బ్లాక్ చైను నుండి డేటాను చదవడానికి లేదా లావాదేవీలు చేయడానికి మరియు స్మార్ట్ కాంట్రాక్ట్‌లను కూడా అమలు చేయడానికి ఫ్రంటెండ్‌లు మరియు బ్యాకెండ్‌లు రెండింటిలోనూ Web3.js ఉపయోగించవచ్చు. + +మొదటి దశ మీ ప్రాజెక్ట్‌లో web3.js ను చేర్చడం. వెబ్ పేజీలో దాన్ని ఉపయోగించడానికి, మీరు JSDeliver వంటి CDNని ఉపయోగించి లైబ్రరీని నేరుగా దిగుమతి చేసుకోవచ్చు. + +```html + +``` + +బిల్డ్‌ను ఉపయోగించే మీ బ్యాకెండ్ లేదా ఫ్రంటెండ్ ప్రాజెక్ట్‌లో ఉపయోగించడానికి మీరు లైబ్రరీని ఇన్‌స్టాల్ చేయడాన్ని ఇష్టపడితే, మీరు దానిని npm ఉపయోగించి ఇన్‌స్టాల్ చేయవచ్చు: + +```bash +npm install web3 --save +``` + +తర్వాత Web3.js ను Node.js స్క్రిప్ట్ లేదా Browserify ఫ్రంటెండ్ ప్రాజెక్ట్‌లోకి దిగుమతి చేయడానికి, మీరు కింది జావాస్క్రిప్ట్ లైన్‌ను ఉపయోగించవచ్చు: + +```js +const Web3 = require("web3") +``` + +ఇప్పుడు మనం ప్రాజెక్ట్‌లో లైబ్రరీని చేర్చాము కాబట్టి మనం దానిని ప్రారంభించాలి. మీ ప్రాజెక్ట్ బ్లాక్ చైనుతో సంభాషించగలగాలి. చాలా ఇతీరియము లైబ్రరీలు RPC కాల్స్ ద్వారా ఒక [నోడ్](/developers/docs/nodes-and-clients/)తో సంభాషిస్తాయి. మన Web3 ప్రొవైడర్‌ను ప్రారంభించడానికి, మనం ప్రొవైడర్ యొక్క URL ను కన్స్ట్రక్టర్‌గా పాస్ చేస్తూ ఒక Web3 ఉదాహరణను ఇన్‌స్టాంటియేట్ చేస్తాము. మీ కంప్యూటర్‌లో నడుస్తున్న నోడ్ లేదా [గనాచే ఉదాహరణ](https://ethereumdev.io/testing-your-smart-contract-with-existing-protocols-ganache-fork/) ఉంటే అది ఇలా కనిపిస్తుంది: + +```js +const web3 = new Web3("http://localhost:8545") +``` + +మీరు హోస్ట్ చేసిన నోడ్‌ను నేరుగా యాక్సెస్ చేయాలనుకుంటే, మీరు [ఒక సేవ వలె నోడ్స్](/developers/docs/nodes-and-clients/nodes-as-a-service)లో ఎంపికలను కనుగొనవచ్చు. + +```js +const web3 = new Web3("https://cloudflare-eth.com") +``` + +మనం మన Web3 ఉదాహరణను సరిగ్గా కాన్ఫిగర్ చేశామని పరీక్షించడానికి, మనం `getBlockNumber` ఫంక్షన్‌ను ఉపయోగించి తాజా బ్లాక్ నంబర్‌ను తిరిగి పొందడానికి ప్రయత్నిస్తాము. ఈ ఫంక్షన్ ఒక పారామీటర్‌గా కాల్‌బ్యాక్‌ను అంగీకరిస్తుంది మరియు బ్లాక్ నంబర్‌ను పూర్ణాంకంగా అందిస్తుంది. + +```js +var Web3 = require("web3") +const web3 = new Web3("https://cloudflare-eth.com") + +web3.eth.getBlockNumber(function (error, result) { + console.log(result) +}) +``` + +మీరు ఈ ప్రోగ్రామ్‌ను అమలు చేస్తే, ఇది కేవలం తాజా బ్లాక్ నంబర్‌ను ప్రింట్ చేస్తుంది: బ్లాక్ చైను యొక్క అగ్రస్థానం. మీ కోడ్‌లో కాల్‌బ్యాక్‌లను నెస్ట్ చేయడాన్ని నివారించడానికి మీరు `await/async` ఫంక్షన్ కాల్స్‌ను కూడా ఉపయోగించవచ్చు: + +```js +async function getBlockNumber() { + const latestBlockNumber = await web3.eth.getBlockNumber() + console.log(latestBlockNumber) + return latestBlockNumber +} + +getBlockNumber() +``` + +మీరు Web3 ఉదాహరణలో అందుబాటులో ఉన్న అన్ని ఫంక్షన్లను [అధికారిక web3.js డాక్యుమెంటేషన్](https://docs.web3js.org/)లో చూడవచ్చు. + +చాలా Web3 లైబ్రరీలు అసమకాలికమైనవి ఎందుకంటే నేపథ్యంలో లైబ్రరీ నోడ్‌కు JSON-RPC కాల్స్ చేస్తుంది, అది ఫలితాన్ని తిరిగి పంపుతుంది. + + + +మీరు బ్రౌజర్‌లో పని చేస్తున్నట్లయితే, కొన్ని వాలెట్‌లు నేరుగా ఒక Web3 ఉదాహరణను ఇంజెక్ట్ చేస్తాయి మరియు లావాదేవీలు చేయడానికి మీరు వినియోగదారుడి ఇతీరియము చిరునామాతో సంప్రదించాలని ప్లాన్ చేస్తే, సాధ్యమైనప్పుడల్లా దాన్ని ఉపయోగించడానికి ప్రయత్నించాలి. + +ఒక MetaMask వాలెట్ అందుబాటులో ఉందో లేదో గుర్తించడానికి మరియు అది ఉంటే దాన్ని ప్రారంభించడానికి ప్రయత్నించడానికి ఇక్కడ స్నిప్పెట్ ఉంది. ఇది తర్వాత వినియోగదారుడి బ్యాలెన్స్‌ను చదవడానికి మరియు మీరు వారిచే ఇతీరియము బ్లాక్ చైనుపై చేయించాలనుకుంటున్న లావాదేవీలను ధృవీకరించడానికి వారిని అనుమతిస్తుంది: + +```js +if (window.ethereum != null) { + state.web3 = new Web3(window.ethereum) + try { + // అవసరమైతే ఖాతా యాక్సెస్‌ను అభ్యర్థించండి + await window.ethereum.enable() + // ఖాతాలు ఇప్పుడు బహిర్గతం చేయబడ్డాయి + } catch (error) { + // వినియోగదారుడు ఖాతా యాక్సెస్‌ను నిరాకరించారు... + } +} +``` + +[Ethers.js](https://docs.ethers.io/) వంటి web3.js కు ప్రత్యామ్నాయాలు ఉన్నాయి మరియు సాధారణంగా కూడా ఉపయోగించబడతాయి. తదుపరి ట్యుటోరియల్‌లో మనం [బ్లాక్ చైనుపై కొత్తగా వచ్చే బ్లాక్‌లను సులభంగా ఎలా వినాలి మరియు వాటిలో ఏముందో ఎలా చూడాలి](https://ethereumdev.io/listening-to-new-transactions-happening-on-the-blockchain/) అని చూద్దాం. diff --git a/public/content/translations/te/developers/tutorials/short-abi/index.md b/public/content/translations/te/developers/tutorials/short-abi/index.md new file mode 100644 index 00000000000..169d01739bc --- /dev/null +++ b/public/content/translations/te/developers/tutorials/short-abi/index.md @@ -0,0 +1,580 @@ +--- +title: "కాల్‌డేటా ఆప్టిమైజేషన్ కోసం చిన్న ABIలు" +description: "ఆప్టిమిస్టిక్ రోలప్‌ల కోసం స్మార్ట్ కాంట్రాక్ట్‌లను ఆప్టిమైజ్ చేయడం" +author: Ori Pomerantz +lang: te +tags: [ "లేయర్ 2" ] +skill: intermediate +published: 2022-04-01 +--- + +## పరిచయం {#introduction} + +ఈ ఆర్టికల్‌లో, మీరు [ఆప్టిమిస్టిక్ రోలప్‌లు](/developers/docs/scaling/optimistic-rollups), వాటిపై లావాదేవీల ఖర్చు, మరియు Ethereum మెయిన్‌నెట్‌లో కంటే భిన్నమైన విషయాల కోసం ఆప్టిమైజ్ చేయడానికి ఆ విభిన్న వ్యయ నిర్మాణం మనల్ని ఎలా కోరుతుందో తెలుసుకుంటారు. +ఈ ఆప్టిమైజేషన్‌ను ఎలా అమలు చేయాలో కూడా మీరు తెలుసుకుంటారు. + +### పూర్తి బహిర్గతం {#full-disclosure} + +నేను పూర్తి సమయం [Optimism](https://www.optimism.io/) ఉద్యోగిని, కాబట్టి ఈ ఆర్టికల్‌లోని ఉదాహరణలు Optimismలో రన్ అవుతాయి. +అయితే, ఇక్కడ వివరించిన టెక్నిక్ ఇతర రోలప్‌లకు కూడా అలాగే పని చేయాలి. + +### పదజాలం {#terminology} + +రోలప్‌ల గురించి చర్చిస్తున్నప్పుడు, 'లేయర్ 1' (L1) అనే పదం మెయిన్‌నెట్, అంటే ఉత్పత్తి Ethereum నెట్‌వర్క్ కోసం ఉపయోగించబడుతుంది. +'లేయర్ 2' (L2) అనే పదం రోలప్ లేదా భద్రత కోసం L1పై ఆధారపడి ఉండే ఏదైనా ఇతర సిస్టమ్ కోసం ఉపయోగించబడుతుంది, కానీ దాని ప్రాసెసింగ్‌లో ఎక్కువ భాగాన్ని ఆఫ్‌చెయిన్‌లో చేస్తుంది. + +## L2 లావాదేవీల ఖర్చును మనం ఇంకా ఎలా తగ్గించగలం? {#how-can-we-further-reduce-the-cost-of-L2-transactions} + +[ఆప్టిమిస్టిక్ రోలప్‌లు](/developers/docs/scaling/optimistic-rollups) ప్రతి చారిత్రక లావాదేవీ రికార్డును భద్రపరచాలి, తద్వారా ఎవరైనా వాటి ద్వారా వెళ్లి ప్రస్తుత స్థితి సరైనదని ధృవీకరించగలరు. +Ethereum మెయిన్‌నెట్‌లోకి డేటాను పొందడానికి చౌకైన మార్గం దానిని కాల్‌డేటాగా వ్రాయడం. +ఈ పరిష్కారాన్ని [Optimism](https://help.optimism.io/hc/en-us/articles/4413163242779-What-is-a-rollup-) మరియు [Arbitrum](https://developer.offchainlabs.com/docs/rollup_basics#intro-to-rollups) రెండూ ఎంచుకున్నాయి. + +### L2 లావాదేవీల ఖర్చు {#cost-of-l2-transactions} + +L2 లావాదేవీల ఖర్చు రెండు భాగాలతో కూడి ఉంటుంది: + +1. L2 ప్రాసెసింగ్, ఇది సాధారణంగా చాలా చౌకగా ఉంటుంది +2. L1 నిల్వ, ఇది మెయిన్‌నెట్ గ్యాస్ ఖర్చులకు ముడిపడి ఉంటుంది + +నేను ఇది వ్రాస్తున్నప్పుడు, Optimismలో L2 గ్యాస్ ధర 0.001 [Gwei](/developers/docs/gas/#pre-london). +మరోవైపు, L1 గ్యాస్ ధర సుమారుగా 40 gwei. +[మీరు ప్రస్తుత ధరలను ఇక్కడ చూడవచ్చు](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m). + +ఒక బైట్ కాల్‌డేటాకు 4 గ్యాస్ (అది సున్నా అయితే) లేదా 16 గ్యాస్ (ఏదైనా ఇతర విలువ అయితే) ఖర్చు అవుతుంది. +EVMలో అత్యంత ఖరీదైన కార్యకలాపాలలో ఒకటి నిల్వకు వ్రాయడం. +L2లో నిల్వకు 32-బైట్ పదాన్ని వ్రాయడానికి గరిష్ట ఖర్చు 22100 గ్యాస్. ప్రస్తుతం, ఇది 22.1 gwei. +కాబట్టి మనం కాల్‌డేటా యొక్క ఒక్క సున్నా బైట్‌ను ఆదా చేయగలిగితే, మనం నిల్వకు సుమారు 200 బైట్‌లను వ్రాయగలుగుతాము మరియు ఇప్పటికీ లాభపడతాము. + +### ABI {#the-abi} + +లావాదేవీలలో అధిక భాగం బాహ్య-యాజమాన్య ఖాతా నుండి ఒక కాంట్రాక్ట్‌ను యాక్సెస్ చేస్తాయి. +చాలా కాంట్రాక్ట్‌లు Solidityలో వ్రాయబడ్డాయి మరియు వాటి డేటా ఫీల్డ్‌ను [అప్లికేషన్ బైనరీ ఇంటర్‌ఫేస్ (ABI)](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding) ప్రకారం అన్వయిస్తాయి. + +అయితే, ABI L1 కోసం రూపొందించబడింది, ఇక్కడ ఒక బైట్ కాల్‌డేటా సుమారుగా నాలుగు అంకగణిత కార్యకలాపాలతో సమానంగా ఖర్చవుతుంది, L2లో కాదు, ఇక్కడ ఒక బైట్ కాల్‌డేటా వెయ్యి కంటే ఎక్కువ అంకగణిత కార్యకలాపాలకు ఖర్చవుతుంది. +కాల్‌డేటా ఈ విధంగా విభజించబడింది: + +| విభాగం | పొడవు | బైట్‌లు | వృధా అయిన బైట్‌లు | వృధా అయిన గ్యాస్ | అవసరమైన బైట్‌లు | అవసరమైన గ్యాస్ | +| ------------------ | ----: | ------: | ----------------: | ---------------: | --------------: | -------------: | +| ఫంక్షన్ సెలెక్టర్ | 4 | 0-3 | 3 | 48 | 1 | 16 | +| సున్నాలు | 12 | 4-15 | 12 | 48 | 0 | 0 | +| గమ్యస్థాన చిరునామా | 20 | 16-35 | 0 | 0 | 20 | 320 | +| మొత్తం | 32 | 36-67 | 17 | 64 | 15 | 240 | +| మొత్తం | 68 | | | 160 | | 576 | + +వివరణ: + +- **ఫంక్షన్ సెలెక్టర్**: కాంట్రాక్ట్‌లో 256 కంటే తక్కువ ఫంక్షన్‌లు ఉన్నాయి, కాబట్టి మనం వాటిని ఒకే బైట్‌తో వేరు చేయవచ్చు. + ఈ బైట్‌లు సాధారణంగా సున్నా కానివి మరియు అందువల్ల [పదహారు గ్యాస్ ఖర్చు](https://eips.ethereum.org/EIPS/eip-2028) అవుతుంది. +- **సున్నాలు**: ఈ బైట్‌లు ఎల్లప్పుడూ సున్నాగా ఉంటాయి, ఎందుకంటే ఇరవై-బైట్ చిరునామాను నిల్వ చేయడానికి ముప్పై-రెండు-బైట్ పదం అవసరం లేదు. + సున్నాను కలిగి ఉన్న బైట్‌లకు నాలుగు గ్యాస్ ఖర్చవుతుంది ([పసుపు పత్రాన్ని చూడండి](https://ethereum.github.io/yellowpaper/paper.pdf), అనుబంధం G, + p. 27, `G``txdatazero` కోసం విలువ). +- **మొత్తం**: ఈ కాంట్రాక్ట్‌లో `డెసిమల్స్` పద్దెనిమిది (సాధారణ విలువ) అని మరియు మేము బదిలీ చేసే టోకెన్ల గరిష్ట మొత్తం 1018 అని మనం ఊహించుకుంటే, మనం 1036 గరిష్ట మొత్తాన్ని పొందుతాము. + 25615 > 1036, కాబట్టి పదిహేను బైట్‌లు సరిపోతాయి. + +L1లో 160 గ్యాస్ వృధా కావడం సాధారణంగా చాలా తక్కువ. ఒక లావాదేవీకి కనీసం [21,000 గ్యాస్](https://yakkomajuri.medium.com/blockchain-definition-of-the-week-ethereum-gas-2f976af774ed) ఖర్చవుతుంది, కాబట్టి అదనపు 0.8% పట్టింపు లేదు. +అయితే, L2లో, విషయాలు భిన్నంగా ఉంటాయి. లావాదేవీ మొత్తం ఖర్చు దాదాపుగా దానిని L1కి వ్రాయడమే. +లావాదేవీ కాల్‌డేటాతో పాటు, 109 బైట్ల లావాదేవీ హెడర్ (గమ్యస్థాన చిరునామా, సంతకం మొదలైనవి) ఉంటుంది. +అందువల్ల మొత్తం ఖర్చు `109*16+576+160=2480`, మరియు మనం అందులో సుమారు 6.5% వృధా చేస్తున్నాము. + +## మీరు గమ్యస్థానాన్ని నియంత్రించనప్పుడు ఖర్చులను తగ్గించడం {#reducing-costs-when-you-dont-control-the-destination} + +గమ్యస్థాన కాంట్రాక్ట్‌పై మీకు నియంత్రణ లేదని అనుకుంటే, మీరు ఇప్పటికీ [దీని](https://github.com/qbzzt/ethereum.org-20220330-shortABI) లాంటి పరిష్కారాన్ని ఉపయోగించవచ్చు. +సంబంధిత ఫైళ్లను చూద్దాం. + +### Token.sol {#token-sol} + +[ఇది గమ్యస్థాన కాంట్రాక్ట్](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/Token.sol). +ఇది ఒక అదనపు ఫీచర్‌తో కూడిన ప్రామాణిక ERC-20 కాంట్రాక్ట్. +ఈ `faucet` ఫంక్షన్ ఏ వినియోగదారుడైనా ఉపయోగించడానికి కొన్ని టోకెన్‌లను పొందడానికి అనుమతిస్తుంది. +ఇది ఉత్పత్తి ERC-20 కాంట్రాక్ట్‌ను పనికిరానిదిగా చేస్తుంది, కానీ ఒక ERC-20 కేవలం పరీక్షను సులభతరం చేయడానికి ఉన్నప్పుడు ఇది జీవితాన్ని సులభతరం చేస్తుంది. + +```solidity + /** + * @dev కాలర్‌కు ఆడుకోవడానికి 1000 టోకెన్‌లను ఇస్తుంది + */ + function faucet() external { + _mint(msg.sender, 1000); + } // function faucet +``` + +### CalldataInterpreter.sol {#calldatainterpreter-sol} + +[ఇది తక్కువ కాల్‌డేటాతో లావాదేవీలు కాల్ చేయాల్సిన కాంట్రాక్ట్](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/CalldataInterpreter.sol). +దాన్ని లైన్ వారీగా చూద్దాం. + +```solidity +//SPDX-License-Identifier: Unlicense +pragma solidity ^0.8.0; + + +import { OrisUselessToken } from "./Token.sol"; +``` + +దాన్ని ఎలా కాల్ చేయాలో తెలుసుకోవడానికి మనకు టోకెన్ ఫంక్షన్ అవసరం. + +```solidity +contract CalldataInterpreter { + + OrisUselessToken public immutable token; +``` + +మనం ప్రాక్సీగా ఉన్న టోకెన్ చిరునామా. + +```solidity + /** + * @dev టోకెన్ చిరునామాను పేర్కొనండి + * @param tokenAddr_ ERC-20 కాంట్రాక్ట్ చిరునామా + */ + constructor( + address tokenAddr_ + ) { + token = OrisUselessToken(tokenAddr_); + } // constructor +``` + +టోకెన్ చిరునామా మాత్రమే మనం పేర్కొనవలసిన పారామీటర్. + +```solidity + function calldataVal(uint startByte, uint length) + private pure returns (uint) { +``` + +కాల్‌డేటా నుండి ఒక విలువను చదవండి. + +```solidity + uint _retVal; + + require(length < 0x21, + "calldataVal పొడవు పరిమితి 32 బైట్లు"); + + require(length + startByte <= msg.data.length, + "calldataVal కాల్‌డేటాసైజ్ దాటి చదవడానికి ప్రయత్నిస్తోంది"); +``` + +మనం ఒకే 32-బైట్ (256-బిట్) పదాన్ని మెమరీకి లోడ్ చేయబోతున్నాము మరియు మనకు కావలసిన ఫీల్డ్‌లో భాగం కాని బైట్‌లను తీసివేయబోతున్నాము. +ఈ అల్గోరిథం 32 బైట్ల కంటే ఎక్కువ పొడవు ఉన్న విలువల కోసం పని చేయదు మరియు వాస్తవానికి మనం కాల్‌డేటా చివరిని దాటి చదవలేము. +L1లో గ్యాస్‌ను ఆదా చేయడానికి ఈ పరీక్షలను దాటవేయడం అవసరం కావచ్చు, కానీ L2లో గ్యాస్ చాలా చౌకగా ఉంటుంది, ఇది మనం ఆలోచించగల ఏవైనా శానిటీ చెక్‌లను అనుమతిస్తుంది. + +```solidity + assembly { + _retVal := calldataload(startByte) + } +``` + +మనం `fallback()` (క్రింద చూడండి) కు కాల్ నుండి డేటాను కాపీ చేసి ఉండవచ్చు, కానీ EVM యొక్క అసెంబ్లీ భాష అయిన [Yul](https://docs.soliditylang.org/en/v0.8.12/yul.html)ను ఉపయోగించడం సులభం. + +ఇక్కడ మనం `startByte` నుండి `startByte+31` వరకు బైట్‌లను స్టాక్‌లోకి చదవడానికి [CALLDATALOAD ఆప్‌కోడ్](https://www.evm.codes/#35)ను ఉపయోగిస్తాము. +సాధారణంగా, Yulలోని ఒక ఆప్‌కోడ్ యొక్క సింటాక్స్ `(,...)`. + +```solidity + _retVal = _retVal >> (256-length*8); +``` + +అత్యంత ముఖ్యమైన `length` బైట్‌లు మాత్రమే ఫీల్డ్‌లో భాగంగా ఉంటాయి, కాబట్టి ఇతర విలువలను వదిలించుకోవడానికి మేము [రైట్-షిఫ్ట్](https://en.wikipedia.org/wiki/Logical_shift) చేస్తాము. +ఇది విలువను ఫీల్డ్ యొక్క కుడి వైపుకు తరలించే అదనపు ప్రయోజనాన్ని కలిగి ఉంది, కాబట్టి ఇది విలువ 256something రెట్లు కాకుండా స్వయంగా విలువ అవుతుంది. + +```solidity + return _retVal; + } + + + fallback() external { +``` + +Solidity కాంట్రాక్ట్‌కు చేసిన కాల్ ఏ ఫంక్షన్ సంతకాలతో సరిపోలకపోతే, అది [the `fallback()` ఫంక్షన్](https://docs.soliditylang.org/en/v0.8.12/contracts.html#fallback-function)ను కాల్ చేస్తుంది (ఒకటి ఉందని ఊహిస్తూ). +`CalldataInterpreter` విషయంలో, _ఏ_ కాల్ అయినా ఇక్కడికి వస్తుంది ఎందుకంటే ఇతర `external` లేదా `public` ఫంక్షన్‌లు లేవు. + +```solidity + uint _func; + + _func = calldataVal(0, 1); +``` + +కాల్‌డేటా యొక్క మొదటి బైట్‌ను చదవండి, ఇది మనకు ఫంక్షన్‌ను తెలియజేస్తుంది. +ఇక్కడ ఒక ఫంక్షన్ అందుబాటులో లేకపోవడానికి రెండు కారణాలు ఉన్నాయి: + +1. `pure` లేదా `view`గా ఉండే ఫంక్షన్‌లు స్థితిని మార్చవు మరియు గ్యాస్ ఖర్చు చేయవు (ఆఫ్‌చెయిన్‌లో కాల్ చేసినప్పుడు). + వాటి గ్యాస్ ధరను తగ్గించడానికి ప్రయత్నించడంలో అర్థం లేదు. +2. [`msg.sender`](https://docs.soliditylang.org/en/v0.8.12/units-and-global-variables.html#block-and-transaction-properties)పై ఆధారపడే ఫంక్షన్‌లు. + `msg.sender` యొక్క విలువ కాలర్ కాదు, `CalldataInterpreter` యొక్క చిరునామా అవుతుంది. + +దురదృష్టవశాత్తు, [ERC-20 స్పెసిఫికేషన్‌లను చూస్తే](https://eips.ethereum.org/EIPS/eip-20), ఇది కేవలం ఒక ఫంక్షన్, `transfer`ను మాత్రమే వదిలివేస్తుంది. +ఇది మనకు కేవలం రెండు ఫంక్షన్‌లను మాత్రమే మిగిల్చింది: `transfer` (ఎందుకంటే మనం `transferFrom`ని కాల్ చేయవచ్చు) మరియు `faucet` (ఎందుకంటే మనల్ని పిలిచిన వారికి టోకెన్‌లను తిరిగి బదిలీ చేయవచ్చు). + +```solidity + // కాల్‌డేటా నుండి సమాచారాన్ని ఉపయోగించి + // టోకెన్ యొక్క స్థితిని మార్చే పద్ధతులను కాల్ చేయండి + + // ఫాసెట్ + if (_func == 1) { +``` + +`faucet()`కు కాల్, దీనికి పారామితులు లేవు. + +```solidity + token.faucet(); + token.transfer(msg.sender, + token.balanceOf(address(this))); + } +``` + +మనం `token.faucet()`ని కాల్ చేసిన తర్వాత మనకు టోకెన్‌లు వస్తాయి. అయితే, ప్రాక్సీ కాంట్రాక్ట్‌గా, మాకు టోకెన్‌లు **అవసరం** లేదు. +మనల్ని పిలిచిన EOA (బాహ్యంగా యాజమాన్యంలోని ఖాతా) లేదా కాంట్రాక్ట్‌కు అవసరం. +కాబట్టి మనం మన టోకెన్లన్నింటినీ మనల్ని పిలిచిన వారికి బదిలీ చేస్తాము. + +```solidity + // బదిలీ (దానికి మాకు అనుమతి ఉందని ఊహించుకోండి) + if (_func == 2) { +``` + +టోకెన్లను బదిలీ చేయడానికి రెండు పారామితులు అవసరం: గమ్యస్థాన చిరునామా మరియు మొత్తం. + +```solidity + token.transferFrom( + msg.sender, +``` + +కాలర్‌లు వారి స్వంత టోకెన్‌లను బదిలీ చేయడానికి మాత్రమే మేము అనుమతిస్తాము + +```solidity + address(uint160(calldataVal(1, 20))), +``` + +గమ్యస్థాన చిరునామా బైట్ #1 వద్ద ప్రారంభమవుతుంది (బైట్ #0 ఫంక్షన్). +చిరునామాగా, ఇది 20-బైట్ల పొడవు ఉంటుంది. + +```solidity + calldataVal(21, 2) +``` + +ఈ ప్రత్యేక కాంట్రాక్ట్ కోసం, ఎవరైనా బదిలీ చేయాలనుకునే గరిష్ట సంఖ్యలో టోకెన్‌లు రెండు బైట్‌లలో (65536 కంటే తక్కువ) సరిపోతాయని మేము ఊహిస్తాము. + +```solidity + ); + } +``` + +మొత్తంమీద, బదిలీకి 35 బైట్ల కాల్‌డేటా పడుతుంది: + +| విభాగం | పొడవు | బైట్‌లు | +| ------------------ | ----: | ------: | +| ఫంక్షన్ సెలెక్టర్ | 1 | 0 | +| గమ్యస్థాన చిరునామా | 32 | 1-32 | +| మొత్తం | 2 | 33-34 | + +```solidity + } // fallback + +} // contract CalldataInterpreter +``` + +### test.js {#test-js} + +[ఈ జావాస్క్రిప్ట్ యూనిట్ టెస్ట్](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/test/test.js) ఈ మెకానిజంను ఎలా ఉపయోగించాలో (మరియు అది సరిగ్గా పనిచేస్తుందో లేదో ఎలా ధృవీకరించాలో) చూపిస్తుంది. +మీకు [chai](https://www.chaijs.com/) మరియు [ethers](https://docs.ethers.io/v5/) గురించి అర్థమైందని నేను భావిస్తున్నాను మరియు కాంట్రాక్ట్‌కు ప్రత్యేకంగా వర్తించే భాగాలను మాత్రమే వివరిస్తాను. + +```js +const { expect } = require("chai"); + +describe("CalldataInterpreter", function () { + it("Should let us use tokens", async function () { + const Token = await ethers.getContractFactory("OrisUselessToken") + const token = await Token.deploy() + await token.deployed() + console.log("Token addr:", token.address) + + const Cdi = await ethers.getContractFactory("CalldataInterpreter") + const cdi = await Cdi.deploy(token.address) + await cdi.deployed() + console.log("CalldataInterpreter addr:", cdi.address) + + const signer = await ethers.getSigner() +``` + +రెండు కాంట్రాక్టులను డిప్లోయ్ చేయడం ద్వారా మేము ప్రారంభిస్తాము. + +```javascript + // Get tokens to play with + const faucetTx = { +``` + +లావాదేవీలను సృష్టించడానికి మేము సాధారణంగా ఉపయోగించే ఉన్నత-స్థాయి ఫంక్షన్‌లను (ఉదాహరణకు `token.faucet()`) ఉపయోగించలేము, ఎందుకంటే మేము ABIని అనుసరించడం లేదు. +బదులుగా, మనమే లావాదేవీని నిర్మించి, ఆపై పంపాలి. + +```javascript + to: cdi.address, + data: "0x01" +``` + +లావాదేవీ కోసం మనం అందించాల్సిన రెండు పారామితులు ఉన్నాయి: + +1. `to`, గమ్యస్థాన చిరునామా. + ఇది కాల్‌డేటా ఇంటర్‌ప్రెటర్ కాంట్రాక్ట్. +2. `data`, పంపాల్సిన కాల్‌డేటా. + ఫాసెట్ కాల్ విషయంలో, డేటా ఒకే బైట్, `0x01`. + +```javascript + } + await (await signer.sendTransaction(faucetTx)).wait() +``` + +మేము [సైనర్ యొక్క `sendTransaction` పద్ధతిని](https://docs.ethers.io/v5/api/signer/#Signer-sendTransaction) కాల్ చేస్తాము ఎందుకంటే మేము ఇప్పటికే గమ్యాన్ని (`faucetTx.to`) పేర్కొన్నాము మరియు లావాదేవీపై సంతకం చేయాలి. + +```javascript +// Check the faucet provides the tokens correctly +expect(await token.balanceOf(signer.address)).to.equal(1000) +``` + +ఇక్కడ మేము బ్యాలెన్స్‌ని ధృవీకరిస్తాము. +`view` ఫంక్షన్లపై గ్యాస్ ఆదా చేయాల్సిన అవసరం లేదు, కాబట్టి మేము వాటిని సాధారణంగా నడుపుతాము. + +```javascript +// Give the CDI an allowance (approvals cannot be proxied) +const approveTX = await token.approve(cdi.address, 10000) +await approveTX.wait() +expect(await token.allowance(signer.address, cdi.address)).to.equal(10000) +``` + +బదిలీలు చేయడానికి కాల్‌డేటా ఇంటర్‌ప్రెటర్‌కు అనుమతి ఇవ్వండి. + +```javascript +// Transfer tokens +const destAddr = "0xf5a6ead936fb47f342bb63e676479bddf26ebe1d" +const transferTx = { + to: cdi.address, + data: "0x02" + destAddr.slice(2, 42) + "0100", +} +``` + +బదిలీ లావాదేవీని సృష్టించండి. మొదటి బైట్ "0x02", తర్వాత గమ్యస్థాన చిరునామా, మరియు చివరగా మొత్తం (0x0100, ఇది దశాంశంలో 256). + +```javascript + await (await signer.sendTransaction(transferTx)).wait() + + // Check that we have 256 tokens less + expect (await token.balanceOf(signer.address)).to.equal(1000-256) + + // And that our destination got them + expect (await token.balanceOf(destAddr)).to.equal(256) + }) // it +}) // describe +``` + +## మీరు గమ్యస్థాన కాంట్రాక్ట్‌ను నియంత్రించినప్పుడు ఖర్చులను తగ్గించడం {#reducing-the-cost-when-you-do-control-the-destination-contract} + +మీరు గమ్యస్థాన కాంట్రాక్ట్‌పై నియంత్రణ కలిగి ఉంటే, మీరు కాల్‌డేటా ఇంటర్‌ప్రెటర్‌ను విశ్వసించే కారణంగా `msg.sender` తనిఖీలను దాటవేసే ఫంక్షన్‌లను సృష్టించవచ్చు. +[ఇది ఎలా పనిచేస్తుందో మీరు ఇక్కడ ఒక ఉదాహరణను `control-contract` బ్రాంచ్‌లో చూడవచ్చు](https://github.com/qbzzt/ethereum.org-20220330-shortABI/tree/control-contract). + +కాంట్రాక్ట్ బాహ్య లావాదేవీలకు మాత్రమే ప్రతిస్పందిస్తున్నట్లయితే, మనం కేవలం ఒక కాంట్రాక్ట్‌తో సరిపెట్టుకోవచ్చు. +అయితే, అది [కంపోజబిలిటీ](/developers/docs/smart-contracts/composability/)ని దెబ్బతీస్తుంది. +సాధారణ ERC-20 కాల్స్‌కు ప్రతిస్పందించే కాంట్రాక్ట్, మరియు చిన్న కాల్ డేటాతో లావాదేవీలకు ప్రతిస్పందించే మరొక కాంట్రాక్ట్ ఉండటం చాలా మంచిది. + +### Token.sol {#token-sol-2} + +ఈ ఉదాహరణలో మనం `Token.sol`ని మార్చవచ్చు. +ఇది ప్రాక్సీ మాత్రమే కాల్ చేయగల అనేక ఫంక్షన్‌లను కలిగి ఉండటానికి మాకు అనుమతిస్తుంది. +కొత్త భాగాలు ఇక్కడ ఉన్నాయి: + +```solidity + // CalldataInterpreter చిరునామాను పేర్కొనడానికి అనుమతించబడిన ఏకైక చిరునామా + address owner; + + // CalldataInterpreter చిరునామా + address proxy = address(0); +``` + +ERC-20 కాంట్రాక్ట్‌కు అధీకృత ప్రాక్సీ యొక్క గుర్తింపు తెలియాలి. +అయితే, మనం ఈ వేరియబుల్‌ని కన్‌స్ట్రక్టర్‌లో సెట్ చేయలేము, ఎందుకంటే మనకు ఇంకా విలువ తెలియదు. +ఈ కాంట్రాక్ట్ మొదట ఇన్‌స్టాన్షియేట్ చేయబడింది ఎందుకంటే ప్రాక్సీ దాని కన్‌స్ట్రక్టర్‌లో టోకెన్ చిరునామాను ఆశిస్తుంది. + +```solidity + /** + * @dev ERC20 కన్‌స్ట్రక్టర్‌ను పిలుస్తుంది. + */ + constructor( + ) ERC20("Oris useless token-2", "OUT-2") { + owner = msg.sender; + } +``` + +సృష్టికర్త యొక్క చిరునామా (దీనిని `owner` అని పిలుస్తారు) ఇక్కడ నిల్వ చేయబడుతుంది ఎందుకంటే ప్రాక్సీని సెట్ చేయడానికి అనుమతించబడిన ఏకైక చిరునామా అదే. + +```solidity + /** + * @dev ప్రాక్సీ (CalldataInterpreter) కోసం చిరునామాను సెట్ చేయండి. + * యజమాని ద్వారా ఒక్కసారి మాత్రమే కాల్ చేయవచ్చు + */ + function setProxy(address _proxy) external { + require(msg.sender == owner, "Can only be called by owner"); + require(proxy == address(0), "Proxy is already set"); + + proxy = _proxy; + } // function setProxy +``` + +ప్రాక్సీకి విశేష ప్రాప్యత ఉంది, ఎందుకంటే ఇది భద్రతా తనిఖీలను దాటవేయగలదు. +మేము ప్రాక్సీని విశ్వసించగలమని నిర్ధారించుకోవడానికి మేము `owner` ని మాత్రమే ఈ ఫంక్షన్‌ను కాల్ చేయడానికి అనుమతిస్తాము మరియు ఒక్కసారి మాత్రమే. +`proxy` కి నిజమైన విలువ (సున్నా కాదు) ఒకసారి ఉంటే, ఆ విలువ మారదు, కాబట్టి యజమాని మోసపూరితంగా మారాలని నిర్ణయించుకున్నా, లేదా దాని కోసం స్మృతిచిహ్నం వెల్లడైనా, మేము ఇప్పటికీ సురక్షితంగా ఉన్నాము. + +```solidity + /** + * @dev కొన్ని ఫంక్షన్లను ప్రాక్సీ ద్వారా మాత్రమే కాల్ చేయవచ్చు. + */ + modifier onlyProxy { +``` + +ఇది ఒక [`modifier` ఫంక్షన్](https://www.tutorialspoint.com/solidity/solidity_function_modifiers.htm), ఇది ఇతర ఫంక్షన్లు పనిచేసే విధానాన్ని మారుస్తుంది. + +```solidity + require(msg.sender == proxy); +``` + +మొదట, మేము ప్రాక్సీ ద్వారా పిలువబడ్డామని మరియు మరెవరూ కాదని ధృవీకరించండి. +కాకపోతే, `revert` చేయండి. + +```solidity + _; + } +``` + +అలా అయితే, మేము సవరించే ఫంక్షన్‌ను అమలు చేయండి. + +```solidity + /* ఖాతాల కోసం ప్రాక్సీని వాస్తవానికి ప్రాక్సీ చేయడానికి అనుమతించే ఫంక్షన్లు */ + + function transferProxy(address from, address to, uint256 amount) + public virtual onlyProxy() returns (bool) + { + _transfer(from, to, amount); + return true; + } + + function approveProxy(address from, address spender, uint256 amount) + public virtual onlyProxy() returns (bool) + { + _approve(from, spender, amount); + return true; + } + + function transferFromProxy( + address spender, + address from, + address to, + uint256 amount + ) public virtual onlyProxy() returns (bool) + { + _spendAllowance(from, spender, amount); + _transfer(from, to, amount); + return true; + } +``` + +ఇవి మూడు కార్యకలాపాలు, వీటికి సాధారణంగా టోకెన్లను బదిలీ చేసే లేదా అనుమతిని ఆమోదించే సంస్థ నుండి నేరుగా సందేశం రావాలి. +ఇక్కడ ఈ కార్యకలాపాల యొక్క ప్రాక్సీ వెర్షన్ ఉంది: + +1. `onlyProxy()` ద్వారా సవరించబడింది, కాబట్టి మరెవరూ వాటిని నియంత్రించడానికి అనుమతించబడరు. +2. సాధారణంగా `msg.sender` గా ఉండే చిరునామాను అదనపు పారామీటర్‌గా పొందుతుంది. + +### CalldataInterpreter.sol {#calldatainterpreter-sol-2} + +కాల్‌డేటా ఇంటర్‌ప్రెటర్ పైన ఉన్న దానితో దాదాపు సమానంగా ఉంటుంది, ప్రాక్సీ చేయబడిన ఫంక్షన్‌లు `msg.sender` పారామీటర్‌ను స్వీకరిస్తాయి మరియు `ట్రాన్స్‌ఫర్` కోసం అనుమతి అవసరం లేదు. + +```solidity + // బదిలీ (అనుమతి అవసరం లేదు) + if (_func == 2) { + token.transferProxy( + msg.sender, + address(uint160(calldataVal(1, 20))), + calldataVal(21, 2) + ); + } + + // ఆమోదించండి + if (_func == 3) { + token.approveProxy( + msg.sender, + address(uint160(calldataVal(1, 20))), + calldataVal(21, 2) + ); + } + + // బదిలీFrom + if (_func == 4) { + token.transferFromProxy( + msg.sender, + address(uint160(calldataVal( 1, 20))), + address(uint160(calldataVal(21, 20))), + calldataVal(41, 2) + ); + } +``` + +### Test.js {#test-js-2} + +మునుపటి పరీక్ష సంకేత భాష మరియు దీని మధ్య కొన్ని మార్పులు ఉన్నాయి. + +```js +const Cdi = await ethers.getContractFactory("CalldataInterpreter") +const cdi = await Cdi.deploy(token.address) +await cdi.deployed() +await token.setProxy(cdi.address) +``` + +ఏ ప్రాక్సీని విశ్వసించాలో ERC-20 కాంట్రాక్ట్‌కు మనం చెప్పాలి + +```js +console.log("CalldataInterpreter addr:", cdi.address) + +// Need two signers to verify allowances +const signers = await ethers.getSigners() +const signer = signers[0] +const poorSigner = signers[1] +``` + +`approve()` మరియు `transferFrom()` ని తనిఖీ చేయడానికి మనకు రెండవ సైనర్ అవసరం. +మేము దానిని `poorSigner` అని పిలుస్తాము ఎందుకంటే దానికి మా టోకెన్లు ఏవీ రావు (దానికి ETH ఉండాలి, వాస్తవానికి). + +```js +// Transfer tokens +const destAddr = "0xf5a6ead936fb47f342bb63e676479bddf26ebe1d" +const transferTx = { + to: cdi.address, + data: "0x02" + destAddr.slice(2, 42) + "0100", +} +await (await signer.sendTransaction(transferTx)).wait() +``` + +ERC-20 కాంట్రాక్ట్ ప్రాక్సీ (`cdi`) ని విశ్వసిస్తున్నందున, బదిలీలను రిలే చేయడానికి మాకు అనుమతి అవసరం లేదు. + +```js +// approval and transferFrom +const approveTx = { + to: cdi.address, + data: "0x03" + poorSigner.address.slice(2, 42) + "00FF", +} +await (await signer.sendTransaction(approveTx)).wait() + +const destAddr2 = "0xE1165C689C0c3e9642cA7606F5287e708d846206" + +const transferFromTx = { + to: cdi.address, + data: "0x04" + signer.address.slice(2, 42) + destAddr2.slice(2, 42) + "00FF", +} +await (await poorSigner.sendTransaction(transferFromTx)).wait() + +// Check the approve / transferFrom combo was done correctly +expect(await token.balanceOf(destAddr2)).to.equal(255) +``` + +రెండు కొత్త ఫంక్షన్లను పరీక్షించండి. +`transferFromTx` కి రెండు చిరునామా పారామితులు అవసరమని గమనించండి: అనుమతి ఇచ్చేవాడు మరియు గ్రహీత. + +## ముగింపు {#conclusion} + +[Optimism](https://medium.com/ethereum-optimism/the-road-to-sub-dollar-transactions-part-2-compression-edition-6bb2890e3e92) మరియు [Arbitrum](https://developer.offchainlabs.com/docs/special_features) రెండూ L1కి వ్రాయబడిన కాల్‌డేటా పరిమాణాన్ని మరియు అందువల్ల లావాదేవీల ఖర్చును తగ్గించే మార్గాలను అన్వేషిస్తున్నాయి. +అయితే, సాధారణ పరిష్కారాల కోసం చూస్తున్న మౌలిక సదుపాయాల ప్రదాతలుగా, మా సామర్థ్యాలు పరిమితంగా ఉన్నాయి. +డాప్స్ డెవలపర్‌గా, మీకు అప్లికేషన్-నిర్దిష్ట పరిజ్ఞానం ఉంది, ఇది ఒక సాధారణ పరిష్కారంలో మేము చేయగలిగిన దానికంటే మెరుగ్గా మీ కాల్‌డేటాను ఆప్టిమైజ్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. +ఈ ఆర్టికల్ మీ అవసరాలకు ఆదర్శవంతమైన పరిష్కారాన్ని కనుగొనడంలో మీకు సహాయపడుతుందని ఆశిస్తున్నాము. + +[నా మరిన్ని పనుల కోసం ఇక్కడ చూడండి](https://cryptodocguy.pro/). + diff --git a/public/content/translations/te/developers/tutorials/smart-contract-security-guidelines/index.md b/public/content/translations/te/developers/tutorials/smart-contract-security-guidelines/index.md new file mode 100644 index 00000000000..8c308283546 --- /dev/null +++ b/public/content/translations/te/developers/tutorials/smart-contract-security-guidelines/index.md @@ -0,0 +1,91 @@ +--- +title: "స్మార్ట్ కాంట్రాక్ట్ భద్రతా మార్గదర్శకాలు" +description: "మీ డాప్‌ని నిర్మించేటప్పుడు పరిగణించవలసిన భద్రతా మార్గదర్శకాల తనిఖీ జాబితా" +author: "Trailofbits" +tags: [ "దృఢత్వం", "స్మార్ట్ కాంట్రాక్టులు", "భద్రత" ] +skill: intermediate +lang: te +published: 2020-09-06 +source: Building secure contracts +sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/guidelines.md +--- + +మరింత సురక్షితమైన స్మార్ట్ కాంట్రాక్ట్లను నిర్మించడానికి ఈ ఉన్నత-స్థాయి సిఫార్సులను అనుసరించండి. + +## డిజైన్ మార్గదర్శకాలు {#design-guidelines} + +ఏ ఒక్క లైను కోడ్ రాయడానికి ముందు, కాంట్రాక్ట్ డిజైన్‌ను ముందుగానే చర్చించాలి. + +### డాక్యుమెంటేషన్ మరియు స్పెసిఫికేషన్లు {#documentation-and-specifications} + +డాక్యుమెంటేషన్‌ను వివిధ స్థాయిలలో వ్రాయవచ్చు మరియు కాంట్రాక్టులను అమలు చేస్తున్నప్పుడు నవీకరించాలి: + +- **సిస్టమ్ యొక్క సాదా ఆంగ్ల వివరణ**, కాంట్రాక్టులు ఏమి చేస్తాయో మరియు కోడ్‌బేస్‌పై ఏవైనా అంచనాలను వివరిస్తుంది. +- **స్కీమా మరియు నిర్మాణ రేఖాచిత్రాలు**, కాంట్రాక్ట్ పరస్పర చర్యలు మరియు సిస్టమ్ యొక్క స్టేట్ మెషీన్‌తో సహా. [Slither ప్రింటర్లు](https://github.com/crytic/slither/wiki/Printer-documentation) ఈ స్కీమాలను రూపొందించడంలో సహాయపడతాయి. +- **సమగ్రమైన కోడ్ డాక్యుమెంటేషన్**, Solidity కోసం [Natspec ఫార్మాట్](https://docs.soliditylang.org/en/develop/natspec-format.html) ను ఉపయోగించవచ్చు. + +### ఆన్‌చైన్ వర్సెస్ ఆఫ్‌చైన్ కంప్యూటేషన్ {#onchain-vs-offchain-computation} + +- **మీరు వీలైనంత ఎక్కువ కోడ్‌ను ఆఫ్‌చైన్‌లో ఉంచండి.** ఆన్‌చైన్ లేయర్‌ను చిన్నదిగా ఉంచండి. ఆన్‌చైన్‌లో ధృవీకరణ సరళంగా ఉండే విధంగా ఆఫ్‌చైన్ కోడ్‌తో డేటాను ముందుగా ప్రాసెస్ చేయండి. మీకు క్రమబద్ధమైన జాబితా అవసరమా? జాబితాను ఆఫ్‌చైన్‌లో క్రమబద్ధీకరించండి, తర్వాత దాని క్రమాన్ని ఆన్‌చైన్‌లో మాత్రమే తనిఖీ చేయండి. + +### అప్‌గ్రేడబిలిటీ {#upgradeability} + +మేము మా [బ్లాగ్‌పోస్ట్‌లో](https://blog.trailofbits.com/2018/09/05/contract-upgrade-anti-patterns/) విభిన్న అప్‌గ్రేడబిలిటీ పరిష్కారాలను చర్చించాము. ఏదైనా కోడ్ రాయడానికి ముందు అప్‌గ్రేడబిలిటీకి మద్దతు ఇవ్వాలా వద్దా అనే దానిపై ఉద్దేశపూర్వక ఎంపిక చేసుకోండి. ఈ నిర్ణయం మీరు మీ కోడ్‌ను ఎలా నిర్మిస్తారనే దానిని ప్రభావితం చేస్తుంది. సాధారణంగా, మేము సిఫార్సు చేస్తున్నాము: + +- **అప్‌గ్రేడబిలిటీ కంటే [కాంట్రాక్ట్ మైగ్రేషన్‌కు](https://blog.trailofbits.com/2018/10/29/how-contract-migration-works/) ప్రాధాన్యత ఇవ్వడం.** మైగ్రేషన్ సిస్టమ్‌లు వాటి ప్రతికూలతలు లేకుండా, అప్‌గ్రేడబుల్ వాటికి ఉన్న అనేక ప్రయోజనాలను కలిగి ఉంటాయి. +- **delegatecallproxy దానిపై డేటా సెపరేషన్ ప్యాట్రన్‌ను ఉపయోగించడం.** మీ ప్రాజెక్ట్‌కు స్పష్టమైన అబ్స్ట్రాక్షన్ సెపరేషన్ ఉన్నట్లయితే, డేటా సెపరేషన్‌ని ఉపయోగించి అప్‌గ్రేడ్ చేయడానికి కొన్ని సర్దుబాట్లు మాత్రమే అవసరం. delegatecallproxyకి EVM నైపుణ్యం అవసరం మరియు ఇది చాలా దోషపూరితమైనది. +- **విస్తరణకు ముందు మైగ్రేషన్/అప్‌గ్రేడ్ విధానాన్ని డాక్యుమెంట్ చేయండి.** ఎలాంటి మార్గదర్శకాలు లేకుండా ఒత్తిడిలో మీరు స్పందించవలసి వస్తే, మీరు తప్పులు చేస్తారు. అనుసరించాల్సిన విధానాన్ని ముందుగానే వ్రాయండి. అందులో ఇవి ఉండాలి: + - కొత్త కాంట్రాక్టులను ప్రారంభించే కాల్స్ + - కీలు ఎక్కడ నిల్వ చేయబడ్డాయి మరియు వాటిని ఎలా యాక్సెస్ చేయాలి + - విస్తరణను ఎలా తనిఖీ చేయాలి! పోస్ట్-డిప్లాయ్‌మెంట్ స్క్రిప్ట్‌ను డెవలప్ చేసి, పరీక్షించండి. + +## అమలు మార్గదర్శకాలు {#implementation-guidelines} + +**సరళత కోసం ప్రయత్నించండి.** మీ ప్రయోజనానికి సరిపోయే సరళమైన పరిష్కారాన్ని ఎల్లప్పుడూ ఉపయోగించండి. మీ బృందంలోని ఏ సభ్యుడైనా మీ పరిష్కారాన్ని అర్థం చేసుకోగలగాలి. + +### ఫంక్షన్ కంపోజిషన్ {#function-composition} + +మీ కోడ్‌బేస్ యొక్క నిర్మాణం మీ కోడ్‌ను సమీక్షించడానికి సులభతరం చేయాలి. దాని ఖచ్చితత్వం గురించి వాదించే సామర్థ్యాన్ని తగ్గించే నిర్మాణ ఎంపికలను నివారించండి. + +- **మీ సిస్టమ్ యొక్క లాజిక్‌ను విభజించండి**, బహుళ కాంట్రాక్టుల ద్వారా లేదా సారూప్యమైన ఫంక్షన్‌లను (ఉదాహరణకు, ప్రమాణీకరణ, అంకగణితం, ...) సమూహపరచడం ద్వారా. +- **స్పష్టమైన ప్రయోజనంతో చిన్న ఫంక్షన్‌లను వ్రాయండి.** ఇది సులభమైన సమీక్షను సులభతరం చేస్తుంది మరియు వ్యక్తిగత భాగాలను పరీక్షించడానికి అనుమతిస్తుంది. + +### ఇన్హెరిటెన్స్ {#inheritance} + +- **వారసత్వాన్ని నిర్వహించదగినదిగా ఉంచండి.** తర్కాన్ని విభజించడానికి వారసత్వాన్ని ఉపయోగించాలి, అయితే, మీ ప్రాజెక్ట్ వారసత్వ వృక్షం యొక్క లోతు మరియు వెడల్పును తగ్గించాలని లక్ష్యంగా పెట్టుకోవాలి. +- **కాంట్రాక్టుల సోపానక్రమాన్ని తనిఖీ చేయడానికి Slither యొక్క [ఇన్హెరిటెన్స్ ప్రింటర్‌ను](https://github.com/crytic/slither/wiki/Printer-documentation#inheritance-graph) ఉపయోగించండి.** ఇన్హెరిటెన్స్ ప్రింటర్ సోపానక్రమం యొక్క పరిమాణాన్ని సమీక్షించడంలో మీకు సహాయం చేస్తుంది. + +### ఈవెంట్‌లు {#events} + +- **అన్ని కీలకమైన కార్యకలాపాలను లాగ్ చేయండి.** ఈవెంట్‌లు అభివృద్ధి సమయంలో కాంట్రాక్ట్‌ను డీబగ్ చేయడానికి మరియు విస్తరణ తర్వాత దానిని పర్యవేక్షించడానికి సహాయపడతాయి. + +### తెలిసిన ఆపదలను నివారించండి {#avoid-known-pitfalls} + +- **అత్యంత సాధారణ భద్రతా సమస్యల గురించి తెలుసుకోండి.** [Ethernaut CTF](https://ethernaut.openzeppelin.com/), [Capture the Ether](https://capturetheether.com/), లేదా [Not so smart contracts](https://github.com/crytic/not-so-smart-contracts/) వంటి సాధారణ సమస్యల గురించి తెలుసుకోవడానికి అనేక ఆన్‌లైన్ వనరులు ఉన్నాయి. +- **[Solidity డాక్యుమెంటేషన్‌లోని](https://docs.soliditylang.org/en/latest/) హెచ్చరికల విభాగాల గురించి తెలుసుకోండి.** హెచ్చరికల విభాగాలు భాష యొక్క స్పష్టంగా కనిపించని ప్రవర్తన గురించి మీకు తెలియజేస్తాయి. + +### డిపెండెన్సీలు {#dependencies} + +- **బాగా పరీక్షించబడిన లైబ్రరీలను ఉపయోగించండి.** బాగా పరీక్షించబడిన లైబ్రరీల నుండి కోడ్‌ను దిగుమతి చేసుకోవడం వలన మీరు బగ్గీ కోడ్‌ను వ్రాసే సంభావ్యతను తగ్గిస్తుంది. మీరు ERC20 కాంట్రాక్ట్‌ను వ్రాయాలనుకుంటే, [OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20) ని ఉపయోగించండి. +- **డిపెండెన్సీ మేనేజర్‌ను ఉపయోగించండి; కోడ్‌ను కాపీ-పేస్ట్ చేయడాన్ని నివారించండి.** మీరు బాహ్య సోర్స్‌పై ఆధారపడి ఉంటే, మీరు దానిని అసలు సోర్స్‌తో అప్‌డేట్‌గా ఉంచాలి. + +### పరీక్ష మరియు ధృవీకరణ {#testing-and-verification} + +- **సమగ్రమైన యూనిట్-టెస్టులు వ్రాయండి.** అధిక-నాణ్యత సాఫ్ట్‌వేర్‌ను రూపొందించడానికి విస్తృతమైన టెస్ట్ సూట్ చాలా ముఖ్యం. +- **[Slither](https://github.com/crytic/slither), [Echidna](https://github.com/crytic/echidna) మరియు [Manticore](https://github.com/trailofbits/manticore) కస్టమ్ చెక్స్ మరియు ప్రాపర్టీలను వ్రాయండి.** ఆటోమేటెడ్ టూల్స్ మీ కాంట్రాక్ట్ సురక్షితంగా ఉందని నిర్ధారించడంలో సహాయపడతాయి. సమర్థవంతమైన తనిఖీలు మరియు లక్షణాలను ఎలా వ్రాయాలో తెలుసుకోవడానికి ఈ గైడ్‌లోని మిగిలిన వాటిని సమీక్షించండి. +- **[crytic.io](https://crytic.io/)ని ఉపయోగించండి.** Crytic GitHubతో కలిసిపోతుంది, ప్రైవేట్ Slither డిటెక్టర్లకు యాక్సెస్ అందిస్తుంది మరియు Echidna నుండి కస్టమ్ ప్రాపర్టీ తనిఖీలను నడుపుతుంది. + +### సాలిడిటీ {#solidity} + +- **0.4 మరియు 0.6 కంటే Solidity 0.5కి ప్రాధాన్యత ఇవ్వండి.** మా అభిప్రాయం ప్రకారం, Solidity 0.5 మరింత సురక్షితమైనది మరియు 0.4 కంటే మెరుగైన అంతర్నిర్మిత పద్ధతులను కలిగి ఉంది. Solidity 0.6 ఉత్పత్తికి చాలా అస్థిరంగా ఉందని నిరూపించబడింది మరియు పరిపక్వం చెందడానికి సమయం కావాలి. +- **కంపైల్ చేయడానికి స్థిరమైన విడుదలను ఉపయోగించండి; హెచ్చరికల కోసం తాజా విడుదలను ఉపయోగించండి.** తాజా కంపైలర్ వెర్షన్‌తో మీ కోడ్‌లో నివేదించబడిన సమస్యలు ఏవీ లేవని తనిఖీ చేయండి. అయినప్పటికీ, Solidity వేగవంతమైన విడుదల చక్రాన్ని కలిగి ఉంది మరియు కంపైలర్ బగ్‌ల చరిత్రను కలిగి ఉంది, కాబట్టి మేము విస్తరణ కోసం తాజా వెర్షన్‌ను సిఫార్సు చేయము (Slither's [solc వెర్షన్ సిఫార్సును](https://github.com/crytic/slither/wiki/Detector-Documentation#recommendation-33) చూడండి). +- **ఇన్‌లైన్ అసెంబ్లీని ఉపయోగించవద్దు.** అసెంబ్లీకి EVM నైపుణ్యం అవసరం. మీరు యెల్లో పేపర్‌పై _పట్టు_ సాధించకపోతే EVM కోడ్ రాయవద్దు. + +## విస్తరణ మార్గదర్శకాలు {#deployment-guidelines} + +కాంట్రాక్ట్ అభివృద్ధి చేయబడి, విస్తరించబడిన తర్వాత: + +- **మీ కాంట్రాక్టులను పర్యవేక్షించండి.** లాగ్‌లను గమనిస్తూ ఉండండి మరియు కాంట్రాక్ట్ లేదా వాలెట్ రాజీపడినప్పుడు ప్రతిస్పందించడానికి సిద్ధంగా ఉండండి. +- **[blockchain-security-contacts](https://github.com/crytic/blockchain-security-contacts)కి మీ సంప్రదింపు సమాచారాన్ని జోడించండి.** భద్రతా లోపం కనుగొనబడితే మూడవ పక్షాలు మిమ్మల్ని సంప్రదించడానికి ఈ జాబితా సహాయపడుతుంది. +- **విశేష వినియోగదారుల వాలెట్‌లను భద్రపరచండి.** మీరు హార్డ్‌వేర్ వాలెట్లలో కీలను నిల్వ చేస్తే మా [ఉత్తమ పద్ధతులను](https://blog.trailofbits.com/2018/11/27/10-rules-for-the-secure-use-of-cryptocurrency-hardware-wallets/) అనుసరించండి. +- **సంఘటన ప్రతిస్పందన ప్రణాళికను కలిగి ఉండండి.** మీ స్మార్ట్ కాంట్రాక్టులు రాజీపడవచ్చని పరిగణించండి. మీ కాంట్రాక్టులు బగ్‌లు లేకుండా ఉన్నప్పటికీ, దాడి చేసేవాడు కాంట్రాక్ట్ యజమాని కీలను నియంత్రణలోకి తీసుకోవచ్చు. diff --git a/public/content/translations/te/developers/tutorials/stealth-addr/index.md b/public/content/translations/te/developers/tutorials/stealth-addr/index.md new file mode 100644 index 00000000000..0e406c8c17e --- /dev/null +++ b/public/content/translations/te/developers/tutorials/stealth-addr/index.md @@ -0,0 +1,443 @@ +--- +title: "స్టెల్త్ చిరునామాలను ఉపయోగించడం" +description: "స్టెల్త్ చిరునామాలు వినియోగదారులను అనామకంగా ఆస్తులను బదిలీ చేయడానికి అనుమతిస్తాయి. ఈ కథనాన్ని చదివిన తర్వాత, మీరు వీటిని చేయగలరు: స్టెల్త్ చిరునామాలు అంటే ఏమిటి మరియు అవి ఎలా పనిచేస్తాయో వివరించడం, అనామకతను కాపాడే విధంగా స్టెల్త్ చిరునామాలను ఎలా ఉపయోగించాలో అర్థం చేసుకోవడం, మరియు స్టెల్త్ చిరునామాలను ఉపయోగించే వెబ్-ఆధారిత అప్లికేషన్‌ను వ్రాయడం." +author: Ori Pomerantz +tags: + [ + "స్టెల్త్ చిరునామా", + "గోప్యత", + "క్రిప్టోగ్రఫీ", + "రస్ట్", + "wasm" + ] +skill: intermediate +published: 2025-11-30 +lang: te +sidebarDepth: 3 +--- + +మీరు బిల్. మేము వివరించని కొన్ని కారణాల వల్ల, మీరు "అలీస్ ఫర్ క్వీన్ ఆఫ్ ది వరల్డ్" ప్రచారానికి విరాళం ఇవ్వాలనుకుంటున్నారు మరియు మీరు విరాళం ఇచ్చారని అలీస్‌కు తెలియజేయాలనుకుంటున్నారు, తద్వారా ఆమె గెలిస్తే మీకు బహుమతి ఇస్తుంది. దురదృష్టవశాత్తు, ఆమె విజయం హామీ ఇవ్వబడదు. పోటీగా ఒక ప్రచారం ఉంది, "కరోల్ ఫర్ ఎంప్రెస్ ఆఫ్ ది సోలార్ సిస్టం". ఒకవేళ కరోల్ గెలిచి, మీరు అలీస్‌కు విరాళం ఇచ్చారని ఆమెకు తెలిస్తే, మీరు చిక్కుల్లో పడతారు. కాబట్టి మీరు మీ ఖాతా నుండి అలీస్ ఖాతాకు 200 ETH బదిలీ చేయలేరు. + +[ERC-5564](https://eips.ethereum.org/EIPS/eip-5564)కి పరిష్కారం ఉంది. అనామక బదిలీల కోసం [స్టెల్త్ చిరునామాలను](https://nerolation.github.io/stealth-utils) ఎలా ఉపయోగించాలో ఈ ERC వివరిస్తుంది. + +**హెచ్చరిక**: మాకు తెలిసినంతవరకు, స్టెల్త్ చిరునామాల వెనుక ఉన్న క్రిప్టోగ్రఫీ సురక్షితమైనది. అయితే, సైడ్-ఛానల్ దాడులకు అవకాశం ఉంది. ఈ ప్రమాదాన్ని తగ్గించడానికి మీరు ఏమి చేయగలరో [క్రింద](#go-wrong) మీరు చూస్తారు. + +## స్టెల్త్ చిరునామాలు ఎలా పనిచేస్తాయి {#how} + +ఈ వ్యాసం రెండు విధాలుగా స్టెల్త్ చిరునామాలను వివరించడానికి ప్రయత్నిస్తుంది. మొదటిది [వాటిని ఎలా ఉపయోగించాలి](#how-use). ఈ భాగం వ్యాసంలోని మిగిలిన భాగాన్ని అర్థం చేసుకోవడానికి సరిపోతుంది. ఆ తర్వాత, దాని వెనుక ఉన్న గణితం యొక్క [వివరణ](#how-math) ఉంది. మీకు క్రిప్టోగ్రఫీపై ఆసక్తి ఉంటే, ఈ భాగాన్ని కూడా చదవండి. + +### సాధారణ వెర్షన్ (స్టెల్త్ చిరునామాలను ఎలా ఉపయోగించాలి) {#how-use} + +అలీస్ రెండు ప్రైవేట్ కీలను సృష్టిస్తుంది మరియు దానికి సంబంధించిన పబ్లిక్ కీలను ప్రచురిస్తుంది (వీటిని ఒకే డబుల్-లెంగ్త్ మెటా-చిరునామాలో కలపవచ్చు). బిల్ కూడా ఒక ప్రైవేట్ కీని సృష్టించి, దానికి సంబంధించిన పబ్లిక్ కీని ప్రచురిస్తాడు. + +ఒకరి పబ్లిక్ కీని మరియు మరొకరి ప్రైవేట్ కీని ఉపయోగించి, మీరు అలీస్ మరియు బిల్‌కు మాత్రమే తెలిసిన భాగస్వామ్య రహస్యాన్ని పొందవచ్చు (దీనిని కేవలం పబ్లిక్ కీల నుండి మాత్రమే పొందలేరు). ఈ భాగస్వామ్య రహస్యాన్ని ఉపయోగించి, బిల్ స్టెల్త్ చిరునామాను పొందుతాడు మరియు దానికి ఆస్తులను పంపగలడు. + +అలీస్ కూడా భాగస్వామ్య రహస్యం నుండి చిరునామాను పొందుతుంది, కానీ ఆమె ప్రచురించిన పబ్లిక్ కీలకు సంబంధించిన ప్రైవేట్ కీలు ఆమెకు తెలుసు కాబట్టి, ఆ చిరునామా నుండి విత్‌డ్రా చేయడానికి వీలు కల్పించే ప్రైవేట్ కీని కూడా ఆమె పొందగలదు. + +### గణితం (స్టెల్త్ చిరునామాలు ఇలా ఎందుకు పని చేస్తాయి) {#how-math} + +ప్రామాణిక స్టెల్త్ చిరునామాలు [ఎలిప్టిక్-కర్వ్ క్రిప్టోగ్రఫీ (ECC)](https://blog.cloudflare.com/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography/#elliptic-curves-building-blocks-of-a-better-trapdoor)ని ఉపయోగించి తక్కువ కీ బిట్‌లతో మెరుగైన పనితీరును పొందుతాయి, అదే సమయంలో భద్రతా స్థాయిని అలాగే ఉంచుతాయి. కానీ చాలా వరకు మనం దానిని పట్టించుకోకుండా, సాధారణ అంకగణితాన్ని ఉపయోగిస్తున్నామని నటించవచ్చు. + +అందరికీ తెలిసిన ఒక సంఖ్య ఉంది, _G_. మీరు _G_తో గుణించవచ్చు. కానీ ECC స్వభావం కారణంగా, _G_తో భాగించడం ఆచరణాత్మకంగా అసాధ్యం. సాధారణంగా ఇతీరియములో పబ్లిక్ కీ క్రిప్టోగ్రఫీ పనిచేసే విధానం ఏమిటంటే, మీరు ఒక ప్రైవేట్ కీ, \*Ppriv\*ని ఉపయోగించి లావాదేవీలపై సంతకం చేయవచ్చు, అవి తర్వాత ఒక పబ్లిక్ కీ, _Ppub = GPpriv_ ద్వారా ధృవీకరించబడతాయి. + +అలీస్ రెండు ప్రైవేట్ కీలను సృష్టిస్తుంది, _Kpriv_ మరియు _Vpriv_. _Kpriv_ స్టెల్త్ చిరునామా నుండి డబ్బు ఖర్చు చేయడానికి ఉపయోగించబడుతుంది, మరియు _Vpriv_ అలీస్‌కు చెందిన చిరునామాలను వీక్షించడానికి ఉపయోగించబడుతుంది. ఆ తర్వాత అలీస్ పబ్లిక్ కీలను ప్రచురిస్తుంది: _Kpub = GKpriv_ మరియు _Vpub = GVpriv_ + +బిల్ మూడవ ప్రైవేట్ కీ, \*Rpriv\*ని సృష్టిస్తాడు మరియు \*Rpub = GRpriv\*ని ఒక కేంద్ర రిజిస్ట్రీకి ప్రచురిస్తాడు (బిల్ దానిని అలీస్‌కు కూడా పంపించి ఉండవచ్చు, కానీ కరోల్ వింటున్నదని మేము ఊహించుకుంటాము). + +బిల్ \*RprivVpub = GRprivVpriv\*ను లెక్కిస్తాడు, ఇది అలీస్‌కు కూడా తెలుస్తుందని అతను ఆశిస్తాడు (క్రింద వివరించబడింది). ఈ విలువను _S_, భాగస్వామ్య రహస్యం అని పిలుస్తారు. ఇది బిల్‌కు ఒక పబ్లిక్ కీ, \*Ppub = Kpub+G\*hash(S)\*ను ఇస్తుంది. ఈ పబ్లిక్ కీ నుండి, అతను ఒక చిరునామాను లెక్కించగలడు మరియు అతనికి కావలసిన వనరులను దానికి పంపగలడు. భవిష్యత్తులో, ఒకవేళ అలీస్ గెలిస్తే, ఆ వనరులు తన నుండే వచ్చాయని నిరూపించడానికి బిల్ ఆమెకు \*Rpriv\*ను చెప్పగలడు. + +అలీస్ \*RpubVpriv = GRprivVpriv\*ను లెక్కిస్తుంది. ఇది ఆమెకు అదే భాగస్వామ్య రహస్యం, _S_ని ఇస్తుంది. ఆమెకు ప్రైవేట్ కీ, _Kpriv_ తెలుసు కాబట్టి, ఆమె \*Ppriv = Kpriv+hash(S)\*ను లెక్కించగలదు. ఈ కీ ఆమెకు _Ppub = GPpriv = GKpriv+G\*hash(S) = Kpub+G\*hash(S)_ నుండి వచ్చే చిరునామాలో ఉన్న ఆస్తులను యాక్సెస్ చేయడానికి అనుమతిస్తుంది. + +అలీస్ డేవ్ ప్రపంచ ఆధిపత్య ప్రచార సేవలకు సబ్‌కాంట్రాక్ట్ ఇవ్వడానికి వీలుగా మేము ఒక ప్రత్యేక వీక్షణ కీని కలిగి ఉన్నాము. అలీస్ పబ్లిక్ చిరునామాలను డేవ్‌కు తెలియజేయడానికి మరియు మరింత డబ్బు అందుబాటులోకి వచ్చినప్పుడు తనకు తెలియజేయడానికి సిద్ధంగా ఉంది, కానీ అతను తన ప్రచార డబ్బును ఖర్చు చేయకూడదని ఆమె కోరుకుంటుంది. + +వీక్షించడం మరియు ఖర్చు చేయడం వేర్వేరు కీలను ఉపయోగిస్తాయి కాబట్టి, అలీస్ డేవ్‌కు _Vpriv_ ఇవ్వగలదు. అప్పుడు డేవ్ \*S = RpubVpriv = GRprivVpriv\*ను లెక్కించగలడు మరియు ఆ విధంగా పబ్లిక్ కీలను (_Ppub = Kpub+G\*hash(S)_) పొందగలడు. కానీ _Kpriv_ లేకుండా డేవ్ ప్రైవేట్ కీని పొందలేడు. + +సారాంశంలో, ఇవి వివిధ పాల్గొనేవారికి తెలిసిన విలువలు. + +| అలీస్ | ప్రచురించబడింది | బిల్ | డేవ్ | | +| ------------------------------------------------------------------------- | ----------------- | ------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------ | +| G | G | G | G | | +| _Kpriv_ | — | — | — | | +| _Vpriv_ | — | — | _Vpriv_ | | +| _Kpub = GKpriv_ | _Kpub_ | _Kpub_ | _Kpub_ | | +| _Vpub = GVpriv_ | _Vpub_ | _Vpub_ | _Vpub_ | | +| — | — | _Rpriv_ | — | | +| _Rpub_ | _Rpub_ | _Rpub = GRpriv_ | _Rpub_ | | +| _S = RpubVpriv = GRprivVpriv_ | — | _S = RprivVpub = GRprivVpriv_ | _S = _RpubVpriv_ = GRprivVpriv_ | | +| _Ppub = Kpub+G\*hash(S)_ | — | _Ppub = Kpub+G\*hash(S)_ | _Ppub = Kpub+G\*hash(S)_ | | +| _చిరునామా=f(Ppub)_ | — | _చిరునామా=f(Ppub)_ | _చిరునామా=f(Ppub)_ | _చిరునామా=f(Ppub)_ | +| _Ppriv = Kpriv+hash(S)_ | — | — | — | | + +## స్టెల్త్ చిరునామాలు తప్పుగా వెళ్ళినప్పుడు {#go-wrong} + +_బ్లాక్ చైనులో రహస్యాలు ఉండవు_. స్టెల్త్ చిరునామాలు మీకు గోప్యతను అందించగలిగినప్పటికీ, ఆ గోప్యత ట్రాఫిక్ విశ్లేషణకు లోబడి ఉంటుంది. ఒక చిన్న ఉదాహరణ చెప్పాలంటే, బిల్ ఒక చిరునామాకు నిధులు సమకూర్చి, వెంటనే _Rpub_ విలువను ప్రచురించడానికి ఒక లావాదేవీని పంపుతాడని ఊహించుకోండి. అలీస్ యొక్క _Vpriv_ లేకుండా, ఇది ఒక స్టెల్త్ చిరునామా అని మనం ఖచ్చితంగా చెప్పలేము, కానీ ఆ విధంగా పందెం వేయవచ్చు. ఆ తర్వాత, ఆ చిరునామా నుండి మొత్తం ETHని అలీస్ ప్రచార నిధి చిరునామాకు బదిలీ చేసే మరో లావాదేవీని మనం చూస్తాము. మనం దానిని నిరూపించలేకపోవచ్చు, కానీ బిల్ అలీస్ ప్రచారానికి విరాళం ఇచ్చి ఉండవచ్చు. కరోల్ ఖచ్చితంగా అలాగే అనుకుంటుంది. + +బిల్ _Rpub_ ప్రచురణను స్టెల్త్ చిరునామాకు నిధులు సమకూర్చడం నుండి వేరు చేయడం సులభం (వివిధ సమయాల్లో, వివిధ చిరునామాల నుండి వాటిని చేయండి). అయితే, అది సరిపోదు. కరోల్ వెతికే నమూనా ఏమిటంటే, బిల్ ఒక చిరునామాకు నిధులు సమకూర్చడం, ఆ తర్వాత అలీస్ ప్రచార నిధి దాని నుండి విత్‌డ్రా చేసుకోవడం. + +ఒక పరిష్కారం ఏమిటంటే, అలీస్ ప్రచారం డబ్బును నేరుగా విత్‌డ్రా చేసుకోకుండా, దానిని మూడవ పక్షానికి చెల్లించడానికి ఉపయోగించడం. ఒకవేళ అలీస్ ప్రచారం 10 ETHని డేవ్ ప్రపంచ ఆధిపత్య ప్రచార సేవలకు పంపితే, బిల్ డేవ్ కస్టమర్లలో ఒకరికి విరాళం ఇచ్చాడని కరోల్‌కు మాత్రమే తెలుస్తుంది. డేవ్‌కు తగినంత కస్టమర్లు ఉంటే, బిల్ తనతో పోటీపడే అలీస్‌కు విరాళం ఇచ్చాడా, లేదా కరోల్ పట్టించుకోని ఆడం, ఆల్బర్ట్, లేదా అబిగైల్‌కు ఇచ్చాడా అని కరోల్ తెలుసుకోలేదు. అలీస్ చెల్లింపుతో ఒక హాష్ విలువను చేర్చవచ్చు, ఆ తర్వాత డేవ్‌కు ప్రిఇమేజ్ అందించవచ్చు, అది తన విరాళం అని నిరూపించడానికి. ప్రత్యామ్నాయంగా, పైన పేర్కొన్నట్లుగా, అలీస్ డేవ్‌కు తన \*Vpriv\*ని ఇస్తే, ఆ చెల్లింపు ఎవరి నుండి వచ్చిందో అతనికి ఇప్పటికే తెలుసు. + +ఈ పరిష్కారంతో ప్రధాన సమస్య ఏమిటంటే, ఆ రహస్యం బిల్‌కు ప్రయోజనం చేకూర్చినప్పుడు అలీస్ దాని గురించి పట్టించుకోవాలి. బిల్ స్నేహితుడు బాబ్ కూడా తనకు విరాళం ఇస్తాడని అలీస్ తన ప్రతిష్టను కాపాడుకోవాలనుకోవచ్చు. కానీ ఆమె బిల్‌ను బయటపెట్టడానికి కూడా వెనుకాడకపోవచ్చు, ఎందుకంటే అప్పుడు అతను కరోల్ గెలిస్తే ఏమి జరుగుతుందో అని భయపడతాడు. బిల్ చివరికి అలీస్‌కు మరింత మద్దతు అందించవచ్చు. + +### బహుళ స్టెల్త్ లేయర్‌లను ఉపయోగించడం {#multi-layer} + +బిల్ గోప్యతను కాపాడటానికి అలీస్‌పై ఆధారపడటానికి బదులుగా, బిల్ దానిని స్వయంగా చేయగలడు. అతను కల్పిత వ్యక్తులు, బాబ్ మరియు బెల్లా కోసం బహుళ మెటా-చిరునామాలను సృష్టించగలడు. బిల్ అప్పుడు బాబ్‌కు ETH పంపుతాడు, మరియు "బాబ్" (వాస్తవానికి బిల్) దానిని బెల్లాకు పంపుతాడు. "బెల్లా" (కూడా బిల్) దానిని అలీస్‌కు పంపుతుంది. + +కరోల్ ఇప్పటికీ ట్రాఫిక్ విశ్లేషణ చేసి బిల్-టు-బాబ్-టు-బెల్లా-టు-అలీస్ పైప్‌లైన్‌ను చూడగలదు. అయితే, "బాబ్" మరియు "బెల్లా" కూడా ఇతర ప్రయోజనాల కోసం ETHని ఉపయోగిస్తే, బిల్ అలీస్‌కు ఏమీ బదిలీ చేసినట్లు కనిపించదు, అలీస్ వెంటనే స్టెల్త్ చిరునామా నుండి తన తెలిసిన ప్రచార చిరునామాకు విత్‌డ్రా చేసుకున్నప్పటికీ. + +## స్టెల్త్-చిరునామా అప్లికేషన్‌ను వ్రాయడం {#write-app} + +ఈ వ్యాసం [GitHubలో అందుబాటులో ఉన్న](https://github.com/qbzzt/251022-stealth-addresses.git) ఒక స్టెల్త్-చిరునామా అప్లికేషన్‌ను వివరిస్తుంది. + +### ఉపకరణాలు {#tools} + +మనం ఉపయోగించగల [ఒక టైప్‌స్క్రిప్ట్ స్టెల్త్ చిరునామా లైబ్రరీ](https://github.com/ScopeLift/stealth-address-sdk) ఉంది. అయితే, క్రిప్టోగ్రాఫిక్ కార్యకలాపాలు CPU-ఇంటెన్సివ్ కావచ్చు. నేను వాటిని [రస్ట్](https://rust-lang.org/) వంటి సంకలనం చేయబడిన భాషలో అమలు చేయడానికి ఇష్టపడతాను, మరియు బ్రౌజర్‌లో సంకేత భాషను అమలు చేయడానికి [WASM](https://webassembly.org/)ని ఉపయోగిస్తాను. + +మేము [Vite](https://vite.dev/) మరియు [React](https://react.dev/)ని ఉపయోగించబోతున్నాము. ఇవి పరిశ్రమ-ప్రామాణిక ఉపకరణాలు; మీకు వాటితో పరిచయం లేకపోతే, మీరు [ఈ ట్యుటోరియల్](/developers/tutorials/creating-a-wagmi-ui-for-your-contract/)ను ఉపయోగించవచ్చు. Viteని ఉపయోగించడానికి, మాకు Node అవసరం. + +### కార్యకలాపంలో స్టెల్త్ చిరునామాలను చూడండి {#in-action} + +1. అవసరమైన ఉపకరణాలను ఇన్‌స్టాల్ చేయండి: [రస్ట్](https://rust-lang.org/tools/install/) మరియు [Node](https://nodejs.org/en/download). + +2. GitHub రిపోజిటరీని క్లోన్ చేయండి. + + ```sh + git clone https://github.com/qbzzt/251022-stealth-addresses.git + cd 251022-stealth-addresses + ``` + +3. అవసరమైన వాటిని ఇన్‌స్టాల్ చేయండి మరియు రస్ట్ సంకేత భాషను సంకలనం చేయండి. + + ```sh + cd src/rust-wasm + rustup target add wasm32-unknown-unknown + cargo install wasm-pack + wasm-pack build --target web + ``` + +4. వెబ్ సర్వర్‌ను ప్రారంభించండి. + + ```sh + cd ../.. + npm install + npm run dev + ``` + +5. [అప్లికేషన్‌కు](http://localhost:5173/) బ్రౌజ్ చేయండి. ఈ అప్లికేషన్ పేజీకి రెండు ఫ్రేమ్‌లు ఉన్నాయి: ఒకటి అలీస్ వినియోగదారు ఇంటర్‌ఫేస్ కోసం మరియు మరొకటి బిల్ కోసం. రెండు ఫ్రేమ్‌లు కమ్యూనికేట్ చేయవు; అవి సౌలభ్యం కోసం మాత్రమే ఒకే పేజీలో ఉన్నాయి. + +6. అలీస్‌గా, **ఒక స్టెల్త్ మెటా-చిరునామాను సృష్టించు** క్లిక్ చేయండి. ఇది కొత్త స్టెల్త్ చిరునామాను మరియు దానికి సంబంధించిన ప్రైవేట్ కీలను ప్రదర్శిస్తుంది. స్టెల్త్ మెటా-చిరునామాను క్లిప్‌బోర్డ్‌కు కాపీ చేయండి. + +7. బిల్‌గా, కొత్త స్టెల్త్ మెటా-చిరునామాను పేస్ట్ చేసి, **ఒక చిరునామాను సృష్టించు** క్లిక్ చేయండి. ఇది మీకు అలీస్ కోసం నిధులు సమకూర్చడానికి చిరునామాను ఇస్తుంది. + +8. చిరునామా మరియు బిల్ పబ్లిక్ కీని కాపీ చేసి, వాటిని అలీస్ వినియోగదారు ఇంటర్‌ఫేస్‌లోని "బిల్ ద్వారా సృష్టించబడిన చిరునామా కోసం ప్రైవేట్ కీ" ప్రాంతంలో పేస్ట్ చేయండి. ఆ ఫీల్డ్‌లను పూరించిన తర్వాత, మీరు ఆ చిరునామాలోని ఆస్తులను యాక్సెస్ చేయడానికి ప్రైవేట్ కీని చూస్తారు. + +9. ప్రైవేట్ కీ చిరునామాకు అనుగుణంగా ఉందని నిర్ధారించుకోవడానికి మీరు [ఒక ఆన్‌లైన్ కాలిక్యులేటర్‌ను](https://iancoleman.net/ethereum-private-key-to-address/) ఉపయోగించవచ్చు. + +### ప్రోగ్రామ్ ఎలా పని చేస్తుంది {#how-the-program-works} + +#### WASM కాంపోనెంట్ {#wasm} + +WASMలోకి సంకలనం చేయబడిన మూల సంకేత భాష [రస్ట్](https://rust-lang.org/)లో వ్రాయబడింది. మీరు దానిని [`src/rust_wasm/src/lib.rs`](https://github.com/qbzzt/251022-stealth-addresses/blob/main/src/rust-wasm/src/lib.rs)లో చూడవచ్చు. ఈ సంకేత భాష ప్రాథమికంగా జావాస్క్రిప్ట్ సంకేత భాష మరియు [`eth-stealth-addresses` లైబ్రరీ](https://github.com/kassandraoftroy/eth-stealth-addresses) మధ్య ఒక ఇంటర్‌ఫేస్. + +**`Cargo.toml`** + +రస్ట్‌లో [`Cargo.toml`](https://doc.rust-lang.org/cargo/reference/manifest.html) జావాస్క్రిప్ట్‌లో [`package.json`](https://docs.npmjs.com/cli/v9/configuring-npm/package-json)కి సమానమైనది. ఇది ప్యాకేజీ సమాచారం, ఆధారపడటం ప్రకటనలు మొదలైనవాటిని కలిగి ఉంటుంది. + +```toml +[package] +name = "rust-wasm" +version = "0.1.0" +edition = "2024" + +[dependencies] +eth-stealth-addresses = "0.1.0" +hex = "0.4.3" +wasm-bindgen = "0.2.104" +getrandom = { version = "0.2", features = ["js"] } +``` + +[`getrandom`](https://docs.rs/getrandom/latest/getrandom/) ప్యాకేజీ యాదృచ్ఛిక విలువలను ఉత్పత్తి చేయాలి. అది కేవలం అల్గారిథమిక్ పద్ధతుల ద్వారా చేయబడదు; దీనికి ఎంట్రోపీ యొక్క మూలంగా భౌతిక ప్రక్రియకు యాక్సెస్ అవసరం. ఈ నిర్వచనం మనం నడుపుతున్న బ్రౌజర్‌ను అడగడం ద్వారా ఆ ఎంట్రోపీని పొందుతామని నిర్దేశిస్తుంది. + +```toml +console_error_panic_hook = "0.1.7" +``` + +[ఈ లైబ్రరీ](https://docs.rs/console_error_panic_hook/latest/console_error_panic_hook/) WASM సంకేత భాష పానిక్ అయినప్పుడు మరియు కొనసాగించలేనప్పుడు మనకు మరింత అర్థవంతమైన దోష సందేశాలను ఇస్తుంది. + +```toml +[lib] +crate-type = ["cdylib", "rlib"] +``` + +WASM సంకేత భాషను ఉత్పత్తి చేయడానికి అవసరమైన అవుట్‌పుట్ రకం. + +**`lib.rs`** + +ఇది అసలు రస్ట్ సంకేత భాష. + +```rust +use wasm_bindgen::prelude::*; +``` + +రస్ట్ నుండి WASM ప్యాకేజీని సృష్టించడానికి నిర్వచనాలు. అవి [ఇక్కడ](https://wasm-bindgen.github.io/wasm-bindgen/reference/attributes/index.html) డాక్యుమెంట్ చేయబడ్డాయి. + +```rust +use eth_stealth_addresses::{ + generate_stealth_meta_address, + generate_stealth_address, + compute_stealth_key +}; +``` + +మాకు [`eth-stealth-addresses` లైబ్రరీ](https://github.com/kassandraoftroy/eth-stealth-addresses) నుండి అవసరమైన ఫంక్షన్లు. + +```rust +use hex::{decode,encode}; +``` + +రస్ట్ సాధారణంగా విలువల కోసం బైట్ [అరేలను](https://doc.rust-lang.org/std/primitive.array.html) (`[u8; ]`) ఉపయోగిస్తుంది. కానీ జావాస్క్రిప్ట్‌లో, మనం సాధారణంగా హెక్సాడెసిమల్ స్ట్రింగ్‌లను ఉపయోగిస్తాము. [`hex` లైబ్రరీ](https://docs.rs/hex/latest/hex/) ఒక ప్రాతినిధ్యం నుండి మరొక దానికి మన కోసం అనువదిస్తుంది. + +```rust +#[wasm_bindgen] +``` + +ఈ ఫంక్షన్‌ను జావాస్క్రిప్ట్ నుండి పిలవడానికి WASM బైండింగ్‌లను సృష్టించండి. + +```rust +pub fn wasm_generate_stealth_meta_address() -> String { +``` + +బహుళ ఫీల్డ్‌లతో ఒక ఆబ్జెక్ట్‌ను తిరిగి ఇవ్వడానికి సులభమైన మార్గం JSON స్ట్రింగ్‌ను తిరిగి ఇవ్వడం. + +```rust + let (address, spend_private_key, view_private_key) = + generate_stealth_meta_address(); +``` + +[`generate_stealth_meta_address`](https://docs.rs/eth-stealth-addresses/latest/eth_stealth_addresses/fn.generate_stealth_meta_address.html) మూడు ఫీల్డ్‌లను తిరిగి ఇస్తుంది: + +- మెటా-చిరునామా (_Kpub_ మరియు _Vpub_) +- వీక్షణ ప్రైవేట్ కీ (_Vpriv_) +- ఖర్చు ప్రైవేట్ కీ (_Kpriv_) + +[టపుల్](https://doc.rust-lang.org/std/primitive.tuple.html) వాక్యనిర్మాణం ఆ విలువలను మళ్లీ వేరు చేయడానికి అనుమతిస్తుంది. + +```rust + format!("{{\"address\":\"{}\",\"view_private_key\":\"{}\",\"spend_private_key\":\"{}\"}}", + encode(address), + encode(view_private_key), + encode(spend_private_key) + ) +} +``` + +JSON-ఎన్‌కోడ్ చేయబడిన స్ట్రింగ్‌ను సృష్టించడానికి [`format!`](https://doc.rust-lang.org/std/fmt/index.html) మాక్రోని ఉపయోగించండి. అరేలను హెక్స్ స్ట్రింగ్‌లకు మార్చడానికి [`hex::encode`](https://docs.rs/hex/latest/hex/fn.encode.html)ని ఉపయోగించండి. + +```rust +fn str_to_array(s: &str) -> Option<[u8; N]> { +``` + +ఈ ఫంక్షన్ (జావాస్క్రిప్ట్ ద్వారా అందించబడిన) హెక్స్ స్ట్రింగ్‌ను బైట్ అర్రేగా మారుస్తుంది. జావాస్క్రిప్ట్ సంకేత భాష ద్వారా అందించబడిన విలువలను పార్స్ చేయడానికి మనం దానిని ఉపయోగిస్తాము. రస్ట్ అరేలు మరియు వెక్టర్లను ఎలా నిర్వహిస్తుందో దాని కారణంగా ఈ ఫంక్షన్ సంక్లిష్టంగా ఉంటుంది. + +`` వ్యక్తీకరణను [జెనరిక్](https://doc.rust-lang.org/book/ch10-01-syntax.html) అంటారు. `N` అనేది తిరిగి ఇవ్వబడిన అరే యొక్క పొడవును నియంత్రించే ఒక పారామీటర్. ఈ ఫంక్షన్‌ను వాస్తవానికి `str_to_array::` అని పిలుస్తారు, ఇక్కడ `n` అనేది అరే పొడవు. + +తిరిగి ఇవ్వబడిన విలువ `Option<[u8; N]>`, అంటే తిరిగి ఇవ్వబడిన అరే [ఆప్షనల్](https://doc.rust-lang.org/std/option/) అని అర్థం. ఇది విఫలం కాగల ఫంక్షన్ల కోసం రస్ట్‌లో ఒక సాధారణ నమూనా. + +ఉదాహరణకు, మనం `str_to_array::10("bad060a7")` అని పిలిస్తే, ఫంక్షన్ పది-విలువల అరేను తిరిగి ఇవ్వాలి, కానీ ఇన్‌పుట్ కేవలం నాలుగు బైట్లు మాత్రమే. ఫంక్షన్ విఫలం కావాలి, మరియు అది `None`ను తిరిగి ఇవ్వడం ద్వారా అలా చేస్తుంది. `str_to_array::4("bad060a7")` కోసం తిరిగి ఇవ్వబడిన విలువ `Some<[0xba, 0xd0, 0x60, 0xa7]>` అవుతుంది. + +```rust + // డీకోడ్ Result, _>ను తిరిగి ఇస్తుంది + let vec = decode(s).ok()?; +``` + +[`hex::decode`](https://docs.rs/hex/latest/hex/fn.decode.html) ఫంక్షన్ `Result, FromHexError>`ను తిరిగి ఇస్తుంది. [`Result`](https://doc.rust-lang.org/std/result/) రకం విజయవంతమైన ఫలితం (`Ok(value)`) లేదా దోషం (`Err(error)`) కలిగి ఉండవచ్చు. + +`.ok()` పద్ధతి `Result`ను `Option`గా మారుస్తుంది, దీని విలువ విజయవంతమైతే `Ok()` విలువ లేదా కాకపోతే `None` అవుతుంది. చివరగా, [ప్రశ్నార్థక గుర్తు ఆపరేటర్](https://doc.rust-lang.org/std/option/#the-question-mark-operator-) ప్రస్తుత ఫంక్షన్లను రద్దు చేసి, `Option` ఖాళీగా ఉంటే `None`ను తిరిగి ఇస్తుంది. లేకపోతే, ఇది విలువను అన్‌వ్రాప్ చేసి, దానిని తిరిగి ఇస్తుంది (ఈ సందర్భంలో, `vec`కు ఒక విలువను కేటాయించడానికి). + +ఇది దోషాలను నిర్వహించడానికి ఒక వింత సంక్లిష్టమైన పద్ధతిలా కనిపిస్తుంది, కానీ `Result` మరియు `Option` అన్ని దోషాలు ఒక విధంగా లేదా మరొక విధంగా నిర్వహించబడుతున్నాయని నిర్ధారిస్తాయి. + +```rust + if vec.len() != N { return None; } +``` + +బైట్ల సంఖ్య తప్పుగా ఉంటే, అది ఒక వైఫల్యం, మరియు మనం `None`ను తిరిగి ఇస్తాము. + +```rust + // try_into vecను వినియోగించి [u8; N] చేయడానికి ప్రయత్నిస్తుంది + let array: [u8; N] = vec.try_into().ok()?; +``` + +రస్ట్‌లో రెండు అరే రకాలు ఉన్నాయి. [అరేలకు](https://doc.rust-lang.org/std/primitive.array.html) ఒక స్థిర పరిమాణం ఉంటుంది. [వెక్టర్లు](https://doc.rust-lang.org/std/vec/index.html) పెరగవచ్చు మరియు తగ్గవచ్చు. `hex::decode` ఒక వెక్టర్‌ను తిరిగి ఇస్తుంది, కానీ `eth_stealth_addresses` లైబ్రరీ అరేలను స్వీకరించాలనుకుంటుంది. [`.try_into()`](https://doc.rust-lang.org/std/convert/trait.TryInto.html#required-methods) ఒక విలువను మరొక రకంలోకి మారుస్తుంది, ఉదాహరణకు, ఒక వెక్టర్‌ను ఒక అరేలోకి. + +```rust + Some(array) +} +``` + +రస్ట్ ఫంక్షన్ చివరిలో ఒక విలువను తిరిగి ఇచ్చేటప్పుడు [`return`](https://doc.rust-lang.org/std/keyword.return.html) కీవర్డ్‌ను ఉపయోగించమని అవసరం లేదు. + +```rust +#[wasm_bindgen] +pub fn wasm_generate_stealth_address(stealth_address: &str) -> Option { +``` + +ఈ ఫంక్షన్ ఒక పబ్లిక్ మెటా-చిరునామాను స్వీకరిస్తుంది, ఇందులో _Vpub_ మరియు _Kpub_ రెండూ ఉంటాయి. ఇది స్టెల్త్ చిరునామా, ప్రచురించడానికి పబ్లిక్ కీ (_Rpub_), మరియు అలీస్‌కు చెందిన ప్రచురిత చిరునామాలను గుర్తించడాన్ని వేగవంతం చేసే ఒక-బైట్ స్కాన్ విలువను తిరిగి ఇస్తుంది. + +స్కాన్ విలువ భాగస్వామ్య రహస్యం (_S = GRprivVpriv_)లో ఒక భాగం. ఈ విలువ అలీస్‌కు అందుబాటులో ఉంటుంది, మరియు _f(Kpub+G\*hash(S))_ ప్రచురిత చిరునామాకు సమానమా కాదా అని తనిఖీ చేయడం కంటే దీనిని తనిఖీ చేయడం చాలా వేగవంతమైనది. + +```rust + let (address, r_pub, scan) = + generate_stealth_address(&str_to_array::<66>(stealth_address)?); +``` + +మేము లైబ్రరీ యొక్క [`generate_stealth_address`](https://docs.rs/eth-stealth-addresses/latest/eth_stealth_addresses/fn.generate_stealth_address.html)ని ఉపయోగిస్తాము. + +```rust + format!("{{\"address\":\"{}\",\"rPub\":\"{}\",\"scan\":\"{}\"}}", + encode(address), + encode(r_pub), + encode(&[scan]) + ).into() +} +``` + +JSON-ఎన్‌కోడ్ చేయబడిన అవుట్‌పుట్ స్ట్రింగ్‌ను సిద్ధం చేయండి. + +```rust +#[wasm_bindgen] +pub fn wasm_compute_stealth_key( + address: &str, + bill_pub_key: &str, + view_private_key: &str, + spend_private_key: &str +) -> Option { + . + . + . +} +``` + +ఈ ఫంక్షన్ లైబ్రరీ యొక్క [`compute_stealth_key`](https://docs.rs/eth-stealth-addresses/latest/eth_stealth_addresses/fn.compute_stealth_key.html)ని ఉపయోగించి చిరునామా (_Rpriv_) నుండి విత్‌డ్రా చేయడానికి ప్రైవేట్ కీని లెక్కిస్తుంది. ఈ గణనకు ఈ విలువలు అవసరం: + +- చిరునామా (_చిరునామా=f(Ppub)_) +- బిల్ ద్వారా సృష్టించబడిన పబ్లిక్ కీ (_Rpub_) +- వీక్షణ ప్రైవేట్ కీ (_Vpriv_) +- ఖర్చు ప్రైవేట్ కీ (_Kpriv_) + +```rust +#[wasm_bindgen(start)] +``` + +[`#[wasm_bindgen(start)]`](https://wasm-bindgen.github.io/wasm-bindgen/reference/attributes/on-rust-exports/start.html) WASM సంకేత భాష ప్రారంభించబడినప్పుడు ఫంక్షన్ అమలు చేయబడుతుందని నిర్దేశిస్తుంది. + +```rust +pub fn main() { + console_error_panic_hook::set_once(); +} +``` + +ఈ సంకేత భాష పానిక్ అవుట్‌పుట్‌ను జావాస్క్రిప్ట్ కన్సోల్‌కు పంపమని నిర్దేశిస్తుంది. దీనిని ఆచరణలో చూడటానికి, అప్లికేషన్‌ను ఉపయోగించి బిల్‌కు చెల్లని మెటా-చిరునామా ఇవ్వండి (కేవలం ఒక హెక్సాడెసిమల్ అంకెను మార్చండి). మీరు జావాస్క్రిప్ట్ కన్సోల్‌లో ఈ దోషాన్ని చూస్తారు: + +``` +rust_wasm.js:236 panicked at /home/ori/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/subtle-2.6.1/src/lib.rs:701:9: +assertion `left == right` failed + left: 0 + right: 1 +``` + +ఆ తర్వాత స్టాక్ ట్రేస్ ఉంటుంది. అప్పుడు బిల్‌కు చెల్లుబాటు అయ్యే మెటా-చిరునామా ఇవ్వండి, మరియు అలీస్‌కు చెల్లని చిరునామా లేదా చెల్లని పబ్లిక్ కీ ఇవ్వండి. మీరు ఈ దోషాన్ని చూస్తారు: + +``` +rust_wasm.js:236 panicked at /home/ori/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/eth-stealth-addresses-0.1.0/src/lib.rs:78:9: +keys do not generate stealth address +``` + +మళ్లీ, ఆ తర్వాత స్టాక్ ట్రేస్ ఉంటుంది. + +#### వినియోగదారు ఇంటర్‌ఫేస్ {#ui} + +వినియోగదారు ఇంటర్‌ఫేస్ [React](https://react.dev/) ఉపయోగించి వ్రాయబడింది మరియు [Vite](https://vite.dev/) ద్వారా అందించబడుతుంది. మీరు [ఈ ట్యుటోరియల్](/developers/tutorials/creating-a-wagmi-ui-for-your-contract/) ఉపయోగించి వాటి గురించి తెలుసుకోవచ్చు. ఇక్కడ [WAGMI](https://wagmi.sh/) అవసరం లేదు ఎందుకంటే మనం బ్లాక్ చైను లేదా వాలెట్‌తో నేరుగా సంభాషించము. + +వినియోగదారు ఇంటర్‌ఫేస్‌లో స్పష్టంగా లేని ఏకైక భాగం WASM కనెక్టివిటీ. ఇది ఎలా పనిచేస్తుందో ఇక్కడ ఉంది. + +**`vite.config.js`** + +ఈ ఫైల్ [Vite కాన్ఫిగరేషన్‌ను](https://vite.dev/config/) కలిగి ఉంది. + +```js +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import wasm from "vite-plugin-wasm"; + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react(), wasm()], +}) +``` + +మాకు రెండు Vite ప్లగిన్‌లు అవసరం: [react](https://www.npmjs.com/package/@vitejs/plugin-react) మరియు [wasm](https://github.com/Menci/vite-plugin-wasm#readme). + +**`App.jsx`** + +ఈ ఫైల్ అప్లికేషన్ యొక్క ప్రధాన భాగం. ఇది రెండు భాగాలను కలిగి ఉన్న ఒక కంటైనర్: `Alice` మరియు `Bill`, ఆ వినియోగదారుల కోసం వినియోగదారు ఇంటర్‌ఫేస్‌లు. WASM కోసం సంబంధించిన భాగం ప్రారంభ సంకేత భాష. + +```jsx +import init from './rust-wasm/pkg/rust_wasm.js' +``` + +మనం [`wasm-pack`](https://rustwasm.github.io/docs/wasm-pack/)ని ఉపయోగించినప్పుడు, అది ఇక్కడ మనం ఉపయోగించే రెండు ఫైళ్ళను సృష్టిస్తుంది: అసలు సంకేత భాషతో ఒక wasm ఫైల్ (ఇక్కడ, `src/rust-wasm/pkg/rust_wasm_bg.wasm`) మరియు దానిని ఉపయోగించడానికి నిర్వచనాలతో ఒక జావాస్క్రిప్ట్ ఫైల్ (ఇక్కడ, `src/rust_wasm/pkg/rust_wasm.js`). ఆ జావాస్క్రిప్ట్ ఫైల్ యొక్క డిఫాల్ట్ ఎగుమతి WASMను ప్రారంభించడానికి అమలు చేయవలసిన సంకేత భాష. + +```jsx +function App() { + . + . + . + useEffect(() => { + const loadWasm = async () => { + try { + await init(); + setWasmReady(true) + } catch (err) { + console.error('Error loading wasm:', err) + alert("Wasm error: " + err) + } + } + + loadWasm() + }, [] + ) +``` + +[`useEffect` హుక్](https://react.dev/reference/react/useEffect) మీకు స్టేట్ వేరియబుల్స్ మారినప్పుడు అమలు చేయబడే ఫంక్షన్‌ను నిర్దేశించడానికి అనుమతిస్తుంది. ఇక్కడ, స్టేట్ వేరియబుల్స్ జాబితా ఖాళీగా ఉంది (`[]`), కాబట్టి ఈ ఫంక్షన్ పేజీ లోడ్ అయినప్పుడు ఒకసారి మాత్రమే అమలు చేయబడుతుంది. + +ప్రభావ ఫంక్షన్ వెంటనే తిరిగి రావాలి. అసమకాలిక సంకేత భాషను ఉపయోగించడానికి, ఉదాహరణకు WASM `init` (ఇది `.wasm` ఫైల్‌ను లోడ్ చేయాలి మరియు అందువల్ల సమయం పడుతుంది) మనం అంతర్గత [`async`](https://en.wikipedia.org/wiki/Async/await) ఫంక్షన్‌ను నిర్వచించి, దానిని `await` లేకుండా అమలు చేస్తాము. + +**`Bill.jsx`** + +ఇది బిల్ కోసం వినియోగదారు ఇంటర్‌ఫేస్. అలీస్ అందించిన స్టెల్త్ మెటా-చిరునామా ఆధారంగా ఒక చిరునామాను సృష్టించడం దీనికి ఒకే ఒక చర్య. + +```jsx +import { wasm_generate_stealth_address } from './rust-wasm/pkg/rust_wasm.js' +``` + +డిఫాల్ట్ ఎగుమతితో పాటు, `wasm-pack` ద్వారా సృష్టించబడిన జావాస్క్రిప్ట్ సంకేత భాష WASM సంకేత భాషలోని ప్రతి ఫంక్షన్ కోసం ఒక ఫంక్షన్‌ను ఎగుమతి చేస్తుంది. + +```jsx +