Commit ae060b67 authored by Eriksson Monteiro's avatar Eriksson Monteiro

update millix node: fix wallet transaction sync

parent a1f33a95
......@@ -772,7 +772,7 @@ export const DATABASE_ENGINE = 'sqlite';
export const DATABASE_CONNECTION = {};
export const MILLIX_CIRCULATION = 9e15;
export const NODE_MILLIX_BUILD_DATE = 1640009160;
export const NODE_MILLIX_VERSION = '1.14.9-tangled';
export const NODE_MILLIX_VERSION = '1.14.10-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;
......
import config from '../config/config';
import genesisConfig from './genesis-config';
import objectHash from '../crypto/object-hash';
import wallet from '../wallet/wallet';
import ntp from '../ntp';
import api from '../../api/server';
import database from '../../database/database';
export function generateGenesisUnit(genesisAddressObj, outputAddressList = []) {
const defaultAddressVersion = database.getRepository('address').getDefaultAddressVersion();
const genesisAddress = genesisAddressObj.address_base;
console.log('>> composing genesis unit');
console.log('>> payout address: ' + genesisAddressObj.address);
let arrOutputs = [];
let remainingAmount = config.MILLIX_CIRCULATION;
let budget = Math.round(config.MILLIX_CIRCULATION / outputAddressList.length);
let outputIndex = 0;
for (let address of outputAddressList) {
arrOutputs.push({
address_base : address,
address_version : defaultAddressVersion.version,
address_key_identifier: address,
amount : budget,
output_position : outputIndex
});
remainingAmount -= budget;
outputIndex++;
}
if (remainingAmount > 0) {
arrOutputs.push({
address_base : genesisAddress,
address_version : defaultAddressVersion.version,
'address_key_identifier': genesisAddress,
amount : remainingAmount,
output_position : outputIndex
});
}
let generateGenesisTransaction = {
transaction_input_list : [
{
type : 'issue',
input_position : 0,
address_base : genesisAddress,
address_version : defaultAddressVersion.version,
'address_key_identifier': genesisAddress
}
],
transaction_output_list : arrOutputs,
transaction_signature_list: [
{
address_base : genesisAddress,
address_attribute: genesisAddressObj.address_attribute
}
]
};
let nowTimestamp = Math.round(ntp.now().getTime() / 1000);
let nodeID = api.nodeID;
let baseShardInfo = {
node_id_origin: nodeID,
shard_date : nowTimestamp,
shard_type : 'protocol'
};
let shardInfo = {
...baseShardInfo,
node_signature: wallet.sign(genesisAddressObj, baseShardInfo)
};
genesisConfig.genesis_shard_id = objectHash.getCHash288(shardInfo); //node_id_origin,
// shard_date,
// shard_type,
// node_signature
shardInfo['shard_id'] = genesisConfig.genesis_shard_id;
generateGenesisTransaction['payload_hash'] = objectHash.getCHash288(generateGenesisTransaction);
generateGenesisTransaction['transaction_date'] = new Date(nowTimestamp * 1000).toISOString();
generateGenesisTransaction['node_id_origin'] = nodeID;
generateGenesisTransaction['shard_id'] = genesisConfig.genesis_shard_id;
generateGenesisTransaction['version'] = config.WALLET_TRANSACTION_DEFAULT_VERSION;
generateGenesisTransaction.transaction_signature_list[0]['signature'] = wallet.sign(genesisAddressObj, generateGenesisTransaction);
let transactionID = objectHash.getCHash288(generateGenesisTransaction);
generateGenesisTransaction['transaction_id'] = transactionID;
generateGenesisTransaction['transaction_parent_list'] = [];
genesisConfig.genesis_transaction = transactionID;
console.log('>> genesis unit input assembled:', JSON.stringify(generateGenesisTransaction, null, '\t'));
console.log('>> shard info:', shardInfo);
return generateGenesisTransaction;
}
import {generateGenesisUnit} from './generator';
import database from '../../database/database';
import config from '../config/config';
import request from 'request';
import genesisConfig from './genesis-config';
import peer from '../../net/peer';
import walletUtils from '../wallet/wallet-utils';
class Genesis {
constructor() {
}
store(transaction) {
return walletUtils.verifyTransaction(transaction)
.then(isValid => {
if (!isValid) {
throw Error('Invalid genesis transaction');
}
const transactionRepository = database.getRepository('transaction');
return transactionRepository
.addTransactionFromObject(transaction)
.then(t => peer.transactionSend(t))
.then(() => transactionRepository.setTransactionAsStable(transaction.transaction_id))
.then(() => transactionRepository.setOutputAsStable(transaction.transaction_id));
});
}
initialize(walletID) {
return database.getRepository('keychain').getWalletAddresses(walletID)
.then(addresses => this.store(generateGenesisUnit(addresses[0])))
.then(() => {
if (config.MODE_TEST) {
request.post('http://' + config.NODE_TEST_HOST + ':' + config.NODE_TEST_PORT + '/genesis', {
json: true,
body: {genesis: genesisConfig.genesis_transaction}
});
}
});
}
}
export default new Genesis();
......@@ -318,12 +318,12 @@ export class WalletSync {
const transactionOutput = transaction.transaction_output_list[outputPosition];
if (walletKeyIdentifierSet.has(transactionOutput.address_key_identifier)) {
this.transactionSpendWalletQueue.push({
transaction_output_id: `${transactionOutput.transaction_id}_${transactionOutput.shard_id}_${transactionOutput.output_position}`
transaction_output_id: `${transaction.transaction_id}_${transaction.shard_id}_${transactionOutput.output_position}`
});
}
else {
this.transactionSpendQueue.push({
transaction_output_id: `${transactionOutput.transaction_id}_${transactionOutput.shard_id}_${transactionOutput.output_position}`
transaction_output_id: `${transaction.transaction_id}_${transaction.shard_id}_${transactionOutput.output_position}`
});
}
}
......
......@@ -125,6 +125,6 @@ db.initialize()
});
}
});
//millix v1.14.9-tangled
//millix v1.14.10-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