Skip to content
Snippets Groups Projects
Unverified Commit a06b697a authored by Angelo Capossele's avatar Angelo Capossele Committed by GitHub
Browse files

:man_singer: Fix genesis inclusion state (#582)

parent 417d94f5
No related branches found
No related tags found
No related merge requests found
...@@ -25,8 +25,9 @@ var ( ...@@ -25,8 +25,9 @@ var (
// ErrTransactionDoesNotSpendAllFunds is returned if a transaction does not spend all of its inputs. // ErrTransactionDoesNotSpendAllFunds is returned if a transaction does not spend all of its inputs.
ErrTransactionDoesNotSpendAllFunds = errors.New("transaction does not spend all funds from inputs") ErrTransactionDoesNotSpendAllFunds = errors.New("transaction does not spend all funds from inputs")
// ErrInvalidTransactionSignature is returned if the signature of a transaction is invalid. // ErrInvalidTransactionSignature is returned if the signature of a transaction is invalid.
ErrInvalidTransactionSignature = errors.New("invalid transaction signatures") ErrInvalidTransactionSignature = errors.New("invalid transaction signatures")
) )
// Tangle represents the value tangle that consists out of value payloads. // Tangle represents the value tangle that consists out of value payloads.
// It is an independent ontology, that lives inside the tangle. // It is an independent ontology, that lives inside the tangle.
type Tangle struct { type Tangle struct {
...@@ -179,6 +180,9 @@ func (tangle *Tangle) LoadSnapshot(snapshot map[transaction.ID]map[address.Addre ...@@ -179,6 +180,9 @@ func (tangle *Tangle) LoadSnapshot(snapshot map[transaction.ID]map[address.Addre
input := NewOutput(outputAddress, transactionID, branchmanager.MasterBranchID, balances) input := NewOutput(outputAddress, transactionID, branchmanager.MasterBranchID, balances)
input.setSolid(true) input.setSolid(true)
input.setBranchID(branchmanager.MasterBranchID) input.setBranchID(branchmanager.MasterBranchID)
input.setLiked(true)
input.setConfirmed(true)
input.setFinalized(true)
// store output and abort if the snapshot has already been loaded earlier (output exists in the database) // store output and abort if the snapshot has already been loaded earlier (output exists in the database)
cachedOutput, stored := tangle.outputStorage.StoreIfAbsent(input) cachedOutput, stored := tangle.outputStorage.StoreIfAbsent(input)
......
...@@ -162,6 +162,8 @@ func findAddress(strAddress string) (*ExplorerAddress, error) { ...@@ -162,6 +162,8 @@ func findAddress(strAddress string) (*ExplorerAddress, error) {
} }
outputids := make([]ExplorerOutput, 0) outputids := make([]ExplorerOutput, 0)
inclusionState := utils.InclusionState{}
// get outputids by address // get outputids by address
for id, cachedOutput := range valuetransfers.Tangle().OutputsOnAddress(address) { for id, cachedOutput := range valuetransfers.Tangle().OutputsOnAddress(address) {
...@@ -175,24 +177,30 @@ func findAddress(strAddress string) (*ExplorerAddress, error) { ...@@ -175,24 +177,30 @@ func findAddress(strAddress string) (*ExplorerAddress, error) {
Color: balance.Color.String(), Color: balance.Color.String(),
}) })
} }
var solidificationTime int64
valuetransfers.Tangle().TransactionMetadata(output.TransactionID()).Consume(func(txMeta *tangle.TransactionMetadata) { if !valuetransfers.Tangle().TransactionMetadata(output.TransactionID()).Consume(func(txMeta *tangle.TransactionMetadata) {
inclusionState := utils.InclusionState{}
inclusionState.Confirmed = txMeta.Confirmed() inclusionState.Confirmed = txMeta.Confirmed()
inclusionState.Liked = txMeta.Liked() inclusionState.Liked = txMeta.Liked()
inclusionState.Rejected = txMeta.Rejected() inclusionState.Rejected = txMeta.Rejected()
inclusionState.Finalized = txMeta.Finalized() inclusionState.Finalized = txMeta.Finalized()
inclusionState.Conflicting = txMeta.Conflicting() inclusionState.Conflicting = txMeta.Conflicting()
inclusionState.Confirmed = txMeta.Confirmed() inclusionState.Confirmed = txMeta.Confirmed()
solidificationTime = txMeta.SolidificationTime().Unix()
}) {
// This is only for the genesis.
inclusionState.Confirmed = output.Confirmed()
inclusionState.Liked = output.Liked()
inclusionState.Rejected = output.Rejected()
inclusionState.Finalized = output.Finalized()
inclusionState.Confirmed = output.Confirmed()
}
outputids = append(outputids, ExplorerOutput{ outputids = append(outputids, ExplorerOutput{
ID: id.String(), ID: id.String(),
Balances: b, Balances: b,
InclusionState: inclusionState, InclusionState: inclusionState,
ConsumerCount: output.ConsumerCount(), ConsumerCount: output.ConsumerCount(),
SolidificationTime: txMeta.SolidificationTime().Unix(), SolidificationTime: solidificationTime,
})
}) })
}) })
} }
......
...@@ -110,17 +110,14 @@ export class ExplorerAddressQueryResult extends React.Component<Props, any> { ...@@ -110,17 +110,14 @@ export class ExplorerAddressQueryResult extends React.Component<Props, any> {
outputs.push( outputs.push(
<ListGroup.Item key={output.id}> <ListGroup.Item key={output.id}>
<small> <small>
{'Output ID:'} {output.id} {' '} <div>{'Output ID:'} {output.id} {' '}</div>
<br></br> {output.solidification_time != 0 &&
Solidification Time: {dateformat(new Date(output.solidification_time * 1000), "dd.mm.yyyy HH:MM:ss")} <div>Solidification Time: {dateformat(new Date(output.solidification_time * 1000), "dd.mm.yyyy HH:MM:ss")}</div>
<br></br> }
{status} <div>{status}</div>
<br></br> <div>{consumed}</div>
{consumed} <div>{conflicting}</div>
<br></br> <div>{'Balance:'} {balances}</div>
{conflicting}
<br></br>
{'Balance:'} {balances}
</small> </small>
</ListGroup.Item> </ListGroup.Item>
); );
......
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment