9

Yes, Bitcoin Core will try resending the transaction until it confirms or is replaced. You can make it forget the transaction by starting Bitcoin Core with the option -zapwallettxes=<mode> Then, be sure to use the inputs in another transaction, because the transaction is still valid and might yet be confirmed. The only way to invalidate it is by ...


8

The lifetime of a transaction would be something like this: You start with a client, a wallet that contains your keypairs, and some unspent transactions (you get those from other people or through mining). You create a new transaction spending some of your unspent Bitcoins, sign it with your private keys. Your client will store a copy of it. Your client ...


7

In theory, that would be ideal if your goal is solely getting the transaction to mine. Hurts permissionless mining However it does require knowing how to reach miners directly. Mining is designed to be a permissionless business, accessible for anyone with the right hardware. Your solution would require publishing the IP addresses of miners to all ...


5

I think you may be confused about what block withholding means. Pools already assign unique work to miners which credits the pool, not the miner. A miner cannot take the block reward for himself. "Block withholding" means the miner submits shares normally, unless the share happens to be a block. Then he withholds it for either sabotage or lie-in-wait. ...


5

Given some time for network latency, do messages reach absolutely all connected peers and how long it takes for them to do that? Usually, standard transactions that pay a sufficient fee to be acceptable to most mempools, without any conflicts on the network will reach almost all nodes within a minute or so. However, there is no guarantee whatsoever that it ...


4

It is propagated server-to-server and, with luck, eventually gets to a bunch of miners who will include it in a block. There is no central authority -- individual servers are free to propagate transactions using whatever rules they wish.


4

The rule that at least one output is required is part of the original code, and changing it would mean a hard fork. There are many good changes that are possible with a hard fork, but none of them is considered worth the disruption that a hard fork would create. Changing the rules to permit no-output transactions would not even worth a soft fork, since, just ...


4

Computers running the Bitcoin software pass transactions from one to the other to rapidly distribute new transactions throughout the network. Miners accumulate transactions from the network to put into blocks that they mine. If you go to blockchain.info you can see new unconfirmed transactions scroll by on the bottom left.


4

They don't, essentially, the numbers given for this sort of thing are generally meaningless. Many of these services attempt to connect to a large portion of the listening network and gain insight into the chance of a transaction confirming, however this is not a measure of safety for transactions. A transaction having been announced by many nodes does not ...


3

Blockchain explorers run nodes which have connections to other nodes. They may have hundreds of connections. They likely also run multiple nodes for both redundancy (in case one node fails, they are still online) and to ensure that they are receiving transactions from as many sources as possible. So they will be connected to hundreds, maybe thousands of ...


3

The sender, recipient and transferred amount are already public information and readily available in the blockchain. The only special access that miners have is that they could log the ip address of users that directly submit transactions for mining, if such a direct access is offered. Besides that there is no special information available to miners.


2

Verify() verifies if the transaction is properly signed. Since Verify() doesn't really tell us if a transaction will successfully propagate It is either untrue or you found a bug. node.SendMessage(new TxPayload(tx)); should be perfect. However Stratis is currently building a Bitcoin .NET fullnode, with the lead of Nicolas Dorier, NBitcoin's creator,...


2

Yes, there is what is called transaction trickling. This is a mechanism to select a random peer for immediate forwarding of all transactions, while others receive the transaction after a random timeout. This is done in order to reduce the chances of fingerprinting the origin of a transaction. Similar to the proposed dandelion paper, it forwards a transaction ...


2

Generally, all full nodes should receive your transaction within a few minutes easily. There are a few exceptions, though. Non-standard transactions will only be propagated once they are included in a block. That also means that if you're sending a segwit transaction, full nodes that are not segwit compatible will only download the transaction after it is ...


2

You cannot reliably get such information. The best that you can do is ask individual nodes whether they have seen your transaction (by sending getdata messages and seeing if they respond) but even then, not all nodes will respond. It is impossible to ask all nodes (as not all nodes are listening so you cannot connect to all of them) nor is it possible to "...


2

There are also the 'standardness rules', which are separate from 'validity rules'. So this means a transaction can be either valid and standard, valid but non-standard, or invalid. A node can choose to broadcast any transaction it would like to the network, or none at all. If a node broadcasts invalid transactions, then it is likely that its peers will ...


1

how do you determine if that peer created the transaction or if it is simply relaying the transaction You cannot, at least not with absolute certainty. This is by design: it helps preserve the privacy of users on the network. That said, if you decided to run a whole bunch of nodes, and positioned them carefully in the network graph, then you could start ...


1

Miners are incentivized to always mine at the longest valid chain tip. If there were incentives to not mine on the longest known chain, then we would expect the network to be unable to maintain consensus on the blockchain's state. And without that, it would be impossible to build a reliable financial system. So it isn't about 'miners conceding a shorter ...


1

In the case of confirming that a transaction has been successfully submitted, failure to use mempool as a distributed pool means you'd have to query that one "mining node". Example: I send a transaction with my wallet directly to that 1 node to pay for a service. The service gives 10 minutes to see the transaction before invalidating the entire thing. Unless ...


1

Can we take for granted that if in time period t there were 10,000 connected peers (no new peers connecting, no peers disconnecting), all with good internet connection and hardware, then if every of those 10,000 peers originated one transaction (or any kind of message) to his peers, can we take for absolutely granted that eventually every single one of those ...


1

Used Bitcoin protocol over TCP/IP protocol. You can read more on this link https://en.bitcoin.it/wiki/Protocol_documentation#Message_types


1

Yes and no: this is a presentation from 2015, and you are referencing a section which Pieter described as "assume we can redesign bitcoin". So bitcoin hasn't been redesigned, and not everything has been implemented as described in 6:20. How it is handled today is part of a discussion with Andrew in bitcointalk (read down to page end). Older nodes don't get ...


1

The y axis of the plot shows the delay/size, that is, the number of seconds of delay produced by each kilobyte of data of the block. Therefore, as blocks get bigger, the overall delay of the block also gets bigger. However, the delay per kilobyte of data approaches a constant value. This is produced because the overhead generated by the bitcoin protocol ...


1

Bitcoin uses a gossip protocol to transmit blocks and transactions. When you connect to the Bitcoin network, your wallet becomes a node on that network. It maintains one or more connections to other nodes. When you send a transaction, you send it to all of the nodes that you are connected to. Then they check the transaction against their node policy rules (...


1

This secure, private, untraceable C++ implementation of the I2P anonymous network being developed for Monero could eventually be of use for Bitcoin too. It will address the IP address issue you are asking about. Metadata related privacy issues continue to be researched both by those who want to perform blockchain analysis and those who want to protect the ...


1

So a node that creates a transaction needs to propagate it. It will connect to other nodes. Usually to some reasonable number like 8 nodes (please see getpeerinfo on your client). As a mental exercise: If the 8 nodes (that I randomly selected from the network) belong to the same person, that person will have the possibility to capture 100% of my traffic. My ...


1

There is [old] bitcoin version by Lukejr http://eligius.st/~luke-jr/programs/bitcoin/files/bitcoin-qt/next/test/20130721/ It accepts and relays non-standard transactions running with commandline option "-acceptnonstdtxn" It is very unstable program, use it with separate database and empty wallet.dat But it definetely works. There is at least one pool, ...


Only top voted, non community-wiki answers of a minimum length are eligible