Projects


Proof-of-Work Network Simulator for Blockchain and Cryptocurrency Research

Abstract: Blockchain and the proof-of-work (PoW) distributed consensus protocol rely on peer-to-peer (P2P) networking. We build a PoW P2P simulator for the modeling and analyses of permissionless blockchain networking. Our simulator utilizes a built-in randomness generator for the simulations, has an easy-to-use interface and intuitive visualization, supports dynamic/programmable control and modifications, and can generate simulation data for further processing. We publish our simulator in open source to facilitate its use for blockchain and P2P networking research and especially recommend it for scalability research or preliminary testing. To highlight its features and capabilities, we demonstrate the simulator use in this paper to analyze the recent blockchain security research, including 51% attack, eclipse, partitioning, and DoS attack.

Citation: S. Wuthier and S. -Y. Chang, "Demo: Proof-of-Work Network Simulator for Blockchain and Cryptocurrency Research," 2021 IEEE 41st International Conference on Distributed Computing Systems (ICDCS), 2021, pp. 1098-1101, doi: 10.1109/ICDCS51616.2021.00110.

GitHub Repositories

The repositories below are automatically generated and represents a spectrum of my work. Projects marked with an icon have a live demo hosted on GitHub Pages that can be previewed from within this page.



Developing applications for Nintendo platforms using SmileBASIC, a variation of the BASIC programming language tailored for the Nintendo 3DS and Switch, has been very rewarding. This environment provides access to hardware components, such as button presses, touch input, accelerometer data, and the GPU for matrix operations, as well as including a minimal graphics library (rendering of lines, polygons, images, and ellipses). These tools facilitate the creation of diverse projects that leverage the unique capabilities of the system. Below are some selected projects that I developed on this platform.

Game Engine: 3D Parkour

Developed a custom 3D engine with integrated physics, this parkour game provides an interactive experience, allowing players to navigate a character through various actions like jumping, sliding, and flying, while interacting with a range of game elements such as rotating blocks/spheres, zero-gravity zones, trampolines, water, gravity inverters, world rotators, and camera style modifiers. The game features local multiplayer capabilities, an integrated chat system, an intricate level editor, a user interface for environmental adjustments, and many levels (including some that are procedural). It includes a Japanese translation to accommodate international audiences. Since its release, the game has risen to become one of the most popular games on the platform.

3D Parkour 1 3D Parkour 2 3D Parkour 3 3D Parkour 4 3D Parkour 5 3D Parkour 6 3D Parkour 8 3D Parkour 9 3D Parkour 9 3D Parkour 10 3D Parkour 11 3D Parkour 12
Graphics Engine: Fractal Canvas

Fractal Canvas is an intuitive application tailored for users to explore a diverse range of fractals. It features a user interface that facilitates the customization of fractal appearances. With an integrated rendering function, users can generate high-resolution images of their tailored fractals.

Fractal Canvas 1 Fractal Canvas 2 Fractal Canvas 3 Fractal Canvas 4 Fractal Canvas 5 Fractal Canvas 6 Fractal Canvas 7 Fractal Canvas 8 Fractal Canvas 9 Fractal Canvas 10 Fractal Canvas 11 Fractal Canvas 12 Fractal Canvas 13 Fractal Canvas 14 Fractal Canvas 15 Fractal Canvas 16 Fractal Canvas 17
Graphics Library: SIM.3D

This 3D graphics engine was specifically designed for generic 3D scenes, harnessing the potential of complex GPU vector operations for improved performance. The versatility of this engine has enabled the development of various games, delivering unique visual experiences that are both efficient and impactful.

SIM.3D 1 SIM.3D 2 SIM.3D 3 SIM.3D 4 SIM.3D 5 SIM.3D 6 SIM.3D 7 SIM.3D 8 SIM.3D 9

An application designed for matrix operations across arbitrary dimensions. It allows users to compute matrix inverses, determinants, and achieve row echelon form. Additionally, it provides a detailed step-by-step breakdown for each operation, showcasing the progression of the computations.

Linear Algebra Toolkit 1 Linear Algebra Toolkit 2 Linear Algebra Toolkit 3

A game that challenges players to solve the Tower of Hanoi puzzle. It features a user interface that facilitates the customization of the number of disks with a timer and a move counter.

Tower of Hanoi 1 Tower of Hanoi 2 Tower of Hanoi 3 Tower of Hanoi 4 Tower of Hanoi 5

An application that obfuscates BASIC code, intentionally making it difficult to read and understand. It features an interface that allows users to customize the level of obfuscation, such as renaming variables and functions, removing comments, reorganizing code, etc.

Obfuscator 1 Obfuscator 2 Obfuscator 3

An application that renders a 3D map using common raycasting techniques, allowing for exploration, jumping, and dynamic modifications to the world.

Raycasting Engine 1 Raycasting Engine 2 Raycasting Engine 3 Raycasting Engine 4 Raycasting Engine 5

A highly optimized library to compute SHA-256 hashes that can be used for Bitcoin mining. It features a user interface that allows users to customize the input string and the number of hashes to compute.

SHA-256 1

Participating in open-source projects has provided me the opportunity to collaborate with diverse teams, enhance software transparency, and explore contemporary technological solutions. I've engaged with multiple significant projects in the open-source domain. Below are some notable contributions.

Bitcoin Core: Primary Bitcoin Protocol Implementation & Enhanced Logging

Within the Bitcoin Core project:

  • Improved logging capabilities with a specific emphasis on P2P networking nodes.
  • Identified and addressed protocol design vulnerabilities to enhance network security.

In a separate project enhancing Bitcoin Core's extensibility:

  • Developed real-time logging for peer connections across various networks, enabling enhanced monitoring capabilities.
  • Made the setup process user-friendly with easy-to-use scripts, increasing accessibility.
  • Created an optimized network logging application, focusing on efficient data storage and transfer.
  • Added specialized RPC commands for more detailed and precise system interactions.
  • Implemented the minconnections parameter, offering users greater control over peer connections.

Version++: Augmenting Bitcoin Peer Handshake Authentication

Version++ introduces an additional layer to the handshake protocol among Bitcoin peers. This enhancement seeks to increase the reliability of initial interactions within the Bitcoin network.

Version++ 1 Version++ 2 Version++ 3

This work was presented at CCNC 2023, and received the Best Demo Award with respect to all other conference submissions.
Main Publication, Demo Publication

Ethereum and the Ethereum Virtual Machine (EVM)

Ethereum is a decentralized platform that supports smart contracts. The Ethereum Virtual Machine (EVM) is pivotal in executing these contracts consistently across all network nodes. To operate a full node, the complete blockchain and all smart contracts must be processed.

My work offers deeper insights into the EVM's opcode executions, revealing metrics related to processing time, memory utilization, and contract-specific data.

CTFd: Enhancing Synchronization

CTFd is a platform tailored for hosting Capture the Flag (CTF) events. It is vital for organizing and scoring cybersecurity competitions.

I contributed plugins that refine event synchronization, providing real-time score updates. Additionally, a post-event team-building feature was added to promote diverse skill grouping, aiding collaboration.

PowerTOP: Power Monitoring and Bug Fixes

Measuring power consumption in computers is often indirect and imprecise. PowerTOP is among the few tools offering more detailed power monitoring without dedicated hardware.

I addressed a critical issue in PowerTOP that caused a malfunction in Ryzen processors, leading to its resolution in the tool's official release.