ప్రధాన కంటెంట్‌కు దాటవేయి

హాష్ ఫంక్షన్ — ETH.BUILD

ETH.BUILD విద్యా సాధనాన్ని ఉపయోగించి క్రిప్టోగ్రాఫిక్ హాష్ ఫంక్షన్ల ప్రదర్శన. హాష్ ఫంక్షన్లు ఎలా పనిచేస్తాయో మరియు ఎథీరియం ఖాతా మరియు డేటా సమగ్రత నమూనాకు అవి ఎందుకు ప్రాథమికమైనవో తెలుసుకోండి.

Date published: 14 జనవరి, 2021

ఆస్టిన్ గ్రిఫిత్ రూపొందించిన ఈ ట్యుటోరియల్, ETH.BUILD విజువల్ ప్రోగ్రామింగ్ సాధనాన్ని ఉపయోగించి క్రిప్టోగ్రాఫిక్ హాష్ ఫంక్షన్లు ఎలా పనిచేస్తాయో ప్రదర్శిస్తుంది. ఇందులో డిటర్మినిజం (నిశ్చయత్వం), స్థిర-పొడవు అవుట్‌పుట్, ఏక-దిశాత్మక లక్షణాలు మరియు మెర్కిల్ వృక్షం (Merkle trees) గురించి వివరించబడింది.

ఈ ట్రాన్స్‌క్రిప్ట్ ఆస్టిన్ గ్రిఫిత్ ప్రచురించిన అసలు వీడియో ట్రాన్స్‌క్రిప్ట్ (opens in a new tab) యొక్క యాక్సెస్ చేయగల కాపీ. చదవడానికి సులభంగా ఉండేలా ఇది కొద్దిగా సవరించబడింది.

హాష్ ఫంక్షన్ల పరిచయం (0:00)

ఇది ETH.BUILD అనే సిరీస్‌లో మొదటి వీడియో. ఈ సాధనాన్ని ఉపయోగించడానికి మీరు eth.build కి వెళ్లవచ్చు, కానీ ఎథీరియం పైన నిర్మించేటప్పుడు విషయాలు ఎలా పనిచేస్తాయో ఒక అవగాహన పొందడానికి మరియు ప్రయోగాలు చేయడానికి మాత్రమే ఇది ఉద్దేశించబడింది.

మనం చూడబోయే మొదటి మాడ్యూల్ హాష్ ఫంక్షన్. అసలు హాష్ ఫంక్షన్ అంటే ఏమిటి? సరే, ఇది ఒక వేలిముద్ర లాంటిది. మీకు ఒక ఇన్‌పుట్ ఉంటుంది — అది ఏదైనా కావచ్చు — కానీ ప్రస్తుతానికి మనం "hello world" అనే టెక్స్ట్‌తో వెళ్దాం. మరొక వైపు మీకు ఒక అవుట్‌పుట్ వస్తుంది, మరియు ఆ అవుట్‌పుట్ 64-అక్షరాల హెక్సాడెసిమల్ స్ట్రింగ్. "0x" ప్రిఫిక్స్ కారణంగా ఇది 66 అక్షరాలు అని చెబుతుంది, కానీ ఇది నిజానికి 64-అక్షరాల హెక్స్ స్ట్రింగ్.

హాష్‌లను రంగులుగా దృశ్యీకరించడం (0:50)

మీరు హెక్స్‌ని చూస్తున్నట్లయితే, అది ఒక రంగులా కనిపిస్తుంది, మరియు మనం ఇక్కడ చూస్తున్న దాన్ని రంగుగా మార్చితే వివరించడం సులభం కావచ్చు. కాబట్టి మనం చేయబోయేది ఏమిటంటే, స్ట్రింగ్ ఏదైనా సరే దాని మొదటి ఆరు అక్షరాలను తీసుకుని దానిని రంగుగా ప్రదర్శించడం. మనం దానిని చూస్తే, అది ఒక చక్కని ఊదా (purple) రంగులో ఉన్నట్లు చూస్తాము.

నా పేరు ఏ రంగులో ఉందో చూద్దాం — ఇదిగో, ఒక చక్కని అటవీ ఆకుపచ్చ (forest green) రంగు. ఇప్పుడు మళ్లీ "hello world" కి వెళ్దాం — అది మళ్లీ అదే ఊదా రంగు.

డిటర్మినిజం మరియు స్థిర-పొడవు అవుట్‌పుట్ (1:38)

మనం ఇప్పుడే కనుగొన్నది ఏమిటంటే ఇది డిటర్మినిస్టిక్ (నిశ్చయాత్మకమైనది). ప్రాథమికంగా, మనం ఇన్‌పుట్‌గా ఏమి ఇచ్చినా, మరొక వైపు ఎల్లప్పుడూ అదే అవుట్‌పుట్‌ను పొందుతాము.

రెండవ లక్షణం ఏమిటంటే, మీరు ఏ పరిమాణంలో ఉన్న దేనినైనా ఇన్‌పుట్‌గా ఇవ్వవచ్చు. నేను కీబోర్డ్‌పై ఇష్టమొచ్చినట్లు టైప్ చేసి రంగు మారడాన్ని చూడగలను, కానీ ఆ స్ట్రింగ్ అదే 66-అక్షరాల పొడవులో ఉంటుంది. మీరు ఇక్కడ ఏమి పెట్టినా — ఒక ఫైల్ అయినా సరే — నేను నా అబ్బాయి లియో (Leo) ఫైల్‌ను డ్రాప్ చేసి, దానిని హాష్‌గా పెట్టి ఒక చక్కని నారింజ రంగును పొందగలను. ఆ తర్వాత నేను ఒక BIP వర్డ్ లిస్ట్ టెక్స్ట్ డాక్యుమెంట్‌ను డ్రాప్ చేయగలను మరియు అది ఈ చక్కని లేత నీలం రంగులో ఉంటుంది. నేను మళ్లీ లియో ఫైల్‌ను తీసుకువస్తే, అది ఏ రంగులో ఉంటుందో ఊహించండి? అది ఆ నారింజ రంగులోనే ఉంటుందని మనకు తెలుసు. మీరు ఇన్‌పుట్‌గా ఇచ్చిన దానికి ఈ డిటర్మినిస్టిక్ వేలిముద్రను పొందుతారు.

ఏక-దిశాత్మక లక్షణం (2:37)

తదుపరి అత్యంత ముఖ్యమైన లక్షణం ఏమిటంటే ఇది ఏక-దిశాత్మకమైనది (one-directional). నేను మళ్లీ "hello world" అని ఇస్తే, మనకు ఈ "4717" హాష్ వస్తుంది. మనం ఆ హాష్‌ను తీసుకుని ఎవరికైనా పంపి, "ఇదిగో నా రహస్యం యొక్క హాష్ — మీరు నా రహస్యాన్ని ఊహించగలిగితే, నేను మీకు వంద బక్స్ (డాలర్లు) ఇస్తాను" అని చెబితే, వారు దానికి దరిదాపుల్లోకి కూడా రాలేరు.

హాష్ "4717" తో మొదలవుతుందని అనుకుందాం మరియు వారు సరిపోలేదాన్ని కనుగొనడానికి ప్రయత్నించడం ప్రారంభిస్తారు. మీరు కేవలం చిన్న అక్షరాలను మార్చి దరిదాపుల్లోకి రాలేరు — మీకు అది వస్తుంది లేదా రాదు. మీరు ప్రాథమికంగా బ్రూట్-ఫోర్స్ (brute-force) పద్ధతిలో ఊహించాల్సిందే. వారు ఒకవేళ "hello world" అని ఊహిస్తే, వారికి సమాధానం దొరుకుతుంది, కానీ వారు దానిని ఊహించకపోతే, వారికి అది ఎప్పటికీ దొరకదు. మీరు దరిదాపుల్లోకి వస్తున్నారో లేదో చెప్పడానికి ఎలాంటి మార్గం లేదు.

గూఢలిపి శాస్త్రం (cryptography) తో పనిచేసేటప్పుడు ఒక డెవలపర్‌గా ఇది కొన్నిసార్లు నిరాశ కలిగిస్తుందని మీరు గుర్తిస్తారు, ఎందుకంటే ఇది పనిచేస్తుంది లేదా పనిచేయదు — మీరు దరిదాపుల్లోకి వస్తున్నారో లేదో అనే దాని గురించి మీకు ఎలాంటి సూచనలు లభించవు. కానీ అది ఒక మంచి విషయం. హాష్ ఫంక్షన్ నుండి మనం కోరుకునే లక్షణం అదే.

హాష్ ఫంక్షన్ లక్షణాల సారాంశం (3:43)

కాబట్టి మనం తెలుసుకున్నది: ఏ పరిమాణంలో ఉన్న దేనినైనా హాష్ ఫంక్షన్‌లోకి పంపవచ్చు, మరియు అది ఆ డేటాకు సంబంధించిన ఖచ్చితమైన 64-అక్షరాల హెక్సాడెసిమల్ వేలిముద్రను బయటకు ఇస్తుంది. ఇది డిటర్మినిస్టిక్. ఇది ఏక-దిశాత్మకమైనది — మీరు వెనక్కి వెళ్లలేరు. హాష్‌ను తయారు చేయడం చాలా సులభం, కానీ హాష్ యొక్క రహస్యాన్ని ఊహించడం చాలా కష్టం.

మెర్కిల్ వృక్షం మరియు హాష్‌లను కలపడం (4:06)

దీనితో మనం మెర్కిల్ వృక్షం లాంటి కొన్ని అద్భుతమైన పనులను చేయవచ్చు. మనకు మూడు ఇన్‌పుట్‌లు ఉన్నాయి, మరియు మనం వాటిని ఒకదానితో ఒకటి కలపవచ్చు. మనం ఆ హాష్‌లన్నింటినీ కలపవచ్చు మరియు ఆ కలయికను మళ్లీ హాష్ చేయవచ్చు.

ఇక్కడ ఉన్న ఈ రంగు — ఆ ఊదా రంగు — ఈ హాష్‌లన్నింటి యొక్క హాష్‌ను సూచిస్తుంది. నేను "hello world" ని "hello world one" గా మార్చితే, ఆ ఊదా రంగు మారిపోతుంది. ఈ ఇన్‌పుట్‌లలో దేనిలోనైనా జరిగే చిన్న మార్పు అయినా సరే తుది హాష్ మారడానికి కారణమవుతుంది. మీరు అన్ని రకాల డేటాను అన్ని రకాల విభిన్న మార్గాల్లో తీసుకురావచ్చు — హాష్‌ల వృక్షం, అంటే మెర్కిల్ వృక్షం కలిగి ఉండవచ్చు — లేదా వరుసగా అనేక బ్లాక్‌లను కలిగి ఉండవచ్చు, మరియు ఈ తుది హాష్ వీటన్నింటిపై ఆధారపడి ఉంటుంది. దారిలో ఎక్కడైనా ఏ చిన్న విషయం మారినా, తుది హాష్ మారిపోతుంది.

ముఖ్యమైన సారాంశం (5:53)

ముఖ్యమైన సారాంశం ఏమిటంటే, హాష్ ఫంక్షన్ ప్రాథమికంగా ఒక వేలిముద్ర లాంటిది. నేను ఏదైనా టైప్ చేస్తే, అది నేను ఆశించే అవుట్‌పుట్‌ను డిటర్మినిస్టిక్‌గా ఇస్తుంది. అదే హాష్ ఫంక్షన్ — ETH.BUILD కి స్వాగతం. మనం కొన్ని అద్భుతమైన విషయాలను రూపొందిద్దాం మరియు ఈ ప్రయాణంలో చాలా నేర్చుకుందాం.

ఈ పేజీ ఉపయోగకరంగా ఉందా?