Prefix of the string (test in the example above) is customizable: it can be versioned and also separates addresses between the networks/ledgers.
The address contains two pubkeys: one for the predicate, another for encryption. Both are derived from the account Xpub in a way that allows user to decrypt incoming payments with just Xpub, without having access to the private key of the predicate.
Sender embeds a 73-byte ciphertext string in a data entry in the transaction, located randomly in the txlog, so the payment output cannot be distinguished from the change output.
Recipient detects the desired output by the address, scans all data entries and tries to decrypt each of them. Data entries have a short 1-byte distinguisher tag that helps failing quickly and avoid performing expensive part of the decryption for unrelated entries. This is especially useful if the transaction pays to multiple addresses at the same time.
This introduces an address API: ability to create a short and friendly one-time-use string to receive money in encrypted form:
Technical specs
test
in the example above) is customizable: it can be versioned and also separates addresses between the networks/ledgers.data
entry in the transaction, located randomly in the txlog, so the payment output cannot be distinguished from the change output.Closes #470.