动态

SEER文体平台开发测试网络及使用文档发布

2019-08-16 16:05:04

经过长达半年的论证和数月的开发,目前SEER文体平台模块(Culture and Sports Platform,CSP)的主网代码开发已进入最后阶段,SEER核心开发者在SEER开发测试网络部署了包含文体平台模块的节点程序和API,并邀请了部分社区开发者参与测试和体验。社区开发者发布了测试文档,欢迎大家参与体验。


若有问题,欢迎在开发者论坛参与讨论:https://forum.seerchain.org/t/topic/534


下一步,RQQ团队将在SEER开发者的支持下尝试使用文体平台模块功能开发匹配的游戏,并作为SEER文体平台的"样板房"进行开源。


# SEER文体平台模块(Culture and Sports Platform,CSP)使用指南

## 文体平台模块介绍

在SEER文体平台模块中,任何SEER用户可以在主网抵押一笔保证金后获得文体平台权限,文体平台有平台资金池,其他SEER用户可以直接在链上授权一定资产额度给平台,能获得多少用户“授权”和其抵押的保证金有关。
平台通过调用接口控制用户授权的资产额度进行各种链上操作,且可以将亚秒时间内的操作统一打包,这些操作手续费都由平台支付。这样既能保证用户对资产的所有权,又能保证游戏等文体平台原有的游戏核心之类的应用逻辑不作太大的变化,具有很高的效率和可操作性,可以让游戏内积分等完全区块链化,第三方也可以很方便的做成完全合规的区块链应用。
文体平台不光可以应用到游戏领域,票务等文化体育领域的众多方向都可以进行扩展。

## SEER开发测试网络

目前,文体平台模块开发中,开发者架设了测试网络,节点API如下:ws://192.144.171.138:8003 

若需使用测试网络网页钱包http://192.144.171.138,需要添加并切换到上面的API。

另外社区开发者还部署了一个公开命令行钱包服务,API如下:ws://tstn1.seerchain.org 可以调用此API控制服务器上的命令行钱包进行各种操作。

测试网络账号:cute 

私钥:5Kb1PcVBpKWPacsgPwZ8KdesmBbvqnmAdYYKQtYVEpBJVF5GRci

ubuntu wallet:https://github.com/akirasen/W1/releases/download/1.0/cli.tar.gz

win wallet:https://github.com/akirasen/W1/releases/download/1.0/test.zip

此测试网络可能会随时销毁或重置,请勿保存重要数据。

## 体验流程

开发者可首先在本地下载配置命令行钱包,连接到此测试网络。导入测试账号cute的私钥,生成多个密钥对,注册多个测试账号。使用cute向自行注册的账号转账测试的SEER,之后使用自行注册的账号创建平台,随后开启平台。然后使用创建的多个其它账号向自行创建的平台授权划转资产额度,使用平台账号执行内部划转操作等。

导入私钥:https://docs.seerchain.org/#/zh-Hans/cli?id=_5-import_key
生成秘钥对:https://docs.seerchain.org/#/zh-Hans/cli?id=_4-suggest_brain_key
注册账号:https://docs.seerchain.org/#/zh-Hans/cli?id=_1-register_account
转账:https://docs.seerchain.org/#/zh-Hans/cli?id=_2-transfer

## 接口说明

sc_platform_create、sc_platform_update一般使用命令行操作即可。

### sc_platform_create

格式: sc_platform_create(string account,string description,int64_t guaranty,vector<string> assets,bool broadcast = false);

参数: account:创建者、description:平台描述、guaranty:保证金金额、assets:接受的资产列表;

作用: 创建文体平台

命令行钱包示例:sc_platform_create love "" 1000000000 ["SEER"] true

RPC示例: `{"jsonrpc": "2.0", "method": "sc_platform_create", "params": ["smile","",1000000000,["SEER"],true], "id": 1}`

参数说明(RPC形式):

```
{
    "jsonrpc": "2.0",
    "method": "sc_platform_create",//接口名
    "params": [
      "smile", //创建者用户名
      "", //平台描述
      1000000000,//保证金金额(5位精度,此处表示10000,保证金资产种类皆为SEER)
      ["SEER"], //接受的资产类型列表
      true//是否广播
    ],
    "id": 1
}

```

返回信息示例:

```
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
    "ref_block_num": 61526,
    "ref_block_prefix": 2817252547,
    "expiration": "2019-08-14T15:53:12",
    "operations": [
    [69, {
    "fee": {
    "amount": 10021484,
    "asset_id": "1.3.0"
    },
    "issuer": "1.2.21",
    "description": "",
    "guaranty": 1000000000,
    "asset_ids": ["1.3.0"]
    }]
    ],
    "extensions": [],
    "signatures": ["205fa030280cb8e381a311ec2bc885d96e0976713408e4f6d5db2fa60e683a28656b112e1522d99704599f4391f7f7fd0d1a27954eab2276e5ed1228ceb201013d"]
    }
}

```

### sc_platform_update

格式: sc_platform_update(string account,sc_platform_id_type sc_platform,optional<string> description,optional<int64_t> guaranty,optional<vector<string>> assets,bool broadcast = false);

参数: account:创建者、sc_platform:平台ID、description:平台描述、guaranty:保证金金额、assets:接受的资产列表;

作用: 更新文体平台

命令行钱包示例:sc_platform_update love 1.19.3 "aaaaaa" 10000000000 ["SEER","SSE"] true

RPC示例:  `{"jsonrpc": "2.0", "method": "sc_platform_update", "params": ["smile","1.19.4","memeda",10000000000,["SEER","SSE"],true], "id": 1}`

参数说明(RPC形式):

```
{
    "jsonrpc": "2.0",
    "method": "sc_platform_update",//接口名
    "params": [
      "smile", //创建者用户名
      "1.19.4", 
      "memeda", //平台描述
      10000000000,//新增的保证金金额,负数表减少(5位精度,此处表示10000,保证金资产种类皆为SEER)
      ["SEER", "SSE"],  //修改后接受的资产类型列表
      true//是否广播
    ],
    "id": 1
}
```

返回信息示例:

```
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
    "ref_block_num": 61996,
    "ref_block_prefix": 3917363680,
    "expiration": "2019-08-14T16:16:42",
    "operations": [
    [70, {
    "fee": {
    "amount": 2032226,
    "asset_id": "1.3.0"
    },
    "issuer": "1.2.21",
    "sc_platform": "1.19.4",
    "description": "memeda",
    "guaranty": "10000000000",
    "asset_ids": ["1.3.0", "1.3.1"]
    }]
    ],
    "extensions": [],
    "signatures": ["207be1acf500841735b303797fcccab5d4ceac8bc0c1f6250d06c91d1210d7f51960c7b3964f0ff7b8420a0b00c4dd9144ae6a7d47931eaa86b32861751e5e3390"]
    }
}

```

### sc_platform_divide

格式: sc_platform_divide(string account,sc_platform_id_type sc_platform,vector<sc_platform_divide_operation::share_divide> changes,bool broadcast = false);

参数: account 操作者、sc_platform 平台ID,changes 结构体:(payer 出资者、asset_id 资产名、divide_amount 金额、comment 操作描述、receivers 资产接受者)

作用: 文体平台资金池内部划转操作

命令行钱包示例:sc_platform_divide cute 1.19.2 [{"payer": 1.2.21,"asset_id":1.3.0,"divide_amount":400000,"comment":"{\"result\":[{\"Version\":\"1.0.3\",\"uid\":\"0012\"}]}", "receivers":[["1.2.22",200000],["1.2.24",200000]]}] true

RPC示例: `{"jsonrpc": "2.0", "method": "sc_platform_divide", "params": ["cute","1.19.2",[{"payer": "1.2.21","asset_id":"1.3.0","divide_amount":400000,"comment":"{\"result\":[{\"Version\":\"1.0.3\",\"uid\":\"0012\"}]}", "receivers":[["1.2.22",200000],["1.2.24",200000]]}],"true"], "id": 1}`

参数说明(RPC形式):

```
{
    "jsonrpc": "2.0",
    "method": "sc_platform_divide",//接口名
    "params": [
      "cute", //操作者用户名
      "1.19.2",//平台ID
       [{
    "payer": "1.2.21",//出资者
    "asset_id": "1.3.0",//划出资产的object_ID
    "divide_amount": 400000,//划出资产总额
    "comment": "{\"result\":[{\"Version\":\"1.0.3\",\"uid\":\"0012\"}]}",//可选,可填入该次操作的一些备注信息,须在引号前加转义符。示例中是以JSON格式信息为例。此信息完全公开显示。
    "receivers": [//接受者信息结构体,内部可包含多个资产接受信息,资产接受者们所接受的资产总额应等于前面所划出的金额,且不为零。
    [//第一位接受者信息
      "1.2.22",//账户object_ID
      200000//接受资产数额
    ],
    [//第二位接受者信息
      "1.2.24",//账户object_ID
     200000//接受资产数额
    ]
    ]
    }], 
       "true"//是否广播
      ],
    "id": 1
}
```

返回信息示例:

```
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
    "ref_block_num": 41756,
    "ref_block_prefix": 3130945490,
    "expiration": "2019-08-16T06:01:48",
    "operations": [
    [71, {
    "fee": {
    "amount": 1000000,
    "asset_id": "1.3.0"
    },
    "issuer": "1.2.20",
    "sc_platform": "1.19.2",
    "changes": [{
    "payer": "1.2.21",
    "asset_id": "1.3.0",
    "divide_amount": 400000,
    "comment": "{\"result\":[{\"Version\":\"1.0.3\",\"uid\":\"0012\"}]}",
    "receivers": [
    ["1.2.22", 200000],
    ["1.2.24", 200000]
    ]
    }]
    }]
    ],
    "extensions": [],
    "signatures": ["1f240d0ec2b4e1f95f2cb6767f1070f1e4b3a45ed35a1a1dcfad40eb2205a1b7ea4b3e79a5f5d75b4fbc5cab01d56ae4f35a5a3b9e7b69e42db21611644d8ba486"]
    }
}

```

### sc_platform_deal

格式: sc_platform_deal(string account,sc_platform_id_type sc_platform,uint8_t code,map<account_id_type,vector<asset_id_type>>  backs,bool broadcast = false);

参数: account 操作者、sc_platform 平台ID、code 操作指令(0 停止接受新用户划转、1 启动接受新用户划转、2 退回赎回余额用户的资产、3 清理无余额的用户)结构体:(当操作指令为2时,包括账户OID,资产ID)

作用: 文体平台发还用户赎回资产,平台开启及关闭等状态设置操作

命令行钱包示例:

设置平台状态:sc_platform_deal cute 1.19.2 1 [] true

RPC示例: `{"jsonrpc": "2.0", "method": "sc_platform_deal", "params": ["love","1.19.3",1,[],true], "id": 1}`

参数说明(RPC形式):

```
{
    "jsonrpc": "2.0",
    "method": "sc_platform_deal",//接口名
    "params": [
          "love", //操作者
          "1.19.3",//平台ID
          1,//code 操作指令(0 停止接受新用户划转、1 启动接受新用户划转、2 退回赎回余额用户的资产、3 清理无余额的用户)
          [],//此处以0、1、3为例,留空
          true//是否广播
    ],
    "id": 1
}
```

返回信息示例:

```
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
    "ref_block_num": 61942,
    "ref_block_prefix": 3738115572,
    "expiration": "2019-08-14T16:14:00",
    "operations": [
    [72, {
    "fee": {
    "amount": 500000,
    "asset_id": "1.3.0"
    },
    "issuer": "1.2.22",
    "sc_platform": "1.19.3",
    "code": 1,
    "backs": []
    }]
    ],
    "extensions": [],
    "signatures": ["200d7dde83894f1309a1625a109d04757b979e3cc1db7eb6d20f77249ba13cd5ff7444a064302a9b89822de6af8d7edb7f43d4b75c3377b8c1ed1761e9e1b48e05"]
    }
}

```

发还用户赎回资产:sc_platform_deal cute 1.19.2 2 [[ "1.2.21",[ "1.3.0" ]],[ "1.2.22",[ "1.3.0" ]]] true

RPC示例: `{"jsonrpc": "2.0", "method": "sc_platform_deal", "params": ["seer","1.19.2",2,[[ "1.2.21",[ "1.3.0" ]],[ "1.2.22",[ "1.3.0" ]]],true], "id": 1}`

参数说明(RPC形式):

```
{
    "jsonrpc": "2.0",
    "method": "sc_platform_deal",//接口名
    "params": [
          "love", //操作者
          "1.19.3",//平台ID
          1,//code 操作指令(0 停止接受新用户划转、1 启动接受新用户划转、2 退回赎回余额用户的资产、3 清理无余额的用户)
          [//发还用户赎回资产结构体,此处以2为例,可一次发还多位用户的赎回资产,用,隔开
          [//第一位赎回用户信息
           "1.2.21",//赎回用户的账户object_ID
               [ 
           "1.3.0"//待赎回资产的object_ID
               ]
          ],
          [//第二位赎回用户信息
           "1.2.22",//赎回用户的账户object_ID
               [ 
           "1.3.0"//待赎回资产的object_ID
               ]
          ]
          ],
          true//是否广播
    ],
    "id": 1
}
```

返回信息示例:

```
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
    "ref_block_num": 42804,
    "ref_block_prefix": 4289136030,
    "expiration": "2019-08-16T06:54:12",
    "operations": [
    [72, {
    "fee": {
    "amount": 1000000,
    "asset_id": "1.3.0"
    },
    "issuer": "1.2.13",
    "sc_platform": "1.19.2",
    "code": 2,
    "backs": [
    ["1.2.21", ["1.3.0"]],
    ["1.2.22", ["1.3.0"]]
    ]
    }]
    ],
    "extensions": [],
    "signatures": ["1f65fd93f15b1f4541bd8763b8b2a6d50ce2a10a86c7244c0b095dd862911cf5f96956ede73fa28993d6358b18ae6115adc01661a0e2fb451ea530bb9a5f2d4a97"]
    }
}
```

### sc_platform_participate

格式: sc_platform_participate(string account,sc_platform_id_type sc_platform,asset amount,bool broadcast = false);

参数: account 操作者、sc_platform 平台ID、amount 金额

作用: 用户授权划转资产给文体平台操作

命令行钱包示例:sc_platform_participate love 1.19.2 {"amount": 2000000, "asset_id": "1.3.0"} true

RPC示例: `{"jsonrpc": "2.0", "method": "sc_platform_participate", "params": ["smile","1.19.2",{"amount": 2000000, "asset_id": "1.3.0"},true], "id": 1}`

参数说明(RPC形式):

```
{
    "jsonrpc": "2.0",
    "method": "sc_platform_participate",//接口名
    "params": [
    "smile",  //操作者
    "1.19.2",//平台ID
     {
    "amount": 2000000,//授权并划转给平台的资产额度
    "asset_id": "1.3.0"//授权并划转给平台的资产类型
    },
       true//是否广播
      ],
    "id": 1
}
```

返回信息示例:

```
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
    "ref_block_num": 61817,
    "ref_block_prefix": 364626865,
    "expiration": "2019-08-14T16:07:45",
    "operations": [
    [73, {
    "fee": {
    "amount": 500000,
    "asset_id": "1.3.0"
    },
    "issuer": "1.2.21",
    "sc_platform": "1.19.2",
    "amount": {
    "amount": 2000000,
    "asset_id": "1.3.0"
    }
    }]
    ],
    "extensions": [],
    "signatures": ["1f5ebdb0935eadc49428d12042c3dcba10e194f2dba4f463b5e1f9a19473158f24201f211f805bbab993cea2c6b834c3337c464be52e3b4e6045fc4a445a3531ed"]
    }
}

```

### get_sc_platform_by_account

格式: get_sc_platform_by_account(account_id_type account)const;

参数: 账户object_ID

作用: 根据平台所有者账户的object_ID返回平台信息。

命令行钱包示例:get_sc_platform_by_account 1.2.20

RPC示例: `{"jsonrpc": "2.0", "method": "get_sc_platform_by_account", "params": ["1.2.20"], "id": 1}`

返回信息示例:

```
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
    "id": "1.19.2",//文体平台ID
    "owner": "1.2.20",//所有者ID
    "description": "test1",//平台描述
    "guaranty": "100001000000",//平台保证金,精度100000,此处实际为1000010 SEER
    "assets": [//已被划转的资产类型列表
    [
    "1.3.0",//资产ID
     63600000//已被划转的资产金额,精度100000,此处实际为636
     ],
    [
    "1.3.1",//资产ID
     0//已被划转的资产金额
     ]
    ],
    "status": 1,//平台状态,0 停止接受新用户划转、1 启动接受新用户划转。
    "users": 4//已被划转授权的用户数
    }
}
```


### list_sc_records_by_account

格式: list_sc_records_by_account(account_id_type account)const;

参数: 账户object_ID

作用: 根据SEER用户的object_ID返回其在文体平台的参与情况。

命令行钱包示例:list_sc_records_by_account 1.2.22

RPC示例: `{"jsonrpc": "2.0", "method": "list_sc_records_by_account", "params": ["1.2.22"], "id": 1}`

返回信息示例:

```

{
    "id": 1,
    "jsonrpc": "2.0",
    "result": [{
    "id": "2.21.0",
    "player": "1.2.22",//用户的账户object_ID
    "sc_platform": "1.19.2",//文体平台ID
    "balance": [
    [
    "1.3.0",//资产ID
     2000000//已划转的资产金额
     ]
    ]
    }]
}
```

### list_sc_records_by_platform

格式:list_sc_records_by_platform(sc_platform_id_type platform,account_id_type start,uint32_t limit)const;

参数: platform:文体平台object_ID;start:参与者账号object_ID;limit:返回结果数量。

作用:根据平台object_ID返回参与者的情况。

命令行钱包示例:list_sc_records_by_platform 1.19.2 1.2.20 100

RPC示例: `{"jsonrpc": "2.0", "method": "list_sc_records_by_platform", "params": ["1.19.2","1.2.20",100], "id": 1}`

返回信息示例:

```
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": [{
    "id": "2.21.1",
    "player": "1.2.21",//用户的账户object_ID
    "sc_platform": "1.19.2",//文体平台ID
    "balance": [
    [
    "1.3.0", //资产ID
    497800000//已划转的资产金额
    ]
    ]
    }, {
    "id": "2.21.0",
    "player": "1.2.22",//用户的账户object_ID
    "sc_platform": "1.19.2",//文体平台ID
    "balance": [
    [
    "1.3.0", //资产ID
    43200000//已划转的资产金额
    ]
    ]
    }, {
    "id": "2.21.3",
    "player": "1.2.24",//用户的账户object_ID
    "sc_platform": "1.19.2",//文体平台ID
    "balance": [
    [
    "1.3.0", //资产ID
    3000000//已划转的资产金额
    ]
    ]
    }]
}

```