Sebastien Rousseau

The making of the Express Transaction Credits Platform

২০১৮ সালে Ethereum-এ টোকেন আর্কিটেকচার, মাল্টি-সিগনেচার বিতরণ এবং টাইম-লকড ট্রান্সফার।

8 মিনিট পঠন
Banner for: The making of the Express Transaction Credits Platform

Giant white pillars.class="img-fluid clearfix"

নির্বাহী সারসংক্ষেপ / মূল উপলব্ধি

  • মূল সমস্যা। ২০১৮ সালে Ethereum-এর প্রভাবশালী টোকন মান ERC-20-এ একটি কাঠামোগত ত্রুটি ছিল: একটি স্মার্ট কন্ট্র্যাক্ট ঠিকানায় সরাসরি ট্রান্সফার করা টোকনগুলি নীরবে ধ্বংস হয়ে যেত যদি কন্ট্র্যাক্টে হ্যান্ডলার না থাকত। ERC-20-এ নির্মিত যেকোনো পেমেন্ট প্ল্যাটফর্ম সেই ঝুঁকি উত্তরাধিকারে পেয়েছিল (Ethereum EIPs).
  • সমাধান হিসেবে ERC-223। ERC-223 প্রাপক কন্ট্র্যাক্টগুলিকে tokenFallback(address, uint, bytes) ফাংশন বাস্তবায়ন করতে বাধ্য করেছিল। অনুপস্থিত হলে, ট্রান্সফার পরমাণবিকভাবে রিভার্ট হয়েছিল। কোনো টোকন নীরবে হারানো যেত না (Ethereum EIPs GitHub).
  • EXTC-এর পাঁচটি কন্ট্র্যাক্ট প্রিমিটিভ। টোকন পরিচয় (name, symbol, 18-দশমিক নির্ভুলতা), নির্দিষ্ট সরবরাহ, ERC-223-সম্মত ট্রান্সফার, মাল্টি-সিগনেচার কর্পোরেট বিতরণ, এবং ব্লক-হাইট টাইম-লকড স্ট্যান্ডিং অর্ডার।
  • জামানত ঋণ প্রক্রিয়া। ঋণগ্রহীতারা একটি কন্ট্র্যাক্ট এসক্রোতে EXTC টোকন লক করেছিল; কন্ট্র্যাক্ট জামানত প্রাপ্তির পরে পরমাণবিকভাবে ঋণের আয় মুক্তি দিয়েছিল, আন্ডাররাইটিং বিলম্ব বা ক্রেডিট-কমিটি অনুমোদন ছাড়াই।
  • পরীক্ষা Ethereum সীমা সম্পর্কে কী প্রকাশ করেছিল। জানুয়ারি ২০১৮ চূড়ায় mainnet থ্রুপুট ~15 TPS এবং প্রতি লেনদেনে $0.10–$1.00 গ্যাস খরচে, রেমিট্যান্স-স্কেল ভলিউমও প্রক্রিয়াকারী একটি পেমেন্ট নেটওয়ার্ক Layer-2 পরিকাঠামো ছাড়া পাবলিক Ethereum-এ অর্থনৈতিক ও প্রযুক্তিগতভাবে অকার্যকর ছিল।

ডিজাইন সমস্যা: ERC-20 কেন অপর্যাপ্ত ছিল #

ERC-20 মান, ২০১৫ সালে প্রস্তাবিত এবং Ethereum Improvement Proposal 20-এ আনুষ্ঠানিক, ক্যানোনিকাল ফাঞ্জিবল টোকন ইন্টারফেস সংজ্ঞায়িত করেছিল যা ২০১৭–২০১৮ সালের ICO বুমকে চালিত করেছিল। এর ছয়টি মূল ফাংশন — totalSupply, balanceOf, transfer, transferFrom, approve, এবং allowance — সহজ টোকন ইস্যু এবং বিনিময়ের জন্য যথেষ্ট ছিল।

তবে একটি পেমেন্ট প্ল্যাটফর্মের জন্য ERC-20-এ একটি প্রোডাকশন-ক্রিটিক্যাল ত্রুটি ছিল। transfer(address _to, uint256 _value) ফাংশনটি প্রাপ্তি কন্ট্র্যাক্টে কোনো কোড ট্রিগার না করে কন্ট্র্যাক্ট ঠিকানা সহ যেকোনো ঠিকানায় টোকন স্থানান্তরিত করেছিল। একটি কন্ট্র্যাক্ট যা বিশেষভাবে আগত ERC-20 ট্রান্সফার ট্র্যাক করার জন্য প্রোগ্রাম করা ছিল না তার সেগুলি সনাক্ত করার কোনো উপায় ছিল না। এইভাবে পাঠানো টোকনগুলি পুনরুদ্ধারের কোনো প্রক্রিয়া ছাড়াই স্থায়ীভাবে আটকে গিয়েছিল।

Ethereum সম্প্রদায় অনুমান করেছিল যে এই প্রক্রিয়ার মাধ্যমে ২০১৮ সালের মাঝামাঝি পর্যন্ত কোটি কোটি ডলারের ERC-20 টোকন স্থায়ীভাবে হারিয়ে গিয়েছিল। এমন একটি পেমেন্ট প্ল্যাটফর্ম তৈরি করা যেখানে ট্রান্সফার নীরবে ব্যর্থ হতে পারে এবং ব্যবহারকারীর অর্থ ধ্বংস করতে পারে তা গ্রহণযোগ্য ছিল না।

ERC-223 সমাধান: বিজ্ঞপ্তি সহ পরমাণবিক ট্রান্সফার #

Ethereum EIPs GitHub ইস্যু ট্র্যাকারে প্রস্তাবিত ERC-223, একটি টোকন ট্রান্সফার কী করতে প্রয়োজন তা পরিবর্তন করে নীরব-ক্ষতির সমস্যা সমাধান করেছিল। ERC-223-এর অধীনে transfer(address _to, uint256 _value, bytes _data) পরীক্ষা করেছিল যে প্রাপক ঠিকানাটি কন্ট্র্যাক্ট কোড ধারণ করে কিনা। যদি তাই হয়, ট্রান্সফার _to.tokenFallback(address _from, uint256 _value, bytes _data) কল করেছিল।

সমালোচনামূলক বৈশিষ্ট্য: যদি প্রাপক কন্ট্র্যাক্ট tokenFallback বাস্তবায়ন না করত, পুরো ট্রান্সফার লেনদেন রিভার্ট হয়ে যেত। কোনো টোকন প্রেরকের ব্যালেন্স ছাড়েনি। কোনো টোকন আটকায়নি। ট্রান্সফার পরমাণবিক ছিল — হয় প্রাপকের কোড চালানোর সাথে সম্পূর্ণ হয়েছিল, অথবা অপরিবর্তিত অবস্থায় সম্পূর্ণভাবে ব্যর্থ হয়েছিল।

EXTC-এর জন্য, এর অর্থ ছিল:

EXTC কন্ট্র্যাক্ট আর্কিটেকচার #

EXTC টোকন কন্ট্র্যাক্ট পাঁচটি মডিউলের চারপাশে গঠিত একটি Solidity বাস্তবায়ন ছিল:

১. টোকন পরিচয় #

string public name = "Express Transaction Credits";
string public symbol = "EXTC";
uint8 public decimals = 18;

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

২. নির্দিষ্ট মোট সরবরাহ #

মোট সরবরাহ কন্ট্র্যাক্ট ডেপ্লয়মেন্টে নির্ধারণ করা হয়েছিল এবং পরবর্তী মিন্ট দ্বারা বৃদ্ধি করা যেত না। এই ডিজাইন পছন্দ EXTC-কে ডিফ্লেশনারি করে তুলেছিল: অপরিবর্তনীয় বার্ন অপারেশনের মাধ্যমে সঞ্চালন থেকে স্থায়ীভাবে সরিয়ে নেওয়া যেকোনো টোকন প্রতিস্থাপন ছাড়াই সরবরাহ হ্রাস করেছিল। নির্দিষ্ট-সরবরাহ মডেল ২০১৮ সালের পেমেন্ট টোকন ডিজাইনে মানক ছিল, Bitcoin-প্রভাবিত অনুমান প্রতিফলিত করে যে ডিফ্লেশনারি চাপ বিনিময়ের মাধ্যমের জন্য একটি বৈশিষ্ট্য।

৩. ERC-223 সম্মত ব্যালেন্স এবং ট্রান্সফার #

মূল ট্রান্সফার ফাংশন সম্পূর্ণ ERC-223 ইন্টারফেস বাস্তবায়ন করেছিল। অভ্যন্তরীণ ব্যালেন্স ম্যাপিং প্রতিটি ঠিকানার হোল্ডিং ট্র্যাক করেছিল। isContract(address) হেল্পার tokenFallback কল করতে হবে কিনা তা নির্ধারণ করতে EOA (বাহ্যিকভাবে মালিকানাধীন অ্যাকাউন্ট) ঠিকানাগুলিকে কন্ট্র্যাক্ট ঠিকানা থেকে আলাদা করেছিল।

৪. মাল্টি-সিগনেচার কর্পোরেট বিতরণ #

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

  1. একজন মনোনীত উদ্যোক্তা প্রাপক, পরিমাণ এবং একটি nonce নির্দিষ্ট করে একটি ট্রান্সফার প্রস্তাব করেছিল।
  2. একজন সহ-স্বাক্ষরকারী nonce নিশ্চিত করেছিল।
  3. উভয় স্বাক্ষর অন-চেইনে রেকর্ড হওয়ার পরেই ট্রান্সফার কার্যকর হয়েছিল।

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

৫. ব্লক-হাইট টাইম-লকড স্ট্যান্ডিং অর্ডার #

পুনরাবৃত্তিমূলক পেমেন্ট — বেতন, সদস্যপদ, নির্ধারিত ঋণ পরিশোধ — একটি স্ট্যান্ডিং-অর্ডার প্রিমিটিভ প্রয়োজন ছিল। EXTC এটি টাইম-লক হিসাবে বাস্তবায়ন করেছিল: একটি ট্রান্সফার রেকর্ড releaseBlock প্যারামিটার সহ কন্ট্র্যাক্টে সংরক্ষিত ছিল। Ethereum ব্লক হাইট releaseBlock-এ না পৌঁছানো পর্যন্ত ট্রান্সফার কার্যকর হতে পারত না।

সময় প্রক্সি হিসাবে ব্লক হাইট ২০১৮ সালে একটি বাস্তববাদী পছন্দ ছিল। Ethereum 15-সেকেন্ড ব্লক ইন্টারভাল লক্ষ্য করেছিল, ব্লক হাইটকে কয়েক মিনিটের পরিসরে ওয়াল-ক্লক সময়ের জন্য যুক্তিসঙ্গতভাবে নির্ভরযোগ্য প্রক্সি করে তুলেছিল। পরম টাইমস্ট্যাম্প (block.timestamp) পাওয়া যেত কিন্তু ±900-সেকেন্ড উইন্ডোর মধ্যে মাইনার ম্যানিপুলেশনের প্রতি সংবেদনশীল ছিল, ব্লক হাইটকে আর্থিক কন্ট্র্যাক্টের জন্য নিরাপদ রেফারেন্স করে তুলেছিল।

জামানত-সমর্থিত তাৎক্ষণিক ঋণ প্রক্রিয়া #

EXTC ঋণদান প্রিমিটিভ সবচেয়ে জটিল উপাদান ছিল। ডিজাইন:

  1. ঋণগ্রহীতা জামানত লক করে। ঋণগ্রহীতা lockCollateral(uint256 _collateralAmount) কল করেছিল, ERC-223 tokenFallback-এর মাধ্যমে EXTC টোকন ঋণদান কন্ট্র্যাক্ট এসক্রোতে স্থানান্তর করেছিল।
  2. ঋণ-থেকে-মূল্য অনুপাত পরীক্ষা। কন্ট্র্যাক্ট একটি পূর্ব-কনফিগার করা LTV অনুপাত (যেমন 50%) পড়েছিল এবং লক করা জামানতের বিপরীতে সর্বাধিক ঋণের পরিমাণ গণনা করেছিল।
  3. পরমাণবিক ঋণ বিতরণ। জামানত ন্যূনতম থ্রেশহোল্ড পূরণ করলে, কন্ট্র্যাক্ট অবিলম্বে ঋণগ্রহীতার ঠিকানায় ঋণের পরিমাণ স্থানান্তরিত করত। কোনো আন্ডাররাইটিং সারি নেই, কোনো ক্রেডিট কমিটি নেই, কোনো নিষ্পত্তি বিলম্ব নেই।
  4. পরিশোধ এবং মুক্তি। পরিশোধে — মূলধন এবং একটি নির্দিষ্ট সুদের হার — কন্ট্র্যাক্ট ঋণগ্রহীতাকে জামানত ফেরত মুক্তি দিয়েছিল। releaseBlock দ্বারা পরিশোধ করতে ব্যর্থতা স্বয়ংক্রিয় লিকুইডেশন ট্রিগার করেছিল: কন্ট্র্যাক্ট জামানত ঋণদাতার নির্ধারিত ঠিকানায় স্থানান্তরিত করেছিল।

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

পরীক্ষা কী প্রকাশ করেছিল #

EXTC কন্ট্র্যাক্ট আর্কিটেকচার প্রযুক্তিগতভাবে সঙ্গতিপূর্ণ ছিল। ERC-223 ERC-20-এর সবচেয়ে গুরুতর নিরাপত্তা ত্রুটি সমাধান করেছিল। মাল্টি-সিগনেচার এবং টাইম-লক প্রিমিটিভগুলি সরাসরি বাস্তব কর্পোরেট পেমেন্ট ওয়ার্কফ্লোতে ম্যাপ করেছিল। জামানত ঋণ প্রক্রিয়া দেখিয়েছিল যে সুরক্ষিত ঋণদান সম্পূর্ণরূপে স্বয়ংক্রিয় এবং অন-চেইনে স্ব-প্রয়োগযোগ্য হতে পারে।

ব্যবহারিকভাবে দুটি সীমাবদ্ধতা প্রকাশ পেয়েছিল:

গ্যাস খরচ। জানুয়ারি ২০১৮ চূড়ায়, Ethereum গ্যাসের দাম 50–100 gwei-তে পৌঁছেছিল, একটি একক ERC-223 টোকন ট্রান্সফারের খরচ $0.50–$2.00 করে। $10–$50 এর মাইক্রো-পেমেন্ট বা রেমিট্যান্সের জন্য, সেই ফি নিষিদ্ধকর ছিল।

থ্রুপুট। ২০১৮ সালের শুরুতে Ethereum mainnet ব্লক গ্যাস লিমিট প্রায় 8 মিলিয়ন গ্যাস ছিল। একটি ERC-223 ট্রান্সফার প্রায় 50,000–80,000 গ্যাস ব্যবহার করেছিল। তাই নেটওয়ার্ক প্রতি ব্লকে প্রায় 100–160 EXTC টোকন ট্রান্সফার, বা 15-সেকেন্ড ব্লক ইন্টারভালে প্রতি সেকেন্ডে প্রায় 7–11 প্রক্রিয়া করতে পারত। পেমেন্ট নেটওয়ার্ক স্কেল — প্রতি সেকেন্ডে শত বা হাজার লেনদেন — Layer-2 পরিকাঠামো ছাড়া পাবলিক Ethereum-এ অর্জনযোগ্য ছিল না যা এখনও প্রোডাকশন আকারে বিদ্যমান ছিল না।

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

যে ধারণাগুলি উৎপাদনে পৌঁছেছিল #

EXTC থেকে বেশ কয়েকটি ডিজাইন প্যাটার্ন পরবর্তী বিকাশ দ্বারা যাচাই করা হয়েছিল:

রিসিভার বিজ্ঞপ্তি সহ পরমাণবিক টোকন ট্রান্সফার — মূল ERC-223 বৈশিষ্ট্য — ERC-777 (2019)-এর ভিত্তি হয়েছিল, যা বিজ্ঞপ্তি মডেল বিস্তৃত করেছিল এবং পরে DeFi ঋণদান প্রোটোকলে অন্তর্ভুক্ত করা হয়েছিল। tokenFallback প্যাটার্ন আধুনিক DeFi আর্কিটেকচার জুড়ে প্রদর্শিত হয়।

কর্পোরেট বিতরণের জন্য মাল্টি-সিগনেচার অনুমোদন — কার্যকরের আগে একাধিক অন-চেইন স্বাক্ষর প্রয়োজনের প্যাটার্ন — DAO ট্রেজারি ব্যবস্থাপনা এবং প্রাতিষ্ঠানিক কাস্টডি সমাধানের জন্য মানক মডেল হয়ে উঠেছিল। ২০১৮ সালে চালু হওয়া Gnosis Safe এই প্যাটার্নটি স্কেলে জনপ্রিয় করেছিল।

মধ্যস্থতাকারী ছাড়া জামানত-সমর্থিত তাৎক্ষণিক ঋণ — এসক্রোতে জামানত লক করার এবং পরমাণবিকভাবে ঋণের আয় মুক্তি দেওয়ার প্রক্রিয়া — Compound (2018) এবং Aave (2020)-এর মতো DeFi ঋণদান প্রোটোকলের মৌলিক ডিজাইন।

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

EXTC পরীক্ষা প্রোডাকশন স্কেলে পৌঁছায়নি। ডিজাইনটি কার্যকর করার জন্য প্রয়োজনীয় পরিকাঠামো পরিপক্ক হতে আরও তিন থেকে পাঁচ বছর সময় নিয়েছিল। এটি যে ডিজাইন প্রশ্নগুলি জিজ্ঞাসা করেছিল সেগুলি ২০১৮ সালের জন্য সঠিক ছিল।

প্রায়শই জিজ্ঞাসিত প্রশ্ন #

ERC-20-এর ত্রুটি ঠিক করা সত্ত্বেও ERC-223 কেন কখনও প্রভাবশালী টোকন মান হিসাবে গৃহীত হয়নি?

ERC-223 প্রাপক কন্ট্র্যাক্টগুলিকে tokenFallback বাস্তবায়ন করতে প্রয়োজন করেছিল, ERC-20 টোকনের জন্য ইতিমধ্যে ডেপ্লয় করা হাজার হাজার কন্ট্র্যাক্টের সাথে পিছনের সামঞ্জস্যতা ভেঙে দিচ্ছিল। বিদ্যমান ERC-20 ইকোসিস্টেম মাইগ্রেট করার জন্য খুব বড় ছিল। পরবর্তী প্রস্তাবগুলি — বিশেষত ERC-777 এবং ERC-1363 — বিভিন্ন সামঞ্জস্যতা ট্রেড-অফ সহ একই সমস্যা সমাধান করেছিল, কিন্তু ERC-20 নেটওয়ার্ক প্রভাব এবং র‍্যাপড টোকন প্যাটার্নের প্রবর্তনের সমন্বয়ের মাধ্যমে প্রভাবশালী থেকেছিল যা নীরব-ক্ষতির পরিস্থিতি এড়িয়েছিল।

EXTC টোকন এবং প্ল্যাটফর্মের কী হয়েছিল?

EXTC ২০১৮ সালের একটি প্রুফ-অফ-কনসেপ্ট এবং প্রাথমিক গবেষণা প্রকল্প ছিল। Ethereum স্কেলেবিলিটি সীমা এবং নিয়ন্ত্রক অনিশ্চয়তা স্পষ্ট হওয়ার সাথে সাথে বৃহত্তর ICO এবং পেমেন্ট টোকন বাজার ২০১৮–২০১৯ জুড়ে তীব্রভাবে সংকুচিত হয়েছিল। EXTC ডিজাইনে এম্বেড করা ধারণাগুলি পরবর্তী প্রোটোকলগুলিতে পুনরায় আবির্ভূত হয়েছিল যাদের Layer-2 পরিকাঠামো, আরও ভালো টুলিং এবং স্পষ্ট নিয়ন্ত্রক কাঠামোতে অ্যাক্সেস ছিল।

EXTC-এর জামানত ঋণ মডেল Aave-এর মতো আধুনিক DeFi প্রোটোকলের সাথে কীভাবে তুলনা করে?

মূল প্রক্রিয়া একই: জামানত লক করুন, LTV অনুপাতের বিপরীতে আকার করা ঋণ পান, পরিশোধ করুন বা লিকুইডেশনের মুখোমুখি হন। পার্থক্যগুলি: (1) আধুনিক DeFi প্রোটোকলগুলি নির্দিষ্ট অনুপাতের পরিবর্তে গতিশীল LTV-এর জন্য ওরাকল প্রাইস ফিড ব্যবহার করে; (2) তারা পুল ব্যবহারের প্রতিক্রিয়াশীল অ্যালগরিদমিক সুদের হার ব্যবহার করে; (3) তারা 2018 mainnet-এর চেয়ে 10–100 গুণ কম গ্যাস খরচ সহ Layer-2 নেটওয়ার্কে কাজ করে; (4) Aave এবং Compound আনুষ্ঠানিক নিরাপত্তা অডিটের মধ্য দিয়ে গেছে এবং শত কোটি ডলারের তরলতা ধরে রেখেছে, মৌলিক মডেলটি সুদৃঢ় যে অভিজ্ঞতামূলক যাচাইকরণ প্রদান করছে।

২০১৮ সালের শুরুতে Solidity সংস্করণ সীমাবদ্ধতা কী ছিল?

EXTC কন্ট্র্যাক্ট Solidity 0.4.x-এর জন্য লেখা হয়েছিল, ২০১৮ সালের শুরুতে প্রভাবশালী সংস্করণ। Solidity 0.4-এ পরবর্তী সংস্করণগুলিতে প্রবর্তিত অনেক নিরাপত্তা বৈশিষ্ট্যের অভাব ছিল: পূর্ণসংখ্যা ওভারফ্লো চেকিং (0.8.0-এ স্বয়ংক্রিয়ভাবে যোগ করা হয়েছে), ত্রুটি বার্তা সহ require/revert (0.4-এ সীমিত), এবং স্পষ্ট ফাংশন দৃশ্যমানতা (0.4-এ ডিফল্ট public ছিল)। কন্ট্র্যাক্ট ওভারফ্লোর বিরুদ্ধে রক্ষার জন্য OpenZeppelin-এর SafeMath লাইব্রেরির উপর নির্ভর করেছিল — কম্পাইলার এটি স্থানীয়ভাবে প্রয়োগ করার আগে একটি সাধারণ প্যাটার্ন।

তথ্যসূত্র #

সর্বশেষ পর্যালোচনা .

সর্বশেষ পর্যালোচনা .