经由对等网络存储、检索和通信数据的计算机实现的系统和方法
文献发布时间:2023-06-19 11:55:48
技术领域
本发明大体上涉及对跨电子网络,尤其是对等网络(诸如区块链网络等)的数据通信和交换的数据改进。它涉及存储、访问、检索和处理,尤其涉及区块链上此类与数据相关的活动。本发明特别适合于但不限于在以类似于由网站和网页提供的方式、但是将区块链用作基础机制或平台而不是网络服务器来处理数据时使用。因此,本发明提供了用于数据处理和传送的安全、高效、以密码方式实施的替代基础设施。
背景技术
在本文档中,我们使用术语“区块链”来包括所有形式的电子的基于计算机的分布式账本(ledger)。这些包括基于共识的区块链和交易链技术、许可的和未被许可的账本、共享账本及其变型。尽管已经提出并开发了其他区块链实现方式,但是区块链技术最广为人知的应用是比特币账本。尽管为了方便和说明的目的在本文中可能提及比特币,但是应当注意,本发明不限于与比特币区块链一起使用,并且替代的区块链实现和协议落入本发明的范围内。术语“用户”在本文中可以指人或基于处理器的资源。如本文所使用的,“比特币”包括从比特币协议衍生的协议的所有版本和变型。
区块链是一种点对点的电子账本,其被实现为基于计算机的去中心化的分布式系统,该系统由区块组成,而区块又由交易组成。每个交易是一种数据结构,该数据结构对区块链系统中参与者之间的数字资产控制权的转移进行编码,并包括至少一个输入和至少一个输出。每个区块包含前一个区块的哈希值,使得区块被链接在一起来创建所有交易的永久、不可更改的记录,这些交易自其开始就已经被写入区块链。交易包含嵌入到其输入和输出中的被称为脚本的小程序,这些小程序指定如何以及由谁可以访问交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。
为了将交易写入区块链,必须对其进行“验证”。网络节点(矿工)执行工作以确保每笔交易有效,而无效交易则被网络拒绝。安装在节点上的软件客户端通过执行其锁定脚本和解锁脚本来对未花费的交易(unspent transaction,UTXO)执行该验证工作。如果锁定脚本和解锁脚本的执行评估为真(TRUE),则该交易有效,并将该交易写入区块链。因此,为了将交易写入区块链,必须:i)由接收交易的第一节点验证该交易-如果交易经过验证,则该节点将其中继到网络中的其他节点;ii)将该交易添加到由矿工建造的新区块中;以及iii)该交易被挖掘,即,被添加到过去交易的公共账本中。
尽管区块链技术因使用加密货币实现方式而被广泛了解,但数字企业家已经开始探索使用比特币所基于的加密安全系统以及可以存储在区块链上的数据这两者以实现新系统。如果区块链可以用于不限于加密货币领域的任务和过程,那将是非常有利的。这样的方案将能够利用区块链的好处(例如,事件的永久性、防篡改记录、分布式处理等),同时在其应用中具有更多用途。
一个这样的关注领域是使用区块链来存储、共享、访问和控制用户之间的数据。如今,这经由因特网来实现,其中,服务器托管网站和页面,用户通常通过搜索引擎访问这些网站和页面,以访问所需的数据。
但是,一些观察者已经开始设想使用区块链来解决因特网的某些缺点,例如,由中心化的各方控制大量数据和内容。例如,参见“Life After Google:The Fall of Big Dataand the Rise of the Blockchain Economy(谷歌之后的生活:大数据的衰落和区块链经济的崛起)”,George Gilder,Gateway Editions,2018年7月,ISBN-10:9781621575764和ISBN-13:978-1621575764。
发明内容
因此,期望提供一种布置,该布置使得能够有利地利用区块链的分布式、不可变和永久性的性质在区块链上存储、处理、检索、搜索和/或共享这样的数据。现在已经设计出这种改进的方案。
本公开的实施例至少提供了用于实现区块链方案以及用于在其上或从其存储、处理、搜索和/或检索数据的替代的高效和安全的技术。实施例还至少提供了用于在计算节点之间存储、处理、检索、传送、搜索和/或共享数据的替代的区块链实现的技术基础设施。因为本发明使得能够以新的方式使用区块链网络并将其用于提供改进的技术结果,所以本发明提供了一种改进的区块链实现的网络。
实施例还提供了用于在技术上不同且改进的计算平台上安全控制对数字资源的访问的方案,该计算平台包括诸如区块链和区块链协议等对等网络。
本发明在所附权利要求书中被限定。
根据本发明,可以提供一种计算机实现的方法/系统。本发明可以被布置为跨诸如区块链等对等网络存储、检索和/或共享数据。数据可以跨一个或多个区块链交易被存储。常规上或可替代地,本发明可以被称为搜索系统。它可以被布置为与区块链搜索协议一起或与之结合操作。如所描述的,区块链搜索协议可以实质上与本文所述的“元网”协议相关。
在本文中,“共享”可以包括向节点或用户提供、发送、传达、传输数据的部分或提供对数据的部分的访问。术语“处理”可以解释为表示与交易或其相关联数据有关的任何活动,包括生成、传输、验证、访问、搜索、共享提交到区块链网络和/或标识。
该系统可以被布置为使得(人类或机器)用户能够搜索、访问、查看、检索和/或以其他方式处理在至少一个区块链交易(Tx)中提供或由其引用的数据的部分。因此,区块链交易可以包括数据的部分,或者对数据的部分的引用。对数据的部分的引用可以是数据存储的位置的指针、地址或其他指示符。数据的部分可以是任何类型的数据或数字内容,例如,计算机可执行的项目、文本、视频、图像、声音文件等。数据的部分可以称为“内容”。数据的部分或对其的引用可以为处理后的形式。例如,它可以是数据的部分的哈希摘要。数据可以存储在区块链上或区块链外(即“链外”)。
优选地,该系统被布置为基于交易索引(TX
如本领域技术人员将容易理解的那样,每个区块链交易(T
优选地,该系统包括搜索工具(search facility),该搜索工具设置在区块链搜索系统内(即,本地或内部的);或被布置为与区块链搜索系统进行接口和/或通信(即,在搜索系统外部)。
优选地,该系统包括至少一个加密货币钱包。优选地,至少一个钱包被布置为生成、存储和/或处理分层确定性密钥。至少一个加密货币钱包可以被布置为在受信任的执行环境(TEE)中存储至少一个加密密钥和/或至少一个令牌。
优选地,该系统包括:解压缩组件,该解压缩组件被布置为如果数据的部分被压缩则解压缩该数据部分;重组组件;和/或解密组件,该解密组件被布置为如果数据部分被加密,则解密该数据部分。重组组件可以被布置为重组从区块链上的多于一个的交易中检索到的数据的各部分。
优选地,该系统包括至少一个呈现组件,其被布置为以听觉和/或视觉形式向用户呈现该数据部分。
优选地,搜索系统包括用于输入或生成搜索路径以标识区块链上的至少一个交易(T
i)交易索引(TX
ii)与交易(T
优选地,属性中的至少一个是与交易相关联的助记符;和/或至少一个属性为空。
优选地,(搜索)系统被布置为与加密货币钱包或其他资源通信,以促进处理、存储和/或生成加密密钥、区块链交易和/或数字签名。
优选地,该系统被布置为存储交易索引(TX
优选地,该系统还被布置为在访问数据部分之前将对加密货币的部分的控制转移到目的地。有利地,这使系统能够将区块链用作存储/检索/搜索机制以及支付和控制机制,而不必为不同的活动使用单独的基础架构。
优选地,该系统还被布置为向区块链上的对等方发送对该数据部分的请求;和/或从区块链上的对等方接收该数据部分。这使得能够创建基础架构,该基础架构涉及使用第三方与区块链进行交互并向用户提供所需的数据和/或代表用户将数据写入区块链。
优选地,在区块链上提供多个交易,每个交易具有或提供数据的一部分或引用数据的一部分。
优选地,多个交易(T
与逻辑父代交易(LPTx)关联的父代公钥(PPK),其通过自由决定的(discretionary)交易ID(DTxID)标识;以及
使用父代公钥(PPK)生成的签名。
这使得能够在交易及其嵌入的数据之间构建逻辑层次结构。因此,可以高效、安全且快速地处理区块链上的多个关联的或逻辑链接的交易。逻辑关联的交易可能不以连续的区块高度存储在区块链上,但其可以被轻松且安全地标识和/或访问。
优选地,该系统还被布置为使用时间锁定机制来控制对数据部分的访问。这提供了对区块链上数据的访问的更大程度的控制。
本发明还提供一种对应的系统,该系统被布置和配置为执行本文描述的方法的任何实施例的步骤。它可以包括计算机实现的系统,该系统包括:
处理器;以及
包括可执行指令的存储器,该可执行指令由于被处理器执行而使得系统执行本文所述的计算机实现的方法的任何实施例。
本发明还提供了其上存储有可执行指令的非瞬时性计算机可读存储介质,该可执行指令由于被计算机系统的处理器执行而使得计算机系统至少执行本文所述的方法的任何实施例。
本发明的方法/系统的一些实施例可以包括如下所述的一个或多个特征,特别是在标题为“浏览器/钱包应用”的部分中的特征。
因此,本公开可以提供用于经由区块链存储、搜索、标识、通信和/或访问数据的改进的方案。实施例提供了用于跨电子网络,特别是跨对等区块链网络的数据通信和交换的改进。
附图说明
本发明的这些和其他方面将从本文描述的实施例变得显而易见并参考这些实施例而阐明。现在将仅通过示例的方式并参考附图来描述本发明的实施例,附图中:
图1示出了体现本发明的区块链交易,在该区块链交易中,数据被存储在多个输出中;
图2示出了体现本发明的区块链交易,在该区块链交易中,数据被存储在输入中。
图3示出了体现本发明的一系列区块链交易,在这些区块链交易中,数据被存储在多个区块链交易的输出上;
图4示出了体现本发明的区块链交易,该区块链交易传送加密货币支付以允许借助于原子交换来访问数据;
图5示出了体现本发明的区块链交易,用于兑换图4的交易的支付;
图6示出了在体现本发明的区块链交易中由参与者所保存的秘密值,该区块链交易发布令牌以允许借助于原子交换来访问数据;
图7和图8示出了体现本发明的区块链交易,用于发布令牌以允许借助于原子交换来访问数据;
图9和图10示出了体现本发明的区块链交易,用于兑换借助于图7和图8的交易发布的令牌;
图11和图12示出了用于访问由图9和图10的交易交换的秘密的区块链交易;
图13提供了根据本发明实施例的元网图结构的图示。
图14示出了根据本发明实施例的用于包括MURL搜索路径的域“bobsblog”的元网图树的图示。
图15示出了根据本发明的一个示例的浏览器钱包以及如何在应用的不同组件之间分割其核心功能的说明性实施例的示意图。
图16提供了示出如何在本发明实施例的基础设施内执行搜索内容的图。
图17示出了根据本发明实施例的本地全副本对等方和全局全副本对等方之间的说明性交互。
图18示出了元网树(或图),以供参考下面描述的说明性用例使用。
图19示出了流程图,该流程图说明了下面提供的说明性用例所体现的过程。
图20是示出其中可以实现各种实施例的计算环境的示意图。
具体实施方式
术语“比特币”在本文中仅出于方便目的而使用,并且旨在包括所有加密货币/区块链协议,包括但不限于:衍生自比特币协议的所有变型以及其他区块链的任何替代协议。在本文档的其余部分中,确定本发明实施例的操作的协议将被称为“元网协议”。
根据本发明的实施例,术语“内容”、“数字内容”和“数据”在本文中可以互换使用,以指代存储在区块链交易中的、经由区块链交易引用或者以其他方式访问的数据。数据是经由区块链传输、通信或存储的附加的/自由决定的数据,与作为交易代码本身的一部分的基础区块链协议所需的数据相反。
概述
如上所述,已经认识到需要一种改进的和/或替代的基础设施,以在计算节点之间以及由计算节点存储、写入、访问和查看数据。使用区块链技术固有的优势(例如,不可变记录、以密码方式实施的控制和访问、内置支付机制、公开检查账本的能力、分布式架构等)将是有利的。但是,从许多技术角度来看,构建“区块链实现的互联网”具有挑战性。
这些挑战可能包括但不限于:如何定位网络中数据的特定部分;如何保护和控制对数据的访问,以使只有授权方才能获得访问权限;如何以点对点方式将数据从一方传送到另一方;如何安排数据,使得其可以在逻辑上关联但仍存储在网络内的不同位置中,以及随后如何将其从不同位置进行组合以提供总体和增强的结果;如何以分层方式提供和/或存储数据;如何允许具有不同计算平台的用户和各方访问所需的数据;如何跨(潜在地全球)计算网络存储、提供和共享数据,而不依赖或不需要大型存储服务器和集中式数据控制器。
本发明以这样的方式提供了这种改进的方案:该方式在某些方面类似于因特网,但是使用与现有技术中已知的完全不同的硬件组件和软件组件的平台,以完全不同的方式实现其结果。根据本发明的实施例,存储互联网/网络数据并将其提供给最终用户的服务器被驻留在区块链网络上的区块链交易所替换。为了实现这一点,必须设计出若干创新。这些将在以下各部分中进行描述。
将数据插入到区块链“元网”中参照图1,示出了体现本发明的区块链交易,在该区块链交易中,要存储在区块链上的第一数据存储在交易的一个或多个第一输出中,并且表示第一数据的属性的第二数据存储在交易的一个或多个第二输出中。第一数据的一个或多个第一部分<内容1>存储在交易的可花费输出中。表示第一数据的相应的属性的数据<属性1>和<属性2>以及指示正在根据元网协议存储数据的标志存储在交易的第二不可花费输出中。术语“不可花费”用于指示交易的至少一个第一和/或第二输出可以包括脚本操作码(OPRETURN),该脚本操作码用于将输出标记为对于随后用作后续交易的输入是无效的。
将数据的内容和属性部分分别地存储在交易的单独输出中是有利的。
图2示出了体现本发明的区块链交易,在该区块链交易中,要存储在区块链上的第一数据<内容1>存储在交易的输入中。元网标志以及属性数据<属性1>和<属性2>以类似于图1所示的布置的方式存储在交易的不可花费输出中。
希望能够将以下数据插入到区块链中
a)元网标志
b)属性
c)内容
内容是要存储在区块链上的数据,元网标志是4字节的前缀,其充当与元网协议有关的任何数据的标识符,而属性包含有关内容的索引、许可和编码信息。这可以包括但不限于数据类型、加密和/或压缩方案。这样的属性通常也称为元数据。为了避免与交易元数据混淆,将避免在本文档中使用该术语。
以下技术可以用于将该数据嵌入到比特币脚本中:
1.OP_RETURN-在这种方法中,所有数据(属性和内容)在可证明的不可花费交易输出的锁定脚本中都放置在OP_RETURN之后。
使用该运算符的输出脚本示例如下:
UTXO0:OP_RETURN
2.带有OP_DROP的OP_RETURN-在这种情况下,OP_RETURN包含属性,而内容在可花费交易脚本(锁定或解锁)中存储在OP_DROP之前。内容可以在交易输入和输出中被分割成多个数据包。但是,将数据插入到交易输出中是有利的,因为仅输出脚本可以在比特币协议中被签署。如果将数据插入到交易输入中,则OP_MOD可以代替矿工验证用作对数据的校验和,以确保其有效性。例如,可以执行32位OP_MOD运算并检查其是否等于预先计算的值。
在这种情况下,属性可以包含有关如何重组内容数据包的信息。另外,将重组的数据包H(内容1+内容2)的哈希提供为属性使得能够验证推荐的重组方案已被使用。
图1中示出了实现第二数据插入方法的交易。为简单起见,该交易仅包括插入其输出中的内容,该输出由其单个输入签署。使用图2所示的该方法来使用OP_DROP语句也可以将内容插入到另外的输入中。
如果内容很大,则将其在多个交易上进行分割可能是有利的。这样的布置在图3中示出。图3示出了体现本发明的成对的区块链交易,在该成对的区块链交易中,要存储在区块链上的第一数据<内容>被分割成两个组块<内容组块1>和<内容组块2>,这两个组块随后可以重组为<内容>=<内容组块1>||<内容组块2>,其中,运算符“||”将两个组块的内容数据串连。该串连运算符可以被任何所需的按位或类似的分段的二进制运算符代替。然后这两个组块<内容组块1>和<内容组块2>存储在单独的区块链交易的相应的可花费输出中,而与内容数据的属性有关的数据存储在区块链交易的相应的不可花费输出中。再次,属性可以包含有关重组方案的信息。例如,内容可以是原始数据、可执行程序或HTML网页。另外,内容1可以包括指向内容2在区块链上的位置的指针,其以与网页内的嵌入式HTML链接相同的方式起作用。
应当注意,两个交易将采用同一公钥P(和ECDSA签名)作为输入,使得尽管<内容组块1>和<内容组块2>存储在分别具有TxID1和TxID2的不同交易中,但是它们可以通过同一公钥P相关。
此处,矿工执行的交易验证过程用于在存储此数据时获得优势。这是因为交易输出中的所有数据将由公钥P的所有者在至少一个交易输入中签署(如果存在SIGHASH|ALL标志),并且该签名将在所有矿工执行的交易验证过程中被检查。
这样确保
·数据完整性-若数据损毁,则CHECKSIG操作将失败。
·数据真实性-P的所有者已可证明地见证并签署数据。
这对于在多个交易上被分割的内容尤其有利,因为P的输入签名提供了数据的分割分量之间的可证明链接,如上文参考图3中所示的布置所描述的。
确保数据真实性的另一个方式是使用Rabin签名,其可用于签署数据本身而非整个消息。这可以是有利的,因为签署者无需签署出现数据的每个单独的交易,且签名可在多个交易中重复使用。
Rabin签名可以在脚本中容易地验证。通过将Rabin签名验证插入在OP_DROP命令之前,可以将这些并入在上文的情况(2)中,即
应注意,这无法在上文的情况(1)中进行,因为不论如何,包含OP_RETURN的脚本皆失败,因此无法实现验证。
数字签名是比特币协议的基本部分。其确保区块链上记录的任何比特币交易均已由被发送比特币的合法持有者授权。在标准比特币P2PKH交易中,使用椭圆曲线数字签名算法(ECDSA)签署交易消息。然而,ECDSA签名通常应用于整个交易。 存在比特币区块链的一些用例,其中,来自网络外部的参与者可能想要为任意数据类型提供签名,然后网络参与者可使用该数据类型。通过使用Rabin数字签名,可对任何数据段进行签署-即使其来源于比特币区块链外部,然后被放置在一或多个交易中。 现在将示出可如何通过利用Rabin密码系统的代数结构直接以比特币脚本签署及验证数据。 Rabin数字签名 Rabin数字签名算法 背景数学 定义-整数mod p 整数模p被定义为如下集合
费马小定理 令p为质数。然后对于任何整数a,适用以下条件 a 欧拉准则 令p为质数。当且仅当满足下式时,r是二次余数mod p
模平方根(p=3 mod 4) 令p为质数,使得p≡3 mod 4。那么对于任何满足欧拉准则的整数r,如果a为整数,则使得 a 然后,a存在形式为下式的解
中国剩余定理 给定成对的互质正整数n x≡a x≡a
x≡a 具有唯一的解模数N=n 当且仅当 x≡r mod n x≡r mod n Rabin数字签名算法 Rabin数字签名算法可以如下描述: 对于任何消息m,令H为具有k个输出位的抗冲突哈希算法。 为了生成密钥,选择质数p和q,每个质数的位长近似为k/2,使得p≡3 mod 4,q≡3mod 4并计算乘积n=p·q。私钥为(p,q),公钥为n=p·q。 为了签署消息m,签署者选择填充U,使得H(m||U)满足
签名S使用以下公式计算
消息m的签名是对(S,U)。验证可以通过对于给定的m、U和S,检查下式来简单地进行 H(m||U)≡S 当且仅当在范围0,…,n-1内存在整数λ,使得 H(m||U)+λ·n=S 因子λ可以安全地包括在签名中,以提供组合(S,λ,U)。 Rabin签名方案的有利特征如下: a)签名生成在计算上是昂贵的,而签名的验证在计算上是容易的。 b)签名的安全性仅依赖于整数分解的难度。因此,Rabin签名在本质上是不可伪造的(与RSA不同)。 c)哈希函数值H(m||U)必须具有与公钥n相似的大小。 脚本中的验证简单明了,因为它只需要对给定签名进行平方,执行模归约,然后检查结果是否等于H(m||U)。
令p、q为互质数,且n=p·q。通过中国剩余定理,可以示出: 当且仅当 S S 则 S 使用以下等式
可以示出: S 所以
其中,已经假设H(m||U)满足欧拉准则。通过类似的计算,还可以示出: S
需要少量算术和堆栈操纵操作码来验证Rabin签名。考虑以下形式的兑换脚本 OP_DUP OP_HASH160 其中,n是签名者的公钥。当且仅当具备如下的输入时,这将评估为真 其中,m是任意消息,(S,λ,U)是有效的Rabin签名。可替代地,如果使用上面的等式1检查了Rabin签名,则兑换脚本由下式给出: OP_DUP OP_HASH160 在这种情况下,当且仅当具备如下的输入时,这将评估为真 S> 在这两个兑换脚本中,均使用了3072位哈希投影函数“FUNC_HASH3072”。对于给定的消息/填充串连,使用如下脚本生成FUNC_HASH3072哈希投影: OP_SHA256{OP_2OP_SPLIT OP_SWAP OP_SHA256 OP_SWAP}(x11) OP_SHA256 OP_SWAP OP_SHA256{OP_CAT}(x11)
因特网数据由JavaScript和常见的文件类型(例如,文本文件(SML、HTML等)、视频文件(MPEG、M-JPEG等)、图像文件(GIF、JPEG等)和音频文件(AU、WAV等)组成,例如,如在以下链接中更详细地描述的: 在将较大文件大小嵌入于区块链上之前,可使用若干现有的编码方案中的一个对其进行压缩。诸如游程长度及霍夫曼(Huffman)编码等无损数据压缩算法可用于若干应用,包括ZIP文件、可执行程序、文本文档及源代码。 取决于具体的输入数据,存在许多不同的算法。苹果无损及自适应变换声编码可用于压缩音频文件,PNG及TIFF用于压缩图形文件,而电影文件可使用许多无损视频编译码器中的一个进行压缩。可使用属性内的标志来指示数据内容的任何压缩。例如,属性中用于LZW无损编码方案的标志将为
内容的所有者可选择在将内容嵌入在区块链上之前保护内容。这确保了在未获取到必要许可的情况下无法查看内容。 存在许多公认的用于加密数据(明文或其他数据类型)的技术。这些技术可归类为非对称加密或对称加密。 椭圆曲线密码术(ECC)是非对称的,因为其依赖于公钥-私钥对。其为最安全的密码系统之一,并且通常用于诸如比特币等加密货币中。对于ECC密码术,Koblitz算法可用于加密数据。 在对称方案中,单个密钥用于既加密又解密数据。高级加密标准(AES)算法被视为由这样的秘密作为种子产生的最安全的对称算法之一,例如如以下文献中更详细地描述的:C.Paar及J.Pelzl,“Understanding Cryptography(理解密码术)”中的第4章,Springer-Verlag Berlin Heidelberg,第2版,2010年,第87至118页。 当加密存储于区块链上的数据时,使用与基础区块链相同的密码系统存在优势。在比特币中,这为非对称密码术中的ECC密钥对的secp256k1惯例,及对称密码术中的SHA-256哈希函数。这些优势为: -加密的安全级别与其上存储有数据的基础系统相同。 -存储加密数据所需的软件架构将具有较小的代码库。 -钱包中的密钥管理可用于交易和加密/解密两者。 -由于相同的密钥可用于加密和以加密货币的支付,因此效率更高,因此所需的密钥更少。这也减少了存储空间。 -交换/购买解密数据的能力可能需要更少的通信信道。 -由于用于加密和交易的密钥是相同的数据结构,因此提高了安全性,因此减轻了对于特定密钥类型的针对性攻击。 -可以使用基础加密货币购买密钥。 为了说明的目的,描述可以如何使用Koblitz算法以使用ECC来加密数据。
给定ECC密钥对P 假设期望使用Koblitz方法加密明文消息′hello world′。这是逐字符进行的。如下加密及解密第一字符′h′。 1.字符′h′映射到secp256k1曲线上的点。这可以通过使用ASCII惯例将明文字符映射到8位数字来实现。然后通过将基点G乘以该数字来计算曲线上的点。在本示例中,′h′映射到ASCII中的104,椭圆曲线点由P 2.然后使用公钥P 3.私钥S
将数据存储在区块链上具有支付机制构建在系统中的明显优势。支付可用于购买 -解密数据以便查看/使用 -在特定地址处插入数据的许可 在这两种情况下,买方均使用加密货币(例如,比特币)来购买授予其进行某事的许可的秘密。该秘密可以是哈希原像或私钥。 进行这种购买的高效且安全的方式是使用原子交换。这将安全通信信道保持为最小,并确保向卖方支付且向买方揭露秘密,或确保没有任何事件发生。 除了以加密货币支付外,使用访问令牌购买许可也很方便。这是买方拥有的其可使用以便进行购买的秘密值(通常为哈希原像)。买方可事先大量购买这样的访问令牌,然后在其实际上希望使用许可时进行激活。 现在将参考图4和图5描述如何执行原子交换。
假设爱丽丝是秘密的所有者。该秘密可以是已知哈希摘要的哈希原像,或已知公钥的私钥。假设鲍勃希望使用比特币来从爱丽丝购买该秘密。描述称为原子交换的机制,该机制使此交易能够发生。在爱丽丝获得支付的比特币且向鲍勃揭露秘密、或者没有任何事件发生的意义上,这是原子的。 该方法如下: 爱丽丝拥有公钥/私钥对P 爱丽丝拥有作为已知哈希摘要H(X)的原像X或已知公钥P 他们同意爱丽丝以比特币价格将该秘密卖给鲍勃。 在此之前,鲍勃必须设置交易以在区块外将临时密钥k 现参考图4, 1.鲍勃将通过以下兑换脚本R(示意性地编写)锁定的比特币转移到爱丽丝: 对于哈希原像: R=[Hash Puzzle H(X)][CheckSig P 这迫使原像X在兑换脚本的输入中暴露。 对于私钥: R=[Private Key Puzzle P 这迫使私钥S 2.由于爱丽丝知道她的秘密(X或S 作为可选的安全特征,爱丽丝和鲍勃可使用他们的公钥P 如果爱丽丝决定不花费其资金,则可在程序中引入时间锁定的退款以防止鲍勃的资金被爱丽丝锁定。
假设存在如上文所描述的相同情况,但并非在使用时以加密货币支付爱丽丝的秘密,而是鲍勃希望兑换提前购买的访问令牌,以交换秘密。 爱丽丝和鲍勃必须遵循的程序类似于先前章节中描述的情况,但是使用了类似的原子交换的序列。该过程存在两个阶段;令牌发布和令牌兑换。 阶段1:令牌发布 令牌发布阶段实际上是鲍勃单次购买令牌。例如,考虑如下场景:爱丽丝具有10个不同的秘密X 首先,鲍勃从仅其已知的秘密种子值生成10个令牌的集合。这些令牌是通过种子的顺序的哈希创建以形成哈希链,其中,每个令牌被计算为: T 爱丽丝和鲍勃现在各自具有10个秘密值,这些秘密值可在哈希谜题中揭露以用于例如兑换令牌。然而,为了发布这些令牌,他们也必须分别生成秘密初始化值I I I 应注意的是,爱丽丝的初始化值(initialiser)简单地为无特定含义的随机整数,但是鲍勃的初始化值应为其第一令牌的哈希T 现在爱丽丝和鲍勃可以同意以10个加密货币单位的价格购买10个令牌。这些令牌的购买可以通过多种方式进行,此处使用原子交换进行说明。原子交换通过爱丽丝及鲍勃分别广播图7和图8中所示的交易而开始,在这两个交易中输出均需要两个哈希谜题的解和有效签名。 一旦区块链中出现两个交易,爱丽丝及鲍勃就可以共享其共享初始化值I 由于该原子交换,爱丽丝接收购买10个令牌的支付并且两个初始化值秘密被揭露。应注意的是,此处仅鲍勃的秘密I 阶段2:令牌兑换 在未来的某一时刻,鲍勃想要兑换其第一令牌T 为了兑换其令牌,鲍勃应广播图9中所示的交易,该交易的输出用两个哈希谜题锁定。当爱丽丝看到此交易时,她广播如图10中所示的她自己的类似交易,该交易的输出用相同的两个哈希谜题锁定。两个参与者现在可以交换其秘密T 用于兑换令牌的该原子交换的完成向鲍勃揭露爱丽丝的第一秘密X
上面已经解释了可以如何通过在交易内提供数据而将数据插入到区块链中。现在呈现用于以逻辑方式结构化这些交易的协议,该逻辑方式允许对节点寻找、许可及内容版本控制。该分布式对等元网的结构类似于现有的因特网。 应注意的是,这为不修改基础区块链的协议或共识规则的“tier-2”协议。 此处描述的结构的目标为: (i)将不同交易中的相关内容相关联,以实现对数据的搜索、标识和访问 (ii)允许使用人类可读的关键字搜索来标识内容,以提高搜索速度、准确性和效率 (iii)在区块链中构建和模拟类似于服务器的结构 我们的方法是将与元网相关联的数据结构化为定向图。该图的节点及边缘对应于: 节点-与元网协议相关联的交易。节点存储内容。(术语“内容”和“数据”在本文档内可互换使用)。 节点通过包括由就在 所使用的哈希函数应符合本发明将与例如比特币的SHA-256或RIPEMD-160一起使用的基础区块链协议。 边缘-子节点与父节点的关联。 边缘在签名SigP 应注意,边缘为元网协议的态样(aspect)且其自身并不是与基础区块链相关联的交易。 由具有以下形式的交易给出有效元网节点(具有父代):
该交易包含指定以下的节点及其父代的索引所需的所有信息: ID ID 此外,由于需要父节点的签名,因此仅父代可创建到子代的边缘。如果 附加属性可以被添加到每个节点。这些属性可包括标志、名称及关键字。稍后在本文档中讨论这些属性。 如所示出的,节点(交易)的索引可以划分为 a)公钥P b)交易IDTxID 这种结构化产生了两个有利的特征: 1.版本控制-如果存在具有相同公钥的两个节点,则我们将具有交易ID的节点解译为该节点的最新版本,该交易ID具有最大工作量证明。如果节点在不同的区块中,则这可以通过区块高度来进行检查。对于相同区块中的交易,这通过拓朴交易排序规则(TTOR)来确定。 2.许可-仅当公钥P 应注意,由于父节点的签名出现在UXTO解锁脚本中,因此在网络接受交易时通过标准矿工验证过程进行验证。这意味着创建子节点的许可由比特币网络自身验证。 值得注意的是,标准因特网协议(IP)地址仅在某一时间点时在网络内是唯一的。另一方面,元网中的节点的索引在所有时间都是唯一的,并且不存在单独的网络的概念,这允许数据永久性地锚定至单个对象ID 节点和边缘结构允许将元网可视化为图形,如图13所示。
元网图的层次结构允许出现丰富的类似域的结构。我们将孤儿节点解译为顶级域(TLD),将孤儿节点的子代解译为子域,将孙代解译为子子域等,并且将无子节点解译为端点(end-point)。参见图13。 域名被解译为ID 元网协议不规定任何节点包含内容数据,但叶(无子)节点表示数据树上的定向路径的端部,因此将通常用于存储内容数据。然而,内容可存储在树中的任何节点处。节点中作为属性包括的协议特定的标志可用于指定数据树中的节点的作用(磁盘空间、文件夹、文件或许可改变)。 前面已经提到因特网使用域名系统(DNS)来将人类可读的名称关联到因特网协议(IP)地址。DNS在某种意义上是去中心化的,尽管在实践中其由少量的关键参与者(例如,政府和大公司)控制。取决于你的DNS提供商,同一名称可将你带至不同的地址。在将人类可读的短名称映像到计算机生成的数字时,该问题是固有的。 我们假定存在将人类可读的顶级域名映射到根节点的去中心化索引ID κ(′bobsblog′)=ID 向左侧的输入是人类可读的词,而右侧的输出为哈希摘要,其将通常为256位数据结构。应注意,P 映射κ应被解译为用于确保在复制DNS发布的域名的人类可读性时元网与因特网的向后兼容性的措施,但提供元网的结构的命名及寻址方案并不明确地取决于该映射。 映射函数的可能的现有形式包括由星际文件系统(IPFS)或OpenNIC服务(https://www.openic.org)采用的DNSLink系统。该映射可作为DNS的一部分存储在现有的TXT记录中。这类似于IPFS中的DNSLink,请参见https://docs.ipfs.io/guides/concepts/dnslink/。然而,大体而言,这些牺牲了一些去中心化的元素以便提供作为1-1的映射,请参见
用作元网节点的地址的公钥不是人类可读的对象。这可能使人类用户的搜索、引用及输入活动易于出错且很慢。然而,可以创建人类可识别的公钥地址-虚荣地址P 创建这种地址的难度取决于所需前缀的字符长度。这意味着人类可识别的虚荣地址可用作节点地址,该节点地址仅依赖于所有者的创建工作量而非中心发布。对于给定前缀,由于后缀中剩余的字符,存在许多不同的虚荣地址,因此许多节点地址可共享公共前缀,同时仍保持唯一性。 具有所需前缀的虚荣地址的示例为: P 前缀:bobsblog 后缀:HtKNngkdXEeobR76b53LETtpyT 上面的虚名地址可用于感测检查从名称‘bobsblog’到节点索引ID 选择的地址P 由于元网域已经提供了许可系统(公钥),因此不需要发布凭证以证明所有权。已经例如在域名币( 相比于现有技术,这显著地减小了本发明所需要的资源(硬件、处理资源及能量)的量。就装置和系统组件的布置而言,其也提供了完全不同的架构。 该命名系统的优势在于,用户能够通过可记住词语(例如,公司名称)而不是哈希摘要标识元网中的顶级域。这也使搜索域更快,因为搜索关键字而不是哈希摘更快。这也减小了输入错误,因此提供了对于区块链存储的数据的改进的搜索工具。 鉴于具有从域名到节点索引的映射,我们可建立类似于因特网的统一资源定位符(URL)的资源定位符。我们将此称为元网URL(MURL),且呈如下形式 MURL='mnp:'+′//domain name′+′/path′+′/file′。 URL的每个的分量-协议、域名、路径及文件-已被映射到MURL的结构,从而使对象更具用户直观性,并且使其能够与因特网的现有结构集成。 这假设每个节点具有与其公钥(地址)相关联的名称,该公钥在域树内的层级处是唯一的。该名称始终为给定节点的MURL的最右侧分量。如果树中的同一层级处的两个节点具有相同的名称,则其将具有相同的公钥,因此采用最新版本。 下表给出了元网协议与因特网协议之间的类比:
表:因特网协议和元网协议之间的类比概要
我们已经限定了示例性实施例的元网图结构,使得每个节点具有唯一的索引并且可以具有归属于其的名称。这允许使用MURL定位内容。为了也实现快速搜索功能,我们允许将附加的关键字归属于节点。 节点的固定属性为索引及父节点的索引,可选属性为名称和关键字。 节点属性
在一个示例中,用于搜索元网的实用方法可为首先使用区块探测器在区块链中搜查(trawl),并通过元网标志标识所有交易,检查其是否为有效元网节点,并且若如此,则在数据库或其他存储资源中记录其索引和关键字。然后可以使用该数据库通过所需关键字有效地搜索节点。一旦通过所需关键字找到节点的索引,则其内容可以从区块探测器提取并且被查看。 举例来说,考虑图14的分支P 主页节点P
主题页节点P
子主题页节点P
在该示例中,叶节点P 我们应注意,元网也可以通过将由节点交易存储的内容的哈希存储为附加的属性而并入内容可寻址的网络(CAN)。这意味着元网节点也可以被索引并且通过内容哈希被搜索。 上文所描述的命名及寻址方法提供了优于现有技术的众多技术优势,包括: 1.公钥地址-系统使用与区块链相同的公钥-私钥对来分配节点地址。这意味着相同的密钥集合用于加密货币资金的管理及内容数据的许可两者。这提供了有效且安全的方案。 2.去中心化的域-域名的发布通过包括仅可由工作量证明生成的TxID 3.图结构-命名及寻址架构指定可以从包括元网节点的区块链数据的子集构造的图。该设计使用有序结构将因特网的复杂性映射到区块链,使得区块链完全复制其功能性及可扩展性,同时保持安全性。
前面已经描述了,在元网协议中,所有数据均直接存在于区块链本身上。在本部分中,我们提供说明性计算机应用的实施例,其可以有效地访问、显示存储在区块链上的元网数据并与存储在区块链上的元网数据交互,本文中为方便起见仅称为“浏览器钱包”。 我们将首先讨论浏览器钱包如何与分布式对等因特网接口的核心组件及功能性,之后在该部分的剩余部分中提供较详细的描述。
浏览器钱包是旨在允许最终用户与区块链上的元网基础设施交互的应用。该应用应允许探索式搜索元网图以找到嵌入于树中的特定内容。另外,浏览器钱包将处理内容的检索、解密、重组及高速缓存(可选的)。 浏览器钱包应用将通过支持本地(或外部)钱包而将这些元素与加密货币支付机制组合。浏览器钱包将包括被组合为单个计算机应用的以下核心元素。 区块链搜索引擎-支持第三方搜索引擎通过各种索引(包括ID 显示窗口-解包(unpack)由全副本的区块链对等方返回到浏览器的内容的软件。这涵盖了访问令牌的解密、重组、高速缓存和兑换。 加密货币钱包-区块链的货币的专用密钥管理。可以是应用本地的或被授权以与外部钱包(软件或硬件)通信及同步。能够写入标准区块链交易以及新的元网节点交易。可调解访问密钥及访问令牌的链上购买。 分层的确定性密钥管理可同时用于加密货币公钥和元网节点地址。 访问密钥/令牌钱包-用于购买的访问密钥或令牌的专用密钥管理。可以使用加密货币钱包接收购买的密钥或令牌,但不具有对密钥或令牌的许可。密钥或令牌可对用户隐藏以允许稍后到期。这可以通过使用受信任的执行环境来实现。可通过与区块链同步并查询当前区块高度来保证定时访问。 功能性 元网浏览器钱包的规范确保应用的以下功能。 1.分层密钥管理-用于控制资金及管理元网树(图)的密钥利用相同的分层确定性密钥基础设施,从而减小用户维护其元网内容的密钥记录的负担。 2.指向外部加密货币钱包-授权及与外部(非应用本地)钱包同步的能力通过移除作为故障点的浏览器钱包而允许附加的安全性。 该应用可以写入区块链交易,并需要容纳密钥的外部钱包的签名,从而将这种责任委托给单独的软件或硬件。 3.元网内容的搜索-浏览器钱包可以支持和查询第三方搜索引擎,该引擎的功能可以包括爬网、编索引、服务及评级全局数据库中的元网节点交易数据。可以构造包含元网协议标志的OP_RETURN交易的数据库。参见BitDB2.0- 搜索引擎可以为浏览器钱包提供节点索引,这允许找到数据。 4.读写数据到区块链-除了使用搜索引擎和全节点为浏览器提供内容外,对加密货币钱包的支持还允许将内容直接从浏览器钱包写入元网。 5.数据的解压缩和解密-浏览器钱包处理解密密钥,并且可以原位对元网内容执行解压缩。 6.高速缓存节点身份(ID 7.旁路网络服务器-在给定节点索引的情况下,浏览器钱包可查询点对点(P2P)区块链网络的任何全副本成员以获取位于节点处的内容。因为元网存在于链上,所以任何全副本对等方必须具有节点及其内容的本地副本。 这意味着用户的浏览器钱包只需要查询单个对等方,这可以直接完成而无需中间网络服务器。 图15示出了浏览器钱包的示意图,以及如何在应用的不同组件之间分割其核心功能。
搜索引擎-现有技术 现有技术中已知的搜索引擎(SE)依赖于强大的网络爬虫(crawlers)以根据用户查询来对网络内容进行定位、编索引及评级。(相同的基本原理可以扩展至对元网进行爬网的第三方区块链SE)。 SE通过查询中的关键字搜索标识相关的HTML元标签及内容。随后对爬网结果进行索引,其中,分析及编录任何嵌入的图像/视频/媒体文件。然后在考虑用户的位置、语言及装置的情况下,以编程方式对索引中最相关的结果进行评级。 典型的SE应具有以下功能性: 1.爬网-标识因特网数据并通过诸如域名、链接页面及相关关键字等相关元数据进行爬网。通过现有的内容发现新的因特网内容并且也针对任何相关信息进行爬网。 2.编索引-分析并编录内容数据。该信息存储在数据库中。 3.服务和评级-以与用户查询的相关性的顺序评级内容索引。 区块探测器 最接近因特网搜索引擎(SE)的区块链类似物是区块链探测器,其有时被称作‘区块探测器’或‘区块链浏览器’。区块链探测器是使能够在高层级上对区块链进行用户友好查询的网络应用,并且类似于网络浏览器起作用,但连接到区块链而非因特网。参见 在大多数情况下,这些探测器允许将区块(由区块标头的哈希进行索引)、交易(由TxID进行索引)、地址及未花费交易输出(UTXO)作为输入并对其进行搜索。许多探测器也提供其自身的应用编程接口(API)以用于检索原始交易及区块数据。参见 区块探测器虽然能力不同,但大体上对于以用户易于摘录的形式编录交易并显示其基本信息-例如,交易的货币值、币的确认和历史以及地址-是有用的。许多探测器(例如,Bitcoin.com 近来,用于基于区块链数据运行网络应用的基本区块链探测器存在许多扩展。这些应用(例如,Memo.cash 然而,使用区块链探测器存在两个重要问题,本发明的实施例解决了这些问题: 1.通用性-当前不存在用于浏览存储在交易中的内容数据的行业标准。内容数据是指不涉及用于创建及保证基础区块链的协议的任何数据。 2.关键字搜索-存储在交易中的内容数据需要可由人类可读的关键字检索。这通常不是当前的区块探测器的功能,因为当前的区块探测器用于查询交易的基于协议的性质(例如,区块高度、TxID及地址),而非将关键字作为搜索输入。(然而,如果词语直接包括在交易的脚本中,则例如Blockchair等一些探测器可搜索这些词语)。 重要的是,如上所述,本发明的强大命名及寻址结构促进且实现了构造与本领域中所已知的相比更复杂的区块链探测器。
浏览器钱包应用与第三方搜索引擎通信以发现节点身份(ID 元网搜索引擎第三方维护挖掘至区块链中的可由元网协议标志标识的所有元网交易的数据库。该数据库可以通过包括ID 已经存在诸如Bit DB 通过具有仅专用于元网数据的数据库,可节约效率。不同于Bit DB,该数据库将不存储与所有交易相关联的数据,而仅存储包含元网标志的那些数据。诸如如MongoDB的非关系数据库等某些数据库在存储元网的图结构时可能更有效。这将允许更快查询、更低存储空间,及更有效地关联元网域内的相关内容。 图16示出了当用户搜索元网基础设施内的内容时,浏览器钱包如何与第三方搜索引擎进行交互。重要的是,应注意,与因特网对比,无需路由,因此本发明在效率、速度、处理及所需资源方面提供重要优势。 过程如下: 1.最终用户在浏览器钱包搜索栏中输入关键字。 2.浏览器钱包将关键字查询发送给第三方SE。 3.SE针对其数据库检查关键字并返回包含相关内容的任何元网节点的ID 4.浏览器钱包使用节点标识和与其关联的域名来构造MURL。 5.浏览器钱包从具有区块链全副本的任何网络对等方请求属于指定节点的内容。 6.网络对等方将请求的内容提供给浏览器钱包。因为对等方具有区块链的副本,所以其必定也具有内容的副本,因此仅作出一个请求,且从不将请求转发给其他网络对等方。 要强调的是,第三方SE仅负责对元网节点的属性记录进行索引并对其进行维护,而存储于节点上的原始内容数据则由具有区块链的全副本的网络对等方(例如,全副本对等方、矿工、档案馆)存储。
浏览器钱包应用模拟任何典型的网络浏览器都应提供的相同的前端能力。这些功能包括但不限于: 1.搜索-提供对搜索引擎(SE)的访问权以定位内容。 2.检索-与服务器通信以促进使用已知协议(例如,超文本传输协议(HTTP))传送内容。 3.解译-解析原始代码(例如,以JavaScript)并执行。 4.渲染-高效显示已解析的内容,供最终用户查看。 5.用户界面(UI)-为用户提供与内容进行交互的直观界面,包括动作按钮和用于用户输入的机制。 6.存储-用于高速缓存因特网内容、cookies等的本地临时存储容量,以改善对内容的重复访问。 在某些实施例中,负责充当网络浏览器的浏览器钱包应用的软件组件能够对嵌入在区块链中的元网内容执行上述功能,该元网内容是使用其属性可搜索的(使用SE)并且可检索的(从对等方)。
根据本发明的某些实施例,浏览器钱包应用的网络浏览器软件组件能够处理需要对给定元网内容执行的所有操作。大体而言,存在需要执行的许多这样的操作,但我们假定至少以下操作由应用使用元网协议及基础设施执行。 重组-在元网内容需要被分割并插入到多个单独的节点交易中的情况下,应用将从所有相关节点请求内容并重构原始内容。可以使用每个节点的属性中的附加标志编码碎片化内容的排序及结构。 解压缩-在内容数据以压缩形式存储在区块链上的情况下,应包括向浏览器钱包指示已使用哪个标准压缩方案的标志。应用将根据该标志解压缩内容。 解密-在内容被加密的情况下,应使用标志来表示加密方案。应用将从其解密密钥钱包(如下文所讨论的)定位密钥,并根据使用的加密方案解密内容数据以供使用。 在对内容数据执行这些操作时,标志可用于向浏览器钱包表示需要执行给定操作。这适用于任何其他操作,为此合适的
本地文件及cookies的高速缓存是典型网络浏览器的共同且重要的功能。浏览器钱包应用也以类似的方式使用本地存储,以便可选地保存涉及关注内容的ID 元网解决了高速缓存因特网数据的固有问题,该因特网数据是可变的且可由网络浏览软件根据提供商进行改变或删减。在高速缓存元网数据时,用户可始终容易地验证数据与最初作为不可变记录包括在区块链上时处于同一状态。
确定性密钥Dk是从单个“种子”密钥初始化的私钥(请参见,AndreasM.Antonopoulos,“Mastering Bitcoin(精通比特币)中的第5章,O’Reilly第2版,2017年,第93-98页”)。种子是充当主密钥的随机生成的数字。哈希函数可用于将种子与其他数据(例如,索引号或“链码”)组合(请参见,HD钱包-BIP-32/BIP-44),以得出确定性密钥。这些密钥彼此相关,并且可以通过种子密钥完全恢复。如果用户希望将外部钱包与元网浏览器钱包结合使用,则该种子还允许在不同的钱包实现之间轻松导入/导出钱包,从而给予附加的自由度。 分层确定性(HD)钱包是公知的确定性密钥的衍生方法。在HD钱包中,父代密钥生成一系列子代密钥,这些子代密钥又会衍生一系列孙密钥,依此类推。这种树状结构是用于管理若干密钥的强大机制。 在优选实施例中,HD钱包可以被合并到图16中所示的元网架构中。 使用HD钱包的优点包括: 1.结构可出于不同的目的使用子密钥的不同分支表达附加的组织含义。例如,用户可将不同分支(及其对应的子密钥)专用于不同类型的数据。 2.安全性用户可以在没有对应的私钥的情况下创建一系列公钥,从而使HD钱包具有仅接收能力的功能,并且适于在不安全服务器上使用。而且,由于需要存储较少的秘密,因此暴露风险较低。 3.恢复如果密钥丢失/损坏,则可以从种子密钥中将其恢复。
有利地,本发明的实施例可直接合并常规的网络浏览器与一或多个加密货币钱包的功能性。从根本上而言,这是元网如何将对于“因特网”内容的支付与其向最终用户的交付组合。 为实现这一点,浏览器钱包的实施例可具有用作加密货币钱包的专用内置软件组件。该钱包是应用自身本地的且可用于管理加密货币私钥,并授权作为对于浏览器钱包自身内的元网内容支付的交易。 这意味着应用的浏览器组件可提示钱包组件授权所需的支付-通过购买解密密钥、访问令牌或其他方式-以查看元网内容。应用无需调用外部第三方来处理支付,因此关注的元网内容由应用消费并就地支付。 外部钱包 如果用户希望在外部钱包(软件或硬件)上管理或保存其加密货币私钥或甚至使用多个钱包,则可通过应用的实施例实现相同的优势及功能性。这可代替或结合应用的本地钱包执行。 在这样的实施例中,应用建立与外部钱包的链接或配对并与之同步,但并不在浏览器钱包自身中存储私钥。而是,当浏览器组件提示为内容进行支付时,应用从所选的外部钱包中请求通过数字签名进行授权。该授权由用户作出,并且浏览器钱包可广播交易并查看支付的内容。
元网的本质优势为其使用相同的数据结构-区块链-来记录支付及内容数据两者。这意味着除了创建仅基于加密货币的交换的交易之外,软件钱包还可用于将内容数据写入到元网基础设施。 内置到应用的本地钱包能够将交易写入到区块链,与典型的简化支付验证(SPV)客户端相比,这些交易更复杂-请参见 由于浏览器钱包应用具有用户接口(UI),因此其允许钱包组件创建并广播包括内容数据的交易,该内容数据已预先在浏览器组件中或用户计算机上被构造。对于自行进行处理的专门设置的钱包而言,要实现此功能将非常困难。
前面已经描述了,内置于元网协议中的是使用ECC密钥对或AES对称密钥对内容进行加密的能力,以及购买对应的解密密钥或令牌的能力。我们将这些密钥或令牌称为访问密钥或访问令牌。 这些密钥/令牌授予用户查看或编辑内容的许可(单次使用或多实例使用),并且与控制用户加密货币钱包的密钥起着不同的作用(尽管在需要时同一密钥可用于这两目的)。出于此原因,有利的是引入与应用的本地加密货币钱包分离的用于存储及管理访问密钥及令牌的新钱包。 也可以通过允许访问密钥/令牌在某一时间段之后被烧毁而引入对元网内容的定时访问的概念。这可以通过以下方式来实现:要求访问密钥/令牌存储在受信任的执行环境(TEE)中且用户不可直接访问访问密钥/令牌。 访问密钥/令牌可以被“烧毁”的事实也是不将其存储在加密货币钱包中以确保不存在加密货币私钥被烧毁的风险的动机因素。 以类似于加密货币钱包的方式,解密密钥及访问令牌可以确定性地被存储及管理以促进有效处理和部署。可以通过对主钥的后续添加而生成并恢复解密密钥(例如,ECC私钥),而可以使用由一些初始令牌播种的哈希链重构访问令牌。 此处重要的是,区分加密货币钱包处理密钥对的确定性密钥生成,该密钥对用于与其他用户进行交易并创建新的元网节点,而密钥/令牌钱包处理已由加密货币钱包购买的密钥及令牌。 区块高度许可 时间锁可以包括在比特币脚本语言中,以实现区块高度许可。op_code OP_CHECKLOCKTIMEVERIFY(CLTV)设置允许花费交易输出(UTXO)的区块高度。 区块高度许可的优点是双重的: 1.版本控制-在元网协议中,节点的最新版本可以从最大区块高度处的节点标识。浏览器钱包可设置成通过区块高度仅显示文件的最近版本,从而实现工作量证明版本控制。 2.定时访问-浏览器钱包应用可周期性地烧毁由用户在原子级上购买的解密密钥。这确保了查看者仅可在其已进行支付的时间段期间访问内容数据。可以通过将解密密钥存储在受信任的执行环境(TEE)中来防止解密密钥的克隆。此外,原子交换涉及确定性密钥Dk(用于解密内容数据)的购买。尽管该确定性密钥是公开可见的,但是TEE可用于签署Dk与安全隔区的(securely enclaved)私钥的组合。 浏览器钱包可以被布置成与区块链的当前状态同步,以便将区块高度用作其自身的时间代理,而不是依赖任何外部时钟或第三方时间预告。
本发明允许浏览器(客户端)和网络服务器通过旁路域名系统(DNS)服务器和典型的网络路由程序的分布式对等互联网通信和交换信息的新机制。参见
考虑在每个地理区域(例如,邮区、城镇、城市)中的本地对等方的系统。我们假定在该局域网内,至少一个对等方维护区块链的全副本,我们将该对等方称为本地全副本对等方(LFCP)。出于我们的目的,LFCP仅需要存储包括元网标志的区块链交易,但不将其限于此。 所有用户默认向LFCP发送‘获得’请求。由于对等方维护整个区块链的完整且最新副本,因此所有请求都可以得到满足,因为所查询的任何节点ID对于LFCP而言将是可用的。应注意,如果SE足够强大且足够大到能够存储元网内容并执行典型SE的主要功能,则元网搜索引擎也可以充当LFCP。 在最简单的情况下,每个LFCP将具有相同的存储及磁盘空间开销,因为其都将需要能够存储全部区块链(在写入时约200GB)。每个LFCP之间的区别为LFCP应扩展其能力以对来自元网用户的本地请求的要求作出响应。因此,如果默认世界上每个元网用户均查询其最接近的LFCP,则每个LCFP均应力求扩展其操作能力以满足其本地要求。如城市等人口密集区域将需要包括许多集群服务器的LFCP操作,而如小镇等人口稀少区域将需要较少的LCFP操作。 重要的是要注意,磁盘空间要求是通用的,而对于每个LFCP的CPU要求适应于局域网需求。这是适应性网络的示例,例如,Freenet-参见 这样的系统的一个优势为在检索与给定ID 元网提供优于因特网的许多优势-例如,去中心化及去除重复-类似于如IFPS等其他点对点(P2P)文件共享服务。然而,元网通过确保不可变性,及至关重要地通过去除使网络充斥对于给定内容的请求的需要而改进这些现有的P2P模型。 元网基础设施也通过采用这些对等方的网络而对于任何一个LFCP的受损也是鲁棒的。这意味着,如果停用LFCP,则最终用户简单地默认使用其下一个最接近LFCP。如果LFCP彼此通信以在任何给定时间指示哪些附近的对等方就请求而言低于或高于容量,则这可以更有效。这可以允许用户将其请求发送到最适当的对等方并在附近的LFCP之间建立请求分配的动态平衡。
现在考虑当通用磁盘空间要求变得对于较小的对等方而言过大时的场景,随着区块链的元网部分随采用而扩展和增长会发生该情况。 在这种情况下,较小的LFCP应基于流行度系统来使用其磁盘空间容量存储元网节点交易(存在用于通过请求量及本质评级内容的现有技术)。这意味着LFCP现在修整其CPU(用于请求处理能力)及其存储分配(用于内容服务能力)两者,以适应其在内容量及本质两方面上的本地地理需求。 为了解决LFCP现在不能存储所有元网交易内容的事实,可以利用全局全副本对等方(GFCP)的概念。GFCP为具有以下性质的全副本对等方: 1.GFCP增长其磁盘空间容量以便始终维护区块链的全副本。 2.GFCP具有相当大的CPU资源,使得与LFCP相比,其可以处理明显更多的请求。万一许多LFCP受损,则全局全副本对等方应能够应对需求的突然增加。 GFCP存在两个主要功能。首先,在请求从LFCP溢出时,充当对于元网内容的用户请求的故障保护。其次,GFCP充当存档对等方以存储历史上挖掘的所有元网内容,这确保了即使许多LFCP从其本地存储供给中省略了某些内容,仍可访问任何元网节点内容。 全局数据库(data bank) GFCP的概念是强大的且说明了元网的总架构如何提供对现有问题的解决方案;创建涵盖所有的全局数据库。 在此之前,尚不可能安全地构造通用且可全局访问的数据库,因为需要由中心机构来维护数据库。该中央机构将故障点和信任点注入到系统中。至关重要地,如果依赖于一个组织来存储并维护所有因特网数据,则我们需要相信该组织正确且合法地操作,而不会损毁信息的事实。 通过元网基础设施,有效地从全局数据中心的概念中移除了信任及中心性这两个问题。现在,可创建这样的GFCP,因为仅依赖于其来提供存储所需的磁盘空间而不验证及认证待存储的信息。 通过元网,验证存储内容的过程由矿工进行,因此通用全局数据库可以是受信任的,因为其无法破坏区块链信息。GFCP无需是受信任的,仅需要提供存储。 所有GFCP可以存储针对区块链自身始终是可验证的且可证明的相同信息的事实意味着可以在许多这样的GFCP之间复制信息。 这意味着通过使许多全局数据库并行存在且可证明地存储相同信息也解决了具有单个故障点的问题。 图17示出了具有两个LFCP和一个GFCP的系统,且说明了每个对等方可以如何在对于各个对等方的损坏是鲁棒的网络中支持另一对等方。 可以在上述浏览器钱包应用的实施例中实现的本发明的各方面提供了许多优于现有技术的区别特征和优势,包括但不限于: 1.确定性密钥-在应用的同一钱包组件中执行用于加密货币及元网地址两者的分层确定性密钥管理。这允许通过减小其存储要求且实现密钥恢复的多个功能组织密钥。 2.支付机制-该应用允许消费者直接向商家支付,而无需指向将按照惯例认证并提供信任的另一个应用或第三方支付服务。这允许经由同一区块链平台进行数字内容的购买及交付。该应用继承比特币支付的优势,包括低值交换或涉及多方的更复杂的交易。 3.旁路网络服务器-该应用促进对将按照惯例处理大量流量、请求及路由的常规网络服务器的旁路。这是因为应用仅需要从单个LFCP请求内容,这保证了无需将请求转发至其他LFCP来服务用户。这减小了总流量以及每个请求的完成时间 4.定时的访问-该应用通过与区块链同步并基于其当前状态使用区块链来实施访问许可而促进对内容的定时访问。这移除了对随时间监测用户特权的第三方服务的需要,同时保护原始所有者的权利。
这里呈现的元网架构的第一用例(仅出于说明性目的)为对于应用(app)的去中心化支付及分布。 考虑如下场景:app开发者爱丽丝与消费者鲍勃希望彼此交易。该交易将采用原子交换的形式,其中,以金钱交换授予鲍勃对应用数据的访问权限的秘密密钥。加密的应用数据已作为元网节点交易的一部分公开。 原子级上交换的应用被称为Swapp。第三方平台(Swapp商店)可用于对存在于元网上的应用进行编录并通告,但访问密钥的支付及传送到用户(例如,鲍勃)不需要涉及任何第三方且可直接在商家与消费者之间进行。 以下部分详述了从爱丽丝创建app至鲍勃部署该app的可用于购买及出售Swapp的过程。在整个过程中,爱丽丝及鲍勃将使用其各自的浏览器钱包与元网交互。
1.爱丽丝编写应用。构成该应用的数据是由 2.爱丽丝创建节点交易ID 3.然后,爱丽丝创建第一节点的子代,以形成树,该树与她的应用的元网库相对应。爱丽丝的树域在图18中示出。 该树上的叶节点之一是对应于具有索引ID 该节点交易如下所示。
4.爱丽丝公开广播ID
1.鲍勃想要下载益智游戏,并在其浏览器钱包上查看到的元网网站(Swapp商店)上看到列出的爱丽丝的app。 2.然后,鲍勃使用来自网站的信息与爱丽丝通信,并设置原子交换。交换被设计成使得鲍勃将以比特币向爱丽丝支付商定的价格,并且爱丽丝将揭露秘密密钥s 3.原子交换完成,鲍勃的浏览器钱包将秘密密钥s
鲍勃现在具有将允许其解密爱丽丝先前发布的应用数据的密钥s 1.鲍勃使用元网搜索引擎(SE)找到与加密的app数据
该定位符对应于唯一的元网节点ID 2.鲍勃的浏览器钱包接收该MURL,然后向最近的适当LFCP发送请求。该对等方为鲍勃提供请求的数据 3.浏览器钱包根据ID 4.鲍勃将应用 图19示出了以上说明性用例中概述的整个过程。流程图示出了两个动作分支:爱丽丝的分支(在左侧开始)及鲍勃的分支(在右侧开始)。对应于爱丽丝的分支示出初始发布阶段且鲍勃分支示出经由原子交换设置购买的阶段。 在鲍勃的分支上,他广播了以下交易TxID
在该交易中,输出通过私钥谜题锁定,该私钥谜题需要将秘密解密密钥s 该图中爱丽丝和鲍勃的分支在爱丽丝成功地完成原子交换交易的点处汇聚。这在爱丽丝广播交易TxID
一旦该交易被广播,爱丽丝和鲍勃的动作分支就再次发散。爱丽丝接收x个比特币的支付,而鲍勃接收秘密解密密钥s 现在转向图20,提供了可用于实践本公开的至少一个实施例的计算装置2600的说明性简化框图。在各种实施例中,计算装置2600可以用于实现以上示出和描述的任何系统。例如,计算装置2600可以被配置为用作数据服务器、网络服务器、便携式计算装置、个人计算机或任何电子计算装置。如图20所示,计算装置2600可以包括具有一个或多个级别的高速缓冲存储器和存储器控制器的一个或多个处理器(统称为2602),该处理器可以被配置为与包括主存储器2608和永久存储装置2610的存储子系统2606通信。如图所示,主存储器2608可以包括动态随机访问存储器(DRAM)2618和只读存储器(ROM)2620。存储子系统2606和高速缓存存储器2602可以用于存储信息,例如与本公开中所描述的与交易和区块相关联的详细内容。(一个或多个)处理器2602可用于提供本公开中所描述的任何实施例的步骤或功能。 (一个或多个)处理器2602还可以与一个或多个用户接口输入装置2612、一个或多个用户接口输出装置2614以及网络接口子系统2616通信。 总线子系统2604可以提供用于使得计算装置2600的各个组件和子系统能够按预期彼此通信的机制。尽管总线子系统2604被示意性地示出为单个总线,但是总线子系统的替代实施例可以利用多个总线。 网络接口子系统2616可以提供至其他计算装置和网络的接口。网络接口子系统2616可以用作从不同于计算装置2600的其他系统接收数据以及将数据传输到其他系统的接口。例如,网络接口子系统2616可以使数据技术人员能够将装置连接至网络,使得数据技术员可以在位于远程位置(例如,数据中心)的同时,将数据传输到该装置并从该装置接收数据。 用户接口输入装置2612可以包括一个或多个用户输入装置,例如,键盘;诸如集成鼠标、轨迹球、触摸板或图形输入板等定点装置;扫描仪;条形码扫描仪;合并到显示器中的触摸屏;诸如语音标识系统、麦克风等音频输入装置;以及其他类型的输入装置。通常,术语“输入装置”的使用旨在包括用于将信息输入到计算装置2600的所有可能类型的装置和机制。 一个或多个用户接口输出装置2614可以包括显示子系统、打印机或诸如音频输出装置等非可视显示器。显示子系统可以是阴极射线管(CRT)、诸如液晶显示器(LCD)、发光二极管(LED)显示器或投影仪的平板装置或其他显示装置。通常,术语“输出装置”的使用旨在包括用于从计算装置2600输出信息的所有可能类型的装置和机制。一个或多个用户接口输出装置2614可以用于例如呈现用户界面以有助于用户与执行所描述的过程及其中的变型的应用的交互,当这样的交互是适当的时。 存储子系统2606可以提供计算机可读存储介质,该计算机可读存储介质用于存储可以提供本公开的至少一个实施例的功能的基本编程和数据构造。当由一个或多个处理器执行时,应用程序(程序、代码模块、指令)可以提供本公开的一个或多个实施例的功能,并且可以被存储在存储子系统2606中。这些应用程序模块或指令可以由一个或多个处理器2602执行。另外,存储子系统2606可以提供用于存储根据本公开而使用的数据的存储库。例如,主存储器2608和高速缓存存储器2602可以为程序和数据提供易失性存储。永久存储装置2610可以为程序和数据提供永久性(非易失性)存储,并且可以包括闪存、一个或多个固态驱动器、一个或多个磁性硬盘驱动器、一个或多个具有相关的可移动介质的软盘驱动器、一个或多个具有相关的可移动介质的光驱(例如,CD-ROM或DVD或Blue-Ray)驱动器,以及其他类似的存储介质。这样的程序和数据可以包括用于执行如本公开中所描述的一个或多个实施例的步骤的程序以及与本公开中所描述的交易和区块相关联的数据。 计算装置2600可以是各种类型,包括便携式计算机装置、平板计算机、工作站或以下描述的任何其他装置。另外,计算装置2600可以包括可以通过一个或多个端口(例如,USB、耳机插孔、闪电连接器等)连接到计算装置2600的另一装置。可以连接到计算装置2600的装置可以包括被配置为接受光纤连接器的多个端口。因此,该装置可以被配置为将光信号转换为电信号,该电信号可以通过将装置连接至计算装置2600的端口传输以进行处理。由于计算机和网络不断变化的性质,图20中所描绘的计算装置2600的描述仅旨在作为特定示例用于说明该装置的优选实施例的目的。具有比图20中描绘的系统更多或更少的组件的许多其他配置是可能的。 应当注意,上述实施例说明而不是限制本发明,并且本领域技术人员将能够设计许多替代实施例,而不脱离由所附权利要求书限定的本发明的范围。在权利要求书中,括号中的任何附图标记都不应解释为对权利要求的限制。单词“包括(comprising,comprise)”等不排除任何权利要求或整个说明书中列出的元素或步骤之外的元素或步骤的存在。在本说明书中,“包括(comprise)”是指“包括(include)或由……组成(consist of)”,“包括(comprising)”是指“包括(including)或由……组成(consisting of)”。元素的单数形式并不排除此类元素的复数形式,反之亦然。本发明可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实现。在列举几个部件的装置权利要求中,这些部件中的几个可以由一个且相同的硬件来实施。在互不相同的从属权利要求中记载某些手段的事实并不表示不能有利地使用这些手段的组合。
- 经由对等网络存储、检索和通信数据的计算机实现的系统和方法
- 经由网络提供内容的方法和装置、经由网络接收内容的方法和装置、及经由网络备份数据的方法和装置、备份数据提供设备、及备份系统