Is there any automated tool that can gather all the dust in a wallet full of micro transactions and lump them together into larger blocks so that we do not keep hitting the dreaded "exceeded transaction limit" when trying to spend some of our coin? I use a very long, very random wallet password and doing it manually, transferring back and forth between several wallets is just not practical. This, for me, is a very large roadblock to widespread acceptance of alt-coins.
Try this little script. It's worked for me in the past. Just edit the "User Variable" section at the top and then run the script in command prompt on Windows.
Before using, make sure to follow these steps.
1.) Open your existing wallet GUI and set your fees to zero.
2.) Backup your existing wallet (or if you have a second machine or a VM to perform this you can chose to skip this step)
3.) Create a new wallet (be it on the same machine, second machine or VM)
4.) Record the address from your new wallet and back up the new wallet (if your using a second machine or VM you can skip the backup part).
5.) If your using the same machine you will be to re-instate (restore) your original wallet (again if your using a second machine or VM you can skip this step).
6.) With the wallet GUI open run the batch script and enter the appropriate values when asked, note the script will pre-offer safe variables so you can largely just press enter to most questions.
7.) Wait for the script to run, it will keep a rolling total of how much has been transferred between payments so you have an idea of how far its got.
8.) Re-instate (restore) the new wallet if using the same machine or if using a second machine or VM and open the new wallet and watch the transactions arrive.
@echo off
setlocal EnableDelayedExpansion
title DUSTBUSTER Batch Script V1.02
mode con cols=140 lines=30 >nul
@REM ////////////// SET ALL USERS VARIABLES HERE ////////////////////////////////
SET BITQUARKD_FOLDER="C:\Path\To\Bitquarkd\Program\Folder"
SET PAYMENT_ADDRESS_DEFAULT=YourBitquarkAddress
SET RPC_PASSWORD=YourPassword
SET TEMP_FILE=C:\bitquark-temp.log
@REM ////// END OF USER VARIABLES SET NO FURTHER VARIABLES TO SET PAST HERE /////
cls
echo.
set OLDDIR=%CD%
set PAYOUT_STARTED=no
set PAYOUT_TOTAL=0
set PAYOUT_TOTAL_MESSAGE=
SET FRACTIONSSTARTED=no
@REM GET USER VARS
echo.
echo Please answer the required questions below.
echo.
echo Press enter to accept the default value shown in brackets and note
echo all the answers must be whole numbers and yes and no answers
echo must be in lower case letters only.
echo.
echo If you would like to thank me for the script, you can send a donation of
echo some BTQ to 1abJidxtJJDRouwyv6znqmwzJQkNyWCgc
echo.
SET /P BTQVALUE=Enter the maximum BTQ value to attempt to make payment (100) :
SET /P BTQMINPAY=Enter the minimum payment value, default is to pay until empty (0) :
SET /P TRANSCATION_DELAY=Enter the seconds to delay between making payments (30) :
SET /P PAYMENT_ADDRESS=Enter address to make payment to (%PAYMENT_ADDRESS_DEFAULT%) :
SET /P FRACTIONS=Do you want to attempt fractions, 3/4 1/2 1/4 a coin (no) :
IF "%BTQVALUE%" == "" (SET BTQVALUE=100)
IF "%BTQMINPAY%" == "" (SET BTQMINPAY=0)
IF "%TRANSCATION_DELAY%" == "" (SET TRANSCATION_DELAY=30)
IF "%PAYMENT_ADDRESS%" == "" (SET PAYMENT_ADDRESS=%PAYMENT_ADDRESS_DEFAULT%)
IF "%FRACTIONS%" == "" (SET FRACTIONS=no)
@REM MOVE TO WORKING FOLDER
cd %BITQUARKD_FOLDER%
:PAYMENTLOOP
@REM ATTEMPT PAYMENT
cls
set TRANSCATION=
echo Attempting to make a payment of %BTQVALUE% BTQ to %PAYMENT_ADDRESS% %PAYOUT_TOTAL_MESSAGE%
echo.
@REM DEBUG echo COMMAND bitquarkd.exe -rpcpassword^=%RPC_PASSWORD% sendtoaddress %PAYMENT_ADDRESS% %BTQVALUE%
bitquarkd.exe -rpcpassword=%RPC_PASSWORD% sendtoaddress %PAYMENT_ADDRESS% %BTQVALUE% 2> %TEMP_FILE%
@REM DEBUG type %TEMP_FILE%
@REM DEBUG pause
findstr /C:"couldn't connect to server" %TEMP_FILE%
IF %ERRORLEVEL% == 0 (GOTO OPENWALLET)
findstr /C:"Transaction too large" %TEMP_FILE%
IF %ERRORLEVEL% == 0 (SET TRANSCATION=reduce)
findstr /C:"Insufficient funds" %TEMP_FILE%
IF %ERRORLEVEL% == 0 (SET TRANSCATION=reduce)
IF "%TRANSCATION%" == "reduce" (IF "%FRACTIONS%" == "yes" (IF "%BTQVALUE%" == "1" (GOTO STARTFRACTIONS)))
IF "%TRANSCATION%" == "reduce" (IF NOT "%FRACTIONS%" == "yes" (IF "%BTQVALUE%" == "1" (GOTO PAYOUTNOMORE)))
IF "%TRANSCATION%" == "reduce" (IF "%FRACTIONS%" == "yes" (IF "%BTQVALUE%" == "0.25" (GOTO PAYOUTNOMORE)))
IF "%TRANSCATION%" == "reduce" (IF NOT "%FRACTIONSSTARTED%" == "yes" (IF %BTQVALUE% GTR 1 ( set /a BTQVALUE=%BTQVALUE%-1 )))
IF "%FRACTIONSSTARTED%" == "yes" (GOTO PROCESSFRACTIONS)
IF %BTQVALUE% LSS %BTQMINPAY% ( GOTO PAYOUTNOMORE )
IF "%PAYOUT_STARTED%" == "no" (IF NOT "%TRANSCATION%" == "reduce" (set PAYOUT_STARTED=yes))
IF "%PAYOUT_STARTED%" == "yes" (IF "%TRANSCATION%" == "reduce " (IF "%BTQVALUE%" == "1" ( GOTO STARTFRACTIONS )))
IF NOT "%TRANSCATION%" == "reduce" (SET /a PAYOUT_TOTAL=%BTQVALUE% + %PAYOUT_TOTAL%)
IF NOT "%TRANSCATION%" == "reduce" (IF NOT "%TRANSCATION%" == "PENDING" (
echo.
echo Payment Accepted
echo.
echo Waiting for next payment attempt
timeout /t %TRANSCATION_DELAY%
set PAYOUT_TOTAL_MESSAGE=- %PAYOUT_TOTAL%.00 BTQ Paid so far
))
GOTO PAYMENTLOOP
:PROCESSFRACTIONS
SET BTQVALUEFP=%BTQVALUE:~2%
IF "%TRANSCATION%" == "reduce" (SET BTQVALUE=%BTQVALUE:~2%)
IF "%TRANSCATION%" == "reduce" (SET /a BTQVALUE=%BTQVALUE%-25)
IF "%TRANSCATION%" == "reduce" (SET BTQVALUE=0.%BTQVALUE%)
IF "%PAYOUT_STARTED%" == "no" (IF NOT "%TRANSCATION%" == "reduce" (set PAYOUT_STARTED=yes))
IF "%TRANSCATION%" == "reduce" (IF "%BTQVALUE%" == "0.0" ( GOTO PAYOUTNOMORE ))
IF NOT "%TRANSCATION%" == "reduce" (set PAYOUT_TOTAL=%PAYOUT_TOTAL:.=%)
IF NOT "%TRANSCATION%" == "reduce" (set /a PAYOUT_TOTAL=%BTQVALUEFP% + %PAYOUT_TOTAL%)
IF NOT "%TRANSCATION%" == "reduce" (set PAYOUT_TOTAL=%PAYOUT_TOTAL:~0,-2%.%PAYOUT_TOTAL:~-2%)
IF NOT "%TRANSCATION%" == "reduce" (
echo.
echo Payment Accepted
echo.
echo Waiting for next payment attempt
timeout /t %TRANSCATION_DELAY%
set PAYOUT_TOTAL_MESSAGE=- %PAYOUT_TOTAL% BTQ Paid so far
)
GOTO PAYMENTLOOP
GOTO END
:STARTFRACTIONS
IF NOT "%FRACTIONS%" == "yes" (GOTO PAYOUTNOMORE)
SET PAYOUT_TOTAL=%PAYOUT_TOTAL%.00
SET FRACTIONSSTARTED=yes
SET BTQVALUE=0.75
set TRANSCATION=
GOTO PAYMENTLOOP
:PAYOUTNOMORE
cls
echo.
echo Reached minimum payment value or no more funds to pay from
echo.
echo An total of %PAYOUT_TOTAL% BTQ was paid to %PAYMENT_ADDRESS%
echo.
pause
echo.
echo.
GOTO END
:OPENWALLET
cls
echo.
echo IF appears the wallet program is not started. Please ensure
echo your wallet is open before running and the script again.
echo.
echo An overall total of %PAYOUT_TOTAL% BTQ was paid to %PAYMENT_ADDRESS%
echo.
echo Note the above value does not include the value of fraction payments
echo.
pause
echo.
echo.
GOTO END
:END
del /F /Q %TEMP_FILE%
chdir /d %OLDDIR%
title