Giter Site home page Giter Site logo

java-sdk's Introduction

APPSDK方法说明

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)
 返回类型: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 导入keystore

WalletUtility. importKeystore()
 参数:
 1)、keystore(String)
 2)、路径(String)选填
 返回类型:String
 返回值:Address

1.10 修改KeyStore密码方法

 WalletUtility.modifyPassword()
 参数:
 1)、keystore(String)
 2)、旧密码(String)
 3)、新密码(String)
 返回类型:json
 返回值:Keystore

1.11 SHA3-256哈希方法

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

1.12 Ripemd-160哈希方法

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

1.13 base58编码方法

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

1.14 创建原生转账事务

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

1.15 签名事务

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

1.16 发起转账申请

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

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

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

1.18 提取收益(孵化器)

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

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

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

1.20 提取本金(孵化器)

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

1.21 获取事务对象

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

节点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
返回:json格式,参数同上
data信息如下:
dueinAmount:可提取利息(不计算是否到期)
capitalAmount:当前利息总余额

1.34 本地参数配置

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

1.35 注意点

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

1.36 命令行实现

假设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

java-sdk's People

Contributors

wisedomadmin avatar zhangtong599 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.