Skip to content
THU-WingTecherPublic

About

Thor: System-Level Fuzzing for Blockchain

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Thor: System-Level Fuzzing for Blockchain

Thor is a system-level fuzzing framework designed to test enterprise-level blockchain systems. It detects liveness, fairness, safety and integrity violations by mutating in-flight protocol messages and leveraging LLM-assisted runtime oracles.


Features

  • Passive + Active Testing Inputs
    Combines mutation of real protocol traffic with active message generation.
  • Two-Level Parallelism
    Enables coverage convergence within 30–100 minutes via inter- and intra-node concurrency.
  • LLM-based Oracle Generation
    Automatically extracts key semantic signals from logs and generates logic assertions.
  • CI/CD Integration
    Lightweight runtime and fast feedback for enterprise-grade blockchain development pipelines.

Supported Platforms

  • ✅ FISCO BCOS
  • ✅ Go-Ethereum
  • ✅ Chainmaker
  • ✅ Aptos
  • ...

Usage

Thor for go-ethereum

prerequisites

Setup geth network environment, can be found in https://priyalwalpita.medium.com/setting-up-the-go-ethereum-geth-environment-in-ubuntu-linux-67c09706b42.

Compile the thor for go-ethereum repository

make geth

setup bootnode

../bin/bootnode -genkey bootnode.key
../bin/bootnode -nodekey bootnode.key

And then you can start fuzzing within a testing cluster

Thor for chainmaker

prerequisites

Setup chainmaker network environment, can be found in https://chainmaker.org.cn/doc/zh-cn/docs1.0/

Please make sure that the following dependencies are installed

Go ≥ 1.17

CMake ≥ 3.10

GCC / g++

Protobuf ≥ 3.14

Docker

Compile the thor for chainmaker repository

make install

setup bootnode

cd deploy/docker-compose
docker-compose up -d

Thor for fisco

prerequisites

Setup fisco network environment, can be found in https://fisco-bcos-documentation.readthedocs.io/en/latest/docs/installation.html

setup LOKI testnet & start fuzzing

bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545

This will setup a local 4-node consortium chain of fisco-bcos, change 1 of the node to Thor node:

# Change the start.sh and stop.sh of node0 to:
fisco_bcos=Thor/fisco/bin/fisco-bcos

Then use the start-all shell to start the chain nodes:

cd nodes
./start_all.sh

And then you can start fuzzing within a testing cluster

About

Thor: System-Level Fuzzing for Blockchain

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages