paint-brush
স্মার্ট কন্ট্রাক্টে সামনের দিকের দুর্বলতা কীভাবে সমাধান করবেনদ্বারা@dansierrasam79
1,832 পড়া
1,832 পড়া

স্মার্ট কন্ট্রাক্টে সামনের দিকের দুর্বলতা কীভাবে সমাধান করবেন

দ্বারা Daniel Chakraborty6m2023/03/04
Read on Terminal Reader
Read this story w/o Javascript

অতিদীর্ঘ; পড়তে

অগ্রবর্তী ত্রুটি ঘটে যখন উচ্চতর গ্যাস ফি প্রদান করে এমন লেনদেনগুলি যেগুলি করে না তার চেয়ে বেশি সুবিধাপ্রাপ্ত হয়৷ ত্রুটিপূর্ণ প্রোগ্রামিংয়ের কারণে দুর্বলতা দেখা দেয় না তবে লেনদেনের আদেশ এবং ব্লকে যোগ করার উপায় ব্যবহার করে। একজন আক্রমণকারী নিলাম, ট্রেডিং বা প্রাথমিক মুদ্রা অফারগুলির মতো ইভেন্টগুলির ফলাফলকে তাদের পক্ষে পরিবর্তন করতে পারে কেবল উচ্চ গ্যাস ফি প্রদান করে।
featured image - স্মার্ট কন্ট্রাক্টে সামনের দিকের দুর্বলতা কীভাবে সমাধান করবেন
Daniel Chakraborty HackerNoon profile picture
0-item
1-item

এমনকি সুপারমার্কেটে বা আউটলেটে যেখানে আপনি আপনার ইউটিলিটি বিল পরিশোধ করেন সেখানে সারি থাকলেও, আমরা কেউ কেউ জানি যে কেউ লাইনে লাফ দিলে কেমন লাগে।


সারির সামনে, অর্থাৎ। বিশেষ করে, যদি এই কারণে হয় যে লাইনে দাঁড়িয়ে থাকা অন্যদের তুলনায় তাদের বিলের মূল্য অনেক বেশি। স্পষ্টতই, পরিষেবার তত্পরতার ক্ষেত্রে এটি একটি মানদণ্ড হওয়া উচিত নয়।


এখন, লাইনের সামনে স্থানান্তরিত হওয়ার এই ব্যবসাটি ইথেরিয়াম স্মার্ট চুক্তিতেও ঘটে। অন্যথায় সামনের দিকের ত্রুটি হিসাবে পরিচিত, যার নাম স্টক মার্কেটের অনুরূপ ঘটনা থেকে প্রাপ্ত হয়েছে, স্মার্ট চুক্তির লেনদেনগুলি যেগুলি উচ্চতর গ্যাস ফি প্রদান করে সেগুলির চেয়ে বেশি পছন্দ করা হয়৷

ব্রেকিং ডাউন দ্য ফ্রন্ট-চলমান দুর্বলতা

ব্যাট থেকে ডানদিকে, ত্রুটিপূর্ণ প্রোগ্রামিংয়ের কারণে এই দুর্বলতা দেখা দেয় না তবে 'মেম্পুল' থেকে লেনদেনের আদেশ এবং যোগ করার উপায় ব্যবহার করে।


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


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


সামনে চলমান দুর্বলতা কীভাবে কাজ করে তা বোঝার জন্য আসুন এই সাধারণ উদাহরণটি দেখি:

এই উদাহরণে, আমাদের তিনজন অভিনেতা আছে: নমন, কাব্য এবং ঐশ্বরিয়া। নামান প্রথমে হ্যাশিং চ্যালেঞ্জটিকে অন্য দুটি সমাধানের জন্য একটি স্মার্ট চুক্তি হিসাবে স্থাপন করে। যে কেউ এই হ্যাশিং ধাঁধাটি সমাধান করবে সে পুরস্কার হিসাবে 10 ইথার পাবে।


এখন, কাব্য প্রথমে হ্যাশিং সলিউশন খুঁজে পায় এবং তার নিজের স্মার্ট কন্ট্রাক্ট থেকে গ্যাস ফি হিসেবে 10 Gwei দিয়ে পাঠায়:


অন্যদিকে, ঐশ্বরিয়া উত্তরটি একটু পরে খুঁজে পায় এবং গ্যাস ফি হিসাবে 100 Gwei এর সাথে তার স্মার্ট চুক্তির সঠিক উত্তরটি পাস করে।


উচ্চ গ্যাস ফি প্রদানের কারণে, কাব্য 10 ইথার পুরস্কার পাওয়ার পরিবর্তে, ঐশ্বর্য এটি গ্রহণ করেন, যা নীচে দেখানো হয়েছে:


সহজভাবে বলতে গেলে, এটি হল সামনের দৌড় বা লেনদেন-অর্ডারিং ত্রুটি, কারণ এটি গ্যাস ফি মূল্যের উপর ভিত্তি করে লেনদেন প্রক্রিয়া করে।


অন্য কথায়, এমনকি যদি কাব্য ঐশ্বরিয়ার আগে তার উত্তর জমা দেন, তবুও তিনি তার প্রচেষ্টার জন্য কিছুই পান না, যেমনটি নীচে দেখানো হয়েছে:

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

সামনের দুর্বলতার সাথে মোকাবিলা করার 3 উপায়

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


পদ্ধতি 1: লেনদেন কাউন্টার

লেনদেন কাউন্টার ব্যবহার করা হল অন্য যেকোন উপায়ে পুরস্কার পেতে বাধা দেওয়ার অন্যতম সহজ উপায়।


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


যেহেতু প্রথম উপস্থাপিত সমাধানের জন্য txCounter-এর বর্তমান মান শূন্য হবে, তাই এটি লক হয়ে যায়। অন্য কথায়, এবং উপরের উদাহরণের মতো, কাব্য তার 10 ইথার পুরস্কার পাওয়ার জন্য তার সমাধানের পাশাপাশি শূন্যের মানও প্রবেশ করাবে। .


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


পদ্ধতি 2: গ্যাসের সীমা নির্ধারণ করা

এখন, এই পদ্ধতির সাথে, সমস্ত লেনদেনের জন্য একটি গ্যাসের সীমা নির্ধারণের দিকে মনোযোগ দেওয়া হচ্ছে। উভয়, একটি নিম্ন এবং একটি উচ্চ সীমা, যদি প্রয়োজন হয়।


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


আপনি যদি নীচের কোডটি দেখেন, গ্যাসথ্রটল মডিফায়ারকে ধন্যবাদ, 1 বা তার কম পরিমাণ গ্যাস প্রদান করে এমন সমস্ত লেনদেন করা হবে কিন্তু যারা বেশি গ্যাস পরিশোধ করে লাইনে ঝাঁপ দেওয়ার চেষ্টা করে তারা তা করবে না। এই ক্ষেত্রে, 1 Wei বা Gwei এই ধরনের একটি লেনদেন প্রক্রিয়াকরণের মানক খরচ হতে পারে এবং যা সবই অনুমোদিত হবে।


সুতরাং, যদি এই থ্রোটলের কারণে সমস্ত লেনদেন গ্যাসে এত বেশি পরিবর্তিত না হয়, তবে নির্দিষ্ট লেনদেনের ক্ষেত্রে অগ্রাধিকার দেখানোর সমস্যা দেখা দেবে না। এই ধরনের পদ্ধতির সুবিধা থাকলেও, প্রদত্ত গ্যাস ফি ভবিষ্যতে পরিবর্তন হতে বাধ্য।


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


পদ্ধতি 3: সাবমেরিন-পাঠানো পদ্ধতি

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


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


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

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

সামনের দিকের দুর্বলতাকে দূরে রাখার অন্যান্য কৌশল

অবশ্যই, পূর্ববর্তী বিভাগে আলোচনা করা কৌশলগুলিই একমাত্র নয় যেগুলি 'সামনে চলমান' দুর্বলতা থেকে স্মার্ট চুক্তিগুলিকে রক্ষা করে৷


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




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


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