From fce7b9167fa2916de4ec132ebaefe654bb388f70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bego=C3=B1a=20Alvarez?= Date: Wed, 18 Oct 2023 17:30:31 +0200 Subject: [PATCH 01/45] chore: bump version to 2.1.9-beta-1 --- packages/desktop/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/desktop/package.json b/packages/desktop/package.json index 169e3031384..f9e20a1e184 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,7 +1,7 @@ { "name": "desktop", "productName": "Firefly Shimmer", - "version": "2.1.8", + "version": "2.1.9-beta-1", "description": "Official wallet application of Shimmer", "main": "public/build/main.js", "repository": "git@github.com:iotaledger/firefly.git", From 2b617cae80eccc58934527da22541d162e154544 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Esp=C3=ADn?= Date: Mon, 23 Oct 2023 15:06:46 +0200 Subject: [PATCH 02/45] feat: output serialization powered by the SDK (#7601) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: Output serialization powered by the SDK * fix --------- Co-authored-by: Begoña Álvarez de la Cruz --- .../shared/lib/core/layer-2/utils/index.ts | 1 + .../lib/core/layer-2/utils/outputHexBytes.ts | 6 + .../interfaces/api.interface.ts | 3 +- packages/shared/lib/core/utils/index.ts | 1 - .../shared/lib/core/utils/serializeOutput.ts | 343 ------------------ .../core/wallet/utils/getOutputParameters.ts | 14 +- 6 files changed, 18 insertions(+), 350 deletions(-) create mode 100644 packages/shared/lib/core/layer-2/utils/outputHexBytes.ts delete mode 100644 packages/shared/lib/core/utils/serializeOutput.ts diff --git a/packages/shared/lib/core/layer-2/utils/index.ts b/packages/shared/lib/core/layer-2/utils/index.ts index 8cdc77296fb..ee207d04204 100644 --- a/packages/shared/lib/core/layer-2/utils/index.ts +++ b/packages/shared/lib/core/layer-2/utils/index.ts @@ -11,3 +11,4 @@ export * from './parseLayer2MetadataForTransferV1' export * from './parseLayer2MetadataForTransferV2' export * from './parseLayer2MetadataForTransfer' export * from './specialNativeTokenAmountEncoding' +export * from './outputHexBytes' diff --git a/packages/shared/lib/core/layer-2/utils/outputHexBytes.ts b/packages/shared/lib/core/layer-2/utils/outputHexBytes.ts new file mode 100644 index 00000000000..96092720b52 --- /dev/null +++ b/packages/shared/lib/core/layer-2/utils/outputHexBytes.ts @@ -0,0 +1,6 @@ +import { api } from '@core/profile-manager' +import { HexEncodedString, Output } from '@iota/sdk/out/types' + +export function outputHexBytes(output: Output): Promise { + return api.outputHexBytes(output) +} diff --git a/packages/shared/lib/core/profile-manager/interfaces/api.interface.ts b/packages/shared/lib/core/profile-manager/interfaces/api.interface.ts index c8f997a63e8..9d44b7df24a 100644 --- a/packages/shared/lib/core/profile-manager/interfaces/api.interface.ts +++ b/packages/shared/lib/core/profile-manager/interfaces/api.interface.ts @@ -1,5 +1,5 @@ import { WalletOptions, CreateAccountPayload, TransactionId, OutputId } from '@iota/sdk/out/types' -import { AliasId, Client, FoundryId, NftId } from '@iota/sdk' +import { AliasId, Client, FoundryId, HexEncodedString, NftId, Output } from '@iota/sdk' import { IAuth } from '@core/network' import { INodeInfoResponse } from '@core/network/interfaces' @@ -36,4 +36,5 @@ export interface IApi { aliasIdToBech32(aliasId: string, bech32Hrp: string): string nftIdToBech32(nftId: string, bech32Hrp: string): string computeOutputId(id: TransactionId, index: number): Promise + outputHexBytes(output: Output): Promise } diff --git a/packages/shared/lib/core/utils/index.ts b/packages/shared/lib/core/utils/index.ts index 2ac0d8c1961..ccfaacd595d 100644 --- a/packages/shared/lib/core/utils/index.ts +++ b/packages/shared/lib/core/utils/index.ts @@ -19,7 +19,6 @@ export * from './number' export * from './object' export * from './os' export * from './random' -export * from './serializeOutput' export * from './sort' export * from './store' export * from './string' diff --git a/packages/shared/lib/core/utils/serializeOutput.ts b/packages/shared/lib/core/utils/serializeOutput.ts deleted file mode 100644 index 4a7d4e1ffde..00000000000 --- a/packages/shared/lib/core/utils/serializeOutput.ts +++ /dev/null @@ -1,343 +0,0 @@ -/* eslint-disable quotes */ -import { Converter, HexHelper, WriteStream } from '@iota/util.js' -import bigInt from 'big-integer' - -// Entrypoint for (iota.js) Output serialization -export function serializeOutput(object: IBasicOutput | INftOutput): string { - const writeStream = new WriteStream() - - if (object.type === BASIC_OUTPUT_TYPE) { - serializeBasicOutput(writeStream, object) - } else if (object.type === NFT_OUTPUT_TYPE) { - serializeNftOutput(writeStream, object) - } - - const finalBytes = writeStream.finalBytes() - return Converter.bytesToHex(finalBytes, true) -} - -function serializeBasicOutput(writeStream: WriteStream, object: IBasicOutput): void { - writeStream.writeUInt8('basicOutput.type', object.type) - - writeStream.writeUInt64('basicOutput.amount', bigInt(object.amount)) - serializeNativeTokens(writeStream, object.nativeTokens) - serializeUnlockConditions(writeStream, object.unlockConditions) - serializeFeatures(writeStream, object.features) -} - -function serializeNftOutput(writeStream: WriteStream, object: INftOutput): void { - writeStream.writeUInt8('nftOutput.type', object.type) - - writeStream.writeUInt64('nftOutput.amount', bigInt(object.amount)) - serializeNativeTokens(writeStream, object.nativeTokens) - writeStream.writeFixedHex('nftOutput.nftId', NFT_ID_LENGTH, object.nftId) - - serializeUnlockConditions(writeStream, object.unlockConditions) - serializeFeatures(writeStream, object.features) - serializeFeatures(writeStream, object.immutableFeatures) -} - -function serializeNativeTokens(writeStream: WriteStream, object: INativeToken[] | undefined): void { - writeStream.writeUInt8('nativeTokens.numNativeTokens', object?.length ?? 0) - - if (!object) { - return - } - - for (let i = 0; i < object.length; i++) { - serializeNativeToken(writeStream, object[i]) - } -} - -// Native tokens - -function serializeNativeToken(writeStream: WriteStream, object: INativeToken): void { - writeStream.writeFixedHex('nativeToken.id', NATIVE_TOKEN_ID_LENGTH, object.id) - writeStream.writeUInt256('nativeToken.amount', HexHelper.toBigInt256(object.amount)) -} - -function serializeUnlockConditions(writeStream: WriteStream, objects: UnlockConditionTypes[]): void { - writeStream.writeUInt8('unlockConditions.numUnlockConditions', objects.length) - - for (let i = 0; i < objects.length; i++) { - serializeUnlockCondition(writeStream, objects[i]) - } -} - -// Unlock conditions - -function serializeUnlockCondition(writeStream: WriteStream, object: ITypeBase): void { - if (object.type === ADDRESS_UNLOCK_CONDITION_TYPE) { - serializeAddressUnlockCondition(writeStream, object as IAddressUnlockCondition) - } else if (object.type === STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_TYPE) { - serializeStorageDepositReturnUnlockCondition(writeStream, object as IStorageDepositReturnUnlockCondition) - } else if (object.type === TIMELOCK_UNLOCK_CONDITION_TYPE) { - serializeTimelockUnlockCondition(writeStream, object as ITimelockUnlockCondition) - } else if (object.type === EXPIRATION_UNLOCK_CONDITION_TYPE) { - serializeExpirationUnlockCondition(writeStream, object as IExpirationUnlockCondition) - } else if (object.type === STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_TYPE) { - serializeStateControllerAddressUnlockCondition(writeStream, object as IStateControllerAddressUnlockCondition) - } else if (object.type === GOVERNOR_ADDRESS_UNLOCK_CONDITION_TYPE) { - serializeGovernorAddressUnlockCondition(writeStream, object as IGovernorAddressUnlockCondition) - } else if (object.type === IMMUTABLE_ALIAS_UNLOCK_CONDITION_TYPE) { - serializeImmutableAliasUnlockCondition(writeStream, object as IImmutableAliasUnlockCondition) - } else { - throw new Error(`Unrecognized unlock condition type ${object.type}`) - } -} - -function serializeAddressUnlockCondition(writeStream: WriteStream, object: IAddressUnlockCondition): void { - writeStream.writeUInt8('addressUnlockCondition.type', object.type) - serializeAddress(writeStream, object.address) -} - -function serializeExpirationUnlockCondition(writeStream: WriteStream, object: IExpirationUnlockCondition): void { - writeStream.writeUInt8('expirationUnlockCondition.type', object.type) - serializeAddress(writeStream, object.returnAddress) - writeStream.writeUInt32('expirationUnlockCondition.unixTime', object.unixTime) -} - -function serializeGovernorAddressUnlockCondition( - writeStream: WriteStream, - object: IGovernorAddressUnlockCondition -): void { - writeStream.writeUInt8('governorUnlockCondition.type', object.type) - serializeAddress(writeStream, object.address) -} - -function serializeImmutableAliasUnlockCondition( - writeStream: WriteStream, - object: IImmutableAliasUnlockCondition -): void { - writeStream.writeUInt8('immutableAliasUnlockCondition.type', object.type) - serializeAddress(writeStream, object.address) -} - -function serializeStateControllerAddressUnlockCondition( - writeStream: WriteStream, - object: IStateControllerAddressUnlockCondition -): void { - writeStream.writeUInt8('stateControllerAddressUnlockCondition.type', object.type) - serializeAddress(writeStream, object.address) -} - -function serializeStorageDepositReturnUnlockCondition( - writeStream: WriteStream, - object: IStorageDepositReturnUnlockCondition -): void { - writeStream.writeUInt8('storageDepositReturnUnlockCondition.type', object.type) - serializeAddress(writeStream, object.returnAddress) - writeStream.writeUInt64('storageDepositReturnUnlockCondition.amount', bigInt(object.amount)) -} - -function serializeTimelockUnlockCondition(writeStream: WriteStream, object: ITimelockUnlockCondition): void { - writeStream.writeUInt8('timelockUnlockCondition.type', object.type) - writeStream.writeUInt32('timelockUnlockCondition.unixTime', object.unixTime) -} - -// Features - -function serializeFeatures(writeStream: WriteStream, objects: FeatureTypes[] | undefined): void { - writeStream.writeUInt8('features.numFeatures', objects?.length ?? 0) - - if (!objects) { - return - } - - for (let i = 0; i < objects.length; i++) { - serializeFeature(writeStream, objects[i]) - } -} - -function serializeFeature(writeStream: WriteStream, object: ITypeBase): void { - if (object.type === SENDER_FEATURE_TYPE) { - serializeSenderFeature(writeStream, object as ISenderFeature) - } else if (object.type === ISSUER_FEATURE_TYPE) { - serializeIssuerFeature(writeStream, object as IIssuerFeature) - } else if (object.type === METADATA_FEATURE_TYPE) { - serializeMetadataFeature(writeStream, object as IMetadataFeature) - } else if (object.type === TAG_FEATURE_TYPE) { - serializeTagFeature(writeStream, object as ITagFeature) - } else { - throw new Error(`Unrecognized feature type ${object.type}`) - } -} - -function serializeIssuerFeature(writeStream: WriteStream, object: IIssuerFeature): void { - writeStream.writeUInt8('issuerFeature.type', object.type) - serializeAddress(writeStream, object.address) -} - -function serializeMetadataFeature(writeStream: WriteStream, object: IMetadataFeature): void { - writeStream.writeUInt8('metadataFeature.type', object.type) - const data = HexHelper.stripPrefix(object.data) - writeStream.writeUInt16('metadataFeature.dataLength', data.length / 2) - writeStream.writeFixedHex('metadataFeature.data', data.length / 2, data) -} - -function serializeSenderFeature(writeStream: WriteStream, object: ISenderFeature): void { - writeStream.writeUInt8('senderFeature.type', object.type) - serializeAddress(writeStream, object.address) -} - -function serializeTagFeature(writeStream: WriteStream, object: ITagFeature): void { - writeStream.writeUInt8('tagFeature.type', object.type) - const tag = HexHelper.stripPrefix(object.tag) - writeStream.writeUInt8('tagFeature.tagLength', tag.length / 2) - writeStream.writeFixedHex('tagFeature.tag', tag.length / 2, tag) -} - -// Addresses - -function serializeAddress(writeStream: WriteStream, object: ITypeBase): void { - if (object.type === ED25519_ADDRESS_TYPE) { - serializeEd25519Address(writeStream, object as IEd25519Address) - } else if (object.type === ALIAS_ADDRESS_TYPE) { - serializeAliasAddress(writeStream, object as IAliasAddress) - } else if (object.type === NFT_ADDRESS_TYPE) { - serializeNftAddress(writeStream, object as INftAddress) - } else { - throw new Error(`Unrecognized address type ${object.type}`) - } -} - -function serializeEd25519Address(writeStream: WriteStream, object: IEd25519Address): void { - writeStream.writeUInt8('ed25519Address.type', object.type) - writeStream.writeFixedHex('ed25519Address.pubKeyHash', 32, object.pubKeyHash) -} - -function serializeAliasAddress(writeStream: WriteStream, object: IAliasAddress): void { - writeStream.writeUInt8('aliasAddress.type', object.type) - writeStream.writeFixedHex('aliasAddress.aliasId', ALIAS_ID_LENGTH, object.aliasId) -} - -function serializeNftAddress(writeStream: WriteStream, object: INftAddress): void { - writeStream.writeUInt8('nftAddress.type', object.type) - writeStream.writeFixedHex('nftAddress.nftId', NFT_ID_LENGTH, object.nftId) -} - -// Models - -type HexEncodedString = string -type HexEncodedAmount = string - -interface ITypeBase { - type: T -} - -interface ICommonOutput { - nativeTokens?: INativeToken[] - unlockConditions: UnlockConditionTypes[] - features?: FeatureTypes[] -} - -export interface IBasicOutput extends ITypeBase<3>, ICommonOutput { - amount: string -} - -export interface INftOutput extends ITypeBase<6>, ICommonOutput { - amount: string - nftId: HexEncodedString - immutableFeatures?: FeatureTypes[] -} - -type UnlockConditionTypes = - | IAddressUnlockCondition - | IStorageDepositReturnUnlockCondition - | ITimelockUnlockCondition - | IExpirationUnlockCondition - | IStateControllerAddressUnlockCondition - | IGovernorAddressUnlockCondition - | IImmutableAliasUnlockCondition - -interface IAddressUnlockCondition extends ITypeBase<0> { - address: AddressTypes -} - -interface IExpirationUnlockCondition extends ITypeBase<3> { - returnAddress: AddressTypes - unixTime: number -} - -interface IGovernorAddressUnlockCondition extends ITypeBase<5> { - address: AddressTypes -} - -interface IImmutableAliasUnlockCondition extends ITypeBase<6> { - address: AddressTypes -} - -interface IStateControllerAddressUnlockCondition extends ITypeBase<4> { - address: AddressTypes -} - -interface IStorageDepositReturnUnlockCondition extends ITypeBase<1> { - returnAddress: AddressTypes - amount: string -} - -interface ITimelockUnlockCondition extends ITypeBase<2> { - unixTime: number -} - -type FeatureTypes = ISenderFeature | IIssuerFeature | IMetadataFeature | ITagFeature - -interface ISenderFeature extends ITypeBase<0> { - address: AddressTypes -} - -interface IIssuerFeature extends ITypeBase<1> { - address: AddressTypes -} - -interface IMetadataFeature extends ITypeBase<2> { - data: HexEncodedString -} - -interface ITagFeature extends ITypeBase<3> { - tag: HexEncodedString -} - -type AddressTypes = IEd25519Address | IAliasAddress | INftAddress - -interface IEd25519Address extends ITypeBase<0> { - pubKeyHash: HexEncodedString -} - -interface IAliasAddress extends ITypeBase<8> { - aliasId: HexEncodedString -} - -interface INftAddress extends ITypeBase<16> { - nftId: HexEncodedString -} - -interface INativeToken { - id: string - amount: HexEncodedAmount -} - -const BASIC_OUTPUT_TYPE = 3 -const NFT_OUTPUT_TYPE = 6 -const NFT_ID_LENGTH: number = 32 -const ALIAS_ID_LENGTH: number = 32 -const UINT8_SIZE: number = 1 -const UINT32_SIZE: number = 4 -const SMALL_TYPE_LENGTH: number = UINT8_SIZE -const MIN_ALIAS_ADDRESS_LENGTH: number = SMALL_TYPE_LENGTH + ALIAS_ID_LENGTH -const FOUNDRY_ID_LENGTH: number = MIN_ALIAS_ADDRESS_LENGTH + UINT32_SIZE + UINT8_SIZE -const NATIVE_TOKEN_ID_LENGTH: number = FOUNDRY_ID_LENGTH -const ADDRESS_UNLOCK_CONDITION_TYPE = 0 -const STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_TYPE = 1 -const TIMELOCK_UNLOCK_CONDITION_TYPE = 2 -const EXPIRATION_UNLOCK_CONDITION_TYPE = 3 -const STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_TYPE = 4 -const GOVERNOR_ADDRESS_UNLOCK_CONDITION_TYPE = 5 -const IMMUTABLE_ALIAS_UNLOCK_CONDITION_TYPE = 6 -const ED25519_ADDRESS_TYPE = 0 -const ALIAS_ADDRESS_TYPE = 8 -const NFT_ADDRESS_TYPE = 16 -const ISSUER_FEATURE_TYPE = 1 -const METADATA_FEATURE_TYPE = 2 -const SENDER_FEATURE_TYPE = 0 -const TAG_FEATURE_TYPE = 3 diff --git a/packages/shared/lib/core/wallet/utils/getOutputParameters.ts b/packages/shared/lib/core/wallet/utils/getOutputParameters.ts index d9ee8019dc8..4450facefe5 100644 --- a/packages/shared/lib/core/wallet/utils/getOutputParameters.ts +++ b/packages/shared/lib/core/wallet/utils/getOutputParameters.ts @@ -1,10 +1,14 @@ import { getSelectedAccount, prepareOutput } from '@core/account' -import { getEstimatedGasForTransferFromTransactionDetails, getLayer2MetadataForTransfer } from '@core/layer-2/utils' +import { + getEstimatedGasForTransferFromTransactionDetails, + getLayer2MetadataForTransfer, + outputHexBytes, +} from '@core/layer-2/utils' import { getCoinType } from '@core/profile' -import { Converter, IBasicOutput, INftOutput, convertDateToUnixTimestamp, serializeOutput } from '@core/utils' +import { Converter, convertDateToUnixTimestamp } from '@core/utils' import { NewTransactionDetails } from '@core/wallet/types' import { getAddressFromSubject } from '@core/wallet/utils' -import { Assets, OutputParams } from '@iota/sdk/out/types' +import { Assets, BasicOutput, NftOutput, OutputParams } from '@iota/sdk/out/types' import BigInteger from 'big-integer' import { ReturnStrategy } from '../enums' import { NewTransactionType, newTransactionDetails } from '../stores' @@ -87,8 +91,8 @@ async function buildOutputParametersForLayer2(transactionDetails: NewTransaction selectedAccount.index, outputParams, getDefaultTransactionOptions() - )) as unknown as IBasicOutput | INftOutput - const serializedOutput = serializeOutput(outputForEstimate) + )) as unknown as BasicOutput | NftOutput + const serializedOutput = await outputHexBytes(outputForEstimate) const gasEstimatePayload = await getEstimatedGasForTransferFromTransactionDetails(serializedOutput) // Now that we have the gasFeeCharged, update the amount & the tx details From fc24724456e492b15b1f6d09c6bf0e36227c5782 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Esp=C3=ADn?= Date: Mon, 23 Oct 2023 15:27:58 +0200 Subject: [PATCH 03/45] feat: Improved l2 estimated gas (#7604) * feat: Output serialization powered by the SDK * fix * feat: Improved L2 estimated gas --- .../core/wallet/utils/getOutputParameters.ts | 63 ++++++++++--------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/packages/shared/lib/core/wallet/utils/getOutputParameters.ts b/packages/shared/lib/core/wallet/utils/getOutputParameters.ts index 4450facefe5..9a10ff1122f 100644 --- a/packages/shared/lib/core/wallet/utils/getOutputParameters.ts +++ b/packages/shared/lib/core/wallet/utils/getOutputParameters.ts @@ -62,7 +62,7 @@ async function buildOutputParametersForLayer2(transactionDetails: NewTransaction const senderAddress = layer2Parameters.senderAddress const recipientAddress = layer2Parameters?.networkAddress - let amount = getAmountFromTransactionDetails(transactionDetails) + const amount = getAmountFromTransactionDetails(transactionDetails) const assets = getAssetFromTransactionDetails(transactionDetails) const tag = transactionDetails?.tag ? Converter.utf8ToHex(transactionDetails?.tag) : undefined const metadata = getLayer2MetadataForTransfer(transactionDetails) @@ -87,42 +87,49 @@ async function buildOutputParametersForLayer2(transactionDetails: NewTransaction }, } - const outputForEstimate = (await prepareOutput( - selectedAccount.index, - outputParams, - getDefaultTransactionOptions() - )) as unknown as BasicOutput | NftOutput - const serializedOutput = await outputHexBytes(outputForEstimate) - const gasEstimatePayload = await getEstimatedGasForTransferFromTransactionDetails(serializedOutput) + async function getEstimateData() { + const outputForEstimate = (await prepareOutput( + selectedAccount.index, + outputParams, + getDefaultTransactionOptions() + )) as unknown as BasicOutput | NftOutput + const serializedOutput = await outputHexBytes(outputForEstimate) + const gasEstimatePayload = await getEstimatedGasForTransferFromTransactionDetails(serializedOutput) + return { + outputForEstimate, + gasEstimatePayload, + } + } + + let estimatedData = await getEstimateData() + + if (estimatedData.gasEstimatePayload.gasBurned) { + // The "+1" is due to an optimization in WASP nodes. + const metadata = getLayer2MetadataForTransfer( + transactionDetails, + (estimatedData.gasEstimatePayload.gasBurned as number) + 1 + ) + if (!outputParams.features) { + outputParams.features = {} + } + outputParams.features.metadata = metadata + estimatedData = await getEstimateData() + } // Now that we have the gasFeeCharged, update the amount & the tx details - if (gasEstimatePayload.gasFeeCharged) { + if (estimatedData.gasEstimatePayload.gasFeeCharged) { newTransactionDetails.update((state) => { if (state?.layer2Parameters) { - state.layer2Parameters.gasBudget = BigInteger(gasEstimatePayload.gasFeeCharged as number) + state.layer2Parameters.gasBudget = BigInteger(estimatedData.gasEstimatePayload.gasFeeCharged as number) } return state }) - amount = (parseInt(outputForEstimate.amount, 10) + gasEstimatePayload.gasFeeCharged).toString() + outputParams.amount = ( + parseInt(estimatedData.outputForEstimate.amount, 10) + estimatedData.gasEstimatePayload.gasFeeCharged + ).toString() } - return { - recipientAddress, - amount, - ...(assets && { assets }), - features: { - ...(tag && { tag }), - ...(metadata && { metadata }), - ...(layer2Parameters && { sender: senderAddress }), - }, - unlocks: { - ...(expirationUnixTime && { expirationUnixTime }), - ...(timelockUnixTime && { timelockUnixTime }), - }, - storageDeposit: { - returnStrategy: ReturnStrategy.Gift, - }, - } + return outputParams } function getAmountFromTransactionDetails(transactionDetails: NewTransactionDetails): string { From bfc721e76e331eb8c9abf2c6e78dce5f672fedc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bego=C3=B1a=20Alvarez?= Date: Tue, 24 Oct 2023 15:11:48 +0200 Subject: [PATCH 04/45] chore: bump version to 2.1.9 --- packages/desktop/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/desktop/package.json b/packages/desktop/package.json index f9e20a1e184..10e776a80f2 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,7 +1,7 @@ { "name": "desktop", "productName": "Firefly Shimmer", - "version": "2.1.9-beta-1", + "version": "2.1.9", "description": "Official wallet application of Shimmer", "main": "public/build/main.js", "repository": "git@github.com:iotaledger/firefly.git", From f572490efa0b182e8e31281b404349aba7804049 Mon Sep 17 00:00:00 2001 From: cpl121 <100352899+cpl121@users.noreply.github.com> Date: Tue, 24 Oct 2023 15:31:48 +0200 Subject: [PATCH 05/45] feat: add denomination to ledger tx verification popup (#7625) * feat: add denomination to ledger transaction verification popup * fix: remove unnecessary prop * feat: show token unit --- .../deconstructLedgerVerificationProps.ts | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/shared/lib/core/ledger/helpers/deconstructLedgerVerificationProps.ts b/packages/shared/lib/core/ledger/helpers/deconstructLedgerVerificationProps.ts index 53dc3865c11..bc4ed79dc5a 100644 --- a/packages/shared/lib/core/ledger/helpers/deconstructLedgerVerificationProps.ts +++ b/packages/shared/lib/core/ledger/helpers/deconstructLedgerVerificationProps.ts @@ -1,7 +1,12 @@ import { get } from 'svelte/store' import { PopupProps } from '@auxiliary/popup' -import { formatTokenAmountDefault, newTransactionDetails, NewTransactionType } from '@core/wallet' +import { + formatTokenAmountDefault, + getUnitFromTokenMetadata, + newTransactionDetails, + NewTransactionType, +} from '@core/wallet' export function deconstructLedgerVerificationProps(): PopupProps { const transactionDetails = get(newTransactionDetails) @@ -15,11 +20,16 @@ export function deconstructLedgerVerificationProps(): PopupProps { : transactionDetails?.recipient?.address let toAmount = '0' if (transactionDetails?.type === NewTransactionType.TokenTransfer) { - toAmount = `${formatTokenAmountDefault( - Number(transactionDetails?.rawAmount), - transactionDetails?.asset?.metadata, - transactionDetails?.unit - )}` + const tokenMetadata = transactionDetails?.asset?.metadata + if (tokenMetadata) { + const tokenUnit = getUnitFromTokenMetadata(tokenMetadata) + const tokenAmount = formatTokenAmountDefault( + Number(transactionDetails?.rawAmount), + tokenMetadata, + tokenUnit + ) + toAmount = `${tokenAmount} ${tokenUnit}` + } } return { From c112755cfd55f9857e7d5fc528225c1faaf40889 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Esp=C3=ADn?= Date: Tue, 24 Oct 2023 15:55:41 +0200 Subject: [PATCH 06/45] fix: Update ShimmerEVM txs metadata decoding (#7631) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: Output serialization powered by the SDK * fix * feat: Improved L2 estimated gas * feat: Shimmer EVM txs metadata decoding * it seems to work.. * this actually works, fr this time * bring back comment * fix tests * fix tests * typo * remove parseLayer2MetadataForTransferV1 --------- Co-authored-by: Begoña Álvarez de la Cruz --- .../layer-2/classes/special-stream.class.ts | 52 +++++++---- .../parseLayer2MetadataForTransfer.test.ts | 40 ++++---- .../shared/lib/core/layer-2/utils/index.ts | 2 - .../utils/parseLayer2MetadataForTransfer.ts | 92 +++++++++++++++++-- .../utils/parseLayer2MetadataForTransferV1.ts | 84 ----------------- .../utils/parseLayer2MetadataForTransferV2.ts | 92 ------------------- .../helper/getMetadataFromOutput.ts | 6 +- .../outputs/getFormattedAmountFromActivity.ts | 1 - 8 files changed, 146 insertions(+), 223 deletions(-) delete mode 100644 packages/shared/lib/core/layer-2/utils/parseLayer2MetadataForTransferV1.ts delete mode 100644 packages/shared/lib/core/layer-2/utils/parseLayer2MetadataForTransferV2.ts diff --git a/packages/shared/lib/core/layer-2/classes/special-stream.class.ts b/packages/shared/lib/core/layer-2/classes/special-stream.class.ts index f797e52ec12..f82336699af 100644 --- a/packages/shared/lib/core/layer-2/classes/special-stream.class.ts +++ b/packages/shared/lib/core/layer-2/classes/special-stream.class.ts @@ -22,24 +22,27 @@ export class SpecialStream extends WriteStream { export class ReadSpecialStream extends ReadStream { readUInt64SpecialEncoding(name: string): number | bigint { - const readValue = this.readBytes(name, 1) - const [value] = size64Decode(readValue) + const [value] = size64Decode(() => this.readUInt8(name)) return value } readUInt32SpecialEncoding(name: string): number | bigint { - const readValue = this.readBytes(name, 1) - const [value] = size64Decode(readValue) + const [value] = size64Decode(() => this.readUInt8(name)) return value } readUInt16SpecialEncoding(name: string): number | bigint { - const readValue = this.readBytes(name, 1) - const [value] = size64Decode(readValue) + const [value] = size64Decode(() => this.readUInt8(name)) return value } + readUIntNSpecialEncoding(name: string, length: number): number | bigint { const readValue = this.readBytes(name, length) - const [value] = size64Decode(readValue) + let index = 0 + const [value] = size64Decode(() => { + const val = readValue[index] + index += 1 + return val + }) return value } } @@ -133,19 +136,34 @@ function size64Encode(n: bigint): Buffer { } } -function size64Decode(buffer: Uint8Array): [bigint, Error] | [number, null] { - let value = BigInt(0) - let shift = BigInt(0) - let index = 0 +// Adapted from WASP golang implementation https://github.com/iotaledger/wasp/blob/7f880a7983d24d0dcd225e994d67b29741b318bc/packages/util/rwutil/convert.go#L76 +function size64Decode(readByte: () => number): [number, null | Error] { + let byte = readByte() + + if (byte < 0x80) { + return [byte, null] + } + + let value = byte & 0x7f - while (index < buffer.length) { - const byte = buffer[index++] + for (let shift = 7; shift < 63; shift += 7) { + byte = readByte() + if (!byte) { + return [0, null] + } if (byte < 0x80) { - return [Number(value | (BigInt(byte) << shift)), null] + return [Number(value | (byte << shift)), null] } - value |= BigInt(byte & 0x7f) << shift - shift += BigInt(7) + value |= (byte & 0x7f) << shift + } + + byte = readByte() + if (!byte) { + return [0, null] + } + if (byte > 0x01) { + return [0, new Error('size64 overflow')] } - return [value, new Error('Unexpected end of data')] + return [value | (byte << 63), new Error('Unexpected end of data')] } diff --git a/packages/shared/lib/core/layer-2/tests/parseLayer2MetadataForTransfer.test.ts b/packages/shared/lib/core/layer-2/tests/parseLayer2MetadataForTransfer.test.ts index 6cdd6bf7ed3..4a0d8a7c24c 100644 --- a/packages/shared/lib/core/layer-2/tests/parseLayer2MetadataForTransfer.test.ts +++ b/packages/shared/lib/core/layer-2/tests/parseLayer2MetadataForTransfer.test.ts @@ -1,62 +1,66 @@ import { Converter } from '@iota/util.js' -import { parseLayer2MetadataForTransferV2 } from '../utils/parseLayer2MetadataForTransferV2' +import { parseLayer2MetadataForTransfer } from '../utils/parseLayer2MetadataForTransfer' -describe('Function: parseLayer2MetadataForTransferV2.ts', () => { +describe('Function: parseLayer2MetadataForTransfer.ts', () => { it('should correctly parse metadata with base token', () => { - const metadata = '0x00000000025e4b3ca1e3f423a0c21e0101611503807d707f59f1345e1063dbb64f2495d1491283a080c0843d' + const metadata = + '0x00025e4b3ca1e3f423914e010161350342f7da9bdb55b3ec87e5ac1a1e6d88e16768663fde5eca3429eb6f579cc538acb82a77d6f89dae4611b81eac279fbf96d322001f8080d293ad03' const metadataByteArray = Converter.hexToBytes(metadata) const expected = { senderContract: '0x0', targetContract: 'Accounts', contractFunction: 'transferAllowanceTo', - gasBudget: '500000', - ethereumAddress: '0x807d707f59f1345e1063dbb64f2495d1491283a0', - baseTokens: '1000000', + gasBudget: '10001', + ethereumAddress: + '0x42f7da9bdb55b3ec87e5ac1a1e6d88e16768663fde5eca3429eb6f579cc538acb82a77d6f89dae4611b81eac279fbf96d322001f', + baseTokens: '900000000', nativeTokens: [], nfts: [], } - const parsedMetadata = parseLayer2MetadataForTransferV2(metadataByteArray) + const parsedMetadata = parseLayer2MetadataForTransfer(metadataByteArray) expect(parsedMetadata).toEqual(expected) }) it('should correctly parse metadata with native tokens', () => { const metadata = - '0x00000000025e4b3ca1e3f423a0c21e01016115038cc8112290f8c350a60e1afdb8379c686e2a5bb3400108fcccc313acc182fc2c647dc98864062b163a8ee254231d7f029dc6be3a2de52e01000000000132' + '0x00025e4b3ca1e3f423914e010161350342f7da9bdb55b3ec87e5ac1a1e6d88e16768663fde5eca3429eb6f579cc538acb82a77d6f89dae4611b81eac279fbf96d322001f4001086ac702fcfdc37b437e7ebb7a87d8acfb875be6b1ae3823bc61aa7896b852a6d5010000000001fa' const metadataByteArray = Converter.hexToBytes(metadata) const expected = { senderContract: '0x0', targetContract: 'Accounts', contractFunction: 'transferAllowanceTo', - gasBudget: '500000', - ethereumAddress: '0x8cc8112290f8c350a60e1afdb8379c686e2a5bb3', + gasBudget: '10001', + ethereumAddress: + '0x42f7da9bdb55b3ec87e5ac1a1e6d88e16768663fde5eca3429eb6f579cc538acb82a77d6f89dae4611b81eac279fbf96d322001f', baseTokens: '0', nativeTokens: [ { - amount: '50', - ID: ['0x08fcccc313acc182fc2c647dc98864062b163a8ee254231d7f029dc6be3a2de52e0100000000'], + amount: '250', + ID: ['0x086ac702fcfdc37b437e7ebb7a87d8acfb875be6b1ae3823bc61aa7896b852a6d50100000000'], }, ], nfts: [], } - const parsedMetadata = parseLayer2MetadataForTransferV2(metadataByteArray) + const parsedMetadata = parseLayer2MetadataForTransfer(metadataByteArray) expect(parsedMetadata).toEqual(expected) }) it('should correctly parse metadata with nfts', () => { const metadata = - '0x00000000025e4b3ca1e3f423a0c21e0101611503cbcd6d8659ed1998a452335ae53904dc0af1c99b200166b71141974aa368c9152a24d631494b46172ba05dd998eef553e7fa1218b704' + '0x00025e4b3ca1e3f423e9cd01010161350342f7da9bdb55b3ec87e5ac1a1e6d88e16768663fde5eca3429eb6f579cc538acb82a77d6f89dae4611b81eac279fbf96d322001f2001bf5b7cd4e8ac582e246c25b6a89b4ab4ef0646d3291aa03d9a5313154b714a06' const metadataByteArray = Converter.hexToBytes(metadata) const expected = { senderContract: '0x0', targetContract: 'Accounts', contractFunction: 'transferAllowanceTo', - gasBudget: '500000', - ethereumAddress: '0xcbcd6d8659ed1998a452335ae53904dc0af1c99b', + gasBudget: '26345', + ethereumAddress: + '0x42f7da9bdb55b3ec87e5ac1a1e6d88e16768663fde5eca3429eb6f579cc538acb82a77d6f89dae4611b81eac279fbf96d322001f', baseTokens: '0', nativeTokens: [], - nfts: ['0x66b71141974aa368c9152a24d631494b46172ba05dd998eef553e7fa1218b704'], + nfts: ['0xbf5b7cd4e8ac582e246c25b6a89b4ab4ef0646d3291aa03d9a5313154b714a06'], } - const parsedMetadata = parseLayer2MetadataForTransferV2(metadataByteArray) + const parsedMetadata = parseLayer2MetadataForTransfer(metadataByteArray) expect(parsedMetadata).toEqual(expected) }) }) diff --git a/packages/shared/lib/core/layer-2/utils/index.ts b/packages/shared/lib/core/layer-2/utils/index.ts index ee207d04204..aa4f8873671 100644 --- a/packages/shared/lib/core/layer-2/utils/index.ts +++ b/packages/shared/lib/core/layer-2/utils/index.ts @@ -7,8 +7,6 @@ export * from './getLayer2AssetAllowance' export * from './getLayer2MetadataForTransfer' export * from './getLayer2NetworkFromAddress' export * from './parseLayer2Metadata' -export * from './parseLayer2MetadataForTransferV1' -export * from './parseLayer2MetadataForTransferV2' export * from './parseLayer2MetadataForTransfer' export * from './specialNativeTokenAmountEncoding' export * from './outputHexBytes' diff --git a/packages/shared/lib/core/layer-2/utils/parseLayer2MetadataForTransfer.ts b/packages/shared/lib/core/layer-2/utils/parseLayer2MetadataForTransfer.ts index d5d6506fb54..86642ff6c9e 100644 --- a/packages/shared/lib/core/layer-2/utils/parseLayer2MetadataForTransfer.ts +++ b/packages/shared/lib/core/layer-2/utils/parseLayer2MetadataForTransfer.ts @@ -1,11 +1,89 @@ -import { ILayer2TransferAllowanceMetadata } from '../interfaces' -import { parseLayer2MetadataForTransferV1 } from './parseLayer2MetadataForTransferV1' -import { parseLayer2MetadataForTransferV2 } from './parseLayer2MetadataForTransferV2' +import { Converter } from '@core/utils' +import { ILayer2AssetAllowance, ILayer2TransferAllowanceMetadata } from '../interfaces' +import { CONTRACT_FUNCTIONS, TARGET_CONTRACTS } from '../constants' +import { Allowance } from '../enums' +import { ReadSpecialStream } from '../classes' +// Function to parse data from the current metadata, using the new encoding where the shimmer chainId is 1073 export function parseLayer2MetadataForTransfer(metadata: Uint8Array): ILayer2TransferAllowanceMetadata { - try { - return parseLayer2MetadataForTransferV2(metadata) - } catch (err) { - return parseLayer2MetadataForTransferV1(metadata) + const readStream = new ReadSpecialStream(metadata) + const senderContract = readStream.readUInt8('senderContract') + const targetContract = readStream.readUInt32('targetContract') + const contractFunction = readStream.readUInt32('contractFunction') + const gasBudget = readStream.readUInt64SpecialEncoding('gasBudget') + const smartContractParameters = parseSmartContractParameters(readStream) + const ethereumAddress = '0x' + smartContractParameters['a'].substring(4) + const allowance = parseAssetAllowance(readStream) + + return { + senderContract: Converter.decimalToHex(senderContract), + targetContract: TARGET_CONTRACTS[targetContract] ?? Converter.decimalToHex(targetContract), + contractFunction: CONTRACT_FUNCTIONS[contractFunction] ?? Converter.decimalToHex(contractFunction), + gasBudget: gasBudget.toString(), + ethereumAddress, + baseTokens: allowance?.baseTokens, + nativeTokens: allowance?.nativeTokens, + nfts: allowance?.nfts, + } +} + +function parseSmartContractParameters(readStream: ReadSpecialStream): Record { + const smartContractParametersAmount = readStream.readUInt32SpecialEncoding('parametersLength') + const smartContractParameters: Record = {} + + for (let index = 0; index < smartContractParametersAmount; index++) { + const keyLength = readStream.readUInt32SpecialEncoding('keyLength') + const keyBytes = readStream.readBytes('keyValue', Number(keyLength)) + + const valueLength = readStream.readUInt32SpecialEncoding('valueLength') + const valueBytes = readStream.readBytes('valueBytes', Number(valueLength)) + + const key = Converter.bytesToUtf8(keyBytes) + const value = Converter.bytesToHex(valueBytes) + + smartContractParameters[key] = value + } + + return smartContractParameters +} + +function parseAssetAllowance(readStream: ReadSpecialStream): ILayer2AssetAllowance { + const allowance = readStream.readUInt8('encodedAllowance') + const result: ILayer2AssetAllowance = { + baseTokens: '0', + nativeTokens: [], + nfts: [], + } + + switch (allowance) { + case Allowance.HasBaseTokens: { + // TODO: This is a temporary fix since now the base token is sent alone in the transfer (without native token and/or nfts) + const baseTokenLength = readStream.length() - readStream.getReadIndex() + result.baseTokens = readStream.readUIntNSpecialEncoding('baseTokenAmount', baseTokenLength).toString() + break + } + + case Allowance.HasNativeTokens: { + readStream.readUInt32SpecialEncoding('amountOfDifferentTokens') + const NATIVE_TOKEN_ID_LENGTH = 38 + const tokenId = readStream.readBytes('tokenId', NATIVE_TOKEN_ID_LENGTH) + const tokenAmount = readStream.readUInt32SpecialEncoding('nativeTokenAmountLength') + const nativeTokenAmount = readStream.readBytes('nativeTokenAmount', Number(tokenAmount)) + result.nativeTokens.push({ ID: [Converter.bytesToHex(tokenId)], amount: nativeTokenAmount.toString() }) + break + } + + case Allowance.hasNFTs: { + readStream.readUInt16SpecialEncoding('nftAmount') + const NFT_ID_LENGTH = 32 + const nftIdBytes = readStream.readBytes('nftId', NFT_ID_LENGTH) + const nftId = Converter.bytesToHex(nftIdBytes) + result.nfts.push(nftId) + break + } + + default: + throw new Error('Smart contract call data does not set the asset allowance!') } + return result } diff --git a/packages/shared/lib/core/layer-2/utils/parseLayer2MetadataForTransferV1.ts b/packages/shared/lib/core/layer-2/utils/parseLayer2MetadataForTransferV1.ts deleted file mode 100644 index ae242bbe981..00000000000 --- a/packages/shared/lib/core/layer-2/utils/parseLayer2MetadataForTransferV1.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { Converter } from '@core/utils' -import { ReadStream } from '@iota/util.js' -import { NativeTokenAmount, TOKEN_ID_BYTE_LENGTH } from '@core/token' -import { NFT_ID_BYTE_LENGTH } from '@core/nfts/constants' -import { ILayer2AssetAllowance, ILayer2TransferAllowanceMetadata } from '../interfaces' -import { CONTRACT_FUNCTIONS, TARGET_CONTRACTS } from '../constants' - -// DEPRECATED: Function to parse data from the original metadata when the shimmer chainId was 1071 -export function parseLayer2MetadataForTransferV1(metadata: Uint8Array): ILayer2TransferAllowanceMetadata { - const readStream = new ReadStream(metadata) - - const senderContract = readStream.readUInt32('senderContract') - const targetContract = readStream.readUInt32('targetContract') - const contractFunction = readStream.readUInt32('contractFunction') - const gasBudget = readStream.readUInt64('gasBudget') - - const smartContractParameters = parseSmartContractParameters(readStream) - const ethereumAddress = '0x' + smartContractParameters['a'].substring(4) - - const allowance = parseAssetAllowance(readStream) - - return { - senderContract: Converter.decimalToHex(senderContract), - targetContract: TARGET_CONTRACTS[targetContract] ?? Converter.decimalToHex(targetContract), - contractFunction: CONTRACT_FUNCTIONS[contractFunction] ?? Converter.decimalToHex(contractFunction), - gasBudget: gasBudget.toString(), - ethereumAddress, - baseTokens: allowance?.baseTokens, - nativeTokens: allowance?.nativeTokens, - nfts: allowance?.nfts, - } -} - -function parseSmartContractParameters(readStream: ReadStream): Record { - const smartContractParametersAmount = readStream.readUInt32('parametersLength') - const smartContractParameters: Record = {} - - for (let index = 0; index < smartContractParametersAmount; index++) { - const keyLength = readStream.readUInt16('keyLength') - const keyBytes = readStream.readBytes('keyValue', keyLength) - - const valueLength = readStream.readUInt32('valueLength') - const valueBytes = readStream.readBytes('valueBytes', valueLength) - - const key = Converter.bytesToUtf8(keyBytes) - const value = Converter.bytesToHex(valueBytes) - - smartContractParameters[key] = value - } - - return smartContractParameters -} - -function parseAssetAllowance(readStream: ReadStream): ILayer2AssetAllowance { - const allowance = readStream.readUInt8('allowance') - - if (allowance) { - const baseTokens = readStream.readUInt64('baseTokens').toString() - readStream.readUInt16('tokenBufferBytesLength') - const tokenAmount = readStream.readUInt16('tokenAmount') - const nativeTokens: NativeTokenAmount[] = [] - - for (let token = 0; token < tokenAmount; token++) { - const tokenId = Converter.bytesToHex(readStream.readBytes('tokenId', TOKEN_ID_BYTE_LENGTH)) - const amount = readStream.readUInt256('tokenAmount').toString() - nativeTokens.push({ ID: [tokenId], amount }) - } - - const nftAmount = readStream.readUInt16('nftAmount') - const nfts: string[] = [] - for (let nft = 0; nft < nftAmount; nft++) { - const nftId = Converter.bytesToHex(readStream.readBytes('nftId', NFT_ID_BYTE_LENGTH)) - nfts.push(nftId) - } - - return { - baseTokens, - nativeTokens, - nfts, - } - } else { - throw new Error('Smart contract call data does not set the asset allowance!') - } -} diff --git a/packages/shared/lib/core/layer-2/utils/parseLayer2MetadataForTransferV2.ts b/packages/shared/lib/core/layer-2/utils/parseLayer2MetadataForTransferV2.ts deleted file mode 100644 index 3f3bf78d68b..00000000000 --- a/packages/shared/lib/core/layer-2/utils/parseLayer2MetadataForTransferV2.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { Converter } from '@core/utils' -import { ILayer2AssetAllowance, ILayer2TransferAllowanceMetadata } from '../interfaces' -import { CONTRACT_FUNCTIONS, TARGET_CONTRACTS } from '../constants' -import { Allowance } from '../enums' -import { ReadSpecialStream } from '../classes' - -// Function to parse data from the current metadata, using the new encoding where the shimmer chainId is 1072 -export function parseLayer2MetadataForTransferV2(metadata: Uint8Array): ILayer2TransferAllowanceMetadata { - const readStream = new ReadSpecialStream(metadata) - const senderContract = readStream.readUInt32('senderContract') - const targetContract = readStream.readUInt32('targetContract') - const contractFunction = readStream.readUInt32('contractFunction') - // TODO: This is a temporary fix since now the gas is always 500000, when it varies, the length of the gas will change - const gasBudget = readStream.readUIntNSpecialEncoding('gasBudget', 3) - - const smartContractParameters = parseSmartContractParameters(readStream) - const ethereumAddress = '0x' + smartContractParameters['a'].substring(4) - - const allowance = parseAssetAllowance(readStream) - - return { - senderContract: Converter.decimalToHex(senderContract), - targetContract: TARGET_CONTRACTS[targetContract] ?? Converter.decimalToHex(targetContract), - contractFunction: CONTRACT_FUNCTIONS[contractFunction] ?? Converter.decimalToHex(contractFunction), - gasBudget: gasBudget.toString(), - ethereumAddress, - baseTokens: allowance?.baseTokens, - nativeTokens: allowance?.nativeTokens, - nfts: allowance?.nfts, - } -} - -function parseSmartContractParameters(readStream: ReadSpecialStream): Record { - const smartContractParametersAmount = readStream.readUInt32SpecialEncoding('parametersLength') - const smartContractParameters: Record = {} - - for (let index = 0; index < smartContractParametersAmount; index++) { - const keyLength = readStream.readUInt32SpecialEncoding('keyLength') - const keyBytes = readStream.readBytes('keyValue', Number(keyLength)) - - const valueLength = readStream.readUInt32SpecialEncoding('valueLength') - const valueBytes = readStream.readBytes('valueBytes', Number(valueLength)) - - const key = Converter.bytesToUtf8(keyBytes) - const value = Converter.bytesToHex(valueBytes) - - smartContractParameters[key] = value - } - - return smartContractParameters -} - -function parseAssetAllowance(readStream: ReadSpecialStream): ILayer2AssetAllowance { - const allowance = readStream.readUInt8('encodedAllowance') - const result: ILayer2AssetAllowance = { - baseTokens: '0', - nativeTokens: [], - nfts: [], - } - - switch (allowance) { - case Allowance.HasBaseTokens: { - // TODO: This is a temporary fix since now the base token is sent alone in the transfer (without native token and/or nfts) - const baseTokenLength = readStream.length() - readStream.getReadIndex() - result.baseTokens = readStream.readUIntNSpecialEncoding('baseTokenAmount', baseTokenLength).toString() - break - } - - case Allowance.HasNativeTokens: { - readStream.readUInt32SpecialEncoding('amountOfDifferentTokens') - const NATIVE_TOKEN_ID_LENGTH = 38 - const tokenId = readStream.readBytes('tokenId', NATIVE_TOKEN_ID_LENGTH) - const tokenAmount = readStream.readUInt32SpecialEncoding('nativeTokenAmountLength') - const nativeTokenAmount = readStream.readBytes('nativeTokenAmount', Number(tokenAmount)) - result.nativeTokens.push({ ID: [Converter.bytesToHex(tokenId)], amount: nativeTokenAmount.toString() }) - break - } - - case Allowance.hasNFTs: { - readStream.readUInt16SpecialEncoding('nftAmount') - const NFT_ID_LENGTH = 32 - const nftIdBytes = readStream.readBytes('nftId', NFT_ID_LENGTH) - const nftId = Converter.bytesToHex(nftIdBytes) - result.nfts.push(nftId) - break - } - - default: - throw new Error('Smart contract call data does not set the asset allowance!') - } - return result -} diff --git a/packages/shared/lib/core/wallet/utils/generateActivity/helper/getMetadataFromOutput.ts b/packages/shared/lib/core/wallet/utils/generateActivity/helper/getMetadataFromOutput.ts index 3d0679c5c3c..12ca58353fe 100644 --- a/packages/shared/lib/core/wallet/utils/generateActivity/helper/getMetadataFromOutput.ts +++ b/packages/shared/lib/core/wallet/utils/generateActivity/helper/getMetadataFromOutput.ts @@ -1,4 +1,5 @@ import { isParticipationOutput } from '@contexts/governance/utils' +import { ReadSpecialStream } from '@core/layer-2' import { EXTERNALLY_OWNED_ACCOUNT } from '@core/layer-2/constants' import { parseLayer2MetadataForTransfer } from '@core/layer-2/utils' import { containsControlCharacters, Converter } from '@core/utils' @@ -19,9 +20,10 @@ export function getMetadataFromOutput(output: Output): string | undefined { if (data) { const isVotingOutput = isParticipationOutput(output) const metadataBytes = Converter.hexToBytes(data) - const startValue = Number(data.substring(0, 10)) + const readStream = new ReadSpecialStream(metadataBytes) + const startValue = readStream.readUInt8('startValue') - // For smart contract calls the first 32 bits of the metadata + // For smart contract calls the first 8 bits of the metadata // correspond to 0 if an an end-user initiates the transaction // instead of a smart contract. A stop voting output could // also start with a 0 metadata, so we check that as well. diff --git a/packages/shared/lib/core/wallet/utils/outputs/getFormattedAmountFromActivity.ts b/packages/shared/lib/core/wallet/utils/outputs/getFormattedAmountFromActivity.ts index 41f9b4e9610..6c947115c19 100644 --- a/packages/shared/lib/core/wallet/utils/outputs/getFormattedAmountFromActivity.ts +++ b/packages/shared/lib/core/wallet/utils/outputs/getFormattedAmountFromActivity.ts @@ -8,7 +8,6 @@ export function getFormattedAmountFromActivity( signed: boolean = true ): string { if (!activity) return '' - const metadata = getAssetFromPersistedAssets(activity.assetId)?.metadata const amount = formatTokenAmountBestMatch(activity.rawAmount, metadata) if (activity.type === ActivityType.Basic) { From 7b36b58d253e1cf912b43958bc7b13eda058d061 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Esp=C3=ADn?= Date: Tue, 24 Oct 2023 16:38:49 +0200 Subject: [PATCH 07/45] chore: update `actions/setup-node` to v4 (#7652) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Begoña Álvarez de la Cruz --- .github/workflows/build-and-release-desktop.yml | 2 +- .github/workflows/build-desktop-test.v1.yml | 2 +- .github/workflows/build-desktop-test.v2.yml | 2 +- .github/workflows/build-desktop.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-and-release-desktop.yml b/.github/workflows/build-and-release-desktop.yml index 7100fa0273d..919d6e45db7 100644 --- a/.github/workflows/build-and-release-desktop.yml +++ b/.github/workflows/build-and-release-desktop.yml @@ -67,7 +67,7 @@ jobs: - uses: actions/checkout@v2 - name: Set up Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: node-version: 18.15.0 diff --git a/.github/workflows/build-desktop-test.v1.yml b/.github/workflows/build-desktop-test.v1.yml index fdaf80bf692..d9935167728 100644 --- a/.github/workflows/build-desktop-test.v1.yml +++ b/.github/workflows/build-desktop-test.v1.yml @@ -23,7 +23,7 @@ jobs: ref: 'main' - name: Set up Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: node-version: 14.x diff --git a/.github/workflows/build-desktop-test.v2.yml b/.github/workflows/build-desktop-test.v2.yml index 583af50e2c1..5e30d3c1ebb 100644 --- a/.github/workflows/build-desktop-test.v2.yml +++ b/.github/workflows/build-desktop-test.v2.yml @@ -21,7 +21,7 @@ jobs: - uses: actions/checkout@v2 - name: Set up Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: node-version: 18.15.0 diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml index 4b2773821b8..82d752c3973 100644 --- a/.github/workflows/build-desktop.yml +++ b/.github/workflows/build-desktop.yml @@ -36,7 +36,7 @@ jobs: - uses: actions/checkout@v2 - name: Set up Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: node-version: 18.15.0 From 8d6a23e720af8852931e3eee6f2d50551b165072 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Esp=C3=ADn?= Date: Tue, 24 Oct 2023 16:38:49 +0200 Subject: [PATCH 08/45] chore: update `actions/setup-node` to v4 (#7652) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Begoña Álvarez de la Cruz --- .github/workflows/build-and-release-desktop.yml | 2 +- .github/workflows/build-desktop-test.v1.yml | 2 +- .github/workflows/build-desktop-test.v2.yml | 2 +- .github/workflows/build-desktop.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-and-release-desktop.yml b/.github/workflows/build-and-release-desktop.yml index 7100fa0273d..919d6e45db7 100644 --- a/.github/workflows/build-and-release-desktop.yml +++ b/.github/workflows/build-and-release-desktop.yml @@ -67,7 +67,7 @@ jobs: - uses: actions/checkout@v2 - name: Set up Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: node-version: 18.15.0 diff --git a/.github/workflows/build-desktop-test.v1.yml b/.github/workflows/build-desktop-test.v1.yml index fdaf80bf692..d9935167728 100644 --- a/.github/workflows/build-desktop-test.v1.yml +++ b/.github/workflows/build-desktop-test.v1.yml @@ -23,7 +23,7 @@ jobs: ref: 'main' - name: Set up Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: node-version: 14.x diff --git a/.github/workflows/build-desktop-test.v2.yml b/.github/workflows/build-desktop-test.v2.yml index 583af50e2c1..5e30d3c1ebb 100644 --- a/.github/workflows/build-desktop-test.v2.yml +++ b/.github/workflows/build-desktop-test.v2.yml @@ -21,7 +21,7 @@ jobs: - uses: actions/checkout@v2 - name: Set up Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: node-version: 18.15.0 diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml index 4b2773821b8..82d752c3973 100644 --- a/.github/workflows/build-desktop.yml +++ b/.github/workflows/build-desktop.yml @@ -36,7 +36,7 @@ jobs: - uses: actions/checkout@v2 - name: Set up Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: node-version: 18.15.0 From 3cbcd8cd386c3e1d697081af83fc01fffd5ec98d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Esp=C3=ADn?= Date: Wed, 25 Oct 2023 10:19:43 +0200 Subject: [PATCH 09/45] chore: simplify task template (#7657) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Begoña Álvarez de la Cruz --- .github/ISSUE_TEMPLATE/create-task.yml | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/create-task.yml b/.github/ISSUE_TEMPLATE/create-task.yml index 56acac08212..b6ee1267eb3 100644 --- a/.github/ISSUE_TEMPLATE/create-task.yml +++ b/.github/ISSUE_TEMPLATE/create-task.yml @@ -18,25 +18,4 @@ body: label: Task description description: Describe the task that needs to be completed. validations: - required: true - - - type: textarea - id: requirements - attributes: - label: Requirements - description: What are the requirements for this task, this could be a checklist of subtasks. - validations: - required: true - - - type: checkboxes - id: checklist - attributes: - label: Creation checklist - description: 'Before submitting this task please ensure you have done the following if necessary:' - options: - - label: I have assigned this task to the correct people - required: false - - label: I have added the most appropriate labels - required: false - - label: I have linked the correct milestone and/or project - required: false + required: true \ No newline at end of file From 559a728c9e6a5f593f42c32cb3e609609d84c464 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 10:51:36 +0200 Subject: [PATCH 10/45] New Crowdin translations by Github Action (#7638) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Crowdin Bot Co-authored-by: Begoña Álvarez de la Cruz --- packages/shared/locales/da.json | 6 +- packages/shared/locales/de.json | 6 +- packages/shared/locales/es-ES.json | 6 +- packages/shared/locales/fr.json | 6 +- packages/shared/locales/hu.json | 6 +- packages/shared/locales/ko.json | 124 ++++++++++++++--------------- packages/shared/locales/pl.json | 6 +- 7 files changed, 80 insertions(+), 80 deletions(-) diff --git a/packages/shared/locales/da.json b/packages/shared/locales/da.json index 940e3bd5f35..60a98ba1492 100644 --- a/packages/shared/locales/da.json +++ b/packages/shared/locales/da.json @@ -66,7 +66,7 @@ }, "ledgerAccount": { "title": "Opret en hardwareprofil", - "description": "Ledger Nano S, Nano S Plus or Nano X required" + "description": "Ledger Nano S, Nano S Plus eller Nano X kræves" } }, "setupRecovered": { @@ -77,7 +77,7 @@ "importFile": "Benyt Stronghold-sikkerhedskopi", "importFileDescription": "Importér Stronghold-sikkerhedskopien", "importLedger": "Benyt Ledger-enhed", - "importLedgerDescription": "Restore from your Ledger Nano S, Nano S Plus or X device" + "importLedgerDescription": "Gendan fra Ledger Nano S-, Nano S Plus- eller X-enhed" }, "setupClaimed": { "title": "Gør krav på Shimmer-staking belønninger", @@ -925,7 +925,7 @@ "addressesFound": "Addresses found", "totalAddressBalance": "Total balance", "searchAgainHint": "Is your balance or number of wallets incorrect? Search again until your full balance is shown.", - "currentWallet": "Search only in the current wallet" + "currentWallet": "Søg kun i den aktuelle wallet" }, "balanceOverview": { "title": "Balance overview", diff --git a/packages/shared/locales/de.json b/packages/shared/locales/de.json index 16d774184fa..5bfde3b6b5d 100644 --- a/packages/shared/locales/de.json +++ b/packages/shared/locales/de.json @@ -66,7 +66,7 @@ }, "ledgerAccount": { "title": "Erstelle ein (Ledger-) Hardware Profil", - "description": "Ledger Nano S, Nano S Plus or Nano X required" + "description": "Ledger Nano S, Nano S Plus oder Nano X erforderlich" } }, "setupRecovered": { @@ -77,7 +77,7 @@ "importFile": "Stronghold-Backup verwenden", "importFileDescription": "Importiere deine Stronghold-Backup Datei", "importLedger": "Ledger-Gerät verwenden", - "importLedgerDescription": "Restore from your Ledger Nano S, Nano S Plus or X device" + "importLedgerDescription": "Von deinem Ledger Nano S, Nano S Plus oder X wiederherstellen" }, "setupClaimed": { "title": "Shimmer Staking-Rewards beanspruchen", @@ -925,7 +925,7 @@ "addressesFound": "Gefundene Adressen", "totalAddressBalance": "Gesamtguthaben", "searchAgainHint": "Ist das angezeigte Guthaben oder die Anzahl der Wallets nicht korrekt? Dann suche erneut, bis dein gesamtes Guthaben angezeigt wird.", - "currentWallet": "Search only in the current wallet" + "currentWallet": "Nur im aktuellen Wallet suchen" }, "balanceOverview": { "title": "Guthabenübersicht", diff --git a/packages/shared/locales/es-ES.json b/packages/shared/locales/es-ES.json index f2aaea2be68..3a544dd9e6f 100644 --- a/packages/shared/locales/es-ES.json +++ b/packages/shared/locales/es-ES.json @@ -66,7 +66,7 @@ }, "ledgerAccount": { "title": "Crear un perfil de hardware", - "description": "Ledger Nano S, Nano S Plus or Nano X required" + "description": "Se requiere Ledger Nano S, Nano S Plus o Nano X" } }, "setupRecovered": { @@ -77,7 +77,7 @@ "importFile": "Usar copia de seguridad de Stronghold", "importFileDescription": "Importa tu copia de seguridad de Stronghold", "importLedger": "Usar dispositivo Ledger", - "importLedgerDescription": "Restore from your Ledger Nano S, Nano S Plus or X device" + "importLedgerDescription": "Restaurar desde tu dispositivo Ledger Nano S, Nano S Plus o X" }, "setupClaimed": { "title": "Reclamar recompensas de staking de Shimmer", @@ -925,7 +925,7 @@ "addressesFound": "Direcciones encontradas", "totalAddressBalance": "Balance total", "searchAgainHint": "¿Su saldo o número de billeteras es incorrecto? Busque de nuevo hasta que se muestre su saldo completo.", - "currentWallet": "Search only in the current wallet" + "currentWallet": "Buscar sólo en la cartera actual" }, "balanceOverview": { "title": "Resumen del balance", diff --git a/packages/shared/locales/fr.json b/packages/shared/locales/fr.json index d3ec0ad0fc2..0a92c71b309 100644 --- a/packages/shared/locales/fr.json +++ b/packages/shared/locales/fr.json @@ -66,7 +66,7 @@ }, "ledgerAccount": { "title": "Create a hardware profile", - "description": "Ledger Nano S, Nano S Plus or Nano X required" + "description": "Ledger Nano S, Nano S Plus ou Nano X requis" } }, "setupRecovered": { @@ -77,7 +77,7 @@ "importFile": "Use Stronghold backup", "importFileDescription": "Import your Stronghold backup file", "importLedger": "Use Ledger device", - "importLedgerDescription": "Restore from your Ledger Nano S, Nano S Plus or X device" + "importLedgerDescription": "Restaurer depuis votre Ledger Nano S, Nano S Plus ou X" }, "setupClaimed": { "title": "Claim Shimmer staking rewards", @@ -925,7 +925,7 @@ "addressesFound": "Adresses trouvées", "totalAddressBalance": "Balance totale", "searchAgainHint": "Votre solde ou le nombre de portefeuilles sont incorrects ? Appuyez à nouveau sur la recherche jusqu'à ce que votre solde complet soit affiché.", - "currentWallet": "Search only in the current wallet" + "currentWallet": "Rechercher uniquement dans le portefeuille actuel" }, "balanceOverview": { "title": "Aperçu du solde", diff --git a/packages/shared/locales/hu.json b/packages/shared/locales/hu.json index b5006e07008..7d1ca829208 100644 --- a/packages/shared/locales/hu.json +++ b/packages/shared/locales/hu.json @@ -66,7 +66,7 @@ }, "ledgerAccount": { "title": "Hardverprofil létrehozása", - "description": "Ledger Nano S, Nano S Plus or Nano X required" + "description": "Ledger Nano S, Nano S Plus vagy Nano X eszköz szükséges" } }, "setupRecovered": { @@ -77,7 +77,7 @@ "importFile": "Stonghold biztonsági mentés használata", "importFileDescription": "Importálja a Stronghold biztonsági mentés fájlját", "importLedger": "Ledger eszköz használata", - "importLedgerDescription": "Restore from your Ledger Nano S, Nano S Plus or X device" + "importLedgerDescription": "Profil helyreállítása Ledger Nano S, Nano S Plus vagy X eszközről" }, "setupClaimed": { "title": "Shimmer jutalom igénylése", @@ -925,7 +925,7 @@ "addressesFound": "Addresses found", "totalAddressBalance": "Total balance", "searchAgainHint": "Is your balance or number of wallets incorrect? Search again until your full balance is shown.", - "currentWallet": "Search only in the current wallet" + "currentWallet": "Keresés kizárólag a jelenlegi tárcában" }, "balanceOverview": { "title": "Balance overview", diff --git a/packages/shared/locales/ko.json b/packages/shared/locales/ko.json index ab9b6f93fcc..9c3950d1765 100644 --- a/packages/shared/locales/ko.json +++ b/packages/shared/locales/ko.json @@ -66,7 +66,7 @@ }, "ledgerAccount": { "title": "Create a hardware profile", - "description": "Ledger Nano S, Nano S Plus or Nano X required" + "description": "Ledger Nano S, Nano S Plus 또는 Nano X가 필요합니다." } }, "setupRecovered": { @@ -77,7 +77,7 @@ "importFile": "Use Stronghold backup", "importFileDescription": "Import your Stronghold backup file", "importLedger": "Use Ledger device", - "importLedgerDescription": "Restore from your Ledger Nano S, Nano S Plus or X device" + "importLedgerDescription": "Ledger Nano S, Nano S Plus or Nano X 기기에서 복원" }, "setupClaimed": { "title": "Claim Shimmer staking rewards", @@ -509,19 +509,19 @@ "headers": { "upcoming": "나중에 다시 확인", "commencing": "Pre-staking 시작", - "holding": "{duration} of staking left", + "holding": "{duration} 남은 스테이킹 기간", "ended": "스테이킹이 이제 종료되었습니다", - "inactive": "No staking events detected" + "inactive": "스테이킹 이벤트가 감지되지 않았습니다." }, "bodies": { - "upcoming": "Stake your {token} tokens to automatically receive rewards every 10 seconds once staking starts on {date}.", - "commencing": "Stake your {token} tokens to automatically receive rewards every 10 seconds once staking starts on {date}.", - "holdingAndStaking": "You automatically receive rewards every 10 seconds.", - "holdingAndNotStaking": "Stake your {token} tokens to receive rewards every 10 seconds.", - "endedAndDidStake": "{token} rewards will be distributed to your wallet once the network launches.", - "endedAndDidNotStake": "You did not participate in this airdrop.", - "endedAndDidNotReachMinRewards": "You did not stake enough {token} tokens to reach the minimum airdrop rewards.", - "inactive": "Open network configuration in the advanced settings and make sure the current node has the \"Participation\" feature by clicking \"View info\"." + "upcoming": "{date} 에 스테이킹이 시작되면, 10초마다 자동으로 보상을 받으려면 {token} 토큰을 스테이킹하세요.", + "commencing": "{date} 에 스테이킹이 시작되면 10초마다 자동으로 보상을 받으려면 {token} 토큰을 스테이킹하세요.", + "holdingAndStaking": "10초마다 자동으로 보상을 받습니다.", + "holdingAndNotStaking": "10초마다 보상을 받으려면 {token} 토큰을 스테이킹하세요.", + "endedAndDidStake": "네트워크가 출시되면 {token} 보상이 지갑에 배포됩니다.", + "endedAndDidNotStake": "이번 에어드랍에 참여하지 않았습니다.", + "endedAndDidNotReachMinRewards": "최소 에어드롭 보상에 도달할 만큼 충분한 {token} 토큰을 스테이킹하지 않았습니다.", + "inactive": "고급 설정에서 네트워크 구성을 열고 \"정보 보기\"를 클릭하여 현재 노드에 \"참여\" 기능이 있는지 확인하세요." } }, "airdrops": { @@ -535,12 +535,12 @@ }, "shimmer": { "name": "Shimmer", - "description": "The incentivized staging network to advance major innovations on IOTA. Whatever happens, happens. How Shimmer evolves is up to you." + "description": "IOTA의 주요 혁신을 발전시키기 위한 인센티브화된 스테이징 네트워크입니다. 무슨 일이든 일어날 수 있습니다. Shimmer가 어떻게 진화하는지는 당신에게 달려 있습니다." } }, "banners": { "new": "새 이벤트", - "complete": "Complete" + "complete": "완료" } }, "picker": { @@ -805,7 +805,7 @@ "hideAccount": { "title": "{name} 계정을 숨길까요?", "body": "숨겨진 지갑은 고급설정의 \"숨긴 지갑 표시\"를 활성화하면 다시 찾을 수 있습니다.", - "typePassword": "Type your wallet password to confirm.", + "typePassword": "확인을 위해 지갑 비밀번호를 입력하세요.", "hideAccount": "지갑 숨기기", "errorTitle": "{name} 계정을 숨길 수 없습니다", "errorBody1": "지갑을 숨기기 위해서는 잔액이 0이어야 합니다.", @@ -916,16 +916,16 @@ "transactionSummary": "Transaction to {recipient}", "surplusIncluded": "This transaction contains a surplus amount. Please double check this is the amount you want to send.", "sendingFromStakedAccount": "현재 staking중인 지갑에서 이체를 하고 있습니다. 이로 인해 여러분의 토큰 staking이 취소될 수 있습니다. 자유로이 이체하시되 그후에 남은 토큰을 다시 staking할 필요가 있을 수 있다는 점을 알아두세요.", - "sendingFromStakedAccountBelowMinReward": "You are sending a transfer from a wallet that has not yet reached the minimum staking rewards. This may unstake your tokens and you may lose your staking rewards on this wallet." + "sendingFromStakedAccountBelowMinReward": "아직 최소 스테이킹 보상에 도달하지 않은 지갑에서 이체를 보내고 있습니다. 이로 인해 토큰의 스테이킹이 해제될 수 있으며 이 지갑에 대한 스테이킹 보상을 잃을 수 있습니다." }, "balanceFinder": { - "title": "Balance finder", + "title": "잔액 검색기", "body": "Perform a more exhaustive search of balances.", "addressesSearched": "Addresses searched", "addressesFound": "Addresses found", "totalAddressBalance": "Total balance", "searchAgainHint": "Is your balance or number of wallets incorrect? Search again until your full balance is shown.", - "currentWallet": "Search only in the current wallet" + "currentWallet": "현재 지갑에서만 검색" }, "balanceOverview": { "title": "Balance overview", @@ -1014,26 +1014,26 @@ "title": "Staking 관리", "description": "지갑을 staking 하면 해당 자금에 staking 표시를 하여 여러분께 보내게됩니다. 자금은 언제든 이체 가능하지만 staking 보상 수령을 계속 받지는 못하게 됩니다.", "totalFundsStaked": "Staking 총 자금", - "stakedSuccessfully": "Your funds have been staked for {account}.", + "stakedSuccessfully": "귀하의 자금은 {account} 에 스테이킹되었습니다.", "unstakedSuccessfully": "Your funds have been unstaked for {account}.", "singleAccountHint": "Looking for your wallets? Firefly has changed. Toggle between your wallets in the top menu bar." }, "stakingConfirmation": { - "title": "Confirm Participation", + "title": "참여 확인", "subtitleStake": "Staking이 이제 시작됩니다.", "subtitleMerge": "Merge를 곧 시작합니다.", "multiAirdropWarning": "If you do not want to participate in both airdrops, you can opt-out below. You can unstake and restake to opt back in at any time.", - "mergeStakeWarning": "Your funds will be staked for {airdrop}. To change which airdrops you want to participate in, unstake this wallet and stake it again.", + "mergeStakeWarning": "자금은 {airdrop} 에 스테이킹됩니다. 참여하고 싶은 에어드랍을 변경하려면, 이 지갑을 언스테이킹하고 다시 스테이킹하세요.", "estimatedAirdrop": "예상 보상" }, "newStakingPeriodNotification": { - "title": "Staking phase {periodNumber} from {date}", + "title": "{date} 부터 스테이킹 단계 {periodNumber}", "body": "IOTA staking for Assembly continues... Participate in phase {periodNumber} for 90 days. Stake your IOTA tokens and earn ASMB rewards!", "info": "Shimmer staking is now complete and only ASMB tokens will be distributed." }, "shimmer-info": { "title": "Shimmer에 대하여", - "body1": "Congratulations you have earned SMR tokens as a staking reward. Shimmer is an incentivized staging network to test major upgrades on IOTA.", + "body1": "스테이킹 보상으로 SMR 토큰을 획득하신 것을 축하합니다. Shimmer는 IOTA의 주요 업그레이드를 테스트하기 위한 인센티브화된 네트워크입니다.", "body2": "Shimmer의 출발은 2022년을 목표로 하고 있습니다. 여러분의 토큰은 네트워크가 열리면 즉시 전송할 수 있게됩니다." }, "assembly-info": { @@ -1061,9 +1061,9 @@ "privPolicyCheckbox": "변경된 개인정보 보호 정책을 읽었으며 이에 동의합니다" }, "singleAccountGuide": { - "title": "The way you use Firefly has changed", - "body": "The content of each tab is now in the context of a single wallet. You can change the selected wallet from anywhere by using the switcher in the title bar.", - "hint": "Can't find a wallet? Use the balance finder in the settings to discover previously used wallets." + "title": "Firefly 사용 방식이 변경되었습니다.", + "body": "각 탭의 콘텐츠는 이제 단일 지갑의 맥락에 있습니다. 제목 표시줄의 전환기를 사용하여 어디에서나 선택한 지갑을 변경할 수 있습니다.", + "hint": "지갑을 찾을 수 없나요? 이전에 사용한 지갑을 찾으려면 설정에서 잔액 찾기를 사용하세요." }, "transactionDetails": { "title": "Transaction details", @@ -1291,7 +1291,7 @@ "enableDeepLinks": "Enable deep links", "enableDeveloperMode": "개발자 모드 활성화하기", "enableSystemNotifications": "시스템 알림 켜기", - "exportTransactionHistory": "Export transaction history", + "exportTransactionHistory": "거래 내역 내보내기", "localProofOfWork": "내 기기로 작업증명", "unlock": "잠금 해제", "updateFirefly": "Firefly 업데이트", @@ -1419,13 +1419,13 @@ "decreased": "Voting power decreased", "decreasing": "Decreasing voting power", "voted": "Voted", - "voting": "Voting", + "voting": "투표", "changedVote": "Changed vote", "changingVote": "Changing vote", "revoted": "Revoted", "revoting": "Revoting", - "unvoted": "Unvoted", - "unvoting": "Unvoting", + "unvoted": "투표취소", + "unvoting": "투표 안함", "sentNft": "NFT sent", "sendingNft": "Sending NFT", "receivedNft": "NFT received", @@ -1575,21 +1575,21 @@ "votedFor": "Voted for {account}", "unvotedFor": "Unvoted for {account}", "stakingTransaction": "Staking Transaction", - "unstakingTransaction": "Unstaking Transaction", + "unstakingTransaction": "스테이킹 해제 거래", "legacyNetwork": "예전 네트워크", "capsLock": "Caps Lock 켜짐", "version": "{version} 버전", - "yourWallets": "Your Wallets", + "yourWallets": "지갑", "unknown": "알 수 없음", "unknownAddress": "Unknown address", "none": "없음", "staked": "Staked", "unstaked": "Unstaked", "staking": "스테이킹", - "unstaking": "Unstaking", - "notStaked": "Not staked", - "stakedFunds": "Staked funds", - "unstakedFunds": "Unstaked funds", + "unstaking": "스테이킹 해제", + "notStaked": "스태이킹 되지않음", + "stakedFunds": "스테이킹된 자금", + "unstakedFunds": "스테이킹되지 않은 자금", "accountColor": "지갑 색상", "transactionTime": "Transaction time", "surplus": "Surplus", @@ -1824,7 +1824,7 @@ "unrecognizedOperation": "Unrecognized wallet operation: {operation}" } }, - "syncing": "Please wait until synchronization is finished to change wallets.", + "syncing": "지갑을 변경하려면 동기화가 완료될 때까지 기다려주세요.", "transferring": "Please wait until all transactions are completed.", "participating": "Please wait until all staking/voting transactions are completed to change wallets.", "claimed": { @@ -1913,7 +1913,7 @@ "account": { "addressNotFound": "The address cannot be found in your account.", "length": "지갑 이름은 {length, plural, other {#자}}보다 길 수 없습니다.", - "emptyName": "A profile name must contain at least 1 character.", + "emptyName": "프로필 이름에는 적어도 문자 1자 이상이 포함되어야 합니다.", "notEmpty": "이 지갑을 삭제하려면 지갑에 남은 잔고를 비워야 합니다.", "duplicate": "같은 이름의 지갑이 이미 있습니다.", "tilde": "프로필 이름은 `~`로 시작할 수 없습니다.", @@ -1979,7 +1979,7 @@ "timeNotSynced": "Device time is incorrect, unable to sync node.", "answer": "모든 노드로부터 응답을 받을 수 없습니다.", "forbidden": "이 노드 연결은 금지되었습니다.", - "pluginNotAvailable": "The \"{nodePlugin}\" plugin is not available on the current node.", + "pluginNotAvailable": "현재 노드에서는 \"{nodePlugin}\" 플러그인을 사용할 수 없습니다.", "unabledToConnect": "Unable to connect to the node", "differentNetwork": "The node is located on a different network", "duplicateNodes": "Unable to add duplicate node", @@ -2019,7 +2019,7 @@ "generateAddress": "주소를 생성하는 중 에러가 있었습니다.", "timeout": "Ledger 장치가 시간을 초과하였습니다.", "disconnected": "Ledger 장치의 연결이 끊어졌습니다.", - "noStronghold": "Unable to use Stronghold with Ledger profile." + "noStronghold": "Ledger 프로필로는 Stronghold를 사용할 수 없습니다." }, "popup": { "preventClose": "이 팝업창을 닫을 수 없습니다." @@ -2031,13 +2031,13 @@ "cannotDecodeBech32": "문자열을 Bech32 주소로 디코드할 수 없습니다." }, "participation": { - "cannotUseAccount": "Unable to use the specified account.", - "cannotFindStakingEvent": "Unable to find staking event.", - "cannotVisitAirdropWebsite": "Unable to open the {airdrop} website.", - "invalidStakingEventId": "Invalid staking event ID." + "cannotUseAccount": "지정된 계정을 사용할 수 없습니다.", + "cannotFindStakingEvent": "스테이킹 이벤트를 찾을 수 없습니다.", + "cannotVisitAirdropWebsite": "{airdrop} 웹사이트를 열 수 없습니다.", + "invalidStakingEventId": "잘못된 스테이킹 이벤트 ID입니다." }, - "invalidDate": "INVALID DATE", - "invalidTime": "INVALID TIME", + "invalidDate": "잘못된 날짜", + "invalidTime": "잘못된 시간", "shimmerClaiming": { "missingProfileManager": "Unable to find Shimmer claiming profile manager", "cannotInitialiseAccount": "Unable to initialize Shimmer claiming account", @@ -2110,7 +2110,7 @@ "http": "HTTP를 기반으로 노드를 이용하는 경우 트래픽이 암호화되지 않으며 보안 위험을 초래할 수 있습니다." }, "participation": { - "noFunds": "You do not have any IOTA." + "noFunds": "IOTA가 없습니다." } }, "tooltips": { @@ -2123,21 +2123,21 @@ "veryLow": "매우 낮음" }, "partiallyStakedFunds": { - "title": "New unstaked funds: {amount}", - "titleNoFunds": "New unstaked funds", - "preBody": "You have received tokens that are not staked.", - "body": "You need to manually stake these new funds to receive airdrop rewards for them." + "title": "새로운 스테이킹되지않은 자금: {amount}", + "titleNoFunds": "새로운 스테이킹되지않은 자금", + "preBody": "스테이킹되지 않은 토큰을 받았습니다.", + "body": "에어드랍 보상을 받으려면 이러한 새 자금을 수동으로 스테이킹해야 합니다." }, "stakingMinRewards": { - "title": "Below minimum reward value", - "titleMinBalance": "{amount} minimum balance required", - "bodyMinBalance": "This wallet does not have enough IOTA tokens to reach the minimum airdrop reward and cannot therefore be staked.", - "continue": "Please continue staking for another {duration}.", - "bodyBelowMin": "This wallet has not reached the minimum reward value for {airdrop} ({airdropRewardMin}).", - "bodyWillReachMin": "You must stake for another {duration} to reach the minimum.", - "bodyWillNotReachMin": "You will not reach the minimum reward value during the remaining staking period unless you add more IOTA.", - "bodyDidNotReachMin": "You did not stake enough IOTA to reach the minimum reward value for {airdrop} ({airdropRewardMin}).", - "bodyMinBalanceAirdrop": "This wallet does not have enough IOTA tokens to reach the minimum airdrop reward for {airdrop}." + "title": "최소 보상 가치 미만", + "titleMinBalance": "{amount} 최소 잔액 필요", + "bodyMinBalance": "이 지갑에는 최소 에어드랍 보상에 도달할 만큼 충분한 IOTA 토큰이 없으므로 스테이킹할 수 없습니다.", + "continue": "또 다른 {duration} 동안 스테이킹을 계속하세요.", + "bodyBelowMin": "이 지갑은 {airdrop}({airdropRewardMin}) 에 대한 최소 보상 값에 도달하지 않았습니다.", + "bodyWillReachMin": "최소 금액에 도달하려면 또 다른 {duration} 동안 스테이킹해야 합니다.", + "bodyWillNotReachMin": "IOTA를 더 추가하지 않으면 남은 스테이킹 기간 동안 최소 보상 값에 도달하지 못할 것입니다.", + "bodyDidNotReachMin": "{airdrop}({airdropRewardMin}) 의 최소 보상값에 도달할 만큼 충분한 IOTA를 스테이킹하지 않았습니다.", + "bodyMinBalanceAirdrop": "이 지갑에는 {airdrop} 에 대한 최소 에어드롭 보상에 도달할 만큼 충분한 IOTA 토큰이 없습니다." }, "optionalInput": "This optional data will be public on the explorer and viewable by everyone.", "transactionDetails": { @@ -2209,8 +2209,8 @@ }, "exports": { "transactionHistoryCsv": { - "messageId": "Message ID", - "internal": "Internal", + "messageId": "메시지 ID", + "internal": "내부", "rawValue": "Raw Value", "formattedValue": "Formatted Value", "date": "Date", diff --git a/packages/shared/locales/pl.json b/packages/shared/locales/pl.json index 008acccad65..bd6e688f3f0 100644 --- a/packages/shared/locales/pl.json +++ b/packages/shared/locales/pl.json @@ -66,7 +66,7 @@ }, "ledgerAccount": { "title": "Utwórz profil sprzętowy", - "description": "Ledger Nano S, Nano S Plus or Nano X required" + "description": "Wymagany Ledger Nano S, Nano S Plus lub Nano X" } }, "setupRecovered": { @@ -77,7 +77,7 @@ "importFile": "Użyj kopii zapasowej Stronghold", "importFileDescription": "Importuj plik kopii zapasowej Stronghold", "importLedger": "Użyj urządzenia Ledger", - "importLedgerDescription": "Restore from your Ledger Nano S, Nano S Plus or X device" + "importLedgerDescription": "Przywróć profil ze swojego urządzenia Ledger Nano S, Nano S Plus lub Nano X" }, "setupClaimed": { "title": "Odbierz nagrody Shimmer ze stakingu", @@ -925,7 +925,7 @@ "addressesFound": "Znalezione adresy", "totalAddressBalance": "Wszystkie środki", "searchAgainHint": "Czy Twoje saldo lub liczba portfeli są nieprawidłowe? Wykonaj ponowne szukanie, aż Twoje pełne saldo zostanie wyświetlone.", - "currentWallet": "Search only in the current wallet" + "currentWallet": "Szukaj tylko w bieżącym portfelu" }, "balanceOverview": { "title": "Przegląd salda", From cef043e61651af97665034f5ffee67155f8dee3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Esp=C3=ADn?= Date: Mon, 30 Oct 2023 10:19:07 +0100 Subject: [PATCH 11/45] chore: update FAQ link (#7460) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: Update FAQ link * Update faq-url.constant.ts --------- Co-authored-by: Begoña Álvarez de la Cruz --- .../shared/lib/contexts/settings/constants/faq-url.constant.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/shared/lib/contexts/settings/constants/faq-url.constant.ts b/packages/shared/lib/contexts/settings/constants/faq-url.constant.ts index 7837267a763..067a9460ae5 100644 --- a/packages/shared/lib/contexts/settings/constants/faq-url.constant.ts +++ b/packages/shared/lib/contexts/settings/constants/faq-url.constant.ts @@ -1 +1 @@ -export const FAQ_URL = 'https://wiki.iota.org/use/wallets/firefly/faq-and-troubleshooting' +export const FAQ_URL = 'https://firefly.iota.org/faq/' From f405fd2830c3dffe46a366974d375f55b4390f5f Mon Sep 17 00:00:00 2001 From: evavirseda Date: Mon, 30 Oct 2023 16:46:18 +0100 Subject: [PATCH 12/45] feat: do not suggest collecting if available funds < basic output min storage deposit or there arent enough outputs to consolidate (#7609) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: disable collect button if not available funds or outputs * fix: update function and rename variables * fix: update getMinRequiredStorageDeposit function * feat: add canCollect variable, fix reactivity and update getMinRequiredStorageDeposit fucntion * fix: improve canCollect condition * fix: reactivity --------- Co-authored-by: Begoña Alvarez --- .../views/dashboard/vesting/Vesting.svelte | 44 ++++++++++++++++--- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/packages/desktop/views/dashboard/vesting/Vesting.svelte b/packages/desktop/views/dashboard/vesting/Vesting.svelte index 8784f129177..c63bcdf71f8 100644 --- a/packages/desktop/views/dashboard/vesting/Vesting.svelte +++ b/packages/desktop/views/dashboard/vesting/Vesting.svelte @@ -17,7 +17,11 @@ import { getMarketAmountFromAssetValue } from '@core/market/utils' import { activeProfile } from '@core/profile' import { getBestTimeDuration } from '@core/utils' - import { formatTokenAmountBestMatch, selectedAccountAssets } from '@core/wallet' + import { + formatTokenAmountBestMatch, + getRequiredStorageDepositForMinimalBasicOutput, + selectedAccountAssets, + } from '@core/wallet' import { Button, FontWeight, @@ -31,12 +35,18 @@ MeatballMenuButton, TooltipIcon, } from '@ui' + import { onMount } from 'svelte' const DEFAULT_EMPTY_VALUE_STRING = '----' - $: hasTransactionInProgress = - $selectedAccount?.isTransferring || $selectedAccount.hasConsolidatingOutputsTransactionInProgress + let modal: Modal + let timeUntilNextPayout = DEFAULT_EMPTY_VALUE_STRING + let minRequiredStorageDeposit: number | null + let hasOutputsToConsolidate = false $: ({ baseCoin } = $selectedAccountAssets[$activeProfile?.network?.id]) + $: hasTransactionInProgress = + $selectedAccount?.isTransferring || $selectedAccount.hasConsolidatingOutputsTransactionInProgress + $: $selectedAccount, areOutputsReadyForConsolidation() $: vestingOverview = [ { title: localize('views.vesting.overview.unlocked'), @@ -56,10 +66,30 @@ : undefined, }, ] - - let modal: Modal - let timeUntilNextPayout = DEFAULT_EMPTY_VALUE_STRING $: $selectedAccountVestingPayouts, (timeUntilNextPayout = getTimeUntilNextPayout()) + $: canCollect = + $selectedAccountVestingUnclaimedFunds > 0 && + !hasTransactionInProgress && + minRequiredStorageDeposit !== null && + $selectedAccount?.balances?.baseCoin?.available > minRequiredStorageDeposit && + hasOutputsToConsolidate + + onMount(() => { + getMinRequiredStorageDeposit() + }) + + function areOutputsReadyForConsolidation(): void { + $selectedAccount + .prepareConsolidateOutputs({ force: false, outputThreshold: 2 }) + .then(() => (hasOutputsToConsolidate = true)) + .catch(() => (hasOutputsToConsolidate = false)) + } + + function getMinRequiredStorageDeposit() { + getRequiredStorageDepositForMinimalBasicOutput() + .then((deposit) => (minRequiredStorageDeposit = deposit)) + .catch(() => (minRequiredStorageDeposit = null)) + } function getFiatAmount(amount: number): string { return baseCoin ? formatCurrency(getMarketAmountFromAssetValue(amount, baseCoin)) : '' @@ -156,7 +186,7 @@ - - diff --git a/packages/desktop/components/popups/send/SendNftForm.svelte b/packages/desktop/components/popups/send/SendNftForm.svelte new file mode 100644 index 00000000000..54c9d757061 --- /dev/null +++ b/packages/desktop/components/popups/send/SendNftForm.svelte @@ -0,0 +1,178 @@ + + + + + + + + + + {#if !isLayer2Transfer} + + {/if} + + + {#if isTransferring} + + {/if} + + + + + diff --git a/packages/desktop/components/popups/send/SendTokenForm.svelte b/packages/desktop/components/popups/send/SendTokenForm.svelte new file mode 100644 index 00000000000..3899ad7c25a --- /dev/null +++ b/packages/desktop/components/popups/send/SendTokenForm.svelte @@ -0,0 +1,168 @@ + + + + + + + + + + {#if !isLayer2Transfer} + + {/if} + + + {#if isTransferring} + + {/if} + + + + + diff --git a/packages/shared/lib/core/wallet/stores/new-transaction-details.store.ts b/packages/shared/lib/core/wallet/stores/new-transaction-details.store.ts index 001e5eaeaf5..2cf2abe950c 100644 --- a/packages/shared/lib/core/wallet/stores/new-transaction-details.store.ts +++ b/packages/shared/lib/core/wallet/stores/new-transaction-details.store.ts @@ -18,10 +18,6 @@ export function resetNewTokenTransactionDetails(): void { }) } -export function resetNewTransactionDetails(): void { - newTransactionDetails.set(undefined) -} - export function updateNewTransactionDetails( payload: Partial & Pick ): void { diff --git a/packages/shared/lib/core/wallet/types/activities/base-activity.type.ts b/packages/shared/lib/core/wallet/types/activities/base-activity.type.ts index 4c466f290d1..99de5e6d85e 100644 --- a/packages/shared/lib/core/wallet/types/activities/base-activity.type.ts +++ b/packages/shared/lib/core/wallet/types/activities/base-activity.type.ts @@ -22,7 +22,7 @@ export type BaseActivity = { tag?: string asyncData: AsyncData destinationNetwork?: string - parsedLayer2Metadata?: Layer2Metadata + parsedLayer2Metadata?: Partial } export type AsyncData = { diff --git a/packages/shared/lib/core/wallet/utils/send/index.ts b/packages/shared/lib/core/wallet/utils/send/index.ts index 146b1329099..99ea0d519fe 100644 --- a/packages/shared/lib/core/wallet/utils/send/index.ts +++ b/packages/shared/lib/core/wallet/utils/send/index.ts @@ -1 +1,2 @@ +export * from './sendUtils' export * from './validateSendConfirmation' diff --git a/packages/shared/lib/core/wallet/utils/send/sendUtils.ts b/packages/shared/lib/core/wallet/utils/send/sendUtils.ts new file mode 100644 index 00000000000..30a735db839 --- /dev/null +++ b/packages/shared/lib/core/wallet/utils/send/sendUtils.ts @@ -0,0 +1,77 @@ +import { NewTransactionDetails, NftActivity, Subject, TransactionActivity, VestingActivity } from '@core/wallet/types' +import { NewTransactionType } from '@core/wallet/stores' +import { ActivityAction, ActivityDirection, ActivityType, InclusionState } from '@core/wallet/enums' +import { TimePeriod } from '@core/utils' +import { getAddressFromSubject } from '../getAddressFromSubject' +import { + ACCOUNTS_CONTRACT, + CONTRACT_FUNCTIONS, + ILayer2Parameters, + TARGET_CONTRACTS, + TRANSFER_ALLOWANCE, + getDestinationNetworkFromAddress, +} from '@core/layer-2' + +export enum SendFormTab { + SendToken = 'general.sendToken', + SendNft = 'general.sendNft', +} + +export enum OptionalInputType { + Metadata = 'metadata', + Tag = 'tag', +} + +export function getInitialExpirationDate( + expirationDate: Date, + storageDeposit: number, + giftStorageDeposit: boolean +): TimePeriod { + if (expirationDate) { + return TimePeriod.Custom + } else if (storageDeposit && !giftStorageDeposit) { + return TimePeriod.OneDay + } else { + return TimePeriod.None + } +} + +export function rebuildActivity( + transactionDetails: NewTransactionDetails, + recipient: Subject, + storageDeposit: number, + visibleSurplus: number, + isInternal: boolean, + layer2Parameters: ILayer2Parameters +): Partial { + return { + ...(transactionDetails as unknown as TransactionActivity | VestingActivity | NftActivity), + id: undefined, + outputId: undefined, + transactionId: undefined, + time: undefined, + asyncData: undefined, + assetId: + transactionDetails.type === NewTransactionType.TokenTransfer ? transactionDetails?.asset?.id : undefined, + storageDeposit, + subject: recipient, + isInternal, + containsValue: true, + isAssetHidden: false, + giftedStorageDeposit: 0, + surplus: visibleSurplus, + type: ActivityType.Basic, + direction: ActivityDirection.Outgoing, + inclusionState: InclusionState.Pending, + action: ActivityAction.Send, + destinationNetwork: getDestinationNetworkFromAddress(layer2Parameters?.networkAddress), + ...(layer2Parameters?.networkAddress && { + parsedLayer2Metadata: { + ethereumAddress: getAddressFromSubject(recipient), + targetContract: TARGET_CONTRACTS[ACCOUNTS_CONTRACT], + contractFunction: CONTRACT_FUNCTIONS[TRANSFER_ALLOWANCE], + gasBudget: (layer2Parameters?.gasBudget ?? 0).toString(), + }, + }), + } +} From f8c3171fccff56c2c2f9e93217d3a1b1c981edd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bego=C3=B1a=20=C3=81lvarez=20de=20la=20Cruz?= Date: Tue, 14 Nov 2023 09:58:44 +0100 Subject: [PATCH 21/45] fix: wrong migration chrysalis locale (#7712) --- packages/shared/locales/en.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/shared/locales/en.json b/packages/shared/locales/en.json index 772f587a656..6175f325568 100644 --- a/packages/shared/locales/en.json +++ b/packages/shared/locales/en.json @@ -1234,14 +1234,14 @@ "save": "Save", "importSeed": "Import an existing seed", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", From cb046576211f0d99c1222e7ede9b0eaee17c0a0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bego=C3=B1a=20=C3=81lvarez=20de=20la=20Cruz?= Date: Tue, 14 Nov 2023 11:04:15 +0100 Subject: [PATCH 22/45] chore: bump @iota/sdk to v1.1.3 (#7713) --- packages/shared/package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/shared/package.json b/packages/shared/package.json index 925ef85b935..00e57704c69 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -11,7 +11,7 @@ "@iota/transaction-converter": "^1.0.0-beta.30", "@iota/unit-converter": "^1.0.0-beta.30", "@iota/util.js": "^2.0.0-rc.1", - "@iota/sdk": "1.1.1", + "@iota/sdk": "1.1.3", "@sveltejs/svelte-virtual-list": "^3.0.1", "big-integer": "^1.6.51", "big.js": "^6.0.3", diff --git a/yarn.lock b/yarn.lock index ea54bb379a2..505183e3e1d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -767,10 +767,10 @@ resolved "https://registry.yarnpkg.com/@iota/pad/-/pad-1.0.0-beta.30.tgz#de19728f8f1b09c20e2365d0da34945006760082" integrity sha512-fnhPMPul18WunLq9Ni4rxzBFmhna6eaG8WroDg6GdQqSK/eN62uFHV8tpspJHXuCqwgCUVp6NpuUna7+B2OV9g== -"@iota/sdk@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@iota/sdk/-/sdk-1.1.1.tgz#0b6ea359a38ceea42a8e788cebe8728e9ee179bb" - integrity sha512-63WcGZGwlIwZpIhk+F+ozxm9miRy+eDmCoyIS/8actUNlH8zG5DXmjtWqxZx89se9UEAZyr4eZH7JJlwfkieqQ== +"@iota/sdk@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@iota/sdk/-/sdk-1.1.3.tgz#ab54cf72d9fa46321ae635cdd7fb2e085e888d95" + integrity sha512-Igy1Pl4mLPIGJddepcJ0i3xF/6Yup8pMl0eSTknN1A97qhsNtvmV1iDDhSxAshmJYyBQ8LEzd0DrMrq5tioYyg== dependencies: "@types/node" "^18.15.12" cargo-cp-artifact "^0.1.6" From 549ef60eaadd93389b11c866e5e17171f213db1f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Nov 2023 18:33:05 +0100 Subject: [PATCH 23/45] chore(deps-dev): bump postcss from 8.4.25 to 8.4.31 (#7560) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [postcss](https://github.com/postcss/postcss) from 8.4.25 to 8.4.31. - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.4.25...8.4.31) --- updated-dependencies: - dependency-name: postcss dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Begoña Álvarez de la Cruz --- packages/shared/package.json | 2 +- yarn.lock | 22 +++++++++++++++------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/packages/shared/package.json b/packages/shared/package.json index 00e57704c69..1ec9bab1617 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -38,7 +38,7 @@ "autoprefixer": "^10.4.16", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", - "postcss": "^8.4.23", + "postcss": "^8.4.31", "postcss-cli": "^10.1.0", "prettier": "3.0.3", "prettier-plugin-svelte": "^3.0.3", diff --git a/yarn.lock b/yarn.lock index 505183e3e1d..b2758dd7cb0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1695,6 +1695,13 @@ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== +"@types/node-forge@^1.3.0": + version "1.3.8" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.8.tgz#044ad98354ff309a031a55a40ad122f3be1ac2bb" + integrity sha512-vGXshY9vim9CJjrpcS5raqSjEfKlJcWy2HNdgUasR66fAnVEYarrf1ULV4nfvpC1nZq/moA9qyqBcu83x+Jlrg== + dependencies: + "@types/node" "*" + "@types/node@*": version "20.4.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.0.tgz#01d637d1891e419bc85763b46f42809cd2d5addb" @@ -6866,10 +6873,10 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.4.21, postcss@^8.4.23: - version "8.4.25" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.25.tgz#4a133f5e379eda7f61e906c3b1aaa9b81292726f" - integrity sha512-7taJ/8t2av0Z+sQEvNzCkpDynl0tX3uJMCODi6nT3PfASC7dYCWV9aQ+uiCf+KBD4SEFcu+GvJdGdwzQ6OSjCw== +postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.31: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: nanoid "^3.3.6" picocolors "^1.0.0" @@ -7397,10 +7404,11 @@ select-hose@^2.0.0: integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== selfsigned@^2.0.1, selfsigned@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" - integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== + version "2.4.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== dependencies: + "@types/node-forge" "^1.3.0" node-forge "^1" semver-compare@^1.0.0: From 1af41739b20a7a8aebb53d7371bb16fdf5b275f0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 15 Nov 2023 18:45:20 +0100 Subject: [PATCH 24/45] New Crowdin translations by Github Action (#7684) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Crowdin Bot Co-authored-by: Begoña Álvarez de la Cruz --- packages/shared/locales/af.json | 17 +- packages/shared/locales/ar.json | 17 +- packages/shared/locales/bg.json | 17 +- packages/shared/locales/ca.json | 17 +- packages/shared/locales/cs.json | 17 +- packages/shared/locales/da.json | 17 +- packages/shared/locales/de.json | 17 +- packages/shared/locales/el.json | 17 +- packages/shared/locales/eo.json | 17 +- packages/shared/locales/es-ES.json | 17 +- packages/shared/locales/es-LA.json | 17 +- packages/shared/locales/et.json | 17 +- packages/shared/locales/fa.json | 17 +- packages/shared/locales/fi.json | 17 +- packages/shared/locales/fr.json | 17 +- packages/shared/locales/he.json | 17 +- packages/shared/locales/hi.json | 17 +- packages/shared/locales/hr.json | 17 +- packages/shared/locales/hu.json | 17 +- packages/shared/locales/id.json | 17 +- packages/shared/locales/it.json | 17 +- packages/shared/locales/ja.json | 17 +- packages/shared/locales/ko.json | 269 +++++++++++++++-------------- packages/shared/locales/ku.json | 17 +- packages/shared/locales/lv.json | 17 +- packages/shared/locales/mk.json | 17 +- packages/shared/locales/nl.json | 17 +- packages/shared/locales/no.json | 17 +- packages/shared/locales/pl.json | 21 +-- packages/shared/locales/pt-BR.json | 17 +- packages/shared/locales/pt-PT.json | 17 +- packages/shared/locales/ro.json | 17 +- packages/shared/locales/ru.json | 17 +- packages/shared/locales/si.json | 17 +- packages/shared/locales/sk.json | 17 +- packages/shared/locales/sl.json | 17 +- packages/shared/locales/sq.json | 17 +- packages/shared/locales/sr.json | 17 +- packages/shared/locales/sv.json | 17 +- packages/shared/locales/tr.json | 17 +- packages/shared/locales/uk.json | 17 +- packages/shared/locales/ur.json | 17 +- packages/shared/locales/vi.json | 17 +- packages/shared/locales/zh-CN.json | 17 +- packages/shared/locales/zh-TW.json | 17 +- 45 files changed, 533 insertions(+), 488 deletions(-) diff --git a/packages/shared/locales/af.json b/packages/shared/locales/af.json index c81b0a8e04c..25a16ac3aff 100644 --- a/packages/shared/locales/af.json +++ b/packages/shared/locales/af.json @@ -812,12 +812,6 @@ "errorBody2": "Jy het tans {balance} op hierdie beursie oor. Skuif hierdie fondse na 'n ander beursie en probeer weer.", "errorBody3": "Jy kan nie hierdie beursie versteek nie, jy moet ten minste een hê." }, - "addressHistory": { - "title": "{name} adresgeskiedenis", - "currentBalance": "Balans: {balance}", - "internal": "Interne adres", - "external": "Deposito adres" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Stoor", "importSeed": "Voer 'n bestaande seed in", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Besoek FAQ", "viewDownloads": "View downloads", "viewStatus": "Sien status", + "viewAddressHistory": "Bekyk adresgeskiedenis", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Wys versteekte beursie", diff --git a/packages/shared/locales/ar.json b/packages/shared/locales/ar.json index 9b3884c6217..3bb3320867f 100644 --- a/packages/shared/locales/ar.json +++ b/packages/shared/locales/ar.json @@ -812,12 +812,6 @@ "errorBody2": "لديك حاليا {balance} متبقي على هذه المحفظة. الرجاء نقل هذه الأموال إلى محفظة مختلفة وحاول مرة أخرى.", "errorBody3": "لا يمكنك إخفاء هذه المحفظة، يجب أن يكون لديك واحدة على الأقل." }, - "addressHistory": { - "title": "عرض سجل عمليات العنوان {name}", - "currentBalance": "الرصيد {balance}", - "internal": "حساب فرعي داخلي", - "external": "حساب الايداع" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "حفظ", "importSeed": "استيراد رموز سرية موجودة", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "زيارة الأسئلة المكررة", "viewDownloads": "View downloads", "viewStatus": "عرض الحالة", + "viewAddressHistory": "عرض سجل العناوين", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "إظهار الملفات المخفية", diff --git a/packages/shared/locales/bg.json b/packages/shared/locales/bg.json index 535abee8647..b6be59e4a1c 100644 --- a/packages/shared/locales/bg.json +++ b/packages/shared/locales/bg.json @@ -812,12 +812,6 @@ "errorBody2": "В момента имате {balance} оставащи в този портфейл. Моля преместете средствата в друг портфейл и опитайте отново.", "errorBody3": "Не можете да изтриете този портфейл, трябва да имате минимум един." }, - "addressHistory": { - "title": "{name} история на адрес", - "currentBalance": "Баланс: {balance}", - "internal": "Вътрешни адреси", - "external": "Депозит адрес" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Запис", "importSeed": "Импортиране на съществуващ seed", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Посети ЧЗВ-FAQ", "viewDownloads": "View downloads", "viewStatus": "Покажи статус", + "viewAddressHistory": "Покажи история на адресите", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Покажи скрити портфейли", diff --git a/packages/shared/locales/ca.json b/packages/shared/locales/ca.json index 929a51a63c7..5a7f0100e62 100644 --- a/packages/shared/locales/ca.json +++ b/packages/shared/locales/ca.json @@ -812,12 +812,6 @@ "errorBody2": "Actualment, teniu un balanç {balance} en aquest moneder. Moveu aquests fons a un moneder diferent i torneu-ho a provar.", "errorBody3": "No podeu amagar aquest moneder, n'heu de tenir un, com a mínim." }, - "addressHistory": { - "title": "Historial d'adreces de {name}", - "currentBalance": "Saldo {balance}", - "internal": "Adreça interna", - "external": "Adreça de dipòsit" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Historial de l'adreça", + "disclaimer": "Llista d'adreces amb fons o reconegudes per aquest perfil", + "indexAndType": "{internal, select, true {Adreça interna} other {Adreça de dipòsit}}{index}", + "internal": "Interna" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Guardar", "importSeed": "Importeu una llavor existent", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Visita les FAQ", "viewDownloads": "View downloads", "viewStatus": "Mostra l'estat", + "viewAddressHistory": "Veure l'historial d'adreces", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verifiqueu l'adreça de destí", "showHiddenAccounts": "Mostra els moneders amagats", diff --git a/packages/shared/locales/cs.json b/packages/shared/locales/cs.json index 2082d40681f..7c47ef10021 100644 --- a/packages/shared/locales/cs.json +++ b/packages/shared/locales/cs.json @@ -812,12 +812,6 @@ "errorBody2": "V současné době zbývá {balance} na tomto účtu. Přesuňte tyto prostředky na jiný účet a zkuste to znovu.", "errorBody3": "Nemůžete skrýt tuto peněženku, musíte mít alespoň jednu." }, - "addressHistory": { - "title": "{name} historie adres", - "currentBalance": "Zůstatek: {balance}", - "internal": "Interní adresa", - "external": "Adresa vkladu" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Uložit", "importSeed": "Importovat existující seed", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Navštivte FAQ", "viewDownloads": "View downloads", "viewStatus": "Zobrazit status", + "viewAddressHistory": "Zobrazit historii adresy", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Zobrazit skryté peněženky", diff --git a/packages/shared/locales/da.json b/packages/shared/locales/da.json index 60a98ba1492..b7e7f96e76c 100644 --- a/packages/shared/locales/da.json +++ b/packages/shared/locales/da.json @@ -812,12 +812,6 @@ "errorBody2": "Du har i øjeblikket {balance} tilbage på denne wallet. Flyt disse midler til en anden wallet og prøv igen.", "errorBody3": "Du kan ikke skjule denne wallet, du skal have mindst en." }, - "addressHistory": { - "title": "{name} adresse historik", - "currentBalance": "Saldo: {balance}", - "internal": "Intern adresse", - "external": "Deponeringsadresse" - }, "excludeNode": { "title": "Udeluk node", "body": "Sikker på, at {url} skal udelukkes fra den tilgængelige nodepulje?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Adressehistorik", + "disclaimer": "Liste over adresser med midler eller kendt af denne profil", + "indexAndType": "{internal, select, true {Intern adresse} other {Indbetalingsadresse}} {index}", + "internal": "Intern" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Gem", "importSeed": "Importer et eksisterende seed", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Gendan IOTA-profil", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Gendan en eksisterende IOTA-profil", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Besøg FAQ", "viewDownloads": "Se downloads", "viewStatus": "Vis Status", + "viewAddressHistory": "Se historik for addresse", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Bekræft indbetalingsadresse", "showHiddenAccounts": "Vis skjulte wallets", diff --git a/packages/shared/locales/de.json b/packages/shared/locales/de.json index 19324146086..b5aa772d435 100644 --- a/packages/shared/locales/de.json +++ b/packages/shared/locales/de.json @@ -812,12 +812,6 @@ "errorBody2": "Du hast derzeit {balance} auf dieser Wallet. Bitte verschiebe dein Guthaben auf eine andere Wallet und versuche es erneut.", "errorBody3": "Du kannst diese Wallet nicht ausblenden. Es musst mindestens eine vorhanden sein." }, - "addressHistory": { - "title": "{name} Adressverlauf", - "currentBalance": "Guthaben: {balance}", - "internal": "Interne Adresse", - "external": "Einzahlungsadresse" - }, "excludeNode": { "title": "Node ausschließen", "body": "Bist du sicher, dass du {url} aus dem verfügbaren Nodepool ausschließen möchtest?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Anmeldung erforderlich", "body": "Diese Node erfordert zusätzliche Authentifizierung. Bitte gib die entsprechenden Informationen ein." + }, + "addressHistory": { + "title": "Adressverlauf", + "disclaimer": "Liste der Adressen mit Guthaben bzw. die diesem Profil bekannt sind", + "indexAndType": "{internal, select, true {Interne Adresse} other {Einzahlungsadresse}} {index}", + "internal": "Intern" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Speichern", "importSeed": "Importiere einen vorhandenen Seed", "restoreWallet": { - "iota": "Wallet migrieren oder wiederherstellen", + "iota": "IOTA-Profil wiederherstellen", "iotaAlphanet": "IOTA Alphanet Profil wiederherstellen", "shimmer": "Shimmer Profil wiederherstellen", "testnet": "Testnet Profil wiederherstellen", "custom": "Benutzerdefiniertes Netzwerkprofil wiederherstellen" }, "restoreWalletDescription": { - "iota": "Zu Chrysalis migrieren oder vorhandene Wallet wiederherstellen", + "iota": "Bestehendes IOTA-Profil wiederherstellen", "iotaAlphanet": "Ein bestehendes IOTA Alphanet Profil wiederherstellen", "shimmer": "Ein bestehendes Shimmer Profil wiederherstellen", "testnet": "Ein existierendes Testnet Profil wiederherstellen", @@ -1338,6 +1338,7 @@ "visitFaq": "Gehe zu den FAQs", "viewDownloads": "Downloads anzeigen", "viewStatus": "Status ansehen", + "viewAddressHistory": "Adressverlauf anzeigen", "viewBalanceBreakdown": "Saldenaufteilung anzeigen", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Ausgeblendete Wallets anzeigen", diff --git a/packages/shared/locales/el.json b/packages/shared/locales/el.json index db49750e64b..32ff50c1f4c 100644 --- a/packages/shared/locales/el.json +++ b/packages/shared/locales/el.json @@ -812,12 +812,6 @@ "errorBody2": "Αυτή τη στιγμή απομένει {balance} σε αυτό το πορτοφόλι. Μετακινήστε αυτά τα κεφάλαια σε ένα διαφορετικό πορτοφόλι και προσπαθήστε ξανά.", "errorBody3": "Δεν μπορείτε να διαγράψετε αυτό το πορτοφόλι, πρέπει να έχετε τουλάχιστον ένα." }, - "addressHistory": { - "title": "Ιστορικό διευθύνσεων {name}", - "currentBalance": "Υπόλοιπο: {balance}", - "internal": "Εσωτερική Διεύθυνση", - "external": "Διεύθυνση Κατάθεσης" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Αποθήκευση", "importSeed": "Εισαγωγή υφιστάμενου seed", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Επισκεφθείτε Τις Συχνές Ερωτήσεις", "viewDownloads": "View downloads", "viewStatus": "Προβολή κατάστασης", + "viewAddressHistory": "Προβολή ιστορικού διευθύνσεων", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Εμφάνιση κρυφών πορτοφολιών", diff --git a/packages/shared/locales/eo.json b/packages/shared/locales/eo.json index 0477a084a20..0d492ecdfab 100644 --- a/packages/shared/locales/eo.json +++ b/packages/shared/locales/eo.json @@ -812,12 +812,6 @@ "errorBody2": "Vi nuntempe havas {balance} restantan sur ĉi tiu monujo. Bonvolu movigi ĉi tiujn bonhavojn al alia monujo kaj reprovi.", "errorBody3": "Vi ne povas forigi ĉi tiun monujon, vi devas havi almenaŭ unu." }, - "addressHistory": { - "title": "{name} adreshistorio", - "currentBalance": "Bonhavojn: {balance}", - "internal": "Interna Adreso", - "external": "Depona Adreso" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Konservi", "importSeed": "Importi ekzistantan semon", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Vizitu Demandojn", "viewDownloads": "View downloads", "viewStatus": "Vidi statuso", + "viewAddressHistory": "Vidi adresan historion", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Montri kaŝitajn monujojn", diff --git a/packages/shared/locales/es-ES.json b/packages/shared/locales/es-ES.json index 3a544dd9e6f..a79531fba10 100644 --- a/packages/shared/locales/es-ES.json +++ b/packages/shared/locales/es-ES.json @@ -812,12 +812,6 @@ "errorBody2": "Actualmente tienes {balance} restantes en esta cartera. Por favor mueve estos fondos a una cartera distinta y prueba de nuevo.", "errorBody3": "No puedes ocultar esta cartera, debes tener al menos una." }, - "addressHistory": { - "title": "{name} historial de direcciones", - "currentBalance": "Saldo: {balance}", - "internal": "Dirección interna", - "external": "Dirección de depósito" - }, "excludeNode": { "title": "Excluir nodo", "body": "¿Está seguro que desea excluir a {url} del grupo de nodos disponibles?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Autenticación requerida", "body": "Este nodo requiere autenticación adicional. Por favor, rellena la información apropiada." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Guardar", "importSeed": "Importar una semilla existente", "restoreWallet": { - "iota": "Migrar o restaurar una cartera", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restaurar perfil de IOTA Alphanet", "shimmer": "Restaurar perfil de Shimmer", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrar a Chrysalis o restaurar una cartera existente", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restaurar perfil de IOTA Alphanet", "shimmer": "Restaurar un perfil de Shimmer existente", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Ver las preguntas frecuentes resueltas", "viewDownloads": "View downloads", "viewStatus": "Ver estado", + "viewAddressHistory": "Ver historial de direcciones", "viewBalanceBreakdown": "Ver desglose de saldo", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Mostrar carteras ocultas", diff --git a/packages/shared/locales/es-LA.json b/packages/shared/locales/es-LA.json index 964ff58732d..2cab9ef6602 100644 --- a/packages/shared/locales/es-LA.json +++ b/packages/shared/locales/es-LA.json @@ -812,12 +812,6 @@ "errorBody2": "Actualmente tienes {balance} restantes en esta billetera. Por favor mueve estos fondos a una billetera distinta y prueba de nuevo.", "errorBody3": "No puedes ocultar esta billetera, debes tener al menos una." }, - "addressHistory": { - "title": "{name} historial de direcciones", - "currentBalance": "Saldo: {balance}", - "internal": "Dirección interna", - "external": "Dirección de depósito" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Guardar", "importSeed": "Importar una semilla existente", "restoreWallet": { - "iota": "Migrar o restaurar una billetera", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restaurar perfil de Shimmer", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrar a Chrysalis o restaurar una billetera existente", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restaurar un perfil de Shimmer existente", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Ver las preguntas frecuentes", "viewDownloads": "View downloads", "viewStatus": "Ver estado", + "viewAddressHistory": "Ver historial de direcciones", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Mostrar billeteras ocultas", diff --git a/packages/shared/locales/et.json b/packages/shared/locales/et.json index 11aa393f41f..c1c4d313ac5 100644 --- a/packages/shared/locales/et.json +++ b/packages/shared/locales/et.json @@ -812,12 +812,6 @@ "errorBody2": "You currently have {balance} remaining on this wallet. Please move these funds to a different wallet and try again.", "errorBody3": "You cannot hide this wallet, you must have at least one." }, - "addressHistory": { - "title": "{name} addressi ajalugu", - "currentBalance": "Balance: {balance}", - "internal": "Internal Address", - "external": "Deposit Address" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Salvesta", "importSeed": "Import an existing seed", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Külasta KKK", "viewDownloads": "View downloads", "viewStatus": "View status", + "viewAddressHistory": "Vaata aadressi ajalugu", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Näita peidetud rahakotte", diff --git a/packages/shared/locales/fa.json b/packages/shared/locales/fa.json index f562a5f2512..b95d99f4058 100644 --- a/packages/shared/locales/fa.json +++ b/packages/shared/locales/fa.json @@ -812,12 +812,6 @@ "errorBody2": "در حال حاضر مانده حساب شما {balance} میباشد. لطفا این مبلغ را به کیف پول دیگری انتقال داده و دوباره امتحان کنید.", "errorBody3": "شما نمیتوانید این حساب را حذف کنید، باید حداقل یک کیف پول داشته باشید." }, - "addressHistory": { - "title": "تاریخچه آدرس {name}", - "currentBalance": "موجودی {balance}", - "internal": "آدرس های درونی", - "external": "آدرس دریافت" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "ذخیره", "importSeed": "وارد کردن سید موجود", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "بخش سوالات متداول را ببینید", "viewDownloads": "View downloads", "viewStatus": "نشان دادن موقعیت", + "viewAddressHistory": "نمایش سوابق آدرس", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "نمایش کیف پول های مخفی", diff --git a/packages/shared/locales/fi.json b/packages/shared/locales/fi.json index 82b8fd4348a..92f5fb81463 100644 --- a/packages/shared/locales/fi.json +++ b/packages/shared/locales/fi.json @@ -812,12 +812,6 @@ "errorBody2": "Sinulla on tällä hetkellä {balance} jäljellä tässä lompakossa. Ole hyvä ja siirrä nämä varat toiseen lompakkoon ja yritä uudelleen.", "errorBody3": "Et voi piilottaa tätä lompakkoa, sinulla on oltava vähintään yksi." }, - "addressHistory": { - "title": "Lompakon {name} osoitehistoria", - "currentBalance": "Saldo: {balance}", - "internal": "Sisäinen osoite", - "external": "Talletusosoite" - }, "excludeNode": { "title": "Hylkää solmu", "body": "Oletko varma, että haluat sulkea osoitteen {url} pois käytettävissä olevien solmujen joukosta?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Tallenna", "importSeed": "Tuo olemassaoleva seed-merkkijono", "restoreWallet": { - "iota": "Siirrä tai palauta lompakko", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Palauta Shimmer-profiili", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Siirry Chrysalis-verkkoon tai palauta olemassaoleva lompakko", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Palauta olemassaoleva Shimmer-profiili", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Katso usein kysytyt kysymykset", "viewDownloads": "View downloads", "viewStatus": "Näytä tila", + "viewAddressHistory": "Näytä osoitehistoria", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Näytä piilotetut lompakot", diff --git a/packages/shared/locales/fr.json b/packages/shared/locales/fr.json index 0a92c71b309..3cdc581be19 100644 --- a/packages/shared/locales/fr.json +++ b/packages/shared/locales/fr.json @@ -812,12 +812,6 @@ "errorBody2": "Il vous reste actuellement {balance} sur ce portefeuille. Veuillez déplacer ces fonds vers un portefeuille différent et réessayez.", "errorBody3": "Vous ne pouvez pas cacher ce portefeuille, vous devez en posséder au moins un." }, - "addressHistory": { - "title": "Historique de l'adresse {name}", - "currentBalance": "Solde: {balance}", - "internal": "Adresse Interne", - "external": "Adresse de Dépôt" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Historique de l'adresse", + "disclaimer": "Liste des adresses avec des fonds ou connues par ce profil", + "indexAndType": "{internal, select, true {Adresse interne} other {Adresse de dépôt}} {index}", + "internal": "Interne" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Sauvegarder", "importSeed": "Importer une seed existante", "restoreWallet": { - "iota": "Transférer ou restaurer un portefeuille", + "iota": "Restaurer le profil IOTA", "iotaAlphanet": "Restaurer le profil IOTA Alphanet", "shimmer": "Récupérer le profil Shimmer", "testnet": "Restaurer le profil Testnet", "custom": "Restaurer le profil réseau personnalisé" }, "restoreWalletDescription": { - "iota": "Migrer vers Chrysalis ou restaurer un portefeuille existant", + "iota": "Restaurer un profil IOTA existant", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restaurer un profil Shimmer existant", "testnet": "Restaurer un profil Testnet existant", @@ -1338,6 +1338,7 @@ "visitFaq": "Visitez la FAQ", "viewDownloads": "Afficher les téléchargements", "viewStatus": "Voir le statut", + "viewAddressHistory": "Voir l'historique des adresses", "viewBalanceBreakdown": "Voir la répartition du solde", "verifyDepositAddress": "Vérifier l'adresse du dépôt", "showHiddenAccounts": "Afficher les portefeuilles cachés", diff --git a/packages/shared/locales/he.json b/packages/shared/locales/he.json index 828a305eee6..af056879301 100644 --- a/packages/shared/locales/he.json +++ b/packages/shared/locales/he.json @@ -812,12 +812,6 @@ "errorBody2": "You currently have {balance} remaining on this wallet. Please move these funds to a different wallet and try again.", "errorBody3": "You cannot hide this wallet, you must have at least one." }, - "addressHistory": { - "title": "{name} address history", - "currentBalance": "יתרה: {balance}", - "internal": "Internal Address", - "external": "כתובת לתקבול" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "שמור", "importSeed": "Import an existing seed", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "בקר בשאלות נפוצות", "viewDownloads": "View downloads", "viewStatus": "הצג סטטוס", + "viewAddressHistory": "צפה בהיסטוריית הארנק", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "הצג ארנקים מוסתרים", diff --git a/packages/shared/locales/hi.json b/packages/shared/locales/hi.json index 088291ab337..81b34ddc8ab 100644 --- a/packages/shared/locales/hi.json +++ b/packages/shared/locales/hi.json @@ -812,12 +812,6 @@ "errorBody2": "वर्तमान में आपके पास इस खाते पर {balance} बैलेंस है। कृपया इन निधियों को एक अलग खाते में ले जाएँ और पुनः प्रयास करें", "errorBody3": "आप इस वॉलेट को नहीं हटा सकते, आपके पास कम से कम एक होना चाहिए।" }, - "addressHistory": { - "title": "{name} खाता पता इतिहास", - "currentBalance": "Balance: {balance}", - "internal": "Internal Address", - "external": "Deposit Address" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "सेव करें", "importSeed": "एक मौजूदा सीड आयात करें", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "अक्सर पूछे FAQ", "viewDownloads": "View downloads", "viewStatus": "स्थिति देखें", + "viewAddressHistory": "एड्रेस का इतिहास देखें", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "छुपे हुए वॉलेट दिखाएँ", diff --git a/packages/shared/locales/hr.json b/packages/shared/locales/hr.json index e1631773686..990c2ee1d41 100644 --- a/packages/shared/locales/hr.json +++ b/packages/shared/locales/hr.json @@ -812,12 +812,6 @@ "errorBody2": "Trenutno u ovom novčaniku imate {balance}. Molimo prenesite sredstva u neki drugi novčanik i pokušajte ponovno.", "errorBody3": "Ne možete obrisati ovaj novčanik. Mora postojati barem jedan." }, - "addressHistory": { - "title": "{name} povijest adresa", - "currentBalance": "Stanje: {balance}", - "internal": "Interna adresa", - "external": "Adresa za depozit" - }, "excludeNode": { "title": "Izostavi node", "body": "Jeste li sigurni da želite izostaviti {url} iz popisa dostupnih nodeova?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Spremi", "importSeed": "Uvezite postojeći Seed", "restoreWallet": { - "iota": "Migriraj ili obnovi novčanik", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Obnovi Shimmer profil", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migriraj na Chrysalis mrežu ili oporavi postojeći novčanik", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Oporavi postojeći Shimmer profil", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Posjeti često postavljana pitanja", "viewDownloads": "View downloads", "viewStatus": "Vidi status", + "viewAddressHistory": "Povijest adresa", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Prikaži skrivene novčanike", diff --git a/packages/shared/locales/hu.json b/packages/shared/locales/hu.json index 7d1ca829208..a8ce1473514 100644 --- a/packages/shared/locales/hu.json +++ b/packages/shared/locales/hu.json @@ -812,12 +812,6 @@ "errorBody2": "{balance} összeg van a tárcájában. Kérjük, küldje át ezt az összeget egy másik tárcájába, majd próbálja újra.", "errorBody3": "Nem tudja elrejteni ezt a tárcát, legalább eggyel rendelkeznie kell." }, - "addressHistory": { - "title": "{name} korábban használt címei", - "currentBalance": "Egyenleg: {balance}", - "internal": "Tárcán belüli cím", - "external": "Letéti cím" - }, "excludeNode": { "title": "Csomópont mellőzése", "body": "Biztosan szeretné a(z) {url} URL-t mellőzni az elérhető csomópontok listájában?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Hitelesítés szükséges", "body": "Ez a csomópont további hitelesítést igényel. Kérjük, adja meg a megfelelő adatokat!" + }, + "addressHistory": { + "title": "Címek előzményei", + "disclaimer": "A pénzeszközökkel rendelkező vagy a jelen profil által ismert címek listája", + "indexAndType": "{internal, select, true {Tárcán belüli cím} other {Letéti cím}} {index}", + "internal": "Tárcán belüli" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Mentés", "importSeed": "Meglévő seed importálása", "restoreWallet": { - "iota": "Tárca átköltöztetése vagy helyreállítása", + "iota": "IOTA-profil helyreállítása", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Shimmer-profil helyreállítása", "testnet": "Teszt hálózati profil helyreállítása", "custom": "Egyéni hálózati profil helyreállítása" }, "restoreWalletDescription": { - "iota": "Költöztetés a Chrysalis-hálózatra vagy egy meglévő tárca helyreállítása", + "iota": "Meglévő IOTA-profil helyreállítása", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Egy meglévő Shimmer-profil helyreállítása", "testnet": "Meglévő teszt hálózati profil helyreállítása", @@ -1338,6 +1338,7 @@ "visitFaq": "GYIK megtekintése", "viewDownloads": "Letöltések megtekintése", "viewStatus": "Állapot megtekintése", + "viewAddressHistory": "Címek előzményeinek megjelenítése", "viewBalanceBreakdown": "Egyenleg részletezésének megtekintése", "verifyDepositAddress": "Letéti cím megerősítése", "showHiddenAccounts": "Rejtett tárcák megjelenítése", diff --git a/packages/shared/locales/id.json b/packages/shared/locales/id.json index eeca24c3696..186f4fc1f63 100644 --- a/packages/shared/locales/id.json +++ b/packages/shared/locales/id.json @@ -812,12 +812,6 @@ "errorBody2": "Saat ini Anda memiliki sisa {balance} di akun ini. Harap pindahkan dana ini ke akun lain dan coba lagi.", "errorBody3": "Anda tidak dapat menyembunyikan akun ini, Anda harus memiliki setidaknya satu." }, - "addressHistory": { - "title": "riwayat alamat {name}", - "currentBalance": "Saldo: ${balance}", - "internal": "Alamat Intern", - "external": "Alamat deposit" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Simpan", "importSeed": "Impor seed lama", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Kunjungi FAQ", "viewDownloads": "View downloads", "viewStatus": "Lihat status", + "viewAddressHistory": "Lihat riwayat alamat", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Tampilkan dompet/akun tersembunyi", diff --git a/packages/shared/locales/it.json b/packages/shared/locales/it.json index b37cd3d91c7..c797edaced4 100644 --- a/packages/shared/locales/it.json +++ b/packages/shared/locales/it.json @@ -812,12 +812,6 @@ "errorBody2": "Al momento hai {balance} rimanenti in questo wallet. Per favore sposta questi fondi in un wallet diverso e riprova.", "errorBody3": "Non puoi nascondere questo wallet, è necessario averne almeno uno." }, - "addressHistory": { - "title": "cronologia degli indirizzi di {name}", - "currentBalance": "Saldo: {balance}", - "internal": "Indirizzi interni", - "external": "Indirizzo di deposito" - }, "excludeNode": { "title": "Escludi il nodo", "body": "Sei sicuro di voler escludere {url} dal pool di nodi disponibile?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Autenticazione richiesta", "body": "Questo nodo richiede ulteriore autenticazione. Si prega di compilare le informazioni appropriate." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Salva", "importSeed": "Importa un seed esistente", "restoreWallet": { - "iota": "Migra o ripristina un wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Ripristina profilo Shimmer", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrare a Chrysalis o ripristinare un portafoglio esistente", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Ripristina un profilo Shimmer esistente", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Visita le Domande Frequenti", "viewDownloads": "View downloads", "viewStatus": "Visualizza stato", + "viewAddressHistory": "Visualizza cronologia indirizzi", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Mostra wallet nascosti", diff --git a/packages/shared/locales/ja.json b/packages/shared/locales/ja.json index 244c789119e..a6e4346a70d 100644 --- a/packages/shared/locales/ja.json +++ b/packages/shared/locales/ja.json @@ -812,12 +812,6 @@ "errorBody2": "現在、このウォレットに残金 {balance} があります。これらの資金を別のウォレットに移動して、もう一度やり直してください。", "errorBody3": "このウォレットを非表示にすることはできません。少なくとも 1 つのウォレットが必要です。" }, - "addressHistory": { - "title": "{name} アドレス履歴", - "currentBalance": "残高: {balance}", - "internal": "ウォレット内アドレス", - "external": "入金先アドレス" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "保存", "importSeed": "既存のシードをインポート", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "よくある質問を見る", "viewDownloads": "View downloads", "viewStatus": "ステータスを表示", + "viewAddressHistory": "アドレス履歴を表示", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "非表示ウォレットを表示", diff --git a/packages/shared/locales/ko.json b/packages/shared/locales/ko.json index c0a9ecaaf76..93c0375d015 100644 --- a/packages/shared/locales/ko.json +++ b/packages/shared/locales/ko.json @@ -812,12 +812,6 @@ "errorBody2": "이 지갑에 잔액이 {balance} 만큼 남아있습니다. 이것을 다른 지갑으로 옮기고 다시 시도하세요.", "errorBody3": "이 지갑은 숨길 수 없습니다. 최소한 하나는 있어야합니다." }, - "addressHistory": { - "title": "주소 {name} 이력", - "currentBalance": "잔액: {balance}", - "internal": "내부 주소", - "external": "입금 주소" - }, "excludeNode": { "title": "노드 제외하기", "body": "사용 가능한 노드 풀에서 {url} 을 제외하시겠습니까?" @@ -1096,15 +1090,15 @@ } }, "nativeToken": { - "formTitle": "Mint native tokens", - "confirmationTitle": "Mint native tokens", + "formTitle": "기본 토큰 발행", + "confirmationTitle": "기본 토큰 발행", "property": { "totalSupply": "총 공급량", "maximumSupply": "최대 공급량", "mintedTokens": "생성된 토큰", "meltedTokens": "Melted tokens", "circulatingSupply": "유통량", - "aliasAddress": "Alias controller address", + "aliasAddress": "별칭 컨트롤러 주소", "standard": "표준", "tokenName": "이름", "unit": "단위", @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "인증이 필요함", "body": "이 노드에는 추가 인증이 필요합니다. 해당 정보를 입력해 주세요." + }, + "addressHistory": { + "title": "주소 이력", + "disclaimer": "자금이 있거나 이 프로필로 알려진 주소 목록", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "내부" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "저장하기", "importSeed": "기존 시드 불러오기", "restoreWallet": { - "iota": "지갑 이전 또는 복원", + "iota": "IOTA 프로필 복원", "iotaAlphanet": "IOTA 알파넷 프로필 복원", "shimmer": "Shimmer 프로필 복원", "testnet": "테스트넷 프로필 복원", "custom": "사용자 정의 네트워크 프로필 복원" }, "restoreWalletDescription": { - "iota": "Chrysalis로 마이그레이션하거나 기존 지갑을 복원합니다.", + "iota": "기존 IOTA 프로필 복원", "iotaAlphanet": "기존 IOTA 알파넷 프로필을 복원합니다.", "shimmer": "기존 Shimmer 프로필을 복원합니다.", "testnet": "기존 테스트넷 프로필을 복원합니다.", @@ -1256,7 +1256,7 @@ "claimShimmer": "Shimmer 스테이킹 보상 요청하기", "claimShimmerDescription": "IOTA 프로필을 가져오고 스테이킹 보상을 요청합니다.", "createAlias": "별칭 만들기", - "createAliasDescription": "Create alias output", + "createAliasDescription": "별칭 출력 생성", "savePassword": "비밀번호 저장하기", "useBiometric": "생체 인증 사용하기", "setupPinCode": "PIN 코드 설정", @@ -1338,6 +1338,7 @@ "visitFaq": "자주 묻는 질문들 보기", "viewDownloads": "다운로드보기", "viewStatus": "상태 보기", + "viewAddressHistory": "주소 이력 보기", "viewBalanceBreakdown": "잔액 내역 보기", "verifyDepositAddress": "입금주소 확인", "showHiddenAccounts": "숨김 지갑 표시", @@ -1438,9 +1439,9 @@ "mintingNft": "NFT 발행", "shimmerClaimed": "받음", "shimmerClaiming": "받는 중", - "shimmerGenesis": "Shimmer Genesis", + "shimmerGenesis": "Shimmer 기원", "vestingReward": "Vesting Reward Airdrop", - "stardustGenesis": "Stardust Genesis", + "stardustGenesis": "Stardust 기원", "minted": "발행됨", "minting": "발행", "burned": "소각됨", @@ -1457,7 +1458,7 @@ "sendToAddress": "주소로 보내기", "sendToken": "토큰 전송", "sendNft": "NFT 전송", - "sendNftToAddress": "Send NFT to an address", + "sendNftToAddress": "NFT를 주소로 보내기", "scanQrOrPaste": "QR 코드를 스캔하거나 주소를 복사해 붙이기", "moveFundsBetweenAccounts": "지갑간 자금 이체하기", "manageAccount": "지갑 관리", @@ -1605,7 +1606,7 @@ "nftMetadata": "NFT 메타데이터", "aliasId": "별칭 ID", "governorAddress": "Governor Address", - "stateControllerAddress": "State Controller Address", + "stateControllerAddress": "컨트롤러 주소 지정", "copiedToClipboard": "클립보드에 복사됨", "total": "총액: {balance}", "availableBalanceWithValue": "사용가능한 잔액: {balance}", @@ -1645,7 +1646,7 @@ "smartContract": "스마트 컨트랙트", "targetContract": "대상계약", "contractFunction": "계약 기능", - "gasBudget": "Gas budget", + "gasBudget": "가스 예산", "standard": "표준", "uri": "URI", "issuer": "발행자", @@ -1683,8 +1684,8 @@ }, "showValueless": { "label": "Show valueless", - "yes": "Yes", - "no": "No" + "yes": "네", + "no": "아니오" }, "ascDesc": { "Asc": "오름차순", @@ -1747,28 +1748,28 @@ "vesting": "Vesting" }, "direction": { - "label": "Direction", + "label": "방향", "incoming": "Incoming", "outgoing": "Outgoing", "selfTransaction": "Self transaction" }, "proposalType": { - "label": "Type", - "official": "Official", - "custom": "Custom" + "label": "유형", + "official": "공식", + "custom": "사용자 지정" }, "phase": { - "label": "Phase" + "label": "단계" }, "participated": { - "label": "Participated", - "yes": "Yes", - "no": "No" + "label": "참여함", + "yes": "네", + "no": "아니오" }, "proposalOrder": { - "label": "Order", - "name": "Name", - "phase": "Phase" + "label": "순서", + "name": "이름", + "phase": "단계" } }, "dates": { @@ -1956,7 +1957,7 @@ "noInputs": "입력을 찾을 수 없습니다", "notEnoughBalance": "잔고가 부족합니다.", "missingTransactionId": "거래 ID가 누락되었습니다.", - "missingTransactionProgressEventPayload": "The transaction progress event payload is missing", + "missingTransactionProgressEventPayload": "거래 진행 이벤트 페이로드가 누락되었습니다.", "recipientRequired": "받는 사람을 입력하세요.", "nftRequired": "NFT가 필요합니다.", "nftNotInHex": "NFT 주소는 HEX 형식이어야 합니다.", @@ -1968,7 +1969,7 @@ }, "node": { "invalid": "유효한 URL을 입력하세요.", - "dns": "Unable to find DNS resolution for node", + "dns": "노드에 대한 DNS 해결방법을 찾을 수 없습니다.", "timedOut": "연결 시간이 초과되었습니다.", "refused": "연결이 거부되었습니다.", "handshake": "노드와의 핸드셰이크를 실패했습니다.", @@ -1998,7 +1999,7 @@ "invalid": "백업 파일이 인식되지 않았습니다.", "destination": "백업 장소가 유효하지 않습니다.", "mnemonic": "니모닉이 유효하지 않습니다.", - "migrationRequired": "Stronghold migration is required.", + "migrationRequired": "Stronghold 이전이 필요합니다.", "seedTooShort": "시드의 길이는 81자여야 합니다. 현재 길이는 {length, plural, other {#자}}입니다.", "seedCharacters": "시드에는 A부터 Z까지의 알파벳과 숫자 9만 포함되어야 합니다.", "phraseWordCount": "복원 문구는 단어 24개로 이루어지며, 현재 단어 {length, plural, other {#}}개를 입력하였습니다.", @@ -2039,7 +2040,7 @@ "invalidDate": "잘못된 날짜", "invalidTime": "잘못된 시간", "shimmerClaiming": { - "missingProfileManager": "Unable to find Shimmer claiming profile manager", + "missingProfileManager": "Shimmer 청구 프로필 관리자를 찾을 수 없습니다.", "cannotInitialiseAccount": "Shimmer 청구 계정을 초기화할 수 없습니다.", "missingAccount": "Shimmer 청구 계정을 찾을 수 없습니다." }, @@ -2168,43 +2169,43 @@ "gasBudget": "Shimmer EVM에서 거래를 수행하거나 스마트 계약 기능을 실행하려면 가스 예산이 필요합니다." }, "nftMetadata": { - "standard": "The NFT standard e.g. IRC27.", - "type": "The MimeType of the NFT. e.g. image/png.", - "collectionId": "UTXO string of the collection NFT that minted this NFT", - "royalties": "An object containing key-value pairs of addresses that map to payout percentages", - "issuerName": "The name of the creator", - "attributes": "An array of traits and values that define attributes of the NFT" + "standard": "NFT 표준(예: IRC27)", + "type": "NFT의 Mime유형 (예: image/png)", + "collectionId": "이 NFT를 발행한 컬렉션 NFT의 UTXO 문자열", + "royalties": "지급 비율에 매핑되는 주소의 키-값 쌍을 포함하는 객체", + "issuerName": "창작자의 이름", + "attributes": "NFT의 속성을 정의하는 일련의 특성과 값" } }, "mintNativeToken": { - "decimals": "IRC30 optional parameter: Number of decimals the token uses (divide the token amount by 10^decimals to get its user representation).", - "description": "IRC30 optional parameter: The human-readable description of the token.", - "url": "IRC30 optional parameter: URL pointing to more resources about the token like a website or social media page.", - "logoUrl": "IRC30 optional parameter: URL pointing to an image resource of the token logo." + "decimals": "IRC30 선택적 매개변수: 토큰이 사용하는 소수 자릿수(사용자 표현을 얻으려면 토큰 금액을 10^소수로 나눕니다).", + "description": "IRC30 선택적 매개변수: 사람이 읽을 수 있는 토큰 설명입니다.", + "url": "IRC30 선택적 매개변수: 웹사이트나 소셜 미디어 페이지와 같은 토큰에 대한 추가 리소스를 가리키는 URL입니다.", + "logoUrl": "IRC30 선택적 매개변수: 토큰 로고의 이미지 리소스를 가리키는 URL입니다." }, "mintNftForm": { - "collectionId": "Optional parameter: UTXO string of the collection NFT that minted this NFT", - "collectionName": "Optional parameter: The collection's name", - "royalties": "Optional parameter: An object containing key-value pairs of addresses that map to payout percentages", - "issuerName": "Optional parameter: The name of the creator", - "description": "Optional parameter: A description of the NFT", - "attributes": "Optional parameter: An array of traits and values that define attributes of the NFT", - "uri": "To create a URI using custom media, first upload your file to IPFS via a storage service (e.g. https://nft.storage/)", - "quantity": "Optional parameter: The quantity of copies minted with this metadata." + "collectionId": "선택적 매개변수: 이 NFT를 발행한 컬렉션 NFT의 UTXO 문자열", + "collectionName": "선택적 매개변수: 컬렉션 이름", + "royalties": "선택적 매개변수: 지급 비율에 매핑되는 주소의 키-값 쌍을 포함하는 객체", + "issuerName": "선택적 매개변수: 작성자 이름", + "description": "선택적 매개변수: NFT에 대한 설명", + "attributes": "선택적 매개변수: NFT의 속성을 정의하는 일련의 특성 및 값", + "uri": "사용자 정의 미디어를 사용하여 URI를 생성하려면 먼저 스토리지 서비스(예: https://nft.storage/)를 통해 IPFS에 파일을 업로드하세요.", + "quantity": "선택적 매개변수: 이 메타데이터로 발행된 사본의 수량" }, "governance": { - "removeProposalWarning": "You must stop voting for this proposal before removing it.", + "removeProposalWarning": "이 제안을 제거하기 전에 해당 제안에 대한 투표를 중단해야 합니다.", "outdatedNode": { - "title": "Outdated node URL", - "body": "The node URL for this proposal is outdated. Please update it to access the latest voting results." + "title": "오래된 노드 URL", + "body": "이 제안의 노드 URL이 오래되었습니다. 최신 투표 결과에 액세스하려면 업데이트하세요." }, "resultsNotAvailable": { - "title": "Results not available", - "body": "The results are no longer available on this proposal's corresponding node. Please update it to access the results." + "title": "결과를 확인할 수 없음", + "body": "이 제안의 해당 노드에서는 더 이상 결과를 사용할 수 없습니다. 결과에 액세스하려면 업데이트하세요." } }, "updateStronghold": { - "profileBadge": "Your Stronghold is out of date. Log in to update Stronghold." + "profileBadge": "당신의 Stronghold는 오래되었습니다. Stronghold를 업데이트하려면 로그인하세요." } }, "exports": { @@ -2222,7 +2223,7 @@ "warningText": "현재 개발자 프로필을 사용하는 중이며 {networkName} 네트워크에 연결되었습니다" }, "networkIndicator": { - "warningText": "Network performance degraded. Message confirmation may take a bit longer than usual." + "warningText": "네트워크 성능이 저하되었습니다. 메시지 확인은 평소보다 조금 더 오래 걸릴 수 있습니다." } }, "permissions": { @@ -2233,7 +2234,7 @@ }, "tabs": { "wallet": "지갑", - "collectibles": "Collectibles", + "collectibles": "수집품", "governance": "거버넌스", "developer": "개발자", "tokens": "토큰", @@ -2242,133 +2243,133 @@ }, "pills": { "stake": { - "Pending": "staking for", - "Confirmed": "staked for", - "Conflicting": "failed to stake" + "Pending": "스테이킹 중", + "Confirmed": "스테이킹됨", + "Conflicting": "스테이킹 실패" }, "external": { "incoming": { - "Pending": "receiving from", - "Confirmed": "received from", - "Conflicting": "failed to receive" + "Pending": "받는 중", + "Confirmed": "수신 완료", + "Conflicting": "수신 실패" }, "outgoing": { - "Pending": "sending to", - "Confirmed": "sent to", - "Conflicting": "failed to send" + "Pending": "보내는 중", + "Confirmed": "발송 완료", + "Conflicting": "발송 실패" } }, "internal": { "incoming": { - "Pending": "transferring from", - "Confirmed": "transferred from", - "Conflicting": "failed to transfer" + "Pending": "계정에서 이체 중", + "Confirmed": "이체 완료", + "Conflicting": "전송 실패" }, "outgoing": { - "Pending": "transferring to", - "Confirmed": "transferred to", - "Conflicting": "failed to transfer" + "Pending": "계정으로 이체 중", + "Confirmed": "이체 완료", + "Conflicting": "전송 실패" }, "selfTransaction": { - "Pending": "transferring to", - "Confirmed": "transferred to", - "Conflicting": "failed to transfer" + "Pending": "이체 중", + "Confirmed": "이체 완료", + "Conflicting": "전송 실패" } }, "mint": { - "Pending": "minting", - "Confirmed": "minted", - "Conflicting": "failed to mint" + "Pending": "발행 중", + "Confirmed": "발행 완료", + "Conflicting": "발행 실패" }, "burn": { - "Pending": "burning", - "Confirmed": "burned", - "Conflicting": "failed to burn" + "Pending": "소각 중", + "Confirmed": "소각 완료", + "Conflicting": "소각 실패" }, "consolidation": { - "Pending": "Consolidating outputs", - "Confirmed": "Outputs consolidated", - "Conflicting": "failed to consolidate outputs" + "Pending": "출력 통합 중", + "Confirmed": "출력 통합 완료", + "Conflicting": "출력 통합 실패" }, "migrate": { - "Pending": "migrating for", - "Confirmed": "migrated for", - "Conflicting": "failed to migrate" + "Pending": "이전 중", + "Confirmed": "이전 완료", + "Conflicting": "이전 실패" }, "asyncStatus": { - "unclaimed": "unclaimed", - "claimed": "claimed", - "expired": "expired" + "unclaimed": "미수령", + "claimed": "수령 완료", + "expired": "만료됨" }, "governance": { "increaseVotingPower": { - "Pending": "increasing voting power", - "Confirmed": "increased voting power", - "Conflicting": "failed to increased voting power" + "Pending": "투표권 높이는 중", + "Confirmed": "투표권 증가됨", + "Conflicting": "투표권 증가 실패" }, "decreaseVotingPower": { - "Pending": "decreasing voting power", - "Confirmed": "decreased voting power", - "Conflicting": "failed to decreased voting power" + "Pending": "투표권 줄이는 중", + "Confirmed": "투표권 감소됨", + "Conflicting": "투표권 감소 실패" }, "startVoting": { - "Pending": "voting for", - "Confirmed": "voted for", - "Conflicting": "failed to vote for" + "Pending": "투표 중", + "Confirmed": "투표 완료", + "Conflicting": "투표 실패" }, "stopVoting": { - "Pending": "stopping voting for", - "Confirmed": "stopped voting for", - "Conflicting": "failed to stopped voting for" + "Pending": "투표 중지 중", + "Confirmed": "투표 중지됨", + "Conflicting": "투표 중지 실패" }, "changedVote": { - "Pending": "changing vote for", - "Confirmed": "changed vote for", - "Conflicting": "failed to change vote for" + "Pending": "투표 변경 중", + "Confirmed": "투표 변경 완료", + "Conflicting": "투표 변경 실패" }, "revote": { - "Pending": "revoting", - "Confirmed": "revote", - "Conflicting": "failed to revote" + "Pending": "재투표 중", + "Confirmed": "재투표 완료", + "Conflicting": "재투표 실패" }, "proposalStatus": { - "upcoming": "Announcement", - "commencing": "Voting open", - "holding": "Counting", - "ended": "Closed", - "nodeOutdated": "Outdated node URL", - "resultsNotAvailable": "Results not available" + "upcoming": "공지", + "commencing": "투표 시작", + "holding": "집계 중", + "ended": "닫힘", + "nodeOutdated": "노드 URL이 오래됨", + "resultsNotAvailable": "결과를 확인할 수 없음" } }, "alias": { "creation": { - "Pending": "creating alias", - "Confirmed": "alias created", - "Failed": "Failed to create alias" + "Pending": "별칭 생성 중", + "Confirmed": "별칭 생성 완료", + "Failed": "별칭 생성 실패" } }, "networkHealth": { - "down": "Down", - "degraded": "Degraded", - "operational": "Operational", - "disconnected": "Disconnected" + "down": "다운됨", + "degraded": "열화됨", + "operational": "운영", + "disconnected": "연결 끊김" }, - "locked": "locked", - "smartContract": "smart contract", + "locked": "잠김", + "smartContract": "스마트 계약", "vesting": { - "unlocked": "Unlocked", - "locked": "Locked" + "unlocked": "잠금 해제됨", + "locked": "잠김" } }, "menus": { "expirationTimePicker": { - "none": "No expiration time", - "1hour": "In 1 hour", - "1day": "In 1 day", - "1week": "In 1 week", + "none": "만료 시간 없음", + "1hour": "1시간 후", + "1day": "1일 후", + "1week": "1주일 후", "customDate": { - "title": "Custom date", - "subtitle": "Set custom expiry date" + "title": "사용자 지정 날짜", + "subtitle": "만료일을 사용자가 지정합니다." } } } diff --git a/packages/shared/locales/ku.json b/packages/shared/locales/ku.json index 43a4b741900..c0aa184b6a8 100644 --- a/packages/shared/locales/ku.json +++ b/packages/shared/locales/ku.json @@ -812,12 +812,6 @@ "errorBody2": "Niha we {balance} li ser vê cuzdank maye. Ji kerema xwe van dravî veguherînin hesabek cûda û dîsa biceribînin.", "errorBody3": "Hûn nikarin vê cuzdankê jêbibin, divê bi kêmanî yek ya te hebe." }, - "addressHistory": { - "title": "{name} dîroka navnîşanê", - "currentBalance": "Balance: {balance}", - "internal": "Internal Address", - "external": "Deposit Address" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Tomarkirin", "importSeed": "Seed'ek heyî barbikê hundir", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Here PPP", "viewDownloads": "View downloads", "viewStatus": "Rewşê bibîn", + "viewAddressHistory": "Bûyera navnîşanê nîşan bide", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Cuzdankê veşartî nîşan bidin", diff --git a/packages/shared/locales/lv.json b/packages/shared/locales/lv.json index f650aa070db..a78c1904f69 100644 --- a/packages/shared/locales/lv.json +++ b/packages/shared/locales/lv.json @@ -812,12 +812,6 @@ "errorBody2": "You currently have {balance} remaining on this wallet. Please move these funds to a different wallet and try again.", "errorBody3": "You cannot hide this wallet, you must have at least one." }, - "addressHistory": { - "title": "{name} address history", - "currentBalance": "Balance: {balance}", - "internal": "Internal Address", - "external": "Deposit Address" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Save", "importSeed": "Import an existing seed", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Visit FAQ", "viewDownloads": "View downloads", "viewStatus": "View status", + "viewAddressHistory": "View address history", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Show hidden wallets", diff --git a/packages/shared/locales/mk.json b/packages/shared/locales/mk.json index f9e783a2723..95076fac7dc 100644 --- a/packages/shared/locales/mk.json +++ b/packages/shared/locales/mk.json @@ -812,12 +812,6 @@ "errorBody2": "Моментално имате преостанати {balance} на овој паричник. Ве молиме преместете ги овие средства во друг паричник и пробајте повторно.", "errorBody3": "Не можете да го скриете овој паричник, морате да имате барем еден." }, - "addressHistory": { - "title": "Историја на адресата на {name}", - "currentBalance": "Balance: {balance}", - "internal": "Internal Address", - "external": "Deposit Address" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Зачувај", "importSeed": "Импортирање на постоечки seed", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Посети ЧПП", "viewDownloads": "View downloads", "viewStatus": "Погледни го статусот", + "viewAddressHistory": "Погледни ја историјата на адресата", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Прикажи скриени паричници", diff --git a/packages/shared/locales/nl.json b/packages/shared/locales/nl.json index 65c0ffd12f8..1bd492287dd 100644 --- a/packages/shared/locales/nl.json +++ b/packages/shared/locales/nl.json @@ -812,12 +812,6 @@ "errorBody2": "U hebt momenteel {balance} resterend in deze portemonnee. Verplaats dit tegoed naar een andere portemonnee en probeer het opnieuw.", "errorBody3": "U kunt deze portemonnee niet verbergen, u moet ten minste één hebben." }, - "addressHistory": { - "title": "{name} adresgeschiedenis", - "currentBalance": "Saldo: {balance}", - "internal": "Intern adres", - "external": "Ontvangstadres" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Opslaan", "importSeed": "Importeer een bestaande seed", "restoreWallet": { - "iota": "Migreer of herstel een portemonnee", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Herstel Shimmer profiel", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migreren naar Chrysalis of een bestaande portemonnee herstellen", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Een bestaand Shimmer profiel herstellen", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Bezoek veelgestelde vragen", "viewDownloads": "View downloads", "viewStatus": "Bekijk status", + "viewAddressHistory": "Bekijk adresgeschiedenis", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Toon verborgen portemonnees", diff --git a/packages/shared/locales/no.json b/packages/shared/locales/no.json index d797c2bc439..208c01c4bf6 100644 --- a/packages/shared/locales/no.json +++ b/packages/shared/locales/no.json @@ -812,12 +812,6 @@ "errorBody2": "Du har {balance} igjen i denne lommeboken. Vennligst flytt disse midlene til en annen lommebok og prøv igjen.", "errorBody3": "Du kan ikke skjule denne lommeboken, du må ha minst én lommebok." }, - "addressHistory": { - "title": "{name} adressehistorikk", - "currentBalance": "Balanse", - "internal": "Intern adresse", - "external": "Innskuddsadresse" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Lagre", "importSeed": "Importer en eksisterende hovednøkkel", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Besøk FAQ", "viewDownloads": "View downloads", "viewStatus": "Vis status", + "viewAddressHistory": "Vis adressehistorikk", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Vis skjulte lommebøker", diff --git a/packages/shared/locales/pl.json b/packages/shared/locales/pl.json index bd6e688f3f0..224ebc2bf3d 100644 --- a/packages/shared/locales/pl.json +++ b/packages/shared/locales/pl.json @@ -812,12 +812,6 @@ "errorBody2": "Obecnie posiadasz {balance} na tym portfelu. Przenieś te środki na inny portfel i spróbuj ponownie.", "errorBody3": "Nie możesz ukryć tego portfela. Co najmniej jeden portfel musi pozostać aktywny." }, - "addressHistory": { - "title": "Historia adresów dla {name}", - "currentBalance": "Saldo: {balance}", - "internal": "Adres wewnętrzny", - "external": "Adres odbiorcy" - }, "excludeNode": { "title": "Wyklucz serwer", "body": "Czy na pewno chcesz wykluczyć {url} z dostępnej puli serwerów?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Wymagane uwierzytelnienie", "body": "Ten serwer wymaga dodatkowego uwierzytelnienia. Proszę wypełnić odpowiednie informacje." + }, + "addressHistory": { + "title": "Historia adresów", + "disclaimer": "Lista adresów ze środkami lub adresów znanych przez ten profil", + "indexAndType": "{internal, select, true {Adres wewnętrzny} other {Adres odbiorcy}} {index}", + "internal": "Transfer wewnętrzny" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Zapisz", "importSeed": "Importuj istniejący klucz seed", "restoreWallet": { - "iota": "Migruj lub przywróć portfel", + "iota": "Przywróć profil IOTA", "iotaAlphanet": "Przywróć profil IOTA Alphanet", "shimmer": "Przywróć profil Shimmer", "testnet": "Przywróć profil Testnet", "custom": "Przywróć profil niestandardowej sieci" }, "restoreWalletDescription": { - "iota": "Migracja do sieci Chrysalis lub przywrócenie istniejącego portfela", + "iota": "Przywróć istniejący profil IOTA", "iotaAlphanet": "Przywróć istniejący profil IOTA Alphanet", "shimmer": "Przywróć istniejący profil Shimmer", "testnet": "Przywróć istniejący profil Testnet", @@ -1338,8 +1338,9 @@ "visitFaq": "Odwiedź FAQ", "viewDownloads": "Aktualizacja ręczna", "viewStatus": "Pokaż status", + "viewAddressHistory": "Pokaż historię adresów", "viewBalanceBreakdown": "Zestawienie środków", - "verifyDepositAddress": "Zweryfikuj adres depozytu", + "verifyDepositAddress": "Zweryfikuj adres odbiorcy", "showHiddenAccounts": "Pokaż ukryte portfele", "confirm": "Potwierdź", "hideNetworkStatistics": "Ukryj statystyki sieci", @@ -1667,7 +1668,7 @@ "internalTransaction": "Transakcja wewnętrzna", "coinType": "Typ tokena", "custom": "Niestandardowe", - "verifyLedgerDepositAddress": "Sprawdź czy adres depozytu jest zgodny z adresem wyświetlanym na urządzeniu Ledger" + "verifyLedgerDepositAddress": "Sprawdź czy adres odbiorcy jest zgodny z adresem wyświetlanym na urządzeniu Ledger" }, "filters": { "title": "Filtry", diff --git a/packages/shared/locales/pt-BR.json b/packages/shared/locales/pt-BR.json index fce7a8bd485..a5b4e49f332 100644 --- a/packages/shared/locales/pt-BR.json +++ b/packages/shared/locales/pt-BR.json @@ -812,12 +812,6 @@ "errorBody2": "Atualmente você tem {balance} restando nesta carteira. Por favor, mova esses fundos para uma carteira diferente e tente novamente.", "errorBody3": "Você não pode ocultar essa carteira. Você deve ter pelo menos uma carteira visualizável." }, - "addressHistory": { - "title": "{name} histórico de endereços", - "currentBalance": "Saldo: {balance}", - "internal": "Endereço Interno", - "external": "Endereço de depósito" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Salvar", "importSeed": "Importar uma seed existente", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Visitar FAQ", "viewDownloads": "View downloads", "viewStatus": "Visualizar status", + "viewAddressHistory": "Ver histórico de endereços", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Mostrar carteiras ocultas", diff --git a/packages/shared/locales/pt-PT.json b/packages/shared/locales/pt-PT.json index 0024a1c69b3..9493c183e34 100644 --- a/packages/shared/locales/pt-PT.json +++ b/packages/shared/locales/pt-PT.json @@ -812,12 +812,6 @@ "errorBody2": "O saldo desta carteira é {balance}. Por favor, mova estes fundos para uma carteira diferente e tente novamente.", "errorBody3": "Não pode ocultar essa carteira, deve ter pelo menos uma." }, - "addressHistory": { - "title": "{name} histórico de endereços", - "currentBalance": "Balance: {balance}", - "internal": "Internal Address", - "external": "Deposit Address" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Guardar", "importSeed": "Importar uma seed existente", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Visitar FAQ", "viewDownloads": "View downloads", "viewStatus": "Ver estado", + "viewAddressHistory": "Ver histórico de endereços", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Mostrar carteiras ocultas", diff --git a/packages/shared/locales/ro.json b/packages/shared/locales/ro.json index 7cdcfc0dee2..9ed11a2fac7 100644 --- a/packages/shared/locales/ro.json +++ b/packages/shared/locales/ro.json @@ -812,12 +812,6 @@ "errorBody2": "You currently have {balance} remaining on this wallet. Please move these funds to a different wallet and try again.", "errorBody3": "You cannot hide this wallet, you must have at least one." }, - "addressHistory": { - "title": "{name} address history", - "currentBalance": "Balance: {balance}", - "internal": "Internal Address", - "external": "Deposit Address" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Save", "importSeed": "Importă un seed existent", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Visit FAQ", "viewDownloads": "View downloads", "viewStatus": "View status", + "viewAddressHistory": "View address history", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Show hidden wallets", diff --git a/packages/shared/locales/ru.json b/packages/shared/locales/ru.json index 8f0e8b439a2..4929bbb10bd 100644 --- a/packages/shared/locales/ru.json +++ b/packages/shared/locales/ru.json @@ -812,12 +812,6 @@ "errorBody2": "В настоящее время на этом кошельке осталось {balance}. Пожалуйста, переведите эти средства на другой кошелек и повторите попытку.", "errorBody3": "Вы не можете скрыть этот кошелек, вы должны иметь хотя бы один." }, - "addressHistory": { - "title": "История адресов: {name}", - "currentBalance": "Баланс: {balance}", - "internal": "Внутренний адрес", - "external": "Адрес пополнения счета" - }, "excludeNode": { "title": "Исключить узел", "body": "Вы уверены, что хотите исключить {url} из списка доступных узлов?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Требуется аутентификация", "body": "Этот узел требует дополнительной аутентификации. Пожалуйста, заполните соответствующую информацию." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Сохранить", "importSeed": "Импортировать существующую мнемонику", "restoreWallet": { - "iota": "Перенос или восстановление кошелька", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Восстановить профиль Shimmer", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Перенос на Chrysalis или восстановление существующего кошелька", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Восстановить существующий профиль Shimmer", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Посетить FAQ", "viewDownloads": "View downloads", "viewStatus": "Просмотр статуса", + "viewAddressHistory": "Просмотр истории адресов", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Показать скрытые кошельки", diff --git a/packages/shared/locales/si.json b/packages/shared/locales/si.json index d5f746d850f..bac520b1e41 100644 --- a/packages/shared/locales/si.json +++ b/packages/shared/locales/si.json @@ -812,12 +812,6 @@ "errorBody2": "ඔබට දැනට මෙම පසුම්බියේ {balance} ක් ඉතිරිව ඇත. කරුණාකර මෙම අරමුදල් වෙනත් මුදල් පසුම්බියකට ගෙන ගොස් නැවත උත්සාහ කරන්න.", "errorBody3": "ඔබට මෙම මුදල් පසුම්බිය සැඟවිය නොහැක, ඔබට අවම වශයෙන් එකක්වත් තිබිය යුතුය." }, - "addressHistory": { - "title": "{name} ලිපින ඉතිහාසය", - "currentBalance": "ශේෂය: {balance}", - "internal": "අභ්යන්තර ලිපිනය", - "external": "තැන්පතු ලිපිනය" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "සුරකින්න", "importSeed": "පවතින බීජයක් ආනයනය කරන්න", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "නිතර අසන පැන වෙත පිවිසෙන්න", "viewDownloads": "View downloads", "viewStatus": "තත්ත්වය බලන්න", + "viewAddressHistory": "ලිපින ඉතිහාසය බලන්න", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "සැඟවුණු පසුම්බි පෙන්වන්න", diff --git a/packages/shared/locales/sk.json b/packages/shared/locales/sk.json index 1a978a31d93..3d154ccfb6a 100644 --- a/packages/shared/locales/sk.json +++ b/packages/shared/locales/sk.json @@ -812,12 +812,6 @@ "errorBody2": "V tejto peňaženke je váš momentálny zostatok {balance}. Prosím, presuňte tieto prostriedky do inej peňaženky a skúste znova.", "errorBody3": "Nemôžete skryť túto peňaženku, musíte mať aspoň jednu." }, - "addressHistory": { - "title": "Hístória adries konta {name} \n", - "currentBalance": "Zostatok: {balance}", - "internal": "Internal Address", - "external": "Deposit Address" - }, "excludeNode": { "title": "Vylúčiť uzol", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Uložiť", "importSeed": "Importovať existujúci seed", "restoreWallet": { - "iota": "Premigrujte alebo obnovte peňaženku", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Premigrujte do Chrysalis alebo obnovte existujúcu peňaženku", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Navštíviť FAQ", "viewDownloads": "View downloads", "viewStatus": "Zobrazenie stavu", + "viewAddressHistory": "Zobraziť históriu adresy", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Zobraziť skryté peňaženky", diff --git a/packages/shared/locales/sl.json b/packages/shared/locales/sl.json index be0badf92d2..f6b994c064a 100644 --- a/packages/shared/locales/sl.json +++ b/packages/shared/locales/sl.json @@ -812,12 +812,6 @@ "errorBody2": "V tej denarnici imate trenutno še {balance}. Prosimo, da ta sredstva prenesete v drugo denarnico in poskusite znova.", "errorBody3": "Te denarnice ne morete skriti, imeti morate vsaj eno." }, - "addressHistory": { - "title": "{name} zgodovina naslovov", - "currentBalance": "Ravnotežje: {balance}", - "internal": "Notranji naslov", - "external": "Naslov depozita" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Shrani", "importSeed": "Uvozite obstoječe seme", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Visit FAQ", "viewDownloads": "View downloads", "viewStatus": "View status", + "viewAddressHistory": "View address history", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Show hidden wallets", diff --git a/packages/shared/locales/sq.json b/packages/shared/locales/sq.json index f650aa070db..a78c1904f69 100644 --- a/packages/shared/locales/sq.json +++ b/packages/shared/locales/sq.json @@ -812,12 +812,6 @@ "errorBody2": "You currently have {balance} remaining on this wallet. Please move these funds to a different wallet and try again.", "errorBody3": "You cannot hide this wallet, you must have at least one." }, - "addressHistory": { - "title": "{name} address history", - "currentBalance": "Balance: {balance}", - "internal": "Internal Address", - "external": "Deposit Address" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Save", "importSeed": "Import an existing seed", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Visit FAQ", "viewDownloads": "View downloads", "viewStatus": "View status", + "viewAddressHistory": "View address history", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Show hidden wallets", diff --git a/packages/shared/locales/sr.json b/packages/shared/locales/sr.json index e4a93ec7383..32ba423b892 100644 --- a/packages/shared/locales/sr.json +++ b/packages/shared/locales/sr.json @@ -812,12 +812,6 @@ "errorBody2": "You currently have {balance} remaining on this wallet. Please move these funds to a different wallet and try again.", "errorBody3": "You cannot hide this wallet, you must have at least one." }, - "addressHistory": { - "title": "{name} address history", - "currentBalance": "Balance: {balance}", - "internal": "Internal Address", - "external": "Deposit Address" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Save", "importSeed": "Увезите постојеће семе", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Visit FAQ", "viewDownloads": "View downloads", "viewStatus": "View status", + "viewAddressHistory": "View address history", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Show hidden wallets", diff --git a/packages/shared/locales/sv.json b/packages/shared/locales/sv.json index da9fd7d31db..3751b90d56c 100644 --- a/packages/shared/locales/sv.json +++ b/packages/shared/locales/sv.json @@ -812,12 +812,6 @@ "errorBody2": "Du har för närvarande {balance} kvar i denna plånbok. Vänligen flytta dessa tillgångar till en annan plånbok och försök igen.", "errorBody3": "Du kan inte dölja denna plånbok, du måste ha minst en." }, - "addressHistory": { - "title": "{name} adresshistorik", - "currentBalance": "Saldo: {balance}", - "internal": "Intern adress", - "external": "Insättningsadress" - }, "excludeNode": { "title": "Exkludera nod", "body": "Är du säker på att du vill exkludera {url} från den tillgängliga nodpoolen?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Autentisering krävs", "body": "Den här noden kräver ytterligare autentisering. Vänligen fyll i lämplig information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Spara", "importSeed": "Importera en befintlig seed", "restoreWallet": { - "iota": "Migrera eller återställ en plånbok", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Återställ Shimmer-profil", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrera till Chrysalis eller återställ en befintlig plånbok", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Återställ en befintlig Shimmer-profil", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Besök FAQ", "viewDownloads": "View downloads", "viewStatus": "Visa status", + "viewAddressHistory": "Visa adresshistorik", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Visa dolda plånböcker", diff --git a/packages/shared/locales/tr.json b/packages/shared/locales/tr.json index a08d973d726..0665e5504c5 100644 --- a/packages/shared/locales/tr.json +++ b/packages/shared/locales/tr.json @@ -812,12 +812,6 @@ "errorBody2": "Cüzdanınızda {balance} tutarında bakiye bulunmaktadır. Lütfen bakiyeyi başka bir cüzdana taşıyıp tekrar deneyiniz.", "errorBody3": "Bu cüzdanı gizleyemezsiniz, en az bir cüzdanınız bulunmalıdır." }, - "addressHistory": { - "title": "{name} Adres geçmişi", - "currentBalance": "Bakiye {balance}", - "internal": "Dahili Adres", - "external": "Yatırma Adresi" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Kaydet", "importSeed": "Mevcut bir Seed'i içe aktarın", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "FAQ ziyaret et", "viewDownloads": "View downloads", "viewStatus": "Durumu görüntüle", + "viewAddressHistory": "Adres geçmişini göster", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Gizli cüzdanları göster", diff --git a/packages/shared/locales/uk.json b/packages/shared/locales/uk.json index 6dec83ada77..6d1f5359787 100644 --- a/packages/shared/locales/uk.json +++ b/packages/shared/locales/uk.json @@ -812,12 +812,6 @@ "errorBody2": "Наразі на цьому гаманці залишилося {balance}. Будь ласка, перемістіть ці кошти на інший гаманець і спробуйте ще раз.", "errorBody3": "Ви не можете приховати цей гаманець, у вас повинен бути принаймні один." }, - "addressHistory": { - "title": "Історія адрес: {name}", - "currentBalance": "Баланс: {balance}", - "internal": "Внутрішня адреса", - "external": "Адреса поповнення" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Зберегти", "importSeed": "Імпортувати існуючий seed", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Відвідати FAQ", "viewDownloads": "View downloads", "viewStatus": "Перегляд статусу", + "viewAddressHistory": "Перегляд історії адрес", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Показати приховані гаманці", diff --git a/packages/shared/locales/ur.json b/packages/shared/locales/ur.json index f780b1fe8e9..076df903fa9 100644 --- a/packages/shared/locales/ur.json +++ b/packages/shared/locales/ur.json @@ -812,12 +812,6 @@ "errorBody2": "اس والٹ پر آپ کے پاس فی الحال {balance} باقی ہے۔ براہ کرم ان فنڈز کو کسی دوسرے والٹ میں منتقل کریں اور دوبارہ کوشش کریں.", "errorBody3": "آپ یہ والٹ چھپا نہیں کرسکتے ، آپ کے پاس کم از کم ایک والٹ ہونا ضروری ہے." }, - "addressHistory": { - "title": "{name} کے ایڈریسس کی تاریخ", - "currentBalance": "Balance: {balance}", - "internal": "Internal Address", - "external": "Deposit Address" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "محفوظ کریں", "importSeed": "ایک موجودہ سیڈ درآمد کریں", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "FAQ دیکھیں", "viewDownloads": "View downloads", "viewStatus": "حالت دیکھیں", + "viewAddressHistory": "ایڈریسس کی تاریخ دیکھیں", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "چھپے ہوئے والٹس دکھائیں", diff --git a/packages/shared/locales/vi.json b/packages/shared/locales/vi.json index 4b62cec87c6..4057e7f50a5 100644 --- a/packages/shared/locales/vi.json +++ b/packages/shared/locales/vi.json @@ -812,12 +812,6 @@ "errorBody2": "Bạn hiện còn {balance} trên ví này. Vui lòng chuyển những khoản tiền này sang một ví khác và thử lại.", "errorBody3": "Bạn không thể ẩn ví này, bạn phải có ít nhất một ví." }, - "addressHistory": { - "title": "{name} lịch sử địa chỉ", - "currentBalance": "Số dư: {balance}", - "internal": "Địa chỉ nội bộ", - "external": "Địa chỉ nạp" - }, "excludeNode": { "title": "Exclude node", "body": "Are you sure you want to exclude {url} from the available node pool?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "Authentication required", "body": "This node requires additional authentication. Please fill in the appropriate information." + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "Lưu", "importSeed": "Nhập vào một seed hiện có", "restoreWallet": { - "iota": "Migrate or restore a wallet", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "Restore Shimmer profile", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "Migrate to Chrysalis or restore an existing wallet", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "Restore an existing Shimmer profile", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "Truy cập câu hỏi thường gặp", "viewDownloads": "View downloads", "viewStatus": "Xem trạng thái", + "viewAddressHistory": "Hiển thị lịch sử địa chỉ ví", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "Hiển thị các ví ẩn", diff --git a/packages/shared/locales/zh-CN.json b/packages/shared/locales/zh-CN.json index 42fc585795d..7fb5e45f6e9 100644 --- a/packages/shared/locales/zh-CN.json +++ b/packages/shared/locales/zh-CN.json @@ -812,12 +812,6 @@ "errorBody2": "目前你的这个账户还有 {balance} 余额. 请把这些资金移动到另一个钱包后重试。", "errorBody3": "您不能隐藏这个钱包,您必须至少有一个钱包" }, - "addressHistory": { - "title": "{name} 地址历史记录", - "currentBalance": "余额:{balance}", - "internal": "内部地址", - "external": "充值地址" - }, "excludeNode": { "title": "排除节点", "body": "您确定要将 {url} 排除在可用节点池之外吗?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "需要验证", "body": "此节点需要额外的验证。请填写适当的信息。" + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "保存", "importSeed": "导入已有的私钥种子", "restoreWallet": { - "iota": "迁移或恢复钱包", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "恢复 Shimmer 配置文件", "testnet": "Restore Testnet profile", "custom": "Restore Custom Network profile" }, "restoreWalletDescription": { - "iota": "迁移到 Chrysalis 或恢复一个现有钱包", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "恢复一个Shimmer 配置文件", "testnet": "Restore an existing Testnet profile", @@ -1338,6 +1338,7 @@ "visitFaq": "访问常见问题", "viewDownloads": "View downloads", "viewStatus": "查看状态", + "viewAddressHistory": "显示地址历史记录", "viewBalanceBreakdown": "View balance breakdown", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "显示隐藏钱包", diff --git a/packages/shared/locales/zh-TW.json b/packages/shared/locales/zh-TW.json index b50fa91e8f3..391b8d39d93 100644 --- a/packages/shared/locales/zh-TW.json +++ b/packages/shared/locales/zh-TW.json @@ -812,12 +812,6 @@ "errorBody2": "目前您在這個錢包仍擁有 {balance} 餘額。請將這些資金移至另一個錢包後再重試。", "errorBody3": "您無法隱藏此錢包,您必須至少擁有一個錢包。" }, - "addressHistory": { - "title": "{name} 地址記錄", - "currentBalance": "餘額:{balance}", - "internal": "內部地址", - "external": "存款地址" - }, "excludeNode": { "title": "排除節點", "body": "您是否確定要將 {url} 排除在可用節點之外?" @@ -1188,6 +1182,12 @@ "nodeAuthRequired": { "title": "需要驗證", "body": "此節點需要額外的認證。請填寫正確的資訊。" + }, + "addressHistory": { + "title": "Address history", + "disclaimer": "List of addresses with funds or known by this profile", + "indexAndType": "{internal, select, true {Internal address} other {Deposit address}} {index}", + "internal": "Internal" } }, "charts": { @@ -1234,14 +1234,14 @@ "save": "儲存", "importSeed": "匯入現有的種子", "restoreWallet": { - "iota": "遷移或復原錢包", + "iota": "Restore IOTA profile", "iotaAlphanet": "Restore IOTA Alphanet profile", "shimmer": "復原Shimmer設定檔", "testnet": "恢復測試網設定檔", "custom": "恢復自訂網路設定檔" }, "restoreWalletDescription": { - "iota": "遷移至Chrysalis或恢復一個既存錢包", + "iota": "Restore an existing IOTA profile", "iotaAlphanet": "Restore an existing IOTA Alphanet profile", "shimmer": "復原既有的Shimmer檔", "testnet": "恢復既有的測試網設定檔", @@ -1338,6 +1338,7 @@ "visitFaq": "訪問常見問題解答", "viewDownloads": "查看下載", "viewStatus": "查看狀態", + "viewAddressHistory": "檢視地址歷史紀錄", "viewBalanceBreakdown": "檢視餘額明細", "verifyDepositAddress": "Verify deposit address", "showHiddenAccounts": "顯示隱藏錢包", From 1ac4367eb2ccdc431b3b5a0ddf1b1b5678f83dfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Esp=C3=ADn?= Date: Thu, 16 Nov 2023 10:33:29 +0100 Subject: [PATCH 25/45] fix: l2 metadata decoding (#7702) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: Proper evm address decoding * updated tests * fix: bullet-proof metadata decoding * clean up * updated tests * fix * fixes * fix: calculate amount by deducting gasFee and not allocated gasBudget * test: add long base token test --------- Co-authored-by: Begoña Álvarez de la Cruz --- .../layer-2/classes/special-stream.class.ts | 27 ++++++++------- .../parseLayer2MetadataForTransfer.test.ts | 33 ++++++++++++++----- .../types/layer2-metadata.interface.ts | 2 +- .../utils/parseLayer2MetadataForTransfer.ts | 18 ++++++++-- .../generateSingleBasicActivity.ts | 5 ++- 5 files changed, 59 insertions(+), 26 deletions(-) diff --git a/packages/shared/lib/core/layer-2/classes/special-stream.class.ts b/packages/shared/lib/core/layer-2/classes/special-stream.class.ts index f82336699af..23c5ba84d21 100644 --- a/packages/shared/lib/core/layer-2/classes/special-stream.class.ts +++ b/packages/shared/lib/core/layer-2/classes/special-stream.class.ts @@ -21,9 +21,8 @@ export class SpecialStream extends WriteStream { } export class ReadSpecialStream extends ReadStream { - readUInt64SpecialEncoding(name: string): number | bigint { - const [value] = size64Decode(() => this.readUInt8(name)) - return value + readUInt64SpecialEncodingWithError(name: string): [bigint, Error | null] { + return size64Decode(() => this.readUInt8(name)) } readUInt32SpecialEncoding(name: string): number | bigint { @@ -137,33 +136,37 @@ function size64Encode(n: bigint): Buffer { } // Adapted from WASP golang implementation https://github.com/iotaledger/wasp/blob/7f880a7983d24d0dcd225e994d67b29741b318bc/packages/util/rwutil/convert.go#L76 -function size64Decode(readByte: () => number): [number, null | Error] { +function size64Decode(readByte: () => number): [bigint, null | Error] { let byte = readByte() + if (!byte) { + return [BigInt(0), new Error('no more bytes')] + } + if (byte < 0x80) { - return [byte, null] + return [BigInt(byte), null] } - let value = byte & 0x7f + let value = BigInt(byte) & BigInt(0x7f) for (let shift = 7; shift < 63; shift += 7) { byte = readByte() if (!byte) { - return [0, null] + return [BigInt(0), new Error('no more bytes')] } if (byte < 0x80) { - return [Number(value | (byte << shift)), null] + return [value | (BigInt(byte) << BigInt(shift)), null] } - value |= (byte & 0x7f) << shift + value |= (BigInt(byte) & BigInt(0x7f)) << BigInt(shift) } byte = readByte() if (!byte) { - return [0, null] + return [BigInt(0), new Error('no more bytes')] } if (byte > 0x01) { - return [0, new Error('size64 overflow')] + return [BigInt(0), new Error('size64 overflow')] } - return [value | (byte << 63), new Error('Unexpected end of data')] + return [value | (BigInt(byte) << BigInt(63)), null] } diff --git a/packages/shared/lib/core/layer-2/tests/parseLayer2MetadataForTransfer.test.ts b/packages/shared/lib/core/layer-2/tests/parseLayer2MetadataForTransfer.test.ts index 4a0d8a7c24c..b595a4db440 100644 --- a/packages/shared/lib/core/layer-2/tests/parseLayer2MetadataForTransfer.test.ts +++ b/packages/shared/lib/core/layer-2/tests/parseLayer2MetadataForTransfer.test.ts @@ -10,9 +10,8 @@ describe('Function: parseLayer2MetadataForTransfer.ts', () => { senderContract: '0x0', targetContract: 'Accounts', contractFunction: 'transferAllowanceTo', - gasBudget: '10001', - ethereumAddress: - '0x42f7da9bdb55b3ec87e5ac1a1e6d88e16768663fde5eca3429eb6f579cc538acb82a77d6f89dae4611b81eac279fbf96d322001f', + gasBudget: '10000', + ethereumAddress: '0xb82a77d6f89dae4611b81eac279fbf96d322001f', baseTokens: '900000000', nativeTokens: [], nfts: [], @@ -21,6 +20,24 @@ describe('Function: parseLayer2MetadataForTransfer.ts', () => { expect(parsedMetadata).toEqual(expected) }) + it('should correctly parse metadata with long base token', () => { + const metadata = + '0x00025e4b3ca1e3f423914e010161350342f7da9bdb55b3ec87e5ac1a1e6d88e16768663fde5eca3429eb6f579cc538acb82a77d6f89dae4611b81eac279fbf96d322001f80ff9f94a58d1d' + const metadataByteArray = Converter.hexToBytes(metadata) + const expected = { + senderContract: '0x0', + targetContract: 'Accounts', + contractFunction: 'transferAllowanceTo', + gasBudget: '10000', + ethereumAddress: '0xb82a77d6f89dae4611b81eac279fbf96d322001f', + baseTokens: '999999999999', + nativeTokens: [], + nfts: [], + } + const parsedMetadata = parseLayer2MetadataForTransfer(metadataByteArray) + expect(parsedMetadata).toEqual(expected) + }) + it('should correctly parse metadata with native tokens', () => { const metadata = '0x00025e4b3ca1e3f423914e010161350342f7da9bdb55b3ec87e5ac1a1e6d88e16768663fde5eca3429eb6f579cc538acb82a77d6f89dae4611b81eac279fbf96d322001f4001086ac702fcfdc37b437e7ebb7a87d8acfb875be6b1ae3823bc61aa7896b852a6d5010000000001fa' @@ -29,9 +46,8 @@ describe('Function: parseLayer2MetadataForTransfer.ts', () => { senderContract: '0x0', targetContract: 'Accounts', contractFunction: 'transferAllowanceTo', - gasBudget: '10001', - ethereumAddress: - '0x42f7da9bdb55b3ec87e5ac1a1e6d88e16768663fde5eca3429eb6f579cc538acb82a77d6f89dae4611b81eac279fbf96d322001f', + gasBudget: '10000', + ethereumAddress: '0xb82a77d6f89dae4611b81eac279fbf96d322001f', baseTokens: '0', nativeTokens: [ { @@ -53,9 +69,8 @@ describe('Function: parseLayer2MetadataForTransfer.ts', () => { senderContract: '0x0', targetContract: 'Accounts', contractFunction: 'transferAllowanceTo', - gasBudget: '26345', - ethereumAddress: - '0x42f7da9bdb55b3ec87e5ac1a1e6d88e16768663fde5eca3429eb6f579cc538acb82a77d6f89dae4611b81eac279fbf96d322001f', + gasBudget: '26344', + ethereumAddress: '0xb82a77d6f89dae4611b81eac279fbf96d322001f', baseTokens: '0', nativeTokens: [], nfts: ['0xbf5b7cd4e8ac582e246c25b6a89b4ab4ef0646d3291aa03d9a5313154b714a06'], diff --git a/packages/shared/lib/core/layer-2/types/layer2-metadata.interface.ts b/packages/shared/lib/core/layer-2/types/layer2-metadata.interface.ts index 283a74a6145..b3dfb05fffa 100644 --- a/packages/shared/lib/core/layer-2/types/layer2-metadata.interface.ts +++ b/packages/shared/lib/core/layer-2/types/layer2-metadata.interface.ts @@ -1,3 +1,3 @@ import { ILayer2TransferAllowanceMetadata } from '../interfaces' -export type Layer2Metadata = Omit +export type Layer2Metadata = Omit diff --git a/packages/shared/lib/core/layer-2/utils/parseLayer2MetadataForTransfer.ts b/packages/shared/lib/core/layer-2/utils/parseLayer2MetadataForTransfer.ts index 86642ff6c9e..7691189234a 100644 --- a/packages/shared/lib/core/layer-2/utils/parseLayer2MetadataForTransfer.ts +++ b/packages/shared/lib/core/layer-2/utils/parseLayer2MetadataForTransfer.ts @@ -10,9 +10,8 @@ export function parseLayer2MetadataForTransfer(metadata: Uint8Array): ILayer2Tra const senderContract = readStream.readUInt8('senderContract') const targetContract = readStream.readUInt32('targetContract') const contractFunction = readStream.readUInt32('contractFunction') - const gasBudget = readStream.readUInt64SpecialEncoding('gasBudget') - const smartContractParameters = parseSmartContractParameters(readStream) - const ethereumAddress = '0x' + smartContractParameters['a'].substring(4) + const gasBudget = parseGasBudget(readStream) + const ethereumAddress = parseEvmAddressFromAgentId(readStream) const allowance = parseAssetAllowance(readStream) return { @@ -27,6 +26,19 @@ export function parseLayer2MetadataForTransfer(metadata: Uint8Array): ILayer2Tra } } +function parseGasBudget(readStream: ReadSpecialStream): bigint | number { + const [value, error] = readStream.readUInt64SpecialEncodingWithError('gasBudget') + if (!error) { + return value - BigInt(1) + } + return value +} + +function parseEvmAddressFromAgentId(readStream: ReadSpecialStream): string { + const smartContractParameters = parseSmartContractParameters(readStream) + return '0x' + smartContractParameters['a'].slice(-40) +} + function parseSmartContractParameters(readStream: ReadSpecialStream): Record { const smartContractParametersAmount = readStream.readUInt32SpecialEncoding('parametersLength') const smartContractParameters: Record = {} diff --git a/packages/shared/lib/core/wallet/utils/generateActivity/generateSingleBasicActivity.ts b/packages/shared/lib/core/wallet/utils/generateActivity/generateSingleBasicActivity.ts index 2e5c63b8d99..c52f1cef93f 100644 --- a/packages/shared/lib/core/wallet/utils/generateActivity/generateSingleBasicActivity.ts +++ b/packages/shared/lib/core/wallet/utils/generateActivity/generateSingleBasicActivity.ts @@ -33,6 +33,7 @@ export async function generateSingleBasicActivity( const id = outputId || transactionId const output = wrappedOutput.output as BasicOutput + const amount = getAmountFromOutput(output) const isShimmerClaiming = isShimmerClaimingTransaction(transactionId, get(activeProfileId)) @@ -44,13 +45,15 @@ export async function generateSingleBasicActivity( const asyncData = await getAsyncDataFromOutput(output, outputId, claimingData, account) const { parsedLayer2Metadata, destinationNetwork } = getLayer2ActivityInformation(metadata, sendingInfo) + const layer2Allowance = Number(parsedLayer2Metadata?.baseTokens ?? '0') const gasBudget = Number(parsedLayer2Metadata?.gasBudget ?? '0') + const gasFee = layer2Allowance > 0 ? amount - layer2Allowance : 0 let { storageDeposit, giftedStorageDeposit } = await getStorageDepositFromOutput(account, output) giftedStorageDeposit = action === ActivityAction.Burn ? 0 : giftedStorageDeposit giftedStorageDeposit = gasBudget === 0 ? giftedStorageDeposit : 0 - const baseTokenAmount = getAmountFromOutput(output) - storageDeposit - gasBudget + const baseTokenAmount = amount - storageDeposit - gasFee const nativeToken = await getNativeTokenFromOutput(output) const assetId = fallbackAssetId ?? nativeToken?.id ?? getCoinType() From 95283334053505e05937cf7cee8900f3ff417c5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bego=C3=B1a=20=C3=81lvarez=20de=20la=20Cruz?= Date: Thu, 16 Nov 2023 11:33:00 +0100 Subject: [PATCH 26/45] feat: add time expiration unlock condition for l1-l2 txs (#7719) * feat: add time expiration unlock condition for l1-l2 txs * enhancement: improve code readability --- .../popups/send/SendConfirmationPopup.svelte | 17 ++++++++++++++--- .../lib/core/wallet/utils/send/sendUtils.ts | 5 +++-- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/packages/desktop/components/popups/send/SendConfirmationPopup.svelte b/packages/desktop/components/popups/send/SendConfirmationPopup.svelte index 076973d5d39..2cfb3f3fcb6 100644 --- a/packages/desktop/components/popups/send/SendConfirmationPopup.svelte +++ b/packages/desktop/components/popups/send/SendConfirmationPopup.svelte @@ -65,8 +65,9 @@ transactionDetails.type === NewTransactionType.TokenTransfer && transactionDetails.asset?.metadata?.standard === TokenStandard.BaseToken $: isInternal = recipient.type === 'account' + $: isLayer2Transaction = !!layer2Parameters $: isTransferring = $selectedAccount.isTransferring - $: hideGiftToggle = isBaseTokenTransfer || !!layer2Parameters || (disableToggleGift && !giftStorageDeposit) + $: hideGiftToggle = isBaseTokenTransfer || isLayer2Transaction || (disableToggleGift && !giftStorageDeposit) $: if (!isSendAndClosePopup) expirationDate, giftStorageDeposit, void rebuildTransactionOutput() @@ -84,7 +85,12 @@ if (isSendAndClosePopup) { // Needed after 'return from stronghold' to SHOW to correct expiration date before output is sent - initialExpirationDate = getInitialExpirationDate(expirationDate, storageDeposit, giftStorageDeposit) + initialExpirationDate = getInitialExpirationDate( + expirationDate, + storageDeposit, + giftStorageDeposit, + isLayer2Transaction + ) try { await _onMount() @@ -111,7 +117,12 @@ // as it updates expiration date through the ExpirationTimePicker bind // Could be avoided with a rework of ExpirationTimePicker if (transactionDetails.expirationDate === undefined) { - initialExpirationDate = getInitialExpirationDate(expirationDate, storageDeposit, giftStorageDeposit) + initialExpirationDate = getInitialExpirationDate( + expirationDate, + storageDeposit, + giftStorageDeposit, + isLayer2Transaction + ) } } catch (err) { handleError(err) diff --git a/packages/shared/lib/core/wallet/utils/send/sendUtils.ts b/packages/shared/lib/core/wallet/utils/send/sendUtils.ts index 30a735db839..8f0070bcbbc 100644 --- a/packages/shared/lib/core/wallet/utils/send/sendUtils.ts +++ b/packages/shared/lib/core/wallet/utils/send/sendUtils.ts @@ -25,11 +25,12 @@ export enum OptionalInputType { export function getInitialExpirationDate( expirationDate: Date, storageDeposit: number, - giftStorageDeposit: boolean + giftStorageDeposit: boolean, + isLayer2: boolean ): TimePeriod { if (expirationDate) { return TimePeriod.Custom - } else if (storageDeposit && !giftStorageDeposit) { + } else if ((storageDeposit && !giftStorageDeposit) || isLayer2) { return TimePeriod.OneDay } else { return TimePeriod.None From c9559f033a80541f67976024758ec74c4d59de9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bego=C3=B1a=20=C3=81lvarez=20de=20la=20Cruz?= Date: Thu, 16 Nov 2023 15:01:58 +0100 Subject: [PATCH 27/45] fix: explorer link for vesting outputs (#7723) --- .../popups/ActivityDetailsPopup.svelte | 47 ++++++++++--------- .../network/enums/explorer-endpoint.enum.ts | 1 + 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/packages/desktop/components/popups/ActivityDetailsPopup.svelte b/packages/desktop/components/popups/ActivityDetailsPopup.svelte index dd3480fdc8a..b0c03af8b8b 100644 --- a/packages/desktop/components/popups/ActivityDetailsPopup.svelte +++ b/packages/desktop/components/popups/ActivityDetailsPopup.svelte @@ -1,20 +1,11 @@ From 122146774a8e6527b4f2167afa0e93ddb379b03c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bego=C3=B1a=20Alvarez?= Date: Tue, 12 Dec 2023 17:04:24 +0100 Subject: [PATCH 45/45] chore: bump version to 2.1.10 --- packages/desktop/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/desktop/package.json b/packages/desktop/package.json index 5eb3883baae..b55a47dd980 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,7 +1,7 @@ { "name": "desktop", "productName": "Firefly Shimmer", - "version": "2.1.10-beta-5", + "version": "2.1.10", "description": "Official wallet application of Shimmer", "main": "public/build/main.js", "repository": "git@github.com:iotaledger/firefly.git",