Skip to content

Commit

Permalink
rewrite denomination in terms of prefixes
Browse files Browse the repository at this point in the history
  • Loading branch information
SuperFluffy committed Jun 10, 2024
1 parent 3d016b2 commit 8b16f74
Show file tree
Hide file tree
Showing 22 changed files with 593 additions and 223 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -131,9 +131,8 @@ fn event_to_ics20_withdrawal(
let sender = event.sender.to_fixed_bytes();
let denom = rollup_asset_denom.clone();

let (_, channel) = denom
.prefix()
.rsplit_once('/')
let channel = denom
.channel()
.ok_or_eyre("denom must have a channel to be withdrawn via IBC")?;

let memo = Ics20WithdrawalFromRollupMemo {
Expand Down Expand Up @@ -189,12 +188,14 @@ fn calculate_packet_timeout_time(timeout_delta: Duration) -> eyre::Result<u64> {

#[cfg(test)]
mod tests {
use asset::default_native_asset;

use super::*;
use crate::withdrawer::ethereum::astria_withdrawer_interface::SequencerWithdrawalFilter;

#[test]
fn event_to_bridge_unlock() {
let denom = Denom::from("nria".to_string());
let denom = default_native_asset();
let event_with_meta = EventWithMetadata {
event: WithdrawalEvent::Sequencer(SequencerWithdrawalFilter {
sender: [0u8; 20].into(),
Expand Down Expand Up @@ -238,7 +239,7 @@ mod tests {

#[test]
fn event_to_bridge_unlock_divide_value() {
let denom = Denom::from("nria".to_string());
let denom = default_native_asset();
let event_with_meta = EventWithMetadata {
event: WithdrawalEvent::Sequencer(SequencerWithdrawalFilter {
sender: [0u8; 20].into(),
Expand Down Expand Up @@ -283,7 +284,7 @@ mod tests {

#[test]
fn event_to_ics20_withdrawal() {
let denom = Denom::from("transfer/channel-0/utia".to_string());
let denom = "transfer/channel-0/utia".parse::<Denom>().unwrap();
let destination_chain_address = "address".to_string();
let event_with_meta = EventWithMetadata {
event: WithdrawalEvent::Ics20(Ics20WithdrawalFilter {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ impl Builder {
let contract_address = address_from_string(&ethereum_contract_address)
.wrap_err("failed to parse ethereum contract address")?;

if rollup_asset_denom.prefix().is_empty() {
if !rollup_asset_denom.is_prefixed() {
warn!(
"rollup asset denomination is not prefixed; Ics20Withdrawal actions will not be \
submitted"
Expand Down Expand Up @@ -419,6 +419,7 @@ fn address_from_string(s: &str) -> Result<ethers::types::Address> {

#[cfg(test)]
mod tests {
use asset::default_native_asset;
use astria_core::{
primitive::v1::{
Address,
Expand Down Expand Up @@ -547,8 +548,8 @@ mod tests {
block_number: receipt.block_number.unwrap(),
transaction_hash: receipt.transaction_hash,
};
let denom: Denom = Denom::from_base_denom("nria");
let bridge_address = crate::astria_address([1u8; 20]);
let denom = default_native_asset();
let expected_action =
event_to_action(expected_event, denom.id(), denom.clone(), 1, bridge_address).unwrap();
let Action::BridgeUnlock(expected_action) = expected_action else {
Expand Down Expand Up @@ -638,8 +639,8 @@ mod tests {
block_number: receipt.block_number.unwrap(),
transaction_hash: receipt.transaction_hash,
};
let denom = Denom::from("transfer/channel-0/utia".to_string());
let bridge_address = crate::astria_address([1u8; 20]);
let denom = "transfer/channel-0/utia".parse::<Denom>().unwrap();
let Action::Ics20Withdrawal(mut expected_action) =
event_to_action(expected_event, denom.id(), denom.clone(), 1, bridge_address).unwrap()
else {
Expand Down
10 changes: 8 additions & 2 deletions crates/astria-bridge-withdrawer/src/withdrawer/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@ use std::{
};

use astria_core::primitive::v1::{
asset,
asset::{
self,
Denom,
},
Address,
};
use astria_eyre::eyre::{
Expand Down Expand Up @@ -97,7 +100,10 @@ impl Service {
submitter_handle,
shutdown_token: shutdown_handle.token(),
state: state.clone(),
rollup_asset_denom: asset::Denom::from(rollup_asset_denomination),
rollup_asset_denom: cfg
.rollup_asset_denomination
.parse::<Denom>()
.wrap_err("failed to parse ROLLUP_ASSET_DENOMINATION as Denom")?,
bridge_address: sequencer_bridge_address,
}
.build()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ use astria_core::{
generated::protocol::account::v1alpha1::NonceResponse,
primitive::v1::{
asset::{
self,
default_native_asset,
Denom,
},
Address,
Expand Down Expand Up @@ -270,7 +270,7 @@ async fn register_sync_guards(cometbft_mock: &MockServer) -> HashMap<String, Moc
}

fn make_ics20_withdrawal_action() -> Action {
let denom = Denom::from(DEFAULT_IBC_DENOM.to_string());
let denom = "transfer/channel-0/utia".parse::<Denom>().unwrap();
let destination_chain_address = "address".to_string();
let inner = Ics20Withdrawal {
denom: denom.clone(),
Expand Down Expand Up @@ -299,7 +299,7 @@ fn make_ics20_withdrawal_action() -> Action {
}

fn make_bridge_unlock_action() -> Action {
let denom = Denom::from(DEFAULT_NATIVE_DEMON.to_string());
let denom = default_native_asset();
let inner = BridgeUnlockAction {
to: Address::builder()
.array([0u8; 20])
Expand Down
Loading

0 comments on commit 8b16f74

Please sign in to comment.