Skip to content

Commit

Permalink
Remove importing/exporting faucet wallet states
Browse files Browse the repository at this point in the history
  • Loading branch information
jkrvivian committed Aug 23, 2022
1 parent 2af9cff commit ec846df
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 71 deletions.
68 changes: 2 additions & 66 deletions plugins/faucet/faucet.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,16 @@ package faucet

import (
"context"
"crypto/ed25519"
"os"
"time"
"unsafe"

"github.com/iotaledger/goshimmer/client/wallet"
"github.com/iotaledger/goshimmer/client/wallet/packages/address"
"github.com/iotaledger/goshimmer/client/wallet/packages/seed"
walletseed "github.com/iotaledger/goshimmer/client/wallet/packages/seed"
"github.com/iotaledger/goshimmer/client/wallet/packages/sendoptions"
"github.com/iotaledger/goshimmer/packages/app/faucet"
"github.com/iotaledger/goshimmer/packages/core/ledger"
"github.com/iotaledger/goshimmer/packages/core/ledger/vm/devnetvm"
"github.com/iotaledger/hive.go/core/bitmask"
"github.com/iotaledger/hive.go/core/marshalutil"
"github.com/pkg/errors"
)

Expand All @@ -32,27 +27,12 @@ type Faucet struct {
}

// NewFaucet creates a new Faucet instance.
func NewFaucet(faucetSeed *seed.Seed, walletStates string) *Faucet {
seed, lastAddressIndex, spentAddresses, assetRegistry, err := importWalletStateFile(walletStates)
if err != nil {
if !os.IsNotExist(err) {
panic(err)
}

seed = faucetSeed
lastAddressIndex = 0
spentAddresses = []bitmask.BitMask{}
}

if faucetSeed.String() != seed.String() {
panic("faucet seed is different from the one in wallet states file")
}

func NewFaucet(faucetSeed *seed.Seed) *Faucet {
connector := NewConnector(deps.Tangle, deps.Indexer)

return &Faucet{wallet.New(
wallet.GenericConnector(connector),
wallet.Import(seed, lastAddressIndex, spentAddresses, assetRegistry),
wallet.Import(faucetSeed, 0, []bitmask.BitMask{}, nil),
wallet.ReusableAddress(true),
wallet.FaucetPowDifficulty(Parameters.PowDifficulty),
)}
Expand Down Expand Up @@ -107,47 +87,3 @@ func (f *Faucet) handleFaucetRequest(p *faucet.Payload) (*devnetvm.Transaction,
attempt++
}
}

func importWalletStateFile(filename string) (seed *seed.Seed, lastAddressIndex uint64, spentAddresses []bitmask.BitMask, assetRegistry *wallet.AssetRegistry, err error) {
walletStateBytes, err := os.ReadFile(filename)
if err != nil {
return
}

marshalUtil := marshalutil.New(walletStateBytes)

seedBytes, err := marshalUtil.ReadBytes(ed25519.SeedSize)
seed = walletseed.NewSeed(seedBytes)
if err != nil {
return
}

lastAddressIndex, err = marshalUtil.ReadUint64()
if err != nil {
return
}

_, _, err = wallet.ParseAssetRegistry(marshalUtil)

spentAddressesBytes := marshalUtil.ReadRemainingBytes()
spentAddresses = *(*[]bitmask.BitMask)(unsafe.Pointer(&spentAddressesBytes))

return
}

func writeWalletStateFile(wallet *wallet.Wallet, filename string) {
info, err := os.Stat(filename)
if err != nil {
if !os.IsNotExist(err) {
panic(err)
}
}
if err == nil && info.IsDir() {
panic("found directory instead of file at " + filename)
}

err = os.WriteFile(filename, wallet.ExportState(), 0o644)
if err != nil {
panic(err)
}
}
3 changes: 0 additions & 3 deletions plugins/faucet/parameters.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,6 @@ type ParametersDefinition struct {
// Seed defines the base58 encoded seed the faucet uses.
Seed string `usage:"the base58 encoded seed of the faucet, must be defined if this faucet is enabled"`

// FaucetWalletFile defines the file name of faucet wallet states.
FaucetWalletFile string `default:"faucet.wallet" usage:"the states that is preserved for faucet wallet"`

// TokensPerRequest defines the amount of tokens the faucet should send for each request.
TokensPerRequest int `default:"1000000" usage:"the amount of tokens the faucet should send for each request"`

Expand Down
3 changes: 1 addition & 2 deletions plugins/faucet/plugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ func newFaucet() *Faucet {
Plugin.LogFatalfAndExit("the max transaction booked await time must be more than 0")
}

return NewFaucet(walletseed.NewSeed(seedBytes), Parameters.FaucetWalletFile)
return NewFaucet(walletseed.NewSeed(seedBytes))
}

func configure(plugin *node.Plugin) {
Expand Down Expand Up @@ -112,7 +112,6 @@ func run(plugin *node.Plugin) {

<-ctx.Done()
close(requestChan)
writeWalletStateFile(_faucet.Wallet, Parameters.FaucetWalletFile)

plugin.LogInfof("Stopping %s ...", PluginName)
}, shutdown.PriorityFaucet); err != nil {
Expand Down

0 comments on commit ec846df

Please sign in to comment.