2
0
mirror of https://github.com/kaspanet/kaspad.git synced 2025-05-11 18:29:57 +00:00

Adding support for mass.

This commit is contained in:
veronica 2025-01-09 09:40:01 +08:00
parent 6085d1fc84
commit bbbc49ded5
10 changed files with 3740 additions and 6414 deletions
app/appmessage
domain/consensus/utils/consensushashing
infrastructure/network/netadapter/server/grpcserver/protowire

@ -219,6 +219,7 @@ func RPCTransactionToDomainTransaction(rpcTransaction *RPCTransaction) (*externa
LockTime: rpcTransaction.LockTime,
SubnetworkID: *subnetworkID,
Gas: rpcTransaction.Gas,
Mass: rpcTransaction.Mass, // BPS10 add mass
Payload: payload,
}, nil
}
@ -287,6 +288,7 @@ func DomainTransactionToRPCTransaction(transaction *externalapi.DomainTransactio
LockTime: transaction.LockTime,
SubnetworkID: subnetworkID,
Gas: transaction.Gas,
Mass: transaction.Mass, // <<< BPS10 add mass
Payload: payload,
}
}

@ -52,6 +52,7 @@ type RPCTransaction struct {
SubnetworkID string
Gas uint64
Payload string
Mass uint64
VerboseData *RPCTransactionVerboseData
}

@ -126,6 +126,14 @@ func serializeTransaction(w io.Writer, tx *externalapi.DomainTransaction, encodi
return err
}
if tx.Mass > 0 { // Only serialize Mass if it's not zero
err = binaryserializer.PutUint64(w, tx.Mass)
if err != nil {
return err
}
}
return nil
}

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.2.0
// - protoc v3.12.3
// - protoc-gen-go-grpc v1.5.1
// - protoc v3.21.12
// source: messages.proto
package protowire
@ -15,14 +15,18 @@ import (
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7
// Requires gRPC-Go v1.64.0 or later.
const _ = grpc.SupportPackageIsVersion9
const (
P2P_MessageStream_FullMethodName = "/protowire.P2P/MessageStream"
)
// P2PClient is the client API for P2P service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type P2PClient interface {
MessageStream(ctx context.Context, opts ...grpc.CallOption) (P2P_MessageStreamClient, error)
MessageStream(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[KaspadMessage, KaspadMessage], error)
}
type p2PClient struct {
@ -33,53 +37,39 @@ func NewP2PClient(cc grpc.ClientConnInterface) P2PClient {
return &p2PClient{cc}
}
func (c *p2PClient) MessageStream(ctx context.Context, opts ...grpc.CallOption) (P2P_MessageStreamClient, error) {
stream, err := c.cc.NewStream(ctx, &P2P_ServiceDesc.Streams[0], "/protowire.P2P/MessageStream", opts...)
func (c *p2PClient) MessageStream(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[KaspadMessage, KaspadMessage], error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
stream, err := c.cc.NewStream(ctx, &P2P_ServiceDesc.Streams[0], P2P_MessageStream_FullMethodName, cOpts...)
if err != nil {
return nil, err
}
x := &p2PMessageStreamClient{stream}
x := &grpc.GenericClientStream[KaspadMessage, KaspadMessage]{ClientStream: stream}
return x, nil
}
type P2P_MessageStreamClient interface {
Send(*KaspadMessage) error
Recv() (*KaspadMessage, error)
grpc.ClientStream
}
type p2PMessageStreamClient struct {
grpc.ClientStream
}
func (x *p2PMessageStreamClient) Send(m *KaspadMessage) error {
return x.ClientStream.SendMsg(m)
}
func (x *p2PMessageStreamClient) Recv() (*KaspadMessage, error) {
m := new(KaspadMessage)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type P2P_MessageStreamClient = grpc.BidiStreamingClient[KaspadMessage, KaspadMessage]
// P2PServer is the server API for P2P service.
// All implementations must embed UnimplementedP2PServer
// for forward compatibility
// for forward compatibility.
type P2PServer interface {
MessageStream(P2P_MessageStreamServer) error
MessageStream(grpc.BidiStreamingServer[KaspadMessage, KaspadMessage]) error
mustEmbedUnimplementedP2PServer()
}
// UnimplementedP2PServer must be embedded to have forward compatible implementations.
type UnimplementedP2PServer struct {
}
// UnimplementedP2PServer must be embedded to have
// forward compatible implementations.
//
// NOTE: this should be embedded by value instead of pointer to avoid a nil
// pointer dereference when methods are called.
type UnimplementedP2PServer struct{}
func (UnimplementedP2PServer) MessageStream(P2P_MessageStreamServer) error {
func (UnimplementedP2PServer) MessageStream(grpc.BidiStreamingServer[KaspadMessage, KaspadMessage]) error {
return status.Errorf(codes.Unimplemented, "method MessageStream not implemented")
}
func (UnimplementedP2PServer) mustEmbedUnimplementedP2PServer() {}
func (UnimplementedP2PServer) testEmbeddedByValue() {}
// UnsafeP2PServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to P2PServer will
@ -89,34 +79,22 @@ type UnsafeP2PServer interface {
}
func RegisterP2PServer(s grpc.ServiceRegistrar, srv P2PServer) {
// If the following call pancis, it indicates UnimplementedP2PServer was
// embedded by pointer and is nil. This will cause panics if an
// unimplemented method is ever invoked, so we test this at initialization
// time to prevent it from happening at runtime later due to I/O.
if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
t.testEmbeddedByValue()
}
s.RegisterService(&P2P_ServiceDesc, srv)
}
func _P2P_MessageStream_Handler(srv interface{}, stream grpc.ServerStream) error {
return srv.(P2PServer).MessageStream(&p2PMessageStreamServer{stream})
return srv.(P2PServer).MessageStream(&grpc.GenericServerStream[KaspadMessage, KaspadMessage]{ServerStream: stream})
}
type P2P_MessageStreamServer interface {
Send(*KaspadMessage) error
Recv() (*KaspadMessage, error)
grpc.ServerStream
}
type p2PMessageStreamServer struct {
grpc.ServerStream
}
func (x *p2PMessageStreamServer) Send(m *KaspadMessage) error {
return x.ServerStream.SendMsg(m)
}
func (x *p2PMessageStreamServer) Recv() (*KaspadMessage, error) {
m := new(KaspadMessage)
if err := x.ServerStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type P2P_MessageStreamServer = grpc.BidiStreamingServer[KaspadMessage, KaspadMessage]
// P2P_ServiceDesc is the grpc.ServiceDesc for P2P service.
// It's only intended for direct use with grpc.RegisterService,
@ -136,11 +114,15 @@ var P2P_ServiceDesc = grpc.ServiceDesc{
Metadata: "messages.proto",
}
const (
RPC_MessageStream_FullMethodName = "/protowire.RPC/MessageStream"
)
// RPCClient is the client API for RPC service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type RPCClient interface {
MessageStream(ctx context.Context, opts ...grpc.CallOption) (RPC_MessageStreamClient, error)
MessageStream(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[KaspadMessage, KaspadMessage], error)
}
type rPCClient struct {
@ -151,53 +133,39 @@ func NewRPCClient(cc grpc.ClientConnInterface) RPCClient {
return &rPCClient{cc}
}
func (c *rPCClient) MessageStream(ctx context.Context, opts ...grpc.CallOption) (RPC_MessageStreamClient, error) {
stream, err := c.cc.NewStream(ctx, &RPC_ServiceDesc.Streams[0], "/protowire.RPC/MessageStream", opts...)
func (c *rPCClient) MessageStream(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[KaspadMessage, KaspadMessage], error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
stream, err := c.cc.NewStream(ctx, &RPC_ServiceDesc.Streams[0], RPC_MessageStream_FullMethodName, cOpts...)
if err != nil {
return nil, err
}
x := &rPCMessageStreamClient{stream}
x := &grpc.GenericClientStream[KaspadMessage, KaspadMessage]{ClientStream: stream}
return x, nil
}
type RPC_MessageStreamClient interface {
Send(*KaspadMessage) error
Recv() (*KaspadMessage, error)
grpc.ClientStream
}
type rPCMessageStreamClient struct {
grpc.ClientStream
}
func (x *rPCMessageStreamClient) Send(m *KaspadMessage) error {
return x.ClientStream.SendMsg(m)
}
func (x *rPCMessageStreamClient) Recv() (*KaspadMessage, error) {
m := new(KaspadMessage)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type RPC_MessageStreamClient = grpc.BidiStreamingClient[KaspadMessage, KaspadMessage]
// RPCServer is the server API for RPC service.
// All implementations must embed UnimplementedRPCServer
// for forward compatibility
// for forward compatibility.
type RPCServer interface {
MessageStream(RPC_MessageStreamServer) error
MessageStream(grpc.BidiStreamingServer[KaspadMessage, KaspadMessage]) error
mustEmbedUnimplementedRPCServer()
}
// UnimplementedRPCServer must be embedded to have forward compatible implementations.
type UnimplementedRPCServer struct {
}
// UnimplementedRPCServer must be embedded to have
// forward compatible implementations.
//
// NOTE: this should be embedded by value instead of pointer to avoid a nil
// pointer dereference when methods are called.
type UnimplementedRPCServer struct{}
func (UnimplementedRPCServer) MessageStream(RPC_MessageStreamServer) error {
func (UnimplementedRPCServer) MessageStream(grpc.BidiStreamingServer[KaspadMessage, KaspadMessage]) error {
return status.Errorf(codes.Unimplemented, "method MessageStream not implemented")
}
func (UnimplementedRPCServer) mustEmbedUnimplementedRPCServer() {}
func (UnimplementedRPCServer) testEmbeddedByValue() {}
// UnsafeRPCServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to RPCServer will
@ -207,34 +175,22 @@ type UnsafeRPCServer interface {
}
func RegisterRPCServer(s grpc.ServiceRegistrar, srv RPCServer) {
// If the following call pancis, it indicates UnimplementedRPCServer was
// embedded by pointer and is nil. This will cause panics if an
// unimplemented method is ever invoked, so we test this at initialization
// time to prevent it from happening at runtime later due to I/O.
if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
t.testEmbeddedByValue()
}
s.RegisterService(&RPC_ServiceDesc, srv)
}
func _RPC_MessageStream_Handler(srv interface{}, stream grpc.ServerStream) error {
return srv.(RPCServer).MessageStream(&rPCMessageStreamServer{stream})
return srv.(RPCServer).MessageStream(&grpc.GenericServerStream[KaspadMessage, KaspadMessage]{ServerStream: stream})
}
type RPC_MessageStreamServer interface {
Send(*KaspadMessage) error
Recv() (*KaspadMessage, error)
grpc.ServerStream
}
type rPCMessageStreamServer struct {
grpc.ServerStream
}
func (x *rPCMessageStreamServer) Send(m *KaspadMessage) error {
return x.ServerStream.SendMsg(m)
}
func (x *rPCMessageStreamServer) Recv() (*KaspadMessage, error) {
m := new(KaspadMessage)
if err := x.ServerStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type RPC_MessageStreamServer = grpc.BidiStreamingServer[KaspadMessage, KaspadMessage]
// RPC_ServiceDesc is the grpc.ServiceDesc for RPC service.
// It's only intended for direct use with grpc.RegisterService,

@ -30,6 +30,7 @@ message TransactionMessage{
SubnetworkId subnetworkId = 5;
uint64 gas = 6;
bytes payload = 8;
uint64 mass = 9; // <<< BPS10 - Add mass to TransactionMessage
}
message TransactionInput{

@ -66,6 +66,7 @@ message RpcTransaction {
uint64 gas = 6;
string payload = 8;
RpcTransactionVerboseData verboseData = 9;
uint64 mass = 10; // <<< BPS10 - Add mass to RpcTransaction
}
message RpcTransactionInput {

@ -110,6 +110,7 @@ func (x *RpcTransaction) toAppMessage() (*appmessage.RPCTransaction, error) {
SubnetworkID: x.SubnetworkId,
Gas: x.Gas,
Payload: x.Payload,
Mass: x.Mass,
VerboseData: verboseData,
}, nil
}
@ -138,6 +139,7 @@ func (x *RpcTransaction) fromAppMessage(transaction *appmessage.RPCTransaction)
SubnetworkId: transaction.SubnetworkID,
Gas: transaction.Gas,
Payload: transaction.Payload,
Mass: transaction.Mass,
VerboseData: verboseData,
}
}