At Grid+ we are working to make energy markets more efficient for the end user. We plan to do this by cutting out the administrative costs associated with running an energy retailer and, further down the line, by allowing efficient energy arbitrage at the consumer level. Although ours is a specific application, the efficiency comes more generally from something we call “user agency”.
What do we mean by “user agency”? If you’ve ever used Ethereum directly, you have benefitted from user agency. When you send a transaction on the Ethereum network, some process (moving money) has been made more efficient and secure by pushing agency and security to the edges (i.e. you).
In the legacy world, a bank or payment processor would need to spend money and resources on administration, compliance, risk assessment, etc. In this new paradigm, you hold your own funds and simply sign a message with your private key to move those funds. There are no administration costs because no central party bears the escrow responsibility of your money. The transmission fees may also be very low, depending on which network you are using. The system as a whole cannot be compromised because there is no central point of failure to protect.
The average reader of this article will be unsurprised by the information above because she will be familiar with public blockchain networks. Make no mistake, this is a profound system efficiency.
Agency in Machines
Although many industries may benefit from private Ethereum networks in the short/medium term, this probably cannot be said for internet connected devices. Internet of things (IoT) devices are independent agents and the public Ethereum network is the ultimate way for them to connect.
I have spoken before about my thesis that machines, not humans, will make up the primary user base of Ethereum. I believe this for two reasons:
- IoT devices will likely be numbered in multiples of the world’s human population within a decade.
- Machines can automatically sign transactions as part of some subroutine, whereas a human must load an interface and push a button. While no one would suggest that pushing a button is especially taxing, it does require a break in concentration during some other task.
I believe IoT based applications will benefit tremendously from the public Ethereum network. However, many other business processes can also benefit by pushing agency to the edges. I don’t think we yet comprehend how much efficiency will be unlocked from existing, well established industries, such as Energy.
User agency in Grid+
Once we set up our retail electricity provider, or utility, we could create a custom payment system that integrates with the traditional financial infrastructure, debits accounts, and then bills at the end of the month. We could dress this up with a nice UI and we might even be able to sign up a decent number of customers, but we wouldn’t be introducing any fundamental efficiencies into the system. If we use a legacy model, we still must deal with traditional payments processors (trust me, this is expensive) and incur the risk of bad debts. This would mean high marginal and administrative costs.
In Grid+, customers will make a refundable initial deposit and then prepay each month — all fiat payments will be converted to USDX tokens, where 1 USDX=1USD. These tokens are ERC20 compliant and 100% backed by US dollars. Every few hours, we will request payment from a user’s agent commensurate with the amount of energy used.
If the customer exceeds her monthly allowance (or her agent simply doesn’t pay), the customer will be notified and we will start deducting from her initial account deposit. If the deposit drops to a certain threshold, the customer will receive notice that her electricity will be turned off in 3–15 days (depending on the state). If more tokens are deposited or sent via the customer’s agent, the shutoff notice will be voided and normal billing will resume automatically. Note that we reserve some portion of the deposit to cover payments during the shut-off notice period when the customer is in arrears.
We will also allow customers to fund their accounts and pay with ether (and perhaps other widely-used ERC20 tokens) — in this scenario, the USD spot rate is referenced when settling payments each billing period.
In this system there is minimal human administration and minimal credit risk. Why? Because the customer holds funds (except the deposit) at all times and simply pays us some small amount of money every few hours. In so doing, we circumvent payment processors and give our users agency. And of course the human user will not be pushing a button every few hours to sign over 50 cents — her agent will be doing that. That agent is an IoT device that can automatically sign messages all day long.
The Grid+ Agent
Pushing user agency to the edges requires users to have full ownership over their funds. This means users themselves must generate key pairs (cryptographic identifiers) that remain secret from all other parties, including us.
Our system architecture is shown below. A customer purchases an agent (a small device capable of making signatures) and claims that device based on a serial number printed on the box.
Before shipping the agent, we whitelist its serial number on our registry contract (which only we can do — this prevents phantom devices spoofing data). We then map that serial number to an Ethereum address, which is a function of its public key — a key that we have generated. See the problem? In order to benefit from the concept of user agency, it is imperative that we not know our customers’ private keys. Fortunately, the solution is simple — we use two keys.
Two keys and a serial number
Our registration process can be largely summarized by the following two mappings in our registry contract:
mapping (bytes32 => address) registry; mapping (bytes32 => address) owners;
The first line maps a hash of the agent’s serial number to a setup address. For each device, Grid+ assigns a serial number, creates a setup key on device, and seeds that setup key with a small amount of ether. We then call the contract to create this first mapping.
Once the device is booted up for the first time, it automatically creates its own wallet address and subsequently calls a different contract function with its setup key to remap its serial number to the new wallet address.
The second mapping associates the device’s serial number to its owner address. This address belongs to the human owner who enters the serial number printed on the device into our web console. At this point the agent is fully registered.
But one problem remains — users still need to trust our software to be tamper-resistant. If a customer’s device gets hacked, there goes any notion of user agency. This is relatively easy to overcome with a multi-signature wallet (shown in the diagram above by “MS” labels). In Grid+, customers will have the option to deposit larger amounts of money to a “vault” wallet, which requires two out of three signatures to move.
This means the user is always in control of her funds (MS2+MS3), even if the agent breaks or gets stolen (MS1+MS2). It also allows automated, periodic movements from the “vault” to the agent for electricity payments (MS1+MS3). Large amounts of money may be deposited, but still kept off the agent’s hot wallet. Of course, this requires extra transaction fees, so we will leave the option up to the user. A casual user who pays $75/month for electricity may be fine with depositing it straight to the agent, whereas a customer wishing to deposit 6 months’ worth up front would probably wish to store those funds in the vault wallet and have them moved to her agent’s hot wallet periodically.
New Business Models
Energy is just the beginning. We expect many industries to move to models with user agency because it will have a profound effect on administrative costs. Expect big changes and watch the IoT sector in particular as Ethereum eats the world. We’re bringing Ethereum adoption to energy markets and encourage other innovators to disrupt their industries with user agency.
Visited 2220 times, 3 Visits today