合约钱包会不会取代硬钱包?

合约钱包会不会取代硬钱包?

如果合约钱包可以“像硬钱包一样通过硬件签名”,是不是可以认为合约钱包就让手机变成甚至替代了硬钱包。我不是很懂硬件钱包和手机底层设计(😲),但我有逻辑地总结了一些 buidler 的观点(🧐)。

在这篇文章中,你会知道:

  1. 合约钱包如何变成硬钱包?

  2. 合约钱包为什么不能替代硬钱包?

⚙实现方法

合约钱包变成硬钱包的实现方法有两种。

  1. 共识层支持手机硬件。在 StarkNet(编程语言Cairo)这样原生账户抽象的 L2 上,账户签名支持多种椭圆曲线,而不是和以太坊一样只支持 ECDSA(Secp256k1),因此可以让手机的加密芯片/模块直接对交易签名(大部分手机不支持ECDSA)。因此,在原生账户抽象的 L2 上,合约钱包可以和硬钱包一样直接通过硬件签署交易。

  2. 钱包层进行签名转录。在以太坊这样非原生账户抽象的网络上,合约钱包可以签名转录。像 EIP-4337 可以自定义验证逻辑,用户用手机硬件支持的算法签名后再转换为以太坊支持的 ECDSA。

总结下 StarkNet 的开发倡导者(StarkNet老开发) @barretodavid 提到的在 StarkNet 上实现手机硬钱包的思路。

  1. 以太坊上的 EOA 仅支持 Secp256k1 椭圆曲线上的签名方案 ECDSA

  2. 大部分的智能手机都不支持以太坊的椭圆曲线。

  3. 所以移动钱包需要依靠软件签署交易,移动钱包因此是热钱包。

  4. StarkNet 原生账户抽象,支持多种椭圆曲线,签名验证高度可编程,因此基于 StarkNet/Cairo 的手机钱包完全可以变成硬钱包。

    https://twitter.com/barretodavid/status/1563584823884935168

StarkNet 上原子化 NFT 协议 Briq 的开发者 @sylvechv 也认为,在实现了原生账户抽象的 StarkNet (编程语言为Cairo)上,可以授权一个 mobile_key 签署一定数额的交易,和/或只为某些合同,和/或只为某些功能(例如没有transfer()而只有play())。用户甚至可以在一定时间后撤销它。

在 StarkNet 中的合约钱包,授权手机签名的流程类似于

  1. 在手机上生成 pub/priv 密钥

  2. 使用“管理员密钥”在智能钱包上授权 pubkey

  3. Cairo 已经有一个 nistp256(用于智能手机Secure Enlave)的实现。

🤗为什么合约钱包不会替代硬件钱包

来自著名硬件钱包@KeystoneWallet 的 @BitcoinLixin 认为硬件钱包的核心逻辑是让私钥和用户交互不触网,用户在钱包离线的状态(物理环境)下对交易进行确认。

而基于账户抽象的智能合约钱包,尽管可以调用手机上的安全机制如 Secure Enlave,实现看上去和硬件钱包一样的硬件签名,但是手机仍然是一个触网的环境,会有钓鱼等各种网络隐患。

因此从安全角度看,合约钱包和硬件钱包是两种完全不同的解决方案,硬件钱包的安全系数远远大于合约钱包。

(我没收钱🤪)
(我没收钱🤪)

有个小误区,硬件钱包没有使用比软件钱包更安全的签名算法。普通软件钱包和硬件钱包的签名算法没有不同。正如前面所说,硬件钱包比软件钱包更安全是因为它离线——交互不触网,因而可以避免一切网络攻击。

AA/智能合约钱包厉害的地方在于可以脱离共识层对签名算法的束缚,因为签名验证可以在智能合完成而不是由矿工根据共识来完成。这样的结果是,iPhone 的 Secure Enclave 支持某个签名算法,但是这个签名算法和某条链的签名算法不一致,没关系,可以在合约钱包里构造验证支持 iPhone 的签名算法的逻辑。

总结一下,合约钱包可以像硬件钱包一样用硬件签名,但是合约钱包是一个触网环境,硬件钱包是离线环境,后者是一种更加安全的钱包方案,因此合约钱包并不能替代硬件钱包。

Subscribe to Maxlion
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.