Uploading latest changes

This commit is contained in:
Selim Mustafaev 2021-12-07 23:58:13 +03:00
parent ada171e531
commit 83fd01f755
4 changed files with 32 additions and 17 deletions

View File

@ -2,9 +2,9 @@ cmake_minimum_required(VERSION 3.19)
project(btcexplorer) project(btcexplorer)
set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0") #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address") #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
if(APPLE) if(APPLE)
set(OPENSSL_ROOT_DIR "/usr/local/opt/openssl") set(OPENSSL_ROOT_DIR "/usr/local/opt/openssl")

View File

@ -4,7 +4,10 @@
#include <iostream> #include <iostream>
#include <iomanip> #include <iomanip>
Script::Script(std::span<uint8_t> data, bool coinbase): _operations(10) { Script::Script(std::span<uint8_t> data, bool coinbase) {
_operations.reserve(5);
for(auto iter = data.begin(); iter != data.end();) { for(auto iter = data.begin(); iter != data.end();) {
auto opCode = OpCode(*iter++); auto opCode = OpCode(*iter++);

View File

@ -157,17 +157,16 @@ struct ScriptOperation {
OpCode opCode = OP_INVALIDOPCODE; OpCode opCode = OP_INVALIDOPCODE;
std::optional<std::vector<uint8_t>> input = std::nullopt; std::optional<std::vector<uint8_t>> input = std::nullopt;
ScriptOperation(OpCode opCode, std::vector<uint8_t>&& param) { ScriptOperation(OpCode opCode, std::vector<uint8_t>&& param) noexcept {
this->opCode = opCode; this->opCode = opCode;
this->input = param; this->input = std::move(param);
} }
ScriptOperation(OpCode opCode) { explicit ScriptOperation(OpCode opCode) {
this->opCode = opCode; this->opCode = opCode;
} }
ScriptOperation() { ScriptOperation() = default;
}
}; };
class Script { class Script {

View File

@ -7,15 +7,27 @@
#include <set> #include <set>
#include "Models/Block.h" #include "Models/Block.h"
#include "Models/VarInt.h"
namespace fs = std::filesystem; namespace fs = std::filesystem;
void processBlock(std::byte* data, size_t size) {
VarInt txCount(data + sizeof(BlockHeader));
auto pTxData = data + sizeof(BlockHeader) + txCount.size();
}
int main() { int main() {
std::string dir = "/home/selim/dl/blocks"; // "/Users/selim/Documents/blk00000.dat"; std::string dir = "/home/selim/dl/bitcoin/blocks"; //"/home/selim/dl/blocks"; // "/Users/selim/Documents/blk00000.dat";
std::set<fs::path> paths; std::set<fs::path> paths;
for (const auto & entry : fs::directory_iterator(dir)) for (const auto & entry : fs::directory_iterator(dir)) {
if(entry.path().filename().string().starts_with("blk")) {
paths.insert(entry.path().string()); paths.insert(entry.path().string());
}
}
constexpr size_t blockBufferSize = 10*1024*1024;
auto blockData = std::make_unique<std::byte[]>(blockBufferSize);
std::vector<Block> blocks; std::vector<Block> blocks;
auto start = std::chrono::high_resolution_clock::now(); auto start = std::chrono::high_resolution_clock::now();
@ -30,18 +42,19 @@ int main() {
file.read((char*)&header, sizeof(header)); file.read((char*)&header, sizeof(header));
header.magic = (BlockMagic)__builtin_bswap32(header.magic); header.magic = (BlockMagic)__builtin_bswap32(header.magic);
if(header.blockSize > blockBufferSize) {
std::cout << "Insufficient block buffer size. Exiting" << std::endl;
return 0;
}
if(file.eof()) { if(file.eof()) {
break; break;
} }
// if(index == 10117) {
// std::cout << "problem block" << std::endl;
// }
auto blockData = std::make_unique<std::byte[]>(header.blockSize);
file.read((char*)blockData.get(), header.blockSize); file.read((char*)blockData.get(), header.blockSize);
Block block(blockData.get(), header.blockSize); processBlock(blockData.get(), header.blockSize);
//Block block(blockData.get(), header.blockSize);
//blocks.emplace_back(blockData.get(), header.blockSize); //blocks.emplace_back(blockData.get(), header.blockSize);
//std::cout << "Parsed new block " << index++ << " with size: " << header.blockSize << std::endl; //std::cout << "Parsed new block " << index++ << " with size: " << header.blockSize << std::endl;