docs: Explain attribute.
This commit is contained in:
parent
c6301b71f7
commit
0d878865c8
|
@ -12,11 +12,11 @@ Why should you care? UX.
|
|||
|
||||
Consider a wallet. Would you rather have a wallet with a single SOL address, which you
|
||||
can use to receive *all* SPL tokens, or would you rather have a wallet with a different
|
||||
address for every SPL token. Now generalize this. For every program you use, do you
|
||||
address for every SPL token? Now generalize this. For every program you use, do you
|
||||
want a single account, i.e. your SOL wallet, to define your application state? Or do
|
||||
you want to keep track of all your account addresses, separately, for every program in existance?
|
||||
|
||||
Associated accounts allow your users to reason about single address, their main SOL wallet,
|
||||
Associated accounts allow your users to reason about a single address, their main SOL wallet,
|
||||
a huge improvement on the account model introduced thus far.
|
||||
|
||||
Luckily, Anchor provides the ability to easily created associated program accounts for your program.
|
||||
|
@ -55,6 +55,8 @@ does nothing other than create a mint and *associated* token account.
|
|||
|
||||
<<< @/../examples/tutorial/basic-5/programs/basic-5/src/lib.rs#code
|
||||
|
||||
### Deriving Accounts
|
||||
|
||||
Two new keywords are introduced to the `CreateToken` account context:
|
||||
|
||||
* `associated = <target>`
|
||||
|
@ -80,6 +82,16 @@ can create your associated account. By convention, the names must be as given he
|
|||
|
||||
For more details on how to use `#[account(associated)]`, see [docs.rs](https://docs.rs/anchor-lang/latest/anchor_lang/derive.Accounts.html).
|
||||
|
||||
### Defining an Associated Account
|
||||
|
||||
The new `#[acount(associated)]` attribute will allow you to create a new associated account similar to `#[account(init)]`, but
|
||||
to actually define an account as associated, one must use the `#[associated]` attribute *instead* of the `#[account]` attribute.
|
||||
|
||||
This new `#[associated]` attribute extends `#[account]` to include two things
|
||||
|
||||
* A `Default` implementation, which is required for automatic size detection (performed when `#[account(space = "<size>")]` is omitted from the accounts context).
|
||||
* The implementation of the [Bump](https://docs.rs/anchor-lang/latest/anchor_lang/trait.Bump.html) trait, which is a bit of an implementation but is required for program derived addresses on Solana.
|
||||
|
||||
## Using the Client
|
||||
|
||||
The client can be used similarly to all other examples. Additionally, we introduce
|
||||
|
|
Loading…
Reference in New Issue