mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-27 23:26:44 +00:00
* initial * fixed tests * eip155 tests * progress * fix * fix TestFetchStateSyncEvents* * debug * fixed with updated list of validators * fix * a bit more stable * optimize allocations * linters * fix vals copy * a bit of refactoring * update TestGetTransactionReceiptsByBlock * remove logs from TestGetTransactionReceiptsByBlock in favour of checks * comments * Linters * linters * fixes after merge * fixes after merge * fixes after merge * fixes after merge * fail fast Co-authored-by: Evgeny Danienko <6655321@bk.ru>
89 lines
2.2 KiB
Go
89 lines
2.2 KiB
Go
package utils
|
|
|
|
import (
|
|
"encoding/json"
|
|
"io/ioutil"
|
|
"os"
|
|
|
|
"gopkg.in/urfave/cli.v1"
|
|
|
|
"github.com/ethereum/go-ethereum/core"
|
|
"github.com/ethereum/go-ethereum/eth"
|
|
"github.com/ethereum/go-ethereum/log"
|
|
"github.com/ethereum/go-ethereum/node"
|
|
)
|
|
|
|
var (
|
|
//
|
|
// Bor Specific flags
|
|
//
|
|
|
|
// HeimdallURLFlag flag for heimdall url
|
|
HeimdallURLFlag = cli.StringFlag{
|
|
Name: "bor.heimdall",
|
|
Usage: "URL of Heimdall service",
|
|
Value: "http://localhost:1317",
|
|
}
|
|
|
|
// WithoutHeimdallFlag no heimdall (for testing purpose)
|
|
WithoutHeimdallFlag = cli.BoolFlag{
|
|
Name: "bor.withoutheimdall",
|
|
Usage: "Run without Heimdall service (for testing purpose)",
|
|
}
|
|
|
|
// BorFlags all bor related flags
|
|
BorFlags = []cli.Flag{
|
|
HeimdallURLFlag,
|
|
WithoutHeimdallFlag,
|
|
}
|
|
)
|
|
|
|
func getGenesis(genesisPath string) (*core.Genesis, error) {
|
|
log.Info("Reading genesis at ", "file", genesisPath)
|
|
file, err := os.Open(genesisPath)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer file.Close()
|
|
|
|
genesis := new(core.Genesis)
|
|
if err := json.NewDecoder(file).Decode(genesis); err != nil {
|
|
return nil, err
|
|
}
|
|
return genesis, nil
|
|
}
|
|
|
|
// SetBorConfig sets bor config
|
|
func SetBorConfig(ctx *cli.Context, cfg *eth.Config) {
|
|
cfg.HeimdallURL = ctx.GlobalString(HeimdallURLFlag.Name)
|
|
cfg.WithoutHeimdall = ctx.GlobalBool(WithoutHeimdallFlag.Name)
|
|
}
|
|
|
|
// CreateBorEthereum Creates bor ethereum object from eth.Config
|
|
func CreateBorEthereum(cfg *eth.Config) *eth.Ethereum {
|
|
workspace, err := ioutil.TempDir("", "bor-command-node-")
|
|
if err != nil {
|
|
Fatalf("Failed to create temporary keystore: %v", err)
|
|
}
|
|
|
|
// Create a networkless protocol stack and start an Ethereum service within
|
|
stack, err := node.New(&node.Config{DataDir: workspace, UseLightweightKDF: true, Name: "bor-command-node"})
|
|
if err != nil {
|
|
Fatalf("Failed to create node: %v", err)
|
|
}
|
|
ethereum, err := eth.New(stack, cfg)
|
|
if err != nil {
|
|
Fatalf("Failed to register Ethereum protocol: %v", err)
|
|
}
|
|
|
|
// Start the node and assemble the JavaScript console around it
|
|
if err = stack.Start(); err != nil {
|
|
Fatalf("Failed to start stack: %v", err)
|
|
}
|
|
_, err = stack.Attach()
|
|
if err != nil {
|
|
Fatalf("Failed to attach to node: %v", err)
|
|
}
|
|
|
|
return ethereum
|
|
}
|