昨天,我成功地用我的 Ledger、Trezor 和 Tangem 卡签署了 Chia 交易。操作方法如下。
Chia 社区成员一直在呼吁得到 Ledger 硬件钱包的支持。话虽如此,制作 Ledger 应用程序并不容易。据我所知,编码部分本身就很困难,而且Ledger的内存空间有限 —— (Ledger Nano X 有 2 MB 的存储空间,官方称足以支撑“最多 100 个应用程序”) —— 而且其计算能力非常有限。在这些限制下,构建一个可以解析 Chia 交易的应用程序甚至是不可能的 —— 我们甚至还没有考虑诸如应用程序验证要求、屏幕尺寸有限以及获得新原语支持可能延迟等问题。
如果开发Ledger应用程序如此困难,为什么不寻找其他途径呢?要了解这是如何实现的,我们首先需要退一步并讨论流行的以太坊标准坊。
当在加密货币中说“签名”时,他们通常指的是签署交易。但支持区块链的加密原语通常允许人们签署*任何*数据。在某些时候,一些网站/dApp开始要求用户参与链下指定消息签名或用于登录(即证明用户拥有地址),或者稍后在链上提交给自定义合约。
然而,有一个大问题:用户不知道他们所签署的是什么。他们只有最终的哈希值——无法判断他们是在登录网站还是在允许恶意行为者在另一个 dApp 上盗取他们的所有资金。签名请求如下所示:
以太坊EIP-712之前的签名请求,图片来自 ‘Motivation’ section of the EIP-712 specification(https://eips.ethereum.org/EIPS/eip-712)。
EIP -712(以太坊改进提案712)标准旨在解决这个问题,它指定了一种将格式化数据转换为哈希值进行签名的方法。然后,网站可以将格式化数据传递给钱包,将钱包进行解析用户显示更习惯的请求:
EIP-712签名请求,图片来自 ‘Motivation’ section of the EIP-712 specification‘。
目前大多数钱包都支持 EIP-712 标准(包括硬件钱包),因此这是一个值得探索的有趣途径。Chia 钱包可以提示用户签署一条消息来“证明”,他们想要以特定方式使用一枚硬币(Coin)。事实上,我上周五使用了演示拼图来验证此类消息的签名。以下是我的 Tangem 应用程序中的签名请求:
-
【生态】开源的Chia钱包:Sage Wallet
-
【生态】全新的Sage Wallet试用体验
-
Julie 是这个帖子中第一个建议我使用 EIP-712 的人。之前的解决方案涉及指定的“假”以太坊交易,而且更加复杂。
-
尽管我的这个想法是否可以安装或如何实现尚不清晰(后一个是我沟通问题),但是Chia公司仍然帮助处理了我的 CHIP 请求。
-
Rigidity 和 Indigo 帮助快速设置了keccak256 PR,从而实现了我所需的开发环境。还和我一起经历了软分叉(softfork)操作。
评论