|
|
|
@ -15,17 +15,12 @@ |
|
|
|
|
along with ethereum.js. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
*/ |
|
|
|
|
/** @file main.js |
|
|
|
|
* @authors: |
|
|
|
|
* Jeffrey Wilcke <jeff@ethdev.com> |
|
|
|
|
* Marek Kotewicz <marek@ethdev.com> |
|
|
|
|
* Marian Oancea <marian@ethdev.com> |
|
|
|
|
* @date 2014 |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function isPromise(o) { |
|
|
|
|
return o instanceof Promise; |
|
|
|
|
} |
|
|
|
|
* @authors: |
|
|
|
|
* Jeffrey Wilcke <jeff@ethdev.com> |
|
|
|
|
* Marek Kotewicz <marek@ethdev.com> |
|
|
|
|
* Marian Oancea <marian@ethdev.com> |
|
|
|
|
* @date 2014 |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
function flattenPromise (obj) { |
|
|
|
|
if (obj instanceof Promise) { |
|
|
|
@ -46,7 +41,7 @@ |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (obj instanceof Object) { |
|
|
|
|
return new Promise(function (resolve) { |
|
|
|
|
var keys = Object.keys(obj); |
|
|
|
@ -68,82 +63,83 @@ |
|
|
|
|
|
|
|
|
|
var ethMethods = function () { |
|
|
|
|
var blockCall = function (args) { |
|
|
|
|
return typeof args[0] === "string" ? "blockByHash" : "blockByNumber"; |
|
|
|
|
return typeof args[0] === "string" ? "eth_blockByHash" : "eth_blockByNumber"; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
var transactionCall = function (args) { |
|
|
|
|
return typeof args[0] === "string" ? 'transactionByHash' : 'transactionByNumber'; |
|
|
|
|
return typeof args[0] === "string" ? 'eth_transactionByHash' : 'eth_transactionByNumber';
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
var uncleCall = function (args) { |
|
|
|
|
return typeof args[0] === "string" ? 'uncleByHash' : 'uncleByNumber'; |
|
|
|
|
return typeof args[0] === "string" ? 'eth_uncleByHash' : 'eth_uncleByNumber';
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
var methods = [ |
|
|
|
|
{ name: 'balanceAt', call: 'balanceAt' }, |
|
|
|
|
{ name: 'stateAt', call: 'stateAt' }, |
|
|
|
|
{ name: 'countAt', call: 'countAt'}, |
|
|
|
|
{ name: 'codeAt', call: 'codeAt' }, |
|
|
|
|
{ name: 'transact', call: 'transact' }, |
|
|
|
|
{ name: 'call', call: 'call' }, |
|
|
|
|
{ name: 'balanceAt', call: 'eth_balanceAt' }, |
|
|
|
|
{ name: 'stateAt', call: 'eth_stateAt' }, |
|
|
|
|
{ name: 'countAt', call: 'eth_countAt'}, |
|
|
|
|
{ name: 'codeAt', call: 'eth_codeAt' }, |
|
|
|
|
{ name: 'transact', call: 'eth_transact' }, |
|
|
|
|
{ name: 'call', call: 'eth_call' }, |
|
|
|
|
{ name: 'block', call: blockCall }, |
|
|
|
|
{ name: 'transaction', call: transactionCall }, |
|
|
|
|
{ name: 'uncle', call: uncleCall }, |
|
|
|
|
{ name: 'compile', call: 'compile' } |
|
|
|
|
{ name: 'compile', call: 'eth_compile' }, |
|
|
|
|
{ name: 'lll', call: 'eth_lll' } |
|
|
|
|
]; |
|
|
|
|
return methods; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
var ethProperties = function () { |
|
|
|
|
return [ |
|
|
|
|
{ name: 'coinbase', getter: 'coinbase', setter: 'setCoinbase' }, |
|
|
|
|
{ name: 'listening', getter: 'listening', setter: 'setListening' }, |
|
|
|
|
{ name: 'mining', getter: 'mining', setter: 'setMining' }, |
|
|
|
|
{ name: 'gasPrice', getter: 'gasPrice' }, |
|
|
|
|
{ name: 'account', getter: 'account' }, |
|
|
|
|
{ name: 'accounts', getter: 'accounts' }, |
|
|
|
|
{ name: 'peerCount', getter: 'peerCount' }, |
|
|
|
|
{ name: 'defaultBlock', getter: 'defaultBlock', setter: 'setDefaultBlock' }, |
|
|
|
|
{ name: 'number', getter: 'number'} |
|
|
|
|
{ name: 'coinbase', getter: 'eth_coinbase', setter: 'eth_setCoinbase' }, |
|
|
|
|
{ name: 'listening', getter: 'eth_listening', setter: 'eth_setListening' }, |
|
|
|
|
{ name: 'mining', getter: 'eth_mining', setter: 'eth_setMining' }, |
|
|
|
|
{ name: 'gasPrice', getter: 'eth_gasPrice' }, |
|
|
|
|
{ name: 'account', getter: 'eth_account' }, |
|
|
|
|
{ name: 'accounts', getter: 'eth_accounts' }, |
|
|
|
|
{ name: 'peerCount', getter: 'eth_peerCount' }, |
|
|
|
|
{ name: 'defaultBlock', getter: 'eth_defaultBlock', setter: 'eth_setDefaultBlock' }, |
|
|
|
|
{ name: 'number', getter: 'eth_number'} |
|
|
|
|
]; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
var dbMethods = function () { |
|
|
|
|
return [ |
|
|
|
|
{ name: 'put', call: 'put' }, |
|
|
|
|
{ name: 'get', call: 'get' }, |
|
|
|
|
{ name: 'putString', call: 'putString' }, |
|
|
|
|
{ name: 'getString', call: 'getString' } |
|
|
|
|
{ name: 'put', call: 'db_put' }, |
|
|
|
|
{ name: 'get', call: 'db_get' }, |
|
|
|
|
{ name: 'putString', call: 'db_putString' }, |
|
|
|
|
{ name: 'getString', call: 'db_getString' } |
|
|
|
|
]; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
var shhMethods = function () { |
|
|
|
|
return [ |
|
|
|
|
{ name: 'post', call: 'post' }, |
|
|
|
|
{ name: 'newIdentity', call: 'newIdentity' }, |
|
|
|
|
{ name: 'haveIdentity', call: 'haveIdentity' }, |
|
|
|
|
{ name: 'newGroup', call: 'newGroup' }, |
|
|
|
|
{ name: 'addToGroup', call: 'addToGroup' } |
|
|
|
|
{ name: 'post', call: 'shh_post' }, |
|
|
|
|
{ name: 'newIdentity', call: 'shh_newIdentity' }, |
|
|
|
|
{ name: 'haveIdentity', call: 'shh_haveIdentity' }, |
|
|
|
|
{ name: 'newGroup', call: 'shh_newGroup' }, |
|
|
|
|
{ name: 'addToGroup', call: 'shh_addToGroup' } |
|
|
|
|
]; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
var ethWatchMethods = function () { |
|
|
|
|
var newFilter = function (args) { |
|
|
|
|
return typeof args[0] === 'string' ? 'newFilterString' : 'newFilter'; |
|
|
|
|
return typeof args[0] === 'string' ? 'eth_newFilterString' : 'eth_newFilter'; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
return [ |
|
|
|
|
{ name: 'newFilter', call: newFilter }, |
|
|
|
|
{ name: 'uninstallFilter', call: 'uninstallFilter' }, |
|
|
|
|
{ name: 'getMessages', call: 'getMessages' } |
|
|
|
|
{ name: 'uninstallFilter', call: 'eth_uninstallFilter' }, |
|
|
|
|
{ name: 'getMessages', call: 'eth_getMessages' } |
|
|
|
|
]; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
var shhWatchMethods = function () { |
|
|
|
|
return [ |
|
|
|
|
{ name: 'newFilter', call: 'shhNewFilter' }, |
|
|
|
|
{ name: 'uninstallFilter', call: 'shhUninstallFilter' }, |
|
|
|
|
{ name: 'getMessage', call: 'shhGetMessages' } |
|
|
|
|
{ name: 'newFilter', call: 'shh_newFilter' }, |
|
|
|
|
{ name: 'uninstallFilter', call: 'shh_uninstallFilter' }, |
|
|
|
|
{ name: 'getMessage', call: 'shh_getMessages' } |
|
|
|
|
]; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
@ -204,7 +200,7 @@ |
|
|
|
|
Object.defineProperty(obj, property.name, proto); |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var web3 = { |
|
|
|
|
_callbacks: {}, |
|
|
|
|
_events: {}, |
|
|
|
@ -223,7 +219,7 @@ |
|
|
|
|
// Find termination
|
|
|
|
|
var str = ""; |
|
|
|
|
var i = 0, l = hex.length; |
|
|
|
|
if (hex.substring(0, 2) == '0x') |
|
|
|
|
if (hex.substring(0, 2) === '0x') |
|
|
|
|
i = 2; |
|
|
|
|
for(; i < l; i+=2) { |
|
|
|
|
var code = hex.charCodeAt(i); |
|
|
|
@ -246,7 +242,6 @@ |
|
|
|
|
var hex = this.toHex(str); |
|
|
|
|
while(hex.length < pad*2) |
|
|
|
|
hex += "00"; |
|
|
|
|
|
|
|
|
|
return "0x" + hex; |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
@ -302,11 +297,11 @@ |
|
|
|
|
setupMethods(web3.shh, shhMethods()); |
|
|
|
|
|
|
|
|
|
var ethWatch = { |
|
|
|
|
changed: 'changed' |
|
|
|
|
changed: 'eth_changed' |
|
|
|
|
}; |
|
|
|
|
setupMethods(ethWatch, ethWatchMethods()); |
|
|
|
|
var shhWatch = { |
|
|
|
|
changed: 'shhChanged' |
|
|
|
|
changed: 'shh_changed' |
|
|
|
|
}; |
|
|
|
|
setupMethods(shhWatch, shhWatchMethods()); |
|
|
|
|
|
|
|
|
@ -447,11 +442,11 @@ |
|
|
|
|
if(data._id) { |
|
|
|
|
var cb = web3._callbacks[data._id]; |
|
|
|
|
if (cb) { |
|
|
|
|
cb.call(this, data.error, data.data) |
|
|
|
|
cb.call(this, data.error, data.data); |
|
|
|
|
delete web3._callbacks[data._id]; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
module.exports = web3; |
|
|
|
|
|
|
|
|
|
module.exports = web3; |
|
|
|
|