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
SMS Based Headless Browsing

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

Zafir Khalid 2 Feb 07, 2022
Simple DNS resolver for asyncio

Simple DNS resolver for asyncio aiodns provides a simple way for doing asynchronous DNS resolutions using pycares. Example import asyncio import aiodn

Saúl Ibarra Corretgé 471 Dec 27, 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
sshuttle: where transparent proxy meets VPN meets ssh

Transparent proxy server that works as a poor man's VPN. Forwards over ssh. Doesn't require admin. Works with Linux and MacOS. Supports DNS tunneling.

9.4k Jan 09, 2023
Visualize the electric field of a point charge network.

ElectriPy ⚡ Visualize the electric field of a point charges network. 🔌 Installation Install ElectriPy package: $ pip install electripy You are all d

Dylan Tintenfich 29 Aug 29, 2022
PcapConverter - A project for generating 15min frames out of a .pcap file containing network traffic

CMB Assignment 02 code + notebooks This is a project for containing code for the

Yannik S 2 Jan 24, 2022
Program can control your server via discord bot

GTPS Controller Program can control your server via discord bot Require Python How To Use Download This Source Extract The Zip File Paste gtps.py to y

Lamp 2 Mar 15, 2022
Edge static generator. Also Edge means: the outside limit of an object, area, or surface.

Edge Edge is a new static generator. Edge is onworking. Do not clone or do any changes. No P.R will be merged Also Edge means: the outside limit of an

AmirHossein Mohammadi 12 Jan 16, 2022
Tsunami-Fi is simple multi-tool bash application for Wi-Fi attacks

🪴 Tsunami-Fi 🪴 Русская версия README 🌿 Description 🌿 Tsunami-Fi is simple multi-tool bash application for Wi-Fi WPS PixieDust and NullPIN attack,

【Kiko】 35 Dec 09, 2022
Python port of proxy-www (https://github.com/justjavac/proxy-www)

proxy-www.py Python port of proxy-www (https://github.com/justjavac/proxy-www). Implemented additional functionalities! How to install pip install pro

Minjun Kim (Lapis0875) 20 Dec 08, 2021
Automatically block traffic on Cloudflare's side based on Nginx Log parsing.

AutoRL This is a PoC of automatically block traffic on Cloudflare's side based on Nginx Log parsing. It will evaluate Nginx access.log and find potent

Nova Kwok 62 Dec 28, 2022
A simple and lightweight server that allows clients to connect and launch a shell remotely through a browser.

carrotsh A simple and lightweight server that allows clients to connect and launch a shell remotely through a browser. Uses xterm.js for the frontend

V9 31 Dec 27, 2022
Whoisss is a website information gatharing Tool.

Whoisss Whoisss is a website information gatharing Tool. You can cse it to collect information about website. Usage apt-get update apt-get upgrade pkg

Md. Nur habib 2 Jan 23, 2022
A Simplest TCP client and echo server

Простейшие TCP-клиент и эхо-сервер Цель работы Познакомиться с приемами работы с сетевыми сокетами в языке программирования Python. Задания для самост

Юля Нагубнева 1 Oct 25, 2021
A Python Packages to make own chat room

Chathon A Python packages for make own chat room Install PyPI pip install chathon

1 Dec 10, 2021
TunnelProxy 是一个本地隧道代理,可以从fofa爬取免费的socks代理,然后构建代理池,如果一个代理失效,会自动切换

TunnelProxy 是一个本地隧道代理,可以从fofa爬取免费的socks代理,然后构建代理池,如果一个代理失效,会自动切换。 应用场景 渗透测试需要访问某些国内网站(比如edu的),想要隐藏自己,但是国外代理不能访问,也没有稳定的可用代理的时候。 之后,可能我会增加国外代理,实现白嫖科学上网。

urdr-gungnir 45 Nov 17, 2022
Tool for quickly gathering information from Shodan.io about the number of IPs which satisfy large number of different queries

TriOp Tool for quickly gathering information from Shodan.io about the number of IPs which satisfy large number of different queries For furt

Jan Kopriva 27 Nov 03, 2022
A Python3 discord trojan, utilizing discord webhooks for sending information.

Vape-Lite-RAT A Python3 discord trojan, utilizing discord webhooks for sending information. What you do with this code / project / idea is non of my b

NightTab 12 Oct 15, 2022
GNS3 Graphical Network Simulator

GNS3-gui GNS3 GUI repository.

GNS3 1.7k Dec 29, 2022
Dark Utilities - Cloudflare Uam Bypass

Dark Utilities - Cloudflare Uam Bypass

Inplex-sys 26 Dec 14, 2022