Rpc: Add until parameter for getConfirmedSignaturesForAddress2 (#11644) (#11648)

* Refactor bigtable apis to accept start and end keys

* Make helper fn to deserialize cell data

* Refactor get_confirmed_signatures_for_address to use get_row_data range

* Add until param to get_confirmed_signatures_for_address

* Add until param to blockstore api

* Plumb until through client/cli

* Simplify client params

(cherry picked from commit 6c5b8f324a)

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
This commit is contained in:
mergify[bot]
2020-08-15 17:59:35 +00:00
committed by GitHub
parent 15b92e9c8d
commit 9015e47cc5
9 changed files with 282 additions and 78 deletions

View File

@@ -878,6 +878,7 @@ impl JsonRpcRequestProcessor {
&self,
address: Pubkey,
mut before: Option<Signature>,
until: Option<Signature>,
mut limit: usize,
) -> Result<Vec<RpcConfirmedTransactionStatusWithSignature>> {
if self.config.enable_rpc_transaction_history {
@@ -893,6 +894,7 @@ impl JsonRpcRequestProcessor {
address,
highest_confirmed_root,
before,
until,
limit,
)
.map_err(|err| Error::invalid_params(format!("{}", err)))?;
@@ -908,6 +910,7 @@ impl JsonRpcRequestProcessor {
bigtable_ledger_storage.get_confirmed_signatures_for_address(
&address,
before.as_ref(),
until.as_ref(),
limit,
),
);
@@ -2317,6 +2320,11 @@ impl RpcSol for RpcSolImpl {
} else {
None
};
let until = if let Some(until) = config.until {
Some(verify_signature(&until)?)
} else {
None
};
let limit = config
.limit
.unwrap_or(MAX_GET_CONFIRMED_SIGNATURES_FOR_ADDRESS2_LIMIT);
@@ -2328,7 +2336,7 @@ impl RpcSol for RpcSolImpl {
)));
}
meta.get_confirmed_signatures_for_address2(address, before, limit)
meta.get_confirmed_signatures_for_address2(address, before, until, limit)
}
fn get_first_available_block(&self, meta: Self::Metadata) -> Result<Slot> {