vendopunkto

command module
v0.0.0-...-a71e659 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 2, 2020 License: BSD-3-Clause Imports: 2 Imported by: 0

README

VendoPunkto

VendoPunkto is a payment processor for cryptocurrencies. Its main goal is to generate invoices and verify its payments while supporting multiple currencies.

Applications can integrate with VendoPunkto and let it handle payments for them. i.e PoS or e-commerce apps can focus on their logic and delegate payments to VendoPunkto. When requesting payment from a customer, a VendoPunkto's invoice is displayed, which the customer can pay with any of the installed currencies. The payment can be seen on the screen as it hits the mempool and your application can continue to do its business logic, like delivering a product/service.

It is a self hosted application, meaning that you're always in control of your funds. Best efforts will be done to improve privacy of its users and merchants.

Status: DO NOT USE IN PRODUCTION

Free and open source

VendoPunkto is free and open source software, there are no fees and you're always in control of your funds. Network fees still need to be payed out as usual.

By itself, it does not collect any user information, and will never do. Although, applications and plugins which integrate with it may do so.

Open Plugin System

VendoPunkto provides a plugin system where anyone can develop new plugins to support functionalities on the system. Every feature that requires a third party should be a plugin so that operators can choose who to trust.

Currently, three plugin types are supported:

  • wallet: used to implement currency payments
  • exchange-rates: to obtain exchange rates from different sources
  • currency-metadata: to fetch name, description, images, etc. for each currency

Official implementations will be provided for Monero and Bitcoin wallets, and some popular exchange rates as well. Since these are also plugins, you could choose different implementations provided by the community or you could not load any official plugin at all. They're not part of VendoPunkto's binary.

Any Crypto could be accepted

We don't judge which currency you'd like to accept, it's an open market and you should be able to accept any crypto/token you'd like, despite of VendoPunkto developers, or anyone's opinion for that matter.

We do not consider any crypto to be an "altcoin" and we embrace the fact that anyone can create and give value to a new currency. If a currency has value to you, then you are able to accept payments without having VendoPunkto's developers blessing nor interference.

VendoPunkto will never try to make it harder for plugin developers to implement their currencies plugin without justified reason.

Features

  • Simple, but not simpler.
  • Accept any crypto currency payments that are supported by current plugins.
  • New currencies can be supported by plugins which can be created by anyone and don't require changes in VendoPunkto for them to be distributed.
  • Invoices can be payed out with multiple currencies, at the same time. i.e. you can pay an invoice with 20% XMR, 50% BTC and 30% LTC.

VendoPunkto doesn't collect any user data at all.

What is collected?
  • Invoice addresses generated by plugins
  • Invoice amounts and payment methods
  • Transaction hashes and confirmation amounts

Multicoin payments

VendoPunkto allows the payee to pay an invoice in any of the current installed coin wallet plugins.

When an invoice is created, a total price and currency are provided in order to define it's value. At this moment, multiple payment methods may be provided as well. The original total and currency may only be used to determine the invoice's value and may not be a payment method by itself. (i.e fiat currencies)

The price of all payment methods will be calculated at the invoice creation process using the configured exchange-rates plugin. This exchange rate will be kept through the life of the invoice. This may be changed in the future to compensate, in the case of long-lived invoices, the market volatility.

When the invoice is displayed, the payee can select the payment method that will be used to perform the payment. A new address is generated by the payment method's wallet and QR code is displayed for the payee to pay.

Design Notes

Check ./docs/DESIGN_NOTES.md

Development

For development you need a PostgreSQL database, plugin implementations for at at least a coin and exchange rates, Go and Make. To build the web client, npm.

The startup order is important, you want to make sure that plugins are started before VendoPunkto, given that plugins are currently only loaded at startup.

To start the database using docker:

docker-compose up -d vendopunktopostgres

There are mock plugin implementations for fake XMR,BTC and BCH wallets, fake exchange rates and fake metadata.

# Starts development plugins servers
make dev-plugin

To build and run VendoPunkto API, in a different shell

# Builds vendopunkto-api and runs it using the dev-plugins
make && make run

You'll also need to build the web UI:

cd spa
npm install
npm run build shared
npm run build vendopunkto
npm run build admin

Once you've make run, you should be able to access the admin portal at http://localhost:9080/

Gecko exchange rates

A sample integration is provided with Gecko API for exchange rates.

make build-rates && make run-rates
Monero Integration

Current support for Monero works using monero-wallet-rpc. For address generation, currently it's generating Integrated Addresses, but the idea is that both Integrated Addresses and SubAddresses are supported so that operators can choose what to use.

License

VendoPunkto is provided without any warranties please read the LICENSE

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
Package plugin contains utilities for building a VendoPunkto plugin in Go A plugin is basically a binary which runs an HTTP server that VendoPunkto consumes.
Package plugin contains utilities for building a VendoPunkto plugin in Go A plugin is basically a binary which runs an HTTP server that VendoPunkto consumes.
plugins

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL