当前位置: 首页 > news >正文

以太坊学习二:签名

  ECDSA是基于椭圆曲线生成公私钥进行数字验证和验证的算法过程。以太坊上两个账户Alice和Bob在以太坊网络中进行ETH转账交易的过程如下。
  (1)Alice的DApp工具生成一个随机数,作为她账户的私钥k
  (2) 在椭圆曲线secp256k1 上生成p点,根据等式Q=kp,该曲线上所得Q点的坐标(x,y)经过数学处理后就可以得到Alice的公钥,公钥经过Hash之后再截断便得到了Alice在以太坊中账户的地址
  (3) 生成转账的交易信息
  (4) Alice的DApp对转账交易tx进行RLP编码,再进行SHA-3的Hash,最后对Hash进行签名,得到签名结果为65字节的(r,s,v)。其中r和s分别为32字节,是签名的主体部分;v=27+(r%2),可看做签名结果的一种简单校验,在以太坊中作为恢复签名的recoveryID。签名实质上是使用私钥k对交易摘要进行加密的过程。
   交易验证过程具体如下:
   a. 交易验证节点接收到Alice发起转账原始交易和她的签名。
   b.校验Alice签名,包括交叉recoveryID, 然后结合签名和交易Hash恢复出Alice的公钥Q。
   c.对公钥Q进行Hash,截取后20位字节,得到Alice的账户地址。
  d.对比原始交易中的from地址和演算恢复的Alice地址是否相同,如果相同则证明本次Alice转账交易是合法的,否则拒绝该交易。
  签名验证实质上是使用公钥Q对交易进行解密的过程。以太坊Go客户端代码,通过cgo实际集成了比特币的secp256k1库,Go代码封装了签名并依据签名恢复公钥。
  以太坊中的账户地址和比特币不同,转换相对简单。具体来说就是Hash结果取前20个字节,这里的Hash算法是SHA3-256,可以用如下代码来表示:

crypto.Keccak256(pubKey)[12:]
func PubKeyToAddress(p ecdsa.PublicKey) common.Address{
	pubBytes := FromECDSAPub(&p)
	return common.bytesToAddress(Keccak256(pubBytes[1:])[12:])
}

  最近琐事太多+拖延症 使得写博客的计划一拖再拖,以后力争每月至少更新一篇博客。

相关文章:

  • 配置本地Maven仓库——IDEA配置本地Maven源
  • mysql8-索引的使用规则验证
  • Python神经网络入门与实战,神经网络算法python实现
  • un8.31:用jQuery实现调用不同项目api接口的功能。
  • Java Agent入门教程
  • 航班信息查询 易语言代码
  • C++ 小游戏 视频及资料集(四)
  • 利用HFSS-API设计指数渐变传输线
  • js的es6
  • 开源交流丨任务or实例 详解大数据DAG调度系统Taier任务调度
  • 配置Tomcat时系统环境变量已经配置好,但是启动Tomcat时还是闪退的解决办法
  • app,小程序打包
  • CVPR2022|比VinVL快一万倍!人大提出交互协同的双流视觉语言预训练模型COTS,又快又好!
  • 2023年考武汉安全员证有什么作用?安全员岗位职责是什么?甘建二
  • 开户许可证识别 易语言代码
  • Android 控件背景颜色处理
  • CAP理论的例子讲解
  • emacs初体验
  • ES10 特性的完整指南
  • Flannel解读
  • Java比较器对数组,集合排序
  • Java知识点总结(JavaIO-打印流)
  • JS题目及答案整理
  • SQLServer插入数据
  • uni-app项目数字滚动
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • vue脚手架vue-cli
  • 关于 Cirru Editor 存储格式
  • 译米田引理
  • Spring Batch JSON 支持
  • #AngularJS#$sce.trustAsResourceUrl
  • #define与typedef区别
  • #FPGA(基础知识)
  • (26)4.7 字符函数和字符串函数
  • (四)linux文件内容查看
  • (一)80c52学习之旅-起始篇
  • (一)认识微服务
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)shell调试方法
  • (转)Sql Server 保留几位小数的两种做法
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .NET Core 中的路径问题
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET学习全景图
  • @javax.ws.rs Webservice注解
  • @RequestMapping 的作用是什么?
  • [ 第一章] JavaScript 简史
  • [2544]最短路 (两种算法)(HDU)
  • [AutoSAR 存储] 汽车智能座舱的存储需求
  • [AutoSar]工程中的cpuload陷阱(三)测试
  • [AX]AX2012 SSRS报表Drill through action
  • [C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改
  • [C/C++]数据结构----顺序表的实现(增删查改)
  • [Deep Learning] 神经网络基础
  • [EFI]ASUS EX-B365M-V5 Gold G5400 CPU电脑 Hackintosh 黑苹果引导文件