Anchor Example: Escrow Program
- See this doc for more implementation details
Overview
Since this program is extended from the original Escrow Program, I assumed you have gone through the original blog post at least once.
However, there is one major difference between this exmaple and the original Escrow program: Instead of letting initializer create a token account to be reset to a PDA authority, we create a token account Vault that has both a PDA key and a PDA authority.
Initialize
Initializer can send a transaction to the escrow program to initialize the Vault. In this transaction, two new accounts: Vault and EscrowAccount, will be created and tokens (Token A) to be exchanged will be transfered from Initializer to Vault.
Cancel
Initializer can also send a transaction to the escrow program to cancel the demand of escrow. The tokens will be transfered back to the Initialzer and both Vault and EscrowAccount will be closed in this case.
Exchange
Taker can send a transaction to the escrow to exchange Token B for Token A. First, tokens (Token B) will be transfered from Taker to Initializer. Afterward, the tokens (Token A) kept in the Vault will be transfered to Taker. Finally, both Vault and EscrowAccount will be closed.
Build, Deploy and Test
Let's run the test once to see what happens.
First, install dependencies:
$ yarn
Next, we will build and deploy the program via Anchor.
Get the program ID:
$ anchor keys list
anchor_escrow: AGtT2X117M7Lx1PeXQrknorvwApEdBSUsAiYA2R2QESd
Here, make sure you update your program ID in Anchor.toml and lib.rs.
Build the program:
$ anchor build
Let's deploy the program. Notice that anchor-escrow will be deployed on a mainnet-fork test validator run by Dappio:
$ solana config set --url https://rpc-mainnet-fork.dappio.xyz
...
$ solana config set --ws wss://rpc-mainnet-fork.dappio.xyz/ws
...
$ anchor deploy
...
Program Id: AGtT2X117M7Lx1PeXQrknorvwApEdBSUsAiYA2R2QESd
Deploy success
Finally, run the test:
$ anchor test --skip-build --skip-deploy

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.



