Voting on Blockchains?

Voting on Blockchains?

By CPix | Everything Crypto | 9 Nov 2020

With everything going on with the election there is a fair amount of conversation around whether or not a blockchain could be a viable solution to combat voter fraud for future elections. Metal, the company behind Metal Pay and Proton Chain, believe they have a solution that leverages a high throughput, identity enabled, and low cost public blockchain. To see how it works for yourself head over to ProtonVote. A demo of the process can be seen in Fred’s tweet below.

dotkrueger.jpgFred Krueger | Proton @dotkrueger Blockchain voting is officially a reality. Proton has solved it, proved it can work, and built it for the 2022 election. Now let's make sure we actually use it. l9iytpiisix0mqqfvhkv

November 5th 2020

8 Retweets27 Likes


Below is a visual illustrating a possible blockchain architecture for a robust voting application.

Market Update (Monday 9:30 AM ET)

Percent Change (Rounded) Based on Last Monday Open (9:30 AM ET)

Bitcoin- $15,282 (+12%)

Ether- $446 (+20%)

Gold- $1,867 (-2%)

DJI Average- 29,468 (+12%)

NYSE Composite Index- 13,726 (+12%)

NASDAQ Composite Index- 11,870 (+8%)

S&P500 Index- 3,583 (+7%)


New Developments

  1. Lightning Pool Is Open for Business: Lease Liquidity, Earn Returns, Stack Sats

  2. USDC Circulating Supply Approaching $3B, Glassnode

  3. JPMorgan’s Blockchain Lead Is Now in Charge of Ethereum Based Interbank Information, CoinDesk

  4. Access High Yield Digital Dollar Stablecoin Accounts, Circle

  5. Eth2Deposit Subgraph, The Graph

  6. Arbitrum ports Uniswap to Layer 2 Using Rollup, Arbitrum

  7. Introducing 1inch v2, 1inch

  8. Easily Sell Your APIs and Data to Any Blockchain via Chainlink, Chainlink Blog

  9. Verizon To Log Press Releases on Mad Network (Ethereum sidechain), Verizon

  10. ETH2 Deposit Contract Is Live, Ethereum Foundation

    VitalikButerin.jpgvitalik.eth @VitalikButerin ETH2 deposit contract released: quick update no. 19Contract deployment Genesis deposits Bootstrap consensus tl;dr v1.0 specs released 🚀 v1.0 spec release Today, we released v1.0 of the eth2 specs, including the mainnet deposit contract address – 0x00000000219ab540356cBB839Cbe05303d7705Fa. eth2 will have a MIN_GENESIS_TIME of 1606824000 (or for thos…

    November 4th 2020

    2,031 Retweets6,542 Likes

Industry Insights

Dev Talk

  1. UMA Announces Developer Mining, Clayton Roche

  2. Ethereum Community Member Builds Website Using AP Data Tracking Election

  3. How to Get Random Numbers in an NFT (ERC721), Chainlink

  4. Multisig Bug in BSV Exploited, Funds Stolen

    SomsenRuben.jpgRuben Somsen 🚵‍♀️🚵‍♂️🚵🚳 @SomsenRuben Multisig bug in BSV exploited, funds stolen🍿 BSV ripped out the existing multisig (p2sh) and replaced it with a threshold script that was SUPPOSED to accept X sigs or more, but instead accepted X or LESS (including zero)🤦‍♂️ Full thread by Maxwell (nullc)… - AND ITS GONE: Popular BSV multisig provides no security at all and eventually the coins all go poof.79 votes and 42 comments so far on

    November 8th 2020

    82 Retweets379 Likes

dApp Activity

*Use Proton Wallet & Proton Chain to swap Ethereum tokens to Proton Chain tokens.

-Download TestFlight App from Apple Store

-Use FxEvUtHs Code to Install Proton Wallet

-Set Up Proton @ Name, Save Keys

-With Metamask Installed on Desktop, Visit

-Link Proton Wallet Using QR Code at

-Connect Metamask to

-Swap Coin From Ethereum to Proton Chain


Dev Activity

Analyze Roman Storm’s Multisender App:
*Tools: Metamask (Wallet), Remix IDE (Development Environment), Solidity (Smart Contract Language) Ethereum (Blockchain), Etherscan Block Explorer

# set pragma

pragma solidity 0.4.20;

# storage contract

contract EternalStorage {

    mapping(bytes32 => uint256) internal uintStorage;
    mapping(bytes32 => string) internal stringStorage;
    mapping(bytes32 => address) internal addressStorage;
    mapping(bytes32 => bytes) internal bytesStorage;
    mapping(bytes32 => bool) internal boolStorage;
    mapping(bytes32 => int256) internal intStorage;


# contract (Source)

contract UpgradeabilityOwnerStorage {
    address private _upgradeabilityOwner;

    function upgradeabilityOwner() public view returns (address) {
        return _upgradeabilityOwner;

    function setUpgradeabilityOwner(address newUpgradeabilityOwner) internal {
        _upgradeabilityOwner = newUpgradeabilityOwner;


contract Proxy {

    function () public payable {
        address _impl = implementation();
        require(_impl != address(0));
        bytes memory data =;

        assembly {
            let result := delegatecall(gas, _impl, add(data, 0x20), mload(data), 0, 0)
            let size := returndatasize

            let ptr := mload(0x40)
            returndatacopy(ptr, 0, size)

            switch result
            case 0 { revert(ptr, size) }
            default { return(ptr, size) }

    function implementation() public view returns (address);

contract UpgradeabilityStorage {
    string internal _version;

    address internal _implementation;

    function version() public view returns (string) {
        return _version;

    function implementation() public view returns (address) {
        return _implementation;

contract UpgradeabilityProxy is Proxy, UpgradeabilityStorage {

    event Upgraded(string version, address indexed implementation);

    function _upgradeTo(string version, address implementation) internal {
        require(_implementation != implementation);
        _version = version;
        _implementation = implementation;
        Upgraded(version, implementation);

contract OwnedUpgradeabilityProxy is UpgradeabilityOwnerStorage, UpgradeabilityProxy {

    event ProxyOwnershipTransferred(address previousOwner, address newOwner);

    function OwnedUpgradeabilityProxy(address _owner) public {

    modifier onlyProxyOwner() {
        require(msg.sender == proxyOwner());

    function proxyOwner() public view returns (address) {
        return upgradeabilityOwner();

    function transferProxyOwnership(address newOwner) public onlyProxyOwner {
        require(newOwner != address(0));
        ProxyOwnershipTransferred(proxyOwner(), newOwner);

    function upgradeTo(string version, address implementation) public onlyProxyOwner {
        _upgradeTo(version, implementation);

    function upgradeToAndCall(string version, address implementation, bytes data) payable public onlyProxyOwner {
        upgradeTo(version, implementation);

contract EternalStorageProxyForStormMultisender is OwnedUpgradeabilityProxy, EternalStorage {

    function EternalStorageProxyForStormMultisender(address _owner) public OwnedUpgradeabilityProxy(_owner) {}


Earn Opportunity

Take a chance to win real cash prizes by downloading Cash Clash on your iOS or Android device. Cash Clash offers several fun games spanning from solitaire to blackjack to bingo. By using the referral code, K6Q3MI, and depositing at least $5 you will get an additional $5 from the app! The app is powered by CelerX a layer 2 Ethereum scaling solution project. Since CelerX is also a blockchain company they have enabled crypto deposits to play with as well.

How do you rate this article?




Goal is simple. Speed up mass adoption!

Everything Crypto
Everything Crypto

In this blog I cover major public blockchain developments, cryptocurrency shifting from speculation to utility, and personal opinions as to how the space will develop going forward.

Send a $0.01 microtip in crypto to the author, and earn yourself as you read!

20% to author / 80% to me.
We pay the tips from our rewards pool.