Skip to content

Commit dc6dfc9

Browse files
Merge pull request #4180 from BitGo/WIN-1446-update-chainid-related-changes
fix(abstract-eth): fix issues related to chainid
2 parents a006d5a + 9114b1b commit dc6dfc9

File tree

8 files changed

+16
-17
lines changed

8 files changed

+16
-17
lines changed

modules/abstract-eth/src/lib/transactionBuilder.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -613,7 +613,8 @@ export abstract class TransactionBuilder extends BaseTransactionBuilder {
613613
if (!this._transfer) {
614614
throw new BuildTransactionError('Missing transfer information');
615615
}
616-
return this._transfer.signAndBuild();
616+
const chainId = this._common.chainIdBN().toString();
617+
return this._transfer.signAndBuild(chainId);
617618
}
618619

619620
private buildSendTransaction(): TxData {

modules/abstract-eth/src/lib/transferBuilder.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export class TransferBuilder {
1717
private _data: string;
1818
private _tokenContractAddress?: string;
1919
private _coin: Readonly<BaseCoin>;
20+
private _chainId?: string;
2021

2122
constructor(serializedData?: string) {
2223
if (serializedData) {
@@ -92,7 +93,8 @@ export class TransferBuilder {
9293
throw new InvalidParameterValueError('Invalid expiration time');
9394
}
9495

95-
signAndBuild(): string {
96+
signAndBuild(chainId?: string): string {
97+
this._chainId = chainId;
9698
if (this.hasMandatoryFields()) {
9799
if (this._tokenContractAddress !== undefined) {
98100
return sendMultiSigTokenData(
@@ -170,7 +172,7 @@ export class TransferBuilder {
170172
* @returns the string prefix
171173
*/
172174
protected getTokenOperationHashPrefix(): string {
173-
return (this._coin?.network as EthLikeNetwork)?.tokenOperationHashPrefix ?? 'ERC20';
175+
return (this._coin?.network as EthLikeNetwork)?.tokenOperationHashPrefix ?? `${this._chainId}-ERC20` ?? 'ERC20';
174176
}
175177

176178
/**
@@ -179,7 +181,7 @@ export class TransferBuilder {
179181
* @returns the string prefix
180182
*/
181183
protected getNativeOperationHashPrefix(): string {
182-
return (this._coin?.network as EthLikeNetwork)?.nativeCoinOperationHashPrefix ?? 'ETHER';
184+
return (this._coin?.network as EthLikeNetwork)?.nativeCoinOperationHashPrefix ?? `${this._chainId}` ?? 'ETHER';
183185
}
184186

185187
/** Return an expiration time, in seconds, set to one hour from now

modules/abstract-eth/src/lib/transferBuilders/baseNFTTransferBuilder.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export abstract class BaseNFTTransferBuilder {
1616
protected _tokenContractAddress: string;
1717
protected _coin: Readonly<BaseCoin>;
1818
protected _nativeCoinOperationHashPrefix?: string;
19+
protected _chainId?: string;
1920

2021
public abstract build(): string;
2122

@@ -100,7 +101,7 @@ export abstract class BaseNFTTransferBuilder {
100101
* @returns the string prefix
101102
*/
102103
protected getNativeOperationHashPrefix(): string {
103-
return this._nativeCoinOperationHashPrefix ?? 'ETHER';
104+
return this._nativeCoinOperationHashPrefix ?? this._chainId ?? 'ETHER';
104105
}
105106

106107
/**

modules/abstract-eth/src/lib/transferBuilders/transferBuilderERC1155.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ export class ERC1155TransferBuilder extends BaseNFTTransferBuilder {
5353
return this;
5454
}
5555

56-
signAndBuild(): string {
56+
signAndBuild(chainId?: string): string {
57+
this._chainId = chainId;
5758
const hasMandatoryFields = this.hasMandatoryFields();
5859
if (hasMandatoryFields) {
5960
this._data = this.build();

modules/abstract-eth/src/lib/transferBuilders/transferBuilderERC721.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ export class ERC721TransferBuilder extends BaseNFTTransferBuilder {
5050
return contractCall.serialize();
5151
}
5252

53-
signAndBuild(): string {
53+
signAndBuild(chainId?: string): string {
54+
this._chainId = chainId;
5455
if (this.hasMandatoryFields()) {
5556
this._data = this.build();
5657

modules/sdk-coin-arbeth/test/unit/transactionBuilder/send.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ describe('Arbeth transaction builder send', () => {
5252
const sequenceId = 5;
5353
txBuilder
5454
.transfer()
55-
.coin('tarbeth')
5655
.amount(amount)
5756
.to(recipient)
5857
.expirationTime(expireTime)
@@ -88,7 +87,6 @@ describe('Arbeth transaction builder send', () => {
8887
it('a send funds with amount 0 transaction', async () => {
8988
txBuilder
9089
.transfer()
91-
.coin('tarbeth')
9290
.amount('0')
9391
.to('0x19645032c7f1533395d44a629462e751084d3e4c')
9492
.expirationTime(1590066728)

modules/sdk-coin-eth/src/lib/transactionBuilder.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
11
import { BaseCoin as CoinConfig, EthereumNetwork } from '@bitgo/statics';
2-
import {
3-
Transaction,
4-
getCommon,
5-
TransactionBuilder as EthLikeTransactionBuilder,
6-
TransferBuilder,
7-
} from '@bitgo/abstract-eth';
2+
import { Transaction, getCommon, TransactionBuilder as EthLikeTransactionBuilder } from '@bitgo/abstract-eth';
83
import { BuildTransactionError, TransactionType } from '@bitgo/sdk-core';
94

5+
import { TransferBuilder } from './transferBuilder';
106
import { walletSimpleByteCode } from './walletUtil';
117
import { ERC721TransferBuilder, ERC1155TransferBuilder } from './transferBuilders';
128
/**
139
* Ethereum transaction builder.
1410
*/
1511
export class TransactionBuilder extends EthLikeTransactionBuilder {
12+
protected _transfer: TransferBuilder | ERC721TransferBuilder | ERC1155TransferBuilder;
1613
/**
1714
* Public constructor.
1815
*

modules/sdk-coin-opeth/test/unit/transactionBuilder/send.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ describe('Opeth transaction builder send', () => {
5252
const sequenceId = 5;
5353
txBuilder
5454
.transfer()
55-
.coin('topeth')
5655
.amount(amount)
5756
.to(recipient)
5857
.expirationTime(expireTime)
@@ -88,7 +87,6 @@ describe('Opeth transaction builder send', () => {
8887
it('a send funds with amount 0 transaction', async () => {
8988
txBuilder
9089
.transfer()
91-
.coin('topeth')
9290
.amount('0')
9391
.to('0x19645032c7f1533395d44a629462e751084d3e4c')
9492
.expirationTime(1590066728)

0 commit comments

Comments
 (0)