开发文档

在Stream网络中转账

此篇内容尚无原站英文对应版本;切换语言后可浏览英文资料库。
示例代码:
StreamSimple.send = function(srcAccount,destAddressAndAmount,callback){

  var ss = new StreamSimple();
  var result = {};
  result.tx = {
    from: srcAccount.account,
    to: destAddressAndAmount.account,
    amount: {
      value : destAddressAndAmount.amount.value,
      currency: destAddressAndAmount.amount.currency,
      issuer: destAddressAndAmount.amount.issuer
    }
  };
  if(!!destAddressAndAmount.memo)
    result.tx.memo = destAddressAndAmount.memo;
  if(!!destAddressAndAmount.dt)
    result.tx.dt = destAddressAndAmount.dt;

  if (!stream.UInt160.is_valid(String(srcAccount.account))){
    result.state = "error";
    result.msg = "src address is invalid";
    var err  = new Error('src address is invalid');
    return callback(err,result);
  }
  if (!stream.UInt160.is_valid(String(destAddressAndAmount.account))){
    result.state = "error";
    result.msg = "dest address is invalid";
    var err  = new Error('dest address is invalid');
    return callback(err,result);
  }
  var dt = parseInt(destAddressAndAmount.dt);
  if (!dt){
    result.state = "error";
    result.msg = "dt should be Int";
    var err  = new Error('dt error');
    return callback(err,result);
  }

  if (destAddressAndAmount.amount.currency === ss._native) {
    var amount = accMul(destAddressAndAmount.amount.value, ss._drops);
  } else {
      //prepare the transaction
      var amount = {};
      amount.currency = destAddressAndAmount.amount.currency;
      amount.value = String(destAddressAndAmount.amount.value);
      amount.issuer = destAddressAndAmount.account;
      var sendMax = {
        currency : destAddressAndAmount.amount.currency,
        issuer : destAddressAndAmount.amount.issuer,
        value : String(accMul(destAddressAndAmount.amount.value, 1.2))
      };
    }

    ss._remote.connect();
    ss._remote.setSecret(srcAccount.account, srcAccount.secret);
    var transaction = ss._remote.createTransaction('Payment', {
        account : srcAccount.account,
        destination : destAddressAndAmount.account,
        amount : amount
    });
    if(!!destAddressAndAmount.memo)
      transaction.addMemo(encodeURI('memo'), encodeURI(destAddressAndAmount.memo));
    if (!!sendMax) {
      transaction.sendMax(sendMax);
    }
    transaction.destination_tag(dt);
    //set last ledger
    transaction.lastLedger(ss._remote._ledger_current_index + 3);
    //submit the transaction
    transaction.submit(function (error, raw) {
      ss._remote.disconnect();
      if (error){
        console.log(error);
        var err = new Error(error.engine_result_message);
        result.state = 'error';
        result.engine_result = error.engine_result;
        result.msg = error.engine_result_message;
        return callback(err,result);
      }else{
        result.hash = raw.tx_json.hash;
        result.state = 'success';
        result.engine_result = raw.engine_result;
        result.msg = raw.engine_result_message;
        return callback(null,result);
      }
    });
  }
请求参数:
名称 类型 描述
srcAccount String 转账发起方信息
destAddressAndAmount String 转账接收方信息
callback description description
返回结果:
名称 类型 描述
from String 转账钱包地址
to String 接收钱包地址
amount Object 结果集,参考amount
memo String 该次发送的附言
dt Number 数字标签
hash String 交易的hash
state String 向网络提交的结果
msg String 本次转账的结果信息
engine_result String 本次转账的结果代码
 
THE NEXT CONNECTION

下一次连接,从这里开始。

加入 Stream 社区,一起探索价值互联。

联系我们