Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
docs: Wallet dev docs #1746
docs: Wallet dev docs #1746
Changes from 1 commit
9412c21
a4bcff1
83499bd
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe before this paragraph, it would be helpful to explain this point. Is a wallet always built with one type of account contract in mind? Can a wallet be designed to work with many types of account contract? Can users customise their own account contracts and use those with any wallet, or are users restricted in their choice of account contract based on the wallet they choose to use?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How is a 'user intent' expressed / what does it look like?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this a contradiction:
"...out of a set of function calls that describe user intents"
"...is expected to throw if more than a single function call is requested".
Can a user intent be more than one function call?
This file was deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It might help people's understanding to further elaborate on what an Ethereum wallet does.
What does it mean to "manage" an account? What information does an Ethereum wallet store? What actions can a user perform with a wallet? What actions can a dapp perform? Aare there any differences in actions that a user can perform vs a dapp, when interacting with a wallet?
Just to add to the questions directly above, my memory is fuzzy as to what the "usual responsibilities" of an Ethereum wallet are, and so other readers might be too.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What does it mean to "manage"? Store this data; provide this data to the dapp / user / contracts; prevent unauthorised access, anything else?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think the account is "implemented" by the account contract. It's more that an account contract is used to dictate tx validation rules for an account. And an account contract is an on-chain representation of a user's account.
Pehaps: "...as well as formatting user intents into arguments that the account contract can interpret."
Perhaps my confusion comes from the use of the word "transaction". A "transaction request" results in a "transaction" being executed, and the record of that transaction having taken place can be referred-to as a "transaction". I wouldn't refer to the input data as a 'transaction', but rather a 'transaction request' or 'arguments' or 'inputs'.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So does a wallet include an implementation of 'aztec.js', or is a wallet just the Aztec RPC Server?
I guess I'm confused still by what an intent is, in this context. A human thought (an intent such as "call transfer on this contract") is translated into the human pressing a button, which is translated by aztec.js into a JSON RPC call to the Aztec RPC Server, which is translated into arguments that can be consumed by an account contract.
Would it be truer to say that the wallet's responsibilities actually begin when it receives a JSON RPC transaction request object, and then the wallet takes that object and formats it into a 'transaction request' format that can be read by the simulator (which then formats the transaction request again into arguments that can be read by the account contract)? (I.e. that the translation of an intent into JSON RPC format is actually done outside of the wallet, before reaching the wallet?)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps a takeaway from some of my questions so far, is that we'll need to be consistent about naming things, perhaps to the point of eventually needing a glossary, or links to actual javascript object descriptions.
Some terms that have come up so far over the past couple of pages (and in my brain):
Intent, transaction, authenticated transaction, execution request, transaction request, payload, call, transaction origin, account, account contract, account contract implementation, the various formattings of a 'transaction request' for various components, function call, enqueued function, function request, entrypoint, transaction formatting, transaction authentication, execution trace, side effect.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do the 'side effects that arise from its public execution' change, or is it really that those side effects aren't determined until the sequencer begins public execution?