# Clarity about funding the account before creation (deployment)

**URL:** <https://community.starknet.io/t/clarity-about-funding-the-account-before-creation-deployment/4960>\
**Category:** Site Feedback\
**Created:** [January 5, 2023, 1:11pm UTC](https://community.starknet.io/t/clarity-about-funding-the-account-before-creation-deployment/4960 "2023-01-05T13:11:16Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![PradhumnaPancholi](https://dub1.discourse-cdn.com/flex005/user_avatar/community.starknet.io/pradhumnapancholi/32/2058_2.png) [@PradhumnaPancholi](https://community.starknet.io/u/PradhumnaPancholi)\
**Post date:** [January 5, 2023, 1:11pm UTC](https://community.starknet.io/t/clarity-about-funding-the-account-before-creation-deployment/4960/1 "2023-01-05T13:11:16Z")

</div>

In StarkNet, we get account abstraction out of the box. They are deterministic (like how create2 works in Ethereum). However, I believe their is not enough clarity in the official documentation bout why we need to fund an account before deploying it, and it seems crucial to me as this is something relatively new in the Web 3 ecosystem. I am not sure but I believe that it is neccesary, because accounts are not native and the code needs to be deployed - as it can be different code as long as it meets the standards. Just looking for some confirmation here.

---

<div class="post-metadata">

**Author:** ![gaetbout](https://dub1.discourse-cdn.com/flex005/user_avatar/community.starknet.io/gaetbout/32/712_2.png) [@gaetbout](https://community.starknet.io/u/gaetbout)\
**Post date:** [January 5, 2023, 1:24pm UTC](https://community.starknet.io/t/clarity-about-funding-the-account-before-creation-deployment/4960/2 "2023-01-05T13:24:41Z")

</div>

Hey,

From what I know/understand, is that at the moment those account deployment are fully taken by Starkware.  
But at some point you’ll need to pay (or send something to the account) to deploy the account as it executes a transaction (deploy a smart contract) and therefore costs something to do it.

Hope it helps,  
G.

---

<div class="post-metadata">

**Author:** ![bbrandtom](https://dub1.discourse-cdn.com/flex005/user_avatar/community.starknet.io/bbrandtom/32/9_2.png) [@bbrandtom](https://community.starknet.io/u/bbrandtom)\
**Post date:** [January 5, 2023, 2:36pm UTC](https://community.starknet.io/t/clarity-about-funding-the-account-before-creation-deployment/4960/3 "2023-01-05T14:36:46Z")

</div>

Hello @PradhumnaPancholi 👋🏾

There are currently two ways to deploy accounts on -

1. Using the `deploy account` transaction - you can read more about it [here](https://starkware.notion.site/starkware/StarkNet-0-10-1-07b5c6d433464c61bf035037b8113b7b). Very soon it will also be added to the [docs.starknet.io](http://docs.starknet.io).  
The purpose of this method is to allow users to deploy account without the need to rely on any other 3rd party. You prefund the address and then you can use this transaction to deploy the account and the fee is taken from your address.  
Do note that this is somewhat similar to Ethereum - in both cases you can “use” your address as a recipient even before it contains funds. In both cases, to start sending transactions from this address you need to fund it. The only difference is the `deploy account` transaction, but IMHO it is not inherently different.
2. The other option is to use the [deploy syscall](https://docs.starknet.io/documentation/architecture_and_concepts/Contracts/system-calls/#deploy). Using this method, you can have another user pay for the deployment of your account.

If there are any other questions let me know.

---

<div class="post-metadata">

**Author:** ![PradhumnaPancholi](https://dub1.discourse-cdn.com/flex005/user_avatar/community.starknet.io/pradhumnapancholi/32/2058_2.png) [@PradhumnaPancholi](https://community.starknet.io/u/PradhumnaPancholi)\
**Post date:** [January 6, 2023, 10:25am UTC](https://community.starknet.io/t/clarity-about-funding-the-account-before-creation-deployment/4960/4 "2023-01-06T10:25:59Z")

</div>

Exactly, so the cost is for deploying the account smart contract as they are not natively built (maybe for the lack of a better term) on StarkNet like Ethereum? Am I right here ?

---

<div class="post-metadata">

**Author:** ![PradhumnaPancholi](https://dub1.discourse-cdn.com/flex005/user_avatar/community.starknet.io/pradhumnapancholi/32/2058_2.png) [@PradhumnaPancholi](https://community.starknet.io/u/PradhumnaPancholi)\
**Post date:** [January 6, 2023, 10:26am UTC](https://community.starknet.io/t/clarity-about-funding-the-account-before-creation-deployment/4960/5 "2023-01-06T10:26:01Z")

</div>

okay, so I got the second method completely but I wasn’t clear on the first one. The notion helped a lot, I have gotten a better idea now, will look more into the risks section and how it can be solved.

Looking forward to contributing to this ecosystem.

Thanks,  
Pradhumna Pancholi

---

<div class="post-metadata">

**Author:** ![gaetbout](https://dub1.discourse-cdn.com/flex005/user_avatar/community.starknet.io/gaetbout/32/712_2.png) [@gaetbout](https://community.starknet.io/u/gaetbout)\
**Post date:** [January 6, 2023, 10:48am UTC](https://community.starknet.io/t/clarity-about-funding-the-account-before-creation-deployment/4960/6 "2023-01-06T10:48:29Z")

</div>

Indeed.  
About @bbrandtom first technique:  
You will basically pay for the deploy of someone else’s account.  
You first send fund to the address and then since it has enough funds, it’ll be able to trigger the account deployment transaction.

---

<div class="post-metadata">

**Author:** ![bbrandtom](https://dub1.discourse-cdn.com/flex005/user_avatar/community.starknet.io/bbrandtom/32/9_2.png) [@bbrandtom](https://community.starknet.io/u/bbrandtom)\
**Post date:** [January 8, 2023, 3:44pm UTC](https://community.starknet.io/t/clarity-about-funding-the-account-before-creation-deployment/4960/7 "2023-01-08T15:44:26Z")

</div>

Great questions and very happy to have you here!

---

<div class="post-metadata">

**Author:** ![Nicky2k](https://dub1.discourse-cdn.com/flex005/user_avatar/community.starknet.io/nicky2k/32/2516_2.png) [@Nicky2k](https://community.starknet.io/u/Nicky2k)\
**Post date:** [January 18, 2023, 1:19pm UTC](https://community.starknet.io/t/clarity-about-funding-the-account-before-creation-deployment/4960/8 "2023-01-18T13:19:20Z")

</div>

Got a question about this one transaction that u commit to top up account to deploy it further, where and how can we check this transaction after the deployment? How does this info stored?

---

<div class="post-metadata">

**Author:** ![bbrandtom](https://dub1.discourse-cdn.com/flex005/user_avatar/community.starknet.io/bbrandtom/32/9_2.png) [@bbrandtom](https://community.starknet.io/u/bbrandtom)\
**Post date:** [January 19, 2023, 7:26am UTC](https://community.starknet.io/t/clarity-about-funding-the-account-before-creation-deployment/4960/9 "2023-01-19T07:26:16Z")

</div>

I’m not sure I understand this question - are you asking where can you track the transactions status?  
If so then you can use one of the block explorers of StarkNet -  
[Voyager](https://voyager.online) / [StarkScan](https://starkscan.co) / [ViewBlock](https://viewblock.io/starknet)

---

<div class="post-metadata">

**Author:** ![Nicky2k](https://dub1.discourse-cdn.com/flex005/user_avatar/community.starknet.io/nicky2k/32/2516_2.png) [@Nicky2k](https://community.starknet.io/u/Nicky2k)\
**Post date:** [January 19, 2023, 10:46am UTC](https://community.starknet.io/t/clarity-about-funding-the-account-before-creation-deployment/4960/10 "2023-01-19T10:46:02Z")

</div>

The question was about that 1 transaction you commit to top up an account to be able to deploy it, when an account is deployed it has 0 transactions in it’s history, so where does this 1 transaction go?

---

<div class="post-metadata">

**Author:** ![bbrandtom](https://dub1.discourse-cdn.com/flex005/user_avatar/community.starknet.io/bbrandtom/32/9_2.png) [@bbrandtom](https://community.starknet.io/u/bbrandtom)\
**Post date:** [January 19, 2023, 1:35pm UTC](https://community.starknet.io/t/clarity-about-funding-the-account-before-creation-deployment/4960/11 "2023-01-19T13:35:53Z")

</div>

Oh I see.

The funding transaction is sent from a different account, the same way you first fund an account on Ethereum.

---

<div class="post-metadata">

**Author:** ![Nicky2k](https://dub1.discourse-cdn.com/flex005/user_avatar/community.starknet.io/nicky2k/32/2516_2.png) [@Nicky2k](https://community.starknet.io/u/Nicky2k)\
**Post date:** [January 20, 2023, 2:41am UTC](https://community.starknet.io/t/clarity-about-funding-the-account-before-creation-deployment/4960/12 "2023-01-20T02:41:33Z")

</div>

Sorry if this is off topic and thanks for your time and answers. I didn’t specify, if a user replenishes a wallet that is yet to be deployed using the official bridge, then how is this transaction counted, where is it stored and is it not assigned to this yet undeployed account?

---

<div class="post-metadata">

**Author:** ![wind.rider](https://dub1.discourse-cdn.com/flex005/user_avatar/community.starknet.io/wind.rider/32/1346_2.png) [@wind.rider](https://community.starknet.io/u/wind.rider)\
**Post date:** [January 20, 2023, 2:45am UTC](https://community.starknet.io/t/clarity-about-funding-the-account-before-creation-deployment/4960/13 "2023-01-20T02:45:40Z")

</div>

Ser, I’m not sure if understand your question correctly(if I have misunderstood please correct me), but for your first deposit, it was deposited into your newly created account, as mentioned in the account deploy process provided by Tom([Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.](https://starkware.notion.site/starkware/StarkNet-0-10-1-07b5c6d433464c61bf035037b8113b7b)),please check:

_A user can determine the address of his future account off-chain and then request to fund it. This is similar to Ether, where a user can “own” an address by selecting a key pair off-chain, but still needs an existing address to send him ETH in order to send the first transaction._

Then, you can use those funds to deploy account

_Transaction Flow_

_Upon receiving a `DEPLOY_ACCOUNT` transaction, the sequencer will:_

_- verify that the address has funds to pay for the deployment_  
_- execute the constructor with the given arguments_  
_- execute the ` __validate_deploy__ ` entry point_  
_- charge fee from the new account address_  
_- advance the nonce to 1_

_Note that in determining the contract address, deployer address 0 will be used._

For account create and deploy, you can also find information here：[Setting up a StarkNet account :: StarkNet documentation](https://docs.starknet.io/documentation/getting_started/account_setup/#creating-an-account)

thank you
