cmd/puppeth: mount ethash dir from the host to cache DAGs
This commit is contained in:
parent
da3b9f831e
commit
9e095251b7
|
@ -42,7 +42,7 @@ ADD genesis.json /genesis.json
|
||||||
RUN \
|
RUN \
|
||||||
echo 'geth init /genesis.json' > geth.sh && \{{if .Unlock}}
|
echo 'geth init /genesis.json' > geth.sh && \{{if .Unlock}}
|
||||||
echo 'mkdir -p /root/.ethereum/keystore/ && cp /signer.json /root/.ethereum/keystore/' >> geth.sh && \{{end}}
|
echo 'mkdir -p /root/.ethereum/keystore/ && cp /signer.json /root/.ethereum/keystore/' >> geth.sh && \{{end}}
|
||||||
echo $'geth --networkid {{.NetworkID}} --cache 512 --port {{.Port}} --maxpeers {{.Peers}} {{.LightFlag}} --ethstats \'{{.Ethstats}}\' {{if .BootV4}}--bootnodesv4 {{.BootV4}}{{end}} {{if .BootV5}}--bootnodesv5 {{.BootV5}}{{end}} {{if .Etherbase}}--etherbase {{.Etherbase}} --mine{{end}}{{if .Unlock}}--unlock 0 --password /signer.pass --mine{{end}} --targetgaslimit {{.GasTarget}} --gasprice {{.GasPrice}}' >> geth.sh
|
echo $'geth --networkid {{.NetworkID}} --cache 512 --port {{.Port}} --maxpeers {{.Peers}} {{.LightFlag}} --ethstats \'{{.Ethstats}}\' {{if .BootV4}}--bootnodesv4 {{.BootV4}}{{end}} {{if .BootV5}}--bootnodesv5 {{.BootV5}}{{end}} {{if .Etherbase}}--etherbase {{.Etherbase}} --mine --minerthreads 1{{end}} {{if .Unlock}}--unlock 0 --password /signer.pass --mine{{end}} --targetgaslimit {{.GasTarget}} --gasprice {{.GasPrice}}' >> geth.sh
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/sh", "geth.sh"]
|
ENTRYPOINT ["/bin/sh", "geth.sh"]
|
||||||
`
|
`
|
||||||
|
@ -60,7 +60,8 @@ services:
|
||||||
- "{{.FullPort}}:{{.FullPort}}/udp"{{if .Light}}
|
- "{{.FullPort}}:{{.FullPort}}/udp"{{if .Light}}
|
||||||
- "{{.LightPort}}:{{.LightPort}}/udp"{{end}}
|
- "{{.LightPort}}:{{.LightPort}}/udp"{{end}}
|
||||||
volumes:
|
volumes:
|
||||||
- {{.Datadir}}:/root/.ethereum
|
- {{.Datadir}}:/root/.ethereum{{if .Ethashdir}}
|
||||||
|
- {{.Ethashdir}}:/root/.ethash{{end}}
|
||||||
environment:
|
environment:
|
||||||
- FULL_PORT={{.FullPort}}/tcp
|
- FULL_PORT={{.FullPort}}/tcp
|
||||||
- LIGHT_PORT={{.LightPort}}/udp
|
- LIGHT_PORT={{.LightPort}}/udp
|
||||||
|
@ -116,6 +117,7 @@ func deployNode(client *sshClient, network string, bootv4, bootv5 []string, conf
|
||||||
template.Must(template.New("").Parse(nodeComposefile)).Execute(composefile, map[string]interface{}{
|
template.Must(template.New("").Parse(nodeComposefile)).Execute(composefile, map[string]interface{}{
|
||||||
"Type": kind,
|
"Type": kind,
|
||||||
"Datadir": config.datadir,
|
"Datadir": config.datadir,
|
||||||
|
"Ethashdir": config.ethashdir,
|
||||||
"Network": network,
|
"Network": network,
|
||||||
"FullPort": config.portFull,
|
"FullPort": config.portFull,
|
||||||
"TotalPeers": config.peersTotal,
|
"TotalPeers": config.peersTotal,
|
||||||
|
@ -155,6 +157,7 @@ type nodeInfos struct {
|
||||||
genesis []byte
|
genesis []byte
|
||||||
network int64
|
network int64
|
||||||
datadir string
|
datadir string
|
||||||
|
ethashdir string
|
||||||
ethstats string
|
ethstats string
|
||||||
portFull int
|
portFull int
|
||||||
portLight int
|
portLight int
|
||||||
|
@ -180,23 +183,29 @@ func (info *nodeInfos) Report() map[string]string {
|
||||||
"Ethstats username": info.ethstats,
|
"Ethstats username": info.ethstats,
|
||||||
}
|
}
|
||||||
if info.peersLight > 0 {
|
if info.peersLight > 0 {
|
||||||
|
// Light server enabled
|
||||||
report["Listener port (light nodes)"] = strconv.Itoa(info.portLight)
|
report["Listener port (light nodes)"] = strconv.Itoa(info.portLight)
|
||||||
}
|
}
|
||||||
if info.gasTarget > 0 {
|
if info.gasTarget > 0 {
|
||||||
|
// Miner or signer node
|
||||||
report["Gas limit (baseline target)"] = fmt.Sprintf("%0.3f MGas", info.gasTarget)
|
report["Gas limit (baseline target)"] = fmt.Sprintf("%0.3f MGas", info.gasTarget)
|
||||||
report["Gas price (minimum accepted)"] = fmt.Sprintf("%0.3f GWei", info.gasPrice)
|
report["Gas price (minimum accepted)"] = fmt.Sprintf("%0.3f GWei", info.gasPrice)
|
||||||
}
|
|
||||||
if info.etherbase != "" {
|
if info.etherbase != "" {
|
||||||
report["Miner account"] = info.etherbase
|
// Ethash proof-of-work miner
|
||||||
}
|
report["Ethash directory"] = info.ethashdir
|
||||||
if info.keyJSON != "" {
|
report["Miner account"] = info.etherbase
|
||||||
var key struct {
|
|
||||||
Address string `json:"address"`
|
|
||||||
}
|
}
|
||||||
if err := json.Unmarshal([]byte(info.keyJSON), &key); err == nil {
|
if info.keyJSON != "" {
|
||||||
report["Signer account"] = common.HexToAddress(key.Address).Hex()
|
// Clique proof-of-authority signer
|
||||||
} else {
|
var key struct {
|
||||||
log.Error("Failed to retrieve signer address", "err", err)
|
Address string `json:"address"`
|
||||||
|
}
|
||||||
|
if err := json.Unmarshal([]byte(info.keyJSON), &key); err == nil {
|
||||||
|
report["Signer account"] = common.HexToAddress(key.Address).Hex()
|
||||||
|
} else {
|
||||||
|
log.Error("Failed to retrieve signer address", "err", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return report
|
return report
|
||||||
|
@ -251,6 +260,7 @@ func checkNode(client *sshClient, network string, boot bool) (*nodeInfos, error)
|
||||||
stats := &nodeInfos{
|
stats := &nodeInfos{
|
||||||
genesis: genesis,
|
genesis: genesis,
|
||||||
datadir: infos.volumes["/root/.ethereum"],
|
datadir: infos.volumes["/root/.ethereum"],
|
||||||
|
ethashdir: infos.volumes["/root/.ethash"],
|
||||||
portFull: infos.portmap[infos.envvars["FULL_PORT"]],
|
portFull: infos.portmap[infos.envvars["FULL_PORT"]],
|
||||||
portLight: infos.portmap[infos.envvars["LIGHT_PORT"]],
|
portLight: infos.portmap[infos.envvars["LIGHT_PORT"]],
|
||||||
peersTotal: totalPeers,
|
peersTotal: totalPeers,
|
||||||
|
|
|
@ -65,6 +65,16 @@ func (w *wizard) deployNode(boot bool) {
|
||||||
fmt.Printf("Where should data be stored on the remote machine? (default = %s)\n", infos.datadir)
|
fmt.Printf("Where should data be stored on the remote machine? (default = %s)\n", infos.datadir)
|
||||||
infos.datadir = w.readDefaultString(infos.datadir)
|
infos.datadir = w.readDefaultString(infos.datadir)
|
||||||
}
|
}
|
||||||
|
if w.conf.genesis.Config.Ethash != nil {
|
||||||
|
fmt.Println()
|
||||||
|
if infos.ethashdir == "" {
|
||||||
|
fmt.Printf("Where should the ethash mining DAGs be stored on the remote machine?\n")
|
||||||
|
infos.ethashdir = w.readString()
|
||||||
|
} else {
|
||||||
|
fmt.Printf("Where should the ethash mining DAGs be stored on the remote machine? (default = %s)\n", infos.ethashdir)
|
||||||
|
infos.ethashdir = w.readDefaultString(infos.ethashdir)
|
||||||
|
}
|
||||||
|
}
|
||||||
// Figure out which port to listen on
|
// Figure out which port to listen on
|
||||||
fmt.Println()
|
fmt.Println()
|
||||||
fmt.Printf("Which TCP/UDP port to listen on? (default = %d)\n", infos.portFull)
|
fmt.Printf("Which TCP/UDP port to listen on? (default = %d)\n", infos.portFull)
|
||||||
|
|
Loading…
Reference in New Issue