பைசாந்தியப் படைத்தலைவனும், ப்ளாக்செயினும்...
Byzantine General & Blockchain
#ஹிலால்

மறைச்சொல் மொழிகளில் (cryptography) இராணுவச் செய்திகளை பரிமாற்றப்படுவது பண்டைய காலத்திலிருந்து நடைபெற்றுவருகிறது. அப்படி ஒரு கற்பனை நிகழ்ச்சி தான் இந்த பைசாந்திய படைத்தலைவன் பிரச்சனை. ஒரு ஊரை
பைசாந்தியப் படை இருபுறமும் முற்றுகையிட்டது. அவ்வூர் பெயரை பகையூர் என்று வைத்துக்கொள்வோம். பைசாந்தியப் படை வடபுறமும் தென்புறமும் சூழ்ந்துள்ளன. இப்போது ஒரு சிக்கல். பகையூர் படையால் ஏதேனும் ஒருபுறம் தாக்குப்பிடித்து பைசாந்தியரை வெற்றிகொள்ள இயலும். இருபுறமும் ஒரே நேரத்தில் அது
எதிர்த்துப் போரிட்டால் தோற்றுவிடும். ஆகவே பைசாந்தியப் படைகள் இருபுறமும் ஒரே நேரத்தில் தாக்குதலைத் தொடுக்கவேண்டும். ஆகவே தாக்குதல் குறித்த நாள் / நேரம் ஆகியவற்றை வடபுறமிருந்து தூதுவர் மூலம் தெற்குப்புறம் தெரிவிக்கவேண்டும். அதாவது “திங்கள் காலை 7:00 மணிக்கு ஆயத்தமாகுங்கள்” என்ற
செய்தியை அனுப்பவேண்டும். அத்தூதுவர் செய்தியுடன் பகையூர் வழியே தான் சென்றாகவேண்டும். அப்படிச் செல்லும் போது யாரும் அத்தூதுவரின் செய்தியை மாற்றிவிட்டால்? “புதன் அன்று தயாராகு” என வடபகுதி படை அனுப்புவது போல் செய்துவிட்டால்? or தூதுவரே எதிரிகளின் கைப்பாவையாக மாறிவிட்டால்? அந்த தவறான
செய்தியை நம்பி பைசாந்திய இரு படைகளும் வெவ்வேறு நாளில் ஆயத்தமாவார்கள். பகையூர் படை தனித்தனியாக பைசாந்தியரை தோற்கடிப்பர். அல்லவா? ஆகவே செய்தியை யாராலும் மாற்ற இயலாதபடி (immutable) செய்யவேண்டும். அதற்கு முன் Secured Hash Algorithm (SHA) என்றால் என்ன என பார்ப்போம். ‘நான்தான் இந்த
செய்தியை உங்களுக்கு அனுப்பினேன்’ என உறுதி செய்யும் நிரலாக்கல் தான் SHA. “திங்களன்று ஆயத்தமாகுங்கள்” என்று செய்தியை எழுதிவிட்டு அதனருகில் சில எண்களை (nonce) எழுதுவேன். அவ்விரண்டையும் சேர்த்து SHA எழுத்தாக மாற்றி பார்க்க வேண்டும். உங்களிடம் முன்பே BBBF5 என்று முதல் 5 இலக்கம் வந்தால
அது என் செய்தி என்று கூறியிருப்பேன். என்னுடைய செய்தியை யாரேனும் மாற்றினால் மொத்த SHA எழுத்தும் மாறிவிடும். பின் BBBF5 என்று துவங்கும் சொல்லை கட்டமைப்பது கடினம். https://passwordsgenerator.net/sha256-hash-generator/ நீங்களும் இந்த இணைப்பில் சென்று SHA எழுத்துகளை எழுதி விளையாடினால் blockchain பற்றிய அறிமுகம்
கிட்டும். இப்படி தான் பைசாந்திய படைத்தலைவன் தென்பகுதிக்கு செய்தி அனுப்பினான். “திங்களன்று ஆயத்தமாகுங்கள்” xxxxxx என்ற nonce ஐயும் இணைத்து அனுப்பினான். நமக்கு எளிதாக புரிய, அவர்களின் எல்லா செய்தியின் hash-ன் முதல் 5 இலக்கம் 0-ல் தொடங்கும் என்ற ஏற்பாடில் இருப்பதாகக் கொள்வோம்.
ஒருவேளை பகையூர் படையினர் ஒரு blockஐ எடுத்து வேறு தேதியிட்டு nonce ஐ முயன்று சேர்த்து 00000 என்று தொடங்குவது போல் செய்துவிட்டால்? பிரச்சனை ஆகிவிடும் இல்லையா? ம்... ஆகவே அப்படி செய்வதை பைசாந்தியர்கள் கடினமாக்கவேண்டும். இதற்கு பல blockகள் செய்யவேண்டும். “திங்களன்று ஆயத்தமாகலாம்”,
“அனைவரும் திங்கள்கிழமை ஆயத்தம்”, “செவ்வாய்க்கு முந்தய நாள் ஆயத்தமாகலாம்” என வேறு வேறு blockல் செய்தியோடு nonces இணைத்து அனைத்திலும் முதல் 5 இலக்கங்கள் 0 வருமாறு அமைப்பர். இந்த ஒவ்வொரு செய்தியும் ஒரு block ஆகும். அதோடு முந்தய hashஐ அடுத்த blockல் சொருகினால்? ஒரு சங்கிலித் தொடராக
blockகள் அமையும் அல்லவா? இது தான் blockchain. இப்படி வெற்றிகரமாகக் செய்தியுடன் noncesஐ இணைத்துக் கட்டமைப்பவர்களின் பெயர் miners. இச்செயலுக்கு பெயர் proof of work. அதாவது செய்தியின் நம்பகத் தன்மையை உருவாக்கியுள்ளனர். (குறிப்பு: படத்தின் எடுத்துக்காட்டில் எல்லா blockகளின் முதல் 5
இலக்கம் 0-ல் துவங்கவேண்டும். என்னால் அப்படி அமைக்க முடியவில்லை. ஆதலால் ஒவ்வொரு blockம் வேறுவேறு எண்களில் ஆரம்பிக்கிறது. அதனைக் கண்டுக்காதீங்க😜. ஆனால் உண்மையான blockchain ல் எல்லா hashம் 00000 என்று ஆரம்பிக்கவேண்டும்.) இவ்வாறு தான் பைசாந்திய படைத்தலைவன் மற்ற பிரிவுப் படைகளுடன்
நம்பகரமான முறையில் தொடர்புகொள்ள இயலும். எதிரிப்படையினர் தலைகீழாக நின்றாலும் இந்த உண்மையான தகவலை சிதைக்கமுடியாது. Ok?

ஆக எங்கு நம்பகத்தன்மை இல்லையோ, இடைத்தரகர்கள் வேண்டாமோ, பாதுகாப்பான பரிமாற்றம் தேவையோ அங்கே இந்த blockchainஐ பயன்படுத்தலாம். ஒரு வங்கிப் பரிமாற்றத்தை பார்க்கலாம்.
பொதுவாக வங்கியில் அவர்களிடைய server இருக்கும் அதில் உள்ள ledgerல் உங்கள் பணம் பற்றிய விவரங்கள் இருக்கும். இதில் ஏதேனும் தவறோ அல்லது ஏமாற்று வேலையோ நடக்காது என்று என்ன நிச்சயம்? இருப்பினும் நாம் வங்கியை நம்பித்தான் ஆகவேண்டிய கட்டாயம் உள்ளது. ஏனெனில் சர்வர் அவர்கள் கட்டுப்பாட்டில்.
இதற்கு பதில் அந்த ledger எங்கும் விரவியிருந்தால்? ஒவ்வொரிடமும் ஒரு ledgerன் பிரதி (அதை node என அழைப்போம்) இருந்தால்? “ஐய்யோ என்னிடம் உள்ள பணம் எல்லாருக்கும் தெரியுமே!” என்கிறீர்களா? ம்ஹூம். பெயரோ அல்லது ஒருவர் எவ்வளவு பணம் வைத்துள்ளார் என்ற விவரமோ blockல் தெரியாது.
சரி. பரிமாற்றம் எப்படி நிகழ்கிறது என பார்க்கலாம். ஒருவர் (A) தன் டிஜிட்டல் வாலட்டிலிருந்து ரூ.1000 இன்னொருவருக்கு (B) அனுப்புகிறார். அது அவருடைய அக்கௌண்ட் நம்பர், பெறுநர் அக்கௌண்ட் நம்பர் & பணத்தின் மதிப்பை கொண்டு ஒரு block ஆக மாறிவிடுகிறது. இதில் பெயர் உட்பட எவ்விவரமும் தெரியாது
உங்கள் block, nodesக்கு போய் சேரும். அந்த nodes-ல் “சுரங்கத் தொழிலாளிகள்” (blockchain miners) இருப்பார்கள். அவர்கள் உங்கள் blockஐ எடுத்து nonceஐ சேர்க்கும் முயற்சியில் ஈடுபடுவார்கள். அதில் யாரெல்லாம் வெற்றிபெறுகிறார்களோ அவர்களின் அந்த block, blockchainடன் இணைந்து சரிபார்க்கும்.
இப்படி blockகளை எல்லாம் முதல் 5 இலக்கம் 0 வருமாறு கட்டமைப்பது மிகவும் கடினம் (difficulty). இதற்காக miners ஆற்றல் மிகு கணிணிகளை கொண்டு அதிக மின்னாற்றலை செலவிட்டு தான் இப்படி கட்டமைக்க இயலும். (இப்போது புரிகிறதா ஏன் என்னால் மேலே 00000 என்று hash எழுத இயலவில்லை என?) Mining ஒரு பெரிய https://twitter.com/jasonadeane/status/1323572566582317057
பிசினஸ். மைனர்கள் அப்படி செய்வதற்கு கூலியாக cryptocurrency அ. crypto token உருவாகி அவர்களுக்குப் பகிர்ந்தளிக்கப்படும். அதாவது தங்கச் சுரங்கத்திலிருந்து பொற்காசை தயாரிப்பதற்குச் (minting) சமானம். எனவே அவர்களை மைனர் என்று கூறுகிறோம். இந்த புதிய பணம் பொருளாதாரத்தில் வந்து இணைகிறது.
அவர் இணைத்த block, blockchain ல் இணைந்துவிட்டதல்லவா? உலகில் உள்ள அந்த nodeகளில் உள்ள எல்லா blockchain-ம் ஒவ்வொரு குறிப்பிட்ட நேர இடைவெளியில் update ஆகிக் கொண்டே இருக்கும். இவ்வாறு பெறுநர் பணத்தை பெறும் தகவல் எல்லா லெட்ஜரிலும் பதிவாகிறன. இப்போது உங்களுக்கு ஒரு சந்தேகம் தோன்றலாம்.
நீங்கள் அனுப்பிய 1000 ரூபாயில், ஒரு மைனர் தன் கணக்கில் ரூ. 500ஐ ஆட்டயப்போட்டால்? அது இயலாத காரியம். ஏனெனில், ஒரே ஒரு மைனரிடம் இருந்து வந்த blockஐ மட்டும் blockchainல் கணக்கில் எடுத்துக்கொள்ளபட மாட்டாது.

உங்கள் வாலட்டிலிருந்து சென்ற block உலகில் உள்ள எல்லா node மைனர்களையும் போய்
சேர்ந்திருக்கும். அவர்களில் பலர் noncesஐ பொருத்தி முதல் 5 இலக்க 0 Hashஐ அடைவார்கள். உதாரணமாக, அதில் ஒரு மைனர் உங்களுடைய ரூ.500ஐ அவர் C கணக்கில் எழுதியதாக கொள்வோம். ஆனா, மற்ற பல மைனர்களும் உங்கள் blockஐ solve பண்ணினார்கள் அல்லவா? அவற்றோடு அந்த கோல்மால் blocksன் SHA ஒத்துப்போகாது.
இவ்வாறு பல மைனர்களால் வெற்றிகரமாக nonce செய்த புதிய பரிமாற்றித்தின் எல்லா blockகளும் பொருத்திப்பார்க்கப்படும். பெரும்பான்மையான blockன் hash எதுவோ அவைதான் blockchainல் update ஆகும். அவ்வாறு ஒற்றோடொன்று பொருந்திய blockகளை செய்த மைனர்களுக்கு மட்டுமே புதிய பணம் பகிர்ந்தளிக்கப்படும்.
இதனை consensus என்பார்கள். அந்த consensusல் உள்ளவர்களுக்கு மட்டும் தான் miningல் உருவான புதிய பணத்தின் பங்கு செல்லும். கோல்மால் மைனர் வெற்றிகரமாக hash பண்ணினாலும் அவருக்கு ஒன்னும் கிடைக்காது. மேலும் இந்த consensus க்குப் பிறகு தான் உங்கள் கணக்கும் update ஆகும். ஒருவேளை எல்லா
மைனர்களும் கோல்மால் பண்ணியிருந்தால் blocks ஒன்றோடொன்று sync ஆகாது, consensus நடக்காது. ஆகவே ஒரு blockchainல் proof of work & consensus இரண்டும் மிக முக்கியம்.

சரி. இந்த blockchainல் உங்கள் பணம் இருக்குமா? பெரும்பாலும் இருக்காது. Blockchainல் பரிவர்த்தனைகள் மட்டுமே இருக்கும்.👇
அப்போ உங்கள் பணம்? இந்த blockchainல் உங்கள் பணம் என்பது உங்கள் private key. உங்கள் private key எல்லா வடிவிலும் அழிந்துபோனால் அம்போதான். உங்கள் பணத்தை தொலைத்ததற்குச் சமம். அதாவது அப்படி ஒரு பணம் இல்லை என்று பொருள். உங்களால் (நினைவிலிருந்தாவது) அந்த private keyஐ மீட்காத பட்சத்தில்
உங்களால் மட்டுமல்ல யாராலும் அதை மீண்டும் எடுக்கவோ உபயோகப்படுத்தவோ முடியாது. அது Dead / Frozen money! இது தான் blockchainன் அடிப்படை.

(என்னுடைய blockchain பற்றிய விளக்கம் எளிமையாக்கப்பட்டதால் சில விவரங்கள் துல்லியமாக இருக்காது. மன்னிக்கவும்) 🙏
முதலில் படிப்பதற்கு கடினமாகத் தோன்றும். இரண்டு முறை திரும்பப் படித்தால் மிகவும் சுலபமாகப் புரியும்...!

ஆனால் இது எதிர்காலத்தில் இன்றியமையாததாக மாறப்போகிறது என்கிறனர். ஆகவே தெரிந்து கொள்ளல் நலம்.
You can follow @HilaalAlam.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled:

By continuing to use the site, you are consenting to the use of cookies as explained in our Cookie Policy to improve your experience.