最近闲来无事 研究了下以太坊钱包 下边分享下

准备工作 :

需要用到的加密:BIP32 BIP39 BIP44 SCRYPT

加密算法 githab地址

https://github.com/NovaCrypto/BIP32

https://github.com/NovaCrypto/BIP39

https://github.com/NovaCrypto/BIP44

https://github.com/wg/scrypt/

官方依赖

https://github.com/web3j/web3j

钱包创建

1,生成一个随机的助记词   

  StringBuilder sb = new StringBuilder();
byte[] entropy = new byte[Words.TWELVE.byteLength()];
new SecureRandom().nextBytes(entropy);
new MnemonicGenerator(English.INSTANCE)
.createMnemonic(entropy, sb::append);
System.out.println(sb.toString());

2,根据助记词生成一个种子 (前两步参考BIP39)

 byte[] seed = new SeedCalculator()
.withWordsFromWordList(English.INSTANCE)
.calculateSeed(mnemonicWordsInAList(助记词List), passphrase);

3 ,根据种子生成公私钥 (web3j)//如果还需要对接比特币等等其他币种 请去查看 BIP44 与BIP32 之前写的是BIT44与32的 但是挺麻烦

    ECKeyPair ecKeyPair= ECKeyPair.create(sha256(seed));

输出16进制go

     ecKeyPair.getPrivateKey().toString(16)

     ecKeyPair.getPublicKey().toString(16)

4,根据公钥 私钥 密码 得到 keystore (参考web3j)

WalletFile walletFile = Wallet.create("钱包密码", ecKeyPair,n,p);

walletFile即钱包的keystore的实体 转化成string 就是 keystore

钱包地址=walletFile.getAddress();

到此整个钱包就生成完毕了 我们得到了 公钥 私钥 地址 keystore

钱包导入

私钥导入

ECKeyPair.create(new BigInteger(mPrivateKey,16));

助记词导入

通过助记词得到种子 然后再得到公私钥  看2-3步

Keystore导入

调用web3j中提供的方法

Wallet.decrypt("密码", WalletFile );

就这些 以太坊的钱包就完成了

我在项目中 WalletFile walletFile = Wallet.create("钱包密码", ecKeyPair,n,p);这一步出OOM了

然后就放弃了wen3j提供的方法 自己重新封装了一套 当然大部分还是借鉴的web3j的

嘿嘿,上边所有的方法其实都是别人已经封装好的 我只是把他们梳理了一下 方便下后人

我自己重新封装的部分就不贴了

转自:https://blog.csdn.net/u010123087/article/details/79608939

(转)以太坊 钱包 创建 导入 Keystore的更多相关文章

  1. 以太坊钱包Geth使用命令

    一.启动以太坊钱包Geth 打开一个控制台,执行同步区块命令 #同步测试链geth --fast --cache=512 --rpc --rpcapi personal,db,eth,net,web3 ...

  2. c#实战开发:用.net core开发一个简单的Web以太坊钱包 (六)

    今天就来开发一个C# 版的简易钱包 先回顾以前的内容 c#实战开发:以太坊Geth 命令发布智能合约 (五) c#实战开发:以太坊Geth 常用命令 (四) c#实战开发:以太坊钱包快速同步区块和钱包 ...

  3. 牛奶ddw如何通过以太坊钱包实现互相打赏

    很多朋友不清楚如何转账ddw,但是万能的网友是无敌的,这两天就自己摸索的一点经验总结下今天的转账经验. 1. 提取到自己的账户 这个大家都知道如何操作,使用官方的钱包 在“日日盈app”中点击&quo ...

  4. [币严区块链]数字货币交易所之以太坊(ETH)钱包对接(四) 使用web3j对接以太坊钱包

    本文给大家介绍了 Web3j Java 版本的框架的基本使用,大家可根据本文的内容进行扩展性的练习,对其他 API 的使用进行尝试. 使用web3j对接以太坊钱包 一.开发准备事项 启动 Geth 此 ...

  5. PPT分享 | 以太坊钱包分析与介绍

    艾伯特AI人工智能(公众号:aibbtcom)按: (编者按:本文为姗姗来迟的Meetup系列推文.12月3日,林修平在亚太区以太坊社区培训与交流Meetup深圳站上跟我们分享了他对以太坊各种钱包模式 ...

  6. 以太坊钱包开发系列2 - 账号Keystore文件导入导出

    以太坊去中心化网页钱包开发系列,将从零开始开发出一个可以实际使用的钱包,本系列文章是理论与实战相结合,一共有四篇:创建钱包账号.账号Keystore文件导入导出.展示钱包信息及发起签名交易.发送Tok ...

  7. nodejs 使用 ethers创建以太坊钱包

    创建钱包创建钱包流程: 生成随机助记词 => 通过助记词创建钱包=>钱包信息和加密明文(私钥和密码加密) 导入钱包通过插件提供方法,根据助记词|keyStore|私钥,找到钱包信息(地址和 ...

  8. 以太坊钱包开发系列4 - 发送Token(代币)

    以太坊去中心化网页钱包开发系列,将从零开始开发出一个可以实际使用的钱包,本系列文章是理论与实战相结合,一共有四篇:创建钱包账号.账号Keystore文件导入导出.展示钱包信息及发起签名交易.发送Tok ...

  9. 什么是以太坊私钥储存(Keystore)文件

    进入keystore管理以太坊私钥的障碍很大,主要是因为以太坊客户端在直接的命令行或图形界面下隐藏了大部分的密码复杂性. 例如,用geth: $ geth account new Your new a ...

随机推荐

  1. 10.19stark组件开发(三)

    2018-10-19 15:42:15 2018-10-19 18:21:33 我觉得现在主要是学一种解决问题的思路,也就是逻辑或者说是算法!!!! 要有对代码的感触!要用面向对象对类进行封装!!Dj ...

  2. mysql 登录远程数据库

    mysql -h${hostIP} -P${hostPort} -u${userName} -p${passwd}

  3. SparkContext.union 与 RDD.union

    RDD.union,和SparkContext.union都可以将多个RDD聚合成一个UnionRDD. 但不同的是,RDD.union在每次操作时,会创建一个新的数据集合,生成新的RDD,新的RDD ...

  4. js20130114

    01.js(FirstJavaScrpty)第一个个javascript 1.  Document.write("");//这个是在页面上输出一段信息 ;  例如:document ...

  5. CentOS 7.4下使用yum安装MySQL5.7.20 最简单的 (引用)

    引用 https://blog.csdn.net/z13615480737/article/details/78906598 CentOS7默认数据库是mariadb, 但是 好多用的都是mysql ...

  6. 记一次 windows server 2012R2 上安装 MSSQL2005 及网站发布

    背景: 原因是因为没有购买新的数据库授权.由于之前服务器是windows 2003 由于后绪网站的版本可能会升到.net4.5 据说 2003上安装不起 所有由另一同事到客户安装一个window se ...

  7. 从一个点的长度是多少说起(Talking started from the length of a point on the real number line)

    From the perspective of analytical geometry, an interval is composed of infinitely many points, whil ...

  8. CSS3 ::selection 选择器

    ::selection { color:#ff0000; } ::-moz-selection { color:#ff0000; }详见 http://www.css88.com/archives/5 ...

  9. webstom 快捷键

  10. 406 UDP协议是面向非连接的协议

    HTTP The Definitive Guide   Table 3-1. Common HTTP methods   Method Description Message body?   GET ...