
إطار عمل بروتوكول طبقة التطبيقات للاتصال المشفر من طرف إلى طرف القائم على الثقة عبر شبكات غير متجانسة، مما يتيح اكتشاف الخدمات وتوجيهها بشكل موحد على طبقات TCP و HTTP و blockchain.
جربه الآن: https://hstp.ai
npx hstp;
يهدف البروتوكول إلى تطوير طبقة تجريد لبروتوكول نقل الخدمة الفائق.
HSTP هو استدعاء ذاتي كطبيعة HSTP. هذا البروتوكول ينفذ نفسه كواجهة. على كل جهاز متصل بالإنترنت، توجد نسخة HSTP. لهذا السبب ليست هناك حاجة للتبني. HSTP يعمل بالفعل فوق الإنترنت. لقد تمكنا الآن فقط من شرح البروتوكول عبر البروتوكولات على الشبكات غير المتجانسة. لهذا لا تقارنه مع web2 أو web3 أو العكس.
HSTP هي واجهة تمثيل تطبيقات للشبكات غير المتجانسة (https://en.wikipedia.org/wiki/Heterogeneous_network).
واجهة HSTP تفرض تطبيق مجموعة من الطرق للتواصل مع العقد الأخرى في الشبكة. وبهذا يمكن للخدمات والعملاء والعقد الأخرى التواصل مع بعضهم البعض بطريقة (https://github.com/cagataycali/HSTP/blob/main/assets/schema.jpg) مشفرة من النهاية إلى النهاية ومبنية على الثقة. مع مرور الوقت، يعتمد تحليل العقد على (https://github.com/cagataycali/HSTP/blob/main/assets/dns-resolution.jpg) خوارزمية تحليل أسرع مسار التي كتبتها.
وقت القصة!
نظرة عامة صغيرة
تخيل، نحن في حالة أم وأب يعيشان حياة سعيدة. أنجبا طفلاً! فجأة، احتاجت الأم إلى تناول حبوب بانتظام لعلاج مرض ما. الحبة سامة للطفل. الطفل يبكي والأم تتصل بالأب لأنه الشخص الوحيد الموثوق لمساعدة الطفل. لكن الأب أحيانًا لا يستطيع البقاء في المنزل، يحتاج للقيام بشيء لإطعام الطفل. سمع الأب أن رجل الحليب لديه حليب طازج وعالي الجودة بسعر منخفض. يقرر الأب محاولة التحدث مع رجل الحليب، رجل الحليب يسلم الحليب للأب، الأب يحمل الحليب للأم. الأم تعطي الحليب للطفل. الطفل سعيد الآن وينام، الأم ترى الطفل سعيدًا.
العائلة لم تشتر الحليب من الخارج أبدًا، هذه أول مرة يشترون فيها حليبًا للطفل: (الأم لا تعرف رقم رجل الحليب، رجل الحليب لا يعرف عنوان المنزل)
كرسالة خطوات:
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 هي واجهة، وهي مجموعة من الطرق التي يجب أن تنفذها طبقة التطبيق. تُستخدم الواجهة للتواصل مع العقد الأخرى في الشبكة. صُممت الواجهة لاستخدامها في (https://en.wikipedia.org/wiki/Heterogeneous_network) شبكة غير متجانسة.
يجب تنفيذ HSTP على أي طبقة من الأجهزة/البيئات المتصلة بالشبكة.
يمكن أن تكون عقدة HSTP خادم TCP، أو خادم HTTP، أو ملفًا ثابتًا، أو عقدًا في أي سلسلة. عقدة HSTP قادرة على استدعاء أي عقدة HSTP أخرى. وبالتالي يمكن للعقد استدعاء بعضها البعض بحرية، ويمكنها التحقق من حالة أنظمتها، والتواصل مع بعضها البعض.
HSTP تم تنفيذه بالفعل على مستوى اللغة، من قبل الناس للناس. اللغة الإنجليزية هي اللغة الأكثر اعتمادًا حول الأرض. يمكن أيضًا اعتبار JavaScript اللغة الأكثر اعتمادًا لبيئات المتصفح. Solidity للسلسلات المبنية على EVM، و hyperbees للشبكات المبنية على TCP، إلخ.
يجب تطبيق واجهة HSTP بين أي أجهزة/شبكات متصلة بـ HSTP.
خيارات قياس غير محدودة: أي جهاز متصل بـ TCP يمكنه التحدث مع أي جهاز آخر متصل بـ TCP عبر HSTP. هذا يعني أن أي متصفح ويب هو خادم لعقدة HSTP أخرى، وأي متصفح ويب يمكنه استدعاء أي متصفح ويب آخر.
واجهة تمثيل تطبيقات موحدة: HSTP هي واجهة موحدة، وهي مجموعة من الطرق التي يجب أن تنفذها طبقة التطبيق.
الشبكات غير المتجانسة: أي مشارك في الشبكة مسموح له بمشاركة الموارد مع المشاركين الآخرين في الشبكة. يمكن أن تكون الموارد هي وحدة المعالجة المركزية، الذاكرة، التخزين، الشبكة، إلخ.
اقتران إصدارات الويب بما أن تقنيات blockchain تسمى web3، بدأ الناس في مناقشة الاختلافات بين الويب. المقارنة هي سلوك لعقلية التعليم الرقمي المتزايد. أيهما أفضل: لا أحد منهما. يجب علينا بناء أنظمة يمكنها التحدث ببروتوكول موحد واحد، والخدمات الأساسية يمكن أن تكون أي شيء. HSTP يهدف إلى ذلك.
واجهة التسجيل واجهة التسجيل مصممة للاستخدام على طبقة TCP، لتتمكن من تسجيل العقد ذات المستوى الأعلى (tld) في الشبكة. التنفيذ الأول لـ HSTP TCP relay سيعمل على حل 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);
// Traverse upwards and downwards of the tree.
// Tries to find the closest path for given operation.
// If the route is registered on HSTP node, reply from children node.
// If the node do not have the route on this node, ask for parent.
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";
// Stateless Hyper Service Transfer Protocol for on-chain services.
// Will implement: EIP-4337 when it's on final stage.
// 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";
// Stateless Hyper Service Transfer Protocol for on-chain services.
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;
}
// Override for 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);
}
}
اقتراح إيثريوم هو مسودة الآن، لكن البروتوكول لديه تنفيذ مرجعي Todo.sol.
يمكنك اختبار HSTP وتجربته على remix الآن.
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;
import "hstp/HSTP.sol";
// Stateless Hyper Service Transfer Protocol for on-chain services.
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;
}
// Override for 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 العامة العامة V3