Merge branch 'develop' into icap
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
d8ad2b7a98
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "web3",
|
||||
"namespace": "ethereum",
|
||||
"version": "0.4.2",
|
||||
"version": "0.4.3",
|
||||
"description": "Ethereum Compatible JavaScript API",
|
||||
"main": [
|
||||
"./dist/web3.js",
|
||||
|
|
|
@ -577,7 +577,7 @@ SolidityParam.prototype.combine = function (param) {
|
|||
* @returns {Boolean}
|
||||
*/
|
||||
SolidityParam.prototype.isDynamic = function () {
|
||||
return this.value.length > 64;
|
||||
return this.value.length > 64 || this.offset !== undefined;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -693,7 +693,7 @@ SolidityParam.decodeBytes = function (bytes, index) {
|
|||
var offset = getOffset(bytes, index);
|
||||
|
||||
// 2 * , cause we also parse length
|
||||
return new SolidityParam(bytes.substr(offset * 2, 2 * 64));
|
||||
return new SolidityParam(bytes.substr(offset * 2, 2 * 64), 0);
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -708,7 +708,7 @@ SolidityParam.decodeArray = function (bytes, index) {
|
|||
index = index || 0;
|
||||
var offset = getOffset(bytes, index);
|
||||
var length = parseInt('0x' + bytes.substr(offset * 2, 64));
|
||||
return new SolidityParam(bytes.substr(offset * 2, (length + 1) * 64));
|
||||
return new SolidityParam(bytes.substr(offset * 2, (length + 1) * 64), 0);
|
||||
};
|
||||
|
||||
module.exports = SolidityParam;
|
||||
|
@ -1321,7 +1321,7 @@ module.exports = {
|
|||
|
||||
},{"bignumber.js":"bignumber.js"}],8:[function(require,module,exports){
|
||||
module.exports={
|
||||
"version": "0.4.2"
|
||||
"version": "0.4.3"
|
||||
}
|
||||
|
||||
},{}],9:[function(require,module,exports){
|
||||
|
@ -2807,13 +2807,30 @@ SolidityFunction.prototype.sendTransaction = function () {
|
|||
var payload = this.toPayload(args);
|
||||
|
||||
if (!callback) {
|
||||
web3.eth.sendTransaction(payload);
|
||||
return;
|
||||
return web3.eth.sendTransaction(payload);
|
||||
}
|
||||
|
||||
web3.eth.sendTransaction(payload, callback);
|
||||
};
|
||||
|
||||
/**
|
||||
* Should be used to estimateGas of solidity function
|
||||
*
|
||||
* @method estimateGas
|
||||
* @param {Object} options
|
||||
*/
|
||||
SolidityFunction.prototype.estimateGas = function () {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
var callback = this.extractCallback(args);
|
||||
var payload = this.toPayload(args);
|
||||
|
||||
if (!callback) {
|
||||
return web3.eth.estimateGas(payload);
|
||||
}
|
||||
|
||||
web3.eth.estimateGas(payload, callback);
|
||||
};
|
||||
|
||||
/**
|
||||
* Should be used to get function display name
|
||||
*
|
||||
|
@ -2881,6 +2898,7 @@ SolidityFunction.prototype.attachToContract = function (contract) {
|
|||
execute.request = this.request.bind(this);
|
||||
execute.call = this.call.bind(this);
|
||||
execute.sendTransaction = this.sendTransaction.bind(this);
|
||||
execute.estimateGas = this.estimateGas.bind(this);
|
||||
var displayName = this.displayName();
|
||||
if (!contract[displayName]) {
|
||||
contract[displayName] = execute;
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -577,7 +577,7 @@ SolidityParam.prototype.combine = function (param) {
|
|||
* @returns {Boolean}
|
||||
*/
|
||||
SolidityParam.prototype.isDynamic = function () {
|
||||
return this.value.length > 64;
|
||||
return this.value.length > 64 || this.offset !== undefined;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -693,7 +693,7 @@ SolidityParam.decodeBytes = function (bytes, index) {
|
|||
var offset = getOffset(bytes, index);
|
||||
|
||||
// 2 * , cause we also parse length
|
||||
return new SolidityParam(bytes.substr(offset * 2, 2 * 64));
|
||||
return new SolidityParam(bytes.substr(offset * 2, 2 * 64), 0);
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -708,7 +708,7 @@ SolidityParam.decodeArray = function (bytes, index) {
|
|||
index = index || 0;
|
||||
var offset = getOffset(bytes, index);
|
||||
var length = parseInt('0x' + bytes.substr(offset * 2, 64));
|
||||
return new SolidityParam(bytes.substr(offset * 2, (length + 1) * 64));
|
||||
return new SolidityParam(bytes.substr(offset * 2, (length + 1) * 64), 0);
|
||||
};
|
||||
|
||||
module.exports = SolidityParam;
|
||||
|
@ -1321,7 +1321,7 @@ module.exports = {
|
|||
|
||||
},{"bignumber.js":"bignumber.js"}],8:[function(require,module,exports){
|
||||
module.exports={
|
||||
"version": "0.4.2"
|
||||
"version": "0.4.3"
|
||||
}
|
||||
|
||||
},{}],9:[function(require,module,exports){
|
||||
|
@ -2807,13 +2807,30 @@ SolidityFunction.prototype.sendTransaction = function () {
|
|||
var payload = this.toPayload(args);
|
||||
|
||||
if (!callback) {
|
||||
web3.eth.sendTransaction(payload);
|
||||
return;
|
||||
return web3.eth.sendTransaction(payload);
|
||||
}
|
||||
|
||||
web3.eth.sendTransaction(payload, callback);
|
||||
};
|
||||
|
||||
/**
|
||||
* Should be used to estimateGas of solidity function
|
||||
*
|
||||
* @method estimateGas
|
||||
* @param {Object} options
|
||||
*/
|
||||
SolidityFunction.prototype.estimateGas = function () {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
var callback = this.extractCallback(args);
|
||||
var payload = this.toPayload(args);
|
||||
|
||||
if (!callback) {
|
||||
return web3.eth.estimateGas(payload);
|
||||
}
|
||||
|
||||
web3.eth.estimateGas(payload, callback);
|
||||
};
|
||||
|
||||
/**
|
||||
* Should be used to get function display name
|
||||
*
|
||||
|
@ -2881,6 +2898,7 @@ SolidityFunction.prototype.attachToContract = function (contract) {
|
|||
execute.request = this.request.bind(this);
|
||||
execute.call = this.call.bind(this);
|
||||
execute.sendTransaction = this.sendTransaction.bind(this);
|
||||
execute.estimateGas = this.estimateGas.bind(this);
|
||||
var displayName = this.displayName();
|
||||
if (!contract[displayName]) {
|
||||
contract[displayName] = execute;
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -16,23 +16,10 @@
|
|||
" }\n" +
|
||||
"}\n";
|
||||
|
||||
var code = web3.eth.compile.solidity(source).code;
|
||||
/*var code = "605280600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa114602e57005b60376004356041565b8060005260206000f35b6000600782029050604d565b91905056";*/
|
||||
|
||||
// contract description, this is autogenerated using solc CLI
|
||||
var desc = [{
|
||||
"constant" : true,
|
||||
"inputs" : [{
|
||||
"name" : "a",
|
||||
"type" : "uint256"
|
||||
}],
|
||||
"name" : "multiply",
|
||||
"outputs" : [{
|
||||
"name" : "d",
|
||||
"type" : "uint256"
|
||||
}],
|
||||
"type" : "function"
|
||||
}];
|
||||
var compiled = web3.eth.compile.solidity(source);
|
||||
var code = compiled.test.code;
|
||||
// contract json abi, this is autogenerated using solc CLI
|
||||
var abi = compiled.test.info.abiDefinition;
|
||||
|
||||
var myContract;
|
||||
|
||||
|
@ -47,7 +34,7 @@
|
|||
var watch = web3.eth.filter('latest');
|
||||
|
||||
// create contract
|
||||
myContract = web3.eth.contract(desc).new({data: code});
|
||||
myContract = web3.eth.contract(abi).new({data: code});
|
||||
console.log('address: ' + myContract.address);
|
||||
document.getElementById('status').innerText = "transaction sent, waiting for confirmation";
|
||||
watch.watch(function (err, hash) {
|
||||
|
|
|
@ -18,29 +18,10 @@
|
|||
" } " +
|
||||
" uint x; " +
|
||||
"}";
|
||||
var code = web3.eth.compile.solidity(source).code;
|
||||
/*var code = "5b60456000600050819055505b608c8060196000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063371303c014602e57005b6034603a565b60006000f35b6000600081815054600101919050819055506001600260006000505406147f6e61ef44ac2747ff8b84d353a908eb8bd5c3fb118334d57698c5cfc7041196ad600060006000505481526020016000a25b56";*/
|
||||
|
||||
var desc = [{
|
||||
"constant" : false,
|
||||
"inputs" : [],
|
||||
"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 compiled = web3.eth.compile.solidity(source);
|
||||
var code = compiled.Contract.code;
|
||||
var abi = compiled.Contract.info.abiDefinition;
|
||||
|
||||
var address;
|
||||
var contract;
|
||||
|
@ -55,7 +36,7 @@
|
|||
|
||||
var watch = web3.eth.filter('latest');
|
||||
|
||||
contract = web3.eth.contract(desc).new({data: code});
|
||||
contract = web3.eth.contract(abi).new({data: code});
|
||||
|
||||
console.log('address: ' + contract.address);
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ SolidityParam.prototype.combine = function (param) {
|
|||
* @returns {Boolean}
|
||||
*/
|
||||
SolidityParam.prototype.isDynamic = function () {
|
||||
return this.value.length > 64;
|
||||
return this.value.length > 64 || this.offset !== undefined;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -188,7 +188,7 @@ SolidityParam.decodeBytes = function (bytes, index) {
|
|||
var offset = getOffset(bytes, index);
|
||||
|
||||
// 2 * , cause we also parse length
|
||||
return new SolidityParam(bytes.substr(offset * 2, 2 * 64));
|
||||
return new SolidityParam(bytes.substr(offset * 2, 2 * 64), 0);
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -203,7 +203,7 @@ SolidityParam.decodeArray = function (bytes, index) {
|
|||
index = index || 0;
|
||||
var offset = getOffset(bytes, index);
|
||||
var length = parseInt('0x' + bytes.substr(offset * 2, 64));
|
||||
return new SolidityParam(bytes.substr(offset * 2, (length + 1) * 64));
|
||||
return new SolidityParam(bytes.substr(offset * 2, (length + 1) * 64), 0);
|
||||
};
|
||||
|
||||
module.exports = SolidityParam;
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
{
|
||||
"version": "0.4.2"
|
||||
"version": "0.4.3"
|
||||
}
|
||||
|
|
|
@ -122,13 +122,30 @@ SolidityFunction.prototype.sendTransaction = function () {
|
|||
var payload = this.toPayload(args);
|
||||
|
||||
if (!callback) {
|
||||
web3.eth.sendTransaction(payload);
|
||||
return;
|
||||
return web3.eth.sendTransaction(payload);
|
||||
}
|
||||
|
||||
web3.eth.sendTransaction(payload, callback);
|
||||
};
|
||||
|
||||
/**
|
||||
* Should be used to estimateGas of solidity function
|
||||
*
|
||||
* @method estimateGas
|
||||
* @param {Object} options
|
||||
*/
|
||||
SolidityFunction.prototype.estimateGas = function () {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
var callback = this.extractCallback(args);
|
||||
var payload = this.toPayload(args);
|
||||
|
||||
if (!callback) {
|
||||
return web3.eth.estimateGas(payload);
|
||||
}
|
||||
|
||||
web3.eth.estimateGas(payload, callback);
|
||||
};
|
||||
|
||||
/**
|
||||
* Should be used to get function display name
|
||||
*
|
||||
|
@ -196,6 +213,7 @@ SolidityFunction.prototype.attachToContract = function (contract) {
|
|||
execute.request = this.request.bind(this);
|
||||
execute.call = this.call.bind(this);
|
||||
execute.sendTransaction = this.sendTransaction.bind(this);
|
||||
execute.estimateGas = this.estimateGas.bind(this);
|
||||
var displayName = this.displayName();
|
||||
if (!contract[displayName]) {
|
||||
contract[displayName] = execute;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* jshint ignore:start */
|
||||
Package.describe({
|
||||
name: 'ethereum:web3',
|
||||
version: '0.4.2',
|
||||
version: '0.4.3',
|
||||
summary: 'Ethereum JavaScript API, middleware to talk to a ethreum node over RPC',
|
||||
git: 'https://github.com/ethereum/ethereum.js',
|
||||
// By default, Meteor will default to using README.md for documentation.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "web3",
|
||||
"namespace": "ethereum",
|
||||
"version": "0.4.2",
|
||||
"version": "0.4.3",
|
||||
"description": "Ethereum JavaScript API, middleware to talk to a ethereum node over RPC",
|
||||
"main": "./index.js",
|
||||
"directories": {
|
||||
|
|
|
@ -24,6 +24,8 @@ describe('lib/solidity/coder', function () {
|
|||
test({ type: 'bytes', expected: 'gavofyork', value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000009' +
|
||||
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'int[]', expected: [], value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'int[]', expected: [new bn(3)], value: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000001' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000003'});
|
||||
|
|
|
@ -24,6 +24,8 @@ describe('lib/solidity/coder', function () {
|
|||
test({ type: 'bytes', value: 'gavofyork', expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000009' +
|
||||
'6761766f66796f726b0000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'int[]', value: [], expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000000'});
|
||||
test({ type: 'int[]', value: [3], expected: '0000000000000000000000000000000000000000000000000000000000000020' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000001' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000003'});
|
||||
|
|
|
@ -296,6 +296,31 @@ describe('web3.eth.contract', function () {
|
|||
});
|
||||
});
|
||||
|
||||
it('should explicitly estimateGas with optional params', function () {
|
||||
var provider = new FakeHttpProvider();
|
||||
web3.setProvider(provider);
|
||||
web3.reset();
|
||||
var signature = 'send(address,uint256)';
|
||||
var address = '0x1234567890123456789012345678901234567890';
|
||||
provider.injectValidation(function (payload) {
|
||||
assert.equal(payload.method, 'eth_estimateGas');
|
||||
assert.deepEqual(payload.params, [{
|
||||
data: '0x' + sha3(signature).slice(0, 8) +
|
||||
'0000000000000000000000001234567890123456789012345678901234567890' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000011' ,
|
||||
to: address,
|
||||
from: address,
|
||||
gas: '0xc350',
|
||||
gasPrice: '0xbb8',
|
||||
value: '0x2710'
|
||||
}]);
|
||||
});
|
||||
|
||||
var contract = web3.eth.contract(desc).at(address);
|
||||
|
||||
contract.send.estimateGas(address, 17, {from: address, gas: 50000, gasPrice: 3000, value: 10000});
|
||||
});
|
||||
|
||||
it('should call testArr method and properly parse result', function () {
|
||||
var provider = new FakeHttpProvider2();
|
||||
web3.setProvider(provider);
|
||||
|
|
Loading…
Reference in New Issue