From 17174cbde8aa46c3b29e9b6638f8fd246fa16448 Mon Sep 17 00:00:00 2001 From: Tangem Date: Sun, 19 Apr 2020 21:09:45 +0300 Subject: [PATCH 1/6] Updated on 2026-08-14 --- .../bitcoin/BitcoinTransactionBuilder.kt | 3 ++- .../bitcoin/BitcoinWalletManager.kt | 7 +++--- .../bitcoin/network/BitcoinNetworkManager.kt | 4 --- .../bitcoin/network/BlockchainInfoProvider.kt | 7 +++--- .../bitcoin/network/BlockcypherProvider.kt | 25 ++++++++++--------- .../common/extensions/BigDecimal.kt | 7 ++++++ 6 files changed, 30 insertions(+), 23 deletions(-) create mode 100644 blockchain/src/main/java/com/tangem/blockchain/common/extensions/BigDecimal.kt diff --git a/blockchain/src/main/java/com/tangem/blockchain/bitcoin/BitcoinTransactionBuilder.kt b/blockchain/src/main/java/com/tangem/blockchain/bitcoin/BitcoinTransactionBuilder.kt index 664c45fa0d..769b5fd2de 100644 --- a/blockchain/src/main/java/com/tangem/blockchain/bitcoin/BitcoinTransactionBuilder.kt +++ b/blockchain/src/main/java/com/tangem/blockchain/bitcoin/BitcoinTransactionBuilder.kt @@ -2,6 +2,7 @@ package com.tangem.blockchain.bitcoin import com.tangem.blockchain.common.TransactionData import com.tangem.blockchain.common.extensions.Result +import com.tangem.blockchain.common.extensions.isZero import org.bitcoinj.core.* import org.bitcoinj.crypto.TransactionSignature import org.bitcoinj.script.Script @@ -81,7 +82,7 @@ internal fun TransactionData.toBitcoinJTransaction(networkParameters: NetworkPar transaction.addOutput( Coin.parseCoin(this.amount.value!!.toPlainString()), Address.fromString(networkParameters, this.destinationAddress)) - if (change != 0.toBigDecimal()) { + if (!change.isZero()) { transaction.addOutput( Coin.parseCoin(change.toPlainString()), Address.fromString(networkParameters, diff --git a/blockchain/src/main/java/com/tangem/blockchain/bitcoin/BitcoinWalletManager.kt b/blockchain/src/main/java/com/tangem/blockchain/bitcoin/BitcoinWalletManager.kt index 72a18f08fc..a5079d804c 100644 --- a/blockchain/src/main/java/com/tangem/blockchain/bitcoin/BitcoinWalletManager.kt +++ b/blockchain/src/main/java/com/tangem/blockchain/bitcoin/BitcoinWalletManager.kt @@ -3,7 +3,6 @@ package com.tangem.blockchain.bitcoin import android.util.Log import com.tangem.blockchain.bitcoin.network.BitcoinAddressResponse import com.tangem.blockchain.bitcoin.network.BitcoinNetworkManager -import com.tangem.blockchain.bitcoin.network.BitcoinNetworkManager.Companion.SATOSHI_IN_BTC import com.tangem.blockchain.common.* import com.tangem.blockchain.common.extensions.Result import com.tangem.blockchain.common.extensions.SimpleResult @@ -27,7 +26,7 @@ class BitcoinWalletManager( private val networkManager = BitcoinNetworkManager(isTestNet) init { - wallet.balances[AmountType.Coin] = Amount(null, blockchain) + wallet.balances[AmountType.Coin] = Amount(null, blockchain, address) } override suspend fun update() { @@ -80,9 +79,11 @@ class BitcoinWalletManager( when (val result = networkManager.getFee()) { is Result.Failure -> return result is Result.Success -> { + val feeValue = BigDecimal.ONE.movePointLeft(blockchain.decimals.toInt()) + amount.value = amount.value!! - feeValue val sizeResult = transactionBuilder.getEstimateSize( TransactionData(amount, - Amount(1.toBigDecimal().divide(SATOSHI_IN_BTC), blockchain), + Amount(feeValue, blockchain), address, destination), walletPublicKey ) diff --git a/blockchain/src/main/java/com/tangem/blockchain/bitcoin/network/BitcoinNetworkManager.kt b/blockchain/src/main/java/com/tangem/blockchain/bitcoin/network/BitcoinNetworkManager.kt index 55b686591e..03914a56cf 100644 --- a/blockchain/src/main/java/com/tangem/blockchain/bitcoin/network/BitcoinNetworkManager.kt +++ b/blockchain/src/main/java/com/tangem/blockchain/bitcoin/network/BitcoinNetworkManager.kt @@ -85,10 +85,6 @@ class BitcoinNetworkManager(private val isTestNet: Boolean) : BitcoinProvider { } } } - - companion object { - val SATOSHI_IN_BTC = 100000000.toBigDecimal() - } } data class BitcoinAddressResponse( diff --git a/blockchain/src/main/java/com/tangem/blockchain/bitcoin/network/BlockchainInfoProvider.kt b/blockchain/src/main/java/com/tangem/blockchain/bitcoin/network/BlockchainInfoProvider.kt index 7b2882ec57..2ae4f3b03d 100644 --- a/blockchain/src/main/java/com/tangem/blockchain/bitcoin/network/BlockchainInfoProvider.kt +++ b/blockchain/src/main/java/com/tangem/blockchain/bitcoin/network/BlockchainInfoProvider.kt @@ -1,9 +1,9 @@ package com.tangem.blockchain.bitcoin.network import com.tangem.blockchain.bitcoin.UnspentTransaction -import com.tangem.blockchain.bitcoin.network.BitcoinNetworkManager.Companion.SATOSHI_IN_BTC import com.tangem.blockchain.bitcoin.network.api.BlockchainInfoApi import com.tangem.blockchain.bitcoin.network.api.EstimatefeeApi +import com.tangem.blockchain.common.Blockchain import com.tangem.blockchain.common.extensions.Result import com.tangem.blockchain.common.extensions.SimpleResult import com.tangem.blockchain.common.extensions.retryIO @@ -16,6 +16,7 @@ class BlockchainInfoProvider( private val blockchainApi: BlockchainInfoApi, private val estimatefeeApi: EstimatefeeApi ) : BitcoinProvider { + val decimals = Blockchain.Bitcoin.decimals.toInt() override suspend fun getInfo(address: String): Result { return try { @@ -29,7 +30,7 @@ class BlockchainInfoProvider( val bitcoinUnspents = unspents.unspentOutputs.map { UnspentTransaction( - it.amount!!.toBigDecimal().divide(SATOSHI_IN_BTC), + it.amount!!.toBigDecimal().movePointLeft(decimals), it.outputIndex!!.toLong(), it.hash!!.hexToBytes(), it.outputScript!!.hexToBytes()) @@ -37,7 +38,7 @@ class BlockchainInfoProvider( Result.Success( BitcoinAddressResponse( - addressData.finalBalance?.toBigDecimal()?.divide(SATOSHI_IN_BTC) + addressData.finalBalance?.toBigDecimal()?.movePointLeft(decimals) ?: 0.toBigDecimal(), unconfirmedTransactions, bitcoinUnspents)) } } catch (exception: Exception) { diff --git a/blockchain/src/main/java/com/tangem/blockchain/bitcoin/network/BlockcypherProvider.kt b/blockchain/src/main/java/com/tangem/blockchain/bitcoin/network/BlockcypherProvider.kt index 94c9e3dd17..709804cc40 100644 --- a/blockchain/src/main/java/com/tangem/blockchain/bitcoin/network/BlockcypherProvider.kt +++ b/blockchain/src/main/java/com/tangem/blockchain/bitcoin/network/BlockcypherProvider.kt @@ -1,11 +1,11 @@ package com.tangem.blockchain.bitcoin.network import com.tangem.blockchain.bitcoin.UnspentTransaction -import com.tangem.blockchain.bitcoin.network.BitcoinNetworkManager.Companion.SATOSHI_IN_BTC import com.tangem.blockchain.bitcoin.network.api.BlockcypherApi import com.tangem.blockchain.bitcoin.network.api.BlockcypherBody import com.tangem.blockchain.bitcoin.network.response.BlockcypherFee import com.tangem.blockchain.bitcoin.network.response.BlockcypherResponse +import com.tangem.blockchain.common.Blockchain import com.tangem.blockchain.common.extensions.Result import com.tangem.blockchain.common.extensions.SimpleResult import com.tangem.blockchain.common.extensions.retryIO @@ -14,6 +14,7 @@ import com.tangem.common.extensions.hexToBytes class BlockcypherProvider(private val api: BlockcypherApi, isTestNet: Boolean) : BitcoinProvider { private val blockchain = "btc" + private val decimals = Blockchain.Bitcoin.decimals.toInt() private val network = if (isTestNet) { BlockcypherNetwork.Test.network @@ -26,14 +27,14 @@ class BlockcypherProvider(private val api: BlockcypherApi, isTestNet: Boolean) : val addressData: BlockcypherResponse = retryIO { api.getAddressData(blockchain, network, address) } val unspents = addressData.txrefs?.map { UnspentTransaction( - it.amount!!.toBigDecimal().divide(SATOSHI_IN_BTC), + it.amount!!.toBigDecimal().movePointLeft(decimals), it.outputIndex!!.toLong(), it.hash!!.hexToBytes(), it.outputScript!!.hexToBytes() ) } return Result.Success(BitcoinAddressResponse( - addressData.balance!!.toBigDecimal().divide(SATOSHI_IN_BTC), + addressData.balance!!.toBigDecimal().movePointLeft(decimals), addressData.unconfirmedBalance != 0L, unspents)) @@ -43,27 +44,27 @@ class BlockcypherProvider(private val api: BlockcypherApi, isTestNet: Boolean) : } override suspend fun getFee(): Result { - try { + return try { val receivedFee: BlockcypherFee = retryIO { api.getFee(blockchain, network) } - return Result.Success( - BitcoinFee(receivedFee.minFeePerKb!!.toBigDecimal().divide(SATOSHI_IN_BTC), - receivedFee.normalFeePerKb!!.toBigDecimal().divide(SATOSHI_IN_BTC), - receivedFee.priorityFeePerKb!!.toBigDecimal().divide(SATOSHI_IN_BTC)) + Result.Success( + BitcoinFee(receivedFee.minFeePerKb!!.toBigDecimal().movePointLeft(decimals), + receivedFee.normalFeePerKb!!.toBigDecimal().movePointLeft(decimals), + receivedFee.priorityFeePerKb!!.toBigDecimal().movePointLeft(decimals)) ) } catch (error: Exception) { - return Result.Failure(error) + Result.Failure(error) } } override suspend fun sendTransaction(transaction: String): SimpleResult { - try { + return try { retryIO { api.sendTransaction( blockchain, network, BlockcypherBody(transaction), BlockcypherToken.getToken()) } - return SimpleResult.Success + SimpleResult.Success } catch (error: Exception) { - return SimpleResult.Failure(error) + SimpleResult.Failure(error) } } } diff --git a/blockchain/src/main/java/com/tangem/blockchain/common/extensions/BigDecimal.kt b/blockchain/src/main/java/com/tangem/blockchain/common/extensions/BigDecimal.kt new file mode 100644 index 0000000000..8014cd4174 --- /dev/null +++ b/blockchain/src/main/java/com/tangem/blockchain/common/extensions/BigDecimal.kt @@ -0,0 +1,7 @@ +package com.tangem.blockchain.common.extensions + +import java.math.BigDecimal + +fun BigDecimal.isZero() : Boolean { + return this.compareTo(BigDecimal.ZERO) == 0 +} \ No newline at end of file From 19f7fc1e271ca8a446c7873ce8c230d263ea5777 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 20 Apr 2020 20:24:38 +0300 Subject: [PATCH 2/6] Updated on 2026-08-14 --- .../com/tangem/blockchain_demo/BlockchainDemoActivity.kt | 6 +++--- .../tangem/blockchain/bitcoin/BitcoinTransactionBuilder.kt | 2 +- .../main/java/com/tangem}/common/extensions/BigDecimal.kt | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) rename {blockchain/src/main/java/com/tangem/blockchain => tangem-core/src/main/java/com/tangem}/common/extensions/BigDecimal.kt (70%) diff --git a/blockchain-demo/src/main/java/com/tangem/blockchain_demo/BlockchainDemoActivity.kt b/blockchain-demo/src/main/java/com/tangem/blockchain_demo/BlockchainDemoActivity.kt index 76d9ce0ffa..de300d429a 100644 --- a/blockchain-demo/src/main/java/com/tangem/blockchain_demo/BlockchainDemoActivity.kt +++ b/blockchain-demo/src/main/java/com/tangem/blockchain_demo/BlockchainDemoActivity.kt @@ -78,13 +78,13 @@ class BlockchainDemoActivity : AppCompatActivity() { walletManager.update() withContext(Dispatchers.Main) { binding.tvBalance.text = - "${walletManager.wallet.balances[AmountType.Coin]?.value + "${walletManager.wallet.balances[AmountType.Coin]?.value?.toPlainString() ?: "error"} ${walletManager.blockchain.currency}" val token = walletManager.wallet.balances[AmountType.Token] if (token != null) { - binding.tvBalance.text = token.currencySymbol + " " + token.value + binding.tvBalance.text = token.value?.toPlainString() + " " + token.currencySymbol binding.etSumToSend.text = Editable.Factory.getInstance().newEditable( - token.value.toString() + token.value?.toPlainString() ?: "" ) } else { binding.etSumToSend.text = diff --git a/blockchain/src/main/java/com/tangem/blockchain/bitcoin/BitcoinTransactionBuilder.kt b/blockchain/src/main/java/com/tangem/blockchain/bitcoin/BitcoinTransactionBuilder.kt index 769b5fd2de..fc3f1b41db 100644 --- a/blockchain/src/main/java/com/tangem/blockchain/bitcoin/BitcoinTransactionBuilder.kt +++ b/blockchain/src/main/java/com/tangem/blockchain/bitcoin/BitcoinTransactionBuilder.kt @@ -2,7 +2,7 @@ package com.tangem.blockchain.bitcoin import com.tangem.blockchain.common.TransactionData import com.tangem.blockchain.common.extensions.Result -import com.tangem.blockchain.common.extensions.isZero +import com.tangem.common.extensions.isZero import org.bitcoinj.core.* import org.bitcoinj.crypto.TransactionSignature import org.bitcoinj.script.Script diff --git a/blockchain/src/main/java/com/tangem/blockchain/common/extensions/BigDecimal.kt b/tangem-core/src/main/java/com/tangem/common/extensions/BigDecimal.kt similarity index 70% rename from blockchain/src/main/java/com/tangem/blockchain/common/extensions/BigDecimal.kt rename to tangem-core/src/main/java/com/tangem/common/extensions/BigDecimal.kt index 8014cd4174..6d23ffee09 100644 --- a/blockchain/src/main/java/com/tangem/blockchain/common/extensions/BigDecimal.kt +++ b/tangem-core/src/main/java/com/tangem/common/extensions/BigDecimal.kt @@ -1,4 +1,4 @@ -package com.tangem.blockchain.common.extensions +package com.tangem.common.extensions import java.math.BigDecimal From a50a6a5bbcac3f92d197196225d71ded62bf3c42 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 20 Apr 2020 20:27:26 +0300 Subject: [PATCH 3/6] Updated on 2026-08-14 --- .../com/tangem/blockchain/cardano/CardanoAddress.kt | 4 ++-- .../blockchain/cardano/CardanoWalletManager.kt | 3 ++- .../cardano/network/adalite/AdaliteApi.kt | 4 ++-- .../cardano/network/adalite/AdaliteProvider.kt | 13 +++++++++---- .../cardano/network/adalite/AdaliteResponse.kt | 2 +- .../blockchain/common/network/RetrofitBuilder.kt | 2 +- 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/blockchain/src/main/java/com/tangem/blockchain/cardano/CardanoAddress.kt b/blockchain/src/main/java/com/tangem/blockchain/cardano/CardanoAddress.kt index 3aecd18ff1..eac4edb59e 100644 --- a/blockchain/src/main/java/com/tangem/blockchain/cardano/CardanoAddress.kt +++ b/blockchain/src/main/java/com/tangem/blockchain/cardano/CardanoAddress.kt @@ -68,8 +68,8 @@ class CardanoAddressFactory { .end() .build()) - val hexAddress = addressBaos.toByteArray() - return hexAddress.encodeBase58() + val addressBytes = addressBaos.toByteArray() + return addressBytes.encodeBase58() } fun extendPublicKey(publicKey: ByteArray): ByteArray { diff --git a/blockchain/src/main/java/com/tangem/blockchain/cardano/CardanoWalletManager.kt b/blockchain/src/main/java/com/tangem/blockchain/cardano/CardanoWalletManager.kt index 86b5f25a51..6060986275 100644 --- a/blockchain/src/main/java/com/tangem/blockchain/cardano/CardanoWalletManager.kt +++ b/blockchain/src/main/java/com/tangem/blockchain/cardano/CardanoWalletManager.kt @@ -9,6 +9,7 @@ import com.tangem.blockchain.common.extensions.SimpleResult import com.tangem.blockchain.common.extensions.encodeBase64NoWrap import com.tangem.blockchain.wallets.CurrencyWallet import com.tangem.common.CompletionResult +import java.math.RoundingMode class CardanoWalletManager( private val cardId: String, @@ -61,7 +62,7 @@ class CardanoWalletManager( val size = transactionBuilder.getEstimateSize( TransactionData(amount, null, address, destination), walletPublicKey ) - val fee = (a + b * size).toBigDecimal() + val fee = (a + b * size).toBigDecimal().setScale(blockchain.decimals.toInt(), RoundingMode.UP) return Result.Success(listOf(Amount(blockchain.currency, fee, address, blockchain.decimals))) } } \ No newline at end of file diff --git a/blockchain/src/main/java/com/tangem/blockchain/cardano/network/adalite/AdaliteApi.kt b/blockchain/src/main/java/com/tangem/blockchain/cardano/network/adalite/AdaliteApi.kt index e394d424f6..ab74257edb 100644 --- a/blockchain/src/main/java/com/tangem/blockchain/cardano/network/adalite/AdaliteApi.kt +++ b/blockchain/src/main/java/com/tangem/blockchain/cardano/network/adalite/AdaliteApi.kt @@ -12,9 +12,9 @@ interface AdaliteApi { @Headers("Content-Type: application/json") @POST("/api/bulk/addresses/utxo") - suspend fun getUnspents(@Body address: String): AdaliteUnspents + suspend fun getUnspents(@Body addresses: List): AdaliteUnspents @Headers("Content-Type: application/json") @POST("/api/v2/txs/signed") - suspend fun sendTransaction(@Body adaliteBody: AdaliteSendBody): ResponseBody // List? + suspend fun sendTransaction(@Body adaliteBody: AdaliteSendBody): String // List? } \ No newline at end of file diff --git a/blockchain/src/main/java/com/tangem/blockchain/cardano/network/adalite/AdaliteProvider.kt b/blockchain/src/main/java/com/tangem/blockchain/cardano/network/adalite/AdaliteProvider.kt index ec05798ced..b0c242af79 100644 --- a/blockchain/src/main/java/com/tangem/blockchain/cardano/network/adalite/AdaliteProvider.kt +++ b/blockchain/src/main/java/com/tangem/blockchain/cardano/network/adalite/AdaliteProvider.kt @@ -1,11 +1,13 @@ package com.tangem.blockchain.cardano.network.adalite +import com.squareup.moshi.Json import com.tangem.blockchain.cardano.network.CardanoAddressResponse import com.tangem.blockchain.cardano.UnspentOutput import com.tangem.blockchain.cardano.network.api.AdaliteApi import com.tangem.blockchain.common.extensions.Result import com.tangem.blockchain.common.extensions.SimpleResult import com.tangem.blockchain.common.extensions.retryIO +import com.tangem.common.extensions.hexToBytes import kotlinx.coroutines.async import kotlinx.coroutines.coroutineScope @@ -15,7 +17,7 @@ class AdaliteProvider(private val api: AdaliteApi) { return try { coroutineScope { val addressDeferred = retryIO { async { api.getAddress(address) } } - val unspentsDeferred = retryIO { async { api.getUnspents(address) } } + val unspentsDeferred = retryIO { async { api.getUnspents(listOf(address)) } } val addressData = addressDeferred.await() val unspents = unspentsDeferred.await() @@ -24,7 +26,7 @@ class AdaliteProvider(private val api: AdaliteApi) { UnspentOutput( it.amountData!!.amount!!, it.outputIndex!!.toLong(), - it.hash!!.toByteArray() + it.hash!!.hexToBytes() ) } @@ -42,7 +44,7 @@ class AdaliteProvider(private val api: AdaliteApi) { suspend fun sendTransaction(transaction: String): SimpleResult { return try { - retryIO { api.sendTransaction(AdaliteSendBody(transaction)) } + val response = retryIO { api.sendTransaction(AdaliteSendBody(transaction)) } SimpleResult.Success } catch (exception: Exception) { SimpleResult.Failure(exception) @@ -50,4 +52,7 @@ class AdaliteProvider(private val api: AdaliteApi) { } } -data class AdaliteSendBody(val signedTransaction: String) \ No newline at end of file +data class AdaliteSendBody( + @Json(name = "signedTx") + val signedTransaction: String +) \ No newline at end of file diff --git a/blockchain/src/main/java/com/tangem/blockchain/cardano/network/adalite/AdaliteResponse.kt b/blockchain/src/main/java/com/tangem/blockchain/cardano/network/adalite/AdaliteResponse.kt index 4bc1f86894..d1561ef760 100644 --- a/blockchain/src/main/java/com/tangem/blockchain/cardano/network/adalite/AdaliteResponse.kt +++ b/blockchain/src/main/java/com/tangem/blockchain/cardano/network/adalite/AdaliteResponse.kt @@ -5,7 +5,7 @@ import com.squareup.moshi.JsonClass @JsonClass(generateAdapter = true) data class AdaliteAddress( - @Json(name = "final_balance") + @Json(name = "Right") var data: AdaliteAddressData? = null ) diff --git a/blockchain/src/main/java/com/tangem/blockchain/common/network/RetrofitBuilder.kt b/blockchain/src/main/java/com/tangem/blockchain/common/network/RetrofitBuilder.kt index afcffa0bfb..dec399633b 100644 --- a/blockchain/src/main/java/com/tangem/blockchain/common/network/RetrofitBuilder.kt +++ b/blockchain/src/main/java/com/tangem/blockchain/common/network/RetrofitBuilder.kt @@ -49,7 +49,7 @@ const val API_STELLAR = "https://horizon.stellar.org/" const val API_STELLAR_RESERVE = "https://horizon.sui.li/" const val API_STELLAR_TESTNET = "https://horizon-testnet.stellar.org/" const val API_BLOCKCHAIN_INFO = "https://blockchain.info/" -const val API_ADALITE = "https://explorer2.adalite.io" +const val API_ADALITE = "https://explorer3.adalite.io" const val API_ADALITE_RESERVE = "https://nodes.southeastasia.cloudapp.azure.com" const val API_RIPPLED = "https://s1.ripple.com:51234" const val API_RIPPLED_RESERVE = "https://s2.ripple.com:51234" \ No newline at end of file From c7543bb3ec2eb81afce4ac54c1e2e4f32d5a4c94 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 20 Apr 2020 20:43:16 +0300 Subject: [PATCH 4/6] Updated on 2026-08-14 --- .../tangem/blockchain/binance/BinanceWalletManager.kt | 4 ---- .../tangem/blockchain/bitcoin/BitcoinWalletManager.kt | 4 ---- .../blockchain/ethereum/EthereumWalletManager.kt | 11 ----------- .../com/tangem/blockchain/xrp/XrpWalletManager.kt | 5 ----- dependencies.gradle | 2 +- 5 files changed, 1 insertion(+), 25 deletions(-) diff --git a/blockchain/src/main/java/com/tangem/blockchain/binance/BinanceWalletManager.kt b/blockchain/src/main/java/com/tangem/blockchain/binance/BinanceWalletManager.kt index 5c131c16e0..1ecbc6a3a6 100644 --- a/blockchain/src/main/java/com/tangem/blockchain/binance/BinanceWalletManager.kt +++ b/blockchain/src/main/java/com/tangem/blockchain/binance/BinanceWalletManager.kt @@ -23,10 +23,6 @@ class BinanceWalletManager( private val transactionBuilder = BinanceTransactionBuilder(walletPublicKey, isTestNet) private val networkManager = BinanceNetworkManager(isTestNet) - init { - wallet.balances[AmountType.Coin] = Amount(null, blockchain, address) - } - override suspend fun update() { val result = networkManager.getInfo(address) when (result) { diff --git a/blockchain/src/main/java/com/tangem/blockchain/bitcoin/BitcoinWalletManager.kt b/blockchain/src/main/java/com/tangem/blockchain/bitcoin/BitcoinWalletManager.kt index a5079d804c..c026ccd4f9 100644 --- a/blockchain/src/main/java/com/tangem/blockchain/bitcoin/BitcoinWalletManager.kt +++ b/blockchain/src/main/java/com/tangem/blockchain/bitcoin/BitcoinWalletManager.kt @@ -25,10 +25,6 @@ class BitcoinWalletManager( private val transactionBuilder = BitcoinTransactionBuilder(isTestNet) private val networkManager = BitcoinNetworkManager(isTestNet) - init { - wallet.balances[AmountType.Coin] = Amount(null, blockchain, address) - } - override suspend fun update() { val response = networkManager.getInfo(address) when (response) { diff --git a/blockchain/src/main/java/com/tangem/blockchain/ethereum/EthereumWalletManager.kt b/blockchain/src/main/java/com/tangem/blockchain/ethereum/EthereumWalletManager.kt index 3999bdf7a3..f10284959d 100644 --- a/blockchain/src/main/java/com/tangem/blockchain/ethereum/EthereumWalletManager.kt +++ b/blockchain/src/main/java/com/tangem/blockchain/ethereum/EthereumWalletManager.kt @@ -37,17 +37,6 @@ class EthereumWalletManager( private var pendingTxCount = -1L private var txCount = -1L - init { - if (token != null) wallet.balances[AmountType.Token] = - Amount( - token.symbol, - null, - token.contractAddress, - token.decimals, - AmountType.Token) - wallet.balances[AmountType.Coin] = Amount(null, blockchain) - } - override suspend fun update() { val result = networkManager.getInfo(address, wallet.balances[AmountType.Token]?.address) when (result) { diff --git a/blockchain/src/main/java/com/tangem/blockchain/xrp/XrpWalletManager.kt b/blockchain/src/main/java/com/tangem/blockchain/xrp/XrpWalletManager.kt index cf6c8206a8..bb2379feb6 100644 --- a/blockchain/src/main/java/com/tangem/blockchain/xrp/XrpWalletManager.kt +++ b/blockchain/src/main/java/com/tangem/blockchain/xrp/XrpWalletManager.kt @@ -22,11 +22,6 @@ class XrpWalletManager( private val transactionBuilder = XrpTransactionBuilder(walletPublicKey) private val networkManager = XrpNetworkManager() - init { - wallet.balances[AmountType.Coin] = Amount(null, blockchain) - wallet.balances[AmountType.Reserve] = Amount(null, blockchain, type = AmountType.Reserve) - } - override suspend fun update() { val result = networkManager.getInfo(address) when (result) { diff --git a/dependencies.gradle b/dependencies.gradle index 030d85bfd8..3c7aaf12d8 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,4 +1,4 @@ ext.versions = [ kotlin : '1.3.72', - build_gradle: '3.6.2', + build_gradle: '3.6.3', ] From 81785a6b44f55bf907724542d418c088b0384a32 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 20 Apr 2020 21:00:26 +0300 Subject: [PATCH 5/6] Updated on 2026-08-14 --- .../java/com/tangem/blockchain_demo/BlockchainDemoActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blockchain-demo/src/main/java/com/tangem/blockchain_demo/BlockchainDemoActivity.kt b/blockchain-demo/src/main/java/com/tangem/blockchain_demo/BlockchainDemoActivity.kt index de300d429a..ce5a7efb8d 100644 --- a/blockchain-demo/src/main/java/com/tangem/blockchain_demo/BlockchainDemoActivity.kt +++ b/blockchain-demo/src/main/java/com/tangem/blockchain_demo/BlockchainDemoActivity.kt @@ -89,7 +89,7 @@ class BlockchainDemoActivity : AppCompatActivity() { } else { binding.etSumToSend.text = Editable.Factory.getInstance().newEditable( - walletManager.wallet.balances[AmountType.Coin]?.value.toString() + walletManager.wallet.balances[AmountType.Coin]?.value?.toPlainString() ) } binding.btnCheckFee.isEnabled = true From 452a4f05a202f766428e4d9637822e53503257cf Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 20 Apr 2020 21:20:38 +0300 Subject: [PATCH 6/6] Updated on 2026-08-14 --- .../blockchain/ethereum/network/EthereumNetworkManager.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/blockchain/src/main/java/com/tangem/blockchain/ethereum/network/EthereumNetworkManager.kt b/blockchain/src/main/java/com/tangem/blockchain/ethereum/network/EthereumNetworkManager.kt index b7318ba032..25fa28df4f 100644 --- a/blockchain/src/main/java/com/tangem/blockchain/ethereum/network/EthereumNetworkManager.kt +++ b/blockchain/src/main/java/com/tangem/blockchain/ethereum/network/EthereumNetworkManager.kt @@ -12,6 +12,7 @@ import kotlinx.coroutines.coroutineScope import org.kethereum.ETH_IN_WEI import java.math.BigDecimal import java.math.BigInteger +import java.math.RoundingMode class EthereumNetworkManager { @@ -70,8 +71,8 @@ class EthereumNetworkManager { private fun String.parseFee(gasLimit: Long): List { val gasPrice = this.responseToNumber().toBigDecimal() val minFee = gasPrice.multiply(gasLimit.toBigDecimal()) - val normalFee = minFee.multiply(BigDecimal(1.2)) - val priorityFee = minFee.multiply(BigDecimal(1.5)) + val normalFee = minFee.multiply(BigDecimal(1.2)).setScale(0, RoundingMode.HALF_UP) + val priorityFee = minFee.multiply(BigDecimal(1.5)).setScale(0, RoundingMode.HALF_UP) return listOf( minFee.convertFeeToEth(), normalFee.convertFeeToEth(),