aboutsummaryrefslogtreecommitdiffstats
path: root/core/crypto/dkg/dkg.go
diff options
context:
space:
mode:
authorSonic <sonic@dexon.org>2019-03-05 13:33:45 +0800
committerGitHub <noreply@github.com>2019-03-05 13:33:45 +0800
commit490aa470a70bed5176b2c598174e260b4e4ebf49 (patch)
treec80196a71d5ddf103ddd6eeb4f89eb2534e479fb /core/crypto/dkg/dkg.go
parentd4b4c8a05e94f66c85e7b4238ae5947b26f13c40 (diff)
downloadtangerine-consensus-490aa470a70bed5176b2c598174e260b4e4ebf49.tar
tangerine-consensus-490aa470a70bed5176b2c598174e260b4e4ebf49.tar.gz
tangerine-consensus-490aa470a70bed5176b2c598174e260b4e4ebf49.tar.bz2
tangerine-consensus-490aa470a70bed5176b2c598174e260b4e4ebf49.tar.lz
tangerine-consensus-490aa470a70bed5176b2c598174e260b4e4ebf49.tar.xz
tangerine-consensus-490aa470a70bed5176b2c598174e260b4e4ebf49.tar.zst
tangerine-consensus-490aa470a70bed5176b2c598174e260b4e4ebf49.zip
dkg: no need to rlp encode/decode cache related data (#462)
* dkg: no need to rlp encode/decode cache related data * fixup! dkg: no need to rlp encode/decode cache related data
Diffstat (limited to 'core/crypto/dkg/dkg.go')
-rw-r--r--core/crypto/dkg/dkg.go50
1 files changed, 6 insertions, 44 deletions
diff --git a/core/crypto/dkg/dkg.go b/core/crypto/dkg/dkg.go
index e43ebc8..f6b3e0e 100644
--- a/core/crypto/dkg/dkg.go
+++ b/core/crypto/dkg/dkg.go
@@ -138,13 +138,6 @@ type PublicKeyShares struct {
masterPublicKey []bls.PublicKey
}
-type rlpPublicKeyShares struct {
- ShareCaches [][]byte
- ShareCacheIndexK [][]byte
- ShareCacheIndexV []uint32
- MasterPublicKey [][]byte
-}
-
// Equal checks equality of two PublicKeyShares instance.
func (pubs *PublicKeyShares) Equal(other *PublicKeyShares) bool {
// Check shares.
@@ -172,53 +165,22 @@ func (pubs *PublicKeyShares) Equal(other *PublicKeyShares) bool {
// EncodeRLP implements rlp.Encoder
func (pubs *PublicKeyShares) EncodeRLP(w io.Writer) error {
- var rps rlpPublicKeyShares
- for _, share := range pubs.shareCaches {
- rps.ShareCaches = append(rps.ShareCaches, share.Serialize())
+ mpks := make([][]byte, len(pubs.masterPublicKey))
+ for i, m := range pubs.masterPublicKey {
+ mpks[i] = m.Serialize()
}
-
- for id, v := range pubs.shareCacheIndex {
- rps.ShareCacheIndexK = append(
- rps.ShareCacheIndexK, id.GetLittleEndian())
- rps.ShareCacheIndexV = append(rps.ShareCacheIndexV, uint32(v))
- }
-
- for _, m := range pubs.masterPublicKey {
- rps.MasterPublicKey = append(rps.MasterPublicKey, m.Serialize())
- }
-
- return rlp.Encode(w, rps)
+ return rlp.Encode(w, mpks)
}
// DecodeRLP implements rlp.Decoder
func (pubs *PublicKeyShares) DecodeRLP(s *rlp.Stream) error {
- var dec rlpPublicKeyShares
+ var dec [][]byte
if err := s.Decode(&dec); err != nil {
return err
}
- if len(dec.ShareCacheIndexK) != len(dec.ShareCacheIndexV) {
- return fmt.Errorf("invalid shareIndex")
- }
-
ps := NewEmptyPublicKeyShares()
- for _, share := range dec.ShareCaches {
- var publicKey PublicKey
- if err := publicKey.Deserialize(share); err != nil {
- return err
- }
- ps.shareCaches = append(ps.shareCaches, publicKey)
- }
-
- for i, k := range dec.ShareCacheIndexK {
- id, err := BytesID(k)
- if err != nil {
- return err
- }
- ps.shareCacheIndex[id] = int(dec.ShareCacheIndexV[i])
- }
-
- for _, k := range dec.MasterPublicKey {
+ for _, k := range dec {
var key bls.PublicKey
if err := key.Deserialize(k); err != nil {
return err