2-phased transactions, 2FA on the blockchain and multi-sig

I’m intrigued by a discussion (and implementation) on the NXT forums (https://nxtforum.org/general/2-phased-transactions-post-implementation-specification/?all) about 2 phased transactions.

This basically provides the functionality for a 2FA transaction on the blockchain. I envisage it works very similar to Nu’s parking. The transaction is processed but not completely only into an intermediary state. The second signing needs to be done before a certain amount of time has passed. When this doesn’t happen the transaction is reverted.

Use cases:

  • Bob signs a large transaction from his PC wallet, the transaction is now ‘parked’. To finalise this transaction Bob also needs to sign it from his mobile wallet, only then the transaction will be executed as intended.
  • Approving transactions of others, e.g. Bob signs transaction of Alice

I think these use cases are key for merchants and business-to-business transactions. This could also protect exchanges and customers when they have large transactions in cryptos either internal or external.

I like to hear whether this would be relatively easy assuming we already have the ‘parking’ code in the client with similar logic. It appears that the hard work is mostly in the user interface. I think they should be added to the bucket list when we want NuBits to be seriously considered as a contemporary currency. Anyone interested to have this on the roadmap? Should I raise a motion for it?


Very interesting idea. I don’t know if the parking code can be used for it though. As I see it there are two levels of implementation:

  1. Two-Phase transactions:
    Multi-sig transactions are allowed to provide an expiration height and are kept in the memory pool (I guess) until this height was reached and which get discarded if not all required signatures will be provided in the given time.

  2. Voting:
    Shareholders can vote on the release a transaction and the blockchain releases it on consensus.

(2) Is essentially what the custodial grant voting system realizes. (1) is not hard to implement, the question is more what the best way would be. Another operator?

Of course all these protocol enhancements should only be implemented if there is a concrete use for it. The smart contracting ideas stated in the thread however are indeed something which could be interesting for Nu. Other opinions?

Wonderful idea.

very nice idea