Commit a934bfb6 authored by vicotor's avatar vicotor

update proto

parent 73d4928d
......@@ -23,7 +23,7 @@ enum BillingMethod {
message TaskContent {
string task_id = 1;
string task_type = 2;
TaskType task_type = 2;
string task_cmd =3;
bytes task_param = 4;
uint64 task_timestamp = 5;
......
This diff is collapsed.
......@@ -129,9 +129,9 @@ func (m *DeviceInfo) GetDevicePower() uint64 {
}
type WorkerContent struct {
WorkerPubkey string `protobuf:"bytes,1,opt,name=worker_pubkey,json=workerPubkey,proto3" json:"worker_pubkey,omitempty"`
MinerPubkey string `protobuf:"bytes,1,opt,name=miner_pubkey,json=minerPubkey,proto3" json:"miner_pubkey,omitempty"`
Devices []*DeviceInfo `protobuf:"bytes,2,rep,name=devices,proto3" json:"devices,omitempty"`
DeviceProof []byte `protobuf:"bytes,3,opt,name=device_proof,json=deviceProof,proto3" json:"device_proof,omitempty"`
DeviceSignature []byte `protobuf:"bytes,3,opt,name=device_signature,json=deviceSignature,proto3" json:"device_signature,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
......@@ -161,9 +161,9 @@ func (m *WorkerContent) XXX_DiscardUnknown() {
var xxx_messageInfo_WorkerContent proto.InternalMessageInfo
func (m *WorkerContent) GetWorkerPubkey() string {
func (m *WorkerContent) GetMinerPubkey() string {
if m != nil {
return m.WorkerPubkey
return m.MinerPubkey
}
return ""
}
......@@ -175,9 +175,9 @@ func (m *WorkerContent) GetDevices() []*DeviceInfo {
return nil
}
func (m *WorkerContent) GetDeviceProof() []byte {
func (m *WorkerContent) GetDeviceSignature() []byte {
if m != nil {
return m.DeviceProof
return m.DeviceSignature
}
return nil
}
......@@ -191,29 +191,30 @@ func init() {
func init() { proto.RegisterFile("nodemanager/v1/resource.proto", fileDescriptor_462e4441103de524) }
var fileDescriptor_462e4441103de524 = []byte{
// 383 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x91, 0xcd, 0x6a, 0xdb, 0x40,
0x14, 0x85, 0x91, 0x6c, 0xda, 0x7a, 0xfc, 0x07, 0x5a, 0x09, 0xd3, 0x52, 0xd7, 0xdd, 0x78, 0x53,
0x09, 0xb5, 0x5d, 0xb9, 0x3b, 0xb7, 0x50, 0x4a, 0xb1, 0x2b, 0x4c, 0x71, 0x4c, 0x30, 0x18, 0xfd,
0x5c, 0x2b, 0xc2, 0xd6, 0x5c, 0x31, 0x1a, 0xc9, 0xe8, 0x21, 0xb2, 0xcd, 0x03, 0x64, 0x99, 0x47,
0x09, 0xe4, 0x25, 0xb2, 0xcc, 0x53, 0x04, 0x8d, 0x14, 0x79, 0x94, 0x9d, 0xce, 0x77, 0x8f, 0xce,
0xdc, 0x99, 0x43, 0x3e, 0x50, 0xf4, 0x21, 0x72, 0xa8, 0x13, 0x00, 0x33, 0x33, 0xcb, 0x64, 0x90,
0x60, 0xca, 0x3c, 0x30, 0x62, 0x86, 0x1c, 0xb5, 0x81, 0x34, 0x36, 0x32, 0x6b, 0xf2, 0x97, 0x0c,
0x97, 0xe8, 0xc3, 0xa2, 0x24, 0x7f, 0xe8, 0x1e, 0xb5, 0xf7, 0xa4, 0x13, 0xa7, 0xee, 0x31, 0xf4,
0x0e, 0x90, 0xeb, 0xca, 0x58, 0x99, 0x76, 0x56, 0x67, 0xa0, 0x8d, 0xc8, 0x3b, 0xa0, 0x7e, 0x8c,
0x21, 0xe5, 0xba, 0x2a, 0x86, 0xb5, 0x9e, 0xdc, 0x28, 0x84, 0xfc, 0x82, 0x2c, 0xf4, 0x40, 0x04,
0x7d, 0x24, 0x5d, 0x5f, 0xa8, 0x1d, 0xcf, 0x63, 0xa8, 0xa2, 0x48, 0x89, 0xfe, 0xe7, 0x31, 0x68,
0x9f, 0x48, 0xaf, 0x32, 0x44, 0xe8, 0xc3, 0xb1, 0xca, 0xab, 0x7e, 0x5a, 0x14, 0x48, 0xb2, 0xc4,
0x0e, 0x73, 0x22, 0xbd, 0x25, 0x5b, 0xec, 0x02, 0xc9, 0x16, 0x3c, 0x01, 0xd3, 0xdb, 0x63, 0x65,
0xda, 0xae, 0x2d, 0x05, 0x9a, 0x5c, 0x2b, 0xa4, 0x7f, 0x81, 0xec, 0x00, 0xec, 0x27, 0x52, 0x0e,
0x94, 0x6b, 0x9f, 0x49, 0xff, 0x24, 0xc0, 0x2e, 0x4e, 0xdd, 0xf3, 0x45, 0x7b, 0x25, 0xb4, 0x05,
0xd3, 0xbe, 0x93, 0xb7, 0x65, 0x4a, 0xa2, 0xab, 0xe3, 0xd6, 0xb4, 0xfb, 0x75, 0x64, 0x34, 0x9f,
0xcf, 0x38, 0xdf, 0x76, 0xf5, 0x62, 0x95, 0xf7, 0x61, 0x88, 0x7b, 0xb1, 0x72, 0xaf, 0xde, 0xa7,
0x40, 0xf3, 0x07, 0x85, 0x68, 0x1e, 0x46, 0xaf, 0xd2, 0xe6, 0xfd, 0x55, 0x55, 0x96, 0x5d, 0x74,
0x65, 0x2b, 0x97, 0xff, 0x82, 0x90, 0x5f, 0xa5, 0xae, 0xe1, 0x61, 0x64, 0xa2, 0x9f, 0x27, 0x09,
0xa4, 0x49, 0xfd, 0xf1, 0x45, 0x34, 0xea, 0xe1, 0xd1, 0x0c, 0x80, 0x9a, 0x42, 0x98, 0x01, 0x9a,
0xcd, 0xfe, 0x7f, 0x48, 0x32, 0xb3, 0x6e, 0xd5, 0xd6, 0x72, 0xb3, 0xb9, 0x53, 0x07, 0x4b, 0xe9,
0xe0, 0xb5, 0x75, 0xdf, 0x00, 0xdb, 0xb5, 0xf5, 0xa8, 0x8e, 0x9a, 0x60, 0xfb, 0xdb, 0x9e, 0x2f,
0x80, 0x3b, 0xbe, 0xc3, 0x9d, 0x27, 0x75, 0x28, 0x0d, 0x67, 0xb3, 0xb5, 0xe5, 0xbe, 0x11, 0xa7,
0x7f, 0x7b, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xb1, 0x9b, 0xeb, 0x03, 0x7d, 0x02, 0x00, 0x00,
// 393 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x92, 0xcf, 0x6e, 0x9b, 0x40,
0x10, 0xc6, 0x05, 0xb6, 0xda, 0x7a, 0xfd, 0xaf, 0xe2, 0x84, 0xac, 0x56, 0x75, 0x7d, 0x72, 0x0f,
0x05, 0xd1, 0xf6, 0xe4, 0xde, 0xdc, 0x4a, 0x55, 0x55, 0xd9, 0x45, 0xb4, 0x72, 0xac, 0xc8, 0x92,
0xb5, 0xc0, 0x84, 0x20, 0x9b, 0x1d, 0xb4, 0x2c, 0x44, 0x3c, 0x47, 0xa4, 0x3c, 0x40, 0x8e, 0x79,
0x94, 0x48, 0x79, 0x89, 0x1c, 0xf3, 0x14, 0x11, 0x0b, 0xb6, 0x21, 0x37, 0xbe, 0xdf, 0x7c, 0xfb,
0xed, 0x0c, 0xb3, 0xe4, 0x3d, 0x43, 0x1f, 0x22, 0xca, 0x68, 0x00, 0xdc, 0xcc, 0x2c, 0x93, 0x43,
0x82, 0x29, 0xf7, 0xc0, 0x88, 0x39, 0x0a, 0xd4, 0x06, 0xb5, 0xb2, 0x91, 0x59, 0x93, 0x3f, 0x64,
0xb8, 0x44, 0x1f, 0x16, 0x25, 0xf9, 0xcd, 0x2e, 0x50, 0x7b, 0x47, 0x3a, 0x71, 0xea, 0xee, 0x43,
0x6f, 0x07, 0xb9, 0xae, 0x8c, 0x95, 0x69, 0xc7, 0x39, 0x01, 0x6d, 0x44, 0xde, 0x00, 0xf3, 0x63,
0x0c, 0x99, 0xd0, 0x55, 0x59, 0x3c, 0xea, 0xc9, 0x8d, 0x42, 0xc8, 0x4f, 0xc8, 0x42, 0x0f, 0x64,
0xd0, 0x07, 0xd2, 0xf5, 0xa5, 0xda, 0x8a, 0x3c, 0x86, 0x2a, 0x8a, 0x94, 0xe8, 0x7f, 0x1e, 0x83,
0xf6, 0x91, 0xf4, 0x2a, 0x43, 0x84, 0x3e, 0xec, 0xab, 0xbc, 0xea, 0xd0, 0xa2, 0x40, 0x35, 0x4b,
0x4c, 0x39, 0x8d, 0xf4, 0x56, 0xdd, 0x62, 0x17, 0xa8, 0x6e, 0xc1, 0x2b, 0xe0, 0x7a, 0x7b, 0xac,
0x4c, 0xdb, 0x47, 0x4b, 0x81, 0x26, 0xd7, 0x0a, 0xe9, 0x9f, 0x21, 0xdf, 0x01, 0xff, 0x81, 0x4c,
0x00, 0x13, 0xc5, 0xa1, 0x28, 0x64, 0xc0, 0xb7, 0x71, 0xea, 0x9e, 0xe6, 0xec, 0x4a, 0x66, 0x4b,
0xa4, 0x7d, 0x23, 0xaf, 0xcb, 0x8c, 0x44, 0x57, 0xc7, 0xad, 0x69, 0xf7, 0xcb, 0xc8, 0x68, 0xfe,
0x3c, 0xe3, 0x34, 0xab, 0x73, 0xb0, 0x6a, 0x9f, 0xc8, 0xdb, 0xaa, 0x9b, 0x24, 0x0c, 0x18, 0x15,
0x29, 0x07, 0xd9, 0x74, 0xcf, 0x19, 0x96, 0xfc, 0xdf, 0x01, 0xcf, 0x1f, 0x14, 0xa2, 0x79, 0x18,
0xbd, 0x48, 0x9d, 0xf7, 0x9d, 0x6a, 0x65, 0x76, 0xb1, 0x31, 0x5b, 0x39, 0xff, 0x1b, 0x84, 0xe2,
0x32, 0x75, 0x0d, 0x0f, 0x23, 0x13, 0xfd, 0x3c, 0x49, 0x20, 0x4d, 0x8e, 0x1f, 0x9f, 0xe5, 0x5e,
0x3d, 0xdc, 0x9b, 0x01, 0x30, 0x53, 0x0a, 0x33, 0x40, 0xb3, 0xf9, 0x0a, 0xbe, 0xd7, 0x64, 0x66,
0xdd, 0xaa, 0xad, 0xe5, 0x7a, 0x7d, 0xa7, 0x0e, 0x96, 0xb5, 0x8b, 0x57, 0xd6, 0x7d, 0x03, 0x6c,
0x56, 0xd6, 0xa3, 0x3a, 0x6a, 0x82, 0xcd, 0x2f, 0x7b, 0xbe, 0x00, 0x41, 0x7d, 0x2a, 0xe8, 0x93,
0x3a, 0xac, 0x15, 0x67, 0xb3, 0x95, 0xe5, 0xbe, 0x92, 0xb7, 0x7f, 0x7d, 0x0e, 0x00, 0x00, 0xff,
0xff, 0x88, 0x98, 0xc1, 0x27, 0x83, 0x02, 0x00, 0x00,
}
......@@ -99,7 +99,7 @@ func (m *WitnessStatusResponse) GetPeers() []string {
type PushProofRequest struct {
Workload uint64 `protobuf:"varint,1,opt,name=workload,proto3" json:"workload,omitempty"`
TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
NmSignature string `protobuf:"bytes,3,opt,name=nm_signature,json=nmSignature,proto3" json:"nm_signature,omitempty"`
ManagerSignature string `protobuf:"bytes,3,opt,name=manager_signature,json=managerSignature,proto3" json:"manager_signature,omitempty"`
ContainerSignature string `protobuf:"bytes,4,opt,name=container_signature,json=containerSignature,proto3" json:"container_signature,omitempty"`
MinerSignature string `protobuf:"bytes,5,opt,name=miner_signature,json=minerSignature,proto3" json:"miner_signature,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
......@@ -145,9 +145,9 @@ func (m *PushProofRequest) GetTaskId() string {
return ""
}
func (m *PushProofRequest) GetNmSignature() string {
func (m *PushProofRequest) GetManagerSignature() string {
if m != nil {
return m.NmSignature
return m.ManagerSignature
}
return ""
}
......@@ -465,50 +465,51 @@ func (m *GetWithdrawProofResponse) GetMerkleProof() []string {
}
func init() {
proto.RegisterType((*WitnessStatusRequest)(nil), "witness.v1.witnessStatusRequest")
proto.RegisterType((*WitnessStatusResponse)(nil), "witness.v1.witnessStatusResponse")
proto.RegisterType((*PushProofRequest)(nil), "witness.v1.pushProofRequest")
proto.RegisterType((*PushProofResponse)(nil), "witness.v1.pushProofResponse")
proto.RegisterType((*GetMinerProofRequest)(nil), "witness.v1.getMinerProofRequest")
proto.RegisterType((*GetMinerProofResponse)(nil), "witness.v1.getMinerProofResponse")
proto.RegisterType((*GetProofRequest)(nil), "witness.v1.getProofRequest")
proto.RegisterType((*GetProofResponse)(nil), "witness.v1.getProofResponse")
proto.RegisterType((*GetWithdrawProofRequest)(nil), "witness.v1.getWithdrawProofRequest")
proto.RegisterType((*GetWithdrawProofResponse)(nil), "witness.v1.getWithdrawProofResponse")
proto.RegisterType((*WitnessStatusRequest)(nil), "witness.v1.WitnessStatusRequest")
proto.RegisterType((*WitnessStatusResponse)(nil), "witness.v1.WitnessStatusResponse")
proto.RegisterType((*PushProofRequest)(nil), "witness.v1.PushProofRequest")
proto.RegisterType((*PushProofResponse)(nil), "witness.v1.PushProofResponse")
proto.RegisterType((*GetMinerProofRequest)(nil), "witness.v1.GetMinerProofRequest")
proto.RegisterType((*GetMinerProofResponse)(nil), "witness.v1.GetMinerProofResponse")
proto.RegisterType((*GetProofRequest)(nil), "witness.v1.GetProofRequest")
proto.RegisterType((*GetProofResponse)(nil), "witness.v1.GetProofResponse")
proto.RegisterType((*GetWithdrawProofRequest)(nil), "witness.v1.GetWithdrawProofRequest")
proto.RegisterType((*GetWithdrawProofResponse)(nil), "witness.v1.GetWithdrawProofResponse")
}
func init() { proto.RegisterFile("witness/v1/request_response.proto", fileDescriptor_fcd71b26d9e7af56) }
var fileDescriptor_fcd71b26d9e7af56 = []byte{
// 480 bytes of a gzipped FileDescriptorProto
// 483 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0xc1, 0x6a, 0xdb, 0x40,
0x10, 0x45, 0x52, 0xe2, 0xd4, 0xe3, 0x92, 0xb8, 0x5b, 0xc7, 0x11, 0x85, 0x82, 0xa3, 0x1e, 0x9a,
0x4b, 0x25, 0x44, 0x6e, 0x29, 0xf4, 0xe0, 0x4b, 0x08, 0x6d, 0xc0, 0x38, 0x60, 0x87, 0x12, 0x30,
0x1b, 0x6b, 0x2a, 0x0b, 0x5b, 0xbb, 0xee, 0xee, 0xca, 0x26, 0xbf, 0xd3, 0x63, 0xbf, 0xa0, 0x1f,
0xd0, 0x53, 0x3f, 0xa3, 0xc7, 0x7e, 0x45, 0xd1, 0x6a, 0x65, 0xd9, 0x2e, 0x71, 0x73, 0xdb, 0x37,
0xfb, 0xde, 0xbc, 0x7d, 0xc3, 0x0e, 0x9c, 0x2e, 0x13, 0xc5, 0x50, 0xca, 0x60, 0x11, 0x06, 0x02,
0xbf, 0x66, 0x28, 0xd5, 0x48, 0xa0, 0x9c, 0x73, 0x26, 0xd1, 0x9f, 0x0b, 0xae, 0x38, 0x01, 0x43,
0xf1, 0x17, 0xa1, 0xd7, 0x86, 0x96, 0x41, 0x37, 0x8a, 0xaa, 0x4c, 0xf6, 0x0b, 0x89, 0xf7, 0x09,
0x8e, 0xb7, 0xea, 0x45, 0x0b, 0xf2, 0x1a, 0x4a, 0xf9, 0x28, 0x89, 0x5c, 0xab, 0x63, 0x9d, 0xd5,
0xfb, 0x75, 0x53, 0xb9, 0x8a, 0x48, 0x0b, 0xf6, 0xe7, 0x88, 0x42, 0xba, 0x76, 0xc7, 0x39, 0xab,
0xf7, 0x0b, 0xe0, 0xfd, 0xb4, 0xa0, 0x39, 0xcf, 0xe4, 0xa4, 0x27, 0x38, 0xff, 0x62, 0x2c, 0xc8,
0x2b, 0x78, 0xb6, 0xe4, 0x62, 0x3a, 0xe3, 0xb4, 0xe8, 0xb3, 0xd7, 0x5f, 0x61, 0x72, 0x02, 0x07,
0x8a, 0xca, 0x69, 0x6e, 0x61, 0x6b, 0x8b, 0x5a, 0x0e, 0xaf, 0x22, 0x72, 0x0a, 0xcf, 0x59, 0x3a,
0x92, 0x49, 0xcc, 0xa8, 0xca, 0x04, 0xba, 0x8e, 0xbe, 0x6d, 0xb0, 0xf4, 0xa6, 0x2c, 0x91, 0x00,
0x5e, 0x8e, 0x39, 0x53, 0x34, 0x61, 0x28, 0xd6, 0x98, 0x7b, 0x9a, 0x49, 0x56, 0x57, 0x95, 0xe0,
0x2d, 0x1c, 0xa5, 0x5b, 0xe4, 0x7d, 0x4d, 0x3e, 0x4c, 0x37, 0x88, 0x5e, 0x00, 0x2f, 0xd6, 0x52,
0x98, 0x81, 0xec, 0x88, 0xe1, 0x7d, 0x80, 0x56, 0x8c, 0xea, 0x3a, 0xef, 0xb2, 0x11, 0xbd, 0x09,
0xce, 0x43, 0x5a, 0x4e, 0x2f, 0x3f, 0xe6, 0x73, 0xd3, 0x66, 0x26, 0x6e, 0x01, 0xbc, 0x8f, 0x70,
0xbc, 0xa5, 0xff, 0xbf, 0x29, 0x69, 0x43, 0x8d, 0xa6, 0x3c, 0x63, 0xaa, 0x1c, 0x5d, 0x81, 0xbc,
0x37, 0x70, 0x14, 0xa3, 0xda, 0xfd, 0x0e, 0xcf, 0x87, 0x66, 0x45, 0x7a, 0x42, 0xc2, 0x73, 0x38,
0x89, 0x51, 0x0d, 0x13, 0x35, 0x89, 0x04, 0x5d, 0x6e, 0x34, 0x77, 0xe1, 0x80, 0x46, 0x91, 0x40,
0x29, 0x8d, 0x41, 0x09, 0x3d, 0x06, 0xee, 0xbf, 0x22, 0x63, 0xf6, 0xa8, 0xea, 0xb1, 0x5c, 0xa4,
0x03, 0x8d, 0x14, 0xc5, 0x74, 0x86, 0xba, 0x91, 0xeb, 0xe8, 0x8f, 0xb7, 0x5e, 0xea, 0xfe, 0xb0,
0xe0, 0x70, 0xcc, 0x53, 0xbf, 0xfa, 0xf7, 0xdd, 0x96, 0x79, 0x65, 0xe9, 0xdb, 0xcb, 0x37, 0xa3,
0x67, 0x7d, 0xbe, 0x8c, 0x13, 0x35, 0xc9, 0xee, 0xfd, 0x31, 0x4f, 0x03, 0x1e, 0x3d, 0x48, 0x89,
0x99, 0x5c, 0x1d, 0xde, 0xe9, 0xfd, 0x19, 0xf3, 0x59, 0x10, 0x23, 0x0b, 0x34, 0x08, 0x62, 0x1e,
0x54, 0x1b, 0xf7, 0xde, 0x1c, 0x17, 0xe1, 0x37, 0xdb, 0x19, 0xde, 0xde, 0x7e, 0xb7, 0x61, 0x68,
0x3c, 0x07, 0xe1, 0xaf, 0x15, 0xb8, 0x1b, 0x84, 0xbf, 0xed, 0x76, 0x05, 0xee, 0x2e, 0x7b, 0xdd,
0x6b, 0x54, 0x34, 0xa2, 0x8a, 0xfe, 0xb1, 0x1b, 0xe6, 0xe2, 0xe2, 0x62, 0x10, 0xde, 0xd7, 0xb4,
0xcb, 0xf9, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x43, 0x72, 0x70, 0x2a, 0xd7, 0x03, 0x00, 0x00,
0x10, 0xc5, 0x52, 0xe2, 0xd4, 0x13, 0x48, 0x9c, 0xad, 0xe3, 0x88, 0x42, 0xc1, 0x55, 0x0f, 0x0d,
0x94, 0x4a, 0x88, 0xdc, 0x52, 0xe8, 0xc1, 0x17, 0x11, 0xda, 0x80, 0x70, 0xc0, 0x0e, 0x25, 0x60,
0x36, 0xd6, 0x54, 0x16, 0xb6, 0x76, 0xdd, 0xdd, 0x95, 0x4d, 0x7e, 0xa7, 0xc7, 0x7e, 0x41, 0xbf,
0xa1, 0x87, 0x7e, 0x44, 0x8f, 0xfd, 0x8a, 0xa2, 0xd5, 0xca, 0x8a, 0x5d, 0x92, 0xe6, 0x36, 0x6f,
0xe6, 0xbd, 0x79, 0x3b, 0xc3, 0x0e, 0xbc, 0x5a, 0xa5, 0x8a, 0xa1, 0x94, 0xfe, 0x32, 0xf0, 0x05,
0x7e, 0xcd, 0x51, 0xaa, 0xb1, 0x40, 0xb9, 0xe0, 0x4c, 0xa2, 0xb7, 0x10, 0x5c, 0x71, 0x02, 0x86,
0xe2, 0x2d, 0x03, 0xb7, 0x0b, 0x9d, 0x51, 0x89, 0xae, 0x14, 0x55, 0xb9, 0x1c, 0x94, 0x12, 0xf7,
0x13, 0x1c, 0x6f, 0xe5, 0xcb, 0x16, 0xe4, 0x25, 0x54, 0xf2, 0x71, 0x1a, 0x3b, 0x8d, 0x5e, 0xe3,
0xb4, 0x35, 0x68, 0x99, 0xcc, 0x45, 0x4c, 0x3a, 0xb0, 0xbb, 0x40, 0x14, 0xd2, 0xb1, 0x7a, 0xf6,
0x69, 0x6b, 0x50, 0x02, 0xf7, 0x57, 0x03, 0xda, 0x51, 0x2e, 0xa7, 0x91, 0xe0, 0xfc, 0x8b, 0xb1,
0x20, 0x2f, 0xe0, 0xd9, 0x8a, 0x8b, 0xd9, 0x9c, 0xd3, 0xb2, 0xcf, 0xce, 0x60, 0x8d, 0xc9, 0x09,
0xec, 0x29, 0x2a, 0x67, 0x85, 0x85, 0xa5, 0x2d, 0x9a, 0x05, 0xbc, 0x88, 0xc9, 0x5b, 0x38, 0xca,
0x28, 0xa3, 0x09, 0x8a, 0xb1, 0x4c, 0x13, 0x46, 0x55, 0x2e, 0xd0, 0xb1, 0x35, 0xa5, 0x6d, 0x0a,
0x57, 0x55, 0x9e, 0xf8, 0xf0, 0x7c, 0xc2, 0x99, 0xa2, 0x29, 0xdb, 0xa0, 0xef, 0x68, 0x3a, 0x59,
0x97, 0x6a, 0xc1, 0x1b, 0x38, 0xcc, 0xb6, 0xc8, 0xbb, 0x9a, 0x7c, 0x90, 0x6d, 0x10, 0x5d, 0x1f,
0x8e, 0xee, 0xcd, 0x63, 0x56, 0xf3, 0xc8, 0x40, 0xee, 0x07, 0xe8, 0x84, 0xa8, 0x2e, 0x8b, 0x2e,
0x1b, 0x4b, 0x68, 0x83, 0x7d, 0x97, 0x55, 0x7b, 0x2c, 0xc2, 0x62, 0x83, 0xda, 0xcc, 0x0c, 0x5e,
0x02, 0xf7, 0x23, 0x1c, 0x6f, 0xe9, 0xff, 0x6f, 0x4a, 0xba, 0xd0, 0xa4, 0x19, 0xcf, 0x99, 0xaa,
0x96, 0x58, 0x22, 0xf7, 0x35, 0x1c, 0x86, 0xa8, 0x1e, 0x7f, 0x87, 0xeb, 0x41, 0xbb, 0x26, 0x3d,
0x61, 0xc2, 0x33, 0x38, 0x09, 0x51, 0x8d, 0x52, 0x35, 0x8d, 0x05, 0x5d, 0x6d, 0x34, 0x77, 0x60,
0x8f, 0xc6, 0xb1, 0x40, 0x29, 0x8d, 0x41, 0x05, 0x5d, 0x06, 0xce, 0xbf, 0x22, 0x63, 0xf6, 0xa0,
0xea, 0xa1, 0xb9, 0x48, 0x0f, 0xf6, 0x33, 0x14, 0xb3, 0x39, 0xea, 0x46, 0x8e, 0xad, 0xbf, 0xe0,
0xfd, 0x54, 0xff, 0x47, 0x03, 0x0e, 0x26, 0x3c, 0xf3, 0xea, 0x0b, 0xe8, 0x77, 0xcc, 0x2b, 0x2b,
0xdf, 0xa8, 0xb8, 0x91, 0xa8, 0xf1, 0x39, 0x4c, 0x52, 0x35, 0xcd, 0x6f, 0xbd, 0x09, 0xcf, 0x7c,
0x1e, 0xdf, 0x49, 0x89, 0xb9, 0x5c, 0x07, 0xef, 0xf4, 0x25, 0x4d, 0xf8, 0xdc, 0x4f, 0x90, 0xf9,
0x1a, 0xf8, 0x09, 0xf7, 0xeb, 0xdb, 0x7b, 0x6f, 0xc2, 0x65, 0xf0, 0xcd, 0xb2, 0x47, 0xd7, 0xd7,
0xdf, 0x2d, 0x30, 0xf7, 0xe4, 0x0d, 0x83, 0x9f, 0x6b, 0x70, 0x33, 0x0c, 0x7e, 0x5b, 0xdd, 0x1a,
0xdc, 0x84, 0x51, 0xff, 0x12, 0x15, 0x8d, 0xa9, 0xa2, 0x7f, 0xac, 0x7d, 0x53, 0x38, 0x3f, 0x1f,
0x06, 0xb7, 0x4d, 0xed, 0x72, 0xf6, 0x37, 0x00, 0x00, 0xff, 0xff, 0x6c, 0xf5, 0x84, 0x7f, 0xe1,
0x03, 0x00, 0x00,
}
......@@ -23,27 +23,26 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
func init() { proto.RegisterFile("witness/v1/service.proto", fileDescriptor_687af857651c0e7f) }
var fileDescriptor_687af857651c0e7f = []byte{
// 337 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xc1, 0x4a, 0xf3, 0x40,
0x10, 0xc7, 0xbf, 0xa6, 0xf0, 0xa1, 0xab, 0x2d, 0x92, 0x83, 0x48, 0xad, 0x60, 0xd5, 0xab, 0x59,
0x56, 0x6f, 0xf5, 0xd6, 0xcb, 0x82, 0x50, 0x08, 0x0a, 0x69, 0x91, 0x42, 0x49, 0xd3, 0x31, 0x0d,
0xd8, 0x6c, 0xdd, 0x9d, 0xa4, 0xf8, 0x3a, 0x1e, 0x3d, 0x79, 0xf2, 0x21, 0x7c, 0x0c, 0x8f, 0x3e,
0x85, 0xd8, 0xdd, 0xa4, 0x49, 0xa8, 0xbd, 0xcd, 0xcc, 0xff, 0x3f, 0xbf, 0x19, 0x98, 0x21, 0x47,
0xcb, 0x08, 0x63, 0x50, 0x8a, 0xa6, 0x8c, 0x2a, 0x90, 0x69, 0x14, 0x80, 0xb3, 0x90, 0x02, 0x85,
0x4d, 0x8c, 0xe2, 0xa4, 0xac, 0xd5, 0x29, 0xb8, 0x24, 0x3c, 0x27, 0xa0, 0x70, 0x2c, 0x41, 0x2d,
0x44, 0xac, 0x8c, 0xfd, 0xea, 0xa3, 0x4e, 0x9a, 0xc6, 0x75, 0xaf, 0x39, 0xb6, 0x47, 0x1a, 0x03,
0x53, 0x41, 0x1f, 0x13, 0x65, 0x9f, 0x3a, 0x6b, 0x66, 0x16, 0x6a, 0xe9, 0x4e, 0x43, 0x5b, 0x9d,
0x2d, 0x0e, 0x3d, 0xee, 0xec, 0x9f, 0x7d, 0x4b, 0x76, 0xdd, 0x44, 0xcd, 0x5c, 0x29, 0xc4, 0xa3,
0xdd, 0x2e, 0x76, 0x2c, 0xb2, 0x72, 0xc6, 0x3b, 0xf9, 0x43, 0xcd, 0x59, 0x1e, 0x69, 0x70, 0xc0,
0x7e, 0x14, 0x83, 0xd4, 0xbc, 0xd2, 0x8e, 0x61, 0x51, 0xda, 0xb8, 0x63, 0xc5, 0x91, 0x73, 0x39,
0xd9, 0xe1, 0x80, 0x1a, 0x79, 0x5c, 0x69, 0x28, 0xd1, 0xda, 0x9b, 0xc5, 0x1c, 0x34, 0x26, 0x07,
0x1c, 0x70, 0x10, 0xe1, 0x6c, 0x2a, 0xfd, 0xa5, 0x06, 0x9e, 0x57, 0x7a, 0x4a, 0x6a, 0x06, 0xbe,
0xd8, 0x6e, 0xca, 0x06, 0xf4, 0xde, 0x6b, 0xa4, 0x19, 0x88, 0x79, 0xc1, 0xdd, 0xdb, 0x37, 0x17,
0x74, 0x7f, 0x2f, 0xeb, 0xd6, 0x1e, 0x78, 0x18, 0xe1, 0x2c, 0x99, 0x38, 0x81, 0x98, 0x53, 0x31,
0x7d, 0x51, 0x0a, 0x12, 0x95, 0x07, 0x97, 0xab, 0xfb, 0x07, 0xe2, 0x89, 0x86, 0x10, 0xd3, 0x55,
0x42, 0x43, 0x41, 0xd7, 0x1f, 0x73, 0x63, 0xc2, 0x94, 0xbd, 0x5a, 0xf5, 0xc1, 0x70, 0xf8, 0x66,
0x11, 0xf3, 0x16, 0x8e, 0xc7, 0x3e, 0xf3, 0x64, 0xe4, 0xb1, 0x2f, 0xeb, 0x70, 0x9d, 0x8c, 0xb8,
0xdb, 0xeb, 0x03, 0xfa, 0x53, 0x1f, 0xfd, 0x6f, 0x6b, 0xcf, 0x08, 0xdd, 0xae, 0xc7, 0x26, 0xff,
0x57, 0x53, 0xae, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xd8, 0x30, 0x98, 0x73, 0xbd, 0x02, 0x00,
0x00,
// 335 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xc1, 0x4a, 0xfb, 0x40,
0x10, 0xc6, 0xff, 0x4d, 0xe1, 0x8f, 0xae, 0xb6, 0x48, 0x0e, 0x22, 0xb5, 0x82, 0x55, 0xaf, 0x66,
0x59, 0xbd, 0xd5, 0x5b, 0x2f, 0x0b, 0x42, 0x21, 0x28, 0xa4, 0x45, 0x0a, 0x25, 0x4d, 0xc7, 0x36,
0x60, 0xb3, 0x75, 0x77, 0x92, 0xe2, 0xeb, 0x78, 0xf4, 0xe4, 0xc9, 0x87, 0xf0, 0x31, 0x3c, 0xfa,
0x14, 0x62, 0x77, 0xb3, 0x6d, 0x42, 0xed, 0x6d, 0x67, 0xbe, 0x6f, 0x7e, 0x33, 0xf0, 0x2d, 0x39,
0x5a, 0xc4, 0x98, 0x80, 0x52, 0x34, 0x63, 0x54, 0x81, 0xcc, 0xe2, 0x08, 0xbc, 0xb9, 0x14, 0x28,
0x5c, 0x62, 0x14, 0x2f, 0x63, 0x8d, 0xd6, 0x9a, 0x4b, 0xc2, 0x73, 0x0a, 0x0a, 0x87, 0x12, 0xd4,
0x5c, 0x24, 0xca, 0xd8, 0xaf, 0x3e, 0xaa, 0xa4, 0xde, 0xd3, 0xae, 0x7b, 0xcd, 0x71, 0x03, 0x52,
0xcb, 0x3b, 0x18, 0x62, 0xaa, 0xdc, 0x53, 0x6f, 0xc5, 0xf4, 0x0a, 0xd2, 0x9d, 0x86, 0x36, 0x5a,
0x5b, 0x1c, 0x7a, 0xdd, 0xd9, 0x3f, 0xf7, 0x96, 0xec, 0xfa, 0xa9, 0x9a, 0xfa, 0x52, 0x88, 0x47,
0xb7, 0xb9, 0x3e, 0x61, 0xdb, 0x39, 0xef, 0xe4, 0x0f, 0xd5, 0xb2, 0x02, 0x52, 0xe3, 0x80, 0xdd,
0x38, 0x01, 0xa9, 0x79, 0x85, 0x1b, 0x0b, 0xd2, 0xc6, 0x1b, 0x4b, 0x0e, 0xcb, 0xe5, 0x64, 0x87,
0x03, 0x6a, 0xe4, 0x71, 0x69, 0xa0, 0x40, 0x6b, 0x6e, 0x16, 0x2d, 0x68, 0x48, 0x0e, 0x38, 0x60,
0x2f, 0xc6, 0xe9, 0x58, 0x86, 0x0b, 0x0d, 0x3c, 0x2f, 0xcd, 0x14, 0xd4, 0x1c, 0x7c, 0xb1, 0xdd,
0x94, 0x2f, 0xe8, 0xbc, 0x57, 0x48, 0x3d, 0x12, 0xb3, 0x35, 0x77, 0x67, 0xdf, 0x24, 0xe8, 0xff,
0x26, 0xeb, 0x57, 0x1e, 0xf8, 0x24, 0xc6, 0x69, 0x3a, 0xf2, 0x22, 0x31, 0xa3, 0x62, 0xfc, 0xa2,
0x14, 0xa4, 0xca, 0x3e, 0x2e, 0x97, 0xf9, 0x47, 0xe2, 0x89, 0x4e, 0x20, 0xa1, 0xcb, 0x82, 0x4e,
0x04, 0x5d, 0xfd, 0x98, 0x1b, 0xf3, 0xcc, 0xd8, 0xab, 0x53, 0xed, 0xf5, 0xfb, 0x6f, 0x0e, 0x31,
0xc9, 0x7a, 0x01, 0xfb, 0xb4, 0xc5, 0x20, 0x60, 0x5f, 0xce, 0xe1, 0xaa, 0x18, 0x70, 0xbf, 0xd3,
0x05, 0x0c, 0xc7, 0x21, 0x86, 0xdf, 0xce, 0x9e, 0x11, 0xda, 0xed, 0x80, 0x8d, 0xfe, 0x2f, 0xb7,
0x5c, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xcf, 0x7f, 0x10, 0x74, 0xbd, 0x02, 0x00, 0x00,
}
......@@ -39,7 +39,7 @@ func NewWitnessServiceClient(cc grpc.ClientConnInterface) WitnessServiceClient {
func (c *witnessServiceClient) WitnessStatus(ctx context.Context, in *WitnessStatusRequest, opts ...grpc.CallOption) (*WitnessStatusResponse, error) {
out := new(WitnessStatusResponse)
err := c.cc.Invoke(ctx, "/witness.v1.witnessService/WitnessStatus", in, out, opts...)
err := c.cc.Invoke(ctx, "/witness.v1.WitnessService/WitnessStatus", in, out, opts...)
if err != nil {
return nil, err
}
......@@ -48,7 +48,7 @@ func (c *witnessServiceClient) WitnessStatus(ctx context.Context, in *WitnessSta
func (c *witnessServiceClient) PushProof(ctx context.Context, in *PushProofRequest, opts ...grpc.CallOption) (*PushProofResponse, error) {
out := new(PushProofResponse)
err := c.cc.Invoke(ctx, "/witness.v1.witnessService/PushProof", in, out, opts...)
err := c.cc.Invoke(ctx, "/witness.v1.WitnessService/PushProof", in, out, opts...)
if err != nil {
return nil, err
}
......@@ -57,7 +57,7 @@ func (c *witnessServiceClient) PushProof(ctx context.Context, in *PushProofReque
func (c *witnessServiceClient) GetMinerProof(ctx context.Context, in *GetMinerProofRequest, opts ...grpc.CallOption) (*GetMinerProofResponse, error) {
out := new(GetMinerProofResponse)
err := c.cc.Invoke(ctx, "/witness.v1.witnessService/GetMinerProof", in, out, opts...)
err := c.cc.Invoke(ctx, "/witness.v1.WitnessService/GetMinerProof", in, out, opts...)
if err != nil {
return nil, err
}
......@@ -66,7 +66,7 @@ func (c *witnessServiceClient) GetMinerProof(ctx context.Context, in *GetMinerPr
func (c *witnessServiceClient) GetProof(ctx context.Context, in *GetProofRequest, opts ...grpc.CallOption) (*GetProofResponse, error) {
out := new(GetProofResponse)
err := c.cc.Invoke(ctx, "/witness.v1.witnessService/GetProof", in, out, opts...)
err := c.cc.Invoke(ctx, "/witness.v1.WitnessService/GetProof", in, out, opts...)
if err != nil {
return nil, err
}
......@@ -75,7 +75,7 @@ func (c *witnessServiceClient) GetProof(ctx context.Context, in *GetProofRequest
func (c *witnessServiceClient) GetWithdrawProof(ctx context.Context, in *GetWithdrawProofRequest, opts ...grpc.CallOption) (*GetWithdrawProofResponse, error) {
out := new(GetWithdrawProofResponse)
err := c.cc.Invoke(ctx, "/witness.v1.witnessService/GetWithdrawProof", in, out, opts...)
err := c.cc.Invoke(ctx, "/witness.v1.WitnessService/GetWithdrawProof", in, out, opts...)
if err != nil {
return nil, err
}
......@@ -136,7 +136,7 @@ func _WitnessService_WitnessStatus_Handler(srv interface{}, ctx context.Context,
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/witness.v1.witnessService/WitnessStatus",
FullMethod: "/witness.v1.WitnessService/WitnessStatus",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WitnessServiceServer).WitnessStatus(ctx, req.(*WitnessStatusRequest))
......@@ -154,7 +154,7 @@ func _WitnessService_PushProof_Handler(srv interface{}, ctx context.Context, dec
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/witness.v1.witnessService/PushProof",
FullMethod: "/witness.v1.WitnessService/PushProof",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WitnessServiceServer).PushProof(ctx, req.(*PushProofRequest))
......@@ -172,7 +172,7 @@ func _WitnessService_GetMinerProof_Handler(srv interface{}, ctx context.Context,
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/witness.v1.witnessService/GetMinerProof",
FullMethod: "/witness.v1.WitnessService/GetMinerProof",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WitnessServiceServer).GetMinerProof(ctx, req.(*GetMinerProofRequest))
......@@ -190,7 +190,7 @@ func _WitnessService_GetProof_Handler(srv interface{}, ctx context.Context, dec
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/witness.v1.witnessService/GetProof",
FullMethod: "/witness.v1.WitnessService/GetProof",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WitnessServiceServer).GetProof(ctx, req.(*GetProofRequest))
......@@ -208,7 +208,7 @@ func _WitnessService_GetWithdrawProof_Handler(srv interface{}, ctx context.Conte
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/witness.v1.witnessService/GetWithdrawProof",
FullMethod: "/witness.v1.WitnessService/GetWithdrawProof",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WitnessServiceServer).GetWithdrawProof(ctx, req.(*GetWithdrawProofRequest))
......@@ -220,7 +220,7 @@ func _WitnessService_GetWithdrawProof_Handler(srv interface{}, ctx context.Conte
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var WitnessService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "witness.v1.witnessService",
ServiceName: "witness.v1.WitnessService",
HandlerType: (*WitnessServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
......
......@@ -28,15 +28,10 @@ message ManagerMessage {
}
}
enum TaskType {
SystemTask = 0;
UserTask = 1;
CustomTask = 2;
}
message GoodbyeMessage {
string reason = 1;
}
message HeartbeatRequest {
uint64 timestamp = 1;
}
......@@ -49,7 +44,6 @@ message StatusRequest {
}
message DeviceUsageRequest {
}
message DeviceUsageResponse {
......@@ -74,20 +68,20 @@ message StatusResponse {
message PushTaskMessage {
string task_id = 1;
TaskType task_type = 2;
uint64 work_load = 3;
base.v1.TaskType task_type = 2;
uint64 workload = 3;
string task_cmd = 4; //
bytes task_param = 5;
}
// 容器签名 (task_id+hash(task_param)+hash(task_result))
// 矿工签名 (task_id+hash(task_param)+hash(task_result))
// nodemanager签名 (task_id+hash(task_param)+hash(task_result)+docker_signature+miner_signature+workload)
// container_signature = sign(hash(task_id+hash(task_param)+hash(task_result)))
// miner_signature = sign(hash((task_id+hash(task_param)+hash(task_result)))
// manager_signature = sign(hash((task_id+hash(task_param)+hash(task_result)+container_signature+miner_signature+workload))
message SubmitTaskResult {
string task_id = 1;
bytes task_proof = 2; // 容器签名
bytes worker_signature = 3; // worker 签名
bytes container_signature = 2; // 容器签名
bytes miner_signature = 3; // worker 签名
bytes task_result = 4; // 任务结果
}
......@@ -96,20 +90,16 @@ message ProofTaskResult {
bytes manager_signature = 2; // nodemanager 签名
}
message DispatchTaskRequest {
string task_id = 1;
TaskType task_type = 2;
base.v1.TaskContent task_data = 3;
string worker = 4;
base.v1.TaskContent task_data = 1;
string miner = 2;
}
message DispatchTaskResponse {
string task_id = 1;
string worker_id = 2;
string miner = 2;
}
message ManagerListRequest {
}
......
......@@ -16,7 +16,7 @@ message DeviceInfo {
}
message WorkerContent {
string worker_pubkey = 1;
string miner_pubkey = 1;
repeated DeviceInfo devices = 2;
bytes device_proof = 3; // 由测试程序对设备信息进行签名
bytes device_signature = 3; // 由测试程序对设备信息进行签名
}
\ No newline at end of file
......@@ -2,49 +2,49 @@ syntax = "proto3";
package witness.v1;
message witnessStatusRequest {
message WitnessStatusRequest {
}
message witnessStatusResponse {
message WitnessStatusResponse {
string witness_id = 1;
repeated string peers = 2;
}
message pushProofRequest {
message PushProofRequest {
uint64 workload = 1;
string task_id = 2;
string nm_signature = 3;
string manager_signature = 3;
string container_signature = 4;
string miner_signature = 5;
}
message pushProofResponse {
message PushProofResponse {
uint64 workload = 1;
}
message getMinerProofRequest {
message GetMinerProofRequest {
string ymd = 1;
string miner = 2;
}
message getMinerProofResponse {
message GetMinerProofResponse {
uint64 workload = 1;
string amount = 2;
}
message getProofRequest {
message GetProofRequest {
string ymd = 1;
}
message getProofResponse {
message GetProofResponse {
uint64 workload = 1;
}
message getWithdrawProofRequest {
message GetWithdrawProofRequest {
string address = 1;
}
message getWithdrawProofResponse {
message GetWithdrawProofResponse {
string address = 1;
string amount = 2;
repeated string merkleProof = 3;
......
......@@ -5,12 +5,12 @@ package witness.v1;
import "witness/v1/request_response.proto";
service witnessService {
rpc WitnessStatus(witnessStatusRequest) returns (witnessStatusResponse) {}; // witness status
rpc PushProof(pushProofRequest) returns (pushProofResponse) {}; // miner push proof
service WitnessService {
rpc WitnessStatus(WitnessStatusRequest) returns (WitnessStatusResponse) {}; // witness status
rpc PushProof(PushProofRequest) returns (PushProofResponse) {}; // miner push proof
rpc GetMinerProof(getMinerProofRequest) returns (getMinerProofResponse) {}; // proof of a miner per day
rpc GetProof(getProofRequest) returns (getProofResponse) {}; // proof per day
rpc GetMinerProof(GetMinerProofRequest) returns (GetMinerProofResponse) {}; // proof of a miner per day
rpc GetProof(GetProofRequest) returns (GetProofResponse) {}; // proof per day
rpc GetWithdrawProof(getWithdrawProofRequest) returns (getWithdrawProofResponse) {}; // get merkle proof of withdraw token
rpc GetWithdrawProof(GetWithdrawProofRequest) returns (GetWithdrawProofResponse) {}; // get merkle proof of withdraw token
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment