1 | class ContractABICoder {
|
2 | constructor(contract) {
|
3 | this.contract = contract;
|
4 | }
|
5 |
|
6 | decodeData(data) {
|
7 | const method = this.contract[data.slice(0, 10)];
|
8 | if (method) {
|
9 | return method.decodeData(data);
|
10 | } else if (data.startsWith(this.contract.constructor.bytecode)) {
|
11 | return this.contract.constructor.decodeData(data);
|
12 | }
|
13 | return undefined;
|
14 | }
|
15 |
|
16 | decodeLog(log) {
|
17 | const event = this.contract[log.topics[0]];
|
18 | if (event) {
|
19 | return event.decodeLog(log);
|
20 | }
|
21 | return undefined;
|
22 | }
|
23 | }
|
24 |
|
25 | module.exports = ContractABICoder;
|