摘要:適用于最新的前言最近在研究的,但是由于官方文檔的不夠詳盡,新建賬號這一個操作就折騰了一個多星期。皇天不負(fù)有心人,終于調(diào)通了新建賬號,代幣轉(zhuǎn)賬也輕松解決。
適用于最新的 EOS Dawn 4.0/4.1前言
最近在研究 EOS 的 RPC API,但是由于官方API文檔的不夠詳盡,新建賬號(new account)這一個操作就折騰了一個多星期。皇天不負(fù)有心人,終于調(diào)通了新建賬號,代幣轉(zhuǎn)賬也輕松解決。特地寫這篇文章(適用于 EOS dawn 4.0 和 4.1),幫助準(zhǔn)備使用 EOS RPC 做 Dapp 開發(fā)的朋友,如有問題,歡迎批評指正。
少廢話,先看東西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 系統(tǒng)中,即新建賬號完成)
{ "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"] }
(代幣轉(zhuǎn)賬 和 新建賬號的 sign_transaction、push_transaction 類似,主要就是 智能合約的不同 和 調(diào)用的action 的不同 以及 action 中具體的參數(shù)不同。)
新建賬號(newaccount)需要用 「已有的賬號」 創(chuàng)建「 新賬號」
內(nèi)部是 已有賬號 調(diào)用系統(tǒng)智能合約eosio中的 newaccount 的 action
新建賬號的交易需要用 創(chuàng)建者 的 私鑰簽名交易(sign_transaction),然后 推送簽名后的交易 (push_transaction)到區(qū)塊鏈中。
a. sign_transaction 圖示
b. push_transaction 圖示
1、POST http://127.0.0.1:8888/v1/chain/abi_json_to_bin (序列化新建賬號的 json)
請求參數(shù):
參數(shù)名稱 | 參數(shù)類型 | 描述 |
---|---|---|
code | string | 系統(tǒng)智能合約,默認(rèn)填寫“eosio” |
action | string | 智能合約中的action,默認(rèn)填寫“newaccount” |
creator | string | 創(chuàng)建者 |
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": [] } } }
響應(yīng)參數(shù)
參數(shù)名稱 | 參數(shù)類型 | 描述 |
---|---|---|
binargs | string | 序列化的結(jié)果,在sign_transaction 和 push_transaction 中作為 data 請求參數(shù) |
響應(yīng)示例
{ "binargs": "000000603a8ab23b000000ca3d364dfb0100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c3060010000000100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c306001000000" }
2、GET http://127.0.0.1:8888/v1/chain/get_info (獲取 EOS 區(qū)塊鏈的最新區(qū)塊號)
響應(yīng)參數(shù)
參數(shù)名稱 | 參數(shù)類型 | 描述 |
---|---|---|
head_block_num | number | 最新區(qū)塊號 |
響應(yīng)示例
{ "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 (獲取最新區(qū)塊的具體信息)
請求參數(shù)
參數(shù)名稱 | 參數(shù)類型 | 描述 |
---|---|---|
block_num_or_id | number | 最新區(qū)塊號,上一個響應(yīng)結(jié)果中的 head_block_num |
{ "block_num_or_id":359934 }
響應(yīng)參數(shù)
參數(shù)名稱 | 參數(shù)類型 | 描述 |
---|---|---|
timestamp | string | 最新區(qū)塊的生成時間 |
block_num | number | 區(qū)塊號,作為sign_transaction 和 push_transaction中的 ref_block_num請求參數(shù) |
ref_block_prefix | number | 作為sign_transaction 和 push_transaction中的 ref_block_prefix 請求參數(shù) |
響應(yīng)示例
{ "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 (解鎖錢包,簽名交易前,需要解鎖賬號所在的錢包)
請求參數(shù)
參數(shù)名稱 | 參數(shù)類型 | 描述 |
---|---|---|
string | 錢包名稱 | |
string | 錢包密碼 |
請求示例
["liu","PW5KjWHnhL5kSRxpWyHQj321dFsZN62HAbZjVSqnDvzKMuEKBZ1T9"]
響應(yīng)示例
{} //成功解鎖錢包,返回{}
5、POST http://127.0.0.1:8888/v1/wallet/sign_transaction(簽名新建賬號的交易)
請求的參數(shù)
參數(shù)名稱 | 參數(shù)類型 | 描述 |
---|---|---|
ref_block_num | number | 上面獲得的最新區(qū)塊號 |
ref_block_prefix | number | 上面獲得的最新區(qū)塊號相關(guān)信息 |
expiration | string | 過期時間 = timestamp 加上 一段時間 ,例如1分鐘 |
account | string | 調(diào)用系統(tǒng)智能合約賬號名,默認(rèn)為 eosio |
name | string | 新建賬號的action,默認(rèn)為 newaccount |
actor | string | 創(chuàng)建者 賬戶名 |
data | string | abi_json_to_bin 序列化后的 值 binargs |
string | 創(chuàng)建者的 公鑰 |
請求示例
[ { "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 的響應(yīng)參數(shù) binargs } ], "signatures": [] }, [ "EOS5wQ4HaFFDxyfc23dZNXUTGBHepM1vXGfr1vkfWHfRfvAMXP7VV" //創(chuàng)建者的公鑰(交易發(fā)起者的公鑰),其實是用的公鑰對應(yīng)的私鑰進行簽名的,簽名前需要先解鎖包含此私鑰的錢包 ], "" ]
響應(yīng)參數(shù)
參數(shù)名稱 | 參數(shù)類型 | 描述 |
---|---|---|
signatures | string | 新建賬號的交易 的簽名結(jié)果,最后 push_transaction 中使用 |
響應(yīng)示例
{ "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 系統(tǒng)中,即新建賬號完成)
請求參數(shù)
參數(shù)名稱 | 參數(shù)類型 | 描述 |
---|---|---|
compression | string | 默認(rèn) none |
data | string | abi_json_to_bin 序列化后的 值 binargs |
signatures | string | 交易簽名后的結(jié)果 |
請求示例
{ "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 的響應(yīng)參數(shù) binargs } ] }, "signatures": ["SIG_K1_KY58QhP4jWLJWr7cVkahgL3JAjC8QMK5jnHurFUmn8xU71v6Mh4DmgjY75DxmWE6Je457N6MRM7GapxU43hywnAWKEmC1W"] }
響應(yīng)示例
{ "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 } }
圓方圓學(xué)院匯集大批區(qū)塊鏈名師,打造精品的區(qū)塊鏈技術(shù)課程。 在各大平臺都長期有優(yōu)質(zhì)免費公開課,歡迎報名收看。
公開課地址:https://ke.qq.com/course/345101? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/24393.html
摘要:目前通常指代基于以太坊或者上的智能合約開發(fā)的相關(guān)應(yīng)用。引入以太坊通過的交互流程大致如下總結(jié)隨著區(qū)塊鏈近些年的大紅大紫,被推上了風(fēng)口浪尖,本文從技術(shù)的角度大致介紹了一下所涉及的技術(shù)要點。 當(dāng)你開始探索區(qū)塊鏈開發(fā),需要了解到這些。 showImg(https://segmentfault.com/img/remote/1460000016608233?w=1370&h=389); 一、DA...
摘要:去中心化應(yīng)用程序的常見設(shè)計不僅依賴于以太坊區(qū)塊鏈,還依賴于層。每個用戶的所有登錄操作在以太坊區(qū)塊鏈上變得不可公開。用于驗證用戶身份的機制與以太坊用于保證以太坊區(qū)塊鏈安全性的機制相同。以太坊,主要是針對工程師使用進行區(qū)塊鏈以太坊開發(fā)的詳解。 去中心化應(yīng)用程序(DApp)的常見設(shè)計不僅依賴于以太坊區(qū)塊鏈,還依賴于API層。在這種情況下,DApp通過用戶的以太坊帳戶與智能合約進行交互,并通過...
摘要:本文面向以太坊智能合約應(yīng)用程序開發(fā)人員,并討論如何在密碼保護后,安全地運行你的以太坊節(jié)點,以便通過進行安全輸出。以太坊,主要是針對工程師使用進行區(qū)塊鏈以太坊開發(fā)的詳解。 本文面向以太坊智能合約應(yīng)用程序開發(fā)人員,并討論如何在密碼保護后,安全地運行你的以太坊節(jié)點,以便通過Internet進行安全輸出。 Go Ethereum(geth)是以太坊節(jié)點最受歡迎的軟件。其他流行的以太坊實現(xiàn)是Pa...
摘要:本文面向以太坊智能合約應(yīng)用程序開發(fā)人員,并討論如何在密碼保護后,安全地運行你的以太坊節(jié)點,以便通過進行安全輸出。以太坊,主要是針對工程師使用進行區(qū)塊鏈以太坊開發(fā)的詳解。 本文面向以太坊智能合約應(yīng)用程序開發(fā)人員,并討論如何在密碼保護后,安全地運行你的以太坊節(jié)點,以便通過Internet進行安全輸出。 Go Ethereum(geth)是以太坊節(jié)點最受歡迎的軟件。其他流行的以太坊實現(xiàn)是Pa...
閱讀 1628·2021-10-12 10:11
閱讀 3748·2021-09-03 10:35
閱讀 1439·2019-08-30 15:55
閱讀 2122·2019-08-30 15:54
閱讀 993·2019-08-30 13:07
閱讀 1004·2019-08-30 11:09
閱讀 569·2019-08-29 13:21
閱讀 2645·2019-08-29 11:32