tendermint/types
Ethan Buchman 9293ae76bf p2p: introduce peerConn to simplify peer creation (#1226)
* expose AuthEnc in the P2P config

if AuthEnc is true, dialed peers must have a node ID in the address and
it must match the persistent pubkey from the secret handshake.

Refs #1157

* fixes after my own review

* fix docs

* fix build failure

```
p2p/pex/pex_reactor_test.go:288:88: cannot use seed.NodeInfo().NetAddress() (type *p2p.NetAddress) as type string in array or slice literal
```

* p2p: introduce peerConn to simplify peer creation

* Introduce `peerConn` containing the known fields of `peer`
* `peer` only created in `sw.addPeer` once handshake is complete and NodeInfo is checked
* Eliminates some mutable variables and makes the code flow better
* Simplifies the `newXxxPeer` funcs
* Use ID instead of PubKey where possible.
        * SetPubKeyFilter -> SetIDFilter
        * nodeInfo.Validate takes ID
        * remove peer.PubKey()

* persistent node ids

* fixes from review

* test: use ip_plus_id.sh more

* fix invalid memory panic during fast_sync test

```
2018-02-21T06:30:05Z box887.localdomain docker/local_testnet_4[14907]: panic: runtime error: invalid memory address or nil pointer dereference
2018-02-21T06:30:05Z box887.localdomain docker/local_testnet_4[14907]: [signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x98dd3e]
2018-02-21T06:30:05Z box887.localdomain docker/local_testnet_4[14907]:
2018-02-21T06:30:05Z box887.localdomain docker/local_testnet_4[14907]: goroutine 3432 [running]:
2018-02-21T06:30:05Z box887.localdomain docker/local_testnet_4[14907]: github.com/tendermint/tendermint/p2p.newOutboundPeerConn(0xc423fd1380, 0xc420933e00, 0x1, 0x1239a60, 0
xc420128c40, 0x2, 0x42caf6, 0xc42001f300, 0xc422831d98, 0xc4227951c0, ...)
2018-02-21T06:30:05Z box887.localdomain docker/local_testnet_4[14907]: #011/go/src/github.com/tendermint/tendermint/p2p/peer.go:123 +0x31e
2018-02-21T06:30:05Z box887.localdomain docker/local_testnet_4[14907]: github.com/tendermint/tendermint/p2p.(*Switch).addOutboundPeerWithConfig(0xc4200ad040, 0xc423fd1380, 0
xc420933e00, 0xc423f48801, 0x28, 0x2)
2018-02-21T06:30:05Z box887.localdomain docker/local_testnet_4[14907]: #011/go/src/github.com/tendermint/tendermint/p2p/switch.go:455 +0x12b
2018-02-21T06:30:05Z box887.localdomain docker/local_testnet_4[14907]: github.com/tendermint/tendermint/p2p.(*Switch).DialPeerWithAddress(0xc4200ad040, 0xc423fd1380, 0x1, 0x
0, 0x0)
2018-02-21T06:30:05Z box887.localdomain docker/local_testnet_4[14907]: #011/go/src/github.com/tendermint/tendermint/p2p/switch.go:371 +0xdc
2018-02-21T06:30:05Z box887.localdomain docker/local_testnet_4[14907]: github.com/tendermint/tendermint/p2p.(*Switch).reconnectToPeer(0xc4200ad040, 0x123e000, 0xc42007bb00)
2018-02-21T06:30:05Z box887.localdomain docker/local_testnet_4[14907]: #011/go/src/github.com/tendermint/tendermint/p2p/switch.go:290 +0x25f
2018-02-21T06:30:05Z box887.localdomain docker/local_testnet_4[14907]: created by github.com/tendermint/tendermint/p2p.(*Switch).StopPeerForError
2018-02-21T06:30:05Z box887.localdomain docker/local_testnet_4[14907]: #011/go/src/github.com/tendermint/tendermint/p2p/switch.go:256 +0x1b7
```
2018-02-27 15:54:40 +04:00
..
block.go replace data.Bytes with cmn.HexBytes 2018-02-03 03:47:01 -05:00
block_meta.go
block_test.go fixes from rebase 2017-12-26 20:42:34 -05:00
canonical_json.go replace data.Bytes with cmn.HexBytes 2018-02-03 03:47:01 -05:00
event_buffer.go types: TxEventBuffer.Flush now uses capacity preserving slice clearing idiom 2018-02-05 23:34:15 -08:00
event_buffer_test.go new pubsub package 2017-10-30 00:32:22 -05:00
event_bus.go update types 2018-02-03 03:23:10 -05:00
event_bus_test.go fixes from Bucky's and Emmanuel's reviews 2017-10-30 11:12:01 -05:00
events.go move fireEvents to ApplyBlock 2017-12-28 23:15:54 -05:00
evidence.go update types 2018-02-03 03:23:10 -05:00
evidence_test.go fixes from rebase 2017-12-26 20:42:34 -05:00
genesis.go replace data.Bytes with cmn.HexBytes 2018-02-03 03:47:01 -05:00
genesis_test.go Updates -> ValidatoSetUpdates 2017-12-19 13:03:39 -06:00
heartbeat.go update for sdk2 libs. need to fix kv test 2018-02-03 03:35:02 -05:00
heartbeat_test.go pass tests! 2017-11-27 22:39:12 +00:00
keys.go
nop_event_bus.go new pubsub package 2017-10-30 00:32:22 -05:00
params.go update types 2018-02-03 03:23:10 -05:00
params_test.go fix test 2017-12-21 17:52:06 -05:00
part_set.go replace data.Bytes with cmn.HexBytes 2018-02-03 03:47:01 -05:00
part_set_test.go
priv_validator.go p2p: introduce peerConn to simplify peer creation (#1226) 2018-02-27 15:54:40 +04:00
priv_validator_test.go update for sdk2 libs. need to fix kv test 2018-02-03 03:35:02 -05:00
proposal.go Add timestamp to vote canonical encoding 2017-12-12 12:59:51 +01:00
proposal_test.go Add more tests for Proposal/Vote serialization 2017-12-12 12:59:51 +01:00
protobuf.go update for sdk2 libs. need to fix kv test 2018-02-03 03:35:02 -05:00
results.go replace data.Bytes with cmn.HexBytes 2018-02-03 03:47:01 -05:00
results_test.go Add /block_results?height=H as rpc endpoint 2017-12-26 19:24:25 -05:00
services.go call FlushSync before calling CommitSync 2018-01-23 16:56:14 +04:00
signable.go update types 2018-02-03 03:23:10 -05:00
test_util.go forgot file 2017-12-21 16:49:47 -05:00
tx.go replace data.Bytes with cmn.HexBytes 2018-02-03 03:47:01 -05:00
tx_test.go
validator.go update for sdk2 libs. need to fix kv test 2018-02-03 03:35:02 -05:00
validator_set.go update types 2018-02-03 03:23:10 -05:00
validator_set_test.go add safe*Clip funcs 2017-12-26 14:13:12 -06:00
vote.go update for sdk2 libs. need to fix kv test 2018-02-03 03:35:02 -05:00
vote_set.go improve vague error msg, closes #1158 2018-01-31 17:44:19 +00:00
vote_set_test.go separate block vs state based validation 2017-12-21 16:49:47 -05:00
vote_test.go types: Add test for IsVoteTypeValid 2017-12-21 18:13:31 +01:00