মেটামরফিক স্মার্ট কন্ট্রাক্ট প্লেটোব্লকচেন ডেটা ইন্টেলিজেন্স সনাক্ত করার জন্য একটি টুল। উল্লম্ব অনুসন্ধান. আ.

রূপান্তরিত স্মার্ট চুক্তি সনাক্ত করার জন্য একটি টুল

একটি গুরুত্বপূর্ণ Ethereum নিরাপত্তা অনুমান হল যে স্মার্ট চুক্তি কোড অপরিবর্তনীয় এবং তাই এটি ব্লকচেইনে স্থাপন করার পরে পরিবর্তন করা যাবে না। অনুশীলনে, কিছু স্মার্ট চুক্তি পারেন পরিবর্তন - এমনকি তারা স্থাপন করা হয়েছে. কয়েকটি চতুর কৌশলের সাহায্যে, আপনি রূপান্তরিত স্মার্ট চুক্তি তৈরি করতে পারেন যা “রূপান্তর"অন্য কিছুতে - এবং কী সেগুলিকে সম্ভব করে তোলে তা বোঝার মাধ্যমে, আপনি সেগুলি সনাক্ত করতে পারেন৷

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

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

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

রূপান্তরিত স্মার্ট চুক্তি সনাক্ত করা

সার্জারির মেটামরফিক কন্ট্রাক্ট ডিটেক্টর আমি ছয়টি বৈশিষ্ট্য বিশ্লেষণ করেছি যা একটি স্মার্ট চুক্তি রূপান্তরিত কিনা তা নির্দেশ করতে পারে।

    1. চুক্তি স্থাপনের জন্য পরিচিত রূপান্তরিত কোড ব্যবহার করা হয়েছিল? যদি পরিচিত রূপান্তরিত বাইটকোড - নিম্ন-স্তরের, ভার্চুয়াল মেশিন-পঠনযোগ্য কোড যা Ethereum স্মার্ট চুক্তি, সাধারণত সলিডিটিতে লেখা, কম্পাইল হওয়ার পরে পরিণত হয় - একটি প্রদত্ত স্মার্ট চুক্তির স্থাপনার জন্য একটি লেনদেনে প্রদর্শিত হয়, এটি একটি প্রধান লাল পতাকা। পরবর্তী বিভাগগুলিতে, আমরা 0 বয়স দ্বারা বিকাশিত রূপান্তরিত বাইটকোডের এমন একটি উদাহরণ নিয়ে আলোচনা করব। একটি গুরুত্বপূর্ণ সতর্কতা: রূপান্তরিত বাইটকোডের সম্ভাব্য অসংখ্য বৈচিত্র রয়েছে, যা সমস্ত জাত সনাক্ত করা কঠিন করে তোলে। যদিও সুপরিচিত দৃষ্টান্তগুলির জন্য স্ক্যান করার মাধ্যমে, সনাক্তকারী আক্রমণকারীদের জন্য কম ঝুলন্ত ফলগুলিকে সরিয়ে দেয় যারা কেবল বিদ্যমান উদাহরণগুলি অনুলিপি এবং পেস্ট করছে।
    2. স্মার্ট চুক্তি কোড স্ব-ধ্বংস করতে পারে? একটি চুক্তিতে কোডটি প্রতিস্থাপন করতে - একটি রূপান্তরিত চুক্তি তৈরির একটি মূল পদক্ষেপ - একজন বিকাশকারীকে প্রথমে আগে থেকে বিদ্যমান কোড মুছে ফেলতে হবে। এটি করার একমাত্র উপায় হল ব্যবহার করে স্বনির্ভর opcode, একটি কমান্ড যা ঠিক যা মনে হয় ঠিক তাই করে – এটি একটি প্রদত্ত চুক্তির ঠিকানায় সমস্ত কোড এবং স্টোরেজ মুছে দেয়। একটি চুক্তিতে স্ব-ধ্বংসকারী কোডের উপস্থিতি প্রমাণ করে না যে এটি রূপান্তরিত; যাইহোক, এটি একটি সংকেত প্রস্তাব করে যে চুক্তি হতে পারে রূপান্তরিত হও এবং এটি জানার মতো, যাইহোক, আপনি যে চুক্তিগুলির উপর নির্ভর করছেন তা নিজেদেরকে পরমাণু করতে পারে কিনা।
    3. স্মার্ট চুক্তি কি অন্য কোথাও থেকে কোডে কল করে? যদি প্রশ্নে থাকা স্মার্ট চুক্তিটি সরাসরি স্ব-ধ্বংস করতে না পারে, তবে এটি ব্যবহার করে নিজেকে মুছে ফেলতে সক্ষম হতে পারে ডেলিগেটক্যাল অপকোড. এই অপকোডটি একটি স্মার্ট চুক্তিকে গতিশীলভাবে কোড লোড করতে এবং কার্যকর করতে দেয় যা অন্য একটি স্মার্ট চুক্তির মধ্যে থাকে। এমনকি স্মার্ট চুক্তিতে SELFDESTRUCT অপকোড না থাকলেও, এটি অন্য কোথাও থেকে স্ব-ধ্বংসকারী কোড লোড করতে DELEGATECALL ব্যবহার করতে পারে। যদিও DELEGATECALL কার্যকারিতা একটি স্মার্ট চুক্তি রূপান্তরিত কিনা তা সরাসরি নির্দেশ করে না, এটি একটি সম্ভাব্য সূত্র - এবং সম্ভাব্য নিরাপত্তা সমস্যা - এটি লক্ষণীয়। সতর্ক হোন যে এই সূচকটির অনেক মিথ্যা ইতিবাচকতা বাড়াতে পারে। 
    4. অন্য চুক্তি এই চুক্তি স্থাপন? রূপান্তরিত চুক্তি স্থাপন করা যেতে পারে কেবল অন্যান্য স্মার্ট চুক্তি দ্বারা। এর কারণ হল রূপান্তরিত চুক্তিগুলি অন্য অপকোড দ্বারা সক্ষম করা হয়, শুধুমাত্র অন্যান্য স্মার্ট চুক্তিগুলির দ্বারা ব্যবহারযোগ্য, CREATE2 নামে পরিচিত৷ (আমরা CREATE2 নিয়ে আলোচনা করব - এটি কীভাবে কাজ করে এবং কেন এটি গুরুত্বপূর্ণ - পরবর্তী বিভাগে আরও।) এই বৈশিষ্ট্যটি সম্ভাব্য রূপান্তরের সবচেয়ে কম সুস্পষ্ট সূচকগুলির মধ্যে একটি; এটি একটি প্রয়োজনীয় কিন্তু অপর্যাপ্ত পূর্বশর্ত। এই বৈশিষ্ট্যের জন্য স্ক্যান করার ফলে অনেক মিথ্যা ইতিবাচক হওয়ার সম্ভাবনা রয়েছে - তবে এটি জানা মূল্যবান তথ্য কারণ এটি সন্দেহ বাড়াতে পারে এবং একটি চুক্তিকে আরও যাচাই করার কারণ প্রদান করতে পারে, বিশেষ করে যদি স্মার্ট চুক্তিতে পরবর্তীতে বর্ণিত অপকোড থাকে।
    5. স্থাপনার চুক্তিতে কি CREATE2 অপকোড থাকে? উপরে উল্লিখিত হিসাবে, CREATE2 এর মাধ্যমে স্থাপনা রূপান্তরের জন্য একটি অপরিহার্য পূর্বশর্ত। যদি একটি স্থাপনার চুক্তিতে CREATE2 অপকোড থাকে, তাহলে এটি ইঙ্গিত দিতে পারে যে এটি প্রশ্নে চুক্তিটি স্থাপন করতে CREATE2 ব্যবহার করেছে। যদি নিযুক্তকারী প্রকৃতপক্ষে উক্ত চুক্তি স্থাপনের জন্য CREATE2 ব্যবহার করে থাকে, তবে এর অর্থ এই নয় যে চুক্তিটি অগত্যা রূপান্তরিত, এর অর্থ এই যে এটি হতে পারে রূপান্তরিত হতে পারে এবং সতর্কতার সাথে এগিয়ে যাওয়া এবং আরও তদন্ত করা বুদ্ধিমানের কাজ হতে পারে। আবার, মিথ্যা ইতিবাচক সতর্ক থাকুন: তৈরি করুন 2 প্রচুর আছে বৈধ ব্যবহার, জোরদার সহ "লেয়ার 2" স্কেলিং সমাধান এবং ওয়েব3 উন্নত করতে পারে এমন স্মার্ট কন্ট্রাক্ট ওয়ালেট তৈরি করা সহজ করে তোলে ব্যবহারকারী-অনবোর্ডিং এবং মূল পুনরুদ্ধারের বিকল্প।
    6. কোড পরিবর্তন হয়েছে? এটি সবচেয়ে সুস্পষ্ট বলা, কিন্তু এটি শুধুমাত্র একটি রূপান্তরিত চুক্তি ইতিমধ্যে morphed পরে প্রদর্শিত হবে. যদি স্মার্ট কন্ট্রাক্টের কোড হ্যাশ - একটি অনন্য, ক্রিপ্টোগ্রাফিক শনাক্তকারী - চুক্তিটি প্রাথমিকভাবে স্থাপনের সময় থেকে ভিন্ন হয়, তাহলে সম্ভবত কোডটি সরানো, প্রতিস্থাপন বা পরিবর্তন করা হয়েছে। যদি হ্যাশগুলি আর মেলে না, তাহলে কোড সম্পর্কে কিছু পরিবর্তন হয়েছে এবং চুক্তিটি রূপান্তরিত হতে পারে। এই পতাকাটি রূপান্তরের সবচেয়ে নিশ্চিত সূচক, কিন্তু এটি ভবিষ্যদ্বাণী করতে বা পূর্বাভাস দিতে সাহায্য করবে না কারণ এটি শুধুমাত্র এটি ইতিমধ্যেই ঘটেছে কিনা তা পরীক্ষা করে।

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

কীভাবে একজন দূষিত অভিনেতা মানুষের তহবিল চুরি করতে রূপান্তরিত চুক্তি ব্যবহার করতে পারে

কেলেঙ্কারির অংশ হিসাবে কেউ কীভাবে রূপান্তরিত স্মার্ট চুক্তি ব্যবহার করতে পারে তা এখানে। 

প্রথম সেটআপ ফেজ। আক্রমণকারী দুটি টুল ব্যবহার করে ব্লকচেইনের একটি নির্দিষ্ট ঠিকানায় একটি স্মার্ট চুক্তি স্থাপন করে: রূপান্তরিত বাইটকোড এবং CREATE2 অপকোড। (আমরা এই উভয় ধারণার উপর পরে প্রসারিত করব।) রূপান্তরিত বাইটকোড তারপরে তার নাম যা প্রস্তাব করে এবং "মর্ফস" তা করে। এখানে, এটি a এ পরিবর্তিত হয় staking চুক্তি যেখানে ব্যবহারকারীরা ERC-20 টোকেন শেয়ার করতে পারে। (আবার, আমরা পরে এই মর্ফিং কৌশলটির বিশদ বিবরণ নিয়ে আলোচনা করব। প্রতিশ্রুতি!)

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

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

রূপান্তরিত স্মার্ট চুক্তির ঝুঁকিগুলি এখন স্পষ্টতই স্পষ্ট। কিন্তু আপনি এখনও ভাবছেন, এই রূপান্তর কৌশলটি আসলে কীভাবে কাজ করে? এটি বোঝার জন্য, আপনাকে বাইটকোড-স্তরে গভীরভাবে অনুসন্ধান করতে হবে। 

কিভাবে CREATE2 রূপান্তরের সম্ভাবনা উন্মুক্ত করে 

তৈরি করুন 2 একটি অপকোড আপগ্রেড, ইথেরিয়ামের সাথে পরিচয় করিয়ে দেওয়া হয়েছে 2019 সালের ফেব্রুয়ারিতে, এটি স্মার্ট চুক্তি স্থাপনের একটি নতুন উপায় অফার করে। 

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

কিভাবে CREATE2 ভবিষ্যতের পূর্বাভাস দিতে পারে? অপকোডের গণনা নির্ধারক: যতক্ষণ ইনপুটগুলি পরিবর্তন না হয়, CREATE2 দ্বারা নির্ধারিত ঠিকানা পরিবর্তন হবে না। (এমনকি ক্ষুদ্রতম পরিবর্তন অন্য কোথাও স্থাপনার কারণ হবে।)

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

CREATE2 সূত্রটি দেখতে কেমন তা এখানে। (দ্রষ্টব্য: আপনি নীচের উদাহরণে আরেকটি উপাদান, একটি “0xFF” লক্ষ্য করবেন। এটি শুধুমাত্র একটি ধ্রুবক CREATE2 ব্যবহার করে সংঘর্ষ প্রতিরোধ পূর্ববর্তী CREATE opcode সহ।)

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

কিভাবে একটি রূপান্তরিত চুক্তি আসলে কাজ করে

একটি স্মার্ট চুক্তিকে রূপান্তরিত চুক্তিতে পরিণত করার রেসিপিটি মোট তিনটি স্মার্ট চুক্তির জন্য আহ্বান করে, প্রতিটি একটি অনন্য ভূমিকা পালন করে।

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

মেটামরফিক স্মার্ট কন্ট্রাক্ট প্লেটোব্লকচেন ডেটা ইন্টেলিজেন্স সনাক্ত করার জন্য একটি টুল। উল্লম্ব অনুসন্ধান. আ.

আসুন কর্মক্ষেত্রে ক্রিয়াকলাপগুলিকে আলোকিত করার জন্য প্রতিটি ধাপ, 1-7, বিস্তারিতভাবে আলোচনা করি।

ধাপ 1: একজন বিকাশকারী সবকিছুকে গতিশীল করে

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

যা কিছু অনুসরণ করে তা এই প্রাথমিক পদক্ষেপের ফলাফল। প্রকৃতপক্ষে, ধাপ 1 থেকে 6 ব্লকচেইনে একটি পারমাণবিক লেনদেনে ঘটে, যার অর্থ প্রায় সব একসাথে। রূপান্তরিত চুক্তির ভিতরে কোড প্রতিস্থাপন করতে এবং এটিকে ক্রমাগত মর্ফিং রাখতে এই পদক্ষেপগুলি বারবার পুনরাবৃত্তি করা যেতে পারে।

ধাপ 2: কারখানা বাস্তবায়ন চুক্তি স্থাপন করে

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

ধাপ 3: কারখানার দোকান বাস্তবায়ন চুক্তি ঠিকানা

ব্লকচেইনে মোতায়েন করার পরে, বাস্তবায়ন চুক্তিটি অগত্যা কিছু ব্লকচেইন ঠিকানায় বিদ্যমান থাকবে। কারখানাটি এই চুক্তির ঠিকানাটি তার নিজস্ব স্মৃতিতে সংরক্ষণ করে (পরে ব্যবহার করা হবে, ধাপ 5 এ)। 

ধাপ 4: কারখানা রূপান্তরিত চুক্তি স্থাপন করে

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

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

মেটামরফিক স্মার্ট কন্ট্রাক্ট প্লেটোব্লকচেন ডেটা ইন্টেলিজেন্স সনাক্ত করার জন্য একটি টুল। উল্লম্ব অনুসন্ধান. আ.

ধাপ 5: রূপান্তরিত বাইটকোড প্রশ্নগুলি বাস্তবায়ন চুক্তির ঠিকানার জন্য কারখানা

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

ধাপ 6: ইমপ্লিমেন্টেশন কন্ট্রাক্ট কোড মেটামরফিক কন্ট্রাক্টে কপি করা হয়

ধাপ 5 এ শেখা ব্লকচেন ঠিকানা ব্যবহার করে, রূপান্তরিত বাইটকোড বাস্তবায়ন চুক্তিতে কোডটি সনাক্ত করে এবং সেই কোডটি রূপান্তর চুক্তির স্থানীয় স্টোরেজে কপি করে। এইভাবে রূপান্তরিত চুক্তির আকার-বদল হয়: বাস্তবায়ন চুক্তি থেকে কোড কপি করে। 

ধাপ 7: ধুয়ে ফেলুন এবং পুনরাবৃত্তি করুন

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

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

ইমপ্লিমেন্টেশন কন্ট্রাক্টে যা কিছু নিযুক্ত করা হবে তা শেষ পর্যন্ত রূপান্তরিত চুক্তিতে শেষ হবে। এটাই কৌশলের সারমর্ম। 

***

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

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

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

রূপান্তরিত বৈশিষ্ট্যের জন্য স্মার্ট চুক্তি বিশ্লেষণ করুন ডিটেক্টর টুল ব্যবহার করে এবং দেখুন গিটহুব রেপো আরো বেশী

সম্পাদক: রবার্ট হ্যাকেট @rhhackett

***

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

***

এখানে যে মতামত প্রকাশ করা হয়েছে তা হল স্বতন্ত্র AH Capital Management, LLC (“a16z”) কর্মীদের উদ্ধৃত এবং a16z বা এর সহযোগীদের মতামত নয়। এখানে থাকা কিছু তথ্য তৃতীয় পক্ষের উত্স থেকে প্রাপ্ত হয়েছে, যার মধ্যে a16z দ্বারা পরিচালিত তহবিলের পোর্টফোলিও কোম্পানিগুলি থেকে। নির্ভরযোগ্য বলে বিশ্বাস করা উৎস থেকে নেওয়া হলেও, a16z এই ধরনের তথ্য স্বাধীনভাবে যাচাই করেনি এবং তথ্যের স্থায়ী নির্ভুলতা বা প্রদত্ত পরিস্থিতির জন্য এর উপযুক্ততা সম্পর্কে কোনো উপস্থাপনা করেনি। উপরন্তু, এই বিষয়বস্তু তৃতীয় পক্ষের বিজ্ঞাপন অন্তর্ভুক্ত করতে পারে; a16z এই ধরনের বিজ্ঞাপন পর্যালোচনা করেনি এবং এতে থাকা কোনো বিজ্ঞাপন সামগ্রীকে সমর্থন করে না।

এই বিষয়বস্তু শুধুমাত্র তথ্যগত উদ্দেশ্যে প্রদান করা হয়, এবং আইনি, ব্যবসা, বিনিয়োগ, বা ট্যাক্স পরামর্শ হিসাবে নির্ভর করা উচিত নয়। এই বিষয়গুলি সম্পর্কে আপনার নিজের উপদেষ্টাদের সাথে পরামর্শ করা উচিত। যেকোন সিকিউরিটিজ বা ডিজিটাল সম্পদের রেফারেন্স শুধুমাত্র দৃষ্টান্তমূলক উদ্দেশ্যে, এবং বিনিয়োগের পরামর্শ বা বিনিয়োগ উপদেষ্টা পরিষেবা প্রদানের প্রস্তাব গঠন করে না। তদ্ব্যতীত, এই বিষয়বস্তু কোন বিনিয়োগকারী বা সম্ভাব্য বিনিয়োগকারীদের দ্বারা নির্দেশিত বা ব্যবহারের উদ্দেশ্যে নয় এবং a16z দ্বারা পরিচালিত যেকোন তহবিলে বিনিয়োগ করার সিদ্ধান্ত নেওয়ার সময় কোনও পরিস্থিতিতে নির্ভর করা যাবে না৷ (একটি a16z তহবিলে বিনিয়োগের প্রস্তাব শুধুমাত্র প্রাইভেট প্লেসমেন্ট মেমোরেন্ডাম, সাবস্ক্রিপশন চুক্তি, এবং এই ধরনের যেকোন তহবিলের অন্যান্য প্রাসঙ্গিক ডকুমেন্টেশন দ্বারা তৈরি করা হবে এবং তাদের সম্পূর্ণরূপে পড়া উচিত।) উল্লেখ করা যেকোন বিনিয়োগ বা পোর্টফোলিও কোম্পানিগুলি, বা বর্ণিতগুলি a16z দ্বারা পরিচালিত যানবাহনে সমস্ত বিনিয়োগের প্রতিনিধি নয়, এবং বিনিয়োগগুলি লাভজনক হবে বা ভবিষ্যতে করা অন্যান্য বিনিয়োগের একই বৈশিষ্ট্য বা ফলাফল থাকবে এমন কোনও নিশ্চয়তা থাকতে পারে না। Andreessen Horowitz দ্বারা পরিচালিত তহবিল দ্বারা করা বিনিয়োগের একটি তালিকা (যেসব বিনিয়োগের জন্য ইস্যুকারী a16z-এর জন্য সর্বজনীনভাবে প্রকাশ করার অনুমতি দেয়নি এবং সেইসাথে সর্বজনীনভাবে ব্যবসা করা ডিজিটাল সম্পদগুলিতে অঘোষিত বিনিয়োগগুলি ব্যতীত) https://a16z.com/investments-এ উপলব্ধ /।

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

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

থেকে আরো আন্দ্রেসেন হরোয়েজ্জ