One of the things i find fascinating is the idea of piggybacking on transactions to get into mini-sidechains. then u can use the monero network like a communications network.
Affinity Protocol
The Affinity Protocol:
A trustless means to create a push transaction with a static device.
The problem:
Existing cryptocurrency payment networks rely on a device to create and sign a transaction. Common solutions for a point of sale situation involve the use of a smart phone to scan a QR code for a receiving address. The phone then creates the transaction and pushes it to the network. To perform this transaction push, the smart phone will either have to (1) be running a wallet and daemon instance, (2)have a wallet instance connected to a remote daemon, or (3) be connected to a web-wallet service (mymonero, or some as-yet-to-be-invented-spv-thing). Firstly, all of these require a functioning smart phone with a trusted internet connection. Secondly, option 3 is the most probable, followed by 2, followed by 1, which is the inverse order for privacy and decentralization. Ultimately, none of these have the convenience, speed, and reliability of the current card payment systems.
_The solution: _
Create a protocol that uses the point of sale as a trigger event to push a transaction from a remote daemon & wallet server.
**How it works: **
Point of Sale (POS) side:
At the POS terminal, the merchant displays the price amount. The customer inserts the smartcard into a smartcard reader attached to a monero node with a specialized wallet software. The smartcard signs a psuedo-transaction. This psuedo-transaction is inserted into the payment ID field (or any other available field) of a real transaction. The real transaction is from the merchant to themselves. The payment ID piggybacks onto the merchants self-transaction. This piggybacking prevents spamming and allows use of existing infrastructure. Mini-side chain implementation also possible, but potentially spammable.
The pseduo transaction / self-transaction hybrid enters mempool.
**Server side: **
The user of an Affinity card has to run a full node with a specialized wallet server, hereby referred to as the server. This can also be outsourced to service providers.
The server scans the mempool and the blockchain. If a pseduo-transaction is identified by the wallet server as belonging to the owner of that particular wallet, then the wallet software uses the information in the pseudo-transaction to create a real transaction. The real transaction is created and pushed using standard process.
Things that need consideration:
A lot of information needs to be packed into the payment ID, and a lot of digital signatures and checks need to occur to ensure the transaction is only remotely created once. For instance, the server needs to be able to pull the following information from the psuedo-transaction:
- Ask - does this pseudo-transaction belong to me?
- How to create the transaction
- Be able to test whether this pseudo-transaction has been executed before
Alternative approaches could involve modifying the core protocol to permit transactions to have additional things added onto them that are cleaved off before entering the blockchain. This approach would require a secondary mini-blockchain (1000 block circle). So it would be (conventional monero transaction)-(psuedo-transaction). The daemon would check the conventional monero transaction component to ensure that its a valid member of the mempool, to relay the transaction and eventually add it to the blockchain. When added to the blockchain, however, the psuedo-transaction is seperated, so that only the conventional monero transaction is added to the mempool. The psuedo-transaction is then added to the miniblockchain.
Things that are cool:
This can all be done p2p, decentralized, hooray. You can buy your own chip cards and program them yourself. Merchants can make their own payment terminals. If a user has a card stolen, they can remotely disable their server, return home, remove permissions of that particular smart-card, and then program a new one.
Things that are not cool:
If using standard blockchain mechanisms, overall transaction can take 2 blocks. This time might be able to be decreased by implementing a miniblockchain.