这篇文章我们就来讲讲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钱包生成相关推荐

  1. SingToken全球首款区块链智能AI音乐钱包

    2019独角兽企业重金招聘Python工程师标准>>> INSING 致力于推动区块链技术全球化的推广和普及,为全球区块链技术爱好者提供专业贴心的服务. Sing Token 全球首 ...

  2. 区块链钱包技术上怎么实现_区块链上的通用钱包设计与实现

    龙源期刊网 http://www.qikan.com.cn 区块链上的通用钱包设计与实现 作者:唐屹 陈家豪 吴嘉熙 来源:<软件导刊> 2018 年第 01 期 摘要:区块链技术是近年来 ...

  3. BizBlocks推出结合了区块链技术的硬件钱包安全平台

    韩国大田--(美国商业资讯)--在IT技术高度发达的韩国,初创企业BizBlocks开发了全球首个面向个人和企业的区块链硬件安全综合平台,并一举成为了行业瞩目的焦点.该平台基于整合了多个核心秘钥的最强 ...

  4. 钱包+地图:海伯利安有望开启区块链应用私域流量入口

    海伯利安HYperion 要通过钱包+地图公链的模式,获客并将用户转化为私域流量,使其从底层公链到钱包的生态形成闭环. 文 | 王佳  运营 | 盖遥  编辑 | 郝方舟 出品 | Odaily星球日 ...

  5. 中国电信SIM卡绝杀冷、热钱包,区块链手机还没火就要凉凉?

    文丨互链脉搏·梁山花荣 未经授权,不得转载! 数字资产冷.热钱包,以及正在襁褓中的区块链手机正迎来强劲的竞争对手. 在近期刚结束的重庆智博会上,中国电信发布了<5G时代区块链智能手机白皮书> ...

  6. 用区块链技术打造了一款来自未来的钱包,他们认为定位于国外市场更具潜力

    本堂茜 渡鸦区块链专栏记者 崔萌,一位年轻的85后青年,2010年毕业于北京航空航天大学后加入一家国企京东方科技集团,2015年创建果仁宝,2016年12月获"创业邦30岁以下创业新贵&qu ...

  7. 区块链从钱包应用到技术本质

    2019独角兽企业重金招聘Python工程师标准>>> 大家好,首先感谢开源中国,我在Github也开源了很多区块链的项目:https://github.com/linapex,有需 ...

  8. 不依赖远程API启动SEER区块链命令行钱包和网页钱包的方法

    不依赖远程API启动命令行钱包和网页钱包的方法 在SEER的见证人操作等需要使用命令行钱包的操作中,我们介绍了通过钱包连接远程API来和区块链交互的方法.类似这样: cli_wallet.exe -s ...

  9. 【区块链】虚拟货币钱包

    目前区块链中虚拟货币的钱包种类和应用多样,按照私钥存储方式的不同,可以将钱包分为『热钱包』和『冷钱包』两大类型. 一.热钱包 热钱包又称在线钱包,是指互联网能够访问用户私钥的钱包,一般通过电脑(交易平 ...

  10. Gikee区块链浏览器全新发布,新增BTC、ETH两大公链

    [带你看清区块链世界的真相] 我们知道,如果你在区块链上与别人完成一笔转账,那么这笔转账是没办法"抵赖"的,因为所有的记录都被完整.清晰地"写"在了区块链上,而 ...

最新文章

  1. 被批伪开源!刚刚融资6千万美元的Redis怎么了?
  2. UC/OS-II的学习
  3. Linux创建进程必须fork么,Linux - fork() 创建进程
  4. [转]Android SurfaceView 绘图覆盖刷新及脏矩形刷新方法
  5. C++/测绘附和导线测量源码
  6. 百度云 自然语言处理(Nlp)
  7. 小米mini路由器刷固件
  8. 表情包产业靠什么“上位”:机遇、玩法、IP
  9. 整理出Android逆向系列学习进阶视频,全网疯传
  10. Linux网络操作命令
  11. 计算机系的学生的未来计划,学生未来计划.doc
  12. android隐藏头标题,关于隐藏Android标题栏总结
  13. python面向对象oo是什么意思_python进阶:面向对象是什么意思?
  14. 智能家庭本周锋闻:小米终于还是做了空气净化器
  15. Mac电脑没有声音,苹果电脑没有声音怎么办
  16. HDU 5944 Fxx and string BestCoder Round #89 1001(细节)
  17. 浅谈 Arbitrum 生态
  18. 宝塔界面为什么无法访问_宝塔面板登陆不上?宝塔面板打不开解决办法
  19. P2562kitty猫基因
  20. Creating a Game with CocosBuilder

热门文章

  1. matlab求函数偏导
  2. 天翼宽带怎么开虚拟服务器,怎么设置天翼宽带猫的无线路由器
  3. 如何在excel中创建二级菜单,即选择一个类型后,下一单元格可以选择其子类型
  4. wps页眉页码的编写
  5. 腾讯云平台WordPress建站问题记录
  6. 【Linux】rpm包是什么
  7. BZOJ4874:筐子放球
  8. python背景透明_Python生成透明背景图片
  9. Java IO流的分类
  10. CreateThread函数,无法将参数 3 从“DWORD (__cdecl *)(LPVOID)”转换为“LPTHREAD_START_ROUTINE” PVZCheater