blockchain-test/Blockchain.cpp
2020-03-16 15:17:48 +01:00

63 lines
1.3 KiB
C++

//
// Keszitette: Toldi Balázs Ádám
// Datum: 2020. 03. 15.
//
#include "Blockchain.h"
int Blockchain::difficulty = 2;
int Blockchain::blockReward = 50;
int Blockchain::getBlockReward() {
return blockReward;
}
int Blockchain::getDifficulty() {
return difficulty;
}
const std::vector<Block> &Blockchain::getBlockList() const {
return blockList;
}
bool Blockchain::verifyBlocks() const{
std::string prev_hash = blockList.rbegin()->getPerviousHash();
for (auto it = blockList.rbegin()+1;it < blockList.rend();++it) {
if(it->getHash() != prev_hash)
return false;
}
return true;
}
bool Blockchain::addBlock(Block &b) {
blockList.push_back(b);
return verifyBlocks();
}
Block Blockchain::operator[](size_t id) {
if(id >= blockList.size())
throw std::out_of_range("Out of range");
return blockList[id];
}
bool Blockchain::operator<(Blockchain &b) {
return blockList.size() < b.blockList.size();
}
size_t Blockchain::getHeight() const {
return blockList.size();
}
bool Blockchain::operator>(Blockchain &b) {
return blockList.size() > b.getHeight();
}
Blockchain::Blockchain() {
}
Blockchain::Blockchain(const Blockchain &b) {
for(Block bl : b.blockList)
blockList.push_back(bl);
}