Skip to content

Commit

Permalink
feat: optimize kaspa transfer tips
Browse files Browse the repository at this point in the history
  • Loading branch information
ByteZhang1024 committed Jan 8, 2025
1 parent 2f85fde commit 4a26d49
Show file tree
Hide file tree
Showing 23 changed files with 489 additions and 6 deletions.
2 changes: 2 additions & 0 deletions packages/core/src/chains/kaspa/sdkKaspa/constant.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
export const DEFAULT_FEE = 1000;
export const CONFIRMATION_COUNT = 10;

export const MAX_UTXO_SIZE = 80;

export const DUST_AMOUNT = 20_000_000;
export const MAX_BLOCK_SIZE = 1_000_000;
export const MAX_ORPHAN_TX_MASS = 100_000;
Expand Down
31 changes: 25 additions & 6 deletions packages/kit-bg/src/vaults/impls/kaspa/Vault.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
DUST_AMOUNT,
MAX_BLOCK_SIZE,
MAX_ORPHAN_TX_MASS,
MAX_UTXO_SIZE,
isValidAddress,
privateKeyFromWIF,
selectUTXOs,
Expand Down Expand Up @@ -135,13 +136,31 @@ export default class Vault extends VaultBase {
specifiedFeeRate,
});
txn = toTransaction(encodedTx);
if (encodedTx.inputs.length > MAX_UTXO_SIZE) {
const totalAmount = encodedTx.inputs
.sort((a, b) =>
new BigNumber(b.satoshis).minus(a.satoshis).toNumber(),
)
.slice(0, MAX_UTXO_SIZE)
.reduce((acc, input) => acc.plus(input.satoshis), new BigNumber(0));
const tokenInfo = transferInfo.tokenInfo ?? (await this.getNetwork());

const totalAmountStr = totalAmount
.shiftedBy(-tokenInfo.decimals)
.toFixed(0);
throw new OneKeyInternalError(
appLocale.intl.formatMessage(
{
id: ETranslations.feedback_kaspa_utxo_limit_exceeded_text,
},
{
amount: totalAmountStr,
symbol: tokenInfo?.symbol ?? 'KAS',
},
),
);
}
const massAndSize = txn.getMassAndSize();
// if (
// massAndSize.mass > MAX_ORPHAN_TX_MASS ||
// massAndSize.txSize > MAX_BLOCK_SIZE
// ) {
// throw new OneKeyInternalError('Transaction size is too large');
// }
encodedTx.feeInfo.limit = massAndSize.mass.toString();
encodedTx.mass = massAndSize.mass;
}
Expand Down
22 changes: 22 additions & 0 deletions packages/shared/src/locale/enum/translations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,11 @@
address_input_contract_popover = 'address_input.contract_popover',
address_input_first_transfer_popover = 'address_input.first_transfer_popover',
address_input_transferred_popover = 'address_input.transferred_popover',
address_label_allowlist = 'address_label.allowlist',
address_type = 'address_type',
adress_book_add_address_add_to_allowlist = 'adress_book.add_address_add_to_allowlist',
allowlist_enabled_popover_content = 'allowlist.enabled_popover_content',
allowlist_enabled_popover_title = 'allowlist.enabled_popover_title',
approve_edit_approve_amount = 'approve_edit.approve_amount',
approve_edit_less_than_swap = 'approve_edit.less_than_swap',
approve_edit_title = 'approve_edit.title',
Expand Down Expand Up @@ -678,6 +682,7 @@
feedback_invalid_qr_code = 'feedback.invalid_qr_code',
feedback_invalid_words_title = 'feedback.invalid_words_title',
feedback_invalid_words_title_message = 'feedback.invalid_words_title_message',
feedback_kaspa_utxo_limit_exceeded_text = 'feedback.kaspa_utxo_limit_exceeded_text',
feedback_network_hidden_from_all_networks_toast_title = 'feedback.network_hidden_from_all_networks_toast_title',
feedback_network_shown_in_all_networks_toast_title = 'feedback.network_shown_in_all_networks_toast_title',
feedback_no_connected_account = 'feedback.no_connected_account',
Expand Down Expand Up @@ -754,12 +759,14 @@
global_404_message = 'global.404_message',
global_Note = 'global.Note',
global_about = 'global.about',
global_about_device = 'global.about_device',
global_account = 'global.account',
global_account_name = 'global.account_name',
global_accounts = 'global.accounts',
global_acknowledged = 'global.acknowledged',
global_add_account = 'global.add_account',
global_add_hidden_wallet = 'global.add_hidden_wallet',
global_add_new_device = 'global.add_new_device',
global_add_wallet = 'global.add_wallet',
global_address = 'global.address',
global_advance = 'global.advance',
Expand Down Expand Up @@ -808,6 +815,7 @@
global_cancel_copy = 'global.cancel_copy',
global_cancelling = 'global.cancelling',
global_cash_out = 'global.cash_out',
global_certifications = 'global.certifications',
global_chain = 'global.chain',
global_change_passcode = 'global.change_passcode',
global_change_password = 'global.change_password',
Expand Down Expand Up @@ -870,6 +878,8 @@
global_description = 'global.description',
global_details = 'global.details',
global_dev_mode = 'global.dev_mode',
global_device_info = 'global.device_info',
global_device_management = 'global.device_management',
global_dex = 'global.dex',
global_discord = 'global.discord',
global_done = 'global.done',
Expand Down Expand Up @@ -900,6 +910,7 @@
global_face_id = 'global.face_id',
global_failed = 'global.failed',
global_faqs = 'global.faqs',
global_fcc_id = 'global.fcc_id',
global_fdv = 'global.fdv',
global_firmware = 'global.firmware',
global_follow_the_system = 'global.follow_the_system',
Expand Down Expand Up @@ -974,11 +985,13 @@
global_market_cap = 'global.market_cap',
global_max = 'global.max',
global_max_supply = 'global.max_supply',
global_model = 'global.model',
global_month_date = 'global.month_date',
global_more = 'global.more',
global_move_to_top = 'global.move_to_top',
global_multi_chain_wallet = 'global.multi_chain_wallet',
global_multi_networks = 'global.multi_networks',
global_my_onekey = 'global.my_onekey',
global_name = 'global.name',
global_names_of_wallets_and_accounts = 'global.names_of_wallets_and_accounts',
global_network = 'global.network',
Expand All @@ -992,6 +1005,8 @@
global_next = 'global.next',
global_nft = 'global.nft',
global_no_data = 'global.no_data',
global_no_device_connected = 'global.no_device_connected',
global_no_device_connected_desc = 'global.no_device_connected_desc',
global_no_network_address = 'global.no_network_address',
global_no_results = 'global.no_results',
global_no_transactions_yet = 'global.no_transactions_yet',
Expand Down Expand Up @@ -1088,6 +1103,7 @@
global_set_passcode = 'global.set_passcode',
global_set_password = 'global.set_password',
global_setings_up = 'global.setings_up',
global_settings = 'global.settings',
global_show_less = 'global.show_less',
global_show_more = 'global.show_more',
global_show_recovery_phrase = 'global.show_recovery_phrase',
Expand All @@ -1099,6 +1115,7 @@
global_start_migration = 'global.start_migration',
global_status = 'global.status',
global_step_str = 'global.step_str',
global_storage_used = 'global.storage_used',
global_success = 'global.success',
global_support = 'global.support',
global_swap = 'global.swap',
Expand All @@ -1125,13 +1142,15 @@
global_unknown_error = 'global.unknown_error',
global_unknown_error_retry_message = 'global.unknown_error_retry_message',
global_unlock = 'global.unlock',
global_unofficial = 'global.unofficial',
global_unpin_from_top = 'global.unpin_from_top',
global_update_failed = 'global.update_failed',
global_updating = 'global.updating',
global_updating_type = 'global.updating_type',
global_upgrade = 'global.upgrade',
global_url = 'global.url',
global_value = 'global.value',
global_verified = 'global.verified',
global_verify = 'global.verify',
global_verify_on_device = 'global.verify_on_device',
global_version_is_available = 'global.version_is_available',
Expand Down Expand Up @@ -1616,6 +1635,7 @@
selected_network_only_supports_device = 'selected_network_only_supports_device',
send_address_exists = 'send.address_exists',
send_address_invalid = 'send.address_invalid',
send_address_not_allowlist_error = 'send.address_not_allowlist_error',
send_amount = 'send.amount',
send_amount_invalid = 'send.amount_invalid',
send_amount_too_small = 'send.amount_too_small',
Expand Down Expand Up @@ -1810,6 +1830,8 @@
settings_view_address_in_explorer = 'settings.view_address_in_explorer',
settings_view_transaction_in_explorer = 'settings.view_transaction_in_explorer',
settings_whats_new = 'settings.whats_new',
settings_protection_allowlist_content = 'settings_protection.allowlist_content',
settings_protection_allowlist_title = 'settings_protection.allowlist_title',
shortcut_go_back = 'shortcut.go_back',
shortcut_go_forward = 'shortcut.go_forward',
shortcut_hide_sidebar = 'shortcut.hide_sidebar',
Expand Down
22 changes: 22 additions & 0 deletions packages/shared/src/locale/json/bn.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,11 @@
"address_input.contract_popover": "আপনি একটি চুক্তির ঠিকানায় পাঠাচ্ছেন, একটি সাধারণ ব্যবহারকারীর ঠিকানায় নয়। চুক্তির ঠিকানায় ভুল স্থানান্তর সম্পদের ক্ষতির কারণ হতে পারে। ঠিকানাটি আবার পরীক্ষা করুন এবং ঝুঁকির জন্য সতর্ক থাকুন।",
"address_input.first_transfer_popover": "প্রথমে {network} এ এই ঠিকানায় স্থানান্তর করুন। ঠিকানাটি দুবার চেক করুন এবং ঝুঁকির জন্য দেখুন।",
"address_input.transferred_popover": "এই ঠিকানায় পূর্ববর্তী স্থানান্তর সনাক্ত করা হয়েছে। এটি উদ্দেশ্যপ্রণোদিত ঠিকানা কিনা তা নিশ্চিত করতে দ্বিগুণ যাচাই করতে ভুলবেন না।",
"address_label.allowlist": "অনুমোদিত তালিকা",
"address_type": "ঠিকানার ধরণ",
"adress_book.add_address_add_to_allowlist": "অনুমোদিত তালিকায় যোগ করুন",
"allowlist.enabled_popover_content": "আপনি শুধুমাত্র ঠিকানা বইয়ের allowlist ঠিকানায় তহবিল স্থানান্তর করতে পারেন। আপনি যদি ঝুঁকিগুলি বুঝতে পারেন, তবে আপনি এটি Settings >> Protection-এ নিষ্ক্রিয় করতে পারেন।",
"allowlist.enabled_popover_title": "অ্যালোলিস্ট সক্রিয়",
"approve_edit.approve_amount": "পরিমাণ অনুমোদন করুন",
"approve_edit.less_than_swap": "ভাতা অদলবদলের পরিমাণের চেয়ে কম হতে পারে না",
"approve_edit.title": "ভাতা সম্পাদনা করুন",
Expand Down Expand Up @@ -673,6 +677,7 @@
"feedback.invalid_qr_code": "অবৈধ QR কোড",
"feedback.invalid_words_title": "অবৈধ শব্দ",
"feedback.invalid_words_title_message": "দ্বিগুণ যাচাই করুন এবং পুনরায় চেষ্টা করুন",
"feedback.kaspa_utxo_limit_exceeded_text": "স্থানান্তর ব্যর্থ হয়েছে। UTXO সীমা অতিক্রম করেছে। অনুগ্রহ করে UTXOs একত্রিত করুন অথবা স্থানান্তর পরিমাণ {amount} {symbol} এ কমান।",
"feedback.network_hidden_from_all_networks_toast_title": "{network} সম্পদ এখন 'সকল নেটওয়ার্ক' দৃশ্য থেকে লুকানো হয়েছে",
"feedback.network_shown_in_all_networks_toast_title": "{network} সম্পদ এখন 'সকল নেটওয়ার্ক' দৃশ্যে প্রদর্শিত হচ্ছে",
"feedback.no_connected_account": "কোন সংযুক্ত অ্যাকাউন্ট নেই",
Expand Down Expand Up @@ -749,12 +754,14 @@
"global.404_message": "দুঃখিত, কিছু ভুল হয়েছে!",
"global.Note": "নোট",
"global.about": "সম্পর্কে",
"global.about_device": "ডিভাইস সম্পর্কে",
"global.account": "হিসাব",
"global.account_name": "অ্যাকাউন্টের নাম",
"global.accounts": "অ্যাকাউন্টস",
"global.acknowledged": "স্বীকৃত",
"global.add_account": "অ্যাকাউন্ট যোগ করুন",
"global.add_hidden_wallet": "লুকানো ওয়ালেট যোগ করুন",
"global.add_new_device": "নতুন ডিভাইস যোগ করুন",
"global.add_wallet": "ওয়ালেট যোগ করুন",
"global.address": "ঠিকানা",
"global.advance": "অগ্রসর",
Expand Down Expand Up @@ -803,6 +810,7 @@
"global.cancel_copy": "অনুলিপি বাতিল করুন",
"global.cancelling": "বাতিল করা হচ্ছে",
"global.cash_out": "নগদ উত্তোলন",
"global.certifications": "সার্টিফিকেশন",
"global.chain": "চেইন",
"global.change_passcode": "পাসকোড পরিবর্তন করুন",
"global.change_password": "পাসওয়ার্ড পরিবর্তন করুন",
Expand Down Expand Up @@ -865,6 +873,8 @@
"global.description": "বর্ণনা",
"global.details": "বিস্তারিত",
"global.dev_mode": "ডেভ মোড",
"global.device_info": "ডিভাইস তথ্য",
"global.device_management": "ডিভাইস ব্যবস্থাপনা",
"global.dex": "DEX",
"global.discord": "Discord",
"global.done": "সম্পন্ন",
Expand Down Expand Up @@ -895,6 +905,7 @@
"global.face_id": "ফেস আইডি",
"global.failed": "ব্যর্থ",
"global.faqs": "প্রশ্নোত্তর",
"global.fcc_id": "FCC আইডি",
"global.fdv": "FDV",
"global.firmware": "ফার্মওয়্যার",
"global.follow_the_system": "সিস্টেমটি অনুসরণ করুন",
Expand Down Expand Up @@ -969,11 +980,13 @@
"global.market_cap": "মার্কেট ক্যাপ",
"global.max": "সর্বাধিক",
"global.max_supply": "সর্বাধিক সরবরাহ",
"global.model": "মডেল",
"global.month_date": "{month} {date}",
"global.more": "আরো",
"global.move_to_top": "শীর্ষে যান",
"global.multi_chain_wallet": "মাল্টি-চেইন ওয়ালেট",
"global.multi_networks": "মাল্টি-নেটওয়ার্কস",
"global.my_onekey": "আমার OneKey",
"global.name": "নাম",
"global.names_of_wallets_and_accounts": "ওয়ালেট এবং অ্যাকাউন্টের নাম",
"global.network": "নেটওয়ার্ক",
Expand All @@ -987,6 +1000,8 @@
"global.next": "পরবর্তী",
"global.nft": "NFT",
"global.no_data": "কোন তথ্য নেই",
"global.no_device_connected": "কোনো ডিভাইস সংযুক্ত নেই",
"global.no_device_connected_desc": "আপনার OneKey হার্ডওয়্যার ওয়ালেট সংযুক্ত করুন ডিভাইসের তথ্য দেখতে, প্রামাণিকতা যাচাই করতে, ফার্মওয়্যার আপডেট পরীক্ষা করতে এবং নিরাপত্তা সেটিংস পরিচালনা করতে।",
"global.no_network_address": "কোন {network} ঠিকানা নেই",
"global.no_results": "কোন ফলাফল নেই",
"global.no_transactions_yet": "এখনো কোনো লেনদেন নেই",
Expand Down Expand Up @@ -1083,6 +1098,7 @@
"global.set_passcode": "পাসকোড সেট করুন",
"global.set_password": "পাসওয়ার্ড সেট করুন",
"global.setings_up": "সেট আপ করা",
"global.settings": "সেটিংস",
"global.show_less": "কম দেখান",
"global.show_more": "আরও দেখুন",
"global.show_recovery_phrase": "রিকভারি ফ্রেজ দেখান",
Expand All @@ -1094,6 +1110,7 @@
"global.start_migration": "মাইগ্রেশন শুরু করুন",
"global.status": "অবস্থা",
"global.step_str": "{step} ধাপ",
"global.storage_used": "ব্যবহৃত স্টোরেজ",
"global.success": "সাফল্য",
"global.support": "সমর্থন",
"global.swap": "স্বপ",
Expand All @@ -1120,13 +1137,15 @@
"global.unknown_error": "অজানা ত্রুটি",
"global.unknown_error_retry_message": "একটি অপ্রত্যাশিত ত্রুটি ঘটেছে। দয়া করে আবার চেষ্টা করুন।",
"global.unlock": "আনলক করুন",
"global.unofficial": "অফিসিয়াল নয়",
"global.unpin_from_top": "আনপিন",
"global.update_failed": "আপডেট ব্যর্থ হয়েছে",
"global.updating": "আপডেট হচ্ছে...",
"global.updating_type": "{type} আপডেট করা হচ্ছে...",
"global.upgrade": "আপগ্রেড করুন",
"global.url": "URL",
"global.value": "মান",
"global.verified": "যাচাই",
"global.verify": "যাচাই করুন",
"global.verify_on_device": "ডিভাইসে যাচাই করুন",
"global.version_is_available": "{version} উপলব্ধ আছে",
Expand Down Expand Up @@ -1611,6 +1630,7 @@
"selected_network_only_supports_device": "নির্বাচিত নেটওয়ার্ক বর্তমানে কেবল {deviceType} সমর্থন করে",
"send.address_exists": "ঠিকানাটি ইতিমধ্যেই বিদ্যমান",
"send.address_invalid": "অবৈধ ঠিকানা। দয়া করে পরীক্ষা করুন এবং পুনরায় প্রবেশ করুন",
"send.address_not_allowlist_error": "ঠিকানা অনুমোদিত তালিকায় নেই। এটি যোগ করার চেষ্টা করুন।",
"send.amount": "পরিমাণ",
"send.amount_invalid": "অপর্যাপ্ত ব্যালেন্স। দয়া করে একটি ছোট পরিমাণ চেষ্টা করুন",
"send.amount_too_small": "ট্রান্সফার পরিমাণ খুব ছোট।",
Expand Down Expand Up @@ -1805,6 +1825,8 @@
"settings.view_address_in_explorer": "এক্সপ্লোরারে ঠিকানা দেখুন",
"settings.view_transaction_in_explorer": "এক্সপ্লোরারে লেনদেন দেখুন",
"settings.whats_new": "কি নতুন",
"settings_protection.allowlist_content": "সক্রিয় করা হলে, আপনি শুধুমাত্র ঠিকানা বইয়ের অনুমোদিত তালিকার ঠিকানায় তহবিল পাঠাতে পারবেন।",
"settings_protection.allowlist_title": "অনুমোদিত তালিকা স্থানান্তর",
"shortcut.go_back": "ফিরে যান",
"shortcut.go_forward": "এগিয়ে যান",
"shortcut.hide_sidebar": "সাইডবার লুকান",
Expand Down
Loading

0 comments on commit 4a26d49

Please sign in to comment.