|
|
|
@ -117,6 +117,13 @@ var formatInputBool = function (value) { |
|
|
|
|
return '000000000000000000000000000000000000000000000000000000000000000' + (value ? '1' : '0'); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/// Formats input value to byte representation of real
|
|
|
|
|
/// Values are multiplied by 2^m and encoded as integers
|
|
|
|
|
/// @returns byte representation of real
|
|
|
|
|
var formatInputReal = function (value) { |
|
|
|
|
return formatInputInt(new BigNumber(value).times(new BigNumber(2).pow(128)));
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
var dynamicTypeBytes = function (type, value) { |
|
|
|
|
// TODO: decide what to do with array of strings
|
|
|
|
|
if (arrayType(type) || prefixedType('string')(type)) |
|
|
|
@ -133,8 +140,8 @@ var setupInputTypes = function () { |
|
|
|
|
{ type: prefixedType('int'), format: formatInputInt }, |
|
|
|
|
{ type: prefixedType('hash'), format: formatInputInt }, |
|
|
|
|
{ type: prefixedType('string'), format: formatInputString },
|
|
|
|
|
{ type: prefixedType('real'), format: formatInputInt }, |
|
|
|
|
{ type: prefixedType('ureal'), format: formatInputInt }, |
|
|
|
|
{ type: prefixedType('real'), format: formatInputReal }, |
|
|
|
|
{ type: prefixedType('ureal'), format: formatInputReal }, |
|
|
|
|
{ type: namedType('address'), format: formatInputInt }, |
|
|
|
|
{ type: namedType('bool'), format: formatInputBool } |
|
|
|
|
]; |
|
|
|
@ -187,13 +194,19 @@ var toAbiInput = function (json, methodName, params) { |
|
|
|
|
return bytes; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/// Check if input value is negative
|
|
|
|
|
/// @param value is hex format
|
|
|
|
|
/// @returns true if it is negative, otherwise false
|
|
|
|
|
var signedIsNegative = function (value) { |
|
|
|
|
return (new BigNumber(value.substr(0, 1), 16).toString(2).substr(0, 1)) === '1'; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/// Formats input right-aligned input bytes to int
|
|
|
|
|
/// @returns right-aligned input bytes formatted to int
|
|
|
|
|
var formatOutputInt = function (value) { |
|
|
|
|
// check if it's negative number
|
|
|
|
|
// it it is, return two's complement
|
|
|
|
|
var firstBit = new BigNumber(value.substr(0, 1), 16).toString(2).substr(0, 1); |
|
|
|
|
if (firstBit === '1') { |
|
|
|
|
if (signedIsNegative(value)) { |
|
|
|
|
return new BigNumber(value, 16).minus(new BigNumber('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)).minus(1); |
|
|
|
|
} |
|
|
|
|
return new BigNumber(value, 16); |
|
|
|
@ -205,6 +218,16 @@ var formatOutputUInt = function (value) { |
|
|
|
|
return new BigNumber(value, 16); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/// @returns input bytes formatted to real
|
|
|
|
|
var formatOutputReal = function (value) { |
|
|
|
|
return formatOutputInt(value).dividedBy(new BigNumber(2).pow(128));
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/// @returns input bytes formatted to ureal
|
|
|
|
|
var formatOutputUReal = function (value) { |
|
|
|
|
return formatOutputUInt(value).dividedBy(new BigNumber(2).pow(128));
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/// @returns right-aligned input bytes formatted to hex
|
|
|
|
|
var formatOutputHash = function (value) { |
|
|
|
|
return "0x" + value; |
|
|
|
@ -240,8 +263,8 @@ var setupOutputTypes = function () { |
|
|
|
|
{ type: prefixedType('int'), format: formatOutputInt }, |
|
|
|
|
{ type: prefixedType('hash'), format: formatOutputHash }, |
|
|
|
|
{ type: prefixedType('string'), format: formatOutputString }, |
|
|
|
|
{ type: prefixedType('real'), format: formatOutputInt }, |
|
|
|
|
{ type: prefixedType('ureal'), format: formatOutputInt }, |
|
|
|
|
{ type: prefixedType('real'), format: formatOutputReal }, |
|
|
|
|
{ type: prefixedType('ureal'), format: formatOutputUReal }, |
|
|
|
|
{ type: namedType('address'), format: formatOutputAddress }, |
|
|
|
|
{ type: namedType('bool'), format: formatOutputBool } |
|
|
|
|
]; |
|
|
|
@ -387,10 +410,9 @@ module.exports = { |
|
|
|
|
* if it fails, it uses HttpRpcProvider |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
// TODO: is these line is supposed to be here?
|
|
|
|
|
var web3 = require('./web3'); // jshint ignore:line
|
|
|
|
|
if ("build" !== 'build') {/* |
|
|
|
|
var WebSocket = require('ws'); // jshint ignore:line
|
|
|
|
|
var web3 = require('./web3'); // jshint ignore:line
|
|
|
|
|
*/} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -433,7 +455,7 @@ var AutoProvider = function (userOptions) { |
|
|
|
|
self.poll = self.provider.poll.bind(self.provider); |
|
|
|
|
} |
|
|
|
|
self.sendQueue.forEach(function (payload) { |
|
|
|
|
self.provider(payload); |
|
|
|
|
self.provider.send(payload); |
|
|
|
|
}); |
|
|
|
|
self.onmessageQueue.forEach(function (handler) { |
|
|
|
|
self.provider.onmessage = handler; |
|
|
|
@ -474,7 +496,7 @@ Object.defineProperty(AutoProvider.prototype, 'onmessage', { |
|
|
|
|
|
|
|
|
|
module.exports = AutoProvider; |
|
|
|
|
|
|
|
|
|
},{}],3:[function(require,module,exports){ |
|
|
|
|
},{"./web3":8}],3:[function(require,module,exports){ |
|
|
|
|
/* |
|
|
|
|
This file is part of ethereum.js. |
|
|
|
|
|
|
|
|
@ -807,7 +829,6 @@ module.exports = HttpRpcProvider; |
|
|
|
|
* @date 2014 |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
// TODO: is these line is supposed to be here?
|
|
|
|
|
var web3 = require('./web3'); // jshint ignore:line
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|