diff --git a/apps/nextjs-example/src/components/transactionFlows/Sponsor.tsx b/apps/nextjs-example/src/components/transactionFlows/Sponsor.tsx index 3ae3aa73..11b4f519 100644 --- a/apps/nextjs-example/src/components/transactionFlows/Sponsor.tsx +++ b/apps/nextjs-example/src/components/transactionFlows/Sponsor.tsx @@ -1,6 +1,6 @@ import { aptosClient, isSendableNetwork } from "@/utils"; import { - AccountAddress, + Account, AccountAuthenticator, AnyRawTransaction, } from "@aptos-labs/ts-sdk"; @@ -24,17 +24,20 @@ export function Sponsor() { useState(); const [feepayerAuthenticator, setFeepayerAuthenticator] = useState(); - const [feepayerAddress, setFeepayerAddress] = useState(); let sendable = isSendableNetwork(connected, network?.name); + // create sponsor account + const SPONSOR_INITIAL_BALANCE = 100_000_000; + const sponsor = Account.generate(); + // Generate a raw transaction using the SDK const generateTransaction = async (): Promise => { if (!account) { throw new Error("no account"); } const transactionToSign = await aptosClient( - network, + network ).transaction.build.simple({ sender: account.address, withFeePayer: true, @@ -64,9 +67,17 @@ export function Sponsor() { throw new Error("No Transaction to sign"); } try { - const authenticator = await signTransaction(transactionToSubmit, true); + await aptosClient(network).fundAccount({ + accountAddress: sponsor.accountAddress, + amount: SPONSOR_INITIAL_BALANCE, + }); + const authenticator = await aptosClient( + network + ).transaction.signAsFeePayer({ + signer: sponsor, + transaction: transactionToSubmit, + }); setFeepayerAuthenticator(authenticator); - setFeepayerAddress(AccountAddress.from(account!.address)); } catch (error) { console.error(error); } @@ -82,7 +93,6 @@ export function Sponsor() { if (!feepayerAuthenticator) { throw new Error("No feepayerAuthenticator"); } - transactionToSubmit.feePayerAddress = feepayerAddress; try { const response = await submitTransaction({ transaction: transactionToSubmit, diff --git a/apps/nuxt-example/components/TransactonFlows/Sponsor.vue b/apps/nuxt-example/components/TransactonFlows/Sponsor.vue index ebc232e8..f2198a1c 100644 --- a/apps/nuxt-example/components/TransactonFlows/Sponsor.vue +++ b/apps/nuxt-example/components/TransactonFlows/Sponsor.vue @@ -2,9 +2,9 @@ import { ref, computed, h } from "vue"; import { aptosClient, isSendableNetwork } from "@/utils"; import { - AccountAddress, AccountAuthenticator, AnyRawTransaction, + Account, } from "@aptos-labs/ts-sdk"; import TransactionHash from "~/components/TransactionHash.vue"; import { useToast } from "~/components/ui/toast"; @@ -18,12 +18,15 @@ const APTOS_COIN = "0x1::aptos_coin::AptosCoin"; const transactionToSubmit = ref(); const senderAuthenticator = ref(); const feepayerAuthenticator = ref(); -const feepayerAddress = ref(); const isSendable = computed(() => isSendableNetwork(connected.value, network.value?.name || undefined), ); + // create sponsor account + const SPONSOR_INITIAL_BALANCE = 100_000_000; + const sponsor = Account.generate(); + // Generate a raw transaction using the SDK const generateTransaction = async (): Promise => { if (!account.value) { @@ -59,11 +62,16 @@ const onSignTransactionAsSponsor = async () => { throw new Error("No Transaction to sign"); } try { - feepayerAuthenticator.value = await signTransaction( - transactionToSubmit.value, - true, - ); - feepayerAddress.value = AccountAddress.from(account.value!.address); + await aptosClient(network.value).fundAccount({ + accountAddress: sponsor.accountAddress, + amount: SPONSOR_INITIAL_BALANCE, + }); + feepayerAuthenticator.value = await aptosClient( + network.value + ).transaction.signAsFeePayer({ + signer: sponsor, + transaction: transactionToSubmit.value, + }); } catch (error) { console.error(error); } @@ -79,7 +87,6 @@ const onSubmitTransaction = async () => { if (!feepayerAuthenticator.value) { throw new Error("No feepayerAuthenticator"); } - transactionToSubmit.value.feePayerAddress = feepayerAddress!; try { const response = await submitTransaction({ transaction: transactionToSubmit.value,