feat: account contracts pay fee through FPC#5543
feat: account contracts pay fee through FPC#5543alexghr wants to merge 1 commit into04-02-feat_pay_fee_when_deploying_schnorr_accountfrom
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
e951798 to
b17a11a
Compare
4a30597 to
24b446d
Compare
Benchmark resultsNo metrics with a significant change found. Detailed resultsAll benchmarks are run on txs on the This benchmark source data is available in JSON format on S3 here. Values are compared against data from master at commit L2 block published to L1Each column represents the number of txs on an L2 block published to L1.
L2 chain processingEach column represents the number of blocks on the L2 chain where each block has 16 txs.
Circuits statsStats on running time and I/O sizes collected for every circuit run across all benchmarks.
Tree insertion statsThe duration to insert a fixed batch of leaves into each tree type.
MiscellaneousTransaction sizes based on how many contract classes are registered in the tx.
Transaction size based on fee payment method
Transaction processing duration by data writes.
|
24b446d to
0655d0f
Compare
1bcaa26 to
51ed6a1
Compare
0655d0f to
0a3da42
Compare
51ed6a1 to
f61f732
Compare
b639abd to
439440b
Compare
d90f2d5 to
5b2e7e4
Compare
18818d5 to
137cb61
Compare
137cb61 to
aa5132b
Compare
856626e to
4d98bc8
Compare
aa5132b to
37ec9d9
Compare
4d98bc8 to
1bbdc57
Compare
37ec9d9 to
cff2a1a
Compare
1bbdc57 to
086911b
Compare
cff2a1a to
5fa7680
Compare
| // first, register the account with the PXE so that it can receive notes | ||
| await accountManager.register(); | ||
|
|
||
| // right now, the only way to fund an undeployed account with private notes is to transfer them |
There was a problem hiding this comment.
Seems like privately_mint_private_note should have a recipient argument, right?
|
Superseded by #5601 |
This PR enables accounts to pay tx fees when they're deployed. To achieve this a new deployment method was added that's used by the `AccountManager` class to optionally register/publicly deploy and initialize the target account contract. Entrypoint classes now accept authwits/packed arguments alongside the normal function calls from before. This is needed so that authwits could be created in a parent context and then passed along as transient authwits to the transaction (see `ExecutionRequestInit` wrapper type) Initializing an account contract can use any of the three existing payment methods: - using bridged gas token from L1 - paying privately through a fee payment contract - paying publicly through a fee payment contract In order to use fee payment contracts this PR adds `noinitcheck` to `spend_private_authwit` and `spend_public_authwit` because it's not possible to read the init nullifier in the current tx (protocol limitation). Instead the contract relies on the note containing the public key to exist to validate that the contract has been initialized correctly. An extra payment flow is tested as well: a third party takes the account's public keys and deploys and initializes the account while paying the associated fee. This simulates the flow where a deployment service is used that takes payment through a side chain (e.g. fiat). Breaking change: moved `DefaultMultiCallEntrypoint` to aztec.js This PR supersedes #5540 and #5543. Fix #5190 #5191 #5544.

This PR builds on top of the previous one to enable account contracts to pay for their deployment through an FPC privately
Fix #5191