Giter Club home page Giter Club logo

blockchain-principle's Introduction

BlockChain-principle

description:blockchain-principle experimental implement for java

java 版本的区块链原理基本实现

主要简单实现了区块链的一些基本功能
  • 交易的生成
  • 区块的生成
  • 挖矿过程(pow)
  • 分叉冲突的解决
  • pos用tcp实现在pos包中
Todo
  1. 持久化
  2. 验证交易 公私钥
  3. 并发调用
  4. 查询索引
  5. 其他共识算法
  6. pos实现,后期考虑合并到principle包,且支持共识算法的切换
使用测试说明

principle包使用的是pow共识机制,这个包主要用来简单实现区块链基本功能原理。

使用spring boot启动后,通过http的访问方式可以实现区块链生成的大致流程:

  1. post /chain/newTransaction产生区块链
  2. get /chain/mine 手动进行挖矿(实际应该是有一段循环逻辑不停地进行pow挖矿)
  3. get /chain/getFullChain 查看挖矿后的最新区块链

pos包使用的是pos共识机制,为了方便编写测试,这个包下的区块node结构和principle包 的略有不同。

主要是通过TCP方式,启动一个server,然后让多个client连接,发送client对应的股权信息, server来进行选择。当前使用的b/s模式可以认为是实际使用的p2p形势的一种简化。

大致流程:

  1. PosImpl类启动main方法
  2. com.zhj.blockchainprinciple.pos.Client启动main方法,里面的clientSize参数 可以设置同时发送信息的client的数量。
  3. 根据PosImpl对应的控制台打印的信息,查看client的连接、执行逻辑、 选出产快client、断开连接的情况
  4. 根据Client对应的控制台打印的信息,查看server发送给每个client的选举信息,以及 最新的区块链状况

ps :因为打印的控制信息设计了多个client,所以查看具体某个client的信息的时候, 可以根据线程名进行过滤。

blockchain-principle's People

Contributors

zhouhongjian avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.