vspd/main.go
jholdstock 1c72b8f1e5 init
2020-05-13 17:08:02 +01:00

67 lines
1.2 KiB
Go

package main
import (
"crypto/ed25519"
"crypto/rand"
"io/ioutil"
"log"
"os"
"path/filepath"
"github.com/decred/dcrd/chaincfg/v3"
"github.com/decred/dcrd/rpcclient"
)
const listen = ":3000"
// Config vars
var (
signKey ed25519.PrivateKey
pubKey ed25519.PublicKey
poolFees float64
netParams *chaincfg.Params
)
// Database with stubbed methods
var db Database
var nodeConnection *rpcclient.Client
var walletConnection *WalletClient
func initConfig() {
seedPath := filepath.Join("dcrvsp", "sign.seed")
seed, err := ioutil.ReadFile(seedPath)
if err != nil {
if !os.IsNotExist(err) {
log.Fatal("seedPath does not exist")
}
_, signKey, err = ed25519.GenerateKey(rand.Reader)
if err != nil {
log.Fatalf("failed to generate signing key: %v", err)
}
err = ioutil.WriteFile(seedPath, signKey.Seed(), 0400)
if err != nil {
log.Fatalf("failed to save signing key: %v", err)
}
} else {
signKey = ed25519.NewKeyFromSeed(seed)
}
pubKey, ok := signKey.Public().(ed25519.PublicKey)
if !ok {
log.Fatalf("failed to cast signing key: %T", pubKey)
}
netParams = chaincfg.TestNet3Params()
}
func main() {
initConfig()
// Start HTTP server
log.Printf("Listening on %s", listen)
log.Print(newRouter().Run(listen))
}