YOUChain(有链)公链 开源项目介绍——go-bls

本文介绍YOUChain 加密签名方面的思考和方案,go-bls 库已于 github 开源,项目地址:[https://github.com/youchainhq/go-bls]

YOUChain 签名方案的考虑

1 面临的问题

YOUChain所采用的共识机制,是基于VRF的一种新型PoS共识。对基于PoS的共识,基本上都存在一个对区块做签名投票的机制,所有这些投票信息,都需要存储及随区块广播。

考虑一个采用secp256k1签名方案的例子,这时单个签名的大小是 64 字节,如果有100个账户给一个区块投票,则仅签名数据就至少62.5KB。这个数据量必须得认真对待。

关于此问题,我们需要考虑,能否减少(压缩)一个区块的签名投票数据,以减轻存储及网络通信负担?

对多个签名进行压缩的技术,已知的包括阈值签名(Threshold signature, 也有翻译叫“门限签名”)方案和BLS签名方案。其中阈值签名方案需要有一个复杂的初始化过程,并且要求参与者集合稳定(若参与者集合发生变更,则必须重新进行一轮全局初始化),这对于YOUChain这种最终将完全去中心化的公链来说,是无法接受的。BLS签名方案也是实现签名聚合的一种主要技术,而这也是我们重点评估并考虑采用的技术。

2 BLS简介

BLS签名方案是由Boneh-Lynn-Shacham三人于2001年提出的一种椭圆曲线签名方案,具有一些良好的特性,最重要的就是“签名聚合”:多个签名可以聚合成单个签名,聚合后的签名长度就是单个签名的长度。基于这些特性,BLS签名方案在多签及签名聚合、m/n多签等方面都能提供很好的支持。

2.1 BLS的基本原理

BLS签名的核心,是椭圆双曲线配对(Elliptic curve pairings)函数,也称双线性映射(bilinear maps)函数。要了解BLS的基本原理,重点是理解配对函数的性质。首先,我们需要一下基本知识:

1.椭圆曲线密码学定义了两个运算:曲线上两个点的加法运算 +,以及一个整数与曲线上的一个点进行的标量称法运算 ,其具体定义当前不需深究,只需要记住这些运算的结果也是

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值