x0xr00t / relay

Relay Server/Client

Home Page:http://relayproject.net

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

The Relay Project

Relay is a first-of-its-kind community-owned social network powered by blockchain technology. Utilizing PGP Encryption & WebRTC technology, and driven by Community Source principles, Relay offers a public alternative to the many emerging social media challenges brought about by a growing lack of private sector accountability and an increasingly singular user-experience.

Relay goes a different way. By encrypting sensitive personal data and securing it locally, never on centralized cloud servers, Relay gives the keys directly to the end-user (literally):

  • Backup and protect your Private Key. It secures all your blockchain data. For your eyes only!
  • With the Blockchain, data leaks, 3rd party mining, and unauthorized surveillance become impossible.
  • Build your Public Key Reputation and help resolve conflicts between community members.
  • Never have to depend on the private sector to keep your published/sensitive data safe again.

alt text


##Relay Introduces Unified Channels

All you will need to join a Relay Unified Channel is the channel name. Channels are case-insensitive and consist of a string of alphanumeric and special characters. Anyone can subscribe to any channel, and create private channels of their own, but only Registered Members may create public channels.

alt text

Once a channel is suggested, you may subscribe at any time enabling such activities as:

  • Text/HTML chat with people in the channel (like chat rooms or IRC)
  • Relay (!) an audio or video stream to everyone in the channel
  • Announce your Public Key Identity to a channel with a business or proximity.
  • Share P2P files with everyone in your proximity, including people who have not added you as a contact yet. This is also a good way to make new contacts.

##Relay introduces: Proximity Channels A new way to find friends and services near you; a Relay Proximity Channel is automatically suggested by the Relay Client whenever your device enters proximity with a signal beacon like a wifi router or cell tower or another portable device. Proximity Channels may also be suggested based on GPS coordinates, and reverse-geocoding values, and even your Time Zone. No connection to the proximity beacon is necessary. The Relay Client only needs to be made aware of it to calculate its corresponding channel on The Relay Network. Here are some examples:

alt text

Proximity Channels allow for much more than just communication:

  • Broadcast your Public Key Identity to everyone around you and make new contacts
  • Use your Private Key to authorize payment to a local business via Signature Verification
  • Check in to a proximity (like a hotel) or reserve a table at a restaurant just by walking inside
  • Engage in Real-Time Ballot Voting with people around you
  • Redeem promotional offers from local businesses and services when entering their proximity

##Relay introduces: The KeySpace

The Relay KeySpace is a paradigm shift in web content delivery. Your KeySpace Content consists of anything from feed posts, personal web pages, professional & business functionality, and e-Commerce Solutions. Using WebRTC technology, KeySpace content loads instantly via always-on two-way socket communication. Using PGP Encryption, user-contributed Relay content is verified automatically and cannot be faked or manipulated in any way. Only the original author has the power to change their KeySpace Content.

alt text

KeySpace = Your Personal Relay Blockchain All Public User KeySpaces = The Relay Public Blockchain Own your social content with the BlockChain When you use a Blockchain powered Social Network like Relay, you can seamlessly take all your data with you when you visit other Blockchain powered Social Networks. Sharing is better:

  • KeySpace defines all the content a user has published to their BlockChain. All content is verified against the user’s Public Key as it propagates through the network.
  • The Blockchain ensures only you can publish, modify, or delete content under your Public Key Identity, even after it appears on other social network blockchains.
  • Import/Export your entire timeline and all your KeySpace data to and from another (blockchain supported) software service!
  • Synchronize KeySpace content between devices without needing a central database. At least one synchronized device is required to be online in order to access KeySpace Files.
  • P2P Distributable Blockchain Technology automatically caches a local copy of your friends’ blockchains as you encounter them, making it very hard for anyone to lose data again.
  • Communicate between social networks. Join a chatroom and talk to other people from other social networks. Post a comment or debate with other visitors of any website, even the sites that don’t allow comments. It’s your blockchain, your data.
  • View and manage all comments and posts published under your Public Key Identity on a single interface even if they were made on different social networks or websites.

The Relay Development Plan

alt text


Anyone can contribute to The Relay Project.

Examples of Contributions include the following:

  • Bug Reports and QA (no skills required but debug report really helps)
  • Bug Fixes (skills required: JavaScript)
  • New Features and Scripts (skills required: JavaScript, CSS3, HTML5)
  • User Interface Design (skills required: CSS3, HTML5)
  • User Interface Themes (skills required: CSS3)
  • Content Templates (skills required: HTML5, CSS3)

Repository Instructions:

Contributions are made by adding or editing content in the git repository. https://docs.google.com/document/d/1EkqkcxM7OUbgzihPedpvZ6ZPlYKytd6YlhDYoj9QsQY/edit?usp=sharing

Ready to Contribute something?

  1. Make a new Issue thread describing your feature and allow peer-review. https://github.com/clevertree/relay/issues/new

    Take a look at other 'Feature' threads for a suggestion on how to format your new thread

  2. Make a pull request https://github.com/clevertree/relay/pulls

The Relay Project

Questions?

Feel free to reply to this thread with any questions or comments

FAQ - The Relay Project

WHAT IS RELAY?

Relay is the project name for the free, WebRTC, Social Content Network known as The Relay Network, which is meant to be accessed by a Client, like a modern browser. The Relay Messenger is written in pure JavaScript and requires no download or installation to use.

WHAT DOES ‘WebRTC’ MEAN?

The Relay Network and Client are built on ‘WebSocket technology’ which is a recent protocol meant for modern browsers. While other websites and social networks load content via slow HTTP requests, which requires the browser to refresh the entire page, the Relay Messenger maintains an always-on, two-way socket connection providing near-instant browsing and a faster, more reliable user experience.

WHAT IS A SOCIAL CONTENT NETWORK?

While a Social Network allows members to communicate, a Social Content Network allows members to create and publish original content, build entire websites, run a shop, or maybe even just customize a public profile page. All Social Content is either generated by forms or written from scratch in HTML5 (or both). With Relay, there are many options available to the user which were only imagined before. For example, Social Content can also be functional and provide software as a service (SAAS). All of this is accomplished by The Relay Network employing the powers of PGP Encryption.

WHAT IS ‘PGP’ ENCRYPTION?

‘Pretty Good Privacy’ (PGP) is an encryption protocol developed in 1991 by Philip R. Zimmermann, Jr. that allows end-to-end client encryption and verification features used in managing all KeySpace Content. Encryption performed on the Client cannot be viewed, tampered with, or decrypted by anyone who is not authorized by that Client. PGP gives the end user absolute control over their KeySpace Content.

WHAT IS RELAY KEYSPACE CONTENT?

A Relay KeySpace describes all content signed by a PGP Private Key and published on the network. As a signature cannot be faked, all content in the KeySpace is secured by the creator’s (user) PGP Identity even after being published and relayed across the network. Therefore content signed by a PGP Identity exists in the KeySpace corresponding with that identity and cannot be changed by anyone else. Additionally, any users viewing KeySpace content can verify each content entry against that KeySpace’s PGP Public Key.

WHAT ARE SOME EXAMPLES OF SOCIAL CONTENT?

Published ‘Feed’ posts, pictures, videos, hyperlinks, etc. HTML5 profile pages, about pages, blogs, etc. e-Business cards & pages e-Commerce, shopping carts, etc. Secret Ballot or Public Call-To-Action Forums, replies, signatures, rating & like features, etc. Classified ads for services, sales, housing, etc.

WHO IS SEEING THIS CONTENT?

Social Content is viewed in two ways. Firstly, anyone who’s subscribed to you or the channel you’re publishing on will see your published content on their feed, and visa versa. Secondly, KeySpace Content can be browsed through, similar to how websites operate. KeySpace Content can be organized into a multi-page website of unlimited size. Users may browse KeySpace content in maximized or full-page view for a classic browsing experience. Using WebSocket technology, KeySpace content consumed on the Relay Network is loaded near-instantly for an impressive and responsive browsing experience. No more slow page loads.

IS VIEWING CONTENT ON THE RELAY NETWORK SAFE?

Relay utilizes the latest in HTML5. In order to view Social Content on the Relay Network, you must “Enter the KeySpace” of the Host which the content belongs to. This process is accomplished in the background by adding the Host’s PGP Public Key Identity to the Relay Messenger’s keyring. PGP Ids are added any time a user subscribes or adds a contact to their contact list. Once a PGP Public Key is obtained, it is used by the Relay Messenger to verify KeySpace content on the fly as it is consumed. In other words, we guarantee that the content you’re viewing comes from the user who created it.

HOW DO I KNOW CONTENT CAN’T BE TAMPERED WITH?

PGP Signatures provide a way to validate exact content against a PGP Public Key Identity. This happens instantly and automatically on the Relay Messenger. Any content that isn’t verified will be ignored. Utilizing PGP Signature Verification, The Relay Network automatically ensures nobody can change your published Social Content but you.

WHERE IS MY INFORMATION STORED?

As there is no central database in the Relay Network, all KeySpace information is stored on the Client (your browser). Only published KeySpace content is received and rebroadcasted by Relay servers or anywhere else. Once published, content is relayed across the network, and cached along the way. Cached content is defined as published KeySpace content that is temporarily (or permanently) stored on each client and server that encounters it. A single client with a cache of KeySpace content can serve, through Relay cache servers, an unlimited amount of visitors without encountering scaling issues or bandwidth limitations.

WHO OWNS RELAY?

In short, nobody and everybody. Relay will be licensed under a new type of Software License that will be known as Community Source. Relay is owned and maintained by the community that uses it and is therefore unownable. Anyone may clone the source code, make edits, submit fixes and original contributions, and become a part of Relay history.

WHY CAN’T RELAY BE OWNED?

In order for the Relay Network to exist as long as possible, it cannot be subject to profit motive. While there is an abundance of lucrative financial opportunities made available by the new platform, no component of the platform itself may ever be sold, shelved, repurposed, or rebranded without the community’s direct involvement and consent.

HOW ARE COMMUNITY DECISIONS MADE?

Public votes can be used to organize ideas, make decisions, or feel out public opinion. Anyone can create a Secret Ballot with Relay for any reason at any time; however, a tally result is only as good as the reputation of the host of that vote. Therefore, in order to be taken seriously by other users on the Relay Network, a host must build and maintain a strong host reputation, and adhere to the high standards of transparency, objectivity, inclusivity, and respect.

WHAT IS PARKING TO RELAY?

This is a feature made possible by the Relay Network Cache Servers. Each server caches KeySpace content indefinitely, even if the publisher’s client is offline. This means one can host a website on Relay for free forever, and only pay for the cost of buying the domain.

HOW ABOUT SEO?

Search Engine Optimization (SEO) may apply to parked domains that use Relay for hosting, however content available on the Relay Network is not exposed to the existing internet, and won’t be seen by SEO spiders.

WHAT ARE RELAY TEAM’S CROWDFUNDING GOALS?

Relay is clearly an ambitious project and as such, the Relay team is preparing to begin crowdfunding to bring Relay from concept to reality. Funding raised will be prioritized to the following goals:

Fund the first network of public Relay servers around the world to facilitate the Relay Beta launch.

Servers will be added based on usage needs as the Beta membership grows. Since The Relay Network is free, long-term funding for servers is necessary until servers become self-reliant (via donations or contributed hardware). Relay servers are purposed with centralizing communication and will require long-term server funding to ensure network cohesion on the long-term.

Recruit and organize the first team of contributors.

This team will gradually take over development of relay from the original founders, and the transition will be organized in an inclusive and democratic manner. Examples of contribution include programming (javascript), design (css, png), content (html5), translation, quality assurance, documentation, and legal work. Examples of core Primary Projects that will become part of Relay include website templates, profile tools, shopping carts, democracy tools, and IRC features. Examples of non-core Secondary Projects include games, apps, scripts, themes, and UI tools. In order to volunteer for recruitment, registrants are required to make a $1 or greater donation. This ensures the first pool of registrants are using their real names, and are serious about helping.

  • Fund awareness and legal defence of The Relay Network. In order to assure the long-term survival of The Relay Network, efforts should be made to inform potential users of the differences between Relay and corporate-owned software. The Relay Development Team works for free and does not enjoy the security of being defended (legally and otherwise) by a rich, powerful corporation. The project is therefore vulnerable to a range of competitive tactics employed by the private sector and will require a measure of legal counsel to ensure the project can defend itself on the long-term.

  • Integrate The Relay Network into existing networks and infrastructure. Given adequate funding, it becomes possible to port the Relay Messenger to other software platforms like Android, iOS, Facebook, or even fund exciting community endeavours such as a low-cost Relay Phone. Relay is not a walled garden and aims to seek integration with anything and everything.

WHAT IS THE RELAY BETA?

The Relay Beta is the first public launch of Relay for testing purposes. Only members with an invite will be able to connect to The Relay Network. Members are given a limited set of invites to invite anyone they wish. Upon the conclusion of the Beta, The Relay Network will allow unlimited invites for all users indefinitely.

WHAT ARE NETWORK INVITES?

The Relay Network requires an invite to register on the network. During the Beta, invites are limited. This is necessary for testing purposes in order to grow the network with a measured approach. Invites may be obtained from registered users or by making a donation. Invites are required in order to meet the following goals:

  • Reduce registration fraud. Anyone who makes a donation will receive a priority invite to The Relay Network. This ensures the first pool of users are serious about early adoption and reduces the potential for abuse accounts. By requiring invites, the likelihood of multiple registrations and identity fraud are significantly reduced.

  • Build a Reputation Tree. The only way to use The Relay Network is to be invited to register. This makes every user responsible for each member they invite. Abuse committed under invited accounts might cause the invitor account to be flagged for abuse as well. Instances of large-scale abuse can be flagged at the source, rather than flagging each individual account on the Reputation Tree.

  • Facilitate Measured network growth. By controlling the number of activated invites, server performance can be observed. This facilitates a steady network growth during testing. Invites will be prioritized and batched in groups. Users will be notified when their invite is ready

HOW DO I CONTRIBUTE?

Donate! Whether you’re looking to throw down your skills, or just want to be an early adopter, start with a small (or large) donation. Making a donation is also the best way to signal a serious bid for contribution. Simply select the appropriate tier when making a donation to indicate interest in contributing to relay. Contributors will gradually take over development of relay from the original founders, and the transition will be organized in an inclusive and democratic manner. Examples of contribution include programming (javascript), design (css, png), content (html5), translation, quality assurance, documentation, and legal work. Examples of core Primary Projects that will become part of Relay include website templates, profile tools, shopping carts, democracy tools, and IRC features. Examples of non-core Secondary Projects include games, apps, scripts, themes, and UI tools. In order to volunteer for recruitment, registrants are required to make a $1 or greater donation. This ensures the first pool of registrants are using their real names, and are serious about helping.

Feature Status:

https://github.com/clevertree/relay/issues

DO YOU HAVE A POLITICAL POSITION?

If the vision behind Relay can be attributed a political position on any issue, it would likely be that all parties to that issue should enter into inclusive public dialog using tools of democratic best practice available (like relay) so that every last voice is counted, every plan has time to be vetted, and every conceivable concern given a chance to surface. As such, Relay is nonpartisan.

Release Info:

Relay is a work-in-progress and will be launching an invite-only beta in December. Most features are not online as of yet.

Donations:

BTC: 1AT6o3mmPRZVdzXPh7SbThgAhv9g4o3j92

PayPal: ari dot asulin at gmail dot com

Instructions for Contributors

(How to contribute to the relay repository)

If you’re viewing this page, hopefully it’s because you want to help contribute to the Relay project (anyone can!). This is accomplished by ‘cloning’ the relay repository to your local computer, making edits, and then committing the changes back to the repo. Changes are then peer-reviewed, authorized and pushed live.

Contributions include:

  • .js files (programming) - Javascript files provide all Relay functionality for both Servers and Clients and can be found throughout the source code.
  • .html files (content) - HTML5 is the Relay content format. All UI and local content is defined in single .html files throughout the source code.
  • .css files (design) - CSS is how one makes HTML5 content look (and act) like anything you can think up. CSS files also define Themes used in Relay allowing new themes to be contributed

Repository Instructions:

  • Install git (the repository manager):
  • If you already have git, skip this step.
  • [Windows git] Download cygwin setup.exe from https://www.cygwin.com/ [x86 or x64]
  • Install with packages ssh, git, python, wget, nano
  • Search for each package and select install on each library in the group

Clone the Relay git repository:

  • After Cygwin is installed (or using your own console/git), open your command console,
  • browse (command cd) to your dev directory,
  • and execute git clone [repo url]:
  • $ cd [your dev folder]
  • $ git clone https://github.com/clevertree/relay

Server Instructions:

(If you want to run a Relay server locally)

  • Install node.js and mongodb (if you want to run the server locally):

Skip this step if you prefer to run the server remotely. You will need your own server to access the html file i.e. http://[your dev server]/relay/index.html

Install Node.JS

https://docs.npmjs.com/getting-started/installing-node

Download and Install MongoDB

https://www.mongodb.org/downloads?_ga=1.56315051.1067887463.1444014081#production

Instructions:

http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/

Install Relay Server:

  • $ cd [your dev folder]
  • $ node install.js

Run Relay Server:

  • $ cd [your dev folder, if you’re still there]
  • $ node server.js

Try to access your localhost server:

http://localhost/

Testing:

Test in Chrome (edit files via chrome debugger): Open the index page in chrome on your local server i.e. http://localhost/ (or your own dev server link) Experiment with the chrome debugger (F12 or Ctrl-Shift-I) which lets you step through client code. This debugger is literally all you need to develop for this project client-side, but feel free to use PHPStorm (way better) or NetBeans, or any javascript IDE Additional instructions on editing project files from your chrome browser debugger: https://developer.chrome.com/devtools/docs/workspaces In the debugger, select the ‘sources’ tab, and right click. Select ‘add folder to workspace’ Select the relay folder you cloned earlier and chrome should be able to sync up the local and remote asset files. Any file edited in real-time is saved locally and can be committed back to the repo.

Directory structure:

/client - Contains all client files (Javascript/HTML5)

/app - Applications and Non-Core features

/channel - Chat and Channel features

/client - Client features and UI

/ui/themes - Client Themes and theme resources

/keyspace - KeySpace features and database

/node_modules - Node.js support files

/pgp - PGP Encryption features

/server/http - HTTP Server

/server/socket - Socket Server

For Designers:

Open the test page corresponding to a design template in the browser to view ex. http://localhost:8080/relay-server/command/template/base/pages/home/index.html Edit the template by modifying associated css/image files and refreshing the page in the browser Use test.html files to test individual template components. Add tests as necessary Commit your changes back to the repo

Please update this file with any questions, improvements on the instructions, or anything else you feel like changing

Clone commands:

$ cd [your dev folder] $ git clone https://github.com/clevertree/relay

Commit commands:

$ cd [your dev folder]/relay/ $ git status (shows the status if your commit) $ git add [your file path] (add your file to the repo) $ git commit -m “fixed the thing, added stuff” (commit to repo with message) $ git push origin master (push commit to server)

cygwin is a unix driver for windows that lets you do many of the same things linux/unix can do on the command line. The command line is called the CygWin Terminal

Feature List (old)

Free and Community Owned

  • Always free, forever
  • Cannot be owned, sold, shelved, or reappropriated without the community’s consent
  • All matters (executive, budget, etc) are audited by the community in real-time

Open-Source

  • Anyone can contribute
  • Donations go to contributors of the repository (programmers, designers, content editors, anyone)

Decentralized

  • No single points of failure
  • Most features will continue working during outages

Keypair Encryption (with PGP)

  • The fundamental aspect of what makes Relay possible has to do with client-side encryption.
  • All content is signed with the creator’s private key.
  • Signatures cannot be faked
  • As information is relayed through the network, the authenticity of that information is constantly verified via the creator’s public key
  • Private messages and content encrypted with strong PGP encryption cannot be broken or read by anyone other than the intended recipient. Client-side to Client-side encryption prevents man-in-the-middle attacks as well as anyone (ISP, government, corporations) from snooping your private data

Simple Stack

  • The Relay client uses a modern browser and is built on JavaScript and HTML5
  • The Relay 'cache' server uses Javascript also and runs on Node.js and is used to relay socket information and cache http requests

Features

KeySpace

  • Every User has a User KeySpace defined by their unique PGP Key Identity that can optionally host entire websites and online services from a single device
  • Content is cached in socket servers so that a host device may be offline for long periods of time without the end users experiencing any outages.
  • Small businesses can host all their content for free forever using many available templates, and even serve transactional requests via POST all from a single device
  • Users may customize (or design from scratch) anything in their KeySpace. They can also select by default templates that resemble existing social media networks (Facebook, Myspace templates, etc)

User Feed

  • Similar to Myspace/Facebook, any content posted to the User KeySpace also appears on their User Feed. The User Feed is simply a list of all posts made in chronological order. Content access is up to the content creator and managed via PGP Encryption
  • Similar to other services, the user feed provides common features like comments, signing content (similar to like)

Chatrooms

  • IRC-styled Chatrooms with HTML5 awesomeness
  • Chat rooms provide event push-notification and can act as side-loaded support to all other features built on Relay
  • Chat rooms can be joined based on locality (country, state, city, house, ip, timezone)

Cryptocurrency integration

  • Bitcoin (and other currencies) create a user-run economy that operates within the community.
  • Financial incentive can be used to stimulate such initiatives as voting and software projects

Vote System

  • Vote initiatives signal community calls to action and can be initiated by any user.
  • Voter identity and value is protected via PGP Encryption
  • Voter fraud is regulated by community audits of vote receipts
  • Financial incentive can be used to promote a public vote by incentivizing users to vote, review and debate on issues, and audit vote receipts
  • Votes are tallied and protected by vote registrars who are responsible for auditing and tallying all votes under their account. This is all handled automatically. In the event of fraud, a review of voter identities is triggered. Failing to do this may result in all votes in the hierarchy becoming invalidated. Anyone can be a vote registrar, but trust comes down to reputation.
  • Vote receipts are periodically updated with public-facing hashes that do not give away the voter’s identity or vote value, but do allow for duplicate votes to be detected. Fraud that may have gone undetected may be found after the fact when new hash algorithms become available.

About

Relay Server/Client

http://relayproject.net

License:MIT License


Languages

Language:JavaScript 91.4%Language:HTML 4.9%Language:CSS 3.6%Language:Nginx 0.0%Language:Shell 0.0%