WHAT'S NEW?
Loading...

নেটওয়ার্ক নিরাপত্তা মোড সহ শার্দিয়াম এর অগ্রগামী স্থিতিস্থাপকতা

 


ওয়েব৩ এ উদ্ভাবন ও শিক্ষার প্রচার

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


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


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

শার্দিয়াম-এ নেটওয়ার্ক মোড বোঝা

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


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


শার্দিয়াম'এর সাত (আশ্চর্য!) নেটওয়ার্ক মোড

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


  1. গঠন: এই প্রাথমিক পর্যায়টি নতুন নোডগুলিকে তাদের স্টেট ডেটাতে যোগদান এবং সিঙ্ক্রোনাইজ করার অনুমতি দেয় যতক্ষণ না একটি নির্দিষ্ট ন্যূনতম সক্রিয় নোডগুলি অর্জন করা হয়, নেটওয়ার্কটিকে তার অপারেশনাল পর্যায়ের জন্য প্রস্তুত করে।


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


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


  1. পুনরুদ্ধার: সক্রিয় নোড গণনা একটি নির্দিষ্ট থ্রেশহোল্ডের নিচে নেমে গেলে শুরু হয়। এই মোডটি অ্যাপ্লিকেশন লেনদেন প্রক্রিয়াকরণ এবং অ্যাপ্লিকেশন ডেটা সিঙ্ক করা বন্ধ করে। প্রোটোকল ডেটা সিঙ্ক করা এবং নতুন চক্র রেকর্ড তৈরি করার মাধ্যমে নেটওয়ার্কের ন্যূনতম প্রয়োজনীয় নোডগুলি পুনরুদ্ধার করার জন্য দ্রুত স্ট্যান্ডবাই নোডগুলি যুক্ত করা এর লক্ষ্য।


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


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


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


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

নিরাপত্তা মোডের বৈশিষ্ট্য এবং সুবিধা

১. নিরাপত্তা প্রথম

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


২. নেটওয়ার্ক স্থিতিশীলতা এবং সততা

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


৩. ডেটা দুর্নীতি বা ক্ষতি প্রতিরোধ

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


৪. নেটওয়ার্ক স্ট্রেস স্বয়ংক্রিয় প্রতিক্রিয়া

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


৫. নেটওয়ার্ক পুনরুদ্ধারের সুবিধা দেয়

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


৬. ঐক্যমতের সততা নিশ্চিত করে

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


৭. সম্ভাব্য আক্রমণ থেকে রক্ষা করে

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


৮. প্রয়োজনীয় অপারেশন বজায় রাখে

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


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

শার্ডিয়ামে নেটওয়ার্ক মোডের সুবিধা: একটি অন্তর্দৃষ্টি

সুতরাং এখন যেহেতু আমাদের নিরাপত্তা মোডের সুবিধাগুলি সম্পর্কে একটি বিস্তৃত ধারণা রয়েছে, অন্যান্য প্রধান মোডগুলি শার্ডিয়ামে কী কী সুবিধা নিয়ে আসে?


  • ⚡দ্রুত গঠন: গঠনের পর্যায়ে, নেটওয়ার্ক একটি চিত্তাকর্ষক হারে বৃদ্ধি পায়, দ্রুত কার্যক্ষম ক্ষমতায় পৌঁছায়।


  • 🔄 দক্ষ ঘূর্ণন: প্রক্রিয়াকরণ পর্বের সময়, যাচাইকারীদের দক্ষতার সাথে ঘোরানো হয়, নেটওয়ার্ক চাহিদা এবং যাচাইকারীর প্রাপ্যতা নির্বিঘ্নে ভারসাম্য বজায় রাখে।


  • 🚦 গতিশীল অভিযোজনযোগ্যতা: এছাড়াও প্রক্রিয়াকরণ পর্যায়ে, সর্বোত্তম কর্মক্ষমতা নিশ্চিত করে, চাহিদার ভিত্তিতে নেটওয়ার্ক বৃদ্ধি বা সঙ্কুচিত হতে পারে।


  • 🔒 শক্ত পুনরুদ্ধার: এমনকি প্রয়োজনীয় সক্রিয় বৈধতার সামগ্রিক পরিমাণ যথেষ্ট পরিমাণে কমে গেলেও, শার্দিয়াম-এর পুনরুদ্ধার মোড স্থিতিশীল, পুনর্গঠন এবং পুনর্নির্মাণ করতে শুরু করে।


  • 🤝 নিরবচ্ছিন্ন সহযোগিতা: পুনঃসূচনা পর্বে, আর্কাইভারদের ভূমিকার জন্য ধন্যবাদ, সমস্ত সক্রিয় যাচাইকারী হারিয়ে গেলেও নেটওয়ার্ক পুনরুদ্ধার করতে পারে


  • 🚀 দ্রুত পুনঃসূচনা: এছাড়াও পুনঃসূচনা পর্বের সময়, সম্পূর্ণ বৈধতা হারানোর অসম্ভাব্য পরিস্থিতিতে, রিস্টার্ট মোড নেটওয়ার্কের একটি দ্রুত পুনরুত্থান নিশ্চিত করে – এর মানে শার্দিয়াম সর্বদা ফিরে আসতে সক্ষম হবে, এমনকি অত্যন্ত অসম্ভাব্য পরিস্থিতিতেও।


  • 🔄 সুইফট সিঙ্কিং: আমরা যখন মোডগুলির মধ্যে স্থানান্তর করি, নোডগুলিকে গতিতে আনতে সিঙ্কিং প্রক্রিয়াগুলি ত্বরান্বিত হয়৷


  • 💡 ক্রমাগত শিক্ষা: বাস্তবায়ন আমাদের মানিয়ে নিতে এবং বিকশিত হতে শেখায়, যা ভবিষ্যতের উদ্ভাবনের দিকে নিয়ে যায়।

নক্ষত্র শারদীয়দের চিৎকার করুন

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

উপসংহার

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


@shardeum #ShardeumIsBorderless


শার্দিয়াম ইথেরিয়াম-সামঞ্জস্যপূর্ণ আরপিসি পদ্ধতির ইন্টিগ্রেশন সম্পূর্ণ করে

 


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


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

কেন আমি শার্দিয়াম উপর নির্মাণ করা উচিত?

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


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


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

ইথেরিয়াম জেসন-আরপিসি পদ্ধতি কি কি?

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


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

জনপ্রিয় ইথেরিয়াম আরপিসি পদ্ধতি

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


  • eth_feeHistory: এই পদ্ধতিটি ঐতিহাসিক নেটওয়ার্ক ফিগুলির একটি পরিসর পুনরুদ্ধার করে যা সময়ের সাথে সাথে গ্যাসের মূল্য বিশ্লেষণের জন্য দরকারী।

  • eth_getBlockReceipts: এই পদ্ধতিটি একটি প্রদত্ত ব্লকে সমস্ত লেনদেনের জন্য রসিদের একটি তালিকা প্রদান করে এবং এটি লেনদেন নিশ্চিতকরণ এবং স্থিতি ট্র্যাকিংয়ের জন্য সহায়ক।

  • eth_getBlockTransactionCountByHash: এই পদ্ধতিটি একটি ব্লকে লেনদেনের সংখ্যা প্রদান করে, এটির হ্যাশ দ্বারা চিহ্নিত, ব্লক বিশ্লেষণের জন্য দরকারী।

  • eth_getBlockTransactionCountByNumber: এই পদ্ধতিটি একটি ব্লকে লেনদেনের সংখ্যা প্রদান করে, কিন্তু ব্লকটিকে তার হ্যাশের পরিবর্তে তার সংখ্যা দ্বারা চিহ্নিত করে।

  • eth_getTransactionByBlockHashAndIndex: এটি ব্লক হ্যাশ এবং ব্লকের মধ্যে সূচক অবস্থানের উপর ভিত্তি করে একটি লেনদেন নিয়ে আসে।

  • eth_getTransactionByBlockNumberAndIndex: এই পদ্ধতিটি সেই ব্লকের মধ্যে তার ব্লক নম্বর এবং সূচক দ্বারা একটি লেনদেন পুনরুদ্ধার করে।

  • eth_newPendingTransactionFilter: এই পদ্ধতিটি নতুন মুলতুবি লেনদেন সম্পর্কে অবহিত করার জন্য একটি ফিল্টার তৈরি করে। সম্প্রচারিত কিন্তু এখনও নিশ্চিত করা হয়নি এমন লেনদেন ট্র্যাক করার জন্য এটি কার্যকর।

  • eth_chainId: এটি নেটওয়ার্কের বর্তমান চেইন আইডি প্রদান করে, সঠিক ইথেরিয়াম নেটওয়ার্কে লেনদেনের অখণ্ডতা নিশ্চিত করার জন্য একটি গুরুত্বপূর্ণ তথ্য।

ইথেরিয়াম আরপিসি পদ্ধতি শার্দিয়াম কাস্টম প্রয়োজনীয়তা পরিপূরক

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


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


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

কেন শার্দিয়াম ইথেরিয়াম জেসন-আরপিসি পদ্ধতি প্রয়োজন?

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


১. সামঞ্জস্য এবং পরিচিতি

ইথেরিয়াম এর আরপিসি পদ্ধতি বাস্তবায়ন করে, শার্দিয়াম ইথেরিয়াম এর ইকোসিস্টেমে ইতিমধ্যে দক্ষ বিকাশকারীদের জন্য একটি পরিচিত পরিবেশ সরবরাহ করে। এটি শেখার বক্ররেখা হ্রাস করে এবং ইথেরিয়াম ভিত্তিক সম্প্রদায়ের জন্য গ্রহণকে ত্বরান্বিত করে যা সমগ্র স্মার্ট চুক্তি ইকোসিস্টেমের ৮৫% এর বেশি প্রতিনিধিত্ব করে।


২. ইন্টারঅপারেবিলিটি

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


৩. ব্যাপক কার্যকারিতা

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


৪. শার্দিয়াম এর আর্কিটেকচারের জন্য কাস্টমাইজেশন

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

শার্দিয়াম মধ্যে ইথেরিয়াম আরপিসি পদ্ধতি বাস্তবায়নের সুবিধা

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


১. শার্দিয়াম নেটওয়ার্কের জন্য সুবিধা

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


📈 নেটওয়ার্কের বৃদ্ধি এবং গ্রহণ: পরিচিতি এবং ব্যবহারের সহজতা ইথেরিয়াম ইকোসিস্টেম থেকে আরও বিকাশকারীদের আকৃষ্ট করতে পারে, যা শার্দিয়াম নেটওয়ার্কের বৃদ্ধি এবং বৈচিত্র্যে অবদান রাখে।


🏎️ উন্নত পারফরম্যান্স: আরপিসি পদ্ধতির একটি শক্তিশালী সেট সহ, শার্দিয়াম আরও দক্ষতার সাথে বিস্তৃত ক্যোয়ারী এবং কমান্ড পরিচালনা করতে পারে, যা উন্নত নেটওয়ার্ক কর্মক্ষমতার দিকে নিয়ে যায়।


২. বিকাশকারীদের জন্য সুবিধা

🛠️ ট্রানজিশনের সহজতা: ইথেরিয়াম-এর সাথে অভিজ্ঞ ডেভেলপাররা সহজেই শার্দিয়াম-এ ট্রানজিশন করতে পারে, তাদের বিদ্যমান জ্ঞান এবং টুলস ব্যবহার করে।


🔧 সমৃদ্ধ টুলিং এবং ইন্টিগ্রেশন: আরপিসি পদ্ধতির একটি বিস্তৃত সেটে অ্যাক্সেস অত্যাধুনিক অ্যাপ্লিকেশন তৈরি করতে এবং বিদ্যমান ইথেরিয়াম-ভিত্তিক সরঞ্জামগুলির সাথে বিরামহীন একীকরণের অনুমতি দেয়।


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


৩. সম্প্রদায়ের জন্য সুবিধা

🌱 বৃহত্তর ইকোসিস্টেম ডেভেলপমেন্ট: যত বেশি ডেভেলপার শার্দিয়াম নেটওয়ার্কে যোগ দেয়, ইকোসিস্টেম আরও সমৃদ্ধ হয়, সম্প্রদায়ের কাছে আরও বৈচিত্র্যময় এবং পরিশীলিত অ্যাপ্লিকেশন অফার করে।


🛡️ উন্নত নেটওয়ার্ক নিরাপত্তা এবং অখণ্ডতা: eth_chainId-এর মতো পদ্ধতির মাধ্যমে, শার্দিয়াম নিরাপদ এবং নির্ভরযোগ্য লেনদেন নিশ্চিত করে, সম্প্রদায়ের মধ্যে আস্থা বৃদ্ধি করে।


📊 রিয়েল-টাইম অন্তর্দৃষ্টি এবং বিশ্লেষণ: পদ্ধতিগুলি যেমন eth_feeHistory এবং eth_getBlockReceipts সম্প্রদায়কে নেটওয়ার্ক কার্যকলাপের মূল্যবান অন্তর্দৃষ্টি প্রদান করে, স্বচ্ছতা বৃদ্ধি করে এবং সিদ্ধান্ত গ্রহণকে অবহিত করে৷


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

এটি মোড়ানো: টেকঅ্যাওয়ে

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


শারদীয়রা, আসুন একসাথে এই মাইলফলক উদযাপন করি! 🎉 আপনার আবেগ এবং সমর্থন শার্দিয়ামের ক্রমবর্ধমান সাফল্যের মূল ভিত্তি। আমাদের সম্মিলিত যাত্রায় আরও অনেক মাইলফলক এবং অব্যাহত অগ্রগতি এখানে!


@shardeum #ShardeumIsBorderless


শার্দিয়াম-এ একটি এনএফটি মিন্টার ড্যাপ তৈরি করুন

 


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

১. আমাদের প্রকল্প সেট আপ করা

একটি খালি প্রজেক্ট ফাইল তৈরি করা এবং npm শুরু করা যাক।


mkdir shardeum-nft-minter

cd shardeum-nft-minter

npm init

২. স্মার্ট চুক্তি এবং হার্ডহাট সেটআপ

আমরা স্মার্ট কন্ট্রাক্ট স্থাপন, পরীক্ষা এবং ডিবাগ করার জন্য Hardhat – একটি ডেভেলপমেন্ট ফ্রেমওয়ার্ক ব্যবহার করব।


i) এখন, একটি ডেভ-নির্ভরতা হিসাবে হার্ডহাট ইনস্টল করা যাক; 'Create an empty hardhat.config.js' নির্বাচন করুন এবং ওপেনজেপেলিন কন্ট্রাক্ট লাইব্রেরি ইনস্টল করুন। এছাড়াও, আসুন অন্যান্য প্রয়োজনীয় হার্ডহাট লাইব্রেরিগুলি ইনস্টল করি।


npm install --save-dev hardhat

npx hardhat

npm install @openzeppelin/contracts

npm install --save ethers@5.7.2 hardhat @nomiclabs/hardhat-waffle ethereum-waffle chai @nomiclabs/hardhat-ethers


ii) একটি 'contracts' এবং 'scripts' ফোল্ডার তৈরি করুন। চুক্তি ফোল্ডারে, NftMinter.sol ফাইলে নিম্নলিখিত কোড যোগ করুন:


// SPDX-License-Identifier: MIT


pragma solidity ^0.8.3;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";

import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";

import "@openzeppelin/contracts/utils/Counters.sol";


contract NFTMinter is ERC721URIStorage {

    using Counters for Counters.Counter;

    Counters.Counter private _tokenIds;

    constructor() ERC721("Shardeum Dev NFTMinter, "SNFT") {}

    function mintNFT(address recipient, string memory tokenURI) public returns (uint256) {

        _tokenIds.increment();

        uint256 newItemId = _tokenIds.current();

        _mint(recipient, newItemId);

        _setTokenURI(newItemId, tokenURI);

        return newItemId;

    }

}


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


iii) আপনার স্ক্রিপ্ট ফোল্ডারে একটি deploy.js ফাইল তৈরি করুন এবং নিম্নলিখিত স্থাপনার স্ক্রিপ্ট যোগ করুন:


const { ethers } = require("hardhat");


async function main() {

    const NFTMinter = await ethers.getContractFactory("NFTMinter");

    const nftMinter = await NFTMinter.deploy();

    await nftMinter.deployed();

    console.log("NFTMinter deployed to:", nftMinter.address);

  }


    main()

    .then(() => process.exit(0))

    .catch((error) => {

      console.error(error);

      process.exit(1);

    });


iv) এখন, শার্ডিয়াম টেস্টনেট এ স্থাপনের জন্য প্রয়োজনীয় কোড যোগ করা যাক।


require("@nomiclabs/hardhat-waffle");

module.exports = {

  networks: {

    hardhat: {

    },

    sphinx: {

      url: "https://dapps.shardeum.org/",

      accounts:[``] // Add private key here

    },

  solidity: "0.8.3",

};


অ্যাকাউন্ট ভেরিয়েবলে আপনার ব্যক্তিগত কী যোগ করুন এবং নিশ্চিত করুন যে আপনার অ্যাকাউন্টে পর্যাপ্ত শার্ডিয়াম টেস্টনেট টোকেন রয়েছে।


v) এখন, এই উদাহরণের জন্য শার্দিয়াম স্ফিংস ড্যাপ-এ আমাদের স্মার্ট চুক্তিগুলি স্থাপন করা যাক।


npx hardhat run scripts/deploy.js --network sphinx


ডিপ্লোয় স্ক্রিপ্টটি শার্ডিয়াম টেস্টনেট-এ স্মার্ট কন্ট্রাক্ট স্থাপন করবে এবং ডিপ্লোয়ড স্মার্ট কন্ট্রাক্ট অ্যাড্রেস আউটপুট করবে। আপনার এই ঠিকানাটি পরে প্রয়োজন হবে, তাই এটি সংরক্ষণ করুন।

৩. একটি ফ্রন্ট-এন্ড অ্যাপ্লিকেশন তৈরি করুন

এখন, আমাদের স্থাপন করা স্মার্ট চুক্তির সাথে ইন্টারঅ্যাক্ট করার জন্য একটি মৌলিক ফ্রন্ট-এন্ড অ্যাপ্লিকেশন তৈরি করা যাক।


আসুন একই ফোল্ডারে একটি রিয়েক্ট-অ্যাপ্লিকেশন শুরু করা শুরু করি। রিয়েক্ট অ্যাপ্লিকেশন সেট আপ করার পরে, সমস্ত প্রয়োজনীয় ফ্রন্ট-এন্ড প্যাকেজ ইনস্টল করুন।


npx create-react-app .

npm install @emotion/react @emotion/styled @mui/material axios


আমরা src ফোল্ডারে আমাদের ফ্রন্ট-এন্ড কোড পরিবর্তন করব। আপনার artifacts ফোল্ডার থেকে NFTMinter.json ফাইলটি সনাক্ত করুন এবং এটি src ফোল্ডারে আনুন।


প্রয়োজনীয় কার্যকারিতা পেতে আপনাকে চারটি নতুন জাভাস্ক্রিপ্ট ফাইল তৈরি করতে হবে:


  • connectWallet.js: এই ফাইলটি আমাদের সামনের প্রান্তকে স্মার্ট চুক্তির সাথে সংযুক্ত করতে দেবে এবং আমাদের মেটামাস্কের সাথে সংযুক্ত করবে। নির্ধারিত ভেরিয়েবলে আপনার চুক্তির ঠিকানা যোগ করুন।


import { ethers } from "ethers";

import NFTMinter from "./NftMinter.json";

export async function connectWallet() {

  await window.ethereum.request({ method: "eth_requestAccounts" });

  const provider = new ethers.providers.Web3Provider(window.ethereum);

  const signer = provider.getSigner();

  // Insert deployed contract address here

  const contract = new ethers.Contract(``, NFTMinter.abi, signer);

  

  return { signer, contract };

  }

  

  export async function connectMetaMask (){

    const { signer } = await connectWallet();

    const address = await signer.getAddress();

    const balance = await signer.getBalance();

    const formattedBalance = ethers.utils.formatEther(balance);

    return {address, formattedBalance}

  };


  • ipfsUploader.js: পিনাটা ব্যবহার করে আমাদের ফাইলগুলি ipfs এ আপলোড করার জন্য প্রয়োজনীয় সমস্ত কোড এই ফাইলটিতে রয়েছে। পিনাটা এ একটি অ্যাকাউন্ট তৈরি করুন এবং একটি নতুন এপিআই লিঙ্ক তৈরি করুন।


import axios from 'axios';

const pinataApiKey = ``; // Insert pinata Api Key

const pinataApiSecret = `` ; // Insert pinata Api secret

const pinataApiUrl = 'https://api.pinata.cloud/pinning/pinFileToIPFS';

const pinataHeaders = {

  headers: {

    'Content-Type': 'multipart/form-data',

    pinata_api_key: pinataApiKey,

    pinata_secret_api_key: pinataApiSecret,

  },

};

export async function uploadToIPFS(file) {

  const formData = new FormData();

  formData.append('file', file);

  try {

    const response = await axios.post(pinataApiUrl, formData, pinataHeaders);

    const ipfsHash = response.data.IpfsHash;

    return `https://gateway.pinata.cloud/ipfs/${ipfsHash}`;

  } catch (error) {

    console.error('Error uploading file to Pinata:', error);

    throw error;

  }

}


  • MintNFT.js: এই ফাইলটিতে আমাদের মিন্টিং অ্যাপ্লিকেশনের প্রধান উপাদান এবং আমাদের ফ্রন্ট-এন্ড কোড রয়েছে।


import React, { useState } from "react";

import { connectWallet, connectMetaMask } from "./connectWallet";

import { uploadToIPFS } from "./ipfsUploader";

import {

  TextField,

  Button,

  Typography,

  Container,

  Box,

  Link,

  Grid,

  Snackbar,

  Alert,

  LinearProgress,

} from "@mui/material";

function MintNFT() {

  const [name, setName] = useState("");

  const [description, setDescription] = useState("");

  const [image, setImage] = useState(null);

  const [status, setStatus] = useState("");

  const [ipfsLink, setIpfsLink] = useState("");

  const [imageStatus, setImageStatus] = useState("");

  const [alertOpen, setAlertOpen] = useState(false);

  const [loading, setLoading] = useState(false);

  const [walletAddress, setWalletAddress] = useState("");

  const [walletBalance, setWalletBalance] = useState("");

  const [imagePreviewUrl, setImagePreviewUrl] = useState(null);

  const [transactionHistory, setTransactionHistory] = useState([]);

  const handleConnectMetaMask = async () => {

    const { address, formattedBalance } = await connectMetaMask();

    setWalletAddress(address);

    setWalletBalance(formattedBalance);

  };

  const handleImageChange = (e) => {

    setImage(e.target.files[0]);

    setImageStatus("Image selected for upload");

    setImagePreviewUrl(URL.createObjectURL(e.target.files[0]));

  };

  const mint = async () => {

    setStatus("Uploading to IPFS...");

    const imageURI = await uploadToIPFS(image);

    setIpfsLink(imageURI);

    setStatus("Minting NFT...");

    setLoading(true);

    const { signer, contract } = await connectWallet();

    const tokenURI = `data:application/json;base64,${btoa(

      JSON.stringify({

        name,

        description,

        image: imageURI,

      })

    )}`;

    const transaction = await contract.mintNFT(signer.getAddress(), tokenURI);

    await transaction.wait();

    setTransactionHistory((prevHistory) => [

      ...prevHistory,

      transaction.hash,

    ]);

    setStatus("NFT minted!");

    setAlertOpen(true);

    setLoading(false);

  };

  return (

    

    <Container maxWidth="lg">

      <Box sx={{ mt: 4, mb: 2 }}>

        <Typography variant="h4" align="center" gutterBottom>

          Shardeum NFT Minter

        </Typography>

      </Box>

      <Grid container spacing={2}>

        <Grid item xs={12} md={6}>

        <Box mt={2}>

              <Button

                fullWidth

                variant="contained"

                color="primary"

                onClick={handleConnectMetaMask}

                size="small"

                disabled={walletAddress} 

              >

                {walletAddress ? "Wallet Connected" : "Connect Wallet to Shardeum Sphinx Dapp 1.X"}

              </Button>

            </Box>

          {walletAddress && (

            <Box mt={2}>

              <Typography align="center">

                Wallet Address: {walletAddress}

              </Typography>

              <Typography align="center">

                Wallet Balance: {walletBalance} SHM

              </Typography>

            </Box>

          )}

          <TextField

            fullWidth

            label="NFT Name"

            variant="outlined"

            margin="normal"

            onChange={(e) => setName(e.target.value)}

          />

          <TextField

            fullWidth

            label="NFT Description"

            variant="outlined"

            margin="normal"

            onChange={(e) => setDescription(e.target.value)}

          />

          <input

            type="file"

            style={{ display: "none" }}

            id="image-upload"

            onChange={handleImageChange}

          />

          <p></p>

          <label      htmlFor="image-upload">

        <Button variant="contained" color="primary" component="span">

          Upload Image

        </Button>

      </label>

      {imageStatus && (

        <Typography variant="caption" display="block" gutterBottom>

          {imageStatus}

        </Typography>

      )}

      <Box mt={2}>

        <Button

          fullWidth

          variant="contained"

          color="secondary"

          onClick={mint}

        >

          Mint NFT

        </Button>

      </Box>

      {loading && <LinearProgress />}

      

      <Snackbar

        open={alertOpen}

        autoHideDuration={6000}

        onClose={() => setAlertOpen(false)}

        anchorOrigin={{ vertical: "top", horizontal: "right" }}

      >

        <Alert

          onClose={() => setAlertOpen(false)}

          severity="success"

          variant="filled"

          sx={{ width: "100%" }}

        >

          NFT minted successfully!

        </Alert>

      </Snackbar>

    </Grid>

    <Grid item xs={12} md={6}>

  <Box

    mt={2}

    sx={{

      border: "1px dashed #999",

      borderRadius: "12px",

      padding: "16px",

      display: "flex",

      justifyContent: "center",

      alignItems: "center",

      minHeight: "300px",

      background: imagePreviewUrl

        ? "none"

        : "linear-gradient(45deg, rgba(255,255,255,1) 0%, rgba(255,255,255,0) 100%)",

    }}

  >

    {imagePreviewUrl ? (

      <img

        src={imagePreviewUrl}

        alt="Uploaded preview"

        style={{

          width: "100%",

          maxHeight: "300px",

          objectFit: "contain",

          borderRadius: "12px",

        }}

      />

    ) : (

      <Typography variant="caption" color="text.secondary">

        Preview image will be displayed here

      </Typography>

    )}

  </Box>

</Grid>

    <Box mt={2}>

        <Typography align="center" color="textSecondary">

          {status}

        </Typography>

        {ipfsLink && (

      <Typography align="left">

    IPFS Link:{" "}

    <Link href={ipfsLink} target="_blank" rel="noopener noreferrer">

      {ipfsLink}

    </Link>

      </Typography>

)}

      </Box>

  </Grid>

  <Box mt={4}>

        <Typography variant="h7" align="center">

          Transaction History:

        </Typography>

        {transactionHistory.length > 0 ? (

          transactionHistory.map((hash, index) => (

            <Box key={index} mt={1} textAlign="left">

              <Link

                href={`https://explorer-dapps.shardeum.org/transaction/${hash}`}

                target="_blank"

                rel="noopener noreferrer"

              >

                {`Transaction ${index + 1}: ${hash}`}

              </Link>

            </Box>

          ))

        ) : (

          <Typography align="center" mt={1}>

            No transactions yet.

          </Typography>

        )}import React, { useState } from "react";

import { connectWallet, connectMetaMask } from "./connectWallet";

import { uploadToIPFS } from "./ipfsUploader";

import {TextField,Button,Typography,Container,Box,Link,Grid,Snackbar,Alert,LinearProgress,} from "@mui/material";

function MintNFT() {

  const [name, setName] = useState("");

  const [description, setDescription] = useState("");

  const [image, setImage] = useState(null);

  const [status, setStatus] = useState("");

  const [ipfsLink, setIpfsLink] = useState("");

  const [imageStatus, setImageStatus] = useState("");

  const [alertOpen, setAlertOpen] = useState(false);

  const [loading, setLoading] = useState(false);

  const [walletAddress, setWalletAddress] = useState("");

  const [walletBalance, setWalletBalance] = useState("");

  const [imagePreviewUrl, setImagePreviewUrl] = useState(null);

  const [transactionHistory, setTransactionHistory] = useState([]);

  const handleConnectMetaMask = async () => {

    const { address, formattedBalance } = await connectMetaMask();

    setWalletAddress(address);

    setWalletBalance(formattedBalance);

  };

  const handleImageChange = (e) => {

    setImage(e.target.files[0]);

    setImageStatus("Image selected for upload");

    setImagePreviewUrl(URL.createObjectURL(e.target.files[0]));

  };

  const mint = async () => {

    setStatus("Uploading to IPFS...");

    const imageURI = await uploadToIPFS(image);

    setIpfsLink(imageURI);

    setStatus("Minting NFT...");

    setLoading(true);

    const { signer, contract } = await connectWallet();

    const tokenURI = `data:application/json;base64,${btoa(

      JSON.stringify({

        name,

        description,

        image: imageURI,

      })

    )}`;

    const transaction = await contract.mintNFT(signer.getAddress(), tokenURI);

    await transaction.wait();

    setTransactionHistory((prevHistory) => [

      ...prevHistory,

      transaction.hash,

    ]);

    setStatus("NFT minted!");

    setAlertOpen(true);

    setLoading(false);

  };

  return (

    

    <Container maxWidth="lg">

      <Box sx={{ mt: 4, mb: 2 }}>

        <Typography variant="h4" align="center" gutterBottom>

          Shardeum NFT Minter

        </Typography>

      </Box>

      <Grid container spacing={2}>

        <Grid item xs={12} md={6}>

        <Box mt={2}>

              <Button

                fullWidth

                variant="contained"

                color="primary"

                onClick={handleConnectMetaMask}

                size="small"

                disabled={walletAddress} 

              >

                {walletAddress ? "Wallet Connected" : "Connect Wallet to Shardeum Sphinx Dapp 1.X"}

              </Button>

            </Box>

          {walletAddress && (

            <Box mt={2}>

              <Typography align="center">

                Wallet Address: {walletAddress}

              </Typography>

              <Typography align="center">

                Wallet Balance: {walletBalance} SHM

              </Typography>

            </Box>

          )}

          <TextField

            fullWidth

            label="NFT Name"

            variant="outlined"

            margin="normal"

            onChange={(e) => setName(e.target.value)}

          />

          <TextField

            fullWidth

            label="NFT Description"

            variant="outlined"

            margin="normal"

            onChange={(e) => setDescription(e.target.value)}

          />

          <input

            type="file"

            style={{ display: "none" }}

            id="image-upload"

            onChange={handleImageChange}

          />

          <p></p>

          <label      htmlFor="image-upload">

        <Button variant="contained" color="primary" component="span">

          Upload Image

        </Button>

      </label>

      {imageStatus && (

        <Typography variant="caption" display="block" gutterBottom>

          {imageStatus}

        </Typography>

      )}

      <Box mt={2}>

        <Button

          fullWidth

          variant="contained"

          color="secondary"

          onClick={mint}

        >

          Mint NFT

        </Button>

      </Box>

      {loading && <LinearProgress />}

      

      <Snackbar

        open={alertOpen}

        autoHideDuration={6000}

        onClose={() => setAlertOpen(false)}

        anchorOrigin={{ vertical: "top", horizontal: "right" }}

      >

        <Alert

          onClose={() => setAlertOpen(false)}

          severity="success"

          variant="filled"

          sx={{ width: "100%" }}

        >

          NFT minted successfully!

        </Alert>

      </Snackbar>

    </Grid>

    <Grid item xs={12} md={6}>

  <Box

    mt={2}

    sx={{

      border: "1px dashed #999",

      borderRadius: "12px",

      padding: "16px",

      display: "flex",

      justifyContent: "center",

      alignItems: "center",

      minHeight: "300px",

      background: imagePreviewUrl

        ? "none"

        : "linear-gradient(45deg, rgba(255,255,255,1) 0%, rgba(255,255,255,0) 100%)",

    }}

  >

    {imagePreviewUrl ? (

      <img

        src={imagePreviewUrl}

        alt="Uploaded preview"

        style={{

          width: "100%",

          maxHeight: "300px",

          objectFit: "contain",

          borderRadius: "12px",

        }}

      />

    ) : (

      <Typography variant="caption" color="text.secondary">

        Preview image will be displayed here

      </Typography>

    )}

  </Box>

</Grid>

    <Box mt={2}>

        <Typography align="center" color="textSecondary">

          {status}

        </Typography>

        {ipfsLink && (

      <Typography align="left">

    IPFS Link:{" "}

    <Link href={ipfsLink} target="_blank" rel="noopener noreferrer">

      {ipfsLink}

    </Link>

      </Typography>

)}

      </Box>

  </Grid>

  <Box mt={4}>

        <Typography variant="h7" align="center">

          Transaction History:

        </Typography>

        {transactionHistory.length > 0 ? (

          transactionHistory.map((hash, index) => (

            <Box key={index} mt={1} textAlign="left">

              <Link

                href={`https://explorer-dapps.shardeum.org/transaction/${hash}`}

                target="_blank"

                rel="noopener noreferrer"

              >

                {`Transaction ${index + 1}: ${hash}`}

              </Link>

            </Box>

          ))

        ) : (

          <Typography align="center" mt={1}>

            No transactions yet.

          </Typography>

        )}

      </Box>

</Container>

);

}

export default MintNFT;


  • Theme.js: এই ফাইলটিতে আমাদের অ্যাপ্লিকেশন স্টাইল করার জন্য প্রয়োজনীয় সমস্ত থিম রয়েছে।


import { createTheme } from "@mui/material/styles";

const theme = createTheme({

  palette: {

    mode: "dark",

    

    primary: {

      main: "#ffc926",

    },

    secondary: {

      main: "#088ef3",

    },

  },

  typography: {

    fontFamily: "Roboto, Arial, sans-serif",

    h4: {

      fontWeight: 700,

      marginBottom: "16px",

    },

    h5: {

      fontWeight: 600,

      marginBottom: "12px",

    },

    h6: {

      fontWeight: 500,

      marginBottom: "8px",

    },

    subtitle1: {

      fontWeight: 400,

      marginBottom: "8px",

    },

    caption: {

      fontStyle: "italic",

    },

  },

});

export default theme;


উপরের ফাইলগুলির সাথে, এখন আমরা আমাদের বেশিরভাগ ফ্রন্ট-এন্ড কভার করেছি। App.js, App.css, index.js এবং index.css-এ প্রয়োজনীয় পরিবর্তন করে সমস্ত স্টাইলিং একত্রিত করুন এবং প্রয়োজনীয় ফাইল আমদানি করুন। আপনি এখানে গিটহাব জিস্টে এর জন্য চূড়ান্ত ফাইলগুলি খুঁজে পেতে পারেন।


আপনি এখানে সম্পূর্ণরূপে নির্মিত অ্যাপ্লিকেশন খুঁজে পেতে পারেন। যেখানেই আটকে থাকুক না কেন এটিকে আপনার নিজের কোডের সাথে মেলাতে পারেন নির্দ্বিধায়।

৪. স্থানীয়ভাবে অ্যাপ্লিকেশন চালান

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


npm start


আপনার নতুন তৈরি শার্দিয়াম এনএফটি মিন্টার ব্যবহার শুরু করতে আপনার ওয়েব ব্রাউজারে http://localhost:3000 খুলুন!


এখানে অ্যাপ্লিকেশনটির একটি ডেমো চিত্র রয়েছে


লেখক সম্পর্কে: সন্দীপন কুন্ডু সার্ডিয়াম এর বিকাশকারী সম্পর্ক প্রকৌশলী। তিনি ২০১৭ সাল থেকে ওয়েব৩ ইকোসিস্টেমের প্রাথমিক অবদানকারী এবং এর আগে পলিগন ডেভরেল টিম বৃদ্ধিতেও অবদান রেখেছেন। তিনি ওয়েব৩ এবং বিকেন্দ্রীকরণ সম্পর্কে কথা বাড়াতে এবং ছড়িয়ে দেওয়ার জন্য হ্যাকাথন, ওয়ার্কশপ, প্রযুক্তিগত বিষয়বস্তু ইত্যাদির সাহায্যে সক্রিয়ভাবে শক্তিশালী বিকাশকারী ইভাঞ্জেলিজম প্রোগ্রাম তৈরি করছেন।


লেখকের সামাজিক লিঙ্ক:


ই-মেইল: sandipan@shardeum.org

টুইটার: https://twitter.com/SandipanKundu42


@shardeum #ShardeumIsBorderless