Successfully reported this slideshow.

PowerChain - Blockchain 4 Energy

1,328 views

Published on

Building Blocks to establish a Distributed Grid with a light weight P2P energy market.

Follow community at: http://ossn.stromhaltig.de/

Published in: Engineering
  • Be the first to comment

PowerChain - Blockchain 4 Energy

  1. 1. 1 POWERCHAIN Building Blocks to establish a Distributed Grid with a light weight P2P energy market.
  2. 2. 2 POWERCHAIN Collection of Smart Contracts implemented for Ethereum Blockchain…
  3. 3. 3 Node Termination Meter Metering Power Delivery POWERCHAIN … working together to build a common consense based power grid and market.
  4. 4. 4 POWERCHAIN Content 1. Building Blocks 2. Use Cases 3. Best Practice
  5. 5. 5 Node Meter Metering Power Delivery POWERCHAIN Termination
  6. 6. 6 Node Meter Metering Power Delivery POWERCHAIN Standarized Representation of a power transmission from a Producer [Node] to a Consumer [Node].  Time Frame of Delivery (Start/End)  Power (Total Wh, Min W, Peak W)  Termination check  Value (Money) Termination
  7. 7. 7 Node Meter Metering Power Delivery POWERCHAIN Contract for Grid-End-Point operation owned by DSO  Manages approved Meter Operators [Metering]  Manages a list of Producer/Consumers [Node]  Manages a list of peers to other Grids [Termination] Termination
  8. 8. 8 Node Termination Meter Metering Power Delivery POWERCHAIN Legal, Managed Entity connected to a grid as End-Point  Is able to sell or buy power [PowerDelivery]  Has a connection to the grid [Termination]  Has a approved Meter [Meter/Metreing]
  9. 9. 9 POWERCHAIN #USECASES (Basics)
  10. 10. 10 POWERCHAIN UC1: Setup Grid The smallest possible grid is a Termination with an approved Metering … metering = instanceByName('Metering'); termination = instanceByName('Termination'); termination.addMetering(metering.address);
  11. 11. 11 POWERCHAIN UC2: Adding a Producer and a Consumer Node In order to exchange power two Nodes are required. For the moment both connect to the same Termination which accepts only one Metering. params =[metering.address]; nodes.A = instanceByName('Node',params); nodes.B = instanceByName('Node',params); Metering assigns two new Meters to those Nodes and adds to Termination. meters.A= instanceByName('Meter', [0,true]); // Initial Reading 0 – Does Feed In to the grid (=true) meters.B= instanceByName('Meter', [7,false]); // Initial Reading 7 – Does Feed Out of the grid (=false) metering.addMeter(meters.A.address,nodes.A.address); metering.addMeter(meters.B.address,nodes.B.address); termination.addNode(nodes.A.address); termination.addNode(nodes.B.address); nodes.A.transferTermination(termination.address); nodes.B.transferTermination(termination.address);
  12. 12. 12 POWERCHAIN UC3: Update Meter Readings Metering provides an oracle by updating periodically readings of Meters. As consequence of updateReading() all active PowerDelivery contracts of the affected Node get balanced to the current reading. metering.updateReading(meters.A.address,new Date().getTime(),123); // Sets Current reading of Meter A to 123 metering.updateReading(meters.B.address,new Date().getTime(),456); // Sets Current reading of Meter B to 456 updateReading() processPowerDelivery() updateReading() balance • Last Reading • Power Debit • Power Credit
  13. 13. 13 POWERCHAIN UC3: Update Meter Readings (cont…) updateReading() • Last Reading • Power Debit • Power Credit Last Reading Actual readig of Meter Power Credit Power units (Wh) measured and covered by power delivery contracts Power Debit Power units (Wh) measured but not covered by power delivery contracts Condition: (Last Reading – Initial Reading*) = Power Credit + Power Debit *) Initial Reading is reading of Meter as given in new Meter tx: instanceByName('Meter', [7,true]); // Initial Reading=7
  14. 14. 14 POWERCHAIN UC4: Creating a Power Product In order to trade on a market a product needs to be available having a common specification of the asset. PowerDelivery contracts hold a common specification for a „power product“. As every Node needs to follow this standard it could be traded/exchanged. node.createOffer( bool _is_feedin, // Perspective of Node (Is Feed-In or Feed-Out) uint256 _time_start, // Start of Delivery uint256 _time_end, // End of Delivery uint256 _total_power, // Total Power in Watt-Hours uint256 _peak_load, // Max-Load in Watt uint256 _min_load, // Min-Load in Watt uint256 _bid // Bid of creating Node (Monetary Value) ); node.createOffer() New ProductDelivery()
  15. 15. 15 POWERCHAIN UC5: Signing a Power Delivery (Contract) A power delivery contract could be signed by any other Node. During signature process it is checked if Termination (physical connection) is possible. node.signSellFeedIn(PowerDelivery.address,_bid); // _bid = counter offer needs to be better or equal … node.signBuyFeedOut(PowerDelivery.address,_bid); // _bid = counter offer needs to be better or equal PowerDelivery contract accepts changes of counter bid until starting time of delivery.
  16. 16. 16 POWERCHAIN #BESTPRACTICE
  17. 17. 17 POWERCHAIN #Blockchain - Consense In general a Blockchain holds an „universe of common truth“ = Consense Node Termination Meter Metering Power Delivery Shared Truth
  18. 18. 18 POWERCHAIN #Blockchain - Visibility • All transactional data is public within its chain • Mining provides confirmations of transactions Meter Power Delivery Meter Producer Contract Consumer If all transactions get confirmed, we do not need to identify „Producer“ or „Consumer“ to ensure consense. “On the blockchain, nobody knows you're a fridge”
  19. 19. 19 POWERCHAIN #Blockchain - Transactionalization • Storing data in a blockchain is expensive • Each transaction costs a fee (or gas) Meter Power Delivery Contract Consumer Provides sub-second readings Might be one single transaction Metering Provided oracalized data as required
  20. 20. 20 POWERCHAIN #Blockchain - In/Off Chain • Transactional Data is required in chain • Operational Data is required off chain Power Delivery Metering Provided oracalized data as required (In Chain) Termination Operational Data on Request (Off Chain)
  21. 21. 21 POWERCHAIN #Blockchain - Off Chain • Offchain transactions like data exchange can still be part of a single shared truth • EDIchain is a framework to exchange EDI messages via a Blockchain MeteringTermination EDI Message CONTRL/APERAK Metadata Business Content (EDI Document) HASH On Chain (Frontend) Off Chain (Backend)
  22. 22. POWERCHAIN #Smart Contract • Simple rule based transaction trigger. • Or: Changing the state of a machine (blockchain) based on conditions. Power Delivery If all prerequisites are met… feed_in=Node(msg.sender); … sending Node becomes Producer
  23. 23. POWERCHAIN #Smart Contract • The code is the rule • Once published the rules can not be changed. Termination The test() function is called as soon as a Node wants to sign a PowerDelivery. For the owner of a Termination it might be good to keep record of all tests… tests.push(_delivery); … as this would change a value this function „call“ becomes a transaction (=requires Gas).
  24. 24. POWERCHAIN #Smart Contract • Use „Events“ for monitoring instead of transactions tests.push(_delivery); contract Termination { … event TestTermination(address _sender,address _target); … function test(Node _delivery,Termination callstack) returns (bool) { TestTermination(msg.sender,_delivery); … }
  25. 25. POWERCHAIN #Smart Contract • The code is the rule • Once published the rules can not be changed. Termination v1 As v1 is available within the blockchain „forever“ there needs to be a sunset function right from start Termination v2
  26. 26. POWERCHAIN #Node (Blockchain) • Never trust a Node … trust transactions. meters.A= instanceByName('Meter', [0,true]); Everyone could create a Meter But it requires a Metering to add it. metering.addMeter(meters.A.address,nodes.A.address); Contract Metering { function addMeter(Meter meter,Node _node) { if(msg.sender!=owner) throw; … } } Everyone could create a Metering But it requires a Termination to accept it. Everyone could create a PowerDelivery But if there is no Termination (peering) between both parties it will not be possible to sign.
  27. 27. 27 POWERCHAIN Hackaton: https://hack.ether.camp/#/idea/let- ethereums-blockchain-become-the- backbone-for-energy-markets GitHub: https://github.com/zoernert/powerchain Community: http://ossn.stromhaltig.de/

×