BDContract介绍¶
什么是BDContract?¶
北大数瑞是面向大数据场景的数据资源、IoT资源、云资源的管理、调度平台。BDContract是一个可信计算框架,计算逻辑以智能合约的方式表达。通过”随机“和”冗余计算“的方式实现智能合约的可信执行。BDContract在保证智能合约的可用性、可靠性的同时,着重提升执行效率和安全性。
特点¶
支持多种执行模式,权衡可用性、可靠性、正确性和效率。
接入各种数据源。
支持合约的细粒度监测。
支持合约的状态。
访问控制。
支撑跨语言调用。
更新日志¶
v1.4.3 2021年6月9日
修复SSL Renegotiate Bug
实现内存不足时自动Hangup-Resume
实现contract meta的硬盘持久化
v1.4.1 2021年5月26日
实现了事件机制中的事件语义,支持“至少一次”、“至多一次”和“只有一次”
优化了合约模板
增加模板配置文件
优化了MockTemplate注解
v1.4.0 2021年5月9日
优化了ACTemplate
完善了DoRepo的配置联动
v1.3.9 2021年4月22日
修复了doipConfig在updateConfig中不支持的bug
test-tool支持了sudo
优化了contract-template中的ACTemplate模板
v1.3.6 2021年4月21日
修复了docker中无法获取cpuid的问题
v1.3.6 2021年4月16日
修复了部分bug
修复了GRPCPool线程数量不足导致排队的bug
修复了requestID分配在压力测试下可能重复的bug
v1.3.5 2021年3月31日
修复了部分bug
http的合约调用部分增加了简单拥塞控制策略
稳定性提升
v1.3.0 2021年2月1日
优化心跳机制
修复部分Bug
更新SM2/SM3库
更新前端签名计算方式
v1.2.0 2020年12月11日
优化了多节点执行模式
优化了合约master路由的逻辑
修复了部分bug
修复文件系统相关的漏洞
v1.1.0 2020年9月
支持https,并更新了该部分文档
v1.0.9 2020年8月27日
完善IO相关工具类的文档
优化合约模板:DAC持久化
v1.0.7 2020年8月13日
优化合约日志、账本接口
优化相关接口的文档
提供合约模板的websocket接口
自动编译bug修复
v1.0.5 2020年7月25日
弱化NC的中心化作用,集群点对点连接。
优化bdwareclient
TODO MemoryDurable
v1.0.2 2020年7月22日
修复CentOS7下Too Many Opened Files的Bug
修复权限Bug
增加权限说明
修复MySQLUtil的bug
升级BDLedger版本
v1.0.1 2020年7月5日
更新了NodePortal/CenterPortal的UI。
修改了编译流程,在NodePortal中可查看编译结果,在OnlineIDE中可手动/启动时编译
修改了合约分发逻辑,以编译后ypk作为分发的文件
支持public目录下的ypk在多节点模式下执行时,合约故障自动恢复
v0.99 2020年6月22日
自定义合约方法的计费
新增了GasExample、Incentives示例
在客户端实现了“校验多点结果”,并优化了结果返回的方式
修复断线重连后无权限提示
v0.97 2020年5月25日
cpu等资源的计量:gas机制
onlineIDE.html 支持上传多个文件
udp方式组网进行多点执行[无定序消息]
bdwareclient.html,修复只包含计算逻辑的调用示例生成前缀错误
v0.95 2020年5月19日
修复了onlineIDE.html在的pathname有前缀时不能正确跳转bdwareclient的bug。
修复了bdwareclient的pathname有前缀时自动提取url的bug。
启用了合约的权限
增加了NodePortal.html/OnlineIDE.html和bdwareclient.html中无权限时的提醒
v0.90 2020年5月9日
更改了yjs.jar/bdserver.jar的打包方式
更新了install.sh/update.sh
onlineIDE的修改后提醒
onlineIDE标签页自适应宽度
文件接口隔离
v0.8 2020年4月26日
完善文档界面和优化SDK提供方式
数瑞Web客户端,客户端中所有的数据处理和如何对处理后的数据进行渲染均来自合约调用,实现可信Web应用。
v0.78 2020年4月13日
合约调用DAC示例
支持动态修改IO权限
支持合约状态自定义备份(定时)策略
修复部分页面bug
日志展示优化
优化账本日志展示
启用部分权限访问控制
v0.7 2020年3月25日
支持多种角色的访问控制
更新了UI
v0.6 2020年2月14日
优化了合约进程间的通讯
尝试接入P2P网络
v0.5 2019年12月10日
完善了3种智能合约状态记录-回放策略
支持了最简单的多点执行算法(不同步)
v0.45 2019年9月2日
初步实现PBFT算法
v0.4 2019年5月10日
支持memory dump
v0.35 2019年4月26日
实现合约的静态分析框架
支持事件的发布-订阅
v0.3 2019年1月8日
支持账本数据的接入
合约状态上链
v0.2 2018年10月9日
支持Python包的自动生成
支持合约打包为ypk
支持文件、数据库等数据的接入
v0.1 2018年8月6日
定义了智能合约的语法
基于nashorn引擎,实现了智能合约的执行
使用开源项目说明¶
BDWareContract项目站在了许多巨人的肩膀上,感谢这些开源项目。
本项目的智能合约后端使用了以下开源库。
名称 |
Licence类型 |
说明 |
---|---|---|
使用了该项目的编译器,可以将js函数编译为java字节码 |
||
BSD with attribution |
基于asm的TreeAPI与VisitorAPI实现合约的静态分析框架 |
|
使用netty作为Http/Websocket的服务端 |
||
使用gRPC与BDWareLedger通讯 |
||
后台数据库 |
||
对合约脚本的词法分析与语法分析 |
||
国密SM2 Java语言实现 |
本项目的智能合约前端使用了以下开源库。
名称 |
Licence类型 |
说明 |
---|---|---|
前端的排版、样式 |
||
用于操作DOM的javascript库 |
||
前端UI构件库 |
||
表格样式 |
||
代码编辑框样式 |
||
统计图表 |
||
国密SM2 javascript语言实现 |
本项目的文档使用Sphinx生成,感谢readthedocs提供文档样式。