code formating

Wednesday, October 14, 2015

A case against bloom filters in bitcoin

Bitcoin Bloom filters are like mazes with many entries and two ways out, lets call them "no way" and "my way". One decides that a transaction has not to be sent to us the other one to be sent. The maze it's built in a way that all our wanted transactions are going to get out of the "my way" and some unwanted too. For the sake of correctness, note that the maze can not be run backwards and every element will repeat its own way every time its thrown through the "maze"".

The anonymity that this technique claims to achieve it's coming from the "unwanted" elements that come out of "my way". This will supposedly confuse anyone that is trying to follow our wanted elements.

Whether with this technique we really achieve anonymity might be arguable or not but I do not have a problem with that part.

With bloom filters, before anything is sent to us by a node, the node has to "build the maze" run every transaction, outpoint, sig script and pub script (this four have been called elements up to now) through the maze and send us the ones that come out of "my way".

Bitcoin it's an open protocol and accessible to anyone so potentially everyone can ask for their own maze to be build. This means that the node now has to build a maze and run every element through it for every client that asks and yet they get no rewards.

I's clear where I want to get with this. This bloom filer building (maze building) and specially the rehashing (rerunning everything through the maze) its none less than practical. The stress the bitcoin community can put on the full nodes is in my opinion unjustifiable. We can not build anonimous bitcoin wallets at the expense of the full nodes. In my opinion we ought to find a better way.

I started to build bloom filters in nicotib in order to avoid downloading the full blockchain. It felt fresh until I thought of implementing the other side of the equation. At this point I have decided to stop building bloom filter in nicotib and I'll be taking the code out of the project.

Programatically walk a CATIA tree in .NET

One of the most basic tasks when automating anything in CATIA, it's usually to walk the whole tree and apply some changes to objects in ...