parent
aab7dd515f
commit
c23a522d25
5 changed files with 139 additions and 33 deletions
49
pkg/rpc/response/result/unclaimed.go
Normal file
49
pkg/rpc/response/result/unclaimed.go
Normal file
|
@ -0,0 +1,49 @@
|
|||
package result
|
||||
|
||||
import (
|
||||
"github.com/nspcc-dev/neo-go/pkg/core"
|
||||
"github.com/nspcc-dev/neo-go/pkg/core/state"
|
||||
"github.com/nspcc-dev/neo-go/pkg/util"
|
||||
)
|
||||
|
||||
// Unclaimed wrapper is used to represent getunclaimed return result.
|
||||
type Unclaimed struct {
|
||||
Available util.Fixed8 `json:"available"`
|
||||
Unavailable util.Fixed8 `json:"unavailable"`
|
||||
Unclaimed util.Fixed8 `json:"unclaimed"`
|
||||
}
|
||||
|
||||
// NewUnclaimed creates a new Unclaimed wrapper using given Blockchainer.
|
||||
func NewUnclaimed(a *state.Account, chain core.Blockchainer) (*Unclaimed, error) {
|
||||
var (
|
||||
available util.Fixed8
|
||||
unavailable util.Fixed8
|
||||
)
|
||||
|
||||
for _, ucb := range a.Unclaimed {
|
||||
gen, sys, err := chain.CalculateClaimable(ucb.Value, ucb.Start, ucb.End)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
available += gen + sys
|
||||
}
|
||||
|
||||
blockHeight := chain.BlockHeight()
|
||||
for _, usb := range a.Balances[core.GoverningTokenID()] {
|
||||
_, txHeight, err := chain.GetTransaction(usb.Tx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
gen, sys, err := chain.CalculateClaimable(usb.Value, txHeight, blockHeight)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
unavailable += gen + sys
|
||||
}
|
||||
|
||||
return &Unclaimed{
|
||||
Available: available,
|
||||
Unavailable: unavailable,
|
||||
Unclaimed: available + unavailable,
|
||||
}, nil
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue