I thought I had already started my DUSK migration.

The approval transaction had gone through, so I assumed the tokens were on their way.

Then I found out the approval was only giving the migration contract permission to use my tokens.

The actual migration starts with a second transaction: Execute migration.

That transaction is what locks the selected DUSK and starts the migration process.

That made me stop for a second.

A blockchain transaction can succeed without doing the thing I actually care about.

In this case, approval succeeded.

But my DUSK had not moved yet.

The distinction is simple:

Permission is not execution.

And I think this is an easy detail to miss when using a wallet.

You see a successful transaction, get the feeling that the process has started, and move on.

But sometimes the important question isn’t:

“Did my transaction succeed?”

It’s:

“What did that transaction actually authorize or execute?”

That is the part of Dusk’s migration flow I found most interesting
$BTC $BR
#dusk $DUSK @Dusk