1、POST http://127.0.0.1:8888/v1/chain/abi_json_to_bin (序列化新建账号的 json)

{"code": "eosio","action": "newaccount","args": {"creator": "bitcoin","name": "eason","owner": {"threshold": 1,"keys": [{"key": "EOS4ufZoTw95yHJS6Cyz3h4w5a2W4cyYpMYRnd7gbFZuCfPxUFS6r", //owner public key"weight": 1}],"accounts": [],"waits": []},"active": {"threshold": 1,"keys": [{"key": "EOS4ufZoTw95yHJS6Cyz3h4w5a2W4cyYpMYRnd7gbFZuCfPxUFS6r", //active public key"weight": 1}],"accounts": [],"waits": []}}
}

2、POST http://127.0.0.1:8888/v1/wallet/sign_transaction(签名新建账号的交易)

[{"ref_block_num": 363759,"ref_block_prefix": 4033496171,"expiration": "2018-05-17T09:54:06.500","actions": [{"account": "eosio","name": "newaccount","authorization": [{"actor": "bitcoin","permission": "active"}],"data": "000000603a8ab23b000000ca3d364dfb0100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c3060010000000100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c306001000000"}],"signatures": []},["EOS5wQ4HaFFDxyfc23dZNXUTGBHepM1vXGfr1vkfWHfRfvAMXP7VV"],""
]

3、http://127.0.0.1:8888/v1/chain/push_transaction (把签名后的交易push 推送到 EOS 系统中,即新建账号完成)

{"compression": "none","transaction": {"expiration": "2018-05-17T09:54:06.500","ref_block_num": 363759,"ref_block_prefix": 4033496171,"actions": [{"account": "eosio","name": "newaccount","authorization": [{"actor": "bitcoin","permission": "active"}],"data": "000000603a8ab23b000000ca3d364dfb0100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c3060010000000100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c306001000000"}]},"signatures": ["SIG_K1_KY58QhP4jWLJWr7cVkahgL3JAjC8QMK5jnHurFUmn8xU71v6Mh4DmgjY75DxmWE6Je457N6MRM7GapxU43hywnAWKEmC1W"]
}

(代币转账 和 新建账号的 sign_transaction、push_transaction 类似,主要就是 智能合约的不同 和 调用的action 的不同 以及 action 中具体的参数不同。)

新建账号(newaccount)需要用 「已有的账号」 创建「 新账号」

内部是 已有账号 调用系统智能合约eosio中的 newaccount 的 action

新建账号的交易需要用 创建者 的 私钥签名交易(sign_transaction),然后 推送签名后的交易 (push_transaction)到区块链中。

a. sign_transaction 图示

b. push_transaction 图示

具体接口

1、POST http://127.0.0.1:8888/v1/chain/abi_json_to_bin (序列化新建账号的 json)

请求参数

参数名称 参数类型 描述
code string 系统智能合约,默认填写“eosio”
action string 智能合约中的action,默认填写“newaccount”
creator string 创建者
name string 新建账号名
key string 新建账号的公钥

请求示例

{"code": "eosio","action": "newaccount","args": {"creator": "bitcoin","name": "eason","owner": {"threshold": 1,"keys": [{"key": "EOS4ufZoTw95yHJS6Cyz3h4w5a2W4cyYpMYRnd7gbFZuCfPxUFS6r", //owner public key"weight": 1}],"accounts": [],   "waits": []      },"active": {"threshold": 1,"keys": [{"key": "EOS4ufZoTw95yHJS6Cyz3h4w5a2W4cyYpMYRnd7gbFZuCfPxUFS6r", //active public key"weight": 1}],"accounts": [],    "waits": []        }}
}

响应参数

参数名称 参数类型 描述
binargs string 序列化的结果,在sign_transaction 和 push_transaction 中作为 data 请求参数

响应示例

{"binargs": "000000603a8ab23b000000ca3d364dfb0100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c3060010000000100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c306001000000"
}

2、GET http://127.0.0.1:8888/v1/chain/get_info (获取 EOS 区块链的最新区块号)

响应参数

参数名称 参数类型 描述
head_block_num number 最新区块号

响应示例

{"server_version": "13952d45","head_block_num": 359934,"last_irreversible_block_num": 359934,"last_irreversible_block_id": "a69af2c4aa56b5c4bd1cdf9c2acb1a7796bbc3043954e36da182a144ddcf58fb","head_block_id": "a69af2c4aa56b5c4bd1cdf9c2acb1a7796bbc3043954e36da182a144ddcf58fb","head_block_time": "2018-05-17T09:02:12","head_block_producer": "eosio","virtual_block_cpu_limit": 100000000,"virtual_block_net_limit": 1048576000,"block_cpu_limit": 99900,"block_net_limit": 1048576
}

3、POST http://127.0.0.1:8888/v1/chain/get_block (获取最新区块的具体信息)

请求参数

参数名称 参数类型 描述
block_num_or_id number 最新区块号,上一个响应结果中的 head_block_num
{"block_num_or_id":359934
}

响应参数

参数名称 参数类型 描述
timestamp string 最新区块的生成时间
block_num number 区块号,作为sign_transaction 和 push_transaction中的 ref_block_num请求参数
ref_block_prefix number 作为sign_transaction 和 push_transaction中的 ref_block_prefix 请求参数

响应示例

{"timestamp": "2018-05-17T09:02:12.500","producer": "eosio","confirmed": 0,"previous": "00057dfd5044aba0d750eff1fbb84ac92cbf29db1354968816fd2a9aefb0a0b4","transaction_mroot": "0000000000000000000000000000000000000000000000000000000000000000","action_mroot": "dee87e5d025383574ac12c310faf6b759fba52bd19977399b7ebf6ccdd81c7fa","schedule_version": 0,"header_extensions": [],"producer_signature": "SIG_K1_KVX3RRTS4ch9m6bWDctsAhDWtFydTrg3mW7PaqCXnBZZWezBW23enggeW4ijuWBHBVsDoxzjMvspoFtPsU5nmau4ZYomZo","transactions": [],"block_extensions": [],"id": "a69af2c4aa56b5c4bd1cdf9c2acb1a7796bbc3043954e36da182a144ddcf58fb","block_num": 359934,"ref_block_prefix": 1943477914
}

4、POST http://127.0.0.1:8888/v1/wallet/unlock (解锁钱包,签名交易前,需要解锁账号所在的钱包)

请求参数

参数名称 参数类型 描述
  string 钱包名称
  string 钱包密码

请求示例

["liu","PW5KjWHnhL5kSRxpWyHQj321dFsZN62HAbZjVSqnDvzKMuEKBZ1T9"]
  • 响应示例
{}  //成功解锁钱包,返回{}

5、POST http://127.0.0.1:8888/v1/wallet/sign_transaction(签名新建账号的交易)

请求的参数

参数名称 参数类型 描述
ref_block_num number 上面获得的最新区块号
ref_block_prefix number 上面获得的最新区块号相关信息
expiration string 过期时间 = timestamp 加上 一段时间 ,例如1分钟
account string 调用系统智能合约账号名,默认为 eosio
name string 新建账号的action,默认为 newaccount
actor string 创建者 账户名
data string abi_json_to_bin 序列化后的 值 binargs
  string 创建者的 公钥

请求示例

[{"ref_block_num": 363759,"ref_block_prefix": 4033496171,"expiration": "2018-05-17T09:54:06.500","actions": [{"account": "eosio",  //有 newaccount 的 action 的智能合约账号"name": "newaccount","authorization": [{"actor": "bitcoin","permission": "active"}],"data": "000000603a8ab23b000000ca3d364dfb0100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c3060010000000100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c306001000000" // //abi_json_to_bin 的响应参数 binargs}],"signatures": []},["EOS5wQ4HaFFDxyfc23dZNXUTGBHepM1vXGfr1vkfWHfRfvAMXP7VV" //创建者的公钥(交易发起者的公钥),其实是用的公钥对应的私钥进行签名的,签名前需要先解锁包含此私钥的钱包],""
]

响应参数

参数名称 参数类型 描述
signatures string 新建账号的交易 的签名结果,最后 push_transaction 中使用

响应示例

{"expiration": "2018-05-17T09:54:06","ref_block_num": 36079,"ref_block_prefix": 4033496171,"max_net_usage_words": 0,"max_cpu_usage_ms": 0,"delay_sec": 0,"context_free_actions": [],"actions": [{"account": "eosio","name": "newaccount","authorization": [{"actor": "bitcoin","permission": "active"}],"data": "000000603a8ab23b000000ca3d364dfb0100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c3060010000000100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c306001000000" }],"transaction_extensions": [],"signatures": ["SIG_K1_KY58QhP4jWLJWr7cVkahgL3JAjC8QMK5jnHurFUmn8xU71v6Mh4DmgjY75DxmWE6Je457N6MRM7GapxU43hywnAWKEmC1W"   // 签名 用在 push_transaction 中],"context_free_data": []
}

6、http://127.0.0.1:8888/v1/chain/push_transaction (把签名后的交易push 推送到 EOS 系统中,即新建账号完成)

请求参数

参数名称 参数类型 描述
compression string 默认 none
data string abi_json_to_bin 序列化后的 值 binargs
signatures string 交易签名后的结果

请求示例

{"compression": "none","transaction": {"expiration": "2018-05-17T09:54:06.500","ref_block_num": 363759,"ref_block_prefix": 4033496171,"actions": [{"account": "eosio","name": "newaccount","authorization": [{"actor": "bitcoin","permission": "active"}],"data": "000000603a8ab23b000000ca3d364dfb0100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c3060010000000100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c306001000000"    //abi_json_to_bin 的响应参数 binargs}]},"signatures": ["SIG_K1_KY58QhP4jWLJWr7cVkahgL3JAjC8QMK5jnHurFUmn8xU71v6Mh4DmgjY75DxmWE6Je457N6MRM7GapxU43hywnAWKEmC1W"]
}

响应示例

{"transaction_id": "2047702bfdc4678aabe123f335b4b5f604203edf7b4de8e42fa2c9211d4de075","processed": {"id": "2047702bfdc4678aabe123f335b4b5f604203edf7b4de8e42fa2c9211d4de075","receipt": {"status": "executed","cpu_usage_us": 390,"net_usage_words": 25},"elapsed": 390,"net_usage": 200,"scheduled": false,"action_traces": [{"receipt": {"receiver": "eosio","act_digest": "ae18e275184e7defe81be175711cd24206990518963f857715e98755f713957c","global_sequence": 365444,"recv_sequence": 365419,"auth_sequence": [["bitcoin",27]]},"act": {"account": "eosio","name": "newaccount","authorization": [{"actor": "bitcoin","permission": "active"}],"data": {"creator": "bitcoin","name": "zhangjie","owner": {"threshold": 1,"keys": [{"key": "EOS4ufZoTw95yHJS6Cyz3h4w5a2W4cyYpMYRnd7gbFZuCfPxUFS6r","weight": 1}],"accounts": [],"waits": []},"active": {"threshold": 1,"keys": [{"key": "EOS4ufZoTw95yHJS6Cyz3h4w5a2W4cyYpMYRnd7gbFZuCfPxUFS6r","weight": 1}],"accounts": [],"waits": []}},"hex_data": "000000603a8ab23b000000ca3d364dfb0100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c3060010000000100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c306001000000"},"elapsed": 163,"cpu_usage": 0,"console": "","total_cpu_usage": 0,"trx_id": "2047702bfdc4678aabe123f335b4b5f604203edf7b4de8e42fa2c9211d4de075","inline_traces": []}],"except": null}
}

转自:https://blog.csdn.net/akai9898/article/details/82220355

使用RPC的接口创建账户相关推荐

  1. 介绍一个用于EOS区块链的RPC API接口的PHP开发包SDK

    作为我们Block Producer对社区利益的承诺的一部分,我们希望专注于构建有助于提高EOS平台采用率的工具/应用程序.与大多数大型应用程序一样,当你只有少量或过时的文档并且缺乏工具来帮助你进行入 ...

  2. NodeJS 流水式创建EOS主网账户, 羊毛党必备, 新手一键创建账户

    首先安装 NodeJS 和 Npm npm install -g js4eos 使用的是js4eos , 非 eosio 环境下的cleos js4eos wallet create 创建一个默认钱包 ...

  3. Java实现Runnable接口创建多线程

    Java实现Runnable接口创建多线程 通过继承Thread类,实现多线程,但是,这种方式有一定的局限性,因为,Java中只支持单继承,一个类一旦继承了某个父类,就无法再继承Thread类 比如, ...

  4. java多线程------实现Runnable接口创建多进程,实现资源共享

    //实现Runnable接口创建多进程,实现资源共享 package xian_cheng;public class Example05 {public static void main(String ...

  5. 云炬Android开发笔记 5-1,2网络框架接口创建

    1.网络框架接口创建 1.1 使用的是第三方的框架 [第三方框架]Retrofit,封装一个通用的框架,可以使用RxJava和RxAndroid进行封装,比较难,这里不做讲解: 1.2 restful ...

  6. JQ 全选后获取选中的值_Filecoin如何创建账户钱包并获取FIL测试币

    昨天"猩动力节点"加入了fielcoin的测试网络,对用户或者矿工来说,如何获取代币,创建钱包保护好自己的资产,每一个用户来说都很关心.下面我们一起来学习如何创建账户钱包,并获取F ...

  7. 使用CommandLineRunner或ApplicationRunner接口创建bean

    在spring boot应用中,我们可以在程序启动之前执行任何任务.为了达到这个目的,我们需要使用CommandLineRunner或ApplicationRunner接口创建bean,spring ...

  8. Java基础学习总结(168)——为什么推荐在RPC的接口中入参和出参都不要使用枚举

    前言: 为什么推荐在RPC的接口中入参和出参都不要使用枚举.最近,我们的线上环境出现了一个问题,线上代码在执行过程中抛出了一个IllegalArgumentException,分析堆栈后,发现最根本的 ...

  9. .svc接口客户端调用_K8s:调用Java接口创建容器

    Extract Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful), Kubernetes提供了 ...

最新文章

  1. head部分关于搜索引擎
  2. python 内置函数的一部分
  3. java阿里数据库连接池_Java学习:数据库连接池技术
  4. 201521123032 《Java程序设计》第7周学习总结
  5. vba 自定义function返回值_用vba解决excel如何求前面连续为0的个数
  6. 敏捷开发团队管理系列之四:程序与测试团队III
  7. java gui变量_关于java:静态/类变量和GUI
  8. python---之np.cumprod np.cumsum 累乘 累加
  9. oracle的热备份和冷备份
  10. 程序员编程艺术第十六~第二十章:全排列,跳台阶,奇偶调序等问题
  11. 网络编程+并发编程总结
  12. 电脑怎么打印pdf文件,电脑中保存的pdf文件怎么打印
  13. SPSS作业-检验两组数据有无显著
  14. SAN(存储区域网络),WWN, WWPN,WWNN区别
  15. 显卡 内存分配 linux,玩转笔记本显卡共享显存设置
  16. educoder:实验七 元组和集合
  17. 计算机故障四类,计算机内存出现问题的四大症状
  18. spark 不在 sudoers 文件中。此事将被报告。
  19. php跨域解决办法,PHP跨域问题解决方案
  20. python信号降噪_EEG(P300)信号数据滤波降噪

热门文章

  1. 线性代数之各种各样的矩阵
  2. [nrf51][nrf52][SDK17] NRF系列怎么实现低功耗运行,带freertos能进入吗?
  3. Microsoft Azure——Azure Active Directory
  4. 怀恩(电商)告诉你如何去开直通车 新手必备干货
  5. 荒野大镖客2服务器维护时间,荒野大镖客2:关于Online线上测试版,你需要知道的7个小知识...
  6. Stable diffusion安装踩坑(winMaciOS)
  7. 字符串哈希函数算法的PHP 实现
  8. 国家级区块链政策加持,海南未来能否成为中国“区块链之都”?|链塔智库
  9. ROS电子书及相关资料全集
  10. JavaSE与JavaEE的区别