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
|
package coindatabase
import "Chain/pkg/pro"
// CoinRecord is a record of which coins created by a Transaction
// have been spent. It is stored in the CoinDatabase's db.
type CoinRecord struct {
Version uint32
OutputIndexes []uint32
Amounts []uint32
LockingScripts []string
}
// EncodeCoinRecord returns a pro.CoinRecord given a CoinRecord.
func EncodeCoinRecord(cr *CoinRecord) *pro.CoinRecord {
var outputIndexes []uint32
var amounts []uint32
var lockingScripts []string
for i := 0; i < len(cr.OutputIndexes); i++ {
outputIndexes = append(outputIndexes, cr.OutputIndexes[i])
amounts = append(amounts, cr.Amounts[i])
lockingScripts = append(lockingScripts, cr.LockingScripts[i])
}
return &pro.CoinRecord{
Version: cr.Version,
OutputIndexes: outputIndexes,
Amounts: amounts,
LockingScripts: lockingScripts,
}
}
// DecodeCoinRecord returns a CoinRecord given a pro.CoinRecord.
func DecodeCoinRecord(pcr *pro.CoinRecord) *CoinRecord {
var outputIndexes []uint32
var amounts []uint32
var lockingScripts []string
for i := 0; i < len(pcr.GetOutputIndexes()); i++ {
outputIndexes = append(outputIndexes, pcr.GetOutputIndexes()[i])
amounts = append(amounts, pcr.GetAmounts()[i])
lockingScripts = append(lockingScripts, pcr.GetLockingScripts()[i])
}
return &CoinRecord{
Version: pcr.GetVersion(),
OutputIndexes: outputIndexes,
Amounts: amounts,
LockingScripts: lockingScripts,
}
}
|