布萌是做什么的?
布萌是一个使用区块链技术搭建的数字资产网络,任何拥有资产的机构/个人都可以在这个网络上发行自己的数字资产(例如数字黄金、积分、游戏装备等),资产在网络中可以自由兑换和流通。
链上资产的交易流通将不依赖于任何中心化系统,因为服务器和节点由布萌社区众多成员共同部署和维护,应用产生的数据通过共识机制会存储在区块链所有节点上,单一机构对于自身节点数据的修改无法通过其他节点数据验证,从而保障了数字的真实性,确保用户的数字权利“真正”属于用户。
开发者注册地址:https://www.bumeng.cn/user/register
布萌的底层技术简介
布萌以布比区块链为技术底层(源码地址可在布萌官网查看),有以下特点:
λ 去中心化
采用P2P分布式存储,没有中心化的管理节点,可根据实际需求配置若干个验证节点,所有的验证节点具备相同的权利,整个系统的数据块由所有验证节点来共同维护。
λ 安全
数据经过验证节点之间达成共识然后添加至区块链,一旦添加至区块链就会永久存储而且不可篡改,单个节点对数据的修改是无效的。
λ 高效
通过优化数据结构,关键路径多线程并发,多机分布式计算hash,异步写入数据库等方法,使得性能明显提高,普通PC节点可以达3000TPS。集群节点性能更高。
λ 开放
通过公开的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
以上是布萌区块链底层技术的架构及功能介绍,想要了解更多,可以到布萌官网www.bumeng.cn注册开发者账号。注册后,可在测试链体验区块链服务,或者上正式链发行资产。由于底层技术已开源,也可用于搭建私链。