Skip to content

Commit 8803e58

Browse files
authored
fix(starknet): call public is_transfer_finalised (#254)
1 parent 8d3fd2f commit 8803e58

File tree

4 files changed

+8
-26
lines changed

4 files changed

+8
-26
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bridge-cli/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "bridge-cli"
3-
version = "0.3.40"
3+
version = "0.3.41"
44
edition = "2021"
55
repository = "https://github.com/Near-One/bridge-sdk-rs"
66
rust-version = "1.88.0"

bridge-sdk/bridge-clients/starknet-bridge-client/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "starknet-bridge-client"
3-
version = "0.1.0"
3+
version = "0.1.1"
44
edition = "2021"
55
rust-version = "1.88.0"
66

bridge-sdk/bridge-clients/starknet-bridge-client/src/starknet_bridge_client.rs

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -332,44 +332,26 @@ impl StarknetBridgeClient {
332332
}
333333

334334
/// Check if a transfer with the given nonce has been finalised on Starknet.
335-
///
336-
/// The contract stores completed transfers as a bitmap:
337-
/// slot = nonce / 251, bit = nonce % 251
338335
pub async fn is_transfer_finalised(&self, nonce: u64) -> Result<bool> {
339336
let bridge = self.omni_bridge_address()?;
340-
341-
let slot = nonce / 251;
342-
343337
let result = self
344338
.provider
345339
.call(
346340
FunctionCall {
347341
contract_address: bridge,
348-
entry_point_selector: selector!("completed_transfers"),
349-
calldata: vec![Felt::from(slot)],
342+
entry_point_selector: selector!("is_transfer_finalised"),
343+
calldata: vec![Felt::from(nonce)],
350344
},
351345
BlockId::Tag(BlockTag::Latest),
352346
)
353347
.await
354348
.map_err(|e| {
355349
StarknetBridgeClientError::ProviderError(format!(
356-
"Failed to call completed_transfers: {e}"
350+
"Failed to call is_transfer_finalised: {e}"
357351
))
358352
})?;
359353

360-
if result.is_empty() {
361-
return Ok(false);
362-
}
363-
364-
let bitmap_felt = result[0];
365-
let bitmap_bytes = bitmap_felt.to_bytes_be();
366-
367-
let bit_position = (nonce % 251) as usize;
368-
369-
let byte_index = 31 - (bit_position / 8);
370-
let bit_in_byte = bit_position % 8;
371-
372-
Ok(bitmap_bytes[byte_index] & (1 << bit_in_byte) != 0)
354+
Ok(!result.is_empty() && result[0] != Felt::ZERO)
373355
}
374356

375357
/// Extract an `InitTransfer` event from a Starknet transaction receipt.

0 commit comments

Comments
 (0)