I did quite a lot of research into Bancor from a non-cryptocurrency-developer perspective a few months ago (when looking at possible ways to launch a token for Matrix - c.f. https://matrix.org/blog/2017/08/22/thoughts-on-cryptocurrenc...) - and concluded that it's actually quite an interesting idea (once it finally 'clicked').

From the normal dev perspective: the idea is that it removes the concept of using a marketplace to exchange between currencies entirely; instead it replaces the exchanges with an algorithm which gives a consistent global way to calculate the FX rate at any given point. The formula used is mathematically very simple: you allocate a 'reserve' of your currency to be backed by a 'base' currency (by default, their BNT); and as folks buy and sell your currency it algorithmically defines the exchange rate relative to the base currency based on the total supply of your currency in circulation. So rather than the exchange rate being determined by the human interactions of traders, instead it's determined by a function of the current market cap - and everyone is held true to using the same function because it's part of the codebase that defines how the currency operates, running as a smart contract on the Ethereum VM. From memory, the function itself defines the FX as being proportional to the amount of token supply relative to the reserve, after applying a selectable exponential damping factor.

The code is kinda interesting, as it ends up implementing some fairly scary fixed-point exponentiation in such a way that it can run on the EVM with the reversibility and predictable rounding errors which are required for small transactions to cause tiny but 'correct' changes in the FX rate for that currency. https://github.com/bancorprotocol/contracts/blob/master/soli... has the gory details.

Now, the idea certainly does have some controversies, including:

* It requires some kind of common currency to be able to work, and Bancor positioned themselves as the common currency for that purpose (hence their ICO). That said, you could also chain together separate 'common' currencies though, or just access a Bancorified network of currencies via an old-style exchange.

* Whilst the formula used to calculate the FX seems sensible enough, it's not obvious it's the only (or optimal) solution, but it's very baked into the system. (Although the contract does have a backdoor to let it be upgraded in case of bugs or problems, which is a bit controversial in and of itself).

* It's an interesting question whether it's a feature or a bug that markets have a human function which can act emotionally/irrationally - rather than behaving 'perfectly' through the magic of a shared smart contract.

On balance, it feels like a very interesting system for managing small-scale tokens - especially ones which need liquidity and stability beyond their natural market cap. However, this is a slightly niche market which is still evolving (relative to everyone who's running around trying to do as large an ICO as possible), so it's perhaps not surprising that it's yet to take off.

(Disclaimer: I'm not working with/for Bancor, although have chatted to them a few times.)