Uploading latest changes
This commit is contained in:
parent
ada171e531
commit
83fd01f755
@ -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")
|
||||
|
||||
@ -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++);
|
||||
|
||||
|
||||
@ -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 {
|
||||
|
||||
31
main.cpp
31
main.cpp
@ -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;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user