지금 사용해 보세요: https://hstp.ai
npx hstp;
이 프로토콜은 하이퍼 서비스 전송 프로토콜(Hyper Service Transfer Protocol)을 위한 애플리케이션 계층 추상화를 개발하는 것을 목표로 합니다.
HSTP는 HSTP의 특성상 재귀입니다. 이 프로토콜은 그 자체를 인터페이스로 구현합니다. 인터넷에 연결된 모든 장치에는 HSTP 인스턴스가 있습니다. 그렇기 때문에 입양이 필요하지 않습니다. HSTP는 이미 인터넷 상에서 실행되고 있습니다. 우리는 이제 이기종 네트워크의 프로토콜에 대한 프로토콜을 설명하는 데 성공했습니다. 그렇기 때문에 web2, web3 또는 그 반대로 비교하지 마십시오.
HSTP는 이기종 네트워크를 위한 애플리케이션 표현 인터페이스입니다.
HSTP 인터페이스는 네트워크의 다른 노드와 통신할 수 있도록 일련의 메서드를 구현하도록 강제합니다. 따라서 서비스, 클라이언트 및 기타 노드는 신뢰 기반의 엔드투엔드 암호화 방식으로 서로 통신할 수 있습니다. 노드 확인은 내가 작성한 가장 빠른 경로 확인 알고리즘을 기반으로 할 때까지입니다.
이야기 시간!
작은 개요
생각해 보세요. 우리는 한 어머니와 한 아버지가 행복한 삶을 살고 있는 상황에 처해 있습니다. 그들은 아기를 낳았습니다! 갑자기 어머니는 질병을 치료하기 위해 정기적으로 약을 마셔야 했습니다. 알약은 아기에게 독이 됩니다. 아기가 울고 있는데 엄마는 아기를 도와줄 수 있는 유일한 믿을 만한 사람이기 때문에 아빠에게 전화를 겁니다. 그러나 아버지는 때때로 집에 있을 수 없기 때문에 아기에게 먹이를 주기 위해 뭔가를 해야 합니다. 아버지는 한 우유 배달원이 신선하고 질 좋은 우유를 저렴한 가격에 판매한다고 들었습니다. 아버지는 우유 배달원과 대화를 시도하기로 결정하고, 우유 배달원은 우유를 아버지에게 전달하고, 아버지는 우유를 어머니에게 전달합니다. 엄마는 아기에게 우유를 주세요. 이제 아기는 행복해하고 아기는 자고 있고, 엄마는 아기가 행복해하는 모습을 보세요.
가족들은 절대로 외부에서 우유를 사지 않습니다. 아기를 위해 우유를 사는 것은 이번이 처음입니다. (엄마는 우유 배달원의 번호를 모르고, 우유 배달원은 집 주소를 모릅니다)
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.
당신이 읽고 있는 이 문서는 인터넷 사람들이 서비스가 고객에게 서비스를 제공하고 좋은 서비스를 제공함으로써만 신뢰를 유지할 수 있다는 것을 신뢰함으로써 다른 사람들을 연결하는 매니페스트입니다. 신뢰가 핵심이지만 생존에는 충분하지 않습니다. 서비스는 신뢰할 수 있고 일관되며 저렴해야 합니다. 사람들이 당신에게 다시는 묻지 않기로 결정하지 않는 한.
그럼, 쉽죠? 이해하기 매우 간단합니다. 이야기에 나오는 사람들은 누구입니까?
또한,
아기는 신뢰할 수 있는 손에 있습니다. 걱정할 것이 없습니다. 그들은 당신을 사랑합니다. 당신은 자라서 아이를 갖게 되면 이해하게 될 것입니다.
// 기술적인 단계를 곧 설명하겠지만, 보시는 것처럼 그렇게 어렵지는 않습니다.
HSTP는 애플리케이션 계층에서 구현해야 하는 메서드 집합인 인터페이스입니다. 인터페이스는 네트워크의 다른 노드와 통신하는 데 사용됩니다. 인터페이스는 이기종 네트워크에서 사용하도록 설계되었습니다.
HSTP는 네트워크에 연결된 장치/환경의 모든 계층에서 구현되어야 합니다.
HSTP 노드는 TCP 서버, HTTP 서버, 정적 파일 또는 모든 체인의 계약일 수 있습니다. 하나의 HSTP 노드는 다른 HSTP 노드를 호출할 수 있습니다. 따라서 노드들은 자유롭게 서로 호출할 수 있고, 자신의 시스템 상태를 확인할 수 있으며, 서로 통신할 수 있다.
HSTP는 이미 언어 수준, 사람에 의한 사람을 위한 구현으로 구현되었습니다. 영어는 대부분 지구 전역에서 채택되는 언어입니다. JavaScript는 브라우저 환경에 가장 많이 채택되는 언어라고도 알려져 있습니다. Solidity는 EVM 기반 체인, TCP 기반 네트워크용 Hyperbee 등을 위한 것입니다.
HSTP 인터페이스는 HSTP에 연결된 모든 장치/네트워크 사이에 적용됩니다.
무한 확장 옵션: 모든 TCP 연결 장치는 HSTP를 통해 다른 TCP 연결 장치와 통신할 수 있습니다. 이는 모든 웹 브라우저가 다른 HSTP 노드를 제공하고 모든 웹 브라우저가 다른 웹 브라우저를 호출할 수 있음을 의미합니다.
균일한 애플리케이션 표현 인터페이스: HSTP는 애플리케이션 계층에서 구현해야 하는 메서드 집합인 균일한 인터페이스입니다.
이기종 네트워크: 네트워크의 모든 참가자는 네트워크의 다른 참가자와 리소스를 공유할 수 있습니다. 리소스는 CPU, 메모리, 스토리지, 네트워크 등이 될 수 있습니다.
웹 버전의 결합 블록체인 기술이 web3으로 불리는 이후로 사람들은 웹과 웹의 차이점에 대해 논의하기 시작했습니다. 비교는 증분수학교육의 사고방식에 대한 행위이다. 어느 것이 더 낫습니까? 둘 중 하나도 없습니다. 우리는 하나의 통일된 프로토콜로 대화할 수 있는 시스템을 구축해야 하며, 그 아래 서비스는 무엇이든 될 수 있습니다. HSTP는 그것을 목표로 하고 있습니다.
레지스트리 인터페이스 네트워크의 최상위 TLD 노드를 등록할 수 있도록 TCP 계층에서 사용하도록 설계된 레지스트리 인터페이스입니다. HSTP TCP 릴레이의 첫 번째 구현은 hstp/를 해결합니다.
레지스트리에는 인터페이스의 두 부분이 있습니다.
레지스트리 구현에는 두 개의 HSTP 노드가 필요합니다.
라우터 인터페이스
데모 목적으로 다음 견고성 예제를 사용합니다.
// 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(이름, 작업, 페이로드) 메소드를 통해 상위 라우터를 호출할 수 있는 액세스 권한을 갖습니다. 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를 테스트하고 리믹스를 시도해 볼 수 있습니다.
// 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
카가타이 칼리