diff options
author | Greg Hysen <greg.hysen@gmail.com> | 2018-11-20 03:18:34 +0800 |
---|---|---|
committer | Greg Hysen <greg.hysen@gmail.com> | 2018-11-29 08:38:10 +0800 |
commit | a2ad15be0dc500fa196021a5b32e80af8500043c (patch) | |
tree | 3f7dcd493c3a92e39b8583f67c6b79a02f579ce2 /packages/utils/src/abi_encoder/evm_data_types.ts | |
parent | a630312074758b31951c194533dcae596424592d (diff) | |
download | dexon-sol-tools-a2ad15be0dc500fa196021a5b32e80af8500043c.tar dexon-sol-tools-a2ad15be0dc500fa196021a5b32e80af8500043c.tar.gz dexon-sol-tools-a2ad15be0dc500fa196021a5b32e80af8500043c.tar.bz2 dexon-sol-tools-a2ad15be0dc500fa196021a5b32e80af8500043c.tar.lz dexon-sol-tools-a2ad15be0dc500fa196021a5b32e80af8500043c.tar.xz dexon-sol-tools-a2ad15be0dc500fa196021a5b32e80af8500043c.tar.zst dexon-sol-tools-a2ad15be0dc500fa196021a5b32e80af8500043c.zip |
Tests for Address
Diffstat (limited to 'packages/utils/src/abi_encoder/evm_data_types.ts')
-rw-r--r-- | packages/utils/src/abi_encoder/evm_data_types.ts | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/packages/utils/src/abi_encoder/evm_data_types.ts b/packages/utils/src/abi_encoder/evm_data_types.ts index bfb2808da..1ee95863b 100644 --- a/packages/utils/src/abi_encoder/evm_data_types.ts +++ b/packages/utils/src/abi_encoder/evm_data_types.ts @@ -20,6 +20,8 @@ export interface DataTypeStaticInterface { export class Address extends PayloadDataType { private static SIZE_KNOWN_AT_COMPILE_TIME: boolean = true; + 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"; constructor(dataItem: DataItem) { super(dataItem, EvmDataTypeFactory.getInstance(), Address.SIZE_KNOWN_AT_COMPILE_TIME); @@ -36,9 +38,16 @@ export class Address extends PayloadDataType { return type === 'address'; } - public encodeValue(value: boolean): Buffer { + public encodeValue(value: string): Buffer { + if (value.startsWith('0x') === false) { + throw new Error(Address.ERROR_MESSAGE_ADDRESS_MUST_START_WITH_0X); + } + const valueAsBuffer = ethUtil.toBuffer(value); + if (valueAsBuffer.byteLength !== 20) { + throw new Error(Address.ERROR_MESSAGE_ADDRESS_MUST_BE_20_BYTES); + } const evmWordWidth = 32; - const encodedValueBuf = ethUtil.setLengthLeft(ethUtil.toBuffer(value), evmWordWidth); + const encodedValueBuf = ethUtil.setLengthLeft(valueAsBuffer, evmWordWidth); return encodedValueBuf; } |