[bisq-network/projects] Remove the need for Bisq to trust Bitcoin Average by querying exchange APIs directly and calculating our own weighted average for fiat and altcoin prices (#35)

wiz notifications at github.com
Wed Jun 10 07:14:00 UTC 2020


> _This is a Bisq Network project. Please familiarize yourself with the [project management process](https://bisq.wiki/Project_management)._

## Description
This project will remove the need for Bisq network to trust BitcoinAverage as a data oracle and provide fiat and altcoin prices, by implementing our own weighted average price index for fiat and altcoin prices calculated from querying 10 or more Bitcoin Exchange APIs directly.

## Rationale
Currently the Bisq Pricenode Operators all subscribe to expensive Bitcoin Average API subscription plans, which is a large recurring expense for the Ops team budget. It's a no-brainer to do this project financially, since we will no longer have to pay these recurring monthly expenses for API subscriptions, but much more importantly in terms of our goals to improve reliability and censorship-resistance, this project will remove a very centralized TTP and CPOF for Bisq by decentralizing the data sources. If BitcoinAverage were to suddenly ban Bisq, we would be in trouble.

## Criteria for delivery
After we have upgraded all pricenodes to the new code, and begin the phase-out of Bitcoin Avergage, we can consider this project to be delivered.

## Measures of success
After we have phased-out Bitcoin Average completely, and Bisq is running stable on the new Pricenode code, we can consider this project to be successful.

## Risks
The new code could crash our Pricenodes.
The new code could calculate prices incorrectly.
The pricenodes might disagree on the price for a certain fiat or crypto asset, causing network issues.
More risks probably exist which we cannot know.

## Tasks

### Part 1: Implement basic providers

- [ ] Add 10+ basic providers, supporting all the fiat and altcoin prices that Bisq needs
- [ ] Add way to define and view provider weights (for the weighted average, per currency pair)
- [ ] Fix / adjust client UI (About / credits + top right dropdown "data provided by BitcoinAverage)

### Part 2: Testing

- [ ] After we have a working setup with several providers + weighted average per currency pair, begin full testing
- [ ] Based on testing results, add new providers if necessary, and tweak average weights if necessary, etc.

### Part 3: slowly phase out Bitcoin Average
- [ ] TBD: decide full plan to slowly phase out and remove BitcoinAverage

### Documentation
- [ ] Add a new page to the wiki, documenting how the prices are calculated )which exchange gets which weight, for which currency, etc.)
- [ ] Linking to this documentation from the top-right price UI field or other places inside Bisq app

## Estimates for budget allocation
Dev: $3000
Ops: $1000

## Notes

### Which exchanges to query for which currencies?
This is probably a good starting point:
```
AUD="[BTCMARKETS, IndependentReserve, QUOINE]"
BRL="[MercadoBitcoin]"
CAD="[KRAKEN]"
CHF="[KRAKEN]"
CNY="[QUOINE]"
CZK="[Coinmate]"
EUR="[BINANCE, BITBAY, BITFINEX, BITSTAMP, CexIO, CoinbasePro, Coinmate, EXMO, KRAKEN, QUOINE]"
GBP="[BITBAY, BITFINEX, BITSTAMP, CexIO, CoinbasePro, KRAKEN]"
HKD="[QUOINE]"
IDR="[QUOINE]"
INR="[QUOINE]"
JPY="[BITFINEX, BITFLYER, KRAKEN, QUOINE]"
KRW="[COINONE]"
MYR="[LUNO]"
NGN="[BINANCE]"
NZD="[IndependentReserve]"
PHP="[QUOINE]"
PLN="[BITBAY, EXMO]"
RUB="[BINANCE, CexIO, EXMO]"
SGD="[QUOINE]"
TRY="[BINANCE, PARIBU]"
UAH="[EXMO]"
USD="[BITBAY, BITFINEX, BITSTAMP, CexIO, CoinbasePro, EXMO, IndependentReserve, KRAKEN, QUOINE]"
ZAR="[BINANCE, LUNO]"
```

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/bisq-network/projects/issues/35
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bisq.network/pipermail/bisq-github/attachments/20200610/60c00a70/attachment-0001.html>


More information about the bisq-github mailing list