ബ്ലോക്ക് ചെയിൻ മനസിലായാല് മാത്രമേ മൈനിംഗ് എന്താണെന്ന് മനസിലാക്കാനാകൂ. അതുകൊണ്ട് തന്നെ നമുക്ക് ബ്ലോക്കിനുള്ളിലേക്ക് ഒന്നൂകൂടി വിശദമായി കടക്കാം. ഇടപാട് വിവരങ്ങള് കണ്ണിയായി എഴുതപ്പെടുന്നതാണ് ബ്ലോക്ക് ചെയിൻ എന്ന് ഓര്മയുണ്ടല്ലോ?
ഒരു ബ്ലോക്കില് എന്തെല്ലാം വിവരങ്ങളാണുണ്ടാവുക ?
- ബ്ലോക് ചെയിൻ വേർഷൻ നമ്പർ,
- തൊട്ട് മുൻപുള്ള ബ്ലോക്കിന്റെ ഹാഷ് നമ്പർ,
- റൂട്ട് ഹാഷ് – ബ്ലോക്കില് ചേര്ക്കേണ്ട ഇടപാട് വിവരങ്ങളെ പ്രത്യേക രീതിയില് ഹാഷ് ചെയ്ത് അവയെല്ലാം വീണ്ടും ഹാഷ് ചെയ്ത് കിട്ടുന്ന ഹാഷ്.
- ഇടപാടു രേഖപ്പെടുത്തുന്ന സമയം (ടൈം സ്റ്റാമ്പ്)
- നിലവിൽ ഒരു ബ്ലോക്ക് ഉണ്ടാക്കാൻ ആവശ്യമായ വിഷമതയെ സൂചിപ്പിക്കുന്ന ഒരു നമ്പർ
- നൗൺസ് എന്ന പേരിൽ അറിയപ്പെടുന്ന ഒരു റാൻഡം നമ്പർ
ഇത്രയും കാര്യങ്ങളാണ് ഒരു ബ്ലോക്കില് രേഖപ്പെടുത്തിവെക്കുന്നത്. ഈ വിവരങ്ങള് എല്ലാം കൂട്ടിച്ചേര്ത്ത് ഒരു ഹാഷ് കണ്ടുപിടിക്കും. അത് ആ ബ്ലോക്കിന്റെ കൂടെ രേഖപ്പെടുത്തി ബ്ലോക്ക് ചെയിനില് ചേര്ക്കുകയും ചെയ്യുന്നു. ഈ ഹാഷ് കണ്ടെത്തുന്ന പ്രക്രിയയാണ് മൈനിംഗ്. ഇതിലിപ്പോ എന്താ ഇത്ര പ്രത്യേകത എന്നല്ലേ. ഹാഷ് കണ്ടുപിടിക്കല് വളരെ എളുപ്പമാണ്. അപ്പോള് എവിടെയാണ് മൈനിംഗില് മത്സരം വരുന്നത് ? ചുമ്മാ ഹാഷ് കണ്ടുപിടിച്ചാല് മാത്രം പോര. ഒരു പ്രത്യേകരീതിയില് തന്നെ ഹാഷ് വരണം എന്നൊരു നിബന്ധനയുണ്ട്. ഇവയെല്ലാം ചേര്ത്ത് ഒരു ഹാഷ് നിര്മിക്കാൻ എളുപ്പമാണല്ലോ. ഒരു ഡാറ്റയുടെ ഹാഷ് എപ്പോഴും തുല്യമായിരിക്കയും ചെയ്യും എന്ന് നാം മുമ്പ് മനസ്സിലാക്കിയതാണ്. എന്നാല് ഒരു ബ്ലോക്കിന്റെ ഹാഷ് എപ്പോഴും നിശ്ചിത എണ്ണം പൂജ്യത്തില് ആരംഭിക്കണം എന്നതാണ് പ്രധാന നിയമം. തുടക്ക കാലത്ത് അത് 10 പൂജ്യത്തിലായിരുന്നു തുടങ്ങേണ്ടിയിരുന്നത്. ഇന്നത് 17 പൂജ്യമാണ്. കാലം കഴയുന്തോറും ഈ എണ്ണം കൂടി വരും. എന്നാല് അതെങ്ങനെ സാധ്യമാകുമന്ന് സംശയമുണ്ടോ ? കാരണം ഒരു ഡാറ്റയുടെ ഹാഷ് എപ്പോഴും തുല്യമായിരിക്കും. പിന്നെങ്ങനെയാണ് ആദ്യം നിശ്ചിത എണ്ണം പൂജ്യം വരുന്ന ഹാഷ് ഉണ്ടാക്കുക? അവിടെയാണ് ബ്ലോക്കിലെ നൗണ്സ്എന്ന നമ്പറിന്റെ പ്രാധാന്യം. ഒരു ഡാറ്റയുടെ ഹാഷ് എന്തായിരിക്കുമെന്ന് മുൻകൂട്ടി ഊഹിക്കാനോ ഹാഷ് കിട്ടിയാല് ഡാറ്റ മനസിലാകാനോ സാധിക്കില്ലല്ലോ. നൗണ്സ് മൈനേഴ്സിന് അഡ്ജസ്റ്റ് ചെയ്യാവുന്ന ഒരു നമ്പറാണ്. 32bit ഉള്ള ഒരു നമ്പറാണ് നൗണ്സ് 0 മുതല് 4294967296 വരെയുള്ള നമ്പറുകളില് ഏതുമാവാം അത്. ഈ നമ്പര് മാറ്റുമ്പോള് ഹാഷും മാറുമല്ലോ. എന്നാല് ഇതിലേത് നമ്പര് കൊടുത്താലായിരിക്കും തുടക്കത്തില് നിശ്ചിത എണ്ണം പൂജ്യമുള്ള ഹാഷ് ലഭിക്കുക? ഹാഷിന്റെ പ്രത്യേകത വെച്ച് ഒരിക്കലും നമുക്കത് ഊഹിച്ച് കണ്ടുപിടിക്കാൻ പറ്റില്ല. 0 മുതലങ്ങോട്ട് ഓരോ സാധ്യതകളും പരീക്ഷിച്ച് പരീക്ഷിച്ച് ഉത്തരം കണ്ടെത്തുക എന്ന ഒറ്റ വഴിയേ ഉള്ളൂ. ഇങ്ങനെ നൗണ്സ് മാറ്റി മാറ്റി ഒരു ബ്ലോക്കിന്റെ നിശ്ചിത എണ്ണം പൂജ്യത്തില് തുടങ്ങുന്ന ഹാഷ് കണ്ടെത്തുന്ന പ്രക്രിയയാണ് മൈനിംഗ്. ഇതിന് ഒരുപാട് കമ്പ്യൂട്ടര് ശേഷിയും കറണ്ടും ആവശ്യമാണ്. കൂടുതല് ശേഷിയുള്ള കമ്പ്യൂട്ടര് ആദ്യം ഈ ടാസ്ക് ചെയ്ത് തീര്ക്കും. അതോടെ അത് കണ്ടെത്തി ചേര്ക്കുന്നയാള്ക്ക് അതിന് പ്രതിഫലമായി ബിറ്റ്കോയിനുകളും ലഭിക്കുന്നു.
ഒരു ഉദാഹരണത്തിലൂടെ വ്യക്തമാക്കാം. mujeeb എന്ന ഡാറ്റയുടെ md5 (ഉദാഹരണത്തിന് എളുപ്പത്തിനാണ് md5 എടുക്കുന്നത്. ബിറ്റ്കോയിനില് ഇത് SHA256 ആണ് എന്ന് ഓര്ക്കുക) 9FBB9525D7D97558926EDA43DB0115F9 ആണ്. എനിക്ക് തുടക്കത്തില് 3 പൂജ്യം വരുന്ന ഹാഷ് ലഭിക്കണം. ഞാനാദ്യം mujeeb1 എന്ന് ആക്കിനോക്കി. അപ്പോളെനിക്ക് ലഭിച്ച ഹാഷ് 701700CFEEC3F9E4261C6D0C12FDAF81 ഇതാണ്. തുടക്കത്തില് പൂജ്യമില്ല. അങ്ങനെ ഓരോന്നോരോന്ന് മാറ്റി നോക്കി അവസാനം mujeeb243 എന്ന് നോക്കിയപ്പോള് 0006153EF8C51F2C585D67AD24948D6D എന്ന് ഹാഷ് കിട്ടി. ഇവിടെ 1 മുതല് 243 വരെ മാറ്റിനോക്കിയ ഡാറ്റയാണ് നൗണ്സ്. ഇങ്ങനെയാണ് ഓരോ ബ്ലോക്കിന്റെയും ഹാഷ് കണ്ടെത്തുന്നത്. ഇതെല്ലാം https://passwordsgenerator.net/md5-hash-generator/ ല് പോയി പരീക്ഷിച്ച് നോക്കാവുന്നതാണ്.
ആകെ ബിറ്റ്കോയിനുകളുടെ എണ്ണം 21 മില്യണ് ആണ്. ഇത്തരത്തില് നടന്ന ട്രാൻസാക്ഷനുകള് ഓരോ ബ്ലോക്കില് കൂട്ടിച്ചേര്ക്കുമ്പോഴാണ് പ്രതിഫലമെന്ന രീതിയില് ബിറ്റ്കോയിനുകള് ലഭിക്കുന്നത്. ആദ്യം ഈ 21 മില്യണ് ബിറ്റ്കോയിനുകളും കേന്ദ്രീകൃത റിസര്വില് ഇരിക്കുകയാണ്. ഓരോ ബ്ലോക്ക് ചേര്ക്കപ്പെടുമ്പോഴും നിശ്ചിത ബിറ്റ്കോയിനുകള് വ്യക്തികള്ക്ക് ലഭിക്കുന്നു. ആദ്യകാലത്ത് ഒരു ബ്ലോക്ക് ചേര്ത്താല് ലഭിച്ചിരുന്നത് 50 ബിറ്റ്കോയിനുകളായിരുന്നു. എന്നാല് ഇപ്പോള് അത് 15 ബിറ്റ്കോയിനുകളായി. കാലം കൂടുന്തോറും വിഷമത കൂടുകയും ലഭിക്കുന്ന ബിറ്റ്കോയിന്റെ അളവ് കുറയുകയും ചെയ്യുന്ന രീതിയിലാണ് ഇത് രൂപകല്പന ചെയ്തിട്ടുള്ളത്. എന്നാല് ആദ്യത്തെ ബ്ലോക്ക് എങ്ങനെയായിരിന്നിരിക്കും? ഒരു ബിറ്റ്കോയിനും കയ്യിലില്ലാതെ എങ്ങനെ ഇടപാട് നടത്തും? അതേക്കുറിച്ച് അടുത്ത ലേഖനത്തില്.
One comment