Coder Social home page Coder Social logo

murmel's Introduction

Safety Dance

Murmel

Murmel is a lightweight Bitcoin node. Its intended use is to serve a lightning network stack with a settlement layer. Its resource requirements are marginal if compared to a Bitcoin Core node.

A Murmel determines the chain with most work on its own and is capable of doing further checks. Its security guarantee is at least as defined in the Simplified Payment Verification (SPV) section of Satoshi's white paper.

The bitcoin network is governed by full nodes. Full nodes determine which blocks are valid and thereby decide if a miner gets paid for the block it creates. The chain with most work therefore communicates what full nodes think bitcoin is. Therefore following the chain with most work is not following miner, as in popular belief, but following the majority opinion of full nodes. Read more about this here.

Murmel does not maintain a memory pool of transactions, as unconfirmed payments unsecure to accept. Use Murmel to accept confirmed payments or to underpin a Ligthning Network node.

About the name

Murmel is German for marble. Murmel is small, fast, hard and beautiful just like a marble.

Design and Implementation notes

Murmel implements a small and fast P2P engine using on mio. The network messages are routed to their respective processors and back through message queues. Processors of logically distinct tasks are otherwise de-coupled and run in their own thread.

The blockchain data is persisted in a Hammersbald database.

Murmel's filter implementation BIP158 was moved into the rust-bitcoin project, here.

Murmel will not use those filters until they are available committed into the bitcoin block chain as they are otherwise not safe to use: a disagreement between two sources of filters can not be resolved by a client without knowledge of the UTXO. Consulting a third node would evtl. give yet another answer.

Filters that could be verified with the block content alone, as I (repeatedly) suggested on the dev-list, were rejected in favor of the current design, that is in fact more convenient once committed, but only then.

Status

Under refactoring.

How to run Murmel

Murmel does not do anything useful yet.

murmel's People

Contributors

tamasblummer avatar stevenroose avatar erasmospunk avatar dongcarl avatar notmandatory avatar atsukitak avatar therustmonk avatar icota avatar thebluematt avatar prusnak avatar sgeisler avatar icodezjb avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.