Zerobase是一个专为速度、去中心化和法规遵从性而设计的实时ZK(零知识)证明器网络。该网络能在数百毫秒内生成ZK证明,并通过其特有的HUB环唤醒机制确保去中心化以及快速达成共识,从而支持大规模的商业应用。
Zerobase提供的服务包括免费的电路开发和商业许可,涵盖诸如zkLogin、zkDarkPool和zkVote等系统,这些系统依赖于Zerobase证明器来实现最佳性能。此外,我们也提供面向一般商业用途的电路开发服务。
采用Zerobase的标准电路集成通常只需一周时间,而定制电路开发则大约需要2到3周。通过利用Circom和Gnark进行证明转换,我们实现了敏捷开发与快速迭代,并提供了可选的可解密电路框架以满足合规要求。基于三年来核心团队的努力和与顶尖机构的合作,Zerobase能够为客户提供高品质的电路开发与证明生成服务。
Zerobase愿意与所有符合条件的ZK验证者合作,条件是证明的验证时间不得超过200毫秒。这表明了Zerobase致力于推动零知识证明技术在更广泛场景中的应用,并促进其生态系统的健康发展。
网络架构
在常见的网络架构中,用户通过与Hub交互,获得Node列表,然后从列表中选择一个Node进行进一步交互,具体流程如下图所示。
在这种网络架构中,所有的节点(Node)必须定期向中心服务器(Hub)发送加密的心跳消息来表明它们的在线状态。Hub则负责收集并存储所有在线节点的信息。由于采用了集中式设计,随着网络中节点数量的增长,Hub所承担的信息处理和管理任务也会相应增加,这可能会使Hub成为整个系统的性能瓶颈。
此外,在这种架构下,用户若想与某个节点建立通信,首先必须通过Hub来获取当前可连接的在线节点列表。因此,Hub的正常运行对于整个系统的稳定性至关重要。一旦Hub离线或发生故障,用户将无法获取节点列表,进而导致整个系统无法正常运作。这种对单点依赖的设计增加了系统整体的风险和脆弱性。
架构优化
为了解决这些问题,我们提出了一种新的网络架构,如下图所示。
在新的网络架构设计中,我们对节点(Node)进行了分组,每组节点由一个中心节点(Hub)来管理。每个Hub仅维护其辖下节点的状态信息,因此节点仅需与自己的Hub通信。通过这种设计,即便网络中的节点数量增长,我们也可以通过增加Hub的数量来维持系统的高效运行,从而确保系统的稳定性。
节点分区
节点分区策略是基于一致性哈希算法实现的。为了更好地理解这一算法,让我们通过一个例子来阐述其工作原理。假设有三个Hub,分别标记为Hub0、Hub1和Hub2,以及若干个待分配的节点(Node)。我们需要将这些节点合理地分配到不同的Hub上。
首先,将这三个Hub按照顺时针顺序放置在一个虚拟的圆上。这个圆可以想象成一个具有从0到2^32-1共2^32个等分刻度的“时钟”。接着,通过计算每个Hub的IP地址的哈希值,可以得到Hub在该虚拟圆上的位置。比如,Hub0的哈希值为hash_hub0 = Hash(IP),那么Hub0在圆上的位置就是hash_hub0 % 2^32。同样地,我们也能够计算出Hub1和Hub2的位置。
利用一致性哈希算法,即使在网络拓扑发生变化(如添加或移除Hub)时,也能最小化节点重新分配的影响,从而保持系统的高效运作。
在上述的一致性哈希环中,我们可以进一步说明如何具体地定位一个新加入的节点(Node0)应归属于哪个中心节点(Hub)。在这个虚拟的环形结构中,Hub0的位置可以设定为时钟的起点0,而在Hub0左侧则是最大值2^32-1,右侧紧接着的是1。当我们需要添加一个新的节点Node0时,我们首先对其IP地址和端口号进行哈希运算,获得一个哈希值hash_node0 = Hash(IP, Port),这个值作为Node0的唯一标识符。
添加集线器
接下来,我们把这个哈希值映射到我们的虚拟时钟上,具体位置为hash_node0 % 2^32。一旦确定了Node0的位置,我们就从该位置开始沿顺时针方向寻找最近的Hub。Node0最终归属的Hub即为顺时针方向上遇到的第一个Hub。这样的设计保证了即使网络中有节点加入或离开,也只需要少量节点调整它们所连接的Hub,从而减少了整个系统因节点变化而产生的负载波动。
根据您提供的信息,在您的系统架构中,不同的Hub负责管理不同的Node,具体责任分配如下:Hub0 管理 Node2 和 Node3;Hub1 管理 Node0;Hub2 管理 Node1。
移除集线器
当一个集线器(如集线器1)发生故障时,为了保证系统的健壮性和可用性,需要采取措施来确保原本由该集线器负责的节点能够继续得到管理和运行。具体步骤如下:
移除故障集线器:首先,确认集线器1确实发生了故障,并且无法恢复,则将其从网络中逻辑上移除。这意味着它不再处理任何流量或管理任何节点。
重新分配节点:对于原本由故障集线器负责的节点(本例中的节点0),需要将它们重新分配给其他仍然活跃的集线器。在这个例子中,节点0将被重新分配给集线器2。
当枢纽(Hub)数量不足时,可能会出现某些区域的节点(Node)过于集中,而其他枢纽则未能充分利用的情况。这种不均衡的分布可能导致系统性能下降,并有可能使分布式系统退化成接近中心化的架构,从而失去分布式设计所带来的优势,例如负载均衡和容错能力等。
为解决这种不平衡的问题,可以引入“虚拟节点”机制。虚拟节点是一种算法技术,通常用于一致性哈希中,它可以用来优化节点在分布式系统中的分布情况。通过虚拟节点机制,每个实际的物理节点都可以映射到多个位置(即虚拟节点)。这样一来,即使物理节点的数量有限,也可以通过虚拟节点来模拟更多的分布点,从而更均匀地分散负载。
虚拟节点
在一致性哈希中,为了减少数据倾斜的问题,引入了虚拟节点的概念。虚拟节点是一种软件实现的方式,它使得单个物理节点在一致性哈希环上表现为多个逻辑节点或“副本”。这样做的目的是为了更均匀地分布数据,即使是在物理节点数量较少的情况下。
假设我们有三个Hub(Hub0、Hub1、Hub2)和四个实际节点(Node0、Node1、Node2、Node3),并且为了防止数据倾斜,每个实际节点都在一致性哈希环上创建了两个虚拟节点。那么理论上,一致性哈希环上会有八个虚拟节点(Node0_v1、Node0_v2、Node1_v1、Node1_v2、Node2_v1、Node2_v2、Node3_v1、Node3_v2),而Hub的数量保持不变。
运作机制
为了缓解因数据倾斜而导致的不同Hub之间的负载不平衡问题,一种有效的策略是采用虚拟节点(Virtual Nodes, VN)技术。这种方法的核心思想是在一致性哈希算法的基础上,将每个物理Hub映射到一致性哈希环上的多个位置,即创建多个虚拟节点。
为了更清晰地理解上述分配情况,我们可以按照以下步骤来整理思路:
创建虚拟节点:
每个实际的Hub(Hub0、Hub1、Hub2)被虚拟化为两个虚拟节点。
因此,Hub0 被虚拟化为 Hub00 和 Hub01; Hub1 被虚拟化为 Hub10 和 Hub11; Hub2 被虚拟化为 Hub20 和 Hub21。
一致性哈希环上的位置:
假设我们已经使用一致性哈希算法将这些虚拟节点放置在哈希环上。
分配 Node:
根据既定规则,将Node分配给这些虚拟节点。
具体分配情况如下:
Node0 和 Node1 都被分配给了 Hub01,而 Hub01 是 Hub0 的一个虚拟节点,所以实际上 Node0 和 Node1 都被分配给了 Hub0。
Node2 被分配给了 Hub10,Hub10 是 Hub1 的一个虚拟节点,所以 Node2 实际上被分配给了 Hub1。
Node3 被分配给了 Hub21,Hub21 是 Hub2 的一个虚拟节点,所以 Node3 实际上被分配给了 Hub2。
通过这种方式,即使某些Hub因为数据倾斜而成为热点,通过引入多个虚拟节点可以有效地分散负载,使得系统更加均衡。同时,这也提高了系统的容错能力,因为如果某个Hub出现故障,其上的虚拟节点所负责的数据可以快速地重新分配给其他Hub上的虚拟节点,从而减少对整体系统的影响。
结构和工作流程
这里总结了ZEROBASE网络中的结构、工作流程以及关键点:
结构
ZEROBASE Hub:作为网络的核心组件,负责广播验证任务和处理用户验证请求。同时管理着网络中所有节点的状态。
证明者节点(Prover Nodes):这些节点的任务是生成ZK-SNARK证明,并通过ZEROBASE API将证明返回给客户端。
主要功能
ZEROBASE Hub的功能包括:
节点列表维护:跟踪所有活跃节点的状态,包括但不限于节点的在线/离线状态。
生成节点连接凭证:确保只有授权节点能够接入网络,保护节点的公钥不被泄露。
处理节点心跳包:根据节点发送的心跳包信息更新节点列表。
处理客户端请求:当客户端请求节点列表时,ZEROBASE Hub会选择四个节点并将这些信息返回给客户端。
构建支付订单:处理与支付相关的事务,包括生成订单号。
证明者节点的功能包括:
接收并计算输入数据:根据客户端发送的数据执行必要的计算以生成ZK-SNARK证明。
向Hub发送心跳包:定期向Hub发送心跳包以表明节点当前的状态。
主要流程
添加节点
操作:为节点生成RSA密钥对。
流程:将节点的公钥手动发送给需要加入网络的新节点。
处理客户端请求
操作:客户端通过HTTPS安全协议向Hub请求节点列表。
流程:Hub从其维护的节点列表中挑选四个节点,并将这些节点的信息返回给客户端。
构建支付订单
操作:客户端向Hub发送新的订单请求。
流程:Hub使用UUID算法生成唯一的订单号,并将订单号返回给客户端。
处理证明请求(带付款验证)
操作:从客户端接收输入数据。
流程:验证订单是否已付款,确认后继续生成证明。
结果:将生成的证明返回给客户端。
关键点
连接凭证:保护节点的公钥安全,防止未经授权的访问。
心跳包传输:确保节点状态的实时性,使Hub能够及时了解网络内节点的健康状况。
以上就是ZEROBASE网络的基本结构和工作流程概述。这个框架旨在提供一种安全高效的方式来管理和验证网络内的交易活动。
SEV技术概述
SEV(Secure Encrypted Virtualization)技术
SEV是一种基于AMD架构的隐私计算模型,通过加密代码和数据来加强密码隔离,保护代码免受高权限代码的攻击。传统的非机密计算系统采用基于环的模型,允许高权限代码完全访问其级别及其下所有级别的资源。而在SEV模型中,虚拟机管理程序可以同时控制和运行多个虚拟机(VM),并且SEV硬件使用VM ASID(地址空间标识符)来标记所有代码和数据,指示其所属的VM。标记与数据一同存储在SoC(系统级芯片)内部,防止未经授权的访问。此外,当数据进出SoC时,会使用与标记关联的128位AES密钥进行加密或解密。
SEV通过为每个虚拟机和虚拟机管理程序分配唯一的标记来创建加密密钥,这些密钥使得数据只能被其对应的虚拟机访问。即使虚拟机管理程序试图访问数据,也只能看到加密后的形式,从而实现了基于加密的隔离。
SEV威胁模型
SEV建立在一个假设上,即潜在的攻击者可能在目标机器上执行用户级特权代码,并且可能在更高特权的虚拟机管理程序级别上运行恶意软件。此外,攻击者还可能对机器进行物理访问,包括直接访问DRAM芯片。SEV提供了额外的保护层,帮助保护虚拟机的代码和数据。
ZEROBASE SEV沙盒
ZEROBASE证明者节点利用硬件VM结构来构建一个安全沙盒环境,允许电路程序在其中执行并与系统上的其他电路程序保持隔离。这些沙盒通过Docker容器(包含不同的电路程序)与主机系统之间的加密隔离来增加安全性,从用户输入到证明生成再到用户输入发布的整个过程。
在ZEROBASE证明者节点内部,私有内存加密在容器级别实现,而主机上的共享内存则使用虚拟机管理程序密钥进行加密。这允许虚拟机指定某些页面用于保密内存数据,而其他页面则用于与虚拟机管理程序通信。为了进一步提高安全性,指令页面和页表内存始终保持私有状态。
密钥管理
SEV的安全性很大程度上取决于内存加密密钥的安全性,这些密钥对于虚拟机管理程序本身来说是不可见的。SEV固件在AMD-SP内部运行,提供了一个安全的密钥管理接口,虚拟机管理程序使用这个接口来为验证者节点启用SEV,并执行诸如启动、运行、快照、迁移和调试等典型活动。此接口也有助于客户端数据在验证者节点间的迁移,确保在传输过程中内存内容保持加密状态。
DOS防御
SEV本身并不提供针对拒绝服务(DoS)攻击的防御。为了抵御DoS攻击,ZEROBASE系统设计了一种机制,即每当HUB发起请求时,都会向用户发出一个一次性通信密钥,以此作为防御措施的一部分。
使用案例
zkLogin - StarkNet
概述: zkLogin 是一项利用零知识证明(ZKP)的技术,允许用户使用来自支持OpenID Connect平台(如Google、Facebook)的现有凭证来验证StarkNet上的区块链交易,同时保证用户的敏感信息不被泄露,也不需要依赖任何第三方的信任。
工作原理: 用户的凭证被转换成ZKP,这些证明在不透露用户具体信息的情况下验证了用户的身份。这样,用户可以安全地登录StarkNet应用程序,而不必担心个人信息的暴露。
zkLogin - TOMO钱包
概述: ZEROBASE 与 TOMO Wallet 和 World Liberty Financial 合作,提供一种简化且注重隐私的登录体验。通过 ZEROBASE 的 ZKLogin 技术,用户的敏感信息(如OpenID、头像、电子邮件)被安全处理并转换成ZKP,这些证明随后被发送给TOMO进行验证。
工作原理: 用户的信息转换为ZKP后,只有验证状态会被TOMO接收,而实际的个人信息则保持私密。这一过程增强了用户数据的安全性和隐私保护。
zkDarkPool - Lynex
概述: zkLynex 是一个位于Linea上的去中心化交易所(DEX),通过利用zk-SNARKs技术来解决去中心化金融(DeFi)中的隐私和可扩展性问题。zkLynex引入了“暗池”的概念,这是一种在交易执行前不向公众披露交易细节的交易环境,为大额交易用户提供更高的安全性和隐私保护。
工作原理: 在暗池中,交易者可以在没有外部干扰的情况下执行交易,确保了交易的隐私性和安全性。
Tiga处理器 - 多面体
概述: Tiga处理器 是一种专门为BNB Chain区块链设计的区块头验证工具,使用Gnark编写。这款工具适用于需要验证区块原始信息的ZK跨链桥场景,参考了PolyhedraZK的ExpanderCompilerCollection进行电路编译。
工作原理: Tiga处理器通过验证区块头的信息来确保跨链交互的安全性,同时利用零知识证明技术保护用户隐私。
zkDarkPool - Unyfy
概述: Unyfy 与 ZEROBASE 合作开发了 zkDarkPool ,这是一个为小型代币市场提供保护的解决方案,防止MEV机器人和狙击手等恶意行为者的影响。zkDarkPool通过使用ZKP技术,充当了代币交换的媒介,确保了隐私性和市场的公平性。
工作原理: 通过暗池机制,交易在执行前对外界保密,保护了小型市场不受市场操纵的影响,增强了交易的公平性和透明度。
网址:https://zerobase.pro/
声明:本网站所有相关资料如有侵权请联系站长删除,资料仅供用户学习及研究之用,不构成任何投资建议!