Skip to content

Mix your ergs and tokens with ErgoMixer.

Notifications You must be signed in to change notification settings

Luivatra/ergoMixBack

 
 

Repository files navigation


Logo

Ergo Mixer
Explore the docs »

View Demos · Report Bug · Request Feature

Table of Contents

  1. About The Project
  2. Getting Started
  3. Usage
  4. Notes
  5. Roadmap
  6. Contributing
  7. License
  8. Contact
  9. Acknowledgements

About The Project

ErgoMixer is a web application for mixing ergs and tokens based on Ergo platform. ErgoMixer is completely serverless; It only needs to connect to the explorer and a node (any node! no api_key is needed). For more information on how it works see here.

ErgoMixer Screen Shot

Getting Started

To get the Mixer up and running you have a few options:

  1. Quick Start Shell Script - builds from source (UNIX systems)
  2. Docker Quick Start
  3. Download the latest .jar
  4. Build from source

Usage

When you open the Mixer, the home page displays information about the system and how each component works. ErgoMixer will also be available from your menu bar.

ErgoMixerMenu

Video Tutorial

Installation

Quick Start Shell Script

Open your favourite terminal and enter the following to download and run the .jar:

$ curl -s https://raw.githubusercontent.com/ergoMixer/ergoMixBack/master/sh/install.sh | bash

If you encounter any permission errors when attempting to run the script, please run chmod +x install.sh from within the same directory.

Docker Quick Start

To run the ErgoMixer with default config (A Node and Explorer in Mainnet network) use:

$ docker run -p 127.0.0.1:9000:9000 \
    --restart=always \
    -v /path/on/host/to/ergo/database_and_logfile:/home/ergo/ergoMixer \
    -d ergomixer/mixer:latest 

To run the ErgoMixer with a custom config file use:

$ docker run -p 127.0.0.1:9000:9000 \
    --restart=always \
    -v /path/on/host/to/ergo/database_and_logfile:/home/ergo/ergoMixer \
    -v <path-your-config-file>/yourConfig.conf:/home/ergo/mixer/application.conf \
    -d ergomixer/mixer:latest 

The database and log file will be in your host directory /path/on/host/to/ergo/database_and_logfile ; you can use 9000 port locally to load the mixer.

NOTE: The /path/on/host/to/ergo/database_and_logfile directory must have 777 permission or have owner/group numeric id equal to 9052 to be writable by the container.

Manual Installation

Prerequisites

  • OpenJDK 8

    Install an appropriate version of OpenJDK 8 from Here based on your OS.

  • SBT 1.2.7

    Depending on your OS, you can follow instructions in this page to install sbt.

  • GraalVM

    GraalVM is not strictly necessary to run Appkit, unless you really use Graal features like running JavaScript.

    1. You may for some reason like JS and want to develop Ergo dApps using Node.js, then you can use Appkit from Node.js.

    2. Or you have existing Node.js backend application and want it to seamlessly integrate with Ergo from the same Node.js process. Then you can run your entire Node.js under GraalVM (which is fully supported by the Graal team) and then just use Appkit from your legacy code directly

    3. You may have other use cases with other language in similar ways. Some experiments here

      Install GraalVM Community Edition on MacOS and Linux

      First you need to download an archive with the latest release of GraalVM (e.g.graalvm-ce-java8-linux-amd64-19.3.1.tar.gz) for Linux and put its content in your $PATH :

      $ cd <your/directory/with/downloaded/graal>
      $ tar -zxf graalvm-ce-java8-linux-amd64-19.3.1.tar.gz
      $ export GRAAL_HOME=<your/directory/with/downloaded/graal>/graalvm-ce-java8-19.3.1
      $ export PATH=$PATH:${GRAAL_HOME}/bin

      The same for MacOS:

      $ cd <your/directory/with/downloaded/graal>
      $ tar -zxf graalvm-ce-darwin-amd64-19.3.1.tar.gz
      $ export GRAAL_HOME=<your/directory/with/downloaded/graal>/graalvm-ce-java8-19.3.1/Contents/Home
      $ export PATH=$PATH:${GRAAL_HOME}/bin
  • Build the Appkit project

    There is a slightly modified version of appkit in this repository. So, in order to build the mixer you first need to publish appkit locally in the Ivy repository:

    $ cd <your_directory_clone_project>/mixer/appkit
    $ sbt publishLocal

Build the ErgoMixer:

  • Frontend

    Use the following command to get the latest frontend:

    $ git submodule update --init

    Then build the ergomixfront by following these instructions.

    Then, use the built front in the backend by using the following command in ergomixback directory:

    $ mv ergomixfront/build/ mixer/public
  • Backend

    Finally, build the backend:

    $ cd ../mixer
    $ sbt assembly

    The jar file will appear in target/scala-2.12/ directory.

Run mixer

After building the project or downloading jar file, to run the ErgoMixer with default config (A node and explorer in Mainnet network) use:

$ java -jar ergoMixer-*.jar

Also to run the ErgoMixer with a custom config file use:

$ java -jar -D"config.file"=<path-your-config>/customConfig.conf ergoMixer-*.jar

You can use this config file and change it as you want.

The database will be saved in your home directory. This database contains all the information and secrets being used by the mixer, So, take good care of it.

Notes

  • From version 3.0.0 database scheme is changed; So, please consider binding to a different location if you have previously used an older version.

  • In order to buy SigmaUSD/SigmaRSV directly from the mixer, DO NOT SET withdrawal address when creating the mix/covert address and use "Set Later" option. Later, at the moment of buying SigmaUSD/SigmaRSV, set withdraw address and choose "SIG USD" option. Only completed boxes can be used for buying SigmaUSD/SigmaRSV.

  • If you are using manual config file for running mixer, make sure to add this setting in the config file, under section play.http, in order to use SigmaUSD/SigmaRSV support:

    play: {
      http {
            filters="filters.CorsFilters",
            fileMimeTypes = ${play.http.fileMimeTypes} """
                     wasm=application/wasm
                    """
           }
      filters {
        hosts {
          # Allow requests to example.com, its subdomains, and localhost:9000.
          allowed = ["localhost", "127.0.0.1"]
        }
        cors {
          pathPrefixes = ["/"]
          allowedOrigins = null,
          allowedHttpMethods = ["GET", "POST"]
          allowedHttpHeaders = null
        }
      }
    }
    

Roadmap

See the open issues for a list of proposed features (and known issues).

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Acknowledgements

About

Mix your ergs and tokens with ErgoMixer.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 58.8%
  • Scala 40.9%
  • Other 0.3%