mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-06-02 20:26:43 +00:00

* [NOD-70] Added GetBlockTemplate method to rpcclient * [NOD-70] Basic infrastructure for mining simulator * [NOD-70] Fix txFees in NewBlockTempalte: include value for fee transaction + don't set fee for coinbase = -totalFees. * [NOD-70] Added capabilities parameter to Client.GetBlockTemplate call * [NOD-70] Dirty version of mining simulator complete * [NOD-70] cleaned up mining simulator * [NOD-70] Added dockerfile to mining simulator * [NOD-70] Updated base config path of mining simulator to mining_simulator * [NOD-70] Remove error return from msgblock.AddTransaction - it never returns one * [NOD-70] Renamed r -> random * [NOD-70] Move paths initialization of mining simulator to main * [NOD-70] Cleaned up mining simulator dockerfile * [NOD-70] Add '--' to tini argument
70 lines
1.2 KiB
Go
70 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os/user"
|
|
"path"
|
|
"runtime/debug"
|
|
"sync/atomic"
|
|
|
|
"github.com/daglabs/btcd/rpcclient"
|
|
)
|
|
|
|
var isRunning int32
|
|
|
|
func main() {
|
|
defer handlePanic()
|
|
|
|
err := initPaths()
|
|
if err != nil {
|
|
panic(fmt.Errorf("Error initializing paths: %s", err))
|
|
}
|
|
|
|
addressList, err := getAddressList()
|
|
if err != nil {
|
|
panic(fmt.Errorf("Couldn't load address list: %s", err))
|
|
}
|
|
|
|
clients, err := connectToServers(addressList)
|
|
if err != nil {
|
|
panic(fmt.Errorf("Error connecting to servers: %s", err))
|
|
}
|
|
defer disconnect(clients)
|
|
|
|
atomic.StoreInt32(&isRunning, 1)
|
|
|
|
err = mineLoop(clients)
|
|
if err != nil {
|
|
panic(fmt.Errorf("Error in main loop: %s", err))
|
|
}
|
|
}
|
|
|
|
func initPaths() error {
|
|
usr, err := user.Current()
|
|
if err != nil {
|
|
return fmt.Errorf("Error getting current user: %s", err)
|
|
}
|
|
|
|
basePath := ".btcd/mining_simulator"
|
|
|
|
certificatePath = path.Join(usr.HomeDir, basePath, "rpc.cert")
|
|
addressListPath = path.Join(usr.HomeDir, basePath, "addresses")
|
|
|
|
return nil
|
|
}
|
|
|
|
func disconnect(clients []*rpcclient.Client) {
|
|
for _, client := range clients {
|
|
client.Disconnect()
|
|
}
|
|
}
|
|
|
|
func handlePanic() {
|
|
err := recover()
|
|
if err != nil {
|
|
log.Printf("Fatal error: %s", err)
|
|
log.Printf("Stack trace: %s", debug.Stack())
|
|
}
|
|
}
|