Entwicklung eines Stromtarifes, welchen reale Stromkunden buchen können.
npm install -g fury.network npm install -g stromdao-bo-mpo
npm remove -g fury.network npm remove -g stromdao-bo-mpo
Wir wollen mit Hilfe der Kommandozeile einen Zählerwert in der Blockchain speichern und diesen im Anschluss per Webbrowser abrufen.
$ stromdao-mp store ZAEHLER1337 1234 TX: 0x67ba79a720202a4b0315fa9c1bc5847a2d18d9e7d664a6b9c50e0501b0108c7e
Für den Zähler mit der Kennung ZAEHLER1337 wurde der Zählerstand 1234 in der Transaktion 0x67ba... geschrieben.
Abrufen eines Zählerwertes Fury.Network (IPFS)
Adresse des Zählers:
$ stromdao-mp account ZAEHLER1337 MPID ZAEHLER1337 Address 0x4c01e6a3649cDEB08029D14bcdeB39366f9317F3 ...
Schnelles Testen und verproben von Anwender Interaktionen.
Anlegen eines lokalen Showcases
$ fury init aufgabe2 $ fury run aufgabe2
Es wird ein Unterverzeichnis angelegt mit dem Namen aufgabe2. Darin ist eine base.html und eine base.js.
Das Business Objekt wird mit node angesteuert. Es ist bereits initialisiert, so dass jede Instanz eine eigene Adresse und einen eigenen privaten Schlüssel besitzt.
Im Objekt gibt es verschiedene Domains. Hier wird Meter-Point-Reading (mpr) verwendet. Diese Domains entsprechend meist sogenannten Smart-Contracts in der Blockchain.
In diesem Aufruf entspricht readings einem Methodenaufruf im Smart Contract.
$ stromdao-mp store --auto 69256 ZAEHLER1337 1234
Datei settlement_out.js anlegen mit dem Inhalt:
console.log(settlement);
Speichern und im Anschluss
$ stromdao-mp store -f settlement_out.js --de 69256 ZAEHLER1337 1234
Datei settlement_simple.js anlegen mit dem Inhalt:
global.promise = new Promise(function(resolve2, reject2) { node.stromkontoproxy("0x19BF166624F485f191d82900a5B7bc22Be569895").then(function(sko) { sko.addTx(node.wallet.address,node.nodeWallet.address,settlement.cost,settlement.base).then(function(tx) { resolve2(tx); }); }); });
Speichern und im Anschluss
$ stromdao-mp store -f settlement_simple.js --de 69256 ZAEHLER1337 1240
Aufteilung der Kosten auf 3 Konten
var konto1="0x6fCb57AC03CdfA7E26bc6117ceCa83b1516Af2f7";
var konto2="0x94013490Cc86ada8D9154B085D791176F676283C";
var konto3="0x6692BC4915Ba6f07bB309481d2198C5C25e3Fcce";
settlement.cost=Math.round(settlement.cost/3)
global.promise = new Promise(function(resolve2, reject2) {
node.stromkontoproxy("0x19BF166624F485f191d82900a5B7bc22Be569895").then(function(sko) {
sko.addTx(konto1,node.nodeWallet.address,settlement.cost,settlement.base).then(function(tx) {
sko.addTx(konto2,node.nodeWallet.address,settlement.cost,settlement.base).then(function(tx) {
sko.addTx(konto3,node.nodeWallet.address,settlement.cost,settlement.base).then(function(tx) {
resolve2(tx);
});
});
});
});
});
1% geht an Vertriebspartner
var vpkonto="0x6fCb57AC03CdfA7E26bc6117ceCa83b1516Af2f7";
settlement.cost=Math.round(settlement.cost/3)
global.promise = new Promise(function(resolve2, reject2) {
node.stromkontoproxy("0x19BF166624F485f191d82900a5B7bc22Be569895").then(function(sko) {
sko.addTx(node.wallet.address,node.nodeWallet.address,settlement.cost,settlement.base).then(function(tx) {
sko.addTx(node.nodeWallet.address,vpkonto,Math.round(settlement.cost*0.01),settlement.base).then(function(tx) {
resolve2(tx);
});
});
});
});
1% der Energiekosten gehen an Vertriepspartner
var vpkonto="0x6fCb57AC03CdfA7E26bc6117ceCa83b1516Af2f7";
settlement.cost=Math.round(settlement.cost/3)
global.promise = new Promise(function(resolve2, reject2) {
node.stromkontoproxy("0x19BF166624F485f191d82900a5B7bc22Be569895").then(function(sko) {
sko.addTx(node.wallet.address,node.nodeWallet.address,settlement.cost,settlement.base).then(function(tx) {
sko.addTx(node.nodeWallet.address,vpkonto,Math.round(settlement.UpGross*0.01),settlement.base).then(function(tx) {
resolve2(tx);
});
});
});
});
6,880 ct/kWh werden auf EEG Konto transferiert
var eegkonto="0x6fCb57AC03CdfA7E26bc6117ceCa83b1516Af2f7";
settlement.cost=Math.round(settlement.cost/3)
global.promise = new Promise(function(resolve2, reject2) {
node.stromkontoproxy("0x19BF166624F485f191d82900a5B7bc22Be569895").then(function(sko) {
sko.addTx(node.wallet.address,node.nodeWallet.address,settlement.cost,settlement.base).then(function(tx) {
sko.addTx(node.nodeWallet.address,eegkonto,Math.round(settlement.base*6880),settlement.base).then(function(tx) {
resolve2(tx);
});
});
});
});
Thorsten Zoerner
Tel: +49 (0) 30 12084890
[email protected]