ఈ వచనం కథనాల శ్రేణికి కొనసాగింపు, దీనిలో నేను ఈ సంవత్సరం విడుదలకు సిద్ధం అవుతున్న (బహుశా) పంపిణీ చేయబడిన నెట్వర్క్ టెలిగ్రామ్ ఓపెన్ నెట్వర్క్ (TON) నిర్మాణాన్ని పరిశీలిస్తాను. IN
ఒకవేళ, ఈ నెట్వర్క్ అభివృద్ధితో నాకు ఎలాంటి సంబంధం లేదని మరియు మొత్తం మెటీరియల్ ఓపెన్ (ధృవీకరించబడనప్పటికీ) మూలం నుండి సేకరించబడిందని నేను మీకు గుర్తు చేస్తాను -
ఈ రోజు మనం TON యొక్క ప్రధాన భాగాన్ని పరిశీలిస్తాము - బ్లాక్చెయిన్.
ప్రాథమిక అంశాలు
ఖాతా (ఖాతా) 256-బిట్ సంఖ్య ద్వారా గుర్తించబడిన డేటా సమితి ఖాతా గుర్తింపు (చాలా తరచుగా ఇది ఖాతా యజమాని యొక్క పబ్లిక్ కీ). బేస్ కేసులో (క్రింద చూడండి సున్నా పనిచెయిన్), ఈ డేటా వినియోగదారు బ్యాలెన్స్ను సూచిస్తుంది. నిర్దిష్ట "ఆక్రమించు" ఖాతా గుర్తింపు ఎవరైనా చేయవచ్చు, కానీ దాని విలువ కొన్ని నిబంధనల ప్రకారం మాత్రమే మార్చబడుతుంది.
తెలివైన ఒప్పందం (స్మార్ట్-కాంట్రాక్ట్) సారాంశంలో, ఇది స్మార్ట్ కాంట్రాక్ట్ కోడ్ మరియు దాని వేరియబుల్స్ నిల్వతో అనుబంధించబడిన ఖాతా యొక్క ప్రత్యేక సందర్భం. “వాలెట్” విషయంలో మీరు సాపేక్షంగా సరళమైన మరియు ముందుగా నిర్ణయించిన నిబంధనల ప్రకారం దాని నుండి డబ్బును డిపాజిట్ చేయవచ్చు మరియు ఉపసంహరించుకోవచ్చు, అప్పుడు స్మార్ట్ ఒప్పందం విషయంలో ఈ నియమాలు దాని కోడ్ రూపంలో వ్రాయబడతాయి (ఒక నిర్దిష్ట ట్యూరింగ్-పూర్తిలో ప్రోగ్రామింగ్ భాష).
బ్లాక్చెయిన్ రాష్ట్రం (బ్లాక్చెయిన్ స్థితి) అన్ని ఖాతాలు/స్మార్ట్ కాంట్రాక్ట్ల స్థితుల సమితి (ఒక వియుక్త కోణంలో, హ్యాష్ టేబుల్, ఇక్కడ కీలు ఖాతా ఐడెంటిఫైయర్లు మరియు విలువలు ఖాతాలలో నిల్వ చేయబడిన డేటా).
సందేశం (సందేశం) పైన నేను “క్రెడిట్ మరియు డెబిట్ మనీ” అనే వ్యక్తీకరణను ఉపయోగించాను - ఇది సందేశానికి ప్రత్యేక ఉదాహరణ (“బదిలీ N గ్రాములు ఖాతా నుండి ఖాతా_1 ఖాతాకు ఖాతా_2"). సహజంగానే, ఖాతా యొక్క ప్రైవేట్ కీని కలిగి ఉన్న నోడ్ మాత్రమే అటువంటి సందేశాన్ని పంపగలదు ఖాతా_1 - మరియు సంతకంతో దీన్ని నిర్ధారించగలరు. అటువంటి సందేశాలను సాధారణ ఖాతాకు బట్వాడా చేసే ఫలితం దాని బ్యాలెన్స్లో పెరుగుదల, మరియు స్మార్ట్ ఒప్పందం యొక్క ఫలితం దాని కోడ్ను అమలు చేయడం (ఇది సందేశం యొక్క రసీదును ప్రాసెస్ చేస్తుంది). వాస్తవానికి, ఇతర సందేశాలు కూడా సాధ్యమే (ద్రవ్య మొత్తాలను కాదు, స్మార్ట్ ఒప్పందాల మధ్య ఏకపక్ష డేటాను బదిలీ చేయడం).
లావాదేవీ (లావాదేవీ) సందేశం డెలివరీ చేయబడిందనే వాస్తవాన్ని లావాదేవీ అంటారు. లావాదేవీలు బ్లాక్చెయిన్ స్థితిని మారుస్తాయి. బ్లాక్చెయిన్లోని బ్లాక్లను రూపొందించే లావాదేవీలు (మెసేజ్ డెలివరీ రికార్డులు). ఈ విషయంలో, మీరు బ్లాక్చెయిన్ స్థితిని పెరుగుతున్న డేటాబేస్గా భావించవచ్చు - అన్ని బ్లాక్లు డేటాబేస్ యొక్క ప్రస్తుత స్థితిని పొందడానికి వరుసగా వర్తింపజేయాల్సిన “వ్యత్యాసాలు”. ఈ "డిఫ్స్" (మరియు వాటి నుండి పూర్తి స్థితిని పునరుద్ధరించడం) ప్యాకేజింగ్ యొక్క ప్రత్యేకతలు తదుపరి వ్యాసంలో చర్చించబడతాయి.
TONలో బ్లాక్చెయిన్: ఇది ఏమిటి మరియు ఎందుకు?
మునుపటి వ్యాసంలో పేర్కొన్నట్లుగా, బ్లాక్చెయిన్ అనేది డేటా నిర్మాణం, వీటిలో మూలకాలు (బ్లాక్లు) “గొలుసు”గా ఆర్డర్ చేయబడతాయి మరియు గొలుసులోని ప్రతి తదుపరి బ్లాక్ మునుపటి దాని యొక్క హాష్ను కలిగి ఉంటుంది. వ్యాఖ్యలు ప్రశ్న అడిగారు: మనకు ఇప్పటికే DHT - పంపిణీ చేయబడిన హాష్ టేబుల్ ఉన్నప్పుడు మనకు అలాంటి డేటా నిర్మాణం ఎందుకు అవసరం? సహజంగానే, కొంత డేటాను DHTలో నిల్వ చేయవచ్చు, కానీ ఇది చాలా “సున్నితమైన” సమాచారానికి మాత్రమే అనుకూలంగా ఉంటుంది. క్రిప్టోకరెన్సీ బ్యాలెన్స్లు DHTలో నిల్వ చేయబడవు - ప్రధానంగా తనిఖీలు లేకపోవడం వల్ల సమగ్రత. వాస్తవానికి, బ్లాక్చెయిన్ నిర్మాణం యొక్క మొత్తం సంక్లిష్టత దానిలో నిల్వ చేయబడిన డేటాతో జోక్యాన్ని నిరోధించడానికి పెరుగుతుంది.
అయినప్పటికీ, TONలోని బ్లాక్చెయిన్ చాలా ఇతర పంపిణీ వ్యవస్థల కంటే చాలా క్లిష్టంగా కనిపిస్తుంది - మరియు రెండు కారణాల వల్ల. మొదటిది అవసరాన్ని తగ్గించాలనే కోరిక ఫోర్కులు. సాంప్రదాయ క్రిప్టోకరెన్సీలలో, అన్ని పారామితులు ప్రారంభ దశలో సెట్ చేయబడతాయి మరియు వాటిని మార్చడానికి చేసే ఏదైనా ప్రయత్నం వాస్తవానికి "ప్రత్యామ్నాయ క్రిప్టోకరెన్సీ విశ్వం" యొక్క ఆవిర్భావానికి దారి తీస్తుంది. రెండవ కారణం అణిచివేతకు మద్దతు (ముక్కలు చేయడం, ముక్కలు చేయడం) బ్లాక్చెయిన్. బ్లాక్చెయిన్ అనేది కాలక్రమేణా చిన్నదిగా మారలేని నిర్మాణం; మరియు సాధారణంగా నెట్వర్క్ యొక్క ఆపరేషన్కు బాధ్యత వహించే ప్రతి నోడ్ పూర్తిగా నిల్వ చేయడానికి బలవంతంగా ఉంటుంది. సాంప్రదాయ (కేంద్రీకృత) సిస్టమ్లలో, అటువంటి సమస్యలను పరిష్కరించడానికి షార్డింగ్ ఉపయోగించబడుతుంది: డేటాబేస్లోని కొన్ని రికార్డులు ఒక సర్వర్లో ఉన్నాయి, కొన్ని మరొకదానిలో మొదలైనవి. క్రిప్టోకరెన్సీల విషయంలో, అటువంటి కార్యాచరణ ఇప్పటికీ చాలా అరుదు - ప్రత్యేకించి, అసలు ప్రణాళిక చేయని సిస్టమ్కు షార్డింగ్ను జోడించడం కష్టం అనే వాస్తవం కారణంగా.
పైన పేర్కొన్న రెండు సమస్యలను పరిష్కరించడానికి TON ఎలా ప్లాన్ చేస్తుంది?
బ్లాక్చెయిన్ కంటెంట్. వర్క్చెయిన్లు.
అన్నింటిలో మొదటిది, బ్లాక్చెయిన్లో నిల్వ చేయడానికి ప్రణాళిక చేయబడిన దాని గురించి మాట్లాడుదాం. ఖాతాల స్థితులు (బేస్ కేస్లోని “వాలెట్లు”) మరియు స్మార్ట్ కాంట్రాక్ట్లు అక్కడ నిల్వ చేయబడతాయి (సరళత కోసం, ఇది ఖాతాల మాదిరిగానే ఉంటుందని మేము అనుకుంటాము). సారాంశంలో, ఇది సాధారణ హాష్ పట్టిక అవుతుంది - దానిలోని కీలు ఐడెంటిఫైయర్లుగా ఉంటాయి ఖాతా గుర్తింపు, మరియు విలువలు వంటి వాటిని కలిగి ఉన్న డేటా నిర్మాణాలు:
- సంతులనం;
- స్మార్ట్ కాంట్రాక్ట్ కోడ్ (స్మార్ట్ కాంట్రాక్ట్లకు మాత్రమే);
- స్మార్ట్ కాంట్రాక్ట్ డేటా నిల్వ (స్మార్ట్ కాంట్రాక్టుల కోసం మాత్రమే);
- గణాంకాలు;
- (ఐచ్ఛిక) డిఫాల్ట్ account_id ద్వారా ఖాతా నుండి బదిలీల కోసం పబ్లిక్ కీ;
- అవుట్గోయింగ్ సందేశాల క్యూ (ఇక్కడ అవి స్వీకర్తకు ఫార్వార్డ్ చేయడానికి నమోదు చేయబడ్డాయి);
- ఈ ఖాతాకు బట్వాడా చేయబడిన తాజా సందేశాల జాబితా.
పైన చెప్పినట్లుగా, బ్లాక్లు స్వయంగా లావాదేవీలను కలిగి ఉంటాయి - వివిధ account_id ఖాతాలకు సందేశాలు పంపిణీ చేయబడతాయి. అయితే, account_idతో పాటు, సందేశాలు 32-బిట్ ఫీల్డ్ను కూడా కలిగి ఉంటాయి వర్క్చెయిన్_ఐడి - ఐడెంటిఫైయర్ అని పిలవబడేది పనిచెయిన్ (పనిచెయిన్, పని చేసే బ్లాక్చెయిన్) విభిన్న కాన్ఫిగరేషన్లతో ఒకదానికొకటి స్వతంత్రంగా అనేక బ్లాక్చెయిన్లను కలిగి ఉండటానికి ఇది మిమ్మల్ని అనుమతిస్తుంది. ఈ సందర్భంలో, workchain_id = 0 ప్రత్యేక సందర్భంగా పరిగణించబడుతుంది, సున్నా పనిచెయిన్ - దానిలోని బ్యాలెన్స్లు TON (గ్రామ్స్) క్రిప్టోకరెన్సీకి అనుగుణంగా ఉంటాయి. చాలా మటుకు, మొదట, ఇతర వర్క్చెయిన్లు అస్సలు ఉండవు.
శార్డ్ చైన్స్. అనంతమైన షార్డింగ్ నమూనా.
కానీ బ్లాక్చెయిన్ల సంఖ్యలో పెరుగుదల అక్కడ ఆగదు. షార్డింగ్తో వ్యవహరిస్తాం. ప్రతి ఖాతా (account_id) దాని స్వంత బ్లాక్చెయిన్కు కేటాయించబడిందని ఊహించుదాం - దానికి వచ్చిన అన్ని సందేశాలను కలిగి ఉంటుంది - మరియు అటువంటి అన్ని బ్లాక్చెయిన్ల రాష్ట్రాలు ప్రత్యేక నోడ్లలో నిల్వ చేయబడతాయి.
వాస్తవానికి, ఇది చాలా వ్యర్థమైనది: చాలా మటుకు, వీటిలో ప్రతి ఒక్కటి షార్డ్చైన్లు (షార్డ్చైన్, షార్డ్ బ్లాక్చెయిన్) లావాదేవీలు చాలా అరుదుగా వస్తాయి మరియు చాలా శక్తివంతమైన నోడ్లు అవసరమవుతాయి (ముందుకు చూస్తే, మేము మొబైల్ ఫోన్లలోని క్లయింట్ల గురించి మాత్రమే మాట్లాడటం లేదని నేను గమనించాను - కానీ తీవ్రమైన సర్వర్ల గురించి).
కాబట్టి, shardchains వారి ఐడెంటిఫైయర్ల బైనరీ ప్రిఫిక్స్ల ద్వారా ఖాతాలను మిళితం చేస్తాయి: ఒక shardchainకి 0110 ఉపసర్గ ఉంటే, అది ఈ సంఖ్యలతో ప్రారంభమయ్యే అన్ని account_idల లావాదేవీలను కలిగి ఉంటుంది. ఈ షార్డ్_ఉపసర్గ 0 నుండి 60 బిట్ల వరకు పొడవును కలిగి ఉంటుంది - మరియు ప్రధాన విషయం ఏమిటంటే అది డైనమిక్గా మారవచ్చు.
షార్డ్చెయిన్లలో ఒకటి చాలా లావాదేవీలను స్వీకరించడం ప్రారంభించిన వెంటనే, దానిపై పనిచేసే నోడ్లు ముందుగా నిర్ణయించిన నిబంధనల ప్రకారం, దానిని ఇద్దరు పిల్లలుగా “విభజిస్తాయి” - వారి ఉపసర్గలు ఒక బిట్ పొడవుగా ఉంటాయి (మరియు వారిలో ఒకరికి ఈ బిట్ ఉంటుంది 0కి సమానం, మరియు మరొకటి - 1). ఉదాహరణకి, షార్డ్_ఉపసర్గ = 0110b గా విడిపోతుంది 01100b మరియు 01101b. ప్రతిగా, రెండు "పొరుగు" షార్డ్చైన్లు తగినంతగా (కొంతకాలం వరకు) అనుభూతి చెందడం ప్రారంభిస్తే, అవి మళ్లీ విలీనం అవుతాయి.
ఈ విధంగా, "దిగువ నుండి" షార్డింగ్ చేయబడుతుంది - ప్రతి ఖాతాకు దాని స్వంత షార్డ్ ఉందని మేము అనుకుంటాము, అయితే ప్రస్తుతానికి అవి ఉపసర్గల ద్వారా "కలిసి అతుక్కొని ఉంటాయి". దీని అర్థం ఇదే అనంతమైన షార్డింగ్ నమూనా (అనంతమైన షార్డింగ్ నమూనా).
విడిగా, వర్క్చెయిన్లు వాస్తవంగా మాత్రమే ఉన్నాయని నేను నొక్కి చెప్పాలనుకుంటున్నాను - నిజానికి, వర్క్చెయిన్_ఐడి ఇది నిర్దిష్ట షార్డ్చైన్ యొక్క ఐడెంటిఫైయర్లో భాగం. అధికారిక పరంగా, ప్రతి షార్డ్చైన్ ఒక జత సంఖ్యల ద్వారా నిర్వచించబడుతుంది (వర్క్చెయిన్_ఐడి, షార్డ్_ఉపసర్గ).
లోపం దిద్దుబాటు. నిలువు బ్లాక్చెయిన్లు.
సాంప్రదాయకంగా, బ్లాక్చెయిన్లో ఏదైనా లావాదేవీ "రాతిలో అమర్చబడింది"గా పరిగణించబడుతుంది. అయినప్పటికీ, TON విషయంలో, "చరిత్రను తిరిగి వ్రాయడం" సాధ్యమవుతుంది - ఒకవేళ ఎవరైనా (అని పిలవబడేది. జాలరి ముడి) బ్లాక్లలో ఒకటి తప్పుగా సంతకం చేయబడిందని రుజువు చేస్తుంది. ఈ సందర్భంలో, సంబంధిత షార్డ్చైన్కు ఒక ప్రత్యేక దిద్దుబాటు బ్లాక్ జోడించబడుతుంది, బ్లాక్ యొక్క హాష్ సరిదిద్దబడింది (మరియు షార్డ్చెయిన్లోని చివరి బ్లాక్ కాదు). షార్డ్చెయిన్ను అడ్డంగా వేయబడిన బ్లాక్ల గొలుసుగా భావించి, సరిదిద్దే బ్లాక్ తప్పు బ్లాక్కు కుడి వైపున కాకుండా పై నుండి జోడించబడిందని మేము చెప్పగలం - కాబట్టి ఇది చిన్న “నిలువు బ్లాక్చెయిన్”లో భాగమవుతుందని పరిగణించబడుతుంది. . కాబట్టి, షార్డ్చెయిన్లు అని మనం చెప్పగలం రెండు డైమెన్షనల్ బ్లాక్చెయిన్లు.
ఒక తప్పు బ్లాక్ తర్వాత, అది చేసిన మార్పులు తదుపరి బ్లాక్ల ద్వారా సూచించబడితే (అనగా, చెల్లని వాటి ఆధారంగా కొత్త లావాదేవీలు జరిగాయి), సరిదిద్దినవి కూడా ఈ బ్లాక్లకు “పైన” జోడించబడతాయి. బ్లాక్లు "ప్రభావిత" సమాచారాన్ని ప్రభావితం చేయకపోతే, ఈ "దిద్దుబాటు తరంగాలు" వాటికి వర్తించవు. ఉదాహరణకు, పై ఉదాహరణలో, మొదటి బ్లాక్ యొక్క లావాదేవీ, ఖాతా C యొక్క బ్యాలెన్స్ని పెంచడం, తప్పుగా గుర్తించబడింది - కాబట్టి, మూడవ బ్లాక్లో ఈ ఖాతా యొక్క బ్యాలెన్స్ని తగ్గించే లావాదేవీని కూడా రద్దు చేయాలి మరియు ఒక దిద్దుబాటు బ్లాక్ బ్లాక్ పైన కూడా కట్టుబడి ఉండాలి.
దిద్దుబాటు బ్లాక్లు అసలైన వాటికి “పైన” ఉన్నట్లుగా చిత్రీకరించబడినప్పటికీ, వాస్తవానికి అవి సంబంధిత బ్లాక్చెయిన్ చివరిలో జోడించబడతాయి (అవి కాలక్రమానుసారంగా ఉండాలి). రెండు డైమెన్షనల్ లొకేషన్ బ్లాక్చెయిన్లోని ఏ పాయింట్కి అవి “లింక్” చేయబడతాయో మాత్రమే చూపిస్తుంది (వాటిలో ఉన్న అసలైన బ్లాక్ యొక్క హాష్ ద్వారా).
"గతాన్ని మార్చే" నిర్ణయం ఎంత మంచిదో మీరు విడిగా తత్వశాస్త్రం చేయవచ్చు. షార్డ్చైన్లో తప్పు బ్లాక్ కనిపించే అవకాశాన్ని మనం అంగీకరిస్తే, తప్పు దిద్దుబాటు బ్లాక్ కనిపించే అవకాశాన్ని మనం నివారించలేము. ఇక్కడ, నేను చెప్పగలిగినంతవరకు, కొత్త బ్లాక్లపై ఏకాభిప్రాయానికి వచ్చే నోడ్ల సంఖ్యలో తేడా ఉంది - ప్రతి షార్డ్చెయిన్లో చాలా తక్కువ సంఖ్యలో వ్యక్తులు పని చేస్తారు."పనిచేయు సమూహము»నోడ్లు (ఇది చాలా తరచుగా దాని కూర్పును మారుస్తుంది), మరియు దిద్దుబాటు బ్లాక్లను ప్రవేశపెట్టడానికి ప్రతి ఒక్కరి సమ్మతి అవసరం వాలిడేటర్ నోడ్స్. నేను తదుపరి కథనంలో వాలిడేటర్లు, వర్క్గ్రూప్లు మరియు ఇతర నోడ్ పాత్రల గురించి మరింత మాట్లాడతాను.
వాటన్నింటినీ పాలించడానికి ఒక బ్లాక్చెయిన్
వివిధ రకాల బ్లాక్చెయిన్ల గురించి పైన జాబితా చేయబడిన చాలా సమాచారం ఉంది, అది కూడా ఎక్కడో నిల్వ చేయబడాలి. ముఖ్యంగా, మేము ఈ క్రింది సమాచారం గురించి మాట్లాడుతున్నాము:
- వర్క్చెయిన్ల సంఖ్య మరియు కాన్ఫిగరేషన్ల గురించి;
- షార్డ్చైన్ల సంఖ్య మరియు వాటి ఉపసర్గల గురించి;
- ఏ నోడ్లు ప్రస్తుతం ఏ షార్డ్చెయిన్లకు బాధ్యత వహిస్తాయి అనే దాని గురించి;
- అన్ని షార్డ్చెయిన్లకు చివరి బ్లాక్ల హాష్లు జోడించబడ్డాయి.
మీరు ఊహించినట్లుగా, ఈ విషయాలన్నీ మరొక బ్లాక్చెయిన్ నిల్వలో రికార్డ్ చేయబడ్డాయి - మాస్టర్చైన్ (మాస్టర్చైన్, మాస్టర్ బ్లాక్చెయిన్) దాని బ్లాక్లలోని అన్ని షార్డ్చెయిన్ల బ్లాక్ల నుండి హాష్లు ఉండటం వల్ల, ఇది సిస్టమ్ను అత్యంత కనెక్ట్ చేస్తుంది. దీని అర్థం, ఇతర విషయాలతోపాటు, షార్డ్చైన్లలో బ్లాక్ల ఉత్పత్తి అయిన వెంటనే మాస్టర్చైన్లో కొత్త బ్లాక్ యొక్క తరం సంభవిస్తుంది - షార్డ్చెయిన్లలోని బ్లాక్లు దాదాపు ప్రతి 5 సెకన్లకు ఒకేసారి కనిపిస్తాయి మరియు తదుపరి బ్లాక్ masterchain - ఆ తర్వాత ఒక సెకను.
అయితే ఈ టైటానిక్ పనిని అమలు చేయడానికి ఎవరు బాధ్యత వహిస్తారు - సందేశాలు పంపడం, స్మార్ట్ ఒప్పందాలను అమలు చేయడం, షార్డ్చెయిన్లు మరియు మాస్టర్చెయిన్లలో బ్లాక్లను రూపొందించడం మరియు లోపాల కోసం బ్లాక్లను తనిఖీ చేయడం కూడా? టెలిగ్రామ్ క్లయింట్ ఇన్స్టాల్ చేయబడిన మిలియన్ల మంది వినియోగదారుల ఫోన్ల ద్వారా ఇదంతా రహస్యంగా జరుగుతుందా? లేదా, బహుశా, డ్యూరోవ్ బృందం వికేంద్రీకరణ యొక్క ఆలోచనలను వదిలివేస్తుంది మరియు వారి సర్వర్లు పాత పద్ధతిలో చేస్తాయా?
వాస్తవానికి, ఒకటి లేదా మరొకటి సరైనది కాదు. కానీ ఈ వ్యాసం యొక్క అంచులు త్వరగా అయిపోతున్నాయి, కాబట్టి మేము నోడ్ల యొక్క వివిధ పాత్రల గురించి (వాటిలో కొన్నింటిని ప్రస్తావించడాన్ని మీరు ఇప్పటికే గమనించి ఉండవచ్చు), అలాగే వారి పని యొక్క మెకానిక్స్ గురించి తదుపరి భాగంలో మాట్లాడుతాము.
మూలం: www.habr.com