You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openmonero/README.md

128 lines
4.9 KiB

7 years ago
# JSON REST service for Monero
8 years ago
Example of using [restbed](https://github.com/Corvusoft/restbed/) to
7 years ago
provide Monero related JSON REST service. For this purpose,
a service called Open Monero was developed.
7 years ago
## Open Monero
Open Monero is an open source implementation of backend of
7 years ago
https://mymonero.com/. The frontend, which includes HTML, CSS, JavaScript were adapted
7 years ago
from (and originally developed by) https://mymonero.com/.
7 years ago
Unlike MyMonero, Open Monero's backend is open sourced, free
to use, host and modify. Additionally, the following features were added/changed:
- google analytics, cloudflare, images and flash were removed.
- transaction fees were set to zero (MyMonero also has now them zero due to problem with its RingCT).
- the wallets generated use 25 word mnemonics, fully compatible with official monero wallets
(13 word mnemonics generated by MyMonero work as usual though).
- import wallet fee was reduced.
7 years ago
- added support of testnet network and mainnet network without relying transactions
7 years ago
- improved handling of mempool, coinbase, locked and unlocked transactions.
- added dynamic fees for testnet.
- minimum mixin set to 4.
7 years ago
## Limitations
#### Performance
Open Monero is not as fast as MyMonero. This is because it is basic, easy to understand
7 years ago
and straight forward implementation of the backend. Thus, it does not use any catching
of transactions, blocks, complex database structures and SQL queries. Also, no ongoing
monitoring of user's transactions is happening, since viewkey is not stored. Transaction
search threads start when user logs in (viewkey and address are submitted to the search thread),
and finish shorty after logout. Once the search thread stops,
they can't be restarted without user logging in back, as Open Monero does not store viewkeys.
7 years ago
7 years ago
7 years ago
7 years ago
## Host it yourself
The Open Monero consists of four components that need to be setup for it to work:
- MySql/Mariadb database - it stores user address (viewkey is not stored!),
associated transactions, outputs, inputs and transaction import payments information.
- Frontend - it is virtually same as that of MyMonero, except before mentioned differences.
It consists of HTML, CSS, and JavaScript.
7 years ago
- Monero daemon - daemon must be running and fully sync, as this is
7 years ago
where all transaction data is fetched from and used. Daemon also commits txs
7 years ago
from the Open Monero into the Monero network.
- Backend - fully written in C++. It uses [restbed](https://github.com/Corvusoft/restbed/) to serve JSON REST to the frontend
and [mysql++](http://www.tangentsoft.net/mysql++/) to interface the database. It also accesses Monero blockchain and "talks"
7 years ago
with Monero deamon.
7 years ago
## Screenshot
![Open Monero](https://raw.githubusercontent.com/moneroexamples/restbed-xmr/master/screenshot/screen1.png)
7 years ago
7 years ago
## Compilation on Ubuntu
Before proceeding, please make sure that Monero's libraries and header files are setup correctly,
as shown here:
- [compile-monero-on-ubuntu-16-04](https://github.com/moneroexamples/compile-monero-09-on-ubuntu-16-04)
```bash
sudo apt install libmysql++-dev
git clone https://github.com/moneroexamples/restbed-xmr.git
cd restbed-xmr
mkdir build && cd build
cmake ..
make
```
8 years ago
## Scrap notes
8 years ago
8 years ago
### Generate your own ssl certificate
8 years ago
8 years ago
Setting up https and ssl certificates in restbed
- https://github.com/Corvusoft/restbed/blob/34187502642144ab9f749ab40f5cdbd8cb17a54a/example/https_service/source/example.cpp
8 years ago
Based on the link above:
8 years ago
```bash
# Create Certificate
cd /tmp
openssl genrsa -out server.key 1024
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
8 years ago
openssl dhparam -out dh2048.pem 2048
8 years ago
```
8 years ago
8 years ago
### Enable it in Firefox or Chrome
8 years ago
Firefox and chrome will not work with that certificate as they cant verify it.
To overcome this for development purposes on localhost, just open new tab in the browser used
and go to any link from the service, e.g., `https://localhost:1984/login`. Once you do this,
you should get warring about unsecured or un verified certificate. Then you just add it manually
as exception.
7 years ago
Also Open Monero generates uses 25 word seeds, which are fully comptabilite with `monero-wallet-cli`
and `monero-core`.
8 years ago
8 years ago
### Test connection using curl
8 years ago
Example of curl https request to the service
8 years ago
```bash
8 years ago
curl -k -X POST -d '{"withCredentials":true,"address":"41pJD13rU5r3KZsxzS65tL9zLMpZZCer8aWSi7wj8Xm99BAgXthcj2wgazxdTX9auFAmp3czfJUGH2S3UJfLwDWXUxc3ooC","view_key":"06d1f0f0fd766c75b52b9c597592d06f4bca5cd6dcd3e9bf1859bc78d0d5f80e","create_account":true}' https://localhost:1984/login
8 years ago
```
## Other examples
Other examples can be found on [github](https://github.com/moneroexamples?tab=repositories).
Please know that some of the examples/repositories are not
finished and may not work as intended.
## How can you help?
Constructive criticism, code and website edits are always good. They can be made through github.