bdcontract-web-ide/doc/Introduction.html

552 lines
19 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html class="writer-html5" lang="zh-CN" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>BDContract介绍 &mdash; 北大数瑞大数据区块链 V1.0 文档</title>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="shortcut icon" href="_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/translations.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<link rel="index" title="索引" href="genindex.html" />
<link rel="search" title="搜索" href="search.html" />
<link rel="next" title="BDContract安装说明" href="InstallTips.html" />
<link rel="prev" title="北大数瑞大数据区块链 文档" href="index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html">
<img src="_static/logo.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="在文档中搜索" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">目录</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">BDContract介绍</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#id1">什么是BDContract?</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id2">特点</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id3">更新日志</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id4">使用开源项目说明</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="InstallTips.html">BDContract安装说明</a></li>
<li class="toctree-l1"><a class="reference internal" href="IDEUsage.html">BDContract管理界面</a></li>
<li class="toctree-l1"><a class="reference internal" href="ContractAPI.html">BDContract SDK</a></li>
<li class="toctree-l1"><a class="reference internal" href="YJSInDepth.html">YJS语法</a></li>
<li class="toctree-l1"><a class="reference internal" href="YJSAPI.html">YJS SDK</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">北大数瑞大数据区块链</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
<li>BDContract介绍</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/Introduction.rst.txt" rel="nofollow"> 查看页面源码</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="bdcontract">
<h1>BDContract介绍<a class="headerlink" href="#bdcontract" title="永久链接至标题"></a></h1>
<hr class="docutils" />
<div class="section" id="id1">
<h2>什么是BDContract?<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<p>北大数瑞是面向大数据场景的数据资源、IoT资源、云资源的管理、调度平台。BDContract是一个可信计算框架计算逻辑以智能合约的方式表达。通过”随机“和”冗余计算“的方式实现智能合约的可信执行。BDContract在保证智能合约的可用性、可靠性的同时着重提升执行效率和安全性。</p>
</div>
<hr class="docutils" />
<div class="section" id="id2">
<h2>特点<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<ol class="arabic simple" start="0">
<li><p>支持多种执行模式,权衡可用性、可靠性、正确性和效率。</p></li>
<li><p>接入各种数据源。</p></li>
<li><p>支持合约的细粒度监测。</p></li>
<li><p>支持合约的状态。</p></li>
<li><p>访问控制。</p></li>
<li><p>支撑跨语言调用。</p></li>
</ol>
</div>
<hr class="docutils" />
<div class="section" id="id3">
<h2>更新日志<a class="headerlink" href="#id3" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p><strong>v1.4.3</strong> 2021年6月9日</p>
<ul>
<li><p>修复SSL Renegotiate Bug</p></li>
<li><p>实现内存不足时自动Hangup-Resume</p></li>
<li><p>实现contract meta的硬盘持久化</p></li>
</ul>
</li>
<li><p><strong>v1.4.1</strong> 2021年5月26日</p>
<ul>
<li><p>实现了事件机制中的事件语义,支持“至少一次”、“至多一次”和“只有一次”</p></li>
<li><p>优化了合约模板</p></li>
<li><p>增加模板配置文件</p></li>
<li><p>优化了MockTemplate注解</p></li>
</ul>
</li>
<li><p><strong>v1.4.0</strong> 2021年5月9日</p>
<ul>
<li><p>优化了ACTemplate</p></li>
<li><p>完善了DoRepo的配置联动</p></li>
</ul>
</li>
<li><p><strong>v1.3.9</strong> 2021年4月22日</p>
<ul>
<li><p>修复了doipConfig在updateConfig中不支持的bug</p></li>
<li><p>test-tool支持了sudo</p></li>
<li><p>优化了contract-template中的ACTemplate模板</p></li>
</ul>
</li>
<li><p><strong>v1.3.6</strong> 2021年4月21日</p>
<ul>
<li><p>修复了docker中无法获取cpuid的问题</p></li>
</ul>
</li>
<li><p><strong>v1.3.6</strong> 2021年4月16日</p>
<ul>
<li><p>修复了部分bug</p></li>
<li><p>修复了GRPCPool线程数量不足导致排队的bug</p></li>
<li><p>修复了requestID分配在压力测试下可能重复的bug</p></li>
</ul>
</li>
<li><p><strong>v1.3.5</strong> 2021年3月31日</p>
<ul>
<li><p>修复了部分bug</p></li>
<li><p>http的合约调用部分增加了简单拥塞控制策略</p></li>
<li><p>稳定性提升</p></li>
</ul>
</li>
<li><p><strong>v1.3.0</strong> 2021年2月1日</p>
<ul>
<li><p>优化心跳机制</p></li>
<li><p>修复部分Bug</p></li>
<li><p>更新SM2/SM3库</p></li>
<li><p>更新前端签名计算方式</p></li>
</ul>
</li>
<li><p><strong>v1.2.0</strong> 2020年12月11日</p>
<ul>
<li><p>优化了多节点执行模式</p></li>
<li><p>优化了合约master路由的逻辑</p></li>
<li><p>修复了部分bug</p></li>
<li><p>修复文件系统相关的漏洞</p></li>
</ul>
</li>
<li><p><strong>v1.1.0</strong> 2020年9月</p>
<ul>
<li><p>支持https并更新了该部分文档</p></li>
</ul>
</li>
<li><p><strong>v1.0.9</strong> 2020年8月27日</p>
<ul>
<li><p>完善IO相关工具类的文档</p></li>
<li><p>优化合约模板DAC持久化</p></li>
</ul>
</li>
<li><p><strong>v1.0.7</strong> 2020年8月13日</p>
<ul>
<li><p>优化合约日志、账本接口</p></li>
<li><p>优化相关接口的文档</p></li>
<li><p>提供合约模板的websocket接口</p></li>
<li><p>自动编译bug修复</p></li>
</ul>
</li>
<li><p><strong>v1.0.5</strong> 2020年7月25日</p>
<ul>
<li><p>弱化NC的中心化作用集群点对点连接。</p></li>
<li><p>优化bdwareclient</p></li>
<li><p>TODO MemoryDurable</p></li>
</ul>
</li>
<li><p><strong>v1.0.2</strong> 2020年7月22日</p>
<ul>
<li><p>修复CentOS7下Too Many Opened Files的Bug</p></li>
<li><p>修复权限Bug</p></li>
<li><p>增加权限说明</p></li>
<li><p>修复MySQLUtil的bug</p></li>
<li><p>升级BDLedger版本</p></li>
</ul>
</li>
<li><p><strong>v1.0.1</strong> 2020年7月5日</p>
<ul>
<li><p>更新了NodePortal/CenterPortal的UI。</p></li>
<li><p>修改了编译流程在NodePortal中可查看编译结果在OnlineIDE中可手动/启动时编译</p></li>
<li><p>修改了合约分发逻辑以编译后ypk作为分发的文件</p></li>
<li><p>支持public目录下的ypk在多节点模式下执行时合约故障自动恢复</p></li>
</ul>
</li>
<li><p><strong>v0.99</strong> 2020年6月22日</p>
<ul>
<li><p>自定义合约方法的计费</p></li>
<li><p>新增了GasExample、Incentives示例</p></li>
<li><p>在客户端实现了“校验多点结果”,并优化了结果返回的方式</p></li>
<li><p>修复断线重连后无权限提示</p></li>
</ul>
</li>
<li><p><strong>v0.97</strong> 2020年5月25日</p>
<ul>
<li><p>cpu等资源的计量gas机制</p></li>
<li><p>onlineIDE.html 支持上传多个文件</p></li>
<li><p>udp方式组网进行多点执行[无定序消息]</p></li>
<li><p>bdwareclient.html修复只包含计算逻辑的调用示例生成前缀错误</p></li>
</ul>
</li>
<li><p><strong>v0.95</strong> 2020年5月19日</p>
<ul>
<li><p>修复了onlineIDE.html在的pathname有前缀时不能正确跳转bdwareclient的bug。</p></li>
<li><p>修复了bdwareclient的pathname有前缀时自动提取url的bug。</p></li>
<li><p>启用了合约的权限</p></li>
<li><p>增加了NodePortal.html/OnlineIDE.html和bdwareclient.html中无权限时的提醒</p></li>
</ul>
</li>
<li><p><strong>v0.90</strong> 2020年5月9日</p>
<ul>
<li><p>更改了yjs.jar/bdserver.jar的打包方式</p></li>
<li><p>更新了install.sh/update.sh</p></li>
<li><p>onlineIDE的修改后提醒</p></li>
<li><p>onlineIDE标签页自适应宽度</p></li>
<li><p>文件接口隔离</p></li>
</ul>
</li>
<li><p><strong>v0.8</strong> 2020年4月26日</p>
<ul>
<li><p>完善文档界面和优化SDK提供方式</p></li>
<li><p>数瑞Web客户端客户端中所有的数据处理和如何对处理后的数据进行渲染均来自合约调用实现可信Web应用。</p></li>
</ul>
</li>
<li><p><strong>v0.78</strong> 2020年4月13日</p>
<ul>
<li><p>合约调用DAC示例</p></li>
<li><p>支持动态修改IO权限</p></li>
<li><p>支持合约状态自定义备份(定时)策略</p></li>
<li><p>修复部分页面bug</p></li>
<li><p>日志展示优化</p></li>
<li><p>优化账本日志展示</p></li>
<li><p>启用部分权限访问控制</p></li>
</ul>
</li>
<li><p><strong>v0.7</strong> 2020年3月25日</p>
<ul>
<li><p>支持多种角色的访问控制</p></li>
<li><p>更新了UI</p></li>
</ul>
</li>
<li><p><strong>v0.6</strong> 2020年2月14日</p>
<ul>
<li><p>优化了合约进程间的通讯</p></li>
<li><p>尝试接入P2P网络</p></li>
</ul>
</li>
<li><p><strong>v0.5</strong> 2019年12月10日</p>
<ul>
<li><p>完善了3种智能合约状态记录-回放策略</p></li>
<li><p>支持了最简单的多点执行算法(不同步)</p></li>
</ul>
</li>
<li><p><strong>v0.45</strong> 2019年9月2日</p>
<ul>
<li><p>初步实现PBFT算法</p></li>
</ul>
</li>
<li><p><strong>v0.4</strong> 2019年5月10日</p>
<ul>
<li><p>支持memory dump</p></li>
</ul>
</li>
<li><p><strong>v0.35</strong> 2019年4月26日</p>
<ul>
<li><p>实现合约的静态分析框架</p></li>
<li><p>支持事件的发布-订阅</p></li>
</ul>
</li>
<li><p><strong>v0.3</strong> 2019年1月8日</p>
<ul>
<li><p>支持账本数据的接入</p></li>
<li><p>合约状态上链</p></li>
</ul>
</li>
<li><p><strong>v0.2</strong> 2018年10月9日</p>
<ul>
<li><p>支持Python包的自动生成</p></li>
<li><p>支持合约打包为ypk</p></li>
<li><p>支持文件、数据库等数据的接入</p></li>
</ul>
</li>
<li><p><strong>v0.1</strong> 2018年8月6日</p>
<ul>
<li><p>定义了智能合约的语法</p></li>
<li><p>基于nashorn引擎实现了智能合约的执行</p></li>
</ul>
</li>
</ul>
</div>
<hr class="docutils" />
<div class="section" id="id4">
<h2>使用开源项目说明<a class="headerlink" href="#id4" title="永久链接至标题"></a></h2>
<p>BDWareContract项目站在了许多巨人的肩膀上感谢这些开源项目。</p>
<p>本项目的智能合约后端使用了以下开源库。</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 28%" />
<col style="width: 50%" />
<col style="width: 22%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>名称</p></th>
<th class="head"><p>Licence类型</p></th>
<th class="head"><p>说明</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><a class="reference external" href="https://openjdk.java.net/projects/nashorn/">Project Nashorn</a></p></td>
<td><p><a class="reference external" href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GPLv2</a></p></td>
<td><p>使用了该项目的编译器可以将js函数编译为java字节码</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://projects.ow2.org/view/asm/">ASM OW2</a></p></td>
<td><p><a class="reference external" href="https://en.wikipedia.org/wiki/BSD_licenses#4-clause_license_(original_%22BSD_License%22)">BSD</a> with attribution</p></td>
<td><p>基于asm的TreeAPI与VisitorAPI实现合约的静态分析框架</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://netty.io/">Netty</a></p></td>
<td><p><a class="reference external" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a></p></td>
<td><p>使用netty作为Http/Websocket的服务端</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://grpc.io/">gRPC</a></p></td>
<td><p><a class="reference external" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a></p></td>
<td><p>使用gRPC与BDWareLedger通讯</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://github.com/facebook/rocksdb">RocksDB</a></p></td>
<td><p><a class="reference external" href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GPLv2</a></p></td>
<td><p>后台数据库</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://github.com/antlr/antlr4">ANTLR</a></p></td>
<td><p><a class="reference external" href="https://en.wikipedia.org/wiki/BSD_licenses#4-clause_license_(original_%22BSD_License%22)">BSD</a></p></td>
<td><p>对合约脚本的词法分析与语法分析</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://github.com/PopezLotado/SM2Java">SM2Java</a></p></td>
<td><p><a class="reference external" href="https://github.com/PopezLotado/SM2Java/blob/master/README.md"></a></p></td>
<td><p>国密SM2 Java语言实现</p></td>
</tr>
</tbody>
</table>
<p>本项目的智能合约前端使用了以下开源库。</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 36%" />
<col style="width: 47%" />
<col style="width: 16%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>名称</p></th>
<th class="head"><p>Licence类型</p></th>
<th class="head"><p>说明</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><a class="reference external" href="https://getbootstrap.com/">Bootstrap</a></p></td>
<td><p><a class="reference external" href="https://github.com/twbs/bootstrap/blob/master/LICENSE">MIT</a></p></td>
<td><p>前端的排版、样式</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://jquery.org/">jQuery</a></p></td>
<td><p><a class="reference external" href="https://jquery.org/license/">MIT</a></p></td>
<td><p>用于操作DOM的javascript库</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://jqueryui.com/">jQueryUI</a></p></td>
<td><p><a class="reference external" href="https://jquery.org/license/">MIT</a></p></td>
<td><p>前端UI构件库</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://datatables.net/">DataTables</a></p></td>
<td><p><a class="reference external" href="https://datatables.net/license/mit">MIT</a></p></td>
<td><p>表格样式</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://codemirror.net/">CodeMirror</a></p></td>
<td><p><a class="reference external" href="https://codemirror.net/LICENSE">MIT</a></p></td>
<td><p>代码编辑框样式</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://echarts.apache.org/zh/index.html">eCharts</a></p></td>
<td><p><a class="reference external" href="https://www.apache.org/licenses/">ApacheV2</a></p></td>
<td><p>统计图表</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://github.com/JuneAndGreen/sm-crypto">sm-crypto</a></p></td>
<td><p><a class="reference external" href="https://github.com/JuneAndGreen/sm-crypto/blob/master/LICENCE_MIT">MIT</a></p></td>
<td><p>国密SM2 javascript语言实现</p></td>
</tr>
</tbody>
</table>
<p>本项目的文档使用<a class="reference external" href="https://www.sphinx-doc.org/en/master/">Sphinx</a>生成,感谢<a class="reference external" href="https://readthedocs.org/">readthedocs</a>提供文档样式。</p>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="InstallTips.html" class="btn btn-neutral float-right" title="BDContract安装说明" accesskey="n" rel="next">下一页 <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="index.html" class="btn btn-neutral float-left" title="北大数瑞大数据区块链 文档" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> 上一页</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; 版权所有 2021, Peking University.
</p>
</div>
利用 <a href="https://www.sphinx-doc.org/">Sphinx</a> 构建,使用了
<a href="https://github.com/readthedocs/sphinx_rtd_theme">主题</a>
<a href="https://readthedocs.org">Read the Docs</a>开发.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>