钱包-真正的控制权

Keylen2021-10-20 23:30:52

真正掌控你的资产

传统的资产实际由中心化机构控,例如:银行账户中的资金由银行托管,用户需依赖密码或身份验证访问,但银行可冻结账户或限制交易(如涉嫌违规时),用户完全掌握私钥,独立控制资产。而使用 web3钱包,私钥仅存储在本地设备,即使钱包服务商停止运营,用户仍可通过助记词恢复资产。

而其弊端在于,用户对自己的助记词或者私钥负责,它无法被赋予身份ID,掌握私钥或者助记词即掌握了所有资产。当然这样的管理成本与理解成本,也不可避免的成为了前期大部分用户无法积极参与的原因之一。

随着社区基建的不断完善,钱包也在不断进化,如硬件钱包、AA钱包、MPC钱包、多签钱包、托管钱包(后续会讲到这种钱包)等都在不断做着降低用户门槛的努力,且效果显著。

事实上我们通过密码学,真正赋予了每个人掌握自己资产的能力,而非依赖某个中心化的机构(即使他们看起来是那么可靠光鲜)。而这一切的发生不仅仅需要技术的发展,更多的是共识。我们创造了一个普遍的共识,共同认可了一个事物的价值,这是一个很了不起的事情!

HD钱包的实现原理

HD 钱包(Hierarchical Deterministic Wallets)是在 BIP32 中提出的为了避免管理一堆私钥的麻烦提出的分层推导方案。

BIP44 是给 BIP32 的分层增强了路径定义规范,同时增加了对多币种的支持。

BIP39 则通过定义助记词让种子的备份更友好。

通常钱包的生成流程为:

  • ​种子生成:通过128/256位熵源+BIP-39词库生成助记词(如24个英文单词)
  • ​主密钥派生:PBKDF2-HMAC-SHA512算法将助记词扩展为512位种子
  • ​分层派生路径:按m/purpose'/coin_type'/account'/change/address_index结构生成子密钥
  • 典型路径:比特币为m/44'/0'/0'/0/0,以太坊为m/44'/60'/0'/0/0
  • ​地址生成:采用非压缩公钥→Keccak256哈希→取后20字节生成ETH地址

通常助记词与生成的私钥会使用如AES之类的加密算法加密处理后,存在钱包APP或者插件本地,当用户需要发起交易时,通过输入密码获取私钥完成签名后,push交易到指定的节点,完成交易。

详细技术原理可查看:HDWallet 原理分析open in new window

钱包与Dapp交互

现在我们已经有了自己的钱包,但他本质上只是一个私钥加密存储器,我们需要接入生态dapp,这需要钱包能够拦截到dapp中发起的交易签名请求,然后通过用户输入密码的方式解出私钥,完成签名构建,发起交易。

这个时候就需要一套普适性的通信协议:

// DApp连接代码示例
if (typeof window.ethereum !== 'undefined') {
    const accounts = await window.ethereum.request({ 
        method: 'eth_requestAccounts' 
    });
    const provider = new ethers.BrowserProvider(window.ethereum);
} else {
    const connector = new WalletConnect({
        projectId: 'YOUR_PROJECT_ID',
        chains: ['eip155:1']
    });
    await connector.connect();
}

同时 Metamask 的官方开源demo也有很好的参考价值 点击查看open in new window

账户抽象(AA钱包)

便携中...

MPC钱包

便携中...

硬件钱包

便携中...

主流钱包

便携中...

最后更新时间 2025/3/4 14:59:21