brunch

You can make anything
by writing

- C.S.Lewis -

by Kyle Aug 25. 2019

The Metanet(메타넷)

A Blockchain-based Internet(블록체인 기반 인터넷)

아래 PDF의 번역입니다.

https://nchain.com/app/uploads/2019/06/The-Metanet-Technical-Summary-v1.0.pdf


The Metanet

A Blockchain-based Internet


Technical summary

기술 요약






Copyright

This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/. The names of actual companies and products mentioned in this document may be trademarks of their respective owners. nChain Limited. accepts no responsibility or liability for any errors or inaccuracies that may appear in this documentation.


저작권

이 작업은 the Creative Commons Attoion-ShareAlike 4.0 International License에 따라 사용이 허가되었다. 이 라이선스 복사본을 보려면 http://creativecommons.org/licenses/by-sa/4.0/을 방문하십시오.

본 문서에 언급된 실제 회사 및 제품의 이름은 해당 소유자의 상표일 수 있다. nChain Limited. 는 본 문서에 나타날 수 있는 오류 또는 부정확성에 대한 책임이나 책임을 지지 않는다.






Contents

1 Introduction

2 The Metanet protocol

    2.1 Node and edge structure

    2.2 Domains, naming and locating

    2.3 Searching the Metanet

    2.4 Data insertion

    2.4.1 Using OP_RETURN alone

    2.4.2 Using OP_RETURN and OP_DROP

    2.4.3 Using multiple transactions

    2.5 The Metanet and the Internet

3 References


목차

1 소개

2 메타넷 프로토콜

    2.1 노드 및 에지 구조

    2.2 도메인, 이름 지정 및 위치 지정

    2.3 메타넷 검색

    2.4 데이터 삽입

    2.4.1 OP_RETURN 단독 사용

    2.4.2 OP_RETURN 및 OP_DROP 사용

    2.4.3 멀티 트랜잭션 사용

    2.5 메타넷과 인터넷

3 참조






1 Introduction

We propose a new protocol for a distributed peer internet - the Metanet - that uses an underlying blockchain to store data in a directed graph structure that can be easily searched and accessed by a browser. The protocol is designed not only to replicate much of the functionality of the internet but also to leverage many additional advantages associated with blockchain technology. It is a layer-2 solution that does not require any changes to the protocol or consensus rules of the underlying blockchain.


우리는 기본 블록체인을 사용하여 브라우저에서 쉽게 검색하고 액세스 할 수 있는 방향 그래프 구조에 데이터를 저장하는 분산된 피어 인터넷-메타넷-을 위한 새로운 프로토콜을 제안한다. 이 프로토콜은 인터넷의 많은 기능을 복제할 뿐만 아니라 블록체인 기술과 관련된 많은 추가적인 이점을 활용하도록 설계되었다. 기본 블록체인의 프로토콜이나 합의 규칙을 변경할 필요 없는 Layer-2 솔루션이다.



The Metanet protocol allows for the creation of a directed graph for data and content that is not necessarily related to payments themselves. In this specification, any internet-like or other content data is to be considered a part of the Metanet, as these data and their related uses are beyond the simple payment use case of the Blockchain.


메타넷 프로토콜은 반드시 지불 자체와 관련이 없는 데이터와 콘텐츠에 대한 방향 그래프를 생성할 수 있다. 이 문서에서 인터넷과 같은 또는 기타 콘텐츠 데이터는 메타넷의 일부로 간주된다. 이러한 데이터 및 관련된 사용은 블록체인의 단순한 지불 사용 사례를 벗어나기 때문이다.



In summary, we propose the structuring of transactions to be interpreted as Metanet nodes, and using digital signatures to create edges as links between them. This allows a graph to be reconstructed off-chain, by anybody, using on-chain data and a standardised protocol.


요약하자면, 우리는 메타넷 노드들로 해석되는 트랜잭션들의 구조화, 그리고 그들 간의 링크인 간선을 만드는 디지털 서명의 사용을 제안한다. 이렇게 하면 누구나 온체인 데이터와 표준화된 프로토콜을 사용하여 그래프를 오프체인으로 재구성할 수 있다.



This graph then allows on-chain data to be usefully related, handled and distributed by network peers in an internet-like model where trust is decentralised, transparency increased, and data integrity, authenticity and validity secured by the Blockchain and proof-of-work mining.


이 그래프는 온체인 데이터를 신뢰가 탈중앙화 되고, 투명성이 증가하며, 블록체인 및 작업증명 마이닝에 의해 데이터 무결성, 진실성 및 유효성이 보장되는 인터넷 유사 모델에서 네트워크 피어에 의해 유용하게 관련되고 처리되며 배포될 수 있도록 한다.





2 The Metanet protocol

The Metanet is a layer-2 protocol, designed such that any data can be stored immutably on a blockchain in a searchable and flexible manner. This is achieved primarily by structuring all Metanet data in a directed graph, governed by public key addresses.


메타넷은 어떤 데이터도 검색 가능하고 유연한 방식으로 블록체인에 불변하게 저장될 수 있도록 설계된 Layer-2 프로토콜이다. 이는 주로 모든 메타넷 데이터를 공개키 주소로 관리되는 방향 그래프로 구조화하여 달성된다.



The data involved in the Metanet protocol can be broadly categorised as:

메타넷 프로토콜에 관련된 데이터는 크게 다음과 같이 분류할 수 있다.



    I. The Metanet flag – a 4-byte umbrella prefix to be used in every Metanet transaction. This flag signifies that a transaction is to be considered a part of the Metanet graph. All other related subprotocols can be encompassed by the Metanet flag.


    I. 메타넷 플래그 – 모든 메타넷 트랜잭션에 사용할 4바이트 상위 접두사. 이 플래그는 트랜잭션이 메타넷 그래프의 일부로 간주됨을 의미한다. 메타넷 플래그가 다른 모든 관련 서브프로토콜들을 포함할 수 있다.


    II. Attributes – any relevant and useful metadata relating to content data. This can include indexing, permissioning and encoding information about given content data.


    II. 속성 – 콘텐츠 데이터에 대해 모든 관련 있고 유용한 메타데이터. 여기에는 주어진 콘텐츠 데이터에 대한 인덱싱, 권한 및 인코딩 정보가 포함될 수 있다.


    III. Content – the payload data of interest. This may consist of files, web-pages, links and any

such content data may be raw, compressed or encrypted as needed.


    III. 콘텐츠 – 관심 있는 실제(payload) 데이터. 이는 파일, 웹 페이지, 링크 및 기타 정보로 구성될 수 있으며, 이러한 콘텐츠 데이터는 필요에 따라 원시, 압축 또는 암호화될 수 있다.



The specific methods for inserting and structuring content and attribute data can be flexible and adapted to different sub-protocols and use cases. However, the common thread that defines the Metanet is that all insertion methods are made consistent with the node and edge structure specified in the over-arching Metanet protocol.


콘텐츠와 속성 데이터를 삽입하고 구조화하는 특정 방법은 유연할 수 있고 다양한 서브-프로토콜들과 사용 사례에 적응할 수 있다. 그러나, 메타넷을 정의하는 공통 스레드는 모든 삽입 방법이 대단히 중요한 메타넷 프로토콜에 명시된 노드 및 간선 구조와 일치하도록 만든다는 것이다.






2.1 Node and edge structure

We will now detail the protocol for structuring Metanet transactions that allows for addressing, permissions, and version control. The structure of this distributed peer internet is analogous to the existing internet.


이제 주소 지정, 권한 및 버전 제어를 허용하는 메타넷 트랜잭션 구조화를 위한 프로토콜을 자세히 설명하겠다. 이 분산된 피어 인터넷의 구조는 기존 인터넷과 유사하다.



The aim of this directed graph structure is to

이 방향 그래프 구조의 목적은


    (i) Associate related content in different transactions;

    (ii) Allow users to find content using human-readable keyword searches; and

    (iii) Build server-like structures within a blockchain.


    (i) 관련 콘텐츠를 다른 트랜잭션들에 연결하기;

    (ii) 사람이 읽을 수 있는 키워드 검색을 사용하여 콘텐츠를 찾도록 허용하기; 그리고

    (iii) 블록체인 내에 서버 같은 구조를 구축하기;



Our approach is to structure data associated with the Metanet as a directed graph. The nodes and edges of the Metanet graph correspond to


우리의 접근방식은 방향 그래프로 메타넷과 관련된 데이터를 구조화하는 것이다. 메타넷 그래프의 노드들과 간선들은


    Node - A transaction associated with the Metanet protocol.

    노드 - 메타넷 프로토콜과 관련된 트랜잭션.


    A node stores content. A node is created by including an OP_RETURN that is immediately followed by <Metanet Flag>.

    노드는 콘텐츠를 저장한다. 노드는 <메타넷 플래그>가 바로 다음에 이어지는 OP_RETURN을 포함시켜 생성된다.

    

    Each node is assigned a public key P_node, also in OP_RETURN. The combination of this public key and transaction ID uniquely specify the index ID_note:=H(P_node||TxID_node) of a Metanet node.

    각 노드에는 OP_RETURN에서도 공개키 P_node가 할당된다. 이 공개키와 트랜잭션 ID의 조합은 메타넷 노드의 색인 ID_node:= H(P_node||TxID_node)를 고유하게 지정한다.


     Edge - An association of a child node with a parent node.

    간선 - 부모 노드와 자식 노드의 연결.


    An edge is created only when a signature Sig P_parent appears in the input of a Metanet transaction, and therefore only a parent can give permission to create an edge. All nodes may have at most one parent, and a parent node may have an arbitrary number of children(Remark1).

    간선은 메타넷 트랜잭션의 input에 서명 Sig P_parent가 나타날 때만 생성되며, 따라서 부모만이 간선을 만드는 권한을 부여할 수 있다. 모든 노드는 최대 하나의 부모 노드를 가질 수 있으며, 부모 노드는 여러 자식 노드를 가질 수 있다.(주석1)


    It should be emphasised that creating an edge between two nodes is the creation of a logical link between them, and does not necessarily mean one spending an output of the other. This allows the creation of edges to remain as flexible as possible over time.

    두 노드 사이에 간선을 만드는 것은 두 노드 사이의 논리적 연결 생성하는 것임이 강조되어야 하며, 이는 한 노드가 다른 노드의 output을 사용하는 것을 반드시 의미하지 않는다. 따라서 간선의 생성은 시간이 지나도 최대한 유연하게 유지된다.



A valid Metanet node (with parent) is given by a transaction of the following form:

유효한 메타넷 노드(부모가 있는)는 다음 형식의 트랜잭션으로 제공된다.





Remark1 In the language of graph theory, the indegree of each node is at most 1, and the outdegree of each node is arbitrary.

주석1 그래프 이론의 언어에서, 각 노드의 진입차수는 최대 1이고, 각 노드의 진출차수는 임의다.




This transaction contains all the information needed to specify the index of the node and its parent

이 트랜잭션은 노드와 부모 인덱스를 지정하는 데 필요한 모든 정보를 포함한다.



Moreover, since the signature of the parent node is required, only a parent can create an edge to a child. This is a fundamental design element of the Metanet protocol, which intentionally facilitates more complex permissioning and addressing of content.


또한 부모 노드의 서명이 필요하므로 부모 노드만 자식 노드에 대한 간선을 생성할 수 있다. 이것은 메타넷 프로토콜의 기본 설계 요소로 콘텐츠의 보다 복잡한 권한 및 주소 지정을 의도적으로 촉진한다.



If the <TxID_parent>  field is not present in a node, or it does not point to a valid Metanet transaction, then the node is considered an orphan.


<TxID_parent> 필드가 노드에 없거나 유효한 메타넷 트랜잭션을 가리키지 않는 경우, 그 노드는 고아로 간주된다.



Additional attributes may be added to each node. These may include flags, names and keywords. We will discuss this in a following subsection.

각 노드에 추가 속성을 추가할 수 있다. 여기에는 플래그, 이름 및 키워드가 포함될 수 있다. 우리는 이 문제를 다음의 하위 섹션에서 논의할 것이다.



We have seen how the index of a node can be broken down into

노드의 인덱스가 어떻게 세분화할 수 있는지 살펴보았다.


    a) Public Key P_node, which we interpret as the address of the node; and

    b) Transaction ID TxID_node, which we interpret as the version of the node.

    a) 공개키 P_node, 노드의 주소로 해석; 그리고

    b) 트랜잭션 ID TxID_node로, 노드의 버전으로 해석



There are two interesting features that emerge.

두 가지 흥미로운 특징이 나타난다.



1. Version control - If there are two nodes with the same public key, then we interpret the node with transaction ID with greatest proof of work as the latest version of that node.

If the nodes are in different blocks, then this can be checked with the block height. For transactions in the same block, this is determined by the Topological Transaction Ordering Rule(TTOR).

1. 버전 제어 - 동일한 공개키를 가진 두 개의 노드가 있는 경우, 작업증명이 가장 큰 트랜잭션 ID를 가진 노드를 해당 노드의 최신 버전으로 해석한다.

노드가 서로 다른 블록에 있는 경우 이를 블록 높이로 확인할 수 있다. 동일한 블록의 트랜잭션의 경우 TTOR(Topology Transaction Ordering Rule)에 의해 결정된다.


2. Permissioning - A child of a node can only be created if the owner of the public key P_node signs the transaction input in the creation of a child node. Therefore P_node not only represents the address of a node but also the permission to create a child node. This is analogous to a standard bitcoin transaction – a public key is not only an address but also the permission associated with that address.

2. 사용 권한 - 공개키 P_node의 소유자가 자식 노드를 생성할 때 트랜잭션 input을 서명할 경우에만 자식 노드를 생성할 수 있다. 따라서 P_node는 노드의 주소뿐만 아니라 자식 노드를 생성할 수 있는 사용 권한도 나타낸다. 이는 표준 비트코인 거래와 유사하다. 공개키는 주소일 뿐만 아니라 해당 주소와 관련된 사용 권한이기도 하다.



    Note that since the signature of the parent node appears in a UXTO unlocking script it is validated through the standard miner validation process at the point when the transaction is accepted to the network. This means that the permission to create a child node is validated by the bitcoin network itself.

    부모 노드의 서명이 UXTO 잠금 해제 스크립트에 나타나므로 트랜잭션이 네트워크에 승인되는 시점에 표준 마이너 유효성 검사 프로세스를 통해 검증된다는 점에 유의하십시오. 즉, 자식 노드를 만들 수 있는 허가가 비트코인 네트워크 자체에서 검증된다는 뜻이다.



It is worth noting that standard Internet Protocol (IP) addresses are unique only within a network at a certain point in time. On the other hand, the index of a node in the Metanet is unique for all time and there is no notion of separate networks, which allows data to be permanently anchored to a single object ID_node.


표준 인터넷 프로토콜(IP) 주소는 특정 시점에 네트워크 내에서만 고유하다는 점에 주목할 필요가 있다. 한편, 메타넷에 있는 노드의 색인은 항상 고유하며 별도의 네트워크의 개념이 없으므로 데이터를 단일 객체 ID_node에 영구적으로 고정할 수 있다.



The node and edge structure allow us to visualise the Metanet as a graph (overleaf). This graph can be reconstructed off-chain by anybody with access to the relevant on-chain data.


노드와 간선 구조를 통해 메타넷을 그래프(오버리프, overleaf)로 시각화할 수 있다. 이 그래프는 관련 온체인 데이터에 액세스 할 수 있는 모든 사용자가 오프체인 상태로 재구성할 수 있다.











2.2 Domains, naming and locating

The hierarchy of the Metanet graph allows a domain-like structure to emerge. We interpret an orphan node as a top-level domain , a child of an orphan node as a sub-domain, a grandchild as a sub-subdomain etc., and a childless node as an end-point. See figure 2 above. Each top-level domain in the Metanet may be thought of as a tree with the root being the orphan node and the leaves being the childless nodes. The Metanet itself is a global collection of trees which form a graph.


메타넷 그래프의 계층 구조를 사용하면 도메인과 유사한 구조가 나타난다. 우리는 고아 노드를 최상위 도메인, 고아 노드의 자식은 서브-도메인, 손자는 서브-서브도메인, 자식 없는 노드는 끝점으로 해석한다. 위의 Figure 2를 참조하십시오. 메타넷의 각 최상위 도메인은 루트가 고아 노드이고 잎이 자식 없는 노드인 트리라고 생각할 수 있다. 메타넷 자체는 그래프를 형성하는 트리의 전역 모음이다.



The Metanet protocol does not stipulate that any node contains content data, but leaf (childless) nodes represent the end of a directed path on the data tree, and thus will be used generally to store content data. However, content may be stored at any node in the tree. Protocol-specific flags, included in nodes as attributes, may be used to specify the role of nodes in a data tree (disk space, folders, files or permissioning changes).


메타넷 프로토콜은 어떤 노드가 콘텐츠 데이터를 포함한다고 규정하지 않지만, 리프(자녀 없는) 노드는 데이터 트리의 방향 경로의 끝을 나타내며, 따라서 일반적으로 콘텐츠 데이터를 저장하는 데 사용될 것이다. 그러나 콘텐츠는 트리의 어느 노드에나 저장될 수 있다. 데이터 트리(디스크 공간, 폴더, 파일 또는 권한 변경)에서 노드 역할을 지정하기 위해 노드에 속성으로 포함된 프로토콜-특정 플래그를 사용할 수 있다.



Recall that the internet uses the Domain Name System (DNS) to associate human-readable names to Internet Protocol (IP) addresses. The DNS is in a sense decentralised, although in practice it is controlled by a small number of key players, such as governments and large corporations. Depending on your DNS provider the same name may take you to different addresses. This issue is inherent when mapping short human-readable names to computer generated numbers.


인터넷은 DNS(Domain Name System)를 사용하여 사람이 읽을 수 있는 이름을 IP(Internet Protocol) 주소에 연결했음을 기억하십시오. DNS는 실제로는 정부나 대기업과 같은 소수의 핵심 주체에 의해 관리되지만, 어떤 의미에서 분산되어 있다. DNS 제공자에 따라 동일한 이름인데 다른 주소로 이동할 수도 있다. 이는 사람이 읽을 수 있는 짧은 이름을 컴퓨터 생성 번호에 매핑할 때의 내재적인 문제다.



Let us assume that an equivalent distributed system exists that maps a human-readable top-level domain name to the decentralised index ID_root of a root node. In other words, there exists a 1-1 function k that maps human-readable names to Metanet root node indexes, for example


사람이 읽을 수 있는 최상위 도메인 이름을 루트 노드의 분산된 색인 ID_root에 매핑하는 동등한 분산 시스템이 존재한다고 가정하자. 즉, 사람이 읽을 수 있는 이름을 메타넷 루트 노드 색인에 매핑하는 1-1 함수 κ가 존재한다. 예를 들어,



The input to the left-hand-side is human-readable word, whereas the output on the right-hand-side is a hash digest, which will typically be a 256-bit data structure. Note that P_bobsblog and TxID_bobsblog are also not human readable in general. In the standard IP protocol this would be a map from www.bobsblog.com to the IP address of the corresponding domain within the network.


왼쪽의 입력은 사람이 읽을 수 있는 단어인 반면 오른쪽의 출력은 해시 다이제스트로서 일반적으로 256비트 데이터 구조가 될 것이다. P_bobsblog와 TxID_bobsblog도 일반적으로 사람이 읽을 수 없다는 점에 유의하십시오. 표준 IP 프로토콜에서 이것은 www.bobsblog.com에서 네트워크 내의 해당 도메인의 IP 주소까지의 맵이 될 것이다.



The map k should be interpreted as a measure to ensure backwards-compatibility of the Metanet with the internet in replicating the human-readability of DNS-issued domain names, but the naming and addressing scheme that provides the directed graph structure of the Metanet is not explicitly dependent on this map.


맵 κ는 DNS-발급 도메인 이름의 인간-가독성을 복제할 때 인터넷과의 메타넷의 역호환성을 보장하기 위한 조치로 해석되어야 하지만, 메타넷의 방향 그래프 구조를 제공하는 이름 지정 및 주소 지정 체계는 이 지도에 명시적으로 의존하지 않는다.



Possible existing forms of the mapping function k include the DNSLink(Remark2) system employed by IPFS or the OpenNIC service [2] but in general these sacrifice some element of decentralisation [3] in order to provide a map that is 1-1.


매핑 기능κ의 가능한 기존 형태는 IPFS 또는 OpenNIC 서비스[2]에 의해 채택된 DNSLink(주석2) 시스템을 포함한다. 그러나 일반적으로 이러한 것들은 1-1 맵을 제공하기 위해 분권화의 일부 요소[3]를 희생한다.


The purpose of this naming system is for a user to be able to identify a top-level domain in the Metanet by a memorable word (for example a company name) rather than a hash digest. This will also make searching for the domain faster as it is quicker to search for a keyword rather than a hash digest.


이 이름 지정 시스템의 목적은 사용자가 해시 다이제스트가 아닌 기억할 만한 단어(예: 회사 이름)로 메타넷의 최상위 도메인을 식별할 수 있도록 하기 위한 것이다. 이것은 또한 해시 다이제스트보다 키워드를 검색하는 것이 더 빠르기 때문에 도메인 검색을 더 빠르게 할 것이다.




Remark2 This mapping can be stored in an existing TXT record as part of the DNS. This is similar to a DNSLink in the Interplanetary File System (IPFS) [1].

주석2 이 매핑은 DNS의 일부로 기존 TXT 레코드에 저장할 수 있다. 이것은 IPFS(the Interplanetary File System)의 DNSLink와 유사하다.[1]







Vanity addresses

허영 주소

The public key used as the address of a Metanet node is not generally a human-readable object. However, it is possible to create human-recognisable public key addresses – vanity addresses P_vanity – which include a plaintext prefix that can be interpreted directly by a user.


메타넷 노드의 주소로 사용되는 공개키는 일반적으로 사람이 읽을 수 있는 개체가 아니다. 그러나 사용자가 직접 해석할 수 있는 일반 텍스트 접두사를 포함하여 사람이 인식할 수 있는 공개키 주소 - 허영 주소 P_vanity - 를 만들 수 있다.


An example of a vanity address with a desirable prefix is

P_bobsblog: bobsblogHtKNngkdXEeobR76b53LETtpyT

        Prefix: bobsblog

        Suffix: HtKNngkdXEeobR76b53LETtpyT


바람직한 접두사를 가진 허영 주소의 예는 다음과 같다.

P_bobsblog: bobsblogHtKNngkdXEeobR76b53LETtpyT

        접두사: bobsblog

        접미사: HtKNngkdXEeobR76b53LETtpyT



The combination of a chosen address P_vanity with a TxID that together form ID_node is also beneficial as it means there is no central issuer of domain names (TxIDs are generated by decentralised proof-of-work) and the names are recoverable from the blockchain itself. There are no longer the points of failure that exist within the internet DNS.


선택한 주소 P_vanity와 ID_node를 함께 형성하는 TxID의 조합은 도메인 이름의 중앙 발급자가 없고(TxID는 분산된 작업 증명에 의해 생성됨) 이름이 블록체인 자체에서 복구 가능하다는 것을 의미하기 때문에 또한 유익하다. 더 이상 인터넷 DNS 내에 존재하는 장애 지점이 없다.



Since Metanet domains already come with a permissions system (the public key) there is no need to issue a certificate to prove ownership. The use of a blockchain for this purpose has already been explored in namecoin [4] for example. In our case we do not need a separate blockchain for this as we are doing everything within one blockchain.


메타넷 도메인은 이미 권한 시스템(공개키)과 함께 제공되므로 소유권을 증명하기 위해 인증서를 발급할 필요가 없다. 예를 들어 이러한 목적의 블록체인 사용은 이미 네임코인 [4]에서 탐색되었다. 우리의 경우 하나의 블록체인 내에서 모든 것을 수행하므로 별도의 블록체인이 필요하지 않다.



Locating resources

리소스 위치 지정

Given that we have a map from a domain name to a node index we can build up a resource locator similar to that of a Uniform Resource Locator (URL) for the internet. We will call this a Metanet URL(MURL), and takes the form


도메인 이름에서 노드 색인으로의 맵이 있는 경우, 우리는 인터넷의 URL(Uniform Resource Locator)의 맵과 유사한 리소스 로케이터(resource locator)를 구축할 수 있다. 우리는 이것을 MURL(Metanet URL)이라고 부르고, 아래의 형식을 취할 것이다.



Each of the components of a URL – protocol, domain name, path and file – have been mapped to the structure of a MURL, making the object more user-intuitive and integrable with the existing structure of the internet.


URL의 각 구성 요소(프로토콜, 도메인 이름, 경로 및 파일)는 MURL 구조에 매핑되어 개체를 보다 사용자-직관적이고 기존의 인터넷 구조와 통합될 수 있게 되었다.



This assumes that each node has a ‘name’ associated with its public key (address) that is unique at the level within the domain tree. This name is always the right-most component of the MURL for a given node, analogous to the name of a particular file in a directory. If two nodes at the same level in the tree have the same name, then they will have the same public key and so the latest version (according to TxID) is taken.


이는 각 노드가 도메인 트리 내의 수준에서 고유한 공개키(주소)와 연결된 '이름'을 가지고 있다고 가정한다. 이 이름은 항상 디렉터리에 있는 특정 파일의 이름과 유사하게, 주어진 노드에 대한 MURL의 가장 오른쪽 구성 요소다. 트리에서 동일한 수준의 노드 2개가 동일한 이름을 가진 경우, 동일한 공개키를 가지므로 최신 버전(TxID에 따름)을 취한다.



It is envisaged that many protocols may be developed for locating on-chain resources, such as the ‘b://’ and ‘c://’ protocols already in use. In the same way that the <Metanet Flag> is an umbrella protocol flag for all on-chain Metanet data, it is envisaged that a generalised resource location protocol ‘mnp://’ for the Metanet can be used as an umbrella locator by linking domain names to node identifiers ID_node.


이미 사용 중인 'b://' 및 'c://' 프로토콜과 같이 많은 프로토콜이 온체인 리소스를 지정하기 위해 개발될 것으로 예상된다. <메타넷 플래그>가 모든 온체인 메타넷 데이터에 대한 상위 프로토콜 플래그인 것과 마찬가지로, 메타넷에 대한 일반화된 리소스 위치 프로토콜 'mnp://'는 도메인 이름을 노드 식별자 ID_node에 연결하여 상위 로케이터로 사용되어질 것이 예상된다.



This means, if we are able to associate an entity with an ID_node, then we can construct MURLs to locate resources simply by following a path down a Metanet tree of nodes associated with the root ID_node. This concept is generalised to support more sophisticated content-addressing or TxID-addressing as resource locators that can resolve such queries based on a node ID.

즉, 하나의 엔티티를 ID_node와 연결할 수 있다면, 루트 ID_node와 연관된 노드의 메타넷 트리를 따라 내려감으로써 리소스를 찾을 수 있는 MURL을 구성할 수 있다. 이 개념은 노드 ID를 기반으로 이러한 쿼리를 해결할 수 있는 리소스 로케이터로서 보다 정교한 콘텐츠 주소 지정 또는 TxID 주소 지정을 지원하기 위해 일반화되었다.






2.3 Searching the Metanet

We have defined our Metanet graph structure such that each node has a unique index ID_node and may also have a name attributed to it. This allows for content to be located using a MURL. In order to also enable quick search functionality, we allow for additional keywords to be attributed to a node.


우리는 각 노드가 고유한 색인 ID_node를 가지고 있고 또한 그에 따른 이름을 가질수 있도록 우리의 메타넷 그래프 구조를 정의했다. 이를 통해 MURL을 사용하여 콘텐츠를 찾을 수 있다. 빠른 검색 기능을 활성화하기 위해 노드에 추가 키워드를 부여할 수 있다.



The fixed attributes of a node are the index (ID_node) and index of parent node (ID_parent), each comprising two fields (P, TxID), and the optional attributes can include the name and keywords.


노드의 고정 속성은 각각 두 개의 필드(P, TxID)로 구성된 색인(ID_node)과 부모 노드의 색인(ID_parent)인데, 선택 가능한 속성은 이름과 키워드를 포함할 수 있다.



Node attributes:

{

    index: H(P_node||TxID_node);

    index of parent: H(P_parent ||TxID_parent); (NULL if orphan)

    name: ‘bobsblog’;

    kwd1: ‘travel’;

    kwd2: ‘barbados’;⋮

}



A practical method to search the Metanet is to first use a block explorer to trawl through the blockchain and identify all transactions with the Metanet flag, check that they are valid Metanet nodes, and if so record their indexes and keyword in a database. This database can then be used to efficiently search for nodes with desired keywords. Once the index of the node(s) with the desired keywords is found its content can be retrieved from the block explorer and viewed.


메타넷을 검색하는 실질적인 방법은 먼저 블록 탐색기를 사용하여 블록체인을 추적하고 메타넷 플래그를 사용한 모든 트랜잭션을 식별하고, 유효한 메타넷 노드인지 확인하고, 그렇다면 색인과 키워드를 데이터베이스에 기록하는 것이다. 이 데이터베이스는 원하는 키워드로 노드를 효율적으로 검색하는 데 사용될 수 있다. 원하는 키워드를 가진 노드의 색인이 발견되면 그 내용을 블록 탐색기에서 검색하여 볼 수 있다.



By way of example, consider the P_1 branch of figure 3, where the nodes corresponding to public keys P_0, P_1 and P_1,1 represent a home page, topic page and sub-topic page respectively. These nodes are given the names ‘bobsblog’, ‘summer’ and ‘caribbean’, and their attributes are shown below.


예를 들어 P_0, P_1 및 P_1,1에 해당하는 노드가 각각 홈페이지, 주제 페이지 및 하위-주제 페이지를 나타내는 Figure 3의 P_1 분기를 고려하십시오. 이러한 노드에는 '', ''bobsblog', 'summer' 그리고 'caribbean'이라는 이름이 붙으며, 그 속성은 아래에 나와 있다.


Home page node P_0

MURL: mnp://bobsblog

{

    index: H(P_0 ||TxID_0 );

    index of parent: NULL

    name: ‘bobsblog’;

    kwd1: ‘travel’;

    kwd2: ‘barbados’;

    ⋮

}


Topic page node P_1

MURL: mnp://bobsblog/summer

{

    index: H(P_1 ||TxID_1 );

    index of parent: H(P_0 ||TxID_0 );

    name: ‘summer’;

    kwd1: ‘travel’;

    kwd2: ‘barbados’;

    ⋮

}


Sub-topic page node P_1,1

MURL: mnp://bobsblog/summer/caribbean

{

    index: H(P_1,1 ||TxID_1,1);

    index of parent: H(P_1 ||TxID_1 );

    name: ‘caribbean’;

    kwd1: ‘travel’;

    kwd2: ‘barbados’;

    ⋮

}



In this example the leaf nodes P_1,1,1, P_1,1,2 and P_1,1,3 are given the names ‘beaches’, ‘nightlife’ and ‘food’ respectively and are used to store separate blog posts. The full domain structure is shown on the diagram overleaf (figure 3), including the MURL search path pertaining to each node in the tree.


이 예에서 잎 노드 P_1,1,1,P_1,1,2 및 P_1,1,1,3에는 각각 'beaches', 'nightlife', 'food'라는 이름이 부여되며, 별도의 블로그 게시물을 저장하는 데 사용된다. 전체 도메인 구조는 트리의 각 노드와 관련된 MURL 검색 경로를 포함하여 다이어그램 오버리프(Figure 3)에 표시되어 있다.



We note that the Metanet can also incorporate a content addressable network (CAN) by storing a hash of the content stored by a node transaction as an additional attribute. This means Metanet nodes may also be indexed and searched for by content hash.


우리는 메타넷이 노드 트랜잭션에 의해 저장된 콘텐츠의 해시를 추가 속성으로 저장함으로써 콘텐츠 주소 지정 가능 네트워크(CAN)도 통합할 수 있다는 점에 주목한다. 즉, 메타넷 노드도 콘텐트 해시에 의해 색인화하고 검색할 수 있다.







2.4 Data insertion

In section 2.1 we alluded to the fact that the Metanet protocol, which gives rise to a directed graph structure for on-chain content, can support many different methods for inserting data. For instance, in many cases it will be feasible to store content in a single transaction, but in others it may be sensible to split data across multiple transactions that are linked using the Metanet protocol.


2.1에서 우리는 온체인 콘텐츠에 대한 방향 그래프 구조를 제공하는 메타넷 프로토콜이 데이터를 삽입하는 여러 가지 다양한 방법을 지원할 수 있다는 사실을 암시했다. 예를 들어, 많은 경우에 단일 트랜잭션에 컨텐츠를 저장하는 것이 가능하겠지만, 다른 경우에는 메타넷 프로토콜을 사용하여 연결된 여러 트랜잭션에 걸쳐 데이터를 분할하는 것이 합리적일 수 있다.



Additionally, there may be users who wish to upload all their data in OP_RETURN payloads, whereas others may wish to upload content data in spendable outputs as: <Content> OP_DROP.


또한 모든 데이터를 OP_RETURN 페이로드에 업로드하고자 하는 사용자가 있을 수 있으며, 다른 사용자는 <Content> OP_DROP와 같이 사용 가능한 output에 컨텐츠 데이터를 업로드하기를 원할 수 있다.



As mentioned previously, all these methods are compatible with and supported by the Metanet protocol, given that the basic form of a Metanet node transaction is employed in all cases.


앞에서 언급한 바와 같이, 메타넷 노드 거래의 기본 형식이 모든 경우에 채용되는 경우, 이러한 모든 방법은 메타넷 프로토콜과 호환되고 지원된다.


Recall that the transaction shown in figure 1 specifies the minimum information required in a transaction for it to be considered part of the Metanet and to be interpretable according to the directed graph structure. Provided the elements shown in that diagram are present, any method for embedding the content data and its attributes may be used.


Figure 1에 표시된 트랜잭션이 메타넷의 일부로 간주되고 방향 그래프 구조에 따라 해석될 수 있도록 거래에서 필요한 최소 정보를 명시하고 있음을 상기하십시오. 그 다이어그램에 표시된 요소들이 존재한다면, 콘텐츠 데이터와 그 속성을 포함하기 위한 모든 방법을 사용할 수 있다.


We provide here (non-exhaustively) some examples of how data might be embedded in ways that are consistent with the Metanet protocol. In what follows, the essential features of the Metanet protocol are highlighted in blue.


우리는 여기에서 메타넷 프로토콜과 일치하는 방식으로 데이터가 어떻게 내장될 수 있는지에 대한 몇 가지 예를 제공한다. 이어지는 내용에서 메타넷 프로토콜의 필수 기능이 파란색으로 강조 표시된다.




2.4.1 Using OP_RETURN alone

The diagram below shows a Metanet node containing all content data within a single OP_RETURN output.


아래 다이어그램은 단일 OP_RETURN output 내에 모든 컨텐츠 데이터를 포함하는 메타넷 노드를 보여준다.


The file name and file type are included as optional attributes in the OP_RETURN output, followed by the actual payload of file data itself.


Any set of attributes and schemas may be included depending on the file type or use case to encode the relevant metadata, and the file data may be split into several discrete chunks within the output itself.


파일 이름과 파일 형식은 OP_RETURN output에 선택적 속성으로 포함되며, 그 다음에 파일 데이터의 실제 페이로드 자체가 포함된다.


관련 메타데이터를 인코딩하기 위해 파일 형식이나 사용 사례에 따라 어떤 속성 및 스키마 집합을 포함할 수 있으며, 파일 데이터는 output 자체 내에서 여러 개의 개별 청크로 분할될 수 있다.




2.4.2 Using OP_RETURN and OP_DROP

The diagram below shows a Metanet node in which the file data has been split across two spendable outputs in OP_DROP statements. This insertion method may be used if a large file is to be embedded, or simply if the user wishes to create fewer provably unspendable outputs.


아래 다이어그램은 OP_DROP 문에서 사용 가능한 두 output에 파일 데이터가 분할된 메타넷 노드를 보여준다. 이 삽입 방법은 큰 파일을 포함하거나, 사용자가 사용 불가능한 output을 줄이려는 경우에 사용할 수 있다.


In this scenario, we have assumed it is sensible to include all the metadata and attributes within the OP_RETURN output, which then acts as a ‘header’ for the file.


이 시나리오에서, 우리는 파일의 '헤더' 역할을 하는 OP_RETURN output 내에 모든 메타데이터와 속성을 포함하는 것이 합리적이라고 가정했다.


However, it is just as plausible that additional attributes could be included in the spendable outputs if, for example, there were attributes that applied to <file_data 1> but not <file_data 2>.


그러나, 예를 들어, <file_data 1>에는 적용되지만 <file_data 2>에는 적용되지 않는 속성이 있는 경우, 추가 속성이 사용 가능한 output에 포함할 수 있다는 것도 타당하다.


Note that we have even included an additional identifier <sub-protocol identifier> to signify the use of a specific hypothetical data-insertion protocol. We see that the sub-protocol fits within the Metanet protocol itself, and can be considered an overlay protocol on top of the umbrella protocol that is the Metanet.


특정 가상 데이터 삽입 프로토콜의 사용을 나타내기 위해 추가 식별자 <서브-프로토콜 식별자>까지 포함되었다는 점에 유의하십시오. 우리는 서브-프로토콜이 메타넷 프로토콜 그 자체에 들어맞으며, 메타넷인 상위 프로토콜의 상단에 오버레이 프로토콜로 간주될 수 있다는 것을 안다.


The only condition on the form of this node is still that it adheres to the basic Metanet node transaction format. This means that the Metanet flag, the node public key P_node and the parent transaction identifier TxID_parent appear first in the OP_RETURN output, and that the public key and signature Sig P_parent of the parent node appear in the input.


이 노드의 형태에 대한 유일한 조건은 여전히 기본 메타넷 노드 트랜잭션 형식을 고수한다는 것이다. 즉, Metanet 플래그, 노드 공개키 P_node 및 부모 트랜잭션 식별자 TxID_parent가 OP_RETURN output에 먼저 나타나며, 부모 노드의 공개키와 시그니처 Sig P_parent가 input에 나타나는 것을 의미한다.



2.4.3 Using multiple transactions

It is possible to use any of the previous insertion techniques whilst also splitting data across multiple transactions, such that the two transactions are related according to the Metanet protocol.

The diagram below shows a pair of child transactions, Tx1 and Tx2, which both have the same parent according to the Metanet, and are therefore sibling nodes.


두 트랜잭션은 메타넷 프로토콜에 따라 관련되도록 여러 트랜잭션 간에 데이터를 분할하는 동시에 이전의 삽입 기법을 사용할 수 있다.

아래 다이어그램은 메타넷에 따라 부모 노드가 동일한 형제 노드, 자식 트랜잭션 쌍  Tx1과 Tx2를 보여준다.

These two transactions have a common parent, whose signature therefore appears in both their respective inputs. It is important to remember that this signature does not need to spend an output of the parent node itself, it simply has to be a valid signature from the parent public key.

In the case where the input of a child does in fact spend an output of its parent, the Metanet edge created is exactly the same as if the child were to spend an arbitrary output using the parent public key P_parent to sign.


이 두 거래는 공통의 부모가 있으며, 따라서 부모의 서명은 각각의 input에 나타난다. 이 서명은 부모 노드 자체의 output을 사용할 필요가 없으며, 부모 공개키의 유효한 서명이어야 한다는 것을 기억해야 한다.

실제로 자식의 input이 부모의 output을 사용하는 경우, 생성되어진 메타넷 간선은 마치 자식이 부모 공개키 P_parent를 사용하여 서명하는 임의의 output을 사용하는 것과 동일합니다.




2.5 The Metanet and the Internet

The Metanet is a protocol for structuring on-chain content data in a way that facilitates the use of the Blockchain as the base-layer for a distributed peer internet. The following table gives an analogy between the Metanet protocol and the Internet Protocol:

메타넷은 블록체인을 분산된 피어 인터넷의 기본 계층으로 쉽게 사용할 수 있도록 온체인 콘텐츠 데이터를 구조화하는 프로토콜이다. 다음 표는 메타넷 프로토콜과 인터넷 프로토콜 사이의 유사점을 보여준다.

The principle here is to ensure the Metanet can provide at least the same functionalities as the existing internet, in addition to the inherent benefits and new use cases that come from the blockchain that underlies the Metanet.


여기서의 원칙은 메타넷을 기초하는 블록체인에서 발생하는 본질적인 혜택과 새로운 사용 사례 외에 최소한 기존 인터넷과 동일한 기능을 제공할 수 있도록 하는 것이다.





3 References


작가의 이전글 메타넷(Metanet)이 온다.

매거진 선택

키워드 선택 0 / 3 0
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari