Skip to content

WisedomChainGroup/java-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

APPSDK方法说明

lombok usage https://jingyan.baidu.com/article/0a52e3f4e53ca1bf63ed725c.html

JitPack地址:https://jitpack.io/#WisedomChainGroup/java-sdk/ 如果您是JitPack上直接下载依赖,则需要手动导入以下jar包

<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15on</artifactId>
    <version>1.61</version>
    <scope>compile</scope>
    </dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.0</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.4</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-math3</artifactId>
    <version>3.6</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.10</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>commons-cli</groupId>
    <artifactId>commons-cli</artifactId>
    <version>1.4</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.5</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>28.1-jre</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.1</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.kosprov.jargon2</groupId>
    <artifactId>jargon2-api</artifactId>
    <version>1.1.1</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.kosprov.jargon2</groupId>
    <artifactId>jargon2-native-ri-backend</artifactId>
    <version>1.1.1</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>net.java.dev.jna</groupId>
    <artifactId>jna</artifactId>
    <version>4.5.2</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.nativelibs4java</groupId>
    <artifactId>jnaerator-runtime</artifactId>
    <version>0.12</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.nativelibs4java</groupId>
    <artifactId>ochafik-util</artifactId>
    <version>0.12</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.0.Final</version>
    <scope>compile</scope>
</dependency>

APPSDK是提供给APP调用的方法,主要是提供给实现普通转账事务的构造,签名,发送以及孵化器相关的操作,对于RPC来说,提供若干的接口,对于客户端来说,需要提供若干的实现方法,如下所示:

1.0 基本说明

1)、区块确认完成

通过事务的哈希值查询确认区块数,并且确认是否已经完成, 我们认为往后确定2区块即可表示已经完成。 无论什么事务,都要等待至少2个区块确认才算完成

2)、返回格式

{"message":"","data":[],"statusCode":int}
  • message:描述
  • data :数据
  • statusCode:

2.0 JAVA-SDK文档

1.1 生成keystore文件

 WalletUtility.fromPassword()
参数:
 1)、密码(String)
 返回类型:json
 返回值:keystore

1.2 地址校验

 WalletUtility.verifyAddress()
 参数:
 1)、地址字符串(String)
 返回类型:int
 返回值:
 0(正常)
 -1(出错)地址前缀错误
 -2(出错)校验错误

1.3 通过地址获得公钥哈希

 WalletUtility.addressToPubkeyHash()
 参数:
 1)、地址字符串(String)
 返回类型:String(十六进制字符串)
 返回值:pubkeyHash

1.4 通过公钥哈希获得地址

 WalletUtility. pubkeyHashToAddress()
 参数:
 1)、公钥哈希(String)
 2)、type(int)
 	type: 1  不带“WX”前缀格式的地址 
	      2  带有“WX”前缀格式的地址
 返回类型:String
 返回值:Address

1.5 通过keystore获得地址

 WalletUtility.keystoreToAddress()
 参数:
 1)、keystore(String)
 2)、密码(String)
 返回类型:String
 返回值:Address

1.6 通过keystore获得公钥哈希

 WalletUtility. keystoreToPubkeyHash()
 参数:
 1)、keystore(String)
 2)、密码(String)
 返回类型:String
 返回值:PubkeyHash

1.7 通过keystore获得私钥

 WalletUtility. obtainPrikey()
 参数:
 1)、keystore(String)
 2)、密码(String)
 返回类型:String(十六进制字符串)
 返回值:Prikey

1.8 通过keystore获得公钥

 WalletUtility.keystoreToPubkey()
 参数:
 1)、keystore(String)
 2)、密码(String)
 返回类型:String(十六进制字符串)
 返回值:Pubkey

1.9 SHA3-256哈希方法

 SHA3Utility.HexStringkeccak256()
 参数:
 1)、哈希原文(字节数组)
 返回类型:十六进制字符串
 返回值:哈希值

1.10 Ripemd-160哈希方法

 RipemdUtility.HexStringRipemd160()
 参数:
 1)、哈希原文(字节数组)
 返回类型:十六进制字符串
 返回值:哈希值

1.11 base58编码方法

 Base58Utility.encode ()
 参数:
 1)、哈希原文(字节数组)
 返回类型:String
 返回值:哈希值

1.12 创建原生转账事务

 TxUtility.CreateRawTransaction()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、接收者公钥哈希(十六进制字符串)
 3)、转账金额(BigDecimal)
 4)、Nonce(Long)
 返回类型:十六进制字符串
 返回值:未签名的事务哈希

1.13 签名事务

 TxUtility.signRawBasicTransaction()
 参数:
 1)、事务(十六进制字符串)
 2)、私钥(十六进制字符串)
 返回类型:十六进制字符串
 返回值:已签名事务哈希

1.14 发起转账申请

 TxUtility. ClientToTransferAccount()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、接收者公钥哈希(十六进制字符串)
 3)、转账金额(BigDecimal)
 4)、私钥(十六进制字符串)
 5)、Nonce(Long)
 返回类型:Json
 返回值:
 {
 data :txHash(事务哈希,十六进制字符串)
 (int)statusCode:0
 (String)message:traninfo(已签名事务,十六进制字符串)
 }

1.15 发起存证事务

TxUtility. ClientToTransferProve()
参数:
1)、发送者公钥(十六进制字符串)
2)、存证内容(字节数组)
3)、Nonce(Long)
4)、发送者私钥(十六进制字符串)
返回类型:Json
返回值:
{
data :txHash(事务哈希,十六进制字符串)
(int)statusCode:0
(String)message:traninfo(已签名事务,十六进制字符串)
}

1.16 发起投票事务

TxUtility.ClientToTransferVote()
参数:
1)、发送者公钥(十六进制字符串)
2)、接收者公钥哈希(十六进制字符串)
3)、票数(Long)
4)、Nonce(Long)
5)、发送者私钥(十六进制字符串)
返回类型:Json
返回值:
{
data :txHash(事务哈希,十六进制字符串)
(int)statusCode:0
(String)message:traninfo(已签名事务,十六进制字符串)
}

1.17 发起投票撤回事务

TxUtility.ClientToTransferVoteWithdraw()
参数:
1)、发送者公钥(十六进制字符串)
2)、接收者公钥哈希(十六进制字符串)
3)、票数(Long,必须与投票数保持一致)
4)、Nonce(Long)
5)、发送者私钥(十六进制字符串)
6)、投票事务哈希(十六进制字符串)
返回类型:Json
返回值:
{
data :txHash(事务哈希,十六进制字符串)
(int)statusCode:0
(String)message:traninfo(已签名事务,十六进制字符串)
}

1.18 发起抵押事务(只能给自己抵押)

TxUtility.ClientToTransferMortgage()
参数:
1)、发送者公钥(十六进制字符串)
2)、接收者公钥哈希(十六进制字符串)
3)、金额(Long)
4)、nonce(Long)
5)、发送者私钥(十六进制字符串)
返回类型:Json
返回值:
{
data :txHash(事务哈希,十六进制字符串)
(int)statusCode:0
(String)message:traninfo(已签名事务,十六进制字符串)
}

1.19 发起抵押撤回事务

TxUtility.ClientToTransferMortgageWithdraw()
参数:
1)、发送者公钥(十六进制字符串)
2)、接收者公钥哈希(十六进制字符串)
3)、金额(Long,金额必须与抵押的保持一致)
4)、nonce(Long)
5)、抵押事务哈希(十六进制字符串)
6)、发送者私钥(十六进制字符串)
返回类型:Json
返回值:
{
data :txHash(事务哈希,十六进制字符串)
(int)statusCode:0
(String)message:traninfo(已签名事务,十六进制字符串)
}
  • 注意,这里的成功或者失败,仅仅是指动作本身,真正看事务有没有最终成功,还需要通过事务哈希查询确认区块数

1.23 发起孵化申请(孵化器)

 TxUtility. ClientToIncubateAccount()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、接收者公钥哈希(十六进制字符串)
 3)、金额(BigDecimal)
 4)、私钥(十六进制字符串)
 5)、分享者公钥哈希(十六进制字符串)
 6)、孵化类型(int)
 7)、Nonce(Long)
 返回类型:Json
 返回值:
 {
 data :txHash(事务哈希,十六进制字符串)
 (int)statusCode:0
 (String)message:traninfo(已签名事务,十六进制字符串)
 }

1.24 提取收益(孵化器)

 TxUtility. ClientToIncubateProfit()
参数:
 1)、发送者公钥(十六进制字符串)
 2)、接收者公钥哈希(十六进制字符串)
 3)、收益(BigDecimal)
 4)、私钥(十六进制字符串)
 5)、孵化的事务哈希(十六进制字符串)
 6)、Nonce(Long)
 返回类型:Json
 返回值:
 {
 data :txHash(事务哈希,十六进制字符串)
 (int)statusCode:0
 (String)message:traninfo(已签名事务,十六进制字符串)
 }

1.25 提取分享收益(孵化器)

 TxUtility.ClientToIncubateShareProfit ()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、接收者公钥哈希(十六进制字符串)
 3)、分享收益(BigDecimal)
 4)、私钥(十六进制字符串)
 5)、孵化的事务哈希(十六进制字符串)
 6)、Nonce(Long)
 返回类型:Json
 返回值:
 {
 data :txHash(事务哈希,十六进制字符串)
 (int)statusCode:0
 (String)message:traninfo(已签名事务,十六进制字符串)
 }

1.26 提取本金(孵化器)

 TxUtility. ClientToIncubatePrincipal()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、接收者公钥哈希(十六进制字符串)
 3)、本金(BigDecimal)
 4)、私钥(十六进制字符串)
 5)、孵化的事务哈希(十六进制字符串)
 6)、Nonce(Long)
 返回类型:Json
 返回值:
 {
 data :txHash(事务哈希,十六进制字符串)
 (int)statusCode:0
 (String)message:traninfo(已签名事务,十六进制字符串)
 }

1.27 获取事务对象

 TxUtility. byteToTransaction()
 参数:
 1)、事务哈希(十六进制字符串)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 }

1.28构造签名的规则部署的资产定义事务

 TxUtility. CreateSignToDeployforRuleAsset()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、私钥(十六进制字符串)
 3)、Nonce(Long)
 4)、code(String,资产代码)
 5)、offering(BigDecimal,期初发行额度)
 6)、createuser(十六进制字符串,规则创建者的公钥)
 5)、owner(十六进制字符串,规则所有者的地址)
 6)、allowincrease(int 是否允许增发 1表示允许,0表示不允许)
 7)、info(string 说明)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 }

1.29构造签名的资产定义的更换资产的规则调用事务

 TxUtility. CreateSignToDeployforAssetChangeowner()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、事务哈希(十六进制字符串)
 3)、私钥(十六进制字符串)
 4)、nonce(Long)
 5)、newowner(十六进制字符串,新的目标用户地址)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 }

1.30构造签名的资产定义的更换资产的规则调用事务(传部署时的160哈希)

 TxUtility. CreateSignToDeployforAssetChangeownerAsHash160()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、160哈希(十六进制字符串 资产部署时的160哈希值)
 3)、私钥(十六进制字符串)
 4)、nonce(Long)
 5)、newowner(十六进制字符串,新的目标用户地址)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 }

1.31构造签名的资产定义的资产增发的规则调用事务

 TxUtility. CreateSignToDeployforRuleAssetIncreased()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、160哈希(十六进制字符串)
 3)、私钥(十六进制字符串)
 4)、nonce(Long)
 5)、amount(BigDecimal,增发的金额)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 }

1.32构造签名的资产定义的资产增发的规则调用事务(传部署时的160哈希)

 TxUtility. CreateSignToDeployforRuleAssetIncreasedAsHash160()
 参数:
 1)、发送者公钥(十六进制字符串 资产部署时的160哈希值)
 2)、160哈希(十六进制字符串)
 3)、私钥(十六进制字符串)
 4)、nonce(Long)
 5)、amount(BigDecimal,增发的金额)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 }

1.33构造签名的资产定义的转账的规则调用事务

 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
 }

1.34构造签名的资产定义的转账的规则调用事务(传部署的160哈希)

 TxUtility.CreateSignToDeployforRuleTransferAsHash160()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、160哈希(十六进制字符串,资产部署时的160哈希值)
 3)、私钥(十六进制字符串)
 4)、nonce(Long)
 5)、from(十六进制字符串,公钥)
 6)、to(十六进制字符串,目标地址的公钥哈希)
 7)、value(BigDecimal,转发金额,必须大于0,整数)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 }

1.35 获取Asset资产部署的详细信息

*   方法:TxUtility.getAsset()     
*	参数:payload(十六进制字符串)  
 返回类型:Json
 返回值:
 {
  data : Transaction;
 (int)statusCode:2000
 (String)message::对象的所有参数
 }

1.36 获取AssetChangeowner资产更换所有者的详细信息

*   方法:TxUtility.getAssetChangeowner()     
*	参数:payload(十六进制字符串)  
 返回类型:Json
 返回值:
 {
  data : Transaction;
 (int)statusCode:2000
 (String)message::对象的所有参数
 }

1.37 获取AssetIncreased资产增发的详细信息

*   方法:TxUtility.getAssetIncreased()
*	参数:payload(十六进制字符串)   
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:2000
 (String)message::对象的所有参数
 }

1.38 获取AssetTransfer资产转账的详细信息

*   方法:TxUtility.getAssetTransfer()     
*	参数:payload(十六进制字符串)  
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:2000
 (String)message:对象的所有参数
 }

1.39构造签名的多重规则部署(发布者签名)

 TxUtility. CreateMultipleToDeployforRuleFirst()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、私钥(十六进制字符串)
 3)、Nonce(Long) 发布人的当前nonce
 4)、assetHash(十六进制字符串  资产的哈希值)
 5)、max(int   总计可以具备的签名数)
 6)、min(int   最少需要达到的签名数)
 7)、publist(十六进制字符串的集合  公钥数组)
 8)、amount(BigDecimal   总额)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 (String)pubkeyFirstSign:(十六进制字符串,发布者未签名的事务构造)
 (String)pubkeyFirst:(十六进制字符串,发布者公钥)
 (String)signFirst:(十六进制字符串,发布者签名的事务构造)
 (String)data:(十六进制字符串)
 (String)message:(十六进制字符串)
 }

1.40构造签名的多重签名的部署(其他人签名)

 TxUtility. CreateMultipleToDeployforRuleOther()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、pubFirstSign(十六进制字符串,发布者签名返回的pubkeyFirstSign字段)
 3)、私钥(十六进制字符串)
 4)、isPutSign(boolean 是否签名   true:签名  false:不签名)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 (String)pubkeyOther:(十六进制字符串,其他人的公钥)
 (String)signOther:(十六进制字符串,其他人的签名)
 }

1.41构造签名的多重规则部署(拼接签名)

 TxUtility. CreateMultipleToDeployforRuleSignSplice()
 参数:
 1)、发布者私钥(十六进制字符串)
 2)、pubFirstSign(十六进制字符串,发布者签名返回的pubkeyFirstSign字段)
 3)、发布者公钥(十六进制字符串)
 4)、nonce(Long    发布者当前的nonce)
 5)、signFirst(十六进制字符串, 发布者签名返回的signFirst或者拼接后的签名返回的message)
 6)、pubkeyOther(十六进制字符串, 其他人签名返回的pubkeyOther字段)
 7)、signOther(十六进制字符串,  其他人签名返回的signOther字段)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:(十六位进制字符串  拼接完之后签名)
 }

1.42构造签名转账的多重签名(发布者签名)

 TxUtility. CreateMultisignatureToDeployforRuleFirst()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、私钥(十六进制字符串)
 3)、Nonce(Long) 发布人的当前nonce
 4)、事务哈希(十六进制字符串)
 5)、origin(int   来源账户类型,1表示多签地址,0表示普通账户地址)
 6)、dest(int   目标账户类型,1表示多签地址,0表示普通账户地址)
 7)、pubhash(十六进制字符串的集合   公钥数组)
 8)、to(十六进制字符串   普通地址所对应的公钥哈希或者多签地址对应的事务哈希)
 9)、value(BigDecimal   转账金额)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 (String)pubkeyFirstSign:(十六进制字符串,发布者未签名的事务构造)
 (String)pubkeyFirst:(十六进制字符串,发布者公钥)
 (String)signFirst:(十六进制字符串,发布者签名的事务构造)
 (String)data:(十六进制字符串)
 }

1.43构造签名转账的多重签名(其他人签名)

 TxUtility. CreateMultisignatureToDeployforRuleOther()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、pubFirstSign(十六进制字符串,发布者签名返回的pubkeyFirstSign字段)
 3)、私钥(十六进制字符串)
 4)、isPutSign(boolean   是否签名)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 (String)pubkeyOther:(十六进制字符串,其他人的公钥)
 (String)signOther:(十六进制字符串,其他人的签名)
 }

1.44 构造签名转账的多重签名(拼接签名)

 TxUtility. CreateMultisignatureToDeployforRuleSignSplice()
 参数:
 1)、发布者私钥(十六进制字符串)
 2)、pubFirstSign(十六进制字符串,发布者签名返回的pubkeyFirstSign字段)
 3)、发布者公钥(十六进制字符串)
 4)、事务哈希(十六进制字符串)
 5)、nonce(Long    发布者当前的nonce)
 6)、 signFirst(十六进制字符串,  发布者签名或者拼接后的签名)
 7)、 pubkeyOther(十六进制字符串,公钥)
 8)、 signOther(十六进制字符串,   其他人的签名)
 9)、 type(int,   1为单对多   2为多对单  3为多对多)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:(拼接后的签名)
 }

1.45构造签名转账的多重签名(发布者签名)(多签部署的160哈希)

 TxUtility. CreateMultisignatureToDeployforRuleFirstAsHash160()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、私钥(十六进制字符串)
 3)、Nonce(Long) 发布人的当前nonce
 4)、160哈希(十六进制字符串   多签部署时的160哈希值)
 5)、origin(int   来源账户类型,1表示多签地址,0表示普通账户地址)
 6)、dest(int   目标账户类型,1表示多签地址,0表示普通账户地址)
 7)、pubhash(十六进制字符串的集合   公钥数组)
 8)、to(十六进制字符串   普通地址所对应的公钥哈希或者多签地址对应的事务哈希)
 9)、value(BigDecimal   转账金额)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 (String)pubkeyFirstSign:(十六进制字符串,发布者未签名的事务构造)
 (String)pubkeyFirst:(十六进制字符串,发布者公钥)
 (String)signFirst:(十六进制字符串,发布者签名的事务构造)
 (String)data:(十六进制字符串)
 }

1.46构造签名转账的多重签名(其他人签名)(多签部署的160哈希)

 TxUtility. CreateMultisignatureToDeployforRuleOtherAsHash160()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、pubFirstSign(十六进制字符串,发布者签名返回的pubkeyFirstSign字段)
 3)、私钥(十六进制字符串)
 4)、isPutSign(boolean   是否签名)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 (String)pubkeyOther:(十六进制字符串,其他人的公钥)
 (String)signOther:(十六进制字符串,其他人的签名)
 }

1.47 构造签名转账的多重签名(拼接签名)(多签部署的160哈希)

 TxUtility. CreateMultisignatureToDeployforRuleSignSpliceAsHash160()
 参数:
 1)、发布者私钥(十六进制字符串)
 2)、pubFirstSign(十六进制字符串,发布者签名返回的pubkeyFirstSign字段)
 3)、发布者公钥(十六进制字符串)
 4)、160哈希(十六进制字符串    多签部署时的160哈希值)
 5)、nonce(Long    发布者当前的nonce)
 6)、 signFirst(十六进制字符串,  发布者签名或者拼接后的签名)
 7)、 pubkeyOther(十六进制字符串,公钥)
 8)、 signOther(十六进制字符串,   其他人的签名)
 9)、 type(int,   1为单对多   2为多对单  3为多对多)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:(拼接后的签名)
 }

1.48 获取Multiple多签部署的详细信息

*   方法:TxUtility.getMultiple()     
*	参数:payload(十六进制字符串)  
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:2000
 (String)message:对象的所有参数
 }

1.49 获取MultTransfer多签规则转账的详细信息

*   方法:TxUtility.getMultTransfer()     
*	参数:payload(十六进制字符串)  
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:2000
 (String)message:对象的所有参数
 }

1.50 构造签名的时间锁定的事务

 TxUtility. CreateHashTimeBlockForDeploy()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、私钥(十六进制字符串)
 3)、nonce(long)
 4)、assetHash(十六进制字符串    资产哈希)
 5)、pubkeyHash(十六进制字符串   公钥哈希)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 }

1.51 构造签名的获得锁定资产事务

 TxUtility. CreateHashTimeBlockGetForDeploy()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、私钥(十六进制字符串)
 3)、事务哈希(十六进制字符串)
 4)、nonce(int)
 5)、transferhash(十六进制字符串   签发事务的哈希)
 6)、origintext(十六进制字符串   原文)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 }

1.52 构造签名的获得锁定资产事务(部署时间锁定的160哈希)

 TxUtility. CreateHashTimeBlockGetForDeployAsHash160()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、私钥(十六进制字符串)
 3)、160哈希(十六进制字符串   时间锁定部署的160哈希)
 4)、nonce(int)
 5)、transferhash(十六进制字符串   签发事务的哈希)
 6)、origintext(十六进制字符串   原文)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 }

1.53 构造签名的时间锁定的转发资产事务

 TxUtility. CreateHashTimeBlockTransferForDeploy()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、私钥(十六进制字符串)
 3)、事务哈希(十六进制字符串)
 4)、nonce(int)
 5)、value(BigDecimal   金额)
 6)、hashresult(十六进制字符串   原文)
 7)、timestamp(时间戳)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 }

1.54 构造签名的时间锁定的转发资产事务(部署时间锁定的160哈希)

 TxUtility. CreateHashTimeBlockTransferForDeployAsHash160()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、私钥(十六进制字符串)
 3)、160哈希(十六进制字符串  时间锁定部署的160哈希)
 4)、nonce(int)
 5)、value(BigDecimal   金额)
 6)、hashresult(十六进制字符串   原文)
 7)、timestamp(时间戳)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 }

1.55 构造签名的区块高度锁定支付事务

 TxUtility. CreateHashHeightBlockForDeploy()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、私钥(十六进制字符串)
 3)、nonce(long)
 4)、assetHash(十六进制字符串   资产哈希)
 5)、pubkeyHash(十六进制字符串  公钥哈希)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 }

1.56 构造签名的区块高度获得锁定资产事务

 TxUtility. CreateHashHeightBlockGetForDeploy()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、私钥(十六进制字符串)
 3)、事务哈希(十六进制字符串)
 4)、nonce(int)
 5)、transferhash(十六进制字符串  转账事务的哈希)
 6)、origintext(十六进制字符串  原文)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 }

1.57 构造签名的区块高度获得锁定资产事务(区块高度锁定部署的160哈希)

 TxUtility. CreateHashHeightBlockGetForDeployAsHash160()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、私钥(十六进制字符串)
 3)、160哈希(十六进制字符串 区块高度部署时的160哈希)
 4)、nonce(int)
 5)、transferhash(十六进制字符串  转账事务的哈希)
 6)、origintext(十六进制字符串  原文)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 }

1.58 构造签名的区块高度锁定的转发资产事务

 TxUtility. CreateHashHeightBlockTransferForDeploy()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、私钥(十六进制字符串)
 3)、事务哈希(十六进制字符串)
 4)、nonce(int)
 5)、value(BigDecimal   金额)
 6)、hashresult(十六进制字符串  原文)
 7)、timestamp(时间戳)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 }

1.59 构造签名的区块高度锁定的转发资产事务(传160哈希)

 TxUtility. CreateHashHeightBlockTransferForDeployAsHash160()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、私钥(十六进制字符串)
 3)、160哈希(十六进制字符串 区块高度部署时的160哈希)
 4)、nonce(int)
 5)、value(BigDecimal   金额)
 6)、hashresult(十六进制字符串  原文)
 7)、timestamp(时间戳)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:0
 (String)message:null
 }

1.60 获取Hashtimeblock时间锁定支付的详细信息

*   方法:TxUtility.getHashtimeblock()     
*	参数:payload(十六进制字符串)  
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:2000
 (String)message:对象的所有参数
 }

1.61 获得HashtimeblockGet时间锁定支付获得锁定资产的详细信息

*   方法:TxUtility.getHashtimeblockGet()     
*	参数:payload(十六进制字符串)  
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:2000
 (String)message:对象的所有参数
 }

1.62 获得HashtimeblockTransfer时间锁定支付转发资产的详细信息

*   方法:TxUtility.getHashtimeblockTransfer()     
*	参数:payload(十六进制字符串)  
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:2000
 (String)message:对象的所有参数
 }

1.63 获取Hashheightblock区块高度锁定的详细信息

*   方法:TxUtility.getHashheightblock()     
*	参数:payload(十六进制字符串)  
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:2000
 (String)message:对象的所有参数
 }

1.64 获取HashheightblockGet区块高度锁定获得锁定资产的详细信息

*   方法:TxUtility.getHashheightblockGet()     
*	参数:payload(十六进制字符串)  
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:2000
 (String)message:对象的所有参数
 }

1.65 获得HashheightblockTransfer区块高度锁定转发资产的详细信息

*   方法:TxUtility.getHashheightblockTransfer()     
*	参数:payload(十六进制字符串)  
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:2000
 (String)message:对象的所有参数
 }

1.66 通过事务哈希转公钥哈希

*   方法:TxUtility.txhashTopubhash()     
*	参数:事务哈希(十六进制字符串)  
 返回类型:String
 返回值:
 {
 公钥哈希:String
 }

1.67 构造签名的部署定额条件比例支付事务

 TxUtility. CreateRateheightlockruleForDeploy()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、私钥(十六进制字符串)
 3)、nonce(long)
 4)、assetHash(十六进制字符串   资产哈希)
 5)、onetimedepositmultiple(Bigdecimal
                            每次往规则转入对应资产的倍数关系)
 6)、withdrawperiodheight(int  资产的提取高度周期)
 7)、withdrawrate(int  提取比率)
 8)、dest(十六位进制字符串  目标地址)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:2000/5000
 (String)message:null
 }

1.68 构造签名的调用定额条件比例支付的转入金额事务

 TxUtility. CreateRateheightlockDepositRuleForDeploy()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、私钥(十六进制字符串)
 3)、txHashCreate(十六进制字符串   部署定额条件比例支付返回的事务哈希)
 4)、nonce(long)
 5)、value(Bigdecimal  用户转入的指定金额)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:2000/5000
 (String)message:null
 }

1.69 构造签名的调用定额条件比例支付的转入金额事务(传160哈希)

 TxUtility. CreateRateheightlockDepositRuleForDeployAsHash160()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、私钥(十六进制字符串)
 3)、txHashCreate(十六进制字符串   部署定额条件比例支付的160哈希)
 4)、nonce(long)
 5)、value(Bigdecimal  用户转入的指定金额)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:2000/5000
 (String)message:null
 }

1.70 构造签名的调用定额条件比例支付的转出事务

 TxUtility. CreateRateheightlockWithdrawRuleForDeploy()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、txHashCreate(十六进制字符串   部署定额条件比例支付返回的事务哈希)
 3)、私钥(十六进制字符串)
 4)、nonce(long)
 5)、deposithash(十六进制字符串                 
                    构造转入金额条件比例支付返回的事务哈希)
 6)、to(十六进制字符串  公钥哈希,可能是普通账户也可能是多签)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:2000/5000
 (String)message:null
 }

1.71 构造签名的调用定额条件比例支付的转出事务(传160哈希)

 TxUtility. CreateRateheightlockWithdrawRuleForDeployAsHash160()
 参数:
 1)、发送者公钥(十六进制字符串)
 2)、txHashCreate(十六进制字符串   部署定额条件比例支付的160哈希)
 3)、私钥(十六进制字符串)
 4)、nonce(long)
 5)、deposithash(十六进制字符串                 
                    构造转入金额条件比例支付返回的事务哈希)
 6)、to(十六进制字符串  公钥哈希,可能是普通账户也可能是多签)
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:2000/5000
 (String)message:null
 }

1.72 获取Rateheightlock定额条件比例支付的转入金额事务的详细信息

*   方法:TxUtility.getRateheightlock()     
*	参数:payload(十六进制字符串)  
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:2000
 (String)message:对象的所有参数
 }

1.73 获取RateheightlockDeposit区块高度锁定获得锁定资产的详细信息

*   方法:TxUtility.getRateheightlockDeposit()     
*	参数:payload(十六进制字符串)  
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:2000
 (String)message:对象的所有参数
 }

1.74 获取RateheightlockWithdraw定额条件比例支付的转出的详细信息

*   方法:TxUtility.getRateheightlockWithdraw()     
*	参数:payload(十六进制字符串)  
 返回类型:Json
 返回值:
 {
 data : Transaction;
 (int)statusCode:2000
 (String)message:对象的所有参数
 }

节点rpc

1.0 获取Nonce

*   方法:sendNonce(POST)     
*	参数:pubkeyhash(String)  
*	返回:
*	{"message":"","data":[],"statusCode":int}
*	data:Nonce(Long)

1.1 获取余额

*   方法:sendBalance(POST)   
*	参数:pubkeyhash(十六进制字符串) 	
* 	返回:
* 	{"message":"","data":[],"statusCode":int}
*	data:balance(Long)

1.2 广播事务

*   方法: sendTransaction(POST)	
*	参数:traninfo(String)
*	返回:
* 	{"message":"","data":[],"statusCode":int}

1.3 查询当前区块高度

*   方法:height(GET)
*	返回:
*	{"message":"","data":0,"statusCode":int}
*	data:height(Long)

1.4 根据事务哈希获得所在区块哈希以及高度

*   方法:blockHash(GET)
*	参数:txHash(String)
*	返回:
*	{
*	data :定义如下;
*   statusCode(int):int
*	message(String):""
*    }
*    data:
*   {
*   "blockHash":区块哈希(十六进制字符串), 
*   "height":区块高度(Long)
*   }

1.5 根据事务哈希获得区块确认状态(GET)

*   方法:transactionConfirmed
*	参数:txHash(String)
*	返回: 
*   {"message":"","data":[],"statusCode":int}
*   statusCode: status(int)

1.6 根据区块高度获取事务列表

*   方法: getTransactionHeight(POST) 
*   参数: int height 区块高度
*   返回格式:{"message":"SUCCESS","data":[],"statusCode":1}
*   data格式:
*	String block_hash; 区块哈希16进制字符串
*	long height; 区块高度
*	int version; 版本号
*	String tx_hash; 事务哈希16进制字符串
*	int type;  事务类型
*	long nonce;nonce
*	String from;  发起者公钥16进制字符串
*	long gas_price; 事务手续费单价
*	long amount; 金额
*	String payload; payload数据
*	String signature; 签名16进制字符串
*	String to;  接受者公钥哈希16进制字符串

1.7 通过事务哈希获取事务

    方法:transaction\(事务哈希) (GET)
    返回:{"message":"SUCCESS","data":[],"statusCode":1}
    data格式:
    {
      "transactionHash": "e75d61e1b872f67cccc37c4a5b354d21dd90a20f04a41a8536b9b6a1b30ccf41", // 事务哈希
      "version": 1, // 事务版本 默认为 0
      "type": 0,  // 事务类型 0 是 coinbase 1 是 转账
      "nonce": 5916, // nonce 值,用于防止重放攻击
      "from": "0000000000000000000000000000000000000000000000000000000000000000", // 发送者的公钥, 用于验证签名
      "gasPrice": 0, // gasPrice 用于计算手续费
      "amount": 2000000000, // 交易数量,单位是 brain
      "payload": null, // payload 用于数据存证,一般填null
      "to": "08f74cb61f41f692011a5e66e3c038969eb0ec75", // 接收者的地址
      "signature": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", // 签名
      "blockHash": "e2ccac56f58adb3f2f77edd96645931fac93dd058e7da21421d95f2ac9cc44ac", // 事务所在区块的哈希
      "fee": 0,  // 手续费
      "blockHeight": 13026 // 事务所在区块高度
}

1.8 通过区块哈希获取事务列表

*   方法:getTransactionBlcok(POST)
*   参数 String blockhash 区块哈希16进制字符串
*   返回格式:{"message":"SUCCESS","data":[],"statusCode":1}
*   data格式:
*	String block_hash; 区块哈希16进制字符串
*	long height; 区块高度
*	int version; 版本号
*	String tx_hash; 事务哈希16进制字符串
*	int type;  事务类型
*	long nonce;nonce
*	String from;  发起者公钥16进制字符串
*	long gas_price; 事务手续费单价
*	long amount; 金额
*	String payload; payload数据
*	String signature; 签名16进制字符串
*	String to;  接受者公钥哈希16进制字符串

1.28 连接孵化器节点(孵化器)

1.29 转账同步(孵化器)

 sendTransferList
 返回:Json格式
 {"message":"SUCCESS","data":[],"statusCode":1}
 statusCode:1是正常,-1是不正常
 message:返回成功或错误信息
 data:返回json格式的信息
 data信息如下:
 private java.lang.String coinAddress;//   钱包地址
 private java.lang.String fromAddress;//   出账钱包地址
 private BigDecimal amount;//   领取金额
 private java.lang.String tranHash;//   区块hash
 private java.lang.Long coinHeigth;//   区块高度
 private BigDecimal fee;//   手续费

1.30 孵化同步(孵化器)

 sendHatchList
 返回:json格式,参数同上
 data信息如下:
 private java.lang.String coinAddress;//   钱包地址
 private BigDecimal coinAccount;//   孵化资产
 private java.lang.String inviteAddress;//   邀请人地址
 private java.lang.String coinHash;//   孵化事务hash
 private java.lang.Long blockHeight;//   孵化事务区块高度
 private java.lang.Integer blockType;//   孵化类型(120:120天,365:365天)

1.31 利息同步(孵化器)

 sendInterestList
 返回:json格式,参数同上
 data信息如下:
 private java.lang.String coinHash;//   孵化事务hash
 private java.lang.String coinAddress;//   钱包地址
 private BigDecimal amount;//   领取金额
 private java.lang.String tranHash;//   区块Hash
 private java.lang.Long coinHeigth;//   区块高度
 private String inviteAddress;     //   分享者地址

1.32 分享同步(孵化器)

 sendShareList
 返回:json格式,参数同上
 data信息如下:
 private java.lang.String coinAddress;//   钱包地址
 private java.lang.String inviteAddress;//   推荐人钱包地址
 private java.lang.String coinHash;//   区块事务hash
 private BigDecimal amount;//   领取金额
 private java.lang.String tranHash;//   推荐孵化单的事务hash
 private java.lang.Long coinHeigth;//   区块高度

1.33 获取当前可提取利息(孵化器)

getNowInterest(POST)
参数:coinHash(孵化的事务哈希)
返回:json格式,参数同上
data信息如下:
dueinAmount:可提取利息(不计算是否到期)
capitalAmount:当前利息总余额

1.34 获取当前可提取分享收益(孵化器)

getNowShare(POST)
参数:coinHash(孵化的事务哈希)
返回:json格式,参数同上
data信息如下:
dueinAmount:可提取利息(不计算是否到期)
capitalAmount:当前利息总余额

1.35 本地参数配置

最低手续费,默认为0.002wdc 余额可见区块确认数:2

1.36 注意点

  • 1)、与服务端之间的参数传递,采用JSON格式 并且使用protobuf字节传递
  • 2)、第一版使用客户端主动调用服务端API进行数据的更新,后续再更换为消息事件的方式
  • 3)、只要是调用RPC-API的,返回格式都是
 {
 “data” :,
 “statusCode”:int,
 “message”:String
 }

1.37 浏览器信息

方法:WisdomCore\ExplorerInfo(GET)
参数:无
返回:{"message": "SUCCESS","data": {},"code": 2000}
data格式: 
	{
        "blocksCount": 8547,//24小时内的出块数量
        "target": "000019b936ba20a901082aca448779aaf1ed4c03204ea6cec85e5cd851c5e956",//难度值
        "averageBlockInterval": 10.44,//最近十个区块的平均出块时间
        "averageFee": 0,//平均手续费
        "pendingTransactions": 0,//在pending中的事务数
        "queuedTransactions": 0,//在queued中的事务数
        "lastConfirmedHeight": 15002,//已经写入库的区块数
        "bestHeight": 15005//forkDB中的区块数
    },
    "code": 2000

1.38 地址的投票信息

方法:votes\(地址)(GET)
参数:token=NUMtD0dEXungVX7eLuXkEurH5BCJzw(放在header里面)
返回:"0000000000000000000000000000": {}
data格式:
    "1DjBbTrnf3jiDp4z8zucZc8E8rxhGmFXVz": {
        "address": "1DjBbTrnf3jiDp4z8zucZc8E8rxhGmFXVz",//投票地址
        "amount": 205000000000,//投票数量
        "accumulated": 3475608//衰减后的投票权益
    }
  1. 命令行实现

假设SDK编译后的程序名为wcli

  • [Image: image.png]在main方法中调用一个CLIInterface.call传入的参数为main方法中的args参数数组 CLIInterface类中定义若干的参数处理方法 我们实现几个命令行操作
  • 1)、wcli -accountnew
  • –password -path(选填) –batch(数量,选填)
  • 在程序所在目录下自动创建一个wisdo m_keystore文件夹,并且创建相应的keystore
  • 2)、wcli -addresstopubkeyhash
  • -address 传入参数为地址字符串 返回公钥哈希
  • 3)、wcli -keystoretoaddress
  • path-password
  • 传入keystore路径返回address
  • 4)、wcli -keystoretopubkeyhash
  • -path-password 返回公钥哈希
  • 5)、wcli–connect
  • -ip -port
  • 连接rpc 传入参数为IP地址、端口号 返回值为true/false