diff --git a/.gitignore b/.gitignore index 58466dc..ae5360a 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ node_modules test-ledger .yarn .surfpool +vendor +CLAUDE.md \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 45cecd8..b51d962 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -224,7 +224,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8140a40827bdfd74720f1f3084778fa081262f2f43bd4bdbc350f98ce1b341c6" dependencies = [ "anchor-syn", - "proc-macro-crate 3.5.0", + "proc-macro-crate", "proc-macro2", "quote", "syn 1.0.109", @@ -259,7 +259,7 @@ dependencies = [ "anchor-lang-idl", "base64 0.21.7", "bincode", - "borsh 1.6.1", + "borsh", "bytemuck", "const-crypto", "solana-account-info", @@ -696,40 +696,17 @@ dependencies = [ "hybrid-array", ] -[[package]] -name = "borsh" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee" -dependencies = [ - "borsh-derive 0.10.4", - "hashbrown 0.13.2", -] - [[package]] name = "borsh" version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" dependencies = [ - "borsh-derive 1.6.1", + "borsh-derive", "bytes", "cfg_aliases", ] -[[package]] -name = "borsh-derive" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "831213f80d9423998dd696e2c5345aba6be7a0bd8cd19e31c5243e13df1cef89" -dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", - "proc-macro-crate 0.1.5", - "proc-macro2", - "syn 1.0.109", -] - [[package]] name = "borsh-derive" version = "1.6.1" @@ -737,34 +714,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfcfdc083699101d5a7965e49925975f2f55060f94f9a05e7187be95d530ca59" dependencies = [ "once_cell", - "proc-macro-crate 3.5.0", + "proc-macro-crate", "proc-macro2", "quote", "syn 2.0.117", ] -[[package]] -name = "borsh-derive-internal" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65d6ba50644c98714aa2a70d13d7df3cd75cd2b523a2b452bf010443800976b3" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "borsh-schema-derive-internal" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276691d96f063427be83e6692b86148e488ebba9f48f77788724ca027ba3b6d4" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "bs58" version = "0.5.1" @@ -829,7 +784,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a98356df42a2eb1bd8f1793ae4ee4de48e384dd974ce5eac8eee802edb7492be" dependencies = [ "serde", - "toml 0.8.23", + "toml", ] [[package]] @@ -1720,7 +1675,7 @@ dependencies = [ "log", "serde", "solana-account", - "solana-address 2.6.0", + "solana-address 2.6.1", "solana-address-lookup-table-interface", "solana-bpf-loader-program", "solana-builtins", @@ -1739,7 +1694,7 @@ dependencies = [ "solana-last-restart-slot", "solana-loader-v3-interface", "solana-loader-v4-interface", - "solana-message", + "solana-message 3.1.0", "solana-native-token", "solana-nonce", "solana-nonce-account", @@ -1762,7 +1717,7 @@ dependencies = [ "solana-system-program", "solana-sysvar 3.1.1", "solana-sysvar-id", - "solana-transaction", + "solana-transaction 3.1.0", "solana-transaction-context", "solana-transaction-error", "thiserror 2.0.18", @@ -2015,15 +1970,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml 0.5.11", -] - [[package]] name = "proc-macro-crate" version = "3.5.0" @@ -2044,25 +1990,22 @@ dependencies = [ [[package]] name = "pyth-solana-receiver-sdk" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b7854c4176470c8d86de301dc5b57ac84227dabb9527328b585fc332962d60b" +version = "1.2.0" dependencies = [ "anchor-lang", + "borsh", + "cfg-if", "hex", "pythnet-sdk", - "solana-program", ] [[package]] name = "pythnet-sdk" version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "498d20fd330277697aaee92f341bdabdb4695b10e05f054157a18ad8b7746a17" dependencies = [ "anchor-lang", "bincode", - "borsh 0.10.4", + "borsh", "bytemuck", "byteorder", "fast-math", @@ -2501,7 +2444,7 @@ checksum = "a9cf16495d9eb53e3d04e72366a33bb1c20c24e78c171d8b8f5978357b63ae95" dependencies = [ "bincode", "serde_core", - "solana-address 2.6.0", + "solana-address 2.6.1", "solana-program-error", "solana-program-memory", ] @@ -2512,16 +2455,16 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2ecac8e1b7f74c2baa9e774c42817e3e75b20787134b76cc4d45e8a604488f5" dependencies = [ - "solana-address 2.6.0", + "solana-address 2.6.1", ] [[package]] name = "solana-address" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1384b52c435a750cc9c538760fc7bb472fd78e65a9900a2d07312c5bb335b72" +checksum = "39c93e262f671bf402e1040e4a7e40b05d81da5956c7681948c975a0997517bb" dependencies = [ - "borsh 1.6.1", + "borsh", "bytemuck", "bytemuck_derive", "curve25519-dalek", @@ -2595,7 +2538,7 @@ checksum = "7116e1d942a2432ca3f514625104757ab8a56233787e95144c93950029e31176" dependencies = [ "blake3", "solana-define-syscall 4.0.1", - "solana-hash 4.3.0", + "solana-hash 4.4.0", ] [[package]] @@ -2619,7 +2562,7 @@ version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c04abbae16f57178a163125805637b8a076175bb5c0002fb04f4792bea901cf7" dependencies = [ - "borsh 1.6.1", + "borsh", ] [[package]] @@ -2739,7 +2682,7 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8292c436b269ad23cecc8b24f7da3ab07ca111661e25e00ce0e1d22771951ab9" dependencies = [ - "borsh 1.6.1", + "borsh", "solana-instruction", "solana-sdk-ids", ] @@ -2818,7 +2761,7 @@ checksum = "1cddf2388b28291210d9aa60690740733cab527531f06ed153c4d388951e407c" dependencies = [ "serde", "serde_derive", - "solana-hash 4.3.0", + "solana-hash 4.4.0", "solana-sdk-ids", "solana-sdk-macro", "solana-sysvar-id", @@ -2855,7 +2798,7 @@ checksum = "0eb265ff95e28eceda117e2e3d2d2a611ecbbfe911dfeeeecd1521814540ffab" dependencies = [ "serde", "serde_derive", - "solana-hash 4.3.0", + "solana-hash 4.4.0", "solana-instruction", "solana-nonce", "solana-pubkey 4.2.0", @@ -2917,16 +2860,16 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "337c246447142f660f778cf6cb582beba8e28deb05b3b24bfb9ffd7c562e5f41" dependencies = [ - "solana-hash 4.3.0", + "solana-hash 4.4.0", ] [[package]] name = "solana-hash" -version = "4.3.0" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1b113239362cee7093bfb250467138f079a2a03673181dc15bff6ccd677912d" +checksum = "fe51db00ac3aa9f950d1e6201a126acfa26e6d81bc4a183ba64ec02effcad883" dependencies = [ - "borsh 1.6.1", + "borsh", "bytemuck", "bytemuck_derive", "five8", @@ -2934,7 +2877,6 @@ dependencies = [ "serde_derive", "solana-atomic-u64", "solana-sanitize", - "wincode", ] [[package]] @@ -2944,7 +2886,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37ebb0ffd19263051bc3f683fcc086134b8ff23af894dcb63f7563c7137b42f1" dependencies = [ "bincode", - "borsh 1.6.1", + "borsh", "serde", "serde_derive", "solana-define-syscall 5.1.0", @@ -3002,7 +2944,7 @@ checksum = "ed1c0d16d6fdeba12291a1f068cdf0d479d9bff1141bf44afd7aa9d485f65ef8" dependencies = [ "sha3", "solana-define-syscall 4.0.1", - "solana-hash 4.3.0", + "solana-hash 4.4.0", ] [[package]] @@ -3015,7 +2957,7 @@ dependencies = [ "five8", "five8_core", "rand 0.9.4", - "solana-address 2.6.0", + "solana-address 2.6.1", "solana-seed-phrase", "solana-signature", "solana-signer", @@ -3099,8 +3041,8 @@ dependencies = [ "lazy_static", "serde", "serde_derive", - "solana-address 2.6.0", - "solana-hash 4.3.0", + "solana-address 2.6.1", + "solana-hash 4.4.0", "solana-instruction", "solana-sanitize", "solana-sdk-ids", @@ -3108,6 +3050,20 @@ dependencies = [ "solana-transaction-error", ] +[[package]] +name = "solana-message" +version = "4.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "705bae842f1d02819db46ae9051613d78576c7cdabc0edb5cba4d7fe9482acaf" +dependencies = [ + "solana-address 2.6.1", + "solana-hash 4.4.0", + "solana-instruction", + "solana-sanitize", + "solana-sdk-ids", + "solana-transaction-error", +] + [[package]] name = "solana-msg" version = "3.1.0" @@ -3132,7 +3088,7 @@ dependencies = [ "serde", "serde_derive", "solana-fee-calculator", - "solana-hash 4.3.0", + "solana-hash 4.4.0", "solana-pubkey 4.2.0", "solana-sha256-hasher", ] @@ -3200,7 +3156,7 @@ dependencies = [ "solana-epoch-stake", "solana-example-mocks", "solana-fee-calculator", - "solana-hash 4.3.0", + "solana-hash 4.4.0", "solana-instruction", "solana-instruction-error", "solana-instructions-sysvar", @@ -3246,7 +3202,7 @@ version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4f04fa578707b3612b095f0c8e19b66a1233f7c42ca8082fcb3b745afcc0add6" dependencies = [ - "borsh 1.6.1", + "borsh", "serde", "serde_derive", ] @@ -3335,7 +3291,7 @@ version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7db719574990de7e8b0f55a8593ac92a5ccb42c8ce67b3e4bf05b139d5d9ee71" dependencies = [ - "solana-address 2.6.0", + "solana-address 2.6.1", ] [[package]] @@ -3393,7 +3349,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "def234c1956ff616d46c9dd953f251fa7096ddbaa6d52b165218de97882b7280" dependencies = [ - "solana-address 2.6.0", + "solana-address 2.6.1", ] [[package]] @@ -3467,7 +3423,7 @@ checksum = "db7dc3011ea4c0334aaaa7e7128cb390ecf546b28d412e9bf2064680f57f588f" dependencies = [ "sha2 0.10.9", "solana-define-syscall 4.0.1", - "solana-hash 4.3.0", + "solana-hash 4.4.0", ] [[package]] @@ -3481,9 +3437,9 @@ dependencies = [ [[package]] name = "solana-signature" -version = "3.4.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7a73c6e97cc2108be0adf6a6ea326434f8398df9d7eed81da2a4548b69e971c" +checksum = "b0364c7577c3c82a693ce28a1febc8d1b5d1b0a175fdc2114ae6186b69effe1e" dependencies = [ "ed25519-dalek", "five8", @@ -3496,11 +3452,11 @@ dependencies = [ [[package]] name = "solana-signer" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bfea97951fee8bae0d6038f39a5efcb6230ecdfe33425ac75196d1a1e3e3235" +checksum = "520bd6021163ee517f4bdc7ae03ded904f97e11320001ba0b3355f45eb14f558" dependencies = [ - "solana-pubkey 3.0.0", + "solana-pubkey 4.2.0", "solana-signature", "solana-transaction-error", ] @@ -3513,7 +3469,7 @@ checksum = "0a57c158c35629f9e302ab385f16b15813f4927a31c27dda72f3df828bb08d93" dependencies = [ "serde", "serde_derive", - "solana-hash 4.3.0", + "solana-hash 4.4.0", "solana-sdk-ids", "solana-sysvar-id", ] @@ -3611,11 +3567,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be3250a278a769ba59059e13d0f16c2aba0ca1de7595fb0e02556091751560c8" dependencies = [ "solana-hash 3.1.0", - "solana-message", + "solana-message 3.1.0", "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-signature", - "solana-transaction", + "solana-transaction 3.1.0", ] [[package]] @@ -3651,7 +3607,7 @@ dependencies = [ "num-traits", "serde", "serde_derive", - "solana-address 2.6.0", + "solana-address 2.6.1", "solana-instruction", "solana-msg", "solana-program-error", @@ -3700,7 +3656,7 @@ dependencies = [ "solana-epoch-rewards", "solana-epoch-schedule", "solana-fee-calculator", - "solana-hash 4.3.0", + "solana-hash 4.4.0", "solana-instruction", "solana-last-restart-slot", "solana-program-entrypoint", @@ -3734,7 +3690,7 @@ dependencies = [ "solana-epoch-rewards", "solana-epoch-schedule", "solana-fee-calculator", - "solana-hash 4.3.0", + "solana-hash 4.4.0", "solana-instruction", "solana-last-restart-slot", "solana-program-entrypoint", @@ -3755,7 +3711,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17358d1e9a13e5b9c2264d301102126cf11a47fd394cdf3dec174fe7bc96e1de" dependencies = [ - "solana-address 2.6.0", + "solana-address 2.6.1", "solana-sdk-ids", ] @@ -3768,11 +3724,11 @@ dependencies = [ "bincode", "serde", "serde_derive", - "solana-address 2.6.0", - "solana-hash 4.3.0", + "solana-address 2.6.1", + "solana-hash 4.4.0", "solana-instruction", "solana-instruction-error", - "solana-message", + "solana-message 3.1.0", "solana-sanitize", "solana-sdk-ids", "solana-short-vec", @@ -3781,6 +3737,23 @@ dependencies = [ "solana-transaction-error", ] +[[package]] +name = "solana-transaction" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d105ecce084206697230226c6b2230401c220feb4dc63e1274d58b38969292" +dependencies = [ + "solana-address 2.6.1", + "solana-hash 4.4.0", + "solana-instruction", + "solana-instruction-error", + "solana-message 4.2.1", + "solana-sanitize", + "solana-sdk-ids", + "solana-signature", + "solana-transaction-error", +] + [[package]] name = "solana-transaction-context" version = "3.1.14" @@ -3800,9 +3773,9 @@ dependencies = [ [[package]] name = "solana-transaction-error" -version = "3.2.0" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a2165ad25b694c654d5395fc7a049452a192376e4c96a7fad05580f6ba5ba1c" +checksum = "2441d6dcd51100e7d97c3fb3b723e08aa701066ff7afc00026fd8d8e222cb95b" dependencies = [ "serde", "serde_derive", @@ -3862,7 +3835,7 @@ dependencies = [ "solana-sdk-ids", "solana-signer", "solana-slot-hashes", - "solana-transaction", + "solana-transaction 3.1.0", "solana-transaction-context", "solana-vote-interface", "thiserror 2.0.18", @@ -3983,9 +3956,9 @@ dependencies = [ "litesvm", "pyth-solana-receiver-sdk", "solana-keypair", - "solana-message", + "solana-message 4.2.1", "solana-signer", - "solana-transaction", + "solana-transaction 4.1.3", ] [[package]] @@ -4087,15 +4060,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.8.23" diff --git a/Cargo.toml b/Cargo.toml index f397704..796fd09 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,6 +4,10 @@ members = [ ] resolver = "2" +[patch.crates-io] +pyth-solana-receiver-sdk = { path = "vendor/pyth-solana-receiver-sdk" } +pythnet-sdk = { path = "vendor/pythnet-sdk" } + [profile.release] overflow-checks = true lto = "fat" diff --git a/programs/solisting/src/instructions/accept_order.rs b/programs/solisting/src/instructions/accept_order.rs index ec7eec9..83063c5 100644 --- a/programs/solisting/src/instructions/accept_order.rs +++ b/programs/solisting/src/instructions/accept_order.rs @@ -1,6 +1,6 @@ -use anchor_lang::prelude::*; -use crate::state::{ListingAccount, OrderAccount}; use crate::error::SolistingError; +use crate::state::{ListingAccount, OrderAccount}; +use anchor_lang::prelude::*; #[derive(Accounts)] pub struct AcceptOrder<'info> { @@ -52,17 +52,15 @@ pub fn handler(ctx: Context) -> Result<()> { SolistingError::InvalidDescroProgram ); - descro::cpi::seller_confirm( - CpiContext::new( - ctx.accounts.descro_program.to_account_info(), - descro::cpi::accounts::SellerConfirm { - seller: ctx.accounts.seller.to_account_info(), - resolver: ctx.accounts.resolver.to_account_info(), - escrow_account: ctx.accounts.escrow_account.to_account_info(), - resolver_entry: ctx.accounts.resolver_entry.to_account_info(), - }, - ), - )?; + descro::cpi::seller_confirm(CpiContext::new( + ctx.accounts.descro_program.key(), + descro::cpi::accounts::SellerConfirm { + seller: ctx.accounts.seller.to_account_info(), + resolver: ctx.accounts.resolver.to_account_info(), + escrow_account: ctx.accounts.escrow_account.to_account_info(), + resolver_entry: ctx.accounts.resolver_entry.to_account_info(), + }, + ))?; let listing = &mut ctx.accounts.listing_account; listing.quantity_reserved = listing.quantity_reserved.saturating_sub(1); diff --git a/programs/solisting/src/instructions/cancel_order.rs b/programs/solisting/src/instructions/cancel_order.rs index f5cbe91..449d4ba 100644 --- a/programs/solisting/src/instructions/cancel_order.rs +++ b/programs/solisting/src/instructions/cancel_order.rs @@ -1,7 +1,7 @@ +use crate::error::SolistingError; +use crate::state::{ListingAccount, OrderAccount}; use anchor_lang::prelude::*; use anchor_lang::AccountDeserialize; -use crate::state::{ListingAccount, OrderAccount}; -use crate::error::SolistingError; #[derive(Accounts)] pub struct CancelOrder<'info> { @@ -59,23 +59,24 @@ pub fn handler(ctx: Context) -> Result<()> { if let Ok(escrow) = descro::EscrowAccount::try_deserialize(&mut data.as_ref()) { if escrow.state == descro::EscrowState::AwaitingSellerConfirm { drop(data); - descro::cpi::cancel( - CpiContext::new( - ctx.accounts.descro_program.to_account_info(), - descro::cpi::accounts::Cancel { - canceller: ctx.accounts.buyer.to_account_info(), - buyer: ctx.accounts.buyer.to_account_info(), - escrow_account: ctx.accounts.escrow_account.to_account_info(), - vault: ctx.accounts.vault.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - }, - ), - )?; + descro::cpi::cancel(CpiContext::new( + ctx.accounts.descro_program.key(), + descro::cpi::accounts::Cancel { + canceller: ctx.accounts.buyer.to_account_info(), + buyer: ctx.accounts.buyer.to_account_info(), + escrow_account: ctx.accounts.escrow_account.to_account_info(), + vault: ctx.accounts.vault.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + }, + ))?; } } } - ctx.accounts.listing_account.quantity_reserved = - ctx.accounts.listing_account.quantity_reserved.saturating_sub(1); + ctx.accounts.listing_account.quantity_reserved = ctx + .accounts + .listing_account + .quantity_reserved + .saturating_sub(1); Ok(()) } diff --git a/programs/solisting/src/instructions/create_order.rs b/programs/solisting/src/instructions/create_order.rs index 5246d8a..61acaad 100644 --- a/programs/solisting/src/instructions/create_order.rs +++ b/programs/solisting/src/instructions/create_order.rs @@ -1,7 +1,7 @@ -use anchor_lang::prelude::*; -use crate::state::{Currency, ListingAccount, OrderAccount}; use crate::error::SolistingError; use crate::oracle; +use crate::state::{Currency, ListingAccount, OrderAccount}; +use anchor_lang::prelude::*; #[derive(Accounts)] #[instruction(order_id: u64, escrow_id: u64, resolver: Pubkey, payment_currency: Currency)] @@ -133,7 +133,7 @@ pub fn handler( descro::cpi::buyer_create_escrow( CpiContext::new( - ctx.accounts.descro_program.to_account_info(), + ctx.accounts.descro_program.key(), descro::cpi::accounts::BuyerCreateEscrow { buyer: ctx.accounts.buyer.to_account_info(), seller: ctx.accounts.seller.to_account_info(), diff --git a/programs/solisting/src/instructions/reject_order.rs b/programs/solisting/src/instructions/reject_order.rs index c7ebbf4..ef39f14 100644 --- a/programs/solisting/src/instructions/reject_order.rs +++ b/programs/solisting/src/instructions/reject_order.rs @@ -1,7 +1,7 @@ +use crate::error::SolistingError; +use crate::state::{ListingAccount, OrderAccount}; use anchor_lang::prelude::*; use anchor_lang::AccountDeserialize; -use crate::state::{ListingAccount, OrderAccount}; -use crate::error::SolistingError; #[derive(Accounts)] pub struct RejectOrder<'info> { @@ -66,23 +66,24 @@ pub fn handler(ctx: Context) -> Result<()> { if let Ok(escrow) = descro::EscrowAccount::try_deserialize(&mut data.as_ref()) { if escrow.state == descro::EscrowState::AwaitingSellerConfirm { drop(data); - descro::cpi::cancel( - CpiContext::new( - ctx.accounts.descro_program.to_account_info(), - descro::cpi::accounts::Cancel { - canceller: ctx.accounts.seller.to_account_info(), - buyer: ctx.accounts.buyer.to_account_info(), - escrow_account: ctx.accounts.escrow_account.to_account_info(), - vault: ctx.accounts.vault.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - }, - ), - )?; + descro::cpi::cancel(CpiContext::new( + ctx.accounts.descro_program.key(), + descro::cpi::accounts::Cancel { + canceller: ctx.accounts.seller.to_account_info(), + buyer: ctx.accounts.buyer.to_account_info(), + escrow_account: ctx.accounts.escrow_account.to_account_info(), + vault: ctx.accounts.vault.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + }, + ))?; } } } - ctx.accounts.listing_account.quantity_reserved = - ctx.accounts.listing_account.quantity_reserved.saturating_sub(1); + ctx.accounts.listing_account.quantity_reserved = ctx + .accounts + .listing_account + .quantity_reserved + .saturating_sub(1); Ok(()) }