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
AdaFruit Funhouse publishing Temperature, Humidity and Pressure to MQTT / Apache Pulsar

pulsar-adafruit-funhouse AdaFruit Funhouse publishing Temperature, Humidity and Pressure to MQTT / Apache Pulsar Device Get your own from adafruit Ada

Timothy Spann 1 Dec 30, 2021
A p2p chat app for zephyr

A p2p chat app for zephyr

L3gacy B3ta 4 Jun 02, 2021
Desktop application for checking sites connection in a background mode

Site connectivity checker Desktop application for checking site connection in a background mode by sending ICMP messages. Problem and solution Usually

Karina Singatullina 26 Dec 19, 2022
Heroku Cloudflare App Domain

Heroku Cloudflare App Domain Creating branded herokuapp.com-like domains using Cloudflare, based on the app name (eg my-app-prod.example.com). Feature

Torchbox 2 Oct 04, 2022
Netwalk is a Python library to discover, parse, analyze and change Cisco switched networks

Netwalk is a Python library born out of a large remadiation project aimed at making network device discovery and management as fast and painless as possible.

38 Nov 07, 2022
PyBERT is a serial communication link bit error rate tester simulator with a graphical user interface (GUI).

PyBERT PyBERT is a serial communication link bit error rate tester simulator with a graphical user interface (GUI). It uses the Traits/UI package of t

David Banas 59 Dec 23, 2022
msgspec is a fast and friendly implementation of the MessagePack protocol for Python 3.8+

msgspec msgspec is a fast and friendly implementation of the MessagePack protocol for Python 3.8+. In addition to serialization/deserializat

Jim Crist-Harif 414 Jan 06, 2023
Socket Based Backdoor and Listener

The Project is mainly based on Sockets , File Handling and subprocess library for Creating backdoors For Hacking into one's Computer (Any OS-Platform Service) and listening on your computer and waiti

Shivansh Mehta 3 May 31, 2021
A project that forwards data it receives in a URL POST Request to a Discord Webhook link

Mailman Mailman is a project that basically just forwards data it receives in a URL POST Request to a Discord Webhook link and act as a sort of messag

Prakhar Trivedi 2 Mar 14, 2022
TsuserverMoS - A Python-based server for Attorney Online,

tsuserverMoS A Python-based server for Attorney Online, forked from RealKaiser/tsuserverCC Requires Python 3.7+ and PyYAML. Changes/additions from tsu

1 Dec 30, 2021
PoC code for stealing the WiFi password of a network with a Lovebox IOT device connected

LoveBoxer PoC code for stealing the WiFi password of a network with a Lovebox IOT device connected. This PoC was is what I used in this blogpost Usage

Graham Helton 10 May 24, 2022
Passive TCP/IP Fingerprinting Tool. Run this on your server and find out what Operating Systems your clients are *really* using.

Passive TCP/IP Fingerprinting This is a passive TCP/IP fingerprinting tool. Run this on your server and find out what operating systems your clients a

Nikolai Tschacher 158 Dec 20, 2022
Serves some data over HTTP, once. Based on the built-in Python module http.server

serve-me-once Serves some data over HTTP, once. Based on the built-in Python module http.server.

Peder Bergebakken Sundt 2 Jan 06, 2022
Query protocol and response

whois Query protocol and response _MᵃˢᵗᵉʳBᵘʳⁿᵗ_ _ ( ) _ ( )( ) _ | | ( ) | || |__ _ (_) ___ | | | | | || _ `\ /'_`\ | |/',__) |

MasterBurnt 4 Sep 05, 2021
SMS Based Headless Browsing

Browse the internet without a network connection - Submission for ConUHacks VI

Zafir Khalid 2 Feb 07, 2022
TLD records archive. Revisiting the original TLDR project by mandatoryprogrammer, on the hunt for more root nameserver changes.

tldr A(nother) continuously updated historical TLD records archive. This repository is updated approximately every three hours with the results from D

Chris Partridge 11 Dec 14, 2022
A repository to spoof ARP table of any devices and successfully establish Man in the Middle(MITM) attack using Python3 in Linux

arp_spoofer A repository to spoof ARP table of any devices and successfully establish Man in the Middle(MITM) attack using Python3 in Linux Usage: git

Surya Das N 1 Oct 30, 2021
Simple threaded Python Rickroll server. Listens on port 23 by default.

Terminal Rickroll Simple threaded Python Rickroll server. Listens on port 23 by default. Rickroll video made using Video-To-Ascii and the standard ric

AG 10 Sep 13, 2022
This tool will scans your wi-fi/wlan and show you the connected clients

This tool will scans your wi-fi/wlan and show you the connected clients

VENKAT SAI SAGAR 3 Mar 24, 2022
This is a Client-Server-System which can send audio from a microphone from the server to client and in the other direction.

Audio-Streaming-Python This is a Client-Server-System which can send audio from a microphone from the server to client and in the other direction. You

VFX / Videoeffects Creator 0 Jan 05, 2023