作者:Spruce
2017 年已经匆匆离去,回顾过去一整年,似乎区块链应用一直处于隐忍未发的状态,很多项目的落地已处于验证阶段,万众期待的爆点却一直没能出来.
有人说 ICO 不是很热吗?比特币不是涨了几十倍吗?撸猫游戏不是很火吗?的确,这些纯线上的虚拟资产场景是热了一把,但说到真正解决了实际生活中什么问题?什么痛点?好像还没有触及吧.
我们不禁要问,究竟是什么限制了区块链技术的应用呢?原因可能有很多,不妨先从技术角度分析一下.
区块链技术是一个对多种技术的组合创新,多种技术包括:
1, 共识算法: POW/POS/DPOS/PBFT/BFT-Raft/Paxos/Kafka
2, P2P 通讯: 自举 (bootstrapped)/ 连接 / 广播
3, 签名验签: ECDSA/secp256k1/ED25519/MultiSig
4, Hash 锁定: Merkle 树 / MPT 树
5, UTXO 记账: 流水账
6, 智能合约: P2PKH/P2SH/Oracle / 状态机
7, 隐私保护: 零知识证明,同态加密,CoinJoin 加密技术
8, 私钥存储: HD 协议 (Hierarchical Deterministic Key Creation),钱包 Wallets,丢失找回
9, 算力分发:矿池分发
这些技术要素如果站在应用需求角度来划分是这样的:
image.png
注:对外安全性是指对抗非区块链节点的外部攻击和信息窃取,对内安全性是指区块链节点之间的信息安全防护.
其中的短板比较明显,在易用性和对内安全性上亟需提高,对应的技术要素包括隐私保护和私钥存储.
其中隐私保护主要指参与共识记账的多方并不一定应该拥有数据,或者说拥有数据的使用权.遵照业务的相关性,只要交易的双方或几方持有即可,而不应该是全联盟的所有节点.但是作为历史的见证方,最好是所有节点上的数据都可以拿出来见证,并且所有节点可以依据自己的见证进行投票.做到这一点可能的实现技术有零知识证明,同态加密或者 CoinJoin 混淆技术等.目前这个方向上业界的突破还较少,大部分还没有进入实用阶段,但是站在商业应用的角度看,隐私保护恰恰又是商业应用中最关心的.
我们先聊一下零知识证明的可行性.大家知道,零知识证明是在不泄露信息内容的情况下向其他人证明我知道这个信息,一般过程如下:
1. 证明方向验证方发送满足一定条件的随机值, 这个随机值称为 "承诺";
2. 验证方向证明方发送满足一定条件的随机值, 这个随机值称为 "挑战";
3. 证明方执行一个秘密的计算, 并将结果发送给验证方, 这个结果称为 "响应"; 4. 验证方对响应进行验证, 如果验证失败, 则表明证明方不具有他所谓的 "知识",退出此过程.否则, 继续从 1 开始, 重复执行此过程 t 次.
如果每一次验证方均验证成功, 则验证方便相信证明方拥有某种知识,而且此过程中, 验证方没有得到关于这个知识的一点信息.
用通俗的话说就是只要证明方通过了 "大学毕业答辩",验证方就颁发 "本科学历证书",至于证明方是不是真的掌握了本科生应该掌握的所有知识,只能大概率保证.这个大概率保证用在需要严格验证交易金额的情况下,不免有点让人担心.
image.png
再说说同态加密,Craig Gentry 给出的直观定义是 "A way to delegate processing of your data,without giving away access to it.(一种委托处理数据的方法,而不允许访问它.)" 结合区块链共识的场景来说就是,节点 A 发起一笔与节点 B 无关的交易,希望节点 B 做一下见证,并登记起来.于是节点 A 先把交易信息加密,再把密文发给节点 B,节点 B 收到请求后使用 "验证函数" 对密文进行验证,如果验证通过就登记.按照区块链记账的要求,这个 "验证函数" 需要能完成对加密交易的签名验证,与已经登记的交易信息比对.
其中签名验证本身是一套非对称的加解密算法,如果能对签名的密文进行验证,而又不解密签名,本身似乎就是对签名算法的挑战.而与已经登记的交易信息比对这一步,如果之前就是加密的,应该还好比对.但如果原来的交易是明文的,那首先需要对原来的明文加密,这又需要知道加密算法,就难办了.因此同态加密即使性能取得了突破,用在多节点共识上挑战也很大.
CoinJoin 混淆技术是指把多个用户的交易合并到一起,交易有多项相同大小的输出,让人无法分辨输出和用户的对应关系,也打破了所有输入都来自同一个人的规律.如果找不到多个用户,其实用一些 fake 交易做混淆也行.这个方法在同质资产交易中是有效的,但是如果是不同质的交易,或者信息类的应用就不奏效了.
另外私钥存储,私钥签名对传统业务用户来说很难理解,很难配合,教育成本很高,而这些恰恰又是区块链安全运行的前提条件.在大部分用户还没有意识到自己的私钥和家里的钥匙一样重要之前,通过钱包 + 私钥托管的方式是一条可行途径.如果一定要把私钥交给用户,就需要配套私钥丢失找回的功能或者解锁用户数据的功能.这一点上业界的创新也不多,很多还是采用用户名 + 登录密码的方式,把私钥托管起来,可以保证用户体验,但无法自证清白.这方面,技术上挑战不是特别大,挑战的是左右手的权衡,方法的创新.
另外在法律条款上也亟须能支撑到私钥签名和电子签名的同等地位,数字资产与实物资产证明的同等地位.但是没有具体的场景,法律肯定不会先行去为一门技术站台,这似乎成了悖论.
站在 2018 年的开头,我们希望区块链能在一个具体场景中先行落地下来,不能再等着采用通用技术来解决问题,应该先聚焦到一个具体应用中,搞定特定某个场景的问题再说.毕竟解决一个具体问题比解决一类通用问题要容易的多.希望 2018 年是区块链落地的突破之年!
来源: https://cloud.tencent.com/developer/article/1019925