主页 > 华为无法更新imtoken > 五个关键点分析区块链产品的设计基础

五个关键点分析区块链产品的设计基础

华为无法更新imtoken 2023-01-17 21:07:21

本文主要列出了我在区块链产品设计过程中遇到的一些与区块链相关的常见问题和解决方案。适合准备或进入区块链行业的产品经理阅读。本文中列出的解决方案并不是唯一的。如果您有其他解决方案或遇到其他问题,请留言讨论。

一、链上数据处理1. Hash

一般来说,我们无法将数据的原始文本存储在区块链上,原因如下:

由于上述原因,通常的做法是将原始数据的哈希值存储在区块链上。基于Hash算法的特点,将原始数据转化为定长字符串,无法通过Hash值推导出原始数据,简单有效地避免了上述问题。

当然,这种方式也有其局限性,即只存储哈希值的区块链只能用于验证某一时刻数据的存在,而不能为用户存储原始数据。原始数据必须由用户自己保管,或者由第三方机构保管(可能面临数据被篡改、无法验证的风险)。

2. 默克尔证明

在日常工作中,我们可能会遇到这样的情况:一条数据包含A、B、C、D四个字段,这个时候如何上传这个数据到链上呢?

将A、B、C、D字段简单地连接起来进行Hash是一种解决方案,但是对于某些场景,比如申请者想和雇主共享这个数据,但是出于隐私考虑,他们只想共享字段A , B 的原始数据,并且不想共享字段 C 和 D 的原始数据。在这种场景下,仅对数据进行哈希并上传到链上显然不能满足这种需求。

这时一个可行的解决方案是使用每个字段根据 Merkel Proof 计算 Merkel Root Hash,并将 Root Hash 上传到链上。Merkel Root Hash的计算过程如下图所示。

用户在分享数据时,愿意展示给他人的字段显示为数据的原文,不愿意展示给他人的字段则显示为Hash值。根据 Merkel Proof 的说法,得到这些数据的人仍然可以计算 Merkel Root Hash,并验证数据在区块链上没有被篡改。示意图如下:

除了解决涉及隐私的数据共享问题外,默克尔证明的应用还可以大大减少链上数据量,间接提高TPS。如果数据上传到以太坊等公链上,也可以大大降低上链成本。

例如,有 100 条数据需要上传到链上。通过 Merkel Proof,这 100 条数据可以计算为一个 Merkel Root Hash。

缺点是如果用户保留自己的数据,除了自己的数据外,还需要保留与自己的数据相关的数据哈希,这增加了用户需要存储的数据量。

如下图所示,用户需要保留红框中的数据。

二、私钥管理

常用的私钥管理方式有四种:

1. 不为用户生成公钥和私钥

当用户签署交易(数据上链)时,平台使用统一的私钥进行签名。

优点:用户学习成本低;开发成本低;用户无需担心私钥丢失。

缺点:由于所有数据都用私钥签名,在区块链上无法区分进行数据上链操作的用户;过度中心化的处理方式可能导致用户质疑链上数据的真实性;该平台将承担重大的安全责任。

2. 为用户生成公钥和私钥

私钥由平台统一保存,平台在用户签署交易(数据上链)时直接使用用户的私钥进行签名。

优点:用户学习成本低;开发成本低;用户无需担心私钥丢失;可以知道哪个用户在区块链上执行了链上操作。

缺点:过度中心化的处理方式,让用户质疑链上数据的真实性成为可能;该平台将承担重大的安全责任。

3. 密钥库

为用户生成公钥和私钥。私钥由用户自己的密码加密,由平台保存。用户在对交易(链上数据)进行签名时,需要输入密码解密,获取私钥并签名。

优点:用户学习成本低;可以在区块链上识别出哪个用户对数据进行了链上操作;在一定程度上可以认为是一种去中心化的数据上链方式。

缺点:开发成本高;用户多一步设置密码,每次上链操作多一步输入密码;由于平台不保存用户私钥的原文,一旦用户丢失或忘记加密私钥密码,将无法保证用户日后上传数据的真实性比特币保管私钥,甚至无法进行链上操作。

4. 为用户生成公钥和私钥,私钥由用户自己保管。

优点:开发成本很低;可以区分哪个用户对数据进行了链上操作;一种完全去中心化的链上数据方式。

缺点:用户学习成本高;每次用户进行链上操作时,多输入一个私钥;由于平台不保存用户私钥的原文,一旦用户丢失或忘记私钥,用户后续上链数据将丢失。无法保证真实性,甚至不会进行链上操作。

具体采用何种方式需要根据去中心化、安全性、成本、开发能力等要求综合考虑。

三、丢失对私钥的处理

在第 3 节列出的私钥管理方案中,无论私钥是由平台保管还是由用户保管,都可能涉及忘记私钥或私钥的加密密码。在传统的互联网产品中,如果用户忘记密码,可以通过手机号、邮箱等方式重置密码。而对于区块链产品,无论是私钥还是私钥的加密密码,传统的忘记密码不能简单使用。处理来处理。

目前一种可行的处理方式是在区块链上记录智能合约中的用户信息、用户公钥地址、公钥地址的有效状态(包括有效和有效)以及过期时间。公钥地址是与用户私钥唯一对应的公钥的哈希值,在数据校验时使用有效状态和过期时间来验证数据的有效性(将在第7节详细说明)。

当用户忘记了私钥或私钥的加密密码时,可以为其重新生成一组公私钥对,并将新的公钥地址写入智能合约,并与用户信息相关联。状态变为无效,写入无效时间。

可见,该方法通过在区块链上为用户关联多个公钥地址,解决了用户忘记私钥或私钥加密密码的问题。数据的用户。

四、用户对数据的自我保管

传统互联网产品中,用户数据由平台集中存储,导致用户隐私、数据安全等问题,用户自身产生的数据并没有为用户创造价值。

在区块链产品中,为了改变这种情况,用户需要允许用户导出自己的数据。有一个原则,用户导出的数据需要能够独立验证数据在区块链上的存在,而不依赖于任何中心化验证平台。这要求导出的文件必须包含数据验证所需的所有字段。,如原始数据、Hash算法等。这些数据通常以json文件的形式存储。

同时,考虑到json文件可读性差,导出的数据还可以包含可读的明文数据(比如用户的原始数据文件,比如图片或者文档)。这些导出的数据通常会打包成一个压缩包供用户下载。此外,为了提高用户体验,压缩包中还可能包含使用说明,对压缩包中各个文件的功能和数据校验方法进行说明。

五、数据删除和编辑

在传统的互联网产品和软件产品中,一般都允许用户删除和编辑自己的数据。但是,对于区块链产品,如果只对数据库进行操作比特币保管私钥,而没有对区块链采取相应的措施,那么被删除或编辑的数据都会存在于区块链上,可以通过存在证明来产生安全性。危害等

一般来说,对于被删除的数据,需要在区块链上重新发起一笔交易。除了数据的哈希值等常规信息外,还需要额外的数据撤销标识符。数据校验时,如果需要校验的数据存在于交易中,则有撤销标记,表示数据已被删除,校验失败。

对于编辑过的数据,相当于在区块链上发起两笔交易,一笔交易用于撤销编辑前的数据,另一笔交易用于将修改后的数据上传到链上。

一般来说,用户自己并没有能力通过区块链验证数据是否存在以及是否被篡改,而是需要通过中心化平台提供的验证能力进行验证,这涉及到平台需要验证的内容。

下面列出了一些比较常见的验证项目(不代表顺序),可以根据实际需要选择:

本文由@Nik原创发表于人人都是产品经理,未经允许禁止转载

题图来自Unsplash,基于CC0协议

奖励作者,鼓励TA抓紧创作!

欣赏