add: updateStake when miner starts to mine new task
This commit is contained in:
parent
d99443d9f0
commit
1ea482c379
@ -15,9 +15,10 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Miner struct {
|
type Miner struct {
|
||||||
address peer.ID
|
address peer.ID
|
||||||
api MinerAPI
|
ethAddress common.Address
|
||||||
mutex sync.Mutex
|
api MinerAPI
|
||||||
|
mutex sync.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
type MinerAPI interface {
|
type MinerAPI interface {
|
||||||
@ -81,7 +82,7 @@ func (m *MinerBase) UpdateStake(c *ethclient.EthereumClient, miner common.Addres
|
|||||||
|
|
||||||
// Start, Stop mining functions
|
// Start, Stop mining functions
|
||||||
|
|
||||||
func (m *Miner) MineTask(ctx context.Context, base *MiningBase, mb *MinerBase) (*types.DioneTask, error) {
|
func (m *Miner) MineTask(ctx context.Context, base *MiningBase, mb *MinerBase, ethClient *ethclient.EthereumClient) (*types.DioneTask, error) {
|
||||||
round := base.epoch + base.nullRounds + 1
|
round := base.epoch + base.nullRounds + 1
|
||||||
logrus.Debug("attempting to mine the task at epoch: ", round)
|
logrus.Debug("attempting to mine the task at epoch: ", round)
|
||||||
|
|
||||||
@ -93,6 +94,10 @@ func (m *Miner) MineTask(ctx context.Context, base *MiningBase, mb *MinerBase) (
|
|||||||
rbase = bvals[len(bvals)-1]
|
rbase = bvals[len(bvals)-1]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := mb.UpdateStake(ethClient, m.ethAddress); err != nil {
|
||||||
|
return nil, xerrors.Errorf("failed to update miner stake: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
ticket, err := m.computeTicket(ctx, &rbase, base, mb)
|
ticket, err := m.computeTicket(ctx, &rbase, base, mb)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, xerrors.Errorf("scratching ticket failed: %w", err)
|
return nil, xerrors.Errorf("scratching ticket failed: %w", err)
|
||||||
|
1
go.mod
1
go.mod
@ -23,6 +23,7 @@ require (
|
|||||||
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect
|
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect
|
||||||
github.com/golang/snappy v0.0.2-0.20190904063534-ff6b7dc882cf // indirect
|
github.com/golang/snappy v0.0.2-0.20190904063534-ff6b7dc882cf // indirect
|
||||||
github.com/google/gopacket v1.1.18 // indirect
|
github.com/google/gopacket v1.1.18 // indirect
|
||||||
|
github.com/google/logger v1.1.0
|
||||||
github.com/gopherjs/gopherjs v0.0.0-20190812055157-5d271430af9f // indirect
|
github.com/gopherjs/gopherjs v0.0.0-20190812055157-5d271430af9f // indirect
|
||||||
github.com/ipfs/go-datastore v0.4.5 // indirect
|
github.com/ipfs/go-datastore v0.4.5 // indirect
|
||||||
github.com/ipfs/go-ds-badger2 v0.1.1-0.20200708190120-187fc06f714e // indirect
|
github.com/ipfs/go-ds-badger2 v0.1.1-0.20200708190120-187fc06f714e // indirect
|
||||||
|
2
go.sum
2
go.sum
@ -286,6 +286,8 @@ github.com/google/gopacket v1.1.17 h1:rMrlX2ZY2UbvT+sdz3+6J+pp2z+msCq9MxTU6ymxbB
|
|||||||
github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM=
|
github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM=
|
||||||
github.com/google/gopacket v1.1.18 h1:lum7VRA9kdlvBi7/v2p7/zcbkduHaCH/SVVyurs7OpY=
|
github.com/google/gopacket v1.1.18 h1:lum7VRA9kdlvBi7/v2p7/zcbkduHaCH/SVVyurs7OpY=
|
||||||
github.com/google/gopacket v1.1.18/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM=
|
github.com/google/gopacket v1.1.18/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM=
|
||||||
|
github.com/google/logger v1.1.0 h1:saB74Etb4EAJNH3z74CVbCKk75hld/8T0CsXKetWCwM=
|
||||||
|
github.com/google/logger v1.1.0/go.mod h1:w7O8nrRr0xufejBlQMI83MXqRusvREoJdaAxV+CoAB4=
|
||||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||||
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||||
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||||
|
16
node/node.go
16
node/node.go
@ -5,14 +5,15 @@ import (
|
|||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
pex "github.com/Secured-Finance/go-libp2p-pex"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
pex "github.com/Secured-Finance/go-libp2p-pex"
|
||||||
|
|
||||||
"github.com/Secured-Finance/dione/config"
|
"github.com/Secured-Finance/dione/config"
|
||||||
"github.com/Secured-Finance/dione/consensus"
|
"github.com/Secured-Finance/dione/consensus"
|
||||||
|
"github.com/Secured-Finance/dione/ethclient"
|
||||||
"github.com/Secured-Finance/dione/pb"
|
"github.com/Secured-Finance/dione/pb"
|
||||||
"github.com/Secured-Finance/dione/rpc"
|
"github.com/Secured-Finance/dione/rpc"
|
||||||
"github.com/Secured-Finance/dione/ethclient"
|
|
||||||
"github.com/libp2p/go-libp2p"
|
"github.com/libp2p/go-libp2p"
|
||||||
crypto "github.com/libp2p/go-libp2p-core/crypto"
|
crypto "github.com/libp2p/go-libp2p-core/crypto"
|
||||||
"github.com/libp2p/go-libp2p-core/host"
|
"github.com/libp2p/go-libp2p-core/host"
|
||||||
@ -21,7 +22,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
DefaultPEXUpdateTime = 1*time.Minute
|
DefaultPEXUpdateTime = 1 * time.Minute
|
||||||
)
|
)
|
||||||
|
|
||||||
type Node struct {
|
type Node struct {
|
||||||
@ -34,7 +35,7 @@ type Node struct {
|
|||||||
Lotus *rpc.LotusClient
|
Lotus *rpc.LotusClient
|
||||||
Ethereum *ethclient.EthereumClient
|
Ethereum *ethclient.EthereumClient
|
||||||
ConsensusManager *consensus.PBFTConsensusManager
|
ConsensusManager *consensus.PBFTConsensusManager
|
||||||
MinerBase *consensus.MinerBase
|
MinerBase *consensus.MinerBase
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewNode(configPath string) (*Node, error) {
|
func NewNode(configPath string) (*Node, error) {
|
||||||
@ -52,7 +53,9 @@ func NewNode(configPath string) (*Node, error) {
|
|||||||
|
|
||||||
func (n *Node) setupNode(ctx context.Context, prvKey crypto.PrivKey, pexDiscoveryUpdateTime time.Duration) {
|
func (n *Node) setupNode(ctx context.Context, prvKey crypto.PrivKey, pexDiscoveryUpdateTime time.Duration) {
|
||||||
n.setupLibp2pHost(context.TODO(), prvKey, pexDiscoveryUpdateTime)
|
n.setupLibp2pHost(context.TODO(), prvKey, pexDiscoveryUpdateTime)
|
||||||
//n.setupEthereumClient()
|
if err := n.setupEthereumClient(); err != nil {
|
||||||
|
logrus.Fatal("Can't set up an ethereum client, exiting... ", err)
|
||||||
|
}
|
||||||
//n.setupFilecoinClient()
|
//n.setupFilecoinClient()
|
||||||
n.setupPubsub()
|
n.setupPubsub()
|
||||||
n.setupConsensusManager(n.Config.ConsensusMaxFaultNodes)
|
n.setupConsensusManager(n.Config.ConsensusMaxFaultNodes)
|
||||||
@ -116,6 +119,9 @@ func (n *Node) setupLibp2pHost(ctx context.Context, privateKey crypto.PrivKey, p
|
|||||||
}
|
}
|
||||||
|
|
||||||
discovery, err := pex.NewPEXDiscovery(host, bootstrapMaddrs, pexDiscoveryUpdateTime)
|
discovery, err := pex.NewPEXDiscovery(host, bootstrapMaddrs, pexDiscoveryUpdateTime)
|
||||||
|
if err != nil {
|
||||||
|
logrus.Fatal("Can't set up PEX discovery protocol, exiting... ", err)
|
||||||
|
}
|
||||||
|
|
||||||
logrus.Info("Announcing ourselves...")
|
logrus.Info("Announcing ourselves...")
|
||||||
_, err = discovery.Advertise(context.TODO(), n.Config.Rendezvous)
|
_, err = discovery.Advertise(context.TODO(), n.Config.Rendezvous)
|
||||||
|
Loading…
Reference in New Issue
Block a user