diff options
Diffstat (limited to 'lib/contract.js')
-rw-r--r-- | lib/contract.js | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/lib/contract.js b/lib/contract.js index abd8e5bdf..aa4188d40 100644 --- a/lib/contract.js +++ b/lib/contract.js @@ -23,9 +23,6 @@ var web3 = require('./web3'); // jshint ignore:line var abi = require('./abi'); -/// method signature length in bytes -var ETH_METHOD_SIGNATURE_LENGTH = 4; - /** * This method should be called when we want to call / transact some solidity method from javascript * it returns an object which has same methods available as solidity contract description @@ -60,29 +57,29 @@ var contract = function (address, desc) { var impl = function () { var params = Array.prototype.slice.call(arguments); var parsed = inputParser[displayName][typeName].apply(null, params); - - var onSuccess = function (result) { - return outputParser[displayName][typeName](result); - }; + var signature = abi.methodSignature(method.name); return { call: function (extra) { extra = extra || {}; extra.to = address; - return abi.methodSignature(desc, method.name).then(function (signature) { - extra.data = signature.slice(0, 2 + ETH_METHOD_SIGNATURE_LENGTH * 2) + parsed; - return web3.eth.call(extra).then(onSuccess); - }); + extra.data = signature + parsed; + + var result = web3.eth.call(extra); + return outputParser[displayName][typeName](result); }, transact: function (extra) { extra = extra || {}; extra.to = address; - return abi.methodSignature(desc, method.name).then(function (signature) { - extra.data = signature.slice(0, 2 + ETH_METHOD_SIGNATURE_LENGTH * 2) + parsed; - web3._currentContractAbi = desc; - web3._currentContractAddress = address; - return web3.eth.transact(extra).then(onSuccess); - }); + extra.data = signature + parsed; + + /// it's used by natspec.js + /// TODO: figure a better way to solve this + web3._currentContractAbi = desc; + web3._currentContractAddress = address; + + var result = web3.eth.transact(extra); + return outputParser[displayName][typeName](result); } }; }; |