aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Hysen <greg.hysen@gmail.com>2018-11-28 08:20:56 +0800
committerGreg Hysen <greg.hysen@gmail.com>2018-11-29 08:38:11 +0800
commitf196dc9e35d12aad281142371af4d2c32db1fd60 (patch)
tree9aafca26c7abd3ea395cf8943aca7eb7b5707c64
parente7bdf4717da9d1fd50cda3dba4e9549dfbc337f7 (diff)
downloaddexon-sol-tools-f196dc9e35d12aad281142371af4d2c32db1fd60.tar
dexon-sol-tools-f196dc9e35d12aad281142371af4d2c32db1fd60.tar.gz
dexon-sol-tools-f196dc9e35d12aad281142371af4d2c32db1fd60.tar.bz2
dexon-sol-tools-f196dc9e35d12aad281142371af4d2c32db1fd60.tar.lz
dexon-sol-tools-f196dc9e35d12aad281142371af4d2c32db1fd60.tar.xz
dexon-sol-tools-f196dc9e35d12aad281142371af4d2c32db1fd60.tar.zst
dexon-sol-tools-f196dc9e35d12aad281142371af4d2c32db1fd60.zip
Use ethUti.isValidAddress in encoder
-rw-r--r--packages/utils/src/abi_encoder/evm_data_types/address.ts9
-rw-r--r--packages/utils/test/abi_encoder/evm_data_types_test.ts4
2 files changed, 4 insertions, 9 deletions
diff --git a/packages/utils/src/abi_encoder/evm_data_types/address.ts b/packages/utils/src/abi_encoder/evm_data_types/address.ts
index 25ff55903..950901ea8 100644
--- a/packages/utils/src/abi_encoder/evm_data_types/address.ts
+++ b/packages/utils/src/abi_encoder/evm_data_types/address.ts
@@ -7,8 +7,6 @@ import { RawCalldata } from '../calldata';
import * as Constants from '../utils/constants';
export class Address extends AbstractDataTypes.Blob {
- public static ERROR_MESSAGE_ADDRESS_MUST_START_WITH_0X = "Address must start with '0x'";
- public static ERROR_MESSAGE_ADDRESS_MUST_BE_20_BYTES = 'Address must be 20 bytes';
private static readonly _SIZE_KNOWN_AT_COMPILE_TIME: boolean = true;
private static readonly _ADDRESS_SIZE_IN_BYTES = 20;
private static readonly _DECODED_ADDRESS_OFFSET_IN_BYTES = Constants.EVM_WORD_WIDTH_IN_BYTES -
@@ -28,13 +26,10 @@ export class Address extends AbstractDataTypes.Blob {
// Disable prefer-function-over-method for inherited abstract methods.
/* tslint:disable prefer-function-over-method */
public encodeValue(value: string): Buffer {
- if (!_.startsWith(value, '0x')) {
- throw new Error(Address.ERROR_MESSAGE_ADDRESS_MUST_START_WITH_0X);
+ if (!ethUtil.isValidAddress(value)) {
+ throw new Error(`Invalid address: '${value}'`);
}
const valueBuf = ethUtil.toBuffer(value);
- if (valueBuf.byteLength !== Address._ADDRESS_SIZE_IN_BYTES) {
- throw new Error(Address.ERROR_MESSAGE_ADDRESS_MUST_BE_20_BYTES);
- }
const encodedValueBuf = ethUtil.setLengthLeft(valueBuf, Constants.EVM_WORD_WIDTH_IN_BYTES);
return encodedValueBuf;
}
diff --git a/packages/utils/test/abi_encoder/evm_data_types_test.ts b/packages/utils/test/abi_encoder/evm_data_types_test.ts
index b99500265..11cebda55 100644
--- a/packages/utils/test/abi_encoder/evm_data_types_test.ts
+++ b/packages/utils/test/abi_encoder/evm_data_types_test.ts
@@ -387,7 +387,7 @@ describe('ABI Encoder: EVM Data Type Encoding/Decoding', () => {
// Encode Args and validate result
expect(() => {
dataType.encode(args);
- }).to.throw(AbiEncoder.Address.ERROR_MESSAGE_ADDRESS_MUST_START_WITH_0X);
+ }).to.throw(`Invalid address: '${args}'`);
});
it('Invalid Address - input is not 20 bytes', async () => {
// Create DataType object
@@ -398,7 +398,7 @@ describe('ABI Encoder: EVM Data Type Encoding/Decoding', () => {
// Encode Args and validate result
expect(() => {
dataType.encode(args);
- }).to.throw(AbiEncoder.Address.ERROR_MESSAGE_ADDRESS_MUST_BE_20_BYTES);
+ }).to.throw(`Invalid address: '${args}'`);
});
});