mirror of
				https://source.quilibrium.com/quilibrium/ceremonyclient.git
				synced 2025-04-04 19:36:54 +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
	 Cassandra Heart
						Cassandra Heart