比特币实现 java版

基于Java实现的比特币系统

实现比特币 的 go语言版本的比较多 java 并不多 所以就边研究边想实现一遍用java,但为什么大多数人用go来实现 其一就是比较快吧 用java感觉有些笨重,运行编译速度 也比不上go.

目前实现了

  • 数据层√
    • 数据区块 √
    • 哈希函数 √
    • 链式结构√
    • Merklet树√
    • 时间戳√
    • 非对称加密√
    • 交易签名√
    • 交易转账utxo模型√
  • 网络层
    • p2p网络 √
    • 传播机制√
    • 验证机制√
  • 共识层
    • pow √

数据层基本上该有的都有了

//比特币衰减周期
private final static int decaycycle = 10 * 6 * 24 *365 * 4;
//初始奖励数 每 decaycycle块减半
private final static float basewaard = (float) 50.0;
//Q特币初始奖励数
public final static int Qitcoin = 21000000;

设定了 每块自动调节时间 为10分钟 刚开始挖矿会比较快 挖着挖着 就接近10分钟了

奖励也是 设定的 21000000万枚 表面上高仿比特币的机制。

网络层 测试了 开2个进程 可以互相通信传输区块 当挖到区块是自动同步 当添加交易时自动同步到交易池

交易池 暂时还是比较 简单的 只是简单的存储维护一个交易list

关于网络层 比特币 使用的是UPNP协议进行Nat穿透 暂时还没添加上 所以只能有公网ip 或者内网之间测试 。

数据存储用的leveldb

使用方式:


p2pserver -listenport 52111 //运行一个监听一个 服务端  

p2pserver -listenport 52112 -seedport ws://localhost:52111  //监听端
 
首先创建一个钱包 createwallet -name [Name] 账户名

getbalance -address 1986nN76A38CnBSvj9kmkTnVfu4sCiF28B  使用钱包地址获取零钱

send -from zhangsan -to 18vCZaoBvu14v7QdT8L4xVztPTsr7vWMSk -amount 2 //转账 只有在湾矿后才能生效

createblockchain -address zhangsan 创建区块


https://github.com/qiaojinxia/qBlockChain

发布了67 篇原创文章 · 获赞 5 · 访问量 3155

猜你喜欢

转载自blog.csdn.net/weixin_41315492/article/details/103100811