关于WDC资产定义的SDK操作说明

WDC ·  开发者  m1chaelvo · 发布于 03-27 15:44 · 205 次阅读

1. 介绍

 

2. 官方指定浏览器地址

 

3. 接口返回格式

返回类型:JSON

{

  "message":"",

  "data":[],

  "statusCode":int

}

message:描述

data:数据

statusCode: 5000:表示构建失败/2000:表示构建成功

 

3.1 调用SDK返回值

示例:

{

 "data":"18b6ef62de5366e94fb76d0c8c85fdf74fcdb192f255ce443fb53e25cf32c903",

 "message":"0118b6ef62de5366e94fb76d0c8c85fdf74fcdb192f255ce443fb53e25cf32c903070000000000000003225674a01e32538e519e4e6619ccf96e61c6d1ddf79c7e421576e2e93fd854330000000000000002000000000000000010630cbdd3708482b0ddac6b458b2ba83f36faa6c411aba3c5697f6220c3fafce6bcf1978179171a829548e44f910c48cb600cdbdb861d66eaa4640c9f587d0c00000000000000000000000000000000000000000000004d00f84a83414d438609184e72a0008609184e72a000a0225674a01e32538e519e4e6619ccf96e61c6d1ddf79c7e421576e2e93fd8543394df2298b36b75bbc7799c46e359b48c0a338c8fed0180",

"statusCode":2000
}

注:

statuscode返回2000是构造成功,message返回构造整体事务的16进制字符串,data返回构造的事务哈希;

statuscode返回5000是构造失败,message返回错误详细,data返回null。

 

3.2 广播事务返回值

示例:

{
    "message":"SUCCESS",
    "data":{
        "transactionHash":"18b6ef62de5366e94fb76d0c8c85fdf74fcdb192f255ce443fb53e25cf32c903",
        "version":1,
        "type":7,
        "nonce":3,
        "from":"225674a01e32538e519e4e6619ccf96e61c6d1ddf79c7e421576e2e93fd85433",
        "gasPrice":2,
        "amount":0,
        "payload":"00f84a83414d438609184e72a0008609184e72a000a0225674a01e32538e519e4e6619ccf96e61c6d1ddf79c7e421576e2e93fd8543394df2298b36b75bbc7799c46e359b48c0a338c8fed0180",
        "to":"0000000000000000000000000000000000000000",
        "signature":"10630cbdd3708482b0ddac6b458b2ba83f36faa6c411aba3c5697f6220c3fafce6bcf1978179171a829548e44f910c48cb600cdbdb861d66eaa4640c9f587d0c",
        "blockHash":null,
        "fee":200000,
        "blockHeight":0
    },
    "code":2000
}

注:

code返回2000表示广播成功,message是返回SUCCESS,data返回事务构造明细;

code返回5000表示广播失败,message返回错误信息,data返回null。

 

4. 资产部署

发布一个新的资产,先进行资产部署,生成的事务哈希可用于资产转账,增发,更换所有者。

事务约束说明:

  1. 资产code只能是大写英文字母,不能有特殊字符和数字,不能为官方资产WDC,长度在3~12字符之间;
  2. 期初发行额度offering必须是整数,额度不能超过Long的最大值(9223372036854775807);
  3. 事务的from是创建者createuser,不能修改,拥有者owner可以修改。

接口名称:

TxUtility. CreateSignToDeployforRuleAsset()

接口中需要的参数:

 1)、发送者公钥(十六进制字符串)

 2)、私钥(十六进制字符串)

 3)、Nonce(Long  当前公钥的nonce值)

 4)、code(String,资产代码)

 5)、offering(BigDecimal,期初发行额度)

 6)、createuser(十六进制字符串,规则创建者的公钥)

 5)、owner(十六进制字符串,规则所有者的地址)

 6)、allowincrease(int 是否允许增发 1表示允许,0表示不允许)

 7)、info(十六进制字符串 说明,可为空)

调用时参数顺序不可变.

以下内容为示例性内容,实际资产部署时,公钥,私钥,nonce,code等根据实际情况,需要调整。

//公钥String pubkey = "225674a01e32538e519e4e6619ccf96e61c6d1ddf79c7e421576e2e93fd85433";//私钥

String prikey = "0a1ae6fdf773320dd1185f8f64d658cabe512eb074d954b7af0e726e568c7471";//获取nonce

String url = "http://192.168.1.239:19585/sendNonce";

String params = "pubkeyhash=" + "df2298b36b75bbc7799c46e359b48c0a338c8fed";

String result = sendPost(url, params);

System.out.printf("sendNonce result:  %s \n", result);

JSONObject jo = JSONObject.parseObject(result);

Integer nonce = (Integer) jo.get("data");//资产代码

String code = "AMC";//期初发行额度

BigDecimal offering = new BigDecimal("100000");//规则创建者的公钥

String create = "225674a01e32538e519e4e6619ccf96e61c6d1ddf79c7e421576e2e93fd85433";//规则所有者的地址

String owner = "1MLq8atZUha8dZHif9SHzGLqYnkjBoGFkT";//是否增发

int allowincrease = 1;

String info = "";TxUtility txUtility = new TxUtility();

JSONObject jsonObject = txUtility.

CreateSignToDeployforRuleAsset

(pubkey, prikey, nonce.longValue(),code,offering,create,owner,allowincrease,info);

正确部署之后message用于节点广播,广播成功之后即为部署成功。

 

5. 资产调用

资产调用包括资产转账,更换所有者,增发。

注:资产调用前提是需要资产部署成功,通过官方指定浏览器查询事物哈希是否打包进区块。

 

5.1 资产更换所有者

新发布的资产进行更换所有者,在资产部署完并广播成功打包进入区块后如需更换

所有者调用此接口。

事务约束说明:

  1. 资产更换拥有者事务构建前需确保是现拥有者构建,其他账户没有权限;
  2. 更换的拥有者不能是现拥有者。

接口名称:

TxUtility. CreateSignToDeployforAssetChangeowner()

接口中需要的参数:

1)、发送者公钥(十六进制字符串)

2)、事务哈希(十六进制字符串)

3)、私钥(十六进制字符串)

4)、nonce(Long)

5)、newowner(十六进制字符串,目标地址对应的公钥)

返回类型:JSON

返回值:

 {

      data : Transaction;

      (int)statusCode:0

      (String)message:null

 } 

调用时参数顺序不可变,事务哈希填的是资产部署时返回的事务哈希data.

以下内容为示例性内容,实际资产部署时,公钥,事务哈希,私钥,nonce,newowner等根据实际情况,需要调整。

//    获取nonce

String url = "http://192.168.1.239:19585/sendNonce";

String params = "pubkeyhash=" + "df2298b36b75bbc7799c46e359b48c0a338c8fed";

String result = sendPost(url, params);

System.out.printf("sendNonce result:  %s \n", result);

JSONObject jo = JSONObject.parseObject(result);

Integer nonce = (Integer) jo.get("data");//公钥String pubkey = "225674a01e32538e519e4e6619ccf96e61c6d1ddf79c7e421576e2e93fd85433";//私钥

String prikey = "0a1ae6fdf773320dd1185f8f64d658cabe512eb074d954b7af0e726e568c7471";//资产部署时返回的事务哈希

String txHash = "18b6ef62de5366e94fb76d0c8c85fdf74fcdb192f255ce443fb53e25cf32c903";//新的目标地址

String newowner = "WX1LUi31jn45Qec2BtqqCUgR2KLV6NkFhghP";TxUtility txUtility = new TxUtility();

JSONObject jsonObject = txUtility.CreateSignToDeployforAssetChangeowner(pubkey, txHash,prikey, nonce.longValue(),newowner);

message用于节点广播,广播成功之后通过官方指定浏览器查询事物哈希是否打包进区块。

 

5.2 资产转账

新发布的资产进行资产转账,在资产部署完并广播成功打包进入区块后如需资产转账调用此接口。

事务约束说明:

  1. 确保发起者相应资产余额充足;
  2. 转账的金额必须是整数。

接口名称:

TxUtility. CreateSignToDeployforRuleTransfer()

接口中需要的参数:

 1)、发送者公钥(十六进制字符串)

 2)、事务哈希(十六进制字符串)

 3)、私钥(十六进制字符串)

 4)、nonce(Long)

 5)、from(十六进制字符串,公钥)

 6)、to(十六进制字符串,目标地址的公钥哈希)

 7)、value(BigDecimal,转发金额,必须大于0,整数)

返回类型:JSON

返回值:

 {

           data : Transaction;

           (int)statusCode:0

           (String)message:null

 }

调用时参数顺序不可变,事务哈希填的是资产部署时返回的事务哈希data.

以下内容为示例性内容,实际资产部署时,公钥,事务哈希,私钥,nonce,from,to等根据实际情况,需要调整。

//    获取nonce

String url = "http://192.168.1.239:19585/sendNonce";

String params = "pubkeyhash=" + "df2298b36b75bbc7799c46e359b48c0a338c8fed";

String result = sendPost(url, params);

System.out.printf("sendNonce result:  %s \n", result);

JSONObject jo = JSONObject.parseObject(result);

Integer nonce = (Integer) jo.get("data");//公钥String pubkey = "225674a01e32538e519e4e6619ccf96e61c6d1ddf79c7e421576e2e93fd85433";//私钥

String prikey = "0a1ae6fdf773320dd1185f8f64d658cabe512eb074d954b7af0e726e568c7471";//资产部署时返回的事务哈希

String txHash = "18b6ef62de5366e94fb76d0c8c85fdf74fcdb192f255ce443fb53e25cf32c903";//发送者公钥String from = "225674a01e32538e519e4e6619ccf96e61c6d1ddf79c7e421576e2e93fd85433";//接收地址的公要哈希

String to = "f0989dbc7a46d294d38269c2d683f2e13b799cae";//转账金额BigDecimal value = new BigDecimal("100000");TxUtility txUtility = new TxUtility();

JSONObject jsonObject = txUtility.CreateSignToDeployforRuleTransfer(pubkey, txHash,prikey, nonce.longValue(),from,to,value);

message用于节点广播,广播成功之后通过官方指定浏览器查询事物哈希是否打包进区块。

 

5.3 资产增发

新发布的资产进行资产增发,在资产部署完并广播成功打包进入区块后如需资产增发调用此接口。

事务约束说明:

  1. 资产增发只有现拥有者才能增发;
  2. 增发的金额必须是整数,发行金额累计不能超过Long的最大值 (9223372036854775807)。

接口名称:

TxUtility.CreateSignToDeployforRuleAssetIncreased()

接口中需要的参数:

 1)、发送者公钥(十六进制字符串)

 2)、事务哈希(十六进制字符串)

 3)、私钥(十六进制字符串)

 4)、nonce(Long)

 5)、amount(BigDecimal,增发的金额)

返回类型:JSON

返回值:

 {

      data : Transaction;

      (int)statusCode:0

      (String)message:null

 }

调用时参数顺序不可变,事务哈希填的是资产部署时返回的事务哈希data.

以下内容为示例性内容,实际资产部署时,公钥,事务哈希,私钥,nonce,amount等根据实际情况,需要调整。

//获取nonce

String url = "http://192.168.1.239:19585/sendNonce";

String params = "pubkeyhash=" + "df2298b36b75bbc7799c46e359b48c0a338c8fed";

String result = sendPost(url, params);

System.out.printf("sendNonce result:  %s \n", result);

JSONObject jo = JSONObject.parseObject(result);

Integer nonce = (Integer) jo.get("data");//增发金额

BigDecimal amount = new BigDecimal("123");//公钥

String pubkey = "225674a01e32538e519e4e6619ccf96e61c6d1ddf79c7e421576e2e93fd85433";//私钥

String prikey = "0a1ae6fdf773320dd1185f8f64d658cabe512eb074d954b7af0e726e568c7471";//资产部署时返回的事务哈希

String txHash = "18b6ef62de5366e94fb76d0c8c85fdf74fcdb192f255ce443fb53e25cf32c903";

TxUtility txUtility = new TxUtility();

JSONObject jsonObject = txUtility.CreateSignToDeployforRuleAssetIncreased(pubkey, txHash,prikey, nonce.longValue(),amount);

message用于节点广播,广播成功之后通过官方指定浏览器查询事物哈希是否打包进区块。

 

6. 节点广播资产部署和调用

资产部署调用SDK成功之后,将返回的message信息连接至节点进行广播

调用节点RPC

接口名称:sendTransaction

接口所需要的参数:

traninfo(string):  整体构造事务16进制字符换

返回类型:JSON

返回值:

 {

           data : Transaction;

           (int)statusCode:0

           (String)message:null

 }

再调用sendPost方法广播事务

接口所需要的参数:

url:节点IP

param:事务哈希

返回类型:JSON

返回值:

 {

           data : Transaction;

           (int)statusCode:0

           (String)message:null

 }

以下内容为示例性内容,实际广播时,message,url等根据实际情况,需要调整。

 

//资产部署时返回的messageString message = "0118b6ef62de5366e94fb76d0c8c85fdf74fcdb192f255ce443fb53e25cf32c903070000000000000003225674a01e32538e519e4e6619ccf96e61c6d1ddf79c7e421576e2e93fd854330000000000000002000000000000000010630cbdd3708482b0ddac6b458b2ba83f36faa6c411aba3c5697f6220c3fafce6bcf1978179171a829548e44f910c48cb600cdbdb861d66eaa4640c9f587d0c00000000000000000000000000000000000000000000004d00f84a83414d438609184e72a0008609184e72a000a0225674a01e32538e519e4e6619ccf96e61c6d1ddf79c7e421576e2e93fd8543394df2298b36b75bbc7799c46e359b48c0a338c8fed0180";

String traninfo = message;//节点的ip地址

String url2 = "Http://192.168.1.239:19585/sendTransaction";

String param2 = "traninfo=" + traninfo;

String result2 = sendPost(url2, param2);

System.out.println("result2:" + result2);

 

广播之后返回的message为success时说明资产部署成功,资产部署成功后可进行资产转账,增发,更换所有者的操作。message为错误信息的时候表明资产部署不成功,需要检查参数是否正确

 

 

资产增发,转账,更换所有者和资产部署一致,调用返回的message进行广播,返回result为success即为事务调用成功。

示例:

广播时需要的sendPost方法代码,方法参数url是节点的ip地址

 

private static String sendPost(String url, String param) {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
           conn.setRequestProperty("accept", "*/*");
           conn.setRequestProperty("connection", "Keep-Alive");
           conn.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
            out.print(param);
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
//            System.out.println("发送 POST 请求出现异常!"+e);
//            e.printStackTrace();
            JSONObject jo = new JSONObject();
            jo.put("message", "Connection refused");
            jo.put("data", "");
            jo.put("code", "5000");
            return jo.toJSONString();
        }
        //使用finally块来关闭输出流、输入流
        finally {
            try {
                if (out != null) {
                    out.close();
                }
                if (in != null) {
                    in.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        return result;
    }

共收到 0 条回复:

需要登录发表回复, 如果你还没有账号请点击这里 注册

公告

Wisdom Chain Tech F.是WDC技术爱好者的交流聚集地。

以为社区和技术爱好者的共同权益服务为宗旨,坚持正确的舆论导向。

发布以下内容:

  1. 违反国家相关法律及社区规则,恶意灌水、色情低俗、敏感反动、垃圾广告的。
  2. 不符合技术论坛定位,虚假新闻的。
  3. 使用煽动性语言故意夸大新闻事实、误导网友、挑起争端的。
  4. 带有恶意灌水,内容重复,影响帖子浏览的。
  5. 抄袭别人或带有知识产权内容,涉及网友个人隐私的。

统计信息

  • 社区成员: 69 人
  • 帖子数: 58 个
  • 回帖数: 106 条