Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: spammingentropy on June 18, 2022, 11:27:42 AM



Title: How to make transaction never gets confirmed?
Post by: spammingentropy on June 18, 2022, 11:27:42 AM
Is there any Bitcoin wallet that allows you send transaction with low fees that miners will not ever confirm it?
I need send a transaction to a BTC address and I want this transaction displayed on blockchain but must never gets confirmed.
Is this possible? Is there any wallet that allows this?


Title: Re: How to make transaction never gets confirmed?
Post by: nc50lc on June 18, 2022, 11:37:02 AM
It's not possible to broadcast a transaction and prevent miners from mining it.
You can time it when mempools get to a very high size then set the fee rate to the current standard minimum of 1sat/vB but that will still get confirmed later.

I need send a transaction to a BTC address and I want this transaction displayed on blockchain but must never gets confirmed.
You mean blockchain(dot)com block explorer? Yes?
Because otherwise, a transaction in the blockchain is already confirmed.


Title: Re: How to make transaction never gets confirmed?
Post by: BlackHatCoiner on June 18, 2022, 11:41:05 AM
This sounds like you want to scam someone.

If you have a transaction, that complies with the consensus rules, and you broadcast that transaction, it's like saying "I want this confirmed". It doesn't make sense to not want it confirmed neither for the users nor for the protocol.


Title: Re: How to make transaction never gets confirmed?
Post by: hZti on June 18, 2022, 11:46:41 AM
If it will not be confirmed because the fee is to low it will at some point be deleted from the mempool and refunded to your wallet. So in no case it will be just forever not be confirmed but a max of a few days/weeks. This will not work however right now since fees are low.


Title: Re: How to make transaction never gets confirmed?
Post by: garlonicon on June 18, 2022, 11:54:39 AM
Quote
Is there any Bitcoin wallet that allows you send transaction with low fees that miners will not ever confirm it?
Yes, Bitcoin Core allows you to create any transaction, even if it will be invalid, and will allow you to sign any transaction, no matter what.
Code:
createrawtransaction "[{\"txid\":\"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b\",\"vout\":0}]" "[{\"data\":\"54686973207472616e73616374696f6e20776173206372656174656420627920426974636f696e20436f72652c20616e642069742077696c6c206e6576657220626520636f6e6669726d65642c206e6f206d617474657220776861742e\"}]" 0 true
02000000013ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a0000000000fdffffff010000000000000000606a4c5d54686973207472616e73616374696f6e20776173206372656174656420627920426974636f696e20436f72652c20616e642069742077696c6c206e6576657220626520636f6e6669726d65642c206e6f206d617474657220776861742e00000000

signrawtransactionwithkey "02000000013ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a0000000000fdffffff010000000000000000606a4c5d54686973207472616e73616374696f6e20776173206372656174656420627920426974636f696e20436f72652c20616e642069742077696c6c206e6576657220626520636f6e6669726d65642c206e6f206d617474657220776861742e00000000" "[\"KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU73sVHnoWn\"]" "[{\"txid\":\"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b\",\"vout\":0,\"scriptPubKey\":\"210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798ac\",\"amount\":50.00000000}]"
{
  "hex": "02000000013ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a000000004847304402204548ee5ea859990ceee9cf39b4a81643376f6150ebe19fd7961a3afa4a69a914022025faf0e4979ee9fa5c9ae20792e1f73b1c7ab88fd3b3493b0925e72725ca66b201fdffffff010000000000000000606a4c5d54686973207472616e73616374696f6e20776173206372656174656420627920426974636f696e20436f72652c20616e642069742077696c6c206e6576657220626520636f6e6669726d65642c206e6f206d617474657220776861742e00000000",
  "complete": true
}

Quote
and I want this transaction displayed on blockchain
There is no such thing as "displayed on blockchain". We have nodes, where each node has its own mempool, so each node can decide, what is displayed, and what is not. Also, there are block explorers that have a lot of bugs, then making such transaction is trivial, especially on test networks.

Quote
It's not possible to broadcast a transaction and prevent miners from mining it.
Why not? It is possible to configure a node to allow free transactions and zero satoshi outputs, then such node will accept transactions, that will never be mined. Also, it is possible to allow "negative fee" transactions on such node, or even allow "provably invalid" transactions, that will allow to commit to something (and prove the ownership of the funds) without allowing to move any coins, see: the signet way of making signatures.

Quote
This sounds like you want to scam someone.
I don't know that, because some people proposed making transactions that will be "valid until some time", so that they could be invalidated later. But for many reasons (for example making things safe for chain reorganizations) it is not how it works. If you ever want to make some transaction invalid, then you have to reach confirmations on some other transaction that will move the same coins, then that previous transaction will never be confirmed, that's the only way to make it "valid first, and invalid later".


Title: Re: How to make transaction never gets confirmed?
Post by: hosseinimr93 on June 18, 2022, 12:08:43 PM
Why not? It is possible to configure a node to allow free transactions and zero satoshi outputs, then such node will accept transactions, that will never be mined.
Right. But that transaction will be rejected by other nodes and won't be propagated to the network.
OP wants the transaction to be shown in block explorers (probably to scam someone). Since such a transaction will be rejected by other nodes, OP can't succeed.


Title: Re: How to make transaction never gets confirmed?
Post by: spammingentropy on June 18, 2022, 12:11:54 PM
Why not? It is possible to configure a node to allow free transactions and zero satoshi outputs, then such node will accept transactions, that will never be mined.
Right. But that transaction will be rejected by other nodes and won't be propagated to the network.
OP wants the transaction to be shown in block explorers (probably to scam someone). Since such a transaction will be rejected by other nodes, OP can't succeed.

It is not for scam but spam, I want to touch some fellows without a need to pay for it


Title: Re: How to make transaction never gets confirmed?
Post by: hosseinimr93 on June 18, 2022, 12:22:26 PM
It is not for scam but spam, I want to touch some fellows without a need to pay for it
Whatever you want to do, you have to pay for the transaction.
You need to pay at least 1 satoshi/vbyte as transaction fee and create outputs worth at least 547 satoshi, if sending to segwit address and 294 satoshi sending to legacy address.


Title: Re: How to make transaction never gets confirmed?
Post by: garlonicon on June 18, 2022, 12:23:41 PM
Quote
It is not for scam but spam, I want to touch some fellows without a need to pay for it
No problem, just run your node with those settings:
Code:
minrelaytxfee=0.00000000
blockmintxfee=0.00000000
dustrelayfee=0.00000000
Then, you can send free transactions between nodes that will declare to accept them, and then transactions will be sooner or later kicked from mempools, if you will stick with default settings. Also, doing that on test networks, instead of the main network, is a better idea, because then your transactions will not be accidentally mined by someone, when there will be almost no transactions flying around.

Edit: Also, if you want to make it spam-resistant and control how many transactions can be sent, then you can include Merged Mining, by including 80-byte Bitcoin block headers in OP_RETURN. Then, you can add mempool policy to reject transactions that will not include this Proof of Work. You can also control "required difficulty" by changing node settings to dynamically accept only commitments that are below some target, calculated automatically inside your network. It could be different for each node, just to control transaction flow.


Title: Re: How to make transaction never gets confirmed?
Post by: nc50lc on June 18, 2022, 12:26:46 PM
It is not for scam but spam, I want to touch some fellows without a need to pay for it
Spam? Just send the standard minimum amount which is 294 satoshi if the receiver is SegWit (bc1) or 546 satoshi for legacy addresses.

It will be cheap
But take note that it's not recommended since you'll be sending a very small amount that could be more expensive to spend than its amount.
Those "fellows" may not like it.


Title: Re: How to make transaction never gets confirmed?
Post by: garlonicon on June 18, 2022, 12:35:55 PM
Quote
It will be cheap
Well, spending zero coins on some separated network is cheaper, if you just want some decentralized messaging system. And if you want to get it timestamped, then including commitments by tweaking Bitcoin signatures is enough to get it timestamped every sometimes. Then, you can communicate on your own chain, and get the whole chain timestamped every time, when you are going to move some bitcoins, it will cost no additional on-chain bytes, just tweaking R-values in signatures in the same way as it is in TapScript is more than enough to cover that.


Title: Re: How to make transaction never gets confirmed?
Post by: BlackHatCoiner on June 18, 2022, 12:37:55 PM
It is not for scam but spam, I want to touch some fellows without a need to pay for it
Which is actually a scam, if you think of it twice. If you want to "touch" some fellows' addresses, then you'll have to either pay the dust amount or mine the block yourself, which will take you space, and therefore money again. Sorry, but these are the rules. That's what most nodes, by default, have configured. It happens to avoid spam.

And again, having a transaction in the mempool means you're okay to having it confirmed. Not only that, but you've made it publicly provable with a digital signature. It's down to the network now to decide.


Title: Re: How to make transaction never gets confirmed?
Post by: ranochigo on June 18, 2022, 01:28:36 PM
If your transaction can be seen on the network, then it should be valid by consensus rules. Even if all of the miners were running custom implementations, so long as someone is compliant with the rules, then your transaction will be mined.

There are of course ways to slow this down;
1) Having a transaction with high sigops. There was a way to exploit the sigops limit such that most mining pools prefer other transactions over yours. This makes it less desirable to mine your transaction. However, there is a sigops limit and this isn't a problem anymore.
2) Pay a lower fee, miners won't want to mine it.
3) Exploit the standardness rules across mining pools. IIRC, certain mining pool had a different standardness rule that resulted in them not wanting to mine specific transactions. I can't find the material for this but IIRC it happened before (not related to SatoshiDice censorship).

All in all, if your transaction is non-standard, it won't be mined without a miner explicitly doing so. If not, then your transaction will always be mined.


Title: Re: How to make transaction never gets confirmed?
Post by: odolvlobo on June 18, 2022, 04:13:43 PM
I don't know what a node's relay rules are regarding nLockTime, but you could perhaps create a mineable transaction with nLockTime set far into the future.


Title: Re: How to make transaction never gets confirmed?
Post by: ranochigo on June 18, 2022, 04:16:03 PM
I don't know what a node's relay rules are regarding nLockTime, but you could perhaps create a mineable transaction with nLockTime set far into the future.
Non-final transactions are not relayed. The locktime has to be passed for it to be accepted into a mempool.


Title: Re: How to make transaction never gets confirmed?
Post by: garlonicon on June 18, 2022, 05:36:08 PM
Quote
Non-final transactions are not relayed.
True, but accepting and rejecting transactions is node-specific, so it is not some strict part of the consensus. Then, it depends of what is needed, but it is possible to reach transaction replaceability by using the same coins to create a chain of transactions with decreasing locktime. For example, it is safe to sign some transaction that will move 1 BTC to someone, and will be valid after 10 years, because it is more likely that the transaction creator will move those coins earlier.

Edit: There are block explorers with many bugs, for example this one: https://live.blockcypher.com/btc-testnet/tx/984205e0b2e0162768442346a1d1f3261eb1567b1747c64f8eec6704206847a1/
Code:
02000000000101781dad69ee49d226c559a66519b344391269dca8e28a5857af969ec9b4902c910000000000fdffffff01b71c0100000000001976a9141a8657a9dcfa149130a16ff69127b638dd4ea13588ac02473044022035a9f1a80a6000134ab716f140208e7cc722e042601d351e050673e2afe1e9d3022030a0d0198d9b86f4afae5d666bc7e03de64c3cae2161756a69cb97c64b73c230822103e02197b3175cb09c24aa3e61db0eeb8650a786e8cbc050df785d82cf68d88d1400f15365
This is testnet3 transaction, with 1700000000 locktime, but still, their node accepts it (and display around 25% confidence for no reason), because it lacks many checks, for example locktime check and transaction size check.


Title: Re: How to make transaction never gets confirmed?
Post by: Husires on June 18, 2022, 06:17:17 PM
In Bitcoin, the currencies are either with you or at the second party, and this process does not take place until after coins added to the nearest block, while waiting for several blocks to ensure that the transaction is not reversed.

So technically, if you don't want your transaction to be confirmed, don't broadcast it.

After it has been broadcast, there is nothing to prevent it from being confirmed as long as the mempool is empty, but you can increase the possibility that it will not gets confirmed if the Mempool is full.

Spamming doesn't happen like that and it's often driven because with thousands of transactions, what you're trying to do is scam.


Title: Re: How to make transaction never gets confirmed?
Post by: pooya87 on June 19, 2022, 03:27:57 AM
It is not for scam but spam, I want to touch some fellows without a need to pay for it
That still sounds like a scam to me, but even if you wanted to really spam it still is not possible because every transaction you send to another node would cost that node some time and computing power and memory to verify and store in memory. That means they reject any transaction that is "not going to ever be confirmed" because it would be pointless to waste that memory on such a thing.
Not to mention that if it were otherwise that would have been an attack vector against nodes.


Title: Re: How to make transaction never gets confirmed?
Post by: NotATether on June 19, 2022, 03:47:06 AM
It is not for scam but spam, I want to touch some fellows without a need to pay for it

Well you see, now you have hit a brick wall in the protocol.

The only way you'd be able to flood transactions is inside regtest, or if you run on mainnet with your node completely disconnected from outbound peers.

Technically though, that means your transactions will be broadcasted but it will never go to any other peer. Why? Because you have to pay for spam as well. Transaction fees are a mechanism specifically introduced to make transaction spamming unviable because it is of no use to the network besides racking up everyone's internet bills.


Title: Re: How to make transaction never gets confirmed?
Post by: LoyceV on June 19, 2022, 08:20:49 AM
You mean blockchain(dot)com block explorer?
I've seen this years ago: a scammer made a transaction that showed up on blockchain.info, but not on any wallet. Needless to say, it never confirmed.
I don't know how it was done, but it's just one of many reasons not to use blockchain.info (now .com).

It is not for scam but spam, I want to touch some fellows without a need to pay for it
How about you send them an email?

If you insist on messing with Bitcoin: send dust. Or invalidate a valid transaction by playing with RBF in combination with unconfirmed parents. You risk hitting a block and getting the transaction confirmed.

Spam? Just send the standard minimum amount which is 294 satoshi if the receiver is SegWit (bc1) or 546 satoshi for legacy addresses.
Feel free to spam the addresses in my profile as often as you (OP) want :P Bitcoin can handle it, and I don't mind. Knock yourself out :D

Quote
you'll be sending a very small amount that could be more expensive to spend than its amount.
Smart coin control prevents this.


Title: Re: How to make transaction never gets confirmed?
Post by: garlonicon on June 19, 2022, 12:27:21 PM
Quote
How would you know rule of each mining pool? I expect black-box testing would take some time and decent amount of money.
Unless it is some test network. Or a separate chain, that is committed to Bitcoin every sometimes, to get it timestamped by Proof of Work. There is no reason to create spam on-chain if there are cheaper alternatives.


Title: Re: How to make transaction never gets confirmed?
Post by: death_wish on June 20, 2022, 09:39:43 AM
It is not for scam but spam, I want to touch some fellows without a need to pay for it

I am unsure of whether I should be impressed at the twisted honesty (“I’m not trying to steal money, but only to abuse network resources!”), or appalled at the audacity.

It reminds me of an historical case in which a robber sued another robber for breach of contract.  The plaintiff alleged that he and the defendant had agreed to divide the proceeds of literal highway robbery, but the defendant had taken more than his agreed share of stolen goods.  The court tossed the case, and sanctioned the plaintiff’s attorney for frivolous litigation with a penalty of £50 (then a significant sum).  This occurred a few hundred years ago, in the U.K.  Details are stated from my recollection; alas, I cannot now find the reference.  If anyone could provide it, it would make a suitable addition to this thread.


Is there any Bitcoin wallet that allows you send transaction with low fees that miners will not ever confirm it?
I need send a transaction to a BTC address and I want this transaction displayed on blockchain but must never gets confirmed.
Is this possible? Is there any wallet that allows this?
No.


Title: Re: How to make transaction never gets confirmed?
Post by: hosseinimr93 on June 20, 2022, 01:24:27 PM
2. Miner on certain pool (don't remember which one) have privilege to include few specific transaction.
You are probably referring to F2Pool (https://www.f2pool.com/pushtx). They allow their miners to submit a transaction, so it is included in the next block mined by them.
I doubt there's any other pool doing the same thing.


Title: Re: How to make transaction never gets confirmed?
Post by: garlonicon on June 20, 2022, 02:43:35 PM
Quote
What cheaper alternative do you have in mind?
1) Creating a separate chain to reach P2P Messaging System is cheaper.
2) Creating OP_RETURN commitments is cheaper.
3) Creating OP_RETURN commitments as a branch inside TapScript is even cheaper, the same with tweaking signatures in the same way as in Taproot is cheaper.
4) Sending messages on any test network instead of mainnet is cheaper (by the way, test coins are considered worthless, so sending public messages is the only reason why test networks are needed at all).
5) Using no chain at all is cheaper (and then, things can be always committed and timestamped by Bitcoin Proof of Work when needed).


Title: Re: How to make transaction never gets confirmed?
Post by: Cryptornd on June 22, 2022, 06:23:28 PM
after the submiting to the pool that transaction will be finalized . can be late but cannot be unconfirmed forever my friend


Title: Re: How to make transaction never gets confirmed?
Post by: seoincorporation on June 23, 2022, 12:24:49 AM
Hello garlonicon.

The only way to broadcast a transaction and avoid it getting confirmed is by double-spend the transaction to a new address. The double-spend should be done before the transaction gets confirmed.

This is like playing with fire and there is a risk lose your coins by failing with the double spend. But this is the only way to do it allowed by the nature of Blockchain.


Title: Re: How to make transaction never gets confirmed?
Post by: pooya87 on June 23, 2022, 03:50:14 AM
after the submiting to the pool that transaction will be finalized . can be late but cannot be unconfirmed forever my friend
Transactions are only "finalized" if they are confirmed which means if they are included in a block. Otherwise as long as they are unconfirmed and reside in the memory pool they can be dropped or invalidated (double spent).