示例五:社區能源共享
功能描述
本 合約 以紐約實驗性的能源微電網為例,作為一個簡單的案例進行實現。
“在總統大道的一邊,五戶家庭通過太陽能板發電;在街道的另一邊的五戶家庭可以購買對面家庭不需要的電力。而連接這項交易的就是區塊鏈網絡,幾乎不需要人員參與就可以管理記錄交易。”但是這個想法是非常有潛力的,能夠代表未來社區管理能源系統。”
布魯克林微電網開發商 LO3 創始人 Lawrence Orsini 說:
“我們正在這條街道上建立一個可再生電力市場,來測試人們對於購買彼此手中的電力是否感興趣。如果你在很遠的地方生產能源,運輸途中會有很多損耗,你也得不到這電力價值。但是如果你就在街對面,你就能高效的利用能源。”
在某一塊區域內存在一個能源微電網,每一戶家庭可能為生產者也可能為消費者。部分家庭擁有太陽能電池板,太陽能電池板的剩餘電量為可以售出的電力的值,為了簡化,單位為1.需要電力的家庭可以向有足夠餘額的電力的家庭購買電力。
賬戶私鑰應該由安裝在本地的客戶端生成,本例中為了簡便,使用模擬私鑰和公鑰。每位用戶的私鑰為guid+“1”,公鑰為guid+“2”。簽名方式簡化為私鑰+"1"
數據結構設計
在該智能合約中暫時只有一種角色,為每一戶家庭用戶。
家庭用戶
賬戶地址
剩餘能量 //部分家庭沒有太陽能電池板,值為0
賬戶餘額(電子貨幣)
編號
狀態 //0:不可購買, 1:可以購買
賬戶公鑰
賬戶私鑰
交易(一筆交易必須同時具有賣方和買方的公鑰簽名,方能承認這筆交易。公鑰簽名生成規則,公鑰+待創建交易的ID號,在本交易類型中,只要買家有足夠的貨幣,賣家自動會對交易進行簽名)
購買方地址
銷售方地址
電量銷售量
電量交易金額
編號
交易時間
function及各自實現的功能
init
初始化操作invoke
調用合約內部的函數query
查詢相關的信息createUser
創建新用戶,並加入到能源微網中 invokebuyByAddress
向某一位用戶購買一定量的電力 invokegetTransactionById
通過id獲取交易內容 querygetTransactions
獲取交易(如果交易數大於10,獲取前10個) querygetHomes
獲取用戶(如果用戶數大於10,獲取前10個) querygetHomeByAddress
通過地址獲取用戶 querychangeStatus
某一位用戶修改自身的狀態 invokewriteUser
將新用戶寫入到鍵值對中writeTransaction
記錄交易接口設計
createUser
request參數:
response參數:
buyByAddress
request參數:
response參數:
getTransactionById
request參數:
response參數:
getTransactions
request參數:
response參數:
getHomeByAddress
request參數
response參數
getHomes
response參數
changeStatus
request參數:
response參數:
測試
Last updated
Was this helpful?