资讯专栏INFORMATION COLUMN

ETH冷钱包实现思路

go4it / 4120人阅读

摘要:前言区块链钱包分为两类冷钱包和热钱包。通俗的讲冷钱包就是钱包存在本地,热钱包则是存在服务端。本文主要对冷钱包进行分析以及一些相关业务功能的介绍。转账还涉及到矿工费用的计算,矿工费用,和换算关系收款生成相应的地址二维码既可

前言

区块链钱包分为两类:冷钱包和热钱包。通俗的讲冷钱包就是钱包存在本地,热钱包则是存在服务端。本文主要对冷钱包进行分析以及一些相关业务功能的介绍。相关插件:bip39(生成助记词),ethereumjs-wallet(生成钱包,导入,导出),ethereumjs-tx(转账签名),ethereumjs-util(ETH功能集成插件),cryptojs(加密)

正文

我们知道区块链钱包有几个概念:助记词、私钥、地址、keyStore

这几个关系如下:

助记词(单向=>)私钥

私钥(单向=>)地址

密码+私钥( 双向<=>)keyStore

钱包业务功能

创建钱包

导入钱包(助记词导入,keyStore导入,私钥导入)

钱包管理(导出私钥,导出keyStore,修改密码)

转账和收款

业务功能分析

存在本地钱包加密前的数据格式
[{"wallet address": 加密私钥(私钥和密码进行加密)+其他钱包信息},...]
创建钱包
创建钱包流程: 生成随机助记词 => 通过助记词创建钱包=>钱包信息和加密明文(私钥和密码加密)AES加密存入localStorage

导入钱包
通过插件提供方法,根据助记词|keyStore|私钥,找到钱包信息(地址和私钥)=>钱包信息和加密明文(私钥和密码加密)AES加密存入localStorage

钱包管理
钱包管理需要密码验证,由于本地存的是私钥和密码加密后的加密私钥,解密需要私钥和原密码来解密,因此不能直接通过解密获取原密码。所以我们需要换一个思路来验证,由前文的关系可知私钥可以找到钱包地址,所以可以解密钱包的字符串,通过钱包地址获取加密的钱包信息,再通过用户输入的密码和加密私钥解密获取解密私钥,再通过私钥获取地址,判断用户输入的和原密码解密后的私钥获取的地址是否一致。

密码验证流程:解密钱包明文 => 得到所有加密钱包[{"wallet address": 加密私钥(钱包和密码)},...] => 地址获取当前加密钱包信息 => 通过用户输入的密码和加密私钥解密获取解密的私钥 => 通过解密私钥去获取地址 =>判断地址和当前地址是否一致

转账和收款
转账涉及到交易的签名,而ethereumjs-tx则提供相应的方法。转账还涉及到矿工费用的计算,矿工费用(gas) = gasPrice * gaslimit,gas和eth换算关系: 1eth = 1e9(gwei)
收款生成相应的地址二维码既可

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96948.html

相关文章

  • 比特币钱包安全

    摘要:要点提醒确保比特币钱包安全的全部在于确保钱包私钥安全,好消息是,这个你可以采取措施。 本文是有关比特币相关的系列文章,发布于GIT-HUB,地址如下:https://github.com/junahan/JU... 比特币钱包安全概要 有关比特币钱包安全,可以简单的分为两类,一类是做为用户的你不可控制的安全问题,一类是做为用户的你可以控制的安全问题。之所以这样看似废话的区分,提醒你...

    付永刚 评论0 收藏0
  • 基于Mixin Network的Go语言比特币开发教程 : 创建一个比特币钱包

    摘要:帐号之间的比特币支付通过,我们可以先转比特币给机器人,然后让机器人转币给新用户。下面的代码,可以读取比特币钱包余额读取的余额,来确认比特币是不是转成功了注意是新用户的。 showImg(https://github.com/wenewzhang/mixin_labs-go-bot/raw/master/Bitcoin_go.jpg);我们已经创建过一个回复消息的机器人和一个能自动支付比...

    legendaryedu 评论0 收藏0
  • Nodejs 比特币开发教程: 创建比特币钱包

    摘要:下面的代码,可以读取比特币钱包余额网内免手续费的,并且即时确认任何币在内部的交易,都是无手续费的,并且立刻到账。 基于Mixin Network的 Nodejs 比特币开发教程: 创建比特币钱包 showImg(https://segmentfault.com/img/remote/1460000018771566?w=1200&h=659);我们已经创建过一个回复消息的机器人和一个能...

    caozhijian 评论0 收藏0
  • Python 比特币教程之三: 创建比特币钱包,读余额,极速免费转账,标准转账

    摘要:下面的代码,可以读取比特币钱包余额网内免手续费的,并且即时确认任何币在内部的交易,都是无手续费的,并且立刻到账。 showImg(https://segmentfault.com/img/bVboFVZ?w=1200&h=659);我们已经创建过一个回复消息的机器人和一个能自动支付比特币的机器人. 通过本教程的学习,你可以学到如下内容 如何创建一个比特币钱包. 如何读取比特币钱包的余...

    blastz 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<