-
Hans Moog authored
* Feat: refactored the address * Feat: started adding solidification of transferOutputs * Feat: cleaned up checker code * Feat: going to bed - good night world * Feat: refactored transferoutput package * Fix: fixed a bug from refactoring * Refactor: removed old transferoutputmetadata package * Refactor: started refactoring transfer package * Refactor: refactored transfer/id package * Refactor: moved transfer struct to new package * Refactor: fixed issues after refactor * Refactor: fixed sth * Refactor: continued to move files * Refactor: commit before migration of last refactored files * Refactor: another refactor before move * Refactor: refactor test * Fix: fixed some bugs connected to refactor * Refactor: continued refactor * Refactor: fixed some bugs * Refactor: does it work now? * Feat: added a method to generate a random transferid * Feat: rename transfer to transaction * Refactor: refactor according to new names * Refactor: continued to refactor transaction package * Refactor: moved payload id to payload package * Refactor: moved signatures to transaction package * Refactor: moved signature to transaction * Fix: fixed bug due to refactor * Fix: fixed bugs due to refactor * Refactor: fixed some bugs after refactor * Fix: fixed additional bugs * Fix: bug fix * Refactor: moved signature to signaturescheme package * Fix: fixed signatures test * Fix: fixed bug in tangle * Fix: fixed payloadmetadata test * Fix: fixed payload test * Refactor: moved payloadmetadata to payload package * Fix: fixed some refactor bugs * Fix: fixed a bug due to refactor * Fix: fixed broken test * Refactor: moved approver to payload package * Refactor: moved missingpayload to payload package * Refactor: refactored coloredbalance package * Fix: fixed bug due to refactor * Refactor: moved address signaturescheme to address package * Fix: fixed refactor bug * Feat: added missing outputs to tangle * Fix: fixed issues due to refactor * Refactor: started moving tangle classes to tangle package * Refactor: moved payloadmetadata to tangle * Fix: fixed bugs due to refactor * Refactor: moved TransactionMetadata to tangle package * Refactor: moved some files to tangle * Fix: fixed bug due to refactor * Feat: added TransactionMetadata storage * Fix: fixed some issues * Fix: fixed some issues * Fix: fixed missing release
Hans Moog authored* Feat: refactored the address * Feat: started adding solidification of transferOutputs * Feat: cleaned up checker code * Feat: going to bed - good night world * Feat: refactored transferoutput package * Fix: fixed a bug from refactoring * Refactor: removed old transferoutputmetadata package * Refactor: started refactoring transfer package * Refactor: refactored transfer/id package * Refactor: moved transfer struct to new package * Refactor: fixed issues after refactor * Refactor: fixed sth * Refactor: continued to move files * Refactor: commit before migration of last refactored files * Refactor: another refactor before move * Refactor: refactor test * Fix: fixed some bugs connected to refactor * Refactor: continued refactor * Refactor: fixed some bugs * Refactor: does it work now? * Feat: added a method to generate a random transferid * Feat: rename transfer to transaction * Refactor: refactor according to new names * Refactor: continued to refactor transaction package * Refactor: moved payload id to payload package * Refactor: moved signatures to transaction package * Refactor: moved signature to transaction * Fix: fixed bug due to refactor * Fix: fixed bugs due to refactor * Refactor: fixed some bugs after refactor * Fix: fixed additional bugs * Fix: bug fix * Refactor: moved signature to signaturescheme package * Fix: fixed signatures test * Fix: fixed bug in tangle * Fix: fixed payloadmetadata test * Fix: fixed payload test * Refactor: moved payloadmetadata to payload package * Fix: fixed some refactor bugs * Fix: fixed a bug due to refactor * Fix: fixed broken test * Refactor: moved approver to payload package * Refactor: moved missingpayload to payload package * Refactor: refactored coloredbalance package * Fix: fixed bug due to refactor * Refactor: moved address signaturescheme to address package * Fix: fixed refactor bug * Feat: added missing outputs to tangle * Fix: fixed issues due to refactor * Refactor: started moving tangle classes to tangle package * Refactor: moved payloadmetadata to tangle * Fix: fixed bugs due to refactor * Refactor: moved TransactionMetadata to tangle package * Refactor: moved some files to tangle * Fix: fixed bug due to refactor * Feat: added TransactionMetadata storage * Fix: fixed some issues * Fix: fixed some issues * Fix: fixed missing release
plugin.go 2.62 KiB
package tangle
import (
"github.com/iotaledger/hive.go/autopeering/peer"
"github.com/iotaledger/goshimmer/packages/binary/storageprefix"
"github.com/iotaledger/goshimmer/packages/binary/tangle"
"github.com/iotaledger/goshimmer/packages/binary/tangle/model/message"
"github.com/iotaledger/goshimmer/packages/binary/tangle/model/transactionmetadata"
"github.com/iotaledger/goshimmer/packages/binary/tangle/tipselector"
"github.com/iotaledger/goshimmer/packages/binary/tangle/transactionparser"
"github.com/iotaledger/goshimmer/packages/binary/tangle/transactionrequester"
"github.com/iotaledger/goshimmer/packages/database"
"github.com/iotaledger/goshimmer/packages/shutdown"
"github.com/iotaledger/hive.go/daemon"
"github.com/iotaledger/hive.go/events"
"github.com/iotaledger/hive.go/logger"
"github.com/iotaledger/hive.go/node"
)
var PLUGIN = node.NewPlugin("Tangle", node.Enabled, configure, run)
var TransactionParser *transactionparser.TransactionParser
var TransactionRequester *transactionrequester.TransactionRequester
var TipSelector *tipselector.TipSelector
var Instance *tangle.Tangle
var log *logger.Logger
func configure(*node.Plugin) {
log = logger.NewLogger("Tangle")
// create instances
TransactionParser = transactionparser.New()
TransactionRequester = transactionrequester.New()
TipSelector = tipselector.New()
Instance = tangle.New(database.GetBadgerInstance(), storageprefix.MainNet)
// setup TransactionParser
TransactionParser.Events.TransactionParsed.Attach(events.NewClosure(func(transaction *message.Transaction, peer *peer.Peer) {
// TODO: ADD PEER
Instance.AttachTransaction(transaction)
}))
// setup TransactionRequester
Instance.Events.TransactionMissing.Attach(events.NewClosure(TransactionRequester.ScheduleRequest))
Instance.Events.MissingTransactionReceived.Attach(events.NewClosure(func(cachedTransaction *message.CachedTransaction, cachedTransactionMetadata *transactionmetadata.CachedTransactionMetadata) {
cachedTransactionMetadata.Release()
cachedTransaction.Consume(func(transaction *message.Transaction) {
TransactionRequester.StopRequest(transaction.GetId())
})
}))
// setup TipSelector
Instance.Events.TransactionSolid.Attach(events.NewClosure(func(cachedTransaction *message.CachedTransaction, cachedTransactionMetadata *transactionmetadata.CachedTransactionMetadata) {
cachedTransactionMetadata.Release()
cachedTransaction.Consume(TipSelector.AddTip)
}))
}
func run(*node.Plugin) {
_ = daemon.BackgroundWorker("Tangle", func(shutdownSignal <-chan struct{}) {
<-shutdownSignal
TransactionParser.Shutdown()
Instance.Shutdown()
}, shutdown.ShutdownPriorityTangle)
}