Skip to content

Commit bd8ec5a

Browse files
committed
fix solana method errors
- fixed simulate_transaction - fixed get_blocks_with_limit - improved get_inflation_reward_params, but still encountering some errors. - added TODOs to fix some issues in the future
1 parent 0141a59 commit bd8ec5a

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

chainbench/user/methods/solana.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ def get_supply_task(self) -> None:
237237
method="getSupply",
238238
)
239239

240+
# TODO: Fix "Invalid param: not a Token account" and "Invalid param: could not find account" errors
240241
def get_token_account_balance_task(self) -> None:
241242
self.make_rpc_call(
242243
method="getTokenAccountBalance",

chainbench/user/solana.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def _simulate_transaction_params_factory(self, rng: RNG) -> list[str | dict]:
4343

4444
tx = Transaction.new_unsigned(self._create_random_transaction_message(rng))
4545
encoded_tx = base64.b64encode(bytes(tx)).decode()
46-
return [encoded_tx, {"commitment": "confirmed"}]
46+
return [encoded_tx, {"commitment": "confirmed", "encoding": "base64"}]
4747

4848
def _get_account_info_params_factory(self, rng: RNG) -> list[Account | dict]:
4949
return [self.test_data.get_random_account(rng), {"encoding": "jsonParsed"}]
@@ -106,7 +106,7 @@ def _get_blocks_params_factory(self, rng: RNG) -> list[BlockNumber | dict]:
106106

107107
def _get_blocks_with_limit_params_factory(self, rng: RNG) -> list[BlockNumber | dict]:
108108
end_number = self.test_data.get_random_block_number(rng)
109-
start_number = end_number + rng.random.randint(1, 4)
109+
start_number = end_number - rng.random.randint(1, 20)
110110
block_len = end_number - start_number
111111
return [
112112
start_number,
@@ -127,9 +127,13 @@ def _get_recent_prioritization_fees_params_factory(self, rng: RNG) -> list[list[
127127
accounts_len = rng.random.randint(1, 128)
128128
return [[self.test_data.get_random_account(rng) for _ in range(accounts_len)]]
129129

130-
def _get_inflation_reward_params_factory(self, rng: RNG) -> list[list[str]]:
130+
# TODO: Fix "Block XXX cleaned up, does not exist on node." error
131+
def _get_inflation_reward_params_factory(self, rng: RNG) -> list[list[str] | dict]:
131132
accounts_len = rng.random.randint(1, 10)
132-
return [[self.test_data.get_random_account(rng) for _ in range(accounts_len)]]
133+
return [
134+
[self.test_data.get_random_account(rng) for _ in range(accounts_len)],
135+
{"minContextSlot": self.test_data.get_random_block_number(rng)},
136+
]
133137

134138
@staticmethod
135139
def _get_program_accounts_params_factory() -> list[str | dict]:
@@ -152,6 +156,7 @@ def _get_slot_leaders_params_factory(self, rng: RNG) -> list[BlockNumber | dict]
152156
start = end - length
153157
return [start, length]
154158

159+
# TODO: Fix "Invalid param: not a stake account" error
155160
def _get_stake_activation_params_factory(self, rng: RNG) -> list[Account | dict]:
156161
return [self.test_data.get_random_account(rng)]
157162

0 commit comments

Comments
 (0)