通过区块链提供数据交换的SDK,让开发者可以快速方便的开发DAPP应用。主要包含这些内容:数据加解密、签名、智能合约、事件通知、数据存储接口、数据获取与查询、数字货币支付、第三方App支付接口等。过程如下:
数据提供者通过SDK写入数据及元数据(数据包含静态数据、动态数据,数据有约定的格式,元数据主要包含数据签名、数据描述等信息);数据需求者通过SDK查找需要的数据,支付数字货币后,可以获得数据;数据验证者,通过向智能合约抵押一定的数字货币来成为验证者。在数据交换过程中,数据需求者可以向合约发起有偿数据验证请求或交易仲裁,验证者由智能合约随机选取。数据交换的所有参与者可以在参与的交易中相互评分;智能合约会记录参与者交易及评分信息,生成参与者的信誉评价,信誉评价信息可以通过SDK查询。
请自行安装下列环境(括号内为经过测试的推荐版本):
- go (1.12.5)
- node.js (10.15.3)
- gcc (mingw-w64 v8.1.0)
我们假设你已经完成了node.js的下载与安装。
执行dp/app/app/ui/tool目录下的webpackUI.ps1脚本文件完成这一步骤。
在dp/app/app/main目录下执行go build,成功执行后,会生成入口文件:main.exe。
- ipfs客户端 (0.4.14 / 0.4.20)
- geth客户端 (1.9.19)
- 浏览器 (chrome 79)
我们假设你已经完成了ipfs的下载与安装。
- 修改配置文件,在你的ipfs下载路径中,找到config文件。如下所示,为其一级配置项"API"添加下面三条"Access..."配置:
"API": {
"HTTPHeaders": {
"Server": [
"go-ipfs/0.4.14"
],
"Access-Control-Allow-Origin": [
"*"
],
"Access-Control-Allow-Credentials": [
"true"
],
"Access-Control-Allow-Methods": [
"POST"
]
}
},
- 在命令行执行 ipfs daemon 命令,执行成功时会显示"Daemon is ready",保持命令行窗口开启。
因为app使用js进行ipfs上传,所以上面添加了"允许ipfs跨域执行post请求"的配置。
我们假设你已经完成了geth的下载与安装。
执行dp/backend/contracts/geth_init目录下的geth_init.ps1脚本文件完成私链搭建。
执行相同目录下的geth_acc_mine.ps1脚本文件创建用户并开始挖矿。
执行dp/backend/contracts/tool目录下的contract.ps1脚本文件完成这一步骤。
脚本会将部分结果输出到上级目录的migrate.log文件,在文件末尾可以找到ScryToken、ScryProtocol两个"0x"开头的42个字符的地址。
按照相应格式,修改位于dp/app/app/main目录下的main.json配置文件:
key | value |
---|---|
protocolContractAddr | 修改为日志文件中找到的ScryProtocol地址 |
tokenContractAddr | 修改为日志文件中找到的ScryToken地址 |
uiResourcesDir | 修改为你的电脑上的dp项目路径 |
metaDataOutDir | 修改为你期望的原始数据文件下载路径 |
proofsOutDir | 修改为你期望的证明文件和临时文件的下载路径 |
修改上面的配置即可保证主要流程正常执行,下附其他配置信息简要描述:
key | value |
---|---|
appId | 同一条链上,不同id的app,消息是不互通的 |
ethServiceAddr | 链地址 |
keyServiceAddr | 用户服务地址 |
storageServiceAddr | ipfs地址 |
wsPort | app前后端之间的websocket连接使用的端口 |
dbName | 数据库名 |
完成上述所有步骤后,即可通过dp/app/app/main/main.exe入口文件进行体验。
- windows禁止ps1脚本执行:使用管理员权限,执行Set-ExecutionPolicy unrestricted命令。
- npm install error,找不到python exec:安装python2或忽略该问题。
- npm install error:node.js版本冲突,完全卸载node.js后重新安装即可解决该问题。
- 用户服务启动失败,找不到vcruntime140.dll:安装vcre。
- 智能合约部署失败,连接不到以太坊客户端:检查是否使用了自定义的端口搭建私链,修改contracts目录下的truffle.js配置文件network.geth.port与之一致。