Bitcart is a platform for merchants, users and developers which offers easy setup and use.
The idea of the project is to facilitate the adaptation and use of cryptocurrencies for developers and merchants in other projects of different complexity. For example, for those who want to accept cryptocurrencies in their stores, pay for purchases or other types of e-commerce services that are associated with crypto. We propose to do this with minimal server costs: 1 gigabyte of RAM and less than 3 gigabytes of disk, and that is, without a bitcoin core and a full blockchain, which is at least 2 gigabytes of RAM + at least 200 gigabytes of disk. The project uses SPV (simple wallet verification) of electrum wallet to do its job.
What we can already provide¶
The web interface is now running on the server, and is available by reference.
One of the main advantages of our project is a complete abstraction of work with blockchain technologies and cryptocurrencies, which is simplified to the challenges of the human-readable API. The project is also very easy to install on any platform, which is an excellent solution for quickly adapting our technology in a ready-made project and generating income from cryptocurrencies as soon as possible. There are also several ready-made integration solutions such as GUI interface, CLI installation, and automatic installation via telegram bot. Also in this project we can easily add support for other cryptocurrencies such as litecoin, bitcoin lightning network and others. And this does not affect the performance and lightness of the project.
The project is divided into several repositories.
https://github.com/MrNaif2018/bitcart This is the main repository with a web interface and a daemon.
https://github.com/MrNaif2018/bitcart-docker This is a repository responsible for the installation of the project, for example, through docker, thanks to this even a telegram bot was created (@bitcartinstallerbot), which can carry out the entire installation itself. Thanks to this, you can simply specify the domain and the web interface will work on this domain with an ssl (https) certificate.
https://github.com/MrNaif2018/bitcart-docs - All documentation is here
https://github.com/MrNaif2018/bitcart-sdk - python library for simple coding using bitcart
Idea and history¶
Some time ago me and my friend were building some project using bitcoin. We were needed to use some of bitcoin features like get transaction info, especially confirmations (: But when we created it using third-party api, we found that they were charging large fees from every recieved amount for example. We decided to find a solution to make it work without any fees. First, we tried bitcoin core. It was quite good, but actually it wasn’t clear how to do this or that. Plus it costed a lot, we didn’t have enough power and especially free space on our server to make it running. Then, when we searched the whole internet, we found no easy solutions. But after that, we found electrum. Electrum was the thing we needed in terms of cost, our server of cause could handle it(we have 1 gb ram server, 25 gb disk space). Yeah, it actually wasn’t very documented, so to make it work the way we wanted it was needed to search through the whole internet and ask in electrum irc. But the good thing for us was that electrum is written in python, so we could read source code and find the way we need it to work. After some time, we finally created such a wrapper with a convenient functions to do the things we need, like get_tx, where we pass tx hash, and it returns us full transaction info, without further manipulations! As it taken us a while to do, we have thought to share it with everyone for them to don’t spend a lot of time on searching. So, as we had api ready, we decided to make more, create an app with easy use for everyone. We have created django app, where you can simply insert xpub and start using your xpub for generating new payment addresses as a merchant for example, or to use it as developer, or in other way.
Important: Alpha version¶
Please, note that currently this project is in alpha version, so everything might change. We’re open to community ideas to help us improve this project, your ideas are the most important ones.
Structure of bitcart is the following. We are planning to separate “backend” and “frontend”. What does it mean?
The app we have created already, where you insert xpub and set up store and products, will be like an admin panel, it is called “backend” here in bitcart. It will have everything set up for bitcoin use. It consists of:
- django app, which is web gui;
- postgresql database, which stores data, for example products, stores
- redis, used by dramatiq and channels library, which allows running background tasks
- dramatiq-background worker for handling background tasks, such as notifying when transaction got confirmed, auto-syncing wallet
- daemon-electrum daemon, modified by me to support multiple wallets loaded at once, plus some new custom functions
- bitcart-sdk - this is python library written by me, which is exactly this wrapper I was talking about, the wrapper to easily get transaction,generate address, invoice, etc using electrum, it now supports bitcoin, but our key feature is that by adding new coins support to bitcart-sdk new coins can be easily added to bitcart.
Frontend is your store. It will be possible to connect frontend to any backend you want, by simply inserting backend url and authentification token. It will load all products from backend, using configured settings. You will be able to select template for your store in feature to change it in one click! More details will be available soon.