Skip to content
Snippets Groups Projects
Unverified Commit e2e57d92 authored by Luca Moser's avatar Luca Moser
Browse files

adds snapshot type

parent ff1dbb80
No related branches found
No related tags found
No related merge requests found
...@@ -4,6 +4,8 @@ import ( ...@@ -4,6 +4,8 @@ import (
"sync" "sync"
"time" "time"
flag "github.com/spf13/pflag"
"github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/consensus" "github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/consensus"
"github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/payload" "github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/payload"
valuepayload "github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/payload" valuepayload "github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/payload"
...@@ -27,8 +29,15 @@ const ( ...@@ -27,8 +29,15 @@ const (
// AverageNetworkDelay contains the average time it takes for a network to propagate through gossip. // AverageNetworkDelay contains the average time it takes for a network to propagate through gossip.
AverageNetworkDelay = 5 * time.Second AverageNetworkDelay = 5 * time.Second
// CfgValueLayerSnapshotFile is the path to the snapshot file.
CfgValueLayerSnapshotFile = "valueLayer.snapshot.file"
) )
func init() {
flag.String(CfgValueLayerSnapshotFile, "./snapshot.json", "the path to the snapshot file")
}
var ( var (
// App is the "plugin" instance of the value-transfers application. // App is the "plugin" instance of the value-transfers application.
App = node.NewPlugin(PluginName, node.Enabled, configure, run) App = node.NewPlugin(PluginName, node.Enabled, configure, run)
......
...@@ -164,8 +164,11 @@ func (tangle *Tangle) BranchManager() *branchmanager.BranchManager { ...@@ -164,8 +164,11 @@ func (tangle *Tangle) BranchManager() *branchmanager.BranchManager {
return tangle.branchManager return tangle.branchManager
} }
// Snapshot defines a snapshot of the ledger state.
type Snapshot map[transaction.ID]map[address.Address][]*balance.Balance
// LoadSnapshot creates a set of outputs in the value tangle, that are forming the genesis for future transactions. // LoadSnapshot creates a set of outputs in the value tangle, that are forming the genesis for future transactions.
func (tangle *Tangle) LoadSnapshot(snapshot map[transaction.ID]map[address.Address][]*balance.Balance) { func (tangle *Tangle) LoadSnapshot(snapshot Snapshot) {
for transactionID, addressBalances := range snapshot { for transactionID, addressBalances := range snapshot {
for outputAddress, balances := range addressBalances { for outputAddress, balances := range addressBalances {
input := NewOutput(outputAddress, transactionID, branchmanager.MasterBranchID, balances) input := NewOutput(outputAddress, transactionID, branchmanager.MasterBranchID, balances)
......
...@@ -4,6 +4,7 @@ import ( ...@@ -4,6 +4,7 @@ import (
"github.com/iotaledger/goshimmer/dapps/valuetransfers" "github.com/iotaledger/goshimmer/dapps/valuetransfers"
"github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/address" "github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/address"
"github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/balance" "github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/balance"
"github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/tangle"
"github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/transaction" "github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/transaction"
"github.com/iotaledger/hive.go/logger" "github.com/iotaledger/hive.go/logger"
"github.com/iotaledger/hive.go/node" "github.com/iotaledger/hive.go/node"
...@@ -26,7 +27,7 @@ var ( ...@@ -26,7 +27,7 @@ var (
func configure(_ *node.Plugin) { func configure(_ *node.Plugin) {
log = logger.NewLogger(PluginName) log = logger.NewLogger(PluginName)
valuetransfers.Tangle.LoadSnapshot(map[transaction.ID]map[address.Address][]*balance.Balance{ valuetransfers.Tangle.LoadSnapshot(tangle.Snapshot{
transaction.GenesisID: { transaction.GenesisID: {
address0: []*balance.Balance{ address0: []*balance.Balance{
balance.New(balance.ColorIOTA, 10000000), balance.New(balance.ColorIOTA, 10000000),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment