aboutsummaryrefslogtreecommitdiffstats
path: root/packages/utils/src/abi_encoder/abstract_data_types/data_type.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/utils/src/abi_encoder/abstract_data_types/data_type.ts')
-rw-r--r--packages/utils/src/abi_encoder/abstract_data_types/data_type.ts8
1 files changed, 7 insertions, 1 deletions
diff --git a/packages/utils/src/abi_encoder/abstract_data_types/data_type.ts b/packages/utils/src/abi_encoder/abstract_data_types/data_type.ts
index dd166b19c..450080353 100644
--- a/packages/utils/src/abi_encoder/abstract_data_types/data_type.ts
+++ b/packages/utils/src/abi_encoder/abstract_data_types/data_type.ts
@@ -36,7 +36,13 @@ export abstract class DataType {
return calldataHex;
}
- public decode(calldata: string, rules?: DecodingRules, hasSelector: boolean = false): any {
+ public decode(calldata: string, rules?: DecodingRules, selector?: string): any {
+ if (selector && !calldata.startsWith(selector)) {
+ throw new Error(
+ `Tried to decode calldata, but it was missing the function selector. Expected '${selector}'.`,
+ );
+ }
+ const hasSelector = selector ? true : false;
const rawCalldata = new RawCalldata(calldata, hasSelector);
const rules_ = rules ? rules : Constants.DEFAULT_DECODING_RULES;
const value = this.generateValue(rawCalldata, rules_);