This article describes a mechanism to enable private mining on public temporary blockchains that can be used to keep record of transactions among a list of predefined participants during an agreed time frame. Think of this as a spreadsheet with expenses and payments that are shared among a small group of individuals that go on a holiday trip and want to divide the cost among all of them
It is a mechanism that uses a nonpermisioned blockchain, so anybody can mine to the chain and anyone is able to include in that chain the transactions that she so wishes to include.
This is a reaction to the increase in transactions fees that make Bitcoin not practical anymore for small frequent transactions among a small group of participants. It uses magically the same protocol that Bitcoin uses, so the same client can be used just by applying a very small modification: the mining difficulty and time between blocks is set at blockchain creation time.
These are the assumptions:
1 Groups have a need to conduct payments among the members of the group and jointly with external participants during short periods of time and that require very low transaction fees ( 0.01% )
2 These payment pools are fed at inception and then they are used by anyone having access to it to pay for food / drinks / gasoline … that is consumed by the group
3 We assume that Bitcoin transactions with very small fees are not typically added to the Blockchain, at least not rapidly. (Small fees are measured by BTC / Size of transaction)
4 It is easy to setup a new blockchain using the BTC core client that starts with initial zero difficulty and in which a set of participants will mine transactions coming from a well known list of addresses
5 At a given point everyone can get back their share of the balance left in the pool and sign a sign a real Bitcoin transaction that will settle on the main blockchain with a standard competitive fee
6 The original Bitcoin protocol allows miners to choose what are the transactions that will make part of a block, it is hence easy to pickup those that are coming from a predefined list of addresses, which are the addresses of the private blockchain
7 Subscription of a public address to the private blockchain is done by making a payment from that address with an unreasonable payload that contains an identifier of the participant (for example a picture). It doesn’t really matter if this payment is settled or not on the main bitcoin blockchain, bit it can be desirable to do so.
Idenfiable Payload: It can be built by splitting the payload within a number of outputs that use the recipient addresses to store the payload . For example if we had to embeed a picture of the participant in jpeg format with a size of 250kb this can be achieved by splitting the 200kb payload in 10000 outputs, each of them containing 20bytes meaningless public addresses. Theses transactions containing identification of the participants could be as well settled on the main blockchain by using efficient payloads and including a transaction fee (refer to my proof of concept on https://github.com/quiquee/BTCMsgEncoding for efficient encoding of messages in the blockchain by using well known word dictionaries)
Blockchain Merge: There is still a risk that some of those transactions are added into the main bitcoin blockchain. This is the reason a final transaction called a merge-transaction, needs to be built with adjustments in the final payment amount that takes into account the cost of any transaction accidentally settled on the bitcoin blockchain