本文共 1653 字,大约阅读时间需要 5 分钟。
区块链
前言
这几年区块链在全球卷起一场热潮,很多人都投入去研究区块链及其相关技术。目前区块链的应用还是相对比较狭窄,最广的还是在金融领域,特别是在数字货币这方面,我们比较熟悉的有BTC,ETH,XRP,BCH等。下面让我们也来创建一个基于以太坊的钱包吧。
概念
在开始前,需要理清这几个概念。
钱包:钱包就是地址,由公钥通过hash计算得出,以0x开头后跟40个字符,代表你的钱包。
密码:这个没啥好说的,像银行卡密码一样,创建助记词,私钥,Keystore等都需要用到。
助记词:结合密码,可以找回你的钱包,由内置的比较流行的单词列表通过一定的算法筛选出12个单词,每个单词以一个空格分隔,创建钱包时,最好抄下来,保存好。
私钥:用于找回你的钱包,非对称加密中的私钥,由助记词和密码生成得到种子seed,然后于通过sha256算法得到。
公钥:非对称加密中的公钥,由私钥计算得出。
Keystore:结合密码,可以找回你的钱包,存储了钱包的一些加密信息和其它的一些元数据信息,默认以Json格式的文件存放。
可以看出,他们的关系如下:
借助密码生成助记词,助记词可以生成私钥,私钥得到公钥,公钥得到钱包地址。
私钥+密码又可以得到Keystore
以太坊客户端API
现在比较流行的有:
web3基于JavaScript
web3j基于Java
我们主要使用web3j进行开发。
创建钱包
1、创建Maven工程,并导入web3j的依赖
web3j Maven依赖:
web3j依赖
2、生成钱包
代码实现如下:
创建钱包源码
生成钱包源码截图
这是最简单的一种以太坊坊钱包生成方式。
通过WalletUtils直接通过密码生成Bip39以太坊钱包。通过钱包,可以直接获取Keystore和助记词列表,助记词要保存好。通过助记词列表,获取到Credentilals。通过Credentilals即可获取到钱包地址。结果:
创建钱包结果截图
创建钱包结果截图
从图中可以看出,我们的钱包就创建出来了,这样就可以用以太坊上任意一个钱包给这个地址转账了。
钱包地址:0x8bb0d94c855a746513f8e2ca1ba8c821e44fe777
密码:123456
助记词:share moment wonder drift orbit clump company test current iron text cruise
私钥:e5ad0fb1b35051ceb9732d24fc1940b7115e0ed2ee5174f9ce8cb7eebc2b8580
要注意一点的是,密码、助记词、私钥、Keystore一定要保存好。否则钱包地址忘记了,你就找不回你的钱包了。
找回钱包/导入钱包
有时候,我们在别的平台也创建了一个钱包,需要导入已有的钱包,获取钱包地址已经忘记,需要找回钱包。
可以通过三种方式找回钱包,上面源码截图也有说明。
1、通过私钥找回:
私钥找回源码
私钥找回源码
结果:
通过私钥找回的地址为:0x8bb0d94c855a746513f8e2ca1ba8c821e44fe777
2、通过助记词列表+密码找回:
助记词列表+密码源码
助记词密码找回密码
结果:
通过助记词+密码找回的地址为:0x8bb0d94c855a746513f8e2ca1ba8c821e44fe777
3、通过Keystore+密码找回:
Keystore+密码源码
Keystore密码找回源码
结果:
通过Keystore+密码找回的地址为:0x8bb0d94c855a746513f8e2ca1ba8c821e44fe777
可以看出,无论通过哪种方式,获取到的钱包地址都是一样的。
总结
以太坊钱包创建过程不复杂,但有很多知识点需要我们提前去熟悉掌握,以太坊整个生态也比较庞大,很多知识点现在暂时还没有涉猎,后续我会再出一系列有关以太坊钱包的文章,希望大家多多支持,喜欢的也可以点个关注,谢谢。
转载地址:https://blog.csdn.net/weixin_32309879/article/details/111966526 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!