New way to use multisignatures

VolleyCash system consists of a server and wallets. The server is a highly scalable API service. A wallet is a mobile application (or any other device/POS/software) that communicates with the server only.

The innovative idea of VolleyCash is to use multisignatures in a new way. Particularly, to split multisignature keys between the server and the wallet (not between two wallets). In this way, the server cannot spend user’s funds alone. And, even the user cannot spend his funds alone (it is an important requirement, see below).

The server has half-keys for all multisignature addresses (source addresses), that are generated in cooperation with wallets. Also, the server keeps track of their balances in real-time. In most cases the server doesn’t need to look up the Tangle for the balances, because a spend is not possible without server’s signature. So, the knowledge of the balances allows the server to say if an address has enough funds to satisfy a spend request.

In order to make a spend, the wallet will initiate a new transaction and sign it with its half-key. After that, the wallet will send this semi-baked transaction to the server. The server will reject it if the source address has not enough funds for that spend. Otherwise, the server will accept it. This whole process takes 3 seconds only, because the server has all the information at hand. The decision does not involve the Tangle, IOTA network, or any sort of consensus.

arrows represent transaction body flow via network, not funds flow

But why is it so important to determine quickly if the spend is valid or not? Because in the case of a valid spend, there is a 100% guarantee that the transaction will eventually settle on the Tangle, according to “rules” (see theory section in the beginning). So, with that guarantee, the server marks funds as “transferred” right away. And both — source wallet and destination wallet — get informed about that. In short, it’s not funds that are transferred instantly. But it’s the guarantee that is transferred instantly from the server to the destination wallet. Eventually, the funds will be transferred through the network in a non-blocking manner.

The store (destination wallet) needs that guarantee to release the product. The payer (source wallet) needs that guarantee to claim the product.