今すぐお試しください: https://hstp.ai
npx hstp;
このプロトコルは、ハイパー サービス転送プロトコルのアプリケーション層の抽象化を開発することを目的としています。
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 サーバー、静的ファイル、または任意のチェーン内のコントラクトです。 1 つの HSTP ノードは、他の HSTP ノードを呼び出すことができます。したがって、ノードは相互に自由に呼び出し、システムの状態を確認し、相互に通信することができます。
HSTP はすでに言語レベルで人々によって人々のために実装されています。英語は地球上で主に採用されている言語です。 JavaScript はブラウザ環境で主に採用されている言語としても知られています。 Solidity は EVM ベースのチェーン用、Hyperbees は TCP ベースのネットワーク用などです。
HSTP インターフェイスは、HSTP 接続されたデバイス/ネットワーク間に適用されます。
無限スケーリング オプション: TCP に接続されているデバイスは、HSTP 経由で他の TCP に接続されているデバイスと通信できます。つまり、どの Web ブラウザも別の HSTP ノードのサービスを受け、どの Web ブラウザも他の Web ブラウザを呼び出すことができます。
均一なアプリケーション表現インターフェイス: HSTP は均一なインターフェイスであり、アプリケーション層によって実装する必要があるメソッドのセットです。
異種ネットワーク:ネットワークの参加者は、ネットワークの他の参加者とリソースを共有することができます。リソースには、CPU、メモリ、ストレージ、ネットワークなどが含まれます。
Web バージョンの結合ブロックチェーン技術が Web3 と呼ばれて以来、人々は Web 間の違いについて議論し始めました。比較することは、漸進的な数値システム教育の考え方に基づく行動です。どちらが優れているのか、どれも優れていません。私たちは、単一の統一プロトコルで通信できるシステムを構築する必要があり、その下にあるサービスは何でも構いません。 HSTPはそれを目指しています。
レジストリ インターフェイスTCP 層で使用するように設計されたレジストリ インターフェイスで、ネットワーク内のトップレベルの TLD ノードを登録できるようにします。 HSTP TCP リレーの最初の実装では、 hstp/が解決されます。
レジストリにはインターフェイスの 2 つの部分があります。
レジストリの実装には 2 つの 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(name, Operation, payload) メソッドによって親ルーターを呼び出すアクセス権を持ちます。 HSTP ノードは、this.query(payload) メソッドまたは this.mutation(payload) メソッドを呼び出すことによって子ノードを呼び出すこともできます。
HSTP ノードは、スマート コントラクト、Web ブラウザ、または 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
カガタイ・カリ