栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

区块链 bitcoin 的 Java 实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

区块链 bitcoin 的 Java 实现

前几年一直做区块链的项目, 最近一段时间有空闲时间就自己实现了一下 bitcoin 的功能.
代码在 gitee 上, github 因为网络原因更新会延迟.

架构

基于 spring-boot 开发, 使用了 spring-boot-starter-webflux (因为需要实现 http 的 bitcoin-rpc 接口)
网络使用 netty 框架, 区块链的索引使用 leveldb 的java实现
钱包使用 H2 的数据库
签名使用 bouncycastle 第三方实现 (JDK secp256k1 实现有BUG)
RPC 接口使用作者之前的实现 rpc-bitcoin

功能列表
  1. 基于 netty 实现了 bitcoin 的网络协议 com.github.microwww.bitcoin.net
  2. 区块的下载和存储 com.github.microwww.bitcoin.store.PeerChannelClientHandler / DiskBlock, 区块文件格式跟bitcoin-core的完全相同 /blocks/blk?????.dat
  3. 脚本 com.github.microwww.bitcoin.script 实现了少部分常用功能函数, 主要为交易校验使用
  4. 钱包 com.github.microwww.bitcoin.wallet 使用 H2 的数据库, 钱包地址每次生成是随机的, 跟bitcoin-core 不同
  5. 交易模版 com.github.microwww.bitcoin.script.PubKeyscript,
  6. 交易签名的校验 com.github.microwww.bitcoin.chain.sign
  7. UTXO 交易查询(暂未实现)
  8. 本地交易的创建(暂未实现)
  9. 缓存交易 com.github.microwww.bitcoin.store.TxPool
  10. 挖矿 com.github.microwww.bitcoin.chain.GenChainBlock, 性能不好, 只为测试使用
  11. RPC 接口基本没有实现 com.github.microwww.bitcoin.rpc
代码说明
  1. Bitcoin 启动入口 com.github.microwww.bitcoin.provider.BitcoinStarter
  2. Server 监听 ...provider.ServerStarter 默认监听 8333 / 18333 / 18444, netty 监听 PeerChannelServerHandler
  3. Peer 的入口 ...provider.PeerEventListener, 配置来源自 BitcoinStarter, netty 网络解析 PeerChannelClientHandler
  4. 区块链的校验: PeerChannelClientProtocol.tryBlock 方法
  5. 交易的校验 : 在 tryBlock 方法的 chain.getTransactionStore().verifyTransactions(cb);

(完)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/396803.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号