diff options
author | Jimmy Hu <jimmy.hu@dexon.org> | 2018-12-27 09:17:28 +0800 |
---|---|---|
committer | Wei-Ning Huang <w@dexon.org> | 2019-03-12 12:19:09 +0800 |
commit | efb15adba4e18aea32bf8d7feac0c923798bc07b (patch) | |
tree | 110fd53e54c6e7d2dc1199d6139840ef6c8e10ad /dex/handler.go | |
parent | d216c88641b4a9f8218bb26f6596ababd7625658 (diff) | |
download | dexon-efb15adba4e18aea32bf8d7feac0c923798bc07b.tar dexon-efb15adba4e18aea32bf8d7feac0c923798bc07b.tar.gz dexon-efb15adba4e18aea32bf8d7feac0c923798bc07b.tar.bz2 dexon-efb15adba4e18aea32bf8d7feac0c923798bc07b.tar.lz dexon-efb15adba4e18aea32bf8d7feac0c923798bc07b.tar.xz dexon-efb15adba4e18aea32bf8d7feac0c923798bc07b.tar.zst dexon-efb15adba4e18aea32bf8d7feac0c923798bc07b.zip |
dex: add pull randomness (#105)
* vendor: sync to latest core
* dex: Add PullRandomness
Diffstat (limited to 'dex/handler.go')
-rw-r--r-- | dex/handler.go | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/dex/handler.go b/dex/handler.go index ff87884d2..8a60c2a56 100644 --- a/dex/handler.go +++ b/dex/handler.go @@ -891,6 +891,21 @@ func (pm *ProtocolManager) handleMsg(p *peer) error { return err } } + case msg.Code == PullRandomnessMsg: + if !pm.isBlockProposer { + break + } + var hashes coreCommon.Hashes + if err := msg.Decode(&hashes); err != nil { + return errResp(ErrDecode, "msg %v: %v", msg, err) + } + randomness := pm.cache.randomness(hashes) + log.Debug("Push randomness", "randomness", randomness) + for _, randomness := range randomness { + if err := p.SendRandomness(randomness); err != nil { + return err + } + } case msg.Code == GetGovStateMsg: var hash common.Hash if err := msg.Decode(&hash); err != nil { @@ -1029,6 +1044,7 @@ func (pm *ProtocolManager) BroadcastAgreementResult( func (pm *ProtocolManager) BroadcastRandomnessResult( randomness *coreTypes.BlockRandomnessResult) { + pm.cache.addRandomness(randomness) // send to notary nodes first (direct) label := peerLabel{ set: notaryset, @@ -1109,6 +1125,17 @@ func (pm *ProtocolManager) BroadcastPullVotes( } } +func (pm *ProtocolManager) BroadcastPullRandomness( + hashes coreCommon.Hashes) { + // TODO(jimmy-dexon): pull from dkg set only. + for idx, peer := range pm.peers.Peers() { + if idx >= maxPullPeers { + break + } + peer.AsyncSendPullRandomness(hashes) + } +} + func (pm *ProtocolManager) txBroadcastLoop() { queueSizeMax := common.StorageSize(100 * 1024) // 100 KB currentSize := common.StorageSize(0) |