আমরা যদি বিগত কয়েক বছরের প্রবণতা দেখি, আমরা সব সময় ব্লকচেইন সম্পর্কে শুনেছি, তবে বিশেষত্ব সম্পর্কে খুব বেশি কিছু নয়।
আমরা সবাই সচেতন যে ক্রিপ্টোকারেন্সি যেমন বিটকয়েন, ইথেরিয়াম, ডোজকয়েন, ম্যাটিক এবং অন্যান্য ব্লকচেইন প্রযুক্তির উপর নির্ভর করে। ব্লকচেইন উল্লেখযোগ্য ইভেন্টগুলির নেতৃত্ব দিয়েছে যা 2021 সালে অসংখ্য শিল্পে বিপ্লব ঘটিয়েছে এবং নতুন অর্জনের পথ প্রশস্ত করেছে।
ব্লকচেইন হল ডেটা সংরক্ষণ করার একটি উপায় যা সম্পাদনা, হ্যাক বা প্রতারণা করা কঠিন বা অসম্ভব। এটি লেনদেনের একটি ডিজিটাল লেজার যা নকল করা হয় এবং ব্লকচেইনের কম্পিউটার সিস্টেমের পুরো নেটওয়ার্ক জুড়ে ছড়িয়ে পড়ে।
এটি গ্রাউন্ড ব্রেকিং ডাটাবেস প্রযুক্তি যা কার্যত সমস্ত ক্রিপ্টোকারেন্সিকে ক্ষমতা দেয়। ব্লকচেইন একটি সম্পূর্ণ নেটওয়ার্ক জুড়ে একটি ডাটাবেসের অভিন্ন অনুলিপি ছড়িয়ে সিস্টেমটিকে হ্যাক করা বা প্রতারণা করা অবিশ্বাস্যভাবে কঠিন করে তোলে।
যদিও Bitcoin এখন ব্লকচেইনের জন্য সবচেয়ে বিশিষ্ট ব্যবহার, প্রযুক্তিটি অনেক বিস্তৃত অ্যাপ্লিকেশন পরিবেশন করতে পারে।
সাম্প্রতিক বছরগুলিতে ক্রিপ্টোকারেন্সি এবং ব্লকচেইনগুলি ক্রমবর্ধমান জনপ্রিয় হয়েছে এবং এই প্রবণতা অব্যাহত থাকবে বলে আশা করা হচ্ছে।
আমরা এই টিউটোরিয়ালে জাভাস্ক্রিপ্ট দিয়ে একটি সাধারণ ব্লকচেইন তৈরি করব। এটি আপনাকে ব্লকচেইন কীভাবে কাজ করে তার একটি প্রাথমিক ধারণা প্রদান করবে।
আসুন এটিকে মেলোডিকয়েন বলি এবং সরাসরি অ্যাকশনে প্রবেশ করি!
একটি ব্লক তৈরি করা হচ্ছে
শুরু করার জন্য, আমরা একটি নতুন জাভাস্ক্রিপ্ট ফাইল তৈরি করব যাতে আমরা আমাদের সমস্ত কোড রাখব।
আসুন এটিকে main.js বলি এবং ব্লকচেইন এবং ব্লকগুলি কেমন হওয়া উচিত তার বর্ণনা দিয়ে শুরু করি।
একটি ব্লক ক্লাস তৈরি করুন এবং এটিকে একটি ফাংশন দিন Object() { [নেটিভ কোড] } দিয়ে শুরু করতে।
একটি নতুন ব্লক তৈরি করার সময় আপনাকে অবশ্যই একটি তারিখ এবং পূর্ববর্তী ব্লকের হ্যাশ দিতে হবে:
এখানে প্রতিটি সম্পত্তির জন্য সংজ্ঞা আছে:
- টাইমস্ট্যাম্প নির্দেশ করে কখন ব্লক তৈরি করা হয়েছিল। আপনি যে বিন্যাসটি বেছে নিন তা ব্যবহার করতে পারেন (এই ক্ষেত্রে, একটি UNIX টাইমস্ট্যাম্প)।
- আপনি এই ব্লকের সাথে সংযোগ করতে চান এমন যেকোন তথ্য ডেটা প্যারামিটারে অন্তর্ভুক্ত করা যেতে পারে। আপনি যদি একটি ক্রিপ্টোকারেন্সি তৈরি করতে চান, আপনি লেনদেনের ডেটা যেমন প্রেরক/প্রাপক এবং এখানে স্থানান্তরিত অর্থের পরিমাণ রাখতে পারেন।
- পূর্ববর্তী হ্যাশ একটি স্ট্রিং যা পূর্বের ব্লকের হ্যাশ ধারণ করে। এটিই ব্লকের চেইন তৈরি করবে, যা পরবর্তীতে আমাদের ব্লকচেইনের অখণ্ডতা প্রদানে গুরুত্বপূর্ণ হবে।
হ্যাশ তৈরি করা
প্রতিটি ব্লক পূর্ববর্তী ব্লকের সাথে লিঙ্ক করে (এভাবে আগের হ্যাশ সম্পত্তি)। যে, প্রতিটি ব্লক একটি হ্যাশ প্রয়োজন. একটি হ্যাশ একটি আঙ্গুলের ছাপের অনুরূপ। এটি প্রতিটি ব্লকের জন্য স্বতন্ত্র।
একটি ব্লকের হ্যাশ একটি হ্যাশ ফাংশনের মাধ্যমে এর সমস্ত বিষয়বস্তু পাস করে গণনা করা যেতে পারে।
সুতরাং, চলুন শুরু করা যাক একটি ফাংশন বাস্তবায়ন করে যা বর্তমান ব্লকের হ্যাশ গণনা করে।
সুতরাং, ব্লক ক্লাসের অধীনে, আমরা calculateHash ফাংশনটি সংজ্ঞায়িত করি:
যাইহোক, SHA256 হ্যাশ জাভাস্ক্রিপ্ট দ্বারা সমর্থিত নয় এবং একটি বহিরাগত লাইব্রেরি থেকে প্রাপ্ত করা আবশ্যক।
Crypto-js হল একটি চমত্কার প্যাকেজ যাতে বেশ কয়েকটি হ্যাশ অ্যালগরিদমের সুরক্ষিত বাস্তবায়ন অন্তর্ভুক্ত।
তারপর আমরা আমাদের main.js কোডে এটি আমদানি করতে পারি।
এখন যেহেতু আমাদের calculateHash() ফাংশন আছে, আসুন এটিকে আমাদের ব্লকের ফাংশনে ব্যবহার করি:
একটি ব্লক দেখতে কেমন তা বর্ণনা করার পরে, আমরা একটি ব্লকচেইন কেমন হওয়া উচিত তা নির্ধারণ করতে পারি। তাই একটি নতুন ক্লাস তৈরি করা যাক.
এই পরিস্থিতিতে, ব্লকচেইন একটি খুব সাধারণ বস্তু যার একটি সম্পত্তি চেইন আছে। এটি একটি অ্যারে যা চেইনের সমস্ত ব্লক ধারণ করে।
আমরা ব্লক যোগ করার আগে, আমাদের প্রথমে তৈরি করতে হবে যা "জেনেসিস ব্লক" নামে পরিচিত। এটি শৃঙ্খলের প্রথম ব্লক, এবং এটি অনন্য যে এটি একটি পূর্ববর্তী ব্লককে নির্দেশ করতে পারে না (এটি প্রথম!)
সুতরাং, জেনেসিস ব্লক তৈরি করতে, আমি আমাদের ক্লাসে createGenesisBlock () নামে একটি ফাংশন যোগ করব। আমাদের ব্লকচেইন ক্লাসের Object() { [নেটিভ কোড] } ফাংশনে ফিরে আসুন।
আমরা এখন যে কোনো সময় একটি নতুন ব্লকচেইন উদাহরণ তৈরি করার সময় জেনেসিস ব্লক অন্তর্ভুক্ত করতে পারি:
ব্লকচেইন পদ্ধতি
এখন, আমাদের ব্লকচেইন ক্লাসে এমন পদ্ধতি যোগ করা যাক যা আমাদের নতুন ব্লক যোগ করার এবং সাম্প্রতিকতম ব্লক আনার মতো কাজ করতে দেয়।
getLatestBlock ফাংশন সবচেয়ে মৌলিক। এটি কেবল চেইন অ্যারের চূড়ান্ত সদস্যকে ফেরত দেয়:
অ্যাডব্লক কৌশলটি একটু বেশি জড়িত।
আমরা আমাদের চেইনে একটি নতুন ব্লক যোগ করার আগে, আমাদের প্রথমে সেই ব্লকের আগের হ্যাশ ক্ষেত্রটি যথাযথভাবে সেট করতে হবে।
এটি আমাদের চেইনে অতি সম্প্রতি যুক্ত ব্লকের হ্যাশে সেট করা আবশ্যক। আমাদের নতুন ব্লকের হ্যাশ গণনা করতে হবে:
পরীক্ষামূলক
দেখা যাক কিভাবে আমাদের মেলোডিকয়েন বের হয়েছে।
এটি সম্পন্ন করার জন্য একটি ব্লকচেইন উদাহরণ তৈরি করুন। আরো কয়েকটি ব্লক যোগ করা যাক:
আমরা সেখানে দুটি নতুন ব্লক তৈরি করেছি। আমাদের ব্লকচেইন বর্তমানে কেমন দেখাচ্ছে তা একটু উঁকি দেওয়া যাক।
MelodyCoin চারটি স্পেস দিয়ে স্ট্রিংফাইড এবং ফরম্যাট করা হবে:
ব্লকচেইনের সততা যাচাই করুন
ব্লকচেইনগুলি দুর্দান্ত কারণ একবার একটি ব্লক যোগ করা হলে, চেইনের বাকি অংশটিকে অবৈধ না করে এটি সংশোধন করা যায় না।
যাইহোক, এই বাস্তবায়নের সাথে আমাদের ব্লকচেইনের অখণ্ডতা পরীক্ষা করার জন্য আমার কাছে কোন পদ্ধতি নেই।
আমাদের ব্লকচেইনে একটি isChainValid ফাংশন চালু করা যাক। চেইন বৈধ হলে, এটি সত্য ফিরে আসবে; অন্যথায়, এটি মিথ্যা ফিরে আসবে:
অখণ্ডতা পরীক্ষা করা
আমরা এখন আমাদের ব্লকচেইনের অখণ্ডতা পরীক্ষা করতে পারি। যদি আমরা এখন এটি কার্যকর করি, তবে এটি নিশ্চিত করবে যে আমাদের চেইনটি আসল।
আসুন এখন আমাদের ব্লকচেইনের সাথে টেম্পার করার চেষ্টা করি। আসুন ব্লক 2 পরিবর্তন করি এবং এর বিষয়বস্তু ওভাররাইট করি (ধরুন আমরা চারটির পরিবর্তে 100টি কয়েন স্থানান্তর করেছি)।
যখন আমরা এটি কার্যকর করি, তখন আমরা দেখতে পাব যে সফ্টওয়্যারটি চেইনের সাথে টেম্পার করার জন্য আমাদের প্রচেষ্টাকে স্বীকৃতি দেয়।
যাইহোক, আপনি বিশ্বাস করতে পারেন যে এটির সাথে হস্তক্ষেপ করার জন্য আমার কাছে অন্য একটি পদ্ধতি রয়েছে। আমি ব্লকের বিষয়বস্তু পরিবর্তন করেছি কিন্তু হ্যাশ পুনরায় গণনা করিনি। সুতরাং আপনি চতুর হতে চেষ্টা করতে পারেন এবং একই ব্লকের হ্যাশ পুনরায় গণনা করতে পারেন।
আমাদের ক্ষুদ্র ব্লকচেইন সেটআপে এটাই ছিল! এটি আমাদের নতুন ব্লক যোগ করতে এবং চেইনের মধ্যে ডেটার সাথে টেম্পারিং সনাক্ত করতে সক্ষম করে।
আমাদের ছোট ব্লকচেইনের সাথে দুটি সমস্যা রয়েছে যা আমাদের অবশ্যই সমাধান করতে হবে:
- আধুনিক কম্পিউটারগুলি অত্যন্ত দ্রুত এবং কয়েক সেকেন্ডে আমাদের চেইনে হাজার হাজার ব্লক যোগ করতে পারে। আমরা স্পষ্টতই চাই না যে কেউ আমাদের ব্লকচেইনে স্প্যাম করুক।
- আমাদের ব্লকচেইন এখনও টেম্পারিংয়ের জন্য ঝুঁকিপূর্ণ। আপনি একটি ব্লকের বিষয়বস্তু আপডেট করতে পারেন এবং তারপরে নিম্নলিখিত সমস্ত ব্লকের জন্য হ্যাশগুলি (এবং পূর্বের হ্যাশগুলি) পুনরায় গণনা করতে পারেন। এমনকি যদি আপনি এটির সাথে জগাখিচুড়ি করেন তবে আপনি একটি বৈধ চেইন দিয়ে শেষ করবেন।
এই উদ্বেগগুলি মোকাবেলা করার জন্য, ব্লকচেইনগুলি "কাজের প্রমাণ" নামে পরিচিত একটি কৌশল ব্যবহার করে। আপনাকে অবশ্যই প্রদর্শন করতে হবে যে আপনি এই পদ্ধতি ব্যবহার করে একটি ব্লক তৈরি করতে উল্লেখযোগ্য পরিমাণ গণনামূলক সংস্থান ব্যবহার করেছেন। এটিও বলা হয় খনন.
প্রুফ-অফ-কাজের জন্য একটি ব্লকের হ্যাশ একটি নির্দিষ্ট পরিমাণ শূন্য দিয়ে শুরু হওয়া প্রয়োজন। কিন্তু কিভাবে আপনি আপনার হ্যাশ এই নিয়ম মাপসই কিনা জানতে পারেন?
একটি ব্লকের বিষয়বস্তু তার হ্যাশ নির্ধারণ করে। তাই আমরা সবসময় একই হ্যাশ পাই, যদি আমরা বিষয়বস্তু পরিবর্তন না করি।
প্রতিটি ব্লক একটি সমাধান হিসাবে এটি একটি nonnce মান যোগ করা উচিত. এটি মূলত কিছু র্যান্ডম ডেটা যা আমরা আপডেট করতে পারি যতক্ষণ না আমাদের ব্লকের হ্যাশ যথেষ্ট শূন্য দিয়ে শুরু হয়। যেহেতু আপনি হ্যাশ ফাংশনের আউটপুট পরিবর্তন করতে পারবেন না, আপনাকে অনেকগুলি বিভিন্ন সমন্বয় পরীক্ষা করতে হবে এবং সেরাটির জন্য আশা করতে হবে।
ব্লকচেইনে মাইনিং চালু করুন
আমাদের ব্লক ক্লাসে একটি নন্স অন্তর্ভুক্ত করে শুরু করা যাক। নন্স হল আমাদের ব্লকের একক মান যা আমরা ব্লকের হ্যাশকে প্রভাবিত করতে পরিবর্তন করতে পারি।
আমরা টাইমস্ট্যাম্প বা ডেটা পরিবর্তন করতে অক্ষম।
এর পরে, আসুন একটি mineBlock() ফাংশন লিখি যা একটি ব্লকের প্রকৃত মাইনিং করবে। এই ফাংশনটিকে একটি প্যারামিটার হিসাবে প্রয়োজনীয় অসুবিধা পাঠানো হবে এবং যতক্ষণ না আমাদের ব্লকের হ্যাশ পর্যাপ্ত শূন্য দিয়ে শুরু না হয় ততক্ষণ পর্যন্ত এটি কার্যকর করতে থাকবে।
আমি শুধু একটি মৌলিক যখন লুপ তৈরি করেছি যা আমাদের হ্যাশ যথেষ্ট শূন্য দিয়ে শুরু না হওয়া পর্যন্ত চলবে। কত শূন্য প্রয়োজন তা নির্ধারণ করতে আমরা অসুবিধা ব্যবহার করি। 5 এর অসুবিধা সহ, আমাদের হ্যাশ অবশ্যই 5 শূন্য দিয়ে শুরু করতে হবে।
যখন আমাদের হ্যাশে পর্যাপ্ত শূন্য থাকে না, তখন আমরা নন্সটিকে একটি করে বাড়াই এবং হ্যাশটি পুনরায় গণনা করি। এবং যদি আমরা একটি হ্যাশ খুঁজে পাই যা অসুবিধার সাথে সঙ্গতিপূর্ণ, আমরা এটি কনসোলে লগ করি।
আমাদের আরও একটি জিনিস করতে হবে। আমরা সত্যিই আমাদের ক্যালকুলেটহ্যাশ পদ্ধতিতে ননস ভেরিয়েবলকে বিবেচনা করি না, তাই এটি এখানে:
ব্লকচেইন ক্লাস
আসুন আমাদের ব্লকচেইন ক্লাসে পরীক্ষার জন্য এই নতুন পদ্ধতিটি রাখি এবং দেখুন এটি কীভাবে যায়।
শুরু করার জন্য, আমি অবজেক্ট() ফাংশনে আমাদের ব্লকচেইনের অসুবিধা সংজ্ঞায়িত করব। আমরা এটিকে এখানে সংজ্ঞায়িত করি যেহেতু আমরা এটি পরে কোথাও ব্যবহার করতে পারি।
অ্যাডব্লক ফাংশনটি অবশ্যই পরিবর্তন করতে হবে যাতে এটি আমাদের চেইনে যুক্ত করার আগে ব্লকটি খনন করে।
ব্লকচেইন ব্যবহার করুন
এখন, কাজের প্রমাণের অ্যালগরিদমের সাথে ব্যবহার করার জন্য আমাদের নতুন ব্লকচেইন রাখি। এখানে, কয়েকটি console.log বিবৃতি যোগ করুন।
যখন আমরা এই কোডটি কার্যকর করি, তখন আমরা লক্ষ্য করতে পারি যে খনির প্রক্রিয়া আর বিশেষভাবে দ্রুত হয় না।
অ্যালগরিদমের জন্য হ্যাশের সাথে ব্লক তৈরি করতে কিছু সময় লাগে যা তিনটি শূন্য দিয়ে শুরু হয় (যেমন অসুবিধা দ্বারা কনফিগার করা হয়েছে)।
সুতরাং এটি আমাদের মৌলিক ব্লকচেইন সেটআপের শেষ ছিল।
প্রুফ-অফ-ওয়ার্ক মেকানিজমের জন্য আমাদের ব্লকচেইনে কত দ্রুত নতুন ব্লক যুক্ত করা হয় তা আমরা নিয়ন্ত্রণ করতে পারি।
এটি ব্লকচেইনের সবচেয়ে গুরুত্বপূর্ণ নিরাপত্তা বৈশিষ্ট্য। এবং এখন আপনি বুঝতে পেরেছেন যে এটি কীভাবে কাজ করে, আপনার নিজের তৈরি করুন!
নির্দেশিকা সমন্ধে মতামত দিন