Viral Vote

DAOs

my main research intrest comes in the form of decentralized autonomous organizations, or DAOs. the interesting thing about DAOs is that there exists a technical understanding of what they are, but like blockchains in general, their exact use cases are hard to pin down. DAOs are advanced multi-stage algorithms held in play on a decentralized network of computers, rather than controlled by a single management team. some people view them as decantralized autonomous corporations, others view them as guilds where multiple organizations come together to form specialized markets.

implications

The world continues to change and our virtual and physical spaces continue to converge into one. The human colossus is heading head first into a perilous future where we give into an Orwellian dystopia governed by the few, or we take charge and use our collective knowledge to solve our ever-present needs. Climate change and the domino effect it creates will require a type of coordination unlike we’ve ever seen and new forms of organization have and will come up to address these new challenges. One of these new tools is called a Decentralized Autonomous Organization that consists of a set encoded rules backed by a blockchain that enables for unique consensus mechanisms. At the heart of these consensus mechanisms is voting. Whether it be 1:1, weighted or quadratic, the casting of a vote in a DAO is done through a transaction on a blockchain. In a future where the keys to these transactions are the literal keys to our future, we need a tool that enables us to safely store our keys offline to prevent hackers from accessing them, verify the blockchain in which the DAO lives in, and vote on the issues at hand. Viral Vote is a voting wallet that does all of that, by securely storing private keys , hosting a full Ethereum node, and having the ability to vote on the issues your organization is trying to resolve.

voting mechanisms

a current example is molochdao. it is a DAO that members apply to join, pool their money together and vote on what projects to fund. a common theme that surround DAOs is voting. regardless of the voting mechanism that are encoded by individual DAOs, there is almost always a way to vote on some decision. for my final project, i would like to create a physical manifestation of said voting mechanism by making a set of voting controllers.

DAO voting controller

a voting controller needs to be a cold storage wallet when not connected to the internet and then become a hot storage wallet in order to vote. in order to become a hot storage wallet, it means it needs to be connected to the internet.

what does it do?

viral vote is a voting hardware wallet that interfaces with aragon daos in the ethereum blockchain. it runs a full ethereum node to ensure the health of the network and stores private keys that are used to sign votes in a dao so that issues and questions in a dao can be addressed.

hardware inspiration

while discussing my idea with neil, he showed me another project that was done by ben z. yuan. it is a hardware password manager which i will use as a compass in what i want to do.

there are also just plain hardware wallets such as ledger and trezor

what i designed

i designed the case in a very detailed manner, including the button housing, button switched and the oled mount. i made sure that everything had a place and that it fit perfectly, iterating through different designs.

here i was calculating how high the holes for the button casing needed to be in order for the circuit board with the pronged etches to fit in.

and here's the board i designed.

materials + cost

these are the list of the materials used. overall it was about $150 dollars because of the electorics bought, with the bulk of it coming from the ssd drive.

what i made

i made the whole encasing for the wallet, the buttons, the circuit board and the oled interface. the image bellow shows the different 3d pritns that were mande to get to the final one. each print took about 7 hours. it also shows the boards i made and iterated on, the oled mount that is embedded in the the top and and the buttons.

how i made it

for the case i used fusion 360 to design it. i started out with an existing 3d model of a raspberry pi case and extanded it to house the extra electronis. i then kept printing different iterations using a prusa 3d printer to get the right dimensions so that everything fit perfectly.

for the board i used eagle. i was very happy with how i did it because i tricked eagle into giving me the board i wanted. i first took the parameter of board from a sketch in fusion and exported it as a .dxf file and then i imported that file into eagle in the milling layer. i chose buttons from the fab lab parts and then placed them past the milling lines, routed its wires on the edges and made them .8mm thick. i kept into account the fact that there had to be a spring between the two prongs of the incomplete switch. i was very happy when they fit in perfectly the first time because i was very concious about the measurements.

once the board was done, i solderd it and bootloaded it using an amt-ice programmer so that i could use the arduino ide. i then made sure to read the buttons and send them through serial.

to get a full ethereum node running i had to use and ssd card in order to get the approriate reads and writes. i used tutorial for it but skipped the static ip part because i couldnt with the media lab wifi. it took the pi nine days and 4 hours to sync completely using geths fast-sync functionality that downloads all the blocks and simultaneously does the cryptographic validations. it took 4 hours to download the majority of the blocks but then i was five to ten blocks behind for the majority of the sync while the cryptographic validation was being done.

i then installed the aragon cli using npm. it's as simple as 'npm install -g @aragon/cli' but i spent four hours trying to install it because i kept on running intp some weird node-gyp errors. it turned out that i was using the latest node verison instead of the latest lts verison and that made all the difference. remeber to read the instructions well boys and girls. once it was installed, i made sure to place my private keys in the ~./aragon directory under rinkeby_keys.json so that the cli know what to use to sign transactrions. in the future i would want to store these keys in a more secure manner but this was fine for an mvp.

after i had the two things installed, i created a simple python program that read serial input from a usb port (the buttons) and kept track of the state of the interface so that it knew what actions the user wanted. when the user chose a vote and confirmed it, it generates the transaction, signs it and sends it.

evalutation

i would classify this as more of an mvp than a full-blown product. i think it opens up a conversation as to why we might need daos in the future and how we might go about interacting with them if they become part of our daily lives. it is successful in that it helps keep the network healthy by having a full node but ideally i would want my own block explorer inside the pi as opposed of having to depened on the aragon cli. the buttons worked well enough but are obciouslly not up to industry standards. i would also use a larger monitor with a sleeker ui and also add a vent ontop of the ssd since it gets very hot insde there. something similar to where the pi is stored. most importantly, i would make the storing of the private keys a lot more secure if i wanted to scale becuase it would be very insecure otherwise and defeat the purpose of me creating this.