mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-11-20 15:15:18 +00:00
feat: totals in console
This commit is contained in:
parent
483077e1da
commit
175a35edec
@ -9,6 +9,7 @@ import (
|
||||
"math/big"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
tea "github.com/charmbracelet/bubbletea"
|
||||
"github.com/charmbracelet/lipgloss"
|
||||
@ -84,18 +85,21 @@ func newDBConsole(nodeConfig *config.Config) (*DBConsole, error) {
|
||||
}
|
||||
|
||||
type model struct {
|
||||
filters []string
|
||||
cursor int
|
||||
selectedFilter string
|
||||
conn *grpc.ClientConn
|
||||
client protobufs.NodeServiceClient
|
||||
peerId string
|
||||
errorMsg string
|
||||
frame *protobufs.ClockFrame
|
||||
frames []*protobufs.ClockFrame
|
||||
frameIndex int
|
||||
grpcWarn bool
|
||||
committed bool
|
||||
filters []string
|
||||
cursor int
|
||||
selectedFilter string
|
||||
conn *grpc.ClientConn
|
||||
client protobufs.NodeServiceClient
|
||||
peerId string
|
||||
errorMsg string
|
||||
frame *protobufs.ClockFrame
|
||||
frames []*protobufs.ClockFrame
|
||||
frameIndex int
|
||||
grpcWarn bool
|
||||
committed bool
|
||||
lastChecked int64
|
||||
owned *big.Int
|
||||
unconfirmedOwned *big.Int
|
||||
}
|
||||
|
||||
func (m model) Init() tea.Cmd {
|
||||
@ -103,8 +107,24 @@ func (m model) Init() tea.Cmd {
|
||||
}
|
||||
|
||||
func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
switch msg := msg.(type) {
|
||||
if m.conn.GetState() == connectivity.Ready {
|
||||
if m.lastChecked < (time.Now().UnixMilli() - 10_000) {
|
||||
m.lastChecked = time.Now().UnixMilli()
|
||||
info, err := m.client.GetTokenInfo(
|
||||
context.Background(),
|
||||
&protobufs.GetTokenInfoRequest{},
|
||||
)
|
||||
if err == nil {
|
||||
conversionFactor, _ := new(big.Int).SetString("1DCD65000", 16)
|
||||
m.owned = new(big.Int).SetBytes(info.OwnedTokens)
|
||||
m.owned.Div(m.owned, conversionFactor)
|
||||
m.unconfirmedOwned = new(big.Int).SetBytes(info.UnconfirmedOwnedTokens)
|
||||
m.unconfirmedOwned.Div(m.unconfirmedOwned, conversionFactor)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch msg := msg.(type) {
|
||||
case tea.KeyMsg:
|
||||
switch msg.String() {
|
||||
case "ctrl+c", "q":
|
||||
@ -462,9 +482,23 @@ func (m model) View() string {
|
||||
}
|
||||
}
|
||||
|
||||
ownedVal := statusItemStyle.Copy().
|
||||
Render("Owned: " + m.owned.String())
|
||||
if m.owned.Cmp(big.NewInt(-1)) == 0 {
|
||||
ownedVal = statusItemStyle.Copy().
|
||||
Render("")
|
||||
}
|
||||
|
||||
unconfirmedOwnedVal := statusItemStyle.Copy().
|
||||
Render("Unconfirmed: " + m.unconfirmedOwned.String())
|
||||
if m.unconfirmedOwned.Cmp(big.NewInt(-1)) == 0 {
|
||||
unconfirmedOwnedVal = statusItemStyle.Copy().
|
||||
Render("")
|
||||
}
|
||||
peerIdVal := statusItemStyle.Render(m.peerId)
|
||||
statusVal := statusBarStyle.Copy().
|
||||
Width(physicalWidth-w(statusKey)-w(info)-w(peerIdVal)).
|
||||
Width(physicalWidth-w(statusKey)-w(info)-w(peerIdVal)-w(ownedVal)-
|
||||
w(unconfirmedOwnedVal)).
|
||||
Padding(0, 1).
|
||||
Render(onlineStatus)
|
||||
|
||||
@ -473,6 +507,8 @@ func (m model) View() string {
|
||||
statusVal,
|
||||
info,
|
||||
peerIdVal,
|
||||
ownedVal,
|
||||
unconfirmedOwnedVal,
|
||||
)
|
||||
|
||||
explorerContent := ""
|
||||
@ -735,11 +771,13 @@ func consoleModel(
|
||||
p2p.GetBloomFilterIndices(application.CEREMONY_ADDRESS, 65536, 24)...,
|
||||
)),
|
||||
},
|
||||
cursor: 0,
|
||||
conn: conn,
|
||||
client: protobufs.NewNodeServiceClient(conn),
|
||||
peerId: id.String(),
|
||||
grpcWarn: grpcWarn,
|
||||
cursor: 0,
|
||||
conn: conn,
|
||||
client: protobufs.NewNodeServiceClient(conn),
|
||||
owned: big.NewInt(-1),
|
||||
unconfirmedOwned: big.NewInt(-1),
|
||||
peerId: id.String(),
|
||||
grpcWarn: grpcWarn,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -636,6 +636,9 @@ type TokenInfoResponse struct {
|
||||
// The total number of tokens owned by the prover address associated with the
|
||||
// node.
|
||||
OwnedTokens []byte `protobuf:"bytes,3,opt,name=owned_tokens,json=ownedTokens,proto3" json:"owned_tokens,omitempty"`
|
||||
// The total number of tokens owned by the prover address associated with the
|
||||
// node, including unconfirmed frame data.
|
||||
UnconfirmedOwnedTokens []byte `protobuf:"bytes,4,opt,name=unconfirmed_owned_tokens,json=unconfirmedOwnedTokens,proto3" json:"unconfirmed_owned_tokens,omitempty"`
|
||||
}
|
||||
|
||||
func (x *TokenInfoResponse) Reset() {
|
||||
@ -691,6 +694,13 @@ func (x *TokenInfoResponse) GetOwnedTokens() []byte {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *TokenInfoResponse) GetUnconfirmedOwnedTokens() []byte {
|
||||
if x != nil {
|
||||
return x.UnconfirmedOwnedTokens
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var File_node_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_node_proto_rawDesc = []byte{
|
||||
@ -769,7 +779,7 @@ var file_node_proto_rawDesc = []byte{
|
||||
0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x6e, 0x65, 0x74,
|
||||
0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x15, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54,
|
||||
0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22,
|
||||
0xa6, 0x01, 0x0a, 0x11, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73,
|
||||
0xe0, 0x01, 0x0a, 0x11, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73,
|
||||
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d,
|
||||
0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18,
|
||||
0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64,
|
||||
@ -779,45 +789,49 @@ var file_node_proto_rawDesc = []byte{
|
||||
0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53,
|
||||
0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x77, 0x6e, 0x65, 0x64, 0x5f, 0x74,
|
||||
0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x6f, 0x77, 0x6e,
|
||||
0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x32, 0x99, 0x04, 0x0a, 0x0b, 0x4e, 0x6f, 0x64,
|
||||
0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5f, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x46,
|
||||
0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69,
|
||||
0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e,
|
||||
0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||
0x1a, 0x27, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f,
|
||||
0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65,
|
||||
0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x0c, 0x47, 0x65, 0x74,
|
||||
0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x2e, 0x71, 0x75, 0x69, 0x6c,
|
||||
0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65,
|
||||
0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f,
|
||||
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62,
|
||||
0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70,
|
||||
0x62, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f,
|
||||
0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e,
|
||||
0x66, 0x6f, 0x12, 0x2b, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e,
|
||||
0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74,
|
||||
0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
||||
0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x75, 0x6e, 0x63, 0x6f,
|
||||
0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x64, 0x5f, 0x74, 0x6f,
|
||||
0x6b, 0x65, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x75, 0x6e, 0x63, 0x6f,
|
||||
0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65,
|
||||
0x6e, 0x73, 0x32, 0x99, 0x04, 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69,
|
||||
0x63, 0x65, 0x12, 0x5f, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12,
|
||||
0x29, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64,
|
||||
0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e,
|
||||
0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x0e, 0x47, 0x65,
|
||||
0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, 0x2e, 0x71,
|
||||
0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e,
|
||||
0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72,
|
||||
0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x71,
|
||||
0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e,
|
||||
0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e,
|
||||
0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x0c, 0x47, 0x65,
|
||||
0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x2e, 0x71, 0x75, 0x69,
|
||||
0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61,
|
||||
0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x71, 0x75, 0x69,
|
||||
0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64,
|
||||
0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66,
|
||||
0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69,
|
||||
0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
|
||||
0x70, 0x62, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70,
|
||||
0x6f, 0x6e, 0x73, 0x65, 0x42, 0x3a, 0x5a, 0x38, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x71,
|
||||
0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x71, 0x75,
|
||||
0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2f, 0x6d, 0x6f, 0x6e, 0x6f, 0x72, 0x65, 0x70,
|
||||
0x6f, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x73,
|
||||
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
0x65, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
|
||||
0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49,
|
||||
0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d,
|
||||
0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65,
|
||||
0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||
0x74, 0x1a, 0x2a, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e,
|
||||
0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x72, 0x61, 0x6d,
|
||||
0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a,
|
||||
0x0b, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x2e, 0x71,
|
||||
0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e,
|
||||
0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e,
|
||||
0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x71, 0x75, 0x69, 0x6c,
|
||||
0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65,
|
||||
0x2e, 0x70, 0x62, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70,
|
||||
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f,
|
||||
0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72,
|
||||
0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62,
|
||||
0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52,
|
||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72,
|
||||
0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62,
|
||||
0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70,
|
||||
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
|
||||
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75,
|
||||
0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47,
|
||||
0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||
0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e,
|
||||
0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x6f, 0x6b,
|
||||
0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x3a,
|
||||
0x5a, 0x38, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72,
|
||||
0x69, 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69,
|
||||
0x75, 0x6d, 0x2f, 0x6d, 0x6f, 0x6e, 0x6f, 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x6e, 0x6f, 0x64, 0x65,
|
||||
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
|
@ -68,6 +68,9 @@ message TokenInfoResponse {
|
||||
// The total number of tokens owned by the prover address associated with the
|
||||
// node.
|
||||
bytes owned_tokens = 3;
|
||||
// The total number of tokens owned by the prover address associated with the
|
||||
// node, including unconfirmed frame data.
|
||||
bytes unconfirmed_owned_tokens = 4;
|
||||
}
|
||||
|
||||
service NodeService {
|
||||
|
@ -262,6 +262,7 @@ func (r *RPCServer) GetTokenInfo(
|
||||
confirmedTotal := new(big.Int)
|
||||
unconfirmedTotal := new(big.Int)
|
||||
ownedTotal := new(big.Int)
|
||||
unconfirmedOwnedTotal := new(big.Int)
|
||||
if confirmed.RewardTrie.Root == nil ||
|
||||
(confirmed.RewardTrie.Root.External == nil &&
|
||||
confirmed.RewardTrie.Root.Internal == nil) {
|
||||
@ -269,6 +270,7 @@ func (r *RPCServer) GetTokenInfo(
|
||||
ConfirmedTokenSupply: confirmedTotal.FillBytes(make([]byte, 32)),
|
||||
UnconfirmedTokenSupply: unconfirmedTotal.FillBytes(make([]byte, 32)),
|
||||
OwnedTokens: ownedTotal.FillBytes(make([]byte, 32)),
|
||||
UnconfirmedOwnedTokens: unconfirmedOwnedTotal.FillBytes(make([]byte, 32)),
|
||||
}, nil
|
||||
}
|
||||
|
||||
@ -352,6 +354,15 @@ func (r *RPCServer) GetTokenInfo(
|
||||
unconfirmedTotal,
|
||||
new(big.Int).SetUint64(unconfirmed.RewardTrie.Root.External.Total),
|
||||
)
|
||||
if bytes.Equal(
|
||||
unconfirmed.RewardTrie.Root.External.Key,
|
||||
addrBytes,
|
||||
) {
|
||||
unconfirmedOwnedTotal = unconfirmedOwnedTotal.Add(
|
||||
unconfirmedOwnedTotal,
|
||||
new(big.Int).SetUint64(unconfirmed.RewardTrie.Root.External.Total),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for len(limbs) != 0 {
|
||||
@ -366,6 +377,24 @@ func (r *RPCServer) GetTokenInfo(
|
||||
unconfirmedTotal,
|
||||
new(big.Int).SetUint64(child.External.Total),
|
||||
)
|
||||
if bytes.Equal(
|
||||
child.External.Key,
|
||||
addrBytes,
|
||||
) {
|
||||
unconfirmedOwnedTotal = unconfirmedOwnedTotal.Add(
|
||||
unconfirmedOwnedTotal,
|
||||
new(big.Int).SetUint64(child.External.Total),
|
||||
)
|
||||
}
|
||||
if bytes.Equal(
|
||||
child.External.Key,
|
||||
peerAddrBytes,
|
||||
) {
|
||||
unconfirmedOwnedTotal = unconfirmedOwnedTotal.Add(
|
||||
unconfirmedOwnedTotal,
|
||||
new(big.Int).SetUint64(child.External.Total),
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -381,11 +410,16 @@ func (r *RPCServer) GetTokenInfo(
|
||||
confirmedTotal = confirmedTotal.Mul(confirmedTotal, conversionFactor)
|
||||
unconfirmedTotal = unconfirmedTotal.Mul(unconfirmedTotal, conversionFactor)
|
||||
ownedTotal = ownedTotal.Mul(ownedTotal, conversionFactor)
|
||||
unconfirmedOwnedTotal = unconfirmedOwnedTotal.Mul(
|
||||
unconfirmedOwnedTotal,
|
||||
conversionFactor,
|
||||
)
|
||||
|
||||
return &protobufs.TokenInfoResponse{
|
||||
ConfirmedTokenSupply: confirmedTotal.FillBytes(make([]byte, 32)),
|
||||
UnconfirmedTokenSupply: unconfirmedTotal.FillBytes(make([]byte, 32)),
|
||||
OwnedTokens: ownedTotal.FillBytes(make([]byte, 32)),
|
||||
UnconfirmedOwnedTokens: unconfirmedOwnedTotal.FillBytes(make([]byte, 32)),
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
@ -1765,71 +1765,10 @@ func (p *PebbleClockStore) DeleteDataClockFrameRange(
|
||||
func (p *PebbleClockStore) GetHighestCandidateDataClockFrame(
|
||||
filter []byte,
|
||||
) (*protobufs.ClockFrame, error) {
|
||||
frame, err := p.GetLatestDataClockFrame(filter, nil)
|
||||
frame, err := p.GetLatestCandidateDataClockFrame(filter)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "get highest candidate data clock frame")
|
||||
}
|
||||
|
||||
from := clockDataCandidateFrameKey(
|
||||
filter,
|
||||
frame.FrameNumber,
|
||||
[]byte{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
},
|
||||
[]byte{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
},
|
||||
)
|
||||
to := clockDataCandidateFrameKey(
|
||||
filter,
|
||||
// We could be deeply out of sync and searching for consensus
|
||||
frame.FrameNumber+20000,
|
||||
[]byte{
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
},
|
||||
[]byte{
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
},
|
||||
)
|
||||
|
||||
iter, err := p.db.NewIter(from, to)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(
|
||||
errors.Wrap(err, ErrInvalidData.Error()),
|
||||
"get highest candidate data clock frame",
|
||||
)
|
||||
}
|
||||
|
||||
found := iter.SeekLT(to)
|
||||
if found {
|
||||
value := iter.Value()
|
||||
frame = &protobufs.ClockFrame{}
|
||||
if err := proto.Unmarshal(value, frame); err != nil {
|
||||
return nil, errors.Wrap(
|
||||
errors.Wrap(err, ErrInvalidData.Error()),
|
||||
"get highest candidate data clock frame",
|
||||
)
|
||||
}
|
||||
|
||||
if err := p.fillAggregateProofs(frame); err != nil {
|
||||
return nil, errors.Wrap(
|
||||
errors.Wrap(err, ErrInvalidData.Error()),
|
||||
"get highest candidate data clock frame",
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
return frame, nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user