ప్రధాన కంటెంట్‌కి దాటవేయండి

అనుమతి లేని పబ్లిక్ RPC

అసలు పబ్లిక్ RPC ప్రతిపాదన పాత ప్లెబిట్ పరిభాషలో వ్రాయబడిన GitHub సంచిక వలె జీవించింది. ఈ పేజీ ఆ ఆలోచనను బిట్‌సోషల్ భాషలో తిరిగి వ్రాస్తుంది మరియు దానిని అమలు వివరాల గోడకు బదులుగా ఉత్పత్తి-స్థాయి ప్రతిపాదనగా రూపొందిస్తుంది.

సాధారణ భాష లక్ష్యం

Bitsocial Forge ఒక పబ్లిక్ RPC సేవను అమలు చేయగలదు, ఇది చాలా మంది వినియోగదారులు తమ స్వంత Bitsocial కమ్యూనిటీలను రిమోట్‌గా నిర్వహించేలా చేస్తుంది, ఆపరేటర్‌ను ఆ సంఘాలకు సంరక్షకుడిగా మార్చకుండా.

సేవ మూడు పరిమితులను కాపాడుతూ మొబైల్ మరియు తేలికపాటి క్లయింట్‌లను ఆచరణాత్మకంగా చేయాలి:

  1. వినియోగదారులు డిఫాల్ట్‌గా ఒకరికొకరు ఒంటరిగా ఉంటారు.
  2. అనుమతులు స్పష్టంగా మరియు గ్రాన్యులర్‌గా ఉంటాయి.
  3. రోల్ అవుట్ సమయంలో ప్రస్తుత RPC అభ్యర్థన మరియు ప్రతిస్పందన ఆకృతితో అనుకూలత భద్రపరచబడుతుంది.

ఇది ఏ సమస్యను పరిష్కరిస్తుంది

నేడు, సరళమైన 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 మౌలిక సదుపాయాలను కస్టోడియల్‌గా చేయకుండా ఉపయోగకరంగా చేయడం. మంచి పబ్లిక్ Bitsocial RPC అనేది కమ్యూనిటీలను అమలు చేయడానికి ఐచ్ఛిక సహాయంగా భావించాలి, వెనుక తలుపు ద్వారా యాజమాన్యాన్ని తిరిగి పొందే కొత్త కేంద్ర ప్లాట్‌ఫారమ్ వలె కాదు.