13

In the 2.5.5 version of the official IOTA wallet, "Reattach" seems to have been replaced with "Promote". What does Promote do that Reattach didn't, and how does it improve transaction confirmation?

1 Answer 1

14

In fact, the button was not replaced, but added. So for some transactions you can still see the reattach button, and for others the new promote button.

The behaviour of these two actions is different:

  • Reattach will pick two new random tips and create a copy of your transaction bundle attached to them. This needs more PoW (one PoW per transaction in the bundle) and essentially creates a double-spend situation: only either the original transaction or the reattached ones can ever confirm. When reattaching too early, this creates a situation of "landmines" to other nodes/users, as they have 50% chance to attach to the wrong transaction, making their transactions effectively unconfirmable (and needing reattach). In rare cases it can even happen that the reattachment is attached to one of the reattached transactions (making it impossible for the reattached transactions to be confirmed ever)

  • Promote, on contrast, will only issue a single new zero-value transaction which will both confirm your transaction and the latest milestone. In some cases, it will not directly approve them, but indirectly: It will run a MCMC walk from your transaction as well as a MCMC walk from the latest milestone, and the randomly chosen "tips" will be used as tips for the new transaction. That way, the weight of the new transaction is increased and the chance of your tip being chosen later is improved. Also, when you promote a transaction that has already been promoted (and not referenced by other transactions), your second promote will promote the first promote, reducting the number of tips.

And how does the wallet choose which button to show? In latest iri (1.4.1.4), a function checkConsistency was added which you can call on a pending transaction (or more of them) and it will tell you if it is still possible for this transaction (or all the transactions simultaneously if you give more than one) to be confirmed, or not (because it conflicts with another already confirmed transaction). When the transaction is still consistent, you can only promote it (since it gives you a better chance of getting confirmed than reattachment and avoids creating land-mines), and if not, you can only reattach it (since promoting it would never confirm; there is already a land-mine so the new one will not become one; and it cannot happen that the reattachment is attached to the original transaction since tip selection will never choose inconsistent transactions).

As a consequence: When you see Promote button, feel free to click it, it will (unlike reattach) not hurt the network, but you don't have to as there is still change for your transaction to get confirmed without promoting. When you see Reattach button, you have to reattach, your transaction will not be confirmed ever otherwise.

When you still have old wallet, do not click reattach too often (better upgrade your wallet - it will not only help your transactions but also others').

5
  • When I promote, I do not see a promote transaction in my history and my original transaction does not get any children. Are we sure it is working?
    – Spamalot
    Commented Dec 22, 2017 at 0:45
  • @user630 Can you tell me the hash of the transaction you were promoting?
    – mihi
    Commented Dec 22, 2017 at 14:04
  • @user630 perhaps you ran into the bug fixed in wallet 2.5.6 that could have caused the promote transaction to be attached to the wrong parent?
    – mihi
    Commented Dec 22, 2017 at 17:57
  • @mihi Your explanation is very useful and now I have new doubts. I woud like to understand well why reattaching a transaction creates a situation of "landmines" to other nodes/users. Does it mean that when we reattach too early and too often a transaction we put in the tangle a lot of "exclusive" bundles only one of which will be confirmed, leaving the others as a wrong decoy for other users? And when you talk about the function checkConsistency how does it happen that a transaction is not any more confirmable beacuse it "conflicts with another already confirmed transaction"?
    – blockmined
    Commented Jan 3, 2018 at 17:31
  • @drclink When you reattach many times, onle one can be confirmed, so everybody who "approves" one of the "other" copies will get unlucky. And that is the exact reason why your transaction gets inconsistent (conflicts with another transaction): because it (directly or indirectly) approves a transaction which was reattached and the reattachment confirmed earlier.
    – mihi
    Commented Jan 3, 2018 at 19:54

Not the answer you're looking for? Browse other questions tagged or ask your own question.