
애플리케이션 계층 프로토콜 프레임워크로, 신뢰 기반 종단간 암호화 통신을 통해 이기종 네트워크에서 균일한 서비스 검색 및 라우팅을 TCP, HTTP, 블록체인 계층에서 가능하게 합니다.
지금 시도해보세요: https://hstp.ai
npx hstp;
이 프로토콜은 하이퍼 서비스 전송 프로토콜(Hyper Service Transfer Protocol)을 위한 애플리케이션 계층 추상화를 개발하는 것을 목표로 합니다.
HSTP는 HSTP의 본질상 재귀적입니다. 이 프로토콜은 스스로를 인터페이스로 구현합니다. 모든 인터넷 연결 장치에는 HSTP 인스턴스가 존재합니다. 그렇기 때문에 채택이 필요하지 않습니다. HSTP는 이미 인터넷 위에서 실행되고 있습니다. 우리는 이제서야 이기종 네트워크 상에서 프로토콜을 통해 프로토콜을 설명하는 데 성공했습니다. 그러므로 웹2, 웹3 등과 비교하지 마십시오.
HSTP는 이기종 네트워크를 위한 애플리케이션 표현 인터페이스입니다.
HSTP 인터페이스는 네트워크의 다른 노드와 통신할 수 있도록 일련의 메서드를 구현하도록 강제합니다. 따라서 서비스, 클라이언트 및 다른 노드들은 신뢰 기반 엔드-투-엔드 암호화 방식으로 서로 통신할 수 있습니다. 노드 해석은 제가 작성한 최단 경로 해석 알고리즘에 기반합니다.
이야기 시간!
간단한 개요
한 명의 엄마와 한 명의 아빠가 행복하게 사는 상황을 생각해 봅시다. 그들에게 아기가 생겼어요! 갑자기 엄마가 질병을 치료하기 위해 정기적으로 약을 먹어야 했습니다. 그 약은 아기에게 독입니다. 아기가 울고 있고, 엄마는 아기를 도울 수 있는 유일한 신뢰하는 사람인 아빠에게 전화를 겁니다. 하지만 아빠는 가끔 집에 있을 수 없고, 아기에게 먹일 무언가를 해야 합니다. 아빠는 한 우유 배달부가 싼 가격에 신선하고 품질 좋은 우유를 판매한다는 소식을 듣습니다. 아빠는 우유 배달부와 이야기해 보기로 하고, 배달부는 아빠에게 우유를 전달하고, 아빠는 엄마에게 우유를 가져다줍니다. 엄마는 아기에게 우유를 줍니다. 아기는 이제 행복해지고 잠이 듭니다. 엄마는 아기가 행복한 것을 봅니다.
가족은 외부에서 우유를 산 적이 없었으며, 아기를 위해 처음으로 우유를 사는 것입니다: (엄마는 우유 배달부의 번호를 모르고, 배달부는 집 주소를 모릅니다)
단계별로:
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는 인터페이스로, 애플리케이션 계층에서 반드시 구현해야 하는 일련의 메서드 집합입니다. 이 인터페이스는 네트워크의 다른 노드와 통신하는 데 사용됩니다. 이 인터페이스는 이기종 네트워크에서 사용하도록 설계되었습니다.
HSTP는 네트워크에 연결된 장치/환경의 모든 계층에서 구현되어야 합니다.
HSTP 노드는 TCP 서버, HTTP 서버, 정적 파일 또는 모든 체인의 컨트랙트가 될 수 있습니다. 하나의 HSTP 노드는 다른 HSTP 노드를 호출할 수 있습니다. 따라서 노드들은 자유롭게 서로 호출하고, 시스템 상태를 확인하며, 서로 통신할 수 있습니다.
HSTP는 이미 언어 수준에서 사람들에 의해 사람들을 위해 구현되었습니다. 영어는 지구상에서 가장 널리 채택된 언어입니다. JavaScript는 브라우저 환경에서 가장 널리 채택된 언어로 알려져 있습니다. Solidity는 EVM 기반 체인용, hyperbees는 TCP 기반 네트워크용 등입니다.
HSTP 인터페이스는 HSTP에 연결된 모든 장치/네트워크 간에 적용되어야 합니다.
무한 확장 옵션: TCP에 연결된 모든 장치는 HSTP를 통해 다른 TCP 연결 장치와 통신할 수 있습니다. 즉, 모든 웹 브라우저는 다른 HSTP 노드의 서버이며, 모든 웹 브라우저는 다른 웹 브라우저를 호출할 수 있습니다.
통일된 애플리케이션 표현 인터페이스: HSTP는 통일된 인터페이스로, 애플리케이션 계층에서 반드시 구현해야 하는 일련의 메서드 집합입니다.
이기종 네트워크: 네트워크의 모든 참여자는 다른 참여자와 자원을 공유할 수 있습니다. 자원은 CPU, 메모리, 스토리지, 네트워크 등이 될 수 있습니다.
웹 버전의 결합 블록체인 기술이 web3라고 불리면서 사람들은 웹 간의 차이점에 대해 논의하기 시작했습니다. 비교는 증분 숫자 체계 교육의 사고 방식에서 비롯된 행동입니다. 어느 것이 더 나은가? 둘 다 아닙니다. 우리는 하나의 통일된 프로토콜로 통신할 수 있는 시스템을 구축해야 하며, 그 아래의 서비스는 무엇이든 될 수 있습니다. HSTP는 이를 목표로 합니다.
레지스트리 인터페이스 레지스트리 인터페이스는 TCP 계층에서 사용하기 위해 설계되었으며, 네트워크에서 최상위 tld 노드를 등록할 수 있도록 합니다. HSTP TCP 릴레이의 첫 번째 구현은 **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);
// 트리를 위아래로 탐색합니다.
// 주어진 연산에 대해 가장 가까운 경로를 찾으려고 시도합니다.
// 경로가 HSTP 노드에 등록되어 있으면 자식 노드에서 응답합니다.
// 노드에 해당 경로가 없으면 부모에게 요청합니다.
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";
// 온체인 서비스를 위한 상태 비저장 하이퍼 서비스 전송 프로토콜.
// EIP-4337이 최종 단계에 도달하면 구현할 예정입니다.
// 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";
// 온체인 서비스를 위한 상태 비저장 하이퍼 서비스 전송 프로토콜.
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;
}
// 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";
// 온체인 서비스를 위한 상태 비저장 하이퍼 서비스 전송 프로토콜.
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;
}
// 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