From 4257988e02a6290b74d9415a82ac330d3890b739 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Tue, 12 Jan 2021 15:07:16 +0100 Subject: [PATCH] Rename senderAddress -> signerAddress --- .../src/cw1cosmwasmclient.ts | 2 +- .../src/cw1subkeycosmwasmclient.ts | 6 ++-- .../src/signingcosmwasmclient.ts | 30 +++++++++---------- .../types/signingcosmwasmclient.d.ts | 6 ++-- .../src/signingcosmwasmclient.ts | 16 +++++++--- .../types/signingcosmwasmclient.d.ts | 10 ++++++- packages/launchpad/src/signingcosmosclient.ts | 20 ++++++------- .../launchpad/types/signingcosmosclient.d.ts | 6 ++-- 8 files changed, 56 insertions(+), 40 deletions(-) diff --git a/packages/cosmwasm-launchpad/src/cw1cosmwasmclient.ts b/packages/cosmwasm-launchpad/src/cw1cosmwasmclient.ts index 4905fd92..8790e4b9 100644 --- a/packages/cosmwasm-launchpad/src/cw1cosmwasmclient.ts +++ b/packages/cosmwasm-launchpad/src/cw1cosmwasmclient.ts @@ -24,7 +24,7 @@ export class Cw1CosmWasmClient extends SigningCosmWasmClient { return super.getAccount(address || this.cw1ContractAddress); } - public async canSend(msg: CosmosMsg, address = this.senderAddress): Promise { + public async canSend(msg: CosmosMsg, address = this.signerAddress): Promise { const result = await this.queryContractSmart(this.cw1ContractAddress, { can_send: { sender: address, diff --git a/packages/cosmwasm-launchpad/src/cw1subkeycosmwasmclient.ts b/packages/cosmwasm-launchpad/src/cw1subkeycosmwasmclient.ts index 87aa92de..8719e08b 100644 --- a/packages/cosmwasm-launchpad/src/cw1subkeycosmwasmclient.ts +++ b/packages/cosmwasm-launchpad/src/cw1subkeycosmwasmclient.ts @@ -61,7 +61,7 @@ export class Cw1SubkeyCosmWasmClient extends Cw1CosmWasmClient { return admins; } - public async isAdmin(address = this.senderAddress): Promise { + public async isAdmin(address = this.signerAddress): Promise { const admins = await this.getAdmins(); return admins.includes(address); } @@ -73,7 +73,7 @@ export class Cw1SubkeyCosmWasmClient extends Cw1CosmWasmClient { return response.allowances; } - public async getAllowance(address = this.senderAddress): Promise { + public async getAllowance(address = this.signerAddress): Promise { return this.queryContractSmart(this.cw1ContractAddress, { allowance: { spender: address }, }); @@ -86,7 +86,7 @@ export class Cw1SubkeyCosmWasmClient extends Cw1CosmWasmClient { return response.permissions; } - public async getPermissions(address = this.senderAddress): Promise { + public async getPermissions(address = this.signerAddress): Promise { return this.queryContractSmart(this.cw1ContractAddress, { permissions: { spender: address }, }); diff --git a/packages/cosmwasm-launchpad/src/signingcosmwasmclient.ts b/packages/cosmwasm-launchpad/src/signingcosmwasmclient.ts index 01e98520..784a7db3 100644 --- a/packages/cosmwasm-launchpad/src/signingcosmwasmclient.ts +++ b/packages/cosmwasm-launchpad/src/signingcosmwasmclient.ts @@ -149,7 +149,7 @@ export interface PrivateSigningCosmWasmClient { } export class SigningCosmWasmClient extends CosmWasmClient { - public readonly senderAddress: string; + public readonly signerAddress: string; private readonly signer: OfflineSigner; private readonly fees: CosmWasmFeeTable; @@ -161,7 +161,7 @@ export class SigningCosmWasmClient extends CosmWasmClient { * for the lifetime of your application. When switching backends, a new instance must be created. * * @param apiUrl The URL of a Cosmos SDK light client daemon API (sometimes called REST server or REST API) - * @param senderAddress The address that will sign and send transactions using this instance + * @param signerAddress The address that will sign transactions using this instance. The `signer` must be able to sign with this address. * @param signer An implementation of OfflineSigner which can provide signatures for transactions, potentially requiring user input. * @param gasPrice The price paid per unit of gas * @param gasLimits Custom overrides for gas limits related to specific transaction types @@ -169,25 +169,25 @@ export class SigningCosmWasmClient extends CosmWasmClient { */ public constructor( apiUrl: string, - senderAddress: string, + signerAddress: string, signer: OfflineSigner, gasPrice: GasPrice = defaultGasPrice, gasLimits: Partial> = {}, broadcastMode = BroadcastMode.Block, ) { super(apiUrl, broadcastMode); - this.anyValidAddress = senderAddress; - this.senderAddress = senderAddress; + this.anyValidAddress = signerAddress; + this.signerAddress = signerAddress; this.signer = signer; this.fees = buildFeeTable(gasPrice, defaultGasLimits, gasLimits); } public async getSequence(address?: string): Promise { - return super.getSequence(address || this.senderAddress); + return super.getSequence(address || this.signerAddress); } public async getAccount(address?: string): Promise { - return super.getAccount(address || this.senderAddress); + return super.getAccount(address || this.signerAddress); } /** Uploads code and returns a receipt, including the code ID */ @@ -199,7 +199,7 @@ export class SigningCosmWasmClient extends CosmWasmClient { const storeCodeMsg: MsgStoreCode = { type: "wasm/MsgStoreCode", value: { - sender: this.senderAddress, + sender: this.signerAddress, wasm_byte_code: toBase64(compressed), source: source, builder: builder, @@ -230,7 +230,7 @@ export class SigningCosmWasmClient extends CosmWasmClient { const instantiateMsg: MsgInstantiateContract = { type: "wasm/MsgInstantiateContract", value: { - sender: this.senderAddress, + sender: this.signerAddress, code_id: new Uint53(codeId).toString(), label: label, init_msg: initMsg, @@ -254,7 +254,7 @@ export class SigningCosmWasmClient extends CosmWasmClient { const updateAdminMsg: MsgUpdateAdmin = { type: "wasm/MsgUpdateAdmin", value: { - sender: this.senderAddress, + sender: this.signerAddress, contract: contractAddress, new_admin: newAdmin, }, @@ -273,7 +273,7 @@ export class SigningCosmWasmClient extends CosmWasmClient { const clearAdminMsg: MsgClearAdmin = { type: "wasm/MsgClearAdmin", value: { - sender: this.senderAddress, + sender: this.signerAddress, contract: contractAddress, }, }; @@ -296,7 +296,7 @@ export class SigningCosmWasmClient extends CosmWasmClient { const msg: MsgMigrateContract = { type: "wasm/MsgMigrateContract", value: { - sender: this.senderAddress, + sender: this.signerAddress, contract: contractAddress, code_id: new Uint53(codeId).toString(), msg: migrateMsg, @@ -321,7 +321,7 @@ export class SigningCosmWasmClient extends CosmWasmClient { const executeMsg: MsgExecuteContract = { type: "wasm/MsgExecuteContract", value: { - sender: this.senderAddress, + sender: this.signerAddress, contract: contractAddress, msg: handleMsg, sent_funds: transferAmount || [], @@ -345,7 +345,7 @@ export class SigningCosmWasmClient extends CosmWasmClient { const sendMsg: MsgSend = { type: "cosmos-sdk/MsgSend", value: { - from_address: this.senderAddress, + from_address: this.signerAddress, to_address: recipientAddress, amount: transferAmount, }, @@ -361,7 +361,7 @@ export class SigningCosmWasmClient extends CosmWasmClient { const { accountNumber, sequence } = await this.getSequence(); const chainId = await this.getChainId(); const signDoc = makeSignDoc(msgs, fee, chainId, memo, accountNumber, sequence); - const { signed, signature } = await this.signer.signAmino(this.senderAddress, signDoc); + const { signed, signature } = await this.signer.signAmino(this.signerAddress, signDoc); const signedTx = makeStdTx(signed, signature); return this.broadcastTx(signedTx); } diff --git a/packages/cosmwasm-launchpad/types/signingcosmwasmclient.d.ts b/packages/cosmwasm-launchpad/types/signingcosmwasmclient.d.ts index 5c2bf6e2..f8548400 100644 --- a/packages/cosmwasm-launchpad/types/signingcosmwasmclient.d.ts +++ b/packages/cosmwasm-launchpad/types/signingcosmwasmclient.d.ts @@ -95,7 +95,7 @@ export interface PrivateSigningCosmWasmClient { readonly fees: CosmWasmFeeTable; } export declare class SigningCosmWasmClient extends CosmWasmClient { - readonly senderAddress: string; + readonly signerAddress: string; private readonly signer; private readonly fees; /** @@ -105,7 +105,7 @@ export declare class SigningCosmWasmClient extends CosmWasmClient { * for the lifetime of your application. When switching backends, a new instance must be created. * * @param apiUrl The URL of a Cosmos SDK light client daemon API (sometimes called REST server or REST API) - * @param senderAddress The address that will sign and send transactions using this instance + * @param signerAddress The address that will sign transactions using this instance. The `signer` must be able to sign with this address. * @param signer An implementation of OfflineSigner which can provide signatures for transactions, potentially requiring user input. * @param gasPrice The price paid per unit of gas * @param gasLimits Custom overrides for gas limits related to specific transaction types @@ -113,7 +113,7 @@ export declare class SigningCosmWasmClient extends CosmWasmClient { */ constructor( apiUrl: string, - senderAddress: string, + signerAddress: string, signer: OfflineSigner, gasPrice?: GasPrice, gasLimits?: Partial>, diff --git a/packages/cosmwasm-stargate/src/signingcosmwasmclient.ts b/packages/cosmwasm-stargate/src/signingcosmwasmclient.ts index 6cba1cd7..46ec5736 100644 --- a/packages/cosmwasm-stargate/src/signingcosmwasmclient.ts +++ b/packages/cosmwasm-stargate/src/signingcosmwasmclient.ts @@ -314,20 +314,28 @@ export class SigningCosmWasmClient extends CosmWasmClient { return this.signAndBroadcast(senderAddress, [sendMsg], this.fees.send, memo); } + /** + * Creates a transaction with the given messages, fee and memo. Then signs and broadcasts the transaction. + * + * @param signerAddress The address that will sign transactions using this instance. The signer must be able to sign with this address. + * @param messages + * @param fee + * @param memo + */ public async signAndBroadcast( - address: string, + signerAddress: string, messages: readonly EncodeObject[], fee: StdFee, memo = "", ): Promise { const accountFromSigner = (await this.signer.getAccounts()).find( - (account: AccountData) => account.address === address, + (account: AccountData) => account.address === signerAddress, ); if (!accountFromSigner) { throw new Error("Failed to retrieve account from signer"); } const pubkey = encodeSecp256k1Pubkey(accountFromSigner.pubkey); - const accountFromChain = await this.getAccount(address); + const accountFromChain = await this.getAccount(signerAddress); if (!accountFromChain) { throw new Error("Account not found"); } @@ -349,7 +357,7 @@ export class SigningCosmWasmClient extends CosmWasmClient { const authInfoBytes = makeAuthInfoBytes([pubkeyAny], fee.amount, gasLimit, sequence); const signDoc = makeSignDoc(txBodyBytes, authInfoBytes, chainId, accountNumber); - const { signature, signed } = await this.signer.signDirect(address, signDoc); + const { signature, signed } = await this.signer.signDirect(signerAddress, signDoc); const txRaw = TxRaw.create({ bodyBytes: signed.bodyBytes, authInfoBytes: signed.authInfoBytes, diff --git a/packages/cosmwasm-stargate/types/signingcosmwasmclient.d.ts b/packages/cosmwasm-stargate/types/signingcosmwasmclient.d.ts index c85b1a8b..8f551b9a 100644 --- a/packages/cosmwasm-stargate/types/signingcosmwasmclient.d.ts +++ b/packages/cosmwasm-stargate/types/signingcosmwasmclient.d.ts @@ -72,8 +72,16 @@ export declare class SigningCosmWasmClient extends CosmWasmClient { transferAmount: readonly Coin[], memo?: string, ): Promise; + /** + * Creates a transaction with the given messages, fee and memo. Then signs and broadcasts the transaction. + * + * @param signerAddress The address that will sign transactions using this instance. The signer must be able to sign with this address. + * @param messages + * @param fee + * @param memo + */ signAndBroadcast( - address: string, + signerAddress: string, messages: readonly EncodeObject[], fee: StdFee, memo?: string, diff --git a/packages/launchpad/src/signingcosmosclient.ts b/packages/launchpad/src/signingcosmosclient.ts index ed7049ab..66cbb427 100644 --- a/packages/launchpad/src/signingcosmosclient.ts +++ b/packages/launchpad/src/signingcosmosclient.ts @@ -27,7 +27,7 @@ export interface PrivateSigningCosmosClient { } export class SigningCosmosClient extends CosmosClient { - public readonly senderAddress: string; + public readonly signerAddress: string; private readonly signer: OfflineSigner; private readonly fees: CosmosFeeTable; @@ -39,7 +39,7 @@ export class SigningCosmosClient extends CosmosClient { * for the lifetime of your application. When switching backends, a new instance must be created. * * @param apiUrl The URL of a Cosmos SDK light client daemon API (sometimes called REST server or REST API) - * @param senderAddress The address that will sign and send transactions using this instance + * @param signerAddress The address that will sign transactions using this instance. The `signer` must be able to sign with this address. * @param signer An implementation of OfflineSigner which can provide signatures for transactions, potentially requiring user input. * @param gasPrice The price paid per unit of gas * @param gasLimits Custom overrides for gas limits related to specific transaction types @@ -47,25 +47,25 @@ export class SigningCosmosClient extends CosmosClient { */ public constructor( apiUrl: string, - senderAddress: string, + signerAddress: string, signer: OfflineSigner, gasPrice: GasPrice = defaultGasPrice, gasLimits: Partial> = {}, broadcastMode = BroadcastMode.Block, ) { super(apiUrl, broadcastMode); - this.anyValidAddress = senderAddress; - this.senderAddress = senderAddress; + this.anyValidAddress = signerAddress; + this.signerAddress = signerAddress; this.signer = signer; this.fees = buildFeeTable(gasPrice, defaultGasLimits, gasLimits); } public async getSequence(address?: string): Promise { - return super.getSequence(address || this.senderAddress); + return super.getSequence(address || this.signerAddress); } public async getAccount(address?: string): Promise { - return super.getAccount(address || this.senderAddress); + return super.getAccount(address || this.signerAddress); } public async sendTokens( @@ -76,7 +76,7 @@ export class SigningCosmosClient extends CosmosClient { const sendMsg: MsgSend = { type: "cosmos-sdk/MsgSend", value: { - from_address: this.senderAddress, + from_address: this.signerAddress, to_address: recipientAddress, amount: transferAmount, }, @@ -101,7 +101,7 @@ export class SigningCosmosClient extends CosmosClient { const { accountNumber, sequence } = await this.getSequence(); const chainId = await this.getChainId(); const signDoc = makeSignDoc(msgs, fee, chainId, memo, accountNumber, sequence); - const { signed, signature } = await this.signer.signAmino(this.senderAddress, signDoc); + const { signed, signature } = await this.signer.signAmino(this.signerAddress, signDoc); return makeStdTx(signed, signature); } @@ -115,7 +115,7 @@ export class SigningCosmosClient extends CosmosClient { const chainId = await this.getChainId(); const signDoc = makeSignDoc(msgs, fee, chainId, memo, accountNumber, sequence); const { signed, signature: additionalSignature } = await this.signer.signAmino( - this.senderAddress, + this.signerAddress, signDoc, ); if (!equals(signDoc, signed)) { diff --git a/packages/launchpad/types/signingcosmosclient.d.ts b/packages/launchpad/types/signingcosmosclient.d.ts index fabefef0..b5d2765d 100644 --- a/packages/launchpad/types/signingcosmosclient.d.ts +++ b/packages/launchpad/types/signingcosmosclient.d.ts @@ -17,7 +17,7 @@ export interface PrivateSigningCosmosClient { readonly fees: CosmosFeeTable; } export declare class SigningCosmosClient extends CosmosClient { - readonly senderAddress: string; + readonly signerAddress: string; private readonly signer; private readonly fees; /** @@ -27,7 +27,7 @@ export declare class SigningCosmosClient extends CosmosClient { * for the lifetime of your application. When switching backends, a new instance must be created. * * @param apiUrl The URL of a Cosmos SDK light client daemon API (sometimes called REST server or REST API) - * @param senderAddress The address that will sign and send transactions using this instance + * @param signerAddress The address that will sign transactions using this instance. The `signer` must be able to sign with this address. * @param signer An implementation of OfflineSigner which can provide signatures for transactions, potentially requiring user input. * @param gasPrice The price paid per unit of gas * @param gasLimits Custom overrides for gas limits related to specific transaction types @@ -35,7 +35,7 @@ export declare class SigningCosmosClient extends CosmosClient { */ constructor( apiUrl: string, - senderAddress: string, + signerAddress: string, signer: OfflineSigner, gasPrice?: GasPrice, gasLimits?: Partial>,