aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2019-03-13 18:19:53 +0800
committerWei-Ning Huang <w@dexon.org>2019-04-09 21:32:58 +0800
commit3ac5e2363b00fde97288baa173c3d89c1b2e5ec1 (patch)
treec126ebef9ff1b22076a10501ad5041598c927fcc /core
parente87b2f32c79a811bccc2a00c89ac2e533a7da5e0 (diff)
downloaddexon-3ac5e2363b00fde97288baa173c3d89c1b2e5ec1.tar
dexon-3ac5e2363b00fde97288baa173c3d89c1b2e5ec1.tar.gz
dexon-3ac5e2363b00fde97288baa173c3d89c1b2e5ec1.tar.bz2
dexon-3ac5e2363b00fde97288baa173c3d89c1b2e5ec1.tar.lz
dexon-3ac5e2363b00fde97288baa173c3d89c1b2e5ec1.tar.xz
dexon-3ac5e2363b00fde97288baa173c3d89c1b2e5ec1.tar.zst
dexon-3ac5e2363b00fde97288baa173c3d89c1b2e5ec1.zip
vendor: sync to latest core (#253)
Diffstat (limited to 'core')
-rw-r--r--core/rawdb/accessors_core_dkg_master_private_shares.go44
-rw-r--r--core/rawdb/schema.go15
2 files changed, 56 insertions, 3 deletions
diff --git a/core/rawdb/accessors_core_dkg_master_private_shares.go b/core/rawdb/accessors_core_dkg_master_private_shares.go
new file mode 100644
index 000000000..23b37f361
--- /dev/null
+++ b/core/rawdb/accessors_core_dkg_master_private_shares.go
@@ -0,0 +1,44 @@
+package rawdb
+
+import (
+ "bytes"
+
+ coreDKG "github.com/dexon-foundation/dexon-consensus/core/crypto/dkg"
+ "github.com/dexon-foundation/dexon/log"
+ "github.com/dexon-foundation/dexon/rlp"
+)
+
+func ReadCoreDKGMasterPrivateSharesRLP(db DatabaseReader, round uint64) rlp.RawValue {
+ data, _ := db.Get(coreDKGMasterPrivateSharesKey(round))
+ return data
+}
+
+func WriteCoreDKGMasterPrivateSharesRLP(db DatabaseWriter, round uint64, rlp rlp.RawValue) error {
+ err := db.Put(coreDKGMasterPrivateSharesKey(round), rlp)
+ if err != nil {
+ log.Crit("Failed to store core DKG private key", "err", err, "round", round)
+ }
+ return err
+}
+
+func ReadCoreDKGMasterPrivateShares(db DatabaseReader, round uint64) *coreDKG.PrivateKeyShares {
+ data := ReadCoreDKGMasterPrivateSharesRLP(db, round)
+ if len(data) == 0 {
+ return nil
+ }
+ shares := new(coreDKG.PrivateKeyShares)
+ if err := rlp.Decode(bytes.NewReader(data), shares); err != nil {
+ log.Error("Invalid core DKG master private shares RLP", "round", round, "err", err)
+ return nil
+ }
+ return shares
+}
+
+func WriteCoreDKGMasterPrivateShares(db DatabaseWriter, round uint64, shares *coreDKG.PrivateKeyShares) error {
+ data, err := rlp.EncodeToBytes(shares)
+ if err != nil {
+ log.Crit("Failed to RLP encode core DKG master private shares", "round", round, "err", err)
+ return err
+ }
+ return WriteCoreDKGMasterPrivateSharesRLP(db, round, data)
+}
diff --git a/core/rawdb/schema.go b/core/rawdb/schema.go
index 87a56c0ba..b469468f4 100644
--- a/core/rawdb/schema.go
+++ b/core/rawdb/schema.go
@@ -53,9 +53,10 @@ var (
txLookupPrefix = []byte("l") // txLookupPrefix + hash -> transaction/receipt lookup metadata
bloomBitsPrefix = []byte("B") // bloomBitsPrefix + bit (uint16 big endian) + section (uint64 big endian) + hash -> bloom bits
- coreBlockPrefix = []byte("D")
- coreDKGPrivateKeyPrefix = []byte("DPK")
- coreCompactionChainTipKey = []byte("CoreChainTip")
+ coreBlockPrefix = []byte("D")
+ coreDKGPrivateKeyPrefix = []byte("DPK")
+ coreCompactionChainTipKey = []byte("CoreChainTip")
+ coreDKGMasterPrivateSharesPrefix = []byte("CoreDKGPrv")
preimagePrefix = []byte("secure-key-") // preimagePrefix + hash -> preimage
configPrefix = []byte("ethereum-config-") // config prefix for the db
@@ -130,6 +131,14 @@ func coreDKGPrivateKeyKey(round uint64) []byte {
return ret
}
+// coreDKGMasterPrivateSharesKey = coreDKGMasterPrivateSharesPrefix + round
+func coreDKGMasterPrivateSharesKey(round uint64) []byte {
+ ret := make([]byte, len(coreDKGMasterPrivateSharesPrefix)+8)
+ copy(ret, coreDKGMasterPrivateSharesPrefix)
+ binary.LittleEndian.PutUint64(ret[len(coreDKGMasterPrivateSharesPrefix):], round)
+ return ret
+}
+
// bloomBitsKey = bloomBitsPrefix + bit (uint16 big endian) + section (uint64 big endian) + hash
func bloomBitsKey(bit uint, section uint64, hash common.Hash) []byte {
key := append(append(bloomBitsPrefix, make([]byte, 10)...), hash.Bytes()...)