handles

package module
v0.0.0-...-94102d9 Latest Latest
Warning

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

Go to latest
Published: Feb 9, 2024 License: Apache-2.0 Imports: 5 Imported by: 1

README

Handles Protocol

Official implementation of the handles social protocol.

This file deals with running a handles protocol validator. For information about breeze protocol see the protocol presentation

Building the source

Building blow requires a Go compiler (1.21 or later). You can install it using your favorite package manager. Once it is installed, run

make

from the repo root folder. It will build a binary handles on the same folder.

Executables

Handles provides a validator module and a block database module.

Module Description
blow-handles sequencer and validator for the handles protocol
echo-handles blocks database and token indexation for the handles protocol

Minimum hardware requirements for running handles

For a standalone validator with no outgoing connections

  • CPU with 4 cores

  • 16Gb RAM

  • 20 MBit/sec internet connectivity

For a validator connected to block listeners

  • a static IP address

Running Handles

Validator

To run a handles protocol validator a json configuration file with the relevant specifications must be provided.

blow-handles <path-to-json-config-file>

The standard configuration for handles protocol is

{
	"token": "hex 64 char representation of node token",
	"adminPort":  <port other than 6001 for node remote administration>
	"blocks": { firewall config (see bellow) for block listener connections }
	"keepNBlock": <number (>=900) of blocks to keep in memory>
	"trustedProviders": [
        {
            "address": "dns or ip address of a trusted provider for breeze blocks",
            "token": "token associated to that address"
        }, ...
    ]
	"providersSize": <number of different providers to connect to>,
	"notaryPath": "path for local state persistence (empty is memory only)"
	"genesis": <true> for a new chain from genesis, <false> for an existing chain,
	"trustedPeers":  [
           {
            "address": "dns or ip address of a trusted peer to sync state",
            "token": "token associated to that address"
        }, ...

    ]
}

Firewall rules follow the breeze convention

{
    "open": [true|false]
    "tokenList": [<token 1>, <token 2>,...] 
 }

When "open" is set to true the firewall will by default allow all connections except those blacklisted by the "tokenList". When false, the firewall will by default forbid all connections except those whitelisted by the "tokenList".

If the node starts from genesis, node must be ensured to process the entire history of breeze blockchain. Typically only a sync mode configuration will be used.

Block Database

To run a handles protocol default block database a json configuration file with the relevant specifications must be provided.

echo-handles <path-to-json-config-file>

The standard configuration for the handles protocol is

{
	"token": "hex 64 char representation of node token",
	"port": <port for incoming connections>,.
    "adminPort":  <another port for node remote administration>,
	"firewall": { firewall configuration for incomming connections }
	"trustedProviders": [
        {
            "address": "dns or ip address of a trusted provider for bree blocks",
            "token": "token associated to that address"
        }, ...
    ]
	"providersSize": <number of different providers to connect to>,
	"databasePAth": "path for block history and index storage"
	"indexed": <true> for indexation <false> for block history only,
    "networkID": "underlying breeze network id",
}

Contribution

Synergy

Synergy protocol was designed as a digital framework for collaboration and collective construction. It runs seamlessly on top of the Breeze protocol and on top of handles social protocol.

Handles is, itself, an ongoing project inside the Synergy protocol. To collaborate with design decisions on handles, you are welcome to join Personal Internet Collective.

Github

Contributions that do not change protocol functionalities, such as bug fixes, testing coverage, code refactorings, etc, may be proposed directly as a pull request targeting the main branch of handles official repository.

For contributions that in anyway include protocol change, please join Synergy's Personal Internet Collective and join a previous discussion involving the community, so decisions regarding the changes can be made collectively.

License

Handles is licensed under the Apache 2.0 license.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func HandlesListener

func HandlesListener(ctx context.Context, sources *socket.TrustedAggregator) chan *HandlesBlock

Types

type HandlesBlock

type HandlesBlock struct {
	Epoch    uint64
	Seal     crypto.Hash
	Grant    map[crypto.Hash]*attorney.GrantPowerOfAttorney
	Revoke   map[crypto.Hash]*attorney.RevokePowerOfAttorney
	Join     map[crypto.Hash]*attorney.JoinNetwork
	Update   map[crypto.Hash]*attorney.UpdateInfo
	Void     map[crypto.Hash]*attorney.Void
	Commited bool
}

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

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