Skip to content

Commit 875cb44

Browse files
authored
Merge pull request #413 from shutter-network/schmir/upgrade-go-ethereum
Schmir/upgrade go ethereum
2 parents edf6d43 + 8d76f12 commit 875cb44

File tree

14 files changed

+278
-1111
lines changed

14 files changed

+278
-1111
lines changed

docker/02-init-chain.sh

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,15 @@ for num in 0 1 2 3; do
6060
sentry_node=$(cat data/${sentry_cmd}/config/node_key.json.id)@${sentry_cmd}:${TM_P2P_PORT}
6161

6262
# set seed node for sentry
63-
${BB} sed -i "/^persistent-peers =/c\persistent-peers = \"${seed_node}\"" data/${sentry_cmd}/config/config.toml
63+
${BB} sed -i "/^persistent_peers =/c\persistent_peers = \"${seed_node}\"" data/${sentry_cmd}/config/config.toml
6464
# set validator node for sentry
65-
${BB} sed -i "/^private-peer-ids =/c\private-peer-ids = \"${validator_id}\"" data/${sentry_cmd}/config/config.toml
66-
${BB} sed -i "/^unconditional-peer-ids =/c\unconditional-peer-ids = \"${validator_id}\"" data/${sentry_cmd}/config/config.toml
67-
${BB} sed -i "/^external-address =/c\external-address = \"${sentry_cmd}:${TM_P2P_PORT}\"" data/${sentry_cmd}/config/config.toml
65+
${BB} sed -i "/^private_peer_ids =/c\private_peer_ids = \"${validator_id}\"" data/${sentry_cmd}/config/config.toml
66+
${BB} sed -i "/^unconditional_peer_ids =/c\unconditional_peer_ids = \"${validator_id}\"" data/${sentry_cmd}/config/config.toml
67+
${BB} sed -i "/^external_address =/c\external_address = \"${sentry_cmd}:${TM_P2P_PORT}\"" data/${sentry_cmd}/config/config.toml
6868

6969
# set sentry node for validator
70-
${BB} sed -i "/^persistent-peers =/c\persistent-peers = \"${sentry_node}\"" data/${validator_cmd}/config/config.toml
71-
${BB} sed -i "/^external-address =/c\external-address = \"${validator_cmd}:${TM_P2P_PORT}\"" data/${validator_cmd}/config/config.toml
70+
${BB} sed -i "/^persistent_peers =/c\persistent_peers = \"${sentry_node}\"" data/${validator_cmd}/config/config.toml
71+
${BB} sed -i "/^external_address =/c\external_address = \"${validator_cmd}:${TM_P2P_PORT}\"" data/${validator_cmd}/config/config.toml
7272
done
7373

7474
$DC stop -t 30

play/src/sht/dkg_test.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@
149149
m (-> m
150150
(assoc-in [:rpc :laddr] (format "tcp://127.0.0.1:%d" (rpc-laddr-port n)))
151151
(assoc-in [:p2p :laddr] (format "tcp://127.0.0.1:%d" (+ 27000 n)))
152-
(assoc-in [:p2p :persistent-peers] seeds))]
152+
(assoc-in [:p2p :persistent_peers] seeds))]
153153
(spit path (toml-writer/dump m))))
154154

155155
(defn- sys-chain-config-path

rolling-shutter/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ ${GOPATH}/bin/go-enum:
6969
install-go-enum: ${GOPATH}/bin/go-enum
7070

7171
${GOPATH}/bin/abigen:
72-
${GO} install github.com/ethereum/go-ethereum/cmd/abigen@v1.10.26
72+
${GO} install github.com/ethereum/go-ethereum/cmd/abigen@v1.12.0
7373
install-abigen: ${GOPATH}/bin/abigen
7474

7575

rolling-shutter/app/app.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,25 @@ func (app *ShutterApp) BeginBlock(req abcitypes.RequestBeginBlock) abcitypes.Res
273273
return abcitypes.ResponseBeginBlock{Events: events}
274274
}
275275

276+
func (app *ShutterApp) PrepareProposal(req abcitypes.RequestPrepareProposal) abcitypes.ResponsePrepareProposal {
277+
txs := make([][]byte, 0, len(req.Txs))
278+
var totalBytes int64
279+
for _, tx := range req.Txs {
280+
totalBytes += int64(len(tx))
281+
if totalBytes > req.MaxTxBytes {
282+
break
283+
}
284+
txs = append(txs, tx)
285+
}
286+
return abcitypes.ResponsePrepareProposal{Txs: txs}
287+
}
288+
289+
func (app *ShutterApp) ProcessProposal(_ abcitypes.RequestProcessProposal) abcitypes.ResponseProcessProposal {
290+
return abcitypes.ResponseProcessProposal{
291+
Status: abcitypes.ResponseProcessProposal_ACCEPT,
292+
}
293+
}
294+
276295
// decodeTx decodes the given transaction. It's kind of strange that we have do URL decode the
277296
// message outselves instead of tendermint doing it for us.
278297
func (ShutterApp) decodeTx(tx []byte) (signer common.Address, msg *shmsg.MessageWithNonce, err error) {

rolling-shutter/cmd/bootstrap/bootstrap.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ func bootstrap(config *Config) error {
9494
return err
9595
}
9696

97-
shmcl, err := http.New(config.ShuttermintURL)
97+
shmcl, err := http.New(config.ShuttermintURL, "/websocket")
9898
if err != nil {
9999
log.Fatal().Err(err).Msg("failed to connect to Shuttermint node")
100100
}

rolling-shutter/cmd/chain/chain.go

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@ import (
99
"github.com/rs/zerolog/log"
1010
"github.com/spf13/cobra"
1111
"github.com/spf13/viper"
12-
abciclient "github.com/tendermint/tendermint/abci/client"
1312
cfg "github.com/tendermint/tendermint/config"
1413
"github.com/tendermint/tendermint/node"
14+
"github.com/tendermint/tendermint/p2p"
15+
"github.com/tendermint/tendermint/privval"
16+
"github.com/tendermint/tendermint/proxy"
1517

1618
"github.com/shutter-network/rolling-shutter/rolling-shutter/app"
1719
"github.com/shutter-network/rolling-shutter/rolling-shutter/cmd/shversion"
@@ -61,24 +63,27 @@ func (as *appService) Start(ctx context.Context, runner service.Runner) error {
6163
return errors.Wrap(err, "failed to create tendermint logger")
6264
}
6365

64-
nodeid, err := as.config.LoadNodeKeyID()
65-
if err != nil {
66-
return err
67-
}
68-
log.Info().Str("node-id", string(nodeid)).Msg("loaded node-id")
69-
7066
shapp, err := app.LoadShutterAppFromFile(
7167
filepath.Join(as.config.DBDir(), "shutter.gob"),
7268
)
7369
if err != nil {
7470
return err
7571
}
72+
nodeKey, err := p2p.LoadNodeKey(as.config.NodeKeyFile())
73+
if err != nil {
74+
return err
75+
}
76+
log.Info().Str("node-id", string(nodeKey.ID())).Msg("loaded node-id")
7677

77-
tmNode, err := node.New(
78+
tmNode, err := node.NewNode(
7879
as.config,
80+
privval.LoadFilePV(as.config.PrivValidatorKeyFile(), as.config.PrivValidatorStateFile()),
81+
nodeKey,
82+
proxy.NewLocalClientCreator(&shapp),
83+
node.DefaultGenesisDocProviderFunc(as.config),
84+
node.DefaultDBProvider,
85+
node.DefaultMetricsProvider(as.config.Instrumentation),
7986
logger,
80-
abciclient.NewLocalCreator(&shapp),
81-
nil,
8287
)
8388
if err != nil {
8489
return errors.Wrap(err, "failed to create new Tendermint node")

rolling-shutter/cmd/chain/init.go

Lines changed: 57 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package chain
33
// This has been copied from tendermint's own init command
44

55
import (
6-
"context"
76
"encoding/hex"
87
"fmt"
98
"os"
@@ -19,10 +18,9 @@ import (
1918
"github.com/spf13/viper"
2019
"github.com/tendermint/go-amino"
2120
cfg "github.com/tendermint/tendermint/config"
22-
tmlog "github.com/tendermint/tendermint/libs/log"
2321
tmos "github.com/tendermint/tendermint/libs/os"
2422
tmrand "github.com/tendermint/tendermint/libs/rand"
25-
tmtime "github.com/tendermint/tendermint/libs/time"
23+
"github.com/tendermint/tendermint/p2p"
2624
"github.com/tendermint/tendermint/privval"
2725
"github.com/tendermint/tendermint/types"
2826

@@ -107,7 +105,7 @@ func initFiles(_ *cobra.Command, config *Config, _ []string) error {
107105
}
108106

109107
tendermintCfg := cfg.DefaultConfig()
110-
tendermintCfg.LogLevel = tmlog.LogLevelError
108+
tendermintCfg.BaseConfig.LogLevel = "error"
111109
tendermintCfg.RPC.ListenAddress = config.ListenAddress
112110

113111
scaleToBlockTime(tendermintCfg, config.BlockTime)
@@ -126,7 +124,6 @@ func initFiles(_ *cobra.Command, config *Config, _ []string) error {
126124
tendermintCfg.P2P.ListenAddress = p2pAddress
127125

128126
tendermintCfg.P2P.AllowDuplicateIP = true
129-
tendermintCfg.Mode = cfg.ModeValidator
130127

131128
tendermintCfg.SetRoot(config.RootDir)
132129
if err := tendermintCfg.ValidateBasic(); err != nil {
@@ -138,25 +135,19 @@ func initFiles(_ *cobra.Command, config *Config, _ []string) error {
138135
switch config.Role {
139136
case VALIDATOR:
140137
tendermintCfg.P2P.PexReactor = false
141-
tendermintCfg.Mode = cfg.ModeValidator
142138
tendermintCfg.P2P.AddrBookStrict = false
143-
case "sentry": // even though "sentry" nodes are documented, there is no special mode
139+
case "sentry":
144140
tendermintCfg.P2P.PexReactor = true
145-
tendermintCfg.Mode = cfg.ModeFull
146141
tendermintCfg.P2P.AddrBookStrict = false
147142
case "seed":
148143
tendermintCfg.P2P.PexReactor = true
149-
tendermintCfg.Mode = cfg.ModeSeed
150144
tendermintCfg.P2P.AddrBookStrict = false
151145
default:
152146
return errors.Errorf("illegal value for --role: %s", config.Role)
153147
}
154148
// EnsureRoot also write the config file but with the default config. We want our own, so
155149
// let's overwrite it.
156-
err = cfg.WriteConfigFile(config.RootDir, tendermintCfg)
157-
if err != nil {
158-
return err
159-
}
150+
cfg.WriteConfigFile(config.RootDir+"/config/config.toml", tendermintCfg)
160151
appState := app.NewGenesisAppState(keypers, (2*len(keypers)+2)/3, config.InitialEon)
161152

162153
return initFilesWithConfig(tendermintCfg, config, appState)
@@ -179,80 +170,73 @@ func adjustPort(address string, keyperIndex int) (string, error) {
179170

180171
func initFilesWithConfig(tendermintConfig *cfg.Config, config *Config, appState app.GenesisAppState) error {
181172
var err error
182-
if config.Role == VALIDATOR {
183-
// private validator
184-
privValKeyFile := tendermintConfig.PrivValidator.KeyFile()
185-
privValStateFile := tendermintConfig.PrivValidator.StateFile()
186-
var pv *privval.FilePV
187-
if tmos.FileExists(privValKeyFile) {
188-
pv, err = privval.LoadFilePV(privValKeyFile, privValStateFile)
189-
if err != nil {
190-
return err
191-
}
192-
log.Info().
193-
Str("privValKeyFile", privValKeyFile).
194-
Str("stateFile", privValStateFile).
195-
Msg("Found private validator")
196-
} else {
197-
pv, err = privval.GenFilePV(privValKeyFile, privValStateFile, types.ABCIPubKeyTypeEd25519)
198-
if err != nil {
199-
return err
200-
}
201-
pv.Save()
202-
log.Info().
203-
Str("privValKeyFile", privValKeyFile).
204-
Str("stateFile", privValStateFile).
205-
Msg("Generated private validator")
206-
}
173+
// private validator
174+
privValKeyFile := tendermintConfig.PrivValidatorKeyFile()
175+
privValStateFile := tendermintConfig.PrivValidatorStateFile()
176+
var pv *privval.FilePV
177+
if tmos.FileExists(privValKeyFile) {
178+
pv = privval.LoadFilePV(privValKeyFile, privValStateFile)
179+
log.Info().
180+
Str("privValKeyFile", privValKeyFile).
181+
Str("stateFile", privValStateFile).
182+
Msg("Found private validator")
183+
} else {
184+
pv = privval.GenFilePV(privValKeyFile, privValStateFile)
185+
pv.Save()
186+
log.Info().
187+
Str("privValKeyFile", privValKeyFile).
188+
Str("stateFile", privValStateFile).
189+
Msg("Generated private validator")
190+
}
191+
192+
validatorPubKeyPath := filepath.Join(tendermintConfig.RootDir, "config", "priv_validator_pubkey.hex")
193+
validatorPublicKeyHex := hex.EncodeToString(pv.Key.PubKey.Bytes())
194+
err = os.WriteFile(validatorPubKeyPath, []byte(validatorPublicKeyHex), 0o644)
195+
if err != nil {
196+
return errors.Wrapf(err, "Could not write to %s", validatorPubKeyPath)
197+
}
198+
log.Info().Str("path", validatorPubKeyPath).Str("validatorPublicKey", validatorPublicKeyHex).Msg("Saved private validator publickey")
207199

208-
validatorPubKeyPath := filepath.Join(tendermintConfig.RootDir, "config", "priv_validator_pubkey.hex")
209-
validatorPublicKeyHex := hex.EncodeToString(pv.Key.PubKey.Bytes())
210-
err = os.WriteFile(validatorPubKeyPath, []byte(validatorPublicKeyHex), 0o644)
200+
// genesis file
201+
genFile := tendermintConfig.GenesisFile()
202+
if tmos.FileExists(genFile) {
203+
log.Info().Str("path", genFile).Msg("Found genesis file")
204+
} else {
205+
appStateBytes, err := amino.NewCodec().MarshalJSONIndent(appState, "", " ")
211206
if err != nil {
212-
return errors.Wrapf(err, "Could not write to %s", validatorPubKeyPath)
207+
return err
213208
}
214-
log.Info().Str("path", validatorPubKeyPath).Str("validatorPublicKey", validatorPublicKeyHex).Msg("Saved private validator publickey")
215-
216-
// genesis file
217-
genFile := tendermintConfig.GenesisFile()
218-
if tmos.FileExists(genFile) {
219-
log.Info().Str("path", genFile).Msg("Found genesis file")
220-
} else {
221-
appStateBytes, err := amino.NewCodec().MarshalJSONIndent(appState, "", " ")
222-
if err != nil {
223-
return err
224-
}
225-
genDoc := types.GenesisDoc{
226-
ChainID: fmt.Sprintf("shutter-test-chain-%v", tmrand.Str(6)),
227-
GenesisTime: tmtime.Now(),
228-
ConsensusParams: types.DefaultConsensusParams(),
229-
AppState: appStateBytes,
230-
}
231-
pubKey, err := pv.GetPubKey(context.Background())
232-
if err != nil {
233-
return errors.Wrap(err, "can't get pubkey")
234-
}
235-
genDoc.Validators = []types.GenesisValidator{{
236-
Address: pubKey.Address(),
237-
PubKey: pubKey,
238-
Power: 10,
239-
}}
209+
genDoc := types.GenesisDoc{
210+
ChainID: fmt.Sprintf("shutter-test-chain-%v", tmrand.Str(6)),
211+
GenesisTime: time.Now(),
212+
ConsensusParams: types.DefaultConsensusParams(),
213+
AppState: appStateBytes,
214+
}
215+
pubKey, err := pv.GetPubKey()
216+
if err != nil {
217+
return errors.Wrap(err, "can't get pubkey")
218+
}
219+
genDoc.Validators = []types.GenesisValidator{{
220+
Address: pubKey.Address(),
221+
PubKey: pubKey,
222+
Power: 10,
223+
}}
240224

241-
if err := genDoc.SaveAs(genFile); err != nil {
242-
return err
243-
}
244-
log.Info().Str("path", genFile).Msg("Generated genesis file")
225+
if err := genDoc.SaveAs(genFile); err != nil {
226+
return err
245227
}
228+
log.Info().Str("path", genFile).Msg("Generated genesis file")
246229
}
247230

248231
nodeKeyFile := tendermintConfig.NodeKeyFile()
249232
if tmos.FileExists(nodeKeyFile) {
250233
log.Info().Str("path", nodeKeyFile).Msg("Found node key")
251234
} else {
252-
nodeid, err := tendermintConfig.LoadOrGenNodeKeyID()
235+
nodeKey, err := p2p.LoadOrGenNodeKey(nodeKeyFile)
253236
if err != nil {
254237
return err
255238
}
239+
nodeid := nodeKey.ID()
256240
idpath := nodeKeyFile + ".id"
257241
err = os.WriteFile(idpath, []byte(nodeid), 0o644)
258242
if err != nil {

0 commit comments

Comments
 (0)