之前,我们展示了一种使用 零知识密钥声明证明 购买比特币虚荣地址的新颖且私密的方式。在实践中,它有一个缺点:买方在步骤 7 中验证了证明后,他可以中止交换协议,卖方浪费资源寻找答案却没有得到报酬。

一个虚荣地址

为了克服这个缺点,我们使用智能合约完全在链上进行交换。只有提供了私钥(例如派生/组合公钥/地址)满足虚荣地址模式,它才会支付。完整代码如下所示。

import "ec.scrypt";// outsource a vanity address generation
contract VanityAddr {// buyer's public keyPubKey pubKey;// vanity address pattern such as vanity prefix "nChain"bytes pattern;// x is the secret seller finds// all other parameters are auxiliaries of itpublic function offerVanityAddr(PrivKey x, PubKey X, PubKey derivedPubKey, int lambda, SigHashPreimage txPreimage) {// verify = X = x * G?require(Tx.checkPreimageAdvanced(txPreimage, x, X, Tx.invK, Tx.r, Tx.rBigEndian, SigHashType(SigHash.ALL | SigHash.FORKID)));// verify P' = P + Xrequire(EC.isPubKeySum(this.pubKey, X, lambda, derivedPubKey));// meet requirementrequire(matchPattern(derivedPubKey, this.pattern));}// check if public key's address matches the given patternstatic function matchPattern(PubKey pubKey, bytes pattern) : bool {// convert public key to addressbytes addr = ripemd160(sha256(pubKey));// prefix matchint l = len(pattern);return addr[:l] == pattern;}
}

VanityAddr 源代码

为了有效地计算点加法(第 16 行)和乘法(第 13 行),我们利用了与以前相同的技术。
在我们获得组合的公钥后,我们在第 19 行验证其对应的地址是否符合预定义的虚荣模式。

延展

我们只展示了如何验证派生地址是否具有特定前缀。但是可以直接扩展它以使地址或公钥满足任何任意要求。

去信任外包虚荣地址生成相关推荐

  1. 《操作系统》OS学习(四):计算机体系结构、内存层次和地址生成

    计算机除了计算能力之外还有存储能力,存储能力即计算机拥有一系列的存储介质,我们可以在存储介质上存储我们的代码和数据.计算机体系结构中约定了哪些地方可以用来存储数据:CPU内的寄存器.内存和外存.不同的 ...

  2. 【操作系统/OS笔记04】内存分层体系、地址生成、连续内存分配概论

    本次笔记内容: 3.1 计算机体系结构及内存分层体系 3.2 地址空间和地址生成 3.3 连续内存分配:内存碎片与分区的动态分配 3.4 连续内存分配:压缩式与交换式碎片整理 文章目录 物理内存 计算 ...

  3. matlab计算fft旋转因子表,一种用于FFT中旋转因子乘运算的操作数地址生成方法与流程...

    本发明属于计算机技术领域,涉及一种用于FFT中旋转因子乘运算的操作数地址生成方法. 背景技术: 离散傅里叶变换(DFT)是数理方程.线性系统分析.信号处理与仿真等领域中的一种常见方法,特别是快速傅里叶 ...

  4. 扩增子分析解读4去嵌合体,非细菌序列,生成代表性序列和OTU表

    写在前面 之前发布的<扩增子图表解读>系列,相信关注过我的朋友大部分都看过了(链接直达7月文章目录).这些内容的最初是写本实验室的学生们学习的材料,加速大家对同行文章的解读能力. < ...

  5. Vue中使用uuidv1根据时间戳和MAC地址生成唯一标识

    场景 若依前后端分离版手把手教你本地搭建环境并运行项目: 若依前后端分离版手把手教你本地搭建环境并运行项目_霸道流氓气质的博客-CSDN博客_若依前后端分离搭建 在上面搭建起来Vue项目的基础上,怎样 ...

  6. 短链接java代码_java高仿新浪微博短链接地址生成工具ShortUrlGenerator.java

    仿新浪微博 短链接地址生成工具 ShortUrlGenerator.java String sLongUrl = "http://tech.sina.com.cn/i/2011-03-23/ ...

  7. java 新浪短链接_java高仿新浪微博短链接地址生成工具ShortUrlGenerator.java | 学步园...

    仿新浪微博 短链接地址生成工具 ShortUrlGenerator.java String sLongUrl = "http://www.zuidaima.com/share/1550463 ...

  8. 外包公司值不值得去?外包公司的面试特点

    在我们IT行业,外包公司主要分为"人力外包"和"项目外包".人力外包指的是On Site形式,就是员工的工作地点在客户公司的内容."项目外包" ...

  9. java高仿新浪微博短链接地址生成工具ShortUrlGenerator.java

    原文:仿新浪微博 短链接地址生成工具 ShortUrlGenerator.java 源代码下载地址:http://www.zuidaima.com/share/1550463378934784.htm ...

最新文章

  1. 模糊选择器 js_5个很棒的 React.js 库,值得你亲手试试!
  2. 开普勒行星运动第二定律在电子与原子核运动中的应用
  3. 服务网格:Istio和AWS App Mesh
  4. 《Python Cookbook 3rd》笔记(4.13):创建数据处理管道
  5. inno setup 打包mysql_使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包
  6. 05-sqlyog的安装与基本使用
  7. 软件测试 黑盒白盒测试方法总结
  8. iOS之socket编程
  9. python爬虫——批量爬取百度图片
  10. 运营商大数据有哪些好处
  11. yarn-cluster 和yarn-client区别
  12. VS2015卸载官方教程
  13. 测试工具|(本来不想分享的)安卓系统Ping IP工具
  14. NFC怎么复制房卡_为了省门禁卡的钱,买了NFC读卡器,到底值不值
  15. JFianl项目中Controller层方法不进行权限校验-可以添加注解@UnCheck
  16. 个人对ReadyBoost加速你的Win7的看法
  17. 模拟wechat红包 版本2.0
  18. html5网页制作电脑版,页未央HTML5制作神器PC版
  19. aftershokz蓝牙搜不到_硬核!小程序时怎么控制蓝牙设备的?
  20. Icon Font的转换

热门文章

  1. 2020华为杯E题——基于灰色预测的大雾能见度预测模型(附代码)
  2. java毕业生设计学生信息管理系统计算机源码+系统+mysql+调试部署+lw
  3. 今天睡眠质量记录74分
  4. 移动DRM技术分析与应用策略
  5. (转)VC++之系统控制之设置显示系统当前时间
  6. IDEA import导入的类明明存在,却飘红,你可以这样做
  7. 为什么这些UI设计很糟糕?什么是好的UI设计?
  8. RHEL 6.5----SCSI存储
  9. 一个简单的在线md5验证工具的实现
  10. GitLab将技术许可极狐公司-JH发行版来了