第一种,使用eosjs开发,适用于用户输入私钥方式,不安全,易造成私钥泄露。

const rpcUrl = 'http://jungle2.cryptolions.io:80'

const { Api, JsonRpc, RpcError, JsSignatureProvider } = require('eosjs');

const ecc = require('eosjs-ecc');

const fetch = require('node-fetch');

const { TextDecoder, TextEncoder } = require('text-encoding');

const rpc = new JsonRpc(rpcUrl, { fetch });

//转账操作 转账到账户accountName 'eosaccountb2';转账数额quantity '1.1234 EOS'

async function transfer(accountName,quantity) {

let signatureProvider = new JsSignatureProvider([pkeys[0].privateKey]);

let api = new Api({ rpc, signatureProvider, textDecoder: new TextDecoder(), textEncoder: new TextEncoder() });

let result = await api.transact({

actions: [{

account: 'eosio.token',

name: 'transfer',

authorization: [{

actor: pkeys[0].actor,

permission: 'active',

}],

data: {

from: pkeys[0].actor,

to: accountName,//提现地址

quantity: quantity, //提现数量

memo: '',

},

}]

}, {

blocksBehind: 3,

expireSeconds: 30,

});

console.dir(result);

};

第二种,使用nodeos api+wallet api开发,适合用于公共账户给不同用户转账。相当于用wallet钱包服务来做密钥管理,隐藏了私钥,代码中只需提供公钥和钱包服务地址即可。

async function transfer() {

try {

let actor = "eosaccountaa"

let transferTo = "eosaccountbb"

let quantity = "1.1234 EOS"

let memo = "hi heere"

let blocksBehind = 3

let expireSeconds = 100

let info = await rpc.get_info();

if (info != null && info.chain_id != null && info.head_block_num != null) {

let chain_id = info.chain_id;

let head_block_num = info.head_block_num - blocksBehind;

let block = await get_block(head_block_num);

if (block != null && block.ref_block_prefix != null && block.timestamp != null) {

let data = await abi_json_to_bin(actor, transferTo, quantity, memo)

if (data != null) {

let transactions = {

"max_net_usage_words": 0,

"max_cpu_usage_ms": 0,

"delay_sec": 0,

"context_free_actions": [],

"actions": [{

"account": "eosio.token",

"name": "transfer",

"authorization": [{

"actor": actor,

"permission": "active"

}],

"data": data

}],

"transaction_extensions": [],

"expiration": ser.timePointSecToDate(ser.dateToTimePointSec(block.timestamp) + expireSeconds),

"ref_block_num": block.block_num & 0xffff,

"ref_block_prefix": block.ref_block_prefix

};

let signTransaction = await sign_transaction(transactions, ["EOS61VncKc7P8MhKzz8K7s3kAeNxFsp5ZQGoVFbLjRh1NVR1B6D9Z"], chain_id);

if (signTransaction != null && signTransaction.signatures != null) {

var transaction_detail = await push_transaction(transactions, signTransaction.signatures);

console.log('push_transaction=transaction_id==' + transaction_detail.transaction_id);

}

}

}

}

} catch (e) {

console.log(e)

}

}

matlab找数据的转账点,nodejs开发EOS转账服务的两种方案相关推荐

  1. 解决Android Studio等开发软件出现更新TKK失败的两种方案

    解决Android Studio等开发软件出现更新TKK失败的两种方案 方案一 配置hosts 1. 配置域名与IP 2.扫描国内可用的IP 方案二 替换翻译引擎 百度翻译引擎 在Android St ...

  2. Wordpress开发 - 获取作者头像的两种方法

    写在前面 今天又被一个头像坑搞惨了,一般我们获取作者的信息是都需要在循环判断中才可以使用的!比如获取作者名称 <?php the_author(); ?> .如果没有在 <?php ...

  3. 【Win 10 应用开发】文件读写的三种方案

    本文老周就跟伙伴们探讨一下关于文件读写的方法.总得来说嘛,有三种方案可以用,而且每种方案都各有特色,也说不上哪种较好.反正你得记住老祖宗留给我们的大智慧--事无定法,灵活运用者为上. OK,咱们开始吧 ...

  4. golang 开发 Struct 转换成 map 两种方式比较

    原文链接:https://www.jianshu.com/p/81c4304f6d1b 最近做Go开发的时候接触到了一个新的orm第三方框架gorose,在使用的过程中,发现没有类似beego进行直接 ...

  5. Go开发Struct转换成map两种方式比较

    最近做Go开发的时候接触到了一个新的orm第三方框架gorose,在使用的过程中,发现没有类似beego进行直接对struct结构进行操作的方法,有部分API是通过map进行数据库相关操作,那么就需要 ...

  6. Servlet 开发【07】Servlet两种跳转

    回顾: 关于跳转之前就强调过有两种: 1. 客户端跳转: 地址栏跳转之后改变,而且无法传递request范围的属性,是在所有的操作执行完毕之后才发生跳转的操作,语法:request.sendRedir ...

  7. unity 2D游戏开发 制作帧动画的两种方法

    本小主在这里给大家分享一下unity 2D游戏开发中制作帧动画的两种方法. 比较简单,一学即会. 方法一: 是用代码控制: 先创建一个2D工程.导入图片资源,并设置texture的texture ty ...

  8. SAP EWM 更改过账日期(手动、开发两种方案)

    对于EWM手动进行过账日期更改,目前大致有两种实现方法: 第一种,对于卡在ECC-SMQ2中的Inbound Queue而言,可以手动去改/SPE/CL_IBDLV_CONTROL这个类去实现. 第二 ...

  9. 一个基于nodejs开发的微服务脚手架应用,架构和CRM WebUI很像

    看我画的时序图: 块状图: 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

最新文章

  1. 2017清华本科生特等奖得主出炉,AI学霸乔明达获奖
  2. 域控服务器发生w32time错误
  3. NB-IoT这块热豆腐公认可口 但勿太心急
  4. 网络传输为什么要序列化_企业为什么要选择网络营销外包
  5. @ConfigurationProperties注解的使用与@Value的使用
  6. 使用memcache缓存
  7. 加密安装Kli Linux
  8. SQLite多线程使用总结
  9. 密码学专题 OpenSSL中SSL相关指令
  10. 用RDLC报表(一)
  11. 江苏大学考研885程序设计 - 填空选择知识点
  12. STM32 学习周记
  13. plc编程和python的联系_Python与三菱PLC通信
  14. Python如何开发一款连连看脚本,第一必须是我。
  15. Java中serialVersionUID作用
  16. 想不想修真鸿蒙秘术,想不想修真鸿蒙秘诀怎么得 揭开想不想修真秘诀真面目...
  17. java推送叮叮消息,叮叮叮!请及时签收入门学习Java导航路线
  18. 附录三 虚拟机的使用
  19. 把数组里的数组合全部列出 (递归法)
  20. 设计一个形状类(接口)Shape,方法:求周长和求面积形状类(接口)的子类(实现类):

热门文章

  1. cocos2d-x CCScrollView和CCTableView的使用(转载)
  2. Unity: .NET下的依赖注入容器
  3. 用神经网络分类矩阵和矩阵的转置
  4. android 启动服务权限,android – 当我尝试启动服务时权限被拒绝
  5. 第6章-一阶多智体系统一致性-->6.2 离散时间多智能体系统一致性
  6. PyTorch max()函数取最大值
  7. 1.7 开发集和测试集的大小-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  8. 3.2 为超参数选择合适的范围-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  9. 第六章 6.1 6.2 无限脉冲响应滤波器
  10. Android学习笔记:ScrollView卷轴视图