Skip to content

Cannot fetch price data using OracleAccount #52

@gabrielfior

Description

@gabrielfior

Following the example available on test_oracle (https://github.com/switchboard-xyz/switchboard-v2/blob/main/libraries/py/tests/test_oracle.py), I tried executing the code in a Jupyter notebook but obtained the following problem:

provider = Provider(client, Wallet(Keypair()))
program = await Program.at(SBV2_DEVNET_PID, provider)
oracle = OracleAccount(AccountParams(program=program, public_key=PublicKey("88FX4tBstuwBPNhQU4EEBoPX35neSu4Le9zDSwtPRRQz")))

# getting aggregator data
data = await oracle.load_data()
---------------------------------------------------------------------------
AccountInvalidDiscriminator               Traceback (most recent call last)
Input In [34], in <cell line: 6>()
      3 oracle = OracleAccount(AccountParams(program=program, public_key=PublicKey("88FX4tBstuwBPNhQU4EEBoPX35neSu4Le9zDSwtPRRQz")))
      5 # getting aggregator data
----> 6 data = await oracle.load_data()

File ~/miniconda3/envs/sol3.9/lib/python3.9/site-packages/switchboardpy/oracle.py:89, in OracleAccount.load_data(self)
     88 async def load_data(self):
---> 89     return await OracleAccountData.fetch(self.program.provider.connection, self.public_key)

File ~/miniconda3/envs/sol3.9/lib/python3.9/site-packages/switchboardpy/generated/accounts/oracle_account_data.py:66, in OracleAccountData.fetch(cls, conn, address, commitment)
     64     raise ValueError("Account does not belong to this program")
     65 bytes_data = b64decode(info["data"][0])
---> 66 return cls.decode(bytes_data)

File ~/miniconda3/envs/sol3.9/lib/python3.9/site-packages/switchboardpy/generated/accounts/oracle_account_data.py:89, in OracleAccountData.decode(cls, data)
     86 @classmethod
     87 def decode(cls, data: bytes) -> "OracleAccountData":
     88     if data[:ACCOUNT_DISCRIMINATOR_SIZE] != cls.discriminator:
---> 89         raise AccountInvalidDiscriminator(
     90             "The discriminator for this account is invalid"
     91         )
     92     dec = OracleAccountData.layout.parse(data[ACCOUNT_DISCRIMINATOR_SIZE:])
     93     return cls(
     94         name=dec.name,
     95         metadata=dec.metadata,
   (...)
    102         ebuf=dec.ebuf,
    103     )

AccountInvalidDiscriminator: The discriminator for this account is invalid

Any help very much appreciated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions