Git Product home page Git Product logo

vspd's Introduction

vspd

Build Status ISC License Go Report Card

Overview

vspd is a from scratch implementation of a Voting Service Provider (VSP) for the Decred network.

A VSP running vspd can be used to vote on any ticket - tickets do not need to be purchased with any special conditions such as dedicated outputs for paying VSP fees. Fees are paid directly to the VSP with an independent on-chain transaction.

To use vspd, ticket holders must prove ownership of their ticket with a cryptographic signature, pay the fee requested by the VSP, and submit a private key which enables the VSP to vote the ticket. Once this process is complete the VSP will add the ticket to a pool of always-online voting wallets.

Features

  • API - Tickets are registered with the VSP using a JSON HTTP API. For more detail on the API and its usage, read api.md

  • Web front-end - A minimal website (no JavaScript) providing public pool stats. An admin page enables searching for tickets and downloading database backups.

  • Two-way accountability - All vspd requests must be signed with a private key corresponding to the relevant ticket, and all vspd responses are signed by with a private key known only by the server. This enables both the client and the server to prove to outside observers if their counterparty is misbehaving. For more detail, and examples, read two-way-accountability.md.

  • Dynamic fees - Clients must request a new fee address and amount for every ticket. When these are given to a client, there is an associated expiry period. If the fee is not paid in this period, the client must request a new fee. This enables the VSP admin to change their fee as often as they like.

Implementation

vspd is built and tested on go 1.14 and 1.15, making use of the following libraries:

Deployment

A vspd deployment consists of a single front-end server which handles web requests, and a number of remote servers which host voting wallets. For more information about deploying vspd, check out deployment.md.

Development

Test Harness

A test harness is provided in harness.sh. The test harness uses tmux to start a testnet instance of dcrd, multiple dcrwallets, and finally vspd. Further documentation can be found in harness.sh.

Web server debug mode

The config option --webserverdebug will:

  • Force HTML templates to be reloaded on every web request.
  • Reload the cached homepage data every second rather than every 5 minutes.
  • Enable detailed webserver logging to the terminal (does not get written to log file).

Issue Tracker

The integrated GitHub issue tracker is used for this project.

License

vspd is licensed under the copyfree ISC License.

vspd's People

Contributors

jholdstock avatar dajohi avatar vctt94 avatar degeri avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.