aboutsummaryrefslogtreecommitdiffstats
path: root/swarm/swarm.go
diff options
context:
space:
mode:
authorholisticode <holistic.computing@gmail.com>2018-11-16 06:41:19 +0800
committerViktor TrĂ³n <viktor.tron@gmail.com>2018-11-16 06:41:19 +0800
commitffe2fc3bc4d77ad3f503d2bc1cdd62eac8d03c5b (patch)
tree5746d3737127f79b7fdb4cc58f72c6bb984b6b88 /swarm/swarm.go
parent324027640bcaf137b8c9e96bc26f0833711497af (diff)
downloadgo-tangerine-ffe2fc3bc4d77ad3f503d2bc1cdd62eac8d03c5b.tar
go-tangerine-ffe2fc3bc4d77ad3f503d2bc1cdd62eac8d03c5b.tar.gz
go-tangerine-ffe2fc3bc4d77ad3f503d2bc1cdd62eac8d03c5b.tar.bz2
go-tangerine-ffe2fc3bc4d77ad3f503d2bc1cdd62eac8d03c5b.tar.lz
go-tangerine-ffe2fc3bc4d77ad3f503d2bc1cdd62eac8d03c5b.tar.xz
go-tangerine-ffe2fc3bc4d77ad3f503d2bc1cdd62eac8d03c5b.tar.zst
go-tangerine-ffe2fc3bc4d77ad3f503d2bc1cdd62eac8d03c5b.zip
Swarm accounting (#18050)
* swarm: completed 1st phase of swap accounting * swarm: swap accounting for swarm with p2p accounting * swarm/swap: addressed PR comments * swarm/swap: ignore ErrNotFound on stateStore.Get() * swarm/swap: GetPeerBalance test; add TODO for chequebook API check * swarm/network/stream: fix NewRegistry calls with new arguments * swarm/swap: address @justelad's PR comments
Diffstat (limited to 'swarm/swarm.go')
-rw-r--r--swarm/swarm.go18
1 files changed, 15 insertions, 3 deletions
diff --git a/swarm/swarm.go b/swarm/swarm.go
index 1fb5443fd..dc3756d3a 100644
--- a/swarm/swarm.go
+++ b/swarm/swarm.go
@@ -51,6 +51,7 @@ import (
"github.com/ethereum/go-ethereum/swarm/storage"
"github.com/ethereum/go-ethereum/swarm/storage/feed"
"github.com/ethereum/go-ethereum/swarm/storage/mock"
+ "github.com/ethereum/go-ethereum/swarm/swap"
"github.com/ethereum/go-ethereum/swarm/tracing"
)
@@ -78,6 +79,7 @@ type Swarm struct {
netStore *storage.NetStore
sfs *fuse.SwarmFS // need this to cleanup all the active mounts on node exit
ps *pss.Pss
+ swap *swap.Swap
tracerClose io.Closer
}
@@ -171,6 +173,14 @@ func NewSwarm(config *api.Config, mockStore *mock.NodeStore) (self *Swarm, err e
delivery := stream.NewDelivery(to, self.netStore)
self.netStore.NewNetFetcherFunc = network.NewFetcherFactory(delivery.RequestFromPeers, config.DeliverySkipCheck).New
+ if config.SwapEnabled {
+ balancesStore, err := state.NewDBStore(filepath.Join(config.Path, "balances.db"))
+ if err != nil {
+ return nil, err
+ }
+ self.swap = swap.New(balancesStore)
+ }
+
var nodeID enode.ID
if err := nodeID.UnmarshalText([]byte(config.NodeID)); err != nil {
return nil, err
@@ -193,7 +203,7 @@ func NewSwarm(config *api.Config, mockStore *mock.NodeStore) (self *Swarm, err e
SyncUpdateDelay: config.SyncUpdateDelay,
MaxPeerServers: config.MaxStreamPeerServers,
}
- self.streamer = stream.NewRegistry(nodeID, delivery, self.netStore, stateStore, registryOptions)
+ self.streamer = stream.NewRegistry(nodeID, delivery, self.netStore, stateStore, registryOptions, self.swap)
// Swarm Hash Merklised Chunking for Arbitrary-length Document/File storage
self.fileStore = storage.NewFileStore(self.netStore, self.config.FileStoreParams)
@@ -216,7 +226,7 @@ func NewSwarm(config *api.Config, mockStore *mock.NodeStore) (self *Swarm, err e
log.Debug("Setup local storage")
- self.bzz = network.NewBzz(bzzconfig, to, stateStore, stream.Spec, self.streamer.Run)
+ self.bzz = network.NewBzz(bzzconfig, to, stateStore, self.streamer.GetSpec(), self.streamer.Run)
// Pss = postal service over swarm (devp2p over bzz)
self.ps, err = pss.NewPss(to, config.Pss)
@@ -353,7 +363,9 @@ func (self *Swarm) Start(srv *p2p.Server) error {
newaddr := self.bzz.UpdateLocalAddr([]byte(srv.Self().String()))
log.Info("Updated bzz local addr", "oaddr", fmt.Sprintf("%x", newaddr.OAddr), "uaddr", fmt.Sprintf("%s", newaddr.UAddr))
// set chequebook
- if self.config.SwapEnabled {
+ //TODO: Currently if swap is enabled and no chequebook (or inexistent) contract is provided, the node would crash.
+ //Once we integrate back the contracts, this check MUST be revisited
+ if self.config.SwapEnabled && self.config.SwapAPI != "" {
ctx := context.Background() // The initial setup has no deadline.
err := self.SetChequebook(ctx)
if err != nil {