『学概念找员外』零钞与建立信任
用于搭建零币的工具之一(RSA累加器)需要进行一次性信任设置。特别的是,一个被信任方需要选择两个大的质数p和q,并且公示N=p×q
作为所有人在系统的整个生命周期中使用的参数。我们可以把N看作一个公钥,只不过它被用于所有的零币而不是仅仅对应于某一个体。只要这个被信任方,销毁任何关于p和q的记录,系统就可以被认为是安全的。需要强调的是,这一做法是基于对两个大质数的积进行因子分解是不可行的这一假设的普遍认可。但是,如果任何人知道了秘密的因数p和q(也被称为“陷阱门”),他们就可以在不被监测到的情形下,为自己创建新的零币。所以,这些秘密的输入只能被使用一次,在用于产生相对应的公钥后就被销毁。
这里有一个有趣的社会学问题,一个个体怎么选择这个N并能够让每个人相信,在设置时使用的相对应的质数p和q,已经被安全地销毁了,这一过程还不是很清楚。如何实现这个目标,会有很多不同的方案,其中就包括“阀值加密”技术,该技术可使用多个代理协同计算出N,而只要其中一个代理将自己的秘密输入销毁,这个系统就可以被认为是安全的。
我们还可以使用其他略有不同的加密构造来避免设置这样一个被信任方。特别是,有实践表明,随机生成一个大数就具有很高的安全性,因为这样一个数字很有可能不能被完全分解。但遗憾的是,这样做会带来很大的效率冲击,因此这种方法并不实用。
零钞
零钞是一种不同的匿名性加密数字货币,它建立在零币的概念之上,但将加密技术提高到了更高的层次。零钞使用的是一种被称为zk-SNARKS的密码学技术,这种技术可以使得零知识验证更加简洁、更加有效率,要点就在于,系统的整体效率可以达到某一定程度,使得整个网络可以不需要依赖一种基础币而运行,所有的交易都可以以零知识验证的方式进行。
如我们所看到的,零币也支持那些本不需要无关联性的普通交易,只不过在其上做了计算量昂贵的混币交易进行补充。这种混币交易由固定面值的数字币组成,交易价值的拆分与合并只能在基础币系统里实现。在零钞系统中,这种差异就不存在了,交易金额的大小被封装在一个承诺中,在区块链上不再可见,密码学证据确保了拆分与合并的正确性,用户并不能凭空创造出零钞。
账本公开记录的唯一内容就是交易的存在性,以及矿工们用来验证系统正常运行所需要的关键属性的证明。区块链网络上既不显示交易地址,也不显示交易价值。唯一需要知道交易金额的用户,是本次交易的发送方和接收方,矿工们是不需要知道的。当然,如果其中存在交易费用,矿工们则需要知道的仅仅是手续费,这点也不会影响匿名保护。就匿名性和隐私性来说,零钞这种完全不可追踪的交易系统自成门派。因为公开账本并不包含交易金额,零钞对针对混币服务的旁路攻击是免疫的。