Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
G
Goshimmer_without_tipselection
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
COLLET Ismael
Goshimmer_without_tipselection
Commits
69d38bd5
Commit
69d38bd5
authored
5 years ago
by
Wolfgang Welz
Browse files
Options
Downloads
Patches
Plain Diff
Fix linter errors and warnings
parent
e573579b
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
43
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
plugins/tangle/solidifier.go
+2
-2
2 additions, 2 deletions
plugins/tangle/solidifier.go
plugins/tangle/transaction.go
+23
-25
23 additions, 25 deletions
plugins/tangle/transaction.go
plugins/tangle/transaction_metadata.go
+95
-95
95 additions, 95 deletions
plugins/tangle/transaction_metadata.go
with
120 additions
and
122 deletions
plugins/tangle/solidifier.go
+
2
−
2
View file @
69d38bd5
...
...
@@ -23,7 +23,7 @@ func configureSolidifier(plugin *node.Plugin) {
func
checkSolidity
(
transaction
*
Transaction
)
(
result
bool
,
err
errors
.
IdentifiableError
)
{
// abort if transaction is solid already
txMetadata
,
metaDataErr
:=
transaction
.
GetMetaData
()
if
e
rr
!=
nil
{
if
metaDataE
rr
!=
nil
{
err
=
metaDataErr
return
...
...
@@ -36,7 +36,7 @@ func checkSolidity(transaction *Transaction) (result bool, err errors.Identifiab
// check solidity of branch transaction if it is not genesis
if
branchTransactionHash
:=
transaction
.
GetBranchTransactionHash
();
branchTransactionHash
!=
TRANSACTION_NULL_HASH
{
// abort if branch transaction is missing
if
branchTransaction
,
branchErr
:=
GetTransaction
(
branchTransactionHash
);
e
rr
!=
nil
{
if
branchTransaction
,
branchErr
:=
GetTransaction
(
branchTransactionHash
);
branchE
rr
!=
nil
{
err
=
branchErr
return
...
...
This diff is collapsed.
Click to expand it.
plugins/tangle/transaction.go
+
23
−
25
View file @
69d38bd5
...
...
@@ -19,30 +19,28 @@ type Transaction struct {
rawMetaDataMutex
sync
.
RWMutex
// mapped raw transaction properties
hash
*
ternary
.
Trinary
hashMutex
sync
.
RWMutex
signatureMessageFragment
*
ternary
.
Trinary
signatureMessageFragmentMutex
sync
.
RWMutex
address
*
ternary
.
Trinary
addressMutex
sync
.
RWMutex
value
*
int64
valueMutex
sync
.
RWMutex
timestamp
*
uint64
timestampMutex
sync
.
RWMutex
currentIndex
*
uint64
currentIndexMutex
sync
.
RWMutex
latestIndex
*
uint64
latestIndexMutex
sync
.
RWMutex
bundleHash
*
ternary
.
Trinary
bundleHashMutex
sync
.
RWMutex
trunkTransactionHash
*
ternary
.
Trinary
trunkTransactionHashMutex
sync
.
RWMutex
branchTransactionHash
*
ternary
.
Trinary
branchTransactionHashMutex
sync
.
RWMutex
tag
*
ternary
.
Trinary
tagMutex
sync
.
RWMutex
nonce
*
ternary
.
Trinary
nonceMutex
sync
.
RWMutex
hash
*
ternary
.
Trinary
hashMutex
sync
.
RWMutex
address
*
ternary
.
Trinary
addressMutex
sync
.
RWMutex
value
*
int64
valueMutex
sync
.
RWMutex
timestamp
*
uint64
timestampMutex
sync
.
RWMutex
currentIndex
*
uint64
currentIndexMutex
sync
.
RWMutex
latestIndex
*
uint64
latestIndexMutex
sync
.
RWMutex
bundleHash
*
ternary
.
Trinary
bundleHashMutex
sync
.
RWMutex
trunkTransactionHash
*
ternary
.
Trinary
trunkTransactionHashMutex
sync
.
RWMutex
branchTransactionHash
*
ternary
.
Trinary
branchTransactionHashMutex
sync
.
RWMutex
tag
*
ternary
.
Trinary
tagMutex
sync
.
RWMutex
nonce
*
ternary
.
Trinary
nonceMutex
sync
.
RWMutex
// additional runtime specific metadata
modified
bool
...
...
@@ -51,7 +49,7 @@ type Transaction struct {
func
NewTransaction
(
rawTransaction
*
transaction
.
Transaction
)
*
Transaction
{
if
rawTransaction
==
nil
{
rawTransaction
=
transaction
.
FromBytes
(
make
([]
byte
,
int
(
math
.
Ceil
(
float64
(
transaction
.
MARSHAL
L
ED_TOTAL_SIZE
)
/
ternary
.
NUMBER_OF_TRITS_IN_A_BYTE
))))
rawTransaction
=
transaction
.
FromBytes
(
make
([]
byte
,
int
(
math
.
Ceil
(
float64
(
transaction
.
MARSHALED_TOTAL_SIZE
)
/
ternary
.
NUMBER_OF_TRITS_IN_A_BYTE
))))
}
return
&
Transaction
{
rawTransaction
:
rawTransaction
}
...
...
This diff is collapsed.
Click to expand it.
plugins/tangle/transaction_metadata.go
+
95
−
95
View file @
69d38bd5
...
...
@@ -42,122 +42,122 @@ func NewTransactionMetadata(hash ternary.Trinary) *TransactionMetadata {
// region getters and setters //////////////////////////////////////////////////////////////////////////////////////////
func
(
meta
D
ata
*
TransactionMetadata
)
GetHash
()
ternary
.
Trinary
{
meta
D
ata
.
hashMutex
.
RLock
()
defer
meta
D
ata
.
hashMutex
.
RUnlock
()
func
(
meta
d
ata
*
TransactionMetadata
)
GetHash
()
ternary
.
Trinary
{
meta
d
ata
.
hashMutex
.
RLock
()
defer
meta
d
ata
.
hashMutex
.
RUnlock
()
return
meta
D
ata
.
hash
return
meta
d
ata
.
hash
}
func
(
meta
D
ata
*
TransactionMetadata
)
SetHash
(
hash
ternary
.
Trinary
)
{
meta
D
ata
.
hashMutex
.
RLock
()
if
meta
D
ata
.
hash
!=
hash
{
meta
D
ata
.
hashMutex
.
RUnlock
()
meta
D
ata
.
hashMutex
.
Lock
()
defer
meta
D
ata
.
hashMutex
.
Unlock
()
if
meta
D
ata
.
hash
!=
hash
{
meta
D
ata
.
hash
=
hash
func
(
meta
d
ata
*
TransactionMetadata
)
SetHash
(
hash
ternary
.
Trinary
)
{
meta
d
ata
.
hashMutex
.
RLock
()
if
meta
d
ata
.
hash
!=
hash
{
meta
d
ata
.
hashMutex
.
RUnlock
()
meta
d
ata
.
hashMutex
.
Lock
()
defer
meta
d
ata
.
hashMutex
.
Unlock
()
if
meta
d
ata
.
hash
!=
hash
{
meta
d
ata
.
hash
=
hash
meta
D
ata
.
SetModified
(
true
)
meta
d
ata
.
SetModified
(
true
)
}
}
else
{
meta
D
ata
.
hashMutex
.
RUnlock
()
meta
d
ata
.
hashMutex
.
RUnlock
()
}
}
func
(
meta
D
ata
*
TransactionMetadata
)
GetReceivedTime
()
time
.
Time
{
meta
D
ata
.
receivedTimeMutex
.
RLock
()
defer
meta
D
ata
.
receivedTimeMutex
.
RUnlock
()
func
(
meta
d
ata
*
TransactionMetadata
)
GetReceivedTime
()
time
.
Time
{
meta
d
ata
.
receivedTimeMutex
.
RLock
()
defer
meta
d
ata
.
receivedTimeMutex
.
RUnlock
()
return
meta
D
ata
.
receivedTime
return
meta
d
ata
.
receivedTime
}
func
(
meta
D
ata
*
TransactionMetadata
)
SetReceivedTime
(
receivedTime
time
.
Time
)
{
meta
D
ata
.
receivedTimeMutex
.
RLock
()
if
meta
D
ata
.
receivedTime
!=
receivedTime
{
meta
D
ata
.
receivedTimeMutex
.
RUnlock
()
meta
D
ata
.
receivedTimeMutex
.
Lock
()
defer
meta
D
ata
.
receivedTimeMutex
.
Unlock
()
if
meta
D
ata
.
receivedTime
!=
receivedTime
{
meta
D
ata
.
receivedTime
=
receivedTime
meta
D
ata
.
SetModified
(
true
)
func
(
meta
d
ata
*
TransactionMetadata
)
SetReceivedTime
(
receivedTime
time
.
Time
)
{
meta
d
ata
.
receivedTimeMutex
.
RLock
()
if
meta
d
ata
.
receivedTime
!=
receivedTime
{
meta
d
ata
.
receivedTimeMutex
.
RUnlock
()
meta
d
ata
.
receivedTimeMutex
.
Lock
()
defer
meta
d
ata
.
receivedTimeMutex
.
Unlock
()
if
meta
d
ata
.
receivedTime
!=
receivedTime
{
meta
d
ata
.
receivedTime
=
receivedTime
meta
d
ata
.
SetModified
(
true
)
}
}
else
{
meta
D
ata
.
receivedTimeMutex
.
RUnlock
()
meta
d
ata
.
receivedTimeMutex
.
RUnlock
()
}
}
func
(
meta
D
ata
*
TransactionMetadata
)
GetSolid
()
bool
{
meta
D
ata
.
solidMutex
.
RLock
()
defer
meta
D
ata
.
solidMutex
.
RUnlock
()
func
(
meta
d
ata
*
TransactionMetadata
)
GetSolid
()
bool
{
meta
d
ata
.
solidMutex
.
RLock
()
defer
meta
d
ata
.
solidMutex
.
RUnlock
()
return
meta
D
ata
.
solid
return
meta
d
ata
.
solid
}
func
(
meta
D
ata
*
TransactionMetadata
)
SetSolid
(
solid
bool
)
bool
{
meta
D
ata
.
solidMutex
.
RLock
()
if
meta
D
ata
.
solid
!=
solid
{
meta
D
ata
.
solidMutex
.
RUnlock
()
meta
D
ata
.
solidMutex
.
Lock
()
defer
meta
D
ata
.
solidMutex
.
Unlock
()
if
meta
D
ata
.
solid
!=
solid
{
meta
D
ata
.
solid
=
solid
func
(
meta
d
ata
*
TransactionMetadata
)
SetSolid
(
solid
bool
)
bool
{
meta
d
ata
.
solidMutex
.
RLock
()
if
meta
d
ata
.
solid
!=
solid
{
meta
d
ata
.
solidMutex
.
RUnlock
()
meta
d
ata
.
solidMutex
.
Lock
()
defer
meta
d
ata
.
solidMutex
.
Unlock
()
if
meta
d
ata
.
solid
!=
solid
{
meta
d
ata
.
solid
=
solid
meta
D
ata
.
SetModified
(
true
)
meta
d
ata
.
SetModified
(
true
)
return
true
}
}
else
{
meta
D
ata
.
solidMutex
.
RUnlock
()
meta
d
ata
.
solidMutex
.
RUnlock
()
}
return
false
}
func
(
meta
D
ata
*
TransactionMetadata
)
GetLiked
()
bool
{
meta
D
ata
.
likedMutex
.
RLock
()
defer
meta
D
ata
.
likedMutex
.
RUnlock
()
func
(
meta
d
ata
*
TransactionMetadata
)
GetLiked
()
bool
{
meta
d
ata
.
likedMutex
.
RLock
()
defer
meta
d
ata
.
likedMutex
.
RUnlock
()
return
meta
D
ata
.
liked
return
meta
d
ata
.
liked
}
func
(
meta
D
ata
*
TransactionMetadata
)
SetLiked
(
liked
bool
)
{
meta
D
ata
.
likedMutex
.
RLock
()
if
meta
D
ata
.
liked
!=
liked
{
meta
D
ata
.
likedMutex
.
RUnlock
()
meta
D
ata
.
likedMutex
.
Lock
()
defer
meta
D
ata
.
likedMutex
.
Unlock
()
if
meta
D
ata
.
liked
!=
liked
{
meta
D
ata
.
liked
=
liked
meta
D
ata
.
SetModified
(
true
)
func
(
meta
d
ata
*
TransactionMetadata
)
SetLiked
(
liked
bool
)
{
meta
d
ata
.
likedMutex
.
RLock
()
if
meta
d
ata
.
liked
!=
liked
{
meta
d
ata
.
likedMutex
.
RUnlock
()
meta
d
ata
.
likedMutex
.
Lock
()
defer
meta
d
ata
.
likedMutex
.
Unlock
()
if
meta
d
ata
.
liked
!=
liked
{
meta
d
ata
.
liked
=
liked
meta
d
ata
.
SetModified
(
true
)
}
}
else
{
meta
D
ata
.
likedMutex
.
RUnlock
()
meta
d
ata
.
likedMutex
.
RUnlock
()
}
}
func
(
meta
D
ata
*
TransactionMetadata
)
GetFinalized
()
bool
{
meta
D
ata
.
finalizedMutex
.
RLock
()
defer
meta
D
ata
.
finalizedMutex
.
RUnlock
()
func
(
meta
d
ata
*
TransactionMetadata
)
GetFinalized
()
bool
{
meta
d
ata
.
finalizedMutex
.
RLock
()
defer
meta
d
ata
.
finalizedMutex
.
RUnlock
()
return
meta
D
ata
.
finalized
return
meta
d
ata
.
finalized
}
func
(
meta
D
ata
*
TransactionMetadata
)
SetFinalized
(
finalized
bool
)
{
meta
D
ata
.
finalizedMutex
.
RLock
()
if
meta
D
ata
.
finalized
!=
finalized
{
meta
D
ata
.
finalizedMutex
.
RUnlock
()
meta
D
ata
.
finalizedMutex
.
Lock
()
defer
meta
D
ata
.
finalizedMutex
.
Unlock
()
if
meta
D
ata
.
finalized
!=
finalized
{
meta
D
ata
.
finalized
=
finalized
meta
D
ata
.
SetModified
(
true
)
func
(
meta
d
ata
*
TransactionMetadata
)
SetFinalized
(
finalized
bool
)
{
meta
d
ata
.
finalizedMutex
.
RLock
()
if
meta
d
ata
.
finalized
!=
finalized
{
meta
d
ata
.
finalizedMutex
.
RUnlock
()
meta
d
ata
.
finalizedMutex
.
Lock
()
defer
meta
d
ata
.
finalizedMutex
.
Unlock
()
if
meta
d
ata
.
finalized
!=
finalized
{
meta
d
ata
.
finalized
=
finalized
meta
d
ata
.
SetModified
(
true
)
}
}
else
{
meta
D
ata
.
finalizedMutex
.
RUnlock
()
meta
d
ata
.
finalizedMutex
.
RUnlock
()
}
}
...
...
@@ -179,10 +179,10 @@ func (metadata *TransactionMetadata) SetModified(modified bool) {
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
// region marshal
l
ing functions ////////////////////////////////////////////////////////////////////////////////////////
// region marshaling functions ////////////////////////////////////////////////////////////////////////////////////////
func
(
metadata
*
TransactionMetadata
)
Marshal
()
([]
byte
,
errors
.
IdentifiableError
)
{
marshal
l
edMetadata
:=
make
([]
byte
,
MARSHAL
L
ED_TOTAL_SIZE
)
marshaledMetadata
:=
make
([]
byte
,
MARSHALED_TOTAL_SIZE
)
metadata
.
receivedTimeMutex
.
RLock
()
defer
metadata
.
receivedTimeMutex
.
RUnlock
()
...
...
@@ -193,13 +193,13 @@ func (metadata *TransactionMetadata) Marshal() ([]byte, errors.IdentifiableError
metadata
.
finalizedMutex
.
RLock
()
defer
metadata
.
finalizedMutex
.
RUnlock
()
copy
(
marshal
l
edMetadata
[
MARSHAL
L
ED_HASH_START
:
MARSHAL
L
ED_HASH_END
],
metadata
.
hash
.
CastToBytes
())
copy
(
marshaledMetadata
[
MARSHALED_HASH_START
:
MARSHALED_HASH_END
],
metadata
.
hash
.
CastToBytes
())
marshal
l
edReceivedTime
,
err
:=
metadata
.
receivedTime
.
MarshalBinary
()
marshaledReceivedTime
,
err
:=
metadata
.
receivedTime
.
MarshalBinary
()
if
err
!=
nil
{
return
nil
,
ErrMarshallFailed
.
Derive
(
err
,
"failed to marshal received time"
)
}
copy
(
marshal
l
edMetadata
[
MARSHAL
L
ED_RECEIVED_TIME_START
:
MARSHAL
L
ED_RECEIVED_TIME_END
],
marshal
l
edReceivedTime
)
copy
(
marshaledMetadata
[
MARSHALED_RECEIVED_TIME_START
:
MARSHALED_RECEIVED_TIME_END
],
marshaledReceivedTime
)
var
booleanFlags
bitutils
.
BitMask
if
metadata
.
solid
{
...
...
@@ -211,9 +211,9 @@ func (metadata *TransactionMetadata) Marshal() ([]byte, errors.IdentifiableError
if
metadata
.
finalized
{
booleanFlags
=
booleanFlags
.
SetFlag
(
2
)
}
marshal
l
edMetadata
[
MARSHAL
L
ED_FLAGS_START
]
=
byte
(
booleanFlags
)
marshaledMetadata
[
MARSHALED_FLAGS_START
]
=
byte
(
booleanFlags
)
return
marshal
l
edMetadata
,
nil
return
marshaledMetadata
,
nil
}
func
(
metadata
*
TransactionMetadata
)
Unmarshal
(
data
[]
byte
)
errors
.
IdentifiableError
{
...
...
@@ -228,13 +228,13 @@ func (metadata *TransactionMetadata) Unmarshal(data []byte) errors.IdentifiableE
metadata
.
finalizedMutex
.
Lock
()
defer
metadata
.
finalizedMutex
.
Unlock
()
metadata
.
hash
=
ternary
.
Trinary
(
typeconversion
.
BytesToString
(
data
[
MARSHAL
L
ED_HASH_START
:
MARSHAL
L
ED_HASH_END
]))
metadata
.
hash
=
ternary
.
Trinary
(
typeconversion
.
BytesToString
(
data
[
MARSHALED_HASH_START
:
MARSHALED_HASH_END
]))
if
err
:=
metadata
.
receivedTime
.
UnmarshalBinary
(
data
[
MARSHAL
L
ED_RECEIVED_TIME_START
:
MARSHAL
L
ED_RECEIVED_TIME_END
]);
err
!=
nil
{
if
err
:=
metadata
.
receivedTime
.
UnmarshalBinary
(
data
[
MARSHALED_RECEIVED_TIME_START
:
MARSHALED_RECEIVED_TIME_END
]);
err
!=
nil
{
return
ErrUnmarshalFailed
.
Derive
(
err
,
"could not unmarshal the received time"
)
}
booleanFlags
:=
bitutils
.
BitMask
(
data
[
MARSHAL
L
ED_FLAGS_START
])
booleanFlags
:=
bitutils
.
BitMask
(
data
[
MARSHALED_FLAGS_START
])
if
booleanFlags
.
HasFlag
(
0
)
{
metadata
.
solid
=
true
}
...
...
@@ -254,12 +254,12 @@ func (metadata *TransactionMetadata) Unmarshal(data []byte) errors.IdentifiableE
func
(
metadata
*
TransactionMetadata
)
Store
()
errors
.
IdentifiableError
{
if
metadata
.
GetModified
()
{
marshal
l
edMetadata
,
err
:=
metadata
.
Marshal
()
marshaledMetadata
,
err
:=
metadata
.
Marshal
()
if
err
!=
nil
{
return
err
}
if
err
:=
transactionMetadataDatabase
.
Set
(
metadata
.
GetHash
()
.
CastToBytes
(),
marshal
l
edMetadata
);
err
!=
nil
{
if
err
:=
transactionMetadataDatabase
.
Set
(
metadata
.
GetHash
()
.
CastToBytes
(),
marshaledMetadata
);
err
!=
nil
{
return
ErrDatabaseError
.
Derive
(
err
,
"failed to store the transaction"
)
}
...
...
@@ -274,19 +274,19 @@ func (metadata *TransactionMetadata) Store() errors.IdentifiableError {
// region constants and variables //////////////////////////////////////////////////////////////////////////////////////
const
(
MARSHAL
L
ED_HASH_START
=
0
MARSHAL
L
ED_RECEIVED_TIME_START
=
MARSHAL
L
ED_HASH_END
MARSHAL
L
ED_FLAGS_START
=
MARSHAL
L
ED_RECEIVED_TIME_END
MARSHALED_HASH_START
=
0
MARSHALED_RECEIVED_TIME_START
=
MARSHALED_HASH_END
MARSHALED_FLAGS_START
=
MARSHALED_RECEIVED_TIME_END
MARSHAL
L
ED_HASH_END
=
MARSHAL
L
ED_HASH_START
+
MARSHAL
L
ED_HASH_SIZE
MARSHAL
L
ED_RECEIVED_TIME_END
=
MARSHAL
L
ED_RECEIVED_TIME_START
+
MARSHAL
L
ED_RECEIVED_TIME_SIZE
MARSHAL
L
ED_FLAGS_END
=
MARSHAL
L
ED_FLAGS_START
+
MARSHAL
L
ED_FLAGS_SIZE
MARSHALED_HASH_END
=
MARSHALED_HASH_START
+
MARSHALED_HASH_SIZE
MARSHALED_RECEIVED_TIME_END
=
MARSHALED_RECEIVED_TIME_START
+
MARSHALED_RECEIVED_TIME_SIZE
MARSHALED_FLAGS_END
=
MARSHALED_FLAGS_START
+
MARSHALED_FLAGS_SIZE
MARSHAL
L
ED_HASH_SIZE
=
81
MARSHAL
L
ED_RECEIVED_TIME_SIZE
=
15
MARSHAL
L
ED_FLAGS_SIZE
=
1
MARSHALED_HASH_SIZE
=
81
MARSHALED_RECEIVED_TIME_SIZE
=
15
MARSHALED_FLAGS_SIZE
=
1
MARSHAL
L
ED_TOTAL_SIZE
=
MARSHAL
L
ED_FLAGS_END
MARSHALED_TOTAL_SIZE
=
MARSHALED_FLAGS_END
)
// endregion ////////////////////////////////////////////////////////////////////////////////////////////////////////////
This diff is collapsed.
Click to expand it.
Prev
1
2
3
Next
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment