区块链编程:Web3j账户管理练习

  • 获取节点上的账号信息
  • 配置web3j日志
  • 创建钱包
  • 根据钱包加载账户信息

上一章,我们简单的访问了eth模拟节点的版本信息,算是提前预热,今天我们来实现和节点进行账户信息交互,配置将沿用上一章的配置

获取节点上的账号信息

package com.block.chain.account;public class App {public static void main(String[] args) throws Exception {AccountManage AM = new AccountManage();// 获取eth节点下账户AM.getNodeAccounts();}
}

下面是功能实现类

public class AccountManage {public void getNodeAccounts() throws IOException {Web3j web3j = Web3j.build(new HttpService("http://localhost:8545"));List<String> accounts = web3j.ethAccounts().send().getAccounts();accounts.forEach(account -> {log.info("account:{}", account);});}
}

可以看到下面都是我们的交互信息和一些我之前已经创建好的账户

配置web3j日志

其实有时候网络通信的信息我们并不care,可以去配置日志,让控制台不打印网络通信信息,配置下面的logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><logger name="org.web3j.protocol" level="INFO"/><root level="INFO"><appender-ref ref="STDOUT" /></root>
</configuration>

可以看到我们在控制台的信息已经没有网络信息了

创建钱包

下面我们会创建一个账户,生成钱包文件, Web3j提供了WalletUtils工具进行钱包操作,下面在AccountManage代码提供生成钱包的实现,钱包文件会生成到/resources/keys 文件夹下

    private final String keyDir = "xxx/resources/keys";public String createWallet(String pass) throws Exception {File destDir = new File(keyDir);String fn = WalletUtils.generateNewWalletFile(pass, destDir, true);log.info("Wallet file: " + fn);return fn;}

下面是我们的测试代码

package com.block.chain.account;public class App {public static void main(String[] args) throws Exception {AccountManage AM = new AccountManage();// 创建钱包 密码是123-后面会用到AM.createWallet("123");}
}

可以看到我们已经生成了一个钱包了

根据钱包加载账户信息

我们在上面的练习中,已经能够生成自己的钱包了,下面我们需要根据钱包和密码获取我们的账户信息,依然是在AccountManage中实现逻辑

    public void loadAccountByWallet(String password, String wallet) throws Exception {String src = keyDir + "/" + wallet;Credentials credentials = WalletUtils.loadCredentials(password, src);ECKeyPair keyPair = credentials.getEcKeyPair();// 打印密钥信息和账户地址logAccountInfo(keyPair);}

下面将会沿用生成钱包的练习代码

package com.block.chain.account;public class App {public static void main(String[] args) throws Exception {AccountManage AM = new AccountManage();// 创建钱包String wallet = AM.createWallet("123");// 根据钱包加载账户信息AM.loadAccountByWallet("123", wallet);}
}

下面可以看到我们的账户地址和密钥对信息

未完待续~

区块链编程:Web3j账户管理练习相关推荐

  1. 区块链编程初学者入门指南

    我有很多问题需要了解区块链Blockchain的工作原理.重要的是"我如何在其上构建应用程序dapp?".花了几个星期的时间挖掘,阅读和试验才最终了解.我找不到简短而全面的指南.现 ...

  2. java玩转区块链-基础篇-账户

    java玩转区块链-基础篇--账户 java环境配置 基础概念 账户 maven包引用 创建账户代码 代码解释 (1) (2) (3) (4) 可以不让搞,但是不允许你不会 java环境配置 jdk版 ...

  3. 区块链编程完全指南:平台、语言与结论

    链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载. 区块链,代表着未来的发展方向.是的,在文章开头,我们首先给出这样的结论.当然,认定未来将围绕这一新兴技术而延拓绝 ...

  4. 资料分享:送你一本《C#区块链编程》电子书!

    背景 前段时间在技术方向的定位上做出了选择 – 量化交易,并写了两篇技术图文. 如何利用BigOne的API制作自动化交易系统 – 身份验证 如何利用BigOne的API制作自动化交易系统 – 获取账 ...

  5. 区块链编程_区块链编程的10个最佳工具包

    区块链编程 区块链世界中的许多精力和兴奋都集中在加密货币,其暴涨的估值以及令人震惊的崩溃上. 大多数企业界都静静地待在场上,弹出一些玉米,然后定居下来欣赏表演. 但是,随着公司开始将脚趾伸向动荡的水域 ...

  6. python智能合约编程_NEO区块链编程日-用python来写智能合约

    活动信息: 主题:NEO区块链编程日-用python来写智能合约 时间:2018年5月26日13:00-18:30 地点:上海市杨浦区政学路77号 INNOSPACE 1楼 参与成员:NEO技术爱好者 ...

  7. 区块链编程_资源:区块链上的编程所有权

    区块链编程 智能合约是一类独特的软件,专门用于管理有价值的数字资产的所有权. 尽管可以使用现有的编程环境来跟踪资产的所有权,但是它们通常用于反映所有权而不是直接定义所有权的方案中. 智能合约的独特之处 ...

  8. 区块链BAAS平台:公共或私人区块链编程以用于各种用途

    2019独角兽企业重金招聘Python工程师标准>>> 人们可以为公共或私人区块链编程以用于各种用途.理论上,我认为牺牲权力下放的方面可以解决区块链技术背后的许多当前问题.区块链仍然 ...

  9. 区块链编程初学者指南

    您可能已经听说过加密货币的概念及其挖掘过程 ,这意味着您可能至少听过一次或两次"区块链"一词. 如果您仍然不确定所有内容,请不用担心. 您并不孤单,因为那里有许多无法准确描述区块链 ...

最新文章

  1. 转 Js窗体window大小设置
  2. 8086汇编 贪吃蛇 源代码
  3. MYSQL的binary解决mysql数据大小写敏感问题
  4. Fatal error: Please read “Security“ section of the manual to find out how to run mysqld as root
  5. 快速入门python_一天快速入门 Python
  6. 作者:张群(1988-),女,博士,中国电子技术标准化研究院设备与数据研究室副主任。...
  7. 网红品牌,都是“营销狗”?
  8. anaconda conda 切换为清华源
  9. 电大网络计算机绘图,计算机绘图与AUTOCAD设计[031005217]-中国大学mooc-题库零氪
  10. 基于数据驱动的人脸识别课题研究
  11. 【语义分割】3、用mmsegmentation训练自己的分割数据集
  12. 在Win10上布置定时任务,运行Python脚本备份文件到FTP远程服务器
  13. 用 Python 进行多元线性回归分析(附代码)
  14. 常见Http响应头部 responses header
  15. 十进制转8421BCD码详解
  16. imag.js|快速掌握全局方法
  17. 为什么80%的企业会选择云产品?
  18. MATLAB 将txt文本转化为tif图片格式
  19. 成品APP直播源码HLS直播(M3U8)回看和下载功能的实现
  20. 什么是FEC/NACK/RTX

热门文章

  1. python写安卓游戏_python写lol游戏脚本(用python开发安卓脚本)
  2. arduino安装包_【工具】PlatformIO终于能用了,arduino大型项目开发环境PIO,编辑器+编译器+调试全功能...
  3. [Leetcode 963] 最小面积矩形 II
  4. 如何擦除eMMC存储器
  5. 看过贺岁片,你知道贺岁课程吗?
  6. openocd目录_OpenOCD介绍以及上手
  7. 魔百和M301A-MQ代工-非高安-S905L3芯片-当贝桌面-免拆和拆机线刷固件包
  8. hive建表,与插入数据
  9. DotNetty IByteBuffer to a byte[]
  10. 叶胜超:Status(SNT)--区块链上的微信!