Slatepack workflow - third slatepack purpose


I’ve been sending grin for the first time, transaction via TOR failed (I don’t know why, but recipient wallet was online). So grin-wallet send -d .... 123.45 generated a slatepack. I sent this to the recipient, and he replied with another slatepack.

Then I launched grin-wallet finalize -i /slatepack/file and it succeeded, but it generated another slatepack. There was a note that it was unencrypted.

I didn’t know what this was so I posted the third slatepack to the recipient again. He wasn’t able to import it, so I tried grin-wallet finalize on the third slatepack but it also failed.

What is this third slatepack for? Am I in danger because I shared it?

Thank you very much! :slight_smile:


The Mimblewimble protocol is unique in that it is “interactive” in design. This can be frustrating for new users, but has its own advantages with privacy having no addresses.

That being said, the “flow” between two parties exchanging funds is “SRS” meaning sender-receiver-sender.

The first slatepack is the “proposal” of the payment, or you can look at it as a “contract.” You “S” give that to the person you’re paying, “R” and he signs and agrees with it by processing it. The final step is when he sends the contract back, and then you, the “S” completes/finalizes the deal by signing it too.

The “third” slate pack you shared sounds like it was just a new “proposal” if no payment was processed.

But that’s a guess on my part, as far as using terminal client maybe someone here can help with commands . @oryhp

1 Like


I’m pretty sure it’s the slatepack message that is completed, so transaction is made out of it. Why does it return it? I’m not sure, maybe because it might happen that your transaction doesn’t get mined (eg. is dropped in the dandelion phase) but you could just repost it in such case, so maybe it’s for the future to handle the case where you uninstall the wallet and want to import a completed slatepack message in it. These are random guesses, the point is that in the output you should get info of whether the tx has been posted or not :slight_smile:

The finalize command should also post the finalized transaction to the network in order to confirm it, unless the --nopost or -n flag is set.

If for some reason the transaction has not been posted, this can be done with the post command and the third slatepack.

If the transaction has been posted and is confirmed, it should say so in the output of the txs command.


Thank you all for the replies! :slight_smile: I did not use --nopost flag, and it posted the transaction successfully. It still prited the third slatepack, so it’s good to know it can be used to post the transaction in case of any problems.