Skip to content

Instantly share code, notes, and snippets.

Softchains: Sidechains as a Soft Fork via Proof-of-Work Fraud Proofs

Originally posted on bitcoin-dev.

This post describes a fully decentralized two-way peg sidechain design. Activating new sidechains requires a soft fork, hence the name softchains. The key aspect is that all softchains are validated by everyone via Proof-of-Work Fraud Proofs (PoW FP) -- a slow but very efficient consensus mechanism that only requires the validation of disputed blocks. This does increase the validation burden of mainchain full nodes, but only by a minimal amount (~100MB per chain per year). It's similar to [drivechains][0], but without the major downside of having to rely on miners, since all Bitcoin full node users can efficiently validate each sidechain.

Proof-of-Work Fraud Proofs

Last year I posted the idea of [PoW FP to the Bitcoin mailing list][1] ([follow-up here][2]). The idea is that we can use the existence of a fork in Bitc

  • LOADING_LINE_1: "Discord was almost called Bonfire before we picked our name. It was meant to be nice and cozy."
  • LOADING_LINE_2: "Discord was almost called Wyvern before we picked our name. Not too proud of that one."
  • LOADING_LINE_3: "Our logo's name is Clyde."
  • LOADING_LINE_4: 'There are a bunch of hidden "Easter Eggs" in the app that happen when you click certain things...'
  • LOADING_LINE_5: "Discord started as a game company making a mobile game called Fates Forever."
  • LOADING_LINE_6: "Discord’s official birthday is May 13, 2015."
  • LOADING_LINE_7: "We came up with the idea of Discord Nitro over morning breakfast potatoes."
  • LOADING_LINE_8: "Our mascot, Wumpus, was originally created as a character with no friends :("
  • LOADING_LINE_9: "In Discord's early days, light theme was the only theme. Scary times."
  • LOADING_LINE_10: "In the ancient days, Discord started as a browser-only app."
@fxfactorial
fxfactorial / lightning-txs.md
Created June 19, 2020 08:21
Lightning transactions: from Zero to Hero

Lightning transactions: from Zero to Hero

This gist contains everything you need to understand Bitcoin/Lightning transactions. We ignore segwit subtleties and fields that aren't necessary for our global understanding.

Table of Contents

@RubenSomsen
RubenSomsen / Resources.md
Last active November 4, 2025 19:07
Links to my work, accessible via tiny.cc/somsen

Introduction

I'm Ruben Somsen, Bitcoin Sorcerer. I do protocol design in order to enhance Bitcoin.

I'm sponsored by Spiral, Superlunar/Gemini, HRF, and am currently working on Silent Payments with Josie and assisting Davidson with the implementation of Proof-of-Work fraud proofs into Floresta.

I also help maintain the bitcoin-dev mailing list, am a BIP editor, co-hosted the Unhashed Podcast, founded the Seoul Bitcoin Meetup in 2014, actively co-organizing BitDevs Amsterdam, and on the layer two funding sub-committee of OpenSats.

You can find me on Twitter, Mastodon, and Telegram. You can also join [this Te

This is a work in progress, proceed with caution

Install Proxmox and a Ubuntu VM with Portainer to manage docker containers

Setup Proxmox

  1. Install Proxmox 6.X iso I selected 2 drives in Raid 1 mirror
  2. Console/SSH into Proxmox
  3. nano /etc/apt/sources.list
@bretton
bretton / ln-dashboard-list.md
Last active August 17, 2024 15:50
Dashboard tools for Lightning servers

Lightning dashboards

clightning

NodeMonitor

NodeMonitor is a simple Python Django website that makes calls to Bitcoin (bitcoind) and Lightning Network (c-lightning lightningd) nodes and displays the results on a simple 'dashboard' style status page.

Zabbix clightning

@mistic100
mistic100 / vimeo-downloader.js
Created September 15, 2018 09:01
Download video from Vimeo (chopped m4s files)
// 1. Open the browser developper console on the network tab
// 2. Start the video
// 3. In the dev tab, locate the load of the "master.json" file, copy its full URL
// 4. Run: node vimeo-downloader.js "<URL>"
// 5. Combine the m4v and m4a files with mkvmerge
const fs = require('fs');
const url = require('url');
const https = require('https');
{
"num_participants": 2,
"id": "d3e8ef7e-9beb-ac63-2b5f-a8c575d983f0",
"tx": {
"inputs": [
{
"features": 0,
"commit": "09597a4ad3118850f31b8033fc6802b3b78b3cd1c8f7eabdc5f650ec21045651ad"
}
],
@itod
itod / split_keyboards.md
Last active March 11, 2026 10:58
Every "split" mechanical keyboard currently being sold that I know of
@mapmeld
mapmeld / OverEncrypt.md
Last active July 25, 2023 18:55
OverEncrypt - paranoid HTTPS

OverEncrypt

This is a guide that I wrote to improve the default security of my website https://fortran.io , which has a certificate from LetsEncrypt. I'm choosing to improve HTTPS security and transparency without consideration for legacy browser support.

WARNING: if you mess up settings, lose your certificates, or decide to no longer maintain HTTPS certs, these steps can and will make your domain inaccessible.

I would recommend these steps only if you have a specific need for information security, privacy, and trust with your users, and/or maintain a separate secure.example.com domain which won't mess up your main site. If you've been thinking about hosting a site on Tor, then this might be a good option, too.

The best resources that I've found for explaining these steps are https://https.cio.gov , https://certificate-transparency.org , and https://twitter.com/konklone