Revert "solana/token_bridge: calculate diff from original mint"
Revert submission 1325 Reason for revert: not supporting external mints Reverted Changes: I2bf59ecd3:solana/token_bridge: calculate diff from original ... I598373740:solana/token_bridge: check balance and truncation I67c7a1c7a:solana/token_bridge: test wrapped asset transfers Change-Id: I655694508774e40a489b810d7b4f9c17824ab5a3
This commit is contained in:
parent
f24f86adf5
commit
698091b2b1
|
@ -244,23 +244,19 @@ pub fn complete_wrapped(
|
||||||
|
|
||||||
let (_, is_external) =
|
let (_, is_external) =
|
||||||
derive_mint_for_token(ctx.program_id, accs.vaa.token_address, accs.vaa.token_chain);
|
derive_mint_for_token(ctx.program_id, accs.vaa.token_address, accs.vaa.token_chain);
|
||||||
|
let (amount, fee) = if is_external && accs.wrapped_meta.original_decimals > 6 {
|
||||||
// When dealing with external adopted mints, we check if the asset in question is larger than
|
// Sollet assets are truncated to 6 decimals, however Wormhole uses 8 and assumes
|
||||||
// the mint in question. If it is, we truncate to the mints size. For example, sollet assets
|
// wire-truncation to 8 decimals.
|
||||||
// are truncated to 6 decimals, however Wormhole uses 8 and assumes wire-truncation to 8
|
|
||||||
// decimals.
|
|
||||||
let (amount, fee) = if is_external && accs.wrapped_meta.original_decimals > accs.mint.decimals {
|
|
||||||
let difference = 8u32.checked_sub(accs.mint.decimals.into()).unwrap();
|
|
||||||
(
|
(
|
||||||
accs.vaa
|
accs.vaa
|
||||||
.amount
|
.amount
|
||||||
.as_u64()
|
.as_u64()
|
||||||
.checked_div(10u64.pow(difference.min(accs.wrapped_meta.original_decimals as u32 - 6)))
|
.checked_div(10u64.pow(2.min(accs.wrapped_meta.original_decimals as u32 - 6)))
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
accs.vaa
|
accs.vaa
|
||||||
.fee
|
.fee
|
||||||
.as_u64()
|
.as_u64()
|
||||||
.checked_div(10u64.pow(difference.min(accs.wrapped_meta.original_decimals as u32 - 6)))
|
.checked_div(10u64.pow(2.min(accs.wrapped_meta.original_decimals as u32 - 6)))
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -336,19 +336,15 @@ pub fn transfer_wrapped(
|
||||||
accs.wrapped_meta.token_address,
|
accs.wrapped_meta.token_address,
|
||||||
accs.wrapped_meta.chain,
|
accs.wrapped_meta.chain,
|
||||||
);
|
);
|
||||||
|
let (amount, fee) = if is_external && accs.wrapped_meta.original_decimals > 6 {
|
||||||
// When dealing with external adopted mints, we check if the asset in question is larger than
|
// Sollet assets are truncated to 6 decimals, however Wormhole uses 8 and assumes
|
||||||
// the mint in question. If it is, we truncate to the mints size. For example, sollet assets
|
// wire-truncation to 8 decimals.
|
||||||
// are truncated to 6 decimals, however Wormhole uses 8 and assumes wire-truncation to 8
|
|
||||||
// decimals. Larger mints are unsupported.
|
|
||||||
let (amount, fee) = if is_external && accs.wrapped_meta.original_decimals > accs.mint.decimals {
|
|
||||||
let difference = 8u32.checked_sub(accs.mint.decimals.into()).unwrap();
|
|
||||||
(
|
(
|
||||||
data.amount
|
data.amount
|
||||||
.checked_mul(10u64.pow(difference.min(accs.wrapped_meta.original_decimals as u32 - 6)))
|
.checked_mul(10u64.pow(2.min(accs.wrapped_meta.original_decimals as u32 - 6)))
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
data.fee
|
data.fee
|
||||||
.checked_mul(10u64.pow(difference.min(accs.wrapped_meta.original_decimals as u32 - 6)))
|
.checked_mul(10u64.pow(2.min(accs.wrapped_meta.original_decimals as u32 - 6)))
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue