From 00b89083cc016cf0b313cd82a495476030376712 Mon Sep 17 00:00:00 2001 From: Kien Ngo Date: Fri, 20 Oct 2023 01:31:36 -0400 Subject: [PATCH 1/9] Improve erc-20 methods --- .../evm/core/classes/erc-20-batch-mintable.ts | 19 ++-- .../src/evm/core/classes/erc-20-burnable.ts | 8 +- .../src/evm/core/classes/erc-20-history.ts | 20 +++-- .../src/evm/core/classes/erc-20-mintable.ts | 8 +- .../core/classes/erc-20-signature-mintable.ts | 90 ++++++++++--------- 5 files changed, 82 insertions(+), 63 deletions(-) diff --git a/packages/sdk/src/evm/core/classes/erc-20-batch-mintable.ts b/packages/sdk/src/evm/core/classes/erc-20-batch-mintable.ts index bc5779c4108..e8860874ec0 100644 --- a/packages/sdk/src/evm/core/classes/erc-20-batch-mintable.ts +++ b/packages/sdk/src/evm/core/classes/erc-20-batch-mintable.ts @@ -57,17 +57,18 @@ export class Erc20BatchMintable implements DetectableFeature { */ to = /* @__PURE__ */ buildTransactionFunction( async (args: TokenMintInput[]) => { - const encoded: string[] = []; const contractEncoder = new ContractEncoder(this.contractWrapper); - - for (const arg of args) { - encoded.push( - contractEncoder.encode("mintTo", [ - await resolveAddress(arg.toAddress), - await this.erc20.normalizeAmount(arg.amount), + const _items = await Promise.all( + args.map((item) => + Promise.all([ + resolveAddress(item.toAddress), + this.erc20.normalizeAmount(item.amount), ]), - ); - } + ), + ); + const encoded = _items.map(([address, amount]) => + contractEncoder.encode("mintTo", [address, amount]), + ); return Transaction.fromContractWrapper({ contractWrapper: this.contractWrapper, diff --git a/packages/sdk/src/evm/core/classes/erc-20-burnable.ts b/packages/sdk/src/evm/core/classes/erc-20-burnable.ts index 2749b65aef3..d673573c628 100644 --- a/packages/sdk/src/evm/core/classes/erc-20-burnable.ts +++ b/packages/sdk/src/evm/core/classes/erc-20-burnable.ts @@ -62,10 +62,10 @@ export class Erc20Burnable implements DetectableFeature { return Transaction.fromContractWrapper({ contractWrapper: this.contractWrapper, method: "burnFrom", - args: [ - await resolveAddress(holder), - await this.erc20.normalizeAmount(amount), - ], + args: await Promise.all([ + resolveAddress(holder), + this.erc20.normalizeAmount(amount), + ]), }); }, ); diff --git a/packages/sdk/src/evm/core/classes/erc-20-history.ts b/packages/sdk/src/evm/core/classes/erc-20-history.ts index c5473541954..71bdb4decfb 100644 --- a/packages/sdk/src/evm/core/classes/erc-20-history.ts +++ b/packages/sdk/src/evm/core/classes/erc-20-history.ts @@ -55,14 +55,24 @@ export class TokenERC20History { balances[to] = balances[to].add(amount); } }); + const _promises = Object.entries(balances).map(async ([addr, value]) => { + const result = await fetchCurrencyValue( + this.contractWrapper.getProvider(), + this.contractWrapper.address, + value, + ); + return { [addr]: result }; + }); + const balanceData = (await Promise.all(_promises)).reduce( + (result, currentObject) => { + return { ...result, ...currentObject }; + }, + {}, + ); return Promise.all( Object.keys(balances).map(async (addr) => ({ holder: addr, - balance: await fetchCurrencyValue( - this.contractWrapper.getProvider(), - this.contractWrapper.address, - balances[addr], - ), + balance: balanceData[addr], })), ); } diff --git a/packages/sdk/src/evm/core/classes/erc-20-mintable.ts b/packages/sdk/src/evm/core/classes/erc-20-mintable.ts index 37142fd79f2..c636cf4a725 100644 --- a/packages/sdk/src/evm/core/classes/erc-20-mintable.ts +++ b/packages/sdk/src/evm/core/classes/erc-20-mintable.ts @@ -66,10 +66,10 @@ export class Erc20Mintable implements DetectableFeature { return Transaction.fromContractWrapper({ contractWrapper: this.contractWrapper, method: "mintTo", - args: [ - await resolveAddress(to), - await this.erc20.normalizeAmount(amount), - ], + args: await Promise.all([ + resolveAddress(to), + this.erc20.normalizeAmount(amount), + ]), }); } diff --git a/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts b/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts index e6880149357..a72d167778c 100644 --- a/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts +++ b/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts @@ -63,8 +63,10 @@ export class Erc20SignatureMintable implements DetectableFeature { async (signedPayload: SignedPayload20) => { const mintRequest = signedPayload.payload; const signature = signedPayload.signature; - const message = await this.mapPayloadToContractStruct(mintRequest); - const overrides = await this.contractWrapper.getCallOverrides(); + const [message, overrides] = await Promise.all([ + this.mapPayloadToContractStruct(mintRequest), + this.contractWrapper.getCallOverrides(), + ]); // TODO: Transaction Sequence Pattern await setErc20Allowance( this.contractWrapper, @@ -89,23 +91,24 @@ export class Erc20SignatureMintable implements DetectableFeature { */ mintBatch = /* @__PURE__ */ buildTransactionFunction( async (signedPayloads: SignedPayload20[]) => { - const contractPayloads = await Promise.all( - signedPayloads.map(async (s) => { - const message = await this.mapPayloadToContractStruct(s.payload); - const signature = s.signature; - const price = s.payload.price; - if (BigNumber.from(price).gt(0)) { - throw new Error( - "Can only batch free mints. For mints with a price, use regular mint()", - ); - } - return { - message, - signature, - }; - }), - ); - + const contractPayloads = ( + await Promise.all( + signedPayloads.map((s) => this.mapPayloadToContractStruct(s.payload)), + ) + ).map((message, index) => { + const s = signedPayloads[index]; + const signature = s.signature; + const price = s.payload.price; + if (BigNumber.from(price).gt(0)) { + throw new Error( + "Can only batch free mints. For mints with a price, use regular mint()", + ); + } + return { + message, + signature, + }; + }); const contractEncoder = new ContractEncoder(this.contractWrapper); const encoded = contractPayloads.map((p) => { return contractEncoder.encode("mintWithSignature", [ @@ -208,17 +211,19 @@ export class Erc20SignatureMintable implements DetectableFeature { payloadsToSign.map((m) => Signature20PayloadInput.parseAsync(m)), ); - const chainId = await this.contractWrapper.getChainID(); + const [chainId, name] = await Promise.all([ + this.contractWrapper.getChainID(), + // ERC20Permit (EIP-712) spec differs from signature mint 721, 1155. + this.contractWrapper.read("name", []), + ]); const signer = this.contractWrapper.getSigner(); invariant(signer, "No signer available"); - - // ERC20Permit (EIP-712) spec differs from signature mint 721, 1155. - const name = await this.contractWrapper.read("name", []); - - return await Promise.all( - parsedRequests.map(async (m) => { - const finalPayload = await Signature20PayloadOutput.parseAsync(m); - const signature = await this.contractWrapper.signTypedData( + const _finalPayloads: PayloadWithUri20[] = await Promise.all( + parsedRequests.map((m) => Signature20PayloadOutput.parseAsync(m)), + ); + const _signatures = await Promise.all( + _finalPayloads.map((payload) => + this.contractWrapper.signTypedData( signer, { name, @@ -227,14 +232,14 @@ export class Erc20SignatureMintable implements DetectableFeature { verifyingContract: this.contractWrapper.address, }, { MintRequest: MintRequest20 }, - await this.mapPayloadToContractStruct(finalPayload), - ); - return { - payload: finalPayload, - signature: signature.toString(), - }; - }), + payload, + ), + ), ); + return parsedRequests.map((_, index) => ({ + payload: _finalPayloads[index], + signature: _signatures[index] as string, + })); } /** ****************************** @@ -251,14 +256,17 @@ export class Erc20SignatureMintable implements DetectableFeature { private async mapPayloadToContractStruct( mintRequest: PayloadWithUri20, ): Promise { - const normalizedPrice = await normalizePriceValue( - this.contractWrapper.getProvider(), - mintRequest.price, - mintRequest.currencyAddress, - ); + const [normalizedPrice, _decimals] = await Promise.all([ + normalizePriceValue( + this.contractWrapper.getProvider(), + mintRequest.price, + mintRequest.currencyAddress, + ), + this.contractWrapper.read("decimals", []), + ]); const amountWithDecimals = utils.parseUnits( mintRequest.quantity, - await this.contractWrapper.read("decimals", []), + _decimals, ); return { to: mintRequest.to, From 68425fd8ee6a3d07554dc2eafb6644c03424cd89 Mon Sep 17 00:00:00 2001 From: Kien Ngo Date: Fri, 20 Oct 2023 01:32:08 -0400 Subject: [PATCH 2/9] Add changeset --- .changeset/little-jars-lay.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/little-jars-lay.md diff --git a/.changeset/little-jars-lay.md b/.changeset/little-jars-lay.md new file mode 100644 index 00000000000..21bec203239 --- /dev/null +++ b/.changeset/little-jars-lay.md @@ -0,0 +1,5 @@ +--- +"@thirdweb-dev/sdk": patch +--- + +[SDK] Perf inmprovement for erc-20 methods From 5ec92660b40074704650d0543588ff451610182c Mon Sep 17 00:00:00 2001 From: Kien Ngo Date: Fri, 20 Oct 2023 15:13:48 -0400 Subject: [PATCH 3/9] Revert test --- .../core/classes/erc-20-signature-mintable.ts | 90 +++++++++---------- 1 file changed, 41 insertions(+), 49 deletions(-) diff --git a/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts b/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts index a72d167778c..e6880149357 100644 --- a/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts +++ b/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts @@ -63,10 +63,8 @@ export class Erc20SignatureMintable implements DetectableFeature { async (signedPayload: SignedPayload20) => { const mintRequest = signedPayload.payload; const signature = signedPayload.signature; - const [message, overrides] = await Promise.all([ - this.mapPayloadToContractStruct(mintRequest), - this.contractWrapper.getCallOverrides(), - ]); + const message = await this.mapPayloadToContractStruct(mintRequest); + const overrides = await this.contractWrapper.getCallOverrides(); // TODO: Transaction Sequence Pattern await setErc20Allowance( this.contractWrapper, @@ -91,24 +89,23 @@ export class Erc20SignatureMintable implements DetectableFeature { */ mintBatch = /* @__PURE__ */ buildTransactionFunction( async (signedPayloads: SignedPayload20[]) => { - const contractPayloads = ( - await Promise.all( - signedPayloads.map((s) => this.mapPayloadToContractStruct(s.payload)), - ) - ).map((message, index) => { - const s = signedPayloads[index]; - const signature = s.signature; - const price = s.payload.price; - if (BigNumber.from(price).gt(0)) { - throw new Error( - "Can only batch free mints. For mints with a price, use regular mint()", - ); - } - return { - message, - signature, - }; - }); + const contractPayloads = await Promise.all( + signedPayloads.map(async (s) => { + const message = await this.mapPayloadToContractStruct(s.payload); + const signature = s.signature; + const price = s.payload.price; + if (BigNumber.from(price).gt(0)) { + throw new Error( + "Can only batch free mints. For mints with a price, use regular mint()", + ); + } + return { + message, + signature, + }; + }), + ); + const contractEncoder = new ContractEncoder(this.contractWrapper); const encoded = contractPayloads.map((p) => { return contractEncoder.encode("mintWithSignature", [ @@ -211,19 +208,17 @@ export class Erc20SignatureMintable implements DetectableFeature { payloadsToSign.map((m) => Signature20PayloadInput.parseAsync(m)), ); - const [chainId, name] = await Promise.all([ - this.contractWrapper.getChainID(), - // ERC20Permit (EIP-712) spec differs from signature mint 721, 1155. - this.contractWrapper.read("name", []), - ]); + const chainId = await this.contractWrapper.getChainID(); const signer = this.contractWrapper.getSigner(); invariant(signer, "No signer available"); - const _finalPayloads: PayloadWithUri20[] = await Promise.all( - parsedRequests.map((m) => Signature20PayloadOutput.parseAsync(m)), - ); - const _signatures = await Promise.all( - _finalPayloads.map((payload) => - this.contractWrapper.signTypedData( + + // ERC20Permit (EIP-712) spec differs from signature mint 721, 1155. + const name = await this.contractWrapper.read("name", []); + + return await Promise.all( + parsedRequests.map(async (m) => { + const finalPayload = await Signature20PayloadOutput.parseAsync(m); + const signature = await this.contractWrapper.signTypedData( signer, { name, @@ -232,14 +227,14 @@ export class Erc20SignatureMintable implements DetectableFeature { verifyingContract: this.contractWrapper.address, }, { MintRequest: MintRequest20 }, - payload, - ), - ), + await this.mapPayloadToContractStruct(finalPayload), + ); + return { + payload: finalPayload, + signature: signature.toString(), + }; + }), ); - return parsedRequests.map((_, index) => ({ - payload: _finalPayloads[index], - signature: _signatures[index] as string, - })); } /** ****************************** @@ -256,17 +251,14 @@ export class Erc20SignatureMintable implements DetectableFeature { private async mapPayloadToContractStruct( mintRequest: PayloadWithUri20, ): Promise { - const [normalizedPrice, _decimals] = await Promise.all([ - normalizePriceValue( - this.contractWrapper.getProvider(), - mintRequest.price, - mintRequest.currencyAddress, - ), - this.contractWrapper.read("decimals", []), - ]); + const normalizedPrice = await normalizePriceValue( + this.contractWrapper.getProvider(), + mintRequest.price, + mintRequest.currencyAddress, + ); const amountWithDecimals = utils.parseUnits( mintRequest.quantity, - _decimals, + await this.contractWrapper.read("decimals", []), ); return { to: mintRequest.to, From a9f3ad144d2e4cdd2d430e7625168e5386839f8f Mon Sep 17 00:00:00 2001 From: Kien Ngo Date: Fri, 20 Oct 2023 15:48:02 -0400 Subject: [PATCH 4/9] Update --- .../core/classes/erc-20-signature-mintable.ts | 37 ++++++++++--------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts b/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts index e6880149357..025ac786156 100644 --- a/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts +++ b/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts @@ -63,8 +63,10 @@ export class Erc20SignatureMintable implements DetectableFeature { async (signedPayload: SignedPayload20) => { const mintRequest = signedPayload.payload; const signature = signedPayload.signature; - const message = await this.mapPayloadToContractStruct(mintRequest); - const overrides = await this.contractWrapper.getCallOverrides(); + const [message, overrides] = await Promise.all([ + this.mapPayloadToContractStruct(mintRequest), + this.contractWrapper.getCallOverrides(), + ]); // TODO: Transaction Sequence Pattern await setErc20Allowance( this.contractWrapper, @@ -89,22 +91,23 @@ export class Erc20SignatureMintable implements DetectableFeature { */ mintBatch = /* @__PURE__ */ buildTransactionFunction( async (signedPayloads: SignedPayload20[]) => { - const contractPayloads = await Promise.all( - signedPayloads.map(async (s) => { - const message = await this.mapPayloadToContractStruct(s.payload); - const signature = s.signature; - const price = s.payload.price; - if (BigNumber.from(price).gt(0)) { - throw new Error( - "Can only batch free mints. For mints with a price, use regular mint()", - ); - } - return { - message, - signature, - }; - }), + const messages = await Promise.all( + signedPayloads.map((s) => this.mapPayloadToContractStruct(s.payload)), ); + const contractPayloads = signedPayloads.map((s, index) => { + const message = messages[index]; + const signature = s.signature; + const price = s.payload.price; + if (BigNumber.from(price).gt(0)) { + throw new Error( + "Can only batch free mints. For mints with a price, use regular mint()", + ); + } + return { + message, + signature, + }; + }); const contractEncoder = new ContractEncoder(this.contractWrapper); const encoded = contractPayloads.map((p) => { From d769a6d42f96a3343f04d715f5850e76f5c29ac6 Mon Sep 17 00:00:00 2001 From: Kien Ngo Date: Fri, 20 Oct 2023 15:50:07 -0400 Subject: [PATCH 5/9] Update --- .../evm/core/classes/erc-20-signature-mintable.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts b/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts index 025ac786156..9c3341181a4 100644 --- a/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts +++ b/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts @@ -254,14 +254,17 @@ export class Erc20SignatureMintable implements DetectableFeature { private async mapPayloadToContractStruct( mintRequest: PayloadWithUri20, ): Promise { - const normalizedPrice = await normalizePriceValue( - this.contractWrapper.getProvider(), - mintRequest.price, - mintRequest.currencyAddress, - ); + const [normalizedPrice, _decimals] = await Promise.all([ + normalizePriceValue( + this.contractWrapper.getProvider(), + mintRequest.price, + mintRequest.currencyAddress, + ), + this.contractWrapper.read("decimals", []), + ]); const amountWithDecimals = utils.parseUnits( mintRequest.quantity, - await this.contractWrapper.read("decimals", []), + _decimals, ); return { to: mintRequest.to, From bceb44c39e1ecb89ac481041ead6630bfea19c99 Mon Sep 17 00:00:00 2001 From: Kien Ngo Date: Fri, 20 Oct 2023 18:09:04 -0400 Subject: [PATCH 6/9] Update --- .../core/classes/erc-20-signature-mintable.ts | 49 ++++++++++++------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts b/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts index 9c3341181a4..c1de2bf99a7 100644 --- a/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts +++ b/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts @@ -207,21 +207,30 @@ export class Erc20SignatureMintable implements DetectableFeature { await this.contractWrapper.getSignerAddress(), ); - const parsedRequests: FilledSignaturePayload20[] = await Promise.all( - payloadsToSign.map((m) => Signature20PayloadInput.parseAsync(m)), - ); + const [chainId, name, parsedRequests]: [ + number, + string, + FilledSignaturePayload20[], + ] = await Promise.all([ + this.contractWrapper.getChainID(), + this.contractWrapper.read("name", []), // ERC20Permit (EIP-712) spec differs from signature mint 721, 1155. + Promise.all( + payloadsToSign.map((m) => Signature20PayloadInput.parseAsync(m)), + ), + ]); - const chainId = await this.contractWrapper.getChainID(); const signer = this.contractWrapper.getSigner(); invariant(signer, "No signer available"); - // ERC20Permit (EIP-712) spec differs from signature mint 721, 1155. - const name = await this.contractWrapper.read("name", []); - - return await Promise.all( - parsedRequests.map(async (m) => { - const finalPayload = await Signature20PayloadOutput.parseAsync(m); - const signature = await this.contractWrapper.signTypedData( + const finalPayloads = await Promise.all( + parsedRequests.map((m) => Signature20PayloadOutput.parseAsync(m)), + ); + const contractStructs = await Promise.all( + finalPayloads.map((payload) => this.mapPayloadToContractStruct(payload)), + ); + const signatures = await Promise.all( + contractStructs.map((struct) => + this.contractWrapper.signTypedData( signer, { name, @@ -230,14 +239,18 @@ export class Erc20SignatureMintable implements DetectableFeature { verifyingContract: this.contractWrapper.address, }, { MintRequest: MintRequest20 }, - await this.mapPayloadToContractStruct(finalPayload), - ); - return { - payload: finalPayload, - signature: signature.toString(), - }; - }), + struct, + ), + ), ); + return parsedRequests.map((m, index) => { + const finalPayload = finalPayloads[index]; + const signature = signatures[index]; + return { + payload: finalPayload, + signature: signature.toString(), + }; + }); } /** ****************************** From 838d2d60516e4f3d3a0e20f8c4424a229a465012 Mon Sep 17 00:00:00 2001 From: Kien Ngo Date: Fri, 20 Oct 2023 18:28:58 -0400 Subject: [PATCH 7/9] Update var name --- .../sdk/src/evm/core/classes/erc-20-signature-mintable.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts b/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts index c1de2bf99a7..22fb508d51b 100644 --- a/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts +++ b/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts @@ -267,7 +267,7 @@ export class Erc20SignatureMintable implements DetectableFeature { private async mapPayloadToContractStruct( mintRequest: PayloadWithUri20, ): Promise { - const [normalizedPrice, _decimals] = await Promise.all([ + const [normalizedPrice, decimals] = await Promise.all([ normalizePriceValue( this.contractWrapper.getProvider(), mintRequest.price, @@ -275,10 +275,7 @@ export class Erc20SignatureMintable implements DetectableFeature { ), this.contractWrapper.read("decimals", []), ]); - const amountWithDecimals = utils.parseUnits( - mintRequest.quantity, - _decimals, - ); + const amountWithDecimals = utils.parseUnits(mintRequest.quantity, decimals); return { to: mintRequest.to, primarySaleRecipient: mintRequest.primarySaleRecipient, From 9bcaf2ad46b84041eb552975779e9de0d833ace2 Mon Sep 17 00:00:00 2001 From: Kien Ngo Date: Fri, 20 Oct 2023 19:05:34 -0400 Subject: [PATCH 8/9] Fix erc-20-history --- .../src/evm/core/classes/erc-20-history.ts | 33 ++++++++----------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/packages/sdk/src/evm/core/classes/erc-20-history.ts b/packages/sdk/src/evm/core/classes/erc-20-history.ts index 71bdb4decfb..659e64ad454 100644 --- a/packages/sdk/src/evm/core/classes/erc-20-history.ts +++ b/packages/sdk/src/evm/core/classes/erc-20-history.ts @@ -55,25 +55,20 @@ export class TokenERC20History { balances[to] = balances[to].add(amount); } }); - const _promises = Object.entries(balances).map(async ([addr, value]) => { - const result = await fetchCurrencyValue( - this.contractWrapper.getProvider(), - this.contractWrapper.address, - value, - ); - return { [addr]: result }; - }); - const balanceData = (await Promise.all(_promises)).reduce( - (result, currentObject) => { - return { ...result, ...currentObject }; - }, - {}, - ); - return Promise.all( - Object.keys(balances).map(async (addr) => ({ - holder: addr, - balance: balanceData[addr], - })), + + const entries = Object.entries(balances); + const results = await Promise.all( + entries.map(([, value]) => + fetchCurrencyValue( + this.contractWrapper.getProvider(), + this.contractWrapper.address, + value, + ), + ), ); + return entries.map(([addr], index) => ({ + holder: addr, + balance: results[index], + })); } } From ef1fd364ee83609b3327af1eda991bcfa673d395 Mon Sep 17 00:00:00 2001 From: Kien Ngo Date: Mon, 23 Oct 2023 23:49:32 -0400 Subject: [PATCH 9/9] Update --- packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts b/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts index 22fb508d51b..58ee84a381f 100644 --- a/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts +++ b/packages/sdk/src/evm/core/classes/erc-20-signature-mintable.ts @@ -213,7 +213,7 @@ export class Erc20SignatureMintable implements DetectableFeature { FilledSignaturePayload20[], ] = await Promise.all([ this.contractWrapper.getChainID(), - this.contractWrapper.read("name", []), // ERC20Permit (EIP-712) spec differs from signature mint 721, 1155. + this.contractWrapper.read("name", []), // ERC20Permit (EIP-712) spec differs from signature mint 721, 1155. Promise.all( payloadsToSign.map((m) => Signature20PayloadInput.parseAsync(m)), ),