feat: init; from commit c3adcb2e6bc94b46f4f34c03bc62abcce6c7e1a0 of BDContract
This commit is contained in:
6371
doc/markdown_BDWare/ContractAPI.html
Normal file
6371
doc/markdown_BDWare/ContractAPI.html
Normal file
File diff suppressed because one or more lines are too long
614
doc/markdown_BDWare/IDEUsage.html
Normal file
614
doc/markdown_BDWare/IDEUsage.html
Normal file
@@ -0,0 +1,614 @@
|
||||
|
||||
|
||||
<!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>管理界面 — 北大数瑞大数据区块链 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" />
|
||||
</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>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Introduction.html">BDContract介绍</a></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> »</li>
|
||||
|
||||
<li>管理界面</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../_sources/markdown_BDWare/IDEUsage.md.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="id1">
|
||||
<h1>管理界面<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h1>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="id2">
|
||||
<h2>合约节点管理界面<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||
<p>该界面的使用地址为:<a class="reference external" href="/NodePortal.html">NodePortal.html</a></p>
|
||||
<div class="section" id="id3">
|
||||
<h3>用户管理菜单<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h3>
|
||||
<p>用户管理为登录用户提供查看当前用户分布情况和用户活跃情况统计等。</p>
|
||||
<div class="section" id="id4">
|
||||
<h4>概览<a class="headerlink" href="#id4" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="nodeUserManager" src="markdown_BDWare/_static/imgs/nodeUserManager.jpg" />
|
||||
节点用户管理页面一共有四个模块:用户情况、用户活跃统计、授权用户管理、未授权用户管理。</p>
|
||||
</div>
|
||||
<div class="section" id="id5">
|
||||
<h4>用户类型分布<a class="headerlink" href="#id5" title="永久链接至标题">¶</a></h4>
|
||||
<p>主要统计当前节点管理员所拥有的四种角色的数量:合约提供者、合约管理员、合约使用者
|
||||
<img alt="userList" src="markdown_BDWare/_static/imgs/userList.jpg" /></p>
|
||||
</div>
|
||||
<div class="section" id="id6">
|
||||
<h4>用户活跃统计<a class="headerlink" href="#id6" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="userActive" src="markdown_BDWare/_static/imgs/userActive.jpg" />
|
||||
统计30天之内<strong>登录</strong>、<strong>授权</strong>、<strong>申请</strong>的次数</p>
|
||||
</div>
|
||||
<div class="section" id="id7">
|
||||
<h4>当前用户信息<a class="headerlink" href="#id7" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="nodeInfo" src="markdown_BDWare/_static/imgs/nodeInfo.jpg" /></p>
|
||||
<ul class="simple">
|
||||
<li><p>在这个文本框中可以查看当前用户的公私钥,如果其他用户想要用自己的公私钥登录节点管理员界面,可以将自己的公私钥复制到这个文本框中。</p></li>
|
||||
<li><p>将自己的公私钥复制完成之后要点击<strong>导入公钥</strong>,将公钥加入到节点管理员本地</p></li>
|
||||
<li><p>然后在<strong>本地公钥</strong>中可以看见公钥的前五位,选择自己的公钥,将在<strong>我的权限</strong>中展示出当前选择的公钥的角色,如果是还没有在中心管理员认证的节点则默认为<strong>Anonymous</strong></p></li>
|
||||
<li><p>如果不是节点管理员,想要加入某个中心管理员的网络,那么要在中心管理员所在的用户管理中用自己的公私钥导入后进行认证。</p></li>
|
||||
<li><p>如果想要行使更多关于合约的操作,则需要认证不同的角色:合约管理员、合约使用者、合约提供者,然后进行<strong>角色认证</strong></p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id8">
|
||||
<h4>授权与非授权用户列表<a class="headerlink" href="#id8" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="roleAuth" src="markdown_BDWare/_static/imgs/roleAuth.jpg" />
|
||||
在节点管理员认证角色之后,节点管理员登录会在<strong>未授权角色管理</strong>表格中看见带有公钥的申请信息,如果同意,则点击<strong>授权</strong>,如果不同意点击<strong>忽略</strong>就可以。
|
||||
授权之后将在<strong>授权角色管理</strong>表格中看见授权后的节点列表。如果节点管理员想要移除某个节点的角色,则在授权角色管理列表中<strong>删除</strong>即可。</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id9">
|
||||
<h3>合约代码管理菜单<a class="headerlink" href="#id9" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="codeManageMenu" src="markdown_BDWare/_static/imgs/codeManageMenu.png" /></p>
|
||||
<div class="section" id="id10">
|
||||
<h4>合约文件<a class="headerlink" href="#id10" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="codeManage1" src="markdown_BDWare/_static/imgs/codeManage1.png" /></p>
|
||||
<p>在合约代码管理菜单中,用户可以看到公共合约以及个人私有合约。
|
||||
<img alt="codeManage1-1" src="markdown_BDWare/_static/imgs/codeManage1-1.png" /></p>
|
||||
<p>对于公共合约,节点管理员可以对其中文件进行删除和上传操作,可以对合约项目进行下载和删除操作。
|
||||
<img alt="codeManage1-2" src="markdown_BDWare/_static/imgs/codeManage1-2.png" /></p>
|
||||
<p>对于私有合约,合约提供者可以对其中文件进行删除和上传操作,可以对合约项目进行下载、删除和传至公共合约目录操作。</p>
|
||||
<p>以下是对合约文件进行操作的示例。</p>
|
||||
</div>
|
||||
<div class="section" id="id11">
|
||||
<h4>上传文件<a class="headerlink" href="#id11" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="codeManage6" src="markdown_BDWare/_static/imgs/codeManage6.png" /></p>
|
||||
</div>
|
||||
<div class="section" id="id12">
|
||||
<h4>删除<a class="headerlink" href="#id12" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="codeManage5" src="markdown_BDWare/_static/imgs/codeManage5.png" /></p>
|
||||
</div>
|
||||
<div class="section" id="id13">
|
||||
<h4>传至公共<a class="headerlink" href="#id13" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="codeManage7" src="markdown_BDWare/_static/imgs/codeManage7.png" /></p>
|
||||
</div>
|
||||
<div class="section" id="id14">
|
||||
<h4>下拉框<a class="headerlink" href="#id14" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="codeManage2" src="markdown_BDWare/_static/imgs/codeManage2.png" /></p>
|
||||
<p>四个下拉框中,可以分别对合约状态保存模式、已启动合约实例、节点所在集群以及结果校验方式进行选择。</p>
|
||||
</div>
|
||||
<div class="section" id="id15">
|
||||
<h4>按钮操作<a class="headerlink" href="#id15" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="codeManage3" src="markdown_BDWare/_static/imgs/codeManage3.png" /></p>
|
||||
</div>
|
||||
<div class="section" id="id16">
|
||||
<h4>启动<a class="headerlink" href="#id16" title="永久链接至标题">¶</a></h4>
|
||||
<p>在文件列表中选择合约文件之后,在合约运行模式中选择“单节点执行”,点击启动按钮,会启动指定文件,并在结果显示框中显示返回结果。</p>
|
||||
</div>
|
||||
<div class="section" id="p2p">
|
||||
<h4>启动P2P集群合约<a class="headerlink" href="#p2p" title="永久链接至标题">¶</a></h4>
|
||||
<p>在文件列表中选择合约文件之后,在合约运行模式中选择该可信合约运行的合约集群,点击启动按钮,会在该集群的所有节点上启动指定文件,并在结果显示框中显示返回结果。</p>
|
||||
</div>
|
||||
<div class="section" id="id17">
|
||||
<h4>启动全部<a class="headerlink" href="#id17" title="永久链接至标题">¶</a></h4>
|
||||
<p>在合约运行模式中选择“单节点执行”,点击启动全部按钮,会启动合约文件列表中所有合约。</p>
|
||||
</div>
|
||||
<div class="section" id="id18">
|
||||
<h4>停止P2P集群合约<a class="headerlink" href="#id18" title="永久链接至标题">¶</a></h4>
|
||||
<p>在已启动合约实例的下拉框中选择一个合约实例,在合约运行模式中选择该可信合约运行的合约集群,点击停止按钮,会在该集群的所有节点上终止这个合约进程。</p>
|
||||
</div>
|
||||
<div class="section" id="id19">
|
||||
<h4>停止<a class="headerlink" href="#id19" title="永久链接至标题">¶</a></h4>
|
||||
<p>在已启动合约实例的下拉框中选择一个合约实例,点击停止按钮,会终止这个合约进程。</p>
|
||||
</div>
|
||||
<div class="section" id="id20">
|
||||
<h4>停止全部<a class="headerlink" href="#id20" title="永久链接至标题">¶</a></h4>
|
||||
<p>点击停止全部按钮,会停止该节点上运行的所有合约实例。</p>
|
||||
</div>
|
||||
<div class="section" id="id21">
|
||||
<h4>静态分析<a class="headerlink" href="#id21" title="永久链接至标题">¶</a></h4>
|
||||
<p>在合约文件列表中选择合约文件,并在合约实例下拉框中选择合约实例,点击静态分析按钮,会对该合约进行静态分析,并在结果显示框中显示返回结果。</p>
|
||||
</div>
|
||||
<div class="section" id="id22">
|
||||
<h4>分发合约<a class="headerlink" href="#id22" title="永久链接至标题">¶</a></h4>
|
||||
<p>在合约文件列表中选择合约项目,并在合约运行模式中选择一个集群,点击分发合约按钮,会将该合约项目打包为ypk分发给这个集群中的所有节点。</p>
|
||||
</div>
|
||||
<div class="section" id="id23">
|
||||
<h4>返回结果<a class="headerlink" href="#id23" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="codeManage4" src="markdown_BDWare/_static/imgs/codeManage4.png" /></p>
|
||||
<p>返回结果显示中显示一些操作的返回结果。</p>
|
||||
</div>
|
||||
<div class="section" id="id24">
|
||||
<h4>合约权限配置<a class="headerlink" href="#id24" title="永久链接至标题">¶</a></h4>
|
||||
<p>在启动合约之后,如果当前用户的角色可以查看已经启动合约进程,那么在选定查看合约进程时将会在右下方展示当前合约的IO权限。
|
||||
<img alt="permissionShow" src="markdown_BDWare/_static/imgs/permissionShow.png" /></p>
|
||||
<p>如果选中的合约没有IO权限,则在当前权限的展示框中提示<strong>当前合约没有IO权限</strong>
|
||||
<img alt="nullPermission" src="markdown_BDWare/_static/imgs/nullPermission.png" /></p>
|
||||
<p>当前用户是合约管理员时可以对已有的合约IO权限进行修改。系统会提示修改后合约将有可能不会正常运行,如果还是确定要取消,那么点击<strong>确定</strong> 即可,反之点击<strong>关闭</strong>
|
||||
<img alt="updatePermission" src="markdown_BDWare/_static/imgs/updatePermission.png" /></p>
|
||||
<p>点击关闭或者打开之后,下一次查看同一个合约代码的进程将会默认显示最近一次修改之后的IO权限。
|
||||
<img alt="closePermission" src="markdown_BDWare/_static/imgs/closePermission.png" /></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id25">
|
||||
<h3>合约实例管理菜单<a class="headerlink" href="#id25" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="nodeInstancesPage" src="markdown_BDWare/_static/imgs/nodeInstancesPage.png" /></p>
|
||||
<p>合约实例管理菜单显示了该节点当前的所有合约实例, 用户可查看合约实例的状态, 并对合约实例进行执行或状态迁移的操作.</p>
|
||||
<div class="section" id="id26">
|
||||
<h4>合约实例列表<a class="headerlink" href="#id26" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="nodeInstancesList" src="markdown_BDWare/_static/imgs/nodeInstancesList.png" /></p>
|
||||
<p>该列表显示了当前节点的所有合约实例信息, 包括合约ID, 合约名称, 合约类型合约状态, 合约进程端口, 合约调用次数, 合约流量, 及合约占用内存, 集群合约的结果校验模式.</p>
|
||||
</div>
|
||||
<div class="section" id="id27">
|
||||
<h4>合约实例执行<a class="headerlink" href="#id27" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="chooseInstance" src="markdown_BDWare/_static/imgs/chooseInstance.png" /></p>
|
||||
<p>用户可在合约实例的选择下拉框中选择合约实例, 对该合约实例进行操作.</p>
|
||||
<p><img alt="intanceExecute" src="markdown_BDWare/_static/imgs/intanceExecute.png" /></p>
|
||||
<p>选择合约实例后, 用户可在”方法”的下拉框中选择该合约的方法名, 在”参数”输入框中输入方法的参数, 点击”执行”.</p>
|
||||
<p>用户还可点击”动态分析执行”进行带有动态分析结果的执行.</p>
|
||||
<p>若该合约为单点合约, 则合约在单点执行; 若该合约为集群合约, 则该合约在该集群的所有节点上执行.</p>
|
||||
</div>
|
||||
<div class="section" id="id28">
|
||||
<h4>合约实例执行结果<a class="headerlink" href="#id28" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="executeResult" src="markdown_BDWare/_static/imgs/executeResult.png" /></p>
|
||||
<p>合约实例的执行完成后的结果显示在”执行结果”区域中, 包括该次执行的ID, 执行成功/失败, 执行时间, 及执行结果.</p>
|
||||
<p><img alt="analysisExecuteResult" src="markdown_BDWare/_static/imgs/analysisExecuteResult.png" /></p>
|
||||
<p>若该合约的执行方式为”动态分析执行”, 则结果框内除执行结果, 还会显示该次执行的动态分析结果.</p>
|
||||
</div>
|
||||
<div class="section" id="id29">
|
||||
<h4>合约状态迁移<a class="headerlink" href="#id29" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="memoryDump" src="markdown_BDWare/_static/imgs/memoryDump.png" /></p>
|
||||
<p>对于支持用户手动迁移的合约实例, 用户可点击”本地状态保存”对合约实例的状态进行保存, 或从合约的TimeTravel列表中选择已保存的合约实例, 将合约状态迁移到对应时刻.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id30">
|
||||
<h3>日志管理菜单<a class="headerlink" href="#id30" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="logMenu" src="markdown_BDWare/_static/imgs/logMenu.png" /></p>
|
||||
<p>该菜单是对该节点本地节点日志以及合约日志的统计结果展示。</p>
|
||||
<p>其中,节点管理员可以查看节点日志的相关数据;合约管理者及合约使用者可以查看该节点本地合约日志的相关数据。</p>
|
||||
<div class="section" id="id31">
|
||||
<h4>日志统计图<a class="headerlink" href="#id31" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="log1" src="markdown_BDWare/_static/imgs/log1.png" /></p>
|
||||
</div>
|
||||
<div class="section" id="id32">
|
||||
<h4>各类平台操作百分比<a class="headerlink" href="#id32" title="永久链接至标题">¶</a></h4>
|
||||
<p>该图默认显示近2日各类平台操作占比的饼图,其中平台操作分为登陆类、用户类、日志类、合约类、维护类以及其他类这六类。可在节点日志详情的右上角的时间范围框中填写想要查看的日志时间范围,修改之后,各类平台操作百分比会同步更新。</p>
|
||||
</div>
|
||||
<div class="section" id="id33">
|
||||
<h4>各类合约操作百分比<a class="headerlink" href="#id33" title="永久链接至标题">¶</a></h4>
|
||||
<p>合约操作分为启动、终止、静态分析和执行这四类,该图为近2日对各类合约操作占比的饼图。可在合约日志详情的右上角的时间范围框中填写想要查看的日志时间范围,修改之后,各类合约操作百分比会同步更新。</p>
|
||||
</div>
|
||||
<div class="section" id="id34">
|
||||
<h4>每日平台使用统计<a class="headerlink" href="#id34" title="永久链接至标题">¶</a></h4>
|
||||
<p>该图为近2日平台操作次数统计的折线图。可在节点日志详情的右上角的时间范围框中填写想要查看的日志时间范围,修改之后,每日平台使用统计折线图会同步更新。</p>
|
||||
</div>
|
||||
<div class="section" id="id35">
|
||||
<h4>每日合约使用统计<a class="headerlink" href="#id35" title="永久链接至标题">¶</a></h4>
|
||||
<p>该图为近2日对该节点上合约的操作次数统计的折线图。可在合约日志详情的右上角的时间范围框中填写想要查看的日志时间范围,修改之后,每日合约使用统计折线图会同步更新。</p>
|
||||
</div>
|
||||
<div class="section" id="id36">
|
||||
<h4>日志详情<a class="headerlink" href="#id36" title="永久链接至标题">¶</a></h4>
|
||||
</div>
|
||||
<div class="section" id="id37">
|
||||
<h4>节点日志详情<a class="headerlink" href="#id37" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="log2" src="markdown_BDWare/_static/imgs/log2.png" /></p>
|
||||
<p>节点日志详情表是对节点日志中所有数据的展示。可以点击表格中相关按钮按使得日志数据按不同方式进行排序,并且可以在表格右上角输入关键词进行相关日志搜索。可在右上角的时间范围框中填写想要查看的日志时间范围,修改之后,各类平台操作百分比和每日平台使用统计会同步更新。</p>
|
||||
</div>
|
||||
<div class="section" id="id38">
|
||||
<h4>合约日志详情<a class="headerlink" href="#id38" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="log3" src="markdown_BDWare/_static/imgs/log3.png" /></p>
|
||||
<p>合约日志详情表是对合约日志中所有数据的展示。可以点击表格中相关按钮按使得日志数据按不同方式进行排序,并且可以在表格右上角输入关键词进行相关日志搜索。可在右上角的时间范围框中填写想要查看的日志时间范围,修改之后,各类合约操作百分比和每日合约使用统计会同步更新。</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id39">
|
||||
<h3>节点管理菜单<a class="headerlink" href="#id39" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="nodeConfig" src="markdown_BDWare/_static/imgs/nodeConfig.png" /></p>
|
||||
<p>节点管理菜单显示了该节点的配置信息及所属可信执行集群信息.</p>
|
||||
<div class="section" id="id40">
|
||||
<h4>节点配置<a class="headerlink" href="#id40" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="nodeConfigChange" src="markdown_BDWare/_static/imgs/nodeConfigChange.png" /></p>
|
||||
<p>节点管理员可查看该节点的配置信息, 包括节点名称, 节点YJS路径, 节点的网络中心节点, 节点管理员还可对以上配置进行修改.</p>
|
||||
<p>若节点管理员修改了节点的网络中心, 该节点后重新想改节点连接, 整个页面刷新重载.</p>
|
||||
</div>
|
||||
<div class="section" id="id41">
|
||||
<h4>节点可信执行集群列表<a class="headerlink" href="#id41" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="nodeUnits" src="markdown_BDWare/_static/imgs/nodeUnits.png" /></p>
|
||||
<p>节点管理员可查看节点所属的可信执行集群信息, 包括集群创建者, 集群ID, 集群中节点数目, 集群中节点的信息.</p>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="licence">
|
||||
<h4>节点Licence配置<a class="headerlink" href="#licence" title="永久链接至标题">¶</a></h4>
|
||||
<p><img alt="nodeLicence" src="markdown_BDWare/_static/imgs/nodeLicence.png" /></p>
|
||||
<p>用户可以查看该节点的Licence及过期时间, 还可申请Licence, 上传Licence, 保存节点UUID.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id42">
|
||||
<h2>智能合约在线编辑器<a class="headerlink" href="#id42" title="永久链接至标题">¶</a></h2>
|
||||
<div class="section" id="id43">
|
||||
<h3>用户与账号<a class="headerlink" href="#id43" title="永久链接至标题">¶</a></h3>
|
||||
<div class="section" id="id44">
|
||||
<h4>创建账号<a class="headerlink" href="#id44" title="永久链接至标题">¶</a></h4>
|
||||
</div>
|
||||
<div class="section" id="id45">
|
||||
<h4>申请授权<a class="headerlink" href="#id45" title="永久链接至标题">¶</a></h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id46">
|
||||
<h3>创建项目<a class="headerlink" href="#id46" title="永久链接至标题">¶</a></h3>
|
||||
<div class="section" id="id47">
|
||||
<h4>新建文件<a class="headerlink" href="#id47" title="永久链接至标题">¶</a></h4>
|
||||
</div>
|
||||
<div class="section" id="id48">
|
||||
<h4>上传文件<a class="headerlink" href="#id48" title="永久链接至标题">¶</a></h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id49">
|
||||
<h3>启动合约<a class="headerlink" href="#id49" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="contractMode" src="markdown_BDWare/_static/imgs/contractMode.png" /></p>
|
||||
<p>####正常模式
|
||||
点击左侧启动按钮,以正常模式启动合约。</p>
|
||||
<p>####debug模式
|
||||
点击右侧debug按钮,以debug模式启动合约。目前约定debug模式合约通过executeContract调用正常模式合约时,返回正常模式合约文档中的返回结果示例。</p>
|
||||
</div>
|
||||
<div class="section" id="id50">
|
||||
<h3>调用合约<a class="headerlink" href="#id50" title="永久链接至标题">¶</a></h3>
|
||||
<p>###生成文档
|
||||
<img alt="genReadme" src="markdown_BDWare/_static/imgs/genReadme.png" /></p>
|
||||
<p>启动合约后点击”生成文档”按钮,可以通过各export函数的@Description / @Param / @Result 对合约进行调用及结果返回,从而生成合约的说明文档。</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="id51">
|
||||
<h2>路由准入管理界面<a class="headerlink" href="#id51" title="永久链接至标题">¶</a></h2>
|
||||
<div class="section" id="id52">
|
||||
<h3>权限申请与授权<a class="headerlink" href="#id52" title="永久链接至标题">¶</a></h3>
|
||||
</div>
|
||||
<div class="section" id="id53">
|
||||
<h3>仪表盘<a class="headerlink" href="#id53" title="永久链接至标题">¶</a></h3>
|
||||
<p>仪表盘为提供对准入节点中用户数量,合约数量,节点数量的概览。</p>
|
||||
</div>
|
||||
<div class="section" id="id54">
|
||||
<h3>整体视图<a class="headerlink" href="#id54" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="dashboard" src="markdown_BDWare/_static/imgs/dashboard.jpg" />
|
||||
一共分为四个模块,一个模块是用户、合约、节点数量的概览,然后分别是这三个数量的详细分类的数据统计情况。</p>
|
||||
</div>
|
||||
<div class="section" id="id55">
|
||||
<h3>节点数目<a class="headerlink" href="#id55" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="node" src="markdown_BDWare/_static/imgs/node.jpg" />
|
||||
当前在线和离线节点统计</p>
|
||||
</div>
|
||||
<div class="section" id="id56">
|
||||
<h3>用户类型分布<a class="headerlink" href="#id56" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="userAll" src="markdown_BDWare/_static/imgs/userAll.jpg" />
|
||||
当前准入节点所在组网中的节点管理员、准入管理员的数量和申请中节点的数量</p>
|
||||
</div>
|
||||
<div class="section" id="id57">
|
||||
<h3>合约调用情况<a class="headerlink" href="#id57" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="contract" src="markdown_BDWare/_static/imgs/contract.jpg" />
|
||||
当前准入节点所在组网中所有合约中事件、多点执行、ws调用、Http调用的折线统计图。</p>
|
||||
</div>
|
||||
<div class="section" id="id58">
|
||||
<h3>用户管理<a class="headerlink" href="#id58" title="永久链接至标题">¶</a></h3>
|
||||
<p>用户管理为登录用户提供查看当前用户分布情况和用户活跃情况统计等。</p>
|
||||
</div>
|
||||
<div class="section" id="id59">
|
||||
<h3>概览<a class="headerlink" href="#id59" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="centerManager" src="markdown_BDWare/_static/imgs/centerManager.jpg" />
|
||||
用户管理页面一共有四个模块。</p>
|
||||
</div>
|
||||
<div class="section" id="id60">
|
||||
<h3>用户类型分布<a class="headerlink" href="#id60" title="永久链接至标题">¶</a></h3>
|
||||
<p>主要统计当前中心管理员所管理的网络中有多少节点管理员,多少个中心管理以及申请节点管理员的数量
|
||||
<img alt="userList" src="markdown_BDWare/_static/imgs/userList.jpg" /></p>
|
||||
</div>
|
||||
<div class="section" id="id61">
|
||||
<h3>30天内的申请情况统计<a class="headerlink" href="#id61" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="userApplyGraph" src="markdown_BDWare/_static/imgs/userApplyGraph.jpg" />
|
||||
统计30天之内申请节点管理员的数量和授权成为节点管理员的数量</p>
|
||||
</div>
|
||||
<div class="section" id="id62">
|
||||
<h3>当前用户信息<a class="headerlink" href="#id62" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="authNodeManager" src="markdown_BDWare/_static/imgs/authNodeManager.jpg" /></p>
|
||||
<ul class="simple">
|
||||
<li><p>在这个文本框中可以查看当前用户的公私钥,如果其他用户想要用自己的公私钥登录中心管理员界面,可以将自己的公私钥复制到这个文本框中。</p></li>
|
||||
<li><p>将自己的公私钥复制完成之后要点击<strong>导入公钥</strong>,将公钥加入到中心管理员本地</p></li>
|
||||
<li><p>然后在<strong>本地公钥</strong>中可以看见公钥的前五位,选择自己的公钥,将在<strong>我的权限</strong>中展示出当前选择的公钥的角色,如果是中心管理员则拥有中心管理员的一切权限。</p></li>
|
||||
<li><p>如果不是中心管理员或者节点管理员,想要加入当前中心管理员的网络,那么可以在下面的选择框中选中节点管理员,进行<strong>角色认证</strong>。</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id63">
|
||||
<h3>授权与非授权用户列表<a class="headerlink" href="#id63" title="永久链接至标题">¶</a></h3>
|
||||
<p>在中心管理员当前用户信息申请之后,中心管理员登录会在<strong>未授权用户管理</strong>表格中看见带有公钥的申请信息,如果同意,则点击<strong>授权</strong>,如果不同意点击<strong>忽略</strong>就可以,此时这个申请就无效。
|
||||
<img alt="authMan" src="markdown_BDWare/_static/imgs/authMan.jpg" />
|
||||
授权之后将在<strong>授权用户管理</strong>表格中看见授权后的节点列表。如果中心管理员想要移除某个节点管理员的某项角色,则在授权用户管理列表中选择相应的角色,然后点击<strong>删除</strong>即可删除选中的角色。
|
||||
<img alt="authMana" src="markdown_BDWare/_static/imgs/authMana.jpg" /></p>
|
||||
</div>
|
||||
<div class="section" id="id64">
|
||||
<h3>节点管理<a class="headerlink" href="#id64" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="centerNodePage" src="markdown_BDWare/_static/imgs/centerNodePage.png" /></p>
|
||||
<p>节点管理为Manager对连接到自己的Cluster节点进行管理的页面, 仅Manager管理员及合约管理者可见. Manager管理员及合约管理者可在本页面查看节点信息, 并管理可信执行集群.</p>
|
||||
</div>
|
||||
<div class="section" id="id65">
|
||||
<h3>概览<a class="headerlink" href="#id65" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="centerNodePreview" src="markdown_BDWare/_static/imgs/centerNodePreview.png" /></p>
|
||||
<p>概览中显示了该Manager节点所管理的所有节点的统计信息, 包括总节点数量, 总合约数量, 总订阅事件数量, 及可信执行集群数量, 右侧的饼图则为节点的分别处于Online/Offline的数量统计.</p>
|
||||
</div>
|
||||
<div class="section" id="id66">
|
||||
<h3>节点列表<a class="headerlink" href="#id66" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="centerNodeList" src="markdown_BDWare/_static/imgs/centerNodeList.png" /></p>
|
||||
<p>节点列表显示了用户有权限查看的节点信息(Manager管理员可查看全部节点, 合约管理者可查看自己负责管理的Online节点). 包括节点的名称, 状态, 合约数目, 订阅事件数目, 用于节点间P2P通信的PeerID, 用于节点间UDP通信的UDPID, 及节点公钥.</p>
|
||||
</div>
|
||||
<div class="section" id="id67">
|
||||
<h3>可信执行集群列表<a class="headerlink" href="#id67" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="centerNodeUnits" src="markdown_BDWare/_static/imgs/centerNodeUnits.png" /></p>
|
||||
<p>可信执行集群列表显示了用户有权限查看的可信执行集群信息(Manager管理员可查看全部集群, 合约管理者可查看自己创建的集群). 包括集群的创建者, 集群ID, 集群中节点数目, 以及集群中节点的信息.</p>
|
||||
<p>用户可点击列表表项的”删除”按钮, 将该集群删除.</p>
|
||||
</div>
|
||||
<div class="section" id="id68">
|
||||
<h3>创建可信执行集群<a class="headerlink" href="#id68" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="centerNodeUnitCreate" src="markdown_BDWare/_static/imgs/centerNodeUnitCreate.png" /></p>
|
||||
<p>用户可以通过多选节点, 创建新的可信执行集群. 用户可以选择的节点为自己有权限查看的节点, 即Manager管理员从全部节点中选择, 合约管理者可从自己负责管理的Online节点中选择). 选择后点击提交, 即可看到创建成功的提示信息, 该集群将随即显示在可信执行集群列表中. 集群名称由创建者选取, 不能含有双引号, 该名称为合约管理者选择集群时的可见标识.</p>
|
||||
</div>
|
||||
<div class="section" id="id69">
|
||||
<h3>日志管理<a class="headerlink" href="#id69" title="永久链接至标题">¶</a></h3>
|
||||
<p>日志管理主要展示准入节点的各项日志信息,一共分为六个模块。</p>
|
||||
</div>
|
||||
<div class="section" id="id70">
|
||||
<h3>概览<a class="headerlink" href="#id70" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="log" src="markdown_BDWare/_static/imgs/log.jpg" /></p>
|
||||
</div>
|
||||
<div class="section" id="id71">
|
||||
<h3>管理操作分类统计(2日)<a class="headerlink" href="#id71" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="operator" src="markdown_BDWare/_static/imgs/operator.jpg" />
|
||||
两日内所有管理类操作的统计饼图,管理类操作主要分为登录类、日志类、维护类、用户类。</p>
|
||||
</div>
|
||||
<div class="section" id="id72">
|
||||
<h3>管理操作每日统计(2日)<a class="headerlink" href="#id72" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="everyLog" src="markdown_BDWare/_static/imgs/everyLog.jpg" />
|
||||
两日内管理类所有的操作每日操作统计</p>
|
||||
</div>
|
||||
<div class="section" id="id73">
|
||||
<h3>合约操作分类统计(2日)<a class="headerlink" href="#id73" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="contractLog" src="markdown_BDWare/_static/imgs/contractLog.jpg" />
|
||||
两日内合约操作分类统计饼图,合约操作主要分为连接类和状态更新类。</p>
|
||||
</div>
|
||||
<div class="section" id="id74">
|
||||
<h3>合约操作每日统计(2日)<a class="headerlink" href="#id74" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="contracteveryLog" src="markdown_BDWare/_static/imgs/contracteveryLog.jpg" />
|
||||
两日内合约操作数量折线统计图。</p>
|
||||
</div>
|
||||
<div class="section" id="id75">
|
||||
<h3>管理操作日志列表<a class="headerlink" href="#id75" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="opList" src="markdown_BDWare/_static/imgs/opList.jpg" />
|
||||
管理操作日志的详细信息列表。包括日志时间,管理操作名称,操作对应的节点公钥。默认展示范围是两天,可以自定义获取日志的天数。</p>
|
||||
</div>
|
||||
<div class="section" id="id76">
|
||||
<h3>合约操作日志列表<a class="headerlink" href="#id76" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="contractList" src="markdown_BDWare/_static/imgs/contractList.jpg" />
|
||||
合约操作日志详细信息列表。包括日志产生时间,合约操作名称,合约操作节点公钥。默认展示范围是两天,可以自定义获取日志的天数。</p>
|
||||
</div>
|
||||
<div class="section" id="id77">
|
||||
<h3>设置<a class="headerlink" href="#id77" title="永久链接至标题">¶</a></h3>
|
||||
<p>设置页面是节点证书的状态展示以及配置节点证书</p>
|
||||
</div>
|
||||
<div class="section" id="id78">
|
||||
<h3>概览<a class="headerlink" href="#id78" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="set" src="markdown_BDWare/_static/imgs/set.jpg" /></p>
|
||||
</div>
|
||||
<div class="section" id="id79">
|
||||
<h3>证书状态<a class="headerlink" href="#id79" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="licence" src="markdown_BDWare/_static/imgs/licence.jpg" />
|
||||
证书状态主要包括许可到期时间和许可节点数量。</p>
|
||||
</div>
|
||||
<div class="section" id="id80">
|
||||
<h3>配置证书<a class="headerlink" href="#id80" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="plicence" src="markdown_BDWare/_static/imgs/plicence.jpg" />
|
||||
配置证书模块可以下载节点ID文件或者输入证书信息进行提交。</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 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>
|
||||
367
doc/markdown_BDWare/InstallTips.html
Normal file
367
doc/markdown_BDWare/InstallTips.html
Normal file
@@ -0,0 +1,367 @@
|
||||
|
||||
|
||||
<!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>安装说明 — 北大数瑞大数据区块链 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" />
|
||||
</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>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Introduction.html">BDContract介绍</a></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> »</li>
|
||||
|
||||
<li>安装说明</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../_sources/markdown_BDWare/InstallTips.md.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="id1">
|
||||
<h1>安装说明<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h1>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="id2">
|
||||
<h2>依赖环境的安装<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||
<p>1.安装Java1.8环境。</p>
|
||||
<p>例如,在Ubuntu下使用apt-get进行安装:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>apt-get install openjdk-8-jre
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>在Centos环境下,使用yum进行安装:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>yum install java-1.8.0-openjdk
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>如果是离线环境,可先下载openjdk的安装包后进行离线安装。</p>
|
||||
<p>Ubuntu下</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>dpkg -i jdk-8uxxxxx.deb
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>在Centos环境下,使用yum进行离线安装:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>yum localinstall jdk-8u271-linux-xxx.rpm
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>2.安装wget与unzip。
|
||||
例如,在Ubuntu下使用apt-get进行安装:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>apt-get install unzip
|
||||
apt-get install wget
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="id3">
|
||||
<h2>网络拓扑说明<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h2>
|
||||
<p>部署数瑞智能合约引擎最小仅需一个节点,此时可用作调试、测试,不能通过多节点模式来实现可信的计算。
|
||||
单节点部署时,可通过配置账本实现”防抵赖”的计算,但不能实现”难篡改”的计算。</p>
|
||||
<p>多节点部署时可参考下图,包含三种逻辑节点,同一虚拟机可安装一至三种节点。</p>
|
||||
<p>1)账本节点。即数瑞图式账本。</p>
|
||||
<p>2)合约节点。运行代码逻辑,并通过内存缓存实现高响应的模块。与其他合约节点组成可信计算网络。</p>
|
||||
<p>3)路由节点。各个合约节点的路由信息。一般单个路由节点可支持最高1000合约节点。可视情况部署多个路由节点,并在路由节点之间配置实现更大规模的节点组网。</p>
|
||||
<p>一般地,同一虚拟机下,会部署<strong>合约节点与账本节点</strong>。</p>
|
||||
<p><img alt="deploytopology" src="markdown_BDWare/_static/imgs/deploytopology.png" /></p>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="id4">
|
||||
<h2>智能合约节点安装<a class="headerlink" href="#id4" title="永久链接至标题">¶</a></h2>
|
||||
<p>打开<a class="reference external" href="https://public.internetapi.cn/?dir=releases/bdcontract/newest">安装包下载链接</a>
|
||||
其中,下载<code class="docutils literal notranslate"><span class="pre">bdserver-lite.zip</span></code>或<code class="docutils literal notranslate"><span class="pre">bdserver.zip</span></code>,其中,<code class="docutils literal notranslate"><span class="pre">bdserver.zip</span></code>包含更多示例和文档。
|
||||
下载之后解压并启动。</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>unzip -d ./bdserver bdserver-lite.zip
|
||||
<span class="nb">cd</span> bdserver
|
||||
chmod +x *.sh
|
||||
sh cmstart.sh
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="id5">
|
||||
<h2>路由准入节点安装<a class="headerlink" href="#id5" title="永久链接至标题">¶</a></h2>
|
||||
<p>打开<a class="reference external" href="https://public.internetapi.cn/?dir=releases/bdcontract/newest">安装包下载链接</a>
|
||||
其中,下载<code class="docutils literal notranslate"><span class="pre">bdserver-cluster.zip</span></code>。
|
||||
下载之后解压并启动。</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>unzip -d ./bdcluster bdserver-cluster.zip
|
||||
<span class="nb">cd</span> bdcluster
|
||||
chmod +x *.sh
|
||||
sh ncstart.sh
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="id6">
|
||||
<h2>文件说明<a class="headerlink" href="#id6" title="永久链接至标题">¶</a></h2>
|
||||
<div class="section" id="id7">
|
||||
<h3>智能合约节点<a class="headerlink" href="#id7" title="永久链接至标题">¶</a></h3>
|
||||
<p><img alt="bdserver目录" src="markdown_BDWare/_static/imgs/dirstructure.png" /></p>
|
||||
<p>该目录下的文件说明:</p>
|
||||
<p>1.cmstart.sh 该脚本用于启动合约引擎。合约引擎默认监听8080端口,可通过修改cmstart.sh来修改合约引擎的监听端口。</p>
|
||||
<p>2.BDWareProjectDir 该目录存放了本节点的所有合约项目。</p>
|
||||
<p>3.WebContent 该目录存放了本节点的前端代码。</p>
|
||||
<p>4.cp, 该目录存放了yjs.jar,为启动合约实例所需的jar。</p>
|
||||
<p>5.bdserver.jar 对外提供http/websocket的服务器逻辑。</p>
|
||||
<p>6.updateContract.sh 用于升级的脚本。</p>
|
||||
</div>
|
||||
<div class="section" id="id8">
|
||||
<h3>路由准入节点<a class="headerlink" href="#id8" title="永久链接至标题">¶</a></h3>
|
||||
<p>安装脚本会自动下载安装并解压为bdcluster目录。
|
||||
该目录下的文件说明:</p>
|
||||
<p>1.ncstart.sh 该脚本用于启动节点准入中心。默认监听1718端口。可通过修改ncstart.sh来修改监听的端口。</p>
|
||||
<p>2.WebContent 该目录存放了准入中心的前端代码。</p>
|
||||
<p>3.bdcluster.jar 准入中心的后端。</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="id9">
|
||||
<h2>升级流程<a class="headerlink" href="#id9" title="永久链接至标题">¶</a></h2>
|
||||
<div class="section" id="id10">
|
||||
<h3>合约节点<a class="headerlink" href="#id10" title="永久链接至标题">¶</a></h3>
|
||||
<p>在命令行中输入:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sh updateContract.sh
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>亦可通过<a class="reference external" href="https://public.internetapi.cn/?dir=releases/bdcontract">public.internetapi.cn</a>,下载最新文件,单独升级yjs.zip/bdserver-jar.zip/AgentWebContent来升级。</p>
|
||||
</div>
|
||||
<div class="section" id="id11">
|
||||
<h3>路由准入节点<a class="headerlink" href="#id11" title="永久链接至标题">¶</a></h3>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sh updateCluster.sh
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>亦可通过<a class="reference external" href="https://public.internetapi.cn/?dir=releases/bdcontract">public.internetapi.cn</a>,下载最新文件,单独升级bdserver-cluster.zip/ClusterWebContent.zip来升级。</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="id12">
|
||||
<h2>使用说明<a class="headerlink" href="#id12" title="永久链接至标题">¶</a></h2>
|
||||
<div class="section" id="id13">
|
||||
<h3>通过参考界面使用<a class="headerlink" href="#id13" title="永久链接至标题">¶</a></h3>
|
||||
<p>当保留了WebContent目录的情况下,可使用浏览器进行配置。
|
||||
更多请使用见左侧文档<a class="reference external" href="./IDEUsage.html">BDContract参考界面使用说明</a>。</p>
|
||||
<div class="section" id="bdware-onlineide">
|
||||
<h4>BDWare OnlineIDE<a class="headerlink" href="#bdware-onlineide" title="永久链接至标题">¶</a></h4>
|
||||
<p>打开<a class="reference external" href="../OnlineIDE.html">BDWare OnlineIDE</a>。</p>
|
||||
</div>
|
||||
<div class="section" id="bdware-nodeportal">
|
||||
<h4>BDWare NodePortal<a class="headerlink" href="#bdware-nodeportal" title="永久链接至标题">¶</a></h4>
|
||||
<p>打开<a class="reference external" href="../NodePortal.html">BDWare NodePortal</a>。</p>
|
||||
<p>如需组网,使用跨节点功能,则需安装路由准入中心。并按以下步骤进行配置。涉及两组公私钥。
|
||||
第一组公私钥为合约节点的、有NodeManager权限的公私钥。
|
||||
第二组公私钥为路由准入节点的、有CenterManager权限的公私钥。</p>
|
||||
<p>1.打开NodePortal.html,复制该节点的NodeManager公私钥。</p>
|
||||
<p>2.打开CenterPortal.html,点击右上角,将上述的NodeManager公私钥导入;并选择”NodeManager”进行身份认证。</p>
|
||||
<p>3.在CenterPortal.html中切换CenterManager的公私钥,点左侧的”用户管理”,通过NodeManager的认证请求。</p>
|
||||
<p>4.使用NodeManager权限的公私钥打开NodePortal.html,点击:“节点管理”菜单,并配置加入网络。
|
||||
其中,加入网络的格式为:ws://centerportal的ip:端口+1。
|
||||
<img alt="配置示例" src="markdown_BDWare/_static/imgs/config.png" /></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="sdk">
|
||||
<h3>通过SDK使用<a class="headerlink" href="#sdk" title="永久链接至标题">¶</a></h3>
|
||||
<div class="section" id="id14">
|
||||
<h4>基础知识<a class="headerlink" href="#id14" title="永久链接至标题">¶</a></h4>
|
||||
<p><a class="reference external" href="https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API">Websocket</a></p>
|
||||
<p><a class="reference external" href="https://github.com/JuneAndGreen/sm-crypto">Sm2加密的使用</a></p>
|
||||
</div>
|
||||
<div class="section" id="id15">
|
||||
<h4>SDK下载<a class="headerlink" href="#id15" title="永久链接至标题">¶</a></h4>
|
||||
<ol class="simple">
|
||||
<li><p>Java版本的客户端下载:<a class="reference external" href="_static/BDWareJavaClient.zip">BDWareJavaClient</a>。具体使用说明请下载后解压,查看README.md,并参考<a class="reference external" href="./ContractAPI.html">ContractAPI</a>。</p></li>
|
||||
</ol>
|
||||
<p>2.Javascript版本的客户端下载:<a class="reference external" href="_static/BDWareWebClient.zip">BDWareWebClient</a>。具体使用说明请下载后解压,查看README.md,并参考<a class="reference external" href="./ContractAPI.html">ContractAPI</a>。</p>
|
||||
<p>3.配置工具<a class="reference external" href="_static/BDWareConfigTool.zip">BDWareConfigTool</a>。具体说明请下载后解压,使用以下命令查看帮助:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>java -jar java-client.jar -h
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 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>
|
||||
329
doc/markdown_BDWare/Introduction.html
Normal file
329
doc/markdown_BDWare/Introduction.html
Normal file
@@ -0,0 +1,329 @@
|
||||
|
||||
|
||||
<!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>北大数瑞介绍 — 北大数瑞大数据区块链 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" />
|
||||
</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>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Introduction.html">BDContract介绍</a></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> »</li>
|
||||
|
||||
<li>北大数瑞介绍</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../_sources/markdown_BDWare/Introduction.md.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="id1">
|
||||
<h1>北大数瑞介绍<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h1>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="id2">
|
||||
<h2>什么是北大数瑞?<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||
<p>北大数瑞是面向大数据场景的数据资源、IoT资源、云资源的管理、调度平台。BDContract是一个可信计算框架,计算逻辑以智能合约的方式表达。通过”随机“和”冗余计算“的方式实现智能合约的可信执行。BDContract在保证智能合约的可用性、可靠性的同时,着重提升执行效率和安全性。</p>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="id3">
|
||||
<h2>特点<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h2>
|
||||
<ol class="simple">
|
||||
<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="id4">
|
||||
<h2>使用开源项目说明<a class="headerlink" href="#id4" title="永久链接至标题">¶</a></h2>
|
||||
<p>BDWare项目站在了许多巨人的肩膀上,感谢这些开源项目。</p>
|
||||
<p>本项目的智能合约后端使用了以下开源库。</p>
|
||||
<table border="1" class="docutils">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>名称</th>
|
||||
<th>Licence类型</th>
|
||||
<th>说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="https://openjdk.java.net/projects/nashorn/">Project Nashorn</a></td>
|
||||
<td><a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GPLv2</a></td>
|
||||
<td>使用了该项目的编译器,可以将js函数编译为java字节码</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://projects.ow2.org/view/asm/">ASM OW2</a></td>
|
||||
<td><a href="https://en.wikipedia.org/wiki/BSD_licenses#4-clause_license_(original_%22BSD_License%22)">BSD</a> with attribution</td>
|
||||
<td>基于asm的TreeAPI与VisitorAPI实现合约的静态分析框架</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://netty.io/">Netty</a></td>
|
||||
<td><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a></td>
|
||||
<td>使用netty作为Http/Websocket的服务端</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://grpc.io/">gRPC</a></td>
|
||||
<td><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a></td>
|
||||
<td>使用gRPC与BDWareLedger通讯</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/facebook/rocksdb">RocksDB</a></td>
|
||||
<td><a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GPLv2</a></td>
|
||||
<td>后台数据库</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/antlr/antlr4">ANTLR</a></td>
|
||||
<td><a href="https://en.wikipedia.org/wiki/BSD_licenses#4-clause_license_(original_%22BSD_License%22)">BSD</a></td>
|
||||
<td>对合约脚本的词法分析与语法分析</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/PopezLotado/SM2Java">SM2Java</a></td>
|
||||
<td><a href="https://github.com/PopezLotado/SM2Java/blob/master/README.md">无</a></td>
|
||||
<td>国密SM2 Java语言实现</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><p>本项目的智能合约前端使用了以下开源库。</p>
|
||||
<table border="1" class="docutils">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>名称</th>
|
||||
<th>Licence类型</th>
|
||||
<th>说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="https://getbootstrap.com/">Bootstrap</a></td>
|
||||
<td><a href="https://github.com/twbs/bootstrap/blob/master/LICENSE">MIT</a></td>
|
||||
<td>前端的排版、样式</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://jquery.org/">jQuery</a></td>
|
||||
<td><a href="https://jquery.org/license/">MIT</a></td>
|
||||
<td>用于操作DOM的javascript库</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://jqueryui.com/">jQueryUI</a></td>
|
||||
<td><a href="https://jquery.org/license/">MIT</a></td>
|
||||
<td>前端UI构件库</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://datatables.net/">DataTables</a></td>
|
||||
<td><a href="https://datatables.net/license/mit">MIT</a></td>
|
||||
<td>表格样式</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://codemirror.net/">CodeMirror</a></td>
|
||||
<td><a href="https://codemirror.net/LICENSE">MIT</a></td>
|
||||
<td>代码编辑框样式</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://echarts.apache.org/zh/index.html">eCharts</a></td>
|
||||
<td><a href="https://www.apache.org/licenses/">ApacheV2</a></td>
|
||||
<td>统计图表</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/JuneAndGreen/sm-crypto">sm-crypto</a></td>
|
||||
<td><a href="https://github.com/JuneAndGreen/sm-crypto/blob/master/LICENCE_MIT">MIT</a></td>
|
||||
<td>国密SM2 javascript语言实现</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>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 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>
|
||||
1848
doc/markdown_BDWare/YJSAPI.html
Normal file
1848
doc/markdown_BDWare/YJSAPI.html
Normal file
File diff suppressed because it is too large
Load Diff
457
doc/markdown_BDWare/YJSInDepth.html
Normal file
457
doc/markdown_BDWare/YJSInDepth.html
Normal file
@@ -0,0 +1,457 @@
|
||||
|
||||
|
||||
<!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>YJS语法 — 北大数瑞大数据区块链 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" />
|
||||
</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>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Introduction.html">BDContract介绍</a></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> »</li>
|
||||
|
||||
<li>YJS语法</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../_sources/markdown_BDWare/YJSInDepth.md.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="yjs">
|
||||
<h1>YJS语法<a class="headerlink" href="#yjs" title="永久链接至标题">¶</a></h1>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="id1">
|
||||
<h2>概述<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
||||
<p>YJS源文件包括任意数量的<strong>import声明</strong>和一个<strong>contract定义</strong>。</p>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="import">
|
||||
<h2>import声明<a class="headerlink" href="#import" title="永久链接至标题">¶</a></h2>
|
||||
<p>与JavaScript(ES6)类似,YJS也支持import声明语句,在全局层面,开发者可以使用如下import声明来导入其他文件。</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="s2">"filename"</span><span class="p">;</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="section" id="id2">
|
||||
<h3>内容<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h3>
|
||||
<p>import声明语句将包含在“filename”文件中的所有全局符号(单元)导入到当前文件,且全局范围内有效。</p>
|
||||
</div>
|
||||
<div class="section" id="id3">
|
||||
<h3>路径<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h3>
|
||||
<p><strong>filename</strong>通常用**/<strong>做目录分隔符来表示文件的路径,例如,从同一目录下导入</strong>x.yjs<strong>文件到当前文件,可以使用</strong>import “x.yjs”<strong>语句;从其他目录下导入</strong>x.yjs<strong>使用</strong>import “lib/x.yjs”**语句。</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="contract">
|
||||
<h2>Contract定义<a class="headerlink" href="#contract" title="永久链接至标题">¶</a></h2>
|
||||
<div class="section" id="id4">
|
||||
<h3>示例<a class="headerlink" href="#id4" title="永久链接至标题">¶</a></h3>
|
||||
<p>以下是一个合约示例,用于JSON处理,此YJS源文件以合约名称命名。</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">contract</span> <span class="n">ScoreAdder</span><span class="p">{</span>
|
||||
<span class="o">//</span><span class="n">arg</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"action"</span><span class="p">:</span><span class="s2">"main"</span><span class="p">,</span><span class="s2">"arg"</span><span class="p">:</span><span class="s2">"[{</span><span class="se">\"</span><span class="s2">score</span><span class="se">\"</span><span class="s2">:20},{</span><span class="se">\"</span><span class="s2">score</span><span class="se">\"</span><span class="s2">:20}]"</span><span class="p">}</span>
|
||||
<span class="n">export</span> <span class="n">function</span> <span class="n">main</span><span class="p">(</span><span class="n">arg</span><span class="p">){</span>
|
||||
<span class="o">//</span><span class="n">JSON</span> <span class="ow">is</span> <span class="n">a</span> <span class="n">build</span><span class="o">-</span><span class="ow">in</span> <span class="nb">object</span><span class="o">.</span>
|
||||
<span class="n">var</span> <span class="n">point</span> <span class="o">=</span> <span class="n">JSON</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">arg</span><span class="p">);</span>
|
||||
<span class="n">var</span> <span class="n">s</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">point</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">score</span><span class="p">);</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">point</span><span class="o">.</span><span class="n">length</span><span class="p">);</span>
|
||||
<span class="k">for</span> <span class="p">(</span><span class="n">var</span> <span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span><span class="n">i</span><span class="o"><</span><span class="n">point</span><span class="o">.</span><span class="n">length</span><span class="p">;</span><span class="n">i</span><span class="o">++</span><span class="p">){</span>
|
||||
<span class="n">s</span><span class="o">+=</span><span class="n">point</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">score</span><span class="o">/</span><span class="mf">1.0</span><span class="p">;</span>
|
||||
<span class="p">}</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"total score= "</span><span class="o">+</span><span class="n">s</span><span class="p">);</span>
|
||||
<span class="k">return</span> <span class="n">s</span><span class="p">;</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id5">
|
||||
<h3>注释<a class="headerlink" href="#id5" title="永久链接至标题">¶</a></h3>
|
||||
<p>YJS源文件支持以(<strong>//</strong>)表示的单行注释和以(<strong>/*…*/</strong>)表示的多行注释,如下所示:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">//</span> <span class="n">这是一个单行注释</span>
|
||||
<span class="o">/*</span>
|
||||
<span class="o">*</span> <span class="n">这是一个</span>
|
||||
<span class="o">*</span> <span class="n">多行注释</span>
|
||||
<span class="o">*/</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id6">
|
||||
<h3>注解<a class="headerlink" href="#id6" title="永久链接至标题">¶</a></h3>
|
||||
<p>与Java类似,YJS也支持注解声明合约和函数。</p>
|
||||
<p>在YJS中,有几种内建注解:LogType、LogLocation、Access、Permission。
|
||||
当然,可以自定义注解。
|
||||
内建注解的详细使用方式可以通过YJS内置API文档查看。
|
||||
开发者可以使用如下注解来声明合约和函数。</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@LogType</span><span class="p">(</span><span class="s2">"Arg"</span><span class="p">,</span><span class="s2">"Result"</span><span class="p">,</span><span class="s2">"Branch"</span><span class="p">)</span>
|
||||
<span class="nd">@SelfDefinedAnntation</span><span class="p">(</span><span class="s2">"dad"</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="nd">@Access</span>
|
||||
<span class="n">function</span> <span class="n">xxx</span><span class="p">(){}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id7">
|
||||
<h3>结构<a class="headerlink" href="#id7" title="永久链接至标题">¶</a></h3>
|
||||
<p>YJS中的合约类似于Java中的类。每个合约都定义了一定数量的<strong>变量</strong>、<strong>函数</strong>和<strong>事件</strong>。</p>
|
||||
<div class="section" id="id8">
|
||||
<h4>变量<a class="headerlink" href="#id8" title="永久链接至标题">¶</a></h4>
|
||||
<p>YJS中的变量类似于JavaScript(ES6)中的变量,分为<strong>全局变量</strong>和<strong>局部变量</strong>。</p>
|
||||
<p>全局变量:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">judge</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>局部变量:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">var</span> <span class="n">vs</span> <span class="o">=</span> <span class="s2">"This is a string"</span><span class="p">;</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>所有的变量都是<strong>动态类型</strong>,因为变量的具体类型是根据变量值来决定的。如上示例中,全局变量judge是bool类型,局部变量vs是字符串类型。</p>
|
||||
</div>
|
||||
<div class="section" id="id9">
|
||||
<h4>函数<a class="headerlink" href="#id9" title="永久链接至标题">¶</a></h4>
|
||||
<p>函数是合约中的可执行单元。YJS中有两种类型的函数:普通函数和用<strong>export</strong>关键字修饰的exported函数。</p>
|
||||
<p>以下是exported函数和普通函数的区别:</p>
|
||||
<ol class="simple">
|
||||
<li><p>只有exported函数能被其他合约调用。</p></li>
|
||||
<li><p>exported函数只能有一个参数且参数类型必须为String。</p></li>
|
||||
<li><p>exported函数的返回类型必须是String。</p></li>
|
||||
<li><p>内置对象requester(请求者的公钥)只能存在于exported函数或onCreate函数,因为onCreate()虽然没被<strong>export</strong>关键字修饰,但它自带requester对象且该函数可以自动执行。</p></li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class="section" id="id10">
|
||||
<h4>事件<a class="headerlink" href="#id10" title="永久链接至标题">¶</a></h4>
|
||||
<p>YJS中的事件类似于Solidity中的事件。</p>
|
||||
<p><strong>发布者</strong>定义一个包含事件发布函数的事件,然后通过调用事件发布函数发布事件。</p>
|
||||
<p><strong>订阅者</strong>订阅并处理事件。</p>
|
||||
<p>事件示例如下:</p>
|
||||
<p>EventPuber.yjs</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">contract</span> <span class="n">EventPuber</span><span class="p">{</span>
|
||||
<span class="n">event</span> <span class="n">abcEvent</span><span class="p">;</span>
|
||||
<span class="n">export</span> <span class="n">function</span> <span class="n">pub</span><span class="p">(</span><span class="n">arg</span><span class="p">){</span>
|
||||
<span class="n">abcEvent</span><span class="p">(</span><span class="n">arg</span><span class="p">);</span>
|
||||
<span class="k">return</span> <span class="s2">"done!"</span><span class="p">;</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>EventSuber.yjs</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">contract</span> <span class="n">EventSuber</span><span class="p">{</span>
|
||||
<span class="n">export</span> <span class="n">function</span> <span class="n">init</span><span class="p">(</span><span class="n">arg</span><span class="p">){</span>
|
||||
<span class="n">YancloudUtil</span><span class="o">.</span><span class="n">subscribe</span><span class="p">(</span><span class="s2">"EventPuber"</span><span class="p">,</span><span class="s2">"abcEvent"</span><span class="p">,</span><span class="n">handler</span><span class="p">);</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Handler:"</span><span class="o">+</span><span class="n">handler</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">function</span> <span class="n">handler</span><span class="p">(</span><span class="n">e</span><span class="p">){</span>
|
||||
<span class="n">var</span> <span class="n">ret</span> <span class="o">=</span> <span class="s2">"ReceiveEvent:"</span><span class="o">+</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">type</span><span class="p">)</span><span class="o">+</span><span class="s2">" "</span><span class="o">+</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">content</span><span class="p">);</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">ret</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="id11">
|
||||
<h2>YJS项目<a class="headerlink" href="#id11" title="永久链接至标题">¶</a></h2>
|
||||
<p>除了只包含一个contract定义的YJS源文件,YJS引擎还支持<strong>YJS项目</strong>。</p>
|
||||
<p>每个YJS project包含了合约执行过程中需用到的各种文件,包括yjs源文件**”.yjs”<strong>和其他资源文件,如</strong>”mainfest.json”<strong>, <strong>“.js”</strong>, <strong>“.txt”</strong>,</strong>”.jar”**, …</p>
|
||||
<div class="section" id="manifest-json">
|
||||
<h3>Manifest.json<a class="headerlink" href="#manifest-json" title="永久链接至标题">¶</a></h3>
|
||||
<p>每个YJS项目在项目的根目录下必须有一个<strong>mainfest.json</strong>文件,此文件描述了合约对于YJS的编译工具(YJS引擎)所需的必要信息。</p>
|
||||
<div class="section" id="manifest">
|
||||
<h4>Manifest结构<a class="headerlink" href="#manifest" title="永久链接至标题">¶</a></h4>
|
||||
<p>manifest文件需包含以下信息:</p>
|
||||
<ol class="simple">
|
||||
<li><p><strong>main</strong>: 项目中将要被执行的合约文件。</p></li>
|
||||
<li><p><strong>type</strong>: 合约的类型,如数据合约/算法合约…</p></li>
|
||||
<li><p><strong>builder</strong>: 构建YJS项目的开发者姓名。</p></li>
|
||||
<li><p><strong>insnLimit</strong>: 运行合约需要消耗的值。</p></li>
|
||||
<li><p><strong>pyDependences</strong>: 项目所需的Python依赖。</p></li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class="section" id="id12">
|
||||
<h4>Manifest示例<a class="headerlink" href="#id12" title="永久链接至标题">¶</a></h4>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="s2">"main"</span><span class="p">:</span> <span class="s2">"contract.js"</span><span class="p">,</span>
|
||||
<span class="s2">"type"</span><span class="p">:</span> <span class="s2">"Data"</span><span class="p">,</span>
|
||||
<span class="s2">"builder"</span><span class="p">:</span> <span class="s2">"caihq"</span><span class="p">,</span>
|
||||
<span class="s2">"permissions"</span><span class="p">:</span> <span class="mi">0</span><span class="n">L</span><span class="p">,</span>
|
||||
<span class="s2">"pyDependences"</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="p">{</span>
|
||||
<span class="s2">"name"</span><span class="p">:</span> <span class="s2">"yjsexample"</span><span class="p">,</span>
|
||||
<span class="s2">"modules"</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="p">{</span>
|
||||
<span class="s2">"name"</span><span class="p">:</span> <span class="s2">"sample"</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">]</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">]</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="yjs-java">
|
||||
<h3>YJS-Java<a class="headerlink" href="#yjs-java" title="永久链接至标题">¶</a></h3>
|
||||
<p>Jar文件实现了YJS与其他编程语言间的<strong>跨语言调用</strong>,如YJS-Java, YJS-Python, … 通过将Java文件包成jar包的方式,使得合约可直接调用Java中的方法。</p>
|
||||
<p>Java class:</p>
|
||||
<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">package</span> <span class="nn">your.own.pkg</span><span class="o">;</span>
|
||||
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">HelloWorld</span> <span class="o">{</span>
|
||||
<span class="kd">public</span> <span class="kd">static</span> <span class="kt">int</span> <span class="nf">fun</span><span class="o">(</span><span class="n">String</span> <span class="n">arg</span><span class="o">){</span>
|
||||
<span class="k">return</span> <span class="n">arg</span><span class="o">.</span><span class="na">length</span><span class="o">;</span>
|
||||
<span class="o">}</span>
|
||||
<span class="kd">public</span> <span class="kt">int</span> <span class="nf">fun2</span><span class="o">(</span><span class="n">String</span> <span class="n">arg</span><span class="o">){</span>
|
||||
<span class="k">return</span> <span class="n">arg</span><span class="o">.</span><span class="na">length</span><span class="o">;</span>
|
||||
<span class="o">}</span>
|
||||
<span class="o">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>InvokeJava.yjs</p>
|
||||
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">contract</span> <span class="nx">InvokeJava</span><span class="p">{</span>
|
||||
<span class="kr">export</span> <span class="kd">function</span> <span class="nx">main</span><span class="p">(</span><span class="nx">arg</span><span class="p">){</span>
|
||||
<span class="kd">var</span> <span class="nx">Hello</span> <span class="o">=</span> <span class="nx">Java</span><span class="p">.</span><span class="nx">type</span><span class="p">(</span><span class="s2">"your.own.package.HelloWorld"</span><span class="p">);</span>
|
||||
<span class="kd">var</span> <span class="nx">hello</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Hello</span><span class="p">();</span>
|
||||
<span class="k">return</span> <span class="nx">Hello</span><span class="p">.</span><span class="nx">fun</span><span class="p">(</span><span class="nx">arg</span><span class="p">)</span><span class="o">+</span><span class="nx">hello</span><span class="p">.</span><span class="nx">fun2</span><span class="p">(</span><span class="nx">arg</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id13">
|
||||
<h3>YJS-前端<a class="headerlink" href="#id13" title="永久链接至标题">¶</a></h3>
|
||||
<p>使用数瑞客户端来访问智能合约支持从智能合约中获取html/js/css等资源文件,
|
||||
并在<a class="reference external" href="./_static/BDWareWebClient.zip">BDWareWebClient</a>中渲染。
|
||||
首先在合约中import以下模块。</p>
|
||||
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">module</span> <span class="nx">Viewable</span><span class="p">{</span>
|
||||
<span class="kr">export</span> <span class="kd">function</span> <span class="nx">loadResource</span><span class="p">(</span><span class="nx">arg</span><span class="p">){</span>
|
||||
<span class="k">return</span> <span class="nx">Global</span><span class="p">.</span><span class="nx">Resources</span><span class="p">.</span><span class="nx">loadAsString</span><span class="p">(</span><span class="nx">arg</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
<span class="kr">export</span> <span class="kd">function</span> <span class="nx">needRender</span><span class="p">(</span><span class="nx">arg</span><span class="p">){</span>
|
||||
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>同时,import以后,定义一个getMainFrame方法,以便数瑞客户端识别主页:</p>
|
||||
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="kr">export</span> <span class="kd">function</span> <span class="nx">getMainFrame</span><span class="p">(</span><span class="nx">arg</span><span class="p">){</span>
|
||||
<span class="k">return</span> <span class="s2">"/html/main.html"</span><span class="p">;</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>该方法的返回结果为一个资源文件的路径。
|
||||
示例的资源文件”/html/main.html”如下:</p>
|
||||
<div class="highlight-html notranslate"><div class="highlight"><pre><span></span><span class="p"><</span><span class="nt">div</span><span class="p">></span>
|
||||
<span class="p"><</span><span class="nt">button</span> <span class="na">onclick</span><span class="o">=</span><span class="s">"queryDataFromContract()"</span><span class="p">></span>Hello,<span class="p"></</span><span class="nt">button</span><span class="p">></span> Data from contract:
|
||||
<span class="p"><</span><span class="nt">span</span> <span class="na">id</span><span class="o">=</span><span class="s">"resultText"</span><span class="p">></</span><span class="nt">span</span><span class="p">></span>
|
||||
<span class="p"><</span><span class="nt">script</span> <span class="na">fromContract</span><span class="o">=</span><span class="s">"/html/hello.js"</span><span class="p">></</span><span class="nt">script</span><span class="p">></span>
|
||||
<span class="p"><</span><span class="nt">link</span> <span class="na">fromContract</span><span class="o">=</span><span class="s">"/html/hello.css"</span><span class="p">/></span>
|
||||
<span class="p"></</span><span class="nt">div</span><span class="p">></span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>示例的资源文件”/html/hello.js”如下:</p>
|
||||
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="kd">var</span> <span class="nx">queryDataFromContract</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span>
|
||||
<span class="c1">//第一个参数为函数名,第二个为参数,第三个参数为回调。</span>
|
||||
<span class="kd">var</span> <span class="nx">data</span> <span class="o">=</span> <span class="nx">executeCurrentContract</span><span class="p">(</span><span class="s2">"query"</span><span class="p">,</span><span class="s2">"abc"</span><span class="p">,</span><span class="kd">function</span><span class="p">(</span><span class="nx">argg</span><span class="p">){</span>
|
||||
<span class="nx">$</span><span class="p">(</span><span class="s2">"#resultText"</span><span class="p">)[</span><span class="mi">0</span><span class="p">].</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="nx">argg</span><span class="p">.</span><span class="nx">result</span><span class="p">;</span>
|
||||
<span class="p">});</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>参考示例:</p>
|
||||
</div>
|
||||
<div class="section" id="yjs-python">
|
||||
<h3>YJS-Python<a class="headerlink" href="#yjs-python" title="永久链接至标题">¶</a></h3>
|
||||
<p>TODO</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 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>
|
||||
738
doc/markdown_BDWare/httpapi.html
Normal file
738
doc/markdown_BDWare/httpapi.html
Normal file
@@ -0,0 +1,738 @@
|
||||
|
||||
|
||||
<!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>Request Examples {#_request_examples} — 北大数瑞大数据区块链 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" />
|
||||
</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>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Introduction.html">BDContract介绍</a></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> »</li>
|
||||
|
||||
<li>Request Examples {#_request_examples}</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../_sources/markdown_BDWare/httpapi.md.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="highlight-{.yaml} notranslate"><div class="highlight"><pre><span></span>type: google.api.Service
|
||||
config_version: 3
|
||||
|
||||
http:
|
||||
rules:
|
||||
- selector: bdware.bdledger.api.Node.ClientVersion
|
||||
get: /v0/node/version
|
||||
- selector: bdware.bdledger.api.Ledger.CreateLedger
|
||||
post: /v0/ledgers
|
||||
body: "*"
|
||||
- selector: bdware.bdledger.api.Ledger.GetLedgers
|
||||
get: /v0/ledgers
|
||||
- selector: bdware.bdledger.api.Ledger.SendTransaction
|
||||
post: /v0/ledgers/{ledger}/transactions
|
||||
body: "*"
|
||||
- selector: bdware.bdledger.api.Query.GetBlockByHash
|
||||
get: /v0/ledgers/{ledger}/block
|
||||
- selector: bdware.bdledger.api.Query.GetBlocks
|
||||
post: /v0/ledgers/{ledger}/blocks/query
|
||||
body: "*"
|
||||
- selector: bdware.bdledger.api.Query.CountBlocks
|
||||
post: /v0/ledgers/{ledger}/blocks/count
|
||||
body: "*"
|
||||
- selector: bdware.bdledger.api.Query.GetRecentBlocks
|
||||
get: /v0/ledgers/{ledger}/blocks/recent
|
||||
- selector: bdware.bdledger.api.Query.GetTransactionByHash
|
||||
get: /v0/ledgers/{ledger}/transaction
|
||||
- selector: bdware.bdledger.api.Query.GetTransactionByBlockHashAndIndex
|
||||
get: /v0/ledgers/{ledger}/block/transaction
|
||||
- selector: bdware.bdledger.api.Query.GetTransactions
|
||||
post: /v0/ledgers/{ledger}/transactions/query
|
||||
body: "*"
|
||||
- selector: bdware.bdledger.api.Query.CountTransactions
|
||||
post: /v0/ledgers/{ledger}/transactions/count
|
||||
body: "*"
|
||||
</pre></div>
|
||||
</div>
|
||||
<blockquote>
|
||||
<div><p><strong>Note</strong></p>
|
||||
<p>Request/Response data of <strong>bytes</strong> type should/will be encoded with
|
||||
<a class="reference external" href="https://tools.ietf.org/html/rfc4648#section-4">Base64</a>.</p>
|
||||
</div></blockquote>
|
||||
<blockquote>
|
||||
<div><p><strong>Note</strong></p>
|
||||
<p>When using hash strings in URL, they need to be encoded with
|
||||
<a class="reference external" href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent">encodeURIComponent</a>.</p>
|
||||
</div></blockquote>
|
||||
<div class="section" id="request-examples-request-examples">
|
||||
<h1>Request Examples {#_request_examples}<a class="headerlink" href="#request-examples-request-examples" title="永久链接至标题">¶</a></h1>
|
||||
<div class="section" id="node-clientversion-node-clientversion">
|
||||
<h2>Node.ClientVersion {#_node_clientversion}<a class="headerlink" href="#node-clientversion-node-clientversion" title="永久链接至标题">¶</a></h2>
|
||||
<p>Get BDLedger node version</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">GET</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="p">{{</span><span class="n">IP</span><span class="p">}}:{{</span><span class="n">PORT</span><span class="p">}}</span><span class="o">/</span><span class="n">v0</span><span class="o">/</span><span class="n">node</span><span class="o">/</span><span class="n">version</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Response.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"version": "dev-210119.a88bf4eb"
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="ledger-createledger-ledger-createledger">
|
||||
<h2>Ledger.CreateLedger {#_ledger_createledger}<a class="headerlink" href="#ledger-createledger-ledger-createledger" title="永久链接至标题">¶</a></h2>
|
||||
<p>Create a new ledger</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">POST</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="p">{{</span><span class="n">IP</span><span class="p">}}:{{</span><span class="n">PORT</span><span class="p">}}</span><span class="o">/</span><span class="n">v0</span><span class="o">/</span><span class="n">ledgers</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Request body.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"name": "test"
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Response.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"ok": true
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="ledger-getledgers-ledger-getledgers">
|
||||
<h2>Ledger.GetLedgers {#_ledger_getledgers}<a class="headerlink" href="#ledger-getledgers-ledger-getledgers" title="永久链接至标题">¶</a></h2>
|
||||
<p>Get all ledgers</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">GET</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="p">{{</span><span class="n">IP</span><span class="p">}}:{{</span><span class="n">PORT</span><span class="p">}}</span><span class="o">/</span><span class="n">v0</span><span class="o">/</span><span class="n">ledgers</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Response.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"ledgers": [
|
||||
"default",
|
||||
"test"
|
||||
]
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="ledger-sendtransaction-ledger-sendtransaction">
|
||||
<h2>Ledger.SendTransaction {#_ledger_sendtransaction}<a class="headerlink" href="#ledger-sendtransaction-ledger-sendtransaction" title="永久链接至标题">¶</a></h2>
|
||||
<p>Send a new transaction</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">POST</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="p">{{</span><span class="n">IP</span><span class="p">}}:{{</span><span class="n">PORT</span><span class="p">}}</span><span class="o">/</span><span class="n">v0</span><span class="o">/</span><span class="n">ledgers</span><span class="o">/</span><span class="n">test</span><span class="o">/</span><span class="n">transactions</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Request body.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"transaction": {
|
||||
"type": 0,
|
||||
"from": "8A3K/vANyv7wDcr+8A3K/vANyv4=",
|
||||
"nonce": 52,
|
||||
"data": "lQItWZKS5hlUn6V/DMKKwvZXxvM="
|
||||
}
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Response.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"hash": "VQBeA5Ee0Y5hqEileoQuYMHbOSE="
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="query-getblockbyhash-query-getblockbyhash">
|
||||
<h2>Query.GetBlockByHash {#_query_getblockbyhash}<a class="headerlink" href="#query-getblockbyhash-query-getblockbyhash" title="永久链接至标题">¶</a></h2>
|
||||
<p>Get a block identified by its hash</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>GET http://{{IP}}:{{PORT}}/v0/ledgers/test/block?hash=LSKr%2BK079Ax%2BrKdlyYN5ze2YGzo%3D
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>hash</strong> has to be encoded with
|
||||
<a class="reference external" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent">encodeURIComponent</a></p>
|
||||
<p><strong>Response.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"block": {
|
||||
"hash": "LSKr+K079Ax+rKdlyYN5ze2YGzo=",
|
||||
"creator": "",
|
||||
"nonce": "0",
|
||||
"parentHashes": [
|
||||
"fLX5pMY8M1qSAGZdKT1rWBkdEMo=",
|
||||
"rk0DWMaUpRG82yVX+cFhbfhPFdw=",
|
||||
"3XkwkuMBearq8uavN76Te7Zdpl8="
|
||||
],
|
||||
"witnesses": [],
|
||||
"timestamp": "1611038043",
|
||||
"size": "0",
|
||||
"transactionCount": 1,
|
||||
"transactionsRoot": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||||
"transactions": [
|
||||
{
|
||||
"blockHash": "",
|
||||
"blockTimestamp": "0",
|
||||
"index": 0,
|
||||
"hash": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||||
"type": "RECORD",
|
||||
"from": "8A3K/vANyv7wDcr+8A3K/vANyv4=",
|
||||
"nonce": "0",
|
||||
"to": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||||
"data": "lQItWZKS5hlUn6V/DMKKwvZXxvM="
|
||||
}
|
||||
],
|
||||
"transactionHashes": [
|
||||
"VQBeA5Ee0Y5hqEileoQuYMHbOSE="
|
||||
]
|
||||
}
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="query-getblocks-query-getblocks">
|
||||
<h2>Query.GetBlocks {#_query_getblocks}<a class="headerlink" href="#query-getblocks-query-getblocks" title="永久链接至标题">¶</a></h2>
|
||||
<p>Get blocks in a timestamp range</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">POST</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="p">{{</span><span class="n">IP</span><span class="p">}}:{{</span><span class="n">PORT</span><span class="p">}}</span><span class="o">/</span><span class="n">v0</span><span class="o">/</span><span class="n">ledgers</span><span class="o">/</span><span class="n">test</span><span class="o">/</span><span class="n">blocks</span><span class="o">/</span><span class="n">query</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-{.protobuf} notranslate"><div class="highlight"><pre><span></span>enum IncludeTransactions {
|
||||
NONE = 0; // Don't include transaction data
|
||||
HASH = 1; // Include transactions hashes
|
||||
FULL = 2; // Include full transactions
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Requirement: asciimath:[“start_timestamp”⇐”end_timestamp”]</p>
|
||||
<p>If only <strong>end_timestamp</strong> is not specified, or
|
||||
asciimath:[“end_timestamp”-“start_timestamp”>”query.maxDuration”],
|
||||
then <strong>end_timestamp</strong> will be set to
|
||||
asciimath:[“start_timestamp”+”query.maxDuration”].</p>
|
||||
<p>If only <strong>start_timestamp</strong> is not specified, then <strong>start_timestamp</strong>
|
||||
will be set to asciimath:[“end_timestamp”-“query.maxDuration”].</p>
|
||||
<p>In all cases, <strong>start_timestamp</strong> will never be earlier than the
|
||||
genesis block’s timestamp, and <strong>end_timestamp</strong> will never be later
|
||||
than the current timestamp when the node process the query request.</p>
|
||||
<p><strong>Request body 1.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"start_timestamp": 1611038000,
|
||||
"end_timestamp": 1611039000,
|
||||
"include_transactions": 0
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Response 1.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"blocks": [
|
||||
{
|
||||
"hash": "LSKr+K079Ax+rKdlyYN5ze2YGzo=",
|
||||
"creator": "",
|
||||
"nonce": "0",
|
||||
"parentHashes": [
|
||||
"fLX5pMY8M1qSAGZdKT1rWBkdEMo=",
|
||||
"rk0DWMaUpRG82yVX+cFhbfhPFdw=",
|
||||
"3XkwkuMBearq8uavN76Te7Zdpl8="
|
||||
],
|
||||
"witnesses": [],
|
||||
"timestamp": "1611038043",
|
||||
"size": "0",
|
||||
"transactionCount": 1,
|
||||
"transactionsRoot": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||||
"transactions": [],
|
||||
"transactionHashes": []
|
||||
}
|
||||
],
|
||||
"startTimestamp": "1611038043",
|
||||
"endTimestamp": "1611038043"
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Request body 2.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"start_timestamp": 1611038000,
|
||||
"end_timestamp": 1611039000,
|
||||
"include_transactions": 1
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Response 2.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"blocks": [
|
||||
{
|
||||
"hash": "LSKr+K079Ax+rKdlyYN5ze2YGzo=",
|
||||
"creator": "",
|
||||
"nonce": "0",
|
||||
"parentHashes": [
|
||||
"fLX5pMY8M1qSAGZdKT1rWBkdEMo=",
|
||||
"rk0DWMaUpRG82yVX+cFhbfhPFdw=",
|
||||
"3XkwkuMBearq8uavN76Te7Zdpl8="
|
||||
],
|
||||
"witnesses": [],
|
||||
"timestamp": "1611038043",
|
||||
"size": "0",
|
||||
"transactionCount": 1,
|
||||
"transactionsRoot": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||||
"transactions": [],
|
||||
"transactionHashes": [
|
||||
"VQBeA5Ee0Y5hqEileoQuYMHbOSE="
|
||||
]
|
||||
}
|
||||
],
|
||||
"startTimestamp": "1611038043",
|
||||
"endTimestamp": "1611038043"
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Request body 3.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"start_timestamp": 1611038000,
|
||||
"end_timestamp": 1611039000,
|
||||
"include_transactions": 2
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Response 3.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"blocks": [
|
||||
{
|
||||
"hash": "LSKr+K079Ax+rKdlyYN5ze2YGzo=",
|
||||
"creator": "",
|
||||
"nonce": "0",
|
||||
"parentHashes": [
|
||||
"fLX5pMY8M1qSAGZdKT1rWBkdEMo=",
|
||||
"rk0DWMaUpRG82yVX+cFhbfhPFdw=",
|
||||
"3XkwkuMBearq8uavN76Te7Zdpl8="
|
||||
],
|
||||
"witnesses": [],
|
||||
"timestamp": "1611038043",
|
||||
"size": "0",
|
||||
"transactionCount": 1,
|
||||
"transactionsRoot": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||||
"transactions": [
|
||||
{
|
||||
"blockHash": "",
|
||||
"blockTimestamp": "0",
|
||||
"index": 0,
|
||||
"hash": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||||
"type": "RECORD",
|
||||
"from": "8A3K/vANyv7wDcr+8A3K/vANyv4=",
|
||||
"nonce": "0",
|
||||
"to": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||||
"data": "lQItWZKS5hlUn6V/DMKKwvZXxvM="
|
||||
}
|
||||
],
|
||||
"transactionHashes": [
|
||||
"VQBeA5Ee0Y5hqEileoQuYMHbOSE="
|
||||
]
|
||||
}
|
||||
],
|
||||
"startTimestamp": "1611038043",
|
||||
"endTimestamp": "1611038043"
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="query-countblocks-query-countblocks">
|
||||
<h2>Query.CountBlocks {#_query_countblocks}<a class="headerlink" href="#query-countblocks-query-countblocks" title="永久链接至标题">¶</a></h2>
|
||||
<p>Count all blocks in a ledger, or blocks in a timestamp range</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">POST</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="p">{{</span><span class="n">IP</span><span class="p">}}:{{</span><span class="n">PORT</span><span class="p">}}</span><span class="o">/</span><span class="n">v0</span><span class="o">/</span><span class="n">ledgers</span><span class="o">/</span><span class="n">test</span><span class="o">/</span><span class="n">blocks</span><span class="o">/</span><span class="n">count</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Requirement: asciimath:[“start_timestamp”⇐”end_timestamp”]</p>
|
||||
<p>If neither <strong>start_timestamp</strong> nor <strong>end_timestamp</strong> is specified,
|
||||
then count all blocks in the specified ledger.</p>
|
||||
<p>If only <strong>end_timestamp</strong> is not specified, then count all blocks with
|
||||
timestamps later than <strong>start_timestamp</strong>.</p>
|
||||
<p>If only <strong>start_timestamp</strong> is not specified, then count all blocks
|
||||
with timestamps earlier than <strong>end_timestamp</strong>.</p>
|
||||
<p>In all cases, <strong>start_timestamp</strong> will never be earlier than the
|
||||
genesis block’s timestamp, and <strong>end_timestamp</strong> will never be later
|
||||
than the current timestamp when the node process the query request.</p>
|
||||
<p><strong>Request body 1.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{}
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Response 1.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"count": "5",
|
||||
"startTimestamp": "0",
|
||||
"endTimestamp": "1611039957"
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Request body 2.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"start_timestamp": 1611038000,
|
||||
"end_timestamp": 1611039000
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Response 2.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"count": "1",
|
||||
"startTimestamp": "1611038000",
|
||||
"endTimestamp": "1611039000"
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="query-getrecentblocks-query-getrecentblocks">
|
||||
<h2>Query.GetRecentBlocks {#_query_getrecentblocks}<a class="headerlink" href="#query-getrecentblocks-query-getrecentblocks" title="永久链接至标题">¶</a></h2>
|
||||
<p>Get recent <strong>count</strong> blocks (Only support IncludeTransactions=NONE for
|
||||
now)</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>GET http://{{IP}}:{{PORT}}/v0/ledgers/test/blocks/recent?count=2
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Response.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"blocks": [
|
||||
{
|
||||
"hash": "LSKr+K079Ax+rKdlyYN5ze2YGzo=",
|
||||
"creator": "",
|
||||
"nonce": "0",
|
||||
"parentHashes": [
|
||||
"fLX5pMY8M1qSAGZdKT1rWBkdEMo=",
|
||||
"rk0DWMaUpRG82yVX+cFhbfhPFdw=",
|
||||
"3XkwkuMBearq8uavN76Te7Zdpl8="
|
||||
],
|
||||
"witnesses": [],
|
||||
"timestamp": "1611038043",
|
||||
"size": "0",
|
||||
"transactionCount": 1,
|
||||
"transactionsRoot": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||||
"transactions": [],
|
||||
"transactionHashes": []
|
||||
},
|
||||
{
|
||||
"hash": "rk0DWMaUpRG82yVX+cFhbfhPFdw=",
|
||||
"creator": "",
|
||||
"nonce": "0",
|
||||
"parentHashes": [
|
||||
"fLX5pMY8M1qSAGZdKT1rWBkdEMo=",
|
||||
"3XkwkuMBearq8uavN76Te7Zdpl8=",
|
||||
"8pZPR74OALIbps5XFb4dL/s0j0M="
|
||||
],
|
||||
"witnesses": [],
|
||||
"timestamp": "1610968019",
|
||||
"size": "0",
|
||||
"transactionCount": 1,
|
||||
"transactionsRoot": "LuxttCm/pSHVMOKF0sJExk+DJXc=",
|
||||
"transactions": [],
|
||||
"transactionHashes": []
|
||||
}
|
||||
],
|
||||
"startTimestamp": "1610968019",
|
||||
"endTimestamp": "1611038043"
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="query-gettransactionbyhash-query-gettransactionbyhash">
|
||||
<h2>Query.GetTransactionByHash {#_query_gettransactionbyhash}<a class="headerlink" href="#query-gettransactionbyhash-query-gettransactionbyhash" title="永久链接至标题">¶</a></h2>
|
||||
<p>Get a transaction identified by its hash</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>GET http://{{IP}}:{{PORT}}/v0/ledgers/test/transaction?hash=VQBeA5Ee0Y5hqEileoQuYMHbOSE%3D
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>hash</strong> has to be encoded with
|
||||
<a class="reference external" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent">encodeURIComponent</a></p>
|
||||
<p><strong>Response.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"transaction": {
|
||||
"blockHash": "LSKr+K079Ax+rKdlyYN5ze2YGzo=",
|
||||
"blockTimestamp": "1611038043",
|
||||
"index": 0,
|
||||
"hash": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||||
"type": "RECORD",
|
||||
"from": "8A3K/vANyv7wDcr+8A3K/vANyv4=",
|
||||
"nonce": "0",
|
||||
"to": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||||
"data": "lQItWZKS5hlUn6V/DMKKwvZXxvM="
|
||||
}
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="query-gettransactionbyblockhashandindex-query-gettransactionbyblockhashandindex">
|
||||
<h2>Query.GetTransactionByBlockHashAndIndex {#_query_gettransactionbyblockhashandindex}<a class="headerlink" href="#query-gettransactionbyblockhashandindex-query-gettransactionbyblockhashandindex" title="永久链接至标题">¶</a></h2>
|
||||
<p>Get a transaction identified by hash of the block it belongs to and its
|
||||
index inside the block</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>GET http://{{IP}}:{{PORT}}/v0/ledgers/test/block/transaction?blockHash=LSKr%2BK079Ax%2BrKdlyYN5ze2YGzo%3D&index=0
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>blockHash</strong> has to be encoded with
|
||||
<a class="reference external" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent">encodeURIComponent</a></p>
|
||||
<p><strong>Response.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"transaction": {
|
||||
"blockHash": "LSKr+K079Ax+rKdlyYN5ze2YGzo=",
|
||||
"blockTimestamp": "1611038043",
|
||||
"index": 0,
|
||||
"hash": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||||
"type": "RECORD",
|
||||
"from": "8A3K/vANyv7wDcr+8A3K/vANyv4=",
|
||||
"nonce": "0",
|
||||
"to": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||||
"data": "lQItWZKS5hlUn6V/DMKKwvZXxvM="
|
||||
}
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="query-gettransactions-query-gettransactions">
|
||||
<h2>Query.GetTransactions {#_query_gettransactions}<a class="headerlink" href="#query-gettransactions-query-gettransactions" title="永久链接至标题">¶</a></h2>
|
||||
<p>Get transactions in a timestamp range</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">POST</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="p">{{</span><span class="n">IP</span><span class="p">}}:{{</span><span class="n">PORT</span><span class="p">}}</span><span class="o">/</span><span class="n">v0</span><span class="o">/</span><span class="n">ledgers</span><span class="o">/</span><span class="n">test</span><span class="o">/</span><span class="n">transactions</span><span class="o">/</span><span class="n">query</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>start_timestamp</strong> and <strong>end_timestamp</strong> follow the same requirements
|
||||
and rules as in <a class="reference external" href="#Query.GetBlocks">???</a>.</p>
|
||||
<p><strong>Request body.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"start_timestamp": 1611038000,
|
||||
"end_timestamp": 1611039000
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Response.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"transactions": [
|
||||
{
|
||||
"blockHash": "",
|
||||
"blockTimestamp": "0",
|
||||
"index": 0,
|
||||
"hash": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||||
"type": "RECORD",
|
||||
"from": "8A3K/vANyv7wDcr+8A3K/vANyv4=",
|
||||
"nonce": "0",
|
||||
"to": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||||
"data": "lQItWZKS5hlUn6V/DMKKwvZXxvM="
|
||||
}
|
||||
],
|
||||
"startTimestamp": "1611038043",
|
||||
"endTimestamp": "1611038043"
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="query-counttransactions-query-counttransactions">
|
||||
<h2>Query.CountTransactions {#_query_counttransactions}<a class="headerlink" href="#query-counttransactions-query-counttransactions" title="永久链接至标题">¶</a></h2>
|
||||
<p>Count all transactions in a ledger, or transactions in a timestamp range</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">POST</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="p">{{</span><span class="n">IP</span><span class="p">}}:{{</span><span class="n">PORT</span><span class="p">}}</span><span class="o">/</span><span class="n">v0</span><span class="o">/</span><span class="n">ledgers</span><span class="o">/</span><span class="n">test</span><span class="o">/</span><span class="n">transactions</span><span class="o">/</span><span class="n">count</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>start_timestamp</strong> and <strong>end_timestamp</strong> follow the same requirements
|
||||
and rules as in <a class="reference external" href="#Query.CountBlocks">???</a>.</p>
|
||||
<p><strong>Request body 1.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{}
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Response 1.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"count": "4",
|
||||
"startTimestamp": "0",
|
||||
"endTimestamp": "1611039957"
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Request body 2.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"start_timestamp": 1611038000,
|
||||
"end_timestamp": 1611039000
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Response 2.</strong></p>
|
||||
<div class="highlight-{.json} notranslate"><div class="highlight"><pre><span></span>{
|
||||
"count": "1",
|
||||
"startTimestamp": "1611038000",
|
||||
"endTimestamp": "1611039000"
|
||||
}
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 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>
|
||||
Reference in New Issue
Block a user