Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
T
tangled
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
eriksson monteiro
tangled
Commits
59d98533
Commit
59d98533
authored
Nov 26, 2021
by
Eriksson Monteiro
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update millix node
parent
d7055843
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
81 additions
and
29 deletions
+81
-29
millix_node/api/rKclyiLtHx0dx55M/index.js
millix_node/api/rKclyiLtHx0dx55M/index.js
+4
-2
millix_node/core/config/config.js
millix_node/core/config/config.js
+2
-2
millix_node/core/wallet/wallet-sync.js
millix_node/core/wallet/wallet-sync.js
+9
-6
millix_node/core/wallet/wallet-transaction-consensus.js
millix_node/core/wallet/wallet-transaction-consensus.js
+0
-16
millix_node/database/database.js
millix_node/database/database.js
+13
-2
millix_node/database/repositories/transaction.js
millix_node/database/repositories/transaction.js
+35
-0
millix_node/database/shard.js
millix_node/database/shard.js
+15
-0
millix_node/index.js
millix_node/index.js
+1
-1
millix_node/net/network.js
millix_node/net/network.js
+2
-0
No files found.
millix_node/api/rKclyiLtHx0dx55M/index.js
View file @
59d98533
...
...
@@ -44,8 +44,10 @@ class _rKclyiLtHx0dx55M extends Endpoint {
unstable
},
network
:
{
online
:
network
.
initialized
,
peer_count
:
network
.
registeredClients
.
length
online
:
network
.
initialized
,
peer_count
:
network
.
registeredClients
.
length
,
node_is_public
:
network
.
nodeIsPublic
===
undefined
?
'
unknown
'
:
network
.
nodeIsPublic
,
node_public_ip
:
network
.
nodePublicIp
},
log
:
{
log_count
:
logManager
.
lastIdx
,
...
...
millix_node/core/config/config.js
View file @
59d98533
...
...
@@ -11,7 +11,7 @@ export const NODE_HOST = 'localhost';
export
const
NODE_HOST_FORCE
=
false
;
export
const
NODE_BIND_IP
=
'
0.0.0.0
'
;
export
const
NODE_NAT_PMP
=
true
;
export
const
NODE_NAT_PMP_CHECK
=
fals
e
;
export
const
NODE_NAT_PMP_CHECK
=
tru
e
;
export
const
WEBSOCKET_PROTOCOL
=
'
wss://
'
;
export
const
RPC_INTERFACE
=
'
0.0.0.0
'
;
export
const
NODE_PUBLIC
=
true
;
...
...
@@ -772,7 +772,7 @@ export const DATABASE_ENGINE = 'sqlite';
export
const
DATABASE_CONNECTION
=
{};
export
const
MILLIX_CIRCULATION
=
9
e15
;
export
const
NODE_MILLIX_BUILD_DATE
=
1631097631
;
export
const
NODE_MILLIX_VERSION
=
'
1.11.1
1
-tangled
'
;
export
const
NODE_MILLIX_VERSION
=
'
1.11.1
5
-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
;
...
...
millix_node/core/wallet/wallet-sync.js
View file @
59d98533
...
...
@@ -115,9 +115,10 @@ export class WalletSync {
database
.
applyShards
(
shardID
=>
{
const
transactionRepository
=
database
.
getRepository
(
'
transaction
'
,
shardID
);
return
transactionRepository
.
listTransactionInput
({
output_transaction_id
:
transactionID
,
output_shard_id
:
outputShardID
,
output_position
:
outputPosition
output_transaction_id
:
transactionID
,
output_shard_id
:
outputShardID
,
output_position
:
outputPosition
,
'
``transaction`.status!
'
:
3
}).
then
(
inputList
=>
{
const
spendingInputs
=
[];
return
new
Promise
((
resolve
)
=>
{
...
...
@@ -211,7 +212,8 @@ export class WalletSync {
return
transactionRepository
.
listTransactionInput
({
output_transaction_id
:
transactionID
,
output_shard_id
:
outputShardID
,
output_position
:
outputPosition
output_position
:
outputPosition
,
'
``transaction`.status!
'
:
3
}).
then
(
inputList
=>
{
const
spendingInputs
=
[];
return
new
Promise
((
resolve
)
=>
{
...
...
@@ -261,7 +263,7 @@ export class WalletSync {
path
:
path
.
join
(
os
.
homedir
(),
config
.
DATABASE_CONNECTION
.
FOLDER
+
config
.
DATABASE_CONNECTION
.
FILENAME_TRANSACTION_SPEND_QUEUE
),
setImmediate
:
global
.
setImmediate
}),
batchSize
:
config
.
NODE_CONNECTION_OUTBOUND_MAX
,
batchSize
:
this
.
CARGO_MAX_LENGHT
,
precondition
:
function
(
cb
)
{
if
(
network
.
registeredClients
.
length
>
0
)
{
cb
(
null
,
true
);
...
...
@@ -583,7 +585,8 @@ export class WalletSync {
transaction_output_id
:
transactionOutputID
});
}
}
else
{
}
else
{
if
(
!
queuedTransactionOutputs
.
has
(
transactionOutputID
))
{
this
.
transactionSpendQueue
.
push
({
transaction_output_id
:
transactionOutputID
...
...
millix_node/core/wallet/wallet-transaction-consensus.js
View file @
59d98533
...
...
@@ -147,15 +147,6 @@ export class WalletTransactionConsensus {
});
}
_updateDoubleSpendTransaction
(
transactions
,
doubleSpendTransactionInput
)
{
console
.
log
(
'
[wallet-transaction-consensus] setting
'
,
transactions
.
length
,
'
transaction as double spend
'
);
async
.
eachSeries
(
transactions
,
(
transaction
,
callback
)
=>
{
database
.
getRepository
(
'
transaction
'
)
.
setTransactionAsDoubleSpend
(
transaction
,
doubleSpendTransactionInput
)
.
then
(()
=>
callback
());
});
}
_validateTransaction
(
transaction
,
nodeID
,
depth
=
0
,
transactionVisitedSet
=
new
Set
(),
doubleSpendSet
=
new
Set
(),
proxyTimeStart
=
null
,
proxyTimeLimit
=
null
)
{
let
transactionID
;
if
(
typeof
(
transaction
)
===
'
object
'
)
{
...
...
@@ -280,12 +271,6 @@ export class WalletTransactionConsensus {
data
})
=>
{
if
(
data
&&
(
responseType
===
'
transaction_double_spend
'
||
responseType
===
'
transaction_valid
'
))
{
let
doubleSpendInputs
=
_
.
filter
(
doubleSpendTransactions
,
i
=>
i
.
transaction_id
!==
data
.
transaction_id
);
doubleSpendInputs
.
forEach
(
doubleSpendInput
=>
doubleSpendSet
.
add
(
doubleSpendInput
.
transaction_id
));
this
.
_updateDoubleSpendTransaction
(
doubleSpendInputs
,
input
);
}
if
((
responseType
===
'
transaction_double_spend
'
&&
!
data
)
||
(
responseType
===
'
transaction_valid
'
&&
data
.
transaction_id
!==
transaction
.
transaction_id
))
{
return
reject
({
...
...
@@ -417,7 +402,6 @@ export class WalletTransactionConsensus {
.
then
(()
=>
callback
(
null
,
true
))
.
catch
((
err
)
=>
{
if
(
err
&&
err
.
cause
===
'
transaction_double_spend
'
&&
!
err
.
transaction_input_double_spend
)
{
this
.
_updateDoubleSpendTransaction
([
transaction
],
srcTransaction
);
err
.
transaction_input_double_spend
=
_
.
pick
(
srcTransaction
,
[
'
output_transaction_id
'
,
'
output_position
'
,
...
...
millix_node/database/database.js
View file @
59d98533
...
...
@@ -472,7 +472,7 @@ export class Database {
}
if
(
orderBy
)
{
if
(
orderBy
.
trim
().
split
(
"
"
).
length
===
1
)
{
if
(
orderBy
.
trim
().
split
(
'
'
).
length
===
1
)
{
orderBy
+=
'
asc
'
;
}
const
regExp
=
/^
(?<
column>
\w
+
)
(?<
order>asc|desc
)
$/
.
exec
(
orderBy
);
...
...
@@ -661,7 +661,18 @@ export class Database {
else
{
callback
();
}
},
()
=>
resolve
());
},
()
=>
{
async
.
eachSeries
(
_
.
keys
(
this
.
shards
),
(
shardID
,
callback
)
=>
{
if
(
this
.
shards
[
shardID
].
checkup
)
{
this
.
shards
[
shardID
].
checkup
().
then
(()
=>
callback
());
}
else
{
callback
();
}
},
()
=>
{
resolve
();
});
});
});
}
}
...
...
millix_node/database/repositories/transaction.js
View file @
59d98533
...
...
@@ -2690,6 +2690,41 @@ export default class Transaction {
});
});
}
checkup
()
{
return
new
Promise
(
resolve
=>
{
this
.
database
.
exec
(
`
create temporary table transaction_unspent as
with outputs
as (select o.transaction_id, o.output_position
from transaction_output o
inner join transaction_input i
on o.transaction_id =
i.output_transaction_id and
o.output_position =
i.output_position
where o.is_stable = 1
and o.status != 3
and o.is_spent = 1
and i.status = 3)
select distinct o.transaction_id, o.output_position
from outputs o
left join transaction_input i
on i.output_transaction_id =
o.transaction_id and
i.output_position =
o.output_position and
i.status != 3
where i.transaction_id is NULL;
update transaction_output
set is_spent = 0
where transaction_id in
(select transaction_id from transaction_unspent);
drop table if exists transaction_unspent;`
,
()
=>
{
resolve
();
});
});
}
}
millix_node/database/shard.js
View file @
59d98533
...
...
@@ -6,6 +6,8 @@ import path from 'path';
import
{
Database
}
from
'
./database
'
;
import
eventBus
from
'
../core/event-bus
'
;
import
os
from
'
os
'
;
import
async
from
'
async
'
;
import
_
from
'
lodash
'
;
export
default
class
Shard
{
constructor
(
databaseFile
,
shardID
)
{
...
...
@@ -145,4 +147,17 @@ export default class Shard {
});
}
checkup
()
{
return
new
Promise
(
resolve
=>
{
async
.
eachSeries
(
_
.
keys
(
this
.
repositories
),
(
repositoryName
,
callback
)
=>
{
if
(
this
.
repositories
[
repositoryName
].
checkup
)
{
this
.
repositories
[
repositoryName
].
checkup
().
then
(()
=>
callback
());
}
else
{
callback
();
}
},
()
=>
resolve
());
});
}
}
millix_node/index.js
View file @
59d98533
...
...
@@ -126,6 +126,6 @@ db.initialize()
});
}
});
//millix v1.11.1
1
-tangled
//millix v1.11.1
5
-tangled
\ No newline at end of file
millix_node/net/network.js
View file @
59d98533
...
...
@@ -34,6 +34,7 @@ class Network {
this
.
_bidirectionaInboundConnectionCount
=
0
;
this
.
_wss
=
null
;
this
.
nodeID
=
null
;
this
.
nodeIsPublic
=
undefined
;
this
.
certificatePem
=
null
;
this
.
certificatePrivateKeyPem
=
null
;
this
.
nodeConnectionID
=
this
.
generateNewID
();
...
...
@@ -858,6 +859,7 @@ class Network {
_onNATCheckResponse
(
content
,
ws
)
{
console
.
log
(
'
[network] on natcheck response
'
,
content
);
this
.
nodeIsPublic
=
content
.
is_valid_nat
;
}
_natCheckTryConnect
(
url
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment