STACSDApp

什么是STACSDApp

DApp(Decentralized Application):去中心化的应用程序。目前传统的区块链DApp是以智能合约为基础,在其之上实现一整套的业务逻辑及数据处理。 而STACSDApp是以BD为基础,实现BD的部分或全部业务功能,不同DApp各自执行BD的一个或多个业务功能,多个STACSDApp相互协助执行BD,从而解决在金融业务执行过程中的分权问题。

  • 现在世面上DApp大都是以游戏、博彩类的应用为主,STACSDApp是唯一一个面向金融机构,并运行在可信区块链基础之上的应用,能够帮助金融机构快速搭建基于区块链的各种实际应用,如:证券交易、资产转让、结息、认购等。DApp提供多种针对金融业务场景的管理策略,确保支持各类金融业务。

  • STACSDApp提供统一的运行环境:DRS,使用者可以根据需要选择已有的DApp来安装、运行。并可以自己开发、提交应用,经过社区审核通过后,其他组织/个人就可以使用你开发的应用。

  • STACSDApp提供友好的开发界面,开发者可以像开发普通应用一样开发DApp,只需要按照开发规范搭建环境编译打包即可安装运行。

  • 每个STACSDApp都是互相隔离的,彼此不能直接通信,都可以有自己的数据库,各自拥有各自的数据。

  • 由于每个DApp运行在统一的平台上,可以享用平台提供的统一接口,平台确保DApp提交的交易到区块链的可靠性,同时采用事件通知的形式保证区块链出块后回执处理的及时性。

  • 对于DApp我们提供了几个常用接口:BD的发布、Identity注册、KYC绑定、Policy注册、智能合约的发布及调用等。

  • 以上所有接口均由BD的定义来约束其相关权限,任何一个交易都由policy来定义其在可信链上的投票协议,从而做到了真正能够面向金融业务的实际可行的解决方案。

  • STACSDApp的智能合约支持以太坊的Solidity。

  • STACSDApp采用Java语言编写,平台源代码均开源,我们拥有活跃的社区、丰富的文档,能够帮助开发者快速搭建自己的DApp。

各组件关系图

DApp

如何使用

每一个DApp都运行在DRS中,所以首先需要下载并安装DApp的运行环境:DRS

DRS安装

  • 下载DRS镜像包
  • 执行java命令启动: java -jar stacs-drs-executable-1.0.jar

DRS配置

  • 在浏览器上输入当前节点的IP地址,端口号默认8080,例如:http://127.0.0.1:8080/drs/index.html
  • 找到系统配置选项,根据需要可以配置:App-store地址Domain地址回调地址DApp下载目录DApp配置文件目录

DApp安装

  • 打开 app-store 页签选择要安装的DApp
  • 点击 下载 即可自动下载该DApp到配置的目录下
  • 点击 配置 按钮,配置该DApp需要的相关配置项
  • 配置完成后,点击安装按钮即可安装
  • 安装完成后,点击打开按钮即可访问该DApp

DApp 依赖&打包

依赖

STACSDApp 需要使用Maven来管理依赖,需要添加 parent Maven坐标:

<parent>
    <artifactId>stacs-native-dapp</artifactId>
    <groupId>io.stacs.nav</groupId>
    <version>1.0.0-SNAPSHOT</version>
</parent>

包结构管理
    <dependency>
        <groupId>com.alipay.sofa</groupId>
        <artifactId>web-ark-plugin</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alipay.sofa</groupId>
        <artifactId>sofa-ark-springboot-starter</artifactId>
    </dependency>
DRS-API
    <dependency>
        <groupId>io.stacs.nav</groupId>
        <artifactId>drs-api</artifactId>
    </dependency>
    <dependency>
        <groupId>io.stacs.nav</groupId>
        <artifactId>dapp-core</artifactId>
    </dependency>

打包

DApp可以是普通Java工程,也可以是Spring-boot工程,只需要使用 Maven 插件 sofa-ark-maven-plugin 打包生成即可:

<build>
    <plugin>
        <groupId>com.alipay.sofa</groupId>
        <artifactId>sofa-ark-maven-plugin</artifactId>
        <version>${sofa.ark.version}</version>
        <executions>
            <execution>
                <id>default-cli</id>
                <goals>
                    <goal>repackage</goal>
                </goals>
            </excution>
        </executions>
        <configuration>
             <attach>true</attach>
             <outputDirectory>target</outputDirectory>
             <webContextPath>sample</webContextPath>
        </configuration>
    </plugin>
</build>

配置说明
  • outputDirectory
    打包文件的输出目录。
  • webContextPath
    若是Web项目,该项配置会被默认替换为DApp的Name,不支持自定义
  • dapp spring-boot Application类需配置包扫描路径:io.stacs.nav.dapp"

DApp 升级

升级文件目录说明

  • 需在项目resources目录下建立文件名为upgrade的目录,其下含有两个子目录:DDL、DML
  • 需在DDL和DML目录下按照递增方式命名脚本文件,存放具体版本的升级脚本,如:1.sql,2.sql
  • 目录结构:
       resources
       │
       └───upgrade
       │   │
       │   └───DDL
       │       │   1.sql
       │       │   2.sql
       │       │   ...
       │   
       └───----DML
               │   1.sql
               │   2.sql
               │   ...
    

AppStore配置说明

  • AppStore的Json配置中增加versionCode字段,int类型,从0递增
  • 表示dapp的版本记录,该值在Dapp的upgrade文件下的DDL/DML下应该有与之对应的*.sql文件。