
एप्लिकेशन-लेयर प्रोटोकॉल फ्रेमवर्क जो विषम नेटवर्कों में विश्वास-आधारित, एंड-टू-एंड एन्क्रिप्टेड संचार के लिए है, जो TCP, HTTP और ब्लॉकचेन लेयरों पर समान सेवा खोज और रूटिंग सक्षम करता है।
अभी आज़माएँ: https://hstp.ai
npx hstp;
यह प्रोटोकॉल हाइपर सर्विस ट्रांसफर प्रोटोकॉल के लिए एक एप्लिकेशन लेयर एब्स्ट्रैक्शन विकसित करने का लक्ष्य रखता है।
HSTP, HSTP की प्रकृति के अनुसार एक पुनरावृत्ति है। यह प्रोटोकॉल स्वयं को एक इंटरफ़ेस के रूप में लागू करता है। हर इंटरनेट से जुड़े डिवाइस पर, एक HSTP इंस्टेंस मौजूद है। इसलिए अपनाने की आवश्यकता नहीं है। HSTP पहले से ही इंटरनेट के शीर्ष पर चल रहा है। हमने अभी-अभी विषम नेटवर्क्स पर प्रोटोकॉल के ऊपर प्रोटोकॉल को समझाने में सफलता प्राप्त की है। इसलिए web2, web3 या इसके विपरीत से तुलना न करें।
HSTP विषम नेटवर्क्स के लिए एक एप्लिकेशन प्रतिनिधित्व इंटरफ़ेस है।
HSTP इंटरफ़ेस, नेटवर्क में अन्य नोड्स के साथ संवाद करने में सक्षम होने के लिए विधियों का एक सेट लागू करने के लिए बाध्य करता है। इस प्रकार सर्वर, क्लाइंट और अन्य नोड्स विश्वास आधारित, एंड-टू-एंड एन्क्रिप्टेड तरीके से एक दूसरे के साथ संवाद कर सकते हैं। जब तक नोड रिज़ॉल्यूशन मेरे द्वारा लिखे गए सबसे तेज़ पथ रिज़ॉल्यूशन एल्गोरिदम पर आधारित है।
कहानी का समय!
एक छोटा सा अवलोकन
सोचिए, हम एक माँ और एक पिता की स्थिति में हैं जो एक खुशहाल जीवन जी रहे हैं। उनके घर एक बच्चा हुआ! अचानक, माँ को एक बीमारी को ठीक करने के लिए नियमित रूप से गोलियाँ लेने की आवश्यकता हुई। गोली बच्चे के लिए जहर है। बच्चा रो रहा है और माँ पिता को बुलाती है क्योंकि वह बच्चे की मदद करने के लिए एकमात्र विश्वसनीय व्यक्ति है। लेकिन पिता कभी-कभी घर पर नहीं रह सकता, उसे बच्चे को खिलाने के लिए कुछ करना होता है। पिता को पता चलता है कि एक दूधवाले के पास कम कीमत पर ताजा और उच्च गुणवत्ता वाला दूध है। पिता दूधवाले से बात करने का प्रयास करने का निर्णय लेता है, दूधवाला पिता को दूध पहुँचाता है, पिता दूध माँ तक ले जाता है। माँ बच्चे को दूध देती है। बच्चा अब खुश है और बच्चा सो जाता है, माँ देखती है कि बच्चा खुश है।
परिवार ने कभी बाहर से दूध नहीं खरीदा, यह पहली बार है जब वे बच्चे के लिए दूध खरीद रहे हैं: (माँ को दूधवाले का नंबर नहीं पता, दूधवाले को घर का पता नहीं पता)
चरणों के रूप में:
0) - बच्चा दूध पीना चाहता है।
1) - बच्चा माँ से रोता है।
3) - माँ देखती है कि बच्चा रो रहा है।
4) - माँ फ्रिज की जाँच करती है। माँ देखती है कि दूध खाली है। (माँ केवल पिता पर भरोसा करती है)
5) - माँ पिता को बुलाती है।
6) - पिता दूधवाले को बुलाता है।
7) - दूधवाला पिता को दूध पहुँचाता है।
8) - पिता माँ को दूध पहुँचाता है।
9) - माँ बच्चे को दूध देती है।
10) - बच्चा दूध पीता है।
11) - बच्चा खुश है।
12) - बच्चा सोता है।
13) - माँ देखती है कि बच्चा खुश है और सो रहा है।
14) - दूधवाले से फिर से संपर्क करने में सक्षम होने के लिए, माँ पिता से कहती है कि वह दूधवाले को घर का पता और माँ का मोबाइल फोन सेव करने के लिए कहे।
15) - माँ पिता को बुलाती है।
16) - पिता दूधवाले को बुलाता है।
17) - दूधवाला घर का पता और माँ का मोबाइल फोन सेव कर लेता है।
ओह, कल बच्चा जागता है और फिर से रोता है,
0) - बच्चा दूध पीना चाहता है।
1) - बच्चा माँ से रोता है।
2) - माँ देखती है कि बच्चा रो रहा है।
3) - माँ फ्रिज की जाँच करती है। माँ देखती है कि दूध खाली है। (माँ पिता के पहले निर्णय पर भरोसा करती है कि उन्होंने दूधवाले को पता दिया था, और दूधवाले ने पहले ही घर का पता और माँ का मोबाइल फोन सेव कर लिया था।)
4) - माँ दूधवाले को बुलाती है (माँ केवल पिता के फैसले पर भरोसा करती है)
5) - दूधवाला माँ को दूध पहुँचाता है।
6) - माँ बच्चे को दूध देती है।
7) - बच्चा दूध पीता है।
8) - बच्चा खुश है।
9) - बच्चा सोता है।
10) - माँ देखती है कि बच्चा खुश है और सो रहा है।
11) - माँ खुश है और अब माँ दूधवाले पर भरोसा करती है।
यह दस्तावेज़ जो आप पढ़ रहे हैं, इंटरनेट के लोगों के लिए एक घोषणापत्र है जो दूसरे लोगों को सेवा प्रदान करने वाले सर्वर पर भरोसा करके जोड़ता है, और विश्वास केवल अच्छी सेवाएँ प्रदान करके बनाए रखा जा सकता है। विश्वास कुंजी है, लेकिन जीवित रहने के लिए पर्याप्त नहीं है। सेवा को विश्वसनीय, सुसंगत, सस्ता होना चाहिए। जब तक लोग फिर से आपसे न पूछने का निर्णय नहीं ले लेते।
तो, यह आसान है, है ना? यह समझना बहुत सरल है, कहानी में ये लोग कौन हैं?
इसके अलावा,
बच्चा भरोसेमंद हाथों में है। चिंता करने की कोई बात नहीं है। वे आपसे प्यार करते हैं, जब आप बड़े होंगे और आपका बच्चा होगा तब आप समझ जाएँगे।
// तकनीकी चरण स्पष्टीकरण जल्द ही, लेकिन उतना कठिन नहीं जितना आप देखते हैं।
HSTP एक इंटरफ़ेस है, जो विधियों का एक सेट है जिसे एप्लिकेशन लेयर द्वारा लागू किया जाना चाहिए। इस इंटरफ़ेस का उपयोग नेटवर्क में अन्य नोड्स के साथ संवाद करने के लिए किया जाता है। यह इंटरफ़ेस विषम नेटवर्क में उपयोग के लिए डिज़ाइन किया गया है।
HSTP को नेटवर्क से जुड़े किसी भी लेयर के डिवाइस/वातावरण पर लागू किया जाना चाहिए।
HSTP नोड एक TCP सर्वर, HTTP सर्वर, स्टैटिक फ़ाइल या किसी भी चेन पर कॉन्ट्रैक्ट हो सकता है। एक HSTP नोड किसी भी अन्य HSTP नोड को कॉल करने में सक्षम है। इस प्रकार नोड्स एक-दूसरे को स्वतंत्र रूप से कॉल कर सकते हैं, अपनी सिस्टम स्थिति की जाँच कर सकते हैं, और एक-दूसरे के साथ संवाद कर सकते हैं।
HSTP पहले से ही भाषा स्तर पर, लोगों द्वारा लोगों के लिए लागू किया गया है। अंग्रेजी पृथ्वी पर सबसे अधिक अपनाई जाने वाली भाषा है। JavaScript ब्राउज़र वातावरण के लिए सबसे अधिक अपनाई जाने वाली भाषा भी हो सकती है। Solidity EVM-आधारित चेन के लिए है, hyperbees TCP-आधारित नेटवर्क के लिए है, आदि।
HSTP इंटरफ़ेस को किसी भी HSTP से जुड़े डिवाइस/नेटवर्क के बीच लागू किया जाना चाहिए।
अनंत स्केलिंग विकल्प: कोई भी TCP से जुड़ा डिवाइस HSTP के माध्यम से किसी भी अन्य TCP से जुड़े डिवाइस से बात कर सकता है। इसका अर्थ है कि कोई भी वेब ब्राउज़र किसी अन्य HSTP नोड की सेवा दे रहा है, और कोई भी वेब ब्राउज़र किसी भी अन्य वेब ब्राउज़र को कॉल कर सकता है।
समान एप्लिकेशन प्रतिनिधित्व इंटरफ़ेस: HSTP एक समान इंटरफ़ेस है, जो विधियों का एक सेट है जिसे एप्लिकेशन लेयर द्वारा लागू किया जाना चाहिए।
विषम नेटवर्क: नेटवर्क का कोई भी प्रतिभागी नेटवर्क के अन्य प्रतिभागियों के साथ संसाधन साझा करने की अनुमति देता है। संसाधन CPU, मेमोरी, स्टोरेज, नेटवर्क आदि हो सकते हैं।
वेब संस्करणों का संयुग्मन चूंकि ब्लॉकचेन तकनीकों को web3 कहा जा रहा है, लोगों ने वेब के बीच अंतरों पर चर्चा करना शुरू कर दिया है। तुलना करना वृद्धिशील संख्यात्मक प्रणाली शिक्षा की मानसिकता का व्यवहार है। कौन सा बेहतर है: कोई नहीं। हमें ऐसी प्रणालियाँ बनानी होंगी जो एक समान प्रोटोकॉल में बात कर सकें, अंतर्निहित सेवाएँ कुछ भी हो सकती हैं। HSTP इसी के लिए लक्ष्य रखता है।
रजिस्ट्री इंटरफ़ेस रजिस्ट्री इंटरफ़ेस TCP लेयर पर उपयोग करने के लिए डिज़ाइन किया गया है, ताकि नेटवर्क में शीर्ष स्तर के tld नोड्स को पंजीकृत किया जा सके। HSTP TCP रिले का पहला कार्यान्वयन hstp/ को हल करेगा।
रजिस्ट्री में इंटरफ़ेस के दो भाग हैं:
रजिस्ट्री कार्यान्वयन के लिए दो HSTP नोड की आवश्यकता है,
राउटर इंटरफ़ेस
प्रदर्शन उद्देश्यों के लिए, हम निम्नलिखित solidity उदाहरण का उपयोग करेंगे:
// SPDX-License-Identifier: GNU-3.0-or-later
pragma solidity ^0.8.0;
import "./HSTP.sol";
import "./ERC165.sol";
enum Operation {
Query,
Mutation
}
struct Response {
uint256 status;
string body;
}
struct Registry {
HSTP resolver;
}
// HSTP/Router.sol
abstract contract Router is ERC165 {
event Log(address indexed sender, Operation operation, bytes payload);
event Register(address indexed sender, Registry registry);
mapping(string => Registry) public routes;
function reply(string memory name, Operation _operation, bytes memory payload) public virtual payable returns(Response memory response) {
emit Log(msg.sender, _operation, payload);
// ट्री में ऊपर और नीचे ट्रैवर्स करें।
// दिए गए ऑपरेशन के लिए निकटतम पथ खोजने का प्रयास करता है।
// यदि रूट HSTP नोड पर पंजीकृत है, तो चाइल्ड नोड से उत्तर दें।
// यदि नोड पर रूट नहीं है, तो पैरेंट से पूछें।
if (routes[name]) {
if (_operation == Operation.Query) {
return this.query(payload);
} else if (_operation == Operation.Mutation) {
return this.mutation(payload);
}
}
return super.reply(name, _operation, payload);
}
function query(string memory name, bytes memory payload) public view returns (Response memory) {
return routes[name].resolver.query(payload);
}
function mutation(string memory name, bytes memory payload) public payable returns (Response memory) {
return routes[name].resolver.mutation(payload);
}
function register(string memory name, HSTP node) public {
Registry memory registry = Registry({
resolver: node
});
emit Register(msg.sender, registry);
routes[name] = registry;
}
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(HSTP).interfaceId;
}
}
HSTP इंटरफ़ेस
// SPDX-License-Identifier: GNU-3.0-or-later
pragma solidity ^0.8.0;
import "./Router.sol";
// ऑन-चेन सेवाओं के लिए स्टेटलेस हाइपर सर्विस ट्रांसफर प्रोटोकॉल।
// लागू करेगा: EIP-4337 जब यह अंतिम चरण में होगा।
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-4337.md
abstract contract HSTP is Router {
constructor(string memory name) {
register(name, this);
}
function query(bytes memory payload)
public
view
virtual
returns (Response memory);
function mutation(bytes memory payload)
public
payable
virtual
returns (Response memory);
}
उदाहरण HSTP नोड
HSTP नोड के पास super.reply(name, operation, payload) विधि द्वारा पैरेंट राउटर को कॉल करने की पहुँच है। HSTP नोड this.query(payload) या this.mutation(payload) विधियों को कॉल करके चाइल्ड नोड्स को भी कॉल कर सकता है।
एक HSTP नोड एक स्मार्ट कॉन्ट्रैक्ट, या एक वेब ब्राउज़र, या एक TCP से जुड़ा डिवाइस हो सकता है।
नोड के पास नेटवर्क में अधिक HSTP नोड्स या स्वयं को उप-सेवाओं के रूप में जोड़ने की पूरी क्षमता है।
HSTP HSTP
/ \ / \
HSTP HSTP HSTP
/ \
HSTP HSTP
/ /
HSTP HSTP
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;
import "hstp/HSTP.sol";
// ऑन-चेन सेवाओं के लिए स्टेटलेस हाइपर सर्विस ट्रांसफर प्रोटोकॉल।
contract Todo is HSTP("Todo") {
struct ITodo {
string todo;
}
function addTodo(ITodo memory request) public payable returns(Response memory response) {
response.body = request.todo;
return response;
}
// HSTP के लिए ओवरराइड।
function query(bytes memory payload)
public
view
virtual
override
returns (Response memory) {}
function mutation(bytes memory payload)
public
payable
virtual
override
returns (Response memory) {
(ITodo memory request) = abi.decode(payload, (ITodo));
return this.addTodo(request);
}
}
Ethereum प्रस्ताव अभी ड्राफ्ट है, लेकिन प्रोटोकॉल में संदर्भ कार्यान्वयन Todo.sol है।
आप HSTP का परीक्षण कर सकते हैं और अब रीमिक्स पर प्रयास कर सकते हैं।
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;
import "hstp/HSTP.sol";
// ऑन-चेन सेवाओं के लिए स्टेटलेस हाइपर सर्विस ट्रांसफर प्रोटोकॉल।
contract Todo is HSTP("Todo") {
struct TodoRequest {
string todo;
}
function addTodo(TodoRequest memory request) public payable returns(Response memory response) {
response.body = request.todo;
return response;
}
// HSTP के लिए ओवरराइड।
function query(bytes memory payload)
public
view
virtual
override
returns (Response memory) {}
function mutation(bytes memory payload)
public
payable
virtual
override
returns (Response memory) {
(TodoRequest memory todoRequest) = abi.decode(payload, (TodoRequest));
return this.addTodo(todoRequest);
}
}
GNU GENERAL PUBLIC LICENSE V3