June 03, 2021
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