|
|
|
@ -22,7 +22,6 @@ package main |
|
|
|
|
import ( |
|
|
|
|
"bytes" |
|
|
|
|
"crypto/ecdsa" |
|
|
|
|
"fmt" |
|
|
|
|
"io/ioutil" |
|
|
|
|
"math/big" |
|
|
|
|
"math/rand" |
|
|
|
@ -40,7 +39,7 @@ import ( |
|
|
|
|
"github.com/ethereum/go-ethereum/log" |
|
|
|
|
"github.com/ethereum/go-ethereum/node" |
|
|
|
|
"github.com/ethereum/go-ethereum/p2p" |
|
|
|
|
"github.com/ethereum/go-ethereum/p2p/discover" |
|
|
|
|
"github.com/ethereum/go-ethereum/p2p/enode" |
|
|
|
|
"github.com/ethereum/go-ethereum/params" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
@ -62,11 +61,11 @@ func main() { |
|
|
|
|
|
|
|
|
|
var ( |
|
|
|
|
nodes []*node.Node |
|
|
|
|
enodes []string |
|
|
|
|
enodes []*enode.Node |
|
|
|
|
) |
|
|
|
|
for _, sealer := range sealers { |
|
|
|
|
// Start the node and wait until it's up
|
|
|
|
|
node, err := makeSealer(genesis, enodes) |
|
|
|
|
node, err := makeSealer(genesis) |
|
|
|
|
if err != nil { |
|
|
|
|
panic(err) |
|
|
|
|
} |
|
|
|
@ -76,18 +75,12 @@ func main() { |
|
|
|
|
time.Sleep(250 * time.Millisecond) |
|
|
|
|
} |
|
|
|
|
// Connect the node to al the previous ones
|
|
|
|
|
for _, enode := range enodes { |
|
|
|
|
enode, err := discover.ParseNode(enode) |
|
|
|
|
if err != nil { |
|
|
|
|
panic(err) |
|
|
|
|
} |
|
|
|
|
node.Server().AddPeer(enode) |
|
|
|
|
for _, n := range enodes { |
|
|
|
|
node.Server().AddPeer(n) |
|
|
|
|
} |
|
|
|
|
// Start tracking the node and it's enode url
|
|
|
|
|
// Start tracking the node and it's enode
|
|
|
|
|
nodes = append(nodes, node) |
|
|
|
|
|
|
|
|
|
enode := fmt.Sprintf("enode://%s@127.0.0.1:%d", node.Server().NodeInfo().ID, node.Server().NodeInfo().Ports.Listener) |
|
|
|
|
enodes = append(enodes, enode) |
|
|
|
|
enodes = append(enodes, node.Server().Self()) |
|
|
|
|
|
|
|
|
|
// Inject the signer key and start sealing with it
|
|
|
|
|
store := node.AccountManager().Backends(keystore.KeyStoreType)[0].(*keystore.KeyStore) |
|
|
|
@ -177,7 +170,7 @@ func makeGenesis(faucets []*ecdsa.PrivateKey, sealers []*ecdsa.PrivateKey) *core |
|
|
|
|
return genesis |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func makeSealer(genesis *core.Genesis, nodes []string) (*node.Node, error) { |
|
|
|
|
func makeSealer(genesis *core.Genesis) (*node.Node, error) { |
|
|
|
|
// Define the basic configurations for the Ethereum node
|
|
|
|
|
datadir, _ := ioutil.TempDir("", "") |
|
|
|
|
|
|
|
|
|