ppblock基于 Java 实现的区块链钱包
Java 实现的一个简易区块链(联盟链)项目,包括加密工具,钱包,P2P 传输,区块同步,网络共识等基础实现。 它使用 SpringBoot + Tio 网络框架实现,是一个非常好的区块链学习项目,目前只实现了 POW 共识算法,如果要用于生产项目需要根据自己的项目需求修改共识。
项目架构
主程序使用 SpringBoot 实现, P2P 传输这块使用的是 t-io 网络框架。
运行环境为 JDK1.8 以上版本。
项目模块
- blockj-base 基础公共的工具包,如加密,区块,消息等数据模型,数据存储等。
- blockj-miner 区块链主程序,如矿工,区块同步,P2P 网络,RPC API 等。
- blockj-client 客户端命令行工具,主要就是调用 Miner 的相关 API,用户跟链交互。
快速开始
创建一条链的操作流程如下:
- 创建创世节点(创建一个网络)
- 启动创世节点(Genesis Miner)
- 其他节点要加入网络的话,只需要以创世区块初始化 Miner,然后再启动 Miner 即可。
创建创世节点
首先我们需要编译打包程序:
git clone https://gitee.com/blackfox/blockj.git cd blockj mvn clean package
然后创建创世节点:
./miner genesis --repo=/data/genesis --enable-mining=true
启动创世 Miner:
./miner run --repo=/data/genesis
启动新 Miner
首先需要初始化 miner,需要导入创世区块(genesis.car)来加入网络:
./miner init --repo=/data/miner1 --genesis=genesis.car --api.port=8002 --p2p.port=3456
启动 Miner
./miner run --repo=/data/miner1
客户端使用
-
查看钱包列表
./client wallet list # 输出 Address Balance Nonce 0x0d181310331612e107b5e0dfdf971cfb9de780bb 800 1 0x2505bf54f3a63848e44a105e8de599ad08ae8c58 2400 0 0xb6258bc70240ee5daa213f671c08db51e50a4cbe 50800 3 0xcd3da3ec4195070e13a6d88b75101f6ceb427a8e 0 0
-
创建新钱包
# 创建普通钱包 ./client wallet new 0xb640636a77381b6589c78d58d629221131946dc # 创建带助记词的钱包,可设置密码,生成 keystore 文件 ./client wallet new --mnemonic=true 123456 Mnemonic words: rain fog canal matrix tonight initial frog wear feel movie worry whisper Address: 0x42a8037f2876f649e08f7be6764b810e9a2f21da
-
查询钱包余额
./client wallet balance 0x2505bf54f3a63848e44a105e8de599ad08ae8c58 # 输出 Address Balance 0x2505bf54f3a63848e44a105e8de599ad08ae8c58 2400
-
转账
./client chain send --from=0x0d181310331612e107b5e0dfdf971cfb9de780bb 0x2505bf54f3a63848e44a105e8de599ad08ae8c58 123 # 输出 Send message, CID: 05b6074241f1406cd1a68731d74cf612f55981692a3f4e5d9da01b13b4ee3631
-
查看当前链高度
./client chain head Chain head: 1217
-
查看指定的链上消息
./client chain getMessage 05b6074241f1406cd1a68731d74cf612f55981692a3f4e5d9da01b13b4ee3631 # 输出 Message{version=1, from='0x0d181310331612e107b5e0dfdf971cfb9de780bb', to='0x2505bf54f3a63848e44a105e8de599ad08ae8c58', value=123, timestamp=1672826743640, pubKey='PZ8Tyr4Nx8MHsRAGMpZmZ6TWY63dXWSCw5EXe33S25zZDT25sNYu1bjtBfaCwEGSgnGhJiE31fCfDsyE3pNFw7cC87VfQZQqiEdntMmztfpiDcRe1gv3aJJ4', cid='05b6074241f1406cd1a68731d74cf612f55981692a3f4e5d9da01b13b4ee3631', status=APPENDING, nonce=2, params='null', height=0, sign='30460221009A8B2750A6D986EB926B67163B740BBACDD07FE2D87F8FA9AE2F08424989477602210082C1C36EAEEC6367C023847F995291873F305B867E9B65A5C68ED8A4293DB890'}
-
查看指定高度的区块信息
./client chain getBlock 1 # 输出 Block{header=BlockHeader{height=1, difficulty=28269553036454149273332760011886696253239742350009903329945699220681916416, nonce=703, createTime=1672813674, hash='0004c262f7ead28cc66c9336d7a8335cb8fea5a06b0b1fd7488c3c9b140987cc', previousHash='ed5126ddd65f39a17739b8e26ea3edecfff6bf196148dc259d9a3eddeefc23d5'}, messages=[Message{version=0, from='B099', to='0xb6258bc70240ee5daa213f671c08db51e50a4cbe', value=50, timestamp=1672813674163, pubKey='PZ8Tyr4Nx8MHsRAGMpZmZ6TWY63dXWSD1ErKp8AqSj4Ph9Jsj2Gvk7w1pyLgqDRiguC7JvjeGZJZ1si1qRYCAsVmu1UvYRqvhiCBgYDpmyuWK5VzD5KK4RNY', cid='3e1f8987b0d66b2de155e78aeef6984ab7cb6c3acdf03c835c01f4b4088fb90d', status=SUCCESS, nonce=0, params='Miner Reward.', height=1, sign='304402202DF6EABBF5C81C41996C44F8E1230D44CAE8ADA9184B466D9B708ADC8B050225022049D74E4E99E0EA8E56208AD2E4B7B17C2320DC3E6461A17C94D1820818559CA9'}], blockSign='3046022100C04714C00642527AF6AA1DB2B537E5FD887F52999F66929AA2A928D4C6A4897A022100AF98888FDC825FFB0683E8D65494363790E5173F3991AF61AB86DEEFEAF15D81'}
-
查看当前网络中 P2P 节点列表
./client net peers
-
查看当前节点 P2P 连接信息
./client net listen # P2P 连接信息,用于被其他节点连接 127.0.0.1:2345
-
手动连接某个节点
./client net connect 192.22.33.11:3456
评论
金融研究 | 使用Python测量关键审计事项的「信息含量」
Tips: 公众号推送后内容只能更改一次,且只能改20字符。如果内容出问题,或者想更新内容, 只能重复推送。为了更好的阅读体验,建议阅读本文博客版, 链接地址https://textdata.cn/blog/2023-01-13-information-content-of-critical-aud
大邓和他的Python
0
我看阿里的年终奖总算发了!
到4月底了,这两天看朋友圈,发现阿里的年终奖终于发了,问了问老同学,也从网上检索了不少信息,基本搞清楚了阿里今年的年终奖情况。近来来阿里一些集团对绩效等级做了较大的调整,以前的旧绩效系统中,绩效分为3.25、3.5、3.75、4和5五个等级,其中4和5是较高绩效等级,较少见。而且之前3.5绩效内部划
公子龙
0
CVPR 2024|大视觉模型的开山之作!无需任何语言数据即可打造大视觉模型
↑ 点击蓝字 关注极市平台作者丨科技猛兽编辑丨极市平台极市导读 本文提出一种序列建模 (sequential modeling) 的方法,不使用任何语言数据,训练大视觉模型。>>加入极市CV技术交流群,走在计算机视觉的最前沿本文目录1 序列建模打造大视觉模型(来自 U
极市平台
1
金融研究(更新) | 使用Python构建关键审计事项的「信息含量」
Tips: 公众号推送后内容只能更改一次,且只能改20字符。如果内容出问题,或者想更新内容, 只能重复推送。为了更好的阅读体验,建议阅读本文博客版, 链接地址https://textdata.cn/blog/2023-01-13-information-content-of-critical-aud
大邓和他的Python
0
盘点Lombok的几个骚操作,你绝对没用过!
👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:http://116.62.199.48/ ,新项目正在酝酿中
小哈学Java
0
堪称最优秀的Docker可视化管理工具——Portainer你真的会用吗?
来源:blog.csdn.net/shark_chili3007/article/details/123366179👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目
小哈学Java
0
Apache Paimon毕业,湖仓架构的未来发展趋势!
北京时间 2024 年 4 月 16日,开源软件基金会 Apache Software Foundation(以下简称 ASF)正式宣布 Apache Paimon 毕业成为 Apache 顶级项目(TLP, Top Level Project)。经过社区的共同努力和持续创新,Apache Paim
程序源代码
0
JS的这些新特性,你都用过么?
大厂技术 高级前端 Node进阶点击上方 程序员成长指北,关注公众号回复1,加入高级Node交流群作为一门不断演进的语言,JavaScript每年都会引入新特性。这些特性的加入,能够帮助我们编写更加简洁、高效、易于维护的代码。然而,并非所有新特性
程序员成长指北
1