Skip to content

ReinProject/causeway

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7a84694 · Aug 13, 2021
Sep 29, 2016
Apr 1, 2017
Jan 14, 2016
Jan 13, 2017
Mar 2, 2017
Jun 10, 2021
Apr 1, 2017
Aug 13, 2021
Mar 2, 2017
Apr 1, 2017
Jan 3, 2016
Dec 28, 2015
Dec 30, 2015
Nov 28, 2018
Nov 4, 2018
Mar 4, 2017
Jun 10, 2021
Jun 10, 2021
Nov 28, 2018
Mar 2, 2017
Jun 10, 2021
May 29, 2016
Mar 2, 2017
May 13, 2016
Jan 21, 2016

Repository files navigation

Causeway Server - Rein

Server component of Rein decentralized labor market.

Stores kv pairs and verifies signatures and authentication via ECDSA.

Installation

See server_setup.md

Run via Docker

Building and initial run

git clone git@github.com:ReinProject/causeway.git
cd causeway
docker build --tag reinproject/causeway . 
docker run -p 8332:8332 -p 2016:2016 --name reinproject-server reinproject/causeway

Run once built

docker start reinproject-server

Run via docker-compose (postgres container will be run also)

        docker-compose build --no-cache
        docker-compose up

NOTE --no-cache could be omitted if no changes in source tree where happen o

REST API

  • All requests via HTTP GET except where noted.
  • Data returned as JSON, formatted with indent=4 for now.

/get

Parameters
    key - used to retrieve value
    
Returns
    key - the key that was requested
    value - the value stored for the key

Note: Charges bandwidth against sale record associated with key/value.

/put (POST)

Parameters
    key - string
    value - string
    address - account to charge for this data
    nonce - latest unused 32-byte string retrieved via /nonce
    signature - signature over concat(key + value + address + nonce) by 
        private key for address

Returns
    status - "success" or "error: " + error reason

/delete (POST)

Parameters
    key - string
    address - account that owns this key
    nonce = latest unused 32-byte string retrieved via /nonce
    signature - signature over concat(key + address + nonce) by 
        private key for address

/nonce

Parameters
    address - manually entered account requesting a nonce, users will need to 
              pay to register in order to be eligible for nonces
    
Returns
    nonce - random 32-byte string

Note: nonce will later be stored until used or next nonce generated for address

/help

Parameters
    None

Returns
    List of available endpoints

/status

Parameters
    None

Returns
    uptime - time in seconds that the service has been running
    stored - bytes stored
    free - bytes free
    price - satoshis for 1 MB storage + 50 MB transfer

/price

Parameters
    None
    
Returns
    price - satoshis for 1 MB storage + 50 MB transfer

/buy

Parameters
    contact - email address to notify on expiration
    address - owner of new hosting bucket

Returns
    result - success or error
    buckets - listing free space, reamining bandwidth, and expiration

Roadmap

  • Hosting will purchased in buckets that expire in one year..
  • A bucket holds 1 MB of data and comes with 50 MB of transfer.
  • If a bucket expires, key/value-pairs are redistributed to an owner's newer buckets. Otherwise, the owner is notified via email that expiration is affecting hosting.
  • Data is kept if bandwidth is exceeded just no longer served until more is purchased.

/address

Parameters
    contact - email or Bitmessage address to contact on expiration
    address - account this will be used to fund
    signature - signature for concatenation of contact and address by
        private key for address
    
Returns
    address - a dummy string, later an address suitable for funding an account

/balance

Parameters
    address - account on which to report balance
    nonce - latest unused 32-byte string retrieved via /nonce
    signature - signature over concat(address and last nonce received via /nonce call)
    
Returns
    balance - satoshis worth of value left on account