diff --git a/web3.js/module.flow.js b/web3.js/module.flow.js index 38c81fe9ff..bc705931cf 100644 --- a/web3.js/module.flow.js +++ b/web3.js/module.flow.js @@ -194,6 +194,9 @@ declare module '@solana/web3.js' { transaction: Transaction, ...signers: Array ): Promise; + sendEncodedTransaction( + encodedTransaction: string, + ): Promise; sendRawTransaction(wireTransaction: Buffer): Promise; onAccountChange( publickey: PublicKey, diff --git a/web3.js/src/connection.js b/web3.js/src/connection.js index 4e5a3cd40e..d30d60a997 100644 --- a/web3.js/src/connection.js +++ b/web3.js/src/connection.js @@ -1219,9 +1219,21 @@ export class Connection { */ async sendRawTransaction( rawTransaction: Buffer, + ): Promise { + const encodedTransaction = bs58.encode(rawTransaction); + const result = await this.sendEncodedTransaction(encodedTransaction); + return result; + } + + /** + * Send a transaction that has already been signed, serialized into the + * wire format, and encoded as a base58 string + */ + async sendEncodedTransaction( + encodedTransaction: string, ): Promise { const unsafeRes = await this._rpcRequest('sendTransaction', [ - [...rawTransaction], + encodedTransaction, ]); const res = SendTransactionRpcResult(unsafeRes); if (res.error) {