From 16863ba404623c773d572e45249ab2c98f0bcb01 Mon Sep 17 00:00:00 2001 From: Illia Bobyr Date: Fri, 14 Mar 2025 20:01:03 -0700 Subject: [PATCH 1/2] program/rust: Consistent instruction account doc style Indentation of the account description was inconsistent in a few cases. Plus all instructions use `account[i]` prefix for the account description, except for `DelProduct` and `UpdPermissions`. That also seems inconsistent. --- program/rust/src/instruction.rs | 38 ++++++++----------- program/rust/src/processor/del_product.rs | 6 +-- program/rust/src/processor/upd_permissions.rs | 8 ++-- 3 files changed, 23 insertions(+), 29 deletions(-) diff --git a/program/rust/src/instruction.rs b/program/rust/src/instruction.rs index c61cbda93..c92406899 100644 --- a/program/rust/src/instruction.rs +++ b/program/rust/src/instruction.rs @@ -24,10 +24,7 @@ pub enum OracleCommand { // account[0] funding account [signer writable] // account[1] mapping account [signer writable] InitMapping = 0, - /// Initialize and add new mapping account - // account[0] funding account [signer writable] - // account[1] tail mapping account [signer writable] - // account[2] new mapping account [signer writable] + /// deprecated AddMapping = 1, /// Initialize and add new product reference data account // account[0] funding account [signer writable] @@ -39,10 +36,10 @@ pub enum OracleCommand { // account[1] product account [signer writable] UpdProduct = 3, /// Add new price account to a product account - // account[0] funding account [signer writable] - // account[1] product account [writable] - // account[2] new price account [writable] - // account[3] permissions account [writable] + // account[0] funding account [signer writable] + // account[1] product account [writable] + // account[2] new price account [writable] + // account[3] permissions account [writable] AddPrice = 4, /// Add publisher to symbol account // account[0] funding account [signer writable] @@ -79,10 +76,7 @@ pub enum OracleCommand { // account[1] price account [writable] // account[2] sysvar_clock account [] UpdPriceNoFailOnError = 13, - /// Resizes a price account so that it fits the Time Machine - // account[0] funding account [signer writable] - // account[1] price account [signer writable] - // account[2] system program [] + /// deprecated ResizePriceAccount = 14, /// Deletes a price account // account[0] funding account [signer writable] @@ -90,24 +84,24 @@ pub enum OracleCommand { // account[2] price account [signer writable] DelPrice = 15, /// Deletes a product account - // key[0] funding account [signer writable] - // key[1] mapping account [signer writable] - // key[2] product account [signer writable] + // account[0] funding account [signer writable] + // account[1] mapping account [signer writable] + // account[2] product account [signer writable] DelProduct = 16, /// Update authorities - // key[0] upgrade authority [signer writable] - // key[1] programdata account [] - // key[2] permissions account [writable] - // key[3] system program [] + // account[0] upgrade authority [signer writable] + // account[1] programdata account [] + // account[2] permissions account [writable] + // account[3] system program [] UpdPermissions = 17, /// Set max latency // account[0] funding account [signer writable] // account[1] price account [signer writable] SetMaxLatency = 18, /// Init price feed index - // account[0] funding account [signer writable] - // account[1] price account [writable] - // account[2] permissions account [writable] + // account[0] funding account [signer writable] + // account[1] price account [writable] + // account[2] permissions account [writable] InitPriceFeedIndex = 19, } diff --git a/program/rust/src/processor/del_product.rs b/program/rust/src/processor/del_product.rs index c563207c7..6d7ec85f1 100644 --- a/program/rust/src/processor/del_product.rs +++ b/program/rust/src/processor/del_product.rs @@ -36,9 +36,9 @@ use { /// little weird, as it allows you to construct a list of multiple mapping accounts where non-tail /// accounts have empty space. This is fine however; users should simply add new products to the /// first available spot. -// key[0] funding account [signer writable] -// key[1] mapping account [signer writable] -// key[2] product account [signer writable] +// account[0] funding account [signer writable] +// account[1] mapping account [signer writable] +// account[2] product account [signer writable] pub fn del_product( program_id: &Pubkey, accounts: &[AccountInfo], diff --git a/program/rust/src/processor/upd_permissions.rs b/program/rust/src/processor/upd_permissions.rs index f4c2a43d5..b49476d84 100644 --- a/program/rust/src/processor/upd_permissions.rs +++ b/program/rust/src/processor/upd_permissions.rs @@ -29,10 +29,10 @@ use { /// Updates permissions for the pyth oracle program /// This function can create and update the permissions accounts, which stores /// several public keys that can execute administrative instructions in the pyth program -// key[0] upgrade authority [signer writable] -// key[1] programdata account [] -// key[2] permissions account [writable] -// key[3] system program [] +// account[0] upgrade authority [signer writable] +// account[1] programdata account [] +// account[2] permissions account [writable] +// account[3] system program [] pub fn upd_permissions( program_id: &Pubkey, accounts: &[AccountInfo], From 8158697605d0f5d4afee5165787291d8fa421de6 Mon Sep 17 00:00:00 2001 From: Illia Bobyr Date: Fri, 14 Mar 2025 20:15:43 -0700 Subject: [PATCH 2/2] program/rust: Mention permissions account in instructions Many instructions require the permissions account, but do not document that it needs to be present in the instruction documentation. --- program/rust/src/instruction.rs | 10 ++++++++++ program/rust/src/processor/add_product.rs | 1 + program/rust/src/processor/add_publisher.rs | 1 + program/rust/src/processor/del_price.rs | 1 + program/rust/src/processor/del_product.rs | 1 + program/rust/src/processor/del_publisher.rs | 1 + program/rust/src/processor/init_price.rs | 1 + program/rust/src/processor/set_max_latency.rs | 1 + program/rust/src/processor/set_min_pub.rs | 1 + program/rust/src/processor/upd_product.rs | 1 + 10 files changed, 19 insertions(+) diff --git a/program/rust/src/instruction.rs b/program/rust/src/instruction.rs index c92406899..6205b78ef 100644 --- a/program/rust/src/instruction.rs +++ b/program/rust/src/instruction.rs @@ -23,6 +23,7 @@ pub enum OracleCommand { /// Initialize first mapping list account // account[0] funding account [signer writable] // account[1] mapping account [signer writable] + // account[2] permissions account [] InitMapping = 0, /// deprecated AddMapping = 1, @@ -30,10 +31,12 @@ pub enum OracleCommand { // account[0] funding account [signer writable] // account[1] mapping account [signer writable] // account[2] new product account [signer writable] + // account[3] permissions account [] AddProduct = 2, /// Update product account // account[0] funding account [signer writable] // account[1] product account [signer writable] + // account[2] permissions account [] UpdProduct = 3, /// Add new price account to a product account // account[0] funding account [signer writable] @@ -44,10 +47,12 @@ pub enum OracleCommand { /// Add publisher to symbol account // account[0] funding account [signer writable] // account[1] price account [signer writable] + // account[2] permissions account [] AddPublisher = 5, /// Delete publisher from symbol account // account[0] funding account [signer writable] // account[1] price account [signer writable] + // account[2] permissions account [] DelPublisher = 6, /// Publish component price // account[0] funding account [signer writable] @@ -62,6 +67,7 @@ pub enum OracleCommand { /// (Re)initialize price account // account[0] funding account [signer writable] // account[1] new price account [signer writable] + // account[2] permissions account [] InitPrice = 9, /// deprecated InitTest = 10, @@ -70,6 +76,7 @@ pub enum OracleCommand { /// Set min publishers // account[0] funding account [signer writable] // account[1] price account [signer writable] + // account[2] permissions account [] SetMinPub = 12, /// Publish component price, never returning an error even if the update failed // account[0] funding account [signer writable] @@ -82,11 +89,13 @@ pub enum OracleCommand { // account[0] funding account [signer writable] // account[1] product account [signer writable] // account[2] price account [signer writable] + // account[3] permissions account [] DelPrice = 15, /// Deletes a product account // account[0] funding account [signer writable] // account[1] mapping account [signer writable] // account[2] product account [signer writable] + // account[3] permissions account [] DelProduct = 16, /// Update authorities // account[0] upgrade authority [signer writable] @@ -97,6 +106,7 @@ pub enum OracleCommand { /// Set max latency // account[0] funding account [signer writable] // account[1] price account [signer writable] + // account[2] permissions account [] SetMaxLatency = 18, /// Init price feed index // account[0] funding account [signer writable] diff --git a/program/rust/src/processor/add_product.rs b/program/rust/src/processor/add_product.rs index e953489fd..eaf0b048b 100644 --- a/program/rust/src/processor/add_product.rs +++ b/program/rust/src/processor/add_product.rs @@ -36,6 +36,7 @@ use { // account[0] funding account [signer writable] // account[1] mapping account [signer writable] // account[2] new product account [signer writable] +// account[3] permissions account [] pub fn add_product( program_id: &Pubkey, accounts: &[AccountInfo], diff --git a/program/rust/src/processor/add_publisher.rs b/program/rust/src/processor/add_publisher.rs index 13c29ea9d..99601525f 100644 --- a/program/rust/src/processor/add_publisher.rs +++ b/program/rust/src/processor/add_publisher.rs @@ -44,6 +44,7 @@ pub const DISABLE_ACCUMULATOR_V2: [u8; 32] = [ /// Add publisher to symbol account // account[0] funding account [signer writable] // account[1] price account [signer writable] +// account[2] permissions account [] pub fn add_publisher( program_id: &Pubkey, accounts: &[AccountInfo], diff --git a/program/rust/src/processor/del_price.rs b/program/rust/src/processor/del_price.rs index 92f3fe546..5c37f0ee2 100644 --- a/program/rust/src/processor/del_price.rs +++ b/program/rust/src/processor/del_price.rs @@ -30,6 +30,7 @@ use { // account[0] funding account [signer writable] // account[1] product account [signer writable] // account[2] price account [signer writable] +// account[3] permissions account [] /// Warning: This function is dangerous and will break any programs that depend on the deleted /// price account! pub fn del_price( diff --git a/program/rust/src/processor/del_product.rs b/program/rust/src/processor/del_product.rs index 6d7ec85f1..d1cbb8b7a 100644 --- a/program/rust/src/processor/del_product.rs +++ b/program/rust/src/processor/del_product.rs @@ -39,6 +39,7 @@ use { // account[0] funding account [signer writable] // account[1] mapping account [signer writable] // account[2] product account [signer writable] +// account[3] permissions account [] pub fn del_product( program_id: &Pubkey, accounts: &[AccountInfo], diff --git a/program/rust/src/processor/del_publisher.rs b/program/rust/src/processor/del_publisher.rs index cd9459f67..eae5fcb85 100644 --- a/program/rust/src/processor/del_publisher.rs +++ b/program/rust/src/processor/del_publisher.rs @@ -32,6 +32,7 @@ use { /// Delete publisher from symbol account // account[0] funding account [signer writable] // account[1] price account [signer writable] +// account[2] permissions account [] pub fn del_publisher( program_id: &Pubkey, accounts: &[AccountInfo], diff --git a/program/rust/src/processor/init_price.rs b/program/rust/src/processor/init_price.rs index b9f146567..1e19df822 100644 --- a/program/rust/src/processor/init_price.rs +++ b/program/rust/src/processor/init_price.rs @@ -32,6 +32,7 @@ use { /// (Re)initialize price account // account[0] funding account [signer writable] // account[1] new price account [signer writable] +// account[2] permissions account [] pub fn init_price( program_id: &Pubkey, accounts: &[AccountInfo], diff --git a/program/rust/src/processor/set_max_latency.rs b/program/rust/src/processor/set_max_latency.rs index 68a0b8fa3..d6a39aa49 100644 --- a/program/rust/src/processor/set_max_latency.rs +++ b/program/rust/src/processor/set_max_latency.rs @@ -25,6 +25,7 @@ use { /// Set max latency // account[0] funding account [signer writable] // account[1] price account [signer writable] +// account[2] permissions account [] pub fn set_max_latency( program_id: &Pubkey, accounts: &[AccountInfo], diff --git a/program/rust/src/processor/set_min_pub.rs b/program/rust/src/processor/set_min_pub.rs index 55f1571d2..908926863 100644 --- a/program/rust/src/processor/set_min_pub.rs +++ b/program/rust/src/processor/set_min_pub.rs @@ -25,6 +25,7 @@ use { /// Set min publishers // account[0] funding account [signer writable] // account[1] price account [signer writable] +// account[2] permissions account [] pub fn set_min_pub( program_id: &Pubkey, accounts: &[AccountInfo], diff --git a/program/rust/src/processor/upd_product.rs b/program/rust/src/processor/upd_product.rs index 4b44608af..bc184d7d0 100644 --- a/program/rust/src/processor/upd_product.rs +++ b/program/rust/src/processor/upd_product.rs @@ -26,6 +26,7 @@ use { /// The metadata is provided as a list of key-value pairs at the end of the `instruction_data`. // account[0] funding account [signer writable] // account[1] product account [signer writable] +// account[2] permissions account [] pub fn upd_product( program_id: &Pubkey, accounts: &[AccountInfo],