From 0da0ea10c312fe4409c3905a899f74d815b14969 Mon Sep 17 00:00:00 2001 From: learnforpractice Date: Thu, 7 Nov 2019 11:44:48 +0800 Subject: [PATCH] Add eoapi.unpack_transaction --- main/_eosapi.pyx | 4 ++++ main/eosapi.cpp | 9 +++++++++ main/eosapi.hpp | 2 ++ main/eosapi.py | 3 +++ 4 files changed, 18 insertions(+) diff --git a/main/_eosapi.pyx b/main/_eosapi.pyx index 01a1ccfc..ff81edda 100644 --- a/main/_eosapi.pyx +++ b/main/_eosapi.pyx @@ -39,6 +39,7 @@ cdef extern from "eosapi.hpp": object gen_transaction_(vector[action]& v, int expiration, string& reference_block_id); object sign_transaction_(string& trx_json_to_sign, string& str_private_key, string& chain_id); object pack_transaction_(string& _signed_trx, int compress) + object unpack_transaction_(string& trx) object create_key_() object get_public_key_(string& wif_key) @@ -121,6 +122,9 @@ def sign_transaction(string& trx_json_to_sign, string& str_private_key, string& def pack_transaction(string& _signed_trx, int compress): return pack_transaction_(_signed_trx, compress) +def unpack_transaction(string& trx): + return unpack_transaction_(trx) + def create_key(): return create_key_() diff --git a/main/eosapi.cpp b/main/eosapi.cpp index 284c3844..7dbe2825 100644 --- a/main/eosapi.cpp +++ b/main/eosapi.cpp @@ -125,6 +125,15 @@ PyObject* pack_transaction_(std::string& _signed_trx, int compress) { return py_new_none(); } +PyObject* unpack_transaction_(std::string& trx) { + try { + vector s(trx.c_str(), trx.c_str()+trx.size()); + auto st = fc::raw::unpack(s); + std::string ss = fc::json::to_string(st); + return py_new_string(ss); + } FC_LOG_AND_DROP(); + return py_new_none(); +} PyObject* create_key_() { auto pk = private_key_type::generate(); diff --git a/main/eosapi.hpp b/main/eosapi.hpp index 1dbb3eb3..0c3d3f70 100644 --- a/main/eosapi.hpp +++ b/main/eosapi.hpp @@ -40,4 +40,6 @@ void to_base58_( std::string& raw_pub_key, std::string& pub_key ); void recover_key_( string& _digest, string& _sig, string& _pub ); +PyObject* unpack_transaction_(std::string& trx); + #endif /* MAIN_EOSAPI_HPP_ */ diff --git a/main/eosapi.py b/main/eosapi.py index d5222709..15a7f431 100644 --- a/main/eosapi.py +++ b/main/eosapi.py @@ -213,6 +213,9 @@ def push_transaction(self, trx, compress=0): def pack_transaction(self, trx, compress=0): return _eosapi.pack_transaction(trx, compress) + def unpack_transaction(self, trx): + return _eosapi.unpack_transaction(trx) + def push_action(self, contract, action, args, permissions, compress=0): act = [contract, action, args, permissions] reference_block_id = self.get_info().last_irreversible_block_id