Skip to content

Commit 19fa978

Browse files
authored
feat(minor-interchain-token-service): make decimals non optional (#685)
1 parent 6dd3b41 commit 19fa978

File tree

3 files changed

+25
-33
lines changed

3 files changed

+25
-33
lines changed

contracts/interchain-token-service/src/contract/execute/interceptors.rs

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ pub fn deploy_token_to_source_chain(
7676
origin_chain,
7777
chain,
7878
deploy_token.token_id,
79-
Some(deploy_token.decimals),
79+
deploy_token.decimals,
8080
)?;
8181
}
8282
None => {
@@ -90,7 +90,7 @@ pub fn deploy_token_to_source_chain(
9090
storage,
9191
chain.clone(),
9292
deploy_token.token_id,
93-
&TokenInstance::new_on_origin(Some(deploy_token.decimals)),
93+
&TokenInstance::new_on_origin(deploy_token.decimals),
9494
)
9595
})
9696
.change_context(Error::State)?;
@@ -119,7 +119,7 @@ pub fn deploy_token_to_destination_chain(
119119
storage,
120120
chain.clone(),
121121
deploy_token.token_id,
122-
&TokenInstance::new(&deploy_token.deployment_type(), Some(deploy_token.decimals)),
122+
&TokenInstance::new(&deploy_token.deployment_type(), deploy_token.decimals),
123123
)
124124
.change_context(Error::State)
125125
.map(|_| ())
@@ -146,7 +146,7 @@ fn ensure_matching_original_deployment(
146146
origin_chain: ChainNameRaw,
147147
chain: &ChainNameRaw,
148148
token_id: TokenId,
149-
decimals: Option<u8>,
149+
decimals: u8,
150150
) -> Result<(), Error> {
151151
ensure!(
152152
origin_chain == *chain,
@@ -236,20 +236,12 @@ fn destination_amount(
236236
let destination_token = try_load_token_instance(storage, destination_chain.clone(), token_id)?;
237237

238238
let (source_decimals, destination_decimals) =
239-
match (source_token.decimals, destination_token.decimals) {
240-
(Some(source_decimals), Some(destination_decimals))
241-
if source_decimals == destination_decimals =>
242-
{
243-
return Ok(source_amount)
244-
}
245-
(Some(source_decimals), Some(destination_decimals)) => {
246-
(source_decimals, destination_decimals)
247-
}
248-
(None, None) => return Ok(source_amount),
249-
_ => unreachable!(
250-
"decimals should be set in both the source and destination, or set in neither"
251-
), // This should never happen
252-
};
239+
(source_token.decimals, destination_token.decimals);
240+
241+
if source_decimals == destination_decimals {
242+
return Ok(source_amount);
243+
}
244+
253245
let destination_max_uint = state::load_chain_config(storage, destination_chain)
254246
.change_context(Error::State)?
255247
.max_uint;
@@ -339,14 +331,14 @@ mod test {
339331
&mut storage,
340332
source_chain.clone(),
341333
transfer.token_id,
342-
&TokenInstance::new_on_origin(Some(18)),
334+
&TokenInstance::new_on_origin(18),
343335
)
344336
.unwrap();
345337
state::save_token_instance(
346338
&mut storage,
347339
destination_chain.clone(),
348340
transfer.token_id,
349-
&TokenInstance::new(&TokenDeploymentType::Trustless, Some(12)),
341+
&TokenInstance::new(&TokenDeploymentType::Trustless, 12),
350342
)
351343
.unwrap();
352344
state::save_chain_config(
@@ -390,14 +382,14 @@ mod test {
390382
&mut storage,
391383
source_chain.clone(),
392384
transfer.token_id,
393-
&TokenInstance::new_on_origin(Some(12)),
385+
&TokenInstance::new_on_origin(12),
394386
)
395387
.unwrap();
396388
state::save_token_instance(
397389
&mut storage,
398390
destination_chain.clone(),
399391
transfer.token_id,
400-
&TokenInstance::new(&TokenDeploymentType::Trustless, Some(18)),
392+
&TokenInstance::new(&TokenDeploymentType::Trustless, 18),
401393
)
402394
.unwrap();
403395
state::save_chain_config(
@@ -441,14 +433,14 @@ mod test {
441433
&mut storage,
442434
source_chain.clone(),
443435
transfer.token_id,
444-
&TokenInstance::new_on_origin(Some(12)),
436+
&TokenInstance::new_on_origin(12),
445437
)
446438
.unwrap();
447439
state::save_token_instance(
448440
&mut storage,
449441
destination_chain.clone(),
450442
transfer.token_id,
451-
&TokenInstance::new(&TokenDeploymentType::Trustless, Some(12)),
443+
&TokenInstance::new(&TokenDeploymentType::Trustless, 12),
452444
)
453445
.unwrap();
454446
state::save_chain_config(
@@ -492,14 +484,14 @@ mod test {
492484
&mut storage,
493485
source_chain.clone(),
494486
transfer.token_id,
495-
&TokenInstance::new_on_origin(Some(18)),
487+
&TokenInstance::new_on_origin(18),
496488
)
497489
.unwrap();
498490
state::save_token_instance(
499491
&mut storage,
500492
destination_chain.clone(),
501493
transfer.token_id,
502-
&TokenInstance::new(&TokenDeploymentType::Trustless, Some(12)),
494+
&TokenInstance::new(&TokenDeploymentType::Trustless, 12),
503495
)
504496
.unwrap();
505497
state::save_chain_config(
@@ -543,14 +535,14 @@ mod test {
543535
&mut storage,
544536
source_chain.clone(),
545537
transfer.token_id,
546-
&TokenInstance::new_on_origin(Some(18)),
538+
&TokenInstance::new_on_origin(18),
547539
)
548540
.unwrap();
549541
state::save_token_instance(
550542
&mut storage,
551543
destination_chain.clone(),
552544
transfer.token_id,
553-
&TokenInstance::new(&TokenDeploymentType::Trustless, Some(12)),
545+
&TokenInstance::new(&TokenDeploymentType::Trustless, 12),
554546
)
555547
.unwrap();
556548
state::save_chain_config(

contracts/interchain-token-service/src/contract/execute/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ pub enum Error {
6464
TokenDeployedDecimalsMismatch {
6565
token_id: TokenId,
6666
chain: ChainNameRaw,
67-
expected: Option<u8>,
68-
actual: Option<u8>,
67+
expected: u8,
68+
actual: u8,
6969
},
7070
#[error("token supply invariant violated for token {token_id} on chain {chain}")]
7171
TokenSupplyInvariantViolated {

contracts/interchain-token-service/src/state.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,18 +85,18 @@ impl TokenSupply {
8585
#[cw_serde]
8686
pub struct TokenInstance {
8787
pub supply: TokenSupply,
88-
pub decimals: Option<u8>,
88+
pub decimals: u8,
8989
}
9090

9191
impl TokenInstance {
92-
pub fn new_on_origin(decimals: Option<u8>) -> Self {
92+
pub fn new_on_origin(decimals: u8) -> Self {
9393
Self {
9494
supply: TokenSupply::Untracked,
9595
decimals,
9696
}
9797
}
9898

99-
pub fn new(deployment_type: &TokenDeploymentType, decimals: Option<u8>) -> Self {
99+
pub fn new(deployment_type: &TokenDeploymentType, decimals: u8) -> Self {
100100
let supply = match deployment_type {
101101
TokenDeploymentType::Trustless => TokenSupply::Tracked(Uint256::zero()),
102102
_ => TokenSupply::Untracked,

0 commit comments

Comments
 (0)