BtcExplorer/Models/Block.cpp

38 lines
895 B
C++

#include "Block.h"
#include "VarInt.h"
#include "../hash.h"
#include <iostream>
Block::Block(const std::byte* pBlock, size_t size): _header{} {
_size = size;
_header = *((BlockHeader*)pBlock);
VarInt txCount(pBlock + sizeof(BlockHeader));
auto pTxData = pBlock + sizeof(BlockHeader) + txCount.size();
for(size_t i = 0; i < txCount.value(); ++i) {
Transaction transaction(pTxData);
pTxData += transaction.size();
_transactions.emplace_back(std::move(transaction));
}
}
uint32_t Block::version() const {
return _header.version;
}
uint32_t Block::time() const {
return _header.time;
}
const std::vector<Transaction>& Block::transactions() const {
return _transactions;
}
size_t Block::size() const {
return _size;
}
std::string Block::prevHeaderHash() const {
return hash::to_string_inverse(_header.prevBlockHeaderHash);
}