diff --git a/src/SerializedTransaction.cpp b/src/SerializedTransaction.cpp index cb06df9b2..45a06fde9 100644 --- a/src/SerializedTransaction.cpp +++ b/src/SerializedTransaction.cpp @@ -7,8 +7,9 @@ SerializedTransaction::SerializedTransaction(TransactionType type) if(mFormat==NULL) throw(std::runtime_error("invalid transaction type")); mMiddleTxn.giveObject(new STUInt32("Magic", TransactionMagic)); - mMiddleTxn.giveObject(new STVariableLength("Signature")); // signature + mMiddleTxn.giveObject(new STVariableLength("SigningAccount")); mMiddleTxn.giveObject(new STUInt8("Type", static_cast(type))); + mMiddleTxn.giveObject(new STUInt64("Fee")); mInnerTxn=STObject(mFormat->elements, "InnerTransaction"); } @@ -25,12 +26,13 @@ SerializedTransaction::SerializedTransaction(SerializerIterator& sit, int length throw(std::runtime_error("Transaction has invalid magic")); mMiddleTxn.giveObject(new STUInt32("Magic", TransactionMagic)); - mMiddleTxn.giveObject(new STVariableLength("Signature", sit.getVL())); + mMiddleTxn.giveObject(new STVariableLength("SigningAccount", sit.getVL())); int type=sit.get32(); mMiddleTxn.giveObject(new STUInt32("Type", type)); mFormat=getFormat(static_cast(type)); if(!mFormat) throw(std::runtime_error("Transaction has invalid type")); + mMiddleTxn.giveObject(new STUInt64("Fee", sit.get64())); mInnerTxn=STObject(mFormat->elements, sit, "InnerTransaction"); } @@ -112,3 +114,17 @@ void SerializedTransaction::setVersion(uint32 ver) if(!v) throw(std::runtime_error("corrupt transaction")); v->setValue(ver); } + +uint64 SerializedTransaction::getTransactionFee() const +{ + const STUInt64* v=dynamic_cast(mMiddleTxn.peekAtP(3)); + if(!v) throw(std::runtime_error("corrupt transaction")); + return v->getValue(); +} + +void SerializedTransaction::setTransactionFee(uint64 fee) +{ + STUInt64* v=dynamic_cast(mMiddleTxn.getAtP(3)); + if(!v) throw(std::runtime_error("corrupt transaction")); + v->setValue(fee); +} diff --git a/src/SerializedTransaction.h b/src/SerializedTransaction.h index b971d82ae..2422b839f 100644 --- a/src/SerializedTransaction.h +++ b/src/SerializedTransaction.h @@ -35,7 +35,7 @@ public: // middle transaction functions uint32 getVersion() const; void setVersion(uint32); - int getTransactionType() const; + TransactionType getTxnType() const { return type; } uint64 getTransactionFee() const; void setTransactionFee(uint64);