Merge pull request #10 from hvarona/develop

Fix amount on bitcoin transactions
This commit is contained in:
hvarona 2018-11-21 19:52:44 -04:00 committed by GitHub
commit 8502272b25
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 123 additions and 122 deletions

View file

@ -219,7 +219,7 @@ public abstract class BitsharesFaucetApiGenerator {
public interface IWebService { public interface IWebService {
@Headers({"Content-Type: application/json"}) @Headers({"Content-Type: application/json"})
@POST("/api/v1/accounts") @POST("/faucet/api/v1/accounts")
Call<RegisterAccountResponse> getReg(@Body Map<String, HashMap> params); Call<RegisterAccountResponse> getReg(@Body Map<String, HashMap> params);
} }

View file

@ -52,8 +52,10 @@ public class CrystalApplication extends Application {
public static final String BITCOIN_SERVER_URLS[] ={ public static final String BITCOIN_SERVER_URLS[] ={
"https://insight.bitpay.com/", "https://test-insight.bitpay.com",
"https://testnet.blockexplorer.com/" "https://testnet.blockexplorer.com/",
//"https://insight.bitpay.com/"
}; };
public static final CryptoCurrency BITCOIN_CURRENCY = new CryptoCurrency("BTC",CryptoNet.BITCOIN,8); public static final CryptoCurrency BITCOIN_CURRENCY = new CryptoCurrency("BTC",CryptoNet.BITCOIN,8);

View file

@ -327,7 +327,6 @@ public class FileBackupManager implements FileServiceRequestsListener {
public static byte[] decompress(byte[] inputBytes, int which) { public static byte[] decompress(byte[] inputBytes, int which) {
InputStream in = null; InputStream in = null;
try { try {
System.out.println("Bytes: "+Util.bytesToHex(inputBytes));
ByteArrayInputStream input = new ByteArrayInputStream(inputBytes); ByteArrayInputStream input = new ByteArrayInputStream(inputBytes);
ByteArrayOutputStream output = new ByteArrayOutputStream(16*2048); ByteArrayOutputStream output = new ByteArrayOutputStream(16*2048);
if(which == Util.XZ) { if(which == Util.XZ) {

View file

@ -171,21 +171,24 @@ public class GeneralAccountManager implements CryptoAccountManager, CryptoNetInf
* @param txi * @param txi
*/ */
public void processTxi(Txi txi){ public void processTxi(Txi txi){
try {
System.out.println("GeneralAccountManager processingTxi " + txi.txid);
CrystalDatabase db = CrystalDatabase.getAppDatabase(this.context); CrystalDatabase db = CrystalDatabase.getAppDatabase(this.context);
List<BitcoinTransaction> btTransactions = db.bitcoinTransactionDao().getTransactionsByTxid(txi.txid); List<BitcoinTransaction> btTransactions = db.bitcoinTransactionDao().getTransactionsByTxid(txi.txid);
if(!btTransactions.isEmpty()){ if (!btTransactions.isEmpty()) {
for(BitcoinTransaction btTransaction : btTransactions) { System.out.println("GeneralAccountManager Transaction not null " + txi.txid);
for (BitcoinTransaction btTransaction : btTransactions) {
btTransaction.setConfirmations(txi.confirmations); btTransaction.setConfirmations(txi.confirmations);
CryptoCoinTransaction ccTransaction = db.transactionDao().getById(btTransaction.getCryptoCoinTransactionId()); CryptoCoinTransaction ccTransaction = db.transactionDao().getById(btTransaction.getCryptoCoinTransactionId());
if (!ccTransaction.isConfirmed() && btTransaction.getConfirmations() >= cryptoCoin.getCryptoNet().getConfirmationsNeeded()) { if (!ccTransaction.isConfirmed() && btTransaction.getConfirmations() >= cryptoCoin.getCryptoNet().getConfirmationsNeeded()) {
ccTransaction.setConfirmed(true); ccTransaction.setConfirmed(true);
db.transactionDao().insertTransaction(ccTransaction); db.transactionDao().insertTransaction(ccTransaction);
updateBalance(ccTransaction,(ccTransaction.getInput()?1:-1)*ccTransaction.getAmount(),db); updateBalance(ccTransaction, (ccTransaction.getInput() ? 1 : -1) * ccTransaction.getAmount(), db);
} }
db.bitcoinTransactionDao().insertBitcoinTransaction(btTransaction); db.bitcoinTransactionDao().insertBitcoinTransaction(btTransaction);
} }
}else { } else {
/*List<CryptoCoinTransaction> ccTransactions = new ArrayList(); /*List<CryptoCoinTransaction> ccTransactions = new ArrayList();
btTransactions = new ArrayList();*/ //TODO transactions involving multiples accounts btTransactions = new ArrayList();*/ //TODO transactions involving multiples accounts
CryptoCoinTransaction ccTransaction = new CryptoCoinTransaction(); CryptoCoinTransaction ccTransaction = new CryptoCoinTransaction();
@ -195,9 +198,9 @@ public class GeneralAccountManager implements CryptoAccountManager, CryptoNetInf
btTransaction.setFee((long) (txi.fee * Math.pow(10, cryptoCoin.getPrecision()))); btTransaction.setFee((long) (txi.fee * Math.pow(10, cryptoCoin.getPrecision())));
btTransaction.setConfirmations(txi.confirmations); btTransaction.setConfirmations(txi.confirmations);
ccTransaction.setDate(new Date(txi.time * 1000)); ccTransaction.setDate(new Date(txi.time * 1000));
if(txi.txlock || txi.confirmations >= cryptoCoin.getCryptoNet().getConfirmationsNeeded()) { if (txi.txlock || txi.confirmations >= cryptoCoin.getCryptoNet().getConfirmationsNeeded()) {
ccTransaction.setConfirmed(true); ccTransaction.setConfirmed(true);
}else{ } else {
ccTransaction.setConfirmed(false); ccTransaction.setConfirmed(false);
} }
@ -220,19 +223,19 @@ public class GeneralAccountManager implements CryptoAccountManager, CryptoNetInf
input.setScriptHex(vin.scriptSig.hex); input.setScriptHex(vin.scriptSig.hex);
BitcoinAddress address = db.bitcoinAddressDao().getdadress(addr); BitcoinAddress address = db.bitcoinAddressDao().getdadress(addr);
if(address != null){ if (address != null) {
if(ccTransaction.getAccountId() < 0){ if (ccTransaction.getAccountId() < 0) {
ccTransaction.setAccountId(address.getAccountId()); ccTransaction.setAccountId(address.getAccountId());
ccTransaction.setFrom(addr); ccTransaction.setFrom(addr);
ccTransaction.setInput(false); ccTransaction.setInput(false);
} }
if(ccTransaction.getAccountId()== address.getAccountId()){ if (ccTransaction.getAccountId() == address.getAccountId()) {
amount -= vin.value; amount -= (long) (vin.value * Math.pow(10, cryptoCoin.getPrecision()));
} }
} }
if(ccTransaction.getFrom() == null || ccTransaction.getFrom().isEmpty()){ if (ccTransaction.getFrom() == null || ccTransaction.getFrom().isEmpty()) {
ccTransaction.setFrom(addr); ccTransaction.setFrom(addr);
} }
@ -255,20 +258,21 @@ public class GeneralAccountManager implements CryptoAccountManager, CryptoNetInf
output.setOriginalTxId(txi.txid); output.setOriginalTxId(txi.txid);
gtxios.add(output); gtxios.add(output);
BitcoinAddress address = db.bitcoinAddressDao().getdadress(addr); BitcoinAddress address = db.bitcoinAddressDao().getdadress(addr);
if(address != null){ if (address != null) {
if(ccTransaction.getAccountId() < 0){ if (ccTransaction.getAccountId() < 0) {
ccTransaction.setAccountId(address.getAccountId()); ccTransaction.setAccountId(address.getAccountId());
ccTransaction.setInput(true); ccTransaction.setInput(true);
ccTransaction.setTo(addr); ccTransaction.setTo(addr);
} }
if(ccTransaction.getAccountId()== address.getAccountId()){ if (ccTransaction.getAccountId() == address.getAccountId()) {
amount += vout.value; amount += (long) (vout.value * Math.pow(10, cryptoCoin.getPrecision()));
} }
}else{ } else {
//TOOD multiple send address //TOOD multiple send address
if(ccTransaction.getTo() == null || ccTransaction.getTo().isEmpty()){ if (ccTransaction.getTo() == null || ccTransaction.getTo().isEmpty()) {
ccTransaction.setTo(addr); ccTransaction.setTo(addr);
} }
} }
@ -286,20 +290,23 @@ public class GeneralAccountManager implements CryptoAccountManager, CryptoNetInf
currency.setId(idCurrency); currency.setId(idCurrency);
} }
ccTransaction.setIdCurrency((int)currency.getId()); ccTransaction.setIdCurrency((int) currency.getId());
long ccId = db.transactionDao().insertTransaction(ccTransaction)[0]; long ccId = db.transactionDao().insertTransaction(ccTransaction)[0];
btTransaction.setCryptoCoinTransactionId(ccId); btTransaction.setCryptoCoinTransactionId(ccId);
long btId = db.bitcoinTransactionDao().insertBitcoinTransaction(btTransaction)[0]; long btId = db.bitcoinTransactionDao().insertBitcoinTransaction(btTransaction)[0];
for(BitcoinTransactionGTxIO gtxio : gtxios){ for (BitcoinTransactionGTxIO gtxio : gtxios) {
gtxio.setBitcoinTransactionId(btId); gtxio.setBitcoinTransactionId(btId);
db.bitcoinTransactionDao().insertBitcoinTransactionGTxIO(gtxio); db.bitcoinTransactionDao().insertBitcoinTransactionGTxIO(gtxio);
} }
if(ccTransaction.isConfirmed()) { if (ccTransaction.isConfirmed()) {
updateBalance(ccTransaction,amount,db); updateBalance(ccTransaction, amount, db);
} }
} }
}catch(Exception e){
e.printStackTrace();
}
} }
private void createGeneralAccount(CreateBitcoinAccountRequest request){ private void createGeneralAccount(CreateBitcoinAccountRequest request){

View file

@ -23,7 +23,7 @@ public class BitcoinCryptoNetVerifier extends CryptoNetVerifier{
CryptoNetManager.verifiedCryptoNetURL(cryptoCoin.getCryptoNet(), url, System.currentTimeMillis() - startTime); CryptoNetManager.verifiedCryptoNetURL(cryptoCoin.getCryptoNet(), url, System.currentTimeMillis() - startTime);
}else{ }else{
System.out.println("BitcoinCryptoNetVerifier bad genesis block " + value); System.out.println("BitcoinCryptoNetVerifier bad genesis block " + value + " " + url);
} }
//TODO bad genesis block //TODO bad genesis block
}else{ }else{

View file

@ -32,7 +32,6 @@ public abstract class CryptoNetManager {
public static String getURL(CryptoNet crypto, int index){ public static String getURL(CryptoNet crypto, int index){
if(TestedURLs.containsKey(crypto) && TestedURLs.get(crypto).size()>index){ if(TestedURLs.containsKey(crypto) && TestedURLs.get(crypto).size()>index){
System.out.println("Servers url list " + Arrays.toString(TestedURLs.get(crypto).toArray()));
return TestedURLs.get(crypto).get(index).getUrl(); return TestedURLs.get(crypto).get(index).getUrl();
} }
System.out.println("Servers " + crypto.getLabel()+" dioesn't have testedurl"); System.out.println("Servers " + crypto.getLabel()+" dioesn't have testedurl");

View file

@ -38,7 +38,6 @@ public class GetChainId extends BaseGrapheneHandler {
@Override @Override
public void onTextFrame(WebSocket websocket, WebSocketFrame frame) throws Exception { public void onTextFrame(WebSocket websocket, WebSocketFrame frame) throws Exception {
System.out.println("<<< "+frame.getPayloadText());
String response = frame.getPayloadText(); String response = frame.getPayloadText();
Type GetChainIdResponse = new TypeToken<WitnessResponse<String>>(){}.getType(); Type GetChainIdResponse = new TypeToken<WitnessResponse<String>>(){}.getType();
@ -55,7 +54,5 @@ public class GetChainId extends BaseGrapheneHandler {
@Override @Override
public void onFrameSent(WebSocket websocket, WebSocketFrame frame) throws Exception { public void onFrameSent(WebSocket websocket, WebSocketFrame frame) throws Exception {
if(frame.isTextFrame())
System.out.println(">>> "+frame.getPayloadText());
} }
} }

View file

@ -38,7 +38,6 @@ public class GetDatabaseVersion extends BaseGrapheneHandler {
@Override @Override
public void onTextFrame(WebSocket websocket, WebSocketFrame frame) throws Exception { public void onTextFrame(WebSocket websocket, WebSocketFrame frame) throws Exception {
System.out.println("<<< "+frame.getPayloadText());
String response = frame.getPayloadText(); String response = frame.getPayloadText();
Type GetChainIdResponse = new TypeToken<WitnessResponse<String>>(){}.getType(); Type GetChainIdResponse = new TypeToken<WitnessResponse<String>>(){}.getType();
@ -55,8 +54,6 @@ public class GetDatabaseVersion extends BaseGrapheneHandler {
@Override @Override
public void onFrameSent(WebSocket websocket, WebSocketFrame frame) throws Exception { public void onFrameSent(WebSocket websocket, WebSocketFrame frame) throws Exception {
if(frame.isTextFrame())
System.out.println(">>> "+frame.getPayloadText());
} }
public class VersionResponse{ public class VersionResponse{