Bitcoin Forum
May 07, 2024, 06:21:46 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 3 4 5 »  All
  Print  
Author Topic: [ANN] Bitcoin Transaction Fee Booster  (Read 18425 times)
achow101 (OP)
Staff
Legendary
*
Offline Offline

Activity: 3388
Merit: 6595


Just writing some code


View Profile WWW
June 11, 2016, 03:12:38 AM
Last edit: June 11, 2016, 05:23:43 PM by knightdk
 #1

Today I am announcing the Bitcoin Transaction Fee Booster.

This is my response to the constant complaints about users who are waiting a long time for confirmations. The program gives the user two options to increase the fee of their unconfirmed transactions, Replace-By-Fee for senders and Child Pays For Parent for receivers. The software will take the raw hex of a transaction, ask the user for some information, and create an unsigned transaction which can be signed outside of the program. Then the signed transaction can be broadcast from the software.

Usage
Using the Fee Booster is very simple and follows a wizard with step by step instructions.

Download the zip file from https://github.com/achow101/FeeBooster/releases. Extract everything inside to the same folder. Double click the FeeBooster.jar file to start the program.

First you enter the raw hex of the transaction and choose whether you sent or received it. Then, if you sent the transaction, you will be brought to a page which asks you to set the increased fee of the RBF transaction and the output to deduct the fee from. If you received, you will be brought to a page to select the output you want to spend from, the address to send to, and the fee for the child transaction. The next page is the unsigned transaction that the software made and you must take this to your own wallet to be signed. Lastly, the signed transaction can be broadcast from the software.

How it works
The program uses https://bitcoinfees.21.co/ to calculate the optimal fee for the transaction. It also uses blockcypher.com's api for retrieving some other information for the transaction. To send the transaction, the program uses the BitcoinJ library.

Security
The program, as of now, does not take your private keys. This is a planned feature to allow signing within the program, but currently that does not happen. The software produces an unsigned transaction which can be independently verified to see that it makes the right transaction. It will also display the transaction id of the broadcasted transaction and that can be verified to be the transaction that the user intended. This software is not malicious

Source code
The Fee Booster is open source. The source code is available at https://github.com/achow101/FeeBooster. Pull requests are welcome

License
The Fee Booster is licensed under the GNU General Public License Version 3. The full license can be found at https://github.com/achow101/FeeBooster/blob/master/LICENSE.

Donations
If you have found this program helpful, please support the developer (me) and donate to 1QDNS5XuUEcdjQn4TU4qvXRnVtVv4CsssC

Disclaimer
This software comes as is and may have some bugs. I am not responsible if you happen to lose any of your coins when using this software. Always check the transaction before you send it.

Edit: typos

Even in the event that an attacker gains more than 50% of the network's computational power, only transactions sent by the attacker could be reversed or double-spent. The network would not be destroyed.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
Jacoder23
Newbie
*
Offline Offline

Activity: 20
Merit: 0


View Profile
June 11, 2016, 04:54:21 PM
 #2

Wow, this seems really promising! I better go try it out later.
cloverme
Legendary
*
Offline Offline

Activity: 1512
Merit: 1054


SpacePirate.io


View Profile WWW
June 14, 2016, 12:44:14 PM
 #3

Let me see if I got this right, this program is for those who sent a bitcoin but then the fee was too low, so it's not getting added to a block in a reasonable amount of time?

Jane sends 0.01 to Bob but only had a 0.0000001 transaction fee.
Jane uses your program to boost the fee to 0.0002 to get it added to a block faster

Right or do I have it wrong?
achow101 (OP)
Staff
Legendary
*
Offline Offline

Activity: 3388
Merit: 6595


Just writing some code


View Profile WWW
June 14, 2016, 01:47:01 PM
 #4

Let me see if I got this right, this program is for those who sent a bitcoin but then the fee was too low, so it's not getting added to a block in a reasonable amount of time?

Jane sends 0.01 to Bob but only had a 0.0000001 transaction fee.
Jane uses your program to boost the fee to 0.0002 to get it added to a block faster

Right or do I have it wrong?

Yep. That's exactly what it is for.

cloverme
Legendary
*
Offline Offline

Activity: 1512
Merit: 1054


SpacePirate.io


View Profile WWW
June 14, 2016, 04:32:41 PM
 #5

Wow... well done man, that's truly an epic development.  Have you posted about it in the Development & Tech group?  Not to say this particular forum is low-brow, but well, your development is worthy of higher recognition!
Joel_Jantsen
Legendary
*
Offline Offline

Activity: 1876
Merit: 1308

Get your game girl


View Profile
June 14, 2016, 09:02:02 PM
 #6

Nice.Very helpful if used properly.Have you tested it out with multiple test cases to see if anything goes wrong ?
So you're rebroadcasting a transaction without having to do all of the hassle.
For example I have a unconfirmed transaction with 0 fees which may take forever to get confirmed or eventually get rejected from the mempool ,I can simply use the program add the custom fees and broadcast it again ?
alani123
Legendary
*
Offline Offline

Activity: 2394
Merit: 1412


Leading Crypto Sports Betting & Casino Platform


View Profile
June 14, 2016, 09:31:13 PM
 #7

This sounds like a ery helpful application, I'm glad you took time to create this much needed tool. It finally offers a simple solution to a common problem.

..Stake.com..   ▄████████████████████████████████████▄
   ██ ▄▄▄▄▄▄▄▄▄▄            ▄▄▄▄▄▄▄▄▄▄ ██  ▄████▄
   ██ ▀▀▀▀▀▀▀▀▀▀ ██████████ ▀▀▀▀▀▀▀▀▀▀ ██  ██████
   ██ ██████████ ██      ██ ██████████ ██   ▀██▀
   ██ ██      ██ ██████  ██ ██      ██ ██    ██
   ██ ██████  ██ █████  ███ ██████  ██ ████▄ ██
   ██ █████  ███ ████  ████ █████  ███ ████████
   ██ ████  ████ ██████████ ████  ████ ████▀
   ██ ██████████ ▄▄▄▄▄▄▄▄▄▄ ██████████ ██
   ██            ▀▀▀▀▀▀▀▀▀▀            ██ 
   ▀█████████▀ ▄████████████▄ ▀█████████▀
  ▄▄▄▄▄▄▄▄▄▄▄▄███  ██  ██  ███▄▄▄▄▄▄▄▄▄▄▄▄
 ██████████████████████████████████████████
▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄
█  ▄▀▄             █▀▀█▀▄▄
█  █▀█             █  ▐  ▐▌
█       ▄██▄       █  ▌  █
█     ▄██████▄     █  ▌ ▐▌
█    ██████████    █ ▐  █
█   ▐██████████▌   █ ▐ ▐▌
█    ▀▀██████▀▀    █ ▌ █
█     ▄▄▄██▄▄▄     █ ▌▐▌
█                  █▐ █
█                  █▐▐▌
█                  █▐█
▀▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▀█
▄▄█████████▄▄
▄██▀▀▀▀█████▀▀▀▀██▄
▄█▀       ▐█▌       ▀█▄
██         ▐█▌         ██
████▄     ▄█████▄     ▄████
████████▄███████████▄████████
███▀    █████████████    ▀███
██       ███████████       ██
▀█▄       █████████       ▄█▀
▀█▄    ▄██▀▀▀▀▀▀▀██▄  ▄▄▄█▀
▀███████         ███████▀
▀█████▄       ▄█████▀
▀▀▀███▄▄▄███▀▀▀
..PLAY NOW..
achow101 (OP)
Staff
Legendary
*
Offline Offline

Activity: 3388
Merit: 6595


Just writing some code


View Profile WWW
June 15, 2016, 01:52:18 AM
 #8

Nice.Very helpful if used properly.Have you tested it out with multiple test cases to see if anything goes wrong ?
So you're rebroadcasting a transaction without having to do all of the hassle.
Well it doesn't rebroadcast. It just does one massive broadcast/flood to several hundred nodes in order to get the transaction out as quickly as possible. I suppose I could also add in a thing for rebroadcasting and something on the front page to jump directly to broadcasting too.

For example I have a unconfirmed transaction with 0 fees which may take forever to get confirmed or eventually get rejected from the mempool ,I can simply use the program add the custom fees and broadcast it again ?
Yes, except you will need to sign the transaction in your wallet, which may require a little advanced knowledge.

This sounds like a ery helpful application, I'm glad you took time to create this much needed tool. It finally offers a simple solution to a common problem.
Thanks! I hope that it will help alleviate the unconfirmed transaction problem.

BigBadBitBaron
Sr. Member
****
Offline Offline

Activity: 463
Merit: 256


View Profile
June 15, 2016, 10:46:15 PM
 #9

thanks for all this sir,

unfortunately I can't get my head around this

"you must take this to your own wallet to be signed. Lastly, the signed transaction can be broadcast from the software"

achow101 (OP)
Staff
Legendary
*
Offline Offline

Activity: 3388
Merit: 6595


Just writing some code


View Profile WWW
June 15, 2016, 10:52:03 PM
 #10

thanks for all this sir,

unfortunately I can't get my head around this

"you must take this to your own wallet to be signed. Lastly, the signed transaction can be broadcast from the software"
If you didn't already know, Bitcoin transactions use cryptographic signatures, which can only be created by possessing the private key which corresponds to the address you are spending from. So what my program does is it creates the unsigned transaction, which is the transaction right up until it is signed. Most wallets recognize unsigned transactions and will know how to sign them. In Bitcoin Core, you can go to Help > Debug Window > Console. Then in the textbox at the bottom, type
Code:
signrawtransaction <unsigned tx hex>
where <unsigned tx hex> is the unsigned transaction that my program puts in the textbox when you get to that page. Bitcoin Core will sign the transaction and output should look like this:
Code:
{
  "hex" : "<hex>",
  "complete" : true
}
where <hex> is the actual signed transaction. Then you can take that signed transaction back to my program and broadcast it.

BigBadBitBaron
Sr. Member
****
Offline Offline

Activity: 463
Merit: 256


View Profile
June 16, 2016, 01:32:17 AM
 #11

thanks for all this sir,

unfortunately I can't get my head around this

"you must take this to your own wallet to be signed. Lastly, the signed transaction can be broadcast from the software"
If you didn't already know, Bitcoin transactions use cryptographic signatures, which can only be created by possessing the private key which corresponds to the address you are spending from. So what my program does is it creates the unsigned transaction, which is the transaction right up until it is signed. Most wallets recognize unsigned transactions and will know how to sign them. In Bitcoin Core, you can go to Help > Debug Window > Console. Then in the textbox at the bottom, type
Code:
signrawtransaction <unsigned tx hex>
where <unsigned tx hex> is the unsigned transaction that my program puts in the textbox when you get to that page. Bitcoin Core will sign the transaction and output should look like this:
Code:
{
  "hex" : "<hex>",
  "complete" : true
}


where <hex> is the actual signed transaction. Then you can take that signed transaction back to my program and broadcast it.

Sorry sir,
somewhat technically challenged...

Been drawn into Bitcoin by the perception that it was trying to gain mainstream recognition....  obviously not for stupid people like me.. with 2 degrees and a masters

achow101 (OP)
Staff
Legendary
*
Offline Offline

Activity: 3388
Merit: 6595


Just writing some code


View Profile WWW
June 16, 2016, 01:37:55 AM
 #12

thanks for all this sir,

unfortunately I can't get my head around this

"you must take this to your own wallet to be signed. Lastly, the signed transaction can be broadcast from the software"
If you didn't already know, Bitcoin transactions use cryptographic signatures, which can only be created by possessing the private key which corresponds to the address you are spending from. So what my program does is it creates the unsigned transaction, which is the transaction right up until it is signed. Most wallets recognize unsigned transactions and will know how to sign them. In Bitcoin Core, you can go to Help > Debug Window > Console. Then in the textbox at the bottom, type
Code:
signrawtransaction <unsigned tx hex>
where <unsigned tx hex> is the unsigned transaction that my program puts in the textbox when you get to that page. Bitcoin Core will sign the transaction and output should look like this:
Code:
{
  "hex" : "<hex>",
  "complete" : true
}


where <hex> is the actual signed transaction. Then you can take that signed transaction back to my program and broadcast it.

Sorry sir,
somewhat technically challenged...

Been drawn into Bitcoin by the perception that it was trying to gain mainstream recognition....  obviously not for stupid people like me.. with 2 degrees and a masters
Open Bitcoin Core. At the top where it says "File" "Settings" "Help". Click on Help and then in the menu, click "Debug Window". A new window will open with four tabs at the top. Choose the "Console" tab. Then there is a small box at the bottom of that window. That is where you type the commands that I gave you earlier.

Windpower
Hero Member
*****
Offline Offline

Activity: 532
Merit: 501



View Profile
June 17, 2016, 06:57:28 AM
 #13

Correct me if im wrong -

So what you're doing is basically copying the inputs and outputs of a Pending Tx, and making another transaction that will confirm before the first one does?
achow101 (OP)
Staff
Legendary
*
Offline Offline

Activity: 3388
Merit: 6595


Just writing some code


View Profile WWW
June 17, 2016, 02:35:07 PM
 #14

Correct me if im wrong -

So what you're doing is basically copying the inputs and outputs of a Pending Tx, and making another transaction that will confirm before the first one does?
Close.

There are actually two parts, RBF and CPFP. The RBF part copies the inputs and all but one of the outputs. The last output (which is selected by the user) is slightly modified because the additional fee is deducted from that output.

For CPFP, it actually creates a whole new transaction, because that is how CPFP works. It creates the transaction with one input which points to the user specified output and then has an output to a user specified address.

jackson99999
Newbie
*
Offline Offline

Activity: 13
Merit: 0


View Profile
June 23, 2016, 04:32:54 AM
 #15

hello can i pay my extra fees from another wallet ?

where i see address to pay to ( is this the address i would like to pay my fee from ?)

from there i sign my transaction and is good to go ?
achow101 (OP)
Staff
Legendary
*
Offline Offline

Activity: 3388
Merit: 6595


Just writing some code


View Profile WWW
June 23, 2016, 11:25:36 AM
 #16

hello can i pay my extra fees from another wallet ?

where i see address to pay to ( is this the address i would like to pay my fee from ?)

from there i sign my transaction and is good to go ?
As of now, you cannot add the fee from another address. The fee must come from one of the outputs on the transaction you have an issue with.

gogodr
Sr. Member
****
Offline Offline

Activity: 434
Merit: 250



View Profile
June 25, 2016, 06:39:52 AM
 #17

Let me see if I got this right, this program is for those who sent a bitcoin but then the fee was too low, so it's not getting added to a block in a reasonable amount of time?

Jane sends 0.01 to Bob but only had a 0.0000001 transaction fee.
Jane uses your program to boost the fee to 0.0002 to get it added to a block faster

Right or do I have it wrong?

Yep. That's exactly what it is for.

Pretty useful tool, thanks. Also +1 on open sourcing your project. Great contribution to the Bitcoin community.
achow101 (OP)
Staff
Legendary
*
Offline Offline

Activity: 3388
Merit: 6595


Just writing some code


View Profile WWW
July 06, 2016, 03:13:14 PM
 #18

Bump.

squatz1
Legendary
*
Offline Offline

Activity: 1666
Merit: 1285


Flying Hellfish is a Commie


View Profile
August 29, 2016, 03:41:39 PM
 #19

The amount of time I've spent looking for something like this is actual gross, I will have to send you a ton amount of love for making this.


Will be using this in the future for some of my fuck-ups.




▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄    ▄▄▄▄                  ▄▄▄   ▄▄▄▄▄        ▄▄▄▄▄   ▄▄▄▄▄▄▄▄▄▄▄▄    ▄▄▄▄▄▄▄▄▄▄▄▄▄▄   ▄▄▄▄▄▄▄▄▄▄▄▄▄▄   ▄▄▄▄▄▄▄▄▄▄▄
 ▀████████████████▄  ████                 █████   ▀████▄    ▄████▀  ▄██████████████   ████████████▀  ▄█████████████▀  ▄█████████████▄
              ▀████  ████               ▄███▀███▄   ▀████▄▄████▀               ████   ████                ████                   ▀████
   ▄▄▄▄▄▄▄▄▄▄▄█████  ████              ████   ████    ▀██████▀      ██████████████▄   ████████████▀       ████       ▄▄▄▄▄▄▄▄▄▄▄▄████▀
   ██████████████▀   ████            ▄███▀     ▀███▄    ████        ████        ████  ████                ████       ██████████████▀
   ████              ████████████▀  ████   ██████████   ████        ████████████████  █████████████▀      ████       ████      ▀████▄
   ▀▀▀▀              ▀▀▀▀▀▀▀▀▀▀▀   ▀▀▀▀   ▀▀▀▀▀▀▀▀▀▀▀▀  ▀▀▀▀        ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀   ▀▀▀▀▀▀▀▀▀▀▀▀        ▀▀▀▀       ▀▀▀▀        ▀▀▀▀▀

#1 CRYPTO CASINO & SPORTSBOOK
  WELCOME
BONUS
.INSTANT & FAST.
.TRANSACTION.....
.PROVABLY FAIR.
......& SECURE......
.24/7 CUSTOMER.
............SUPPORT.
BTC      |      ETH      |      LTC      |      XRP      |      XMR      |      BNB      |     more
Ortek
Newbie
*
Offline Offline

Activity: 42
Merit: 0


View Profile
September 04, 2016, 02:26:07 AM
 #20

Thanks for sharing, you'll be saving life's with this lol
Great tool Cheesy
Pages: [1] 2 3 4 5 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!