Coder Social home page Coder Social logo

bubichain / bubichain Goto Github PK

View Code? Open in Web Editor NEW
96.0 96.0 39.0 171.35 MB

bubi blockchain is a mature, stable, high performance block chain implementation, it has been running on https://www.bumeng.cn for years.

Home Page: http://www.bubi.cn

License: Apache License 2.0

Makefile 0.07% Shell 0.02% M4 0.01% C++ 60.85% Python 7.53% HTML 0.01% C 22.50% Roff 1.74% Batchfile 0.01% PHP 0.01% Pascal 0.01% Objective-C 1.55% Protocol Buffer 0.06% Java 5.63%

bubichain's Introduction

Build Status CircleCI Build status

简介

布比区块链由布比(北京)网络技术有限公司发起并研发,旨在推动区块链技术的发展与应用。目前布比区块链正被广泛应用于商业积分、电子券、预付卡、游戏装备、保险卡单、证券化资产等领域。

  • 去中心化 采用P2P分布式存储,没有中心化的管理节点,可根据实际需求配置若干个验证节点,所有的验证节点具备相同的权利,整个系统的数据块由所有验证节点来共同维护。
  • 安全 数据经过验证节点之间达成共识然后添加至区块链,一旦添加至区块链就会永久存储而且不可篡改,单个节点对数据的修改是无效的。
  • 高效 此版本通过优化数据结构,关键路径多线程并发,多机分布式计算hash,异步写入数据库等方法,使得性能提高明显,普通PC节点可以达3000TPS。集群节点性能更高。
  • 稳定 布比区块链已经商用于布萌数字资产平台一年多,目前(2017年5月7日)累积用户数1013万,周新增用户数14万,周新增交易数110万。
  • 开放 通过公开的API可查询区块链数据,也可根据实际需求修改布比区块链源码。
  • 可移植 使用标准C++开发,支持windows,linux等各种平台

架构

布比区块链节点支持分布式部署,以满足高性能,高可靠需求。每个节点至少需要有一个bubi node,即一个bubi进程和一个SQL数据库组成。Bubi node支持横向扩展,以满足高可靠需求。Slave cluster为可选组件,用来分担bubi node的计算,支持动态扩展。Big data mining 为可选组件,可做大数据分析和挖掘。可参考如下部署图。

Balance server 为可选服务,这取决于用户以何种方式使用bubi底层服务。 Reserve proxy或Endpoint map是为了将底层服务部署到广域网。如果部署在云平台,需要在控制台做端口映射即可。 如果部署到自建服务器上,需要在网关做端口映射或部署一个反向代理服务。

系统交互

布比底层提供了多种接口,提交交易接口推荐使用SDK方式,这种提交为异步提交,结果会分阶段的通知给应用,比如CONFIRM,PENDING,COMPLETE或者FAILURE。另外可以使用WEB接口提交至bubi 或者slave。 查询请求只能发送到bubi进程。图中的PUB,SUB是ZMQ中的发布订阅模式,PUSH,PULL为任务模式,可以清晰的看到bubi,slave,sdk,monitor之间的通信方式。 Monitor与监控中心采用websocket模式,有利于实时告警。

模块

下图描述了bubi和slave内部的主要模块,以及重点模块间的交互。黄色的模块中含有线程,灰色的为外部持久化文件。为了提高性能,减少交易峰值时IO对性能的影响,设计上考虑了异步写入数据库的功能。蓝色为SDK或者使用者,与bubi通信采用web和MQ两种方式。

交易流程

下图描述了交易的处理流程。slave不是必须的,如果没有slave,bubi会自己做验签工作。

编译

Build on Ubuntu 14.04

  • 安装依赖

    sudo apt-get install automake autoconf libtool g++ cmake libidn11-dev

    手动安装oracle jdk

  • 编译 ./configure make

  • 一键编译

    进入build/linux目录,执行build.sh

Build on Windows with VS2013

使用vs2013打开项目文件 build/win32/bubi.vs12.sln 编译

测试

在test目录下的4peers-without-slave_test.sh 和4peers-with-slave_test.sh,分别用 于部署四个节点带slave和不带slave的测试。带slave的节点配置文件位于test/env/4peers-with-slave/peeri-with-slave目录下,不带slave的节点配置文件位于test/env/4peers-without-slave/peeri-without-slave目录下,i是节点标记1到4。

以test/env/4peers-with-slave/peer1-with-slave目录为例:

bin 存放可执行文件

confg 存放配置文件,bubi.json 是bubi的配置文件,slave.json 是slave的配置文件,可根据实际情况修改配置。bubi.json中db的用户名密码配置需与postgresql安装时设置一致。

log 默认存放日志文件,可以在bubi.json中配置

data 默认存放key-value db数据文件,可在bubi.json中配置

执行test/4peers-without-slave_test.sh启动四个节点不带slave

执行test/4peers-with-slave_test.sh启动四个节点带slave

Copyright © 2016 Bubi Technologies Co., Ltd

bubichain's People

Contributors

bubichain avatar cqycsxf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bubichain's Issues

peer connect err &&message replica id(0) not equal the signature id(2)

[2019-09-07 02:14:42.212 - ERR] <7F36A57FA700> net.cpp(693):On connect err pointer 2718965808 120.230.114.77:9333
[2019-09-07 02:14:42.212 - ERR] <7F36A57FA700> peer.cpp(225):Peer(120.230.114.77:9333) error (125:Operation canceled)
[2019-09-07 02:14:42.213 - ERR] <7F36A57FA700> net.cpp(693):On connect err pointer 2980398624 120.230.114.69:9333
[2019-09-07 02:14:42.213 - ERR] <7F36A57FA700> peer.cpp(225):Peer(120.230.114.69:9333) error (125:Operation canceled)
[2019-09-07 02:14:42.213 - ERR] <7F36A57FA700> net.cpp(693):On connect err pointer 2980420304 120.230.114.36:9333
[2019-09-07 02:14:42.213 - ERR] <7F36A57FA700> peer.cpp(225):Peer(120.230.114.36:9333) error (125:Operation canceled)
[2019-09-07 02:14:42.213 - ERR] <7F36A57FA700> net.cpp(693):On connect err pointer 2980552416 120.230.114.99:9333
[2019-09-07 02:14:42.213 - ERR] <7F36A57FA700> peer.cpp(225):Peer(120.230.114.99:9333) error (125:Operation canceled)
[2019-09-07 02:14:42.213 - ERR] <7F36A57FA700> net.cpp(693):On connect err pointer 2980432384 223.74.66.152:9333
[2019-09-07 02:14:42.213 - ERR] <7F36A57FA700> peer.cpp(225):Peer(223.74.66.152:9333) error (125:Operation canceled)
[2019-09-07 02:14:42.213 - ERR] <7F36A57FA700> net.cpp(693):On connect err pointer 2980403392 120.230.114.124:9333
[2019-09-07 02:14:42.213 - ERR] <7F36A57FA700> peer.cpp(225):Peer(120.230.114.124:9333) error (125:Operation canceled)
[2019-09-07 02:14:42.213 - ERR] <7F36A57FA700> net.cpp(693):On connect err pointer 2980437216 120.230.114.8:9333
[2019-09-07 02:14:42.214 - ERR] <7F36A57FA700> peer.cpp(225):Peer(120.230.114.8:9333) error (125:Operation canceled)
[2019-09-07 02:14:42.214 - ERR] <7F36A57FA700> net.cpp(693):On connect err pointer 2980537920 120.230.114.119:9333
[2019-09-07 02:14:42.214 - ERR] <7F36A57FA700> peer.cpp(225):Peer(120.230.114.119:9333) error (125:Operation canceled)
[2019-09-07 02:14:42.214 - ERR] <7F36A57FA700> net.cpp(693):On connect err pointer 2980571744 223.74.66.141:9333
2019-09-07 02:15:14.219 - ERR] <7F36B23452C0> pbft.cpp(597):Check received message(type:type:CheckPoint | seq:2891240 replica:0| digest:7447954b957bda53f5e45c88b3755bd0981b529af57d70706d9b2d108a44c441) failed, message replica id(0) not equal the signature id(2)
[2019-09-07 02:15:14.220 - ERR] <7F36B23452C0> pbft.cpp(597):Check received message(type:type:Commit | vn:200 seq:2891240 replica:0 | value:d8effb9ce55dfb9db1ff6f8e3849d7138d80620340b4197d80b09a249d228c08) failed, message replica id(0) not equal the signature id(2)
[2019-09-07 02:15:14.574 - ERR] <7F36B23452C0> pbft.cpp(597):Check received message(type:type:Pre-Prepare | vn:200 seq:2891240 replica:0 | value:hash:059e14a7, close time:2019-09-07 02:15:14.182181) failed, message replica id(0) not equal the signature id

这些日志的报错需要处理么.
公司很早的项目,用的bubichain

root@ubuntu:/data/bubichain# cat bin/version.txt 
Revision: 2.0.0.0
Node Kind: directory
Schedule: normal
Last Changed Author: [email protected]

Last Changed Date: 19:42, 2017Ū07Ղ10ɕ
Revision:3213

执行4peers-without-slave_test.sh提示没有目录No such file or directory

执行4peers-without-slave_test.sh脚本里边
bubichain-master/test/env/4peers-without-slave/peer1-without-slave/update.sh提示
cp: cannot stat ‘/root/bubichain-master/test/env/4peers-without-slave/peer1-without-slave/../../../../src/main/bubi’: No such file or directory

完整报错

[root@fabric bubichain-master]# ./test/4peers-without-slave_test.sh
start 4peers-without-slave
cp: cannot stat ‘/root/bubichain-master/test/env/4peers-without-slave/peer1-without-slave/../../../../src/main/bubi’: No such file or directory
chmod: cannot access ‘/root/bubichain-master/test/env/4peers-without-slave/peer1-without-slave/bin/bubi’: No such file or directory
/root/bubichain-master/test/env/4peers-without-slave/peer1-without-slave/dropdb.sh: line 7: /root/bubichain-master/test/env/4peers-without-slave/peer1-without-slave/bin/bubi: No such file or directory
cp: cannot stat ‘/root/bubichain-master/test/env/4peers-without-slave/peer2-without-slave/../../../../src/main/bubi’: No such file or directory
chmod: cannot access ‘/root/bubichain-master/test/env/4peers-without-slave/peer2-without-slave/bin/bubi’: No such file or directory
/root/bubichain-master/test/env/4peers-without-slave/peer2-without-slave/dropdb.sh: line 7: /root/bubichain-master/test/env/4peers-without-slave/peer2-without-slave/bin/bubi: No such file or directory
cp: cannot stat ‘/root/bubichain-master/test/env/4peers-without-slave/peer3-without-slave/../../../../src/main/bubi’: No such file or directory
chmod: cannot access ‘/root/bubichain-master/test/env/4peers-without-slave/peer3-without-slave/bin/bubi’: No such file or directory
/root/bubichain-master/test/env/4peers-without-slave/peer3-without-slave/dropdb.sh: line 7: /root/bubichain-master/test/env/4peers-without-slave/peer3-without-slave/bin/bubi: No such file or directory
cp: cannot stat ‘/root/bubichain-master/test/env/4peers-without-slave/peer4-without-slave/../../../../src/main/bubi’: No such file or directory
chmod: cannot access ‘/root/bubichain-master/test/env/4peers-without-slave/peer4-without-slave/bin/bubi’: No such file or directory
/root/bubichain-master/test/env/4peers-without-slave/peer4-without-slave/dropdb.sh: line 7: /root/bubichain-master/test/env/4peers-without-slave/peer4-without-slave/bin/bubi: No such file or directory
/root/bubichain-master/test/env/4peers-without-slave/peer1-without-slave/start.sh: line 10: /root/bubichain-master/test/env/4peers-without-slave/peer1-without-slave/bin/bubi: No such file or directory
/root/bubichain-master/test/env/4peers-without-slave/peer1-without-slave/start.sh: line 11: /root/bubichain-master/test/env/4peers-without-slave/peer1-without-slave/bin/bubi_monitor: No such file or directory
/root/bubichain-master/test/env/4peers-without-slave/peer2-without-slave/start.sh: line 10: /root/bubichain-master/test/env/4peers-without-slave/peer2-without-slave/bin/bubi: No such file or directory
/root/bubichain-master/test/env/4peers-without-slave/peer2-without-slave/start.sh: line 11: /root/bubichain-master/test/env/4peers-without-slave/peer2-without-slave/bin/bubi_monitor: No such file or directory
/root/bubichain-master/test/env/4peers-without-slave/peer4-without-slave/start.sh: line 10: /root/bubichain-master/test/env/4peers-without-slave/peer4-without-slave/bin/bubi: No such file or directory
/root/bubichain-master/test/env/4peers-without-slave/peer4-without-slave/start.sh: line 11: /root/bubichain-master/test/env/4peers-without-slave/peer4-without-slave/bin/bubi_monitor: No such file or directory
./test/4peers-without-slave_test.sh: line 9: ant: command not found
mv: cannot stat ‘/root/bubichain-master/test/testcase/testng/InterfaceTest-1.8/test-output/TestNG/Report.zip’: No such file or directory
./test/4peers-without-slave_test.sh: line 15: ant: command not found
/root/bubichain-master/test/env/4peers-without-slave/peer3-without-slave/start.sh: line 10: /root/bubichain-master/test/env/4peers-without-slave/peer3-without-slave/bin/bubi: No such file or directory
/root/bubichain-master/test/env/4peers-without-slave/peer3-without-slave/start.sh: line 11: /root/bubichain-master/test/env/4peers-without-slave/peer3-without-slave/bin/bubi_monitor: No such file or directory
kill: sending signal to 60730 failed: No such process
/root/bubichain-master/test/env/4peers-without-slave/stop.sh: line 5: 60725 Terminated $i/stop.sh
kill: sending signal to 60739 failed: No such process
/root/bubichain-master/test/env/4peers-without-slave/stop.sh: line 5: 60734 Terminated $i/stop.sh
kill: sending signal to 60748 failed: No such process
/root/bubichain-master/test/env/4peers-without-slave/stop.sh: line 5: 60743 Terminated $i/stop.sh
kill: sending signal to 60757 failed: No such process
/root/bubichain-master/test/env/4peers-without-slave/stop.sh: line 5: 60752 Terminated $i/stop.sh

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.