Hi there,
The Bargaining Protocol is one of my toy projects, initially proposed at a bitcoin hackathon organized at
La Maison du Bitcoin.
To be honest, the main goal of this project was to provide an excuse to hack code implying a bunch of bitcoin concepts (creation/validation of transactions, retrieving data from the blockchain, payment protocol, chain of signatures, ...). But the pitch was a bit more elaborated:
The Payment Protocol (BIP70) has been proposed to offer a better UX and better security on the payment process. Beyond being a payment solution, the Payment Protocol also perfectly matches with a trade model based on fixed prices. But trade models are strongly linked to cultures. Considering that Bitcoin is a global currency, it shouldn't be limited by cultural bias. It should embrace cultural diversity by promoting different models.
The Bargaining Protocol aims to transpose such an alternative model (based on prices negotiation) into the cryptocurrencies world.
This protocol should be a modern digital version of the bargaining process allowing:
- provable negotiations: messages form a chain of signatures which ensures that the terms of the negotiation can't be forged
- trust-free negotiations: at every step, the seller is assured that the buyer owns the funds to cover the pledge
Because of its digital nature, the protocol should also help to build advanced use cases:
- asynchronous bargaining: launch a negotiation, make a pause, complete later
- 1-to-N bargainings: a buyer (seller) can run multiple concurrent negotiations with multiple sellers (buyers)
Foreseen use cases:
- human-to-human negotiations : online bazaars, ...
- computer-to-computer negotiations : automated negotiation of resources (on-demand cloud service provisions), dynamic negotiation strategies (A.I.)
- human-to-computer negotiations : automated negotiation for e-merchants (travel retail, hotels, cars renting, ...), negotiation assistant for consumers, ...
For the record:
- the protocol takes inspiration in the Monotonic Concession Protocol from Games Theory (with some modifications: proposals are not simultaneous but sequential, more permissive stop conditions, ...)
- the protocol is a generalization of the Payment Protocol. Take the Bargaining Protocol. Remove the negotiation phase. Et voilà ! You've got the Payment Protocol (almost)
After the hackathon, I've spent some time to polish the code (i.e. rewrite the code), write draft specifications and release the whole thing on github:
If you feel in mood for bargaining with a computer, try this
DEMO which simulates an online wallet allowing to bargain with a seller (aka "MyStupidBot").
All comments, critics or suggestions are welcome.
Kudos to
@thibaultj who gave me a hand to build the first version of the demo during the hackathon.