diff --git a/app/src/main/java/com/tangem/data/network/AdaliteApi.java b/app/src/main/java/com/tangem/data/network/AdaliteApi.java index a081ba8862..c8f84c7283 100644 --- a/app/src/main/java/com/tangem/data/network/AdaliteApi.java +++ b/app/src/main/java/com/tangem/data/network/AdaliteApi.java @@ -1,5 +1,6 @@ package com.tangem.data.network; +import com.tangem.data.network.model.AdaliteBody; import com.tangem.data.network.model.AdaliteResponse; import com.tangem.data.network.model.AdaliteResponseUtxo; @@ -25,5 +26,5 @@ public interface AdaliteApi { @Headers("Content-Type: application/json") @POST(ServerApiAdalite.ADALITE_SEND) - Call adaliteSend(@Body String rawTx ); + Call adaliteSend(@Body AdaliteBody adaliteBody); } diff --git a/app/src/main/java/com/tangem/data/network/ServerApiAdalite.java b/app/src/main/java/com/tangem/data/network/ServerApiAdalite.java index f5192f2034..0dd2db15c2 100644 --- a/app/src/main/java/com/tangem/data/network/ServerApiAdalite.java +++ b/app/src/main/java/com/tangem/data/network/ServerApiAdalite.java @@ -2,6 +2,7 @@ package com.tangem.data.network; import android.util.Log; +import com.tangem.data.network.model.AdaliteBody; import com.tangem.data.network.model.AdaliteResponse; import com.tangem.data.network.model.AdaliteResponseUtxo; @@ -19,7 +20,7 @@ public class ServerApiAdalite { public static final String ADALITE_ADDRESS = "/api/addresses/summary/{address}"; public static final String ADALITE_UNSPENT_OUTPUTS = "/api/bulk/addresses/utxo"; // public static final String ADALITE_TRANSACTION = "/api/txs/raw/{txId}}"; - public static final String ADALITE_SEND = "/tx/send"; + public static final String ADALITE_SEND = "/api/v2/txs/signed"; private int requestsCount = 0; @@ -46,7 +47,7 @@ public class ServerApiAdalite { public void requestData(String method, String wallet, String tx) { requestsCount++; - String adaliteURL = "https://explorer.adalite.io"; //TODO: make random selection + String adaliteURL = "https://explorer2.adalite.io"; //TODO: make random selection this.lastNode = adaliteURL; //TODO: show node instead of URL Retrofit retrofitAdalite = new Retrofit.Builder() @@ -90,7 +91,7 @@ public class ServerApiAdalite { // break; case ADALITE_SEND: - call = adaliteApi.adaliteSend(tx); + call = adaliteApi.adaliteSend(new AdaliteBody(tx)); break; default: diff --git a/app/src/main/java/com/tangem/data/network/model/AdaliteBody.java b/app/src/main/java/com/tangem/data/network/model/AdaliteBody.java new file mode 100644 index 0000000000..a8208d01cf --- /dev/null +++ b/app/src/main/java/com/tangem/data/network/model/AdaliteBody.java @@ -0,0 +1,9 @@ +package com.tangem.data.network.model; + +public class AdaliteBody { + private String signedTx; + + public AdaliteBody(String signedTx) { + this.signedTx = signedTx; + } +} diff --git a/app/src/main/java/com/tangem/domain/wallet/cardano/CardanoEngine.java b/app/src/main/java/com/tangem/domain/wallet/cardano/CardanoEngine.java index 9b3e4d2436..939266a6b1 100644 --- a/app/src/main/java/com/tangem/domain/wallet/cardano/CardanoEngine.java +++ b/app/src/main/java/com/tangem/domain/wallet/cardano/CardanoEngine.java @@ -2,6 +2,7 @@ package com.tangem.domain.wallet.cardano; import android.net.Uri; import android.text.InputFilter; +import android.util.Base64; import android.util.Log; import com.tangem.data.network.ServerApiAdalite; @@ -129,7 +130,7 @@ public class CardanoEngine extends CoinEngine { @Override public String getFeeCurrency() { - return "BTC"; + return "ADA"; } @Override @@ -396,8 +397,9 @@ public class CardanoEngine extends CoinEngine { } CborBuilder cborBuilder = new CborBuilder(); - ArrayBuilder inputsArray = cborBuilder.startArray(); - ArrayBuilder outputsArray = cborBuilder.startArray(); + ArrayBuilder txArray = cborBuilder.addArray(); + ArrayBuilder> inputsArray = txArray.startArray(); + ArrayBuilder> outputsArray = txArray.startArray(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); //Inputs @@ -443,11 +445,14 @@ public class CardanoEngine extends CoinEngine { inputsArray.end(); outputsArray.end(); + + txArray.addMap().end(); + baos.reset(); new CborEncoder(baos).encode(cborBuilder.build()); byte[] txBody = baos.toByteArray(); - final Blake2b blake2b = Blake2b.Digest.newInstance(28); + final Blake2b blake2b = Blake2b.Digest.newInstance(32);//28? byte[] txHash = blake2b.digest(txBody); baos.reset(); @@ -500,7 +505,7 @@ public class CardanoEngine extends CoinEngine { baos.reset(); new CborEncoder(baos).encode(new CborBuilder() .addArray() - .add(ctx.getCard().getCardPublicKey()) + .add(ctx.getCard().getWalletPublicKey()) .add(signFromCard) .end() .build()); @@ -526,6 +531,8 @@ public class CardanoEngine extends CoinEngine { .end() .build()); byte[] txForSend = baos.toByteArray(); + notifyOnNeedSendTransaction(txForSend); + String hex = BTCUtils.toHex(txForSend); return txForSend; } }; @@ -616,7 +623,8 @@ public class CardanoEngine extends CoinEngine { @Override public void requestSendTransaction(BlockchainRequestsCallbacks blockchainRequestsCallbacks, byte[] txForSend) { final ServerApiAdalite serverApiAdalite = new ServerApiAdalite(); - final String txStr = BTCUtils.toHex(txForSend); + final String txStr = Base64.encodeToString(txForSend, Base64.NO_WRAP); + // BTCUtils.toHex(txForSend); final ServerApiAdalite.ResponseListener responseListener = new ServerApiAdalite.ResponseListener() { @Override