বিটকয়েন বনাম ব্লকচেইন বিতর্কের সমাপ্তি

উত্স নোড: 1849174

ক্রিপ্টোকারেন্সি ছাড়া ব্লকচেইনের কোন মূল্য আছে কি?

বিতর্ক কিছু সময়ের জন্য চলছে কিন্তু গত মাসে একটি গুরুতর উত্থান দেখা গেছে। প্রশ্ন করা হচ্ছে:

ক্রিপ্টোকারেন্সি ছাড়া ব্লকচেইনের কোন মূল্য আছে কি? এবং এই "টোকেনলেস শেয়ার্ড লেজার" কে কি আদৌ ব্লকচেইন বলা যেতে পারে?

তাই আমি পড়েছি বেইলির নিবন্ধ, দেখা টিমের ভিডিও, পড়া এই Nasdaq পোস্ট, রিচার্ড এর অনুসরণ প্রতি শব্দ, এবং এমনকি আমার নিজস্ব ছিল ভাল-প্রাণ বিতর্ক কাউন্টারপার্টি ফাউন্ডেশনের ক্রিস ডিরোজের সাথে (মন্তব্য দেখুন)। এত গরম বাতাস।

ক্রিস একটি জিনিস ভাল করে তা হল প্রশ্নে এটিকে ফুটিয়ে তোলা: ব্লকচেইন কি অর্থনৈতিক নাকি কম্পিউটার বিজ্ঞানের উদ্ভাবন? এর অর্থ হল যে ব্লকচেইনগুলি যদি সম্পূর্ণরূপে অর্থনৈতিক উদ্ভাবন হয় তবে ক্রিপ্টোকারেন্সি ছাড়া ব্লকচেইনের কোনও অর্থ নেই। সুতরাং আমাকে শুরুতে আমার অবস্থান বর্ণনা করা যাক:

বিটকয়েন ব্লকচেইন উভয়ই একটি অর্থনৈতিক ছিল এবং একটি কম্পিউটার বিজ্ঞান উদ্ভাবন.

আমি এখানে "উদ্ভাবন" অন্তর্ভুক্ত করার অনুমতি দিচ্ছি বিদ্যমান কৌশলগুলির একটি নতুন সমন্বয়, এমন কিছুর চেয়ে যার কোনো নজির নেই। এই সংজ্ঞাটি ওয়ার্ল্ড ওয়াইড ওয়েবকে একটি উদ্ভাবন হিসাবে বিবেচনা করার অনুমতি দেয়, যদিও এটি কিছু বিদ্যমান ইন্টারনেট প্রোটোকলগুলিতে একটি মোচড় দিয়ে হাইপারটেক্সটকে একত্রিত করার চেয়ে সামান্য বেশি কিছু করেছে। আপনি যদি উদ্ভাবনের একটি কঠোর সংজ্ঞা গ্রহণ করতে চান, তাহলে আমার অতিথি হোন, কিন্তু কত কম সত্য "উদ্ভাবন" অবশিষ্ট আছে তা দেখে আপনি অবাক হবেন। প্যারাফ্রেজ করতে শিক্ষক, সূর্যের নিচে সামান্য নতুন আছে.

সুনির্দিষ্টভাবে, আমি দাবি করছি যে টোকেন ছাড়া ব্লকচেইন একটি উদ্দেশ্য পূরণ করে, কিন্তু এটা একটি বিভিন্ন উদ্দেশ্য মূল বিটকয়েন ব্লকচেইনের তুলনায়। ক্রিপ্টো-হেডস টোকেন-মুক্ত ব্লকচেইনে হাসে কারণ তারা কাজের প্রমাণের মাধ্যমে সেন্সরশিপ প্রতিরোধ এবং বিকেন্দ্রীভূত নিরাপত্তা প্রদান করতে পারে না। ফিনটেক-হেডরা পাবলিক ব্লকচেইনে হাসে কারণ সেগুলি ধীর, ব্যয়বহুল এবং ঐতিহ্যগত অর্থের জন্য অনুপযুক্ত। ঠিক আছে, সবাই হাসতে থাকুন, কারণ আমি বিশ্বাস করি আপনি উভয়ই ঠিক আছেন।

আমি যুক্তি দিতে যাচ্ছি যে টোকেন-মুক্ত ব্লকচেইনগুলি বিকেন্দ্রীভূত ডেটাবেসগুলিকে সিঙ্কে রাখার জন্য দরকারী, এমনকি একটি একক সংস্থায় যেখানে নিখুঁত বিশ্বাস রয়েছে. এবং তারপরে আমরা দেখতে পাব যে ব্লকচেইনগুলি অন্য কোন বৈশিষ্ট্যগুলি অফার করে, যা তাদের জন্য ঐক্যমত্য তৈরির জন্য উপযুক্ত করে তোলে নির্দিষ্ট ধরনের লেনদেন সংস্থাগুলির মধ্যে, যেখানে শুধুমাত্র সীমিত এবং অপূর্ণ বিশ্বাস রয়েছে।

দুর্ভাগ্যবশত, যুক্তি অনুসরণ করার জন্য, আপনাকে আমার সাথে বিটকয়েন লেনদেন মডেল, ডাটাবেস মাল্টিভারসন কনকারেন্সি কন্ট্রোল (MVCC) এবং মাল্টি-মাস্টার ডাটাবেস প্রতিলিপিতে দ্বন্দ্ব সমাধানের সমস্যা নিয়ে আলোচনা করতে হবে। আমি ইংরেজিতে লেগে থাকার জন্য আমার যথাসাধ্য চেষ্টা করব কিন্তু তবুও, এটি প্রযুক্তিগত বিষয়, এবং এটিকে এড়ানোর কোনো উপায় নেই।

বিটকয়েনের লেনদেন মডেল

বিটকয়েন লেনদেন মডেল সহজ কিন্তু শক্তিশালী। প্রতিটি বিটকয়েন লেনদেনের একটি সেট ইনপুট এবং আউটপুটের একটি সেট থাকে। প্রতিটি ইনপুট একটি পূর্ববর্তী লেনদেনের একটি আউটপুট "ব্যয়" করে। একটি লেনদেনের ইনপুটগুলির সমস্ত বিটকয়েন সেই লেনদেনে প্রবাহিত হয় এবং এর মধ্যে লেখা পরিমাণ অনুযায়ী তার আউটপুট জুড়ে বিতরণ করা হয়। এইভাবে, লেনদেন একটি মাল্টি-ওয়ে সংযুক্ত চেইন গঠন করে যা "কয়েনবেস" লেনদেনে শেষ হয় যেখানে নতুন বিটকয়েন তৈরি হয়।

বিটকয়েনের একগুচ্ছ অতিরিক্ত নিয়ম রয়েছে যা নেটওয়ার্কের প্রতিটি নোড দ্বারা প্রয়োগ করা হয়:

  • একটি লেনদেনের প্রতিটি ইনপুট প্রমাণ করতে হবে যে এটি সংযুক্ত করা হয়েছে এমন পূর্বের আউটপুট ব্যয় করার অধিকার রয়েছে৷ সেই অধিকার পূর্বের আউটপুটের মধ্যে এনকোড করা শর্ত দ্বারা সীমাবদ্ধ।
  • একটি লেনদেনের ইনপুটগুলিতে পর্যাপ্ত মোট বিটকয়েন থাকতে হবে যাতে তার আউটপুটে মোট লেখা থাকে। একমাত্র ব্যতিক্রম হল কয়েনবেস লেনদেন যা মুদ্রার নতুন ইউনিট তৈরি করে।
  • প্রতিটি আউটপুট শুধুমাত্র একবার খরচ করা যেতে পারে, অন্য কথায়, এটি শুধুমাত্র একটি পরবর্তী লেনদেনে একটি ইনপুটের সাথে সংযুক্ত হতে পারে।

এই শেষ নিয়মের কারণে, কোন লেনদেন বৈধ সেই বিষয়ে ঐক্যমত পৌঁছানোর জন্য নেটওয়ার্কের একটি পদ্ধতির প্রয়োজন এবং ব্লকচেইন এটিই করে। বিশেষভাবে:

যদি দুটি লেনদেন একই আউটপুট ব্যয় করার চেষ্টা করে, তবে সেই লেনদেনের মধ্যে শুধুমাত্র একটি চূড়ান্তভাবে গ্রহণ করা হবে। একটি ব্লকচেইন নেটওয়ার্ক জুড়ে এই বিরোধগুলি সনাক্ত এবং প্রতিরোধ করার জন্য একটি ইউনিফাইড মেকানিজম হিসাবে কাজ করে।

ব্লকচেইনটি সংযুক্ত ব্লকের একটি সিরিজ হিসাবে গঠন করা হয়েছে, যেখানে প্রতিটি ব্লকে লেনদেনের একটি সেট রয়েছে যা একে অপরের সাথে বা পূর্ববর্তী ব্লকগুলির সাথে বিরোধপূর্ণ নয়, 2009 সালে তৈরি করা প্রথম ব্লক থেকে শুরু করে। তাত্ত্বিকভাবে, চেইনটিতে একটি থাকতে পারে স্বতন্ত্র লেনদেনের সিরিজ, কিন্তু লেনদেনকে ব্লকে গোষ্ঠীবদ্ধ করার মাধ্যমে, আমরা অনেকগুলি দক্ষতা অর্জন করি যা স্কিমটিকে আরও ব্যবহারিক করে তোলে।

তাহলে এই সবের মধ্যে একটি ক্রিপ্টোকারেন্সির উদ্দেশ্য কী? চেইন গঠনকারী ব্লকগুলির বিষয়ে কে সিদ্ধান্ত নেবে সেই প্রশ্নে এটি নেমে আসে। বিটকয়েন বিকেন্দ্রীকৃত এবং এই সিদ্ধান্ত নিতে পারে এমন কোন কর্তৃত্ব নেই, তাই এটিকে ঐক্যমতে পৌঁছানোর অন্য কোন উপায় খুঁজে বের করতে হবে।

আমরা একটি গণতান্ত্রিক পদ্ধতি ব্যবহার করতে চাই, যেখানে নেটওয়ার্কের নোডগুলি ব্লকগুলিতে ভোট দেয় এবং সংখ্যাগরিষ্ঠরা জয়লাভ করে। দুর্ভাগ্যবশত, যে কোনো ইন্টারনেট পোল প্রদর্শন করতে পারে, প্রতিনিধিত্বমূলক গণতন্ত্র অনলাইনে সম্ভব নয়, কারণ ছদ্মবেশের সমস্যার কারণে (এটি নামেও পরিচিত সিবিল আক্রমণ) একজন ব্যক্তি এক মিলিয়ন কম্পিউটার গ্রহণ করতে পারে এবং সিদ্ধান্ত নিতে পারে যে তারা কীভাবে ভোট দেবে, এইভাবে নেটওয়ার্ক ঐক্যমতের নিয়ন্ত্রণ দখল করে। অন্য কেউ জানতেও পারবে না যে এটি ঘটেছে।

এটি সমাধান করার জন্য, বিটকয়েন "মাইনিং" নামক একটি প্রক্রিয়ার মাধ্যমে চেইনে একটি ব্লক যুক্ত করা ইচ্ছাকৃতভাবে কঠিন করে তোলে। একটি ব্লক তৈরি করতে, আপনাকে অবশ্যই একটি কঠিন কিন্তু অর্থহীন গাণিতিক সমস্যার সমাধান করতে হবে যা অনেক গণনার (এবং সেই কারণে বিদ্যুৎ এবং অর্থ) দাবি করে। আপনার কিছুটা ভাগ্যেরও প্রয়োজন, যেহেতু আপনি সারা বিশ্বের অন্যান্য ব্লক মাইনারদের সাথে প্রতিযোগিতায় আছেন। আপনি আরও শক্তিশালী মাইনিং কম্পিউটার কিনে বেশি দিন এগিয়ে যেতে পারবেন না, কারণ নেটওয়ার্ক প্রতি 10 মিনিটে একটি ব্লকের একটি স্থির গ্লোবাল রেট রাখতে সমস্যাটির অসুবিধা নিয়মিতভাবে সামঞ্জস্য করে।

যদি একটি ব্লক তৈরি করা এত কঠিন এবং ব্যয়বহুল হয় তবে কেন কেউ বিরক্ত করবে? উত্তর ব্লক পুরস্কার. একটি ব্লকের সফল খনি কয়েনবেস লেনদেন নিয়ন্ত্রণ করে যা তাদের 25 বিটকয়েন প্রদান করে (এই সমষ্টি প্রতি চার বছরে অর্ধেক হয়)। তারা এই বিটকয়েনগুলিকে খোলা বাজারে $7,000 (আজকের হারে) বিক্রি করতে পারে, তাদের বিদ্যুতের বিল পরিশোধ করতে পারে এবং আশা করি কিছু মুনাফা পকেটস্থ করতে পারে। খনি শ্রমিকরাও লেনদেনের সাথে সংযুক্ত ফি থেকে একটু অতিরিক্ত সংগ্রহ করে, যদিও এখন এই ফিগুলি একটি ছোট ভূমিকা পালন করে।

সুতরাং বিটকয়েন কাজের প্রমাণের মাধ্যমে ঐকমত্য তৈরি করে এবং বিটকয়েন-হেডসের যুক্তির মূল বিষয় হল এই: একটি ক্রিপ্টোকারেন্সি ছাড়া, ব্লকের বিকেন্দ্রীভূত খননকে উৎসাহিত করার কোন উপায় নেই। তাই ছদ্মবেশী আক্রমণের বিরুদ্ধে একটি খোলা ব্লকচেইন সুরক্ষিত করার কোন উপায় নেই। অতএব যে কেউ নেটওয়ার্ক ঐক্যমতকে একচেটিয়া করতে পারে এবং পুরো জিনিসটিকে অকেজো করে দিতে পারে। আমি এর কোনটির সাথে তর্ক করব না।

Multiversion সমান্তরাল নিয়ন্ত্রণ

ইতিমধ্যে আমি এমন কিছু সম্পর্কে কথা বলতে চাই যা সম্পূর্ণরূপে সম্পর্কহীন বলে মনে হতে পারে।

একটি ডাটাবেস হল স্ট্রাকচার্ড তথ্যের একটি ভান্ডার, স্প্রেডশীট-এর মতো সত্তায় গোষ্ঠীবদ্ধ যাকে টেবিল বলা হয়। এই জাতীয় টেবিলের একটি সাধারণ উদাহরণ হল ব্যাঙ্ক অ্যাকাউন্টগুলির একটি তালিকা, যার প্রতিটি সারিতে সেই অ্যাকাউন্টের ব্যালেন্স সহ একটি অ্যাকাউন্ট নম্বর রয়েছে। ধরা যাক আপনার অ্যাকাউন্টটি $900 এর ব্যালেন্স দিয়ে দিন শুরু করে। আজকে $750 এর একটি স্বয়ংক্রিয় মর্টগেজ পেমেন্ট নির্ধারিত হয়েছে এবং আপনাকে এটিএম থেকে $400 তুলতে হবে। দুর্ভাগ্যবশত আপনার কাছে ওভারড্রাফ্ট সুবিধা নেই তাই এই ক্রিয়াকলাপগুলির মধ্যে একটি ব্যর্থ হওয়ার জন্য সেট আপ করা হয়েছে।

বন্ধকী অর্থ প্রদান এবং এটিএম উত্তোলনের প্রক্রিয়াগুলি পৃথক সিস্টেমে চলে, উভয়ই এই একক অ্যাকাউন্ট ডেটাবেস অ্যাক্সেস করে। ধরা যাক যে প্রতিটি প্রক্রিয়া আপনার অ্যাকাউন্টের ব্যালেন্স পড়ার মাধ্যমে কাজ করে, এটি অপারেশনের জন্য পর্যাপ্ত কিনা তা পরীক্ষা করে, সেই ক্রিয়াকলাপটি শুরু করা, অপারেশন সম্পূর্ণ হয়েছে যাচাই করা, নতুন ব্যালেন্স গণনা করা এবং অবশেষে এটি ডাটাবেসে লেখা।

যতক্ষণ না আপনার বন্ধকী অর্থপ্রদান এবং এটিএম উত্তোলন ওভারল্যাপ না হয়, এই যুক্তিটি ভাল কাজ করবে। প্রথম অপারেশন সফলভাবে সঞ্চালিত হবে, এবং দ্বিতীয়টি বাতিল হয়ে যাবে কারণ আপনার অ্যাকাউন্টে পর্যাপ্ত তহবিল নেই৷ অর্ডারের উপর নির্ভর করে, আপনি ব্যাঙ্ক থেকে একটি রাগান্বিত ফোন কল বা এটিএম স্ক্রিনে একটি অভদ্র বার্তা পাবেন।

কিন্তু দুটি প্রক্রিয়া একই সময়ে শুরু হলে কী হবে? এই ক্ষেত্রে, প্রত্যেকে আপনার অ্যাকাউন্টের ব্যালেন্স পড়বে এবং এটি এগিয়ে যাওয়ার জন্য যথেষ্ট বলে মনে করবে। বন্ধকী অর্থ প্রদান সম্পূর্ণ হলে, আপনার নতুন ব্যালেন্স $150 হিসাবে গণনা করা হবে এবং ডাটাবেসে লেখা হবে। যখন ATM উত্তোলন সম্পূর্ণ হবে, তখন আপনার $500 এর নতুন ব্যালেন্স একইভাবে লেখা হবে। এই লেখার অপারেশনগুলির মধ্যে একটি অন্যটিকে ওভাররাইড করতে চলেছে এবং, আপনার ভাগ্যের উপর নির্ভর করে, আপনি আপনার ব্যাঙ্ক থেকে $750 বা $400 বোনাস পাবেন৷ কোন সন্দেহ নেই যে আপনি শীঘ্রই বন্ধকী দিনের জন্য আপনার ATM পরিদর্শনের সময় শিখবেন।

অবশ্যই, এটি বাস্তবে ঘটে না, একটি ডাটাবেস প্রযুক্তির কারণে সম্পাতবিন্দু নিয়ন্ত্রণ. কনকারেন্সি কন্ট্রোল আমাদের ডেটা (বিশেষ করে আর্থিক) বুদ্ধিমান এবং সুরক্ষিত রাখে এবং এটি বিভিন্ন আকারে আসে। কিন্তু সকলেই এই নীতিটি ভাগ করে যে ডাটাবেস অপারেশনগুলিকে "লেনদেন" এ গোষ্ঠীভুক্ত করা হয়, যেগুলিকে পারমাণবিকভাবে বিবেচনা করা হয়, যার অর্থ তারা সামগ্রিকভাবে সফল বা ব্যর্থ হয়। কনকারেন্সি একটি ডাটাবেসের অংশগুলিকে লক বা হিমায়িত করার মাধ্যমে সামঞ্জস্য রক্ষা করে যখন সেগুলি একটি লেনদেনের দ্বারা ব্যবহৃত হয়, অন্য লেনদেনগুলিকে একই তথ্যের উপর বিরোধপূর্ণ উপায়ে কাজ করা থেকে বিরত রাখতে।

যদি আমাদের সমান্তরালভাবে লেনদেন চালানোর প্রয়োজন না হয়, আমরা প্রতিটি একক লেনদেনের পুরো সময়কালের জন্য সমগ্র ডাটাবেস লক করতে পারি। তবে বেশিরভাগ বাস্তব-বিশ্বের অ্যাপ্লিকেশনে এটি ব্যবহারিক নয়। একটি ভাল কনকারেন্সি কন্ট্রোল স্কিম যতটা সম্ভব কম সময়ের জন্য যতটা সম্ভব কম ডেটা লক করে সমান্তরাল ক্রিয়াকলাপের অনুমতি দেয়। উপরের উদাহরণে, শুধুমাত্র আপনার অ্যাকাউন্টের সাথে সম্পর্কিত ডাটাবেস সারিটি লক করা হবে, এবং শুধুমাত্র বিভক্ত সেকেন্ডের জন্য যেখানে একটি চূড়ান্ত চেক এবং কাটা হয়েছিল। সমান্তরালভাবে পরিচালিত একটি বিরোধপূর্ণ লেনদেনের জন্য এই লকটি প্রকাশ না হওয়া পর্যন্ত অপেক্ষা করতে হবে।

এক জনপ্রিয় একযোগে নিয়ন্ত্রণ কৌশল বলা হয় মাল্টিভারসন কনকারেন্সি নিয়ন্ত্রণ, বা সংক্ষেপে MVCC. MVCC-তে, প্রতিটি লেনদেন একটি নির্দিষ্ট সময়ে ডেটার একটি সামঞ্জস্যপূর্ণ স্ন্যাপশট দেখতে পায়, এমনকি যদি সেই ডেটার অংশটি দ্বিতীয় যুগপত লেনদেনের মাধ্যমে আপডেট হওয়ার প্রক্রিয়ায় থাকে। এই স্ন্যাপশট বিচ্ছিন্নতা প্রপার্টি নিশ্চিত করে, উদাহরণস্বরূপ, বিভিন্ন অ্যাকাউন্টে আমাদের মোট ব্যালেন্স দেখানো একটি বিবৃতি সর্বদা সঠিক হবে, এমনকি কিছু তহবিল এক অ্যাকাউন্ট থেকে অন্য অ্যাকাউন্টে স্থানান্তরের প্রক্রিয়াধীন থাকলেও। একটি লেনদেন শুধুমাত্র দ্বিতীয় লেনদেনের দ্বারা দেখা ডেটাকে প্রভাবিত করবে যদি প্রথমটির সমস্ত পরিবর্তন সফলভাবে প্রয়োগ করার পরে দ্বিতীয়টি শুরু হয়।

পর্দার আড়ালে, MVCC একটি সারির একাধিক সংস্করণকে একযোগে রক্ষণাবেক্ষণ করার অনুমতি দিয়ে কাজ করে, একটি টাইমস্ট্যাম্পের পাশাপাশি যা প্রতিটি সংস্করণের শেষ পরিবর্তনের তারিখ উপস্থাপন করে। এমভিসিসি-তে একটি ডাটাবেস সারি পরিবর্তন করা সেই সারির বর্তমান সংস্করণটিকে মুছে ফেলার জন্য চিহ্নিত করে, যখন একটিতে পরিবর্তনটি প্রয়োগ করে সেই সারির অনুলিপি একটি আপডেট টাইমস্ট্যাম্প সহ। ডাটাবেসের স্টোরেজ লেয়ারের দৃষ্টিকোণ থেকে, জায়গায় সারি পরিবর্তন করার মতো কোনো জিনিস নেই। প্রতিটি লেনদেন ঠিক কখন শুরু হয়েছিল তা জানে এবং শুধুমাত্র সেই সারিগুলির সংস্করণ দেখতে পায় যার টাইমস্ট্যাম্প সেই সময়ের আগে। কোনও চলমান লেনদেন না হলে সারিগুলির পুরানো সংস্করণগুলিকে সঞ্চয়স্থান থেকে সরানো যেতে পারে যাতে সেগুলি অ্যাক্সেস করার প্রয়োজন হতে পারে।

এখানে আমাদের উদ্দেশ্যের জন্য অত্যন্ত গুরুত্বপূর্ণ, MVCC লেখার ক্রিয়াকলাপগুলির মধ্যে দ্বন্দ্ব প্রতিরোধ করে। বিশেষভাবে:

যদি দুটি ট্রানজ্যাকশন একই সারি সংস্করণ মুছে ফেলার চেষ্টা করে, তাহলে শেষ পর্যন্ত এই লেনদেনের মধ্যে শুধুমাত্র একটি গ্রহণ করা হবে। মাল্টিভারসন কনকারেন্সি কন্ট্রোল একটি ডাটাবেসের মধ্যে এই দ্বন্দ্বগুলি সনাক্ত এবং প্রতিরোধ করার জন্য একীভূত প্রক্রিয়া হিসাবে কাজ করে।

কোনো ঘণ্টা বাজবে? পটভূমির আরও একটি অংশ আমাদের আলোচনা করতে হবে।

মাল্টি-মাস্টার ডাটাবেস প্রতিলিপি

এখন ডাটাবেস রেপ্লিকেশন সম্পর্কে কথা বলা যাক, যেখানে একটি ডাটাবেস একাধিক কপিতে বিদ্যমান। একটি ডাটাবেস প্রতিলিপি করার জন্য বেশ কয়েকটি ভাল কারণ রয়েছে, যেমন:

  • নির্ভরযোগ্যতা বাড়ানোর জন্য, যাতে ডাটাবেসের একটি কপি হারিয়ে গেলে (যেমন একটি ডিস্ক ব্যর্থতার কারণে), আমরা তাত্ক্ষণিকভাবে একটি দ্বিতীয় অনুলিপিতে স্যুইচ করতে পারি।
  • থ্রুপুট বাড়ানোর জন্য, যদি অপারেশনের পরিমাণ একটি একক ডাটাবেস সার্ভারের ক্ষমতার বাইরে যায়।
  • বিলম্ব কমাতে, যাতে সিঙ্গাপুর অফিসে চলমান প্রক্রিয়াগুলির জন্য টরন্টোতে বসে থাকা একটি ডাটাবেসের প্রতিক্রিয়ার জন্য অপেক্ষা করতে হবে না।

যখন এটি আসে পড়া ডেটাবেস থেকে ডেটা, প্রতিলিপি একটি আদর্শ কৌশল, কারণ সমস্ত প্রতিলিপিতে একই তথ্য থাকে। যাইহোক যখন লেখার ক্রিয়াকলাপগুলি আসে তখন জিনিসগুলি আরও স্টিকি হয়ে যায়, কারণ আমাদের সিদ্ধান্ত নিতে হবে যে সেই লেখাগুলি কোথায় সঞ্চালিত হবে এবং কীভাবে সেগুলি ডাটাবেসের অন্যান্য অনুলিপিগুলিতে স্থানান্তরিত হবে।

সবচেয়ে সাধারণ উত্তর হল মাস্টার-স্লেভ রেপ্লিকেশন ব্যবহার করা, যেখানে একটি একক ডাটাবেস ("মাস্টার") প্রামাণিক বলে বিবেচিত হয়। ডেটাতে যেকোন পরিবর্তন শুধুমাত্র মাস্টারের উপর করা হয় এবং তারপর একটি লেনদেন লগের মাধ্যমে অন্যান্য সমস্ত "স্লেভ" ডাটাবেসে ট্রিকল ডাউন করা হয়। এটি সমস্ত ডাটাবেস কপি (কম বা কম) তাত্ক্ষণিকভাবে সিঙ্কে রাখে।

দুর্ভাগ্যবশত, যদি লেখার ক্রিয়াকলাপ ঘন ঘন হয়, তাহলে মাস্টার-স্লেভ প্রতিলিপি আমাদের সেই সমস্যায় ফিরিয়ে আনে যেটির সমাধান করার জন্য প্রতিলিপি তৈরি করা হয়েছিল। মাস্টার ডাটাবেস নির্ভরযোগ্যতা, থ্রুপুট এবং লেটেন্সির ক্ষেত্রে বাধা হয়ে দাঁড়ায়, যেহেতু প্রতিটি লেখার ক্রিয়াকলাপ একাই সম্পাদিত হয়।

একটি আরও জটিল কৌশলকে মাল্টি-মাস্টার রেপ্লিকেশন বলা হয়, যেখানে লেখাগুলি একটি একক মাস্টারের পরিবর্তে যে কোনো ডাটাবেস কপিতে সঞ্চালিত হতে পারে। এই ক্ষেত্রে, অনুলিপিগুলি সিঙ্কে থাকার জন্য পিয়ার-টু-পিয়ার ফ্যাশনে একে অপরের সাথে আপডেটগুলি ভাগ করে।

এটি তত্ত্বে সহজ শোনায়, কিন্তু মাল্টি-মাস্টার রেপ্লিকেশন একটি নতুন সমস্যা প্রবর্তন করে কারণ দ্বন্দ্ব দেখা দিতে পারে। কি হবে যদি একটি ডাটাবেসের দুটি কপি একই সারি একই সময়ে আপডেট করে, তারপর একে অপরের সাথে এই আপডেটগুলি বিনিময় করার চেষ্টা করে? উভয় ডাটাবেসই লক্ষ্য করবে যে একটি বিরোধপূর্ণ আপডেট হয়েছে, এবং এই বিরোধগুলি সমাধানের জন্য কিছু সম্মত কৌশল প্রয়োগ করতে হবে। এবং এখানে জিনিস পেতে বেশ জটিল - এর জন্য ডক্স দেখুন মাইএসকিউএল, SQL সার্ভার or আকাশবাণী দ্বন্দ্ব সমাধানের কৌশলের কিছু উদাহরণের জন্য। (আমি সিঙ্ক্রোনাস বা তথাকথিত "আগ্রহী" মাল্টি-মাস্টার প্রতিলিপিকে উপেক্ষা করছি, যেখানে সমস্ত প্রতিলিপিগুলি অবশ্যই এটি ঘটানোর আগে একটি লেখার ক্রিয়াকলাপে প্রতিশ্রুতিবদ্ধ হবে, কারণ এটি পরিণত হয় প্রতি ডাটাবেসের অনুলিপি একটি বাধার মধ্যে।)

তাই এই সমস্ত ব্যাকগ্রাউন্ডটি এখানে নেতৃত্ব দিচ্ছে:

মাল্টি-মাস্টার প্রতিলিপিতে সংঘটিত দ্বন্দ্ব রোধ করতে আমরা যদি মাল্টিভারসন কনকারেন্সি কন্ট্রোল বিতরণ করতে পারতাম তাহলে কি ভালো হবে না?

ওয়েল, হ্যাঁ, আমি কল্পনা করি যে সত্যিই খুব সুন্দর হবে. এবং আমি বিশ্বাস করি যে ব্লকচেইনগুলি ঠিক এটিই করে।

MVCC বিতরণকৃত ব্লকচেইন

আসুন কিছু বাক্য কপি করি যা আমি উপরে বোল্ডে লিখেছি:

দুটি লেনদেনের চেষ্টা করলে ব্যয় করা একই আউটপুট, তাহলে সেই লেনদেনের মধ্যে শুধুমাত্র একটিই চূড়ান্তভাবে গ্রহণ করা হবে। একটি ব্লকচেইন এই দ্বন্দ্বগুলি সনাক্ত এবং প্রতিরোধ করার জন্য একটি ঐক্যবদ্ধ প্রক্রিয়া হিসাবে কাজ করে নেটওয়ার্ক জুড়ে.

দুটি লেনদেনের চেষ্টা করলে মুছে ফেলা একই সারি সংস্করণ, তাহলে এই লেনদেনের মধ্যে শুধুমাত্র একটি চূড়ান্তভাবে গ্রহণ করা হবে। Multiversion সমান্তরাল নিয়ন্ত্রণ এই দ্বন্দ্বগুলি সনাক্ত এবং প্রতিরোধ করার জন্য একটি ঐক্যবদ্ধ প্রক্রিয়া হিসাবে কাজ করে একটি ডাটাবেসের মধ্যে.

সাহসী পদ ছাড়া এই বাক্যগুলি অভিন্ন। তাই আমি যা দাবি করতে যাচ্ছি তা এখানে:

একটি ব্লকচেইন বিতরণ করা MVCC প্রদান করে (কিছু অতিরিক্ত ঘণ্টা এবং শিস দিয়ে)।

আসুন তুলনাটা একটু এগিয়ে দেখি। একটি ব্লকচেইন নোডের দৃষ্টিকোণ থেকে, অব্যয়িত বিটকয়েন লেনদেন আউটপুটগুলির বর্তমান সেট একটি ডাটাবেস গঠন করে, যেখানে প্রতিটি সারি একটি একক অব্যয়িত আউটপুট। এটি ব্যাঙ্ক অ্যাকাউন্টের ডাটাবেসের মতো যা আমরা আগে বর্ণনা করেছি, সামান্য পার্থক্য সহ যে প্রতিটি অ্যাকাউন্টের ব্যালেন্স একাধিক সারিতে বিভক্ত করা যেতে পারে, যার প্রতিটি একই অ্যাকাউন্ট নম্বর দিয়ে চিহ্নিত করা হয়েছে।

একটি বিটকয়েন লেনদেন এই আউটপুটগুলির মধ্যে এক বা একাধিক ব্যয় করে এবং ফলস্বরূপ এক বা একাধিক নতুন আউটপুট তৈরি করে। এটি ঠিক একটি ডাটাবেস লেনদেনের মতো যা এক বা একাধিক সারি সংস্করণ মুছে দেয় এবং ফলস্বরূপ এক বা একাধিক নতুন সারি তৈরি করে (মনে রাখবেন যে MVCC-তে একটি সারি পরিবর্তন করার মতো কোনও জিনিস নেই)। বিটকয়েন ব্লকচেইন নিশ্চিত করে যে একটি একক আউটপুট একাধিক লেনদেনের মাধ্যমে ব্যয় করা যাবে না। এটি নিশ্চিত করার সমতুল্য যে একটি একক সারি সংস্করণ একাধিক ডাটাবেস লেনদেনের মাধ্যমে মুছে ফেলা যাবে না।

এখন আমরা দূরে চলে যাওয়ার আগে, আমি দাবি করছি না যে ব্লকচেইনগুলি সম্পূর্ণ বিশ্বস্ত পরিবেশে বিতরণ করা ডাটাবেস সিঙ্ক্রোনাইজেশনের জন্য একটি দুর্দান্ত সাধারণ উদ্দেশ্য প্রযুক্তি। যেমন অন্যান্য প্রযুক্তি প্রচুর আছে প্যাকসোস, ভেলা এবং দুই-পর্যায়ের প্রতিশ্রুতি যেগুলো খুব সুন্দরভাবে কাজ করে। কিন্তু আমি বিশ্বাস করি যে ব্লকচেইনের একটি মিষ্টি জায়গা রয়েছে, যা অ্যাপ্লিকেশন হিসাবে চিহ্নিত করা যেতে পারে যেখানে:

  • একটি ট্রানজ্যাকশন কখন গৃহীত হয় এবং কখন তা নিশ্চিতভাবে গৃহীত হয় তার মধ্যে আমরা অল্প বিলম্ব গ্রহণ করতে পারি। (বিটকয়েনের মতো এই বিলম্বটি 10 ​​মিনিটের চেয়ে সেকেন্ডের ব্যাপার হতে পারে।)
  • প্রত্যেকে সৎ হলে এবং তাদের সিস্টেম সঠিকভাবে কাজ করলে পরস্পর বিরোধী লেনদেন কখনই হবে না।
  • প্রতিটি লেনদেন একযোগে মাত্র কয়েকটি সারি পরিবর্তন করে (অন্যথায় আমাদের ব্লকচেইন লেনদেনে প্রচুর পরিমাণে ইনপুট থাকবে)।
  • প্রতিটি ডাটাবেস সারির আকার মোটামুটি ছোট (আবারও, আমাদের ব্লকচেইন লেনদেনগুলিকে আকারে বেলুন হতে বাধা দিতে)।

এই সমস্ত মানদণ্ড আর্থিক অ্যাপ্লিকেশন দ্বারা পূরণ করা হয়। আর্থিক বিশ্ব ইতিমধ্যেই একটি লেনদেন পরিচালনা এবং এর চূড়ান্ত নিষ্পত্তির মধ্যে (3 দিন পর্যন্ত!) বিলম্ব করতে অভ্যস্ত। দ্বন্দ্ব প্রতিরোধের ক্ষেত্রে, জালিয়াতি শনাক্ত করার জন্য এটির চুক্তি এবং প্রবিধান রয়েছে এবং এর পরিণতি গুরুতর হতে পারে। এবং প্রতিটি লেনদেনের সাথে জড়িত ডেটার পরিমাণ খুবই কম – উপরের ব্যাঙ্ক অ্যাকাউন্টের উদাহরণটি চিন্তা করুন।

এখন পর্যন্ত, আমি যা প্রদর্শন করেছি তা হল ব্লকচেইনগুলি বিতরণ করা ডাটাবেসের জন্য আরেকটি সিঙ্ক্রোনাইজেশন প্রক্রিয়া। বড় বাহ। বিষয়গুলি তখনই সত্যিকারের আকর্ষণীয় হয়ে ওঠে যখন আমরা ব্লকচেইনগুলি প্রদান করা অতিরিক্ত বৈশিষ্ট্যগুলি বিবেচনা করি।

MVCC এর বাইরে ব্লকচেইন

একটি বিটকয়েন লেনদেন শুধুমাত্র কিছু পূর্ববর্তী লেনদেনের আউটপুটকে নির্দেশ করার এবং তাদের জায়গায় কিছু নতুন তৈরি করার চেয়ে অনেক বেশি করে। এমনকি সহজতম বিটকয়েন লেনদেন দুটি অতিরিক্ত উদ্দেশ্যে কাজ করে।

প্রথমত, বৈধ লেনদেন সংক্রান্ত নিয়মে আমাদের অ্যাকাউন্ট ডাটাবেসের জন্য আবেদনের কিছু যুক্তি রয়েছে। মনে রাখবেন যে একটি লেনদেনের ইনপুটগুলিতে বিটকয়েনের মোট পরিমাণ অবশ্যই আউটপুটগুলির মোট পরিমাণকে কভার করতে হবে। ডাটাবেস অ্যাপ্লিকেশন লজিকে অনুবাদ করা হয়েছে, এটি এমন একটি নিয়ম যা বলে যে ডাটাবেস লেনদেন (কয়েনবেস ব্যতীত) ডাটাবেসে বিটকয়েনের মোট পরিমাণ বাড়ানোর অনুমতি নেই। এই ধরনের সীমাবদ্ধতা নিয়মিত ডাটাবেসের বাইরে যায় সঞ্চিত পদ্ধতি কারণ এটা কোনো অবস্থাতেই ঠেকানো যাবে না।

দ্বিতীয়ত, স্মরণ করুন যে প্রতিটি বিটকয়েন লেনদেন আউটপুট সেই শর্তগুলিকে এনকোড করে যার অধীনে এটি ব্যয় করা যেতে পারে। নিয়মিত বিটকয়েন আউটপুটগুলির জন্য, এই শর্তটি পাবলিক কী ক্রিপ্টোগ্রাফির উপর ভিত্তি করে। একটি সর্বজনীন ঠিকানা আউটপুট "স্ক্রিপ্ট" এর ভিতরে এমবেড করা হয় যাতে এটি শুধুমাত্র সেই সর্বজনীন ঠিকানার সাথে সম্পর্কিত ব্যক্তিগত কী ব্যবহার করেই খরচ করা যায়। যদি আমরা এই আউটপুটটিকে একটি ডাটাবেস সারি হিসাবে বিবেচনা করি, তাহলে আমাদের কাছে যা আছে তা হল প্রতি-সারির অনুমতি সহ একটি ডাটাবেস যা সর্বজনীন কী ক্রিপ্টোগ্রাফির উপর ভিত্তি করে। উপরন্তু, প্রতিটি লেনদেন একটি সর্বজনীনভাবে নিরীক্ষাযোগ্য প্রমাণ উপস্থাপন করে যে এর নির্মাতা(দের) এর পূর্বের সারিগুলি মুছে ফেলা/পরিবর্তন করার অধিকার ছিল। এটি (আমি বিশ্বাস করি) ডাটাবেস প্রযুক্তিতে একটি আসল নতুনত্ব।

এবং আবার, এটি ঠিক তাই ঘটে যে এই দুটি বৈশিষ্ট্যই আর্থিক অ্যাপ্লিকেশনের জন্য অবিশ্বাস্যভাবে দরকারী। আমরা এই সত্যটি পছন্দ করি যে আমাদের ডাটাবেস নিশ্চিত করে, সম্ভাব্য সর্বনিম্ন স্তরে, পাতলা বাতাস থেকে অর্থ তৈরি করা যাবে না। এবং আমরা একটি অসংলগ্ন অডিট ট্রেল পছন্দ করি যাতে দেখা যায় যে প্রতিটি লেনদেন যে তহবিল স্থানান্তরিত হয়েছে তার ধারক দ্বারা অনুমোদিত। হিসাবে এখানে বিস্তারিত আলোচনা করা হয়েছে, আমরা আমাদের কাউন্টারপার্টির পরিচয় না জেনেও নিরাপদ পারমাণবিক পিয়ার-টু-পিয়ার এক্সচেঞ্জ লেনদেন (ডেলিভারি-বনাম-ফিনান্স-টক-এ পেমেন্ট) করতে পছন্দ করতে পারি।

তাহলে টোকেন কোথায়?

অবশ্যই, এর কোনটিই কাকতালীয় নয়, কারণ বিটকয়েন নিজেই একটি সুন্দর পিয়ার-টু-পিয়ার আর্থিক অ্যাপ্লিকেশন। তবুও, ব্লকচেইনের উপরোক্ত বৈশিষ্ট্যগুলির কোনোটিই টোকেনের উপর নির্ভরশীল নয়। যদি আমরা আমাদের "ডাটাবেস" স্কিমা পরিবর্তন করি যাতে প্রতিটি সারি ব্লকচেইনের নেটিভ কারেন্সির পরিবর্তে একাধিক সম্পদের প্রতিনিধিত্ব করতে পারে, তাহলে আমরা সেই মুদ্রা থেকে সম্পূর্ণরূপে নিজেকে মুক্ত করতে পারি। এটি আমাদের জন্য একটি পিয়ার-টু-পিয়ার আর্থিক আবেদনে ঐকমত্য এবং নিরাপত্তা অর্জনের একটি উপায় হিসেবে একটি ব্লকচেইন নিয়ে আসে যেকোন শ্রেণীর সম্পদ.

যদিও শুধুমাত্র একটি ছোট প্রশ্ন: কে এই ঐক্যমত উৎপন্ন খনির না? বিটকয়েনে বেনামী খনি শ্রমিকদের অবশ্যই ব্যয়বহুল অকেজো গণনা করতে হবে এবং ব্লকচেইনের নেটিভ কারেন্সি বা টোকেনে চিহ্নিত ব্লক পুরস্কার (এবং লেনদেনের ফি) দ্বারা তা করতে উৎসাহিত করা হবে। আমাদের কি অন্য কোন বিকল্প আছে?

এটা দেখা যাচ্ছে যে আমরা করতে. আমাদের কাছে অনুমোদিত খনি শ্রমিকদের একটি বন্ধ তালিকা থাকতে পারে, যারা তাদের তৈরি করা ব্লকে স্বাক্ষর করে নিজেদের শনাক্ত করে। বিতরণকৃত ঐক্যমত্য সম্পর্কে নিয়ম (বা "খনির বৈচিত্র্য" যেমন আমরা এটিকে বলি মাল্টিচেইন) ব্লকচেইনের সংখ্যালঘু নিয়ন্ত্রণ প্রতিরোধ করার একটি ভিন্ন উপায় প্রদান করে, যতক্ষণ না আপনি স্বীকার করতে পারেন যে খনি শ্রমিকরা পূর্ব-অনুমোদিত. অবশ্যই বিটকয়েনের জন্য এটি গ্রহণযোগ্য নয়, কারণ পয়েন্টের একটি অংশ হল বেনামী খনির অনুমতি দেওয়া, তাই কেন্দ্রীয়ভাবে লেনদেন সেন্সর করার কোনো উপায় নেই। কিন্তু, যদি বলুন, আমাদের একটি অত্যন্ত নিয়ন্ত্রিত আর্থিক ব্যবস্থা ছিল, যেখানে বিটকয়েনের মডেলটি প্রযোজ্য ছিল না, তাহলে সম্ভবত আমরা খনি শ্রমিকদের একটি পূর্ব-অনুমোদিত তালিকা গ্রহণ করতে পারি? যদি আমাদের কাছে সেগুলি পর্যাপ্ত থাকে, এবং সেগুলিকে প্রতিষ্ঠানের মধ্যে ভালভাবে ছড়িয়ে দেওয়া হয়, এবং তাদের সকলের সাথে আইনি চুক্তি থাকে, তাহলে কি সত্যিই তারা গ্যাং আপ করতে পারে এবং তারা যে নেটওয়ার্কের উপর নির্ভর করে তাকে দুর্বল করতে পারে, যখন এটি তাদের জেলে পাঠাবে?

উপসংহার

আমি আশা করি আমি দেখিয়েছি যে টোকেন ছাড়া ব্লকচেইনে কিছু দরকারী অ্যাপ্লিকেশন রয়েছে, যদিও এগুলো বিটকয়েন ব্লকচেইনের থেকে খুব আলাদা। তবুও একটি প্রশ্ন থেকে যায়:

এই অনুমতিপ্রাপ্ত, টোকেন-মুক্ত শেয়ার্ড লেজার সিস্টেমগুলি কি সত্যিই "ব্লকচেন" নামের যোগ্য?

সংক্ষিপ্ত উত্তর হল: কে যত্ন করে? শব্দের অর্থ সম্পর্কে তর্ক করা খুব কমই মূল্যবান, কারণ আছে সঠিক উত্তর নেই.

কিন্তু একটু গভীরে যাওয়ার জন্য, ধরা যাক আমি বিটকয়েন ব্লকচেইন হল প্রত্নতাত্ত্বিক ব্লকচেইন। এই ক্ষেত্রে, আমাদের সত্যিই যা জিজ্ঞাসা করা উচিত তা হল:

এই শেয়ার করা লেজারগুলি কি "ব্লকচেন" নামের যোগ্যতার জন্য বিটকয়েনের সাথে যথেষ্ট মিল রয়েছে?

আমার নিজের ব্যক্তিগত দৃষ্টিভঙ্গি এখানে হাঁ. কারণ অনুমতির মডেল এবং অর্থনৈতিক প্রণোদনার মধ্যে পার্থক্য থাকা সত্ত্বেও তারা প্রচুর সংখ্যক প্রযুক্তিগত মিল শেয়ার করে। এবং সবচেয়ে গুরুত্বপূর্ণ, কারণ তারা উভয়ই একটি ডিস্ট্রিবিউটেড ডাটাবেসে সম্মতি তৈরি করে ব্লকের চেইন.

পড়ার জন্য আপনাকে ধন্যবাদ.

আপনি এখানে টুইটারে আমাকে অনুসরণ করুন। আরো দেখুন: একটি ব্লকচেইনে বিতরণ বনাম পেমেন্ট.

এখানে এই বিষয়ে পড়া মূল্যবান অন্যান্য টুকরা একটি দম্পতি আছে পিওতর পিয়াসেকি এবং ক্যাম্পবেল খনন.

সময় স্ট্যাম্প:

থেকে আরো মাল্টিচেইন