Probieren Sie es jetzt aus: https://hstp.ai
npx hstp;
Das Protokoll zielt darauf ab, eine Abstraktion der Anwendungsschicht für das Hyper Service Transfer Protocol zu entwickeln.
HSTP ist eine Rekursion als Natur von HSTP. Dieses Protokoll implementiert sich selbst als Schnittstelle. Auf jedem mit dem Internet verbundenen Gerät gibt es eine HSTP-Instanz. Aus diesem Grund ist die Adoption nicht erforderlich. HSTP läuft bereits im Internet. Es ist uns gerade gelungen, das Protokoll über Protokolle in heterogenen Netzwerken zu erklären. Deshalb nicht mit web2, web3 oder umgekehrt vergleichen.
HSTP ist eine Anwendungsdarstellungsschnittstelle für heterogene Netzwerke.
Die HSTP-Schnittstelle erzwingt die Implementierung einer Reihe von Methoden, um mit anderen Knoten im Netzwerk kommunizieren zu können. Auf diese Weise können Server, Clients und andere Knoten auf vertrauensbasierte, Ende-zu-Ende-verschlüsselte Weise miteinander kommunizieren. Zu diesem Zeitpunkt basiert die Knotenauflösung auf dem schnellsten Pfadauflösungsalgorithmus, den ich geschrieben habe.
Zeit für Geschichten!
Ein kleiner Überblick
Denken Sie darüber nach, wir sind in der Situation, dass eine Mutter und ein Vater ein glückliches Leben führen. Sie hatten ein Baby! Plötzlich musste die Mutter regelmäßig Tabletten trinken, um eine Krankheit zu heilen. Die Pille ist Gift für das Baby. Das Baby weint und die Mutter ruft den Vater an, weil er die einzige Vertrauensperson ist, die dem Baby helfen kann. Aber der Vater kann manchmal nicht zu Hause bleiben, er muss etwas tun, um das Baby zu ernähren. Vater hörte, dass ein Milchmann frische und qualitativ hochwertige Milch zu einem niedrigen Preis anbietet. Der Vater beschließt, den Milchmann zu überreden, der Milchmann bringt die Milch zum Vater, der Vater bringt die Milch zur Mutter. Mutter gibt dem Baby die Milch. Das Baby ist jetzt glücklich und das Baby schläft. Die Mutter sieht, dass das Baby glücklich ist.
Die Familie kauft die Milch nie von außen, dies ist das erste Mal, dass sie Milch für das Baby kauft: (Mutter kennt die Nummer des Milchmanns nicht, Milchmann kennt die Privatadresse nicht)
As steps:
0) - Baby wants to drink milk.
1) - Baby cries to the mom.
3) - Mom see the baby is crying.
4) - Mom checks the fridge. Mom sees the milk is empty. (Mother is only trusting the Father)
5) - Mom calls the father.
6) - Father calls the milkman.
7) - Milkman delivers the milk to father.
8) - Father delivers the milk to mom.
9) - Mom gives the milk to the baby.
10) - Baby drinks the milk.
11) - Baby is happy.
12) - Baby sleeps.
13) - Mother see the baby is happy and sleeps.
14) - In order to be able to contact the milkman again, the mother asks the father to tell her that she wants the milkman to save the address of the house and the mobile phone of the mother.
15) - Mother calls the father.
16) - Father calls the milkman.
17) - Milkman saves the address of the house and the mobile phone of the mother.
Oops, tomorrow baby wakes up and cries again,
0) - Baby wants to drink milk.
1) - Baby cries to the mom.
2) - Mom see the baby is crying.
3) - Mom checks the fridge. Mom sees the milk is empty. (Mother is trusting the Father had right decision in the first place by giving the address to the milkman, and the milkman had right decision in the first place by saving the address of the house and the mobile phone of the mother.)
4) - Mother calls the milkman (Mother is trusting the Father's decision only)
5) - Milkman delivers the milk to mom.
6) - Mom gives the milk to the baby.
7) - Baby drinks the milk.
8) - Baby is happy.
9) - Baby sleeps.
10) - Mother see the baby is happy and sleeps.
11) - Mother is happy and the mother trust the milkman now.
Dieses Dokument, das Sie gerade lesen, ist ein Manifest für die Internetnutzer, die anderen Menschen durch das Vertrauen miteinander zu verbinden, dass der Dienst dem Kunden dient, und das Vertrauen kann nur durch die Bereitstellung guter Dienste aufrechterhalten werden. Vertrauen ist der Schlüssel, aber nicht genug zum Überleben. Der Service muss zuverlässig, konsistent und günstig sein. es sei denn, die Leute beschließen, Sie nicht noch einmal zu fragen.
Es ist also einfach, oder? Es ist so einfach zu verstehen: Wer sind diese Personen in der Geschichte?
Auch,
Baby ist in vertrauenswürdigen Händen. Kein Grund zur Sorge. Sie lieben dich, du wirst es verstehen, wenn du erwachsen bist und ein Kind bekommst.
// Erklärung der technischen Schritte bald, aber nicht so schwer, wie Sie sehen.
HSTP ist eine Schnittstelle, bei der es sich um eine Reihe von Methoden handelt, die von der Anwendungsschicht implementiert werden müssen. Die Schnittstelle dient der Kommunikation mit anderen Knoten im Netzwerk. Die Schnittstelle ist für den Einsatz in einem heterogenen Netzwerk konzipiert.
HSTP muss auf jeder Ebene von mit dem Netzwerk verbundenen Geräten/Umgebungen implementiert werden.
Der HSTP-Knoten kann ein TCP-Server, ein HTTP-Server, eine statische Datei oder ein Vertrag in einer beliebigen Kette sein. Ein HSTP-Knoten kann jeden anderen HSTP-Knoten anrufen. Dadurch können die Knoten frei untereinander telefonieren, ihren Systemstatus überprüfen und miteinander kommunizieren.
HSTP wird bereits auf Sprachebene umgesetzt, von Menschen für Menschen. Englisch ist auf der ganzen Welt die meistverwendete Sprache. JavaScript ist möglicherweise auch eine am häufigsten verwendete Sprache für Browserumgebungen. Solidität gilt für EVM-basierte Ketten, Hyperbees für TCP-basierte Netzwerke usw.
Die HSTP-Schnittstelle muss zwischen allen mit HSTP verbundenen Geräten/Netzwerken angewendet werden.
Infinitive Skalierungsoptionen: Jedes über TCP verbundene Gerät kann über HSTP mit jedem anderen über TCP verbundenen Gerät kommunizieren. Das bedeutet, dass jeder Webbrowser von einem anderen HSTP-Knoten bedient wird und jeder Webbrowser jeden anderen Webbrowser aufrufen kann.
Einheitliche Anwendungsdarstellungsschnittstelle: HSTP ist eine einheitliche Schnittstelle, bei der es sich um eine Reihe von Methoden handelt, die von der Anwendungsschicht implementiert werden müssen.
Heterogene Netzwerke: Jeder Netzwerkteilnehmer darf die Ressourcen mit anderen Netzwerkteilnehmern teilen. Die Ressourcen können CPU, Arbeitsspeicher, Speicher, Netzwerk usw. sein.
Konjukation von Web-Versionen Seit die Blockchain-Technologien als Web3 bezeichnet werden, wird über die Unterschiede zwischen den Web-Versionen diskutiert. Vergleichen ist ein Verhalten für die Denkweise des inkrementellen Zahlensystemunterrichts. Welches ist besser: keines davon. Wir müssen Systeme aufbauen, die in einem einheitlichen Protokoll kommunizieren können, unter dem Dienste alles sein könnten. HSTP strebt das an.
Registrierungsschnittstelle Registrierungsschnittstelle für die Verwendung auf der TCP-Ebene, um TLD-Knoten der obersten Ebene im Netzwerk registrieren zu können. Die erste Implementierung des HSTP-TCP-Relays löst hstp/
Die Registrierung besteht aus zwei Teilen der Schnittstelle:
Die Registrierungsimplementierung erfordert zwei HSTP-Knoten.
Router-Schnittstelle
Zu Demonstrationszwecken verwenden wir das folgende Soliditätsbeispiel:
// 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-Schnittstelle
// 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 );
}
Beispiel eines HSTP-Knotens
Der HSTP-Knoten hat Zugriff, um den übergeordneten Router über die Methode super.reply(name, operation, payload) aufzurufen. Der HSTP-Knoten kann auch untergeordnete Knoten aufrufen, indem er die Methoden this.query(payload) oder this.mutation(payload) aufruft.
Ein HSTP-Knoten kann ein Smart Contract, ein Webbrowser oder ein über TCP verbundenes Gerät sein.
Der Knoten verfügt über die volle Fähigkeit, dem Netzwerk oder sich selbst weitere HSTP-Knoten als Unterdienste hinzuzufügen.
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);
}
}
Der Ethereum-Vorschlag ist derzeit ein Entwurf, aber das Protokoll hat eine Referenzimplementierung Todo.sol.
Vollständige Liste hier
Sie können HSTP testen und Remix jetzt ausprobieren.
// 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 GENERAL PUBLIC LICENSE V3
Cagatay, Kalifornien