diff --git a/packages/web3-eth-abi/src/types/address.js b/packages/web3-eth-abi/src/types/address.js index e825c89cace..c525a58fa99 100644 --- a/packages/web3-eth-abi/src/types/address.js +++ b/packages/web3-eth-abi/src/types/address.js @@ -15,7 +15,7 @@ var SolidityType = require('../type'); var SolidityTypeAddress = function () { this._inputFormatter = function(){ var args = Array.prototype.slice.call(arguments); - args[0] = formatters.inputAddressFormatter(args[0]); + args[0] = (!args[0] || args[0] === '0x0') ? '' : formatters.inputAddressFormatter(args[0]); return f.formatInputInt.apply(this, args); }; this._outputFormatter = f.formatOutputAddress; diff --git a/test/eth.abi.encodeParameters.js b/test/eth.abi.encodeParameters.js index 36e17e00a71..823ba109990 100644 --- a/test/eth.abi.encodeParameters.js +++ b/test/eth.abi.encodeParameters.js @@ -9,6 +9,9 @@ var tests = [{ },{ params: [['uint8[]','bytes32'], [['34','434'], '0x324567fff']], result: '0x0000000000000000000000000000000000000000000000000000000000000040324567fff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000001b2' +},{ + params: [['address','address','address', 'address'], ['0x90f8bf6a479f320ead074411a4b0e7944ea8c9c1','','0x0', null]], + result: '0x00000000000000000000000090f8bf6a479f320ead074411a4b0e7944ea8c9c1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' }]; describe('encodeParameters', function () {