Overview

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).**

Deploy Account

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
}

Transaction Flow

Upon receiving a DEPLOY_ACCOUNT transaction, the sequencer will: