• 注册
  • 开发教程 开发教程 关注:22 内容:61

    MOAC区块链 SDK接口

  • 查看作者
  • 打赏作者
  • 拉黑名单
    • 开发教程
    • 大版主
      墨客战士

      1.SDK 简介


      为了方便用户接入,MOAC官方提供nodejs 版本的SDK,官方暂不考虑提供其他版本的SDK。

      Node.JS SDK下载安装:

      npm install moac-api

      Node.JS SDK异常处理说明:

      应用方根据自己业务逻辑对sdk方法进行 try catch 异常处理

      示例:

      1. var VnodeChain = require("moac-api").vnodeChain;


      2. try{

      3. var vc = new VnodeChain("http://47.106.69.61:8989");

      4. var blockNumber = vc.getBlockNumber();

      5. console.log(blockNumber);

      6. }catch (e){

      7. console.log(e);

      8. }



      2.钱包模块


      2.1 注册

      参数:

      pwd:钱包账户密码

      代码:

      1. var account = require("moac-api").account;

      2. var wallet = account.register(pwd);


      返回:

      1. wallet:

      2. { address: '钱包地址....',

      3. privateKey: '私钥....',

      4. keyStore: 'keyStore内容...'

      5. }


      2.2 登录

      参数:

      1. addr:钱包地址

      2. pwd:钱包密码

      3. keyStore:keyStore


      代码:

      1. var account = require("moac-api").account;

      2. var status = account.login(addr, pwd, keyStore);


      返回:

      1. status:0 //登录失败

      2. status:1 //登录成功

      3. status:2 //密码错误


      3.主链模块


      3.1 实例化主链对象

      参数:

      vnodeAddress:主链访问地址 //http://47.106.69.61:8989

      代码:

      1. var VnodeChain = require("moac-api").vnodeChain;

      2. var vc = new VnodeChain(vnodeAddress);


      3.2 获取主链区块高度

      代码:

      var blockNumber = vc.getBlockNumber();

      返回:

      blockNumber:主链区块高度

      3.3 获取主链某一区块信息

      参数:

      hashOrNumber:区块hash或区块高度

      代码:

      var blockInfo = vc.getBlockInfo(hashOrNumber);

      返回:

      blockInfo:某一区块信息

      3.4 获取主链交易详情

      参数:

      hash:交易hash

      代码:

      var tradeInfo = vc.getTransactionByHash(hash);

      返回:

      tradeInfo:交易详情

      3.5 获取合约实例

      参数:

      1. microChainAddress:子链地址

      2. versionKey:版本号(默认0.1版本)


      代码:

      var data = vc.getSubChainBaseInstance(microChainAddress, versionKey);

      返回:

      data:合约实例

      3.6 获取主链账户余额

      参数:

      addr:钱包账户地址

      代码:

      var balance = vc.getBalance(addr);

      返回:

      balance:主链账户余额(单位为moac)

      3.7 获取主链账户ERC代币余额

      参数:

      1. addr:钱包账户地址

      2. contractAddress:合约地址


      代码:

      var balance = vc.getErcBalance(addr, contractAddress);

      返回:

      balance:账户ERC代币余额(erc20最小单位)

      3.8 获取主链合约实例

      参数:

      abiObj:abi对象contractAddress:合约地址

      代码:

      var object = vc.getContractInstance(abiObj, contractAddress);

      返回:

      object:主链合约实例对象

      3.9 获取交易Data

      参数:

      1. method:方法 例 "issue(address,uint256)"

      2. paramTypes:paramTypes 参数类型数组 例['address','uint256']

      3. paramValues:paramValues 参数值数组 例['0x.....',10000](如需要传金额的入参为erc20最小单位)


      代码:

      var data = mc.getData(method,paramTypes,paramValues);

      返回:

      data:data字符串

      3.10 主链加签交易

      参数:

      1. from:交易发送人

      2. to:交易接受者(可以为个人地址,或者主链上的合约地址)

      3. amount:交易金额

      4. method:方法 例 "issue(address,uint256)"

      5. paramTypes:paramTypes 参数类型数组 例['address','uint256']

      6. paramValues:paramValues 参数值数组 例['0x.....',10000](如需要传金额的入参为erc20最小单位)

      7. privateKey:交易发起人私钥字符串

      8. gasPrice:gas费用(默认为0,如返回错误为gas过低,请在返回的gas基础上加上整数gas重新提交)


      代码:

      1. vc.sendRawTransaction(from, to, amount, method, paramTypes, paramValues, privateKey, gasPrice).then((hash) => {

      2. console.log(hash);

      3. });


      返回:

      hash:交易hash

      3.11 主链MOAC转账

      参数:

      1. from:转账人地址

      2. to:收款人地址

      3. amount:交易金额(单位为moac)

      4. privatekey:转账人私钥


      代码:

      1. vc.transferMoac(from, to, amount, privatekey).then((hash) => {

      2. console.log(hash);

      3. });


      返回:

      hash:交易hash

      3.12 主链ERC代币转账

      参数:

      1. from:转账人地址

      2. to:收款人地址

      3. contractAddress:erc代币合约地址

      4. amount:交易金额(单位为moac)

      5. privateKey:转账人私钥


      代码:

      1. vc.transferErc(from, to, contractAddress, amount, privateKey).then((hash) => {

      2. console.log(hash);

      3. });


      返回:

      hash:交易hash

      3.13 调用主链合约

      参数:

      1. method:方法 例 "issue(address,uint256)"

      2. paramTypes:paramTypes 参数类型数组 例['address','uint256']

      3. paramValues:paramValues 参数值数组 例['0x.....',10000](如需要传金额的入参为erc20最小单位)

      4. contractAddress:合约地址


      代码:

      var callRes = vc.callContract(method, paramTypes, paramValues, contractAddress);

      返回:

      callRes:调用合约返回信息

      3.14 ERC20充值

      参数:

      1. addr:钱包地址

      2. privateKey:钱包私钥

      3. microChainAddress:子链地址

      4. method:方法 "issue(address,uint256)"

      5. paramTypes:paramTypes 参数类型数组 ['address','uint256']

      6. paramValues:paramValues 参数值数组 ['0x.....',10000](需要传金额的入参为erc20最小单位)


      代码:

      1. vc.buyErcMintToken(addr, privateKey, microChainAddress, method, paramTypes, paramValues).then((hash) => {

      2. console.log(hash);

      3. });


      返回:

      hash:交易hash

      3.15 MOAC充值

      参数:

      1. addr:钱包地址

      2. privateKey:钱包私钥

      3. microChainAddress:子链地址

      4. method:方法 "issue(address,uint256)"

      5. paramTypes:paramTypes 参数类型数组 ['address','uint256']

      6. paramValues:paramValues 参数值数组 ['0x.....',10000](金额单位为moac)


      代码:

      1. vc.buyMoacMintToken(addr, privateKey, microChainAddress, method, paramTypes, paramValues).then((hash) => {

      2. console.log(hash);

      3. });


      返回:

      hash:交易hash


      4.子链模块

      4.1 实例化子链对象

      参数:

      1. vnodeAddress:主链访问地址 //http://47.106.69.61:8989

      2. monitorAddress:子链访问地址 //http://47.106.89.22:8546

      3. microChainAddress:子链地址

      4. via:子链via


      代码:

      1. var MicroChain = require("moac-api").microChain;

      2. var mc = new MicroChain(vnodeAddress, monitorAddress, microChainAddress, via);


      4.2 获取子链区块高度

      代码:

      1. mc.getBlockNumber().then((blockNumber) => {

      2. console.log(blockNumber);

      3. });


      返回:

      blockNumber:子链区块高度

      4.3获取某一区间内的多个区块信息

      参数:

      1. start:开始高度

      2. end:结束高度


      代码:

      1. mc.getBlocks(start, end).then((blockListInfo) => {

      2. console.log(blockListInfo);

      3. });


      返回:

      blockListInfo:区块信息List

      4.4 获取子链某一区块信息

      参数:

      blockNumber:区块高度

      代码:

      1. mc.getBlock(blockNumber).then((blockInfo) => {

      2. console.log(blockInfo);

      3. });


      返回:

      blockInfo:某一区块信息

      4.5 获取子链交易详情

      参数:

      transactionHash:交易hash

      代码:

      1. mc.getTransactionByHash(transactionHash).then((transactionInfo) => {

      2. console.log(transactionInfo);

      3. });


      返回:

      transactionInfo:交易详情

      4.6 获取子链账户余额

      参数:

      addr:钱包地址

      代码:

      1. mc.getBalance(addr).then((balance) => {

      2. console.log(balance);

      3. });


      返回:

      data:子链账户余额(erc20最小单位)

      4.7 获取子链详细信息

      代码:

      1. mc.getMicroChainInfo().then((microChainInfo) => {

      2. console.log(microChainInfo);

      3. });


      返回:

      microChainInfo:子链信息

      4.8 获取子链DAPP状态

      代码:

      1. mc.getDappState().then((state) => {

      2. console.log(state);

      3. });


      返回:

      1. state:1//正常

      2. state:0//异常


      4.9 获取Nonce

      参数:

      addr:账户钱包地址

      代码:

      1. mc.getNonce(addr).then((nonce) => {

      2. console.log(nonce);

      3. });


      返回:

      nonce:得到的nonce

      4.10 获取子链DAPP合约实例

      参数:

      1. dappContractAddress:dapp合约地址

      2. dappAbi:dapp合约的Abi对象


      代码:

      var dapp = getDappInstance(dappContractAddress, dappAbi);

      返回:

      dapp:dapp实例

      4.11 获取交易Data

      参数:

      1. method:方法 例 "issue(address,uint256)"

      2. paramTypes:paramTypes 参数类型数组 例['address','uint256']

      3. paramValues:paramValues 参数值数组 例['0x.....',10000](如需要传金额的入参为erc20最小单位)


      代码:

      var data = mc.getData(method,paramTypes,paramValues);

      返回:

      data:data字符串

      4.12 子链加签交易

      参数:

      1. from:发送方的钱包地址

      2. microChainAddress:子链地址

      3. amount:交易金额

      4. dappAddress:dapp地址

      5. method:方法 例 "issue(address,uint256)"

      6. paramTypes:paramTypes 参数类型数组 例['address','uint256']

      7. paramValues:paramValues 参数值数组 例['0x.....',10000](如需要传金额的入参为erc20最小单位)

      8. privateKey:发送方钱包私钥


      代码:

      1. mc.sendRawTransaction(from, microChainAddress, amount, dappAddress, method, paramTypes, paramValues, privateKey).then((hash) => {

      2. console.log(hash);

      3. });


      返回:

      hash:交易hash

      4.13 子链转账

      参数:

      1. from:发送方的钱包地址

      2. to:接收方的钱包地址

      3. amount:交易金额(erc20最小单位)

      4. privateKey:钱包私钥


      代码:

      1. mc.transferCoin(from, to, amount, privateKey).then((hash) => {

      2. console.log(hash);

      3. });


      返回:

      hash:交易hash

      4.14 调用子链合约

      参数:

      1. contractAddress:dapp合约地址

      2. param:例如合约中存在一个无参的方法getDechatInfo,则传入["getDechatInfo"];

      3. 存在一个有参的方法getTopicList(uint pageNum, uint pageSize), 则传入["getTopicList", 0, 20]


      代码:

      1. mc.callContract(contractAddress, param).then((data) => {

      2. console.log(data);

      3. });


      返回:

      data:调用合约返回信息

      4.15 提币(MOAC)

      参数:

      1. addr:钱包地址

      2. amount:金额(单位为moac)

      3. privateKey:钱包私钥


      代码:

      1. mc.redeemMoacMintToken(addr, amount, privateKey).then((hash) => {

      2. console.log(hash);

      3. });


      返回:

      hash:交易hash

      4.16 提币(ERC20)

      参数:

      1. addr:钱包地址

      2. amount:金额(erc20最小单位)

      3. privateKey:钱包私钥


      代码:

      1. mc.redeemErcMintToken(addr, amount,privateKey).then((hash) => {

      2. console.log(hash);

      3. });


      返回:

      hash:交易hash

      请登录之后再进行评论

      登录