
Cadre de protocole applicatif pour une communication chiffrée de bout en bout basée sur la confiance à travers des réseaux hétérogènes, permettant une découverte de services et un routage uniformes sur les couches TCP, HTTP et blockchain.
Essayez maintenant : https://hstp.ai
npx hstp;
Le protocole vise à développer une abstraction de couche application pour le Hyper Service Transfer Protocol.
HSTP est une récursion par nature de HSTP. Ce protocole s'implémente lui-même comme une interface. Sur chaque appareil connecté à Internet, il existe une instance HSTP. C'est pourquoi l'adoption n'est pas nécessaire. HSTP fonctionne déjà au-dessus d'Internet. Nous venons seulement de parvenir à expliquer le protocole sur des protocoles dans des réseaux hétérogènes. C'est pourquoi ne le comparez pas avec le web2, web3 ou vice versa.
HSTP est une interface de représentation d'application pour les réseaux hétérogènes.
L'interface HSTP impose d'implémenter un ensemble de méthodes pour pouvoir communiquer avec d'autres nœuds du réseau. Ainsi, les serveurs, clients et autres nœuds peuvent communiquer entre eux de manière basée sur la confiance et chiffrée de bout en bout. Au fil du temps, la résolution des nœuds est basée sur l'algorithme de résolution de chemin le plus rapide que j'ai écrit.
Heure du conte !
Un petit aperçu
Imaginez, nous sommes dans la situation d'une mère et d'un père qui vivent une vie heureuse. Ils ont eu un bébé ! Soudain, la mère a besoin de prendre des pilules régulièrement pour soigner une maladie. La pilule est un poison pour le bébé. Le bébé pleure et la mère appelle le père car il est la seule personne de confiance pour aider le bébé. Mais le père ne peut parfois pas rester à la maison, il doit faire quelque chose pour nourrir le bébé. Le père entend qu'un laitier a du lait frais et de haute qualité à bas prix. Le père décide d'essayer de parler au laitier, le laitier livre le lait au père, le père apporte le lait à la mère. La mère donne le lait au bébé. Le bébé est heureux maintenant et le bébé dort, la mère voit que le bébé est heureux.
La famille n'a jamais acheté de lait à l'extérieur, c'est la première fois qu'ils achètent du lait pour le bébé : (Maman ne connaît pas le numéro du laitier, le laitier ne connaît pas l'adresse de la maison)
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.
ce document que vous lisez est un manifeste pour les internautes pour connecter les autres personnes en faisant confiance au service qui sert le client et la confiance ne peut être maintenue qu'en fournissant de bons services. la confiance est la clé, mais pas suffisante pour survivre. le service doit être fiable, cohérent, bon marché. sinon, les gens décideront de ne plus vous solliciter.
Alors, c'est facile non ? C'est si simple à comprendre, qui sont ces personnes dans l'histoire ?
aussi,
Le bébé est entre de bonnes mains. Rien à craindre. Ils t'aiment, tu comprendras quand tu seras grand et que tu auras un enfant.
// Explication des étapes techniques bientôt, mais pas si difficile que ça comme vous le voyez.
HSTP est une interface, qui est un ensemble de méthodes qui doivent être implémentées par la couche application. L'interface est utilisée pour communiquer avec d'autres nœuds du réseau. L'interface est conçue pour être utilisée dans un réseau hétérogène.
HSTP doit être implémenté sur n'importe quelle couche de dispositifs/environnements connectés en réseau.
Un nœud HSTP peut être un serveur TCP, un serveur HTTP, un fichier statique ou un contrat sur n'importe quelle chaîne. Un nœud HSTP peut appeler n'importe quel autre nœud HSTP. Ainsi, les nœuds peuvent s'appeler librement, vérifier l'état de leur système et communiquer entre eux.
HSTP est déjà implémenté au niveau du langage, par les gens pour les gens. L'anglais est la langue la plus adoptée sur Terre. JavaScript pourrait être également le langage le plus adopté pour les environnements navigateurs. Solidity est pour les chaînes basées sur EVM, hyperbees pour les réseaux TCP, etc.
L'interface HSTP doit être appliquée entre tous les dispositifs/réseaux connectés HSTP.
Options de mise à l'échelle infinies : Tout périphérique connecté TCP peut communiquer avec tout autre périphérique connecté TCP via HSTP. Cela signifie que tout navigateur Web est un serveur d'un autre nœud HSTP, et que tout navigateur Web peut appeler n'importe quel autre navigateur Web.
Interface de représentation d'application uniforme : HSTP est une interface uniforme, qui est un ensemble de méthodes qui doivent être implémentées par la couche application.
Réseaux hétérogènes : Tout participant du réseau est autorisé à partager les ressources avec les autres participants du réseau. Les ressources peuvent être le CPU, la mémoire, le stockage, le réseau, etc.
Conjugaison des versions du web Depuis que les technologies blockchain sont appelées web3, les gens ont commencé à discuter des différences entre les web. Comparer est un comportement issu de l'état d'esprit de l'éducation aux systèmes numériques incrémentaux. Lequel est le meilleur : aucun. Nous devons construire des systèmes qui peuvent parler en un protocole uniforme, les services sous-jacents pouvant être n'importe quoi. C'est l'objectif de HSTP.
Interface de registre L'interface de registre est conçue pour être utilisée sur la couche TCP, afin de pouvoir enregistrer les nœuds de premier niveau (tld) dans le réseau. La première implémentation du relais TCP HSTP résoudra hstp/
Le registre comporte deux parties de l'interface :
L'implémentation du registre nécessite deux nœuds HSTP :
Interface de routeur
À des fins de démonstration, nous utiliserons l'exemple Solidity suivant :
// 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;
}
}
Interface 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);
}
Exemple de nœud HSTP
Un nœud HSTP a accès pour appeler le routeur parent via la méthode super.reply(name, operation, payload). Un nœud HSTP peut également appeler les nœuds enfants en appelant les méthodes this.query(payload) ou this.mutation(payload).
Un nœud HSTP peut être un contrat intelligent, un navigateur Web ou un périphérique connecté TCP.
Le nœud a la pleine capacité d'ajouter d'autres nœuds HSTP au réseau ou lui-même en tant que sous-services.
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);
}
}
La proposition Ethereum est en projet, mais le protocole a une implémentation de référence Todo.sol.
// 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