这篇文章首次被发布在Medium上。
[caption id="attachment_476258" align="alignnone" width="730"] 虚拟地址[/caption]此前,我们展示了一种新颖且私密的方式来购买比特币虚拟地址,这是使用零知识协议证明(Zero-Knowledge Key-Statement Proof)来做到的。实际上,它有一个缺点:在买方验证了步骤7中的证明后,他可以中止交易协议,而卖方浪费资源去寻找解决方案,却没有得到报酬。
为了克服这个缺点,我们使用智能合约完全在链上进行交易。只有提供了私钥,例如衍生/组合公钥/地址满足虚拟模式时才会进行支付。它的完整代码如下所示。
为了高效地计算相異点相加(第16行)和乘法(第13行),我们使用了与之前相同的技术。在我们有了组合公钥之后,我们在第19行验证其对应的地址是否满足预先定义的虚拟模式。
扩展
我们只展示了如何验证衍生地址是否具有某些特定的前置代码。但我们还可以直接扩展它,使其地址或公钥满足任何任意的要求。
另请观看:CoinGeek纽约大会演示,比特币系统上的智能合约与计算