使用RPC的接口创建账户
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的接口创建账户相关推荐
- 介绍一个用于EOS区块链的RPC API接口的PHP开发包SDK
作为我们Block Producer对社区利益的承诺的一部分,我们希望专注于构建有助于提高EOS平台采用率的工具/应用程序.与大多数大型应用程序一样,当你只有少量或过时的文档并且缺乏工具来帮助你进行入 ...
- NodeJS 流水式创建EOS主网账户, 羊毛党必备, 新手一键创建账户
首先安装 NodeJS 和 Npm npm install -g js4eos 使用的是js4eos , 非 eosio 环境下的cleos js4eos wallet create 创建一个默认钱包 ...
- Java实现Runnable接口创建多线程
Java实现Runnable接口创建多线程 通过继承Thread类,实现多线程,但是,这种方式有一定的局限性,因为,Java中只支持单继承,一个类一旦继承了某个父类,就无法再继承Thread类 比如, ...
- java多线程------实现Runnable接口创建多进程,实现资源共享
//实现Runnable接口创建多进程,实现资源共享 package xian_cheng;public class Example05 {public static void main(String ...
- 云炬Android开发笔记 5-1,2网络框架接口创建
1.网络框架接口创建 1.1 使用的是第三方的框架 [第三方框架]Retrofit,封装一个通用的框架,可以使用RxJava和RxAndroid进行封装,比较难,这里不做讲解: 1.2 restful ...
- JQ 全选后获取选中的值_Filecoin如何创建账户钱包并获取FIL测试币
昨天"猩动力节点"加入了fielcoin的测试网络,对用户或者矿工来说,如何获取代币,创建钱包保护好自己的资产,每一个用户来说都很关心.下面我们一起来学习如何创建账户钱包,并获取F ...
- 使用CommandLineRunner或ApplicationRunner接口创建bean
在spring boot应用中,我们可以在程序启动之前执行任何任务.为了达到这个目的,我们需要使用CommandLineRunner或ApplicationRunner接口创建bean,spring ...
- Java基础学习总结(168)——为什么推荐在RPC的接口中入参和出参都不要使用枚举
前言: 为什么推荐在RPC的接口中入参和出参都不要使用枚举.最近,我们的线上环境出现了一个问题,线上代码在执行过程中抛出了一个IllegalArgumentException,分析堆栈后,发现最根本的 ...
- .svc接口客户端调用_K8s:调用Java接口创建容器
Extract Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful), Kubernetes提供了 ...
最新文章
- head部分关于搜索引擎
- python 内置函数的一部分
- java阿里数据库连接池_Java学习:数据库连接池技术
- 201521123032 《Java程序设计》第7周学习总结
- vba 自定义function返回值_用vba解决excel如何求前面连续为0的个数
- 敏捷开发团队管理系列之四:程序与测试团队III
- java gui变量_关于java:静态/类变量和GUI
- python---之np.cumprod np.cumsum 累乘 累加
- oracle的热备份和冷备份
- 程序员编程艺术第十六~第二十章:全排列,跳台阶,奇偶调序等问题
- 网络编程+并发编程总结
- 电脑怎么打印pdf文件,电脑中保存的pdf文件怎么打印
- SPSS作业-检验两组数据有无显著
- SAN(存储区域网络),WWN, WWPN,WWNN区别
- 显卡 内存分配 linux,玩转笔记本显卡共享显存设置
- educoder:实验七 元组和集合
- 计算机故障四类,计算机内存出现问题的四大症状
- spark 不在 sudoers 文件中。此事将被报告。
- php跨域解决办法,PHP跨域问题解决方案
- python信号降噪_EEG(P300)信号数据滤波降噪
热门文章
- 线性代数之各种各样的矩阵
- [nrf51][nrf52][SDK17] NRF系列怎么实现低功耗运行,带freertos能进入吗?
- Microsoft Azure——Azure Active Directory
- 怀恩(电商)告诉你如何去开直通车 新手必备干货
- 荒野大镖客2服务器维护时间,荒野大镖客2:关于Online线上测试版,你需要知道的7个小知识...
- Stable diffusion安装踩坑(winMaciOS)
- 字符串哈希函数算法的PHP 实现
- 国家级区块链政策加持,海南未来能否成为中国“区块链之都”?|链塔智库
- ROS电子书及相关资料全集
- JavaSE与JavaEE的区别