Grassland is an anonymous, peer-to-peer network of open source, computer vision software that uses just a video feed and a simple linear equation to provide a (politically) stateless, indelible public record of the lives of people and the movement of vehicles all around the world in a real-time, simulated, 3D, bird's-eye-view similar to the games SimCity® or Civilization®, but with the ability to rewind time and view events in the past. A form of inverse surveillance or undersight
No SLAM, Point Clouds, RGB-D, Lidar or Other Sensors Needed!
A citizen or public servant who wants to know what any citizen or (rival) public servant is doing at this moment or has ever done before
Data science. I now know most of my neighourhood's average height, individual walking gait identification pattern, estimated salary based on car model, family structure, daily schedules, how many (visibly) pregnant women, on what days in July the guy across the street mowed his lawn, the pattern he mowed it in the 8th time and that it was the same day my other neighbour had 5 guests over for a get together. I can rewind and replay it from multiple angles in 3D. If I really want, I can convert it to spreadsheet format, etc.
Impartial verification of current or past events, an embargo on fake news, unaccountability and ignorance in any Grassland node's corner of the world at least
An autonomous source of income (See section, "Economically Self-Interested Nodes")
Fixed, low-latency, eyes-in-the-sky for a self-driving car to tell them precisely where the lane is but more importantly how human driven vehicles really expect each other to drive in this location and that there's a kid approaching on a bike on the other side of that truck that it knows the car can't see yet.
A city planner wanting to know exactly what problems need to be solved
A person whose decisions are based on property, traffic, demographics, etc.
e.g. a dentist wanting to know exactly, instantly and for free how many families live in this area
e.g. a person about to buy that gas station across the street and needs to know precisely how many cars go there a day and how much they bought estimated from how long they spent pumping and the size of the tank from the make and model
An insurance company, a marketing firm, sales rep etc. And not merely statistical information. Grassland gets very, very specific.
An impartial, indifferent, semi-omniscient, non-human oracle for a smart contract
You're buying a house. You obviously want to know everything about the people that live in the neighbourhood
You're selling a house. You can show the buyer nearly everything about the people that live in the neighbourhood
Plain curiosity about human behaviour, seeing people's lives, in an unbiased manner, from a bird's eye view and being able to play with time
Useful at every network size even if there was only one node
The first use case will never be entirely precise for times when that person is in a place where there is an expectation of privacy. But you can make a lot of educated guesses with the right statistical models. Some of the more detailed, data science information will be added to the network's official model over the course of 2019 when the detail and computational requirements increase as per the schedule below divided into "eons".
The first 3 were taken as "mathematically axiomatic". i.e. Having assumed such a system is "true" in an abstract sense, I proceeded by logical means to deduce a programmatic theorem that follows from and satisfies those first 3 postulates.
1. Trustless: A system exists where you don't have to blindly trust a developer or any other node. You just have to trust mathematics. Successfully submitting fake data in the network is so computationally intractable that any self-interested node would find it more profitable to be honest
2. Economic Incentive: A system exists such that as long as there is someone out there who likes money, it would happen, in our case that the remaining "dark" areas of the map will be "lightened up"
3. Data Symmetry: A system exists wherein no party could maintain a data gathering asymmetry (one-sided surveillance) so long as there remain other parties acting in their own self interest. Advantage then must come from real innovation not parasitical organizations engorged on people's information. A "scorched earth policy", hence the name "Grassland"
No Central Authority: It follows then that even if all nodes were shut down and the only node still going was being run by some little girl in some place I'd never heard of, it would keep rewarding that faithful remnant with a war chest of money and a perpetually increasing and unparalleled knowledge of human behaviour and the environment. They'd end up with a very wealthy and frighteningly "omniscient", young person on their hands.
Anonymous: It follows then that all nodes are anonymous
Open Source: It follows then that the code is free to be viewed by anyone
Economically Self-Interested Nodes
Each software instance (node) operates under the assumption all other nodes are acting in their own economic self-interest, weighing their own opportunity costs of expending computational resources.
The network ensures all data must have passed through the hidden layers of the current AI/object-detection model (see diagram below), a non-trivial computation, the additional benefit of which is that the only strategy for a rational, self-interested node is to contribute to the network and makes the production of passable fake data prohibitively expensive.
This proof-of-work algorithm also generates a reward for the node performing the detections in the form of the network's own cryptographic currency backed by statistical proof easily verifiable by other nodes that economically scarce computational resources were expended to process each frame correctly, effectively "trading" whatever currency their compute costs are denominated in into Grassland's fungible coin, thereby rewarding continued operation and node territorial expansion.
Camera frames aren't stored in the database, just information digitally signed by the node about the objects gathered from the output of the neural network and a cryptographic hash of that same information (see diagram below). The frames themselves are only needed for a little while after for random confirmations (where selected frames are distributed peer-to-peer over IPFS) and then they can be discarded.
Since each database entry is also a proof-of-work, storage costs never exceed the value the market has placed on the data. Not to mention its intrinsic value
Prevents any party, inside or outside the network, forming an asymmetry (one-sided data gathering of human behaviour) as long as there remain Grassland nodes acting in their own self-interest.
2D To 3D
Uses an algebraic equation called homography to project from 2D to 3D.
Each instance of the software acts as a contributing node in the network. By giving a node access to any fixed perspective, 2-D camera feed (webcam, security camera, IP camera, video stream, etc.), it projects objects into a 3-D, searchable, simulated, re-creation of events in the part of the world it's viewing overlaid on OpenStreetMap 3D with building extrusion.
Once the node's real-world frame of reference is set using the map it will continue to operate autonomously.
The map renders objects as simple low-poly blocks (think Minecraft). Extremely lifelike visual rendering on the map is not necessary, at least at this time.
As the sum total of the network's computational throughput changes, the computational requirements for each node changes as well; e.g. if the average throughput increases, demand has increased therefore nodes must increase their individual FPS. This has the added benefit of making the opportunity costs of fabricating data an increasingly non-viable endeavour.
Every few months ("eons"), nodes download an improved version of the network's deep learning model. Which will recognize more objects and activities with greater certainty. So over time the network becomes an increasingly accurate and harder to fabricate representation of the real world.
With each new model version, there should be a marginal decrease in the network's uncertainty of the probable object paths within the "foggy" areas of the map beyond the node's field of view.
Since nodes are effectively "buying" grassland tokens with whatever currency their computational costs are denominated in but the number of coins rewarded for each frame inference remains the same, as detail and computational requirements increase, the coins are essentially being bought for a higher price, steadily increasing the value of coins already in possession and the intrinsic value of the data. This rewards those who took earlier and therefore more "computational investment risk" and those who "lighten" more "dark" areas of the map.
Unrewriteable History And Reasonable Storage Requirements
Several times a day, the last output digests from each node, the tip of each of their rolling hashes (see diagram below), are hashed into a Merkle Tree. The tree's leaves are paired based on node geospatial proximity along longitudinal bands.
The Merkle Tree is distributed to all nodes. Most nodes don't need to keep the entire database just their branch of the Merkle Tree
Storage of the entire database is only truly a problem when storage costs exceed the market value of what's being stored, however, as stated earlier, since each database entry is also a proof-of-work, storage costs never exceed the value the market has placed on the data.
Each new Merkle root determines which frames from each node's pre-published digest tuples are required for evaluation.
Since flipping a single bit of a frame captured by one node would give it a completely different set of rolling hashes which upon entering the global Merkle Tree would have produced an entirely different root hash, once it's set and distributed (upon which it starts being hashed into the upcoming Merkle Tree), it would take exponentially more processing power than is available on the planet to successfully create an alternative version of Grassland's history of events.
The process of producing the next Merkle Tree is a competition any node can compete in. A person who cultivates real trees is an Arborist so we'll use that term. Our "arborists" will also need to perform inference on the frames that were randomly selected for evaluation based on the last Merkle root, and will need to publish each frame's digest tuple and the "reserved digest" (see diagram). If the original node holding the reserved digest signs the arborist's digest, it generates that node's reward coins and a percentage goes to the arborist. But that will only propogate if that arborist's tree is also accepted by a majority of the network. Therefore, as long as (1) there is always active competition to compute the Merkle Tree by statistically verifying the work of all other nodes and (2) over 50% of every active node prevents inflation of the money supply by rejecting trees that don't pass their proof-of-work, then all rational (self-interested) nodes will have to be honest.
Software is currently an alpha version. Very alpha. There are still some multi-processing bugs to work out in Node Lite, you'll need to know your way around Tensorflow, download the current eon's model (see link below), download an OpenStreetMap 3D map for the region your node is viewing install OpenCV 3.4.1 and the other dependencies and be aware that some features like currency reward triggers haven't been completed yet.
(I'll make this process much smoother soon) For now, to get it working you have to tell the node the real world, 3D, orientation and position of the camera feed you're giving it by setting the "virtual" camera inside of the virtual map with the same 3D position and orientation. For that you use OpenStreetMap and Mapbox GL JS (in the "multi_object_tracking" file, I use the words "calibration" and "calibrating") . Then the homography function (you'll see I put it in a separate file) projects the object from each 2D camera frame to the 3D virtual map based on the camera's real world calibration that you just gave it. It'll only animate the objects position now and they're just simple blocks but that's cause we're still in the first "eon".
You can find more installation instructions on the Github repos.
Please submit software questions/problems/discussions in the Issues section of the Github repos. Send a pull request if you have improvements to make.
For inquiries not directly related to the software, you can email me at david[at]grassland[dot]network
You can download the latest Grassland eon's object detection model using the following URL's. The node software can be downloaded here on Github