-
Notifications
You must be signed in to change notification settings - Fork 1
/
utils.go
54 lines (50 loc) · 1.24 KB
/
utils.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package mpstore
/*
* Dual-licensed under Apache-2.0 and MIT.
*
* You can get a copy of the Apache License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* You can also get a copy of the MIT License at
*
* http://opensource.org/licenses/MIT
*
* @wcgcyx - https://github.com/wcgcyx
*/
import "encoding/json"
// encDSVal encodes the data to the ds value.
//
// @input - miner key type, miner address, proof.
//
// @output - value, error.
func encDSVal(minerKeyType byte, minerAddr string, proof []byte) ([]byte, error) {
type valJson struct {
KeyType byte `json:"key_type"`
MinerAddr string `json:"miner_addr"`
Proof []byte `json:"proof"`
}
return json.Marshal(valJson{
KeyType: minerKeyType,
MinerAddr: minerAddr,
Proof: proof,
})
}
// decDSVal decodes the ds value into data.
//
// @input - value.
//
// @output - miner key type, miner address, proof, error.
func decDSVal(val []byte) (byte, string, []byte, error) {
type valJson struct {
KeyType byte `json:"key_type"`
MinerAddr string `json:"miner_addr"`
Proof []byte `json:"proof"`
}
valDec := valJson{}
err := json.Unmarshal(val, &valDec)
if err != nil {
return 0, "", nil, err
}
return valDec.KeyType, valDec.MinerAddr, valDec.Proof, nil
}