The Delegate Network: An Interactive Voice Response Delegative Democracy Implementation of Liquid Democracy

Related tags

Networkingdelegate
Overview

The Delegate Network

Overview

The delegate network is a completely transparent, easy-to-use and understand version of what is sometimes called liquid democracy.

Imagine a phone number answered by an instance of the Delegate Network. You, as a registered voter, call that number. Say "John Doe of Centerville" and hang up. Later, the registered voter, John Doe of Centerville calls the Delegate Network and votes on bills before the US House of Representatives, but his count as TWO votes: His and yours. He's your "delegate". More people delegate to him. His power grows. But John Doe of Centerville is only human. You call the Delegate Network and say "audit". The Delegate Network reports how your voting power has been used on a bill you deeply care about. Power corrupted him. You say "recall". Instantly, he wields one less vote against people like you. You know others that trust him. You call to warn them. Even after discussions, some disagree with your opinion. Others agree. He loses more power. Since the Delegate Network is publicly auditable at all times, news of his betrayal spreads to most everyone that trusted him. All have an incentive to communicate in more depth than a Facebook post or Tweet. Power hierarchies evolve toward greater trust.

Now, imagine a candidate campaigns for a seat in the US House of Representatives with one promise:

"I will vote the way the delegate network for my Congressional district tells me to vote and refer all political negotiations to them."

Voter authentication is based on:

  1. FCC-mandated SHAKEN/STIR authentication of caller IDs that has been in effect since June of 2021.
  2. Phone numbers appearing in the Secretary of State voter registration records.

Another feature is "delegate money": a demurrage currency system to incentivise participation. Philosophically speaking, politics and money are the two primary abstractions of government's monopoly on force. Reforming politics alone is impractical. To quote the founder of the Rothschild banking dynasty: "Give me control of a nation’s money supply, and I care not who makes its laws." While there have been, will continue to be, ideas held as passionately as they are divergent about how to wrangle the abstraction of force called "fiat money", the delegate money system is a pragmatic degeneration -- targeting political command and control hierarchies -- of what the author has called "property money". In the general form of "property money", fiat money is backed by the value of enforced property rights in what might be called "civilization as a service" -- a service provided by "those who place their flesh, blood and bone between chaos and civilization". They are called "Soverigns" in the terminology of "property money". In the interim, delegate money pragmatically degenerates property money as follows:

  1. Treat those who verify their phone numbers in their voter registrations with their Secretary of State, and who then use those phone numbers to participate in the delegate network, as though they were placing their flesh, blood and bone between chaos and civilization. They are the recipients of demurrage fees, equally apportioned among them.
  2. The money supply is based on an estimate of the property value required to support all governmental personnel.
  3. The initial money supply is "minted" so as to make the delegate network go viral: incentivise early participation thereby creating a critical mass of participants to reach network effect tipping point.

Installation

  1. Obtain a Telnyx phone number with a call control app id.

  2. In this directory create a file named .env for environment variables, with a development environment exemplified in README.resources/home/delegate/.env

    DEBUG_LEVEL = 1
    TELNYX_PUBLIC_KEY=
    TELNYX_API_KEY=
    TELNYX_APP_CONNECTION_ID=
    

    Note: The TELNYX_APP_CONNECTION_ID is the same as what is sometimes called TELNYX_CALL_CONTROL_APP_ID

    To make use of the anonymized test dataset in this repository, set these environment variables:

    STATE_OR_PROVINCE = 'iowa'
    

    For authentication of call-ins by sovereigns (unrestricted ability to mint Delegate money), specify their caller IDs:

    SOVEREIGN_PHONES = ['712-123-9876','712-125-7890']
    

    Provide a path for the publicly accessible audit log. In this example a symbolic link has been created to a website directory:

    AUDIT_LOG=public_html/audit_log.txt
    

    Estimate the delegate money supply (ms) and then solve for x where ms = x*(x+1)/2. That solution is: x = (sqrt(8*ms+1)+1)/2 Define NUMBER_OF_ACTIVATIONS_TO_REWARD to be x. In the case of Iowa, x turns out to be about 2^16 or 65536.

    NUMBER_OF_ACTIVATIONS_TO_REWARD=65536
    

    The redis installation instructions below require the definition of a unix socket:

    REDIS_SOCKET=/var/run/redis-delegate-private/redis-server.sock
    

    To run a development environment and production environment on the same redis server, the database numbers must not overlap. Therefore, one of the environments must set these environment variables to not conflict with the default (0,1,2,3):

    REDIS_TRANSACTIONS_DB=4
    REDIS_SESSIONS_DB=5
    REDIS_VOTERS_DB=6
    REDIS_PROPERTIES_DB=7
    
  3. Install ngrok so that it is executable from this directory.

  4. Install redis with example configurations in these files:

    README.resources/lib/systemd/system/[email protected]	# systemd template (unmodified location and contents from the Ubuntu 20.04 distribution) 
    README.resources/etc/systemd/system/[email protected]/override.conf # installation override of the systemd template
    README.resources/etc/redis/create-delegate-public.conf.sh	# script to generate the public-facing redis server's configuration
    README.resources/etc/redis/bak/redis.conf			# source configuration for configuration generation edited from original /etc/redis/redis.conf according to the "suggested modification for" below
    README.resources/etc/redis/create-delegate-private.conf.sh	# script to generate the private redis server's configuration
    README.resources/etc/redis/redis-delegate-private.conf.patch	# patch required by create-delegate-private.conf.sh
    README.resources/etc/redis/redis-delegate-public.conf.patch	# patch required by create-delegate-public.conf.sh
    

    The following instructions work under a clean install of Ubuntu 20.04LTS, but may damage other systems:

    Disable the existing redis server instance:

    systemctl stop redis-server
    systemctl disable redis-server
    

    Copy the template override:

    cp -r README.resources/etc/systemd/system/[email protected] /etc/systemd/system
    

    Delete the existing /etc/redis directory:

    rm -r /etc/redis
    

    Copy the README.resources/etc/redis directory files to /etc/redis:

    cp -r README.resources/etc/redis /etc
    

    Generate the redis configuration files (which also enables and starts their corresponding server instances):

    cd /etc/redis
    ./create-delegate-transactions.conf.sh
    ./create-delegate-private.conf.sh
    

    At this point, the two redis server instances should be running and should start on reboot as well.

    For those not using these configuration generation scripts, here is the suggested modification for the default redis configuration under Linux, reflected in the above configuration generation shell scripts:

    # Please check http://redis.io/topics/persistence for more information.
    
    appendonly yes
    
    # The name of the append only file (default: "appendonly.aof")
    
    appendfilename "appendonly.aof"
    
    # The fsync() call tells the Operating System to actually write data on disk
    # instead of waiting for more data in the output buffer. Some OS will really flush
    # data on disk, some other OS will just try to do it ASAP.
    #
    # Redis supports three different modes:
    #
    # no: don't fsync, just let the OS flush the data when it wants. Faster.
    # always: fsync after every write to the append only log. Slow, Safest.
    # everysec: fsync only one time every second. Compromise.
    #
    # The default is "everysec", as that's usually the right compromise between
    # speed and data safety. It's up to you to understand if you can relax this to
    # "no" that will let the operating system flush the output buffer when
    # it wants, for better performances (but if you can live with the idea of
    # some data loss consider the default persistence mode that's snapshotting),
    # or on the contrary, use "always" that's very slow but a bit safer than
    # everysec.
    #
    # More details please check the following article:
    # http://antirez.com/post/redis-persistence-demystified.html
    #
    # If unsure, use "everysec".
    
    appendfsync always
    #appendfsync everysec
    # appendfsync no
    
  5. Install pipenv.

  6. While in this directory, execute the command:

    pipenv --python 3.9
    pipenv shell
    pip install -r requirements.txt
    
  7. While in this directory, execute the command:

    ./run_delegate_network
    

Roadmap

  1. Web interface:
    1. Public download an audit snapshot of the current database.
    2. Current delegate network tally of votes on those bills.
      1. Lower priority: Queries to identify top influencers on specific bills.
  2. Call-back authentication in lieu of SHAKEN/STIR APIs.
  3. Re-factor to abstract jurisdiction-specific parameters and put them in the .env configuration.
    1. This may involve creating a modularized extension API inheriting from an Abstract Base Class.
  4. Regression testing framework.
    1. A set of MP3s to stimulate the transcription service, with expected results based on the anonymized voters sample data provided with the repository.
  5. Document lobotomized redis with invocation: runuser -g redis -u redis redis-server redis-delegate-public.conf
  6. Authentication using SHAKEN/STIR attestation.
    1. This may entail getting off the Telynx platform, which would raise the priority of abstracting out the telecom service provider API.
  7. Better-abstraction of the telecom service provider API.
    1. Again, a modularized extension API inheriting from ABC is probably necessary.
  8. Replace all those print statements with a logger and read any non-default level from .env.
  9. SIP level processing of speech packets for real-time custom transcription.
    1. Improve accuracy (telnyx transcripts must be converted back to phonemes for the delegate network's approximate proper name matching).
    2. Decreased costs (telnyx charges $0.05/minute of connect time to the delegate network systems).
  10. Flesh out the "Property Money" implementation.
    1. Allow people to opt-in to receive text notifications when they receive property money.
    2. Get the phone numbers (caller IDs) of all sovereigns in the Congressional district.
    3. Locate those sovereigns in the voters registrations and update the associated tentative data in redis to contain those phone numbers.
    4. In the interim (before incorporation of property taxes), a web interface suffices for property owners to register their properties in delegate money.
      1. Prioritize counties where sovereigns have an existing program to give toys to impoverished children.
      2. Contact businesses that have excess inventory they are willing to sell for play money heading toward Christmas.
      3. Ensure their phone numbers are registered as are the phone numbers of the sovereigns.
      4. Provide businesses and sovereigns with The Delegate Networks phone number and instructions.
      5. Provide a web interface at delegate.network for businesses and property owners to register the amount of Delegate Money they're willing to accept and for what in exchange.
        1. The implementation should model the ultimate implementation's reliance on declaration of property value assessing demurrage charges.
      6. This registration puts their account in the red while dividing the corresponding amount in equal transfers to the sovereigns.
      7. Sovereigns, Business and property owners receive a text message informing them ($,from whom) they receive money.
    5. This ultimately (incorporating property taxes) requires a county-assessors data-importation extension API for property databases.
      1. Include in the repository sample data from county assessors. Currently included are:
        1. Page County, Iowa
        2. Polk County, Iowa
      2. Escrowed bids for each property.
      3. Assessment of demurrage charged to the owner based on the high bid.
      4. Assessment of demurrage charged to the owner of property money except for high bids in escrow.
Owner
James Bowery
James Bowery
boofuzz: Network Protocol Fuzzing for Humans

boofuzz: Network Protocol Fuzzing for Humans Boofuzz is a fork of and the successor to the venerable Sulley fuzzing framework. Besides numerous bug fi

Joshua Pereyda 1.7k Dec 31, 2022
BlueHawk is an HTTP/1.1 compliant web server developed in python

This project is done as a part of Computer Networks course. It aims at the implementation of the HTTP/1.1 Protocol based on RFC 2616 and includes the basic HTTP methods of GET, POST, PUT, DELETE and

2 Nov 11, 2022
This script will make it easier to connect to any wireguard vpn config

wireguard-linux-python-script-vpn This script will make it easier to connect to any wireguard vpn config also u will need your wireguard vpn from your

Jimo 1 Sep 21, 2022
Solismod - A script subscribes to MQTT topics and waits for a message

SolisMod This is a first attempt to modify Solis inverter settings As SolisMon3,

9 Nov 14, 2022
Automated network configuration backups using Github actions and git-scraping

Network Config Scraper This repository demonstrates the use of Github Actions and git-scraping to build an automated backup solution for network confi

WWT 19 Dec 14, 2022
A simple chat room using socket and threading for handle multiple connections.

• Socket Chat Room was a little project for socket study. It works with a server handling the incoming connections from the clients. Clients send encoded messages while waiting for others clients mes

Guilherme de Oliveira 2 Mar 03, 2022
The AKS cluster provisioner provisions AKS clusters :-)

Overview The AKS cluster provisioner provisions AKS clusters :-) It uses the Azure CLI to configure VNet and subnets before creating the cluster itsel

Gigi Sayfan 1 Nov 10, 2021
With Py-Autocrack you can crack WPA2 networks in no time.

With Py-Autocrack you can crack WPA2 networks in no time. All based on Aircrack-ng and Crunch.

Paul - FloatDesign 1 Dec 10, 2021
A Python server and client app that tracks player session times and server status

MC Outpost A Python server and client application that tracks player session times and server status About MC Outpost provides a session graph and ser

Grant Scrits 0 Jul 23, 2021
Dos attack a Bluetooth connection!

Bluetooth Denial of service Script made for attacking Bluetooth Devices By Samrat Katwal. Warning This project was created only for fun purposes and p

Samrat 1 Oct 29, 2021
pureSxS - A tool to export Component Based Servicing packages from a full Windows installation

pureSxS A tool to export Component Based Servicing packages from a full Windows installation. Usage pureSxS.py source_mum destination pureSxS wor

Gamers Against Weed 3 Oct 03, 2022
This Tool can help enginners and biggener in network, the tool help you to find of any ip with subnet mask that can calucate them and show you ( Availble IP's , Subnet Mask, Network-ID, Broadcast-ID )

This Tool can help enginners and biggener in network, the tool help you to find of any ip with subnet mask that can calucate them and show you ( Availble IP's , Subnet Mask, Network-ID, Broadcast-ID

12 Dec 13, 2022
Equibles Stocks API for Python

Equibles Stocks API for Python Requirements. Python 2.7 and 3.4+ Installation & Usage pip install If the python package is hosted on Github, you can i

Equibles 3 Apr 15, 2022
Bark Toolkit is a toolkit wich provides Denial-of-service attacks, SMS attacks and more.

Bark Toolkit About Bark Toolkit Bark Toolkit is a set of tools that provides denial of service attacks. Bark Toolkit includes SMS attack tool, HTTP

13 Jan 04, 2023
This python script can change the mac address after some attack

MAC-changer Hello people, this python script was written for people who want to change the mac address after some attack, I know there are many ways t

5 Oct 10, 2022
An opensource library to use SNMP get/bulk/set/walk in Python

SNMP-UTILS An opensource library to use SNMP get/bulk/set/walk in Python Features Work with OIDS json list [Find Here](#OIDS List) GET command SET com

Alexandre Gossard 3 Aug 03, 2022
Ipscanner - A simple threaded IP-Scanner written in python3 that can monitor local IP's in your network

IPScanner 🔬 A simple threaded IP-Scanner written in python3 that can monitor lo

4 Dec 12, 2022
Modern Denial-of-service ToolKit for python

💣 Impulse Modern Denial-of-service ToolKit 💻 Main window 📡 Methods: Method Target Description SMS PHONE Sends a massive amount of SMS messages and

1 Nov 29, 2021
A simple python script that parses the MSFT Teams log file for the users current Teams status and then outputs the status color to a MQTT connected light.

Description A simple python script that parses the MSFT Teams log file for the users current Teams status and then outputs the status color to a MQTT

Lorentz Factr 8 Dec 16, 2022
OptiPLANT is a cloud-based based system that empowers professional and non-professional data scientists to build high-quality predictive models

OptiPLANT OptiPLANT is a cloud-based based system that empowers professional and non-professional data scientists to build high-quality predictive mod

Intellia ICT 1 Jan 26, 2022