VRF proof

术语说明

SK: 私钥

PK: 公钥

M:输入值

R:哈希输出

P:证明

函数

证明人根据输入M和私钥计算出唯一的哈希值R

R = VRF_Hash(SK, M)

证明人根据输入M和私钥计算出唯一的证明P

P = VRF_Proof(SK, M)

验证者将证明转换成哈希值

R = VRF_P2H ( P )

即 VRF_Hash(SK, M) == VRF_P2H(VRF_Proof(SK, M))

验证者校验

True/False = VRF_verify(PK, M, P)

特性

唯一性:对于特定的一对公私钥,任意一个输入都有并且只有一对 R和P

抗碰撞:即使知道私钥也无法构造2个不同输入获得同样的R和P输出

随机性:无私钥者无法通过输入值来判断输出R的值的范围

一种应用

简化的VRF Proof 抽签流程 – 一种POS共识。

权重值w作为节点的抽签次数。

输入值M是给定的,seed+上一轮的抽签信息等。

权重为1的节点,计算一次 VRF_Hash(SK, M) 和VRF_Proof(SK, M),得到R和P。

广播R和P,所有节点的的R值对比,校验各个节点的P R M,R最接近某个固定值的即为出块节点。

节点不能通过随意设定R值企图接近某个固定值,也不能尝试不同的M值去试图接近它。

对于权重节点为w的节点,输入值M’ = Next(M),得到w个M,计算出 w个R 和 P,再参与验证和对比。即权重越大,抽签次数越多,中签概率越大。

先公布R,选出区块,再发布区块的时候公布P,同时完成校验和出块,避免攻击。

小结

VRF证明,本质上是对R的证明。

证明我和R的生成关系,并不能证明我和随机数的生成关系。

参考

VRF 密码学抽签原理及其在 Algorand 中的应用

https://blog.iyouchain.com/2019/06/28/algo-vrf-cryto-sortition-analysis/

VRF proof极简理解相关推荐

  1. 简约之道:极简风格界面设计的起源

    家里两边通着空气,这样坐着光脚甚至有些凉意,看一眼天气明天最高气温21度,想起前两天有消息说今年厄尔尼诺要持续几个月什么什么,本想买个小龟王平时骑一骑,现在看来不是很乐观. 从没炒过股票,连所谓的理财 ...

  2. 7句话让Codex给我做了个小游戏,还是极简版塞尔达,一玩简直停不下来

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 梦晨 萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 什么,7 ...

  3. 10分钟手撸极简版ORM框架!

    最近很多小伙伴对ORM框架的实现很感兴趣,不少读者在冰河的微信上问:冰河,你知道ORM框架是如何实现的吗?比如像MyBatis和Hibernte这种ORM框架,它们是如何实现的呢? 为了能够让小伙伴们 ...

  4. 负载分析及问题排查极简教程

    作者 | Hollis ,来自 | Hollis 平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load.cpu.mem.qps.rt等.每个指标都有其独特的意义,很多时候在线上出现问题时 ...

  5. csvtk:高效命令行版极简dplyr

    写在前面 什么时候写 csvtk 呀,csvtk 也借鉴了些 datamash 的东西. 之前写 datamash 的使用教程 linux 极简统计分析工具 datamash 必看教程,收到了一位读者 ...

  6. 写一个操作系统有多难?自制 os 极简教程

    不知道正在阅读本文的你,是否是因为想自己动手写一个操作系统.我觉得可能每个程序员都有个操作系统梦,或许是想亲自动手写出来一个,或许是想彻底吃透操作系统的知识.不论是为了满足程序员们自带的成就感,还是为 ...

  7. 第37件事 极简设计的3个方面

    极简设计是相对于过度设计来说的,极简主义设计已经被描述为最基本的设计,剔除了多余的元素.色彩.形状和纹理,以及流程和步骤.它的目的是使内容更为突出并成为焦点.极简主义设计意味着平静,将思想带回本真,回 ...

  8. cnocr训练_cnocr: 极简的中文OCR Python包

    Update 2020.04.21: 发布 cnocr V1.1.0 更轻量的 cnocr-V1.1.0 :最小模型只有 6.8M.具体说明见: BreezeDeus:更轻量的 cnocr-V1.1. ...

  9. Kotlin极简教程:第4章 基本数据类型与类型系统

    原文链接:https://github.com/EasyKotlin 到目前为止,我们已经了解了Kotlin的基本符号以及基础语法.我们可以看出,使用Kotlin写的代码更简洁.可读性更好.更富有生产 ...

最新文章

  1. 每日Ubuntu小技巧-改变登陆窗口背景
  2. 根据MATLAB的histeq函数改写的运行在OpenCV下的直方图规定化C源码
  3. 数据结构与算法之KMP算法02
  4. yolov4的全面详解
  5. 如何处理高并发情况下的DB插入
  6. mysql瓶颈分析_网站瓶颈分析—MYSQL性能分析
  7. 信息学奥赛一本通 1101:不定方程求解 | OpenJudge NOI 2.1 7650 | 小学奥数 7650
  8. SQL Server触发器创建、删除、修改、查看
  9. java date nov_Java DateTime格式为此
  10. 『华为ICT』数据通信网络基础
  11. 开源OA系统魔方OA ASP.Net 4.0或4.8
  12. Panel 控件概述(Windows 窗体)
  13. 从“机器换人”到“虚拟数字员工”,我们应该担心人工智能“抢饭碗”吗?
  14. java测试模块耗时,性能测试技巧:java程序cpu耗时分析
  15. 贪吃蛇的纯C语言实现过程
  16. MyBatis,你真的了解了吗
  17. 2021年危险化学品生产单位安全生产管理人员考试试卷及危险化学品生产单位安全生产管理人员实操考试视频
  18. 对连续值/离散值进行预处理的两种方式(标准化/one-hot化)、反标准化/逆标准化、字符串预处理
  19. coreldraw课表设计作品_平面设计软件的详细资料来了~看看有你常用的吗?
  20. shell脚本编程学习笔记6(xdl)——字符串截取命令

热门文章

  1. 搭建红外遥控arm-hadoop集群过程
  2. html页面长按保存图片,h5长按保存图片
  3. 实现PPT演示的"非全屏播放"效果
  4. SpringTask的入门使用
  5. Unraid配置阿里云加速镜像安装荒野无灯qBittorrent镜像
  6. 洛谷题目--P1008三连击--正难则反、模拟、枚举、暴力<每日一题>
  7. python idle有哪些_Python IDLE入门简介 Python IDLE与python有什么区别
  8. Java、JSP通用SQL查询分析器
  9. 计算机中大量文件需要管理怎么办,怎么处理目标文件系统文件过大
  10. Access时间日期比较查询的方法