diff --git a/libraries/plugins/peerplays_sidechain/ethereum/transaction.cpp b/libraries/plugins/peerplays_sidechain/ethereum/transaction.cpp index 4bf2217f..a75327c3 100644 --- a/libraries/plugins/peerplays_sidechain/ethereum/transaction.cpp +++ b/libraries/plugins/peerplays_sidechain/ethereum/transaction.cpp @@ -24,6 +24,16 @@ const secp256k1_context *eth_context() { //! transaction +base_transaction::base_transaction(const std::string &raw_tx) { +} + +//! transaction + +transaction::transaction(const std::string &raw_tx) : + base_transaction{raw_tx} { + deserialize(raw_tx); +} + const transaction &transaction::sign(const std::string &private_key) const { return *this; } @@ -54,6 +64,11 @@ void transaction::deserialize(const std::string &raw_tx) { //! raw_transaction +raw_transaction::raw_transaction(const std::string &raw_tx) : + base_transaction{raw_tx} { + deserialize(raw_tx); +} + bytes raw_transaction::hash() const { bytes hash; hash.resize(32); @@ -134,6 +149,11 @@ void raw_transaction::deserialize(const std::string &raw_tx) { //! signed_transaction +signed_transaction::signed_transaction(const std::string &raw_tx) : + base_transaction{raw_tx} { + deserialize(raw_tx); +} + std::string signed_transaction::recover(const std::string &chain_id) const { fc::ecc::compact_signature input64; fc::from_hex(r, (char *)&input64.at(1), 32); diff --git a/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/ethereum/transaction.hpp b/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/ethereum/transaction.hpp index f4edf015..693c7284 100644 --- a/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/ethereum/transaction.hpp +++ b/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/ethereum/transaction.hpp @@ -9,6 +9,10 @@ namespace graphene { namespace peerplays_sidechain { namespace ethereum { class base_transaction { +public: + base_transaction() = default; + base_transaction(const std::string &raw_tx); + virtual std::string serialize() const = 0; virtual void deserialize(const std::string &raw_tx) = 0; }; @@ -19,6 +23,9 @@ public: std::string to; std::string data; + transaction() = default; + transaction(const std::string &raw_tx); + const transaction &sign(const std::string &private_key) const; virtual std::string serialize() const override; @@ -36,6 +43,9 @@ public: std::string data; std::string chain_id; + raw_transaction() = default; + raw_transaction(const std::string &raw_tx); + bytes hash() const; signed_transaction sign(const std::string &private_key) const; @@ -55,6 +65,9 @@ public: std::string r; std::string s; + signed_transaction() = default; + signed_transaction(const std::string &raw_tx); + std::string recover(const std::string &chain_id) const; virtual std::string serialize() const override;