মাল্টিচেইন স্ট্রীম প্রবর্তন করা হচ্ছে

উত্স নোড: 1213525

ভাগ করা অপরিবর্তনীয় কী-মান এবং সময় সিরিজের ডাটাবেসের জন্য

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

  1. NoSQL এর শৈলীতে একটি মূল-মান ডাটাবেস বা নথির দোকান।
  2. একটি টাইম সিরিজ ডাটাবেস, যা এন্ট্রির অর্ডারের উপর ফোকাস করে।
  3. একটি পরিচয়-চালিত ডাটাবেস যেখানে এন্ট্রিগুলি তাদের লেখক অনুসারে শ্রেণীবদ্ধ করা হয়।

এগুলিকে ভাগ করা ডাটাবেসের 'কী', 'কখন' এবং 'কে' হিসাবে বিবেচনা করা যেতে পারে।

স্ট্রীম বেসিক

একটি মাল্টিচেইন ব্লকচেইনে যেকোন সংখ্যক স্ট্রীম তৈরি করা যেতে পারে এবং প্রতিটি স্ট্রিম আইটেমগুলির একটি স্বাধীন সংযোজন-শুধু সংগ্রহ হিসাবে কাজ করে। একটি প্রবাহের প্রতিটি আইটেমের নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

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

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

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

প্রতিটি ব্লকচেইনের একটি ঐচ্ছিক 'রুট' স্ট্রিম রয়েছে, যা এর মধ্যে সংজ্ঞায়িত করা হয়েছে পরামিতি এবং চেইন তৈরি হওয়ার মুহূর্ত থেকে বিদ্যমান। এটি একটি ব্লকচেইনকে অবিলম্বে ডেটা সংরক্ষণ এবং পুনরুদ্ধারের জন্য ব্যবহার করতে সক্ষম করে, একটি স্ট্রীম স্পষ্টভাবে তৈরি হওয়ার জন্য অপেক্ষা না করে।

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

  1. একটি স্ট্রীম অংশগ্রহণকারীরা যেকোনো পাবলিক-কী ক্রিপ্টোগ্রাফি স্কিমের জন্য তাদের সর্বজনীন কী বিতরণ করতে ব্যবহার করে।
  2. একটি দ্বিতীয় স্ট্রীম ডেটা প্রকাশ করতে ব্যবহার করা হয়, যেখানে ডেটার প্রতিটি অংশকে একটি অনন্য কী দিয়ে সিমেট্রিক ক্রিপ্টোগ্রাফি ব্যবহার করে এনক্রিপ্ট করা হয়।
  3. একটি তৃতীয় স্ট্রীম ডেটা অ্যাক্সেস প্রদান করে। প্রতিটি অংশগ্রহণকারীর জন্য যাদের ডেটার একটি অংশ দেখতে হবে, একটি স্ট্রিম এন্ট্রি তৈরি করা হয় যাতে সেই ডেটার গোপন কী থাকে, সেই অংশগ্রহণকারীর পাবলিক কী ব্যবহার করে এনক্রিপ্ট করা হয়।

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

স্ট্রীম থেকে পুনরুদ্ধার করা হচ্ছে

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

যদি একটি নোড একটি স্ট্রীমে সাবস্ক্রাইব করা হয়, তথ্য সেই স্ট্রীম থেকে বিভিন্ন উপায়ে পুনরুদ্ধার করা যেতে পারে:

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

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

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

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

স্ট্রীম এবং মাল্টিচেইন রোডম্যাপ

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

দীর্ঘ মেয়াদে, মাল্টিচেইন রোডম্যাপে স্ট্রীমগুলি কোথায় ফিট করে? এক ধাপ পিছিয়ে, মাল্টিচেইন এখন উচ্চ-স্তরের কার্যকারিতার তিনটি ক্ষেত্র অফার করে:

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

মাল্টিচেইন 1.0 (এবং একটি প্রিমিয়াম সংস্করণ) প্রকাশের পরে, এই তালিকার পরবর্তী কী? আপনি যদি তাকান API কমান্ড যা স্ট্রীম তৈরি করতে ব্যবহৃত হয়, আপনি একটি আপাতদৃষ্টিতে অতিরিক্ত প্যারামিটার লক্ষ্য করবেন, যার একটি নির্দিষ্ট মান stream. এই প্যারামিটারটি মাল্টিচেইনকে ভবিষ্যতে অন্যান্য ধরণের উচ্চ-স্তরের সত্তাকে সমর্থন করার অনুমতি দেবে।

প্যারামিটারের জন্য সম্ভাব্য ভবিষ্যত মান অন্তর্ভুক্ত evm (একটি জন্য Ethereum- সামঞ্জস্যপূর্ণ ভার্চুয়াল মেশিন), sql (একটি এসকিউএল-স্টাইল ডাটাবেসের জন্য) বা এমনকি wiki (সহযোগীতামূলকভাবে সম্পাদিত পাঠ্যের জন্য)। যে কোনো ভাগ করা সত্তা যার অবস্থা পরিবর্তনের আদেশকৃত সিরিজ দ্বারা নির্ধারিত হয় একজন সম্ভাব্য প্রার্থী। এই জাতীয় প্রতিটি সত্তার প্রয়োজন হবে: (a) API গুলি যা তার অবস্থা আপডেট করার জন্য সঠিক বিমূর্ততা প্রদান করে, (b) সেই রাজ্যটিকে ট্র্যাক করার জন্য সদস্যতা নেওয়া নোডগুলির জন্য উপযুক্ত প্রক্রিয়া এবং (c) দক্ষতার সাথে অংশ বা সমস্ত রাজ্য পুনরুদ্ধার করার জন্য APIগুলি৷ প্লাগ-ইন আর্কিটেকচারের মাধ্যমে আমাদের দ্বারা বা তৃতীয় পক্ষের দ্বারা বাস্তবায়িত করার জন্য অন্য কোন উচ্চ-স্তরের সত্ত্বাগুলি সবচেয়ে উপযোগী হবে তা জানার জন্য আমরা অপেক্ষা করছি৷

স্মার্ট চুক্তি সম্পর্কে কি?

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

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

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

 

কোন মন্তব্য পোস্ট করুন লিঙ্কডইন উপর.

 

প্রযুক্তিগত সংযোজন

স্ট্রীম সম্পর্কিত সমস্ত কমান্ড সম্পূর্ণরূপে নথিভুক্ত করা হয় মাল্টিচেইন API পৃষ্ঠা, কিন্তু এখানে একটি সংক্ষিপ্ত সারসংক্ষেপ:

  • ব্যবহার করে একটি স্ট্রিম তৈরি করুন create stream or createfrom ... stream
  • সঙ্গে একটি স্ট্রীম একটি আইটেম যোগ করুন publish or publishfrom
  • ব্যবহার করে স্ট্রিমগুলির একটি তালিকা পুনরুদ্ধার করুন liststreams
  • এর সাথে একটি স্ট্রিম ট্র্যাক করা শুরু বা বন্ধ করুন subscribe এবং unsubscribe
  • ব্যবহার করে স্ট্রিম আইটেম পুনরুদ্ধার করুন liststreamitems, liststreamkeyitems এবং liststreampublisheritems
  • এর সাথে স্ট্রিম কী এবং প্রকাশকদের তালিকা করুন liststreamkeys এবং liststreampublishers
  • বড় স্ট্রিম আইটেমগুলির জন্য, ব্যবহার করে সম্পূর্ণ ডেটা পুনরুদ্ধার করুন gettxoutdata (দেখুন maxshowndata নিচে)
  • লাইক কল সহ প্রতি-স্ট্রীম অনুমতি নিয়ন্ত্রণ করুন grant [address] stream1.write
  • ব্যবহার করে একটি স্ট্রিম এর অনুমতি দেখুন listpermissions stream1.*

স্ট্রীম সম্পর্কিত কিছু অন্যান্য বিকাশকারী নোট:

  • সার্জারির create অনুমতি স্ট্রীম তৈরি করতে একটি ঠিকানা অনুমতি দেয়.
  • প্রাসঙ্গিক প্রতি-স্ট্রীম অনুমতি হয় write, admin এবং activate
  • নতুন ব্লকচেইন পরামিতি: root-stream-name (কারো জন্য খালি রাখবেন না), root-stream-open, anyone-can-create, admin-consensus-create, max-std-op-returns-count
  • নতুন রানটাইম পরামিতি: autosubscribe স্বয়ংক্রিয়ভাবে তৈরি নতুন স্ট্রীম সদস্যতা এবং maxshowndata API প্রতিক্রিয়াগুলিতে ডেটার পরিমাণ সীমিত করতে (দেখুন gettxoutdata উপরে)।
  • একটি স্ট্রীম আইটেমের ডেটার সর্বাধিক আকার দ্বারা স্থির করা হয়৷ max-std-op-return-size ব্লকচেইন প্যারামিটার, সেইসাথে ছোট maximum-block-size এবং max-std-tx-size মান বিয়োগ কয়েক শত বাইট.
  • পুরানো ওয়ালেট বিন্যাস ব্যবহার করে নোডগুলি স্ট্রিমগুলিতে সদস্যতা নিতে পারে না, এবং৷ আপগ্রেড করা উচিত.

 

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

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