mirror of https://github.com/status-im/web3.js.git
Merge branch 'master' into abi_refactor
Conflicts: dist/web3-light.js.map dist/web3-light.min.js dist/web3.js.map dist/web3.min.js
This commit is contained in:
commit
e80ff10f52
|
@ -928,7 +928,8 @@ module.exports = {
|
||||||
ETH_UNITS: ETH_UNITS,
|
ETH_UNITS: ETH_UNITS,
|
||||||
ETH_BIGNUMBER_ROUNDING_MODE: { ROUNDING_MODE: BigNumber.ROUND_DOWN },
|
ETH_BIGNUMBER_ROUNDING_MODE: { ROUNDING_MODE: BigNumber.ROUND_DOWN },
|
||||||
ETH_POLLING_TIMEOUT: 1000,
|
ETH_POLLING_TIMEOUT: 1000,
|
||||||
ETH_DEFAULTBLOCK: 'latest'
|
defaultBlock: 'latest',
|
||||||
|
defaultAccount: undefined
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1533,6 +1534,8 @@ web3.setProvider = function (provider) {
|
||||||
};
|
};
|
||||||
web3.reset = function () {
|
web3.reset = function () {
|
||||||
RequestManager.getInstance().reset();
|
RequestManager.getInstance().reset();
|
||||||
|
c.defaultBlock = 'latest';
|
||||||
|
c.defaultAccount = undefined;
|
||||||
};
|
};
|
||||||
web3.toHex = utils.toHex;
|
web3.toHex = utils.toHex;
|
||||||
web3.toAscii = utils.toAscii;
|
web3.toAscii = utils.toAscii;
|
||||||
|
@ -1547,14 +1550,23 @@ web3.isAddress = utils.isAddress;
|
||||||
// ADD defaultblock
|
// ADD defaultblock
|
||||||
Object.defineProperty(web3.eth, 'defaultBlock', {
|
Object.defineProperty(web3.eth, 'defaultBlock', {
|
||||||
get: function () {
|
get: function () {
|
||||||
return c.ETH_DEFAULTBLOCK;
|
return c.defaultBlock;
|
||||||
},
|
},
|
||||||
set: function (val) {
|
set: function (val) {
|
||||||
c.ETH_DEFAULTBLOCK = val;
|
c.defaultBlock = val;
|
||||||
return c.ETH_DEFAULTBLOCK;
|
return val;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(web3.eth, 'defaultAccount', {
|
||||||
|
get: function () {
|
||||||
|
return c.defaultAccount;
|
||||||
|
},
|
||||||
|
set: function (val) {
|
||||||
|
c.defaultAccount = val;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
/// setups all api methods
|
/// setups all api methods
|
||||||
setupMethods(web3, web3Methods);
|
setupMethods(web3, web3Methods);
|
||||||
|
@ -1755,12 +1767,13 @@ function Contract(abi, options) {
|
||||||
var address = '';
|
var address = '';
|
||||||
if (utils.isAddress(options)) {
|
if (utils.isAddress(options)) {
|
||||||
address = options;
|
address = options;
|
||||||
} else { // is a source code!
|
} else { // is an object!
|
||||||
// TODO, parse the rest of the args
|
// TODO, parse the rest of the args
|
||||||
var code = options;
|
options = options || {};
|
||||||
var args = Array.prototype.slice.call(arguments, 2);
|
var args = Array.prototype.slice.call(arguments, 2);
|
||||||
var bytes = solAbi.formatConstructorParams(abi, args);
|
var bytes = solAbi.formatConstructorParams(abi, args);
|
||||||
address = web3.eth.sendTransaction({data: code + bytes});
|
options.data += bytes;
|
||||||
|
address = web3.eth.sendTransaction(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
var result = {};
|
var result = {};
|
||||||
|
@ -2451,7 +2464,7 @@ var isPredefinedBlockNumber = function (blockNumber) {
|
||||||
|
|
||||||
var inputDefaultBlockNumberFormatter = function (blockNumber) {
|
var inputDefaultBlockNumberFormatter = function (blockNumber) {
|
||||||
if (blockNumber === undefined) {
|
if (blockNumber === undefined) {
|
||||||
return config.ETH_DEFAULTBLOCK;
|
return config.defaultBlock;
|
||||||
}
|
}
|
||||||
return inputBlockNumberFormatter(blockNumber);
|
return inputBlockNumberFormatter(blockNumber);
|
||||||
};
|
};
|
||||||
|
@ -2474,6 +2487,8 @@ var inputBlockNumberFormatter = function (blockNumber) {
|
||||||
*/
|
*/
|
||||||
var inputTransactionFormatter = function (options){
|
var inputTransactionFormatter = function (options){
|
||||||
|
|
||||||
|
options.from = options.from || config.defaultAccount;
|
||||||
|
|
||||||
// make code -> data
|
// make code -> data
|
||||||
if (options.code) {
|
if (options.code) {
|
||||||
options.data = options.code;
|
options.data = options.code;
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -928,7 +928,8 @@ module.exports = {
|
||||||
ETH_UNITS: ETH_UNITS,
|
ETH_UNITS: ETH_UNITS,
|
||||||
ETH_BIGNUMBER_ROUNDING_MODE: { ROUNDING_MODE: BigNumber.ROUND_DOWN },
|
ETH_BIGNUMBER_ROUNDING_MODE: { ROUNDING_MODE: BigNumber.ROUND_DOWN },
|
||||||
ETH_POLLING_TIMEOUT: 1000,
|
ETH_POLLING_TIMEOUT: 1000,
|
||||||
ETH_DEFAULTBLOCK: 'latest'
|
defaultBlock: 'latest',
|
||||||
|
defaultAccount: undefined
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1533,6 +1534,8 @@ web3.setProvider = function (provider) {
|
||||||
};
|
};
|
||||||
web3.reset = function () {
|
web3.reset = function () {
|
||||||
RequestManager.getInstance().reset();
|
RequestManager.getInstance().reset();
|
||||||
|
c.defaultBlock = 'latest';
|
||||||
|
c.defaultAccount = undefined;
|
||||||
};
|
};
|
||||||
web3.toHex = utils.toHex;
|
web3.toHex = utils.toHex;
|
||||||
web3.toAscii = utils.toAscii;
|
web3.toAscii = utils.toAscii;
|
||||||
|
@ -1547,14 +1550,23 @@ web3.isAddress = utils.isAddress;
|
||||||
// ADD defaultblock
|
// ADD defaultblock
|
||||||
Object.defineProperty(web3.eth, 'defaultBlock', {
|
Object.defineProperty(web3.eth, 'defaultBlock', {
|
||||||
get: function () {
|
get: function () {
|
||||||
return c.ETH_DEFAULTBLOCK;
|
return c.defaultBlock;
|
||||||
},
|
},
|
||||||
set: function (val) {
|
set: function (val) {
|
||||||
c.ETH_DEFAULTBLOCK = val;
|
c.defaultBlock = val;
|
||||||
return c.ETH_DEFAULTBLOCK;
|
return val;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(web3.eth, 'defaultAccount', {
|
||||||
|
get: function () {
|
||||||
|
return c.defaultAccount;
|
||||||
|
},
|
||||||
|
set: function (val) {
|
||||||
|
c.defaultAccount = val;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
/// setups all api methods
|
/// setups all api methods
|
||||||
setupMethods(web3, web3Methods);
|
setupMethods(web3, web3Methods);
|
||||||
|
@ -1755,12 +1767,13 @@ function Contract(abi, options) {
|
||||||
var address = '';
|
var address = '';
|
||||||
if (utils.isAddress(options)) {
|
if (utils.isAddress(options)) {
|
||||||
address = options;
|
address = options;
|
||||||
} else { // is a source code!
|
} else { // is an object!
|
||||||
// TODO, parse the rest of the args
|
// TODO, parse the rest of the args
|
||||||
var code = options;
|
options = options || {};
|
||||||
var args = Array.prototype.slice.call(arguments, 2);
|
var args = Array.prototype.slice.call(arguments, 2);
|
||||||
var bytes = solAbi.formatConstructorParams(abi, args);
|
var bytes = solAbi.formatConstructorParams(abi, args);
|
||||||
address = web3.eth.sendTransaction({data: code + bytes});
|
options.data += bytes;
|
||||||
|
address = web3.eth.sendTransaction(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
var result = {};
|
var result = {};
|
||||||
|
@ -2451,7 +2464,7 @@ var isPredefinedBlockNumber = function (blockNumber) {
|
||||||
|
|
||||||
var inputDefaultBlockNumberFormatter = function (blockNumber) {
|
var inputDefaultBlockNumberFormatter = function (blockNumber) {
|
||||||
if (blockNumber === undefined) {
|
if (blockNumber === undefined) {
|
||||||
return config.ETH_DEFAULTBLOCK;
|
return config.defaultBlock;
|
||||||
}
|
}
|
||||||
return inputBlockNumberFormatter(blockNumber);
|
return inputBlockNumberFormatter(blockNumber);
|
||||||
};
|
};
|
||||||
|
@ -2474,6 +2487,8 @@ var inputBlockNumberFormatter = function (blockNumber) {
|
||||||
*/
|
*/
|
||||||
var inputTransactionFormatter = function (options){
|
var inputTransactionFormatter = function (options){
|
||||||
|
|
||||||
|
options.from = options.from || config.defaultAccount;
|
||||||
|
|
||||||
// make code -> data
|
// make code -> data
|
||||||
if (options.code) {
|
if (options.code) {
|
||||||
options.data = options.code;
|
options.data = options.code;
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -2,36 +2,34 @@
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<script type="text/javascript" src="../dist/web3"></script>
|
<script type="text/javascript" src="../dist/web3.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
var web3 = require('web3');
|
var web3 = require('web3');
|
||||||
web3.setProvider(new web3.providers.HttpProvider());
|
web3.setProvider(new web3.providers.HttpProvider("http://localhost:8545"));
|
||||||
|
|
||||||
// solidity source code
|
// solidity source code
|
||||||
var source = "" +
|
/*var source = "" +*/
|
||||||
"contract test {\n" +
|
/*"contract test {\n" +*/
|
||||||
" function multiply(uint a) returns(uint d) {\n" +
|
/*" function multiply(uint a) constant returns(uint d) {\n" +*/
|
||||||
" return a * 7;\n" +
|
/*" return a * 7;\n" +*/
|
||||||
" }\n" +
|
/*" }\n" +*/
|
||||||
"}\n";
|
/*"}\n";*/
|
||||||
|
var source = "605280600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa114602e57005b60376004356041565b8060005260206000f35b6000600782029050604d565b91905056";
|
||||||
|
|
||||||
// contract description, this will be autogenerated somehow
|
// contract description, this is autogenerated using solc CLI
|
||||||
var desc = [{
|
var desc = [{
|
||||||
"name": "multiply(uint256)",
|
"constant" : true,
|
||||||
"type": "function",
|
"inputs" : [{
|
||||||
"inputs": [
|
|
||||||
{
|
|
||||||
"name" : "a",
|
"name" : "a",
|
||||||
"type" : "uint256"
|
"type" : "uint256"
|
||||||
}
|
}],
|
||||||
],
|
"name" : "multiply",
|
||||||
"outputs": [
|
"outputs" : [{
|
||||||
{
|
|
||||||
"name" : "d",
|
"name" : "d",
|
||||||
"type" : "uint256"
|
"type" : "uint256"
|
||||||
}
|
}],
|
||||||
]
|
"type" : "function"
|
||||||
}];
|
}];
|
||||||
|
|
||||||
var myContract;
|
var myContract;
|
||||||
|
@ -41,11 +39,12 @@
|
||||||
document.getElementById('create').style.visibility = 'hidden';
|
document.getElementById('create').style.visibility = 'hidden';
|
||||||
document.getElementById('source').innerText = source;
|
document.getElementById('source').innerText = source;
|
||||||
|
|
||||||
// create contract
|
// let's assume that coinbase is our account
|
||||||
var address = web3.eth.sendTransaction({data: web3.eth.compile.solidity(source)}),
|
web3.eth.defaultAccount = web3.eth.coinbase;
|
||||||
Contract = web3.eth.contract(desc);
|
|
||||||
|
|
||||||
myContract = new Contract(address);
|
// create contract
|
||||||
|
var Contract = web3.eth.contract(desc);
|
||||||
|
myContract = new Contract({data: source});
|
||||||
document.getElementById('call').style.visibility = 'visible';
|
document.getElementById('call').style.visibility = 'visible';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +53,7 @@
|
||||||
var param = parseInt(document.getElementById('value').value);
|
var param = parseInt(document.getElementById('value').value);
|
||||||
|
|
||||||
// call the contract
|
// call the contract
|
||||||
var res = myContract.call().multiply(param);
|
var res = myContract.multiply(param);
|
||||||
document.getElementById('result').innerText = res.toString(10);
|
document.getElementById('result').innerText = res.toString(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,77 +0,0 @@
|
||||||
<!doctype>
|
|
||||||
<html>
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<script type="text/javascript" src="../dist/web3.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var web3 = require('web3');
|
|
||||||
web3.setProvider(new web3.providers.HttpProvider());
|
|
||||||
|
|
||||||
// solidity source code
|
|
||||||
var source = "" +
|
|
||||||
"contract test {\n" +
|
|
||||||
" function multiply(uint[] a) returns(uint d) {\n" +
|
|
||||||
" return a[0] + a[1];\n" +
|
|
||||||
" }\n" +
|
|
||||||
"}\n";
|
|
||||||
|
|
||||||
// contract description, this will be autogenerated somehow
|
|
||||||
var desc = [{
|
|
||||||
"name": "multiply(uint256[])",
|
|
||||||
"type": "function",
|
|
||||||
"inputs": [
|
|
||||||
{
|
|
||||||
"name": "a",
|
|
||||||
"type": "uint256[]"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"name": "d",
|
|
||||||
"type": "uint256"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}];
|
|
||||||
|
|
||||||
var myContract;
|
|
||||||
|
|
||||||
function createExampleContract() {
|
|
||||||
// hide create button
|
|
||||||
document.getElementById('create').style.visibility = 'hidden';
|
|
||||||
document.getElementById('source').innerText = source;
|
|
||||||
|
|
||||||
// create contract
|
|
||||||
var address = web3.eth.sendTransaction({data: web3.eth.compile.solidity(source)}),
|
|
||||||
Contract = web3.eth.contract(desc);
|
|
||||||
|
|
||||||
myContract = new Contract(address);
|
|
||||||
document.getElementById('call').style.visibility = 'visible';
|
|
||||||
}
|
|
||||||
|
|
||||||
function callExampleContract() {
|
|
||||||
// this should be generated by ethereum
|
|
||||||
var param = parseInt(document.getElementById('value').value);
|
|
||||||
var param2 = parseInt(document.getElementById('value2').value);
|
|
||||||
|
|
||||||
// call the contract
|
|
||||||
var res = myContract.call().multiply([param, param2]);
|
|
||||||
document.getElementById('result').innerText = res.toString(10);
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>contract</h1>
|
|
||||||
<div id="source"></div>
|
|
||||||
<div id='create'>
|
|
||||||
<button type="button" onClick="createExampleContract();">create example contract</button>
|
|
||||||
</div>
|
|
||||||
<div id='call' style='visibility: hidden;'>
|
|
||||||
<input type="number" id="value" onkeyup='callExampleContract()'></input>
|
|
||||||
<input type="number" id="value2" onkeyup='callExampleContract()'></input>
|
|
||||||
</div>
|
|
||||||
<div id="result"></div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
|
@ -1,119 +0,0 @@
|
||||||
<!doctype>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<script type="text/javascript" src="../dist/web3.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
var web3 = require('web3');
|
|
||||||
web3.setProvider(new web3.providers.HttpProvider('http://localhost:8080'));
|
|
||||||
|
|
||||||
var desc = [{
|
|
||||||
"type":"event",
|
|
||||||
"inputs": [{"name":"a","type":"uint256","indexed":true},{"name":"b","type":"hash256","indexed":false}],
|
|
||||||
"name":"Event"
|
|
||||||
}, {
|
|
||||||
"type":"event",
|
|
||||||
"inputs": [{"name":"a","type":"uint256","indexed":true},{"name":"b","type":"hash256","indexed":false}],
|
|
||||||
"name":"Event2"
|
|
||||||
}, {
|
|
||||||
"type":"function",
|
|
||||||
"inputs": [{"name":"a","type":"uint256"}],
|
|
||||||
"name":"foo",
|
|
||||||
"outputs": []
|
|
||||||
}];
|
|
||||||
|
|
||||||
var address = '0x01';
|
|
||||||
|
|
||||||
var contract = web3.eth.contract(address, desc);
|
|
||||||
|
|
||||||
function test1() {
|
|
||||||
// "{"topic":["0x83c9849c","0xc4d76332"],"address":"0x01"}"
|
|
||||||
web3.eth.watch(contract).changed(function (res) {
|
|
||||||
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
function test2() {
|
|
||||||
// "{"topic":["0x83c9849c"],"address":"0x01"}"
|
|
||||||
web3.eth.watch(contract.Event).changed(function (res) {
|
|
||||||
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
function test3() {
|
|
||||||
// "{"topic":["0x83c9849c"],"address":"0x01"}"
|
|
||||||
contract.Event().changed(function (res) {
|
|
||||||
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
function test4() {
|
|
||||||
// "{"topic":["0x83c9849c","0000000000000000000000000000000000000000000000000000000000000045"],"address":"0x01"}"
|
|
||||||
contract.Event({a: 69}).changed(function (res) {
|
|
||||||
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
function test5() {
|
|
||||||
// "{"topic":["0x83c9849c",["0000000000000000000000000000000000000000000000000000000000000045","000000000000000000000000000000000000000000000000000000000000002a"]],"address":"0x01"}"
|
|
||||||
contract.Event({a: [69, 42]}).changed(function (res) {
|
|
||||||
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
function test6() {
|
|
||||||
// "{"topic":["0x83c9849c","000000000000000000000000000000000000000000000000000000000000001e"],"max":100,"address":"0x01"}"
|
|
||||||
contract.Event({a: 30}, {max: 100}).changed(function (res) {
|
|
||||||
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
function test7() {
|
|
||||||
// "{"topic":["0x83c9849c","000000000000000000000000000000000000000000000000000000000000001e"],"address":"0x01"}"
|
|
||||||
web3.eth.watch(contract.Event, {a: 30}).changed(function (res) {
|
|
||||||
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
function test8() {
|
|
||||||
// "{"topic":["0x83c9849c","000000000000000000000000000000000000000000000000000000000000001e"],"max":100,"address":"0x01"}"
|
|
||||||
web3.eth.watch(contract.Event, {a: 30}, {max: 100}).changed(function (res) {
|
|
||||||
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
// not valid
|
|
||||||
// function testX() {
|
|
||||||
// web3.eth.watch([contract.Event, contract.Event2]).changed(function (res) {
|
|
||||||
// });
|
|
||||||
// };
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<button type="button" onClick="test1();">test1</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button type="button" onClick="test2();">test2</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button type="button" onClick="test3();">test3</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button type="button" onClick="test4();">test4</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button type="button" onClick="test5();">test5</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button type="button" onClick="test6();">test6</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button type="button" onClick="test7();">test7</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button type="button" onClick="test8();">test8</button>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -4,48 +4,61 @@
|
||||||
<script type="text/javascript" src="../dist/web3.js"></script>
|
<script type="text/javascript" src="../dist/web3.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var web3 = require('web3');
|
var web3 = require('web3');
|
||||||
web3.setProvider(new web3.providers.HttpProvider('http://localhost:8080'));
|
web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545'));
|
||||||
|
|
||||||
var source = "" +
|
/*var source = "" + */
|
||||||
"contract Contract { " +
|
/*"contract Contract { " +*/
|
||||||
" event Incremented(bool indexed odd, uint x); " +
|
/*" event Incremented(bool indexed odd, uint x); " +*/
|
||||||
" function Contract() { " +
|
/*" function Contract() { " +*/
|
||||||
" x = 69; " +
|
/*" x = 69; " +*/
|
||||||
" } " +
|
/*" } " +*/
|
||||||
" function inc() { " +
|
/*" function inc() { " +*/
|
||||||
" ++x; " +
|
/*" ++x; " +*/
|
||||||
" Incremented(x % 2 == 1, x); " +
|
/*" Incremented(x % 2 == 1, x); " +*/
|
||||||
" } " +
|
/*" } " +*/
|
||||||
" uint x; " +
|
/*" uint x; " +*/
|
||||||
"}";
|
/*"}";*/
|
||||||
|
var source = "5b60456000600050819055505b608c8060196000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063371303c014602e57005b6034603a565b60006000f35b6000600081815054600101919050819055506001600260006000505406147f6e61ef44ac2747ff8b84d353a908eb8bd5c3fb118334d57698c5cfc7041196ad600060006000505481526020016000a25b56";
|
||||||
|
|
||||||
var desc = [{
|
var desc = [{
|
||||||
"type":"event",
|
"constant" : false,
|
||||||
"name":"Incremented",
|
|
||||||
"inputs": [{"name":"odd","type":"bool","indexed":true},{"name":"x","type":"uint","indexed":false}],
|
|
||||||
}, {
|
|
||||||
"type":"function",
|
|
||||||
"name":"inc",
|
|
||||||
"inputs" : [],
|
"inputs" : [],
|
||||||
"outputs": []
|
"name" : "inc",
|
||||||
|
"outputs" : [],
|
||||||
|
"type" : "function"
|
||||||
|
}, {
|
||||||
|
"anonymous" : false,
|
||||||
|
"inputs" : [{
|
||||||
|
"indexed" : true,
|
||||||
|
"name" : "odd",
|
||||||
|
"type" : "bool"
|
||||||
|
}, {
|
||||||
|
"indexed" : false,
|
||||||
|
"name" : "x",
|
||||||
|
"type" : "uint256"
|
||||||
|
}],
|
||||||
|
"name" : "Incremented",
|
||||||
|
"type" : "event"
|
||||||
}];
|
}];
|
||||||
|
|
||||||
var address;
|
var address;
|
||||||
var contract;
|
var contract;
|
||||||
|
|
||||||
var update = function (x) {
|
var update = function (err, x) {
|
||||||
document.getElementById('result').innerText = JSON.stringify(x);
|
document.getElementById('result').innerText = JSON.stringify(x);
|
||||||
};
|
};
|
||||||
|
|
||||||
var createContract = function () {
|
var createContract = function () {
|
||||||
address = web3.eth.sendTransaction({data: web3.eth.compile.solidity(source)});
|
// let's assume that we have a private key to coinbase ;)
|
||||||
contract = web3.eth.contract(address, desc);
|
web3.eth.defaultAccount = web3.eth.coinbase;
|
||||||
contract.Incremented({odd: true}).changed(update);
|
var Contract = web3.eth.contract(desc);
|
||||||
|
contract = new Contract({data: source});
|
||||||
|
contract.Incremented({odd: true}).watch(update);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var callContract = function () {
|
var callContract = function () {
|
||||||
contract.call().inc();
|
contract.inc();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -64,6 +64,7 @@ module.exports = {
|
||||||
ETH_UNITS: ETH_UNITS,
|
ETH_UNITS: ETH_UNITS,
|
||||||
ETH_BIGNUMBER_ROUNDING_MODE: { ROUNDING_MODE: BigNumber.ROUND_DOWN },
|
ETH_BIGNUMBER_ROUNDING_MODE: { ROUNDING_MODE: BigNumber.ROUND_DOWN },
|
||||||
ETH_POLLING_TIMEOUT: 1000,
|
ETH_POLLING_TIMEOUT: 1000,
|
||||||
ETH_DEFAULTBLOCK: 'latest'
|
defaultBlock: 'latest',
|
||||||
|
defaultAccount: undefined
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
17
lib/web3.js
17
lib/web3.js
|
@ -117,6 +117,8 @@ web3.setProvider = function (provider) {
|
||||||
};
|
};
|
||||||
web3.reset = function () {
|
web3.reset = function () {
|
||||||
RequestManager.getInstance().reset();
|
RequestManager.getInstance().reset();
|
||||||
|
c.defaultBlock = 'latest';
|
||||||
|
c.defaultAccount = undefined;
|
||||||
};
|
};
|
||||||
web3.toHex = utils.toHex;
|
web3.toHex = utils.toHex;
|
||||||
web3.toAscii = utils.toAscii;
|
web3.toAscii = utils.toAscii;
|
||||||
|
@ -131,14 +133,23 @@ web3.isAddress = utils.isAddress;
|
||||||
// ADD defaultblock
|
// ADD defaultblock
|
||||||
Object.defineProperty(web3.eth, 'defaultBlock', {
|
Object.defineProperty(web3.eth, 'defaultBlock', {
|
||||||
get: function () {
|
get: function () {
|
||||||
return c.ETH_DEFAULTBLOCK;
|
return c.defaultBlock;
|
||||||
},
|
},
|
||||||
set: function (val) {
|
set: function (val) {
|
||||||
c.ETH_DEFAULTBLOCK = val;
|
c.defaultBlock = val;
|
||||||
return c.ETH_DEFAULTBLOCK;
|
return val;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(web3.eth, 'defaultAccount', {
|
||||||
|
get: function () {
|
||||||
|
return c.defaultAccount;
|
||||||
|
},
|
||||||
|
set: function (val) {
|
||||||
|
c.defaultAccount = val;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
/// setups all api methods
|
/// setups all api methods
|
||||||
setupMethods(web3, web3Methods);
|
setupMethods(web3, web3Methods);
|
||||||
|
|
|
@ -183,12 +183,13 @@ function Contract(abi, options) {
|
||||||
var address = '';
|
var address = '';
|
||||||
if (utils.isAddress(options)) {
|
if (utils.isAddress(options)) {
|
||||||
address = options;
|
address = options;
|
||||||
} else { // is a source code!
|
} else { // is an object!
|
||||||
// TODO, parse the rest of the args
|
// TODO, parse the rest of the args
|
||||||
var code = options;
|
options = options || {};
|
||||||
var args = Array.prototype.slice.call(arguments, 2);
|
var args = Array.prototype.slice.call(arguments, 2);
|
||||||
var bytes = solAbi.formatConstructorParams(abi, args);
|
var bytes = solAbi.formatConstructorParams(abi, args);
|
||||||
address = web3.eth.sendTransaction({data: code + bytes});
|
options.data += bytes;
|
||||||
|
address = web3.eth.sendTransaction(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
var result = {};
|
var result = {};
|
||||||
|
|
|
@ -41,7 +41,7 @@ var isPredefinedBlockNumber = function (blockNumber) {
|
||||||
|
|
||||||
var inputDefaultBlockNumberFormatter = function (blockNumber) {
|
var inputDefaultBlockNumberFormatter = function (blockNumber) {
|
||||||
if (blockNumber === undefined) {
|
if (blockNumber === undefined) {
|
||||||
return config.ETH_DEFAULTBLOCK;
|
return config.defaultBlock;
|
||||||
}
|
}
|
||||||
return inputBlockNumberFormatter(blockNumber);
|
return inputBlockNumberFormatter(blockNumber);
|
||||||
};
|
};
|
||||||
|
@ -64,6 +64,8 @@ var inputBlockNumberFormatter = function (blockNumber) {
|
||||||
*/
|
*/
|
||||||
var inputTransactionFormatter = function (options){
|
var inputTransactionFormatter = function (options){
|
||||||
|
|
||||||
|
options.from = options.from || config.defaultAccount;
|
||||||
|
|
||||||
// make code -> data
|
// make code -> data
|
||||||
if (options.code) {
|
if (options.code) {
|
||||||
options.data = options.code;
|
options.data = options.code;
|
||||||
|
|
|
@ -234,7 +234,7 @@ describe('web3.eth.contract', function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
var Con = contract(description);
|
var Con = contract(description);
|
||||||
var myCon = new Con(code, 2);
|
var myCon = new Con({data: code}, 2);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue