BtcExplorer/Models/Transaction.cpp

30 lines
812 B
C++

#include "Transaction.h"
#include "VarInt.h"
Transaction::Transaction(const std::byte *data) {
_version = *((uint32_t*)data);
VarInt inputCount(data + sizeof(_version));
const std::byte* curPtr = data + sizeof(_version) + inputCount.size();
for(size_t i = 0; i < inputCount.value(); ++i) {
TxInput input(curPtr);
curPtr += input.size();
_inputs.emplace_back(std::move(input));
}
VarInt outputCount(curPtr);
curPtr += outputCount.size();
for(size_t i = 0; i < outputCount.value(); ++i) {
TxOutput output(curPtr);
curPtr += output.size();
_outputs.emplace_back(std::move(output));
}
_lockTime = *((uint32_t*)curPtr);
_size = curPtr - data + sizeof(_lockTime);
}
size_t Transaction::size() const {
return _size;
}