Today, there is no flow for user onboarding that doesn’t rely on a third party. You either use the subsidized deploy
**transaction (which will eventually be removed) or have an existing account pay for the deployment of your new account. To avoid having to rely on a third party, we will introduce a flow in which the user pre-funds his future account address. These funds will be used to pay for the deployment.
Note that the account address is a deterministic function of the following parameters:
Thus, a user can determine his future account address off-chain and then request to fund it. This is similar to Ethereum, where a user can “take ownership” of an address by choosing a key pair off-chain, but still needs an existing address to send him ETH in order to send the first transaction.
The above flow will be made possible by a new transaction type - the DEPLOY_ACCOUNT
transaction. With the introduction of this new transaction type, **DEPLOY
transactions become deprecated, and support for them will cease in future StarkNet versions (they will still be supported in 0.10.1).**
The following is an example of the new DEPLOY_ACOUNT
transaction:
{
"class_hash": "0x53877052f990547ec7ca9dedec3a33ca321d3d45d2ca0790a1bb34bae52956e",
"constructor_calldata": ["0x15d40a3d6ca2ac30f4031e42be28da9b056fef9bb7357ac5e85627ee876e5ad"],
"contract_address_salt": "0x15d40a3d6ca2ac30f4031e42be28da9b056fef9bb7357ac5e85627ee876e5ad"
"signature": [
"0x2053a06585efce1c6e6e5cd9bbba774b78d872e727c310d972c7d885378d4fc",
"0x53e0e3c6a515c1334d199a5a55fb8b5e0a1b5f678c36587e43c8f939f8ac99d"
],
"max_fee": "0xe0fbdace1bb7a",
"type": "DEPLOY_ACCOUNT",
"[nonce](<https://starkware.notion.site/StarkNet-0-10-1-07b5c6d433464c61bf035037b8113b7b>)": 0,
"version": 0
}
Upon receiving a DEPLOY_ACCOUNT
transaction, the sequencer will:
__validate_deploy__
entry point