EOS系列 - 使用cleos(命令列)發起裸包交易

2020-10-21 12:00:40

eos構造裸交易並簽名

1. 需要到鏈上獲取到的資料

  • 獲取 ref_block_prefix
    1. get_info以獲取最後一個不可逆的塊號:last_irreversible_block_num
      這是一個螢幕截圖
    2. get_block獲取有關該區塊的資訊:這是螢幕截圖
    3. 從中找出 ref_block_prefix 的資料

2.1 之後本地可離線構造出未簽名交易資料

構造結果(未簽名)

{
    "compression": "none",
    "transaction": {
        "expiration": "2018-08-01T06:11:23",
        "ref_block_num": 10855,
        "ref_block_prefix": 473148127,
        "max_net_usage_words": 0,
        "max_cpu_usage_ms": 0,
        "delay_sec": 0,
        "context_free_actions": [],
        "actions": [{
            "account": "eosio.token",
            "name": "transfer",
            "authorization": [{
                "actor": "fromaccount",
                "permission": "active"
            }],
            "data": "0000000000ea305500000000487a2b9d102700000000000004454f53000000001163726561746564206279206e6f70726f6d"
        }],
        "transaction_extensions": [],
        "signatures": null,
        "context_free_data": []
    },
    "signatures": ["SIG_K1_JwLVG5pRdhvLfJGWkDEBPa7wdLbNeqeRFdvFrKDEryahSwCRpPb75m4auZh8frq6cXsm3dHit8GMbmuuBWxEjH"]
}

2.2 也可以通過cleos命令構造未簽名交易資料

cleos push action eosio.token transfer '{"from":"xxx", "to":"xxx", "quantity":"xxx", "memo":"xxx"}' -p fromaccount@active -jds

-j:	print result as json
-d:	don't broadcast transaction to the network (just print to stdout)
-s:	Specify if unlocked wallet keys should be used to sign transaction

3. 簽名並行送交易

使用上面構造的 [transaction json], 和傳入的私鑰簽名, 並行送交易

./cleos sign -p -k [private-key] '[transaction json]'

-k,--private-key TEXT       The private key that will be used to sign the transaction
-p,--push-transaction       Push transaction after signing