github.com/kotalco/kotal@v0.3.0/clients/ethereum2/prysm_beacon_node.go (about) 1 package ethereum2 2 3 import ( 4 "fmt" 5 "strings" 6 7 ethereum2v1alpha1 "github.com/kotalco/kotal/apis/ethereum2/v1alpha1" 8 "github.com/kotalco/kotal/controllers/shared" 9 corev1 "k8s.io/api/core/v1" 10 ) 11 12 // PrysmBeaconNode is Prysmatic Labs Ethereum 2.0 client 13 // https://github.com/prysmaticlabs/prysm 14 type PrysmBeaconNode struct { 15 node *ethereum2v1alpha1.BeaconNode 16 } 17 18 // HomeDir returns container home directory 19 func (t *PrysmBeaconNode) HomeDir() string { 20 return PrysmHomeDir 21 } 22 23 // Command returns environment variables for running the client 24 func (t *PrysmBeaconNode) Env() []corev1.EnvVar { 25 return nil 26 } 27 28 // Args returns command line arguments required for client 29 func (t *PrysmBeaconNode) Args() (args []string) { 30 31 node := t.node 32 33 args = append(args, PrysmAcceptTermsOfUse) 34 35 args = append(args, PrysmDataDir, shared.PathData(t.HomeDir())) 36 37 args = append(args, PrysmLogging, string(t.node.Spec.Logging)) 38 39 args = append(args, PrysmExecutionEngineEndpoint, node.Spec.ExecutionEngineEndpoint) 40 41 args = append(args, PrysmFeeRecipient, string(node.Spec.FeeRecipient)) 42 43 jwtSecretPath := fmt.Sprintf("%s/jwt.secret", shared.PathSecrets(t.HomeDir())) 44 args = append(args, PrysmJwtSecretFile, jwtSecretPath) 45 46 args = append(args, fmt.Sprintf("--%s", node.Spec.Network)) 47 48 if node.Spec.CheckpointSyncURL != "" { 49 args = append(args, PrysmCheckpointSyncUrl, node.Spec.CheckpointSyncURL) 50 args = append(args, PrysmGenesisBeaconApiUrl, node.Spec.CheckpointSyncURL) 51 } 52 53 if node.Spec.RPCPort != 0 { 54 args = append(args, PrysmRPCPort, fmt.Sprintf("%d", node.Spec.RPCPort)) 55 } 56 57 // RPC is always on in prysm 58 args = append(args, PrysmRPCHost, shared.Host(true)) 59 60 if node.Spec.GRPC { 61 args = append(args, PrysmGRPCGatewayCorsDomains, strings.Join(node.Spec.CORSDomains, ",")) 62 args = append(args, PrysmGRPCPort, fmt.Sprintf("%d", node.Spec.GRPCPort)) 63 args = append(args, PrysmGRPCHost, shared.Host(node.Spec.GRPC)) 64 } else { 65 args = append(args, PrysmDisableGRPC) 66 } 67 68 if node.Spec.CertSecretName != "" { 69 args = append(args, PrysmTLSCert, fmt.Sprintf("%s/tls.crt", shared.PathSecrets(t.HomeDir()))) 70 args = append(args, PrysmTLSKey, fmt.Sprintf("%s/tls.key", shared.PathSecrets(t.HomeDir()))) 71 } 72 73 args = append(args, PrysmP2PTCPPort, fmt.Sprintf("%d", node.Spec.P2PPort)) 74 args = append(args, PrysmP2PUDPPort, fmt.Sprintf("%d", node.Spec.P2PPort)) 75 76 return 77 } 78 79 // Command returns command for running the client 80 func (t *PrysmBeaconNode) Command() (command []string) { 81 command = []string{"beacon-chain"} 82 return 83 }