Skip to content

Commit

Permalink
add: allow withdraw SOL to PDA (#37)
Browse files Browse the repository at this point in the history
* allow withdraw to PDA (other than system account)

* add a test to withdraw SOL to a ATA address (PDA)

* Update tests/protocol-contracts-solana.ts

Co-authored-by: skosito <[email protected]>

* substantiated comment regarding UncheckedAccount

---------

Co-authored-by: skosito <[email protected]>
  • Loading branch information
brewmaster012 and skosito authored Oct 4, 2024
1 parent 98bd5c3 commit 812ec18
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 11 deletions.
3 changes: 2 additions & 1 deletion programs/protocol-contracts-solana/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -350,8 +350,9 @@ pub struct Withdraw<'info> {

#[account(mut)]
pub pda: Account<'info, Pda>,
/// CHECK: to account is not read so no need to check its owners; the program neither knows nor cares who the owner is.
#[account(mut)]
pub to: SystemAccount<'info>,
pub to: UncheckedAccount<'info>,
}

#[derive(Accounts)]
Expand Down
11 changes: 1 addition & 10 deletions tests/protocol-contracts-solana.ts
Original file line number Diff line number Diff line change
Expand Up @@ -248,15 +248,6 @@ describe("some tests", () => {

it("deposit and withdraw 0.5 SOL from Gateway with ECDSA signature", async () => {
await gatewayProgram.methods.deposit(new anchor.BN(1_000_000_000), Array.from(address)).accounts({pda: pdaAccount}).rpc();
// const transaction = new anchor.web3.Transaction();
// transaction.add(
// web3.SystemProgram.transfer({
// fromPubkey: wallet.publicKey,
// toPubkey: pdaAccount,
// lamports: 1_000_000_000,
// })
// );
// await anchor.web3.sendAndConfirmTransaction(conn, transaction, [wallet]);
let bal1 = await conn.getBalance(pdaAccount);
console.log("pda account balance", bal1);
expect(bal1).to.be.gte(1_000_000_000);
Expand All @@ -271,7 +262,7 @@ describe("some tests", () => {
// );
const nonce = pdaAccountData.nonce;
const amount = new anchor.BN(500000000);
const to = wallet.publicKey;
const to = pda_ata.address;
const buffer = Buffer.concat([
Buffer.from("withdraw","utf-8"),
chain_id_bn.toArrayLike(Buffer, 'be', 8),
Expand Down

0 comments on commit 812ec18

Please sign in to comment.