去中心化钱包的登录设计
一、创建钱包
创建钱包有多种交互形式: 助记词、强密码。 他们的好处都是既通过多重加密保护了密钥的安全,又降低记忆密码的难度。
- 强密码: 会把用户输入强密码转成keystore文件。 这步可以使用@wallet/client包实现。
- 助记词: 会把自动生成的密钥转换成12个单词。
二、访问钱包
连接钱包,有开放标准协议。 主要实现了开放标准协议,就可以把它集成到任何钱包软件中。有以下两种协议:
- WalletConnect
- 使用@walletconnect/ethereum-provider库进行连接,相对于web协议优势: 支持二维码扫码、多端
- walletlink
- web3: 适用于浏览器extension
const web3 = new Web3(providedProvider); // 区块链节点 await providedProvider.enable(); // 请求用户授权连接 const acc = await web3.eth.requestAccounts(); // 获取账户列表 const wallet = new Web3Wallet(acc[0]); // 获取账户实例,可以用于签署交易
三、新建和访问钱包
通过助记词、个人密码来创建新钱包
- 由个人密码,生成keystore文件,用户要自己管理好keystore文件
import Wallet from 'ethereumjs-wallet'; const wallet = new Wallet.generate(); wallet .toV3(password, { kdf: keystoreConfig.kdf, n: keystoreConfig.n }) .then(res => { createdWallet.blobUrl = createBlob(res); // 下载链接 createdWallet.name = wallet.getV3Filename(); resolve(createdWallet); });
<a
ref="downloadLink"
:href="blobUrl"
rel="noopener noreferrer"
:download="name"
class="link"
/>
- 助记词
通过bip39协议生成一组助记词; 登入时候,助记词可以固定算法生成一串seed,根据seed+索引顺序index能算出很多组公钥和私钥
// 创建助记词
const bip39 = require('bip39'); function phrase12() { return bip39.generateMnemonic(128).split(' '); } function phrase24() { return bip39.generateMnemonic(256).split(' '); }
// 助记词生成seed
- WalletConnect协议
const signClient = await EthereumProvider.init({ chainId: '', }); signClient.on('connect', evt => { const { chainId } = evt; // 然后signClient就相当于是一个etherum实例,可以用于发送(包含做签名)交易 });
三、交易
- 查询各货币的交易汇率
从changelly等聚合器的api上,用axios发送请求
2. 发送方式
使用web3.js的api
3. 交易记录
可以直接用web3.js在链上从当前区块currentBlock一直往前查,过滤出交易地址等于自己的
从区块链浏览器的api上, 如etherscan等。 etherscan本身就是利用1个全节点收集了全部数据到中心化服务,所以它支持分页等功能
四、区块链网络
区块链网络之间的切换
五、安全性
最重要的就是私钥、助记词的安全性。 既要做到保证安全性,又要登陆简便(不用每次输入助记词)
首先,去中心化的钱包,是不会在中心化(例如服务器上)存储用户的私钥或者助记词的。
- app端, 会把用户的助记词,保存在移动设备的操作系统管理区域,需要用户的生物识别才能使用
- web端,会保存成keystore文件,需要用户输入密码(浏览器保存记忆),才能使用
- 浏览器extension,会加密保存在该extension才能访问的属性里。
以上,都是有双重保护。 app端,生物识别+移动设备; web端:keystore文件+密码; extension: 设备+密码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix