From d843da4a602c23e394dea819ae3711501399f93b Mon Sep 17 00:00:00 2001 From: arnabghose997 Date: Wed, 15 Jun 2022 18:31:51 +0530 Subject: [PATCH] granter and payer are added in the StdFee interface --- packages/amino/src/signdoc.ts | 1 + .../src/cosmwasmclient.searchtx.spec.ts | 3 ++- .../cosmwasm-stargate/src/cosmwasmclient.spec.ts | 9 ++++++++- .../src/signingcosmwasmclient.ts | 15 ++++++++++++--- packages/cosmwasm-stargate/src/testutils.spec.ts | 2 ++ .../src/directsecp256k1hdwallet.spec.ts | 3 ++- .../src/directsecp256k1wallet.spec.ts | 3 ++- packages/proto-signing/src/signing.ts | 4 +++- packages/stargate/src/signingstargateclient.ts | 15 ++++++++++++--- .../stargate/src/stargateclient.searchtx.spec.ts | 3 ++- packages/stargate/src/stargateclient.spec.ts | 14 +++++++++++++- packages/stargate/src/testutils.spec.ts | 2 ++ 12 files changed, 61 insertions(+), 13 deletions(-) diff --git a/packages/amino/src/signdoc.ts b/packages/amino/src/signdoc.ts index 5f9eb168..6e20a321 100644 --- a/packages/amino/src/signdoc.ts +++ b/packages/amino/src/signdoc.ts @@ -13,6 +13,7 @@ export interface StdFee { readonly amount: readonly Coin[]; readonly gas: string; readonly granter?: string; + readonly payer?: string; } /** diff --git a/packages/cosmwasm-stargate/src/cosmwasmclient.searchtx.spec.ts b/packages/cosmwasm-stargate/src/cosmwasmclient.searchtx.spec.ts index c316ebc3..506ddd44 100644 --- a/packages/cosmwasm-stargate/src/cosmwasmclient.searchtx.spec.ts +++ b/packages/cosmwasm-stargate/src/cosmwasmclient.searchtx.spec.ts @@ -79,8 +79,9 @@ async function sendTokens( }, ]; const gasLimit = 200000; + const feeGranter = ""; const feePayer = ""; - const authInfoBytes = makeAuthInfoBytes([{ pubkey, sequence }], feeAmount, gasLimit, feePayer); + const authInfoBytes = makeAuthInfoBytes([{ pubkey, sequence }], feeAmount, gasLimit, feeGranter, feePayer); const chainId = await client.getChainId(); const signDoc = makeSignDoc(txBodyBytes, authInfoBytes, chainId, accountNumber); diff --git a/packages/cosmwasm-stargate/src/cosmwasmclient.spec.ts b/packages/cosmwasm-stargate/src/cosmwasmclient.spec.ts index f8a446d1..ecc25adf 100644 --- a/packages/cosmwasm-stargate/src/cosmwasmclient.spec.ts +++ b/packages/cosmwasm-stargate/src/cosmwasmclient.spec.ts @@ -203,8 +203,15 @@ describe("CosmWasmClient", () => { }; const txBodyBytes = registry.encode(txBody); const gasLimit = Int53.fromString(fee.gas).toNumber(); + const feeGranter = ""; const feePayer = ""; - const authInfoBytes = makeAuthInfoBytes([{ pubkey, sequence }], fee.amount, gasLimit, feePayer); + const authInfoBytes = makeAuthInfoBytes( + [{ pubkey, sequence }], + fee.amount, + gasLimit, + feeGranter, + feePayer, + ); const signDoc = makeSignDoc(txBodyBytes, authInfoBytes, chainId, accountNumber); const { signed, signature } = await wallet.signDirect(alice.address0, signDoc); const txRaw = TxRaw.fromPartial({ diff --git a/packages/cosmwasm-stargate/src/signingcosmwasmclient.ts b/packages/cosmwasm-stargate/src/signingcosmwasmclient.ts index ef0fde37..5c8eac4a 100644 --- a/packages/cosmwasm-stargate/src/signingcosmwasmclient.ts +++ b/packages/cosmwasm-stargate/src/signingcosmwasmclient.ts @@ -582,11 +582,13 @@ export class SigningCosmWasmClient extends CosmWasmClient { const signedTxBodyBytes = this.registry.encode(signedTxBody); const signedGasLimit = Int53.fromString(signed.fee.gas).toNumber(); const signedSequence = Int53.fromString(signed.sequence).toNumber(); - const signedFeePayer = ""; + const signedFeeGranter = signed.fee.granter == undefined ? "" : signed.fee.granter; + const signedFeePayer = signed.fee.payer == undefined ? "" : signed.fee.payer; const signedAuthInfoBytes = makeAuthInfoBytes( [{ pubkey, sequence: signedSequence }], signed.fee.amount, signedGasLimit, + signedFeeGranter, signedFeePayer, signMode, ); @@ -621,8 +623,15 @@ export class SigningCosmWasmClient extends CosmWasmClient { }; const txBodyBytes = this.registry.encode(txBody); const gasLimit = Int53.fromString(fee.gas).toNumber(); - const feePayer = fee.granter == undefined ? "" : fee.granter; - const authInfoBytes = makeAuthInfoBytes([{ pubkey, sequence }], fee.amount, gasLimit, feePayer); + const feePayer = fee.payer == undefined ? "" : fee.payer; + const feeGranter = fee.granter == undefined ? "" : fee.granter; + const authInfoBytes = makeAuthInfoBytes( + [{ pubkey, sequence }], + fee.amount, + gasLimit, + feeGranter, + feePayer, + ); const signDoc = makeSignDoc(txBodyBytes, authInfoBytes, chainId, accountNumber); const { signature, signed } = await this.signer.signDirect(signerAddress, signDoc); return TxRaw.fromPartial({ diff --git a/packages/cosmwasm-stargate/src/testutils.spec.ts b/packages/cosmwasm-stargate/src/testutils.spec.ts index 05da4884..b2e4a4e4 100644 --- a/packages/cosmwasm-stargate/src/testutils.spec.ts +++ b/packages/cosmwasm-stargate/src/testutils.spec.ts @@ -225,6 +225,7 @@ export class ModifyingDirectSecp256k1HdWallet extends DirectSecp256k1HdWallet { })); const modifiedFeeAmount = coins(3000, "ucosm"); const modifiedGasLimit = 333333; + const modifiedFeeGranter = ""; const modifiedFeePayer = ""; const modifiedSignDoc = { ...signDoc, @@ -233,6 +234,7 @@ export class ModifyingDirectSecp256k1HdWallet extends DirectSecp256k1HdWallet { signers, modifiedFeeAmount, modifiedGasLimit, + modifiedFeeGranter, modifiedFeePayer, SignMode.SIGN_MODE_DIRECT, ), diff --git a/packages/proto-signing/src/directsecp256k1hdwallet.spec.ts b/packages/proto-signing/src/directsecp256k1hdwallet.spec.ts index 03a2f3e3..02c9aae2 100644 --- a/packages/proto-signing/src/directsecp256k1hdwallet.spec.ts +++ b/packages/proto-signing/src/directsecp256k1hdwallet.spec.ts @@ -261,11 +261,12 @@ describe("DirectSecp256k1HdWallet", () => { }; const fee = coins(2000, "ucosm"); const gasLimit = 200000; + const feeGranter = ""; const feePayer = ""; const chainId = "simd-testing"; const signDoc = makeSignDoc( fromHex(bodyBytes), - makeAuthInfoBytes([{ pubkey, sequence }], fee, gasLimit, feePayer), + makeAuthInfoBytes([{ pubkey, sequence }], fee, gasLimit, feeGranter, feePayer), chainId, accountNumber, ); diff --git a/packages/proto-signing/src/directsecp256k1wallet.spec.ts b/packages/proto-signing/src/directsecp256k1wallet.spec.ts index fe388eb5..3e071621 100644 --- a/packages/proto-signing/src/directsecp256k1wallet.spec.ts +++ b/packages/proto-signing/src/directsecp256k1wallet.spec.ts @@ -45,9 +45,10 @@ describe("DirectSecp256k1Wallet", () => { const gasLimit = 200000; const chainId = "simd-testing"; const feePayer = ""; + const feeGranter = ""; const signDoc = makeSignDoc( fromHex(bodyBytes), - makeAuthInfoBytes([{ pubkey, sequence }], fee, gasLimit, feePayer), + makeAuthInfoBytes([{ pubkey, sequence }], fee, gasLimit, feeGranter, feePayer), chainId, accountNumber, ); diff --git a/packages/proto-signing/src/signing.ts b/packages/proto-signing/src/signing.ts index 303c1844..24e69c3d 100644 --- a/packages/proto-signing/src/signing.ts +++ b/packages/proto-signing/src/signing.ts @@ -34,6 +34,7 @@ export function makeAuthInfoBytes( signers: ReadonlyArray<{ readonly pubkey: Any; readonly sequence: number }>, feeAmount: readonly Coin[], gasLimit: number, + feeGranter: string | undefined, feePayer: string | undefined, signMode = SignMode.SIGN_MODE_DIRECT, ): Uint8Array { @@ -42,7 +43,8 @@ export function makeAuthInfoBytes( fee: { amount: [...feeAmount], gasLimit: Long.fromNumber(gasLimit), - granter: feePayer, + granter: feeGranter, + payer: feePayer, }, }; return AuthInfo.encode(AuthInfo.fromPartial(authInfo)).finish(); diff --git a/packages/stargate/src/signingstargateclient.ts b/packages/stargate/src/signingstargateclient.ts index a3ad6e7d..b1ebf67f 100644 --- a/packages/stargate/src/signingstargateclient.ts +++ b/packages/stargate/src/signingstargateclient.ts @@ -362,11 +362,13 @@ export class SigningStargateClient extends StargateClient { const signedTxBodyBytes = this.registry.encode(signedTxBodyEncodeObject); const signedGasLimit = Int53.fromString(signed.fee.gas).toNumber(); const signedSequence = Int53.fromString(signed.sequence).toNumber(); - const signedFeePayer = signed.fee.granter == undefined ? "" : signed.fee.granter; + const signedFeeGranter = signed.fee.granter == undefined ? "" : signed.fee.granter; + const signedFeePayer = signed.fee.payer == undefined ? "" : signed.fee.payer; const signedAuthInfoBytes = makeAuthInfoBytes( [{ pubkey, sequence: signedSequence }], signed.fee.amount, signedGasLimit, + signedFeeGranter, signedFeePayer, signMode, ); @@ -401,8 +403,15 @@ export class SigningStargateClient extends StargateClient { }; const txBodyBytes = this.registry.encode(txBodyEncodeObject); const gasLimit = Int53.fromString(fee.gas).toNumber(); - const feePayer = fee.granter == undefined ? "" : fee.granter; - const authInfoBytes = makeAuthInfoBytes([{ pubkey, sequence }], fee.amount, gasLimit, feePayer); + const feeGranter = fee.granter == undefined ? "" : fee.granter; + const feePayer = fee.payer == undefined ? "" : fee.payer; + const authInfoBytes = makeAuthInfoBytes( + [{ pubkey, sequence }], + fee.amount, + gasLimit, + feeGranter, + feePayer, + ); const signDoc = makeSignDoc(txBodyBytes, authInfoBytes, chainId, accountNumber); const { signature, signed } = await this.signer.signDirect(signerAddress, signDoc); return TxRaw.fromPartial({ diff --git a/packages/stargate/src/stargateclient.searchtx.spec.ts b/packages/stargate/src/stargateclient.searchtx.spec.ts index 465bb5af..a4c8bd64 100644 --- a/packages/stargate/src/stargateclient.searchtx.spec.ts +++ b/packages/stargate/src/stargateclient.searchtx.spec.ts @@ -74,8 +74,9 @@ async function sendTokens( }, ]; const gasLimit = 200000; + const feeGranter = ""; const feePayer = ""; - const authInfoBytes = makeAuthInfoBytes([{ pubkey, sequence }], feeAmount, gasLimit, feePayer); + const authInfoBytes = makeAuthInfoBytes([{ pubkey, sequence }], feeAmount, gasLimit, feeGranter, feePayer); const chainId = await client.getChainId(); const signDoc = makeSignDoc(txBodyBytes, authInfoBytes, chainId, accountNumber); diff --git a/packages/stargate/src/stargateclient.spec.ts b/packages/stargate/src/stargateclient.spec.ts index 241a8543..7227927a 100644 --- a/packages/stargate/src/stargateclient.spec.ts +++ b/packages/stargate/src/stargateclient.spec.ts @@ -364,8 +364,15 @@ describe("StargateClient", () => { const { accountNumber, sequence } = (await client.getSequence(address))!; const feeAmount = coins(2000, "ucosm"); const gasLimit = 200000; + const feeGranter = ""; const feePayer = ""; - const authInfoBytes = makeAuthInfoBytes([{ pubkey, sequence }], feeAmount, gasLimit, feePayer); + const authInfoBytes = makeAuthInfoBytes( + [{ pubkey, sequence }], + feeAmount, + gasLimit, + feeGranter, + feePayer, + ); const chainId = await client.getChainId(); const signDoc = makeSignDoc(txBodyBytes, authInfoBytes, chainId, accountNumber); @@ -422,11 +429,13 @@ describe("StargateClient", () => { const { accountNumber, sequence } = (await client.getSequence(address))!; const feeAmount = coins(2000, "ucosm"); const gasLimit = 200000; + const feeGranter = ""; const feePayer = ""; const authInfoBytes = makeAuthInfoBytes( [{ pubkey, sequence }], feeAmount, gasLimit, + feeGranter, feePayer, sequence, ); @@ -490,6 +499,7 @@ describe("StargateClient", () => { const chainId = await client.getChainId(); const feeAmount = coins(2000, "ucosm"); const gasLimit = 200000; + const feeGranter = ""; const feePayer = ""; const { accountNumber: accountNumber1, sequence: sequence1 } = (await client.getSequence(address))!; @@ -497,6 +507,7 @@ describe("StargateClient", () => { [{ pubkey, sequence: sequence1 }], feeAmount, gasLimit, + feeGranter, feePayer, ); const signDoc1 = makeSignDoc(txBodyBytes, authInfoBytes1, chainId, accountNumber1); @@ -516,6 +527,7 @@ describe("StargateClient", () => { [{ pubkey, sequence: sequence2 }], feeAmount, gasLimit, + feeGranter, feePayer, ); const signDoc2 = makeSignDoc(txBodyBytes, authInfoBytes2, chainId, accountNumber2); diff --git a/packages/stargate/src/testutils.spec.ts b/packages/stargate/src/testutils.spec.ts index b5ddb640..50710267 100644 --- a/packages/stargate/src/testutils.spec.ts +++ b/packages/stargate/src/testutils.spec.ts @@ -234,6 +234,7 @@ export class ModifyingDirectSecp256k1HdWallet extends DirectSecp256k1HdWallet { })); const modifiedFeeAmount = coins(3000, "ucosm"); const modifiedGasLimit = 333333; + const modifiedFeeGranter = ""; const modifiedFeePayer = ""; const modifiedSignDoc = { ...signDoc, @@ -242,6 +243,7 @@ export class ModifyingDirectSecp256k1HdWallet extends DirectSecp256k1HdWallet { signers, modifiedFeeAmount, modifiedGasLimit, + modifiedFeeGranter, modifiedFeePayer, SignMode.SIGN_MODE_DIRECT, ),