mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-12-26 00:25:17 +00:00
feat: totals in console
This commit is contained in:
parent
483077e1da
commit
175a35edec
@ -9,6 +9,7 @@ import (
|
|||||||
"math/big"
|
"math/big"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
tea "github.com/charmbracelet/bubbletea"
|
tea "github.com/charmbracelet/bubbletea"
|
||||||
"github.com/charmbracelet/lipgloss"
|
"github.com/charmbracelet/lipgloss"
|
||||||
@ -96,6 +97,9 @@ type model struct {
|
|||||||
frameIndex int
|
frameIndex int
|
||||||
grpcWarn bool
|
grpcWarn bool
|
||||||
committed bool
|
committed bool
|
||||||
|
lastChecked int64
|
||||||
|
owned *big.Int
|
||||||
|
unconfirmedOwned *big.Int
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m model) Init() tea.Cmd {
|
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) {
|
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:
|
case tea.KeyMsg:
|
||||||
switch msg.String() {
|
switch msg.String() {
|
||||||
case "ctrl+c", "q":
|
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)
|
peerIdVal := statusItemStyle.Render(m.peerId)
|
||||||
statusVal := statusBarStyle.Copy().
|
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).
|
Padding(0, 1).
|
||||||
Render(onlineStatus)
|
Render(onlineStatus)
|
||||||
|
|
||||||
@ -473,6 +507,8 @@ func (m model) View() string {
|
|||||||
statusVal,
|
statusVal,
|
||||||
info,
|
info,
|
||||||
peerIdVal,
|
peerIdVal,
|
||||||
|
ownedVal,
|
||||||
|
unconfirmedOwnedVal,
|
||||||
)
|
)
|
||||||
|
|
||||||
explorerContent := ""
|
explorerContent := ""
|
||||||
@ -738,6 +774,8 @@ func consoleModel(
|
|||||||
cursor: 0,
|
cursor: 0,
|
||||||
conn: conn,
|
conn: conn,
|
||||||
client: protobufs.NewNodeServiceClient(conn),
|
client: protobufs.NewNodeServiceClient(conn),
|
||||||
|
owned: big.NewInt(-1),
|
||||||
|
unconfirmedOwned: big.NewInt(-1),
|
||||||
peerId: id.String(),
|
peerId: id.String(),
|
||||||
grpcWarn: grpcWarn,
|
grpcWarn: grpcWarn,
|
||||||
}
|
}
|
||||||
|
@ -636,6 +636,9 @@ type TokenInfoResponse struct {
|
|||||||
// The total number of tokens owned by the prover address associated with the
|
// The total number of tokens owned by the prover address associated with the
|
||||||
// node.
|
// node.
|
||||||
OwnedTokens []byte `protobuf:"bytes,3,opt,name=owned_tokens,json=ownedTokens,proto3" json:"owned_tokens,omitempty"`
|
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() {
|
func (x *TokenInfoResponse) Reset() {
|
||||||
@ -691,6 +694,13 @@ func (x *TokenInfoResponse) GetOwnedTokens() []byte {
|
|||||||
return nil
|
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 protoreflect.FileDescriptor
|
||||||
|
|
||||||
var file_node_proto_rawDesc = []byte{
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x75, 0x6e, 0x63, 0x6f,
|
||||||
0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5f, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x46,
|
0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x64, 0x5f, 0x74, 0x6f,
|
||||||
0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69,
|
0x6b, 0x65, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x75, 0x6e, 0x63, 0x6f,
|
||||||
0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e,
|
0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65,
|
||||||
0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
0x6e, 0x73, 0x32, 0x99, 0x04, 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69,
|
||||||
0x1a, 0x27, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f,
|
0x63, 0x65, 0x12, 0x5f, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12,
|
||||||
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,
|
|
||||||
0x29, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64,
|
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,
|
0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61,
|
||||||
0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x0e, 0x47, 0x65,
|
0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x71, 0x75, 0x69,
|
||||||
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,
|
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,
|
0x65, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
|
||||||
0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69,
|
0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49,
|
||||||
0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
|
0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d,
|
||||||
0x70, 0x62, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70,
|
0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65,
|
||||||
0x6f, 0x6e, 0x73, 0x65, 0x42, 0x3a, 0x5a, 0x38, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x71,
|
0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||||
0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x71, 0x75,
|
0x74, 0x1a, 0x2a, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x6e,
|
||||||
0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2f, 0x6d, 0x6f, 0x6e, 0x6f, 0x72, 0x65, 0x70,
|
0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x72, 0x61, 0x6d,
|
||||||
0x6f, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x73,
|
0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a,
|
||||||
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
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 (
|
var (
|
||||||
|
@ -68,6 +68,9 @@ message TokenInfoResponse {
|
|||||||
// The total number of tokens owned by the prover address associated with the
|
// The total number of tokens owned by the prover address associated with the
|
||||||
// node.
|
// node.
|
||||||
bytes owned_tokens = 3;
|
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 {
|
service NodeService {
|
||||||
|
@ -262,6 +262,7 @@ func (r *RPCServer) GetTokenInfo(
|
|||||||
confirmedTotal := new(big.Int)
|
confirmedTotal := new(big.Int)
|
||||||
unconfirmedTotal := new(big.Int)
|
unconfirmedTotal := new(big.Int)
|
||||||
ownedTotal := new(big.Int)
|
ownedTotal := new(big.Int)
|
||||||
|
unconfirmedOwnedTotal := new(big.Int)
|
||||||
if confirmed.RewardTrie.Root == nil ||
|
if confirmed.RewardTrie.Root == nil ||
|
||||||
(confirmed.RewardTrie.Root.External == nil &&
|
(confirmed.RewardTrie.Root.External == nil &&
|
||||||
confirmed.RewardTrie.Root.Internal == nil) {
|
confirmed.RewardTrie.Root.Internal == nil) {
|
||||||
@ -269,6 +270,7 @@ func (r *RPCServer) GetTokenInfo(
|
|||||||
ConfirmedTokenSupply: confirmedTotal.FillBytes(make([]byte, 32)),
|
ConfirmedTokenSupply: confirmedTotal.FillBytes(make([]byte, 32)),
|
||||||
UnconfirmedTokenSupply: unconfirmedTotal.FillBytes(make([]byte, 32)),
|
UnconfirmedTokenSupply: unconfirmedTotal.FillBytes(make([]byte, 32)),
|
||||||
OwnedTokens: ownedTotal.FillBytes(make([]byte, 32)),
|
OwnedTokens: ownedTotal.FillBytes(make([]byte, 32)),
|
||||||
|
UnconfirmedOwnedTokens: unconfirmedOwnedTotal.FillBytes(make([]byte, 32)),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -352,6 +354,15 @@ func (r *RPCServer) GetTokenInfo(
|
|||||||
unconfirmedTotal,
|
unconfirmedTotal,
|
||||||
new(big.Int).SetUint64(unconfirmed.RewardTrie.Root.External.Total),
|
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 {
|
for len(limbs) != 0 {
|
||||||
@ -366,6 +377,24 @@ func (r *RPCServer) GetTokenInfo(
|
|||||||
unconfirmedTotal,
|
unconfirmedTotal,
|
||||||
new(big.Int).SetUint64(child.External.Total),
|
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)
|
confirmedTotal = confirmedTotal.Mul(confirmedTotal, conversionFactor)
|
||||||
unconfirmedTotal = unconfirmedTotal.Mul(unconfirmedTotal, conversionFactor)
|
unconfirmedTotal = unconfirmedTotal.Mul(unconfirmedTotal, conversionFactor)
|
||||||
ownedTotal = ownedTotal.Mul(ownedTotal, conversionFactor)
|
ownedTotal = ownedTotal.Mul(ownedTotal, conversionFactor)
|
||||||
|
unconfirmedOwnedTotal = unconfirmedOwnedTotal.Mul(
|
||||||
|
unconfirmedOwnedTotal,
|
||||||
|
conversionFactor,
|
||||||
|
)
|
||||||
|
|
||||||
return &protobufs.TokenInfoResponse{
|
return &protobufs.TokenInfoResponse{
|
||||||
ConfirmedTokenSupply: confirmedTotal.FillBytes(make([]byte, 32)),
|
ConfirmedTokenSupply: confirmedTotal.FillBytes(make([]byte, 32)),
|
||||||
UnconfirmedTokenSupply: unconfirmedTotal.FillBytes(make([]byte, 32)),
|
UnconfirmedTokenSupply: unconfirmedTotal.FillBytes(make([]byte, 32)),
|
||||||
OwnedTokens: ownedTotal.FillBytes(make([]byte, 32)),
|
OwnedTokens: ownedTotal.FillBytes(make([]byte, 32)),
|
||||||
|
UnconfirmedOwnedTokens: unconfirmedOwnedTotal.FillBytes(make([]byte, 32)),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1765,71 +1765,10 @@ func (p *PebbleClockStore) DeleteDataClockFrameRange(
|
|||||||
func (p *PebbleClockStore) GetHighestCandidateDataClockFrame(
|
func (p *PebbleClockStore) GetHighestCandidateDataClockFrame(
|
||||||
filter []byte,
|
filter []byte,
|
||||||
) (*protobufs.ClockFrame, error) {
|
) (*protobufs.ClockFrame, error) {
|
||||||
frame, err := p.GetLatestDataClockFrame(filter, nil)
|
frame, err := p.GetLatestCandidateDataClockFrame(filter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "get highest candidate data clock frame")
|
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
|
return frame, nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user