SERO技术革新(一)——区块链隐私保护的必要性

在上期的 SERO 介绍中,矿视界提到了该币种的两项核心技术,即“零知识证明”和“图灵完备”。

之前因为篇幅的限制没有详细讲解,今天小编就带来一段来自 medium 论坛的热贴翻译,帮助大家深入地了解这一新币种。

区块链作为一种新兴技术,和中心化系统相比,其核心价值在于去中心化。拥有独立数据库的传统公司都会聚合数据并建立数据中心,这些数据中心的管理权限由少数人控制,在安全方面存在不可避免的问题。

而区块链是一种链式数据结构,数据块按时间顺序连接,以加密方式保证分布式账本的不可篡改和不可伪造。另一方面,在区块链系统中,任何有能力建立节点的人都可以参与其中,成为分布式账本中的一个节点。

这些节点是平等和自主的,参与验证每笔交易,并通过某种共识模式来确定数据一致性。通过区块链系统,用户可以安全地与各类数据进行交易和交互,无需借助中间节点。

例如,以太网络在世界范围内有数以万计的节点,包括用户运行的用来促进网络连接的节点、由交易所管理的节点以及矿工运行的节点。

大量的节点一方面保证了每笔交易的安全性,另一方面也给用户带来了很多隐私问题。目前,任何人都可以从数万个节点中查询任意交易,包括交易者的地址和数量。在这种情况下,到底该如何保护用户的隐私呢?

区块链产业发展以来,在技术领域探索了多种隐私保护解决方案,有混币器、环签名、零知识证明等。

混币器是一种中心化解决方案,需要中心化混合平台作支撑。交易参与者首先将代币发送到混合平台进行混合,以中断参与者之间的连接。用户需要完全信任中心化处理系统。

在这里插入图片描述

而环签名是一种特殊的群签名。每笔交易的签名由一个私钥和多个公钥生成。当其他节点验证签名时,他们只能确定哪个公钥是众多公钥中的一个,而不能确定哪个公钥是特定的发送方,也就是说,无法确定由一组环签名所代表的资产特定持有者是谁。

环签名的问题是,用于匿名的签名集是固定的,并且用户需要在交易中与其他用户进行公钥混合,因此仍然有可能遭遇恶意用户并暴露隐私。
在这里插入图片描述

区块链行业中最有前途的一种解决方案是零知识证明,它是由 S.Goldwasser、S.Micali 和 C.Rackoff 在 20 世纪 80 年代初提出的。

它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。

零知识证明实质上是一种涉及两方或多方的协议,即两方或多方完成一项任务所需采取的一系列步骤。

证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。大量事实证明,零知识证明在密码学中非常有用。如果能够将零知识证明用于验证,将可以有效解决许多问题。

在区块链隐私保护领域,零知识证明被认为是最前沿、最强大的解决方案。连以太坊创始人 V 神也曾多次公开表达了他对零知识证明的感激之情。

在过去,如果你想证明什么,你需要引入或使用另一种知识来实现目标,但在零知识证明中,用户不需要其他源数据来完成证明过程。
在这里插入图片描述

零知识证明技术应用于区块链系统后,每个块中只存在加密的散列数据,足以支持区块链系统上的交易操作。

然而,我们现在面临的问题是如何将零知识证明作为一种通用方案广泛应用于区块链系统中。

证明生成效率相对较低是其中一个比较突出的问题。例如,在 Zcash 中,使用普通笔记本电脑进行一笔匿名货币交易通常需要数百秒的时间。

如若已发送交易中的 UTXO(交易未用产出)有更多资源,则该笔交易的证明时间将会长到令人无法接受。另一个问题是,在当前所有主流匿名货币系统中,都没有一个支持类似以太坊智能合约的区块链平台系统。
在这里插入图片描述

为了解决匿名区块链系统在应用层面上存在的这些问题,许多研发团队都在尝试着做进一步的改进。然而,由于零知识证明的开发水平以及其学术和工程方面的复杂性,大多数团队进展缓慢,尚未能开发出能够真正上线的系统。

SERO 项目成功地解决了上述问题。SERO 全称是 Super Zero。它是世界上第一个基于零知识证明技术、支持智能合约操作并实现隐私保护的平台。在零知识证明系统方面,SERO 团队构建了基于 ZK-SNARKS 的 Super-ZK 零知识证明加密系统。

目前,Super-ZK 系统在证据生成速度上比 Zcash 现有系统快 20 多倍,这曾是零知识证明推广应用的最大瓶颈,加速后的区块链网络极大地改善了用户体验,也提高了零知识证明系统的实用性。

那么 SERO 是通过哪些手段来又快又准确地保证用户隐私的呢?敬请期待下集——SERO 匿名系统的体系结构设计。

原文链接:

https://medium.com/@SERO.CASH/sero-the-technological-innovation-of-the-blockchain-of-privacy-protection-1beb3fcca4a5

文章来源:medium。

翻译&校对:有条鱼。

本文由矿视界(奇迹摩尔)翻译整理编辑,如需转载,请标明出处。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
modbus4j是一个用于Java语言的Modbus协议库,它提供了编码和解码Modbus消息的功能。下面是一个简单的示例代码,展示了如何使用modbus4j进行编码和解码: 1. 编码示例: ```java import com.serotonin.modbus4j.code.ModbusFunctionCode; import com.serotonin.modbus4j.code.DataType; import com.serotonin.modbus4j.msg.ReadHoldingRegistersRequest; import com.serotonin.modbus4j.msg.WriteSingleRegisterRequest; import com.serotonin.modbus4j.msg.WriteSingleRegisterResponse; import com.serotonin.modbus4j.sero.util.queue.ByteQueue; public class ModbusEncodingExample { public static void main(String[] args) { // 创建一个写单个寄存器请求 WriteSingleRegisterRequest request = new WriteSingleRegisterRequest(1, 100, 123); // 创建一个字节队列用于存储编码后的消息 ByteQueue byteQueue = new ByteQueue(); // 编码消息 request.encode(byteQueue); // 打印编码后的消息 System.out.println("Encoded message: " + byteQueue); // 打印编码后的字节数组 System.out.println("Encoded bytes: " + byteQueue.popAll()); } } ``` 2. 解码示例: ```java import com.serotonin.modbus4j.code.ModbusFunctionCode; import com.serotonin.modbus4j.code.DataType; import com.serotonin.modbus4j.msg.ReadHoldingRegistersRequest; import com.serotonin.modbus4j.msg.WriteSingleRegisterRequest; import com.serotonin.modbus4j.msg.WriteSingleRegisterResponse; import com.serotonin.modbus4j.sero.util.queue.ByteQueue; public class ModbusDecodingExample { public static void main(String[] args) { // 创建一个字节队列,并向其中添加编码后的消息 ByteQueue byteQueue = new ByteQueue(); byteQueue.push(0x06); // Modbus设备地址 byteQueue.push(ModbusFunctionCode.WRITE_SINGLE_REGISTER.getValue()); // 功能码 byteQueue.push(0x00); // 寄存器地址高位 byteQueue.push(0x64); // 寄存器地址低位 byteQueue.push(0x00); // 写入值高位 byteQueue.push(0x7B); // 写入值低位 // 创建一个写单个寄存器响应对象 WriteSingleRegisterResponse response = new WriteSingleRegisterResponse(); // 解码消息 response.decode(byteQueue); // 打印解码后的消息内容 System.out.println("Device address: " + response.getDeviceAddress()); System.out.println("Function code: " + response.getFunctionCode()); System.out.println("Register address: " + response.getOutputAddress()); System.out.println("Register value: " + response.getOutputValue()); } } ``` 这是一个简单的示例,展示了modbus4j库的编码和解码功能。你可以根据自己的需求,使用modbus4j库进行更复杂的Modbus通信操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值