用 golang 从零开始构建简易的区块链,这是系列文章的第5篇 : 地址
简要介绍以太坊的签名算法 secp256k1
思维导图我把以太坊签名分为对消息签名与对交易签名,这两种签名都是基于ECDSA算法与流程,本章就让我们来搞清楚两种签名具体的内容。
前段时间跟行业内人士聊天的时候,聊到了一个有趣的话题,即以太坊中私钥,公钥和地址分别是什么关系?以及ECDSA是如何工作的?
比特币交易工作原理简介
有限域上的椭圆曲线是零知识证明的基础。零知识的实现是基于离散对数问题。从计算的角度来看,F_p是个有限域,在之基础上建立的椭圆曲线点的运算都是在这个域范围内。有限域上的椭圆曲线上有很多循环子群F_r,具有加法同态的特性。离散对数问题指的是,在循环子群上已知两点,却很难知道两点的标量。
什么是 Schnorr 签名, Schnorr 签名的优势: 密钥和签名聚合, 批量验证
什么是 Taproot, 包含了 3 个 BIP: Schnorr 签名(BIP 340)、Taproot(BIP 341)、 Tapscript(BIP 342)
在密钥交换中使用ECDH,在数字签名中使用ECDSA,secp256k1 曲线已被证明可以在密钥交换和 RSA 签名中取代 Diffie-Hellman 方法。
我们带来了 circom-batch-ECDSA,一个基于circom-ECDSA(由0xPARC 社区中其他人之前完成的工作)之上的概念验证实现,其灵感来自halo2-batch-ECDSA,它允许在单个 SNARK 中显著更快地验证一批 ECDSA 签名。
ECDSA的使用方法,测试用例,多签基础
程序员易懂的 ECDSA 原理简述
密码学签名是区块链的关键技术之一,可以在不暴露私钥的前提下证明地址的所有权。该技术主要用来签署交易(当然也可以用来签署其他任意消息)。本文会讲解数字签名技术在以太坊协议中的用法。
许多在线ECDSA教程涉及到数学的使用,关于s, r, v的一些东西,我们所有的开发人员都同意,其是无聊的,并且很难在没有bug的情况下实现。因此,在本文中,我们将使用OpenZeppelin和Ethers.js编写的合约中的内置函数来构建这个功能。
ECDSA 在多签中的运用,一个多签转账的例子。