Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Development #147

Merged
merged 47 commits into from
Dec 17, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
21dd59b
.
mrFranklin Nov 20, 2018
3dba6a6
remove unrelated code
mrFranklin Nov 28, 2018
d241216
Interim POC shh
dbkbali Nov 14, 2018
cf62bd2
cmd/utils: max out the OS file allowance, don't cap to 2K
karalabe Nov 29, 2018
b98d2e9
swarm/network/stream: Debug log instead of Warn for retrieval failure…
holisticode Dec 4, 2018
3ac633b
swarm/api/http: add resetting timer metrics to requests (#18249)
acud Dec 5, 2018
de39513
core, internal, eth, miner, les: Take VM config from BlockChain (#17955)
chfast Dec 6, 2018
6618097
swarm: snapshot load improvement (#18220)
janos Dec 7, 2018
d2328b6
Merge pull request #18211 from karalabe/drop-fd-limit
karalabe Dec 7, 2018
f32790f
node: warn when using deprecated config/resource files (#18199)
fjl Dec 7, 2018
c1d462e
cmd/puppeth: fix rogue quote in alethGenesisSpec JSON (#18262)
jpeletier Dec 10, 2018
dfa16a3
eth/tracers: fixed incorrect storage from prestate_tracer (#18253)
mafrasi2 Dec 10, 2018
6a1a437
params: set mainnet and Rinkeby Constantinople fork blocks
karalabe Dec 10, 2018
09d588e
Merge pull request #18268 from karalabe/forkit
karalabe Dec 10, 2018
42a914a
cmd/evm, core/vm, eth: implement api methods to do stdjson dump to lo…
holiman Oct 15, 2018
0983d02
eth, internal/web3ext: tiny polishes in tracers
karalabe Dec 10, 2018
fd66af5
Merge pull request #17914 from holiman/block_analysis
karalabe Dec 10, 2018
af8daf9
node, rpc: log cleanups in ipc listener function (#18124)
karalabe Dec 10, 2018
da6e6e7
light: fix duplicated argument in bytes.Equal call
quasilyte Dec 10, 2018
2fdff33
Merge pull request #18269 from Quasilyte/patch-1
karalabe Dec 10, 2018
c1e3fe6
ethereum: fix typo in interfaces.go (#18266)
siburu Dec 10, 2018
48b70ec
cmd, eth: Add support for `--whitelist <blocknum>=<hash>,...` flag
ryanschneider Nov 2, 2018
31b3334
cmd/utils, eth: minor polishes on whitelist code
karalabe Dec 10, 2018
362e2ba
params: update CHTs for the 1.8.20 release
karalabe Dec 10, 2018
dd98d1d
swarm/network: Correct ambiguity in compared addresses (#18251)
nolash Dec 10, 2018
9fe5d20
Merge pull request #18028 from ryanschneider/blockhash-whitelist
karalabe Dec 10, 2018
b2aac65
Merge pull request #18271 from karalabe/1.8.20-chts
karalabe Dec 10, 2018
9e1127f
setting up whisper channel with smart contract and tests
Dec 10, 2018
bb72408
cmd/swarm, metrics, swarm/api/client, swarm/storage, swarm/metrics, s…
acud Dec 11, 2018
69a8d98
cmd/faucet: fix faucet static peer regression
karalabe Dec 11, 2018
38c3d88
cmd/puppeth: support latest docker compose, expose faucet UDP
karalabe Dec 11, 2018
5584574
Merge pull request #18281 from karalabe/puppeth-faucet
karalabe Dec 11, 2018
83a9a73
cmd/geth, core, eth: implement Constantinople override flag (#18273)
holiman Dec 11, 2018
24d727b
params, swarm: release Geth v1.8.20 and Swarm v0.3.8
karalabe Dec 11, 2018
4901d47
pass blockhash to whisper channel
Dec 11, 2018
2edc554
Update README.md
GregTheGreek Dec 11, 2018
cc09e28
Implementation of Whisper Rollback Endpoint
dbkbali Dec 11, 2018
1ebbcd6
Merge branch 'development' into whisper_smart_endpoint
dbkbali Dec 12, 2018
5bbff15
Fix test
dbkbali Dec 12, 2018
a9c4a1b
Tweaks to Commit - Removal of Unnecessary Changes
dbkbali Dec 12, 2018
b3610e1
Remove Redundant shyftconduitaddress
dbkbali Dec 12, 2018
29d369f
Merge pull request #143 from ShyftNetwork/GregTheGreek-patch-1
GregTheGreek Dec 12, 2018
359baf1
Merge pull request #144 from ShyftNetwork/whisper_smart_endpoint
GregTheGreek Dec 12, 2018
41bc573
Gitignore _Workspace
dbkbali Dec 14, 2018
421b9c0
Merge Upstream Release v1.8.20
dbkbali Dec 15, 2018
d924393
Modify Allows failures on OSX
dbkbali Dec 17, 2018
a7f12f0
Merge pull request #146 from ShyftNetwork/upstream_14_12_2018
GregTheGreek Dec 17, 2018
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,5 @@ shyftBlockExplorerApi/vendor/**/.git
shyftBlockExplorerApi/vendor/*
!shyftBlockExplorerApi/vendor/*.json

build/_workspace/*

2 changes: 2 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ language: go
go_import_path: github.com/ShyftNetwork/go-empyrean

matrix:
allow_failures:
- os: osx
include:
- os: linux
dist: trusty
Expand Down
40 changes: 40 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ go-empyrean is based on a fork of go-ethereum. Much of the functionality and pro

https://shyftnetwork.github.io/go-empyrean/#setup

#### Tag Release Command

`gren release --tags=v0.8.2 --data-source=prs --override`

#### Dependencies

- go 1.10
Expand Down Expand Up @@ -72,6 +76,42 @@ To stop Geth, **`crtl+C`** in the terminal window, if you proceed with the start

To see transactions being submitted on the network see the sendTransactions command in the CLI section of this readme.

#####SHH/Whisper
The shyft go_empyrean node, unlike go ethereum starts the SHH whisper client by default. This is to facilitate broadcast messaging from the shyft js bridge to each of the mining nodes.

To disable the whisper client a startup flag --disablewhisper is provided, which must be passed into the command line when starting up geth.

```
geth --disablewhisper

```

To overwrite the default whisper variables, the following flags are also provided:

--shh.maxmessagesize - sets the maximum message size fir the whisper client (integer) -(default: 1048576) --shh.maxmessagesize=128
--shh.pow - the minimum POW accepted for processing whisper messages (float64 - default: 0.2) --shh.pow=0.3
--shh.restrict-light - restrictions connections between two whisper light clients (boolean - default: true) --shh.restrict-light

To authenticate whisper messages a call is made to a smart contract that has a predetermined address on the blockchain.
Upon starting up a geth node if a user wishes to use this functionality they should ensure
that the WhisperSignersContract variable in config.toml contains the contract address for authentication of Whisper Signers.

The authentication of WhisperSigner's broadcast messages relies on automatically generated go contract bindings using the
the abigen cmd line utility. Should the contract be changed or modified these bindings will need to be regenerated.
Steps for regenerating are as follows:

```$xslt
1. Generate the abi for the subject contract and save it at ./generated_bindings/contract_abis/whispersigner_abi.json.

2. Run the following command to regenerate the contract bindings:

./build/bin/abigen --sol shyft-cli/web3/validSignersDeploy/ValidSigners.sol --pkg shyft_contracts --out generated_bindings/whisper_signer_binding.go

```

It should be noted that the authentication currently relies on a smart contract boolean returning function [isValidSigner(bool)],
that for a given signature address returns true if the contract or contract owner has a public key matching the signature.

#### Docker Images

Two sets of Docker Images are available for ShyftGeth, the Postgresql Database, and the Shyft Blockchain Explorer, which can be used for local development and testnet connection. The development settings are included in docker-compose.yml, the testnet settings are included in docker-compose.production.yml. To launch these containers you will need to have docker-compose installed on your computer. Installation instructions for docker-compose are available [here](https://docs.docker.com/install/).
Expand Down
2 changes: 1 addition & 1 deletion cmd/evm/runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ func runCmd(ctx *cli.Context) error {
genesisConfig *core.Genesis
)
if ctx.GlobalBool(MachineFlag.Name) {
tracer = NewJSONLogger(logconfig, os.Stdout)
tracer = vm.NewJSONLogger(logconfig, os.Stdout)
} else if ctx.GlobalBool(DebugFlag.Name) {
debugLogger = vm.NewStructLogger(logconfig)
tracer = debugLogger
Expand Down
2 changes: 1 addition & 1 deletion cmd/evm/staterunner.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func stateTestCmd(ctx *cli.Context) error {
)
switch {
case ctx.GlobalBool(MachineFlag.Name):
tracer = NewJSONLogger(config, os.Stderr)
tracer = vm.NewJSONLogger(config, os.Stderr)

case ctx.GlobalBool(DebugFlag.Name):
debugger = vm.NewStructLogger(config)
Expand Down
2 changes: 1 addition & 1 deletion cmd/faucet/faucet.go
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ func newFaucet(genesis *core.Genesis, port int, enodes []*discv5.Node, network u
}
for _, boot := range enodes {
old, err := enode.ParseV4(boot.String())
if err != nil {
if err == nil {
stack.Server().AddPeer(old)
}
}
Expand Down
24 changes: 12 additions & 12 deletions cmd/geth/accountcmd_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ Account #2: {289d485d9771714cce91d3393d764e1311907acc} keystore://{{.Datadir}}/k
}

func TestAccountNew(t *testing.T) {
geth := runGeth(t, "account", "new", "--lightkdf")
geth := runGeth(t, "--disablewhisper", "account", "new", "--lightkdf")
defer geth.ExpectExit()
geth.Expect(`
Your new account is locked with a password. Please give a password. Do not forget this password.
Expand All @@ -89,7 +89,7 @@ Repeat passphrase: {{.InputLine "foobar"}}
}

func TestAccountNewBadRepeat(t *testing.T) {
geth := runGeth(t, "account", "new", "--lightkdf")
geth := runGeth(t, "--disablewhisper", "account", "new", "--lightkdf")
defer geth.ExpectExit()
geth.Expect(`
Your new account is locked with a password. Please give a password. Do not forget this password.
Expand All @@ -102,7 +102,7 @@ Fatal: Passphrases do not match

func TestAccountUpdate(t *testing.T) {
datadir := tmpDatadirWithKeystore(t)
geth := runGeth(t, "account", "update",
geth := runGeth(t, "--disablewhisper", "account", "update",
"--datadir", datadir, "--lightkdf",
"f466859ead1932d743d622cb74fc058882e8648a")
defer geth.ExpectExit()
Expand All @@ -117,7 +117,7 @@ Repeat passphrase: {{.InputLine "foobar2"}}
}

func TestWalletImport(t *testing.T) {
geth := runGeth(t, "wallet", "import", "--lightkdf", "testdata/guswallet.json")
geth := runGeth(t, "--disablewhisper", "wallet", "import", "--lightkdf", "testdata/guswallet.json")
defer geth.ExpectExit()
geth.Expect(`
!! Unsupported terminal, password will be echoed.
Expand All @@ -132,7 +132,7 @@ Address: {d4584b5f6229b7be90727b0fc8c6b91bb427821f}
}

func TestWalletImportBadPassword(t *testing.T) {
geth := runGeth(t, "wallet", "import", "--lightkdf", "testdata/guswallet.json")
geth := runGeth(t, "--disablewhisper", "wallet", "import", "--lightkdf", "testdata/guswallet.json")
defer geth.ExpectExit()
geth.Expect(`
!! Unsupported terminal, password will be echoed.
Expand All @@ -144,7 +144,7 @@ Fatal: could not decrypt key with given passphrase
func TestUnlockFlag(t *testing.T) {
datadir := tmpDatadirWithKeystore(t)
geth := runGeth(t,
"--datadir", datadir, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
"--disablewhisper", "--datadir", datadir, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
"--unlock", "f466859ead1932d743d622cb74fc058882e8648a",
"js", "testdata/empty.js")
geth.Expect(`
Expand All @@ -168,7 +168,7 @@ Passphrase: {{.InputLine "foobar"}}
func TestUnlockFlagWrongPassword(t *testing.T) {
datadir := tmpDatadirWithKeystore(t)
geth := runGeth(t,
"--datadir", datadir, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
"--disablewhisper", "--datadir", datadir, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
"--unlock", "f466859ead1932d743d622cb74fc058882e8648a")
defer geth.ExpectExit()
geth.Expect(`
Expand All @@ -187,7 +187,7 @@ Fatal: Failed to unlock account f466859ead1932d743d622cb74fc058882e8648a (could
func TestUnlockFlagMultiIndex(t *testing.T) {
datadir := tmpDatadirWithKeystore(t)
geth := runGeth(t,
"--datadir", datadir, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
"--disablewhisper", "--datadir", datadir, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
"--unlock", "0,2", "js", "testdata/empty.js")
geth.Expect(`
Unlocking account 0 | Attempt 1/3
Expand All @@ -213,7 +213,7 @@ Passphrase: {{.InputLine "foobar"}}
func TestUnlockFlagPasswordFile(t *testing.T) {
datadir := tmpDatadirWithKeystore(t)
geth := runGeth(t,
"--datadir", datadir, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
"--disablewhisper", "--datadir", datadir, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
"--password", "testdata/passwords.txt", "--unlock", "0,2",
"js", "testdata/empty.js")
geth.ExpectExit()
Expand All @@ -233,7 +233,7 @@ func TestUnlockFlagPasswordFile(t *testing.T) {
func TestUnlockFlagPasswordFileWrongPassword(t *testing.T) {
datadir := tmpDatadirWithKeystore(t)
geth := runGeth(t,
"--datadir", datadir, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
"--disablewhisper", "--datadir", datadir, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
"--password", "testdata/wrong-passwords.txt", "--unlock", "0,2")
defer geth.ExpectExit()
geth.Expect(`
Expand All @@ -244,7 +244,7 @@ Fatal: Failed to unlock account 0 (could not decrypt key with given passphrase)
func TestUnlockFlagAmbiguous(t *testing.T) {
store := filepath.Join("..", "..", "accounts", "keystore", "testdata", "dupes")
geth := runGeth(t,
"--keystore", store, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
"--disablewhisper", "--keystore", store, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
"--unlock", "f466859ead1932d743d622cb74fc058882e8648a",
"js", "testdata/empty.js")
defer geth.ExpectExit()
Expand Down Expand Up @@ -282,7 +282,7 @@ In order to avoid this warning, you need to remove the following duplicate key f
func TestUnlockFlagAmbiguousWrongPassword(t *testing.T) {
store := filepath.Join("..", "..", "accounts", "keystore", "testdata", "dupes")
geth := runGeth(t,
"--keystore", store, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
"--disablewhisper", "--keystore", store, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
"--unlock", "f466859ead1932d743d622cb74fc058882e8648a")
defer geth.ExpectExit()

Expand Down
20 changes: 8 additions & 12 deletions cmd/geth/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"errors"
"fmt"
"io"
"math/big"
"os"
"reflect"
"unicode"
Expand Down Expand Up @@ -141,28 +142,23 @@ func makeConfigNode(ctx *cli.Context) (*node.Node, gethConfig) {
return stack, cfg
}

// enableWhisper returns true in case one of the whisper flags is set.
func enableWhisper(ctx *cli.Context) bool {
for _, flag := range whisperFlags {
if ctx.GlobalIsSet(flag.GetName()) {
return true
}
}
return false
func disableWhisper(ctx *cli.Context) bool {
return ctx.GlobalBool(utils.WhisperOffFlag.Name)
}

func makeFullNode(ctx *cli.Context) *node.Node {
stack, cfg := makeConfigNode(ctx)

if ctx.GlobalIsSet(utils.ConstantinopleOverrideFlag.Name) {
cfg.Eth.ConstantinopleOverride = new(big.Int).SetUint64(ctx.GlobalUint64(utils.ConstantinopleOverrideFlag.Name))
}
utils.RegisterEthService(stack, &cfg.Eth)

if ctx.GlobalBool(utils.DashboardEnabledFlag.Name) {
utils.RegisterDashboardService(stack, &cfg.Dashboard, gitCommit)
}
// Whisper must be explicitly enabled by specifying at least 1 whisper flag or in dev mode
shhEnabled := enableWhisper(ctx)
shhAutoEnabled := !ctx.GlobalIsSet(utils.WhisperEnabledFlag.Name) && ctx.GlobalIsSet(utils.DeveloperFlag.Name)
if shhEnabled || shhAutoEnabled {
// Shyft Note: We want whisper enabled by default and explicitly disabled through the Whisper Off Flag
if !disableWhisper(ctx) {
if ctx.GlobalIsSet(utils.WhisperMaxMessageSizeFlag.Name) {
cfg.Shh.MaxMessageSize = uint32(ctx.Int(utils.WhisperMaxMessageSizeFlag.Name))
}
Expand Down
17 changes: 11 additions & 6 deletions cmd/geth/consolecmd_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ import (

const (
ipcAPIs = "admin:1.0 debug:1.0 eth:1.0 ethash:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 shh:1.0 txpool:1.0 web3:1.0"
httpAPIs = "eth:1.0 net:1.0 rpc:1.0 web3:1.0"
httpAPIs = "eth:1.0 net:1.0 rpc:1.0 shh:1.0 web3:1.0"
)

// Tests that a node embedded within a console can be started up properly and
Expand All @@ -41,9 +41,11 @@ func TestConsoleWelcome(t *testing.T) {
coinbase := "0x8605cdbbdb6d264aa742e77020dcbc58fcdce182"

// Start a geth console, make sure it's cleaned up and terminate the console
// Note: Whisper is on by default and we need to pass --ws --wsaddr flags to connect to
// shh client
geth := runGeth(t,
"--port", "0", "--maxpeers", "0", "--nodiscover", "--nat", "none",
"--etherbase", coinbase, "--shh",
"--etherbase", coinbase, "--ws", "--wsaddr=0.0.0.0",
"console")

// Gather all the infos the welcome message needs to contain
Expand Down Expand Up @@ -81,11 +83,11 @@ func TestIPCAttachWelcome(t *testing.T) {
defer os.RemoveAll(ws)
ipc = filepath.Join(ws, "geth.ipc")
}
// Note: we need --shh because testAttachWelcome checks for default
// list of ipc modules and shh is included there.
// Note: Whisper is on by default and we need to pass --ws --wsaddr flags to connect to
// shh client
geth := runGeth(t,
"--port", "0", "--maxpeers", "0", "--nodiscover", "--nat", "none",
"--etherbase", coinbase, "--shh", "--ipcpath", ipc)
"--etherbase", coinbase, "--ipcpath", ipc, "--ws", "--wsaddr=0.0.0.0")

time.Sleep(30 * time.Second) // Simple way to wait for the RPC endpoint to open
testAttachWelcome(t, geth, "ipc:"+ipc, ipcAPIs)
Expand All @@ -97,9 +99,12 @@ func TestIPCAttachWelcome(t *testing.T) {
func TestHTTPAttachWelcome(t *testing.T) {
coinbase := "0x8605cdbbdb6d264aa742e77020dcbc58fcdce182"
port := strconv.Itoa(trulyRandInt(1024, 65536)) // Yeah, sometimes this will fail, sorry :P

// Note: Whisper is on by default and we need to pass --ws --wsaddr flags to connect to
// shh client
geth := runGeth(t,
"--port", "0", "--maxpeers", "0", "--nodiscover", "--nat", "none",
"--etherbase", coinbase, "--rpc", "--rpcport", port)
"--etherbase", coinbase, "--rpc", "--rpcport", port, "--ws", "--wsaddr=0.0.0.0")

time.Sleep(30 * time.Second) // Simple way to wait for the RPC endpoint to open
testAttachWelcome(t, geth, "http://localhost:"+port, httpAPIs)
Expand Down
2 changes: 1 addition & 1 deletion cmd/geth/genesis_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ func TestCustomGenesis(t *testing.T) {
// Query the custom genesis block
geth := runGeth(t,
"--datadir", datadir, "--maxpeers", "0", "--port", "0",
"--nodiscover", "--nat", "none", "--ipcdisable",
"--nodiscover", "--ws", "--wsaddr=0.0.0.0", "--nat", "none", "--ipcdisable",
"--exec", tt.query, "console")
geth.ExpectRegexp(tt.result)
geth.ExpectExit()
Expand Down
4 changes: 4 additions & 0 deletions cmd/geth/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ var (
utils.LightServFlag,
utils.LightPeersFlag,
utils.LightKDFFlag,
utils.WhitelistFlag,
utils.CacheFlag,
utils.CacheDatabaseFlag,
utils.CacheTrieFlag,
Expand Down Expand Up @@ -123,6 +124,7 @@ var (
utils.RinkebyFlag,
utils.VMEnableDebugFlag,
utils.NetworkIdFlag,
utils.ConstantinopleOverrideFlag,
utils.RPCCORSDomainFlag,
utils.RPCVirtualHostsFlag,
utils.EthStatsURLFlag,
Expand Down Expand Up @@ -152,9 +154,11 @@ var (

whisperFlags = []cli.Flag{
utils.WhisperEnabledFlag,
utils.WhisperOffFlag,
utils.WhisperMaxMessageSizeFlag,
utils.WhisperMinPOWFlag,
utils.WhisperRestrictConnectionBetweenLightClientsFlag,
utils.WhisperKeys,
}

metricsFlags = []cli.Flag{
Expand Down
8 changes: 8 additions & 0 deletions cmd/geth/usage.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ var AppHelpFlagGroups = []flagGroup{
utils.LightServFlag,
utils.LightPeersFlag,
utils.LightKDFFlag,
utils.WhitelistFlag,
},
},
{
Expand Down Expand Up @@ -144,6 +145,13 @@ var AppHelpFlagGroups = []flagGroup{
utils.PasswordFileFlag,
},
},
{
Name: "WHISPER BROADCAST KEYS",
Flags: []cli.Flag{
utils.WhisperKeys,
utils.PasswordFileFlag,
},
},
{
Name: "API AND CONSOLE",
Flags: []cli.Flag{
Expand Down
2 changes: 1 addition & 1 deletion cmd/puppeth/genesis.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ type alethGenesisSpec struct {
BlockReward *hexutil.Big `json:"blockReward"`
NetworkID hexutil.Uint64 `json:"networkID"`
ChainID hexutil.Uint64 `json:"chainID"`
AllowFutureBlocks bool `json:"allowFutureBlocks""`
AllowFutureBlocks bool `json:"allowFutureBlocks"`
} `json:"params"`

Genesis struct {
Expand Down
3 changes: 2 additions & 1 deletion cmd/puppeth/module_ethstats.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ version: '2'
services:
ethstats:
build: .
image: {{.Network}}/ethstats{{if not .VHost}}
image: {{.Network}}/ethstats
container_name: {{.Network}}_ethstats_1{{if not .VHost}}
ports:
- "{{.Port}}:3000"{{end}}
environment:
Expand Down
1 change: 1 addition & 0 deletions cmd/puppeth/module_explorer.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ services:
explorer:
build: .
image: {{.Network}}/explorer
container_name: {{.Network}}_explorer_1
ports:
- "{{.NodePort}}:{{.NodePort}}"
- "{{.NodePort}}:{{.NodePort}}/udp"{{if not .VHost}}
Expand Down
4 changes: 3 additions & 1 deletion cmd/puppeth/module_faucet.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,10 @@ services:
faucet:
build: .
image: {{.Network}}/faucet
container_name: {{.Network}}_faucet_1
ports:
- "{{.EthPort}}:{{.EthPort}}"{{if not .VHost}}
- "{{.EthPort}}:{{.EthPort}}"
- "{{.EthPort}}:{{.EthPort}}/udp"{{if not .VHost}}
- "{{.ApiPort}}:8080"{{end}}
volumes:
- {{.Datadir}}:/root/.faucet
Expand Down
Loading