#420 - constructor for transactions from raw_tx

This commit is contained in:
Vlad Dobromyslov 2022-08-30 08:35:05 +03:00
parent c420c38cc9
commit 1671a7e4fc
2 changed files with 33 additions and 0 deletions

View file

@ -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);

View file

@ -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;