Commit ecfd2524 authored by Eriksson Monteiro's avatar Eriksson Monteiro

update millix-node: fix wallet sync

parent 2f255289
......@@ -2,7 +2,7 @@
<br>
<a href="#"><img src="https://github.com/millix/millix-wallet/blob/master/app/icon.png?raw=true" alt="millix node" width="200"></a>
<br>
millix node <small>v1.17.0</small>
millix node <small>v1.17.2</small>
<br>
</h1>
......
......@@ -779,8 +779,8 @@ export const NETWORK_SHORT_TIME_WAIT_MAX = 1500;
export const DATABASE_ENGINE = 'sqlite';
export const DATABASE_CONNECTION = {};
export const MILLIX_CIRCULATION = 9e15;
export const NODE_MILLIX_BUILD_DATE = 1649083382;
export const NODE_MILLIX_VERSION = '1.17.0-tangled';
export const NODE_MILLIX_BUILD_DATE = 1649203461;
export const NODE_MILLIX_VERSION = '1.17.2-tangled';
export const DATA_BASE_DIR_MAIN_NETWORK = './millix-tangled';
export const DATA_BASE_DIR_TEST_NETWORK = './millix-tangled';
let DATA_BASE_DIR = MODE_TEST_NETWORK ? DATA_BASE_DIR_TEST_NETWORK : DATA_BASE_DIR_MAIN_NETWORK;
......
......@@ -309,7 +309,7 @@ export class WalletSync {
}).then(() => this.updateSyncTransactionSpend());
}
syncTransactionSpendingOutputs(transaction) {
syncTransactionSpendingOutputs(transaction, isModeFullSync) {
const walletKeyIdentifierSet = new Set([
wallet.getKeyIdentifier(),
...config.EXTERNAL_WALLET_KEY_IDENTIFIER
......@@ -321,7 +321,7 @@ export class WalletSync {
transaction_output_id: `${transaction.transaction_id}_${transaction.shard_id}_${transactionOutput.output_position}`
});
}
else {
else if (isModeFullSync) {
this.transactionSpendQueue.push({
transaction_output_id: `${transaction.transaction_id}_${transaction.shard_id}_${transactionOutput.output_position}`
});
......
......@@ -806,9 +806,9 @@ export class WalletTransactionConsensus {
const transactionRepository = database.getRepository('transaction', shardID);
transactionRepository.getTransactionObject(data.transaction_id_fail)
.then(transaction => transaction ? resolve(transactionRepository.normalizeTransactionObject(transaction)) : reject());
}).then(transaction => peer.transactionSendToNode(transaction, ws));
});
}).then(transaction => {
if (!transaction) {
if (!transaction && config.MODE_NODE_SYNC_FULL) {
peer.transactionSyncRequest(data.transaction_id_fail, {dispatch_request: true}).then(_ => _).catch(_ => _);
return;
}
......
......@@ -843,8 +843,6 @@ class Wallet {
_onNewTransaction(data, ws, isRequestedBySync) {
let node = ws.node;
let connectionID = ws.connectionID;
let transaction = _.cloneDeep(data.transaction);
if (data.routing && data.routing_request_node_id !== network.nodeID) {
......@@ -965,9 +963,9 @@ class Wallet {
walletSync.clearTransactionSync(transaction.transaction_id);
if (config.MODE_NODE_SYNC_FULL || hasKeyIdentifier) {
walletSync.syncTransactionSpendingOutputs(transaction, config.MODE_NODE_SYNC_FULL);
if (config.MODE_NODE_SYNC_FULL) {
this.transactionSpendRequest(transaction.transaction_id, syncPriority).then(_ => _).catch(_ => _);
walletSync.syncTransactionSpendingOutputs(transaction);
if (transaction.transaction_id !== genesisConfig.genesis_transaction) {
_.each(transaction.transaction_input_list, inputTransaction => {
......@@ -996,6 +994,8 @@ class Wallet {
});
}
});
}
_.each(transaction.transaction_parent_list, parentTransactionID => {
if (!this._transactionReceivedFromNetwork[parentTransactionID]) {
database.firstShards((shardID) => {
......@@ -1013,12 +1013,6 @@ class Wallet {
}
});
}
}
if (!isRequestedBySync || hasKeyIdentifier) {
let ws = network.getWebSocketByID(connectionID);
peer.transactionSend(data.transaction, ws);
}
if (hasKeyIdentifier) {
setTimeout(() => walletTransactionConsensus.doValidateTransaction(), 0);
......@@ -1116,7 +1110,7 @@ class Wallet {
}, ws);
}
}
else {
else if (config.MODE_NODE_SYNC_FULL) {
console.log(`[wallet] sending transaction ${data.transaction_id} not found to node ${ws.nodeID} (response time: ${Date.now() - startTimestamp}ms)`);
peer.transactionSyncResponse({
transaction : {transaction_id: data.transaction_id},
......
......@@ -1334,6 +1334,11 @@ export default class Transaction {
and o2.is_double_spend = 0
)
where transaction_id in (select output_transaction_id from transaction_input where transaction_id = "${transactionID}");
update 'transaction'
set status = 3,
is_stable = 1,
stable_date = CAST(strftime('%s', 'now') AS INTEGER)
where transaction_id in (select output_transaction_id from transaction_input where transaction_id = "${transactionID}");
`;
this.database.exec(sql, (err) => {
if (err) {
......@@ -2220,6 +2225,9 @@ export default class Transaction {
and o2.is_double_spend = 0
)
WHERE transaction_id IN (SELECT output_transaction_id FROM transaction_input WHERE transaction_id = "${transactionID}");
UPDATE 'transaction' AS t
SET is_stable = 1, stable_date = CAST (strftime('%s', 'now') AS INTEGER)
WHERE transaction_id IN (SELECT output_transaction_id FROM transaction_input WHERE transaction_id = "${transactionID}");
`, (err) => {
if (err) {
return reject(err);
......
......@@ -125,7 +125,7 @@ db.initialize()
});
}
});
//millix v1.17.0-tangled
//millix v1.17.2-tangled
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment