
Quadro di protocolli a livello applicativo per comunicazioni crittografate end-to-end basate sulla fiducia attraverso reti eterogenee, permettendo la scoperta dei servizi e il routing uniformi sugli strati TCP, HTTP e blockchain.
Provalo ora: https://hstp.ai
npx hstp;
Il protocollo mira a sviluppare un'astrazione a livello di applicazione per l'Hyper Service Transfer Protocol.
HSTP è una ricorsione come natura di HSTP. Questo protocollo implementa se stesso come interfaccia. Su ogni dispositivo connesso a Internet, esiste un'istanza HSTP. Ecco perché l'adozione non è necessaria. HSTP è già in esecuzione al di sopra di Internet. Solo ora siamo riusciti a spiegare il protocollo attraverso protocolli su reti eterogenee. Ecco perché non confrontarlo con web2, web3 o viceversa.
HSTP è un'interfaccia di rappresentazione delle applicazioni per reti eterogenee.
L'interfaccia HSTP impone di implementare un insieme di metodi per poter comunicare con altri nodi nella rete. Così i servizi, i client e gli altri nodi possono comunicare tra loro in modo basato sulla fiducia, crittografato end-to-end. Col tempo, la risoluzione dei nodi si basa su algoritmo di risoluzione del percorso più veloce che ho scritto.
Ora di storia!
Una piccola panoramica
Immagina, siamo nella situazione di una madre e un padre che vivono una vita felice. Hanno avuto un bambino! All'improvviso, la madre ha bisogno di prendere pillole regolarmente per curare una malattia. La pillola è un veleno per il bambino. Il bambino piange e la madre chiama il padre perché è l'unica persona di cui si fida per aiutare il bambino. Ma il padre a volte non può stare a casa, ha bisogno di fare qualcosa per nutrire il bambino. Il padre sente che un lattaio ha latte fresco e di alta qualità a basso prezzo. Il padre decide di provare a parlare con il lattaio, il lattaio consegna il latte al padre, il padre porta il latte alla madre. La madre dà il latte al bambino. Il bambino è felice ora e dorme, la madre vede che il bambino è felice.
La famiglia non ha mai comprato il latte dall'esterno, questa è la prima volta che comprano latte per il bambino: (La mamma non conosce il numero del lattaio, il lattaio non conosce l'indirizzo di casa)
Come passaggi:
0) - Il bambino vuole bere il latte.
1) - Il bambino piange alla mamma.
3) - La mamma vede che il bambino piange.
4) - La mamma controlla il frigo. La mamma vede che il latte è finito. (La madre si fida solo del padre)
5) - La mamma chiama il padre.
6) - Il padre chiama il lattaio.
7) - Il lattaio consegna il latte al padre.
8) - Il padre consegna il latte alla mamma.
9) - La mamma dà il latte al bambino.
10) - Il bambino beve il latte.
11) - Il bambino è felice.
12) - Il bambino dorme.
13) - La mamma vede che il bambino è felice e dorme.
14) - Per poter contattare di nuovo il lattaio, la madre chiede al padre di dirle che vuole che il lattaio salvi l'indirizzo di casa e il cellulare della madre.
15) - La madre chiama il padre.
16) - Il padre chiama il lattaio.
17) - Il lattaio salva l'indirizzo di casa e il cellulare della madre.
Ops, il giorno dopo il bambino si sveglia e piange di nuovo,
0) - Il bambino vuole bere il latte.
1) - Il bambino piange alla mamma.
2) - La mamma vede che il bambino piange.
3) - La mamma controlla il frigo. La mamma vede che il latte è finito. (La madre si fida che il padre abbia preso la decisione giusta la prima volta dando l'indirizzo al lattaio, e il lattaio abbia preso la decisione giusta la prima volta salvando l'indirizzo di casa e il cellulare della madre.)
4) - La mamma chiama il lattaio (La madre si fida solo della decisione del padre)
5) - Il lattaio consegna il latte alla mamma.
6) - La mamma dà il latte al bambino.
7) - Il bambino beve il latte.
8) - Il bambino è felice.
9) - Il bambino dorme.
10) - La mamma vede che il bambino è felice e dorme.
11) - La mamma è felice e ora si fida del lattaio.
questo documento che stai leggendo è un manifesto per le persone di Internet per connettere altre persone fidandosi che il servizio serva il cliente e la fiducia può essere mantenuta solo fornendo buoni servizi. la fiducia è la chiave, ma non basta per sopravvivere. il servizio deve essere affidabile, coerente, economico. altrimenti le persone decideranno di non chiederti più.
Quindi, è facile, vero? È semplicissimo da capire, chi sono quelle persone nella storia?
inoltre,
Il bambino è in mani fidate. Non c'è nulla di cui preoccuparsi. Ti amano, lo capirai quando crescerai e avrai un figlio.
// Spiegazione tecnica dei passaggi presto, ma non così difficile come vedi.
HSTP è un'interfaccia, ovvero un insieme di metodi che devono essere implementati dal livello applicativo. L'interfaccia viene utilizzata per comunicare con altri nodi nella rete. L'interfaccia è progettata per essere utilizzata in una rete eterogenea.
HSTP deve essere implementato su qualsiasi livello di dispositivi/ambienti connessi in rete.
Un nodo HSTP potrebbe essere un server TCP, server HTTP, file statico o contratto su qualsiasi catena. Un nodo HSTP è in grado di chiamare qualsiasi altro nodo HSTP. Pertanto i nodi possono chiamarsi liberamente l'un l'altro, possono controllare il loro stato di sistema e possono comunicare tra loro.
HSTP è già implementato a livello di linguaggio, dalle persone per le persone. L'inglese è la lingua più adottata sulla Terra. JavaScript potrebbe essere anche il linguaggio più adottato per gli ambienti browser. Solidity per le catene basate su EVM, hyperbees per le reti basate su TCP, ecc.
L'interfaccia HSTP deve essere applicata tra qualsiasi dispositivo/rete connessa a HSTP.
Opzioni di scaling infinite: Qualsiasi dispositivo connesso TCP può parlare con qualsiasi altro dispositivo connesso TCP tramite HSTP. Ciò significa che qualsiasi browser web è server di un altro nodo HSTP e qualsiasi browser web può chiamare qualsiasi altro browser web.
Interfaccia di rappresentazione uniforme delle applicazioni: HSTP è un'interfaccia uniforme, ovvero un insieme di metodi che devono essere implementati dal livello applicativo.
Reti eterogenee: Qualsiasi partecipante della rete può condividere le risorse con altri partecipanti della rete. Le risorse possono essere CPU, memoria, storage, rete, ecc.
Congiunzione delle versioni web Poiché le tecnologie blockchain vengono chiamate web3, le persone hanno iniziato a discutere delle differenze tra i web. Il confronto è un comportamento tipico della mentalità dell'educazione numerica incrementale. Quale è migliore: nessuna. Dobbiamo costruire sistemi che possano parlare con un protocollo uniforme, i servizi sottostanti possono essere qualsiasi cosa. HSTP mira a questo.
Interfaccia di registro L'interfaccia di registro è progettata per essere utilizzata a livello TCP, per poter registrare i nodi tld di livello superiore nella rete. La prima implementazione del relay TCP HSTP risolverà hstp/
Il registro ha due parti dell'interfaccia:
L'implementazione del registro necessita di due nodi HSTP,
Interfaccia Router
A scopo dimostrativo, utilizzeremo il seguente esempio in 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;
}
}
Interfaccia 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);
}
Esempio di nodo HSTP
Un nodo HSTP ha accesso per chiamare il router padre tramite il metodo super.reply(name, operation, payload). Un nodo HSTP può anche chiamare i nodi figli chiamando this.query(payload) o this.mutation(payload).
Un nodo HSTP può essere uno smart contract, o un browser web, o un dispositivo connesso TCP.
Il nodo ha piena capacità di aggiungere più nodi HSTP alla rete o a se stesso come sottoservizi.
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 proposta per Ethereum è una bozza per ora, ma il protocollo ha un'implementazione di riferimento Todo.sol.
Puoi testare HSTP e provarlo su remix ora.
// 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