June 03, 2021

By Mike Berry

Non-interactive One-sided Payments with TariScript

Non-Interactive One Sided Payments with TariScript

This week the development community successfully tested sending non-interactive payments on the tari-script branch of Tari. Although still experimental at this stage, the ability to send a transaction without the receiving wallet being online enables a number of use cases, including donations and multiparty payments. Previously these payments could still be done but could take much longer if either party was offline for a period.

Although Mimblewimble achieves scaling through the pruning of outputs as they are spent, the participants in a transaction must interact to generate the signature on the kernel. One challenge in achieving this is that parties may not be online at the same time.

Let’s look at the process of assembling a transaction between Alice and Bob where Alice is sending Bob 1 TXTR (testnet Tari).

Step 1: Alice creates her half of the transaction and sends it to Bob. Step 2: Bob updates his transaction and sends it back to Alice. Step 3: Alice then completes the transaction and broadcasts it to the network.

For more detail, see the Mimblewimble Transactions Explained

In this process, if Bob is offline for step 1, or Alice is offline for step 2, the process could take a long time. Tari has a Store-and-Forward mechanism to handle this scenario, but Alice and Bob must come online within 3 days to receive the transaction.

What if you didn’t want to run a wallet node to receive funds? For example, say you wanted to accept donations or send money to an address for your children to accept when they are older. In these situations, it may not be viable to run a wallet node.

This is where one-sided payments come in. One-sided payments are enabled by TariScript, and are explained in detail in RFC-0201. Using a one-sided payment, Alice could build and broadcast the transaction to the network, and Bob at a later date could scan the blockchain and find his payments. The scanning process works similar to standard wallet recovery but requires that Alice build the transaction correctly.

Right now if you want to try out one-sided payments, you will need to build the tari-script branch and run the tari_console_wallet. On the Send tab, you can either send transactions normally with S, or using one-sided payments using O.

Sending a transaction in Tari Console Wallet

Give it a try and let us know in Telegram or Twitter what your experience is.