区块链钱包之ETH钱包生成
这篇文章我们就来讲讲ETH钱包地址生成方式吧
前面说了一些关于区块链生成钱包地址的方法说了一下, 那么该如何用代码去生成钱包地址呢? 之前我在做钱包的时候, 搜了很多资料, 很少有写如何去生成钱包地址, 当然英文资料也不多. 最后还是去gayhub里面看了开源钱包, 才搞清楚了一些方法. 我们这里使用的是bitcoinj来生成. 一般都是分几个步骤: 生成助记词, 根据助记词生成地址
配置环境
首先我们这里使用的Android studio 3.0, 直接在app/build.gradle里面添加依赖
implementation group: 'org.bitcoinj', name: 'bitcoinj-core', version: '0.14.6'
implementation 'org.web3j:core:3.3.1-android'
先填坑, 生成助记词需要使用到MnemonicUtils这个类, 但是有坑, 加载助记词列表文件的方式在Android上面根本不行, 会导致Crash
private static List<String> populateWordList() {URL url = Thread.currentThread().getContextClassLoader().getResource("en-mnemonic-word-list.txt");try {return readAllLines(url.toURI().getSchemeSpecificPart());} catch (Exception e) {return Collections.emptyList();}}
懂的人都看出来了吧, 这是java的加载资源方式, 但是安卓需要做平台适配. 我们把en-mnemonic-word-list.txt这个文件放到assets之下, 然后用符合安卓的姿势加载. Good, 没问题了
private fun populateWordList(): List<String> {try {val fis = App.instance.assets?.open("en-mnemonic-word-list.txt")return readAllLines(fis!!)} catch (e: IOException) {e.printStackTrace()}return emptyList()}
生成助记词
生成助记词需要使用到MnemonicUtils这个类, 要生成助记词很简单, 需要如下代码生成助记词, 助记词的格式就是12个单词
//average green proud remember advance trick estate oblige trouble when cube person
private val secureRandom = MySecureRandomUtils.secureRandom()
fun makeMnemonic(): String {val initialEntropy = ByteArray(16)secureRandom.nextBytes(initialEntropy)return MyMnemonicUtils.generateMnemonic(initialEntropy)}
生成ETH地址
先根据生成的助记词, 生成一些列的种, 运用了 BIP32确定性钱包算法(deterministic wallet algorithm)
private fun createETHWalletFromWords(words: String): TianWallet {val wordsList = Arrays.asList(*words.split("\\s+".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray())val deterministicSeed = DeterministicSeed(wordsList, null, "", 0)val deterministicKeyChain = DeterministicKeyChain.builder().seed(deterministicSeed).build()//DERIVATION_PATH = "m/44'/60'/0'/0/0"val privateKey = deterministicKeyChain.getKeyByPath(parsePath(DERIVATION_PATH), true).privKeyval ecKeyPair = ECKeyPair.create(privateKey)val address = Keys.getAddress(ecKeyPair)return TianWallet("0x$address", Numeric.toHexStringWithPrefix(ecKeyPair.privateKey), Numeric.toHexStringWithPrefix(ecKeyPair.publicKey), words)}
区块链钱包之ETH钱包生成相关推荐
- SingToken全球首款区块链智能AI音乐钱包
2019独角兽企业重金招聘Python工程师标准>>> INSING 致力于推动区块链技术全球化的推广和普及,为全球区块链技术爱好者提供专业贴心的服务. Sing Token 全球首 ...
- 区块链钱包技术上怎么实现_区块链上的通用钱包设计与实现
龙源期刊网 http://www.qikan.com.cn 区块链上的通用钱包设计与实现 作者:唐屹 陈家豪 吴嘉熙 来源:<软件导刊> 2018 年第 01 期 摘要:区块链技术是近年来 ...
- BizBlocks推出结合了区块链技术的硬件钱包安全平台
韩国大田--(美国商业资讯)--在IT技术高度发达的韩国,初创企业BizBlocks开发了全球首个面向个人和企业的区块链硬件安全综合平台,并一举成为了行业瞩目的焦点.该平台基于整合了多个核心秘钥的最强 ...
- 钱包+地图:海伯利安有望开启区块链应用私域流量入口
海伯利安HYperion 要通过钱包+地图公链的模式,获客并将用户转化为私域流量,使其从底层公链到钱包的生态形成闭环. 文 | 王佳 运营 | 盖遥 编辑 | 郝方舟 出品 | Odaily星球日 ...
- 中国电信SIM卡绝杀冷、热钱包,区块链手机还没火就要凉凉?
文丨互链脉搏·梁山花荣 未经授权,不得转载! 数字资产冷.热钱包,以及正在襁褓中的区块链手机正迎来强劲的竞争对手. 在近期刚结束的重庆智博会上,中国电信发布了<5G时代区块链智能手机白皮书> ...
- 用区块链技术打造了一款来自未来的钱包,他们认为定位于国外市场更具潜力
本堂茜 渡鸦区块链专栏记者 崔萌,一位年轻的85后青年,2010年毕业于北京航空航天大学后加入一家国企京东方科技集团,2015年创建果仁宝,2016年12月获"创业邦30岁以下创业新贵&qu ...
- 区块链从钱包应用到技术本质
2019独角兽企业重金招聘Python工程师标准>>> 大家好,首先感谢开源中国,我在Github也开源了很多区块链的项目:https://github.com/linapex,有需 ...
- 不依赖远程API启动SEER区块链命令行钱包和网页钱包的方法
不依赖远程API启动命令行钱包和网页钱包的方法 在SEER的见证人操作等需要使用命令行钱包的操作中,我们介绍了通过钱包连接远程API来和区块链交互的方法.类似这样: cli_wallet.exe -s ...
- 【区块链】虚拟货币钱包
目前区块链中虚拟货币的钱包种类和应用多样,按照私钥存储方式的不同,可以将钱包分为『热钱包』和『冷钱包』两大类型. 一.热钱包 热钱包又称在线钱包,是指互联网能够访问用户私钥的钱包,一般通过电脑(交易平 ...
- Gikee区块链浏览器全新发布,新增BTC、ETH两大公链
[带你看清区块链世界的真相] 我们知道,如果你在区块链上与别人完成一笔转账,那么这笔转账是没办法"抵赖"的,因为所有的记录都被完整.清晰地"写"在了区块链上,而 ...
最新文章
- 被批伪开源!刚刚融资6千万美元的Redis怎么了?
- UC/OS-II的学习
- Linux创建进程必须fork么,Linux - fork() 创建进程
- [转]Android SurfaceView 绘图覆盖刷新及脏矩形刷新方法
- C++/测绘附和导线测量源码
- 百度云 自然语言处理(Nlp)
- 小米mini路由器刷固件
- 表情包产业靠什么“上位”:机遇、玩法、IP
- 整理出Android逆向系列学习进阶视频,全网疯传
- Linux网络操作命令
- 计算机系的学生的未来计划,学生未来计划.doc
- android隐藏头标题,关于隐藏Android标题栏总结
- python面向对象oo是什么意思_python进阶:面向对象是什么意思?
- 智能家庭本周锋闻:小米终于还是做了空气净化器
- Mac电脑没有声音,苹果电脑没有声音怎么办
- HDU 	5944 Fxx and string BestCoder Round #89 1001(细节)
- 浅谈 Arbitrum 生态
- 宝塔界面为什么无法访问_宝塔面板登陆不上?宝塔面板打不开解决办法
- P2562kitty猫基因
- Creating a Game with CocosBuilder
热门文章
- matlab求函数偏导
- 天翼宽带怎么开虚拟服务器,怎么设置天翼宽带猫的无线路由器
- 如何在excel中创建二级菜单,即选择一个类型后,下一单元格可以选择其子类型
- wps页眉页码的编写
- 腾讯云平台WordPress建站问题记录
- 【Linux】rpm包是什么
- BZOJ4874:筐子放球
- python背景透明_Python生成透明背景图片
- Java IO流的分类
- CreateThread函数,无法将参数 3 从“DWORD (__cdecl *)(LPVOID)”转换为“LPTHREAD_START_ROUTINE” PVZCheater