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