From 416475777efc9293c0419e259fc74b8f9ac9e00c Mon Sep 17 00:00:00 2001 From: Leo Sollier Date: Wed, 3 Apr 2024 09:29:01 +0200 Subject: [PATCH] feat: core batch payment --- .../contract-setup/execute-contract-method.ts | 64 ++++++++++--------- .../BatchConversionPayments/index.ts | 5 ++ 2 files changed, 38 insertions(+), 31 deletions(-) diff --git a/packages/smart-contracts/scripts-create2/contract-setup/execute-contract-method.ts b/packages/smart-contracts/scripts-create2/contract-setup/execute-contract-method.ts index a5dde97c1..e6a64f2ad 100644 --- a/packages/smart-contracts/scripts-create2/contract-setup/execute-contract-method.ts +++ b/packages/smart-contracts/scripts-create2/contract-setup/execute-contract-method.ts @@ -36,39 +36,41 @@ export const executeContractMethod = async ({ signer: Wallet; signWithEoa?: boolean; }): Promise => { - const safeAddress = safeAdminArtifact.getAddress(network as CurrencyTypes.VMChainName); - const txServiceUrl = txServiceUrls[network]; - if (!signWithEoa && !!safeAddress && !!txServiceUrl) { - const ethAdapter = new EthersAdapter({ - ethers, - signerOrProvider: signer, - } as unknown as EthersAdapterConfig); - const safeService = new SafeApiKit({ txServiceUrl, ethAdapter }); - const safeSdk = await Safe.create({ ethAdapter, safeAddress }); + if (!signWithEoa) { + const safeAddress = safeAdminArtifact.getAddress(network as CurrencyTypes.VMChainName); + const txServiceUrl = txServiceUrls[network]; + if (!!safeAddress && !!txServiceUrl) { + const ethAdapter = new EthersAdapter({ + ethers, + signerOrProvider: signer, + } as unknown as EthersAdapterConfig); + const safeService = new SafeApiKit({ txServiceUrl, ethAdapter }); + const safeSdk = await Safe.create({ ethAdapter, safeAddress }); - const safeTransactionData = [ - { - to: contract.address, - data: contract.interface.encodeFunctionData(method, props), - value: '0', - }, - ]; - const nonce = await safeService.getNextNonce(safeAddress); - const safeTransaction = await safeSdk.createTransaction({ - safeTransactionData, - options: { nonce }, - }); - const safeTxHash = await safeSdk.getTransactionHash(safeTransaction); - const senderSignature = await safeSdk.signTransactionHash(safeTxHash); + const safeTransactionData = [ + { + to: contract.address, + data: contract.interface.encodeFunctionData(method, props), + value: '0', + }, + ]; + const nonce = await safeService.getNextNonce(safeAddress); + const safeTransaction = await safeSdk.createTransaction({ + safeTransactionData, + options: { nonce }, + }); + const safeTxHash = await safeSdk.getTransactionHash(safeTransaction); + const senderSignature = await safeSdk.signTransactionHash(safeTxHash); - await safeService.proposeTransaction({ - safeAddress, - safeTransactionData: safeTransaction.data, - safeTxHash, - senderAddress: signer.address, - senderSignature: senderSignature.data, - }); - console.log(`Transaction to be confirmed in Safe ${safeAddress} on ${network}`); + await safeService.proposeTransaction({ + safeAddress, + safeTransactionData: safeTransaction.data, + safeTxHash, + senderAddress: signer.address, + senderSignature: senderSignature.data, + }); + console.log(`Transaction to be confirmed in Safe ${safeAddress} on ${network}`); + } } else { const contractConnected = contract.connect(signer); const tx = await contractConnected[method](...props, txOverrides); diff --git a/packages/smart-contracts/src/lib/artifacts/BatchConversionPayments/index.ts b/packages/smart-contracts/src/lib/artifacts/BatchConversionPayments/index.ts index ddbf94995..df9a0364a 100644 --- a/packages/smart-contracts/src/lib/artifacts/BatchConversionPayments/index.ts +++ b/packages/smart-contracts/src/lib/artifacts/BatchConversionPayments/index.ts @@ -81,6 +81,11 @@ export const batchConversionPaymentsArtifact = new ContractArtifact