您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页以太坊钱包梳理

以太坊钱包梳理

来源:二三娱乐

钱包是用来管理钱包地址和用户私钥。

以下是钱包的工作流程:

  • 创建:
    1. 生成助记词(后续);
    2. 根据助记词调用web3.eth.accounts.create([entropy])来创建新的钱包用户,此时将会得到用户的钱包地址和私钥;
    3. 地址和私钥是放置于用户安装的钱包客户端中的本地文件,不存放于数据库;
    4. 存放的钱包需要经过过web3.eth.accounts.encrypt(privateKey, password)加密,password需要用户输入,每次使用时都需要用户手动输入密码,
    通过web3.eth.accounts.decrypt(keystoreJsonV3, password)解密得到密钥,切记私钥的使用不可通过明文直接传输;
    5. 图标,通过预置的图标为用户创建钱包时随机分配钱包头像,目的是为了明显区别多个钱包。

  • 准备交易:
    1. 通过用户输入的密码解密用户私钥,得到钱包账户,相当于是解锁账户;
    2. 整理交易的基本信息,包括from,to,gasPrice,gas等等信息。

  • 签名:
    1. 通过web3.eth.accounts.signTransaction(tx, privateKey [, callback])为transaction签名,既为此交易授权;

eg:

async createBlog(user: UserDTO, blog: CreateBlogDTO) {
    const account = this.web3.eth.accounts.privateKeyToAccount(privateKey)
    //此方法替换为本地获取私钥文件并用decrypt解密
    
    const callData = this.contract.methods.createBlog(blog.title,blog.content).send.request({
        from: myAccount.address,
        gasPrice: '0',
        gas: '4000000',
    })

    const sign = await account.signTransaction(callData.params[0])

    await this.web3.eth.sendSignedTransaction(sign.rawTransaction.toString('hex'))
}

钱包的安全问题

  • 私钥安全
    存放的私钥一定要是密文;解密的操作要让用户手动输入密码;私钥使用中,不能进行明文传输,如微信,邮件等;私钥的存储应当放与本地,不要存放于百度云之类的云盘。

  • 助记词
    助记词的安全级别同私钥是相等的,助记词的存储应该和私钥隔离开,不要建议用户将私钥截图或下载于本地,尽量用笔抄录进行保存,保证与物理机分离开。

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务