路漫漫其修远兮, 吾将上下而求索

0%

与 Ledger 类似. 对于 trezor 硬件钱包, MetaMask 团队也做了封装, 保证了其 Api 和Simple Keyring 的一致性.

由于对于 trezor 的封装逻辑和 Ledger 相似, 也是分为了 address 的派生以及合约的签署. 且将硬件钱包桥接程序和硬件钱包驱动程序的划分也大体一直, 所以相关逻辑本文中不再赘述. 主要对其代码进行一波分析

阅读全文 »

eth-ledger-bridge-keyring 是 MetaMask 团队基于 Simple Keyring 协议开发的 Ledger 硬件钱包链接方案. 涉及到的逻辑主要是硬件钱包账户导入和合约签署(签名)

基础逻辑

为了代码逻辑的抽离, Metamask 使用了 iframe 嵌套实际硬件钱包连接的方案. 在 background.html 中通过 iframe 嵌套了连接中间页, 在业务代码中则利用 eth-ledger-bridge-keyring 通过 postMessage 和中间页进行通信从而实现硬件钱包的链接.

名词解释

  • 硬件钱包驱动程序: 硬件钱包厂商提供的 js 代码, 主要功能是实现浏览器和插件硬件的通信
  • 硬件钱包桥接程序: metamask 团队实现的为了抹平硬件钱包驱动程序之间的 api 区别的胶水代码, 同时承担了基于 publicKey 派生 address 的功能

本文主要描述的 eth-ledger-bridge-keyring 就是上述名词中的硬件钱包桥接程序

阅读全文 »

本节视频 https://www.bilibili.com/video/BV1Vt411X7JF/?p=4

双花攻击 (double spending attack)

数字货币本质上是带有签名的数据文件, 可以进行复制和备份. 也就是说, 我可以把自己的钱复制一份, 先花给一个人再把备份花给另外一个人.

传统的解决双花问题的方案, 数字货币的发行由中心化机构完成. 每次发行的货币都包含一个编号, 每次支付都要经过货币发行方的认证来查询真伪. 该方法依赖第三方机构来判断数字货币的真实性来解决双花问题, 是一个典型的中心化方案. 现实生活中 Alipay Wechat 应该用的就是类似的方案. 由于他们有比较高的可信度或者有政府背书, 即可采用这种方案…

然而, 有些场景下(如跨国交易). 并不存在这样可依赖的第三方机构. 此时以去中心化思想为核心的比特币便吸引了人们的注意…

阅读全文 »

本节视频 https://www.bilibili.com/video/BV1Vt411X7JF/?p=3

哈希指针(hash pointers)

普通的指针存储的是某个结构体在内存中的起始位置, 哈希指针除了保存结构体的起始地址还要保存结构体的哈希值. 通过哈希指针不仅能找到结构体的位置同时还能检测出结构体的内容是否被篡改过, 因为保存了其哈希值.

阅读全文 »