স্কিপ করে মূল কন্টেন্ট এ যান

অনুমতিহীন পাবলিক RPC

এই পৃষ্ঠাটি পাবলিক আরপিসিকে একটি পণ্য-স্তরের বিটসামাজিক প্রস্তাবের পরিবর্তে বাস্তবায়নের বিবরণের প্রাচীর হিসাবে ফ্রেম করে।

সরল-ভাষা লক্ষ্য

Bitsocial Forge একটি পাবলিক RPC পরিষেবা চালাতে পারে যা অনেক ব্যবহারকারীকে তাদের নিজস্ব Bitsocial সম্প্রদায়গুলিকে দূরবর্তীভাবে পরিচালনা করতে দেয়, অপারেটরকে সেই সম্প্রদায়গুলির একজন অভিভাবক হিসাবে পরিণত না করে।

পরিষেবাটি তিনটি সীমাবদ্ধতা রক্ষা করে মোবাইল এবং হালকা ওজনের ক্লায়েন্টদের ব্যবহারিক করে তুলতে হবে:

  1. ব্যবহারকারীরা ডিফল্টরূপে একে অপরের থেকে বিচ্ছিন্ন থাকে।
  2. অনুমতিগুলি স্পষ্ট এবং দানাদার থাকে৷
  3. বর্তমান RPC অনুরোধের সাথে সামঞ্জস্যতা এবং প্রতিক্রিয়া আকৃতি রোলআউটের সময় সংরক্ষণ করা যেতে পারে।

এটা কি সমস্যা সমাধান করে

আজ, সহজতম RPC মডেলটি সাধারণত সব-অথবা-কিছুই নয়: এক প্রমাণ কী, একটি অথরিটি ডোমেন, সম্পূর্ণ অ্যাক্সেস। এটি একটি একক অপারেটরের জন্য কাজ করে কিন্তু একটি পাবলিক মাল্টি-ইউজার পরিষেবার জন্য নয়।

একটি অনুমতিহীন পাবলিক RPC একটি শক্তিশালী মডেল প্রয়োজন:

  • একটি পরিষেবা অনেক ব্যবহারকারীকে হোস্ট করতে পারে
  • প্রতিটি ব্যবহারকারী তাদের নিজস্ব সম্প্রদায় এবং সীমা পায়
  • অপারেটর-সংজ্ঞায়িত নীতি অপব্যবহার প্রতিরোধ করতে পারে
  • ব্যবহারকারী এখনও দূরে সরে যেতে পারে বা পরে স্ব-হোস্ট করতে পারে

মূল মডেল

ব্যবহারকারীদের

প্রতিটি ব্যবহারকারী একটি প্রমাণীকরণ শংসাপত্র এবং একটি অনুমতি বান্ডেল পায়৷

সম্প্রদায়গুলি

পরিষেবার মাধ্যমে তৈরি সম্প্রদায়গুলি একটি মালিকের রেকর্ডে বরাদ্দ করা হয়৷ মালিকানা সুস্পষ্টভাবে ট্র্যাক করা হয় যাতে ব্যবস্থাপনা পদ্ধতি সঠিক ব্যবহারকারীর কাছে স্কোপ করা যায়।

অনুমতি

অনুমতিগুলি ক্ষমতা ভিত্তিক। "আরপিসি ব্যবহার করতে পারে" এর জন্য একটি বুলিয়ানের পরিবর্তে সার্ভার নিয়ন্ত্রণ করতে পারে:

  • একজন ব্যবহারকারী কত সম্প্রদায় তৈরি করতে পারে
  • যা ব্যবস্থাপনা পদ্ধতি উপলব্ধ
  • কি প্রকাশ অপারেশন অনুমোদিত হয়
  • কি হারের সীমা প্রযোজ্য
  • কি প্রশাসক পৃষ্ঠতল দৃশ্যমান হয়

অ্যাডমিন পৃষ্ঠ

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

সামঞ্জস্যপূর্ণ অবস্থান

ব্যবহারকারী-মুখী ডকুমেন্টেশনে বিটসামাজিক শব্দ ব্যবহার করা উচিত যেমন সম্প্রদায় এবং প্রোফাইল

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

প্রস্তাবিত অনুমতি বান্ডিল

type PermissionBundle = {
maxCommunities: number; // 0 = unlimited
methods: {
createCommunity: boolean;
startCommunity: boolean;
stopCommunity: boolean;
editCommunity: boolean;
deleteCommunity: boolean;
publishComment: boolean;
publishVote: boolean;
publishCommentEdit: boolean;
publishCommentModeration: boolean;
publishCommunityEdit: boolean;
getComment: boolean;
getCommentPage: boolean;
getCommunityPage: boolean;
fetchContent: boolean;
resolveAuthorAddress: boolean;
commentUpdateSubscribe: boolean;
communityUpdateSubscribe: boolean;
communityListSubscribe: boolean;
settingsSubscribe: boolean;
};
rateLimits: {
requestsPerMinute: number;
publishesPerHour: number;
};
storage: {
maxTotalSize: number;
};
scope: {
canPublishExternal: boolean;
canReadExternal: boolean;
};
admin: {
canTransferOwnership: boolean;
canManageUsers: boolean;
canViewAuditLogs: boolean;
canViewAllCommunities: boolean;
};
};

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

সংযোগ প্রবাহ

client connects with auth credential
-> server validates the credential
-> server loads the user's permission bundle
-> server returns a permissions notification
-> client proceeds with the subset of actions it is allowed to use

অনুমতি সচেতনতা ঐচ্ছিক থাকা উচিত. একটি ক্লায়েন্ট যে বিজ্ঞপ্তি উপেক্ষা করে এখনও সার্ভার থেকে স্ট্যান্ডার্ড অনুমোদন ব্যর্থতা পরিচালনা করে সঠিকভাবে আচরণ করতে পারে।

মালিকানা প্রয়োগ

যখন পরিষেবাটি একটি সম্প্রদায় তৈরি করে, তখন এটি স্বয়ংক্রিয়ভাবে কলিং ব্যবহারকারীকে মালিকানা বরাদ্দ করে। সেখান থেকে:

  • সম্প্রদায়ের সূচনা, থামানো, সম্পাদনা এবং মুছে ফেলার ক্রিয়াগুলি মালিকের স্কোপড৷
  • তালিকা এবং সাবস্ক্রিপশন প্রতিক্রিয়া কলারের নিজস্ব সম্প্রদায়গুলিতে ডিফল্ট
  • বৃহত্তর দৃশ্যমানতা একটি স্পষ্ট প্রশাসক অনুমতি, একটি ডিফল্ট নয়

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

প্রস্তাবিত অপারেটর পৃষ্ঠ

অ্যাডমিন API বিরক্তিকর এবং স্পষ্ট থাকতে পারে:

  • তালিকা ব্যবহারকারীদের
  • একজন ব্যবহারকারী পরিদর্শন করুন
  • ব্যবহারকারীদের তৈরি বা আপডেট করুন
  • ব্যবহারকারীদের মুছুন
  • সম্প্রদায়ের মালিকানা হস্তান্তর
  • অডিট লগ পরিদর্শন

এই অপারেটর API-এর জন্য প্রমাণীকরণ শেষ-ব্যবহারকারী RPC প্রমাণীকরণ থেকে সম্পূর্ণ আলাদা হওয়া উচিত।

রোলআউট পর্যায়গুলি

পর্যায় 1

  • পাবলিক RPC প্রকল্প কাঠামো স্থাপন
  • ব্যবহারকারীর রেকর্ড এবং মালিকানা ট্র্যাকিং যোগ করুন
  • বর্তমান RPC সার্ভার কাঁটা বা প্রসারিত করুন

পর্যায় 2

  • অনুমতি বান্ডিল বাস্তবায়ন
  • RPC পদ্ধতি স্তরে তাদের প্রয়োগ করুন
  • সংযোগে অনুমতি মেটাডেটা ফেরত দিন

পর্যায় 3

  • অপারেটর API যোগ করুন
  • অডিট লগিং যোগ করুন
  • অ্যাডমিন প্রমাণীকরণ যোগ করুন

পর্যায় 4

  • অ্যাডমিন ড্যাশবোর্ড পাঠান
  • পরীক্ষা অপব্যবহার নিয়ন্ত্রণ
  • হার সীমিত এবং সঞ্চয় কোটা আঁট

খোলা প্রশ্ন

প্রমাণীকরণ শংসাপত্র স্প্যাম

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

মাইগ্রেশন বিশদ

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

সারাংশ

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