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