深入理解以太坊 (41):技术架构 3.4.3

阅读数:58 2020 年 1 月 18 日 20:04

深入理解以太坊(41):技术架构 3.4.3

(签名)

内容简介
这是一本从原理和实践两个层面系统、深入讲解以太坊技术的专著,从设计理念、技术架构、共识算法、智能合约、以太坊虚拟机、开发工具、DApp 开发、企业以太坊解决方案、跨链技术等近 10 个方面进行了详细讲解,既适合初学者系统学习以太坊的原理和应用开发,又适合有一定基础的开发者深入掌握以太坊的底层运行机制。
全书一共 11 章:
第 1~3 章对以太坊的系统架构、设计理念和技术架构进行了系统介绍,包括以太坊项目的起源和发展路线图、核心技术、共识问题、图灵完备性、整体设计思路和各模块的核心功能实现等核心内容。
第 4 章深入剖析了 PoW、PoA、PoS 等共识算法的适用场景、设计思想、技术实现和优缺点。
第 5~7 章围绕智能合约展开,系统讲解了智能合约语言 Solidity、智能合约应用开发、智能合约运行原理和实现细节,以及以太坊虚拟机的运行原理和智能合约字节码的解析等内容。
第 8 章介绍了以太坊周边的工具,教读者如何在不开发代码的情况下完成与以太坊网络的交互。
第 9 章介绍了以太坊技术的企业级应用以及企业以太坊联盟的标准化进展。
第 10 章对跨链技术和方案进行了方向性探讨,虽然目前跨链技术还不成熟,但被视为后以太坊时代的区块链技术热点。
第 11 章分析了以太坊现阶段面临的发展瓶颈,并对可能的解决方案进行了展望。

钱包中的账户最重要的功能就是对指定的数据进行签名,最常用的是对交易进行签名。签名之前需要相对账户进行解锁,解锁过程如上面所述,并设置超时时间,超时后自动上锁,解锁成功的账户私钥记录在 unlocked 中。当需要签名时,首先从 unlocked 中检查该账户是否已解锁,如果已经解锁并且未超时,则使用该账户私钥对交易进行签名。

以太坊中生成签名数据的算法有两种,具体如下。

  • EIP155Signer。支持 EIP155(定义了以太坊 chainID,用于区分 ETH、ETC、测试网络),是 the DAO 攻击硬分叉之后使用的签名算法。
  • HomesteadSigner 和 FrontierSigner。不区分以太坊 ChainID。

区别是签名数据 R、S、V 中 V 的值不同。签名步骤具体如下。

1)对待签名数据计算 Hash。

2)对 Hash 进行 ECDSA 签名。

3)使用私钥对数据进行签名,签名结果是 65 字节长度的数据,格式是 [R||S||V],R 和 S 分别为 32 字节长度,V 值是 0 或者 1。

4)HomesteadSigner 和 FrontierSigner 对 V 值 +27,所以 V=27 或 28。

5)EIP155Signer 对 V 值重新进行计算:对 V 值 +CHAIN_ID * 2 + 35。

6)返回最终结果 R、S、V。

深入理解以太坊(41):技术架构 3.4.3

购书地址 https://item.jd.com/12647508.html

评论

发布