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)
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}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
if(APPLE)
set(OPENSSL_ROOT_DIR "/usr/local/opt/openssl")

View File

@ -4,7 +4,10 @@
#include <iostream>
#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();) {
auto opCode = OpCode(*iter++);

View File

@ -157,17 +157,16 @@ struct ScriptOperation {
OpCode opCode = OP_INVALIDOPCODE;
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->input = param;
this->input = std::move(param);
}
ScriptOperation(OpCode opCode) {
explicit ScriptOperation(OpCode opCode) {
this->opCode = opCode;
}
ScriptOperation() {
}
ScriptOperation() = default;
};
class Script {

View File

@ -7,15 +7,27 @@
#include <set>
#include "Models/Block.h"
#include "Models/VarInt.h"
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() {
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;
for (const auto & entry : fs::directory_iterator(dir))
paths.insert(entry.path().string());
for (const auto & entry : fs::directory_iterator(dir)) {
if(entry.path().filename().string().starts_with("blk")) {
paths.insert(entry.path().string());
}
}
constexpr size_t blockBufferSize = 10*1024*1024;
auto blockData = std::make_unique<std::byte[]>(blockBufferSize);
std::vector<Block> blocks;
auto start = std::chrono::high_resolution_clock::now();
@ -30,18 +42,19 @@ int main() {
file.read((char*)&header, sizeof(header));
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()) {
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);
Block block(blockData.get(), header.blockSize);
processBlock(blockData.get(), header.blockSize);
//Block block(blockData.get(), header.blockSize);
//blocks.emplace_back(blockData.get(), header.blockSize);
//std::cout << "Parsed new block " << index++ << " with size: " << header.blockSize << std::endl;