Bitcoin Forum

Other => MultiBit => Topic started by: andrey2345 on April 30, 2014, 07:08:01 PM



Title: Multibit: a way to reduce transaction fee
Post by: andrey2345 on April 30, 2014, 07:08:01 PM
Intro (go to Cure section if you are looking for a quick fix)

As many of you might know already, Multibit wallet has a built-in minimum transaction fee, which cannot be adjusted
(at least in recent versions). Wallet developers justify it by stating that inexperienced users might choose to
go with too low transaction fee and end up waiting too long for confirmation which might spoil the whole crypto experience
for them. And it makes sense! However, not all users are inexperienced and not everybody wants transactions to go as fast
as possible. For example, I like to keep my coins in several accounts and sometimes I need to send them to myself (like
hot wallet to cold wallet) and I don't care too much about speed and I even willing to resend my transaction if it gets stuck.
Anyway, I think somebody might also be interested in this stuff, so here we go!

Basically there are two ways around:
1. Clone the source from the repository, adjust SEND_MINIMUM_FEE in org.multibit.model.bitcoin.BitcoinModel and build
2. Download Multibit client and adjust the value right in the executable file

Despite the fact that I have experience in software development, I wasn't able to build Multibit quickly and gave up after
an hour. If anyone is still willing to try the first option, please tell me here. In the end I went with the second one
and it turned out to be much easier.

Cure

You will need Java installed on your computer. If you are using Multibit then you have it installed already

1. Download Multibit wallet from official website https://multibit.org/
2. Download reJ - rej_v0.7_bin.zip file from http://rejava.sourceforge.net/ and unzip it
3. Install Multibit somewhere (e.g. /home/user/Multibit)
4. Go to terminal, change dir to where you unzipped reJ, and run it (java -jar rej.jar) or just run it from your file manager       
5. reJ main window will appear. Click "Open" and find your Multibit executable jar file (e.g. /home/user/Multibit/multibit-exe.jar)
6.The contents of the multibit-exe.jar will appear (.jar files are just plain zip archives), double-click on the line "org/multibit/model/bitcoin"
7. Double-click on the BitcoinModel.class - the contents of the file will appear, but you can't change it directly
8. So click "View" in the menu bar and make sure the "Constant Pool" is checked
9. Switch to "Constant Pool" tab (if not there already) and look for a string which has value: "10000" In my case it was sixth from the top.
10. This is actually the value of the transaction fee expressed in satoshis. So if you want your transaction fee to be zero, just change this
value to 0 or anything else you like.
11. Click save. Start Multibit executable you just adjusted. The fee should now be what you have set in step 10.  :D

If you need to change the fee from time to time you might want to make several copies of your multibit-exe.jar with different transaction
fees in them. Make sure you give them some sensible names so it is easy to remember what fee each has inside  ;)

Good luck!
       


Title: Re: Multibit: a way to reduce transaction fee
Post by: AussieHash on August 06, 2014, 07:57:16 AM
Thank you for this very helpful walkthrough.  It works well.

I set the SEND_MINIMUM_FEE to 0 in reJ and although multibit still requires a 0.0001 btc transaction fee, this is at least 5-10x less than the standard fee.  My transaction had 1 confirmation within 2 minutes.


Title: Re: Multibit: a way to reduce transaction fee
Post by: Velkro on August 06, 2014, 08:56:01 AM
interesting guide, should be usefull and fees in multibit should depend on price and not be fixed


Title: Re: Multibit: a way to reduce transaction fee
Post by: bitsmichel on August 06, 2014, 11:58:00 AM
Quote
10. This is actually the value of the transaction fee expressed in satoshis. So if you want your transaction fee to be zero, just change this
value to 0 or anything else you like.

Will transactions still be confirmed if you set it to say 0.00005 BTC ?


Title: Re: Multibit: a way to reduce transaction fee
Post by: andrey2345 on August 12, 2014, 02:59:44 PM
Well it depends on miners. If there are miners (pools actually) who are willing to include 0 fee transactions into the blocks they mine than it will be confirmed. From my experience I can say that there are such pools at the moment. Don't know what will be in the future. But be aware that transactions with 0 fee might take even few days to get confirmed! So if you are not in hurry it is a viable option. But if you need to send some coins quickly, I would advise against zero fee transactions. Remember the higher the fee the higher the chance to get into next block. 

The worst case scenario (if nobody is willing to process the 0 fee transaction) you will have to jump through some hoops to get your coins back in your wallet. But they won't be lost forever for sure.



Title: Re: Multibit: a way to reduce transaction fee
Post by: andrey2345 on August 12, 2014, 03:05:31 PM
Thank you for this very helpful walkthrough.  It works well.

I set the SEND_MINIMUM_FEE to 0 in reJ and although multibit still requires a 0.0001 btc transaction fee, this is at least 5-10x less than the standard fee.  My transaction had 1 confirmation within 2 minutes.

Yeah, you are right. I've noticed the same thing later. There is another place you need to change things to get it down to 0 for sure. I don't remember right now but if someone really needs this, I might try to remember.


Title: Re: Multibit: a way to reduce transaction fee
Post by: jkister on August 31, 2014, 11:08:19 AM
   
5. reJ main window will appear. Click "Open" and find your Multibit executable jar file (e.g. /home/user/Multibit/multibit-exe.jar)

Anyone know how to do this on Windows7 ?  I'd like to reduce the min fee to 0 and - just in case - reduce the max fee to .01. 

Using Multibit 0.5.18, there is no multibit-exe.jar in c:\program files (x86)\multibit-0.5.18\ nor %appdata%\multibit

alternatively, any tips on how to build from source for windows7 would also be great.  the clues in readme.md aren't enough for me.


Title: Re: Multibit: a way to reduce transaction fee
Post by: andrey2345 on August 31, 2014, 06:36:10 PM
This is all Java , so everything should work on Windows just the same. Just make a full disc search for all *.jar files and you'll find multibit.


Title: Re: Multibit: a way to reduce transaction fee
Post by: jkister on September 01, 2014, 01:15:30 AM
This is all Java , so everything should work on Windows just the same. Just make a full disc search for all *.jar files and you'll find multibit.

no multibit*.jar exists on the machine -

I have lots of %appdata%\local\temp\tempNN.jar - when I load Temp14.jar, Multibit opens.  But extracting it doesn't show the folders/files i'm looking for (folders include ch/com/i18n/images/javax/lib/...)

The only other .jar file related to multibit is c:\program files (x86)\Multibit-0.5.18\uninstaller\uninstaller.jar

no more wild goose chase for now.


Title: Re: Multibit: a way to reduce transaction fee
Post by: AussieHash on September 01, 2014, 01:28:19 PM
Thank you for this very helpful walkthrough.  It works well.

I set the SEND_MINIMUM_FEE to 0 in reJ and although multibit still requires a 0.0001 btc transaction fee, this is at least 5-10x less than the standard fee.  My transaction had 1 confirmation within 2 minutes.

Yeah, you are right. I've noticed the same thing later. There is another place you need to change things to get it down to 0 for sure. I don't remember right now but if someone really needs this, I might try to remember.

I've made lots of changes to Multibit, there seems to be an "estimated fee" calculation that I cannot bypass yet.  I am able to set a 0-fee transaction, but have to set the send amount to be 0.0001 less than the full wallet amount.

Either way, with just your 1 patch cure, I was able to reduce the transaction fee to sweep my mining address from 0.0016 down to 0.0001 btc

Edit : just sent 2 x 0 fee transactions, 1405 (bytes) and 15270 (bytes) - which unmodified multibit would have required 0.0002 btc and 0.0016 btc transaction fees.
Both were confirmed in the 2nd earliest possible block, with 0 transaction fee. (there were approx 1300 unconfirmed transactions on the network at the time)


Title: Re: Multibit: a way to reduce transaction fee
Post by: andrey2345 on September 02, 2014, 02:34:19 PM
no multibit*.jar exists on the machine -

How do you start MultiBit then?


Title: Re: Multibit: a way to reduce transaction fee
Post by: jkister on September 02, 2014, 04:58:00 PM
How do you start MultiBit then?

a shortcut on my startmenu points to c:\program files (x86)\multibit-0.5.18\multibit.exe

either the shortcut or the multibit.exe binary launches it.


Title: Re: Multibit: a way to reduce transaction fee
Post by: R2D221 on September 03, 2014, 02:45:41 AM
The Windows build has the Java program inside the .EXE. It may be possible to extract it, but I think it's easier to install it in Linux and then to copy it to Windows.


Title: Re: Multibit: a way to reduce transaction fee
Post by: Muhammed Zakir on September 10, 2014, 03:26:14 PM
Thanks for the guide! It really helps. How much time would it take to get atleast 1 confirmation for 0 fee transaction?

  ~~MZ~~


Title: Re: Multibit: a way to reduce transaction fee
Post by: andrey2345 on September 10, 2014, 04:24:45 PM
From 10 minutes to never. There is no definitive answer to this question. All depends on miners. Fee is usually proportional to the chance to have your transaction in the next block. The smaller the fee the lower the chance.


Title: Re: Multibit: a way to reduce transaction fee
Post by: Prompyboo on October 13, 2014, 02:31:57 PM
thank you for the guide


Title: Re: Multibit: a way to reduce transaction fee
Post by: ekkis on January 11, 2015, 08:17:24 AM
6.The contents of the multibit-exe.jar will appear (.jar files are just plain zip archives), double-click on the line "org/multibit/model/bitcoin"
7. Double-click on the BitcoinModel.class - the contents of the file will appear, but you can't change it directly
I'm running OSX 10.9.5 with Multibit 0.5.18; when I open the /Applications/Multibit.app file in reJ I get a listing of folders: Contents, Contents/MacOS, Contents/Resources, Contents/Resources/Java, Contents/_CodeSignature

under Contents/Resources/Java I find multibit-exe.jar but double-clicking on it generates the error below:

Exception was thrown: Error parsing class file /Applications/Multibit.app: Invalid Magic: 50 4b 03 04

any thoughts?


Title: Re: Multibit: a way to reduce transaction fee
Post by: ekkis on January 11, 2015, 08:27:06 AM
when I open the /Applications/Multibit.app file in reJ I get a listing of folders
what I ended up having to do was right-click on the application and select "Show Package Contents"... copied the multibit-exe.jar to somewhere that reJ can access, edited it there and copied it back.  reJ can't traverse the .app folder - it opens it instead


Title: Re: Multibit: a way to reduce transaction fee
Post by: Marcoser123321 on January 16, 2015, 01:34:09 AM
Thanks for this. This is going to help me out tons.

I don't mind the logic behind having a default fee, but the execution should be optional. The fact that it isn't is rather annoying.


Title: Re: Multibit: a way to reduce transaction fee
Post by: Tolullopsy on December 17, 2017, 08:50:34 AM
Can this still be used with the crazy bitcoin fee this days


Title: Re: Multibit: a way to reduce transaction fee
Post by: HCP on December 20, 2017, 04:40:46 AM
MultiBit already sends with a ridiculously low fee compared to what fees are actually recommended to be these days...

I think the maximum that either MultiBit Classic or HD will actually use is about 50 sats/byte... ::)

Given that the recommended fees are currently 500+ sats/byte... Any transaction you send is likely to get stuck for a while.

There is a reason everyone (including the MultiBit Devs) is telling users to migrate from MultiBit to other wallets without bugs and better fee systems