mirror of
				https://source.quilibrium.com/quilibrium/ceremonyclient.git
				synced 2025-11-04 10:37:27 +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