SWTC-API

0 后端支持

swtc-proxy 文档
jingtum-api 官方文档
@swtc/proxy 说明
对 jingtum-api 作出包装, 消除不安全操作 并且提供类似@swtc/lib 的接口支持 jingtum-api 缺失的操作
强制本地签名
合约测试只能在特定节点运行, solidity 支持到 0.5.4, 需要安装 swtc-tum3 / tum3-eth-abi, 没有达到可用阶段
同时支持jingtum-apiswtc-proxy
多重签名测试链上没有支持
目前文档输出为 swtc-proxy, 老版本jingtum-api输出为例
操作以swtc-proxy支持为主, 部分功能在jingtum-api不支持

后端选择/准备

swtc-proxy, 推荐
公链 http://swtcproxy.swtclib.ca:5080
测试 http://swtcproxy.swtclib.ca:5081
jingtum-api, 本身允许不安全操作,注意
公链 https://api.jingtum.com
测试链 https://tapi.jingtum.com

1 安装

  1. 安装库
npm install --save @swtc/api

2 项目说明

swtc-api 库操作jingtum-api提供的 restapi, 但是实现了本地签名, 避免密钥传输到网络上
swtc-api 库操作swtc-proxy提供的 restapi
swtc-api 提供比jingtum-apiswtc-proxy 更多的操作, 有完整的接口

3 创建钱包

首先引入 swtc-api 库的 Wallet 对象,然后使用以下两种方法创建钱包
方法 1: Wallet.generate()
方法 2: Wallet.fromSecret(secret);
参数:
参数类型说明
secretString井通钱包私钥
//创建Wallet对象
var japi = require("@swtc/api")
var Wallet = japi.Remote.Wallet
//方式一
var w1 = Wallet.generate()

console.log(w1)
//方式二
var w2 = Wallet.fromSecret("ssiUDhUpUZ5JDPWZ9Twt27Ckq6k4C")
console.log(w2)
返回的结果信息:
参数类型说明
secretString井通钱包私钥
addressString井通钱包地址
输出
> Wallet.generate()
{ secret: 'ssiUDhUpUZ5JDPWZ9Twt27Ckq6k4C',
  address: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz' }

4 REMOTE 类

Remote 是跟 jingtum-api 的 restapi 交互的类,它包装所有 jingtum-api 提供的方法, 还提供额外的类似@swtc/lib 的接口
  • Remote(options)
  • getAccountSequence()
  • getServerInfo() proxy
  • getAccountInfo(address) proxy
  • getAccountSignerList(address) proxy
  • getAccountRelations(address)
  • getAccountBalances(address)
  • getAccountPayment(address, hash)
  • getAccountPayments(address)
  • getAccountOrder(address, hash)
  • getAccountOrders(address)
  • getAccountTransaction(address, hash)
  • getAccountTransactions(address)
  • getTransaction(hash)
  • getLedger()
  • getLedger(hash_or_index)
  • getOrderBooks(base, counter)
  • getOrderBooksBids(base, counter)
  • getOrderBooksAsks(base, counter)
  • buildPaymentTx(options)
  • buildRelationTx(options)
  • buildAccountSetTx(options)
  • buildOfferCreateTx(options)
  • buildOfferCancelTx(options)
  • buildContractDeployTx(options)
  • buildContractCallTx(options)
swtc-api REMOTE 独享
  • buildContractInitTx(options)
  • buildContractInvokeTx(options)
  • makeCurrency()
  • makeAmount()
  • buildSignFirstTx()
  • buildSignOtherTx()
  • buildMultisignedTx()
  • buildSignerListTx(options)
  • tx.signPromise()
  • tx.submitPromise()
  • tx.multiSigning()
  • tx.multiSigned()

4.1 创建 Remote 对象

方法:new Remote(options);
参数:
参数类型说明
serverString井通 rest api 服务地址
issuerString默认银关
solidityBoolean启用 solidity 支持
例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote_proxy = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })

4.2 获得账号余额

方法:remote.getAccountBalances(address);
参数:
参数类型说明
addressString井通钱包地址
可选参数:
参数类型说明
currencyString指定返回对应货币的余额
issuerString指定返回对应银关发行的货币
返回: Promise - json
例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
remote
  .getAccountBalances("jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz")
  .then(console.log)
  .catch(console.error)
返回结果
> {
  balances: [
    { value: 25.98, currency: 'SWT', issuer: '', freezed: 25 },
    {
      value: '87',
      currency: 'JSLASH',
      issuer: 'jGa9J9TkqtBcUoHe2zqhVFFbgUVED6o9or',
      freezed: 0
    }
  ],
  sequence: 3
}
返回结果说明
参数类型说明
balancesArray余额数组
   valueString余额
   currencyString货币名称,三个字母或 20 字节的货币
   issuerString货币发行方
   freezedString冻结的金额
sequenceInteger当前交易序列号(用于本地签名)

4.3 获得账号支付信息

方法:remote.getAccountPayment(address, hash);
参数:
参数类型说明
addressString支付用户钱包地址
hashString支付交易的 hash
返回: Promise - json
例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
remote
  .getAccountPayment(
    "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
    "84CCE378A2882D417AC311CA027FC1EAD21E5486B7C7E6FBFE71187FF28E0F65"
  )
  .then(console.log)
  .catch(console.error)
返回结果
> {
  date: 1576697180,
  hash: '84CCE378A2882D417AC311CA027FC1EAD21E5486B7C7E6FBFE71187FF28E0F65',
  type: 'sent',
  fee: '0.01',
  result: 'tesSUCCESS',
  memos: [ { MemoData: 'test payment' } ],
  counterparty: 'j3vyFAMQW2Ls48eoFCTsMXFq2KNWVUskSx',
  amount: {
    currency: 'JSLASH',
    issuer: 'jGa9J9TkqtBcUoHe2zqhVFFbgUVED6o9or',
    value: '1'
  },
  effects: [],
  balances: { JSLASH: 85, SWT: 30.96 },
  balancesPrev: { JSLASH: 86, SWT: 30.97 }
}
返回结果说明
参数类型说明
dateInteger支付时间,UNIXTIME 时间
hashString支付 hash
typeString支付类型,sent 或 received
feeString支付费用
resultString支付的服务器结果
memosArray支付的备注,String 数组
counterpartyString交易对家
amountObject交易金额
effectsArray支付的效果

4.4 获得账号支付记录

方法:remote.getAccountPayments(address);
参数:
参数类型说明
addressString支付用户钱包地址
返回: Promise - json
例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
remote
  .getAccountPayments("jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz")
  .then(console.log)
  .catch(console.error)
返回结果
> {
  account: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
  ledger_index_max: 14685226,
  ledger_index_min: 14335743,
  payments: [
    {
      date: 1576697180,
      hash: '84CCE378A2882D417AC311CA027FC1EAD21E5486B7C7E6FBFE71187FF28E0F65',
      type: 'sent',
      fee: '0.01',
      result: 'tesSUCCESS',
      memos: [Array],
      counterparty: 'j3vyFAMQW2Ls48eoFCTsMXFq2KNWVUskSx',
      amount: [Object],
      effects: [],
      balances: [Object],
      balancesPrev: [Object]
    },
    {
      date: 1576696930,
      hash: 'F42226C6A483D14ED14D34945E366917EE508CC04BE00CFF50E200440E6B0AD9',
      type: 'sent',
      fee: '0.01',
      result: 'tesSUCCESS',
      memos: [],
      counterparty: 'j3vyFAMQW2Ls48eoFCTsMXFq2KNWVUskSx',
      amount: [Object],
      effects: [],
      balances: [Object],
      balancesPrev: [Object]
    }
  ]
}
返回结果说明
参数类型说明
paymentsArray支付历史, 同交易记录中的信息

4.5 获得账号挂单信息

方法:remote.getAccountOrder(address, hash);
参数:
参数类型说明
addressString挂单方钱包地址
hashString挂单交易的 hash
返回: Promise - json
例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
remote
  .getAccountOrder(
    "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
    "8D6DC86FF64DFE83AFB9B5B0E43B7BCA05B9FAB88C5F73D540814FE1DE195CAA"
  )
  .then(console.log)
  .catch(console.error)
返回结果
> {
  date: 1576697880,
  hash: '8D6DC86FF64DFE83AFB9B5B0E43B7BCA05B9FAB88C5F73D540814FE1DE195CAA',
  type: 'offernew',
  fee: '0.01',
  result: 'tesSUCCESS',
  memos: [ { MemoData: 'memo offer create' } ],
  offertype: 'sell',
  gets: {
    currency: 'JSLASH',
    issuer: 'jGa9J9TkqtBcUoHe2zqhVFFbgUVED6o9or',
    value: '1'
  },
  pays: { value: '1', currency: 'SWT', issuer: '' },
  seq: 5,
  effects: [
    {
      effect: 'offer_created',
      gets: [Object],
      pays: [Object],
      type: 'sell',
      seq: 5,
      price: '1'
    }
  ],
  balances: { SWT: 30.95 },
  balancesPrev: { SWT: 30.96 }
}

4.6 获得账号挂单列表

方法:remote.getAccountOrders(address);
参数:
参数类型说明
addressString挂单方钱包地址
返回: Promise - json
例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
remote
  .getAccountOrders("jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz")
  .then(console.log)
  .catch(console.error)
返回结果
> {
  account: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
  ledger_hash: '8824A222275B2E0545CDFEBBC95821F9E25C3A32320C07B1651F2C7BA0727DFD',
  ledger_index: 14685287,
  offers: [
    {
      flags: 131072,
      seq: 5,
      taker_gets: [Object],
      taker_pays: '1000000'
    }
  ],
  validated: true
}

4.7 获得账号事务信息

方法:remote.getAccountTransaction(address, hash);
参数:
参数类型说明
addressString钱包地址
hashString交易的 hash
返回: Promise - json
例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
remote
  .getAccountTransaction(
    "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
    "F42226C6A483D14ED14D34945E366917EE508CC04BE00CFF50E200440E6B0AD9"
  )
  .then(console.log)
  .catch(console.error)
返回结果
> {
  date: 1576696930,
  hash: 'F42226C6A483D14ED14D34945E366917EE508CC04BE00CFF50E200440E6B0AD9',
  type: 'sent',
  fee: '0.01',
  result: 'tesSUCCESS',
  memos: [],
  counterparty: 'j3vyFAMQW2Ls48eoFCTsMXFq2KNWVUskSx',
  amount: {
    currency: 'JSLASH',
    issuer: 'jGa9J9TkqtBcUoHe2zqhVFFbgUVED6o9or',
    value: '1'
  },
  effects: [],
  balances: { JSLASH: 86, SWT: 30.97 },
  balancesPrev: { JSLASH: 87, SWT: 30.98 }
}

4.8 获得账号交易记录

方法:remote.getAccountTransactions(address);
参数:
参数类型说明
addressString钱包地址
返回: Promise - json
例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
remote
  .getAccountTransactions("jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz", { limit: 4 })
  .then(console.log)
  .catch(console.error)
返回结果
> {
  account: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
  ledger_index_max: 14685341,
  ledger_index_min: 14335272,
  limit: 4,
  marker: { ledger: 14548229, seq: 2 },
  transactions: [
    {
      date: 1576697880,
      hash: '8D6DC86FF64DFE83AFB9B5B0E43B7BCA05B9FAB88C5F73D540814FE1DE195CAA',
      type: 'offernew',
      fee: '0.01',
      result: 'tesSUCCESS',
      memos: [Array],
      offertype: 'sell',
      gets: [Object],
      pays: [Object],
      seq: 5,
      effects: [Array],
      balances: [Object],
      balancesPrev: [Object]
    },
    {
      date: 1576697180,
      hash: '84CCE378A2882D417AC311CA027FC1EAD21E5486B7C7E6FBFE71187FF28E0F65',
      type: 'sent',
      fee: '0.01',
      result: 'tesSUCCESS',
      memos: [Array],
      counterparty: 'j3vyFAMQW2Ls48eoFCTsMXFq2KNWVUskSx',
      amount: [Object],
      effects: [],
      balances: [Object],
      balancesPrev: [Object]
    },
    {
      date: 1576696930,
      hash: 'F42226C6A483D14ED14D34945E366917EE508CC04BE00CFF50E200440E6B0AD9',
      type: 'sent',
      fee: '0.01',
      result: 'tesSUCCESS',
      memos: [],
      counterparty: 'j3vyFAMQW2Ls48eoFCTsMXFq2KNWVUskSx',
      amount: [Object],
      effects: [],
      balances: [Object],
      balancesPrev: [Object]
    },
    {
      date: 1576696810,
      hash: 'FA45FD2FD57BF051EF19C967DFC17CD2721E29BF432B0E10CBE0AF0510A9F032',
      type: 'received',
      fee: '0.01',
      result: 'tesSUCCESS',
      memos: [],
      counterparty: 'j3vyFAMQW2Ls48eoFCTsMXFq2KNWVUskSx',
      amount: [Object],
      effects: [],
      balances: [Object],
      balancesPrev: [Object]
    }
  ]
}
返回结果说明

4.9 获得帐号交易序列号

方法:remote.getAccountSequence(address)
参数:
参数类型说明
addressString钱包地址
返回: Promise - json
例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
remote
  .getAccountSequence("jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz")
  .then(console.log)
  .catch(console.error)
返回结果
> { sequence: 11 }

4.10 获得货币对的挂单列表 - 买/卖

方法:remote.getOrderBooks(base, counter);
方法:remote.getOrderBooks(counter, base);
参数:
参数类型说明
baseString基准货币(currency+counterparty),兼容 swt+counterparty
counterString目标货币(currency+counterparty),兼容 swt+counterparty
可选参数:
参数类型说明
markerobject位置标记
返回: Promise - json
例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
remote
  .getOrderBooks("SWT", "CNY+" + remote._issuer)
  .then(console.log)
  .catch(console.error)
返回结果
> {
  ledger_current_index: 14685409,
  offers: [
    {
      Account: 'jPZuCxWTL28vnfb86vHrLvgTnwiBEgaVrE',
      BookDirectory: '51603377F758E3C8FA007C77312DDA06A737A1395CD5FC435D0972DE6F6C8572',
      BookNode: '0000000000000000',
      Flags: 0,
      LedgerEntryType: 'Offer',
      OwnerNode: '0000000000000001',
      PreviousTxnID: '7C79CF7AE14DA02488A925488BA94F095F8E9C7DC9386FB93D4837DAA5A6CACB',
      PreviousTxnLgrSeq: 14685379,
      Sequence: 1452,
      TakerGets: [Object],
      TakerPays: '740000000000',
      index: '428D120A4DFB65A9D23AD2DD0EF712FF24C67BEC885C4B68D324EE6435FCA9C0',
      owner_funds: '23868.88806657596',
      quality: '265957446.8085106'
    },
    {
      Account: 'jJPQhnoGdm9bD1Ngcgk7k2kRUsJypGoUEw',
      BookDirectory: '51603377F758E3C8FA007C77312DDA06A737A1395CD5FC435D0972DE6F6C8572',
      BookNode: '0000000000000000',
      FeeCurrency: 'SWT',
      Flags: 0,
      LedgerEntryType: 'Offer',
      OfferFeeRateDen: '00000000000003E8',
      OfferFeeRateNum: '0000000000000002',
      OwnerNode: '0000000000000000',
      Platform: 'jDXCeSHSpZ9LiX6ihckWaYDeDt5hFrdTto',
      PreviousTxnID: '33358081F0331D1440C54DD166BCD86B5816C16E5F088DEEA05F8FB72ED2C1CF',
      PreviousTxnLgrSeq: 14684636,
      Sequence: 3080,
      TakerGets: [Object],
      TakerPays: '1757250000000',
      index: '9EB2FD56627E76CCD2DBD2921F2B8C7362BB6B675210F23F971CB3512820F762',
      owner_funds: '6607.26151815719',
      quality: '265957446.8085106'
    },
    {
      Account: 'jw2jAYv2VifjYVCCjv5qDah9hknMKMtg9e',
      BookDirectory: '51603377F758E3C8FA007C77312DDA06A737A1395CD5FC435D0A01F4F7D16890',
      BookNode: '0000000000000000',
      FeeCurrency: 'SWT',
      Flags: 0,
      LedgerEntryType: 'Offer',
      OfferFeeRateDen: '00000000000F4240',
      OfferFeeRateNum: '00000000000003E8',
      OwnerNode: '0000000000000000',
      Platform: 'jGrVFKACsF7W6PhMHn5upPN7fPUyG8NVKx',
      PreviousTxnID: 'FA7FFA476ED893218256C5735D590FFCEC9BE67849177131123100998EF16103',
      PreviousTxnLgrSeq: 14678331,
      Sequence: 165,
      TakerGets: [Object],
      TakerPays: '40515000000',
      index: 'DFFF4E69DB07355467D3510F82C37AADC0CDA6F658531F8504B29887246C33EB',
      owner_funds: '182.8264976823619',
      quality: '281690140.8450704'
    }
  ],
  validated: false
}
返回结果说明

4.11 获得某一事务信息

方法:remote.getTransaction(hash);
参数:
参数类型说明
hashString交易的 hash
返回: Promise - json
例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
remote
  .getTransaction(
    "FA45FD2FD57BF051EF19C967DFC17CD2721E29BF432B0E10CBE0AF0510A9F032"
  )
  .then(console.log)
  .catch(console.error)
返回结果
> {
  Account: 'j3vyFAMQW2Ls48eoFCTsMXFq2KNWVUskSx',
  Amount: '5000000',
  Destination: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
  Fee: '10000',
  Flags: 0,
  Sequence: 197,
  SigningPubKey: '0302357748343E2F41D65692B9B2A6B52157D9ECF9D8555C098A8A407C06093350',
  TransactionType: 'Payment',
  TxnSignature: '304402207B4F7647A4CFBAE591C4D2426494A705CCB565DB6562ADFE6DAA1A677AF3447C02206267E5260311FC3B08C5BB223282351FBE6BC436B72E52FD498D73F802B55043',
  date: 630012010,
  hash: 'FA45FD2FD57BF051EF19C967DFC17CD2721E29BF432B0E10CBE0AF0510A9F032',
  inLedger: 14685168,
  ledger_index: 14685168,
  meta: {
    AffectedNodes: [ [Object], [Object], [Object] ],
    TransactionIndex: 4,
    TransactionResult: 'tesSUCCESS'
  },
  validated: true
}
返回结果说明

4.12 获得最新帐本

方法:remote.getLedger();
参数: 无
返回: Promise - json
例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
remote.getLedger().then(console.log).catch(console.error)
返回结果
> {
  ledger_hash: 'EBD02238BB712D969CAEF588834DEF15E95FE2E41355A119FF888FDB1F3847C0',
  ledger_index: 14685450,
  ledger_time: 630014830
}
返回结果说明
参数类型说明
ledger_hashString账本 hash
ledger_indexInteger账本号/区块高度

4.13 获得某一帐本及其交易信息

方法:remote.getLedger(hash_or_index);
参数:
参数类型说明
hash_or_indexstring账本号/区块高度 或者 哈希
返回: Promise - json
例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
remote.getLedger(14685450).then(console.log).catch(console.error)
remote
  .getLedger("EBD02238BB712D969CAEF588834DEF15E95FE2E41355A119FF888FDB1F3847C0")
  .then(console.log)
  .catch(console.error)
返回结果
> {
  accepted: true,
  account_hash: 'EB7D100F0B603F388F231EF3AD89D0A33027F022CD907F35E5A73B608D86AE35',
  close_time: 630014830,
  close_time_human: '2019-Dec-18 20:07:10',
  close_time_resolution: 10,
  closed: true,
  hash: 'EBD02238BB712D969CAEF588834DEF15E95FE2E41355A119FF888FDB1F3847C0',
  ledger_hash: 'EBD02238BB712D969CAEF588834DEF15E95FE2E41355A119FF888FDB1F3847C0',
  ledger_index: '14685450',
  parent_hash: '09D980AC4F3FF5ED6F9895D143EB52EA06662EDDA770B2EB4F86C0672452C92F',
  seqNum: '14685450',
  totalCoins: '599999999999460713',
  total_coins: '599999999999460713',
  transaction_hash: '7FA3C98DBAD910FB394664C8BF0A80615473A4BA04BA018C4B7C1E8C86E447D5',
  transactions: [
    '03C0156CD184DA77D3C7B79E511CDE4BDE4D066C909FFA830EB69829D514FB1B',
    '10D169C3EC7575562A5C9ACF5373348946B377FD1584451BE8A228FA3C8048EA',
    '27E362082AFC877F3169C7822B2C330CF338F9C3EB2E6AB5A08D9F45A5166A25',
    '7FB681496D49ADFBF29A04D6C1EF17649B41C3D7FBB9AC037FA5A947162F77A5',
    'A0E2C660C8035175E2D0F12AE510B20DFE6C74A52E46262AADC72CAE70AD7357',
    'F8E74EC60D1ABA07B8B3457C1C597EF5749ED0AE6CE9B538A6F491AA0691AC12'
  ]
}
返回结果说明
参数类型说明
acceptedBoolean区块是否已经产生
account_hashString状态 hash 树根
close_timeInteger关闭时间
close_time_humanString关闭时间
close_time_resolutionInteger关闭周期
closedBoolean账本是否已经关闭
hashString账本 hash
ledger_hashString账本 hash
ledger_indexString账本高度/区块高度
parent_hashString上一区块 hash 值
seqNumString账本高度/区块高度
totalCoinsStringswt 总量
total_coinsStringswt 总量
transaction_hashString交易 hash 树根
transactionsArray该账本里的交易列表

4.14 获得挂单佣金信息

方法:remote.getAccountBrokerage(address);
参数:
参数类型说明
addressString钱包地址
返回: Promise - json
例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
remote
  .getAccountBrokerage("jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz")
  .then(console.log)
  .catch(console.error)
返回结果
> {
  account: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
  brokerages: [
    {
      FeeCurrency: 'JSLASH',
      FeeCurrencyIssuer: 'jGa9J9TkqtBcUoHe2zqhVFFbgUVED6o9or',
      OfferFeeRateDen: '1000',
      OfferFeeRateNum: '1',
      Platform: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
      fee_account: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz'
    }
  ],
  ledger_hash: 'EA0F6CA08241D01AE6CFCD8376AB9ED3747DCF8366FED35127F79CA20EC581FF',
  ledger_index: 14685952,
  validated: true
}

4.15 支付

首先通过 buildPaymentTx 方法返回一个 Transaction 对象,然后通过 submitPromise()方法提交支付信息。
4.15.1 创建支付对象
方法: remote.buildPaymentTx({});
参数:
参数类型说明
accountString发起账号
toString目标账号
amountObject支付金额
返回:Transaction 对象
4.15.2 提交支付
方法:tx.submitPromise(secret, memo)
参数:
参数类型说明
secretString井通钱包私钥
memoString备注信息
返回: Promise
支付完整例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
remote
  .buildPaymentTx({
    account: "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
    to: "j3vyFAMQW2Ls48eoFCTsMXFq2KNWVUskSx",
    amount: remote.makeAmount(1, "JSLASH")
  })
  .submitPromise("ssiUDhUpUZ5JDPWZ9Twt27Ckq6k4C", "payment memo")
  .then(console.log)
  .catch(console.error)
返回结果
> {
  engine_result: 'tesSUCCESS',
  engine_result_code: 0,
  engine_result_message: 'The transaction was applied. Only final in a validated ledger.',
  tx_blob: '1200002200000000240000000461D4838D7EA4C680000000000000000000004A534C4153480000000000A582E432BFC48EEDEF852C814EC57F3CD2D415966840000000000027107321029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E1574463044022068680CA0919F8908656DB8761CA7FBE1A9AC02216BDEEEB6A0D94A5F744CF5340220249698FA0158C24833068CD373B97B67244BD0F98E141CB694AE4B8185C44F7281141359AA928F4D98FDB3D93E8B690C80D37DED11C3831456FE5CE2D298C9493022FB43596A1B23AE3E3728F9EA7D0C74657374207061796D656E74E1F1',
  tx_json: {
    Account: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
    Amount: {
      currency: 'JSLASH',
      issuer: 'jGa9J9TkqtBcUoHe2zqhVFFbgUVED6o9or',
      value: '1'
    },
    Destination: 'j3vyFAMQW2Ls48eoFCTsMXFq2KNWVUskSx',
    Fee: '10000',
    Flags: 0,
    Memos: [ [Object] ],
    Sequence: 4,
    SigningPubKey: '029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E15',
    TransactionType: 'Payment',
    TxnSignature: '3044022068680CA0919F8908656DB8761CA7FBE1A9AC02216BDEEEB6A0D94A5F744CF5340220249698FA0158C24833068CD373B97B67244BD0F98E141CB694AE4B8185C44F72',
    hash: '84CCE378A2882D417AC311CA027FC1EAD21E5486B7C7E6FBFE71187FF28E0F65'
  }
}
返回结果说明
参数类型说明
engine_resultString请求结果
engine_result_codeArray请求结果编码
engine_result_messageString请求结果 message 信息
tx_blobString16 进制签名后的交易
tx_jsonObject交易内容
   AccountString账号地址
   AmountObject交易金额
   DestinationString对家
   FeeString交易费
   FlagsInteger交易标记
   MemosArray备注
   SequenceInteger单子序列号
   SigningPubKeyObject签名公钥
   TransactionTypeString交易类型
   TxnSignatureString交易签名
   hashString交易 hash

4.16 设置关系

首先通过 buildRelationTx 方法返回一个 Transaction 对象,然后通过 submitPromise()方法提交支付信息。目前支持的关系类型:信任(trust)、授权(authorize)、冻结 (freeze)
4.16.1 创建关系对象
方法:remote.buildRelationTx({});
参数
参数类型说明
typeString关系种类
accountString设置关系的源账号
targetString目标账号,授权和冻结才有
limitObject关系金额
valueString数量
currencyString货币种类,三到六个字母或 20 字节的自定义货币
issuerString货币发行方
返回:Transaction 对象
4.16.2 关系设置
方法:tx.submitPromise(secret, memo)
参数:
参数类型说明
secretString井通钱包私钥
memoString备注信息
返回: Promise
设置关系完整例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
let options = {
  account: "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  target: "j3vyFAMQW2Ls48eoFCTsMXFq2KNWVUskSx",
  limit: remote.makeAmount(1, "JSLASH"),
  type: "authorize"
}
let tx = remote.buildRelationTx(options)
tx.submitPromise("ssiUDhUpUZ5JDPWZ9Twt27Ckq6k4C", "授权")
  .then(console.log)
  .catch(console.error)
返回结果
> {
  engine_result: 'tesSUCCESS',
  engine_result_code: 0,
  engine_result_message: 'The transaction was applied. Only final in a validated ledger.',
  tx_blob: '1200152200000000240000000620230000000163D4838D7EA4C680000000000000000000004A534C4153480000000000A582E432BFC48EEDEF852C814EC57F3CD2D415966840000000000027107321029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E157446304402204C540968F04F958AF4FAE64EEB54CACB4BAFFFD599EBEE11BED02CB5E94A0BEE022005DA39B36B03AE999C91A36121BC5EBAFD0B675739A39F254D2E1FC08AC6175281141359AA928F4D98FDB3D93E8B690C80D37DED11C3871456FE5CE2D298C9493022FB43596A1B23AE3E3728F9EA7D06E68E88E69D83E1F1',
  tx_json: {
    Account: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
    Fee: '10000',
    Flags: 0,
    LimitAmount: {
      currency: 'JSLASH',
      issuer: 'jGa9J9TkqtBcUoHe2zqhVFFbgUVED6o9or',
      value: '1'
    },
    Memos: [ [Object] ],
    RelationType: 1,
    Sequence: 6,
    SigningPubKey: '029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E15',
    Target: 'j3vyFAMQW2Ls48eoFCTsMXFq2KNWVUskSx',
    TransactionType: 'RelationSet',
    TxnSignature: '304402204C540968F04F958AF4FAE64EEB54CACB4BAFFFD599EBEE11BED02CB5E94A0BEE022005DA39B36B03AE999C91A36121BC5EBAFD0B675739A39F254D2E1FC08AC61752',
    hash: 'D3AB416FC4C74C50FC2268C552E4B05EE1516906F92EBD9F98E085CD21619CCE'
  }
}
返回结果说明
参数类型说明
engine_resultString请求结果
engine_result_codeArray请求结果编码
engine_result_messageString请求结果 message 信息
tx_blobString16 进制签名后的交易
tx_jsonObject交易内容
  AccountString账号地址
  FeeString交易费
  FlagsInteger交易标记
  LimitAmountObject关系的额度
    currencyString货币
    issuerString货币发行方
    valueString额度
  RelationTypeInteger关系类型:0 信任;1 授权;3 冻结/解冻;
  SequenceInteger单子序列号
  SigningPubKeyObject签名公钥
  TargetString关系对家
  TimestampInteger时间戳
  TransactionTypeString交易类型:TrustSet 信任;RelationDel 解冻;RelationSet 授权/冻结
  TxnSignatureString交易签名
  hashString交易 hash

4.17 设置账号属性 ------待完善

首先通过 buildAccountSetTx 方法返回一个 Transaction 对象,然后通过 submitPromise()方法设置账号属性。目前支持的三类:propertydelegatesigner。property 用于设置账号一般属性;delegate 用于某账号设置委托帐户;signer 用于设置签名。
4.17.1 创建属性对象
方法:remote.buildAccountSetTx({});
参数:
参数类型说明
typeString属性种类
accountString设置属性的源账号
set_flagString属性编号
返回:Transaction 对象
4.17.2 属性设置
方法:tx.submitPromise(secret, memo)
参数:
参数类型说明
secretString井通钱包私钥
memoString备注信息
返回: Promise
设置属性完整例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
let options = {
  account: "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  type: "property"
}
var tx = remote.buildAccountSetTx(options)
tx.submitPromise("ssiUDhUpUZ5JDPWZ9Twt27Ckq6k4C")
  .then(console.log)
  .catch(console.error)
返回结果
> {
  engine_result: 'tesSUCCESS',
  engine_result_code: 0,
  engine_result_message: 'The transaction was applied. Only final in a validated ledger.',
  tx_blob: '120003220000000024000000076840000000000027107321029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E15744630440220524FB0AD378CEB7BEA8BCC99A8011B0D9A57DFDFC54252C8A2961C850E4B30EA022028F3A405AD690394A4BC28A7EBC0A81726460515A3450989BCCAE154C76B223581141359AA928F4D98FDB3D93E8B690C80D37DED11C3',
  tx_json: {
    Account: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
    Fee: '10000',
    Flags: 0,
    Sequence: 7,
    SigningPubKey: '029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E15',
    TransactionType: 'AccountSet',
    TxnSignature: '30440220524FB0AD378CEB7BEA8BCC99A8011B0D9A57DFDFC54252C8A2961C850E4B30EA022028F3A405AD690394A4BC28A7EBC0A81726460515A3450989BCCAE154C76B2235',
    hash: 'C56D6AAC50DD268CF392B27ABB4A9FDBD29EE3A18B9FE21A42BC0674758EB373'
  }
}

4.18 挂单

首先通过 buildOfferCreateTx 方法返回一个 Transaction 对象,然后通过通过.submitPromise()方法提交挂单。
4.18.1 创建挂单对象
方法:remote.buildOfferCreateTx({});
参数:
参数类型说明
typeString挂单类型,固定的两个值:Buy、Sell
accountString挂单方账号
taker_getsObject对方得到的,即挂单方支付的
   valueString数量
   currencyString货币种类
   issuerString货币发行方
taker_paysObject对方支付的,即挂单方获得的
   valueString数量
   currencyString货币种类
   issuerString货币发行方
返回:Transaction 对象
4.18.2 提交挂单
方法:tx.submitPromise(secret, memo)
参数:
参数类型说明
secretString井通钱包私钥
memoString备注信息
返回: Promise
设置属性完整例子
挂单完整例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
let options = {
  type: "Sell",
  account: "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  taker_pays: remote.makeAmount(1),
  taker_gets: remote.makeAmount(1, "JSLASH")
}
let tx = remote.buildOfferCreateTx(options)
tx.submitPromise("ssiUDhUpUZ5JDPWZ9Twt27Ckq6k4C")
  .then(console.log)
  .catch(console.error)
返回结果:
> {
  engine_result: 'tesSUCCESS',
  engine_result_code: 0,
  engine_result_message: 'The transaction was applied. Only final in a validated ledger.',
  tx_blob: '120007220008000024000000056440000000000F424065D4838D7EA4C680000000000000000000004A534C4153480000000000A582E432BFC48EEDEF852C814EC57F3CD2D415966840000000000027107321029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E1574463044022047DAE10BD5BFD70601A11EF0F9873DF1145C606F676F8C09D2DFC444A5CE95220220777D3D0629BD48532A70BF46FA742B8DDE5B6DABE4F6F0D9E720E13DBB95305581141359AA928F4D98FDB3D93E8B690C80D37DED11C3F9EA7D116D656D6F206F6666657220637265617465E1F1',
  tx_json: {
    Account: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
    Fee: '10000',
    Flags: 524288,
    Memos: [ [Object] ],
    Sequence: 5,
    SigningPubKey: '029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E15',
    TakerGets: {
      currency: 'JSLASH',
      issuer: 'jGa9J9TkqtBcUoHe2zqhVFFbgUVED6o9or',
      value: '1'
    },
    TakerPays: '1000000',
    TransactionType: 'OfferCreate',
    TxnSignature: '3044022047DAE10BD5BFD70601A11EF0F9873DF1145C606F676F8C09D2DFC444A5CE95220220777D3D0629BD48532A70BF46FA742B8DDE5B6DABE4F6F0D9E720E13DBB953055',
    hash: '8D6DC86FF64DFE83AFB9B5B0E43B7BCA05B9FAB88C5F73D540814FE1DE195CAA'
  }
}
返回结果说明:
参数类型说明
engine_resultString请求结果
engine_result_codeArray请求结果编码
engine_result_messageString请求结果 message 信息
tx_blobString16 进制签名后的交易
tx_jsonObject交易内容
   AccountString账号地址
   FeeString交易费
   FlagsInteger交易标记
   SequenceInteger单子序列号
   SigningPubKeyString签名公钥
   TakerGetsString/Object对家得到的
      currencyString货币
      issuerString货币发行方
      valueString额度
   TakerPaysString/Object对家支付的;
   TimestampInteger时间戳
   TransactionTypeString交易类型:TrustSet 信任;RelationDel 解冻;RelationSet 授权/冻结
   TxnSignatureString交易签名
   hashString交易 hash

4.19 取消挂单

首先通过 buildOfferCancelTx 方法返回一个 Transaction 对象,然后通过 submitPromise()方法取消挂单。
4.19.1 创建取消挂单对象
方法:remote.buildOfferCancelTx({});
参数:

| 参数 | 类型 | 说明 | | -------- | ------- | -----------: | ---------- | | account | String | | 挂单方账号 | | sequence | Integer | 取消的单子号 |

返回:Transaction 对象
4.19.2 取消挂单
方法:tx.submitPromise(secret, memo)
参数:
参数类型说明
secretString井通钱包私钥
memoString备注信息
返回: Promise
取消挂单完整例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
let options = { account: "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz", sequence: 5 }
let tx = remote.buildOfferCancelTx(options)
tx.submitPromise("ssiUDhUpUZ5JDPWZ9Twt27Ckq6k4C")
  .then(console.log)
  .catch(console.error)
返回结果
> {
  engine_result: 'tesSUCCESS',
  engine_result_code: 0,
  engine_result_message: 'The transaction was applied. Only final in a validated ledger.',
  tx_blob: '120008220000000024000000082019000000056840000000000027107321029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E1574473045022100DC02575A15060C96A5846BE0778082F677C63E231ACEE8C358C1F01C4D558871022049EAAD87A2C12FD4E904C186A96CB2DC7C16082D371A501235E60C4516D6282D81141359AA928F4D98FDB3D93E8B690C80D37DED11C3',
  tx_json: {
    Account: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
    Fee: '10000',
    Flags: 0,
    OfferSequence: 5,
    Sequence: 8,
    SigningPubKey: '029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E15',
    TransactionType: 'OfferCancel',
    TxnSignature: '3045022100DC02575A15060C96A5846BE0778082F677C63E231ACEE8C358C1F01C4D558871022049EAAD87A2C12FD4E904C186A96CB2DC7C16082D371A501235E60C4516D6282D',
    hash: 'E7A23787101254365370CE4A077F007160DADCD920D4AA385C44EBBA3147F5CA'
  }
}

返回结果说明
参数类型说明
engine_resultString请求结果
engine_result_codeArray请求结果编码
engine_result_messageString请求结果 message 信息
tx_blobString16 进制签名后的交易
tx_jsonObject交易内容
   AccountString账号地址
   FeeString交易费
   FlagsInteger交易标记
   OfferSequenceInteger取消的单子号
   SequenceInteger单子序列号
   SigningPubKeyString签名公钥
   TimestampInteger时间戳
   TransactionTypeString交易类型:OfferCancel 取消订单
   TxnSignatureString交易签名
   hashString交易 hash

4.20 部署合约 lua - 尚未支持

首先通过 buildContractDeployTx (或者 deployContractTx)方法返回一个 Transaction 对象,然后通过 submitPromise()方法部署合约。
4.20.1 创建部署合约对象
方法:remote.buildContractDeployTx({});
参数:
参数类型说明
accountString合约交易源账号
amountString/Number支付金额(最多支持六位小数)
payloadString智能合约代码(16 进制字符串)
可选参数:
参数类型说明
paramsString合约参数
返回:Transaction 对象
4.20.2 部署合约
方法:tx.submitPromise(secret, memo);
参数:
参数类型说明
secretString井通钱包私钥
memoString备注信息
部署合约完整例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var utils = Remote.utils
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
var options = {
  account: "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  amount: 10,
  payload: utils.stringToHex(
    "result={}; function Init(t) result=scGetAccountBalance(t) return result end; function foo(t) result=scGetAccountBalance(t) return result end;"
  ),
  params: ["jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz"]
}
var tx = remote.buildContractDeployTx(options)
tx.submitPromise("ssiUDhUpUZ5JDPWZ9Twt27Ckq6k4C")
  .then(console.log)
  .catch(console.error)
返回结果
{ success: true,
  status_code: '0',
  ContractState: 'jNnyPvw4Gu4HycKAUwhtw82p3wk1pYKYPE',
  engine_result: 'tesSUCCESS',
  engine_result_code: 0,
  engine_result_message:
   'The transaction was applied. Only final in a validated ledger.',
  tx_blob:
   '12001E220000000024000003D52026000000006140000000009896806840000000000027107321029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E1574473045022100F558E6571C5F4217E3871C5D791B895C910E57AEC6175CE7B70E490A2180EE9B0220508C847807079DA2BBD92A8B26AE81B1C2608C2D3E0F929B8BEFE3DFE91865F970108D726573756C743D7B7D3B2066756E6374696F6E20496E697428742920726573756C743D73634765744163636F756E7442616C616E63652874292072657475726E20726573756C7420656E643B2066756E6374696F6E20666F6F28742920726573756C743D73634765744163636F756E7442616C616E63652874292072657475726E20726573756C7420656E643B81141359AA928F4D98FDB3D93E8B690C80D37DED11C3FEEF7013226A706D4B456D32735565766670466A533751486454385378375A476F4558544A417AE1F1',
  tx_json:
   { Account: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
     Amount: '10000000',
     Args: [ [Object] ],
     Fee: '10000',
     Flags: 0,
     Method: 0,
     Payload:
      '726573756C743D7B7D3B2066756E6374696F6E20496E697428742920726573756C743D73634765744163636F756E7442616C616E63652874292072657475726E20726573756C7420656E643B2066756E6374696F6E20666F6F28742920726573756C743D73634765744163636F756E7442616C616E63652874292072657475726E20726573756C7420656E643B',
     Sequence: 981,
     SigningPubKey:
      '029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E15',
     TransactionType: 'ConfigContract',
     TxnSignature:
      '3045022100F558E6571C5F4217E3871C5D791B895C910E57AEC6175CE7B70E490A2180EE9B0220508C847807079DA2BBD92A8B26AE81B1C2608C2D3E0F929B8BEFE3DFE91865F9',
     hash:
      '7AFDF4925CA11E0DA1D249BC88A7DE29CE07CF11186660CDE40B850F616B138B' } }
返回结果说明
参数类型说明
successBoolean请求结果
ContractStateString生成的合约地址
engine_resultString请求结果
engine_result_codeArray请求结果编码
engine_result_messageString请求结果 message 信息
tx_blobString16 进制签名后的交易
tx_jsonObject交易内容
   AccountString账号地址
   FeeString交易费
   FlagsInteger交易标记
   MethodInteger合约交易方法:0 表示部署;1 表示调用
   PayloadInteger16 进制合约代码
   SequenceInteger单子序列号
   SigningPubKeyString签名公钥
   TransactionTypeString交易类型:ConfigContract 部署合约
   TxnSignatureString交易签名
   hashString交易 hash

4.21 执行合约 lua - 尚未支持

首先通过 buildContractCallTx (或者 callContractTx)方法返回一个 Transaction 对象,然后通过通过 submitPromise()方法执行合约
4.21.1 创建执行合约对象
方法:remote.buildContractCallTx({});
参数:
参数类型说明
accountString合约交易源账号
destinationString合约地址
fooString合约函数名
可选参数:
参数类型说明
paramsString合约参数
返回:Transaction 对象
4.21.2 执行合约
方法:tx.submitPromise(secret, memo);
参数:
参数类型说明
secretString井通钱包私钥
memoString留言
执行合约完整例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
var options = {
  account: "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  destination: "jNdpxLQbmMMf4ZVXjn3nb98xPYQ7EpEpTN",
  foo: "foo",
  params: ["jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz"]
}
var tx = remote.buildContractCallTx(options)
tx.submitPromise("ssiUDhUpUZ5JDPWZ9Twt27Ckq6k4C")
  .then(console.log)
  .catch(console.error)
返回结果
> { success: true,
  status_code: '0',
  ContractState: '10489759828',
  engine_result: 'tesSUCCESS',
  engine_result_code: 0,
  engine_result_message:
   'The transaction was applied. Only final in a validated ledger.',
  tx_blob:
   '12001E220000000024000003D62026000000016840000000000027107321029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E15744630440220552CC3A84A3D02D886F4E71A628B76A8FA616A8969886965658962047CF70CEC022024DCE5FFEC37E5BC0AD085F7363392CBAAF80E729BCE8E20B5CD030CA87D84AE701203666F6F81141359AA928F4D98FDB3D93E8B690C80D37DED11C383148F8A6014111019B6968A1D6DD2B159AA27304D8EFEEF7013226A706D4B456D32735565766670466A533751486454385378375A476F4558544A417AE1F1',
  tx_json:
   { Account: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
     Args: [ [Object] ],
     ContractMethod: '666F6F',
     Destination: 'jNnyPvw4Gu4HycKAUwhtw82p3wk1pYKYPE',
     Fee: '10000',
     Flags: 0,
     Method: 1,
     Sequence: 982,
     SigningPubKey:
      '029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E15',
     TransactionType: 'ConfigContract',
     TxnSignature:
      '30440220552CC3A84A3D02D886F4E71A628B76A8FA616A8969886965658962047CF70CEC022024DCE5FFEC37E5BC0AD085F7363392CBAAF80E729BCE8E20B5CD030CA87D84AE',
     hash:
      'CA9B2CCDBB231B98CA3B69F81EB40F1D8D56807F3F3CFC0A0266B57D7F0AF6C8' } }
返回结果说明
参数类型说明
successBoolean请求结果
ContractStateString调用的合约结果
engine_resultString请求结果
engine_result_codeArray请求结果编码
engine_result_messageString请求结果 message 信息
tx_blobString16 进制签名后的交易
tx_jsonObject交易内容
   AccountString账号地址
   ArgsArray合约传入的参数
   ContractMethodString合约函数名
   DestinationString调用的合约地址
   FeeString交易费
   FlagsInteger交易标记
   MethodInteger合约交易方法:0 表示部署;1 表示调用
   SequenceInteger单子序列号
   SigningPubKeyString签名公钥
   TransactionTypeString交易类型:ConfigContract 合约类
   TxnSignatureString交易签名
   hashString交易 hash

4.22 设置挂单佣金

首先通过 buildBrokerageTx 方法返回一个 Transaction 对象,然后通过 submitPromise()方法设置平台手续费
4.22.1 创建挂单佣金对象
方法: remote.buildBrokerageTx({})
参数:
参数类型说明
accountString管理员账号
molInteger分子(0 和正整数)
denInteger分母(正整数)
appInteger应用来源序号(正整数)
amountObject币种对象
valueString数量,这里只是占位,没有实际意义。
currencyString货币种类
issuerString货币发行方
4.22.2 设置挂单佣金
方法:tx.submitPromise(secret, memo);
参数:
参数类型说明
secretString井通钱包私钥
设置挂单佣金完整例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
let options = {
  account: "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  mol: 1,
  den: 1000,
  feeAccount: "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  amount: remote.makeAmount(3, "JSLASH")
}
let tx = remote.buildBrokerageTx(options)
tx.submitPromise("ssiUDhUpUZ5JDPWZ9Twt27Ckq6k4C")
  .then(console.log)
  .catch(console.error)
返回结果
> {
  engine_result: 'tesSUCCESS',
  engine_result_code: 0,
  engine_result_message: 'The transaction was applied. Only final in a validated ledger.',
  tx_blob: '1200CD220000000024000000093900000000000000013A00000000000003E861D48AA87BEE5380000000000000000000004A534C4153480000000000A582E432BFC48EEDEF852C814EC57F3CD2D415966840000000000027107321029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E1574473045022100D3D455E933CEA48F6976424E6C42CDC1460108A2E229DBC97463B916C0AF432B0220410B6462ED03E0B4851D2EEE7A8E84A667D264400802E88709092C821A9CE4DE81141359AA928F4D98FDB3D93E8B690C80D37DED11C389141359AA928F4D98FDB3D93E8B690C80D37DED11C3',
  tx_json: {
    Account: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
    Amount: {
      currency: 'JSLASH',
      issuer: 'jGa9J9TkqtBcUoHe2zqhVFFbgUVED6o9or',
      value: '3'
    },
    Fee: '10000',
    FeeAccountID: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
    Flags: 0,
    OfferFeeRateDen: '00000000000003E8',
    OfferFeeRateNum: '0000000000000001',
    Sequence: 9,
    SigningPubKey: '029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E15',
    TransactionType: 'Brokerage',
    TxnSignature: '3045022100D3D455E933CEA48F6976424E6C42CDC1460108A2E229DBC97463B916C0AF432B0220410B6462ED03E0B4851D2EEE7A8E84A667D264400802E88709092C821A9CE4DE',
    hash: '700833A35F8F126C75BFDAF597B268EE5FC107070031030D7E6C748441A322AB'
  }
}

4.23 部署合约 Solidity 版 - 尚未支持

首先通过 buildContractInitTx (或者 initContract)方法返回一个 Transaction 对象,然后通过 submitPromise()方法完成合约的部署
4.23.1 创建合约部署对象
方法:remote.initContract({});
参数
参数类型说明
accountString合约发布者
amountInteger手续费
payloadString合约编译后的 16 进制字节码
abiArray合约 abi
paramsArray可选,合约初始化参数
返回:Transaction 对象
4.23.2 部署合约
方法:tx.submitPromise(secret);
参数: 密钥
参数类型说明
secretString合约发布者私钥
返回: Promise
部署合约完整例子
const japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({
  server: "https://tapi.jingtum.com",
  solidity: true
})
const v = {
  address: "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  secret: "ssiUDhUpUZ5JDPWZ9Twt27Ckq6k4C"
}
const abi = [
  {
    constant: true,
    inputs: [],
    name: "name",
    outputs: [{ name: "", type: "string" }],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [],
    name: "totalSupply",
    outputs: [{ name: "", type: "uint256" }],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [],
    name: "decimals",
    outputs: [{ name: "", type: "uint8" }],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: false,
    inputs: [],
    name: "withdraw",
    outputs: [],
    payable: true,
    stateMutability: "payable",
    type: "function"
  },
  {
    constant: true,
    inputs: [{ name: "_from", type: "address" }],
    name: "SWTBalance",
    outputs: [{ name: "", type: "uint256" }],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [{ name: "", type: "address" }],
    name: "balanceOf",
    outputs: [{ name: "", type: "uint256" }],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [],
    name: "owner",
    outputs: [{ name: "", type: "address" }],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [],
    name: "symbol",
    outputs: [{ name: "", type: "string" }],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: false,
    inputs: [
      { name: "_to", type: "address" },
      { name: "_value", type: "uint256" }
    ],
    name: "transfer",
    outputs: [],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  },
  {
    constant: true,
    inputs: [
      { name: "", type: "address" },
      { name: "", type: "address" }
    ],
    name: "allowance",
    outputs: [{ name: "", type: "uint256" }],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    inputs: [
      { name: "initialSupply", type: "uint256" },
      { name: "tokenName", type: "string" },
      { name: "tokenSymbol", type: "string" }
    ],
    payable: false,
    stateMutability: "nonpayable",
    type: "constructor"
  }
]
const payload =
  "60806040526012600260006101000a81548160ff021916908360ff16021790555034801561002c57600080fd5b50604051610c7e380380610c7e8339810180604052606081101561004f57600080fd5b8101908080519060200190929190805164010000000081111561007157600080fd5b8281019050602081018481111561008757600080fd5b81518560018202830111640100000000821117156100a457600080fd5b505092919060200180516401000000008111156100c057600080fd5b828101905060208101848111156100d657600080fd5b81518560018202830111640100000000821117156100f357600080fd5b5050929190505050600260009054906101000a900460ff1660ff16600a0a8302600381905550600354600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600090805190602001906101759291906101d6565b50806001908051906020019061018c9291906101d6565b5033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505061027b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061021757805160ff1916838001178555610245565b82800160010185558215610245579182015b82811115610244578251825591602001919060010190610229565b5b5090506102529190610256565b5090565b61027891905b8082111561027457600081600090555060010161025c565b5090565b90565b6109f48061028a6000396000f3fe6080604052600436106100ae576000357c01000000000000000000000000000000000000000000000000000000009004806370a082311161007657806370a082311461020e5780638da5cb5b1461027357806395d89b41146102ca578063a9059cbb1461035a578063dd62ed3e146103b5576100ae565b806306fdde03146100b357806318160ddd14610143578063313ce5671461016e5780633ccfd60b1461019f578063675c7ae6146101a9575b600080fd5b3480156100bf57600080fd5b506100c861043a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101085780820151818401526020810190506100ed565b50505050905090810190601f1680156101355780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561014f57600080fd5b506101586104d8565b6040518082815260200191505060405180910390f35b34801561017a57600080fd5b506101836104de565b604051808260ff1660ff16815260200191505060405180910390f35b6101a76104f1565b005b3480156101b557600080fd5b506101f8600480360360208110156101cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105cf565b6040518082815260200191505060405180910390f35b34801561021a57600080fd5b5061025d6004803603602081101561023157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105f0565b6040518082815260200191505060405180910390f35b34801561027f57600080fd5b50610288610608565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102d657600080fd5b506102df61062e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561031f578082015181840152602081019050610304565b50505050905090810190601f16801561034c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036657600080fd5b506103b36004803603604081101561037d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106cc565b005b3480156103c157600080fd5b50610424600480360360408110156103d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106db565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104d05780601f106104a5576101008083540402835291602001916104d0565b820191906000526020600020905b8154815290600101906020018083116104b357829003601f168201915b505050505081565b60035481565b600260009054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561054d57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156105cc573d6000803e3d6000fd5b50565b60008173ffffffffffffffffffffffffffffffffffffffff16319050919050565b60056020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106c45780601f10610699576101008083540402835291602001916106c4565b820191906000526020600020905b8154815290600101906020018083116106a757829003601f168201915b505050505081565b6106d7338383610700565b5050565b6006602052816000526040600020602052806000526040600020600091509150505481565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561073c57600080fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561078a57600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540111151561081857600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401905081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011415156109c257fe5b5050505056fea165627a7a72305820d122ff8ff7133c0852e95b8334f76d8f494b11ac94ac3c4b3409bad19f0d09340029"

let tx = remote.buildContractInitTx({
  account: v.address,
  amount: 10,
  payload,
  abi,
  params: [2000, "TestCurrency", "TEST1"]
})
tx.submitPromise(v.secret).then(console.log).catch(console.error)
输出
> { success: true,
  status_code: '0',
  ContractState: 'jKPNruYVLQ7BthSA1EaFqDePX2gcVCjk5k',
  engine_result: 'tesSUCCESS',
  engine_result_code: 0,
  engine_result_message:
   'The transaction was applied. Only final in a validated ledger.',
  tx_blob:
   '12001F2200000000240000040D2026000000006140000000009896806840000000000027107321029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E15744630440220225A8CC267B51B0A8C27CC0FE0B849CDC536B7A93AA877E96E856555A7F02FBA022072389A007BE2FAE36ACBA8DD81C6D41A4D156E2679B54977721F7A48D3DE262A7010DAFB3630383036303430353236303132363030323630303036313031303030613831353438313630666630323139313639303833363066663136303231373930353535303334383031353631303032633537363030303830666435623530363034303531363130633765333830333830363130633765383333393831303138303630343035323630363038313130313536313030346635373630303038306664356238313031393038303830353139303630323030313930393239313930383035313634303130303030303030303831313131353631303037313537363030303830666435623832383130313930353036303230383130313834383131313135363130303837353736303030383066643562383135313835363030313832303238333031313136343031303030303030303038323131313731353631303061343537363030303830666435623530353039323931393036303230303138303531363430313030303030303030383131313135363130306330353736303030383066643562383238313031393035303630323038313031383438313131313536313030643635373630303038306664356238313531383536303031383230323833303131313634303130303030303030303832313131373135363130306633353736303030383066643562353035303932393139303530353035303630303236303030393035343930363130313030306139303034363066663136363066663136363030613061383330323630303338313930353535303630303335343630303536303030333337336666666666666666666666666666666666666666666666666666666666666666666666666666666631363733666666666666666666666666666666666666666666666666666666666666666666666666666666663136383135323630323030313930383135323630323030313630303032303831393035353530383136303030393038303531393036303230303139303631303137353932393139303631303164363536356235303830363030313930383035313930363032303031393036313031386339323931393036313031643635363562353033333630303436303030363130313030306138313534383137336666666666666666666666666666666666666666666666666666666666666666666666666666666630323139313639303833373366666666666666666666666666666666666666666666666666666666666666666666666666666666313630323137393035353530353035303530363130323762353635623832383035343630303138313630303131363135363130313030303230333136363030323930303439303630303035323630323036303030323039303630316630313630323039303034383130313932383236303166313036313032313735373830353136306666313931363833383030313137383535353631303234353536356238323830303136303031303138353535383231353631303234353537393138323031356238323831313131353631303234343537383235313832353539313630323030313931393036303031303139303631303232393536356235623530393035303631303235323931393036313032353635363562353039303536356236313032373839313930356238303832313131353631303237343537363030303831363030303930353535303630303130313631303235633536356235303930353635623930353635623631303966343830363130323861363030303339363030306633666536303830363034303532363030343336313036313030616535373630303033353763303130303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303930303438303633373061303832333131313631303037363537383036333730613038323331313436313032306535373830363338646135636235623134363130323733353738303633393564383962343131343631303263613537383036336139303539636262313436313033356135373830363364643632656433653134363130336235353736313030616535363562383036333036666464653033313436313030623335373830363331383136306464643134363130313433353738303633333133636535363731343631303136653537383036333363636664363062313436313031396635373830363336373563376165363134363130316139353735623630303038306664356233343830313536313030626635373630303038306664356235303631303063383631303433613536356236303430353138303830363032303031383238313033383235323833383138313531383135323630323030313931353038303531393036303230303139303830383338333630303035623833383131303135363130313038353738303832303135313831383430313532363032303831303139303530363130306564353635623530353035303530393035303930383130313930363031663136383031353631303133353537383038323033383035313630303138333630323030333631303130303061303331393136383135323630323030313931353035623530393235303530353036303430353138303931303339306633356233343830313536313031346635373630303038306664356235303631303135383631303464383536356236303430353138303832383135323630323030313931353035303630343035313830393130333930663335623334383031353631303137613537363030303830666435623530363130313833363130346465353635623630343035313830383236306666313636306666313638313532363032303031393135303530363034303531383039313033393066333562363130316137363130346631353635623030356233343830313536313031623535373630303038306664356235303631303166383630303438303336303336303230383131303135363130316363353736303030383066643562383130313930383038303335373366666666666666666666666666666666666666666666666666666666666666666666666666666666313639303630323030313930393239313930353035303530363130356366353635623630343035313830383238313532363032303031393135303530363034303531383039313033393066333562333438303135363130323161353736303030383066643562353036313032356436303034383033363033363032303831313031353631303233313537363030303830666435623831303139303830383033353733666666666666666666666666666666666666666666666666666666666666666666666666666666663136393036303230303139303932393139303530353035303631303566303536356236303430353138303832383135323630323030313931353035303630343035313830393130333930663335623334383031353631303237663537363030303830666435623530363130323838363130363038353635623630343035313830383237336666666666666666666666666666666666666666666666666666666666666666666666666666666631363733666666666666666666666666666666666666666666666666666666666666666666666666666666663136383135323630323030313931353035303630343035313830393130333930663335623334383031353631303264363537363030303830666435623530363130326466363130363265353635623630343035313830383036303230303138323831303338323532383338313831353138313532363032303031393135303830353139303630323030313930383038333833363030303562383338313130313536313033316635373830383230313531383138343031353236303230383130313930353036313033303435363562353035303530353039303530393038313031393036303166313638303135363130333463353738303832303338303531363030313833363032303033363130313030306130333139313638313532363032303031393135303562353039323530353035303630343035313830393130333930663335623334383031353631303336363537363030303830666435623530363130336233363030343830333630333630343038313130313536313033376435373630303038306664356238313031393038303830333537336666666666666666666666666666666666666666666666666666666666666666666666666666666631363930363032303031393039323931393038303335393036303230303139303932393139303530353035303631303663633536356230303562333438303135363130336331353736303030383066643562353036313034323436303034383033363033363034303831313031353631303364383537363030303830666435623831303139303830383033353733666666666666666666666666666666666666666666666666666666666666666666666666666666663136393036303230303139303932393139303830333537336666666666666666666666666666666666666666666666666666666666666666666666666666666631363930363032303031393039323931393035303530353036313036646235363562363034303531383038323831353236303230303139313530353036303430353138303931303339306633356236303030383035343630303138313630303131363135363130313030303230333136363030323930303438303630316630313630323038303931303430323630323030313630343035313930383130313630343035323830393239313930383138313532363032303031383238303534363030313831363030313136313536313031303030323033313636303032393030343830313536313034643035373830363031663130363130346135353736313031303038303833353430343032383335323931363032303031393136313034643035363562383230313931393036303030353236303230363030303230393035623831353438313532393036303031303139303630323030313830383331313631303462333537383239303033363031663136383230313931356235303530353035303530383135363562363030333534383135363562363030323630303039303534393036313031303030613930303436306666313638313536356236303034363030303930353439303631303130303061393030343733666666666666666666666666666666666666666666666666666666666666666666666666666666663136373366666666666666666666666666666666666666666666666666666666666666666666666666666666313633333733666666666666666666666666666666666666666666666666666666666666666666666666666666663136313431353135363130353464353736303030383066643562363030343630303039303534393036313031303030613930303437336666666666666666666666666666666666666666666666666666666666666666666666666666666631363733666666666666666666666666666666666666666666666666666666666666666666666666666666663136363130386663333037336666666666666666666666666666666666666666666666666666666666666666666666666666666631363331393038313135303239303630343035313630303036303430353138303833303338313835383838386631393335303530353035303135383031353631303563633537336436303030383033653364363030306664356235303536356236303030383137336666666666666666666666666666666666666666666666666666666666666666666666666666666631363331393035303931393035303536356236303035363032303532383036303030353236303430363030303230363030303931353039303530353438313536356236303034363030303930353439303631303130303061393030343733666666666666666666666666666666666666666666666666666666666666666666666666666666663136383135363562363030313830353436303031383136303031313631353631303130303032303331363630303239303034383036303166303136303230383039313034303236303230303136303430353139303831303136303430353238303932393139303831383135323630323030313832383035343630303138313630303131363135363130313030303230333136363030323930303438303135363130366334353738303630316631303631303639393537363130313030383038333534303430323833353239313630323030313931363130366334353635623832303139313930363030303532363032303630303032303930356238313534383135323930363030313031393036303230303138303833313136313036613735373832393030333630316631363832303139313562353035303530353035303831353635623631303664373333383338333631303730303536356235303530353635623630303636303230353238313630303035323630343036303030323036303230353238303630303035323630343036303030323036303030393135303931353035303534383135363562363030303733666666666666666666666666666666666666666666666666666666666666666666666666666666663136383237336666666666666666666666666666666666666666666666666666666666666666666666666666666631363134313531353135363130373363353736303030383066643562383036303035363030303835373366666666666666666666666666666666666666666666666666666666666666666666666666666666313637336666666666666666666666666666666666666666666666666666666666666666666666666666666631363831353236303230303139303831353236303230303136303030323035343130313531353135363130373861353736303030383066643562363030353630303038333733666666666666666666666666666666666666666666666666666666666666666666666666666666663136373366666666666666666666666666666666666666666666666666666666666666666666666666666666313638313532363032303031393038313532363032303031363030303230353438313630303536303030383537336666666666666666666666666666666666666666666666666666666666666666666666666666666631363733666666666666666666666666666666666666666666666666666666666666666666666666666666663136383135323630323030313930383135323630323030313630303032303534303131313135313536313038313835373630303038306664356236303030363030353630303038343733666666666666666666666666666666666666666666666666666666666666666666666666666666663136373366666666666666666666666666666666666666666666666666666666666666666666666666666666313638313532363032303031393038313532363032303031363030303230353436303035363030303836373366666666666666666666666666666666666666666666666666666666666666666666666666666666313637336666666666666666666666666666666666666666666666666666666666666666666666666666666631363831353236303230303139303831353236303230303136303030323035343031393035303831363030353630303038363733666666666666666666666666666666666666666666666666666666666666666666666666666666663136373366666666666666666666666666666666666666666666666666666666666666666666666666666666313638313532363032303031393038313532363032303031363030303230363030303832383235343033393235303530383139303535353038313630303536303030383537336666666666666666666666666666666666666666666666666666666666666666666666666666666631363733666666666666666666666666666666666666666666666666666666666666666666666666666666663136383135323630323030313930383135323630323030313630303032303630303038323832353430313932353035303831393035353530383036303035363030303835373366666666666666666666666666666666666666666666666666666666666666666666666666666666313637336666666666666666666666666666666666666666666666666666666666666666666666666666666631363831353236303230303139303831353236303230303136303030323035343630303536303030383737336666666666666666666666666666666666666666666666666666666666666666666666666666666631363733666666666666666666666666666666666666666666666666666666666666666666666666666666663136383135323630323030313930383135323630323030313630303032303534303131343135313536313039633235376665356235303530353035303536666561313635363237613761373233303538323064313232666638666637313333633038353265393562383333346637366438663439346231316163393461633363346233343039626164313966306430393334303032393030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303037643030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303630303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303061303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030306335343635373337343433373537323732363536653633373930303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030353534343535333534333130303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303081141359AA928F4D98FDB3D93E8B690C80D37DED11C3',
  tx_json:
   { Account: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
     Amount: '10000000',
     Fee: '10000',
     Flags: 0,
     Method: 0,
     Payload:
      '36303830363034303532363031323630303236303030363130313030306138313534383136306666303231393136393038333630666631363032313739303535353033343830313536313030326335373630303038306664356235303630343035313631306337653338303338303631306337653833333938313031383036303430353236303630383131303135363130303466353736303030383066643562383130313930383038303531393036303230303139303932393139303830353136343031303030303030303038313131313536313030373135373630303038306664356238323831303139303530363032303831303138343831313131353631303038373537363030303830666435623831353138353630303138323032383330313131363430313030303030303030383231313137313536313030613435373630303038306664356235303530393239313930363032303031383035313634303130303030303030303831313131353631303063303537363030303830666435623832383130313930353036303230383130313834383131313135363130306436353736303030383066643562383135313835363030313832303238333031313136343031303030303030303038323131313731353631303066333537363030303830666435623530353039323931393035303530353036303032363030303930353439303631303130303061393030343630666631363630666631363630306130613833303236303033383139303535353036303033353436303035363030303333373366666666666666666666666666666666666666666666666666666666666666666666666666666666313637336666666666666666666666666666666666666666666666666666666666666666666666666666666631363831353236303230303139303831353236303230303136303030323038313930353535303831363030303930383035313930363032303031393036313031373539323931393036313031643635363562353038303630303139303830353139303630323030313930363130313863393239313930363130316436353635623530333336303034363030303631303130303061383135343831373366666666666666666666666666666666666666666666666666666666666666666666666666666666303231393136393038333733666666666666666666666666666666666666666666666666666666666666666666666666666666663136303231373930353535303530353035303631303237623536356238323830353436303031383136303031313631353631303130303032303331363630303239303034393036303030353236303230363030303230393036303166303136303230393030343831303139323832363031663130363130323137353738303531363066663139313638333830303131373835353536313032343535363562383238303031363030313031383535353832313536313032343535373931383230313562383238313131313536313032343435373832353138323535393136303230303139313930363030313031393036313032323935363562356235303930353036313032353239313930363130323536353635623530393035363562363130323738393139303562383038323131313536313032373435373630303038313630303039303535353036303031303136313032356335363562353039303536356239303536356236313039663438303631303238613630303033393630303066336665363038303630343035323630303433363130363130306165353736303030333537633031303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303039303034383036333730613038323331313136313030373635373830363337306130383233313134363130323065353738303633386461356362356231343631303237333537383036333935643839623431313436313032636135373830363361393035396362623134363130333561353738303633646436326564336531343631303362353537363130306165353635623830363330366664646530333134363130306233353738303633313831363064646431343631303134333537383036333331336365353637313436313031366535373830363333636366643630623134363130313966353738303633363735633761653631343631303161393537356236303030383066643562333438303135363130306266353736303030383066643562353036313030633836313034336135363562363034303531383038303630323030313832383130333832353238333831383135313831353236303230303139313530383035313930363032303031393038303833383336303030356238333831313031353631303130383537383038323031353138313834303135323630323038313031393035303631303065643536356235303530353035303930353039303831303139303630316631363830313536313031333535373830383230333830353136303031383336303230303336313031303030613033313931363831353236303230303139313530356235303932353035303530363034303531383039313033393066333562333438303135363130313466353736303030383066643562353036313031353836313034643835363562363034303531383038323831353236303230303139313530353036303430353138303931303339306633356233343830313536313031376135373630303038306664356235303631303138333631303464653536356236303430353138303832363066663136363066663136383135323630323030313931353035303630343035313830393130333930663335623631303161373631303466313536356230303562333438303135363130316235353736303030383066643562353036313031663836303034383033363033363032303831313031353631303163633537363030303830666435623831303139303830383033353733666666666666666666666666666666666666666666666666666666666666666666666666666666663136393036303230303139303932393139303530353035303631303563663536356236303430353138303832383135323630323030313931353035303630343035313830393130333930663335623334383031353631303231613537363030303830666435623530363130323564363030343830333630333630323038313130313536313032333135373630303038306664356238313031393038303830333537336666666666666666666666666666666666666666666666666666666666666666666666666666666631363930363032303031393039323931393035303530353036313035663035363562363034303531383038323831353236303230303139313530353036303430353138303931303339306633356233343830313536313032376635373630303038306664356235303631303238383631303630383536356236303430353138303832373366666666666666666666666666666666666666666666666666666666666666666666666666666666313637336666666666666666666666666666666666666666666666666666666666666666666666666666666631363831353236303230303139313530353036303430353138303931303339306633356233343830313536313032643635373630303038306664356235303631303264663631303632653536356236303430353138303830363032303031383238313033383235323833383138313531383135323630323030313931353038303531393036303230303139303830383338333630303035623833383131303135363130333166353738303832303135313831383430313532363032303831303139303530363130333034353635623530353035303530393035303930383130313930363031663136383031353631303334633537383038323033383035313630303138333630323030333631303130303061303331393136383135323630323030313931353035623530393235303530353036303430353138303931303339306633356233343830313536313033363635373630303038306664356235303631303362333630303438303336303336303430383131303135363130333764353736303030383066643562383130313930383038303335373366666666666666666666666666666666666666666666666666666666666666666666666666666666313639303630323030313930393239313930383033353930363032303031393039323931393035303530353036313036636335363562303035623334383031353631303363313537363030303830666435623530363130343234363030343830333630333630343038313130313536313033643835373630303038306664356238313031393038303830333537336666666666666666666666666666666666666666666666666666666666666666666666666666666631363930363032303031393039323931393038303335373366666666666666666666666666666666666666666666666666666666666666666666666666666666313639303630323030313930393239313930353035303530363130366462353635623630343035313830383238313532363032303031393135303530363034303531383039313033393066333562363030303830353436303031383136303031313631353631303130303032303331363630303239303034383036303166303136303230383039313034303236303230303136303430353139303831303136303430353238303932393139303831383135323630323030313832383035343630303138313630303131363135363130313030303230333136363030323930303438303135363130346430353738303630316631303631303461353537363130313030383038333534303430323833353239313630323030313931363130346430353635623832303139313930363030303532363032303630303032303930356238313534383135323930363030313031393036303230303138303833313136313034623335373832393030333630316631363832303139313562353035303530353035303831353635623630303335343831353635623630303236303030393035343930363130313030306139303034363066663136383135363562363030343630303039303534393036313031303030613930303437336666666666666666666666666666666666666666666666666666666666666666666666666666666631363733666666666666666666666666666666666666666666666666666666666666666666666666666666663136333337336666666666666666666666666666666666666666666666666666666666666666666666666666666631363134313531353631303534643537363030303830666435623630303436303030393035343930363130313030306139303034373366666666666666666666666666666666666666666666666666666666666666666666666666666666313637336666666666666666666666666666666666666666666666666666666666666666666666666666666631363631303866633330373366666666666666666666666666666666666666666666666666666666666666666666666666666666313633313930383131353032393036303430353136303030363034303531383038333033383138353838383866313933353035303530353031353830313536313035636335373364363030303830336533643630303066643562353035363562363030303831373366666666666666666666666666666666666666666666666666666666666666666666666666666666313633313930353039313930353035363562363030353630323035323830363030303532363034303630303032303630303039313530393035303534383135363562363030343630303039303534393036313031303030613930303437336666666666666666666666666666666666666666666666666666666666666666666666666666666631363831353635623630303138303534363030313831363030313136313536313031303030323033313636303032393030343830363031663031363032303830393130343032363032303031363034303531393038313031363034303532383039323931393038313831353236303230303138323830353436303031383136303031313631353631303130303032303331363630303239303034383031353631303663343537383036303166313036313036393935373631303130303830383335343034303238333532393136303230303139313631303663343536356238323031393139303630303035323630323036303030323039303562383135343831353239303630303130313930363032303031383038333131363130366137353738323930303336303166313638323031393135623530353035303530353038313536356236313036643733333833383336313037303035363562353035303536356236303036363032303532383136303030353236303430363030303230363032303532383036303030353236303430363030303230363030303931353039313530353035343831353635623630303037336666666666666666666666666666666666666666666666666666666666666666666666666666666631363832373366666666666666666666666666666666666666666666666666666666666666666666666666666666313631343135313531353631303733633537363030303830666435623830363030353630303038353733666666666666666666666666666666666666666666666666666666666666666666666666666666663136373366666666666666666666666666666666666666666666666666666666666666666666666666666666313638313532363032303031393038313532363032303031363030303230353431303135313531353631303738613537363030303830666435623630303536303030383337336666666666666666666666666666666666666666666666666666666666666666666666666666666631363733666666666666666666666666666666666666666666666666666666666666666666666666666666663136383135323630323030313930383135323630323030313630303032303534383136303035363030303835373366666666666666666666666666666666666666666666666666666666666666666666666666666666313637336666666666666666666666666666666666666666666666666666666666666666666666666666666631363831353236303230303139303831353236303230303136303030323035343031313131353135363130383138353736303030383066643562363030303630303536303030383437336666666666666666666666666666666666666666666666666666666666666666666666666666666631363733666666666666666666666666666666666666666666666666666666666666666666666666666666663136383135323630323030313930383135323630323030313630303032303534363030353630303038363733666666666666666666666666666666666666666666666666666666666666666666666666666666663136373366666666666666666666666666666666666666666666666666666666666666666666666666666666313638313532363032303031393038313532363032303031363030303230353430313930353038313630303536303030383637336666666666666666666666666666666666666666666666666666666666666666666666666666666631363733666666666666666666666666666666666666666666666666666666666666666666666666666666663136383135323630323030313930383135323630323030313630303032303630303038323832353430333932353035303831393035353530383136303035363030303835373366666666666666666666666666666666666666666666666666666666666666666666666666666666313637336666666666666666666666666666666666666666666666666666666666666666666666666666666631363831353236303230303139303831353236303230303136303030323036303030383238323534303139323530353038313930353535303830363030353630303038353733666666666666666666666666666666666666666666666666666666666666666666666666666666663136373366666666666666666666666666666666666666666666666666666666666666666666666666666666313638313532363032303031393038313532363032303031363030303230353436303035363030303837373366666666666666666666666666666666666666666666666666666666666666666666666666666666313637336666666666666666666666666666666666666666666666666666666666666666666666666666666631363831353236303230303139303831353236303230303136303030323035343031313431353135363130396332353766653562353035303530353035366665613136353632376137613732333035383230643132326666386666373133336330383532653935623833333466373664386634393462313161633934616333633462333430396261643139663064303933343030323930303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030376430303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303036303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030613030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303063353436353733373434333735373237323635366536333739303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303535343435353335343331303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030',
     Sequence: 1037,
     SigningPubKey:
      '029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E15',
     TransactionType: 'AlethContract',
     TxnSignature:
      '30440220225A8CC267B51B0A8C27CC0FE0B849CDC536B7A93AA877E96E856555A7F02FBA022072389A007BE2FAE36ACBA8DD81C6D41A4D156E2679B54977721F7A48D3DE262A',
     hash:
      '8EADEC523DC59A3687B021E27244103B0C9CE8487B93E27F76E0479E4A40F03D' } }

4.24 调用合约(Solidity 版) - 尚未支持

首先通过 buildContractInvokeTx (或者 invokeContract)方法返回一个 Transaction 对象,然后通过 submitPromise()方法完成合约的调用。
4.24.1 创建合约调用对象
方法:remote.buildContractInvokeTx({})
参数
参数类型说明
accountString合约发布者
destinationString合约帐号
abiArray合约 abi
funcString合约函数名及参数
返回:Transaction 对象
4.24.2 执行合约
方法:tx.submitPromise(secret);
参数:
参数类型说明
secretString合约执行者私钥
返回: Promise
例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "https://tapi.jingtum.com", solidity: true })
const v = {
  address: "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  secret: "ssiUDhUpUZ5JDPWZ9Twt27Ckq6k4C"
}
const abi = [
  {
    constant: true,
    inputs: [],
    name: "name",
    outputs: [{ name: "", type: "string" }],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [],
    name: "totalSupply",
    outputs: [{ name: "", type: "uint256" }],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [],
    name: "decimals",
    outputs: [{ name: "", type: "uint8" }],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: false,
    inputs: [],
    name: "withdraw",
    outputs: [],
    payable: true,
    stateMutability: "payable",
    type: "function"
  },
  {
    constant: true,
    inputs: [{ name: "_from", type: "address" }],
    name: "SWTBalance",
    outputs: [{ name: "", type: "uint256" }],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [{ name: "", type: "address" }],
    name: "balanceOf",
    outputs: [{ name: "", type: "uint256" }],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [],
    name: "owner",
    outputs: [{ name: "", type: "address" }],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [],
    name: "symbol",
    outputs: [{ name: "", type: "string" }],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: false,
    inputs: [
      { name: "_to", type: "address" },
      { name: "_value", type: "uint256" }
    ],
    name: "transfer",
    outputs: [],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  },
  {
    constant: true,
    inputs: [
      { name: "", type: "address" },
      { name: "", type: "address" }
    ],
    name: "allowance",
    outputs: [{ name: "", type: "uint256" }],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    inputs: [
      { name: "initialSupply", type: "uint256" },
      { name: "tokenName", type: "string" },
      { name: "tokenSymbol", type: "string" }
    ],
    payable: false,
    stateMutability: "nonpayable",
    type: "constructor"
  }
]
var destination = "jKPNruYVLQ7BthSA1EaFqDePX2gcVCjk5k"
let tx = remote.buildContractInvokeTx({
  account: v.address,
  destination,
  abi,
  func: `transfer("${destination}", 5)`
})
tx.submitPromise(v.secret).then(console.log).catch(console.error)
输出
> { success: true,
  status_code: '0',
  ContractState: '',
  engine_result: 'tesSUCCESS',
  engine_result_code: 0,
  engine_result_message:
   'The transaction was applied. Only final in a validated ledger.',
  tx_blob:
   '12001F220000000024000004172026000000016140000000000000006840000000000027107321029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E1574473045022100FD7DF650C0C753C0589159C383A809C5F2DB7AA53705E1880EF882DFAB577EB702202A91F83336E81EA709C937E1C3DD531BBF52D9A39A386A5AEB49571F7D07F0B781141359AA928F4D98FDB3D93E8B690C80D37DED11C38314C9A6E277B39563107F89277EAF319F5952F5F5C0FEEF70138861393035396362623030303030303030303030303030303063396136653237376233393536333130376638393237376561663331396635393532663566356330363531336564613130303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303035041000E1F1',
  tx_json:
   { Account: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
     Amount: '0',
     Args: [ [Object] ],
     Destination: 'jKPNruYVLQ7BthSA1EaFqDePX2gcVCjk5k',
     Fee: '10000',
     Flags: 0,
     Method: 1,
     Sequence: 1047,
     SigningPubKey:
      '029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E15',
     TransactionType: 'AlethContract',
     TxnSignature:
      '3045022100FD7DF650C0C753C0589159C383A809C5F2DB7AA53705E1880EF882DFAB577EB702202A91F83336E81EA709C937E1C3DD531BBF52D9A39A386A5AEB49571F7D07F0B7',
     hash:
      '7968F7E8C341F8F12DD1943B3EFE909A4F553FCFEE07E3605E2303CDF3C4641C' } }

5 本地签名和可选参数

5.1 本地签名

方法: postBlob(blob);
参数:
参数类型说明
blobObject{blob: 'signedblob'}
返回: Promise - json
例子
var japi = require("@swtc/api")
var Remote = japi.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
remote
  .postBlob({
    blob: "12001F220000000024000004172026000000016140000000000000006840000000000027107321029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E1574473045022100FD7DF650C0C753C0589159C383A809C5F2DB7AA53705E1880EF882DFAB577EB702202A91F83336E81EA709C937E1C3DD531BBF52D9A39A386A5AEB49571F7D07F0B781141359AA928F4D98FDB3D93E8B690C80D37DED11C38314C9A6E277B39563107F89277EAF319F5952F5F5C0FEEF70138861393035396362623030303030303030303030303030303063396136653237376233393536333130376638393237376561663331396635393532663566356330363531336564613130303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303035041000E1F1"
  })
  .then(console.log)
  .catch(console.error)
返回结果
> { success: true,
  status_code: '0',
  ContractState: '',
  engine_result: 'tefPAST_SEQ',
  engine_result_code: -190,
  engine_result_message: 'This sequence number has already past.',
  tx_blob:
   '12001F220000000024000004172026000000016140000000000000006840000000000027107321029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E1574473045022100FD7DF650C0C753C0589159C383A809C5F2DB7AA53705E1880EF882DFAB577EB702202A91F83336E81EA709C937E1C3DD531BBF52D9A39A386A5AEB49571F7D07F0B781141359AA928F4D98FDB3D93E8B690C80D37DED11C38314C9A6E277B39563107F89277EAF319F5952F5F5C0FEEF70138861393035396362623030303030303030303030303030303063396136653237376233393536333130376638393237376561663331396635393532663566356330363531336564613130303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303035041000E1F1',
  tx_json:
   { Account: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
     Amount: '0',
     Args: [ [Object] ],
     Destination: 'jKPNruYVLQ7BthSA1EaFqDePX2gcVCjk5k',
     Fee: '10000',
     Flags: 0,
     Method: 1,
     Sequence: 1047,
     SigningPubKey:
      '029110C3744FB57BD1F4824F5B989AE75EB6402B4365B501F6EDCA9BE44A675E15',
     TransactionType: 'AlethContract',
     TxnSignature:
      '3045022100FD7DF650C0C753C0589159C383A809C5F2DB7AA53705E1880EF882DFAB577EB702202A91F83336E81EA709C937E1C3DD531BBF52D9A39A386A5AEB49571F7D07F0B7',
     hash:
      '7968F7E8C341F8F12DD1943B3EFE909A4F553FCFEE07E3605E2303CDF3C4641C' } }

5.2 可选参数

方法: .getXYZ()
可选参数:

可选参数自身是一个 javascript 对象, 放在参数后面, 常见的包括

参数类型说明
results_per_pageNumber分页显示时每页显示的数目
pageNumber分页显示返回的页码
markerObject分页相关,位置标记
currencyString通证代码
issuerString银关
返回: Promise - json
例子
remote.getAccountBalances("jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz", {
  currency: "CNY"
})
remote.getAccountOffers("jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz", {
  results_per_page: 100
})

6 交易记录信息

交易类型: Payment、OfferCreate、OfferCancel 和 RelationSet

交易信息存储在系统中,查询交易信息时,系统解析交易信息,将交易信息解析为主要有如下信息:
date 交易时间 UNIXTIME hash 交易 hash fee 交易费用 result 交易结果 client_resource_id 交易资源号 memos 交易的备注信息 type 交易类型

type

  1. sent,用户进行支付操作,在交易信息中包含的信息有:
参数类型说明
counterpartyString支付对家,即接收方
amountObject交易记录标记
   valueString金额
   currencyString货币
   issuerString货币发行方,SWT 为空
effectsArray[],空
  1. received,用户接受支付,在交易信息中包含的信息有:
参数类型说明
counterpartyString支付对家,即接收方
amountObject交易记录标记
   valueString金额
   currencyString货币
   issuerString货币发行方,SWT 为空
effectsArray[],空
  1. convert,用户进行兑换操作,在交易信息中包含的信息有:
参数类型说明
spentObject兑换支付的金额
   valueString金额
   currencyString货币
issuer
String货币发行方,SWT 为空
amountObject交易记录标记
   valueString金额
   currencyString货币
issuer
String货币发行方,SWT 为空
effectsArray[],空
  1. offernew,用户进行挂单操作,在交易信息中包含的信息有:
参数类型说明
offertypeString挂单类型,sell 或 buy
pairString交易的货币对
amountString挂单的数量
priceString挂单的价格
effectsArray详见下面的 effects 解释
  1. offercancel,用户进行取消挂单操作,在交易信息中包含的信息有:
参数类型说明
typeString挂单的类型,sell 或 buy
pairString交易的货币对
amountString挂单的数量
priceString挂单的价格
effectsArray详见下面的 effects 解释
  1. offereffect,挂单成交情况,即被动成交的情况,在交易信息中包含的信息有:
参数类型说明
effectsArray详见下面的 effects 解释

effects

effects 是每个用户交易记录信息里面的交易效果,是个 JSON 数组,数字可以包含多项,每项内容都包含效果类型 effect 字段,根据 effect 的不同里面的内容也不同 :
  1. offer_funded,交易实际成交;交易提示信息建议:交易成交,您以 XXX 价格买了/卖了 XXX 卖了/买了 XXX,价格是 XXX;其中包含的信息有:
参数类型说明
effectStringoffer_funded
typeString交易类型,sell 或 buy
pairString交易的货币对
amountString挂单的数量
gotObject用户获得的金额
   valueString金额
   currencyString货币
   issuerString货币发行方,SWT 为空
paidObject用户付出的金额
   valueString金额
   currencyString货币
   issuerString货币发行方,SWT 为空
priceString价格,4 位小数
seqInteger挂单序号,表示被成交的单子
counterpartyObject对家信息
   accountString对家账号
   seqInteger对家单子序号
   hashString对家交易 hash
  1. offer_partially_funded,交易部分成交;交易提示信息建议:交易部分成交,您以 XXX 价格买了/卖了 XXX 卖了/买了 XXX,价格是 XXX,剩余挂单由于金额不足被取消(可选,根据 cancelled),还剩 XXX 单子(可选,根据 remaining);其中包含的信息有:
参数类型说明
effectStringoffer_partially_funded
typeString交易类型,sold 或 bought
gotObject用户获得的金额
   valueString金额
   currencyString货币
   issuerString货币发行方,SWT 为空
paidObject用户付出的金额
   valueString金额
   currencyString货币
   issuerString货币发行方,SWT 为空
priceString价格,4 位小数
seqInteger挂单序号,表示被成交的单子
cancelledBoolean剩余的单子是否被取消了,可选
remainingBoolean是否有剩余的单子,可选
pairString交易的货币对,remaining 为 true 才有
amountString挂单的数量,remaining 为 true 才有
priceString挂单的价格,remaining 为 true 才有
counterpartyObject对家信息
   accountString对家账号
   seqInteger对家单子序号
   hashString对家交易 hash
  1. offer_cancelled,被关联交易取消单子,交易单子被取消;交易提示信息建议:由于缺少金额单子 XXX 被取消;其中包含的信息有:
参数类型说明
effectStringoffer_cancelled
typeString交易类型,sell 或 buy
pairString交易的货币对
amountString挂单的数量
priceString挂单的价格
seqInteger被取消单子的序号
hashString被取消单子的 hash
deletedBoolean单子是否被删除,取消单子为 true
  1. offer_created,交易单子创建;交易提示信息建议:您创建了一个买/卖单,以 XXX 交易 XXX;其中包含的信息有:
参数类型说明
effectStringoffer_created
typeString交易类型,sell 或 buy
pairString交易的货币对
amountString挂单的数量
priceString挂单的价格
seqInteger新建的单子序号
  1. offer_bought,挂单买到/卖出,成交的单子信息;交易提示信息建议:您以 XXX 价格买了/卖了 XXX 卖了/买了 XXX;其中包含的信息有:
参数类型说明
effectStringoffer_bought
typeString交易类型,sell 或 buy
gotObject用户获得的金额
   valueString金额
   currencyString货币
   issuerString货币发行方,SWT 为空
paidObject用户付出的金额
   valueString金额
   currencyString货币
   issuerString货币发行方,SWT 为空
priceString价格,4 位小数
pairString交易的货币对
amountString挂单的数量
counterpartyObject对家信息
   accountString对家账号
   seqInteger对家单子序号
   hashString对家交易 hash

7 错误信息

客户端错误 - ClientError

ClientError,此错误主要是客户端请求参数错误,包括井通地址格式不对,私钥格式不对,货币格式不对等以及根据每个接口提交的参数格式不对等导致的错误;

网络错误 - NetworkError

NetworkError,此错误主要是网络错误,包括链接井通网络没有连上,请求服务超时等;

交易错误 - Transaction Error

TransactionError,此错误主要是重复资源号的错误,即 DuplicateTransactionError;

服务端错误 - ServerError

ServerError,此错误主要是后台程序错误,包括代码 BUG、代码实现问题等;
错误代码说明
0success
1000client error
1001Invalid parameter: address
1002Invalid parameter: secret
1003Invalid parameter: currency
1004Invalid parameter: issuer
1005Invalid parameter: order
1006Invalid parameter: order.type
1007Invalid parameter: order.price
1008Invalid parameter: order.sequence
1009Invalid parameter: hash
1010not an order transaction
1011Transaction specified did not affect the given account
1012Invalid parameter: base
1013Invalid parameter: counter
1014Invalid parameter: destination_address
1015Invalid parameter: amount
1016Invalid parameter: payment
1017Invalid parameter: payment.source
1018Invalid parameter: payment.destination
1019Invalid parameter: payment.amount
1020Invalid parameter: memos,it must be an array
1021Invalid parameter: choice,it must be a string
1022Invalid parameter: client_id,must be a number
1023Invalid parameter: client_id, already exits
1024Invalid parameter: choice, not exist
1025Not a payment transaction
1026Invalid parameter:results_per_page
1027Invalid parameter:page
1028Invalid parameter:results_per_page, it mast be a number and not less than 10
1029Invalid parameter: order.pair
1030Invalid parameter: order.amount
1031Missing parameters
1032Invalid parameter: method, it must be 0 or 1
1033Invalid parameter: payload, it must be string
1034Invalid parameter: amount,it must be a number greater than zero
1035Invalid parameter: params,it must be an array
2000Server error
3000Transaction error
3001Could not generate wallet
4000Network error
4001Remote is disconnected
4002Time out
4003Bad gateway

8. 合约

9. erc20 源码

pragma solidity ^0.5.4;
contract TokenTest {
    string public name;
    string public symbol;
    uint8  public decimals = 18;  // decimals 可以有的小数点个数,最小的代币单位。18 是建议的默认值
    uint256 public totalSupply;
    address  payable public owner;
    // 用mapping保存每个地址对应的余额
    mapping (address => uint256) public balanceOf;
    // 存储对账号的控制
    mapping (address => mapping (address => uint256)) public allowance;
    /**
     * 初始化构造
     */
    constructor(uint256 initialSupply, string memory tokenName , string  memory tokenSymbol) public {
        totalSupply = initialSupply * 10 ** uint256(decimals);  // 供应的份额,份额跟最小的代币单位有关,份额 = 币数 * 10 ** decimals。
        balanceOf[msg.sender] = totalSupply;
        name = tokenName; // 代币名称
        symbol = tokenSymbol;  // 代币符号
        owner = msg.sender;
    }

    /**
     * 代币交易转移的内部实现
     */
    function _transfer(address   _from, address  _to, uint  _value) internal{
        // 确保目标地址不为0x0,因为0x0地址代表销毁
        require(_to != address(0x0));
        // 检查发送者余额
        require(balanceOf[_from] >= _value);
        // 确保转移为正数个
        require(balanceOf[_to] + _value > balanceOf[_to]);

        // 以下用来检查交易,
        uint previousBalances = balanceOf[_from] + balanceOf[_to];
        // Subtract from the sender
        balanceOf[_from] -= _value;
        // Add the same to the recipient
        balanceOf[_to] += _value;

        // 用assert来检查代码逻辑。
        assert(balanceOf[_from] + balanceOf[_to] == previousBalances);
    }
    /**
     *  代币交易转移
     * 从自己(创建交易者)账号发送`_value`个代币到 `_to`账号
     * @param _to 接收者地址
     * @param _value 转移数额
     */
    function transfer(address _to, uint256 _value) public {
        _transfer(msg.sender, _to, _value);
    }

    function withdraw() payable public{
        require(msg.sender == owner);
        owner.transfer(address(this).balance);
    }
    function SWTBalance(address _from) public view returns (uint256)  {
        return _from.balance;
    }
}

10. erc721 源码

11. 多重签名

11.1 查询帐号的签名列表

通过 getAccountSignerList 方法
方法:remote.getAccountSignerList(address)
参数
参数类型说明
accountString源账号
返回: Promise
查询帐号的签名列表完整例子
const jlib = require("@swtc/api")
var Remote = jlib.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
const a = {
  secret: "snaK5evc1SddiDca1BpZbg1UBft42",
  address: "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n"
}
const log_json = object => console.log(JSON.stringify(object, "", 2))
const sleep = time => new Promise(res => setTimeout(() => res(), time || 1))

sleep()
  .then(async () => {
    let result = await remote.getAccountSignerList(a.address)
    console.log(result)
    log_json(result.account_objects)
  })
  .catch(console.error)
输出
{
  account: 'j3UbbRX36997CWXqYqLUn28qH55v9Dh37n',
  account_objects: [
    {
      Flags: 0,
      LedgerEntryType: 'SignerList',
      OwnerNode: '0000000000000000',
      PreviousTxnID: 'F5C29AA790682CF238F397610F98910D0947334EF63BA565B30BAE8029AE634E',
      PreviousTxnLgrSeq: 549864,
      SignerEntries: [Array],
      SignerQuorum: 5,
      index: 'D1A5CF852001ABB5FC6E7C7ECF527737F11EA3E2B6E4077B94EB7679CB371F50'
    }
  ],
  ledger_current_index: 990624,
  validated: false
}
[
  {
    "Flags": 0,
    "LedgerEntryType": "SignerList",
    "OwnerNode": "0000000000000000",
    "PreviousTxnID": "F5C29AA790682CF238F397610F98910D0947334EF63BA565B30BAE8029AE634E",
    "PreviousTxnLgrSeq": 549864,
    "SignerEntries": [
      {
        "SignerEntry": {
          "Account": "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq",
          "SignerWeight": 3
        }
      },
      {
        "SignerEntry": {
          "Account": "jUv833RRTAZhbUyRzSsAutM9GwbprregiE",
          "SignerWeight": 3
        }
      }
    ],
    "SignerQuorum": 5,
    "index": "D1A5CF852001ABB5FC6E7C7ECF527737F11EA3E2B6E4077B94EB7679CB371F50"
  }
]
返回结果说明
参数类型说明
accountString设置签名列表的源账号
account_objectsArray签名列表相关信息
  ----Object签名列表相关信息
    FlagsInteger交易标记
    LedgerEntryTypeString账本数据结构类型,SignerList 表示签名列表类型
    OwnerNodeString列表索引标记
    PreviousTxnIDString上一笔交易 hash
    PreviousTxnLgrSeqInteger上一笔交易所在账本号
    SignerEntriesArray签名列表
      SignerEntryObject单个签名对象
        AccountString签名者账号地址
        SignerWeightInteger该签名者在签名列表中的权重
    SignerQuorumInteger签名列表阈值
    indexString签名列表 id
ledger_current_indexString当前账本号
validatedBoolean当前账本中,交易是否通过验证

11.2 设置帐号的签名列表

首先通过 buildSignerListTx 方法返回一个 Transaction 对象,通过 submit 方法提交列表信息
11.2.1 创建签名列表对象
方法:remote.buildSignerListTx({})
参数
参数类型说明
accountString交易账号
thresholdInteger生效阈值
listsArray签名列表
  ---Object列表对象
    accountString帐号
    weightString权重

####### 注:不可将交易源账号设为签名列表名单内

返回:Transaction 对象
11.2.2 设置签名列表
方法:tx.submitPromise(secret)
参数: 密钥
参数类型说明
secretString钱包私钥
返回: Promise
设置帐号的签名列表完整例子
const jlib = require("@swtc/api")
var Remote = jlib.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
const a = {
  secret: "snaK5evc1SddiDca1BpZbg1UBft42",
  address: "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n"
}
const a1 = {
  secret: "ssmhW3gLLg8wLPzko3dx1LbuDcwCW",
  address: "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq"
}
const a2 = {
  secret: "ssXLTUGS6ZFRpGRs5p94BBu6mV1vv",
  address: "jUv833RRTAZhbUyRzSsAutM9GwbprregiE"
}
const log_json = object => console.log(JSON.stringify(object, "", 2))
const sleep = time => new Promise(res => setTimeout(() => res(), time || 1))

//设置签名列表
const tx = remote.buildSignerListTx({
  account: a.address,
  threshold: 7,
  lists: [
    { account: a1.address, weight: 4 },
    { account: a2.address, weight: 5 }
  ]
})

sleep()
  .then(async () => {
    await tx._setSequencePromise()
    log_json(tx.tx_json)
    console.log(`需要设置足够的燃料支持多签交易tx.setFee()`)
    tx.setFee(30000) // 燃料
    log_json(tx.tx_json)
    let result = await tx.submitPromise(a.secret)
    console.log(result)
    log_json(result.tx_json)
  })
  .catch(console.error)
输出
{
  "Flags": 0,
  "Fee": 10000,
  "SignerEntries": [
    {
      "SignerEntry": {
        "Account": "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq",
        "SignerWeight": 4
      }
    },
    {
      "SignerEntry": {
        "Account": "jUv833RRTAZhbUyRzSsAutM9GwbprregiE",
        "SignerWeight": 5
      }
    }
  ],
  "TransactionType": "SignerListSet",
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "SignerQuorum": 7,
  "Sequence": 20
}
需要设置足够的燃料支持多签交易tx.setFee()
{
  "Flags": 0,
  "Fee": 30000,
  "SignerEntries": [
    {
      "SignerEntry": {
        "Account": "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq",
        "SignerWeight": 4
      }
    },
    {
      "SignerEntry": {
        "Account": "jUv833RRTAZhbUyRzSsAutM9GwbprregiE",
        "SignerWeight": 5
      }
    }
  ],
  "TransactionType": "SignerListSet",
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "SignerQuorum": 7,
  "Sequence": 20
}
{
  engine_result: 'tesSUCCESS',
  engine_result_code: 0,
  engine_result_message: 'The transaction was applied. Only final in a validated ledger.',
  tx_blob: '1200CF220000000024000000142026000000076840000000000075307321024A02206AEFF63AF72BF6BE116073DE6D75E8D3404462CC73EC0F35207DF272287447304502210094001DBADCADE86B400E2D6DDA1D423F3182D8D2CBB9DB7C8AEDF798759E4E010220783C09F9E17812DC5FF768805A7E85DD5D830EDF0CC266C3C7D28657713C7B6381144EFA5550AA0B6A0C06793161C0D2EDC635469AC8FBEC130004811423A7CE52916DFDE210D371CF8487CFDB790B1DCBE1EC130005811482D518A6A562B198E72BC1B8976F83D996E3CCD5E1F1',
  tx_json: {
    Account: 'j3UbbRX36997CWXqYqLUn28qH55v9Dh37n',
    Fee: '30000',
    Flags: 0,
    Sequence: 20,
    SignerEntries: [ [Object], [Object] ],
    SignerQuorum: 7,
    SigningPubKey: '024A02206AEFF63AF72BF6BE116073DE6D75E8D3404462CC73EC0F35207DF27228',
    TransactionType: 'SignerListSet',
    TxnSignature: '304502210094001DBADCADE86B400E2D6DDA1D423F3182D8D2CBB9DB7C8AEDF798759E4E010220783C09F9E17812DC5FF768805A7E85DD5D830EDF0CC266C3C7D28657713C7B63',
    hash: '5F22F243B6235267C23CFC1C625E60C71355774F68638971638D1E3FC11347F8'
  }
}
{
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "Fee": "30000",
  "Flags": 0,
  "Sequence": 20,
  "SignerEntries": [
    {
      "SignerEntry": {
        "Account": "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq",
        "SignerWeight": 4
      }
    },
    {
      "SignerEntry": {
        "Account": "jUv833RRTAZhbUyRzSsAutM9GwbprregiE",
        "SignerWeight": 5
      }
    }
  ],
  "SignerQuorum": 7,
  "SigningPubKey": "024A02206AEFF63AF72BF6BE116073DE6D75E8D3404462CC73EC0F35207DF27228",
  "TransactionType": "SignerListSet",
  "TxnSignature": "304502210094001DBADCADE86B400E2D6DDA1D423F3182D8D2CBB9DB7C8AEDF798759E4E010220783C09F9E17812DC5FF768805A7E85DD5D830EDF0CC266C3C7D28657713C7B63",
  "hash": "5F22F243B6235267C23CFC1C625E60C71355774F68638971638D1E3FC11347F8"
}
返回结果说明
参数类型说明
engine_resultString请求结果
engine_result_codeArray请求结果编码
engine_result_messageString请求结果 message 信息
tx_blobString16 进制签名后的交易
tx_jsonObject交易内容
   AccountString交易源账号地址
   FeeString交易费
   FlagsInteger交易标记
   SequenceInteger单子序列号
   SignerEntriesArray签名列表条目;销毁列表时,没有该字段
      SignerEntryObject单个签名条目
         AccountString签名账号的地址
         SignerWeightString该签名在多重签名交易中的权重
   SignerQuorumInteger多重签名交易通过的阈值,应大于等于零,零表示销毁签名列表
   SigningPubKeyString签名公钥
   TransactionTypeString交易类型,设置签名列表类为 SignerListSet
   TxnSignatureString交易签名
   hashString交易 hash

11.3 废除帐号的主密钥

本功能为禁止某账号做交易而设定,且只有该账号设置了签名列表才可以废除 masterkey 成功。首先通过 buildAccountSetTx 方法返回一个 Transaction 对象,最后通过 submitPromise 方法提交到底层
11.3.1 创建废除密钥交易
方法:remote.buildAccountSetTx({})
参数
参数类型说明
accountString被废除或激活 masterkey 的账号
typeString类型,这里固定为 property
set_flagInteger4 表示废除
返回:Transaction 对象
11.3.2 废除
方法:tx.submitPromise(secret);
参数: 密钥
参数类型说明
secretString钱包私钥
返回: Promise
废除主密钥完整例子
const jlib = require("@swtc/api")
var Remote = jlib.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
const a = {
  secret: "snaK5evc1SddiDca1BpZbg1UBft42",
  address: "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n"
}
const log_json = object => console.log(JSON.stringify(object, "", 2))
const sleep = time => new Promise(res => setTimeout(() => res(), time || 1))

//设置废除主密钥
const tx = remote.buildAccountSetTx({
  account: a.address,
  type: "property",
  set_flag: 4
})

sleep()
  .then(async () => {
    await tx._setSequencePromise()
    log_json(tx.tx_json)
    let result = await tx.submitPromise(a.secret)
    console.log(result)
  })
  .catch(console.error)
输出
{
  "Flags": 0,
  "Fee": 10000,
  "TransactionType": "AccountSet",
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "SetFlag": 4,
  "Sequence": 21
}
{
  engine_result: 'tesSUCCESS',
  engine_result_code: 0,
  engine_result_message: 'The transaction was applied. Only final in a validated ledger.',
  tx_blob: '120003220000000024000000152021000000046840000000000027107321024A02206AEFF63AF72BF6BE116073DE6D75E8D3404462CC73EC0F35207DF27228744630440220065CCCA45E57AB9D4F5821C1D52610FD4A08ADB91A657D656AD04F89A156053002205F6EF6C6E19A017DB7EADE3F4ED2B3F5AA873BB662CD73934E925BF655B4E8DC81144EFA5550AA0B6A0C06793161C0D2EDC635469AC8',
  tx_json: {
    Account: 'j3UbbRX36997CWXqYqLUn28qH55v9Dh37n',
    Fee: '10000',
    Flags: 0,
    Sequence: 21,
    SetFlag: 4,
    SigningPubKey: '024A02206AEFF63AF72BF6BE116073DE6D75E8D3404462CC73EC0F35207DF27228',
    TransactionType: 'AccountSet',
    TxnSignature: '30440220065CCCA45E57AB9D4F5821C1D52610FD4A08ADB91A657D656AD04F89A156053002205F6EF6C6E19A017DB7EADE3F4ED2B3F5AA873BB662CD73934E925BF655B4E8DC',
    hash: '7211EA365F32F49B7CB0468A6254FD1ADD58934A7473062C4E15D43E25431FD4'
  }
}
返回结果说明
参数类型说明
engine_resultString请求结果
engine_result_codeArray请求结果编码
engine_result_messageString请求结果 message 信息
tx_blobString16 进制签名后的交易
tx_jsonObject交易内容
   AccountString交易源账号地址
   FeeString交易费
   FlagsInteger交易标记
   SequenceInteger单子序列号
   SetFlagInteger账号属性标记
   SigningPubKeyString签名公钥
   TransactionTypeString交易类型,账号属性类为 AccountSet
   TxnSignatureString交易签名
   hashString交易 hash

11.4 激活帐号的主密钥

激活通过多签列表中的账号去完成激活,如用账号 a1 和 a2 激活,详见下面例子
11.4.1 创建激活密钥交易
方法:remote.buildAccountSetTx({})
参数
参数类型说明
accountString被废除或激活 masterkey 的账号
typeString类型,这里固定为 property
clear_flagInteger4 表示激活主密钥,用于多签中激活 masterkey
返回:Transaction 对象
11.4.2 激活
方法:tx.submitPromise();
参数: 无
返回: Promise
激活主密钥完整例子
const jlib = require("@swtc/api")
var Remote = jlib.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
const a = {
  secret: "snaK5evc1SddiDca1BpZbg1UBft42",
  address: "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n"
}
const a1 = {
  secret: "ssmhW3gLLg8wLPzko3dx1LbuDcwCW",
  address: "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq"
}
const a2 = {
  secret: "ssXLTUGS6ZFRpGRs5p94BBu6mV1vv",
  address: "jUv833RRTAZhbUyRzSsAutM9GwbprregiE"
}
const log_json = object => console.log(JSON.stringify(object, "", 2))
const sleep = time => new Promise(res => setTimeout(() => res(), time || 1))

//设置激活主密钥
const tx = remote.buildAccountSetTx({
  account: a.address,
  type: "property",
  clear_flag: 4
})

sleep()
  .then(async () => {
    // 设置sequence
    await tx._setSequencePromise()
    log_json(tx.tx_json)
    console.log(`需要设置足够的燃料支持多签交易tx.setFee()`)
    tx.setFee(20000) // 燃料
    log_json(tx.tx_json)
    tx.multiSigning(a1)
    tx.multiSigning(a2)
    log_json(tx.tx_json)
    tx.multiSigned()
    log_json(tx.tx_json)
    let result = await tx.submitPromise() // multisign submit does not need any secret
    console.log(result)
    log_json(result.tx_json)
  })
  .catch(console.error)
输出
{
  "Flags": 0,
  "Fee": 10000,
  "TransactionType": "AccountSet",
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "ClearFlag": 4,
  "Sequence": 22
}
需要设置足够的燃料支持多签交易tx.setFee()
{
  "Flags": 0,
  "Fee": 20000,
  "TransactionType": "AccountSet",
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "ClearFlag": 4,
  "Sequence": 22
}
{
  "Flags": 0,
  "Fee": 20000,
  "TransactionType": "AccountSet",
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "ClearFlag": 4,
  "Sequence": 22,
  "SigningPubKey": "",
  "Signers": [
    {
      "Signer": {
        "Account": "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq",
        "SigningPubKey": "028749EB830410A57E89EC765DF551F7006CA19CFEBF4C43EFD87CDDA52976D2FF",
        "TxnSignature": "30450221008D4B0B6B8EE4E0E027192CD857697754A613DCB17DBEE35E7673867CA3D01930022005C0A4FCFCE258D694679B5A70CA7DDDDAFE7A465DD3DBC41CDC1E909F1C6D1C"
      }
    },
    {
      "Signer": {
        "Account": "jUv833RRTAZhbUyRzSsAutM9GwbprregiE",
        "SigningPubKey": "022EB4FEDEAA5EC1584B673A0B2C4425D0A98A4909EB39C10EC1C40631B0FB9C26",
        "TxnSignature": "30450221009F2AA42390A237C064D9D2FCF4C29F46356192EB65B6271E5269C9AE68E769F6022007F687CC2E4CBDC40266724748318B9879C74BFED7941DFE83ADE5B93261FEA4"
      }
    }
  ]
}
{
  "Flags": 0,
  "Fee": 20000,
  "TransactionType": "AccountSet",
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "ClearFlag": 4,
  "Sequence": 22,
  "SigningPubKey": "",
  "Signers": [
    {
      "Signer": {
        "Account": "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq",
        "SigningPubKey": "028749EB830410A57E89EC765DF551F7006CA19CFEBF4C43EFD87CDDA52976D2FF",
        "TxnSignature": "30450221008D4B0B6B8EE4E0E027192CD857697754A613DCB17DBEE35E7673867CA3D01930022005C0A4FCFCE258D694679B5A70CA7DDDDAFE7A465DD3DBC41CDC1E909F1C6D1C"
      }
    },
    {
      "Signer": {
        "Account": "jUv833RRTAZhbUyRzSsAutM9GwbprregiE",
        "SigningPubKey": "022EB4FEDEAA5EC1584B673A0B2C4425D0A98A4909EB39C10EC1C40631B0FB9C26",
        "TxnSignature": "30450221009F2AA42390A237C064D9D2FCF4C29F46356192EB65B6271E5269C9AE68E769F6022007F687CC2E4CBDC40266724748318B9879C74BFED7941DFE83ADE5B93261FEA4"
      }
    }
  ]
}
true
{
  engine_result: 'tesSUCCESS',
  engine_result_code: 0,
  engine_result_message: 'The transaction was applied. Only final in a validated ledger.',
  tx_blob: '12000322000000002400000016202200000004684000000000004E20730081144EFA5550AA0B6A0C06793161C0D2EDC635469AC8FCED7321028749EB830410A57E89EC765DF551F7006CA19CFEBF4C43EFD87CDDA52976D2FF744730450221008D4B0B6B8EE4E0E027192CD857697754A613DCB17DBEE35E7673867CA3D01930022005C0A4FCFCE258D694679B5A70CA7DDDDAFE7A465DD3DBC41CDC1E909F1C6D1C811423A7CE52916DFDE210D371CF8487CFDB790B1DCBE1ED7321022EB4FEDEAA5EC1584B673A0B2C4425D0A98A4909EB39C10EC1C40631B0FB9C26744730450221009F2AA42390A237C064D9D2FCF4C29F46356192EB65B6271E5269C9AE68E769F6022007F687CC2E4CBDC40266724748318B9879C74BFED7941DFE83ADE5B93261FEA4811482D518A6A562B198E72BC1B8976F83D996E3CCD5E1F1',
  tx_json: {
    Account: 'j3UbbRX36997CWXqYqLUn28qH55v9Dh37n',
    ClearFlag: 4,
    Fee: '20000',
    Flags: 0,
    Sequence: 22,
    Signers: [ [Object], [Object] ],
    SigningPubKey: '',
    TransactionType: 'AccountSet',
    hash: '17254C4615EFF245205DC9E064A21CDE54177CD936E27C1E84ACDD94B6E84D46'
  }
}
{
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "ClearFlag": 4,
  "Fee": "20000",
  "Flags": 0,
  "Sequence": 22,
  "Signers": [
    {
      "Signer": {
        "Account": "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq",
        "SigningPubKey": "028749EB830410A57E89EC765DF551F7006CA19CFEBF4C43EFD87CDDA52976D2FF",
        "TxnSignature": "30450221008D4B0B6B8EE4E0E027192CD857697754A613DCB17DBEE35E7673867CA3D01930022005C0A4FCFCE258D694679B5A70CA7DDDDAFE7A465DD3DBC41CDC1E909F1C6D1C"
      }
    },
    {
      "Signer": {
        "Account": "jUv833RRTAZhbUyRzSsAutM9GwbprregiE",
        "SigningPubKey": "022EB4FEDEAA5EC1584B673A0B2C4425D0A98A4909EB39C10EC1C40631B0FB9C26",
        "TxnSignature": "30450221009F2AA42390A237C064D9D2FCF4C29F46356192EB65B6271E5269C9AE68E769F6022007F687CC2E4CBDC40266724748318B9879C74BFED7941DFE83ADE5B93261FEA4"
      }
    }
  ],
  "SigningPubKey": "",
  "TransactionType": "AccountSet",
  "hash": "17254C4615EFF245205DC9E064A21CDE54177CD936E27C1E84ACDD94B6E84D46"
}
返回结果说明
参数类型说明
engine_resultString请求结果
engine_result_codeArray请求结果编码
engine_result_messageString请求结果 message 信息
tx_blobString16 进制签名后的交易
tx_jsonObject交易内容
   AccountString交易源账号地址
   ClearFlagInteger账号属性标记
   FeeString交易费
   FlagsInteger交易标记
   SequenceInteger单子序列号
   SignersArray签名列表条目;销毁列表时,没有该字段
      SignerObject单个签名条目
         AccountString给该交易签名的账号地址
         SigningPubKeyString给该交易签名的账号公钥
         TxnSignatureStringAccount 账号给该交易的交易签名
   SigningPubKeyString签名公钥
   TransactionTypeString交易类型,账号属性类为 AccountSet
   hashString交易 hash

11.5 多重签名 - tx.multiSigning, tx.multiSigned

通过 Transaction 多签, 创建正常交易,然后依次进行多签(multiSigning), 最后确认(multiSigned)提交(tx.submitPromise)
11.5.1 创建正常交易
方法:remote.buildPaymentTx({})
返回:Transaction 对象
11.5.2 多重签名
方法:tx.multiSigning() ... tx.multiSigned()
参数:
返回: tx
11.5.3 交易
方法:tx.submitPromise()
返回: promise
多签支付完整例子
const jlib = require("@swtc/api")
var Remote = jlib.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
const a = {
  secret: "snaK5evc1SddiDca1BpZbg1UBft42",
  address: "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n"
}
const a1 = {
  secret: "ssmhW3gLLg8wLPzko3dx1LbuDcwCW",
  address: "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq"
}
const a2 = {
  secret: "ssXLTUGS6ZFRpGRs5p94BBu6mV1vv",
  address: "jUv833RRTAZhbUyRzSsAutM9GwbprregiE"
}

let to = "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz"
const log_json = object => console.log(JSON.stringify(object, "", 2))
const sleep = time => new Promise(res => setTimeout(() => res(), time || 1))

// 创建支付交易
let tx = remote.buildPaymentTx({
  account: a.address,
  to,
  amount: remote.makeAmount(1)
})
tx.addMemo("multisigned payment test")

sleep()
  .then(async () => {
    // 设置sequence
    await tx._setSequencePromise()
    console.log(`需要设置足够的燃料支持多签交易tx.setFee()`)
    tx.setFee(20000) // 燃料
    log_json(tx.tx_json)
    tx = tx.multiSigning(a1)
    log_json(tx.tx_json)
    // tx.tx_json 需要依次传递给不同的多签方
    let tx_json = tx.tx_json
    // 然后重组成tx
    let tx2 = remote.buildMultisignedTx(tx_json)
    tx2.multiSigning(a2)
    log_json(tx2.tx_json)
    tx2.multiSigned()
    log_json(tx2.tx_json)
    let result = await tx2.submitPromise() // multisign submit does not need any secret
    console.log(result)
    log_json(result.tx_json)
  })
  .catch(console.error)
输出
需要设置足够的燃料支持多签交易tx.setFee()
{
  "Flags": 0,
  "Fee": 20000,
  "TransactionType": "Payment",
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "Amount": "1000000",
  "Destination": "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  "Memos": [
    {
      "Memo": {
        "MemoData": "6d756c74697369676e6564207061796d656e742074657374"
      }
    }
  ],
  "Sequence": 23
}
{
  "Flags": 0,
  "Fee": 20000,
  "TransactionType": "Payment",
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "Amount": "1000000",
  "Destination": "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  "Memos": [
    {
      "Memo": {
        "MemoData": "6d756c74697369676e6564207061796d656e742074657374"
      }
    }
  ],
  "Sequence": 23,
  "SigningPubKey": "",
  "Signers": [
    {
      "Signer": {
        "Account": "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq",
        "SigningPubKey": "028749EB830410A57E89EC765DF551F7006CA19CFEBF4C43EFD87CDDA52976D2FF",
        "TxnSignature": "3045022100DD3C6FB4E271A6010C67F4D34F73074FEAFA32C90A7F9558BB05D919F3EC009C0220349CB803473D4E633564380F9F58E5B58747986E18B35ABB7C4C2463BDA83E6C"
      }
    }
  ]
}
{
  "Flags": 0,
  "Fee": 20000,
  "TransactionType": "Payment",
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "Amount": "1000000",
  "Destination": "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  "Memos": [
    {
      "Memo": {
        "MemoData": "6d756c74697369676e6564207061796d656e742074657374"
      }
    }
  ],
  "Sequence": 23,
  "SigningPubKey": "",
  "Signers": [
    {
      "Signer": {
        "Account": "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq",
        "SigningPubKey": "028749EB830410A57E89EC765DF551F7006CA19CFEBF4C43EFD87CDDA52976D2FF",
        "TxnSignature": "3045022100DD3C6FB4E271A6010C67F4D34F73074FEAFA32C90A7F9558BB05D919F3EC009C0220349CB803473D4E633564380F9F58E5B58747986E18B35ABB7C4C2463BDA83E6C"
      }
    },
    {
      "Signer": {
        "Account": "jUv833RRTAZhbUyRzSsAutM9GwbprregiE",
        "SigningPubKey": "022EB4FEDEAA5EC1584B673A0B2C4425D0A98A4909EB39C10EC1C40631B0FB9C26",
        "TxnSignature": "3044022100F5FFE445A60A7A689CED595D2848632353867535FA95B28739592B41A1B193F0021F2B6B5D839506B5DC2065612AB34DDB7EAEBEF7F49A4334C273D1F446F89674"
      }
    }
  ]
}
{
  "Flags": 0,
  "Fee": 20000,
  "TransactionType": "Payment",
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "Amount": "1000000",
  "Destination": "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  "Memos": [
    {
      "Memo": {
        "MemoData": "6d756c74697369676e6564207061796d656e742074657374"
      }
    }
  ],
  "Sequence": 23,
  "SigningPubKey": "",
  "Signers": [
    {
      "Signer": {
        "Account": "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq",
        "SigningPubKey": "028749EB830410A57E89EC765DF551F7006CA19CFEBF4C43EFD87CDDA52976D2FF",
        "TxnSignature": "3045022100DD3C6FB4E271A6010C67F4D34F73074FEAFA32C90A7F9558BB05D919F3EC009C0220349CB803473D4E633564380F9F58E5B58747986E18B35ABB7C4C2463BDA83E6C"
      }
    },
    {
      "Signer": {
        "Account": "jUv833RRTAZhbUyRzSsAutM9GwbprregiE",
        "SigningPubKey": "022EB4FEDEAA5EC1584B673A0B2C4425D0A98A4909EB39C10EC1C40631B0FB9C26",
        "TxnSignature": "3044022100F5FFE445A60A7A689CED595D2848632353867535FA95B28739592B41A1B193F0021F2B6B5D839506B5DC2065612AB34DDB7EAEBEF7F49A4334C273D1F446F89674"
      }
    }
  ]
}
{
  engine_result: 'tesSUCCESS',
  engine_result_code: 0,
  engine_result_message: 'The transaction was applied. Only final in a validated ledger.',
  tx_blob: '120000220000000024000000176140000000000F4240684000000000004E20730081144EFA5550AA0B6A0C06793161C0D2EDC635469AC883141359AA928F4D98FDB3D93E8B690C80D37DED11C3F9EA7D186D756C74697369676E6564207061796D656E742074657374E1F1FCED7321028749EB830410A57E89EC765DF551F7006CA19CFEBF4C43EFD87CDDA52976D2FF74473045022100DD3C6FB4E271A6010C67F4D34F73074FEAFA32C90A7F9558BB05D919F3EC009C0220349CB803473D4E633564380F9F58E5B58747986E18B35ABB7C4C2463BDA83E6C811423A7CE52916DFDE210D371CF8487CFDB790B1DCBE1ED7321022EB4FEDEAA5EC1584B673A0B2C4425D0A98A4909EB39C10EC1C40631B0FB9C2674463044022100F5FFE445A60A7A689CED595D2848632353867535FA95B28739592B41A1B193F0021F2B6B5D839506B5DC2065612AB34DDB7EAEBEF7F49A4334C273D1F446F89674811482D518A6A562B198E72BC1B8976F83D996E3CCD5E1F1',
  tx_json: {
    Account: 'j3UbbRX36997CWXqYqLUn28qH55v9Dh37n',
    Amount: '1000000',
    Destination: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
    Fee: '20000',
    Flags: 0,
    Memos: [ [Object] ],
    Sequence: 23,
    Signers: [ [Object], [Object] ],
    SigningPubKey: '',
    TransactionType: 'Payment',
    hash: '297687746C738E61D30399C58D0410C8B604C74A93E19F1910FBA5B95C50976E'
  }
}
{
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "Amount": "1000000",
  "Destination": "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  "Fee": "20000",
  "Flags": 0,
  "Memos": [
    {
      "Memo": {
        "MemoData": "6D756C74697369676E6564207061796D656E742074657374"
      }
    }
  ],
  "Sequence": 23,
  "Signers": [
    {
      "Signer": {
        "Account": "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq",
        "SigningPubKey": "028749EB830410A57E89EC765DF551F7006CA19CFEBF4C43EFD87CDDA52976D2FF",
        "TxnSignature": "3045022100DD3C6FB4E271A6010C67F4D34F73074FEAFA32C90A7F9558BB05D919F3EC009C0220349CB803473D4E633564380F9F58E5B58747986E18B35ABB7C4C2463BDA83E6C"
      }
    },
    {
      "Signer": {
        "Account": "jUv833RRTAZhbUyRzSsAutM9GwbprregiE",
        "SigningPubKey": "022EB4FEDEAA5EC1584B673A0B2C4425D0A98A4909EB39C10EC1C40631B0FB9C26",
        "TxnSignature": "3044022100F5FFE445A60A7A689CED595D2848632353867535FA95B28739592B41A1B193F0021F2B6B5D839506B5DC2065612AB34DDB7EAEBEF7F49A4334C273D1F446F89674"
      }
    }
  ],
  "SigningPubKey": "",
  "TransactionType": "Payment",
  "hash": "297687746C738E61D30399C58D0410C8B604C74A93E19F1910FBA5B95C50976E"
}
返回结果说明
参数类型说明
engine_resultString请求结果
engine_result_codeArray请求结果编码
engine_result_messageString请求结果 message 信息
tx_blobString16 进制签名后的交易
tx_jsonObject交易内容
   AccountString交易源账号地址
   FeeString交易费
   FlagsInteger交易标记
   SequenceInteger单子序列号
   ----相关交易对应的其他字段,如 Payment 类型有 Amount、Destination 字段,这里不一一列举
   SignersArray签名列表条目;销毁列表时,没有该字段
      SignerObject单个签名条目
         AccountString给该交易签名的账号地址
         SigningPubKeyString给该交易签名的账号公钥
         TxnSignatureStringAccount 账号给该交易的交易签名
   SigningPubKeyString交易签名公钥,必须为空字符串
   TransactionTypeString交易类型
   hashString交易 hash,该 hash 可在链上查到

11.6 多重签名 - remote.buildSignFirstTx, remote.buildSignOtherTx, remote.buildMultisignedTx

通过 Transaction 多签, 创建正常交易,然后依次进行多签(multiSigning), 最后确认(multiSigned)提交(tx.submitPromise)
11.6.1 创建正常交易
方法:remote.buildPaymentTx({})
返回:Transaction 对象
11.6.2 多重签名
方法:remote.buildSignFirstTx({}) ... remote.buildSignOtherTx({}), remote.buildMultisignedTx(tx_json), tx.multiSigned()
参数:
返回: tx
11.6.3 交易
方法:tx.submitPromise()
返回: promise
多签支付完整例子
const jlib = require("@swtc/api")
var Remote = jlib.Remote
var remote = new Remote({ server: "http://swtcproxy.swtclib.ca:5080" })
const a = {
  secret: "snaK5evc1SddiDca1BpZbg1UBft42",
  address: "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n"
}
const a1 = {
  secret: "ssmhW3gLLg8wLPzko3dx1LbuDcwCW",
  address: "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq"
}
const a2 = {
  secret: "ssXLTUGS6ZFRpGRs5p94BBu6mV1vv",
  address: "jUv833RRTAZhbUyRzSsAutM9GwbprregiE"
}

let to = "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz"
const log_json = object => console.log(JSON.stringify(object, "", 2))
const sleep = time => new Promise(res => setTimeout(() => res(), time || 1))

// 创建支付交易
let tx = remote.buildPaymentTx({
  account: a.address,
  to,
  amount: remote.makeAmount(1)
})
tx.addMemo("multisigned payment test")

sleep()
  .then(async () => {
    // 设置sequence
    await tx._setSequencePromise()
    console.log(`需要设置足够的燃料支持多签交易tx.setFee()`)
    tx.setFee(20000) // 燃料
    log_json(tx.tx_json)
    tx = remote.buildSignFirstTx({ tx, account: a1.address, secret: a1.secret })
    log_json(tx.tx_json)
    // tx.tx_json 需要依次传递给不同的多签方
    let tx_json = tx.tx_json
    // 然后重组成tx
    let tx2 = remote.buildSignOtherTx({
      tx_json,
      account: a2.address,
      secret: a2.secret
    })
    log_json(tx2.tx_json)
    let tx3 = remote.buildMultisignedTx(tx2.tx_json)
    log_json(tx3.tx_json)
    tx3.multiSigned()
    log_json(tx3.tx_json)
    let result = await tx3.submitPromise() // multisign submit does not need any secret
    console.log(result)
    log_json(result.tx_json)
  })
  .catch(console.error)
输出
需要设置足够的燃料支持多签交易tx.setFee()
{
  "Flags": 0,
  "Fee": 20000,
  "TransactionType": "Payment",
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "Amount": "1000000",
  "Destination": "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  "Memos": [
    {
      "Memo": {
        "MemoData": "6d756c74697369676e6564207061796d656e742074657374"
      }
    }
  ],
  "Sequence": 24
}
{
  "Flags": 0,
  "Fee": 20000,
  "TransactionType": "Payment",
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "Amount": "1000000",
  "Destination": "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  "Memos": [
    {
      "Memo": {
        "MemoData": "6d756c74697369676e6564207061796d656e742074657374"
      }
    }
  ],
  "Sequence": 24,
  "SigningPubKey": "",
  "Signers": [
    {
      "Signer": {
        "Account": "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq",
        "SigningPubKey": "028749EB830410A57E89EC765DF551F7006CA19CFEBF4C43EFD87CDDA52976D2FF",
        "TxnSignature": "3044022023CCB793A4AC5912B4CD7BEFD769B30DED870634E94C2C127DCA7572C6B62A060220790AC05A5D2B9CB5BBFCCBCECC0F18A4B6202FBB8E2B4F82D14353A32F16F5DA"
      }
    }
  ]
}
{
  "Flags": 0,
  "Fee": 20000,
  "TransactionType": "Payment",
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "Amount": "1000000",
  "Destination": "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  "Memos": [
    {
      "Memo": {
        "MemoData": "6d756c74697369676e6564207061796d656e742074657374"
      }
    }
  ],
  "Sequence": 24,
  "SigningPubKey": "",
  "Signers": [
    {
      "Signer": {
        "Account": "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq",
        "SigningPubKey": "028749EB830410A57E89EC765DF551F7006CA19CFEBF4C43EFD87CDDA52976D2FF",
        "TxnSignature": "3044022023CCB793A4AC5912B4CD7BEFD769B30DED870634E94C2C127DCA7572C6B62A060220790AC05A5D2B9CB5BBFCCBCECC0F18A4B6202FBB8E2B4F82D14353A32F16F5DA"
      }
    },
    {
      "Signer": {
        "Account": "jUv833RRTAZhbUyRzSsAutM9GwbprregiE",
        "SigningPubKey": "022EB4FEDEAA5EC1584B673A0B2C4425D0A98A4909EB39C10EC1C40631B0FB9C26",
        "TxnSignature": "304402204DEA0D84FCCA5D3181D2535B9297879547B54C898BDA2C55C05B07C34609521F022013496CE02FFA94890364FE7BDA3BD4A0CEFED5CF9DD458B072F003C153BCEA92"
      }
    }
  ]
}
{
  "Flags": 0,
  "Fee": 20000,
  "TransactionType": "Payment",
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "Amount": "1000000",
  "Destination": "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  "Memos": [
    {
      "Memo": {
        "MemoData": "6d756c74697369676e6564207061796d656e742074657374"
      }
    }
  ],
  "Sequence": 24,
  "SigningPubKey": "",
  "Signers": [
    {
      "Signer": {
        "Account": "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq",
        "SigningPubKey": "028749EB830410A57E89EC765DF551F7006CA19CFEBF4C43EFD87CDDA52976D2FF",
        "TxnSignature": "3044022023CCB793A4AC5912B4CD7BEFD769B30DED870634E94C2C127DCA7572C6B62A060220790AC05A5D2B9CB5BBFCCBCECC0F18A4B6202FBB8E2B4F82D14353A32F16F5DA"
      }
    },
    {
      "Signer": {
        "Account": "jUv833RRTAZhbUyRzSsAutM9GwbprregiE",
        "SigningPubKey": "022EB4FEDEAA5EC1584B673A0B2C4425D0A98A4909EB39C10EC1C40631B0FB9C26",
        "TxnSignature": "304402204DEA0D84FCCA5D3181D2535B9297879547B54C898BDA2C55C05B07C34609521F022013496CE02FFA94890364FE7BDA3BD4A0CEFED5CF9DD458B072F003C153BCEA92"
      }
    }
  ]
}
{
  "Flags": 0,
  "Fee": 20000,
  "TransactionType": "Payment",
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "Amount": "1000000",
  "Destination": "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  "Memos": [
    {
      "Memo": {
        "MemoData": "6d756c74697369676e6564207061796d656e742074657374"
      }
    }
  ],
  "Sequence": 24,
  "SigningPubKey": "",
  "Signers": [
    {
      "Signer": {
        "Account": "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq",
        "SigningPubKey": "028749EB830410A57E89EC765DF551F7006CA19CFEBF4C43EFD87CDDA52976D2FF",
        "TxnSignature": "3044022023CCB793A4AC5912B4CD7BEFD769B30DED870634E94C2C127DCA7572C6B62A060220790AC05A5D2B9CB5BBFCCBCECC0F18A4B6202FBB8E2B4F82D14353A32F16F5DA"
      }
    },
    {
      "Signer": {
        "Account": "jUv833RRTAZhbUyRzSsAutM9GwbprregiE",
        "SigningPubKey": "022EB4FEDEAA5EC1584B673A0B2C4425D0A98A4909EB39C10EC1C40631B0FB9C26",
        "TxnSignature": "304402204DEA0D84FCCA5D3181D2535B9297879547B54C898BDA2C55C05B07C34609521F022013496CE02FFA94890364FE7BDA3BD4A0CEFED5CF9DD458B072F003C153BCEA92"
      }
    }
  ]
}
{
  engine_result: 'tesSUCCESS',
  engine_result_code: 0,
  engine_result_message: 'The transaction was applied. Only final in a validated ledger.',
  tx_blob: '120000220000000024000000186140000000000F4240684000000000004E20730081144EFA5550AA0B6A0C06793161C0D2EDC635469AC883141359AA928F4D98FDB3D93E8B690C80D37DED11C3F9EA7D186D756C74697369676E6564207061796D656E742074657374E1F1FCED7321028749EB830410A57E89EC765DF551F7006CA19CFEBF4C43EFD87CDDA52976D2FF74463044022023CCB793A4AC5912B4CD7BEFD769B30DED870634E94C2C127DCA7572C6B62A060220790AC05A5D2B9CB5BBFCCBCECC0F18A4B6202FBB8E2B4F82D14353A32F16F5DA811423A7CE52916DFDE210D371CF8487CFDB790B1DCBE1ED7321022EB4FEDEAA5EC1584B673A0B2C4425D0A98A4909EB39C10EC1C40631B0FB9C267446304402204DEA0D84FCCA5D3181D2535B9297879547B54C898BDA2C55C05B07C34609521F022013496CE02FFA94890364FE7BDA3BD4A0CEFED5CF9DD458B072F003C153BCEA92811482D518A6A562B198E72BC1B8976F83D996E3CCD5E1F1',
  tx_json: {
    Account: 'j3UbbRX36997CWXqYqLUn28qH55v9Dh37n',
    Amount: '1000000',
    Destination: 'jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz',
    Fee: '20000',
    Flags: 0,
    Memos: [ [Object] ],
    Sequence: 24,
    Signers: [ [Object], [Object] ],
    SigningPubKey: '',
    TransactionType: 'Payment',
    hash: '7FA74E186AA850773A40E8E591F8E3AEB78777D4E0D9F38974E33441FE55E92E'
  }
}
{
  "Account": "j3UbbRX36997CWXqYqLUn28qH55v9Dh37n",
  "Amount": "1000000",
  "Destination": "jpmKEm2sUevfpFjS7QHdT8Sx7ZGoEXTJAz",
  "Fee": "20000",
  "Flags": 0,
  "Memos": [
    {
      "Memo": {
        "MemoData": "6D756C74697369676E6564207061796D656E742074657374"
      }
    }
  ],
  "Sequence": 24,
  "Signers": [
    {
      "Signer": {
        "Account": "jhEXgnPdLijQ8Gaqz4FCxUFAQE31LqoNMq",
        "SigningPubKey": "028749EB830410A57E89EC765DF551F7006CA19CFEBF4C43EFD87CDDA52976D2FF",
        "TxnSignature": "3044022023CCB793A4AC5912B4CD7BEFD769B30DED870634E94C2C127DCA7572C6B62A060220790AC05A5D2B9CB5BBFCCBCECC0F18A4B6202FBB8E2B4F82D14353A32F16F5DA"
      }
    },
    {
      "Signer": {
        "Account": "jUv833RRTAZhbUyRzSsAutM9GwbprregiE",
        "SigningPubKey": "022EB4FEDEAA5EC1584B673A0B2C4425D0A98A4909EB39C10EC1C40631B0FB9C26",
        "TxnSignature": "304402204DEA0D84FCCA5D3181D2535B9297879547B54C898BDA2C55C05B07C34609521F022013496CE02FFA94890364FE7BDA3BD4A0CEFED5CF9DD458B072F003C153BCEA92"
      }
    }
  ],
  "SigningPubKey": "",
  "TransactionType": "Payment",
  "hash": "7FA74E186AA850773A40E8E591F8E3AEB78777D4E0D9F38974E33441FE55E92E"
}
返回结果说明
参数类型说明
engine_resultString请求结果
engine_result_codeArray请求结果编码
engine_result_messageString请求结果 message 信息
tx_blobString16 进制签名后的交易
tx_jsonObject交易内容
   AccountString交易源账号地址
   FeeString交易费
   FlagsInteger交易标记
   SequenceInteger单子序列号
   ----相关交易对应的其他字段,如 Payment 类型有 Amount、Destination 字段,这里不一一列举
   SignersArray签名列表条目;销毁列表时,没有该字段
      SignerObject单个签名条目
         AccountString给该交易签名的账号地址
         SigningPubKeyString给该交易签名的账号公钥
         TxnSignatureStringAccount 账号给该交易的交易签名
   SigningPubKeyString交易签名公钥,必须为空字符串
   TransactionTypeString交易类型
   hashString交易 hash,该 hash 可在链上查到