autostrom-client
Version:
STROMDAO Autostrom ist ein Stromprodukt, welches netzdienlichen Aufladen mit einer Prämie belohnt.
1,470 lines (1,305 loc) • 2.8 MB
JavaScript
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
/*
* StromDAO Business Object: Stromkonto
* =========================================
* Stable Balance handling for StromDAO Energy Blockchain.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
* */
this.assetsliabilities = function(obj_or_address) {
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol:StromkontoProxy');
instance.addTx=function(address_from,address_to,uint256_value,uint256_base) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.addTx(address_from,address_to,uint256_value,uint256_base).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
instance.modifySender=function(address_account,bool_allow) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.modifySender(address_account,bool_allow).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
instance.balancesSoll=function(address_acount) {
var p2 = new Promise(function(resolve2, reject2) {
//console.log(instance.obj);
instance.obj.balanceSoll(address_acount).then(function(o) {
resolve2(o[0].toString()*1);
});
});
return p2;
};
instance.allowedSenders=function(address_acount) {
var p2 = new Promise(function(resolve2, reject2) {
//console.log(instance.obj);
instance.obj.allowedSenders(address_acount).then(function(o) {
resolve2(o);
});
});
return p2;
};
instance.setReceiptAsset=function(address_receipt) {
var p2 = new Promise(function(resolve2, reject2) {
//console.log(instance.obj);
instance.obj.setReceiptAsset(address_receipt).then(function(o) {
resolve2(o);
});
});
return p2;
};
instance.setReceiptLiablity=function(address_receipt) {
var p2 = new Promise(function(resolve2, reject2) {
//console.log(instance.obj);
instance.obj.setReceiptLiablity(address_receipt).then(function(o) {
resolve2(o);
});
});
return p2;
};
instance.owner=function() {
var p2 = new Promise(function(resolve2, reject2) {
//console.log(instance.obj);
instance.obj.owner().then(function(o) {
resolve2(o);
});
});
return p2;
};
instance.balancesHaben=function(address_acount) {
var p2 = new Promise(function(resolve2, reject2) {
//console.log(instance.obj);
instance.obj.balanceHaben(address_acount).then(function(o) {
resolve2(o[0].toString()*1);
});
});
return p2;
};
instance.balancesCachedSoll=function(address_acount) {
var p2 = new Promise(function(resolve2, reject2) {
//console.log(instance.obj);
var stored = parent.storage.getItemSync(obj_or_address+"_"+address_acount+"_soll");
if((typeof stored == "undefined")||(stored==null)) {
instance.obj.balanceSoll(address_acount).then(function(o) {
parent.storage.setItemSync(obj_or_address+"_"+address_acount+"_soll",o[0].toString()*1);
resolve2(o[0].toString()*1);
});
} else {
resolve2(stored);
}
});
return p2;
};
instance.balancesCachedHaben=function(address_acount) {
var p2 = new Promise(function(resolve2, reject2) {
//console.log(instance.obj);
var stored = parent.storage.getItemSync(obj_or_address+"_"+address_acount+"_haben");
if((typeof stored == "undefined")||(stored==null)) {
instance.obj.balanceHaben(address_acount).then(function(o) {
parent.storage.setItemSync(obj_or_address+"_"+address_acount+"_haben",o[0].toString()*1);
resolve2(o[0].toString()*1);
});
} else {
resolve2(stored);
}
});
return p2;
};
instance.sumBase=function() {
var p2 = new Promise(function(resolve2, reject2) {
//console.log(instance.obj);
instance.obj.sumBase().then(function(o) {
resolve2(o[0].toString()*1);
});
});
return p2;
};
instance.sumTx=function() {
var p2 = new Promise(function(resolve2, reject2) {
//console.log(instance.obj);
instance.obj.sumTx().then(function(o) {
resolve2(o[0].toString()*1);
});
});
return p2;
};
resolve(instance);
});
return p1;
};
},{}],2:[function(require,module,exports){
/**
* StromDAO Business Object: DirectConnectionFactory
* =========================================
* Factory Contract to build direct connections handling for StromDAO Energy Blockchain.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
* */
this.factory = function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_AssetsLiabilitiesFactory"];
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_AssetsLiabilitiesFactory');
instance.test = {};
/**
* Stores a reading to this contract instance. Requires sender to be approved Meter-Point
* @see approveMP()
*/
instance.build= function(address_account) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.onbuilt=function(cb) {
resolve2(cb);
};
instance.obj.build(address_account,{value:"0x0",gasPrice:"0x0"}).then(function(o) {
});
});
return p2;
};
resolve(instance);
});
return p1;
};
},{}],3:[function(require,module,exports){
/**
* StromDAO Business Object: DirectBLG
* =========================================
* Directly charge for Energy delivery to an account within StromDAO Energy Blockchain.
*
* DirectCharging gets used together with DirectConnections.
*
* In theory account A and account B are exchanging energy metered by meter_point C
*
* DirectCharging takes several DirectConnections and runs charging as soon as method chargeAll is called.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
*
*/
var request = require('request');
this.blg=function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DirectBalancingGroup"];
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DirectBalancingGroup');
parent._saveLabel('BLG',obj_or_address);
instance.addFeedIn=function(account,meter_point,cost_per_energy,cost_per_day) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.addFeedIn(account,meter_point,cost_per_energy,cost_per_day).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
instance.addFeedOut=function(account,meter_point,cost_per_energy,cost_per_day) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.addFeedOut(account,meter_point,cost_per_energy,cost_per_day).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
instance.setFixedEnergyCost=function(cost_per_energy) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.setFixedEnergyCost(cost_per_energy).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
instance.charge=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.charge({gasLimit:5120000,gasPrice:0}).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
instance.emptyConnections=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.emptyConnections().then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
instance.stromkontoDelta=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.stromkontoDelta().then(function(o) {
parent._saveLabel('BAL',o[0]);
resolve2(o[0]);
});
});
return p2;
}
instance.feedIn=function(idx) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.feedIn(idx).then(function(o) {
parent._saveLabel('CON',o[0]);
resolve2(o[0]);
});
});
return p2;
}
instance.feedOut=function(idx) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.feedOut(idx).then(function(o) {
parent._saveLabel('CON',o[0]);
resolve2(o[0]);
});
});
return p2;
}
instance.stromkontoIn=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.stromkontoIn().then(function(o) {
parent._saveLabel('BAL',o[0]);
resolve2(o[0]);
});
});
return p2;
}
instance.stromkontoOut=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.stromkontoOut().then(function(o) {
parent._saveLabel('BAL',o[0]);
resolve2(o[0]);
});
});
return p2;
}
//cnt_feedin
instance.cnt_feedin=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.cnt_feedin().then(function(o) {
resolve2(o[0]*1);
});
});
return p2;
}
instance.cnt_feedout=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.cnt_feedout().then(function(o) {
resolve2(o[0]*1);
});
});
return p2;
}
instance.balancesheets=function(idx) {
var p2 = new Promise(function(resolve2, reject2) {
// Save as it is unmutbale
var stored = parent.storage.getItemSync(obj_or_address+"_"+idx);
if((typeof stored == "undefined")||(stored==null)) {
instance.obj.balancesheets(idx).then(function(o) {
o.idx=idx;
parent._saveLabel('BAL',o.balanceIn);
parent._saveLabel('BAL',o.balanceOut);
parent.storage.setItemSync(obj_or_address+"_"+idx,JSON.stringify(o));
resolve2(o);
});
} else {
var o = JSON.parse(stored);
o.blockNumber=parent._utils.bigNumberify("0x"+o.blockNumber._bn);
resolve2(o);
}
});
return p2;
}
instance.setCostPerEnergy=function(connection,cost_per_energy) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.setCostPerEnergy(connection,cost_per_energy).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
}
instance.setAccountInfo=function(account,data_obj) {
var p2 = new Promise(function(resolve2, reject2) {
request.post("http://l2.stromdao.de:8001/put", {form:data_obj}).on('data', function(data) {
var multihash=data.toString();
parent.stringstoragefactory().then( function(ssf) {
ssf.build(multihash).then(function(adr) {
console.log("Adr",adr,"Multihash",multihash,"Account",account);
instance.obj.setAccountInfo(account,adr).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
});
});
});
return p2;
}
instance.accountInfo=function(account) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.accountInfo(account).then(function(o) {
parent.stringstorage(o[0]).then(function(ss) {
ss.str().then(function(multihash) {
request.post("http://l2.stromdao.de:8001/get",{form:{key:multihash}}).on('data', function(d) {
string = d.toString();
resolve2(string);
});;
});
});
});
});
return p2;
}
instance.setCostPerDay=function(connection,cost_per_day) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.setCostPerDay(connection,cost_per_day).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
}
instance.balancesheets_cnt=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.balancesheets_cnt().then(function(o) {
resolve2(o[0]);
});
});
return p2;
}
resolve(instance);
});
return p1;
};
},{"request":265}],4:[function(require,module,exports){
/*
* StromDAO Business Object: Billing
* =========================================
* Consensus handling of power/electricity billing in StromDAO Energy Blockchain.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
*
*/
this.billing=function(obj_or_address) {
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol:Billing');
instance.becomeTo=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.becomeTo().then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
resolve(instance);
});
return p1;
};
},{}],5:[function(require,module,exports){
/**
* StromDAO Business Object: DirectConnectionFactory
* =========================================
* Factory Contract to build direct connections handling for StromDAO Energy Blockchain.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
* */
this.cutoken = function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_CUToken"];
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_CUToken');
instance.test = {};
instance.totalSupply=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.totalSupply().then(function(o) {
resolve2(o[0].toString()*1);
});
});
return p2;
};
instance.owner=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.owner().then(function(o) {
resolve2(o[0].toString());
});
});
return p2;
};
instance.balanceOf=function(address_account) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.balanceOf( parent._resolveName(address_account)).then(function(o) {
resolve2(o[0].toString()*1);
});
});
return p2;
};
/**
* Stores a reading to this contract instance. Requires sender to be approved Meter-Point
* @see approveMP()
*/
instance.issue= function() {
var p2 = new Promise(function(resolve2, reject2) {
var bdx="";
instance.obj.issue({value:"0x0",gasPrice:"0x0",gasLimit:3903918}).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
instance.addMeterpoint= function(address_meterpoint) {
var p2 = new Promise(function(resolve2, reject2) {
var bdx="";
instance.obj.addMeterpoint( parent._resolveName(address_meterpoint),{value:"0x0",gasPrice:"0x0",gasLimit:3903918}).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
resolve(instance);
});
return p1;
};
},{}],6:[function(require,module,exports){
/**
* StromDAO Business Object: MPTokenFactory
* =========================================
* Create a Time/Power Token Contract using factory class for a Meter Point Token.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
* */
this.factory = function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_CUTokenFactory"];
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_CUTokenFactory');
instance.test = {};
/**
* Stores a reading to this contract instance. Requires sender to be approved Meter-Point
* @see approveMP()
*/
instance.build= function(address_reading,address_meterpoint) {
var p2 = new Promise(function(resolve2, reject2) {
var bdx="";
instance.obj.onbuilt=function(cb) {
var p3=new Promise(function(resolve3, reject3) {
parent._waitForTransaction(bdx.hash).then(resolve3(cb));
});
p3.then(function() {
resolve2(cb);
});
};
instance.obj.build(address_reading,address_meterpoint,{value:"0x0",gasPrice:"0x0",gasLimit:3795290}).then(function(o) {
bdx=0;
});
});
return p2;
};
resolve(instance);
});
return p1;
};
},{}],7:[function(require,module,exports){
/**
* StromDAO Business Object: Settlement
* =========================================
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
* */
this.clearing = function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_Clearing"];
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_Clearing');
instance.test = {};
instance.clear= function(cache) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.clear(cache,{value:"0x0",gasPrice:"0x0",gasLimit:4595290}).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
resolve(instance);
});
return p1;
};
},{}],8:[function(require,module,exports){
/**
* StromDAO Business Object: DirectConnectionFactory
* =========================================
* Factory Contract to build direct connections handling for StromDAO Energy Blockchain.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
* */
this.factory = function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_ClearingFactory"];
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_ClearingFactory');
instance.test = {};
/**
* Stores a reading to this contract instance. Requires sender to be approved Meter-Point
* @see approveMP()
*/
instance.build= function(_stromkonto) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.onbuilt=function(cb) {
resolve2(cb);
};
instance.obj.build(_stromkonto,{value:"0x0",gasPrice:"0x0",gasLimit:3795290}).then(function(o) {
});
});
return p2;
};
resolve(instance);
});
return p1;
};
},{}],9:[function(require,module,exports){
/**
* StromDAO Business Object: StringStorage
* =========================================
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
* */
this.coldstorage = function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol:StringStorage"];
var p1 = new Promise(function(resolve, reject) {
var instance={};
instance.setObj=function(bucket,str) {
var p2 = new Promise(function(resolve2, reject2) {
parent.storage.setItemSync("cold_"+bucket,str);
resolve2();
});
return p2;
};
instance.getObj=function(bucket) {
var p2 = new Promise(function(resolve2, reject2) {
var str=parent.storage.getItemSync("cold_"+bucket);
resolve2(str);
});
return p2;
};
resolve(instance);
});
return p1;
};
},{}],10:[function(require,module,exports){
/*
* StromDAO Business Object: DSO
* =========================================
* Distribution Service Operator / logistical handling for StromDAO Energy Blockchain.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
*
*/
this.dso=function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DSO"];
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DSO');
instance.approveConnection=function(address_meterpoint,uint256_powerlimit) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.approveConnection(address_meterpoint,uint256_powerlimit).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
instance.approvedConnections=function(address_meterpoint) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.approvedConnections(address_meterpoint).then(function(o) {
resolve2(o);
});
});
return p2;
}
resolve(instance);
});
return p1;
};
},{}],11:[function(require,module,exports){
this.deployment=function(options) {
if(typeof options.rpc == "undefined") {
if(typeof window != "undefined") {
// options.rpc=location.origin+"/rpc";
options.rpc='https://demo.stromdao.de/rpc';
} else {
options.rpc='https://demo.stromdao.de/rpc';
}
}
return options;
};
this.loadDefaults=function(options) {
if(typeof parent.waitForDefaults == "undefined") {
parent.waitForDefaults = true;
options.rolelookup="0x0000000000000000000000000000000000000006";
options.defaultReading="0x0000000000000000000000000000000000000008";
var contract_type=[];
parent.storage.setItemSync(options.rolelookup+"_1","0x08f5409fdEC245ec8d52042982fb7a05fa8114A2");
parent.storage.setItemSync(options.rolelookup+"_2","0x5FB27050934DAd2Fba68ee22841Eca55dD131f57");
parent.storage.setItemSync(options.rolelookup+"_3","0xe9E343883297f3ED5Dd25Dc31387387cba2a8F1c");
contract_type["StromDAO-BO.sol_MPO"]=parent.storage.getItemSync(options.rolelookup+"_1");
contract_type["StromDAO-BO.sol_DSO"]=parent.storage.getItemSync(options.rolelookup+"_2");
contract_type["StromDAO-BO.sol_Provider"]=parent.storage.getItemSync(options.rolelookup+"_3");
contract_type["StromDAO-BO.sol:MPReading"]="0x0000000000000000000000000000000000000008";
contract_type["StromDAO-BO.sol_DirectChargingFactory"]="0x6B24c0ea21f4002d35E850bf0f132EeBEb191b7d";
contract_type["StromDAO-BO.sol_DirectConnectionFactory"]="0x2bb4Aa9b328633C28B5ad797995E2bA91177D2b7";
contract_type["StromDAO-BO.sol_DirectBalancingGroupFactory"]="0x853c478C2ecc83D1BCa274D00a8D2dff0fAf1304";
contract_type["StromDAO-BO.sol_StringStorageFactory"]="0xdbD614e0567f37C64e815DEBa321A919CE228d1D";
contract_type["StromDAO-BO.sol_MPSetFactory"]="0xf3FC07380a41119E0acAF5D88dB9E86addeDAA5B";
contract_type["StromDAO-BO.sol_MPRSetFactory"]="0x8Ca4E5A443a09425af1F9e1792619A39e28abEF4";
contract_type["StromDAO-BO.sol_MPRDecorateFactory"]="0x599A82fF93533220b2e6E529477342b484DB2d73";
contract_type["StromDAO-BO.sol_SettlementFactory"]="0x6dE580411a5432D0A5Bd304b42C3a2b8A3710E50";
contract_type["StromDAO-BO.sol_ClearingFactory"]="0x2E3F061534A3A1D57F51f57f32bf7c8fe80e6621";
contract_type["StromDAO-BO.sol_SingleClearingFactory"]="0x3Df3fF97B8F93BbdAeB7C945bAdf32016C369212";
contract_type["StromDAO-BO.sol_DirectClearingFactory"]="0xA88C076bbf5C50d2e35f89f285D373bEd636FD87";
contract_type["StromDAO-BO.sol_StromkontoProxyFactory"]="0xDD106606C4100BA9DAA092690AE6AF849c81bC7F";
contract_type["StromDAO-BO.sol_Transferable"]="0x5856b2AE31ed0FCf82F02a4090502DC5CCEec93E";
contract_type["StromDAO-BO.sol_AssetsLiabilitiesFactory"]="0x98C1E2Eb8C921197066A75AD0ceE6c9852113Df3";
contract_type["StromDAO-BO.sol_MPTokenFactory"]="0x604Caaa72ea8cfCf64179079c30D4168D5bd87bc";
contract_type["StromDAO-BO.sol_XTokenFactory"]="0x814e1eEE776b00D3285913dADceb2ff6DeEFea51";
contract_type["StromDAO-BO.sol_CUTokenFactory"]="0x392c6a3482ffd600fF8C2b816b09d6613ad61BC4";
var roles=[];
roles[0]=0;
roles[1]=1;
roles[2]=2;
roles[3]=3;
options.contracts=contract_type;
options.roles=roles;
parent.waitForDefaults=false;
return options;
} else {
return options;
}
}
},{}],12:[function(require,module,exports){
/*
* StromDAO Business Object: Delivery
* =========================================
* Consensus handling of power/electricity delivery StromDAO Energy Blockchain.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
*
*/
this.delivery=function(obj_or_address) {
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol:Delivery');
instance.owner=function() {return parent._owner_promise(instance);};
instance.power=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.deliverable_power().then(function(o) {
resolve2(o);
});
});
return p2;
};
instance.resolution=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.resolution().then(function(o) {
resolve2(o);
});
});
return p2;
};
instance.endTime=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.deliverable_endTime().then(function(o) {
resolve2(o);
});
});
return p2;
};
instance.startTime=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.deliverable_startTime().then(function(o) {
resolve2(o);
});
});
return p2;
};
instance.account=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.account().then(function(o) {
resolve2(o);
});
});
return p2;
};
instance.transferOwnership=function(owner) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.transferOwnership(owner).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
instance.includeDelivery=function(delivery) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.includeDelivery(delivery).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
resolve(instance);
});
return p1;
};
},{}],13:[function(require,module,exports){
/*
* StromDAO Business Object: Delivery MUX
* =========================================
* MUX for Deliveries (=settlement and clearing) handling for StromDAO Energy Blockchain.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
*
*/
this.provider = function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DeliveryMux"];
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DeliveryMux');
instance.settleBaseDeliveries=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.settleBaseDeliveries().then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
resolve(instance);
});
return p1;
};
},{}],14:[function(require,module,exports){
/**
* StromDAO Business Object: DirectBalancingGroupFactory
* =========================================
* Factory Contract to build balancing groupd for StromDAO Energy Blockchain.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
* */
this.blgfactory = function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DirectBalancingGroupFactory"];
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DirectBalancingGroupFactory');
instance.test = {};
/**
* Stores a reading to this contract instance. Requires sender to be approved Meter-Point
* @see approveMP()
*/
instance.build= function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.onbuilt=function(cb) {
resolve2(cb);
};
instance.obj.build({value:"0x0",gasPrice:"0x0"}).then(function(o) {
console.log(o);
//{value:"0x0",gasPrice:"0x0",gas:"2974441329"}
//parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
resolve(instance);
});
return p1;
};
},{}],15:[function(require,module,exports){
/**
* StromDAO Business Object: DirectCharging
* =========================================
* Directly charge for Energy delivery to an account within StromDAO Energy Blockchain.
*
* DirectCharging gets used together with DirectConnections.
*
* In theory account A and account B are exchanging energy metered by meter_point C
*
* DirectCharging takes several DirectConnections and runs charging as soon as method chargeAll is called.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
*
*/
this.directcharging=function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DirectCharging"];
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DirectCharging');
instance.addConnection=function(address_meterpoint) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.addConnection(address_meterpoint).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
instance.chargeAll=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.chargeAll().then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
}
instance.stromkonto=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.stromkonto().then(function(o) {
resolve2(o[0]);
});
});
return p2;
}
instance.reader=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.reader().then(function(o) {
resolve2(o[0]);
});
});
return p2;
}
resolve(instance);
});
return p1;
};
},{}],16:[function(require,module,exports){
/**
* StromDAO Business Object: DirectConnectionFactory
* =========================================
* Factory Contract to build direct connections handling for StromDAO Energy Blockchain.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
* */
this.directchargingfactory = function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DirectChargingFactory"];
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DirectChargingFactory');
instance.test = {};
/**
* Stores a reading to this contract instance. Requires sender to be approved Meter-Point
* @see approveMP()
*/
instance.buildCharging= function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.onbuilt=function(cb) {
resolve2(cb);
};
instance.obj.buildCharging().then(function(o) {
//parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
resolve(instance);
});
return p1;
};
},{}],17:[function(require,module,exports){
/**
* StromDAO Business Object: DirectClearing
* =========================================
* Directly charge for Energy delivery to an account within StromDAO Energy Blockchain.
*
* DirectCharging gets used together with DirectConnections.
*
* In theory account A and account B are exchanging energy metered by meter_point C
*
* DirectCharging takes several DirectConnections and runs charging as soon as method chargeAll is called.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
*
*/
this.directclearing=function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DirectClearing"];
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DirectClearing');
instance.preSettle=function(address_meterpointset) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.preSettle(address_meterpointset).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
instance.clear=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.clear().then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
instance.settle=function(address_mprset) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.settle(address_mprset).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
instance.setSettlement=function(address_settlement) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.setSettlement(address_settlement).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
resolve(instance);
});
return p1;
};
},{}],18:[function(require,module,exports){
/**
* StromDAO Business Object: DirectConnectionFactory
* =========================================
* Factory Contract to build direct connections handling for StromDAO Energy Blockchain.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
* */
this.factory = function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DirectClearingFactory"];
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DirectClearingFactory');
instance.test = {};
/**
* Stores a reading to this contract instance. Requires sender to be approved Meter-Point
* @see approveMP()
*/
instance.build= function(address_stromkonto,address_settlementfactory) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.onbuilt=function(cb) {
resolve2(cb);
};
instance.obj.build(address_stromkonto,address_settlementfactory).then(function(o) {
});
});
return p2;
};
resolve(instance);
});
return p1;
};
},{}],19:[function(require,module,exports){
/**
* StromDAO Business Object: DirectConnection
* =========================================
* Directly connect for Energy delivery to an account within StromDAO Energy Blockchain.
*
* DirectCharging gets used together with DirectConnections.
*
* In theory account A and account B are exchanging energy metered by meter_point C
*
* DirectCharging takes several DirectConnections and runs charging as soon as method chargeAll is called.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
*
*/
this.directconnection=function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DirectConnection"];
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DirectConnection');
instance.from=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.from().then(function(o) {
resolve2(o[0]);
});
});
return p2;
}
instance.to=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.to().then(function(o) {
resolve2(o[0]);
});
});
return p2;
}
instance.cost_per_day=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.cost_per_day().then(function(o) {
resolve2(o[0].toString()*1);
});
});
return p2;
}
instance.cost_per_energy=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.cost_per_energy().then(function(o) {
resolve2(o[0].toString()*1);
});
});
return p2;
}
instance.owner=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.owner().then(function(o) {
resolve2(o[0]);
});
});
return p2;
}
resolve(instance);
});
return p1;
};
},{}],20:[function(require,module,exports){
/**
* StromDAO Business Object: DirectConnectionFactory
* =========================================
* Factory Contract to build direct connections handling for StromDAO Energy Blockchain.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
* */
this.directconnectionfactory = function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DirectConnectionFactory"];
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DirectConnectionFactory');
instance.test = {};
/**
* Stores a reading to this contract instance. Requires sender to be approved Meter-Point
* @see approveMP()
*/
instance.buildConnection= function(address_from,address_to,address_meterpoint,uint256_costperenergy,uint256_costperday) {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.onbuilt=function(cb) {
resolve2(cb);
};
instance.obj.buildConnection(address_from,address_to,address_meterpoint,uint256_costperenergy,uint256_costperday).then(function(o) {
});
});
return p2;
};
resolve(instance);
});
return p1;
};
},{}],21:[function(require,module,exports){
/**
* StromDAO Business Object: MPToken
* =========================================
* Meter Point Token handling for StromDAO Energy Blockchain.
*
* In General a MPToken consists of two ERC-20 Tokens: Time and Power
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
* */
this.erc20token = function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol:ERC20Token"];
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol:ERC20Token');
instance.test = {};
instance.transfer=function(address_to,uint256_value) {
//_reading=Math.round(_reading);
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.transfer( parent._resolveName(address_to),uint256_value).then(function(o) {
parent._waitForTransactionKeepRef(o,resolve2);
});
});
return p2;
};
instance.totalSupply=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.totalSupply().then(function(o) {
resolve2(o[0].toString()*1);
});
});
return p2;
};
instance.owner=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.owner().then(function(o) {
resolve2(o[0].toString());
});
});
return p2;
};
instance.balanceOf=function(address_account) {
var p2 = new Promise(function(resolve2, reject2) {
//console.log(instance.obj);
instance.obj.balanceOf( parent._resolveName(address_account)).then(function(o) {
resolve2(o[0].toString()*1);
});
});
return p2;
};
resolve(instance);
});
return p1;
};
},{}],22:[function(require,module,exports){
/**
* StromDAO Business Object: MPR
* =========================================
* Meter Point Operator handling for StromDAO Energy Blockchain.
*
* In general a Meter Point Operating (Contract) handles meter readings and issues Deliverables as soon as a new reading is received.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
* */
this.furyuser = function(obj_or_address) {
var p1 = new Promise(function(resolve, reject) {
var instance={};
instance.test = {};
/**
* Stores a reading to this contract instance. Requires sender to be approved Meter-Point
* @see approveMP()
*/
instance.setRole= function(role,address) {
var p2 = new Promise(function(resolve2, reject2) {
parent.roleLookup().then(function(rl) {
rl.setRelation(role,address).then(function(tx) {
resolve2(tx);
});
});
});
return p2;
};
instance.setRoleValue=function(role,value) {
var p2 = new Promise(function(resolve2, reject2) {
parent.stringstoragefactory().then(function(ssf) {
ssf.build(value).then(function(address) {
parent.furyuser().then(function(furyuser) {
furyuser.setRole(role,address).then(function(tx) {
resolve2(tx);
});
});
});
});
});
return p2;
};
instance.getRole=function(role) {
var p2 = new Promise(function(resolve2, reject2) {
parent.roleLookup().then(function(rl) {
rl.relations(parent.wallet.address,role).then(function(tx) {
resolve2(tx);
});
});
});
return p2;
};
instance.getRoleValue= function(role) {
var p2 = new Promise(function(resolve2, reject2) {
parent.furyuser().then(function(furyuser) {
furyuser.getRole(role).then(function(tx) {
if(tx=="0x0000000000000000000000000000000000000000") {
console.log("Nothing linked to role",role);
resolve2();
} else {
parent.stringstorage(tx).then(function(ss) {
ss.str().then(function(str) {
resolve2(str);
});
});
}
});
});
});
return p2;
};
instance.setUserKeys = function(account_obj) {
var p2 = new Promise(function(resolve2, reject2) {
account_obj.encrypt(parent.wallet.privateKey).then(function(enc) {
account_obj.encrypt(parent.RSAPrivateKey).then(function(enc_rsa) {
parent.stringstoragefactory().then(function(ssf) {
ssf.build(enc).then(function(ss) {
ssf.build(enc_rsa).then(function(ss_rsa) {
ssf.build(parent.RSAPublicKey).then(function(ss_pub) {
parent.roleLookup().then(function(rl) {
rl.setRelation(224,ss_pub).then(function() {
rl.setRelation(223,ss_rsa).then(function() {
rl.setRelation(222,ss).then(function(tx) {
resolve2(tx);
});
});
});
});
});
});
});
});
});
});
});
return p2;
}
instance.getRSAKeys = function(account_obj) {
var p2 = new Promise(function(resolve2, reject2) {
parent.furyuser().then(function(furyuser) {
furyuser.getRoleValue(224).then(function(rsa_pub) {
account_obj.RSAPublicKey=rsa_pub;
furyuser.getRoleValue(223).then(function(rsa_priv_enc) {
account_obj.decrypt(rsa_priv_enc).then(function(rsa_priv) {
account_obj.RSAPrivateKey=rsa_priv;
resolve2();
});
});
});
});
});
return p2;
};
resolve(instance);
});
return p1;
};
},{}],23:[function(require,module,exports){
/**
* StromDAO Business Object: MPSet
* =========================================
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
*
*/
this.mpdelta=function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_MPDelta"];
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_MPDelta');
instance.lastReadingTime=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.lastReadingTime().then(function(o) {
resolve2(o);
});
});
return p2;
}
instance.lastReadingPower=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.lastReadingPower().then(function(o) {
resolve2(o);
});
});
return p2;
}
instance.meterpoint=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.meterpoint().then(function(o) {
resolve2(o);
});
});
return p2;
}
instance.lastDeltaTime=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.lastDeltaTime().then(function(o) {
resolve2(o);
});
});
return p2;
}
instance.lastDeltaPower=function() {
var p2 = new Promise(function(resolve2, reject2) {
instance.obj.lastDeltaPower().then(function(o) {
resolve2(o);
});
});
return p2;
}
resolve(instance);
});
return p1;
};
},{}],24:[function(require,module,exports){
/**
* StromDAO Business Object: MPO
* =========================================
* Meter Point Operator handling for StromDAO Energy Blockchain.
*
* In general a Meter Point Operating (Contract) handles meter readings and issues Deliverables as soon as a new reading is received.
*
* @author Thorsten Zoerner thorsten.zoerner@stromdao.de
* */
this.mpo = function(obj_or_address) {
if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_MPO"];
var p1 = new Promise(function(resolve, reject) {
var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_MPO');
instance.test = {};
/**
* Approve a new Blockchain Address to this contract instance. Limit: Only-Owner
* @param _meter address
* @param _role Eq. to 4=