spesmilo/electrum — pull request #714 by marlengit (2014-06-08 18:17:50+00:00)
Title: Scatter and Bulk Sign feature

Hello this is my first python coding effort and first pull request ever. Sorry if its messy. I hope its useful.

I have created 2 new features: Bulk Sign and Scatter

The Bulk Sign allows the user to select a group of files and sign them with one password entry.
Tools > Bulk Sign

files/functions changed:
gui/gt/main_window.py
@protected def do_bulk_sign(self, fileList, password)
def bulk_sign(self)

The Scatter feature works as a background process which automatically creates and broadcasts transactions from addresses with balances over a user specified amount and sends them to unused addresses. It continues to automate spending into the same wallet breaking address balances down into smaller and smaller amounts until all address balances are below the scatter limit. The transactions are not broadcasted immediately but are saved into transaction files and broadcasted at random times. For cold wallets transaction files are unsigned so need to be taken to the cold wallet, bulk signed then returned to the scatter folder for broadcasting. The purpose of Scatter is to assist with privacy by keeping the address balances dynamic.
Tools > Scatter > Scatter Start
Tools > Scatter > Scatter Stop

files/functions changed:
gui/gt/main_window.py
def scatter_start(self)
def scatter_stop(self)
def scatter_process(self)
def scatter_broadcast(self)
@protected def scatter_get_password(self, password)
def update_status(self)

lib/wallet.py
def scatter_make(self, password)

lib/commands.py
def isscatteron(self)
def scatter_make(self, scatter_limit, saveFolder = '~', fee = 0.0001, minimum_delay = 60)

I created a bunch of wallet and main_window variables with prefix "scatter". I couldn't figure out quickly how to make them persist after the app is closed but that would be a nice addition.

I developed this all using the source code from the portable zip v1.9.8 and then merged the changes into my repos fork.

I don't know why these files got included in the pull request I didn't intend to and they are not relevent:
.kdev4/electrum.kdev4
electrum~
gui/stdio.py~
mainwindow.py
mainwindow.ui