|
|
@ -7,19 +7,18 @@ function UniversalDApp (contracts, options) { |
|
|
|
if (!options.vm && web3.currentProvider) { |
|
|
|
if (!options.vm && web3.currentProvider) { |
|
|
|
|
|
|
|
|
|
|
|
} else if (options.vm) { |
|
|
|
} else if (options.vm) { |
|
|
|
this.stateTrie = new EthVm.Trie(); |
|
|
|
this.vm = new EthVm(); |
|
|
|
this.vm = new EthVm.VM(this.stateTrie); |
|
|
|
|
|
|
|
//@todo this does not calculate the gas costs correctly but gets the job done.
|
|
|
|
//@todo this does not calculate the gas costs correctly but gets the job done.
|
|
|
|
this.identityCode = 'return { gasUsed: 1, return: opts.data, exception: 1 };'; |
|
|
|
this.identityCode = 'return { gasUsed: 1, return: opts.data, exception: 1 };'; |
|
|
|
this.identityAddr = ethUtil.pad(new Buffer('04', 'hex'), 20) |
|
|
|
this.identityAddr = ethUtil.pad(new Buffer('04', 'hex'), 20) |
|
|
|
this.vm.loadPrecompiled(this.identityAddr, this.identityCode); |
|
|
|
this.vm.loadCompiled(this.identityAddr, this.identityCode); |
|
|
|
this.secretKey = '3cd7232cd6f3fc66a57a6bedc1a8ed6c228fff0a327e169c2bcc5e869ed49511' |
|
|
|
this.secretKey = '3cd7232cd6f3fc66a57a6bedc1a8ed6c228fff0a327e169c2bcc5e869ed49511' |
|
|
|
this.publicKey = '0406cc661590d48ee972944b35ad13ff03c7876eae3fd191e8a2f77311b0a3c6613407b5005e63d7d8d76b89d5f900cde691497688bb281e07a5052ff61edebdc0' |
|
|
|
this.publicKey = '0406cc661590d48ee972944b35ad13ff03c7876eae3fd191e8a2f77311b0a3c6613407b5005e63d7d8d76b89d5f900cde691497688bb281e07a5052ff61edebdc0' |
|
|
|
this.address = ethUtil.pubToAddress(new Buffer(this.publicKey, 'hex')); |
|
|
|
this.address = ethUtil.pubToAddress(new Buffer(this.publicKey, 'hex')); |
|
|
|
this.account = new EthVm.Account(); |
|
|
|
this.account = new Account(); |
|
|
|
this.account.balance = 'f00000000000000001'; |
|
|
|
this.account.balance = 'f00000000000000001'; |
|
|
|
this.nonce = 0; |
|
|
|
this.nonce = 0; |
|
|
|
this.stateTrie.put(this.address, this.account.serialize());
|
|
|
|
this.vm.stateManager.trie.put(this.address, this.account.serialize());
|
|
|
|
} else { |
|
|
|
} else { |
|
|
|
var host = options.host || "localhost"; |
|
|
|
var host = options.host || "localhost"; |
|
|
|
var port = options.port || "8545"; |
|
|
|
var port = options.port || "8545"; |
|
|
@ -134,7 +133,11 @@ UniversalDApp.prototype.getInstanceInterface = function (contract, address, $tar |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
$events = $('<div class="events"/>'); |
|
|
|
$events = $('<div class="events"/>'); |
|
|
|
if (!self.options.vm){ |
|
|
|
if (self.options.vm){ |
|
|
|
|
|
|
|
self.vm.on('afterTx', function(response){ |
|
|
|
|
|
|
|
// TODO: parse/use reponse.vm.logs
|
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} else { |
|
|
|
var jsInterface = web3.eth.contract(abi).at(address) |
|
|
|
var jsInterface = web3.eth.contract(abi).at(address) |
|
|
|
var eventFilter = jsInterface.allEvents(); |
|
|
|
var eventFilter = jsInterface.allEvents(); |
|
|
|
eventFilter.watch(function(err,response){ |
|
|
|
eventFilter.watch(function(err,response){ |
|
|
@ -408,7 +411,7 @@ UniversalDApp.prototype.runTx = function( data, args, cb) { |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
try { |
|
|
|
try { |
|
|
|
var tx = new EthVm.Transaction({ |
|
|
|
var tx = new Tx({ |
|
|
|
nonce: new Buffer([this.nonce++]), //@todo count beyond 255
|
|
|
|
nonce: new Buffer([this.nonce++]), //@todo count beyond 255
|
|
|
|
gasPrice: '01', |
|
|
|
gasPrice: '01', |
|
|
|
gasLimit: '3000000000', //plenty
|
|
|
|
gasLimit: '3000000000', //plenty
|
|
|
|